{"version":3,"file":"tapsellorg-angular-material-library-src-lib-tree.mjs","sources":["../../projects/pegah-library/src/lib/tree/tree.constants.ts","../../projects/pegah-library/src/lib/tree/tree.service.ts","../../projects/pegah-library/src/lib/tree/tree.utils.ts","../../projects/pegah-library/src/lib/tree/tree-node-id.pipe.ts","../../projects/pegah-library/src/lib/tree/tree.component.ts","../../projects/pegah-library/src/lib/tree/tree.component.html","../../projects/pegah-library/src/lib/tree/tree.module.ts","../../projects/pegah-library/src/lib/tree/tapsellorg-angular-material-library-src-lib-tree.ts"],"sourcesContent":["export interface PghTreeNode {\n  children?: PghTreeNode[];\n  item: string;\n  parents?: PghTreeNode[];\n  label?: string;\n}\n\nexport interface PghTreeFlatNode {\n  item: string;\n  level: number;\n  expandable: boolean;\n}\n\nexport interface PghTreeData {\n  [key: string]: PghTreeData | null | string[];\n}\n\nexport type PghTreeLabel = Record<string, string>;\n\nexport const getLevel = (node: PghTreeFlatNode) => node.level;\n\nexport const isExpandable = (node: PghTreeFlatNode) => node.expandable;\n\nexport const getChildren = (node: PghTreeNode): PghTreeNode[] | undefined => node.children;\n\nexport const hasChild = (_: number, _nodeData: PghTreeFlatNode) => _nodeData.expandable;\n\nexport const hasNoContent = (_: number, _nodeData: PghTreeFlatNode) => _nodeData.item === '';\n\nexport const SAMPLE_TREE_DATA = {\n  'دسته اول, 1000': {\n    'A_1, 1000': {\n      'A_1_1, 1000': null,\n      'A_1_2, 1000': ['قرمز', 'آبی'],\n    },\n    A_2: ['پاکسازی صورت, 1000', 'مانیکور, 1000', 'پدیکور, 1000'],\n    A_3: {\n      A_3_1: null,\n      A_3_2: ['زنانه, 1000', 'مردانه, 1000'],\n    },\n  },\n  'دسته دوم': {\n    B_1: {\n      B_1_1: null,\n      B_1_2: ['قرمز', 'آبی'],\n    },\n    B_2: ['پاکسازی صورت', 'مانیکور', 'پدیکور'],\n    B_3: {\n      B_3_1: null,\n      B_3_2: ['زنانه', 'مردانه'],\n    },\n  },\n  پوشاک: {\n    اکسسوری: {\n      بانوان: null,\n      B_1_2: ['قرمز', 'آبی'],\n    },\n    B_2: ['پاکسازی صورت', 'مانیکور', 'پدیکور'],\n    لباس: {\n      بانوان: null,\n      B_3_2: ['زنانه', 'مردانه'],\n    },\n  },\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { PghTreeNode } from './tree.constants';\n\n@Injectable()\nexport class PghTreeService {\n  dataChange = new BehaviorSubject<PghTreeNode[]>([]);\n  TREE_DATA: Record<string, any> = {};\n\n  get data(): PghTreeNode[] {\n    return this.dataChange.value;\n  }\n\n  constructor() {\n    this.initialize();\n  }\n\n  initialize() {\n    const data = this.buildFileTree(this.TREE_DATA, 0);\n    this.dataChange.next(data);\n  }\n\n  buildFileTree(obj: Record<string, any>, level: number): PghTreeNode[] {\n    return Object.keys(obj).reduce<PghTreeNode[]>((accumulator, key) => {\n      const value = obj[key];\n      const node: PghTreeNode = { item: key };\n      node.item = key;\n\n      if (value != null) {\n        if (typeof value === 'object') {\n          node.children = this.buildFileTree(value, level + 1);\n        } else {\n          node.item = value;\n        }\n      }\n\n      return accumulator.concat(node);\n    }, []);\n  }\n\n  insertItem(parent: PghTreeNode, name: string) {\n    parent.children?.push({ item: name } as PghTreeNode);\n    this.dataChange.next(this.data);\n  }\n\n  updateItem(node: PghTreeNode, name: string) {\n    node.item = name;\n    this.dataChange.next(this.data);\n  }\n\n  setTreeData(data: Record<string, any>) {\n    this.TREE_DATA = data;\n    this.initialize();\n  }\n}\n","import { getLevel, PghTreeData, PghTreeFlatNode, PghTreeNode } from './tree.constants';\nimport { MatTreeFlattener } from '@angular/material/tree';\nimport { FlatTreeControl } from '@angular/cdk/tree';\n\nexport const TreeUtils = {\n  treeControl: undefined as FlatTreeControl<PghTreeFlatNode> | undefined,\n\n  setTreeControl(treeControl?: FlatTreeControl<PghTreeFlatNode>) {\n    this.treeControl = treeControl;\n  },\n\n  removeEstimateCount(str: string): string {\n    return str.includes(',') ? str.substring(0, str.indexOf(',')) : str;\n  },\n\n  getFullPathWithoutEstimateCount(node: PghTreeFlatNode): string[] {\n    const parentItems = [...this.getParentNodes(node, true)]\n      .reverse()\n      .map(parent => this.removeEstimateCount(parent.item));\n\n    const currentItem = this.removeEstimateCount(node.item);\n    return [...parentItems, currentItem];\n  },\n\n  cutTreeDataUpToLevel(tree: PghTreeData | string[], depth: number): PghTreeData {\n    if (depth <= 0) {\n      return {};\n    }\n\n    const result: PghTreeData = {};\n    for (const [key, value] of Object.entries(tree)) {\n      if (typeof value === 'object' && value) {\n        result[key] = this.cutTreeDataUpToLevel(value as PghTreeData, depth - 1);\n      } else {\n        result[key] = value as string[];\n      }\n    }\n    return result;\n  },\n\n  createTreeFlattener(\n    flatNodeMap: Map<PghTreeFlatNode, PghTreeNode>,\n    nestedNodeMap: Map<PghTreeNode, PghTreeFlatNode>,\n  ): MatTreeFlattener<PghTreeNode, PghTreeFlatNode> {\n    return new MatTreeFlattener<PghTreeNode, PghTreeFlatNode>(\n      (node, level) => {\n        const existing = nestedNodeMap.get(node);\n        const flatNode =\n          existing?.item === node.item ? existing : { item: '', level: 0, expandable: false };\n        flatNode.item = node.item;\n        flatNode.level = level;\n        flatNode.expandable = !!node.children?.length;\n        flatNodeMap.set(flatNode, node);\n        nestedNodeMap.set(node, flatNode);\n        return flatNode;\n      },\n      node => node.level,\n      node => node.expandable,\n      node => node.children,\n    );\n  },\n\n  getParentNodes(node: PghTreeFlatNode, shouldReturnAllNodes: boolean = false) {\n    const allNodes = this.treeControl?.dataNodes;\n    if (!allNodes) return [];\n    const parentNodes: PghTreeFlatNode[] = [];\n    let currentLevel = getLevel(node);\n\n    if (currentLevel < 1) {\n      return parentNodes;\n    }\n\n    const startIndex = allNodes.indexOf(node) - 1;\n\n    for (let i = startIndex; i >= 0; i--) {\n      const currentNode = allNodes[i];\n\n      if (getLevel(currentNode) < currentLevel) {\n        parentNodes.push(currentNode);\n        currentLevel--;\n\n        if (!shouldReturnAllNodes) {\n          break;\n        }\n      }\n    }\n    return parentNodes;\n  },\n\n  getChildrenNodes(node: PghTreeFlatNode) {\n    if (!this.treeControl) return [];\n\n    const descendants: PghTreeFlatNode[] = this.treeControl!.getDescendants(node);\n    return descendants.filter(\n      child => this.treeControl!.getLevel(child) === this.treeControl!.getLevel(node) + 1,\n    );\n  },\n\n  getSelectedNodes(selectedPaths: string[][]) {\n    const allNodes = this.treeControl?.dataNodes;\n\n    if (!allNodes?.length || !selectedPaths?.length) return;\n\n    const allNodesWithPath = allNodes.map(node => {\n      const fullPath = TreeUtils.getFullPathWithoutEstimateCount(node);\n      return {\n        node,\n        path: fullPath,\n      };\n    });\n\n    return selectedPaths\n      .map(path => allNodesWithPath.find(n => JSON.stringify(n.path) === JSON.stringify(path)))\n      .filter(match => !!match)\n      .map(match => match.node);\n  },\n\n  handleTreeExpansion(shouldExpandTree: boolean) {\n    if (this.treeControl) {\n      this.treeControl[shouldExpandTree ? 'expandAll' : 'collapseAll']();\n    }\n  },\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PghTreeFlatNode } from './tree.constants';\nimport { TreeUtils } from './tree.utils';\n\n@Pipe({\n  name: 'pghTreeNodeId',\n  pure: true,\n  standalone: false,\n})\nexport class PghTreeNodeIdPipe implements PipeTransform {\n  transform(node: PghTreeFlatNode): string {\n    return 'tree-node-' + TreeUtils.getFullPathWithoutEstimateCount(node).join('-');\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  input,\n  OnChanges,\n  OnInit,\n  output,\n  signal,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n  getChildren,\n  getLevel,\n  hasChild,\n  hasNoContent,\n  isExpandable,\n  PghTreeData,\n  PghTreeFlatNode,\n  PghTreeLabel,\n  PghTreeNode,\n} from './tree.constants';\nimport { PghTreeService } from './tree.service';\nimport { TreeUtils } from './tree.utils';\n\n@Component({\n  selector: 'pgh-tree',\n  templateUrl: './tree.component.html',\n  styleUrls: ['./tree.component.scss'],\n  providers: [PghTreeService],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PghTreeComponent implements OnInit, OnChanges, AfterViewInit {\n  protected readonly hasChild = hasChild;\n  protected readonly hasNoContent = hasNoContent;\n  protected readonly treeUtils = TreeUtils;\n\n  treeDataSource = input<PghTreeData | undefined>(undefined);\n  treeLabels = input<PghTreeLabel>();\n  treeDataSourceDepth = input<number>(100);\n  selectable = input<boolean>(true);\n  shouldExpandTree = input<boolean>(false);\n  canAddChildNode = input<boolean>(true);\n  selectedPaths = input<string[][]>([]);\n\n  selectedItemsChanged = output<PghTreeNode[]>();\n\n  treeControl = signal<FlatTreeControl<PghTreeFlatNode> | undefined>(undefined);\n  dataSource = signal<MatTreeFlatDataSource<PghTreeNode, PghTreeFlatNode> | undefined>(undefined);\n  checklistSelection = signal(new SelectionModel<PghTreeFlatNode>(true));\n\n  flatNodeMap = new Map<PghTreeFlatNode, PghTreeNode>();\n  nestedNodeMap = new Map<PghTreeNode, PghTreeFlatNode>();\n  treeFlattener: MatTreeFlattener<PghTreeNode, PghTreeFlatNode>;\n\n  @ContentChild('customNodeItemTemplate') customNodeItemTemplate?: TemplateRef<any>;\n  @ContentChild('customElementTemplate') customElementTemplate?: TemplateRef<any>;\n\n  constructor(private pghTreeService: PghTreeService) {\n    this.treeFlattener = TreeUtils.createTreeFlattener(this.flatNodeMap, this.nestedNodeMap);\n  }\n\n  ngOnInit() {\n    this.initializeTree();\n    this.onChangeTree();\n    this.patchSelectedNodes();\n  }\n\n  ngAfterViewInit() {\n    TreeUtils.handleTreeExpansion(this.shouldExpandTree());\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ((changes.treeDataSource || changes.treeDataSourceDepth) && this.treeDataSource()) {\n      this.pghTreeService.setTreeData(\n        TreeUtils.cutTreeDataUpToLevel(this.treeDataSource()!, this.treeDataSourceDepth()),\n      );\n    }\n    if (changes.shouldExpandTree || changes.treeDataSource) {\n      TreeUtils.handleTreeExpansion(this.shouldExpandTree());\n    }\n    if (changes.selectedPaths) {\n      this.patchSelectedNodes();\n    }\n  }\n\n  initializeTree() {\n    this.treeControl.set(new FlatTreeControl<PghTreeFlatNode>(getLevel, isExpandable));\n    this.dataSource.set(new MatTreeFlatDataSource(this.treeControl()!, this.treeFlattener));\n    TreeUtils.setTreeControl(this.treeControl());\n  }\n\n  onChangeTree() {\n    this.pghTreeService.dataChange.subscribe(data => {\n      if (!this.dataSource()) return;\n      this.dataSource()!.data = data;\n    });\n  }\n\n  patchSelectedNodes() {\n    this.checklistSelection().clear();\n    const selectedNodes = TreeUtils.getSelectedNodes(this.selectedPaths());\n    if (!selectedNodes?.length) return;\n\n    for (const node of selectedNodes) {\n      const descendants = this.treeControl()?.getDescendants(node);\n      this.checklistSelection().select(node, ...(descendants ?? []));\n    }\n  }\n\n  leafItemSelectionToggle(node: PghTreeFlatNode) {\n    this.checklistSelection().toggle(node);\n    this.checkAllParentsSelection(node);\n  }\n\n  addNewItem(node: PghTreeFlatNode) {\n    const parentNode = this.flatNodeMap.get(node);\n    if (\n      parentNode &&\n      this.treeControl() &&\n      getChildren(parentNode)?.filter(n => n.item === '').length === 0\n    ) {\n      this.pghTreeService.insertItem(parentNode, '');\n      this.treeControl()!.expand(node);\n    }\n  }\n\n  saveNode(node: PghTreeFlatNode, itemValue: string) {\n    const nestedNode = this.flatNodeMap.get(node);\n    if (nestedNode) {\n      this.pghTreeService.updateItem(nestedNode, itemValue);\n    }\n  }\n\n  descendantsAllSelected(node: PghTreeFlatNode) {\n    if (!this.treeControl()) return;\n    const descendants = this.treeControl()!.getDescendants(node);\n    return (\n      descendants.length > 0 &&\n      descendants.every(child => this.checklistSelection().isSelected(child))\n    );\n  }\n\n  descendantsPartiallySelected(node: PghTreeFlatNode) {\n    if (!this.treeControl()) return;\n    const descendants = this.treeControl()!.getDescendants(node);\n    const result = descendants.some(child => this.checklistSelection().isSelected(child));\n    return result && !this.descendantsAllSelected(node);\n  }\n\n  parentItemSelectionToggle(node: PghTreeFlatNode) {\n    if (!this.treeControl()) return;\n    this.checklistSelection().toggle(node);\n    const descendants = this.treeControl()!.getDescendants(node);\n    this.checklistSelection().isSelected(node)\n      ? this.checklistSelection().select(...descendants)\n      : this.checklistSelection().deselect(...descendants);\n\n    descendants.forEach(child => this.checklistSelection().isSelected(child));\n    this.checkAllParentsSelection(node);\n  }\n\n  checkAllParentsSelection(node: PghTreeFlatNode) {\n    let parent: PghTreeFlatNode | null = TreeUtils.getParentNodes(node, false)[0];\n    while (parent) {\n      this.checkRootNodeSelection(parent);\n      parent = TreeUtils.getParentNodes(parent, false)[0];\n    }\n  }\n\n  checkRootNodeSelection(node: PghTreeFlatNode) {\n    if (!this.treeControl()) return;\n    const nodeSelected = this.checklistSelection().isSelected(node);\n    const descAllSelected = this.descendantsAllSelected(node);\n    if (nodeSelected && !descAllSelected) {\n      this.checklistSelection().deselect(node);\n    } else if (!nodeSelected && descAllSelected) {\n      this.checklistSelection().select(node);\n    }\n  }\n\n  flatNodeToNestedNode(selectedOption: PghTreeFlatNode): PghTreeNode {\n    return {\n      item: selectedOption.item,\n      parents: TreeUtils.getParentNodes(selectedOption, true)?.reverse(),\n      children: TreeUtils.getChildrenNodes(selectedOption),\n      label: this.treeLabels() ? this.treeLabels()![selectedOption.item] : undefined,\n    };\n  }\n\n  storeSelectedNodes() {\n    const selectedFlatNodes = this.checklistSelection().selected;\n    const selectedNestedNodes = selectedFlatNodes.map(v => this.flatNodeToNestedNode(v));\n\n    // remove node if its parent is selected\n    const selectedNodes = new Set(selectedNestedNodes.map(node => node.item));\n    const filteredSelectedNodes = selectedNestedNodes.filter(node => {\n      const parentItems = node.parents?.map(parent => parent.item) ?? [];\n      return !parentItems.some(parent => selectedNodes.has(parent));\n    });\n    this.selectedItemsChanged.emit(filteredSelectedNodes);\n  }\n}\n","<mat-tree [dataSource]=\"dataSource()!\" [treeControl]=\"treeControl()!\">\n  <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding>\n    <button mat-icon-button disabled></button>\n    <ng-container\n      *ngTemplateOutlet=\"nodeTemplate; context: { node: node, isParent: false }\"\n    ></ng-container>\n  </mat-tree-node>\n\n  @if (canAddChildNode()) {\n  <mat-tree-node *matTreeNodeDef=\"let node; when: hasNoContent\" matTreeNodePadding>\n    <button mat-icon-button disabled></button>\n    <mat-form-field appearance=\"fill\">\n      <mat-label>نام دسته جدید</mat-label>\n      <input matInput #itemValue />\n    </mat-form-field>\n    <div class=\"pb-3 ms-2\">\n      <button\n        mat-icon-button\n        (click)=\"saveNode(node, itemValue.value)\"\n        class=\"pgh-tree-save-button\"\n      >\n        <mat-icon svgIcon=\"done\" color=\"primary\"></mat-icon>\n      </button>\n    </div>\n  </mat-tree-node>\n  }\n\n  <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\n    <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.item\">\n      <mat-icon\n        class=\"mat-icon-rtl-mirror\"\n        [svgIcon]=\"treeControl()!.isExpanded(node) ? 'expand_more' : 'chevron_right'\"\n      ></mat-icon>\n    </button>\n    <ng-container\n      *ngTemplateOutlet=\"nodeTemplate; context: { node: node, isParent: true }\"\n    ></ng-container>\n    @if (canAddChildNode()) {\n    <button mat-icon-button (click)=\"addNewItem(node)\">\n      <mat-icon svgIcon=\"add\"></mat-icon>\n    </button>\n    }\n  </mat-tree-node>\n\n  <ng-template #contentTemplate let-node>\n    <div class=\"d-flex align-items-center\" [id]=\"node | pghTreeNodeId\">\n      <div>\n        @if (customNodeItemTemplate) {\n        <ng-template\n          [ngTemplateOutlet]=\"customNodeItemTemplate\"\n          [ngTemplateOutletContext]=\"{ $implicit: flatNodeToNestedNode(node) }\"\n        ></ng-template>\n        } @else {\n        {{ node.item }}\n        }\n      </div>\n      <div>\n        @if (customElementTemplate) {\n        <ng-template\n          [ngTemplateOutlet]=\"customElementTemplate\"\n          [ngTemplateOutletContext]=\"{ $implicit: flatNodeToNestedNode(node) }\"\n        ></ng-template>\n        }\n      </div>\n    </div>\n  </ng-template>\n\n  <ng-template #nodeTemplate let-node=\"node\" let-isParent=\"isParent\">\n    @if (selectable()) {\n    <mat-checkbox\n      [checked]=\"isParent ? descendantsAllSelected(node) : checklistSelection().isSelected(node)\"\n      [indeterminate]=\"isParent ? descendantsPartiallySelected(node) : null\"\n      (change)=\"\n        isParent ? parentItemSelectionToggle(node) : leafItemSelectionToggle(node);\n        storeSelectedNodes()\n      \"\n    >\n      <ng-container\n        *ngTemplateOutlet=\"contentTemplate; context: { $implicit: node }\"\n      ></ng-container>\n    </mat-checkbox>\n    } @else {\n    <ng-container *ngTemplateOutlet=\"contentTemplate; context: { $implicit: node }\"></ng-container>\n    }\n  </ng-template>\n</mat-tree>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PghTreeComponent } from './tree.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PghTreeNodeIdPipe } from './tree-node-id.pipe';\n\n@NgModule({\n  declarations: [PghTreeComponent, PghTreeNodeIdPipe],\n  imports: [\n    CommonModule,\n    MatCheckboxModule,\n    MatTreeModule,\n    MatIconModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n  ],\n  exports: [PghTreeComponent, PghTreeNodeIdPipe],\n})\nexport class PghTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PghTreeService","i9.PghTreeNodeIdPipe"],"mappings":"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"}