{"version":3,"file":"AnchorLink.mjs","sources":["../../../../../../packages/components/anchor/src/AnchorLink.tsx"],"sourcesContent":["import type { SlotsType } from 'vue';\nimport { classNames } from '@antdv/utils';\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, watch } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { useInjectAnchor } from './context';\nimport { anchorLinkProps } from './props';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAnchorLink',\n  inheritAttrs: false,\n  props: anchorLinkProps(),\n  slots: Object as SlotsType<{\n    title: any\n    default: any\n    customTitle: any\n  }>,\n  setup(props, { slots, attrs }) {\n    let mergedTitle = null;\n    const {\n      handleClick: contextHandleClick,\n      scrollTo,\n      unregisterLink,\n      registerLink,\n      activeLink,\n    } = useInjectAnchor();\n    const { prefixCls } = useConfigInject('anchor', props);\n\n    const handleClick = (e: Event) => {\n      const { href } = props;\n      contextHandleClick(e, { title: mergedTitle, href });\n      scrollTo(href);\n    };\n\n    watch(\n      () => props.href,\n      (val, oldVal) => {\n        nextTick(() => {\n          unregisterLink(oldVal);\n          registerLink(val);\n        });\n      },\n    );\n\n    onMounted(() => {\n      registerLink(props.href);\n    });\n\n    onBeforeUnmount(() => {\n      unregisterLink(props.href);\n    });\n\n    return () => {\n      const { href, target, title = slots.title, customTitleProps = {} } = props;\n      const pre = prefixCls.value;\n      mergedTitle = typeof title === 'function' ? title(customTitleProps) : title;\n      const active = activeLink.value === href;\n      const wrapperClassName = classNames(\n        `${pre}-link`,\n        {\n          [`${pre}-link-active`]: active,\n        },\n        attrs.class,\n      );\n      const titleClassName = classNames(`${pre}-link-title`, {\n        [`${pre}-link-title-active`]: active,\n      });\n      return (\n        <div {...attrs} class={wrapperClassName}>\n          <a\n            class={titleClassName}\n            href={href}\n            title={typeof mergedTitle === 'string' ? mergedTitle : ''}\n            target={target}\n            onClick={handleClick}\n          >\n            {slots.customTitle ? slots.customTitle(customTitleProps) : mergedTitle}\n          </a>\n          {slots.default?.()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["compatConfig","MODE","name","inheritAttrs","props","anchorLinkProps","slots","Object","setup","attrs","mergedTitle","handleClick","contextHandleClick","scrollTo","unregisterLink","registerLink","activeLink","useInjectAnchor","prefixCls","useConfigInject","e","href","title","watch","val","oldVal","nextTick","onMounted","onBeforeUnmount","target","customTitleProps","pre","value","active","wrapperClassName","classNames","class","titleClassName","_createVNode","customTitle","default"],"mappings":";;;;;;;AAOA,kCAA+B,eAAA,CAAA;AAAA,EAC7BA,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,aAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,OAAOC,eAAgB,EAAA;AAAA,EACvBC,KAAOC,EAAAA,MAAAA;AAAAA,EAKPC,MAAMJ,KAAO,EAAA;AAAA,IAAEE,KAAAA;AAAAA,IAAOG,KAAAA;AAAAA,GAAS,EAAA;AAC7B,IAAA,IAAIC,WAAc,GAAA,IAAA,CAAA;AAClB,IAAM,MAAA;AAAA,MACJC,WAAaC,EAAAA,kBAAAA;AAAAA,MACbC,QAAAA;AAAAA,MACAC,cAAAA;AAAAA,MACAC,YAAAA;AAAAA,MACAC,UAAAA;AAAAA,QACEC,eAAgB,EAAA,CAAA;AACpB,IAAM,MAAA;AAAA,MAAEC,SAAAA;AAAAA,KAAU,GAAIC,eAAgB,CAAA,QAAA,EAAUf,KAAK,CAAA,CAAA;AAErD,IAAA,MAAMO,cAAeS,CAAa,CAAA,KAAA;AAChC,MAAM,MAAA;AAAA,QAAEC,IAAAA;AAAAA,OAASjB,GAAAA,KAAAA,CAAAA;AACjBQ,MAAAA,kBAAAA,CAAmBQ,CAAG,EAAA;AAAA,QAAEE,KAAOZ,EAAAA,WAAAA;AAAAA,QAAaW,IAAAA;AAAAA,OAAM,CAAA,CAAA;AAClDR,MAAAA,QAAAA,CAASQ,IAAI,CAAA,CAAA;AAAA,KACf,CAAA;AAEAE,IAAAA,KAAAA,CACE,MAAMnB,KAAAA,CAAMiB,IACZ,EAAA,CAACG,KAAKC,MAAW,KAAA;AACfC,MAAAA,QAAAA,CAAS,MAAM;AACbZ,QAAAA,cAAAA,CAAeW,MAAM,CAAA,CAAA;AACrBV,QAAAA,YAAAA,CAAaS,GAAG,CAAA,CAAA;AAAA,OACjB,CAAA,CAAA;AAAA,KAEL,CAAA,CAAA;AAEAG,IAAAA,SAAAA,CAAU,MAAM;AACdZ,MAAAA,YAAAA,CAAaX,MAAMiB,IAAI,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AAEDO,IAAAA,eAAAA,CAAgB,MAAM;AACpBd,MAAAA,cAAAA,CAAeV,MAAMiB,IAAI,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;;AACX,MAAM,MAAA;AAAA,QAAEA,IAAAA;AAAAA,QAAMQ,MAAAA;AAAAA,QAAQP,QAAQhB,KAAMgB,CAAAA,KAAAA;AAAAA,QAAOQ,mBAAmB,EAAC;AAAA,OAAM1B,GAAAA,KAAAA,CAAAA;AACrE,MAAA,MAAM2B,MAAMb,SAAUc,CAAAA,KAAAA,CAAAA;AACtBtB,MAAAA,WAAAA,GAAc,OAAOY,KAAAA,KAAU,UAAaA,GAAAA,KAAAA,CAAMQ,gBAAgB,CAAIR,GAAAA,KAAAA,CAAAA;AACtE,MAAMW,MAAAA,MAAAA,GAASjB,WAAWgB,KAAUX,KAAAA,IAAAA,CAAAA;AACpC,MAAA,MAAMa,gBAAmBC,GAAAA,UAAAA,CACtB,CAAEJ,EAAAA,GAAI,CACP,KAAA,CAAA,EAAA;AAAA,QACE,CAAE,CAAA,EAAEA,GAAI,CAAA,YAAA,CAAa,GAAGE,MAAAA;AAAAA,OAC1B,EACAxB,MAAM2B,KACR,CAAA,CAAA;AACA,MAAA,MAAMC,cAAiBF,GAAAA,UAAAA,CAAY,CAAEJ,EAAAA,GAAI,CAAc,WAAA,CAAA,EAAA;AAAA,QACrD,CAAE,CAAA,EAAEA,GAAI,CAAA,kBAAA,CAAmB,GAAGE,MAAAA;AAAAA,OAC/B,CAAA,CAAA;AACD,MAAA,OAAAK,YAAA,KAAA,EAAA;AAAA,QAAA,GACW7B,KAAAA;AAAAA,QAAK,OAASyB,EAAAA,gBAAAA;AAAAA,OAAgB,EAAA,CAAAI,WAAAA,CAAA,GAAA,EAAA;AAAA,QAAA,OAE5BD,EAAAA,cAAAA;AAAAA,QAAc,MACfhB,EAAAA,IAAAA;AAAAA,QAAI,OACH,EAAA,OAAOX,WAAgB,KAAA,QAAA,GAAWA,WAAc,GAAA,EAAA;AAAA,QAAE,QACjDmB,EAAAA,MAAAA;AAAAA,QAAM,SACLlB,EAAAA,WAAAA;AAAAA,OAAW,EAAA,CAEnBL,KAAMiC,CAAAA,WAAAA,GAAcjC,MAAMiC,WAAYT,CAAAA,gBAAgB,CAAIpB,GAAAA,WAAW,CAAA,CAAA,EAAA,CAEvEJ,EAAMkC,GAAAA,KAAAA,CAAAA,OAAAA,KAANlC,8BAAiB,CAAA,CAAA,CAAA;AAAA,KAGxB,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}