{"version":3,"file":"RootNode.cjs","sources":["../../../../src/components/Browser/models/RootNode.ts"],"sourcesContent":["import { ItemNode, type ItemNodeLike } from './ItemNode'\nimport { NodeContext } from './NodeContext'\n\nexport type RootNodeLike = {\n  children: ItemNodeLike[]\n}\n\nexport class RootNode {\n  readonly context: NodeContext<RootNode, ItemNode>\n\n  constructor(children: ItemNode[]) {\n    this.context = new NodeContext(this)\n\n    for (const child of children) {\n      this.append(child)\n    }\n  }\n\n  static from(rootNodeLike: RootNodeLike) {\n    return new RootNode(rootNodeLike.children.map((itemNodeLike) => ItemNode.from(itemNodeLike)))\n  }\n\n  get children(): ItemNode[] {\n    return this.context.children.map((child) => child.node)\n  }\n\n  append(that: ItemNode) {\n    this.context.append(that.context)\n  }\n\n  getFirstChild(): ItemNode | undefined {\n    return this.children.at(0)\n  }\n\n  getLastChild(): ItemNode | undefined {\n    return this.children.at(-1)\n  }\n\n  findByValue(value: string): ItemNode | undefined {\n    for (const child of this.children) {\n      const found = child.findByValue(value)\n\n      if (found) {\n        return found\n      }\n    }\n\n    return\n  }\n\n  toViewData(value?: string): ItemNode[][] {\n    if (this.children.length <= 0) {\n      return []\n    }\n\n    if (!value) {\n      return [this.children]\n    }\n\n    const pivot = this.findByValue(value)\n\n    if (!pivot) {\n      return [this.children]\n    }\n\n    const viewData = [\n      ...pivot.getAncestors().map((ancestor) => ancestor.getSiblings()),\n      pivot.getSiblings(),\n    ]\n\n    if (pivot.children.length > 0) {\n      viewData.push(pivot.children)\n    }\n\n    return viewData\n  }\n}\n"],"names":["NodeContext","ItemNode"],"mappings":";;;;;MAOa,QAAQ,CAAA;AACV,IAAA,OAAO;AAEhB,IAAA,WAAA,CAAY,QAAoB,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAIA,iDAAW,CAAC,IAAI,CAAC;AAEpC,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACpB;IACF;IAEA,OAAO,IAAI,CAAC,YAA0B,EAAA;QACpC,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,YAAY,KAAKC,2CAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/F;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;IACzD;AAEA,IAAA,MAAM,CAAC,IAAc,EAAA;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACnC;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7B;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YAEtC,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,KAAK;YACd;QACF;QAEA;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxB;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxB;AAEA,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjE,KAAK,CAAC,WAAW,EAAE;SACpB;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC/B;AAEA,QAAA,OAAO,QAAQ;IACjB;AACD;;;;"}