{"version":3,"file":"symbol.mjs","sources":["../../../components/tree/symbol.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n// import type { BITree } from '@vexip-ui/utils'\n\nexport type Key = string | number | symbol\nexport type Data = any\nexport type TreeNodeDropType = 'before' | 'inner' | 'after'\nexport type TreeLinkLine = 'dashed' | 'solid' | 'dotted' | 'none'\n\nexport interface TreeNodeKeyConfig {\n  id?: string,\n  parent?: string,\n  label?: string,\n  children?: string,\n  visible?: string,\n  selected?: string,\n  expanded?: string,\n  disabled?: string,\n  checked?: string,\n  loading?: string,\n  loaded?: string,\n  loadFail?: string,\n  readonly?: string,\n  arrow?: string,\n  checkbox?: string,\n  selectDisabled?: string,\n  expandDisabled?: string,\n  checkDisabled?: string,\n  isLeaf?: string\n}\n\nexport const enum DropType {\n  BEFORE = 'before',\n  INNER = 'inner',\n  AFTER = 'after'\n}\n\nexport type TreeNodeProps<D = Data> = {\n  id: Key,\n  parent?: Key,\n  children: TreeNodeProps[],\n  visible: boolean,\n  selected: boolean,\n  expanded: boolean,\n  disabled: boolean,\n  checked: boolean,\n  loading: boolean,\n  loaded: boolean,\n  loadFail: boolean,\n  readonly: boolean,\n  arrow: boolean | 'auto',\n  checkbox: boolean,\n  selectDisabled: boolean,\n  expandDisabled: boolean,\n  checkDisabled: boolean,\n  isLeaf: boolean | 'auto',\n  data: D,\n  /** @internal */\n  partial: boolean,\n  /** @internal */\n  matched: boolean,\n  /** @internal */\n  childMatched: boolean,\n  /** @internal */\n  upperMatched: boolean,\n  /** @internal */\n  depth: number,\n  /** @internal */\n  last: boolean,\n  /** @internal */\n  upstreamLast: boolean[],\n  /** @internal */\n  lineIndexes: number[]\n}\n\nexport type TreeNodePostCreate<D = Data> = (node: TreeNodeProps<D>) => void\nexport type TreeNodeRenderFn<D = Data> = (params: { data: D, node: TreeNodeProps<D> }) => any\nexport type AsyncLoadFn<D = Data> = (\n  data: D,\n  node: Readonly<TreeNodeProps<D>>\n) => void | boolean | Promise<any>\nexport type FilterFn<D = Data> = (data: D, node: TreeNodeProps<D>) => boolean\nexport type NodePropsFn<D = Data> = (data: D, node: TreeNodeProps<D>) => Data\n\nexport interface TreeCommonSlotParams {\n  data: Data,\n  node: TreeNodeProps,\n  depth: number,\n  focused: boolean\n}\n\nexport interface TreeNodeSlotParams extends TreeCommonSlotParams {\n  /** @deprecated */\n  lineCount: number,\n  lineIndexes: number[],\n  toggleCheck: (checked?: boolean) => void,\n  toggleExpand: (expanded?: boolean) => Promise<void>,\n  toggleSelect: (able?: boolean) => Promise<void>\n}\n\nexport interface TreeNodeInstance {\n  el?: HTMLElement | null,\n  arrow?: HTMLElement | null,\n  node: TreeNodeProps\n}\n\nexport interface TreeNodeState {\n  el?: HTMLElement | null,\n  depth: number,\n  disabled: boolean,\n  readonly: boolean\n}\n\nexport interface TreeCollapseProps {\n  id: symbol,\n  placeholder: true,\n  type: 'expand' | 'reduce',\n  height: number,\n  nodes: TreeNodeProps[]\n}\n\nexport interface TreeState {\n  arrow: boolean | 'auto',\n  checkbox: boolean,\n  suffixCheckbox: boolean,\n  noCascaded: boolean,\n  linkLine: false | TreeLinkLine,\n  virtual: boolean,\n  labelKey: string,\n  draggable: boolean,\n  floorSelect: boolean,\n  renderer: TreeNodeRenderFn,\n  prefixRenderer: TreeNodeRenderFn,\n  suffixRenderer: TreeNodeRenderFn,\n  arrowIcon: Record<string, any>,\n  blockEffect: boolean,\n  dragging: boolean,\n  boundAsyncLoad: boolean,\n  nodeStates: Map<Key, TreeNodeState>,\n  expanding: boolean,\n  getParentNode(node: TreeNodeProps): TreeNodeProps | null,\n  updateVisibleNodeEls(): void,\n  computeCheckedState(originNode: TreeNodeProps, able: boolean): void,\n  handleNodeClick(node: TreeNodeProps): void,\n  handleNodeSelect(node: TreeNodeProps): void,\n  handleNodeCancel(node: TreeNodeProps): void,\n  handleNodeExpand(node: TreeNodeProps): void,\n  handleNodeReduce(node: TreeNodeProps): void,\n  handleAsyncLoad(node: TreeNodeProps): Promise<boolean>,\n  handleNodeDragStart(nodeInstance: TreeNodeInstance): void,\n  handleNodeDragOver(nodeInstance: TreeNodeInstance, event: DragEvent): void,\n  handleNodeDrop(nodeInstance: TreeNodeInstance): void,\n  handleNodeDragEnd(nodeInstance: TreeNodeInstance): void,\n  handleHittingChange(type: 'up' | 'down'): void,\n  handleNodeHitting(nodeEl?: HTMLElement | null): void,\n  handleLabelClick(node: TreeNodeProps): void\n}\n\nexport interface TreeSlots {\n  node?: (params: TreeNodeSlotParams) => any,\n  arrow?: (params: TreeCommonSlotParams) => any,\n  label?: (params: TreeCommonSlotParams) => any,\n  prefix?: (params: TreeCommonSlotParams) => any,\n  suffix?: (params: TreeCommonSlotParams) => any,\n  empty?: () => any\n}\n\nexport const TREE_STATE = '__VXP_TREE_STATE' as unknown as InjectionKey<TreeState>\nexport const TREE_NODE_STATE = '__VXP_TREE_NODE_STATE' as unknown as InjectionKey<TreeNodeState>\n\nexport const defaultKeyConfig: Required<TreeNodeKeyConfig> = {\n  id: 'id',\n  parent: 'parent',\n  label: 'label',\n  children: 'children',\n  visible: 'visible',\n  selected: 'selected',\n  expanded: 'expanded',\n  disabled: 'disabled',\n  checked: 'checked',\n  loading: 'loading',\n  loaded: 'loaded',\n  loadFail: 'loadFail',\n  readonly: 'readonly',\n  arrow: 'arrow',\n  checkbox: 'checkbox',\n  selectDisabled: 'selectDisabled',\n  expandDisabled: 'expandDisabled',\n  checkDisabled: 'checkDisabled',\n  isLeaf: 'isLeaf'\n}\n"],"names":["DropType","TREE_STATE","TREE_NODE_STATE","defaultKeyConfig"],"mappings":"AA8BkB,IAAAA,sBAAAA,OAChBA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SAHQA,IAAAA,KAAA,CAAA,CAAA;AAwIX,MAAMC,IAAa,oBACbC,IAAkB,yBAElBC,IAAgD;AAAA,EAC3D,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,QAAQ;AACV;"}