{"version":3,"file":"anchor-item.mjs","sources":["../../../components/anchor/anchor-item.tsx"],"sourcesContent":["import { defineComponent, h, VNodeChild, onMounted, onUnmounted, inject, watch } from 'vue';\nimport { ANCHOR_SHARP_REGEXP } from './utils';\nimport props from './anchor-item-props';\nimport { usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\nimport { AnchorInjectionKey } from './constants';\nimport { isString, isFunction } from 'lodash-es';\n\nconst localProps = {\n  ...props,\n  href: {\n    type: String,\n    required: true,\n    validator(v: string): boolean {\n      return ANCHOR_SHARP_REGEXP.test(v);\n    },\n  },\n};\n\nexport default defineComponent({\n  name: 'TAnchorItem',\n  inject: {\n    tAnchor: { default: undefined },\n  },\n  props: localProps,\n  setup(props, { slots }) {\n    const anchor = inject(AnchorInjectionKey, undefined);\n    const CLASSNAME_PREFIX = usePrefixClass('anchor__item');\n    const { STATUS } = useCommonClassName();\n    const register = () => {\n      anchor.registerLink(props.href as string);\n    };\n    const unregister = () => {\n      const { href } = props;\n      if (!href) return;\n      anchor.unregisterLink(href);\n    };\n    const handleClick = (e: MouseEvent) => {\n      const { href, title } = props;\n      if (!props.customScroll) anchor.handleScrollTo(href);\n      anchor.handleLinkClick({ href, title: isString(title) ? title : undefined, e });\n    };\n    const renderTitle = () => {\n      const { title } = props;\n      const { title: titleSlot } = slots;\n      let titleVal: VNodeChild;\n      if (isString(title)) {\n        titleVal = title;\n      } else if (isFunction(title)) {\n        titleVal = title(h);\n      } else if (titleSlot) {\n        titleVal = titleSlot(null);\n      }\n      return titleVal;\n    };\n    watch(\n      () => props.href,\n      () => {\n        unregister();\n        register();\n      },\n      { immediate: true },\n    );\n    onMounted(() => {\n      register();\n    });\n    onUnmounted(() => {\n      unregister();\n    });\n    return () => {\n      const { href, target } = props;\n      const { default: children, title: titleSlot } = slots;\n      const title = renderTitle();\n      const titleAttr = isString(title) ? title : null;\n      const active = anchor.active === href;\n      const wrapperClass = {\n        [CLASSNAME_PREFIX.value]: true,\n        [STATUS.value.active]: active,\n      };\n      const titleClass = {\n        [`${CLASSNAME_PREFIX.value}-link`]: true,\n      };\n      return (\n        <div class={wrapperClass}>\n          <a href={href} title={titleAttr} class={titleClass} target={target} onClick={handleClick}>\n            {titleSlot ? titleSlot(null) : title}\n          </a>\n          {children && children(null)}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["localProps","_objectSpread","props","href","type","String","required","validator","v","ANCHOR_SHARP_REGEXP","test","defineComponent","name","inject","tAnchor","setup","slots","_ref","anchor","AnchorInjectionKey","CLASSNAME_PREFIX","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","register","registerLink","unregister","unregisterLink","handleClick","e","title","customScroll","handleScrollTo","handleLinkClick","isString","renderTitle","titleSlot","titleVal","isFunction","h","watch","immediate","onMounted","onUnmounted","target","children","titleAttr","active","wrapperClass","_defineProperty","value","titleClass","concat","_createVNode"],"mappings":"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"}