{"version":3,"file":"virtual-tree.mjs","names":[],"sources":["../../../../../../packages/components/tree-v2/src/virtual-tree.ts"],"sourcesContent":["import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isBoolean,\n  mutable,\n} from '@element-plus/utils'\n\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\nimport type { InjectionKey } from 'vue'\nimport type { TreeNodeData } from '@element-plus/components/tree/src/tree.type'\nimport type {\n  CheckedInfo,\n  FilterMethod,\n  TreeContext,\n  TreeData,\n  TreeKey,\n  TreeNode,\n  TreeOptionProps,\n} from './types'\n\n// constants\nexport const ROOT_TREE_INJECTION_KEY: InjectionKey<TreeContext> = Symbol()\nexport const 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  CLASS = '',\n}\n\nexport const enum SetOperationEnum {\n  ADD = 'add',\n  DELETE = 'delete',\n}\n\nconst itemSize = {\n  type: Number,\n  default: 26,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TreeProps` instead.\n */\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        class: TreeOptionsEnum.CLASS,\n      } as const),\n  },\n  highlightCurrent: Boolean,\n  showCheckbox: Boolean,\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: Boolean,\n  defaultExpandedKeys: {\n    type: definePropType<TreeKey[]>(Array),\n    default: () => mutable([] as const),\n  },\n  indent: {\n    type: Number,\n    default: 16,\n  },\n  itemSize,\n  icon: {\n    type: iconPropType,\n  },\n  expandOnClickNode: {\n    type: Boolean,\n    default: true,\n  },\n  checkOnClickNode: Boolean,\n  checkOnClickLeaf: {\n    type: Boolean,\n    default: true,\n  },\n  currentNodeKey: {\n    type: definePropType<TreeKey>([String, Number]),\n  },\n  // TODO need to optimization\n  accordion: Boolean,\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  /**\n   * @description always show scrollbar\n   */\n  scrollbarAlwaysOn: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TreeNodeProps` instead.\n */\nexport const treeNodeProps = buildProps({\n  node: {\n    type: definePropType<TreeNode>(Object),\n    default: () => mutable(EMPTY_NODE),\n  },\n  expanded: Boolean,\n  checked: Boolean,\n  indeterminate: Boolean,\n  showCheckbox: Boolean,\n  disabled: Boolean,\n  current: Boolean,\n  hiddenExpandIcon: Boolean,\n  itemSize,\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_DROP = 'node-drop'\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, e: MouseEvent) =>\n    data && node && e,\n  [NODE_DROP]: (data: TreeNodeData, node: TreeNode, e: DragEvent) =>\n    data && node && e,\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 && isBoolean(checked),\n  [NODE_CONTEXTMENU]: (evt: Event, data: TreeNodeData, node: TreeNode) =>\n    evt && data && node,\n}\n\nexport const treeNodeEmits = {\n  click: (node: TreeNode, e: MouseEvent) => !!(node && e),\n  drop: (node: TreeNode, e: DragEvent) => !!(node && e),\n  toggle: (node: TreeNode) => !!node,\n  check: (node: TreeNode, checked: CheckboxValueType) =>\n    node && isBoolean(checked),\n}\n"],"mappings":";;;;;;AAsBA,MAAa,0BAAqD,QAAQ;AAC1E,MAAa,aAAa;CACxB,KAAK;CACL,OAAO;CACP,MAAM,EAAE;CACT;AAGD,IAAY,kBAAL;AACL;AACA;AACA;AACA;AACA;;KACD;AAED,IAAkB,mBAAX;AACL;AACA;;KACD;AAED,MAAM,WAAW;CACf,MAAM;CACN,SAAS;CACV;;;;AAKD,MAAa,YAAY,WAAW;CAClC,MAAM;EACJ,MAAM,eAAyB,MAAM;EACrC,eAAe,QAAQ,EAAE,CAAU;EACpC;CACD,WAAW,EACT,MAAM,QACP;CACD,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CACD,OAAO;EACL,MAAM,eAAgC,OAAO;EAC7C,eACE,QAAQ;GACN,UAAU,gBAAgB;GAC1B,OAAO,gBAAgB;GACvB,UAAU,gBAAgB;GAC1B,OAAO,gBAAgB;GACvB,OAAO,gBAAgB;GACxB,CAAU;EACd;CACD,kBAAkB;CAClB,cAAc;CACd,oBAAoB;EAClB,MAAM,eAA0B,MAAM;EACtC,eAAe,QAAQ,EAAE,CAAU;EACpC;CAGD,eAAe;CACf,qBAAqB;EACnB,MAAM,eAA0B,MAAM;EACtC,eAAe,QAAQ,EAAE,CAAU;EACpC;CACD,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CACD;CACA,MAAM,EACJ,MAAM,cACP;CACD,mBAAmB;EACjB,MAAM;EACN,SAAS;EACV;CACD,kBAAkB;CAClB,kBAAkB;EAChB,MAAM;EACN,SAAS;EACV;CACD,gBAAgB,EACd,MAAM,eAAwB,CAAC,QAAQ,OAAO,CAAC,EAChD;CAED,WAAW;CACX,cAAc,EACZ,MAAM,eAA6B,SAAS,EAC7C;CAED,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,mBAAmB;CACpB,CAAU;;;;AAKX,MAAa,gBAAgB,WAAW;CACtC,MAAM;EACJ,MAAM,eAAyB,OAAO;EACtC,eAAe,QAAQ,WAAW;EACnC;CACD,UAAU;CACV,SAAS;CACT,eAAe;CACf,cAAc;CACd,UAAU;CACV,SAAS;CACT,kBAAkB;CAClB;CACD,CAAU;AAEX,MAAa,uBAAuB,WAAW,EAC7C,MAAM;CACJ,MAAM,eAAyB,OAAO;CACtC,UAAU;CACX,EACF,CAAU;AAGX,MAAa,aAAa;AAC1B,MAAa,YAAY;AACzB,MAAa,cAAc;AAC3B,MAAa,gBAAgB;AAC7B,MAAa,iBAAiB;AAC9B,MAAa,aAAa;AAC1B,MAAa,oBAAoB;AACjC,MAAa,mBAAmB;AAEhC,MAAa,YAAY;EACtB,cAAc,MAAoB,MAAgB,MACjD,QAAQ,QAAQ;EACjB,aAAa,MAAoB,MAAgB,MAChD,QAAQ,QAAQ;EACjB,eAAe,MAAoB,SAAmB,QAAQ;EAC9D,iBAAiB,MAAoB,SAAmB,QAAQ;EAChE,kBAAkB,MAAoB,SAAmB,QAAQ;EACjE,cAAc,MAAoB,gBACjC,QAAQ;EACT,qBAAqB,MAAoB,YACxC,QAAQ,UAAU,QAAQ;EAC3B,oBAAoB,KAAY,MAAoB,SACnD,OAAO,QAAQ;CAClB;AAED,MAAa,gBAAgB;CAC3B,QAAQ,MAAgB,MAAkB,CAAC,EAAE,QAAQ;CACrD,OAAO,MAAgB,MAAiB,CAAC,EAAE,QAAQ;CACnD,SAAS,SAAmB,CAAC,CAAC;CAC9B,QAAQ,MAAgB,YACtB,QAAQ,UAAU,QAAQ;CAC7B"}