{"version":3,"file":"anchor-link.vue2.mjs","sources":["../../../components/anchor/anchor-link.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n  computed,\r\n  inject,\r\n  onBeforeUnmount,\r\n  onMounted,\r\n  provide,\r\n  reactive,\r\n  ref,\r\n  toRef,\r\n  watch,\r\n} from 'vue'\r\n\r\nimport { useNameHelper } from '@vexip-ui/config'\r\nimport { anchorLinkProps } from './props'\r\nimport { ANCHOR_STATE, LINK_STATE, baseIndentWidth } from './symbol'\r\n\r\ndefineOptions({ name: 'AnchorLink' })\r\n\r\nconst props = defineProps(anchorLinkProps)\r\n\r\nconst anchorState = inject(ANCHOR_STATE, null)\r\nconst parentLinkState = inject(LINK_STATE, null)\r\n\r\nconst nh = useNameHelper('anchor')\r\nconst indent = ref(parentLinkState?.indent ? parentLinkState?.indent + 1 : 1)\r\nconst active = ref(false)\r\n\r\nconst link = ref<HTMLElement>()\r\n\r\nconst state = reactive({\r\n  el: link,\r\n  to: toRef(props, 'to'),\r\n  active,\r\n  indent,\r\n})\r\n\r\nconst linkClass = computed(() => {\r\n  return {\r\n    [nh.be('link')]: true,\r\n    [nh.bem('link', 'active')]: state.active,\r\n  }\r\n})\r\nconst linkStyle = computed(() => {\r\n  return {\r\n    paddingInlineStart: `${baseIndentWidth * indent.value}px`,\r\n  }\r\n})\r\n\r\nprovide(LINK_STATE, state)\r\n\r\nif (anchorState) {\r\n  watch(\r\n    () => anchorState.currentActive,\r\n    value => {\r\n      active.value = value === props.to\r\n    },\r\n  )\r\n\r\n  onMounted(() => {\r\n    anchorState.increaseLink(state)\r\n  })\r\n\r\n  onBeforeUnmount(() => {\r\n    anchorState.decreaseLink(state)\r\n  })\r\n}\r\n\r\nfunction handleSelect() {\r\n  if (anchorState) {\r\n    anchorState.handleActive(props.to)\r\n  }\r\n\r\n  return false\r\n}\r\n</script>\r\n\r\n<template>\r\n  <li :class=\"nh.be('item')\">\r\n    <a\r\n      ref=\"link\"\r\n      :class=\"linkClass\"\r\n      :href=\"to\"\r\n      :style=\"linkStyle\"\r\n      :title=\"title\"\r\n      @click.prevent=\"handleSelect\"\r\n    >\r\n      <slot></slot>\r\n    </a>\r\n    <ul v-if=\"$slots.group || (children && children.length)\" :class=\"nh.be('list')\">\r\n      <slot name=\"group\">\r\n        <template v-if=\"children && children.length\">\r\n          <AnchorLink\r\n            v-for=\"child in children\"\r\n            :key=\"child.to\"\r\n            :to=\"child.to\"\r\n            :title=\"child.title\"\r\n            :children=\"child.children\"\r\n          >\r\n            {{ child.label }}\r\n          </AnchorLink>\r\n        </template>\r\n      </slot>\r\n    </ul>\r\n  </li>\r\n</template>\r\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":";;;;;;;;;AAmBA,UAAMA,IAAQC,GAERC,IAAcC,EAAOC,GAAc,IAAI,GACvCC,IAAkBF,EAAOG,GAAY,IAAI,GAEzCC,IAAKC,EAAc,QAAQ,GAC3BC,IAASC,EAAIL,KAAA,QAAAA,EAAiB,UAASA,KAAA,gBAAAA,EAAiB,UAAS,IAAI,CAAC,GACtEM,IAASD,EAAI,EAAK,GAElBE,IAAOF,EAAiB,GAExBG,IAAQC,EAAS;AAAA,MACrB,IAAIF;AAAA,MACJ,IAAIG,EAAMf,GAAO,IAAI;AAAA,MACrB,QAAAW;AAAA,MACA,QAAAF;AAAA,IAAA,CACD,GAEKO,IAAYC,EAAS,OAClB;AAAA,MACL,CAACV,EAAG,GAAG,MAAM,CAAC,GAAG;AAAA,MACjB,CAACA,EAAG,IAAI,QAAQ,QAAQ,CAAC,GAAGM,EAAM;AAAA,IACpC,EACD,GACKK,IAAYD,EAAS,OAClB;AAAA,MACL,oBAAoB,GAAGE,IAAkBV,EAAO,KAAK;AAAA,IACvD,EACD;AAED,IAAAW,EAAQd,GAAYO,CAAK,GAErBX,MACFmB;AAAA,MACE,MAAMnB,EAAY;AAAA,MAClB,CAASoB,MAAA;AACA,QAAAX,EAAA,QAAQW,MAAUtB,EAAM;AAAA,MAAA;AAAA,IAEnC,GAEAuB,EAAU,MAAM;AACd,MAAArB,EAAY,aAAaW,CAAK;AAAA,IAAA,CAC/B,GAEDW,EAAgB,MAAM;AACpB,MAAAtB,EAAY,aAAaW,CAAK;AAAA,IAAA,CAC/B;AAGH,aAASY,IAAe;AACtB,aAAIvB,KACUA,EAAA,aAAaF,EAAM,EAAE,GAG5B;AAAA,IAAA;;;kBAKP0B,EA0BK,MAAA;AAAA,QA1BA,OAAKC,EAAEC,EAAErB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,MAAA;QACfsB,EASI,KAAA;AAAA,mBARE;AAAA,UAAJ,KAAIjB;AAAA,UACH,SAAOI,EAAS,KAAA;AAAA,UAChB,MAAMc,EAAE;AAAA,UACR,SAAOZ,EAAS,KAAA;AAAA,UAChB,OAAOa,EAAK;AAAA,UACZ,WAAeN,GAAY,CAAA,SAAA,CAAA;AAAA,QAAA;UAE5BO,EAAaC,EAAA,QAAA,SAAA;AAAA,QAAA;QAELC,EAAAA,OAAO,SAAUC,cAAYA,EAAAA,SAAS,eAAhDT,EAcK,MAAA;AAAA;UAdqD,OAAKC,EAAEC,EAAErB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,QAAA;UACpEyB,EAYOC,uBAZP,MAYO;AAAA,YAXWE,EAAQ,YAAIA,EAAQ,SAAC,iBACnCT,EAQaU,GAAA,EAAA,KAAA,EAAA,GAAAC,EAPKF,EAAQ,UAAA,CAAjBG,YADTC,EAQaC,GAAA;AAAA,cANV,KAAKF,EAAM;AAAA,cACX,IAAIA,EAAM;AAAA,cACV,OAAOA,EAAM;AAAA,cACb,UAAUA,EAAM;AAAA,YAAA;yBAEjB,MAAiB;AAAA,gBAAdG,EAAAC,EAAAJ,EAAM,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;;;;"}