{"version":3,"file":"realsoft-reusable-components-tree.mjs","sources":["../../../src/reusable-components/tree/src/node.ts","../../../src/reusable-components/tree/src/outlet.ts","../../../src/reusable-components/tree/src/padding.ts","../../../src/reusable-components/tree/src/toggle.ts","../../../src/reusable-components/tree/src/tree.ts","../../../src/reusable-components/tree/src/tree-flattner.ts","../../../src/reusable-components/tree/realsoft-reusable-components-tree.ts"],"sourcesContent":["import { CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeNode, CdkTreeNodeDef } from '@angular/cdk/tree';\r\nimport { AfterContentInit, Directive, Input, OnDestroy, OnInit, ElementRef } from '@angular/core';\r\n\r\n// Wrapper for CdkTree node with Material Design Styles\r\n@Directive({\r\n    selector: 'realsoft-tree-node',\r\n    exportAs: 'realsoftTreeNode',\r\n    standalone: true,\r\n    outputs: ['activation', 'expandedChange'],\r\n    providers: [{provide: CdkTreeNode, useExisting: RealsoftTreeNode}],\r\n    host: {\r\n      'class': 'realsoft-tree-node',\r\n      '[attr.aria-expanded]': '_getAriaExpanded()',\r\n      '[attr.aria-level]': 'level + 1',\r\n      '[attr.aria-posinset]': '_getPositionInSet()',\r\n      '[attr.aria-setsize]': '_getSetSize()',\r\n      '(click)': '_focusItem()',\r\n    },\r\n})\r\nexport class RealsoftTreeNode<T, K = T> extends CdkTreeNode<T, K> implements OnInit, OnDestroy {\r\n\r\n    constructor(_elementRef: ElementRef<HTMLElement>, _tree: CdkTree<T, K>) {\r\n      super(_elementRef, _tree);\r\n    }\r\n  \r\n    override ngOnInit() {\r\n      super.ngOnInit();\r\n    }\r\n  \r\n    override ngOnDestroy() {\r\n      super.ngOnDestroy();\r\n    }\r\n}\r\n\r\n// Wrapper for the CdkTree node definition with Material design styles. Captures the node's template and a when predicate that describes when this node should be used.\r\n@Directive({\r\n    selector: '[realsoftTreeNodeDef]',\r\n    standalone: true,\r\n    inputs: [{name: 'when', alias: 'realsoftTreeNodeDefWhen'}],\r\n    providers: [{provide: CdkTreeNodeDef, useExisting: RealsoftTreeNodeDef}],\r\n})\r\nexport class RealsoftTreeNodeDef<T> extends CdkTreeNodeDef<T> {\r\n    @Input('realsoftTreeNode') data: T;\r\n}\r\n\r\n// Wrapper for the CdkTree nested node with Material design styles.\r\n@Directive({\r\n    selector: 'realsoft-nested-tree-node',\r\n    exportAs: 'realsoftNestedTreeNode',\r\n    outputs: ['activation', 'expandedChange'],\r\n    standalone: true,\r\n    providers: [\r\n      {provide: CdkNestedTreeNode, useExisting: RealsoftNestedTreeNode},\r\n      {provide: CdkTreeNode, useExisting: RealsoftNestedTreeNode},\r\n      {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: RealsoftNestedTreeNode},\r\n    ],\r\n    host: {\r\n      'class': 'realsoft-nested-tree-node',\r\n    },\r\n  })\r\nexport class RealsoftNestedTreeNode<T, K = T> extends CdkNestedTreeNode<T, K> implements AfterContentInit, OnDestroy, OnInit {\r\n    @Input('realsoftNestedTreeNode') node: T;\r\n  \r\n    override ngOnInit() {\r\n      super.ngOnInit();\r\n    }\r\n  \r\n    override ngAfterContentInit() {\r\n      super.ngAfterContentInit();\r\n    }\r\n  \r\n    override ngOnDestroy() {\r\n      super.ngOnDestroy();\r\n    }\r\n  }","import {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\r\nimport {Directive, ViewContainerRef, inject} from '@angular/core';\r\n\r\n// Outlet for nested CdkNode. Put `[realsoftTreeNodeOutlet]` on a tag to place children dataNodes inside the outlet.\r\n\r\n@Directive({\r\n  selector: '[realsoftTreeNodeOutlet]',\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: CdkTreeNodeOutlet,\r\n      useExisting: RealsoftTreeNodeOutlet,\r\n    },\r\n  ],\r\n})\r\nexport class RealsoftTreeNodeOutlet implements CdkTreeNodeOutlet {\r\n  viewContainer = inject(ViewContainerRef);\r\n  _node = inject(CDK_TREE_NODE_OUTLET_NODE, {optional: true});\r\n}","import {CdkTreeNodePadding} from '@angular/cdk/tree';\r\nimport {Directive, Input, numberAttribute, OnInit, OnDestroy, inject, ElementRef} from '@angular/core';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\n\r\n// Wrapper for the CdkTree padding with Material design styles and RTL support\r\n@Directive({\r\n  selector: '[realsoftTreeNodePadding]',\r\n  standalone: true,\r\n  providers: [{provide: CdkTreeNodePadding, useExisting: RealsoftTreeNodePadding}],\r\n  host: {\r\n    '[class.realsoft-tree-rtl]': '_isRtl',\r\n    '[style.padding-left.px]': '_isRtl ? null : _paddingValue',\r\n    '[style.padding-right.px]': '_isRtl ? _paddingValue : null',\r\n  },\r\n})\r\nexport class RealsoftTreeNodePadding<T, K = T> extends CdkTreeNodePadding<T, K> implements OnInit, OnDestroy {\r\n  private _rtlDestroyed = new Subject<void>();\r\n  private _directionality = inject(Directionality, { optional: true });\r\n  \r\n  // Store padding value for host binding\r\n  _paddingValue: number = 0;\r\n  _isRtl: boolean = false;\r\n\r\n  // The level of depth of the tree node. The padding will be `level * indent` pixels.\r\n  @Input({alias: 'realsoftTreeNodePadding', transform: numberAttribute})\r\n  override get level(): number {\r\n    return this._level;\r\n  }\r\n  override set level(value: number) {\r\n    this._setLevelInput(value);\r\n    this._updatePaddingValue();\r\n  }\r\n\r\n  // The indent for each level. Default number 40px from material design menu sub-menu spec.\r\n  @Input('realsoftTreeNodePaddingIndent')\r\n  override get indent(): number | string {\r\n    return this._indent;\r\n  }\r\n  override set indent(indent: number | string) {\r\n    this._setIndentInput(indent);\r\n    this._updatePaddingValue();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    // Initialize RTL detection\r\n    this._isRtl = this._directionality?.value === 'rtl';\r\n    this._updatePaddingValue();\r\n    \r\n    // Listen for direction changes\r\n    if (this._directionality) {\r\n      this._directionality.change\r\n        .pipe(takeUntil(this._rtlDestroyed))\r\n        .subscribe(() => {\r\n          this._isRtl = this._directionality!.value === 'rtl';\r\n          this._updatePaddingValue();\r\n        });\r\n    }\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this._rtlDestroyed.next();\r\n    this._rtlDestroyed.complete();\r\n  }\r\n\r\n  /**\r\n   * Updates the padding value for host binding\r\n   * The direction is handled by the host binding based on _isRtl\r\n   */\r\n  private _updatePaddingValue(): void {\r\n    this._paddingValue = this.level * (typeof this._indent === 'number' ? this._indent : 40);\r\n  }\r\n}","import {CdkTreeNodeToggle} from '@angular/cdk/tree';\r\nimport {Directive, OnInit, OnDestroy, inject} from '@angular/core';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\n\r\n// Wrapper for the CdkTree's toggle with Material design styles and RTL support\r\n@Directive({\r\n  selector: '[realsoftTreeNodeToggle]',\r\n  standalone: true,\r\n  providers: [{provide: CdkTreeNodeToggle, useExisting: RealsoftTreeNodeToggle}],\r\n  inputs: [{name: 'recursive', alias: 'realsoftTreeNodeToggleRecursive'}],\r\n  host: {\r\n    '[class.realsoft-tree-rtl]': '_isRtl',\r\n  },\r\n})\r\nexport class RealsoftTreeNodeToggle<T, K = T> extends CdkTreeNodeToggle<T, K> implements OnInit, OnDestroy {\r\n  private _rtlDestroyed = new Subject<void>();\r\n  private _directionality = inject(Directionality, { optional: true });\r\n  \r\n  // Track RTL state for host binding\r\n  _isRtl: boolean = false;\r\n\r\n  ngOnInit(): void {\r\n    // Initialize RTL detection\r\n    this._isRtl = this._directionality?.value === 'rtl';\r\n    \r\n    // Listen for direction changes\r\n    if (this._directionality) {\r\n      this._directionality.change\r\n        .pipe(takeUntil(this._rtlDestroyed))\r\n        .subscribe(() => {\r\n          this._isRtl = this._directionality!.value === 'rtl';\r\n        });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._rtlDestroyed.next();\r\n    this._rtlDestroyed.complete();\r\n  }\r\n}","import { CdkTree } from '@angular/cdk/tree';\r\nimport { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { RealsoftTreeNodeOutlet } from './outlet';\r\n\r\n// Wrapper for the CdkTable with Material design styles \r\n@Component({\r\n  selector: 'realsoft-tree',\r\n  exportAs: 'realsoftTree',\r\n  standalone: true,\r\n  template: `<ng-container realsoftTreeNodeOutlet></ng-container>`,\r\n  host: {\r\n    'class': 'realsoft-tree',\r\n  },\r\n  styleUrl: './tree.scss',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.Default,\r\n  providers: [{provide: CdkTree, useExisting: RealsoftTree}],\r\n  imports: [RealsoftTreeNodeOutlet],\r\n})\r\nexport class RealsoftTree<T, K = T> extends CdkTree<T, K> {\r\n  // Outlets within the tree's template where the dataNodes will be inserted.\r\n  // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\r\n  @ViewChild(RealsoftTreeNodeOutlet, {static: true}) override _nodeOutlet: RealsoftTreeNodeOutlet = undefined!;\r\n}","import {CollectionViewer, DataSource} from '@angular/cdk/collections';\r\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\r\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\r\nimport {map, take} from 'rxjs/operators';\r\n\r\nexport class RealsoftTreeFlattener<T, F, K = F> {\r\n  constructor(\r\n    public transformFunction: (node: T, level: number) => F,\r\n    public getLevel: (node: F) => number,\r\n    public isExpandable: (node: F) => boolean,\r\n    public getChildren: (node: T) => Observable<T[]> | T[] | undefined | null,\r\n  ) {}\r\n\r\n  /**\r\n   * @param node → The current node being processed.\r\n   * @param level → The depth level of the node in the hierarchy.\r\n   * @param resultNodes → The array that will store the flattened nodes.\r\n   * @param parentMap: boolean[] → A boolean array that is be used to track parent-child relationships.\r\n   * @returns F[] → The updated list of flattened nodes.\r\n   */\r\n  flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[] {\r\n    const flatNode = this.transformFunction(node,level); // The node is transformed into a flat version via the transform function.\r\n\r\n    resultNodes.push(flatNode); //The transformed node is added to resultNodes.\r\n\r\n    //Check if the node has children that need to be processed further, if not the function returns immediately.\r\n    if (!this.isExpandable(flatNode)) {\r\n      return resultNodes; // Early return to avoid unnecessary nesting\r\n    }\r\n\r\n    const nodeChildren = this.getChildren(node); // Retrieve the child nodes of node.\r\n\r\n    if(!nodeChildren) return resultNodes; //If there are no children thefunction returns.\r\n\r\n    //Handle the synchronous array case\r\n    if(Array.isArray(nodeChildren)) {\r\n        this.flattenChildren(nodeChildren,level,resultNodes,parentMap)\r\n    } else {\r\n        nodeChildren.pipe(take(1)).subscribe(children => this.flattenChildren(children,level,resultNodes,parentMap)); //Handling the asynchronous case\r\n    }\r\n\r\n    return resultNodes;\r\n  }\r\n\r\n  /**\r\n   * \r\n   * @param children children: T[] → An array of child nodes to be processed.\r\n   * @param level : number → The current depth level in the hierarchy.\r\n   * @param resultNodes : F[] → The array that accumulates flattened nodes.\r\n   * @param parentMap : boolean[] → A boolean array tracking parent-child relationships (useful for visualizing tree structures).\r\n   * @returns void → Does not return anything explicitly; instead, it modifies resultNodes directly.\r\n   */\r\n  flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void {\r\n    // Loop Through Each Child Node\r\n    children.forEach((child, index) => {\r\n      let childParentMap: boolean[] = parentMap.slice(); // Create a shallow copy of parentMap to avoid modifying the original array.\r\n      childParentMap.push(index != children.length - 1); // Only push children such that they're not the last child\r\n      this.flattenNode(child, level + 1, resultNodes, childParentMap);  // Recursively Flatten the Child Node, and increase the level by 1 to go deeper in thenested tree structure\r\n    });\r\n  }\r\n\r\n  // Flatten a list of node type T to flattened version of node F.\r\n  flattenNodes(structuredData: T[]): F[] {\r\n    let resultNodes: F[] = [];\r\n    structuredData.forEach(node => this.flattenNode(node, 0, resultNodes, []));\r\n    return resultNodes;\r\n  }\r\n  // Expand flattened node with current expansion status. The returned list may have different length.\r\n\r\n  /**\r\n   * \r\n   * @param nodes : F[] → The flattened list of nodes.\r\n   * @param treeControl : TreeControl<F, K> → A tree control object that manages the expansion state of each node.\r\n   * @returns F[] → A new array containing only the visible (expanded) nodes.\r\n   */\r\n  expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {\r\n    let results: F[] = [];\r\n    let currentExpand: boolean[] = [];\r\n    currentExpand[0] = true;\r\n\r\n    nodes.forEach(node => {\r\n      let expand = true;\r\n      for (let i = 0; i <= this.getLevel(node); i++) {\r\n        expand = expand && currentExpand[i];\r\n      }\r\n      if (expand) {\r\n        results.push(node);\r\n      }\r\n      if (this.isExpandable(node)) {\r\n        currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\r\n      }\r\n    });\r\n    return results;\r\n  }\r\n}\r\n\r\n\r\nexport class RealsoftTreeFlatDataSource<T, F, K = F> extends DataSource<F> {\r\n\r\n  // It uses RxJS BehaviorSubjects to manage the data reactively.\r\n  private readonly _flattenedData = new BehaviorSubject<F[]>([]); // Stores the flattened version of the tree structure.\r\n  private readonly _expandedData = new BehaviorSubject<F[]>([]); // Stores only the nodes that are currently expanded.\r\n  private readonly _data = new BehaviorSubject<T[]>([]); // Stores the original tree structure. \"Hierarchical data\"\r\n\r\n  get data() {\r\n    return this._data.value;\r\n  }\r\n  set data(value: T[]) {\r\n    this._data.next(value); // Updates the original tree structure with new values\r\n    this._flattenedData.next(this._treeFlattener.flattenNodes(this.data)); // Flattens the hierarchal data\r\n    this._treeControl.dataNodes = this._flattenedData.value; // Updates the tree control with the flattened data\r\n  }\r\n  \r\n\r\n  constructor(\r\n    private _treeControl: FlatTreeControl<F, K>,\r\n    private _treeFlattener: RealsoftTreeFlattener<T, F, K>,\r\n    initialData?: T[],\r\n  ) {\r\n    super();\r\n\r\n    if (initialData) {\r\n      this.data = initialData;\r\n    }\r\n  }\r\n\r\n  //This method is called when the tree component subscribes to the data source.\r\n  connect(collectionViewer: CollectionViewer): Observable<F[]> {\r\n    // Listen for changes in the collection viewer, the tree control's expansion model, and the flattened data.\r\n    return merge(\r\n      collectionViewer.viewChange, // Tracks UI updates.\r\n      this._treeControl.expansionModel.changed, // Detects expand/collapse state changes.\r\n      this._flattenedData //→ Reacts to tree data updates.\r\n    ).pipe(\r\n      map(() => {\r\n        const expandedNodes = this._treeFlattener.expandFlattenedNodes(\r\n          this._flattenedData.value, \r\n          this._treeControl\r\n        );\r\n        this._expandedData.next(expandedNodes);\r\n        return expandedNodes;\r\n      })\r\n    );\r\n  }\r\n\r\n  disconnect() {\r\n  }\r\n}\r\n\r\nexport class RealsoftTreeNestedDataSource<T> extends DataSource<T> {\r\n  private readonly _data = new BehaviorSubject<T[]>([]);\r\n\r\n  get data() {\r\n    return this._data.value;\r\n  }\r\n  set data(value: T[]) {\r\n    this._data.next(value);\r\n  }\r\n  \r\n\r\n  connect(collectionViewer: CollectionViewer): Observable<T[]> {\r\n    return merge(collectionViewer.viewChange, this._data).pipe(\r\n      map(() => this.data),\r\n    );\r\n  }\r\n\r\n  disconnect() {\r\n  }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}