{"version":3,"file":"NodeList.cjs","sources":["../../../../../../packages/vue-components/vc-tree/src/NodeList.tsx"],"sourcesContent":["/**\n * Handle virtual list of the TreeNodes.\n */\n\nimport type { DataEntity, DataNode, FlattenNode, ScrollTo } from './interface';\nimport type { NodeListProps } from './props';\nimport { omit } from '@antdv/utils';\nimport { computed, defineComponent, ref, shallowRef, watch } from 'vue';\nimport VirtualList from '../../vc-virtual-list/src/List';\nimport { useInjectKeysState, useInjectTreeContext } from './contextTypes';\nimport MotionTreeNode from './MotionTreeNode';\nimport { nodeListProps } from './props';\nimport { findExpandedKeys, getExpandRange } from './utils/diffUtil';\nimport { getKey } from './utils/treeUtil';\n\nconst HIDDEN_STYLE = {\n  width: 0,\n  height: 0,\n  display: 'flex',\n  overflow: 'hidden',\n  opacity: 0,\n  border: 0,\n  padding: 0,\n  margin: 0,\n};\n\nfunction noop() {}\n\nexport const MOTION_KEY = `RC_TREE_MOTION_${Math.random()}`;\n\nconst MotionNode: DataNode = {\n  key: MOTION_KEY,\n};\n\nexport const MotionEntity: DataEntity = {\n  key: MOTION_KEY,\n  level: 0,\n  index: 0,\n  pos: '0',\n  node: MotionNode,\n  nodes: [MotionNode],\n};\n\nconst MotionFlattenData: FlattenNode = {\n  parent: null,\n  children: [],\n  pos: MotionEntity.pos,\n  data: MotionNode,\n  title: null,\n  key: MOTION_KEY,\n  /** Hold empty list here since we do not use it */\n  isStart: [],\n  isEnd: [],\n};\n\nexport interface NodeListRef {\n  scrollTo: ScrollTo;\n  getIndentWidth: () => number;\n}\n\n/**\n * We only need get visible content items to play the animation.\n */\nexport function getMinimumRangeTransitionRange(\n  list: FlattenNode[],\n  virtual: boolean,\n  height: number,\n  itemHeight: number,\n) {\n  if (virtual === false || !height)\n    return list;\n\n  return list.slice(0, Math.ceil(height / itemHeight) + 1);\n}\n\nfunction itemKey(item: FlattenNode) {\n  const { key, pos } = item;\n  return getKey(key, pos);\n}\n\nfunction getAccessibilityPath(item: FlattenNode): string {\n  let path = String(item.key);\n  let current = item;\n\n  while (current.parent) {\n    current = current.parent;\n    path = `${current.key} > ${path}`;\n  }\n\n  return path;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'NodeList',\n  inheritAttrs: false,\n  props: nodeListProps,\n  setup(props, { expose, attrs }) {\n    // =============================== Ref ================================\n    const listRef = ref();\n    const indentMeasurerRef = ref();\n    const { expandedKeys, flattenNodes } = useInjectKeysState();\n    expose({\n      scrollTo: (scroll) => {\n        listRef.value.scrollTo(scroll);\n      },\n      getIndentWidth: () => indentMeasurerRef.value.offsetWidth,\n    });\n    // ============================== Motion ==============================\n    const transitionData = shallowRef<FlattenNode[]>(flattenNodes.value);\n    const transitionRange = shallowRef([]);\n    const motionType = ref<'show' | 'hide' | null>(null);\n\n    function onMotionEnd() {\n      transitionData.value = flattenNodes.value;\n      transitionRange.value = [];\n      motionType.value = null;\n\n      props.onListChangeEnd();\n    }\n\n    const context = useInjectTreeContext();\n    watch(\n      [() => expandedKeys.value.slice(), flattenNodes],\n      ([expandedKeys, data], [prevExpandedKeys, prevData]) => {\n        const diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);\n        if (diffExpanded.key !== null) {\n          const { virtual, height, itemHeight } = props;\n          if (diffExpanded.add) {\n            const keyIndex = prevData.findIndex(({ key }) => key === diffExpanded.key);\n            const rangeNodes = getMinimumRangeTransitionRange(\n              getExpandRange(prevData, data, diffExpanded.key),\n              virtual,\n              height,\n              itemHeight,\n            );\n\n            const newTransitionData: FlattenNode[] = prevData.slice();\n            newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n            transitionData.value = newTransitionData;\n            transitionRange.value = rangeNodes;\n            motionType.value = 'show';\n          } else {\n            const keyIndex = data.findIndex(({ key }) => key === diffExpanded.key);\n\n            const rangeNodes = getMinimumRangeTransitionRange(\n              getExpandRange(data, prevData, diffExpanded.key),\n              virtual,\n              height,\n              itemHeight,\n            );\n\n            const newTransitionData: FlattenNode[] = data.slice();\n            newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n            transitionData.value = newTransitionData;\n            transitionRange.value = rangeNodes;\n            motionType.value = 'hide';\n          }\n        } else if (prevData !== data) {\n          transitionData.value = data;\n        }\n      },\n    );\n    // We should clean up motion if is changed by dragging\n    watch(\n      () => context.value.dragging,\n      (dragging) => {\n        if (!dragging)\n          onMotionEnd();\n      },\n    );\n\n    const mergedData = computed(() =>\n      props.motion === undefined ? transitionData.value : flattenNodes.value,\n    );\n    const onActiveChange = () => {\n      props.onActiveChange(null);\n    };\n    return () => {\n      const {\n        prefixCls,\n        selectable,\n        checkable,\n        disabled,\n\n        motion,\n\n        height,\n        itemHeight,\n        virtual,\n\n        focusable,\n        activeItem,\n        focused,\n        tabindex,\n\n        onKeydown,\n        onFocus,\n        onBlur,\n\n        onListChangeStart,\n        onListChangeEnd,\n\n        ...domProps\n      } = { ...props, ...attrs } as NodeListProps;\n      return (\n        <>\n          {focused && activeItem && (\n            <span style={HIDDEN_STYLE} aria-live=\"assertive\">\n              {getAccessibilityPath(activeItem)}\n            </span>\n          )}\n\n          <div>\n            <input\n              style={HIDDEN_STYLE}\n              disabled={focusable === false || disabled}\n              tabindex={focusable !== false ? tabindex : null}\n              onKeydown={onKeydown}\n              onFocus={onFocus}\n              onBlur={onBlur}\n              value=\"\"\n              onChange={noop}\n              aria-label=\"for screen reader\"\n            />\n          </div>\n\n          <div\n            class={`${prefixCls}-treenode`}\n            aria-hidden\n            style={{\n              position: 'absolute',\n              pointerEvents: 'none',\n              visibility: 'hidden',\n              height: 0,\n              overflow: 'hidden',\n            }}\n          >\n            <div class={`${prefixCls}-indent`}>\n              <div ref={indentMeasurerRef} class={`${prefixCls}-indent-unit`} />\n            </div>\n          </div>\n\n          <VirtualList\n            {...omit(domProps, ['onActiveChange'])}\n            data={mergedData.value}\n            itemKey={itemKey as any}\n            height={height}\n            fullHeight={false}\n            virtual={virtual}\n            itemHeight={itemHeight}\n            prefixCls={`${prefixCls}-list`}\n            ref={listRef}\n            onVisibleChange={(originList, fullList) => {\n              const originSet = new Set(originList);\n              const restList = fullList.filter(item => !originSet.has(item));\n\n              // Motion node is not render. Skip motion\n              if (restList.some(item => itemKey(item) === MOTION_KEY))\n                onMotionEnd();\n            }}\n            v-slots={{\n              default: (treeNode: FlattenNode) => {\n                const {\n                  pos,\n                  data: { ...restProps },\n                  title,\n                  key,\n                  isStart,\n                  isEnd,\n                } = treeNode;\n                const mergedKey = getKey(key, pos);\n                delete restProps.key;\n                delete restProps.children;\n                return (\n                  <MotionTreeNode\n                    {...restProps}\n                    eventKey={mergedKey}\n                    title={title}\n                    active={!!activeItem && key === activeItem.key}\n                    data={treeNode.data}\n                    isStart={isStart}\n                    isEnd={isEnd}\n                    motion={motion}\n                    motionNodes={key === MOTION_KEY ? transitionRange.value : null}\n                    motionType={motionType.value}\n                    onMotionStart={onListChangeStart}\n                    onMotionEnd={onMotionEnd}\n                    onMousemove={onActiveChange}\n                  />\n                );\n              },\n            }}\n          >\n          </VirtualList>\n        </>\n      );\n    };\n  },\n});\n"],"names":["HIDDEN_STYLE","width","height","display","overflow","opacity","border","padding","margin","noop","MOTION_KEY","Math","random","MotionNode","key","MotionEntity","level","index","pos","node","nodes","MotionFlattenData","parent","children","data","title","isStart","isEnd","getMinimumRangeTransitionRange","list","virtual","itemHeight","slice","ceil","itemKey","item","getKey","getAccessibilityPath","path","String","current","defineComponent","compatConfig","MODE","name","inheritAttrs","props","nodeListProps","setup","expose","attrs","listRef","ref","indentMeasurerRef","expandedKeys","flattenNodes","useInjectKeysState","scrollTo","scroll","value","getIndentWidth","offsetWidth","transitionData","shallowRef","transitionRange","motionType","onMotionEnd","onListChangeEnd","context","useInjectTreeContext","watch","prevExpandedKeys","prevData","diffExpanded","findExpandedKeys","add","keyIndex","findIndex","rangeNodes","getExpandRange","newTransitionData","splice","dragging","mergedData","computed","motion","undefined","onActiveChange","prefixCls","selectable","checkable","disabled","focusable","activeItem","focused","tabindex","onKeydown","onFocus","onBlur","onListChangeStart","domProps","_createVNode","_Fragment","position","pointerEvents","visibility","VirtualList","omit","onVisibleChange","originList","fullList","originSet","Set","restList","filter","has","some","default","treeNode","restProps","mergedKey","MotionTreeNode"],"mappings":"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"}