{"version":3,"file":"useNodeExpandEventBroadcast.mjs","sources":["../../../../../../../../packages/components/tree/src/model/useNodeExpandEventBroadcast.ts"],"sourcesContent":["import { inject, 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: 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  const currentNodeMap: NodeMap = {\n    treeNodeExpand: (node) => {\n      if (props.node !== node) {\n        props.node?.collapse()\n      }\n    },\n    children: [],\n  }\n\n  if (parentNodeMap) {\n    parentNodeMap.children.push(currentNodeMap)\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,MAAM,cAA0B,GAAA;AAAA,IAC9B,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,UAAU,EAAC;AAAA,GACb,CAAA;AAEA,EAAA,IAAI,aAAe,EAAA;AACjB,IAAc,aAAA,CAAA,QAAA,CAAS,KAAK,cAAc,CAAA,CAAA;AAAA,GAC5C;AAEA,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,eAAe,QAAU,EAAA;AAC/C,QAAA,SAAA,CAAU,eAAe,IAAI,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,GACF,CAAA;AACF;;;;"}