{"version":3,"file":"indexes.mjs","sources":["../../src/indexes/indexes.tsx"],"sourcesContent":["import {\n  ref,\n  reactive,\n  defineComponent,\n  onMounted,\n  watchEffect,\n  onBeforeUnmount,\n  provide,\n  computed,\n  watch,\n  ComponentPublicInstance,\n  nextTick,\n  toRefs,\n} from 'vue';\nimport { throttle } from 'lodash-es';\nimport { preventDefault } from '../shared/dom';\nimport config from '../config';\nimport IndexesProps from './props';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdIndexesAnchorProps } from './type';\nimport useVModel from '../hooks/useVModel';\n\ninterface State {\n  showSidebarTip: boolean;\n  activeSidebar: string | number;\n  children: ComponentPublicInstance<TdIndexesAnchorProps>[];\n}\n\ninterface GroupTop {\n  height: number;\n  top: number;\n  anchor: string | number;\n  totalHeight: number;\n}\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-indexes`,\n  props: IndexesProps,\n  emits: ['select', 'change', 'update:current'],\n  setup(props) {\n    const { current, modelValue } = toRefs(props);\n    const readerTNodeJSX = useTNodeJSX();\n    const indexesClass = usePrefixClass('indexes');\n\n    const [currentIndex, setCurrentIndex] = useVModel(current, modelValue, props.defaultCurrent, () => {}, 'current');\n\n    let timeOut: number;\n    const indexesRoot = ref<HTMLElement>();\n    const parentRect = ref();\n    const state: State = reactive({\n      showSidebarTip: false,\n      activeSidebar: '',\n      children: [],\n    });\n\n    const groupTop: Array<GroupTop> = [];\n    const indexList = computed(() => {\n      if (!props.indexList) {\n        const start = 'A'.charCodeAt(0);\n        const alphabet = [];\n        for (let i = start, end = start + 26; i < end; i += 1) {\n          alphabet.push(String.fromCharCode(i));\n        }\n        return alphabet;\n      }\n      return props.indexList;\n    });\n\n    const setAnchorOnScroll = (scrollTop: number) => {\n      if (!groupTop.length) return;\n      const { sticky, stickyOffset } = props;\n      const stickyTop = stickyOffset + parentRect.value.top;\n      scrollTop += stickyTop;\n      const curIndex = groupTop.findIndex(\n        (group) => scrollTop >= group.top - group.height && scrollTop <= group.top + group.totalHeight - group.height,\n      );\n      state.activeSidebar = groupTop[0].anchor;\n      if (curIndex === -1) return;\n      state.activeSidebar = groupTop[curIndex].anchor;\n      const curGroup = groupTop[curIndex];\n      setCurrentIndex(curGroup.anchor);\n      if (sticky) {\n        const offset = curGroup.top - scrollTop;\n        const betwixt = offset < curGroup.height && offset > 0 && scrollTop > stickyTop;\n        state.children.forEach((child, index) => {\n          const { $el } = child;\n          const wrapperClass = `${indexesClass.value}-anchor__wrapper`;\n          const headerClass = `${indexesClass.value}-anchor__header`;\n          const wrapper = $el.querySelector(`.${wrapperClass}`);\n          const header = $el.querySelector(`.${headerClass}`);\n          if (index === curIndex) {\n            if (scrollTop - parentRect.value.top > stickyOffset) {\n              wrapper.classList.add(`${wrapperClass}--sticky`);\n            } else {\n              wrapper.classList.remove(`${wrapperClass}--sticky`);\n            }\n            wrapper.classList.add(`${wrapperClass}--active`);\n            header.classList.add(`${headerClass}--active`);\n            wrapper.style = `transform: translate3d(0, ${betwixt ? offset : 0}px, 0); top: ${stickyTop}px`;\n          } else if (index + 1 === curIndex) {\n            wrapper.classList.add(`${wrapperClass}--sticky`);\n            wrapper.classList.add(`${wrapperClass}--active`);\n            header.classList.add(`${headerClass}--active`);\n            wrapper.style = `transform: translate3d(0, ${\n              betwixt ? offset - groupTop[index].height : 0\n            }px, 0); top: ${stickyTop}px;`;\n          } else {\n            wrapper.classList.remove(`${wrapperClass}--sticky`);\n            wrapper.classList.remove(`${wrapperClass}--active`);\n            header.classList.remove(`${headerClass}--active`);\n            wrapper.style = '';\n          }\n        });\n      }\n    };\n\n    const scrollToByIndex = (index: number | string) => {\n      const curGroup = groupTop.find((item) => item.anchor === index);\n      if (indexesRoot.value && curGroup) {\n        indexesRoot.value.scrollTo?.(0, curGroup.top ?? 0);\n        setCurrentIndex(index);\n      }\n    };\n\n    const setActiveSidebarAndTip = (index: string | number) => {\n      state.activeSidebar = index;\n      state.showSidebarTip = true;\n    };\n\n    const handleSidebarItemClick = (index: string | number) => {\n      props.onSelect?.(index);\n      setActiveSidebarAndTip(index);\n      scrollToByIndex(index);\n    };\n\n    const handleRootScroll = throttle((e: Event) => {\n      const scrollTop = indexesRoot.value?.scrollTop ?? 0;\n      setAnchorOnScroll(scrollTop);\n    }, 1000 / 30);\n\n    const clearSidebarTip = (): void => {\n      if (state.showSidebarTip && state.activeSidebar) {\n        timeOut && clearTimeout(timeOut);\n        timeOut = window.setTimeout(() => {\n          state.showSidebarTip = false;\n        }, 1000);\n      }\n    };\n\n    const getAnchorsRect = () => {\n      return Promise.all(\n        state.children.map((child) => {\n          const { $el, index } = child;\n          const rect = $el.getBoundingClientRect();\n          groupTop.push({\n            height: rect.height,\n            top: rect.top - parentRect.value.top,\n            anchor: index,\n            totalHeight: 0,\n          });\n          return child;\n        }),\n      );\n    };\n\n    const handleSidebarTouchmove = (event: TouchEvent) => {\n      preventDefault(event, false);\n      const { touches } = event;\n      const { clientX, clientY } = touches[0];\n      const target = document.elementFromPoint(clientX, clientY);\n      if (target && target.className === `${indexesClass.value}__sidebar-item` && target instanceof HTMLElement) {\n        const { index } = target.dataset;\n        const curIndex = indexList.value.find((idx) => String(idx) === index);\n        if (curIndex !== undefined && state.activeSidebar !== curIndex) {\n          setActiveSidebarAndTip(curIndex);\n          scrollToByIndex(curIndex);\n        }\n      }\n    };\n\n    const relation = (child: ComponentPublicInstance) => {\n      child && state.children.push(child);\n    };\n\n    const unRelation = (child: ComponentPublicInstance) => {\n      const index = state.children.indexOf(child);\n      if (index > -1) {\n        state.children.splice(index, 1);\n      }\n    };\n\n    watchEffect(() => {\n      if (state.showSidebarTip) {\n        clearSidebarTip();\n      }\n    });\n\n    watch(\n      () => state.activeSidebar,\n      (val, oldVal) => {\n        if (val !== oldVal) {\n          props.onChange?.(state.activeSidebar);\n        }\n      },\n    );\n\n    const init = () => {\n      nextTick(() => {\n        // 清空旧的位置数据，防止搜索过滤后数据残留导致点击索引失效\n        groupTop.length = 0;\n        parentRect.value = indexesRoot.value?.getBoundingClientRect() || { top: 0 };\n        getAnchorsRect().then(() => {\n          groupTop.forEach((item, index) => {\n            const next = groupTop[index + 1];\n            item.totalHeight = (next?.top || Infinity) - item.top;\n          });\n          setAnchorOnScroll(0);\n          scrollToByIndex(currentIndex.value);\n        });\n      });\n    };\n\n    onMounted(init);\n\n    watch(() => props.indexList, init);\n    // 监听子组件数量变化（搜索过滤后 anchor 增减），重新计算位置\n    watch(() => state.children.length, init);\n    watch(\n      () => currentIndex.value,\n      (val) => {\n        scrollToByIndex(val);\n      },\n      { immediate: true },\n    );\n\n    onBeforeUnmount(() => {\n      timeOut && clearTimeout(timeOut);\n    });\n\n    provide('indexesProvide', {\n      relation,\n      unRelation,\n    });\n\n    return () => (\n      <div ref={indexesRoot} class={indexesClass.value} onScroll={handleRootScroll}>\n        <div class={`${indexesClass.value}__sidebar`}>\n          {indexList.value.map((item) => (\n            <div\n              class={[\n                `${indexesClass.value}__sidebar-item`,\n                state.activeSidebar === item ? `${indexesClass.value}__sidebar-item--active` : '',\n              ]}\n              data-index={item}\n              onClick={(e: MouseEvent) => {\n                e.preventDefault();\n                handleSidebarItemClick(item);\n              }}\n              onTouchmove={handleSidebarTouchmove}\n            >\n              {item}\n              {state.showSidebarTip && state.activeSidebar === item && (\n                <div class={`${indexesClass.value}__sidebar-tips`}>{state.activeSidebar}</div>\n              )}\n            </div>\n          ))}\n        </div>\n        {readerTNodeJSX('default')}\n      </div>\n    );\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","IndexesProps","emits","setup","_toRefs","toRefs","current","modelValue","readerTNodeJSX","useTNodeJSX","indexesClass","usePrefixClass","_useVModel","useVModel","defaultCurrent","_useVModel2","_slicedToArray","currentIndex","setCurrentIndex","timeOut","indexesRoot","ref","parentRect","state","reactive","showSidebarTip","activeSidebar","children","groupTop","indexList","computed","start","charCodeAt","alphabet","i","end","push","String","fromCharCode","setAnchorOnScroll","scrollTop","length","sticky","stickyOffset","stickyTop","value","top","curIndex","findIndex","group","height","totalHeight","anchor","curGroup","offset","betwixt","forEach","child","index","$el","wrapperClass","concat","headerClass","wrapper","querySelector","header","classList","add","remove","style","scrollToByIndex","find","item","_indexesRoot$value$sc","_indexesRoot$value","_curGroup$top","scrollTo","call","setActiveSidebarAndTip","handleSidebarItemClick","_props$onSelect","onSelect","handleRootScroll","throttle","e","_indexesRoot$value$sc2","_indexesRoot$value2","clearSidebarTip","clearTimeout","window","setTimeout","getAnchorsRect","Promise","all","map","rect","getBoundingClientRect","handleSidebarTouchmove","event","preventDefault","touches","_touches$","clientX","clientY","target","document","elementFromPoint","className","HTMLElement","dataset","idx","relation","unRelation","indexOf","splice","watchEffect","watch","val","oldVal","_props$onChange","onChange","init","nextTick","_indexesRoot$value3","then","next","Infinity","onMounted","immediate","onBeforeUnmount","provide","_createVNode","onClick"],"mappings":"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"}