{"version":3,"file":"virtual-tree.mjs","sources":["../../../../../../packages/components/tree-v2/src/virtual-tree.ts"],"sourcesContent":["import { buildProps, definePropType, mutable } from '@element-plus/utils/props'\nimport type { InjectionKey } from 'vue'\nimport type { TreeNodeData } from '../../tree/src/tree.type'\nimport type {\n  TreeNode,\n  TreeKey,\n  TreeData,\n  TreeOptionProps,\n  FilterMethod,\n  CheckedInfo,\n  TreeContext,\n} from './types'\n\n// constants\nexport const ROOT_TREE_INJECTION_KEY: InjectionKey<TreeContext> = Symbol()\nconst EMPTY_NODE = {\n  key: -1,\n  level: -1,\n  data: {},\n} as const\n\n// enums\nexport enum TreeOptionsEnum {\n  KEY = 'id',\n  LABEL = 'label',\n  CHILDREN = 'children',\n  DISABLED = 'disabled',\n}\n\nexport const enum SetOperationEnum {\n  ADD = 'add',\n  DELETE = 'delete',\n}\n\n// props\nexport const treeProps = buildProps({\n  data: {\n    type: definePropType<TreeData>(Array),\n    default: () => mutable([] as const),\n  },\n  emptyText: {\n    type: String,\n  },\n  height: {\n    type: Number,\n    default: 200,\n  },\n  props: {\n    type: definePropType<TreeOptionProps>(Object),\n    default: () =>\n      mutable({\n        children: TreeOptionsEnum.CHILDREN,\n        label: TreeOptionsEnum.LABEL,\n        disabled: TreeOptionsEnum.DISABLED,\n        value: TreeOptionsEnum.KEY,\n      } as const),\n  },\n  highlightCurrent: {\n    type: Boolean,\n    default: false,\n  },\n  showCheckbox: {\n    type: Boolean,\n    default: false,\n  },\n  defaultCheckedKeys: {\n    type: definePropType<TreeKey[]>(Array),\n    default: () => mutable([] as const),\n  },\n  // Whether checked state of a node not affects its father and\n  // child nodes when show-checkbox is true\n  checkStrictly: {\n    type: Boolean,\n    default: false,\n  },\n  defaultExpandedKeys: {\n    type: definePropType<TreeKey[]>(Array),\n    default: () => mutable([] as const),\n  },\n  indent: {\n    type: Number,\n    default: 16,\n  },\n  icon: {\n    type: String,\n  },\n  expandOnClickNode: {\n    type: Boolean,\n    default: true,\n  },\n  checkOnClickNode: {\n    type: Boolean,\n    default: false,\n  },\n  currentNodeKey: {\n    type: definePropType<TreeKey>([String, Number]),\n  },\n  // TODO need to optimization\n  accordion: {\n    type: Boolean,\n    default: false,\n  },\n  filterMethod: {\n    type: definePropType<FilterMethod>(Function),\n  },\n  // Performance mode will increase memory usage, but scrolling will be smoother\n  perfMode: {\n    type: Boolean,\n    default: true,\n  },\n} as const)\n\nexport const treeNodeProps = buildProps({\n  node: {\n    type: definePropType<TreeNode>(Object),\n    default: () => mutable(EMPTY_NODE),\n  },\n  expanded: {\n    type: Boolean,\n    default: false,\n  },\n  checked: {\n    type: Boolean,\n    default: false,\n  },\n  indeterminate: {\n    type: Boolean,\n    default: false,\n  },\n  showCheckbox: {\n    type: Boolean,\n    default: false,\n  },\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n  current: {\n    type: Boolean,\n    default: false,\n  },\n  hiddenExpandIcon: {\n    type: Boolean,\n    default: false,\n  },\n} as const)\n\nexport const treeNodeContentProps = buildProps({\n  node: {\n    type: definePropType<TreeNode>(Object),\n    required: true,\n  },\n} as const)\n\n// emits\nexport const NODE_CLICK = 'node-click'\nexport const NODE_EXPAND = 'node-expand'\nexport const NODE_COLLAPSE = 'node-collapse'\nexport const CURRENT_CHANGE = 'current-change'\nexport const NODE_CHECK = 'check'\nexport const NODE_CHECK_CHANGE = 'check-change'\nexport const NODE_CONTEXTMENU = 'node-contextmenu'\n\nexport const treeEmits = {\n  [NODE_CLICK]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [NODE_EXPAND]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [NODE_COLLAPSE]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [CURRENT_CHANGE]: (data: TreeNodeData, node: TreeNode) => data && node,\n  [NODE_CHECK]: (data: TreeNodeData, checkedInfo: CheckedInfo) =>\n    data && checkedInfo,\n  [NODE_CHECK_CHANGE]: (data: TreeNodeData, checked: boolean) =>\n    data && typeof checked === 'boolean',\n  [NODE_CONTEXTMENU]: (event: Event, data: TreeNodeData, node: TreeNode) =>\n    event && data && node,\n}\n\nexport const treeNodeEmits = {\n  click: (node: TreeNode) => !!node,\n  toggle: (node: TreeNode) => !!node,\n  check: (node: TreeNode, checked: boolean) =>\n    node && typeof checked === 'boolean',\n}\n"],"names":[],"mappings":"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"}