UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.22 kB
{"version":3,"file":"useNodeExpandEventBroadcast.mjs","sources":["../../../../../../../packages/components/tree/src/model/useNodeExpandEventBroadcast.ts"],"sourcesContent":["import { inject, onBeforeUnmount, provide } from 'vue'\nimport { TREE_NODE_MAP_INJECTION_KEY } from '../tokens'\n\nimport type Node from '../model/node'\n\ninterface NodeMap {\n treeNodeExpand(node?: Node): void\n children: Set<NodeMap>\n}\n\ninterface Props {\n node?: Node\n accordion: boolean\n}\n\nexport function useNodeExpandEventBroadcast(props: Props) {\n const parentNodeMap = inject(\n TREE_NODE_MAP_INJECTION_KEY,\n null\n ) as NodeMap | null\n let currentNodeMap: NodeMap | null = {\n treeNodeExpand: (node) => {\n if (props.node !== node) {\n props.node?.collapse()\n }\n },\n children: new Set(),\n }\n\n if (parentNodeMap) {\n parentNodeMap.children.add(currentNodeMap)\n }\n\n onBeforeUnmount(() => {\n if (parentNodeMap) {\n parentNodeMap.children.delete(currentNodeMap!)\n }\n currentNodeMap = null\n })\n\n provide(TREE_NODE_MAP_INJECTION_KEY, currentNodeMap)\n\n return {\n broadcastExpanded: (node?: Node): void => {\n if (!props.accordion) return\n for (const childNode of currentNodeMap!.children) {\n childNode.treeNodeExpand(node)\n }\n },\n }\n}\n"],"names":[],"mappings":";;;AAeO,SAAS,4BAA4B,KAAA,EAAc;AACxD,EAAA,MAAM,aAAA,GAAgB,MAAA;AAAA,IACpB,2BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,cAAA,GAAiC;AAAA,IACnC,cAAA,EAAgB,CAAC,IAAA,KAAS;AArB9B,MAAA,IAAA,EAAA;AAsBM,MAAA,IAAI,KAAA,CAAM,SAAS,IAAA,EAAM;AACvB,QAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,QAAA,EAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,QAAA,sBAAc,GAAA;AAAI,GACpB;AAEA,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,aAAA,CAAc,QAAA,CAAS,IAAI,cAAc,CAAA;AAAA,EAC3C;AAEA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,aAAA,CAAc,QAAA,CAAS,OAAO,cAAe,CAAA;AAAA,IAC/C;AACA,IAAA,cAAA,GAAiB,IAAA;AAAA,EACnB,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,6BAA6B,cAAc,CAAA;AAEnD,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAC,IAAA,KAAsB;AACxC,MAAA,IAAI,CAAC,MAAM,SAAA,EAAW;AACtB,MAAA,KAAA,MAAW,SAAA,IAAa,eAAgB,QAAA,EAAU;AAChD,QAAA,SAAA,CAAU,eAAe,IAAI,CAAA;AAAA,MAC/B;AAAA,IACF;AAAA,GACF;AACF;;;;"}