{"version":3,"file":"DirectoryTree.mjs","sources":["../../../../../../packages/components/tree/src/DirectoryTree.tsx"],"sourcesContent":["import type { Key } from '@antdv/types';\nimport type { DataNode, EventDataNode, ScrollTo } from '@antdv/vue-components/vc-tree/src/interface';\nimport type { SlotsType } from 'vue';\nimport type { AntdTreeNodeAttribute } from './interface';\nimport type { TreeProps } from './props';\nimport { FileOutlined, FolderOpenOutlined, FolderOutlined } from '@ant-design/icons-vue';\n\nimport { classNames, filterEmpty, initDefaultProps } from '@antdv/utils';\nimport { conductExpandParent } from '@antdv/vue-components/vc-tree/src/util';\n\n// import { conductExpandParent, convertDataToEntities, convertTreeToData, fillFieldNames } from '@antdv/vue-components'\n// import type { DataNode, EventDataNode, ScrollTo } from '@antdv/vue-components'\nimport {\n  convertDataToEntities,\n  convertTreeToData,\n  fillFieldNames,\n} from '@antdv/vue-components/vc-tree/src/utils/treeUtil';\nimport { debounce } from 'lodash-es';\n\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onUpdated,\n  ref,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { directoryTreeProps } from './props';\nimport Tree from './Tree';\n\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils/dictUtil';\n\nfunction getIcon(props: AntdTreeNodeAttribute) {\n  const { isLeaf, expanded } = props;\n  if (isLeaf)\n    return <FileOutlined />;\n\n  return expanded ? <FolderOpenOutlined /> : <FolderOutlined />;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADirectoryTree',\n  inheritAttrs: false,\n  props: initDefaultProps(directoryTreeProps(), {\n    showIcon: true,\n    expandAction: 'click',\n  }),\n  slots: Object as SlotsType<{\n    icon?: any\n    title?: any\n    switcherIcon?: any\n    titleRender?: any\n    default?: any\n  }>,\n\n  // emits: [\n  //   'update:selectedKeys',\n  //   'update:checkedKeys',\n  //   'update:expandedKeys',\n  //   'expand',\n  //   'select',\n  //   'check',\n  //   'doubleclick',\n  //   'dblclick',\n  //   'click',\n  // ],\n  setup(props, { attrs, slots, emit, expose }) {\n    // convertTreeToData 兼容 a-tree-node 历史写法，未来a-tree-node移除后，删除相关代码，不要再render中调用 treeData，否则死循环\n    const treeData = ref<DataNode[]>(\n      props.treeData || convertTreeToData(filterEmpty(slots.default?.())),\n    );\n\n    watch(\n      () => props.treeData,\n      () => {\n        treeData.value = props.treeData;\n      },\n    );\n    onUpdated(() => {\n      nextTick(() => {\n        if (props.treeData === undefined && slots.default)\n          treeData.value = convertTreeToData(filterEmpty(slots.default?.()));\n      });\n    });\n    // Shift click usage\n    const lastSelectedKey = ref<Key>();\n\n    const cachedSelectedKeys = ref<Key[]>();\n    const fieldNames = computed(() => fillFieldNames(props.fieldNames));\n    const treeRef = ref();\n    const scrollTo: ScrollTo = (scroll) => {\n      treeRef.value?.scrollTo(scroll);\n    };\n    expose({\n      scrollTo,\n      selectedKeys: computed(() => treeRef.value?.selectedKeys),\n      checkedKeys: computed(() => treeRef.value?.checkedKeys),\n      halfCheckedKeys: computed(() => treeRef.value?.halfCheckedKeys),\n      loadedKeys: computed(() => treeRef.value?.loadedKeys),\n      loadingKeys: computed(() => treeRef.value?.loadingKeys),\n      expandedKeys: computed(() => treeRef.value?.expandedKeys),\n    });\n    const getInitExpandedKeys = () => {\n      const { keyEntities } = convertDataToEntities(treeData.value, {\n        fieldNames: fieldNames.value,\n      });\n\n      let initExpandedKeys: any;\n\n      // Expanded keys\n      if (props.defaultExpandAll) {\n        initExpandedKeys = Object.keys(keyEntities);\n      } else if (props.defaultExpandParent) {\n        initExpandedKeys = conductExpandParent(\n          props.expandedKeys || props.defaultExpandedKeys || [],\n          keyEntities,\n        );\n      } else {\n        initExpandedKeys = props.expandedKeys || props.defaultExpandedKeys;\n      }\n      return initExpandedKeys;\n    };\n\n    const selectedKeys = ref(props.selectedKeys || props.defaultSelectedKeys || []);\n\n    const expandedKeys = ref<Key[]>(getInitExpandedKeys());\n\n    watch(\n      () => props.selectedKeys,\n      () => {\n        if (props.selectedKeys !== undefined)\n          selectedKeys.value = props.selectedKeys;\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.expandedKeys,\n      () => {\n        if (props.expandedKeys !== undefined)\n          expandedKeys.value = props.expandedKeys;\n      },\n      { immediate: true },\n    );\n\n    const expandFolderNode = (event: MouseEvent, node: any) => {\n      const { isLeaf } = node;\n\n      if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey)\n        return;\n\n      // Call internal rc-tree expand function\n      // https://github.com/ant-design/ant-design/issues/12567\n      treeRef.value!.onNodeExpand(event as any, node);\n    };\n    const onDebounceExpand = debounce(expandFolderNode, 200, {\n      leading: true,\n    });\n    const onExpand = (\n      keys: Key[],\n      info: {\n        node: EventDataNode\n        expanded: boolean\n        nativeEvent: MouseEvent\n      },\n    ) => {\n      if (props.expandedKeys === undefined)\n        expandedKeys.value = keys;\n\n      // Call origin function\n      emit('update:expandedKeys', keys);\n      emit('expand', keys, info);\n    };\n\n    const onClick = (event: MouseEvent, node: EventDataNode) => {\n      const { expandAction } = props;\n\n      // Expand the tree\n      if (expandAction === 'click')\n        onDebounceExpand(event, node);\n\n      emit('click', event, node);\n    };\n\n    const onDoubleClick = (event: MouseEvent, node: EventDataNode) => {\n      const { expandAction } = props;\n      // Expand the tree\n      if (expandAction === 'dblclick' || expandAction === 'doubleclick')\n        onDebounceExpand(event, node);\n\n      emit('doubleclick', event, node);\n      emit('dblclick', event, node);\n    };\n    const onSelect = (\n      keys: Key[],\n      event: {\n        event: 'select'\n        selected: boolean\n        node: any\n        selectedNodes: DataNode[]\n        nativeEvent: MouseEvent\n      },\n    ) => {\n      const { multiple } = props;\n      const { node, nativeEvent } = event;\n      const key = node[fieldNames.value.key];\n      // const newState: DirectoryTreeState = {};\n\n      // We need wrap this event since some value is not same\n      const newEvent: any = {\n        ...event,\n        selected: true, // Directory selected always true\n      };\n\n      // Windows / Mac single pick\n      const ctrlPick: boolean = nativeEvent?.ctrlKey || nativeEvent?.metaKey;\n      const shiftPick: boolean = nativeEvent?.shiftKey;\n\n      // Generate new selected keys\n      let newSelectedKeys: Key[];\n      if (multiple && ctrlPick) {\n        // Control click\n        newSelectedKeys = keys;\n        lastSelectedKey.value = key;\n        cachedSelectedKeys.value = newSelectedKeys;\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      } else if (multiple && shiftPick) {\n        // Shift click\n        newSelectedKeys = Array.from(\n          new Set([\n            ...(cachedSelectedKeys.value || []),\n            ...calcRangeKeys({\n              treeData: treeData.value,\n              expandedKeys: expandedKeys.value,\n              startKey: key,\n              endKey: lastSelectedKey.value,\n              fieldNames: fieldNames.value,\n            }),\n          ]),\n        );\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      } else {\n        // Single click\n        newSelectedKeys = [key];\n        lastSelectedKey.value = key;\n        cachedSelectedKeys.value = newSelectedKeys;\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      }\n\n      emit('update:selectedKeys', newSelectedKeys);\n      emit('select', newSelectedKeys, newEvent);\n      if (props.selectedKeys === undefined)\n        selectedKeys.value = newSelectedKeys;\n    };\n\n    const onCheck: TreeProps['onCheck'] = (checkedObjOrKeys, eventObj) => {\n      emit('update:checkedKeys', checkedObjOrKeys);\n      emit('check', checkedObjOrKeys, eventObj);\n    };\n\n    const { prefixCls, direction } = useConfigInject('tree', props);\n\n    return () => {\n      const connectClassName = classNames(\n        `${prefixCls.value}-directory`,\n        {\n          [`${prefixCls.value}-directory-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n      );\n      const { icon = slots.icon, blockNode = true, ...otherProps } = props;\n      return (\n        <Tree\n          {...attrs}\n          icon={icon || getIcon}\n          ref={treeRef}\n          blockNode={blockNode}\n          {...otherProps}\n          prefixCls={prefixCls.value}\n          class={connectClassName}\n          expandedKeys={expandedKeys.value}\n          selectedKeys={selectedKeys.value}\n          onSelect={onSelect}\n          onClick={onClick}\n          onDblclick={onDoubleClick}\n          onExpand={onExpand}\n          onCheck={onCheck}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"],"names":["getIcon","props","isLeaf","expanded","_createVNode","FileOutlined","FolderOpenOutlined","FolderOutlined","compatConfig","MODE","name","inheritAttrs","initDefaultProps","directoryTreeProps","showIcon","expandAction","slots","Object","setup","attrs","emit","expose","treeData","ref","convertTreeToData","filterEmpty","default","watch","value","onUpdated","nextTick","undefined","lastSelectedKey","cachedSelectedKeys","fieldNames","computed","fillFieldNames","treeRef","scrollTo","scroll","selectedKeys","checkedKeys","halfCheckedKeys","loadedKeys","loadingKeys","expandedKeys","getInitExpandedKeys","keyEntities","convertDataToEntities","initExpandedKeys","defaultExpandAll","keys","defaultExpandParent","conductExpandParent","defaultExpandedKeys","defaultSelectedKeys","immediate","expandFolderNode","event","node","shiftKey","metaKey","ctrlKey","onNodeExpand","onDebounceExpand","debounce","leading","onExpand","info","onClick","onDoubleClick","onSelect","multiple","nativeEvent","key","newEvent","selected","ctrlPick","shiftPick","newSelectedKeys","selectedNodes","convertDirectoryKeysToNodes","Array","from","Set","calcRangeKeys","startKey","endKey","onCheck","checkedObjOrKeys","eventObj","prefixCls","direction","useConfigInject","connectClassName","classNames","class","icon","blockNode","otherProps","Tree"],"mappings":"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"}