{"version":3,"file":"flatten-tree-data.cjs","names":[],"sources":["../../../../src/components/Tree/flatten-tree-data/flatten-tree-data.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\nimport type { TreeExpandedState } from '../use-tree';\n\nexport interface FlattenedTreeNodeData {\n  /** Node data from tree data */\n  node: TreeNodeData;\n\n  /** Nesting level of the node, starts at 1 */\n  level: number;\n\n  /** Value of the parent node, `null` for root nodes */\n  parent: string | null;\n\n  /** Whether the node has children */\n  hasChildren: boolean;\n\n  /** Whether the node is expanded */\n  expanded: boolean;\n}\n\nfunction flattenTreeDataTo(\n  acc: FlattenedTreeNodeData[],\n  data: TreeNodeData[],\n  expandedState: TreeExpandedState,\n  parent: string | null,\n  level: number\n): void {\n  for (let i = 0; i < data.length; i++) {\n    const node = data[i];\n    const hasLoadedChildren = Array.isArray(node.children);\n    const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren;\n    const hasChildren = hasLoadedChildren || hasAsyncChildren;\n    const expanded = expandedState[node.value] || false;\n\n    acc.push({ node, level, parent, hasChildren, expanded });\n\n    if (expanded && hasLoadedChildren) {\n      flattenTreeDataTo(acc, node.children!, expandedState, node.value, level + 1);\n    }\n  }\n}\n\nexport function flattenTreeData(\n  data: TreeNodeData[],\n  expandedState: TreeExpandedState\n): FlattenedTreeNodeData[] {\n  const result: FlattenedTreeNodeData[] = [];\n  flattenTreeDataTo(result, data, expandedState, null, 1);\n  return result;\n}\n"],"mappings":";;AAoBA,SAAS,kBACP,KACA,MACA,eACA,QACA,OACM;CACN,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,OAAO,KAAK;EAClB,MAAM,oBAAoB,MAAM,QAAQ,KAAK,QAAQ;EACrD,MAAM,mBAAmB,CAAC,CAAC,KAAK,eAAe,CAAC;EAChD,MAAM,cAAc,qBAAqB;EACzC,MAAM,WAAW,cAAc,KAAK,UAAU;EAE9C,IAAI,KAAK;GAAE;GAAM;GAAO;GAAQ;GAAa;EAAS,CAAC;EAEvD,IAAI,YAAY,mBACd,kBAAkB,KAAK,KAAK,UAAW,eAAe,KAAK,OAAO,QAAQ,CAAC;CAE/E;AACF;AAEA,SAAgB,gBACd,MACA,eACyB;CACzB,MAAM,SAAkC,CAAC;CACzC,kBAAkB,QAAQ,MAAM,eAAe,MAAM,CAAC;CACtD,OAAO;AACT"}