{"version":3,"file":"contextTypes.cjs","sources":["../../../../../../packages/vue-components/vc-tree/src/contextTypes.ts"],"sourcesContent":["/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\n\nimport type { Key, VueNode } from '@antdv/types';\nimport type { ComputedRef, InjectionKey, PropType, ShallowRef } from 'vue';\nimport type {\n  DataEntity,\n  Direction,\n  DragNodeEvent,\n  EventDataNode,\n  FlattenNode,\n  IconType,\n} from './interface';\nimport type { DraggableConfig } from './Tree';\n\nimport { computed, defineComponent, inject, provide, shallowRef } from 'vue';\n\nexport interface NodeMouseEventParams {\n  event: MouseEvent;\n  node: EventDataNode;\n}\nexport interface NodeDragEventParams {\n  event: DragEvent;\n  node: EventDataNode;\n}\n\nexport type NodeMouseEventHandler = (e: MouseEvent, node: EventDataNode) => void;\nexport type NodeDragEventHandler = (\n  e: DragEvent,\n  node: DragNodeEvent,\n  outsideTree?: boolean,\n) => void;\n\nexport interface TreeContextProps {\n  prefixCls: string;\n  selectable: boolean;\n  showIcon: boolean;\n  icon: IconType;\n  switcherIcon: IconType;\n  draggable: DraggableConfig | false;\n  draggingNodeKey?: Key;\n  checkable: boolean;\n  customCheckable: () => any;\n  checkStrictly: boolean;\n  disabled: boolean;\n  keyEntities: Record<Key, DataEntity<any>>;\n  // for details see comment in Tree.state (Tree.tsx)\n  dropLevelOffset?: number;\n  dropContainerKey: Key | null;\n  dropTargetKey: Key | null;\n  dropPosition: -1 | 0 | 1 | null;\n  indent: number | null;\n  dropIndicatorRender: (props: {\n    dropPosition: -1 | 0 | 1;\n    dropLevelOffset: number;\n    indent: number | null;\n    prefixCls: string;\n    direction: Direction;\n  }) => VueNode;\n  dragOverNodeKey: Key | null;\n  dragging: boolean;\n  direction: Direction;\n\n  loadData: (treeNode: EventDataNode) => Promise<void>;\n  filterTreeNode: (treeNode: EventDataNode) => boolean;\n\n  onNodeClick: NodeMouseEventHandler;\n  onNodeDoubleClick: NodeMouseEventHandler;\n  onNodeExpand: NodeMouseEventHandler;\n  onNodeSelect: NodeMouseEventHandler;\n  onNodeCheck: (e: MouseEvent, treeNode: EventDataNode, checked: boolean) => void;\n  onNodeLoad: (treeNode: EventDataNode) => void;\n  onNodeMouseEnter: NodeMouseEventHandler;\n  onNodeMouseLeave: NodeMouseEventHandler;\n  onNodeContextMenu: NodeMouseEventHandler;\n  onNodeDragStart: NodeDragEventHandler;\n  onNodeDragEnter: NodeDragEventHandler;\n  onNodeDragOver: NodeDragEventHandler;\n  onNodeDragLeave: NodeDragEventHandler;\n  onNodeDragEnd: NodeDragEventHandler;\n  onNodeDrop: NodeDragEventHandler;\n  slots: {\n    title?: (data: any) => any;\n    titleRender?: (data: any) => any;\n    [key: string]: ((...args: any[]) => any) | undefined;\n  };\n}\nconst TreeContextKey: InjectionKey<ComputedRef<TreeContextProps>> = Symbol('TreeContextKey');\n\nexport const TreeContext = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TreeContext',\n  props: {\n    value: { type: Object as PropType<TreeContextProps> },\n  },\n  setup(props, { slots }) {\n    provide(\n      TreeContextKey,\n      computed(() => props.value),\n    );\n    return () => slots.default?.();\n  },\n});\n\nexport function useInjectTreeContext() {\n  return inject(\n    TreeContextKey,\n    computed(() => ({} as TreeContextProps)),\n  );\n}\ninterface KeysStateKeyType {\n  expandedKeysSet: ComputedRef<Set<Key>>;\n  selectedKeysSet: ComputedRef<Set<Key>>;\n  loadedKeysSet: ComputedRef<Set<Key>>;\n  loadingKeysSet: ComputedRef<Set<Key>>;\n  checkedKeysSet: ComputedRef<Set<Key>>;\n  halfCheckedKeysSet: ComputedRef<Set<Key>>;\n  expandedKeys: ShallowRef<Key[]>;\n  selectedKeys: ShallowRef<Key[]>;\n  loadedKeys: ShallowRef<Key[]>;\n  loadingKeys: ShallowRef<Key[]>;\n  checkedKeys: ShallowRef<Key[]>;\n  halfCheckedKeys: ShallowRef<Key[]>;\n  flattenNodes: ShallowRef<FlattenNode[]>;\n}\nconst KeysStateKey: InjectionKey<KeysStateKeyType> = Symbol('KeysStateKey');\nexport function useProvideKeysState(state: KeysStateKeyType) {\n  provide(KeysStateKey, state);\n}\n\nexport function useInjectKeysState() {\n  return inject(KeysStateKey, {\n    expandedKeys: shallowRef<Key[]>([]),\n    selectedKeys: shallowRef<Key[]>([]),\n    loadedKeys: shallowRef<Key[]>([]),\n    loadingKeys: shallowRef<Key[]>([]),\n    checkedKeys: shallowRef<Key[]>([]),\n    halfCheckedKeys: shallowRef<Key[]>([]),\n    expandedKeysSet: computed<Set<Key>>(() => new Set()),\n    selectedKeysSet: computed<Set<Key>>(() => new Set()),\n    loadedKeysSet: computed<Set<Key>>(() => new Set()),\n    loadingKeysSet: computed<Set<Key>>(() => new Set()),\n    checkedKeysSet: computed<Set<Key>>(() => new Set()),\n    halfCheckedKeysSet: computed<Set<Key>>(() => new Set()),\n    flattenNodes: shallowRef<FlattenNode[]>([]),\n  });\n}\n"],"names":["defineComponent","provide","computed","inject","shallowRef"],"mappings":";;;;AAyFA,MAAM,cAAA,GAA8D,OAAO,gBAAgB,CAAA,CAAA;AAEpF,MAAM,cAAcA,mBAAgB,CAAA;AAAA,EACzC,YAAA,EAAc,EAAE,IAAA,EAAM,CAAE,EAAA;AAAA,EACxB,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,KAAA,EAAO,EAAE,IAAA,EAAM,MAAqC,EAAA;AAAA,GACtD;AAAA,EACA,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAAC,WAAA;AAAA,MACE,cAAA;AAAA,MACAC,YAAA,CAAS,MAAM,KAAA,CAAM,KAAK,CAAA;AAAA,KAC5B,CAAA;AACA,IAAA,OAAO,MAAG;AAtGd,MAAA,IAAA,EAAA,CAAA;AAsGiB,MAAA,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GACf;AACF,CAAC,EAAA;AAEM,SAAS,oBAAuB,GAAA;AACrC,EAAO,OAAAC,UAAA;AAAA,IACL,cAAA;AAAA,IACAD,YAAA,CAAS,OAAO,EAAuB,CAAA,CAAA;AAAA,GACzC,CAAA;AACF,CAAA;AAgBA,MAAM,YAAA,GAA+C,OAAO,cAAc,CAAA,CAAA;AACnE,SAAS,oBAAoB,KAAyB,EAAA;AAC3D,EAAAD,WAAA,CAAQ,cAAc,KAAK,CAAA,CAAA;AAC7B,CAAA;AAEO,SAAS,kBAAqB,GAAA;AACnC,EAAA,OAAOE,WAAO,YAAc,EAAA;AAAA,IAC1B,YAAA,EAAcC,cAAkB,CAAA,EAAE,CAAA;AAAA,IAClC,YAAA,EAAcA,cAAkB,CAAA,EAAE,CAAA;AAAA,IAClC,UAAA,EAAYA,cAAkB,CAAA,EAAE,CAAA;AAAA,IAChC,WAAA,EAAaA,cAAkB,CAAA,EAAE,CAAA;AAAA,IACjC,WAAA,EAAaA,cAAkB,CAAA,EAAE,CAAA;AAAA,IACjC,eAAA,EAAiBA,cAAkB,CAAA,EAAE,CAAA;AAAA,IACrC,eAAiB,EAAAF,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IACnD,eAAiB,EAAAA,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IACnD,aAAe,EAAAA,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IACjD,cAAgB,EAAAA,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IAClD,cAAgB,EAAAA,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IAClD,kBAAoB,EAAAA,YAAA,CAAmB,sBAAM,IAAI,KAAK,CAAA;AAAA,IACtD,YAAA,EAAcE,cAA0B,CAAA,EAAE,CAAA;AAAA,GAC3C,CAAA,CAAA;AACH;;;;;;;"}