{"version":3,"file":"List.cjs","sources":["../../../../../../packages/vue-components/vc-virtual-list/src/List.tsx"],"sourcesContent":["import type { Key } from '@antdv/types';\nimport type { Component, CSSProperties, PropType } from 'vue';\nimport type { RenderFunc, SharedConfig } from './interface';\nimport { classNames, PropTypes, supportsPassive } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  reactive,\n  shallowRef,\n  toRaw,\n  watch,\n  watchEffect,\n} from 'vue';\nimport Filler from './Filler';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useHeights from './hooks/useHeights';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport useScrollTo from './hooks/useScrollTo';\nimport Item from './Item';\nimport ScrollBar from './ScrollBar';\n\nconst EMPTY_DATA = [];\n\nconst ScrollStyle: CSSProperties = {\n  overflowY: 'auto',\n  overflowAnchor: 'none',\n};\n\nexport type ScrollAlign = 'top' | 'bottom' | 'auto';\nexport type ScrollConfig =\n  | {\n    index: number;\n    align?: ScrollAlign;\n    offset?: number;\n  }\n  | {\n    key: Key;\n    align?: ScrollAlign;\n    offset?: number;\n  };\nexport type ScrollTo = (arg: number | ScrollConfig) => void;\n\nfunction renderChildren<T>(\n  list: T[],\n  startIndex: number,\n  endIndex: number,\n  setNodeRef: (item: T, element: HTMLElement) => void,\n  renderFunc: RenderFunc<T>,\n  { getKey }: SharedConfig<T>,\n) {\n  return list.slice(startIndex, endIndex + 1).map((item, index) => {\n    const eleIndex = startIndex + index;\n    const node = renderFunc(item, eleIndex, {\n      // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n    });\n    const key = getKey(item);\n    return (\n      <Item key={key} setRef={ele => setNodeRef(item, ele as HTMLElement)}>\n        {node}\n      </Item>\n    );\n  });\n}\n\nexport interface ListState {\n  scrollTop: number;\n  scrollMoving: boolean;\n}\n\nconst List = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'List',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    data: PropTypes.array,\n    height: Number,\n    itemHeight: Number,\n    /** If not match virtual scroll condition, Set List still use height of container. */\n    fullHeight: { type: Boolean, default: undefined },\n    itemKey: {\n      type: [String, Number, Function] as PropType<Key | ((item: Record<string, any>) => Key)>,\n      required: true,\n    },\n    component: {\n      type: [String, Object] as PropType<string | Component>,\n    },\n    /** Set `false` will always use real scroll instead of virtual one */\n    virtual: { type: Boolean, default: undefined },\n    children: Function,\n    onScroll: Function,\n    onMousedown: Function,\n    onMouseenter: Function,\n    onVisibleChange: Function as PropType<(visibleList: any[], fullList: any[]) => void>,\n  },\n  setup(props, { expose }) {\n    // ================================= MISC =================================\n    const useVirtual = computed(() => {\n      const { height, itemHeight, virtual } = props;\n      return !!(virtual !== false && height && itemHeight);\n    });\n    const inVirtual = computed(() => {\n      const { height, itemHeight, data } = props;\n      return useVirtual.value && data && itemHeight * data.length > height;\n    });\n\n    const state = reactive<ListState>({\n      scrollTop: 0,\n      scrollMoving: false,\n    });\n    const data = computed(() => {\n      return props.data || EMPTY_DATA;\n    });\n    const mergedData = shallowRef([]);\n    watch(\n      data,\n      () => {\n        mergedData.value = toRaw(data.value).slice();\n      },\n      { immediate: true },\n    );\n    const itemKey = shallowRef((_item: Record<string, any>) => undefined);\n    watch(\n      () => props.itemKey,\n      (val) => {\n        if (typeof val === 'function')\n          itemKey.value = val;\n        else\n          itemKey.value = item => item?.[val];\n      },\n      { immediate: true },\n    );\n    const componentRef = shallowRef<HTMLDivElement>();\n    const fillerInnerRef = shallowRef<HTMLDivElement>();\n    const scrollBarRef = shallowRef<any>(); // Hack on scrollbar to enable flash call\n    // =============================== Item Key ===============================\n    const getKey = (item: Record<string, any>) => {\n      return itemKey.value(item);\n    };\n\n    const sharedConfig = {\n      getKey,\n    };\n\n    // ================================ Scroll ================================\n    function syncScrollTop(newTop: number | ((prev: number) => number)) {\n      let value: number;\n      if (typeof newTop === 'function')\n        value = newTop(state.scrollTop);\n      else\n        value = newTop;\n\n      const alignedTop = keepInRange(value);\n\n      if (componentRef.value)\n        componentRef.value.scrollTop = alignedTop;\n\n      state.scrollTop = alignedTop;\n    }\n\n    // ================================ Height ================================\n    const [setInstance, collectHeight, heights, updatedMark] = useHeights(\n      mergedData,\n      getKey,\n      null,\n      null,\n    );\n\n    const calRes = reactive<{\n      scrollHeight?: number;\n      start?: number;\n      end?: number;\n      offset?: number;\n    }>({\n      scrollHeight: undefined,\n      start: 0,\n      end: 0,\n      offset: undefined,\n    });\n\n    const offsetHeight = shallowRef(0);\n    onMounted(() => {\n      nextTick(() => {\n        offsetHeight.value = fillerInnerRef.value?.offsetHeight || 0;\n      });\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        offsetHeight.value = fillerInnerRef.value?.offsetHeight || 0;\n      });\n    });\n    watch(\n      [useVirtual, mergedData],\n      () => {\n        if (!useVirtual.value) {\n          Object.assign(calRes, {\n            scrollHeight: undefined,\n            start: 0,\n            end: mergedData.value.length - 1,\n            offset: undefined,\n          });\n        }\n      },\n      { immediate: true },\n    );\n    watch(\n      [useVirtual, mergedData, offsetHeight, inVirtual],\n      () => {\n        // Always use virtual scroll bar in avoid shaking\n        if (useVirtual.value && !inVirtual.value) {\n          Object.assign(calRes, {\n            scrollHeight: offsetHeight.value,\n            start: 0,\n            end: mergedData.value.length - 1,\n            offset: undefined,\n          });\n        }\n        if (componentRef.value)\n          state.scrollTop = componentRef.value.scrollTop;\n      },\n      {\n        immediate: true,\n      },\n    );\n    watch(\n      [\n        inVirtual,\n        useVirtual,\n        () => state.scrollTop,\n        mergedData,\n        updatedMark,\n        () => props.height,\n        offsetHeight,\n      ],\n      () => {\n        if (!useVirtual.value || !inVirtual.value)\n          return;\n\n        let itemTop = 0;\n        let startIndex: number | undefined;\n        let startOffset: number | undefined;\n        let endIndex: number | undefined;\n        const dataLen = mergedData.value.length;\n        const data = mergedData.value;\n        const scrollTop = state.scrollTop;\n        const { itemHeight, height } = props;\n        const scrollTopHeight = scrollTop + height;\n\n        for (let i = 0; i < dataLen; i += 1) {\n          const item = data[i];\n          const key = getKey(item);\n\n          let cacheHeight = heights.get(key);\n          if (cacheHeight === undefined)\n            cacheHeight = itemHeight;\n\n          const currentItemBottom = itemTop + cacheHeight;\n\n          if (startIndex === undefined && currentItemBottom >= scrollTop) {\n            startIndex = i;\n            startOffset = itemTop;\n          }\n\n          // Check item bottom in the range. We will render additional one item for motion usage\n          if (endIndex === undefined && currentItemBottom > scrollTopHeight)\n            endIndex = i;\n\n          itemTop = currentItemBottom;\n        }\n\n        // When scrollTop at the end but data cut to small count will reach this\n        if (startIndex === undefined) {\n          startIndex = 0;\n          startOffset = 0;\n          endIndex = Math.ceil(height / itemHeight);\n        }\n        if (endIndex === undefined)\n          endIndex = dataLen - 1;\n\n        // Give cache to improve scroll experience\n        endIndex = Math.min(endIndex + 1, dataLen);\n        Object.assign(calRes, {\n          scrollHeight: itemTop,\n          start: startIndex,\n          end: endIndex,\n          offset: startOffset,\n        });\n      },\n      { immediate: true },\n    );\n\n    // =============================== In Range ===============================\n    const maxScrollHeight = computed(() => calRes.scrollHeight! - props.height!);\n\n    function keepInRange(newScrollTop: number) {\n      let newTop = newScrollTop;\n      if (!Number.isNaN(maxScrollHeight.value))\n        newTop = Math.min(newTop, maxScrollHeight.value);\n\n      newTop = Math.max(newTop, 0);\n      return newTop;\n    }\n\n    const isScrollAtTop = computed(() => state.scrollTop <= 0);\n    const isScrollAtBottom = computed(() => state.scrollTop >= maxScrollHeight.value);\n\n    const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n\n    // ================================ Scroll ================================\n    function onScrollBar(newScrollTop: number) {\n      const newTop = newScrollTop;\n      syncScrollTop(newTop);\n    }\n\n    // When data size reduce. It may trigger native scroll event back to fit scroll position\n    function onFallbackScroll(e: UIEvent) {\n      const { scrollTop: newScrollTop } = e.currentTarget as Element;\n      if (newScrollTop !== state.scrollTop)\n        syncScrollTop(newScrollTop);\n\n      // Trigger origin onScroll\n      props.onScroll?.(e);\n    }\n\n    // Since this added in global,should use ref to keep update\n    const [onRawWheel, onFireFoxScroll] = useFrameWheel(\n      useVirtual,\n      isScrollAtTop,\n      isScrollAtBottom,\n      (offsetY) => {\n        syncScrollTop((top) => {\n          const newTop = top + offsetY;\n          return newTop;\n        });\n      },\n    );\n\n    // Mobile touch move\n    useMobileTouchMove(useVirtual, componentRef, (deltaY, smoothOffset) => {\n      if (originScroll(deltaY, smoothOffset))\n        return false;\n\n      onRawWheel({ preventDefault() {}, deltaY } as WheelEvent);\n      return true;\n    });\n    // Firefox only\n    function onMozMousePixelScroll(e: MouseEvent) {\n      if (useVirtual.value)\n        e.preventDefault();\n    }\n    const removeEventListener = () => {\n      if (componentRef.value) {\n        componentRef.value.removeEventListener(\n          'wheel',\n          onRawWheel,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        componentRef.value.removeEventListener('DOMMouseScroll', onFireFoxScroll as any);\n        componentRef.value.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll as any);\n      }\n    };\n    watchEffect(() => {\n      nextTick(() => {\n        if (componentRef.value) {\n          removeEventListener();\n          componentRef.value.addEventListener(\n            'wheel',\n            onRawWheel,\n            supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n          );\n          componentRef.value.addEventListener('DOMMouseScroll', onFireFoxScroll as any);\n          componentRef.value.addEventListener('MozMousePixelScroll', onMozMousePixelScroll as any);\n        }\n      });\n    });\n\n    onBeforeUnmount(() => {\n      removeEventListener();\n    });\n\n    // ================================= Ref ==================================\n    const scrollTo = useScrollTo(\n      componentRef,\n      mergedData,\n      heights,\n      props,\n      getKey,\n      collectHeight,\n      syncScrollTop,\n      () => {\n        scrollBarRef.value?.delayHidden();\n      },\n    );\n\n    expose({\n      scrollTo,\n    });\n\n    const componentStyle = computed(() => {\n      let cs: CSSProperties | null = null;\n      if (props.height) {\n        cs = { [props.fullHeight ? 'height' : 'maxHeight']: `${props.height}px`, ...ScrollStyle };\n\n        if (useVirtual.value) {\n          cs!.overflowY = 'hidden';\n\n          if (state.scrollMoving)\n            cs!.pointerEvents = 'none';\n        }\n      }\n      return cs;\n    });\n\n    // ================================ Effect ================================\n    /** We need told outside that some list not rendered */\n    watch(\n      [() => calRes.start, () => calRes.end, mergedData],\n      () => {\n        if (props.onVisibleChange) {\n          const renderList = mergedData.value.slice(calRes.start, calRes.end + 1);\n\n          props.onVisibleChange(renderList, mergedData.value);\n        }\n      },\n      { flush: 'post' },\n    );\n    const delayHideScrollBar = () => {\n      scrollBarRef.value?.delayHidden();\n    };\n    return {\n      state,\n      mergedData,\n      componentStyle,\n      onFallbackScroll,\n      onScrollBar,\n      componentRef,\n      useVirtual,\n      calRes,\n      collectHeight,\n      setInstance,\n      sharedConfig,\n      scrollBarRef,\n      fillerInnerRef,\n      delayHideScrollBar,\n    };\n  },\n\n  render() {\n    const {\n      prefixCls = 'rc-virtual-list',\n      height,\n      itemHeight,\n\n      fullHeight,\n      data,\n      itemKey,\n      virtual,\n      component: Component = 'div',\n      onScroll,\n      children = this.$slots.default,\n      style,\n      class: className,\n      ...restProps\n    } = { ...this.$props, ...this.$attrs } as any;\n    const mergedClassName = classNames(prefixCls, className);\n    const { scrollTop } = this.state;\n    const { scrollHeight, offset, start, end } = this.calRes;\n    const {\n      componentStyle,\n      onFallbackScroll,\n      onScrollBar,\n      useVirtual,\n      collectHeight,\n      sharedConfig,\n      setInstance,\n      mergedData,\n      delayHideScrollBar,\n    } = this;\n    return (\n      <div\n        style={{\n          ...style,\n          position: 'relative',\n        }}\n        class={mergedClassName}\n        {...restProps}\n      >\n        <Component\n          class={`${prefixCls}-holder`}\n          style={componentStyle}\n          ref=\"componentRef\"\n          onScroll={onFallbackScroll}\n          onMouseenter={delayHideScrollBar}\n        >\n          <Filler\n            prefixCls={prefixCls}\n            height={scrollHeight}\n            offset={offset}\n            onInnerResize={collectHeight}\n            ref=\"fillerInnerRef\"\n            v-slots={{\n              default: () =>\n                renderChildren(mergedData, start, end, setInstance, children, sharedConfig),\n            }}\n          >\n          </Filler>\n        </Component>\n\n        {useVirtual && (\n          <ScrollBar\n            ref=\"scrollBarRef\"\n            prefixCls={prefixCls}\n            scrollTop={scrollTop}\n            height={height}\n            scrollHeight={scrollHeight}\n            count={mergedData.length}\n            onScroll={onScrollBar}\n            onStartMove={() => {\n              this.state.scrollMoving = true;\n            }}\n            onStopMove={() => {\n              this.state.scrollMoving = false;\n            }}\n          />\n        )}\n      </div>\n    );\n  },\n});\n\nexport default List;\n"],"names":["EMPTY_DATA","ScrollStyle","overflowY","overflowAnchor","renderChildren","list","startIndex","endIndex","setNodeRef","renderFunc","getKey","slice","map","item","index","eleIndex","node","key","_createVNode","Item","ele","default","List","defineComponent","compatConfig","MODE","name","inheritAttrs","props","prefixCls","String","data","PropTypes","array","height","Number","itemHeight","fullHeight","type","Boolean","undefined","itemKey","Function","required","component","Object","virtual","children","onScroll","onMousedown","onMouseenter","onVisibleChange","setup","expose","useVirtual","computed","inVirtual","value","length","state","reactive","scrollTop","scrollMoving","mergedData","shallowRef","watch","toRaw","immediate","_item","val","componentRef","fillerInnerRef","scrollBarRef","sharedConfig","syncScrollTop","newTop","alignedTop","keepInRange","setInstance","collectHeight","heights","updatedMark","useHeights","calRes","scrollHeight","start","end","offset","offsetHeight","onMounted","nextTick","onUpdated","assign","itemTop","startOffset","dataLen","scrollTopHeight","i","cacheHeight","get","currentItemBottom","Math","ceil","min","maxScrollHeight","newScrollTop","isNaN","max","isScrollAtTop","isScrollAtBottom","originScroll","useOriginScroll","onScrollBar","onFallbackScroll","e","currentTarget","onRawWheel","onFireFoxScroll","useFrameWheel","offsetY","top","useMobileTouchMove","deltaY","smoothOffset","preventDefault","onMozMousePixelScroll","removeEventListener","supportsPassive","passive","watchEffect","addEventListener","onBeforeUnmount","scrollTo","useScrollTo","delayHidden","componentStyle","cs","pointerEvents","renderList","flush","delayHideScrollBar","render","Component","$slots","style","class","className","restProps","$props","$attrs","mergedClassName","classNames","position","Filler","ScrollBar","onStartMove","onStopMove"],"mappings":"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"}