{"version":3,"file":"codehint-ng-tree-table.mjs","sources":["../../../projects/tree-table/src/lib/helpers/items.helper.ts","../../../projects/tree-table/src/lib/helpers/sort.helper.ts","../../../projects/tree-table/src/lib/shared/resizable-table-column.directive.ts","../../../projects/tree-table/src/lib/shared/number-to-array.pipe.ts","../../../projects/tree-table/src/lib/tree-table.component.ts","../../../projects/tree-table/src/lib/tree-table.component.html","../../../projects/tree-table/src/lib/shared/shared.module.ts","../../../projects/tree-table/src/lib/tree-table.module.ts","../../../projects/tree-table/src/public-api.ts","../../../projects/tree-table/src/codehint-ng-tree-table.ts"],"sourcesContent":["import {TreeTableItemShell} from './models';\r\nimport {SortFunction, TreeTableItem} from '../models';\r\n\r\nexport class Helper {\r\n  static sortItems<T>(items: TreeTableItem<T>[], sortFunction: SortFunction<T>): TreeTableItem<T>[] {\r\n    const sortFunc = (a: TreeTableItem<T>, b: TreeTableItem<T>) => {\r\n      return !!a.data && !!b.data ? sortFunction(a.data, b.data) : 0;\r\n    };\r\n    return items.sort(sortFunc);\r\n  }\r\n\r\n  static allParentsExpanded<T>(shell: TreeTableItemShell<T>): boolean {\r\n    let parent = shell.parent;\r\n    while (!!parent) {\r\n      if (!parent.item.isExpanded) { return false; }\r\n      parent = parent.parent;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  static itemsToShells<T>(items: TreeTableItem<T>[], level: number, parent: TreeTableItemShell<T>): TreeTableItemShell<T>[] {\r\n    const shells = items.map(item => {\r\n      const shell: TreeTableItemShell<T> = {\r\n        item,\r\n        haveChildren: false,\r\n        level,\r\n        isVisible: level === 0,\r\n        parent: parent.item.id === null ? null : parent };\r\n      return shell;\r\n    });\r\n    return shells;\r\n  }\r\n\r\n  static arrayInsertItems(arr: any[], index, newItems: any[]): any[] {\r\n    const newArr = [...arr.slice(0, index), ...newItems, ...arr.slice(index)];\r\n    return newArr;\r\n  }\r\n\r\n  // stable\r\n  static selectLevelItems<T>(items: TreeTableItem<T>[], parent: TreeTableItem<T>)\r\n    : {levelItems: TreeTableItem<T>[], otherItems: TreeTableItem<T>[]}  {\r\n    const levelItems: TreeTableItem<T>[] = [];\r\n    const otherItems: TreeTableItem<T>[] = [];\r\n\r\n    items.forEach(item => {\r\n      if (item.parentId === parent.id) {\r\n        levelItems.push(item);\r\n      } else {\r\n        otherItems.push(item);\r\n      }\r\n    });\r\n    return {levelItems, otherItems};\r\n  }\r\n\r\n  static removeAllShellsChildren<T>(outerShells: TreeTableItemShell<T>[], parentId: string): TreeTableItemShell<T>[] {\r\n    let shells = outerShells;\r\n    const removedIds = shells\r\n      .filter(i => i.item.parentId === parentId).map(i => i.item.id);\r\n\r\n    removedIds.forEach((id) => {\r\n      shells = this.removeAllShellsChildren(shells, id);\r\n    });\r\n\r\n    return shells.filter(i => !removedIds.includes(i.item.id));\r\n  }\r\n\r\n  static removeAllChildren<T>(outerItems: TreeTableItem<T>[], parentId: string): TreeTableItem<T>[] {\r\n    let items = outerItems;\r\n    const removedIds = items\r\n      .filter(i => i.parentId === parentId).map(i => i.id);\r\n\r\n    removedIds.forEach((id) => {\r\n      items = this.removeAllChildren(items, id);\r\n    });\r\n\r\n    return items.filter(i => !removedIds.includes(i.id));\r\n  }\r\n}\r\n","import {TreeTableItemShell} from './models';\r\nimport {SortFunction} from '../models';\r\nimport {Helper} from './items.helper';\r\n\r\nexport class SortHelper<T> {\r\n  private static otherShells: TreeTableItemShell<any>[] = [];\r\n  private static shells: TreeTableItemShell<any>[] = [];\r\n  private static sortFunction: SortFunction<any> = null;\r\n\r\n  static getSorted<T>(shells: TreeTableItemShell<T>[], sortFunction: SortFunction<T>) {\r\n    this.otherShells = [...shells];\r\n    this.shells = [];\r\n    this.sortFunction = sortFunction;\r\n    this.getShellsForLevel(0, null);\r\n    return this.shells;\r\n  }\r\n\r\n  private static getShellsForLevel<T>(index: number, parentId: string) {\r\n    let {levelShells, otherShells} = this.selectLevelShells(this.otherShells, parentId);\r\n    if (this.sortFunction) {\r\n      levelShells = this.sortShells(levelShells, this.sortFunction);\r\n    }\r\n    this.shells = Helper.arrayInsertItems(this.shells, index, levelShells);\r\n    this.otherShells = [...otherShells];\r\n\r\n    levelShells.forEach(shell => {\r\n      const shellIndex = this.shells.findIndex(i => i.item.id === shell.item.id);\r\n      this.getShellsForLevel(shellIndex + 1, shell.item.id);\r\n    });\r\n  }\r\n\r\n  private static selectLevelShells<T>(shells: TreeTableItemShell<T>[], parentId: string)\r\n                : {levelShells: TreeTableItemShell<T>[], otherShells: TreeTableItemShell<T>[]}  {\r\n      const levelShells: TreeTableItemShell<T>[] = [];\r\n      const otherShells: TreeTableItemShell<T>[] = [];\r\n\r\n      shells.forEach(shell => {\r\n        if (shell.item.parentId === parentId) {\r\n          levelShells.push(shell);\r\n        } else {\r\n          otherShells.push(shell);\r\n        }\r\n      });\r\n      return {levelShells, otherShells};\r\n  }\r\n\r\n  static sortShells<T>(shells: TreeTableItemShell<T>[], sortFunction: SortFunction<T>): TreeTableItemShell<T>[] {\r\n    const sortFunc = (a: TreeTableItemShell<T>, b: TreeTableItemShell<T>) => {\r\n      const data1: T = a.item.data;\r\n      const data2: T = b.item.data;\r\n      return !!data1 && !!data2 ? sortFunction(data1, data2) : 0;\r\n    };\r\n    return shells.sort(sortFunc);\r\n  }\r\n}\r\n","import {Directive, ElementRef, Input, OnDestroy, OnInit} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appResizableTableColumn]'\r\n})\r\nexport class ResizableTableColumnDirective implements OnInit, OnDestroy {\r\n  @Input() appResizableTableColumn: boolean;\r\n  private resizer = new Resizer();\r\n\r\n  constructor(private elementRef: ElementRef) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.appResizableTableColumn || this.appResizableTableColumn as any === '') {\r\n      const resizeDiv = Helper.createResizeDiv(this.elementRef.nativeElement);\r\n      this.resizer.attachEvents(resizeDiv);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.resizer.detachEvents();\r\n  }\r\n}\r\n\r\nclass Resizer {\r\n  private pageX;\r\n  private curCol;\r\n  private nxtCol;\r\n  private curColWidth;\r\n  private nxtColWidth;\r\n  private resizeDiv;\r\n\r\n  attachEvents(resizeDiv) {\r\n    this.resizeDiv = resizeDiv;\r\n    this.resizeDiv.addEventListener('mousedown', this.resizeDivMouseDown.bind(this));\r\n    document.addEventListener('mousemove', this.documentMouseMove.bind(this));\r\n    document.addEventListener('mouseup', this.documentMouseUp.bind(this));\r\n  }\r\n\r\n  detachEvents() {\r\n    if (this.resizeDiv) {\r\n      this.resizeDiv.removeEventListener('mousedown', this.resizeDivMouseDown.bind(this));\r\n      document.removeEventListener('mousemove', this.documentMouseMove.bind(this));\r\n      document.removeEventListener('mouseup', this.documentMouseUp.bind(this));\r\n    }\r\n  }\r\n\r\n  private resizeDivMouseDown(e) {\r\n    this.curCol = e.target.parentElement;\r\n    this.nxtCol = this.curCol.nextElementSibling;\r\n    this.pageX = e.pageX;\r\n    this.curColWidth = this.curCol.offsetWidth;\r\n    if (this.nxtCol) {\r\n      this.nxtColWidth = this.nxtCol.offsetWidth;\r\n    }\r\n  }\r\n\r\n  private documentMouseMove(e) {\r\n    if (this.curCol) {\r\n      const diffX = e.pageX - this.pageX;\r\n      if (this.nxtCol) {\r\n        this.nxtCol.style.width = (this.nxtColWidth - (diffX)) + 'px';\r\n      }\r\n      this.curCol.style.width = (this.curColWidth + diffX) + 'px';\r\n    }\r\n  }\r\n\r\n  private documentMouseUp(e) {\r\n    this.curCol = undefined;\r\n    this.nxtCol = undefined;\r\n    this.pageX = undefined;\r\n    this.nxtColWidth = undefined;\r\n    this.curColWidth = undefined;\r\n  }\r\n}\r\n\r\nclass Helper {\r\n  static createResizeDiv(thElement) {\r\n    const div = this.createDiv(thElement.offsetHeight);\r\n    thElement.appendChild(div);\r\n    // thElement.style.position = 'relative';\r\n    return div;\r\n  }\r\n\r\n  private static createDiv(height) {\r\n    const div = document.createElement('div');\r\n    div.style.top = '0';\r\n    div.style.right = '0';\r\n    div.style.width = '4px';\r\n    div.style.position = 'absolute';\r\n    div.style.cursor = 'col-resize';\r\n    /* remove backGroundColor later */\r\n    div.style.backgroundColor = '#f2f2f2';\r\n    div.style.opacity = '0.2';\r\n    div.style.userSelect = 'none';\r\n    /* table height */\r\n    div.style.height = height + 'px';\r\n    div.classList.add('col-resize');\r\n    return div;\r\n  }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'appNumberToArray'\r\n})\r\nexport class NumberToArrayPipe implements PipeTransform {\r\n  transform(value: number): any[] {\r\n    return new Array(value);\r\n  }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\nimport {Helper} from './helpers/items.helper';\nimport {TreeTableItemShell} from './helpers/models';\nimport {ConditionalCellClassFunc, IsSelectedFunc$, SortFunction, TreeTableColumn, TreeTableItem} from './models';\nimport {SortHelper} from './helpers/sort.helper';\nimport {Observable, of} from 'rxjs';\n\n@Component({\n  selector: 'cng-tree-table',\n  templateUrl: './tree-table.component.html',\n  styleUrls: ['./tree-table.component.scss']\n})\nexport class CngTreeTableComponent<T> {\n  @Input() columns: TreeTableColumn[];\n  @Input() sortFunction: SortFunction<T>;\n  @Input() isSelectedFunc$: IsSelectedFunc$<T>;\n  @Input() conditionalCellClassFunc: ConditionalCellClassFunc<T>;\n  @Output() toggleExpandItem = new EventEmitter<TreeTableItem<T>>();\n  @Output() rowClick = new EventEmitter<TreeTableItem<T>>();\n  @Input() tableClass = '';\n\n  treeTableItemShells: TreeTableItemShell<T>[] = [];\n  otherItems: TreeTableItem<T>[] = []; // to avoid unexpected infinite looping, if parent ids errored with never-ending cycle.\n\n  constructor() {\n  }\n\n  insertLevelItemsFor(index: number, parentShell: TreeTableItemShell<T>, level: number) {\n    const {levelItems, otherItems} = Helper.selectLevelItems(this.otherItems, parentShell.item);\n    if (levelItems.length < 1) { return; }\n\n    const levelItems2 = this.sortFunction ? Helper.sortItems(levelItems, this.sortFunction) : levelItems;\n\n    const newLevelShells = Helper.itemsToShells(levelItems2, level, parentShell);\n    this.treeTableItemShells = Helper.arrayInsertItems(this.treeTableItemShells, index, newLevelShells);\n\n    this.otherItems = [...otherItems];\n    newLevelShells.forEach((shell) => {\n      shell.haveChildren = this.otherItems.some(i => i.parentId === shell.item.id);\n    });\n  }\n\n  toggleExpand(event, shell: TreeTableItemShell<T>) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    shell.item.isExpanded = !shell.item.isExpanded;\n    this.toggleExpandItem.emit(shell.item);\n\n    if (shell.item.isExpanded) {\n      const shellIndex = this.treeTableItemShells.findIndex(i => i.item.id === shell.item.id);\n      this.insertLevelItemsFor(shellIndex + 1, shell, shell.level + 1);\n    }\n\n    this.updateVisibility();\n  }\n\n  localRowClick(shell: TreeTableItemShell<T>) {\n    this.rowClick.emit(shell.item);\n  }\n\n  isSelected$(shell: TreeTableItemShell<T>): Observable<boolean> {\n    const data = shell.item.data;\n    if (data && this.isSelectedFunc$) {\n      return this.isSelectedFunc$(data);\n    }\n    return of(false);\n  }\n\n  private updateVisibility() {\n    this.treeTableItemShells.forEach(sh => {\n      sh.isVisible = Helper.allParentsExpanded(sh);\n    });\n  }\n\n  // external functions\n  clearItems() {\n    this.treeTableItemShells = [];\n    this.otherItems = [];\n  }\n\n  appendItems(items: TreeTableItem<T>[]) {\n    this.otherItems = [...this.otherItems, ...items];\n\n    const root: TreeTableItemShell<T>  = { item: {id: null} } as TreeTableItemShell<T>;\n    this.insertLevelItemsFor(0, root, 0);\n    this.treeTableItemShells.forEach(shell => {\n      if (shell.item.isExpanded) {\n        const shellIndex = this.treeTableItemShells.findIndex(i => i.item.id === shell.item.id);\n        this.insertLevelItemsFor(shellIndex + 1, shell, shell.level + 1);\n      } else {\n        shell.haveChildren = this.otherItems.some(i => i.parentId === shell.item.id);\n      }\n    });\n\n    // fix have children for already added items, but reseted above adding code\n    this.treeTableItemShells.forEach(shell => {\n      if (!shell.haveChildren) {\n        shell.haveChildren = this.isExistsChildrenFor(shell.item.id);\n      }\n    });\n\n    this.updateVisibility();\n  }\n\n  private isExistsChildrenFor(itemId: string): boolean {\n    return this.treeTableItemShells\n      .some(i => {\n        if (!i) { return false; }\n        if (!i.parent) { return false; }\n        if (!i.parent.item) { return false; }\n        return i.parent.item.id === itemId;\n      });\n  }\n\n  getChildren(id: string): TreeTableItem<T>[] {\n    const fromShells = this.treeTableItemShells\n      .map(i => i.item)\n      .filter(i => i.parentId === id);\n    const fromItems = this.otherItems.filter(i => i.parentId === id);\n    return [...fromShells, ...fromItems];\n  }\n\n  removeItem(id: string) {\n    this.treeTableItemShells = Helper.removeAllShellsChildren([...this.treeTableItemShells], id);\n    const shell = this.treeTableItemShells.find(i => i.item.id === id);\n    if (shell && shell.parent) {\n      const parentId = shell.parent.item.id;\n      const isExistChildShell = this.treeTableItemShells.some(i => i.item.parentId === parentId);\n      const isExistChild = this.otherItems.some(i => i.parentId === parentId);\n      shell.parent.haveChildren = isExistChildShell || isExistChild;\n    }\n\n    this.treeTableItemShells = this.treeTableItemShells.filter(i => i.item.id !== id);\n\n    this.otherItems = Helper.removeAllChildren([...this.otherItems], id);\n    this.otherItems = this.otherItems\n      .filter(i => i.id !== id);\n  }\n\n  sort() {\n    if (!this.sortFunction) {\n      console.warn('cng-tree-table: there is not sortFunction');\n      return;\n    }\n\n    this.treeTableItemShells = SortHelper.getSorted(this.treeTableItemShells, this.sortFunction);\n  }\n}\n","<table [ngClass]=\"tableClass\">\r\n  <thead>\r\n  <tr>\r\n    <th *ngFor=\"let column of columns; let last=last;\"\r\n        [appResizableTableColumn]=\"!last\"\r\n        class=\"tree-item-header\"\r\n        [ngClass]=\"[column.thClass || '']\">\r\n      {{column.titleTemplate ? '' : column.title}}\r\n      <ng-container *ngTemplateOutlet=\"column.titleTemplate; context: { $implicit: column.title }\">\r\n      </ng-container>\r\n    </th>\r\n  </tr>\r\n  </thead>\r\n\r\n  <tbody>\r\n  <tr [ngClass]=\"{'selected': (isSelected$(shell) | async)}\"\r\n      *ngFor=\"let shell of treeTableItemShells\"\r\n      [hidden]=\"!shell.isVisible\" (click)=\"localRowClick(shell)\">\r\n\r\n    <td [className]=\"'tree-item ' + (conditionalCellClassFunc ? conditionalCellClassFunc(shell.item, column) : '')\"\r\n        *ngFor=\"let column of columns; let i = index;\">\r\n      <ng-container *ngIf=\"i === 0\">\r\n        <div class=\"level-indent\" *ngFor=\"let foo of shell.level | appNumberToArray\"></div>\r\n        <div class=\"tree-item-arrow\"\r\n             [ngClass]=\"{'expanded': shell.item.isExpanded, 'vis-hidden': !shell.haveChildren}\"\r\n             (click)=\"toggleExpand($event, shell)\"\r\n        ><div class=\"arrow\"></div>\r\n        </div>\r\n      </ng-container>\r\n      <ng-container *ngTemplateOutlet=\"column.template; context: { $implicit: shell.item }\">\r\n      </ng-container>\r\n    </td>\r\n  </tr>\r\n  </tbody>\r\n\r\n</table>\r\n","import {NgModule} from '@angular/core';\r\nimport {NumberToArrayPipe} from './number-to-array.pipe';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ResizableTableColumnDirective} from './resizable-table-column.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  declarations: [\r\n    NumberToArrayPipe,\r\n    ResizableTableColumnDirective\r\n  ],\r\n  exports: [\r\n    NumberToArrayPipe,\r\n    ResizableTableColumnDirective\r\n  ]\r\n})\r\nexport class SharedModule { }\r\n","import { NgModule } from '@angular/core';\nimport { CngTreeTableComponent } from './tree-table.component';\nimport {SharedModule} from './shared/shared.module';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SharedModule\n  ],\n  declarations: [CngTreeTableComponent],\n  exports: [CngTreeTableComponent]\n})\nexport class CngTreeTableModule { }\n","/*\n * Public API Surface of tree-table\n */\n\nexport * from './lib/models';\nexport * from './lib/tree-table.component';\nexport * from './lib/tree-table.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Helper","i2.ResizableTableColumnDirective","i3.NumberToArrayPipe"],"mappings":"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"}