{"version":3,"file":"ng-stalk-core-tree.mjs","sources":["../../components/core/tree/mag-tree-node.ts","../../components/core/tree/mag-tree-node-builder.ts","../../components/core/tree/public-api.ts","../../components/core/tree/ng-stalk-core-tree.ts"],"sourcesContent":["import { NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/tree';\nimport { NzTreeBaseService } from 'ng-zorro-antd/core/tree';\nimport { MagTreeNodeOptions } from './mag-tree-node-options';\n\nexport class MagTreeNode extends NzTreeNode implements MagTreeNodeOptions {\n  parentKey: string;\n  sibling: number;\n\n  /**\n   * Init nzTreeNode\n   * @param option: user's input\n   * @param parent\n   * @param service: base nzTreeService\n   */\n  constructor(option: NzTreeNodeOptions | NzTreeNode, parent?: NzTreeNode | null, service?: NzTreeBaseService | null) {\n    super(option, parent, service);\n    // @ts-ignore\n    this.parentKey = option.parentNode ? option.parentNode.key : option.parentKey;\n    // @ts-ignore\n    this.sibling = option.sibling;\n  }\n}\n","import * as _ from 'lodash';\nimport { NzTreeNodeOptions } from 'ng-zorro-antd/tree';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { ItemToMagTreeNodeOptionsFunc } from './item-to-mag-tree-node-options-func';\nimport { MagTreeNode } from './mag-tree-node';\n\nexport class MagTreeNodeBuilder<T> {\n  sources: NzSafeAny[];\n  roots: MagTreeNode[] = [];\n  flatNodes: MagTreeNode[] = [];\n  mapOfSources: { [key: string]: T } = {};\n  mapOfNodes: { [key: string]: MagTreeNode } = {};\n  flatItems: T[] = [];\n\n  constructor(sources: T[]) {\n    this.sources = sources;\n  }\n\n  build(mapFunc: ItemToMagTreeNodeOptionsFunc<T>) {\n    this.sources.forEach((item: T) => {\n      const nzNodeOption: NzTreeNodeOptions = {\n        ...mapFunc(item)\n      };\n      this.mapOfNodes[nzNodeOption.key] = new MagTreeNode(nzNodeOption);\n      this.mapOfSources[nzNodeOption.key] = item;\n    });\n\n    // @ts-ignore\n    for (const [key, value] of Object.entries(this.mapOfNodes)) {\n      if (value.parentKey !== null && this.mapOfNodes[value.parentKey]) {\n        const parentNode: MagTreeNode = this.mapOfNodes[value.parentKey] as MagTreeNode;\n        if (typeof parentNode.children === 'undefined') {\n          parentNode.children = [];\n        }\n        parentNode.children.push(value);\n        value.parentNode = parentNode;\n      } else {\n        this.roots.push(value);\n      }\n    }\n\n    _.forEach(this.roots, (node: MagTreeNode) => {\n      // if(node.children && node.children.length > 0) {\n      //   node.hasChild = true;\n      //   node.expandable = true;\n      // }\n      this.markChildren(node, 0);\n    });\n\n    this.roots = this.sortNodes(this.roots);\n    this.roots.forEach((node: MagTreeNode) => {\n      this.saveFlatList(node);\n    });\n  }\n\n  sortNodes(nodes: MagTreeNode[]): MagTreeNode[] {\n    for (let node of nodes) {\n      if (node.children && node.children.length > 0) {\n        // @ts-ignore\n        node.children = this.sortNodes(node.children);\n      }\n    }\n\n    return _.sortBy(nodes, (item: MagTreeNode) => {\n      return item.sibling;\n    });\n  }\n\n  markChildren(node: MagTreeNode, level: number) {\n    node.level = level;\n    if (node.children && node.children.length > 0) {\n      node.isLeaf = false;\n      // node.expandable = true; // TODO 이게 왜 필요하지?\n      for (const childNode of node.children) {\n        this.markChildren(childNode as MagTreeNode, level + 1);\n      }\n    } else {\n      node.isLeaf = true;\n      node.isExpanded = false;\n    }\n  }\n\n  saveFlatList(node: MagTreeNode) {\n    this.flatNodes.push(node);\n    this.flatItems.push(this.mapOfSources[node.key]);\n    if (node.children && node.children.length > 0) {\n      for (const childNode of node.children) {\n        this.saveFlatList(childNode as MagTreeNode);\n      }\n    }\n  }\n\n  getRoot(): MagTreeNode | null {\n    if (this.roots != null && this.roots.length > 0) {\n      return this.roots[0];\n    } else {\n      return null;\n    }\n  }\n\n  getRoots(): MagTreeNode[] {\n    return this.roots || [];\n  }\n\n  getFlatNodes(): MagTreeNode[] {\n    return this.flatNodes;\n  }\n\n  getFlatItems(): T[] {\n    return this.flatItems;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './item-to-mag-tree-node-options-func';\nexport * from './mag-tree-node';\nexport * from './mag-tree-node-builder';\nexport * from './mag-tree-node-options';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}