{"version":3,"file":"anchor-link.vue2.cjs","sources":["../../../components/anchor/anchor-link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n  computed,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRef,\n  watch,\n} from 'vue'\n\nimport { useNameHelper } from '@vexip-ui/config'\nimport { anchorLinkProps } from './props'\nimport { ANCHOR_STATE, LINK_STATE, baseIndentWidth } from './symbol'\n\ndefineOptions({ name: 'AnchorLink' })\n\nconst props = defineProps(anchorLinkProps)\n\nconst anchorState = inject(ANCHOR_STATE, null)\nconst parentLinkState = inject(LINK_STATE, null)\n\nconst nh = useNameHelper('anchor')\nconst indent = ref(parentLinkState?.indent ? parentLinkState?.indent + 1 : 1)\nconst active = ref(false)\n\nconst link = ref<HTMLElement>()\n\nconst state = reactive({\n  el: link,\n  to: toRef(props, 'to'),\n  active,\n  indent,\n})\n\nconst linkClass = computed(() => {\n  return {\n    [nh.be('link')]: true,\n    [nh.bem('link', 'active')]: state.active,\n  }\n})\nconst linkStyle = computed(() => {\n  return {\n    paddingInlineStart: `${baseIndentWidth * indent.value}px`,\n  }\n})\n\nprovide(LINK_STATE, state)\n\nif (anchorState) {\n  watch(\n    () => anchorState.currentActive,\n    value => {\n      active.value = value === props.to\n    },\n  )\n\n  onMounted(() => {\n    anchorState.increaseLink(state)\n  })\n\n  onBeforeUnmount(() => {\n    anchorState.decreaseLink(state)\n  })\n}\n\nfunction handleSelect() {\n  if (anchorState) {\n    anchorState.handleActive(props.to)\n  }\n\n  return false\n}\n</script>\n\n<template>\n  <li :class=\"nh.be('item')\">\n    <a\n      ref=\"link\"\n      :class=\"linkClass\"\n      :href=\"to\"\n      :style=\"linkStyle\"\n      :title=\"title\"\n      @click.prevent=\"handleSelect\"\n    >\n      <slot></slot>\n    </a>\n    <ul v-if=\"$slots.group || (children && children.length)\" :class=\"nh.be('list')\">\n      <slot name=\"group\">\n        <template v-if=\"children && children.length\">\n          <AnchorLink\n            v-for=\"child in children\"\n            :key=\"child.to\"\n            :to=\"child.to\"\n            :title=\"child.title\"\n            :children=\"child.children\"\n          >\n            {{ child.label }}\n          </AnchorLink>\n        </template>\n      </slot>\n    </ul>\n  </li>\n</template>\n"],"names":["props","__props","anchorState","inject","ANCHOR_STATE","parentLinkState","LINK_STATE","nh","useNameHelper","indent","ref","active","link","state","reactive","toRef","linkClass","computed","linkStyle","baseIndentWidth","provide","watch","value","onMounted","onBeforeUnmount","handleSelect","_createElementBlock","_normalizeClass","_unref","_createElementVNode","to","title","_renderSlot","_ctx","$slots","children","_Fragment","_renderList","child","_createBlock","_component_AnchorLink","_createTextVNode","_toDisplayString"],"mappings":"qOAmBA,MAAMA,EAAQC,EAERC,EAAcC,EAAAA,OAAOC,EAAA,aAAc,IAAI,EACvCC,EAAkBF,EAAAA,OAAOG,EAAA,WAAY,IAAI,EAEzCC,EAAKC,gBAAc,QAAQ,EAC3BC,EAASC,EAAI,IAAAL,GAAA,MAAAA,EAAiB,QAASA,GAAA,YAAAA,EAAiB,QAAS,EAAI,CAAC,EACtEM,EAASD,MAAI,EAAK,EAElBE,EAAOF,EAAAA,IAAiB,EAExBG,EAAQC,EAAAA,SAAS,CACrB,GAAIF,EACJ,GAAIG,EAAAA,MAAMf,EAAO,IAAI,EACrB,OAAAW,EACA,OAAAF,CAAA,CACD,EAEKO,EAAYC,EAAAA,SAAS,KAClB,CACL,CAACV,EAAG,GAAG,MAAM,CAAC,EAAG,GACjB,CAACA,EAAG,IAAI,OAAQ,QAAQ,CAAC,EAAGM,EAAM,MACpC,EACD,EACKK,EAAYD,EAAAA,SAAS,KAClB,CACL,mBAAoB,GAAGE,EAAAA,gBAAkBV,EAAO,KAAK,IACvD,EACD,EAEDW,EAAA,QAAQd,aAAYO,CAAK,EAErBX,IACFmB,EAAA,MACE,IAAMnB,EAAY,cACToB,GAAA,CACAX,EAAA,MAAQW,IAAUtB,EAAM,EAAA,CAEnC,EAEAuB,EAAAA,UAAU,IAAM,CACdrB,EAAY,aAAaW,CAAK,CAAA,CAC/B,EAEDW,EAAAA,gBAAgB,IAAM,CACpBtB,EAAY,aAAaW,CAAK,CAAA,CAC/B,GAGH,SAASY,GAAe,CACtB,OAAIvB,GACUA,EAAA,aAAaF,EAAM,EAAE,EAG5B,EAAA,gFAKP0B,EAAA,mBA0BK,KAAA,CA1BA,MAAKC,EAAE,eAAAC,EAAA,MAAErB,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GACfsB,EAAAA,mBASI,IAAA,SARE,OAAJ,IAAIjB,EACH,uBAAOI,EAAS,KAAA,EAChB,KAAMc,EAAE,GACR,uBAAOZ,EAAS,KAAA,EAChB,MAAOa,EAAK,MACZ,wBAAeN,EAAY,CAAA,SAAA,CAAA,CAAA,GAE5BO,aAAaC,EAAA,OAAA,SAAA,CAAA,QAELC,EAAAA,OAAO,OAAUC,YAAYA,EAAAA,SAAS,sBAAhDT,EAAAA,mBAcK,KAAA,OAdqD,MAAKC,EAAE,eAAAC,EAAA,MAAErB,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GACpEyB,EAAAA,WAYOC,oBAZP,IAYO,CAXWE,EAAQ,UAAIA,EAAQ,SAAC,wBACnCT,EAAAA,mBAQaU,EAAAA,SAAA,CAAA,IAAA,CAAA,EAAAC,aAPKF,EAAQ,SAAjBG,kBADTC,EAAA,YAQaC,EAAA,CANV,IAAKF,EAAM,GACX,GAAIA,EAAM,GACV,MAAOA,EAAM,MACb,SAAUA,EAAM,QAAA,qBAEjB,IAAiB,CAAdG,EAAAA,gBAAAC,EAAA,gBAAAJ,EAAM,KAAK,EAAA,CAAA,CAAA"}