{"version":3,"file":"anchor.mjs","sources":["../../../components/anchor/anchor.tsx"],"sourcesContent":["import {\n  defineComponent,\n  nextTick,\n  ComponentPublicInstance,\n  ref,\n  reactive,\n  onMounted,\n  onUnmounted,\n  watchEffect,\n  provide,\n} from 'vue';\nimport { ANCHOR_SHARP_REGEXP, ANCHOR_CONTAINER, getOffsetTop } from './utils';\nimport {\n  isServer,\n  on,\n  off,\n  getScroll,\n  scrollTo,\n  getScrollContainer as utilsGetScrollContainer,\n} from '@tdesign/shared-utils';\nimport props from './props';\nimport { useTNodeJSX, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\nimport { SlotReturnValue } from '../common';\nimport Affix from '../affix';\nimport { TdAnchorProps } from './type';\n\nimport { AnchorInjectionKey } from './constants';\n\nexport interface Anchor extends ComponentPublicInstance {\n  scrollContainer: ANCHOR_CONTAINER;\n  // 执行scrollTo设置的flag, 用来禁止执行handleScroll\n  handleScrollLock: boolean;\n}\n\nexport default defineComponent({\n  name: 'TAnchor',\n  inheritAttrs: false,\n  props,\n  setup(props: TdAnchorProps, { attrs }) {\n    const anchorRef = ref<HTMLElement | null>(null);\n    const links = ref<string[]>([]);\n    const active = ref('');\n    const scrollContainer = ref<ANCHOR_CONTAINER>();\n    const handleScrollLock = ref<boolean>(false);\n    const activeLineStyle = reactive({});\n    const COMPONENT_NAME = usePrefixClass('anchor');\n    const ANCHOR_LINE_CLASSNAME = usePrefixClass('anchor__line');\n    const ANCHOR_LINE_CURSOR_CLASSNAME = usePrefixClass('anchor__line-cursor');\n    const { STATUS, SIZE } = useCommonClassName();\n    const renderTNodeJSX = useTNodeJSX();\n    /**\n     * 获取滚动容器\n     * 1. 如果是string则通过id获取\n     * 2. 如果是method则获取方法返回值\n     */\n    const getScrollContainer = () => {\n      if (isServer) {\n        return;\n      }\n      const { container } = props;\n      scrollContainer.value = utilsGetScrollContainer(container) as HTMLElement;\n      on(scrollContainer.value, 'scroll', handleScroll);\n      handleScroll();\n    };\n    /**\n     * 监听滚动事件\n     */\n    const handleScroll = () => {\n      if (handleScrollLock.value) return;\n      const { bounds, targetOffset } = props;\n      const filters: { top: number; link: string }[] = [];\n      let active = '';\n      // 找出所有当前top小于预设值\n      links.value.forEach((link) => {\n        const anchor = getAnchorTarget(link);\n        if (!anchor) {\n          return;\n        }\n        const top = getOffsetTop(anchor, scrollContainer.value);\n        if (top < bounds + targetOffset) {\n          filters.push({\n            link,\n            top,\n          });\n        }\n      });\n      // 找出小于预设值集合中top最大的\n      if (filters.length) {\n        const latest = filters.reduce((prev, cur) => (prev.top > cur.top ? prev : cur));\n        active = latest.link;\n      }\n      setCurrentActiveLink(active);\n    };\n    /**\n     * 获取锚点对应的target元素\n     *\n     * @param {string} link\n     */\n    const getAnchorTarget = (link: string): HTMLElement => {\n      const matcher = link.match(ANCHOR_SHARP_REGEXP);\n      if (!matcher) {\n        return;\n      }\n      const anchor = document.getElementById(matcher[1]);\n      if (!anchor) {\n        return;\n      }\n      return anchor;\n    };\n    /**\n     * 注册锚点\n     *\n     * @param {string} link\n     */\n    const registerLink = (link: string) => {\n      if (!ANCHOR_SHARP_REGEXP.test(link) || links.value.indexOf(link) !== -1) {\n        return;\n      }\n      links.value.push(link);\n    };\n    /**\n     * 注销锚点\n     *\n     * @param {string} link\n     */\n    const unregisterLink = (link: string) => {\n      links.value = links.value.filter((each) => each !== link);\n    };\n    /**\n     * 设置当前激活状态锚点\n     *\n     * @param {string} link\n     */\n    const setCurrentActiveLink = async (link: string): Promise<void> => {\n      if (active.value === link) {\n        return;\n      }\n      active.value = link;\n      props.onChange?.(link, active.value);\n      await nextTick();\n      updateActiveLine();\n    };\n    /**\n     * 计算active-line所在的位置\n     * 当前active-item的top + height, 以及ANCHOR_ITEM_PADDING修正\n     */\n    const updateActiveLine = () => {\n      const ele = anchorRef.value?.querySelector(`.${STATUS.value.active}>a`) as HTMLAnchorElement;\n      if (!ele) {\n        Object.assign(activeLineStyle, {});\n        return;\n      }\n      const { offsetTop: top, offsetHeight: height } = ele;\n      Object.assign(activeLineStyle, {\n        top: `${top}px`,\n        height: `${height}px`,\n        opacity: 1,\n      });\n    };\n    /**\n     * 监听AnchorLink点击事件\n     * @param {{ href: string; title: string }} link\n     */\n    const handleLinkClick = (link: { href: string; title: string; e: MouseEvent }) => {\n      props.onClick?.(link);\n    };\n    /**\n     * 滚动到指定锚点\n     *\n     * @param {string} link\n     */\n    const handleScrollTo = async (link: string): Promise<void> => {\n      const anchor = getAnchorTarget(link);\n      setCurrentActiveLink(link);\n      if (!anchor) return;\n      handleScrollLock.value = true;\n      const { targetOffset } = props;\n      const scrollTop = getScroll(scrollContainer.value);\n      const offsetTop = getOffsetTop(anchor, scrollContainer.value);\n      const top = scrollTop + offsetTop - targetOffset;\n      await scrollTo(top, {\n        container: scrollContainer.value,\n      });\n      handleScrollLock.value = false;\n    };\n    const renderCursor = () => {\n      const titleContent: SlotReturnValue = renderTNodeJSX('cursor');\n      return titleContent || <div class={ANCHOR_LINE_CURSOR_CLASSNAME.value}></div>;\n    };\n    onMounted(async () => {\n      getScrollContainer();\n      if (active.value) {\n        await nextTick();\n        handleScrollTo(active.value);\n      }\n    });\n    onUnmounted(() => {\n      if (!scrollContainer.value) return;\n      off(scrollContainer.value, 'scroll', handleScroll);\n    });\n    watchEffect(() => {\n      // 清空上一个container的事件监听\n      if (scrollContainer.value) {\n        off(scrollContainer.value, 'scroll', handleScroll);\n      }\n      getScrollContainer();\n    });\n    provide(\n      AnchorInjectionKey,\n      reactive({\n        registerLink,\n        unregisterLink,\n        handleScrollTo,\n        handleLinkClick,\n        active,\n      }),\n    );\n    return () => {\n      const { size, affixProps } = props;\n      const className = [COMPONENT_NAME.value, SIZE.value[size]];\n\n      const content = (\n        <div ref={anchorRef} class={className} {...attrs}>\n          <div class={ANCHOR_LINE_CLASSNAME.value}>\n            <div class={`${ANCHOR_LINE_CURSOR_CLASSNAME.value}-wrapper`} style={activeLineStyle}>\n              {renderCursor()}\n            </div>\n          </div>\n          {renderTNodeJSX('default')}\n        </div>\n      );\n\n      if (affixProps) {\n        return <Affix {...affixProps}>{content}</Affix>;\n      }\n\n      return content;\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","setup","attrs","_ref","anchorRef","ref","links","active","scrollContainer","handleScrollLock","activeLineStyle","reactive","COMPONENT_NAME","usePrefixClass","ANCHOR_LINE_CLASSNAME","ANCHOR_LINE_CURSOR_CLASSNAME","_useCommonClassName","useCommonClassName","STATUS","SIZE","renderTNodeJSX","useTNodeJSX","getScrollContainer","isServer","container","value","utilsGetScrollContainer","on","handleScroll","bounds","targetOffset","filters","forEach","link","anchor","getAnchorTarget","top","getOffsetTop","push","length","latest","reduce","prev","cur","setCurrentActiveLink","matcher","match","ANCHOR_SHARP_REGEXP","document","getElementById","registerLink","test","indexOf","unregisterLink","filter","each","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_props2$onChange","wrap","_context","next","abrupt","onChange","nextTick","updateActiveLine","stop","_x","apply","arguments","_anchorRef$value","ele","querySelector","assign","offsetTop","height","offsetHeight","opacity","handleLinkClick","_props2$onClick","onClick","handleScrollTo","_ref3","_callee2","scrollTop","_context2","getScroll","scrollTo","_x2","renderCursor","titleContent","_createVNode","onMounted","_callee3","_context3","onUnmounted","off","watchEffect","provide","AnchorInjectionKey","size","affixProps","className","content","concat","Affix","_default"],"mappings":"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"}