UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.3 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,KAAc,EAAA;AACxD,EAAA,MAAM,aAAgB,GAAA,MAAA;AAAA,IACpB,2BAAA;AAAA,IACA,IAAA;AAAA,GACF,CAAA;AACA,EAAA,IAAI,cAAiC,GAAA;AAAA,IACnC,cAAA,EAAgB,CAAC,IAAS,KAAA;AArB9B,MAAA,IAAA,EAAA,CAAA;AAsBM,MAAI,IAAA,KAAA,CAAM,SAAS,IAAM,EAAA;AACvB,QAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAN,IAAY,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,EAAA,CAAA;AAAA,OACd;AAAA,KACF;AAAA,IACA,QAAA,sBAAc,GAAI,EAAA;AAAA,GACpB,CAAA;AAEA,EAAA,IAAI,aAAe,EAAA;AACjB,IAAc,aAAA,CAAA,QAAA,CAAS,IAAI,cAAc,CAAA,CAAA;AAAA,GAC3C;AAEA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,aAAe,EAAA;AACjB,MAAc,aAAA,CAAA,QAAA,CAAS,OAAO,cAAe,CAAA,CAAA;AAAA,KAC/C;AACA,IAAiB,cAAA,GAAA,IAAA,CAAA;AAAA,GAClB,CAAA,CAAA;AAED,EAAA,OAAA,CAAQ,6BAA6B,cAAc,CAAA,CAAA;AAEnD,EAAO,OAAA;AAAA,IACL,iBAAA,EAAmB,CAAC,IAAsB,KAAA;AACxC,MAAA,IAAI,CAAC,KAAM,CAAA,SAAA;AAAW,QAAA,OAAA;AACtB,MAAW,KAAA,MAAA,SAAA,IAAa,eAAgB,QAAU,EAAA;AAChD,QAAA,SAAA,CAAU,eAAe,IAAI,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,GACF,CAAA;AACF;;;;"}