{"version":3,"file":"indexes.mjs","sources":["../../../../../../../packages/components/indexes/src/indexes.tsx"],"sourcesContent":["import {\n  type CSSProperties,\n  type ExtractPropTypes,\n  type InjectionKey,\n  type PropType,\n  Teleport,\n  type TeleportProps,\n  computed,\n  defineComponent,\n  nextTick,\n  onMounted,\n  ref,\n  watch,\n} from 'vue'\nimport {\n  useChildren,\n  useEventListener,\n  useExpose,\n  useNamespace,\n  useRect,\n  useScrollParent,\n  useTouch,\n} from '@xzx-design/hooks'\nimport {\n  type Numeric,\n  getRootScrollTop,\n  getScrollTop,\n  isDef,\n  isHidden,\n  makeNumberProp,\n  numericProp,\n  preventDefault,\n  setRootScrollTop,\n  truthProp,\n} from '@xzx-design/utils'\n\nimport type { IndexBarProvide } from './types'\n\nfunction genAlphabet() {\n  const charCodeOfA = 'A'.charCodeAt(0)\n  const indexList = Array.from({ length: 26 })\n    .fill('')\n    .map((_, i) => String.fromCharCode(charCodeOfA + i))\n\n  return indexList\n}\n\nexport const indexBarProps = {\n  sticky: truthProp,\n  zIndex: numericProp,\n  teleport: [String, Object] as PropType<TeleportProps['to']>,\n  highlightColor: String,\n  stickyOffsetTop: makeNumberProp(0),\n  indexList: {\n    type: Array as PropType<Numeric[]>,\n    default: genAlphabet,\n  },\n}\n\nexport type IndexBarProps = ExtractPropTypes<typeof indexBarProps>\n\nconst name = 'XzxIndexes'\n\nexport const INDEX_BAR_KEY: InjectionKey<IndexBarProvide> = Symbol(name)\n\nexport default defineComponent({\n  name,\n  __name: name,\n  props: indexBarProps,\n  emits: ['select', 'change'],\n  setup(props, { emit, slots }) {\n    const { bem } = useNamespace('indexes')\n\n    const root = ref<HTMLElement>()\n    const sidebar = ref<HTMLElement>()\n    const activeAnchor = ref<Numeric>('')\n\n    const touch = useTouch()\n    const scrollParent = useScrollParent(root)\n    const { children, linkChildren } = useChildren(INDEX_BAR_KEY)\n    let selectActiveIndex: string\n\n    linkChildren({ props })\n\n    // eslint-disable-next-line vue/return-in-computed-property\n    const sidebarStyle = computed<CSSProperties | undefined>(() => {\n      if (isDef(props.zIndex)) {\n        return {\n          zIndex: +props.zIndex + 1,\n        }\n      }\n    })\n\n    // eslint-disable-next-line vue/return-in-computed-property\n    const highlightStyle = computed<CSSProperties | undefined>(() => {\n      if (props.highlightColor) {\n        return {\n          color: props.highlightColor,\n        }\n      }\n    })\n\n    const getActiveAnchor = (\n      scrollTop: number,\n      rects: Array<{ top: number; height: number }>\n    ) => {\n      for (let i = children.length - 1; i >= 0; i--) {\n        const prevHeight = i > 0 ? rects[i - 1].height : 0\n        const reachTop = props.sticky ? prevHeight + props.stickyOffsetTop : 0\n\n        if (scrollTop + reachTop >= rects[i].top) {\n          return i\n        }\n      }\n\n      return -1\n    }\n\n    const getMatchAnchor = (index: string) =>\n      children.find((item) => String(item.index) === index)\n\n    const onScroll = () => {\n      if (isHidden(root)) {\n        return\n      }\n\n      const { sticky, indexList } = props\n      const scrollTop = getScrollTop(scrollParent.value!)\n      const scrollParentRect = useRect(scrollParent)\n\n      const rects = children.map((item) =>\n        item.getRect(scrollParent.value, scrollParentRect)\n      )\n\n      let active = -1\n      if (selectActiveIndex) {\n        const match = getMatchAnchor(selectActiveIndex)\n        if (match) {\n          const rect = match.getRect(scrollParent.value, scrollParentRect)\n          if (props.sticky && props.stickyOffsetTop) {\n            active = getActiveAnchor(rect.top - props.stickyOffsetTop, rects)\n          } else {\n            active = getActiveAnchor(rect.top, rects)\n          }\n        }\n      } else {\n        active = getActiveAnchor(scrollTop, rects)\n      }\n\n      activeAnchor.value = indexList[active]\n\n      if (sticky) {\n        children.forEach((item, index) => {\n          const { state, $el } = item\n          if (index === active || index === active - 1) {\n            const rect = $el.getBoundingClientRect()\n            state.left = rect.left\n            state.width = rect.width\n          } else {\n            state.left = null\n            state.width = null\n          }\n\n          if (index === active) {\n            state.active = true\n            state.top =\n              Math.max(props.stickyOffsetTop, rects[index].top - scrollTop) +\n              scrollParentRect.top\n          } else if (index === active - 1 && selectActiveIndex === '') {\n            const activeItemTop = rects[active].top - scrollTop\n            state.active = activeItemTop > 0\n            state.top =\n              activeItemTop + scrollParentRect.top - rects[index].height\n          } else {\n            state.active = false\n          }\n        })\n      }\n\n      selectActiveIndex = ''\n    }\n\n    const init = () => {\n      nextTick(onScroll)\n    }\n\n    useEventListener('scroll', onScroll, {\n      target: scrollParent,\n      passive: true,\n    })\n\n    onMounted(init)\n\n    watch(() => props.indexList, init)\n\n    watch(activeAnchor, (value) => {\n      if (value) {\n        emit('change', value)\n      }\n    })\n\n    const renderIndexes = () =>\n      props.indexList.map((index) => {\n        const active = index === activeAnchor.value\n        return (\n          <span\n            class={bem('index', { active })}\n            style={active ? highlightStyle.value : undefined}\n            data-index={index}\n          >\n            {index}\n          </span>\n        )\n      })\n\n    const scrollTo = (index: Numeric) => {\n      selectActiveIndex = String(index)\n      const match = getMatchAnchor(selectActiveIndex)\n\n      if (match) {\n        const scrollTop = getScrollTop(scrollParent.value!)\n        const scrollParentRect = useRect(scrollParent)\n        const { offsetHeight } = document.documentElement\n\n        match.$el.scrollIntoView()\n\n        if (scrollTop === offsetHeight - scrollParentRect.height) {\n          onScroll()\n          return\n        }\n\n        if (props.sticky && props.stickyOffsetTop) {\n          if (getRootScrollTop() === offsetHeight - scrollParentRect.height) {\n            setRootScrollTop(getRootScrollTop())\n          } else {\n            setRootScrollTop(getRootScrollTop() - props.stickyOffsetTop)\n          }\n        }\n\n        emit('select', match.index)\n      }\n    }\n\n    const scrollToElement = (element: HTMLElement) => {\n      const { index } = element.dataset\n      if (index) {\n        scrollTo(index)\n      }\n    }\n\n    const onClickSidebar = (event: MouseEvent) => {\n      scrollToElement(event.target as HTMLElement)\n    }\n\n    let touchActiveIndex: string\n\n    const onTouchMove = (event: TouchEvent) => {\n      touch.move(event)\n\n      if (touch.isVertical()) {\n        preventDefault(event)\n\n        const { clientX, clientY } = event.touches[0]\n        const target = document.elementFromPoint(\n          clientX,\n          clientY\n        ) as HTMLElement\n        if (target) {\n          const { index } = target.dataset\n\n          if (index && touchActiveIndex !== index) {\n            touchActiveIndex = index\n            scrollToElement(target)\n          }\n        }\n      }\n    }\n\n    const renderSidebar = () => (\n      <div\n        ref={sidebar}\n        class={bem('sidebar')}\n        style={sidebarStyle.value}\n        onClick={onClickSidebar}\n        onTouchstartPassive={touch.start}\n      >\n        {renderIndexes()}\n      </div>\n    )\n\n    useExpose({ scrollTo })\n\n    // useEventListener will set passive to `false` to eliminate the warning of Chrome\n    useEventListener('touchmove', onTouchMove, {\n      target: sidebar,\n    })\n\n    return () => (\n      <div ref={root} class={bem()}>\n        {props.teleport ? (\n          <Teleport to={props.teleport}>{renderSidebar()}</Teleport>\n        ) : (\n          renderSidebar()\n        )}\n        {slots.default?.()}\n      </div>\n    )\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","genAlphabet","charCodeOfA","charCodeAt","indexList","Array","from","length","fill","map","_","i","String","fromCharCode","indexBarProps","sticky","truthProp","zIndex","numericProp","teleport","highlightColor","stickyOffsetTop","makeNumberProp","type","default","name","INDEX_BAR_KEY","Symbol","defineComponent","__name","props","emits","setup","emit","slots","bem","useNamespace","root","ref","sidebar","activeAnchor","touch","useTouch","scrollParent","useScrollParent","children","linkChildren","useChildren","selectActiveIndex","sidebarStyle","computed","isDef","highlightStyle","color","getActiveAnchor","scrollTop","rects","prevHeight","height","reachTop","top","getMatchAnchor","index","find","item","onScroll","isHidden","getScrollTop","value","scrollParentRect","useRect","getRect","active","match","rect","forEach","state","$el","getBoundingClientRect","left","width","Math","max","activeItemTop","init","nextTick","useEventListener","target","passive","onMounted","watch","renderIndexes","_createVNode","undefined","scrollTo","offsetHeight","document","documentElement","scrollIntoView","getRootScrollTop","setRootScrollTop","scrollToElement","element","dataset","onClickSidebar","event","touchActiveIndex","onTouchMove","move","isVertical","preventDefault","clientX","clientY","touches","elementFromPoint","renderSidebar","start","useExpose","_slot","Teleport"],"mappings":"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"}