You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
5.3 KiB
1 line
5.3 KiB
{"ast":null,"code":"import { defineComponent, ref, inject, computed, watch, nextTick, onMounted, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode } from 'vue';\nimport { anchorLinkProps } from './anchor-link.mjs';\nimport { anchorKey } from './constants.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nconst __default__ = defineComponent({\n name: \"ElAnchorLink\"\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: anchorLinkProps,\n setup(__props) {\n const props = __props;\n const linkRef = ref(null);\n const {\n ns,\n direction,\n currentAnchor,\n addLink,\n removeLink,\n handleClick: contextHandleClick\n } = inject(anchorKey);\n const cls = computed(() => [ns.e(\"link\"), ns.is(\"active\", currentAnchor.value === props.href)]);\n const handleClick = e => {\n contextHandleClick(e, props.href);\n };\n watch(() => props.href, (val, oldVal) => {\n nextTick(() => {\n if (oldVal) removeLink(oldVal);\n if (val) {\n addLink({\n href: val,\n el: linkRef.value\n });\n }\n });\n });\n onMounted(() => {\n const {\n href\n } = props;\n if (href) {\n addLink({\n href,\n el: linkRef.value\n });\n }\n });\n onBeforeUnmount(() => {\n const {\n href\n } = props;\n if (href) {\n removeLink(href);\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).e(\"item\"))\n }, [createElementVNode(\"a\", {\n ref_key: \"linkRef\",\n ref: linkRef,\n class: normalizeClass(unref(cls)),\n href: _ctx.href,\n onClick: handleClick\n }, [renderSlot(_ctx.$slots, \"default\", {}, () => [createTextVNode(toDisplayString(_ctx.title), 1)])], 10, [\"href\"]), _ctx.$slots[\"sub-link\"] && unref(direction) === \"vertical\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"list\"))\n }, [renderSlot(_ctx.$slots, \"sub-link\")], 2)) : createCommentVNode(\"v-if\", true)], 2);\n };\n }\n});\nvar AnchorLink = /* @__PURE__ */_export_sfc(_sfc_main, [[\"__file\", \"anchor-link.vue\"]]);\nexport { AnchorLink as default };","map":{"version":3,"names":["name","linkRef","ref","ns","direction","currentAnchor","addLink","removeLink","handleClick","contextHandleClick","inject","anchorKey","cls","computed","e","is","value","props","href","watch","val","oldVal","nextTick","el","onMounted","onBeforeUnmount","_ctx","_cache","openBlock","createElementBlock"],"sources":["../../../../../../packages/components/anchor/src/anchor-link.vue"],"sourcesContent":["<template>\n <div :class=\"ns.e('item')\">\n <a ref=\"linkRef\" :class=\"cls\" :href=\"href\" @click=\"handleClick\">\n <slot>{{ title }}</slot>\n </a>\n <div\n v-if=\"$slots['sub-link'] && direction === 'vertical'\"\n :class=\"ns.e('list')\"\n >\n <slot name=\"sub-link\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue'\nimport { anchorLinkProps } from './anchor-link'\nimport { anchorKey } from './constants'\n\ndefineOptions({\n name: 'ElAnchorLink',\n})\n\nconst props = defineProps(anchorLinkProps)\n\nconst linkRef = ref<HTMLElement | null>(null)\n\nconst {\n ns,\n direction,\n currentAnchor,\n addLink,\n removeLink,\n handleClick: contextHandleClick,\n} = inject(anchorKey)!\n\nconst cls = computed(() => [\n ns.e('link'),\n ns.is('active', currentAnchor.value === props.href),\n])\n\nconst handleClick = (e: MouseEvent) => {\n contextHandleClick(e, props.href)\n}\n\nwatch(\n () => props.href,\n (val, oldVal) => {\n nextTick(() => {\n if (oldVal) removeLink(oldVal)\n if (val) {\n addLink({\n href: val,\n el: linkRef.value!,\n })\n }\n })\n }\n)\n\nonMounted(() => {\n const { href } = props\n if (href) {\n addLink({\n href,\n el: linkRef.value!,\n })\n }\n})\n\nonBeforeUnmount(() => {\n const { href } = props\n if (href) {\n removeLink(href)\n }\n})\n</script>\n"],"mappings":";;;;mCA2Bc;EACZA,IAAM;AACR;;;;;;IAIM,MAAAC,OAAA,GAAUC,GAAA,CAAwB,IAAI;IAEtC;MACJC,EAAA;MACAC,SAAA;MACAC,aAAA;MACAC,OAAA;MACAC,UAAA;MACAC,WAAa,EAAAC;IAAA,CACf,GAAIC,MAAA,CAAOC,SAAS;IAEd,MAAAC,GAAA,GAAMC,QAAA,CAAS,MAAM,CACzBV,EAAA,CAAGW,CAAA,CAAE,MAAM,GACXX,EAAA,CAAGY,EAAG,WAAUV,aAAc,CAAAW,KAAA,KAAUC,KAAA,CAAMC,IAAI,EACnD;IAEK,MAAAV,WAAA,GAAeM,CAAkB;MAClBL,kBAAA,CAAAK,CAAA,EAAGG,KAAA,CAAMC,IAAI;IAAA,CAClC;IAEAC,KAAA,OAAAF,KAAA,CAAAC,IAAA,GAAAE,GAAA,EAAAC,MAAA;MACEC,QAAY;QAAA,IACND,MAAW,EACfd,UAAe,CAAAc,MAAA;QACT,IAAAD,GAAA;UACJd,OAAS;YACCY,IAAA,EAAAE,GAAA;YAAAG,EACN,EAAMtB,OAAA,CAAAe;UAAA;QACM;MACb,CACH;IAAA;IAEJQ,SAAA;MACF;QAAAN;MAAA,IAAAD,KAAA;MAEA,IAAAC,IAAU,EAAM;QACRZ,OAAA;UACFY,IAAM;UACAK,EAAA,EAAAtB,OAAA,CAAAe;QAAA,CACN;MAAA;IACY;IAEhBS,eAAA;MACD;QAAAP;MAAA,IAAAD,KAAA;MAED,IAAAC,IAAA;QACQX,UAAA,CAAOW,IAAI;MACjB;IACE;IACF,QAAAQ,IAAA,EAAAC,MAAA;MACD,OAAAC,SAAA,IAAAC,kBAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |