{"version":3,"file":"useNodeExpandEventBroadcast.mjs","sources":["../../../../../../../packages/components/tree/src/model/useNodeExpandEventBroadcast.ts"],"sourcesContent":["import { inject, provide } from 'vue'\nimport type Node from '../model/node'\n\ninterface NodeMap {\n  treeNodeExpand(node: Node): void\n  children: NodeMap[]\n}\n\nexport function useNodeExpandEventBroadcast(props) {\n  const parentNodeMap = inject<NodeMap>('TreeNodeMap', 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('TreeNodeMap', 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":";;qCAQ4C,OAAO;AACjD,QAAM,gBAAgB,OAAgB,eAAe;AACrD,QAAM,iBAA0B;AAAA,IAC9B,gBAAgB,CAAC,SAAS;AACxB,UAAI,MAAM,SAAS,MAAM;AACvB,cAAM,KAAK;AAAA;AAAA;AAAA,IAGf,UAAU;AAAA;AAGZ,MAAI,eAAe;AACjB,kBAAc,SAAS,KAAK;AAAA;AAG9B,UAAQ,eAAe;AAEvB,SAAO;AAAA,IACL,mBAAmB,CAAC,SAAqB;AACvC,UAAI,CAAC,MAAM;AAAW;AACtB,iBAAW,aAAa,eAAe,UAAU;AAC/C,kBAAU,eAAe;AAAA;AAAA;AAAA;AAAA;;;;"}