{"version":3,"file":"darkchicken.mjs","sources":["../../../projects/darkchicken/src/lib/darkchicken.module.ts","../../../projects/darkchicken/src/lib/services/dc.service.ts","../../../projects/darkchicken/src/lib/components/atoms/icon/dc-icon.component.ts","../../../projects/darkchicken/src/lib/components/atoms/icon/dc-icon.component.html","../../../projects/darkchicken/src/lib/components/atoms/bread-crumb/dc-bread-crumb.component.ts","../../../projects/darkchicken/src/lib/components/atoms/bread-crumb/dc-bread-crumb.component.html","../../../projects/darkchicken/src/lib/components/atoms/button/dc-button.component.ts","../../../projects/darkchicken/src/lib/components/atoms/button/dc-button.component.html","../../../projects/darkchicken/src/lib/components/atoms/checkbox/dc-checkbox.component.ts","../../../projects/darkchicken/src/lib/components/atoms/checkbox/dc-checkbox.component.html","../../../projects/darkchicken/src/lib/services/language.service.ts","../../../projects/darkchicken/src/lib/components/atoms/input/dc-input.component.ts","../../../projects/darkchicken/src/lib/components/atoms/input/dc-input.component.html","../../../projects/darkchicken/src/lib/components/atoms/list/dc-list.component.ts","../../../projects/darkchicken/src/lib/components/atoms/list/dc-list.component.html","../../../projects/darkchicken/src/lib/components/atoms/spinner/dc-spinner.component.ts","../../../projects/darkchicken/src/lib/components/atoms/spinner/dc-spinner.component.html","../../../projects/darkchicken/src/lib/components/atoms/tree/dc-tree.component.ts","../../../projects/darkchicken/src/lib/components/atoms/tree/dc-tree.component.html","../../../projects/darkchicken/src/lib/components/atoms/dc-atoms.module.ts","../../../projects/darkchicken/src/lib/utils/column.ts","../../../projects/darkchicken/src/lib/utils/row-height-cache.ts","../../../projects/darkchicken/src/lib/utils/camel-case.ts","../../../projects/darkchicken/src/lib/utils/prefixes.ts","../../../projects/darkchicken/src/lib/utils/translate.ts","../../../projects/darkchicken/src/lib/components/grid/body/scroller/scroller.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/scroller/scroller.component.html","../../../projects/darkchicken/src/lib/utils/summary-row.ts","../../../projects/darkchicken/src/lib/utils/keys.ts","../../../projects/darkchicken/src/lib/services/scrollbar-helper.service.ts","../../../projects/darkchicken/src/lib/types/sort-direction.type.ts","../../../projects/darkchicken/src/lib/components/molecules/dc-dropdown/dc-dropdown.component.ts","../../../projects/darkchicken/src/lib/components/molecules/dc-dropdown/dc-dropdown.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/cell-input/cell-input.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/cell-input/cell-input.component.html","../../../projects/darkchicken/src/lib/components/grid/body/body-cell/body-cell.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/body-cell/body-cell.component.html","../../../projects/darkchicken/src/lib/components/grid/body/body-row/body-row.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/body-row/body-row.component.html","../../../projects/darkchicken/src/lib/components/grid/body/summary-row/summary-row.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/summary-row/summary-row.component.html","../../../projects/darkchicken/src/lib/components/grid/body/body-row-wrapper/body-row-wrapper.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/body-row-wrapper/body-row-wrapper.component.html","../../../projects/darkchicken/src/lib/components/grid/body/progress-bar/progress-bar.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/progress-bar/progress-bar.component.html","../../../projects/darkchicken/src/lib/types/selection.type.ts","../../../projects/darkchicken/src/lib/utils/selection.ts","../../../projects/darkchicken/src/lib/components/grid/body/selection/selection.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/selection/selection.component.html","../../../projects/darkchicken/src/lib/components/grid/body/body/body.component.ts","../../../projects/darkchicken/src/lib/components/grid/body/body/body.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/column-search/column-search.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/column-search/column-search.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/column-chooser/column-chooser.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/column-chooser/column-chooser.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/column-reorder/column-reorder.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/column-reorder/column-reorder.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/grid-search/grid-search/grid-search.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/grid-search/grid-search/grid-search.component.html","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/toolbar.component.ts","../../../projects/darkchicken/src/lib/components/grid/elements/toolbar/toolbar.component.html","../../../projects/darkchicken/src/lib/components/grid/footer/pager/pager.component.ts","../../../projects/darkchicken/src/lib/components/grid/footer/pager/pager.component.html","../../../projects/darkchicken/src/lib/components/grid/footer/footer/footer.component.ts","../../../projects/darkchicken/src/lib/components/grid/footer/footer/footer.component.html","../../../projects/darkchicken/src/lib/types/sort.type.ts","../../../projects/darkchicken/src/lib/utils/column-prop-getters.ts","../../../projects/darkchicken/src/lib/utils/sort.ts","../../../projects/darkchicken/src/lib/components/grid/header/header-cell/header-cell.component.ts","../../../projects/darkchicken/src/lib/components/grid/header/header-cell/header-cell.component.html","../../../projects/darkchicken/src/lib/directives/resizeable.directive.ts","../../../projects/darkchicken/src/lib/directives/long-press.directive.ts","../../../projects/darkchicken/src/lib/directives/draggable.directive.ts","../../../projects/darkchicken/src/lib/components/grid/header/header/header.component.ts","../../../projects/darkchicken/src/lib/components/grid/header/header/header.component.html","../../../projects/darkchicken/src/lib/directives/body-group-header-template.directive.ts","../../../projects/darkchicken/src/lib/directives/body-group-header.directive.ts","../../../projects/darkchicken/src/lib/directives/column-header.directive.ts","../../../projects/darkchicken/src/lib/directives/column-cell.directive.ts","../../../projects/darkchicken/src/lib/directives/tree.directive.ts","../../../projects/darkchicken/src/lib/services/column-changes.service.ts","../../../projects/darkchicken/src/lib/directives/column.directive.ts","../../../projects/darkchicken/src/lib/directives/footer-template.directive.ts","../../../projects/darkchicken/src/lib/directives/footer.directive.ts","../../../projects/darkchicken/src/lib/directives/row-detail-template.directive.ts","../../../projects/darkchicken/src/lib/directives/row-detail.directive.ts","../../../projects/darkchicken/src/lib/types/column-mode.type.ts","../../../projects/darkchicken/src/lib/types/contextmenu.type.ts","../../../projects/darkchicken/src/lib/utils/id.ts","../../../projects/darkchicken/src/lib/utils/column-helper.ts","../../../projects/darkchicken/src/lib/utils/math.ts","../../../projects/darkchicken/src/lib/utils/throttle.ts","../../../projects/darkchicken/src/lib/utils/tree.ts","../../../projects/darkchicken/src/lib/services/dimensions-helper.service.ts","../../../projects/darkchicken/src/lib/components/grid/datatable.component.ts","../../../projects/darkchicken/src/lib/components/grid/datatable.component.html","../../../projects/darkchicken/src/lib/components/molecules/dc-tab/dc-tab.component.ts","../../../projects/darkchicken/src/lib/components/molecules/dc-tab/dc-tab.component.html","../../../projects/darkchicken/src/lib/components/molecules/dc-molecules.module.ts","../../../projects/darkchicken/src/lib/components/grid/dc-grid.module.ts","../../../projects/darkchicken/src/lib/directives/orderable.directive.ts","../../../projects/darkchicken/src/lib/directives/visibility.directive.ts","../../../projects/darkchicken/src/lib/services/sidebar-data.service.ts","../../../projects/darkchicken/src/lib/types/click.type.ts","../../../projects/darkchicken/src/lib/utils/facade/browser.ts","../../../projects/darkchicken/src/lib/utils/elm-from-point.ts","../../../projects/darkchicken/src/lib/utils/visibility-observer.ts","../../../projects/darkchicken/src/public-api.ts","../../../projects/darkchicken/src/darkchicken.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n  ],\r\n  imports: [\r\n \r\n    CommonModule,\r\n    FormsModule,\r\n    RouterModule,\r\n  ],\r\n  exports: [\r\n  ]\r\n})\r\nexport class DarkchickenModule { }\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DCService {\r\n  constructor(private http: HttpClient) { }\r\n\r\n  private invalidCells: any = []\r\n\r\n  getIconSVG(iconName: string) {\r\n    return this.http.get(`assets/icons/${iconName}.svg`, { responseType: 'text' })\r\n\r\n  }\r\n\r\n  generateUniqueId(): string {\r\n    const uniqueId = Math.random().toString(36).substring(2) + Date.now().toString(36);\r\n    return uniqueId;\r\n  }\r\n\r\n  checkValidationOfCell(rowId: string, column: any, isValid: boolean, component:any) {\r\n    isValid ? this.removeInvalidCell(rowId, column) : this.addInvalidCell(rowId, column,component)\r\n  }\r\n\r\n  private addInvalidCell(rowId: string, column: any,component:any) {\r\n    let tempRow = this.invalidCells.find((cell: any) => cell.hasOwnProperty(rowId));\r\n    if (tempRow) {\r\n      tempRow[rowId][column] = component;\r\n    } else {\r\n      let newRow: any = {};\r\n      newRow[rowId] = {};\r\n      newRow[rowId][column] = component;\r\n      this.invalidCells.push(newRow);\r\n    }\r\n  }\r\n  \r\n\r\n  getInvalidCells() {\r\n    return this.invalidCells\r\n  }\r\n\r\n  private removeInvalidCell(rowId: string, column: any) {\r\n    const rowIndex = this.invalidCells.findIndex((row: any) => row.hasOwnProperty(rowId));\r\n    if (rowIndex !== -1 && this.invalidCells[rowIndex][rowId].hasOwnProperty(column)) {\r\n      delete this.invalidCells[rowIndex][rowId][column];\r\n      // If the row is empty after removal, remove the entire row\r\n      if (Object.keys(this.invalidCells[rowIndex][rowId]).length === 0) {\r\n        this.invalidCells.splice(rowIndex, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  \r\n\r\n}","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { DCService } from '../../../services/dc.service';\r\nimport { Icons } from '../../../types/dc-types';\r\n\r\n@Component({\r\n  selector: 'dca-icon',\r\n  templateUrl: 'dc-icon.component.html',\r\n  \r\n})\r\nexport class DCIconComponent implements OnChanges {\r\n  //#region Inputs\r\n  @Input() icon!: Icons;\r\n  @Input() dcClass: string = ''\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcClick = new EventEmitter<Event>()\r\n  @Output() dcHover = new EventEmitter<Event>()\r\n  @Output() dcMouseUp = new EventEmitter<Event>()\r\n  @Output() dcMouseDown = new EventEmitter<Event>()\r\n  @Output() dcMouseLeave = new EventEmitter<Event>()\r\n  @Output() dcMouseEnter = new EventEmitter<Event>()\r\n  @Output() dcDoubleClick = new EventEmitter<Event>()\r\n  //#endregion\r\n\r\n  svgContent!: SafeHtml;\r\n\r\n  constructor(private iconService: DCService, private sanitizer: DomSanitizer) { \r\n    \r\n  }\r\n\r\n\r\n\r\n    ngOnChanges(changes: SimpleChanges){\r\n    if(changes['icon']){\r\n      this.iconService.getIconSVG(this.icon).subscribe((data: string) => {\r\n        this.svgContent = this.getTrustedSvgContent(data);\r\n      });\r\n    }\r\n  }\r\n\r\n  private getTrustedSvgContent(content: string): SafeHtml {\r\n    \r\n    return this.sanitizer.bypassSecurityTrustHtml(content);\r\n  }\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(e: Event) {\r\n    this.dcDoubleClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(e: Event) {\r\n    this.dcClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(e: Event) {\r\n    this.dcHover.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(e: Event) {\r\n    this.dcMouseDown.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(e: Event) {\r\n    this.dcMouseUp.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(e: Event) {\r\n    this.dcMouseEnter.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(e: Event) {\r\n    this.dcMouseLeave.emit(e)\r\n  }\r\n  //#endregion\r\n}\r\n","<div [class]=\"dcClass\" [ngClass]=\"{'dca-icon':true}\" [innerHTML]=\"svgContent\" (click)=\"onClick($event)\" (mouseover)=\"onHover($event)\"\r\n    (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\"\r\n    (mouseleave)=\"onMouseLeave($event)\" (dblclick)=\"onDoubleClick($event)\"></div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BreadCrumbModel } from '../../../models/dc-models.model';\r\n\r\n@Component({\r\n  selector: 'dca-bread-crumb',\r\n  templateUrl: 'dc-bread-crumb.component.html'\r\n})\r\nexport class DCBreadCrumbComponent {\r\n  //#region Inputs\r\n  @Input() crumbList!: BreadCrumbModel[]\r\n  @Input() visible: boolean = true\r\n  @Input() dcClass: string = ''\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcClick = new EventEmitter<Object>()\r\n  @Output() dcHover = new EventEmitter<Object>()\r\n  @Output() dcMouseUp = new EventEmitter<Object>()\r\n  @Output() dcMouseDown = new EventEmitter<Object>()\r\n  @Output() dcMouseLeave = new EventEmitter<Object>()\r\n  @Output() dcMouseEnter = new EventEmitter<Object>()\r\n  @Output() dcDoubleClick = new EventEmitter<Object>()\r\n  //#endregion\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcDoubleClick.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcClick.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcHover.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcMouseDown.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcMouseUp.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcMouseEnter.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(e: Event, crumbGroup: HTMLDivElement, crumb: BreadCrumbModel) {\r\n    this.dcMouseLeave.emit({ nativeElement: e, crumbGroup: { nativeElement: crumbGroup, crumbList: this.crumbList }, crumb: crumb })\r\n  }\r\n  //#endregion\r\n}\r\n","<div #breadcrumbContainer [class]=\"dcClass\" [ngClass]=\"{'hidden' : !visible, 'dca-bread-crumb':true}\">\r\n  <ng-container *ngFor=\"let crumb of crumbList; let last = last;\" >\r\n    <div class=\"breadcrumb-item\" >\r\n      <a (click)=\"onClick($event,breadcrumbContainer, crumb)\" (mouseover)=\"onHover($event,breadcrumbContainer, crumb)\"\r\n        (mousedown)=\"onMouseDown($event,breadcrumbContainer, crumb)\"\r\n        (mouseup)=\"onMouseUp($event,breadcrumbContainer, crumb)\"\r\n        (mouseenter)=\"onMouseEnter($event,breadcrumbContainer, crumb)\"\r\n        (mouseleave)=\"onMouseLeave($event,breadcrumbContainer, crumb)\"\r\n        (dblclick)=\"onDoubleClick($event,breadcrumbContainer, crumb)\" [attr.href]=\"crumb.link\"\r\n        [ngClass]=\"{'breadcrumb-item-with-no-icon': !crumb.icon,'breadcrumb-item-with-link': crumb.link}\">\r\n        <dca-icon *ngIf=\"crumb.icon\" class=\"dca-bread-crumb-item breadcrumb-item\" [icon]=\"crumb.icon\"></dca-icon>\r\n        {{ crumb.label }}</a>\r\n      <span *ngIf=\"!last\">\r\n        <dca-icon class=\"dca-bread-crumb-chevron-right\" icon=\"chevron-right\"></dca-icon>\r\n      </span>\r\n    </div>\r\n  </ng-container>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dca-button',\r\n  templateUrl: 'dc-button.component.html'\r\n})\r\nexport class DCButtonComponent {\r\n\r\n  //#region Inputs\r\n  @Input() buttonText: string | null = null\r\n  @Input() width: string | null = null\r\n  @Input() height: string | null = null\r\n  @Input() disabled: boolean = false\r\n  @Input() visible: boolean = true\r\n  @Input() isToggle: boolean = false\r\n  @Input() dcClass: string = 'dca-btn dca-btn-primary'\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcClick = new EventEmitter<Event>()\r\n  @Output() dcHover = new EventEmitter<Event>()\r\n  @Output() dcMouseUp = new EventEmitter<Event>()\r\n  @Output() dcMouseDown = new EventEmitter<Event>()\r\n  @Output() dcMouseLeave = new EventEmitter<Event>()\r\n  @Output() dcMouseEnter = new EventEmitter<Event>()\r\n  @Output() dcDoubleClick = new EventEmitter<Event>()\r\n  //#endregion\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(e: Event) {\r\n    this.dcDoubleClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(e: Event) {\r\n    this.dcClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(e: Event) {\r\n    this.dcHover.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(e: Event) {\r\n    this.dcMouseDown.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(e: Event) {\r\n    this.dcMouseUp.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(e: Event) {\r\n    this.dcMouseEnter.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(e: Event) {\r\n    this.dcMouseLeave.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n}\r\n","<button (click)=\"onClick($event)\"\r\n        (mouseover)=\"onHover($event)\"\r\n        (mousedown)=\"onMouseDown($event)\"\r\n        (mouseup)=\"onMouseUp($event)\"\r\n        (mouseenter)=\"onMouseEnter($event)\"\r\n        (mouseleave)=\"onMouseLeave($event)\"\r\n        (dblclick)=\"onDoubleClick($event)\"\r\n        [disabled]=\"disabled\"\r\n        [ngClass]=\"{ 'hidden' : !visible}\" \r\n        [class]=\"dcClass\"\r\n        [style.width]=\"this.width\"\r\n        [style.height]=\"this.height\"\r\n        >\r\n  <span>{{ buttonText }}</span>\r\n\r\n  <span class=\"dca-btn-icon\">\r\n    <ng-content select=\"dca-icon\"></ng-content>\r\n</span>\r\n</button>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CheckboxType } from '../../../types/dc-types';\r\n\r\n@Component({\r\n  selector: 'dca-checkbox',\r\n  templateUrl: './dc-checkbox.component.html',\r\n})\r\nexport class DCCheckboxComponent {\r\n  //#region Inputs\r\n  @Input() checkboxId: string | null = null\r\n  @Input() label: string | null = null\r\n  @Input() checked: boolean | null = null\r\n  @Input() type: CheckboxType = 'box'\r\n  @Input() disabled: boolean = false\r\n  @Input() visible: boolean = true\r\n  @Input() dcClass: string = ''\r\n  @Input() isRequired?: boolean = false\r\n  @Input() validationMessage?: string = ''\r\n  @Input() notEqual: boolean | null = null\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcValueChanged = new EventEmitter<Object>()\r\n  //#endregion\r\n\r\n  clickedOnce = false\r\n\r\n  get isValid() {\r\n    let tempValid = true\r\n    if (this.isRequired) {\r\n      if (this.checked == undefined || this.checked == null) tempValid = false\r\n    }\r\n    if (this.notEqual != null) {\r\n\r\n      if (this.notEqual == true) {\r\n        if (this.checked == true) tempValid = false\r\n      } else {\r\n        if (this.checked == false) tempValid = false\r\n      }\r\n    }\r\n    return tempValid\r\n  }\r\n\r\n  //#region onValueChange\r\n  onValueChange(e: Event) {\r\n    this.checked = (e.currentTarget as HTMLInputElement).checked\r\n    this.dcValueChanged.emit({\r\n      nativeElement: e,\r\n      value: this.checked\r\n    });\r\n  }\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcClick = new EventEmitter<Event>()\r\n  @Output() dcHover = new EventEmitter<Event>()\r\n  @Output() dcMouseUp = new EventEmitter<Event>()\r\n  @Output() dcMouseDown = new EventEmitter<Event>()\r\n  @Output() dcMouseLeave = new EventEmitter<Event>()\r\n  @Output() dcMouseEnter = new EventEmitter<Event>()\r\n  @Output() dcDoubleClick = new EventEmitter<Event>()\r\n  @Output() dcFocusOut = new EventEmitter<Object>();\r\n  @Output() dcFocusIn = new EventEmitter<Object>();\r\n  //#endregion\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(e: Event) {\r\n    this.dcDoubleClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(e: Event) {\r\n    this.dcClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(e: Event) {\r\n    this.dcHover.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(e: Event) {\r\n    this.dcMouseDown.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(e: Event) {\r\n    this.dcMouseUp.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(e: Event) {\r\n    this.dcMouseEnter.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(e: Event) {\r\n    this.dcMouseLeave.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region dcFocusOut Event\r\n  onFocusOut(e: Event) {\r\n    this.dcFocusOut.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region dcFocusIn Event\r\n  onFocusIn(e: Event) {\r\n    this.clickedOnce = true\r\n    this.dcFocusIn.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n}\r\n","<input #dcaCheckbox *ngIf=\"type == 'box'\" [disabled]=\"disabled\" [checked]=\"checked\" [required]=\"isRequired\"\r\n    [ngClass]=\"{'indeterminate' :checked==null, 'hidden': !visible,'dca-checkbox':true, 'invalid': (!isValid && clickedOnce) }\" [attr.id]=\"checkboxId\"\r\n    type=\"checkbox\" [class]=\"dcClass\" (change)=\"onValueChange($event)\" (click)=\"onClick($event)\"\r\n    (mouseover)=\"onHover($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\r\n    (mouseenter)=\"onMouseEnter($event)\" (mouseleave)=\"onMouseLeave($event)\" (dblclick)=\"onDoubleClick($event)\" (focus)=\"onFocusIn($event)\" (focusout)=\"onFocusOut($event)\">\r\n\r\n<label *ngIf=\"type == 'switch'\" class=\"switch\">\r\n    <input [checked]=\"checked\" [disabled]=\"disabled\" [attr.id]=\"checkboxId\" type=\"checkbox\"\r\n        [ngClass]=\"{'dca-checkbox':true}\" [class]=\"dcClass\" (change)=\"onValueChange($event)\" (click)=\"onClick($event)\"\r\n        (mouseover)=\"onHover($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\r\n        (mouseenter)=\"onMouseEnter($event)\" (mouseleave)=\"onMouseLeave($event)\" (dblclick)=\"onDoubleClick($event)\" (focus)=\"onFocusIn($event)\" (focusout)=\"onFocusOut($event)\">\r\n    <span [ngClass]=\"{'hidden': !visible }\" class=\"slider\"></span>\r\n</label>","import { Injectable } from '@angular/core';\r\nimport { LanguageType } from '../types/dc-types';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class LanguageService {\r\n\r\n    constructor(private http: HttpClient) {\r\n\r\n    }\r\n\r\n    private currentLanguage: LanguageType = 'tr';\r\n\r\n    getTranslation(key: string): Observable<any> {\r\n        return this.http.get(`assets/i18n/${this.currentLanguage}.json`).pipe(\r\n            map((res:any) => {\r\n                return res[key] ? res[key] : key;\r\n            })\r\n        );\r\n    }\r\n\r\n    setLanguage(lang: LanguageType) {\r\n        this.currentLanguage = lang\r\n    }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { validationRules } from '../../../models/dc-models.model';\r\nimport { LanguageService } from '../../../services/language.service';\r\nimport { InputType } from '../../../types/dc-types';\r\n@Component({\r\n  selector: 'dca-input',\r\n  templateUrl: 'dc-input.component.html',\r\n})\r\nexport class DCInputComponent implements AfterViewInit {\r\n  //#region Inputs\r\n  @Input() placeholder: string | null = null;\r\n  @Input() label: string | null = null;\r\n  @Input() type: InputType = 'text';\r\n  @Input() value: any = null;\r\n  @Input() width: string | null = null;\r\n  @Input() height: string | null = null;\r\n  @Input() validationRules?: validationRules[] | null = null;\r\n  @Input() readonly?: boolean = false;\r\n  @Input() disabled: boolean | null = null;\r\n  @Input() visible: boolean = true;\r\n  @Input() dcClass: string = '';\r\n  @Input() inputId: string | null = null\r\n  //#endregion\r\n\r\n  //#region Outputs\r\n  @Output() dcValueChanged = new EventEmitter<Object>();\r\n  @Output() dcFocusOut = new EventEmitter<Object>();\r\n  @Output() dcFocusIn = new EventEmitter<Object>();\r\n  @Output() dcValidating = new EventEmitter<Object>();\r\n  @Output() dcValidated = new EventEmitter<Object>();\r\n  @Output() dcClick = new EventEmitter<Event>()\r\n  @Output() dcHover = new EventEmitter<Event>()\r\n  @Output() dcMouseUp = new EventEmitter<Event>()\r\n  @Output() dcMouseDown = new EventEmitter<Event>()\r\n  @Output() dcMouseLeave = new EventEmitter<Event>()\r\n  @Output() dcMouseEnter = new EventEmitter<Event>()\r\n  @Output() dcDoubleClick = new EventEmitter<Event>()\r\n  @Output() dcKeyUp = new EventEmitter<Object>()\r\n  //#endregion\r\n  @ViewChild(\"dcaInput\") inputElementRef: ElementRef<HTMLInputElement>\r\n\r\n\r\n  //#region Variables\r\n  previousValue: string | null = null;\r\n\r\n  _isValid: boolean = false\r\n\r\n  get isValid() {\r\n    if (this.validationRules && this.validationRules.length > 0) {\r\n      return this._isValid\r\n    }\r\n    return true\r\n  }\r\n\r\n  set isValid(val: boolean) {\r\n    this._isValid = val\r\n  }\r\n\r\n  //#region Validation Variables\r\n  get isRequired() {\r\n    return (\r\n      this.validationRules?.some((rule) => rule.type === 'required') ?? false\r\n    );\r\n  }\r\n\r\n  get minValue() {\r\n    const minRule = this.validationRules?.find((rule) => rule.type === 'min');\r\n    return minRule ? minRule.value : null;\r\n  }\r\n\r\n  get maxValue() {\r\n    const maxRule = this.validationRules?.find((rule) => rule.type === 'max');\r\n    return maxRule ? maxRule.value : null;\r\n  }\r\n\r\n  get minLengthValue() {\r\n    const minLengthRule = this.validationRules?.find(\r\n      (rule) => rule.type === 'minLength'\r\n    );\r\n    return minLengthRule ? minLengthRule.value : null;\r\n  }\r\n\r\n  get maxLengthValue() {\r\n    const maxLengthRule = this.validationRules?.find(\r\n      (rule) => rule.type === 'maxLength'\r\n    );\r\n    return maxLengthRule ? maxLengthRule.value : null;\r\n  }\r\n\r\n  get pattern() {\r\n    const patternRule = this.validationRules?.find(\r\n      (rule) => rule.type === 'regEx'\r\n    );\r\n    return patternRule ? patternRule.pattern : null;\r\n  }\r\n\r\n  clickedOnce: boolean = false;\r\n  validationMessage?: string | null = null;\r\n  //#endregion\r\n\r\n  //#endregion\r\n\r\n  constructor(private languageService: LanguageService) { }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.previousValue = this.value;\r\n    this.checkValidation()\r\n  }\r\n\r\n  //#region Outputs methots\r\n  onFocusIn(e: Event) {\r\n    this.dcFocusIn.emit({\r\n      currentValue: (e.currentTarget as HTMLInputElement).value,\r\n      nativeElement: e,\r\n    });\r\n  }\r\n\r\n  onFocusOut(e: Event) {\r\n    this.clickedOnce = true;\r\n    this.checkValidation(); //checking the validation \r\n    this.dcFocusOut.emit({\r\n      currentValue: (e.currentTarget as HTMLInputElement).value,\r\n      nativeElement: e,\r\n    });\r\n  }\r\n\r\n  onValueChange(e: Event) {\r\n    this.dcValueChanged.emit({\r\n      newValue: (e.currentTarget as HTMLInputElement).value,\r\n      oldValue: this.previousValue,\r\n      nativeElement: e,\r\n    });\r\n\r\n    this.previousValue = (e.currentTarget as HTMLInputElement).value;\r\n  }\r\n  //#endregion\r\n\r\n  //#region onValidating\r\n  checkValidation() {\r\n    this.dcValidating.emit({\r\n      nativeElememt: this.inputElementRef.nativeElement,\r\n      validationRules: this.validationRules,\r\n      value: (this.inputElementRef.nativeElement as HTMLInputElement).value,\r\n    })\r\n    let validity = (this.inputElementRef.nativeElement as HTMLInputElement).validity;\r\n    if (!validity.valid) {\r\n      this.isValid = false\r\n      if (validity.valueMissing) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'required'\r\n        )?.message;\r\n      } else if (validity.tooShort) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'minLength'\r\n        )?.message;\r\n      } else if (validity.tooLong) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'maxLength'\r\n        )?.message;\r\n      } else if (validity.rangeUnderflow) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'min'\r\n        )?.message;\r\n      } else if (validity.rangeOverflow) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'max'\r\n        )?.message;\r\n      } else if (validity.patternMismatch) {\r\n        this.validationMessage = this.validationRules?.find(\r\n          (rule) => rule.type == 'regEx'\r\n        )?.message;\r\n      } else {\r\n        this.languageService.getTranslation('invalidInput').subscribe(message => {\r\n          this.validationMessage = message\r\n        })\r\n      }\r\n    } else {\r\n      this.isValid = true\r\n      this.validationMessage = null;\r\n    }\r\n    this.dcValidated.emit({\r\n      nativeElement: this.inputElementRef.nativeElement,\r\n      isValid: this.isValid,\r\n      value: (this.inputElementRef.nativeElement as HTMLInputElement).value\r\n    })\r\n\r\n  }\r\n  //#endregion\r\n\r\n  //#region onKeyUp Event\r\n  onKeyUp(e: Event) {\r\n    this.dcKeyUp.emit({\r\n      nativeElement: e,\r\n      value: (e.currentTarget as HTMLInputElement).value\r\n    })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(e: Event) {\r\n    this.dcDoubleClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(e: Event) {\r\n    this.dcClick.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(e: Event) {\r\n    this.dcHover.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(e: Event) {\r\n    this.dcMouseDown.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(e: Event) {\r\n    this.dcMouseUp.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(e: Event) {\r\n    this.dcMouseEnter.emit(e)\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(e: Event) {\r\n    this.dcMouseLeave.emit(e)\r\n  }\r\n  //#endregion\r\n}\r\n","<span (click)=\"onClick($event)\" (mouseover)=\"onHover($event)\" (mousedown)=\"onMouseDown($event)\"\r\n    (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\" (mouseleave)=\"onMouseLeave($event)\"\r\n    (dblclick)=\"onDoubleClick($event)\" class=\"dca-input-wrapper\" [ngClass]=\"{'hidden' : !visible}\">\r\n    <!--Label-->\r\n    <span *ngIf=\"label\" class=\"dca-input-label-wrapper\">\r\n        <label *ngIf=\"label\" [attr.for]=\"inputId\" class=\"dca-input-label\">{{label}}</label>\r\n    </span>\r\n    <span class=\"dca-input-content\" [style.width]=\"this.width\">\r\n        <!--Input-->\r\n        <input [style.width]=\"this.width\" [style.height]=\"this.height\" #dcaInput [attr.id]='inputId'\r\n            [attr.placeholder]=\"placeholder ? placeholder : null\" [type]=\"type\" [value]=\"value\"\r\n            [ngClass]=\"{'clickedOnce':clickedOnce,'dca-input':true}\" [class]=\"dcClass\" (focus)=\"onFocusIn($event)\"\r\n            (focusout)=\"onFocusOut($event)\" (change)=\"onValueChange($event)\" [required]=\"isRequired\"\r\n            [attr.min]=\"minValue\" [attr.max]=\"maxValue\" [attr.minLength]=\"minLengthValue\"\r\n            [attr.maxLength]=\"maxLengthValue\" [attr.pattern]=\"pattern\" autocomplete=\"off\" [readonly]=\"readonly\"\r\n            [disabled]=\"disabled\" (keyup)=\"onKeyUp($event)\" (search)=\"onKeyUp($event)\">\r\n\r\n        <!--Invalid Icon & Message-->\r\n        <div *ngIf=\"(!isValid && clickedOnce)\" class=\"dca-invalid-icon\">\r\n            <dca-icon icon=\"circle-exclamation\"></dca-icon>\r\n            <span class=\"validation-message\">{{validationMessage}}</span>\r\n        </div>\r\n\r\n        <span class=\"dca-input-icon\">\r\n            <ng-content select=\"dca-icon\"></ng-content>\r\n        </span>\r\n    </span>\r\n</span>","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dca-list',\r\n  templateUrl: './dc-list.component.html'\r\n})\r\nexport class DcListComponent {\r\n  @Input() dataSource?: any[] = []\r\n  @Input() valueExp?: string | null = null\r\n  @Input() displayExp?: string | null = null\r\n  @Input() visible: boolean = true\r\n  @Input() dcClass: string = ''\r\n\r\n\r\n  @Output() dcClick = new EventEmitter<Object>()\r\n  @Output() dcHover = new EventEmitter<Object>()\r\n  @Output() dcMouseUp = new EventEmitter<Object>()\r\n  @Output() dcMouseDown = new EventEmitter<Object>()\r\n  @Output() dcMouseLeave = new EventEmitter<Object>()\r\n  @Output() dcMouseEnter = new EventEmitter<Object>()\r\n  @Output() dcDoubleClick = new EventEmitter<Object>()\r\n\r\n  \r\n//#region onDoubleClick Event\r\nonDoubleClick(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcDoubleClick.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onClick Event\r\nonClick(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcClick.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onHover Event\r\nonHover(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcHover.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onMouseDown Event\r\nonMouseDown(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcMouseDown.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onMouseUp Event\r\nonMouseUp(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcMouseUp.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onMouseEnter Event\r\nonMouseEnter(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcMouseEnter.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n//#region onMouseOut Event\r\nonMouseLeave(e: Event, item:any, dataField:string, value:any) {\r\n  this.dcMouseLeave.emit({listItem:item, nativeElement: e, [dataField] : value })\r\n}\r\n//#endregion\r\n\r\n}\r\n","<ul [ngClass]=\"{'dca-list':true}\" [class]=\"dcClass\">\r\n    <ng-container *ngIf=\"dataSource && valueExp && displayExp\">\r\n        <li *ngFor=\"let item of dataSource\" [value]=\"item[valueExp]\" (click)=\"onClick($event, item, valueExp, item[valueExp])\"\r\n            (mouseover)=\"onHover($event, item, valueExp, item[valueExp])\" (mousedown)=\"onMouseDown($event, item, valueExp, item[valueExp])\" (mouseup)=\"onMouseUp($event, item, valueExp, item[valueExp])\"\r\n            (mouseenter)=\"onMouseEnter($event, item, valueExp, item[valueExp])\" (mouseleave)=\"onMouseLeave($event, item, valueExp, item[valueExp])\" (dblclick)=\"onDoubleClick($event, item, valueExp, item[valueExp])\"\r\n            [ngClass]=\"{ 'hidden' : !visible, 'dca-list-item' : true}\" >\r\n            <dca-icon class=\"dca-list-icon\" *ngIf=\"item.icon\" [icon]=\"item.icon\" ></dca-icon>\r\n            {{item[displayExp]}}\r\n        </li>\r\n    </ng-container>\r\n</ul>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dca-spinner',\r\n  templateUrl: './dc-spinner.component.html'\r\n})\r\nexport class DCSpinnerComponent {\r\n  //#region Inputs\r\n  @Input() active: boolean = true\r\n  @Input() dcClass: string = 'dca-spinner-primary'\r\n  //#endregion\r\n}\r\n","<div [class]=\"dcClass\" [ngClass]=\"{'dca-spinner':true}\" *ngIf=\"active\" ></div>","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { TreeModel } from '../../../models/dc-models.model';\r\n\r\n\r\n@Component({\r\n  selector: 'dca-tree',\r\n  templateUrl: './dc-tree.component.html'\r\n})\r\nexport class DcTreeComponent implements OnChanges{\r\n\r\n  @Input() treeData?: TreeModel[] | any[];\r\n  @Input() visible: boolean = true\r\n  @Input() dcClass: string = ''\r\n  @Input() expandOnlyIcon: boolean = false\r\n\r\n  @Output() dcExpanding = new EventEmitter<Object>();\r\n  @Output() dcCollapsing = new EventEmitter<Object>();\r\n  @Output() dcClick = new EventEmitter<Object>()\r\n  @Output() dcHover = new EventEmitter<Object>()\r\n  @Output() dcMouseUp = new EventEmitter<Object>()\r\n  @Output() dcMouseDown = new EventEmitter<Object>()\r\n  @Output() dcMouseLeave = new EventEmitter<Object>()\r\n  @Output() dcMouseEnter = new EventEmitter<Object>()\r\n  @Output() dcDoubleClick = new EventEmitter<Object>()\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['treeData']) {\r\n      this.treeData?.forEach((item: any) => {\r\n\r\n        item.expanded = false\r\n      })\r\n    }\r\n  }\r\n\r\n  closeAllNodesExcept(selectedNode?: any) {\r\n    this.treeData?.forEach((node: any) => {\r\n      // Seçili node dışındaki tüm nodları kapalı konuma getir\r\n      if (node !== selectedNode) {\r\n        node.expanded = false;\r\n      }\r\n    });\r\n  }\r\n  \r\n  changeOpen(node: any, event: Event) {\r\n    if (!this.expandOnlyIcon) {\r\n      this.dcClick.emit({ item: node, nativeElement: event })\r\n      \r\n      this.closeAllNodesExcept(node);\r\n\r\n      node.expanded = !node.expanded;\r\n      if (node.expanded) {\r\n        this.dcExpanding.emit({ item: node, nativeElement: event });\r\n      } else {\r\n        this.dcCollapsing.emit({ item: node, nativeElement: event });\r\n      }\r\n    } else {\r\n      if ((event.currentTarget as HTMLElement).classList.contains('chevron-icons')) {\r\n        node.expanded = !node.expanded;\r\n        if (node.expanded) {\r\n          this.dcExpanding.emit({ item: node, nativeElement: event });\r\n        } else {\r\n          this.dcCollapsing.emit({ item: node, nativeElement: event });\r\n        }\r\n      }else{\r\n        this.dcClick.emit({ item: node, nativeElement: event })\r\n      }\r\n    }\r\n  }\r\n\r\n  changeOpenSubItems(node: any) {\r\n    if(!this.expandOnlyIcon){\r\n      this.dcClick.emit(node)\r\n\r\n      if (node.expanded) {\r\n        this.dcExpanding.emit(node);\r\n      } else {\r\n        this.dcCollapsing.emit(node);\r\n      }\r\n    }else{\r\n      if((node.nativeElement.currentTarget as HTMLElement).classList.contains('chevron-icons')){\r\n        if (node.expanded) {\r\n          this.dcExpanding.emit(node);\r\n        } else {\r\n          this.dcCollapsing.emit(node);\r\n        }\r\n      }else{\r\n        this.dcClick.emit(node)\r\n      }\r\n    }\r\n  }\r\n\r\n  //#region onDoubleClick Event\r\n  onDoubleClick(node: any, e: Event) {\r\n    this.dcDoubleClick.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onClick Event\r\n  onClick(node: any, e: Event) {\r\n    this.dcClick.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onHover Event\r\n  onHover(node: any, e: Event) {\r\n    this.dcHover.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onMouseDown(node: any, e: Event) {\r\n    this.dcMouseDown.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onMouseUp(node: any, e: Event) {\r\n    this.dcMouseUp.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onMouseEnter(node: any, e: Event) {\r\n    this.dcMouseEnter.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onMouseLeave(node: any, e: Event) {\r\n    this.dcMouseLeave.emit({ node: node, nativeElement: e })\r\n  }\r\n  //#endregion\r\n}\r\n","<ul [class]=\"dcClass\" [ngClass]=\"{ 'hidden' : !visible, 'dca-tree':true}\">\r\n    <li class=\"dca-tree-item\" *ngFor=\"let node of treeData\">\r\n        <dca-icon (dcClick)=\"changeOpen(node,$event)\" *ngIf=\"node.subItems\"\r\n        [icon]=\"node.expanded ? 'chevron-down' : 'chevron-right'\"\r\n        class=\"tree-chevron-icons\" dcClass=\"chevron-icons\"></dca-icon>\r\n        <div (click)=\"changeOpen(node, $event)\"\r\n            (mouseover)=\"onHover(node,$event)\"\r\n            (mousedown)=\"onMouseDown(node,$event)\"\r\n            (mouseup)=\"onMouseUp(node,$event)\"\r\n            (mouseenter)=\"onMouseEnter(node,$event)\"\r\n            (mouseleave)=\"onMouseLeave(node,$event)\"\r\n            (dblclick)=\"onDoubleClick(node,$event)\"\r\n            class=\"dca-tree-parent-item\">\r\n            <dca-icon *ngIf=\"node.icon\" class=\"dca-tree-icon\"\r\n                [icon]=\"node.icon\"></dca-icon>\r\n            <span class=\"dca-tree-title\">{{ node.title }}</span>\r\n        </div>\r\n        <dca-tree class=\"dca-tree-sub-item\"\r\n            *ngIf=\"node.subItems && node.expanded\"\r\n            (dcCollapsing)=\"changeOpenSubItems($event)\"\r\n            (dcExpanding)=\"changeOpenSubItems($event)\"\r\n            [treeData]=\"node.subItems\"></dca-tree>\r\n    </li>\r\n</ul>","import { NgModule } from '@angular/core';\r\nimport { DCButtonComponent } from './button/dc-button.component';\r\nimport { DCInputComponent } from './input/dc-input.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DCIconComponent } from './icon/dc-icon.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { DCCheckboxComponent } from './checkbox/dc-checkbox.component';\r\nimport { DCBreadCrumbComponent } from './bread-crumb/dc-bread-crumb.component';\r\nimport { DCSpinnerComponent } from './spinner/dc-spinner.component';\r\nimport { DcTreeComponent } from './tree/dc-tree.component';\r\nimport { DcListComponent } from './list/dc-list.component';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DCButtonComponent,\r\n    DCInputComponent,\r\n    DCIconComponent,\r\n    DCCheckboxComponent,\r\n    DCBreadCrumbComponent,\r\n    DCSpinnerComponent,\r\n    DcTreeComponent,\r\n    DcListComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    HttpClientModule,\r\n  ],\r\n  exports: [\r\n    DCButtonComponent,\r\n    DCInputComponent,\r\n    DCIconComponent,\r\n    DCCheckboxComponent,\r\n    DCBreadCrumbComponent,\r\n    DCSpinnerComponent,\r\n    DcTreeComponent,\r\n    DcListComponent\r\n  ]\r\n})\r\nexport class DCAtomModule { }","/**\r\n * Returns the columns by pin.\r\n */\r\nexport function columnsByPin(cols: any[]) {\r\n  const ret: { left: any; center: any; right: any } = {\r\n    left: [],\r\n    center: [],\r\n    right: []\r\n  };\r\n\r\n  if (cols) {\r\n    for (const col of cols) {\r\n      if (col.frozenLeft) {\r\n        ret.left.push(col);\r\n      } else if (col.frozenRight) {\r\n        ret.right.push(col);\r\n      } else {\r\n        ret.center.push(col);\r\n      }\r\n    }\r\n  }\r\n\r\n  return ret;\r\n}\r\n\r\n/**\r\n * Returns the widths of all group sets of a column\r\n */\r\nexport function columnGroupWidths(groups: any, all: any) {\r\n  return {\r\n    left: columnTotalWidth(groups.left),\r\n    center: columnTotalWidth(groups.center),\r\n    right: columnTotalWidth(groups.right),\r\n    total: Math.floor(columnTotalWidth(all))\r\n  };\r\n}\r\n\r\n/**\r\n * Calculates the total width of all columns and their groups\r\n */\r\nexport function columnTotalWidth(columns: any[], prop?: string) {\r\n  let totalWidth = 0;\r\n\r\n  if (columns) {\r\n    for (const c of columns) {\r\n      const has = prop && c[prop];\r\n      const width = has ? c[prop] : c.width;\r\n      totalWidth = totalWidth + parseFloat(width);\r\n    }\r\n  }\r\n  return totalWidth;\r\n}\r\n\r\n/**\r\n * Calculates the total width of all columns and their groups\r\n */\r\nexport function columnsTotalWidth(columns: any, prop?: any) {\r\n  let totalWidth = 0;\r\n\r\n  for (const column of columns) {\r\n    const has = prop && column[prop];\r\n    totalWidth = totalWidth + (has ? column[prop] : column.width);\r\n  }\r\n\r\n  return totalWidth;\r\n}\r\n\r\nexport function columnsByPinArr(val: any) {\r\n  const colsByPinArr = [];\r\n  const colsByPin = columnsByPin(val);\r\n\r\n  colsByPinArr.push({ type: 'left', columns: colsByPin['left'] });\r\n  colsByPinArr.push({ type: 'center', columns: colsByPin['center'] });\r\n  colsByPinArr.push({ type: 'right', columns: colsByPin['right'] });\r\n\r\n  return colsByPinArr;\r\n}\r\n","/**\r\n * This object contains the cache of the various row heights that are present inside\r\n * the data table.   Its based on Fenwick tree data structure that helps with\r\n * querying sums that have time complexity of log n.\r\n *\r\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\r\n * https://github.com/mikolalysenko/fenwick-tree\r\n *\r\n */\r\nexport class RowHeightCache {\r\n  /**\r\n   * Tree Array stores the cumulative information of the row heights to perform efficient\r\n   * range queries and updates.  Currently the tree is initialized to the base row\r\n   * height instead of the detail row height.\r\n   */\r\n  private treeArray: number[] = [];\r\n\r\n  /**\r\n   * Clear the Tree array.\r\n   */\r\n  clearCache(): void {\r\n    this.treeArray = [];\r\n  }\r\n\r\n  /**\r\n   * Initialize the Fenwick tree with row Heights.\r\n   *\r\n   * @param rows The array of rows which contain the expanded status.\r\n   * @param rowHeight The row height.\r\n   * @param detailRowHeight The detail row height.\r\n   */\r\n  initCache(details: any): void {\r\n    const { rows, rowHeight, detailRowHeight, externalVirtual, rowCount, rowIndexes, rowExpansions } = details;\r\n    const isFn = typeof rowHeight === 'function';\r\n    const isDetailFn = typeof detailRowHeight === 'function';\r\n\r\n    if (!isFn && isNaN(rowHeight)) {\r\n      throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\r\n        valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\r\n    }\r\n\r\n    // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\r\n    if (!isDetailFn && isNaN(detailRowHeight)) {\r\n      throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\r\n        valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\r\n    }\r\n\r\n    const n = externalVirtual ? rowCount : rows.length;\r\n    this.treeArray = new Array(n);\r\n\r\n    for (let i = 0; i < n; ++i) {\r\n      this.treeArray[i] = 0;\r\n    }\r\n\r\n    for (let i = 0; i < n; ++i) {\r\n      const row = rows[i];\r\n      let currentRowHeight = rowHeight;\r\n      if (isFn) {\r\n        currentRowHeight = rowHeight(row);\r\n      }\r\n\r\n      // Add the detail row height to the already expanded rows.\r\n      // This is useful for the table that goes through a filter or sort.\r\n      const expanded = rowExpansions.has(row);\r\n      if (row && expanded) {\r\n        if (isDetailFn) {\r\n          const index = rowIndexes.get(row);\r\n          currentRowHeight += detailRowHeight(row, index);\r\n        } else {\r\n          currentRowHeight += detailRowHeight;\r\n        }\r\n      }\r\n\r\n      this.update(i, currentRowHeight);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Given the ScrollY position i.e. sum, provide the rowIndex\r\n   * that is present in the current view port.  Below handles edge cases.\r\n   */\r\n  getRowIndex(scrollY: number): number {\r\n    if (scrollY === 0) return 0;\r\n    return this.calcRowIndex(scrollY);\r\n  }\r\n\r\n  /**\r\n   * When a row is expanded or rowHeight is changed, update the height.  This can\r\n   * be utilized in future when Angular Data table supports dynamic row heights.\r\n   */\r\n  update(atRowIndex: number, byRowHeight: number): void {\r\n    if (!this.treeArray.length) {\r\n      throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\r\n        Row Height cache not initialized.`);\r\n    }\r\n\r\n    const n = this.treeArray.length;\r\n    atRowIndex |= 0;\r\n\r\n    while (atRowIndex < n) {\r\n      this.treeArray[atRowIndex] += byRowHeight;\r\n      atRowIndex |= atRowIndex + 1;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Range Sum query from 1 to the rowIndex\r\n   */\r\n  query(atIndex: number): number {\r\n    if (!this.treeArray.length) {\r\n      throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\r\n    }\r\n\r\n    let sum = 0;\r\n    atIndex |= 0;\r\n\r\n    while (atIndex >= 0) {\r\n      sum += this.treeArray[atIndex];\r\n      atIndex = (atIndex & (atIndex + 1)) - 1;\r\n    }\r\n\r\n    return sum;\r\n  }\r\n\r\n  /**\r\n   * Find the total height between 2 row indexes\r\n   */\r\n  queryBetween(atIndexA: number, atIndexB: number): number {\r\n    return this.query(atIndexB) - this.query(atIndexA - 1);\r\n  }\r\n\r\n  /**\r\n   * Given the ScrollY position i.e. sum, provide the rowIndex\r\n   * that is present in the current view port.\r\n   */\r\n  private calcRowIndex(sum: number): number {\r\n    if (!this.treeArray.length) return 0;\r\n\r\n    let pos = -1;\r\n    const dataLength = this.treeArray.length;\r\n\r\n    // Get the highest bit for the block size.\r\n    const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\r\n\r\n    for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\r\n      const nextPos = pos + blockSize;\r\n      if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\r\n        sum -= this.treeArray[nextPos];\r\n        pos = nextPos;\r\n      }\r\n    }\r\n\r\n    return pos + 1;\r\n  }\r\n}\r\n","/**\r\n * Converts strings from something to camel case\r\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\r\n */\r\nexport function camelCase(str: string): string {\r\n  // Replace special characters with a space\r\n  str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\r\n  // put a space before an uppercase letter\r\n  str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\r\n\r\n  // Lower case first character and some other stuff\r\n  str = str\r\n    .replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '')\r\n    .trim()\r\n    .toLowerCase();\r\n\r\n  // uppercase characters preceded by a space or number\r\n  str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function (a, b, c) {\r\n    return b.trim() + c.toUpperCase();\r\n  });\r\n\r\n  return str;\r\n}\r\n\r\n/**\r\n * Converts strings from camel case to words\r\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\r\n */\r\nexport function deCamelCase(str: string): string {\r\n  return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\r\n}\r\n","import { camelCase } from './camel-case';\r\n\r\nconst cache: any = {};\r\nconst testStyle: any = typeof document !== 'undefined' ? document.createElement('div').style : undefined;\r\n\r\n// Get Prefix\r\n// http://davidwalsh.name/vendor-prefix\r\nconst prefix = (function () {\r\n  const styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;\r\n  const match =\r\n    typeof styles !== 'undefined'\r\n      ? Array.prototype.slice\r\n        .call(styles)\r\n        .join('')\r\n        .match(/-(moz|webkit|ms)-/)\r\n      : null;\r\n  const pre = match !== null ? match[1] : undefined;\r\n  // tslint:disable-next-line: tsr-detect-non-literal-regexp\r\n  const dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))?.[1] : undefined;\r\n\r\n  return dom\r\n    ? {\r\n      dom,\r\n      lowercase: pre,\r\n      css: `-${pre}-`,\r\n      js: pre ? pre[0].toUpperCase() + pre.substr(1) : ''\r\n    }\r\n    : undefined;\r\n\r\n})();\r\n\r\nexport function getVendorPrefixedName(property: string) {\r\n  const name = camelCase(property);\r\n\r\n  if (!cache[name]) {\r\n    if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {\r\n      cache[name] = prefix.css + property;\r\n    } else if (testStyle[property] !== undefined) {\r\n      cache[name] = property;\r\n    }\r\n  }\r\n\r\n  return cache[name];\r\n}\r\n","import { getVendorPrefixedName } from './prefixes';\r\nimport { camelCase } from './camel-case';\r\n\r\n// browser detection and prefixing tools\r\nconst transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;\r\nconst backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;\r\nconst hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;\r\nconst hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;\r\nconst ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';\r\nconst isSafari = /Safari\\//.test(ua) && !/Chrome\\//.test(ua);\r\n\r\nexport function translateXY(styles: any, x: number, y: number) {\r\n  if (typeof transform !== 'undefined' && hasCSSTransforms) {\r\n    if (!isSafari && hasCSS3DTransforms) {\r\n      styles[transform] = `translate3d(${x}px, ${y}px, 0)`;\r\n      styles[backfaceVisibility] = 'hidden';\r\n    } else {\r\n      styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;\r\n    }\r\n  } else {\r\n    styles.top = `${y}px`;\r\n    styles.left = `${x}px`;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dc-scroller',\r\n  templateUrl: './scroller.component.html',\r\n  host: {\r\n    class: 'datatable-scroll'\r\n  },\r\n})\r\nexport class ScrollerComponent implements OnInit, OnDestroy {\r\n  @Input() scrollbarV: boolean = false;\r\n  @Input() scrollbarH: boolean = false;\r\n\r\n  @HostBinding('style.height.px')\r\n  @Input()\r\n  scrollHeight: number | undefined;\r\n\r\n  @HostBinding('style.width.px')\r\n  @Input()\r\n  scrollWidth: number;\r\n\r\n  @Output() scroll: EventEmitter<any> = new EventEmitter();\r\n\r\n  scrollYPos: number = 0;\r\n  scrollXPos: number = 0;\r\n  prevScrollYPos: number = 0;\r\n  prevScrollXPos: number = 0;\r\n  element: any;\r\n  parentElement: any;\r\n  onScrollListener: any;\r\n\r\n  private _scrollEventListener: any = null;\r\n\r\n  constructor(private ngZone: NgZone, element: ElementRef, private renderer: Renderer2) {\r\n    this.element = element.nativeElement;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    // manual bind so we don't always listen\r\n    if (this.scrollbarV || this.scrollbarH) {\r\n      const renderer = this.renderer;\r\n      this.parentElement = renderer.parentNode(renderer.parentNode(this.element));\r\n      this._scrollEventListener = this.onScrolled.bind(this);\r\n      this.parentElement.addEventListener('scroll', this._scrollEventListener);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this._scrollEventListener) {\r\n      this.parentElement.removeEventListener('scroll', this._scrollEventListener);\r\n      this._scrollEventListener = null;\r\n    }\r\n  }\r\n\r\n  setOffset(offsetY: number): void {\r\n    if (this.parentElement) {\r\n      this.parentElement.scrollTop = offsetY;\r\n    }\r\n  }\r\n\r\n  onScrolled(event: MouseEvent): void {\r\n    const dom: Element = <Element>event.currentTarget;\r\n    requestAnimationFrame(() => {\r\n      this.scrollYPos = dom.scrollTop;\r\n      this.scrollXPos = dom.scrollLeft;\r\n      this.updateOffset();\r\n    });\r\n  }\r\n\r\n  updateOffset(): void {\r\n    let direction: string = '';\r\n\r\n    if (this.scrollYPos < this.prevScrollYPos) {\r\n      direction = 'down';\r\n    } else if (this.scrollYPos > this.prevScrollYPos) {\r\n      direction = 'up';\r\n    }\r\n\r\n    this.scroll.emit({\r\n      direction,\r\n      scrollYPos: this.scrollYPos,\r\n      scrollXPos: this.scrollXPos\r\n    });\r\n\r\n    this.prevScrollYPos = this.scrollYPos;\r\n    this.prevScrollXPos = this.scrollXPos;\r\n  }\r\n\r\n}\r\n","<ng-content></ng-content> ","export function defaultSumFunc(cells: any[]): any {\r\n    const cellsWithValues = cells.filter(cell => !!cell);\r\n\r\n    if (!cellsWithValues.length) {\r\n        return null;\r\n    }\r\n    if (cellsWithValues.some(cell => typeof cell !== 'number')) {\r\n        return null;\r\n    }\r\n\r\n    return cellsWithValues.reduce((res, cell) => res + cell);\r\n}\r\n\r\nexport function noopSumFunc(cells: any[]): void | null {\r\n    return null;\r\n}","export enum Keys {\r\n  up = 38,\r\n  down = 40,\r\n  return = 13,\r\n  escape = 27,\r\n  left = 37,\r\n  right = 39\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n/**\r\n * Gets the width of the scrollbar.  Nesc for windows\r\n * http://stackoverflow.com/a/13382873/888165\r\n */\r\n@Injectable()\r\nexport class ScrollbarHelper {\r\n  width: number = this.getWidth();\r\n\r\n  constructor(@Inject(DOCUMENT) private document: any) {}\r\n\r\n  getWidth(): number {\r\n    const outer = this.document.createElement('div');\r\n    outer.style.visibility = 'hidden';\r\n    outer.style.width = '100px';\r\n    outer.style.msOverflowStyle = 'scrollbar';\r\n    this.document.body.appendChild(outer);\r\n\r\n    const widthNoScroll = outer.offsetWidth;\r\n    outer.style.overflow = 'scroll';\r\n\r\n    const inner = this.document.createElement('div');\r\n    inner.style.width = '100%';\r\n    outer.appendChild(inner);\r\n\r\n    const widthWithScroll = inner.offsetWidth;\r\n    outer.parentNode.removeChild(outer);\r\n\r\n    return widthNoScroll - widthWithScroll;\r\n  }\r\n}\r\n","export enum SortDirection {\r\n    asc = 'asc',\r\n    desc = 'desc'\r\n  }\r\n  ","import { AfterContentInit, AfterViewInit, Component, ContentChild, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\r\nimport { DCService } from '../../../services';\r\nimport { validationRules } from '../../../models/dc-models.model';\r\n\r\n\r\n@Component({\r\n  selector: 'dcm-dropdown',\r\n  templateUrl: './dc-dropdown.component.html'\r\n})\r\nexport class DcDropdownComponent implements AfterViewInit{\r\n\r\n  @Input() placeholder: string | null = \"Select\"\r\n  @Input() value: string | null = null\r\n  @Input() closeOnOutsideClick: boolean = true\r\n  @Input() disabled: boolean | null = null\r\n  @Input() readonly?: boolean = false\r\n  @Input() visible: boolean = true\r\n  @Input() dcClass: string = ''\r\n  @Input() isRequired?:boolean = false\r\n  @Input() validationMessage?:string = ''\r\n  @Input() contentPosition: 'below' | 'above'\r\n  @Input() width: string | null = null;\r\n  @Input() height: string | null = null;\r\n  \r\n  @Output() dcClick = new EventEmitter<Object>\r\n  @Output() dcExpanding = new EventEmitter<Object>\r\n  @Output() dcCollapsing = new EventEmitter<Object>\r\n  @Output() dcFocusOut = new EventEmitter<Object>();\r\n  @Output() dcValidating = new EventEmitter<Object>();\r\n  @Output() dcValidated = new EventEmitter<Object>();\r\n  @Output() dcMouseEnter = new EventEmitter<Object>()\r\n  isMenuShow: boolean = false\r\n  id!: string\r\n  clickedOnce:boolean=false\r\n  get validationRule(){\r\n    return this.isRequired ?  [{type:'required',message:this.validationMessage}] as validationRules[] : null\r\n  }\r\n\r\n _isValid:boolean = false\r\n  get isValid(){\r\n    return this.isRequired == true ? this._isValid : true\r\n  }\r\n\r\n  set isValid(val:boolean){\r\n    this._isValid = val\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef, private dcService: DCService) {\r\n    this.id = this.dcService.generateUniqueId()\r\n  }\r\n  ngAfterViewInit(): void {\r\n    this.checkValidity(this.value)\r\n  }\r\n\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: MouseEvent) {\r\n    if (this.closeOnOutsideClick) {\r\n      const dropdownElement = this.elementRef.nativeElement;\r\n      const clickedInsideDropdown = dropdownElement.contains(event.target as Node);\r\n      if (!clickedInsideDropdown) {\r\n        this.closeDropdown();\r\n      }\r\n    }\r\n  }\r\n\r\n  focusInput() {\r\n    const inputElement = document.getElementById(this.id);\r\n    if (inputElement) {\r\n      inputElement.focus();\r\n    }\r\n  }\r\n\r\n  onDropdownFocusIn() {\r\n    this.dcClick.emit({ nativeElemet: this.elementRef.nativeElement })\r\n    if (!this.disabled && this.isMenuShow == false) {\r\n      this.dcExpanding.emit({ nativeElemet: this.elementRef.nativeElement })\r\n      this.isMenuShow = true\r\n    }\r\n  }\r\n\r\n  public closeDropdown() {\r\n    if(this.isMenuShow == true){\r\n      this.dcCollapsing.emit({ nativeElemet: this.elementRef.nativeElement })\r\n      this.checkValidity(this.value)\r\n      this.isMenuShow = false\r\n    }\r\n  }\r\n\r\n  onFocusOut(e:any){\r\n    setTimeout(()=>{\r\n      this.dcFocusOut.emit(e)\r\n      this.clickedOnce = true\r\n    },100)\r\n    \r\n  }\r\n\r\n  checkValidity(value:string | null){\r\n    if(this.isRequired){\r\n      if(value == '' || value ==null){\r\n        this.isValid = false\r\n      }else{\r\n        this.isValid = true\r\n      }\r\n    }else{\r\n      this.isValid = true\r\n    }\r\n  }\r\n}\r\n","<div (mouseenter)=\"dcMouseEnter.emit($event)\" [id]=\"id\" [class]=\"dcClass\" [ngClass]=\"{ 'hidden' : !visible, 'dcm-dropdown': true , 'invalid':(!isValid && clickedOnce)}\">\r\n\r\n    <span [class]=\"'dcm-dropdown-content ' + contentPosition\" *ngIf=\"isMenuShow\">\r\n        <ng-content></ng-content>\r\n    </span>\r\n    \r\n    <div *ngIf=\"(!isValid && clickedOnce)\" class=\"dca-invalid-icon\">\r\n        <dca-icon icon=\"circle-exclamation\"></dca-icon>\r\n        <span [class]=\"'validation-message ' + contentPosition\">{{validationMessage}}</span>\r\n    </div>\r\n\r\n    <dca-input [width]=\"width\" [height]=\"height\" (dcFocusOut)=\"onFocusOut($event)\" [disabled]=\"disabled\" [readonly]=\"readonly\" [value]=\"value\"\r\n        [placeholder]=\"placeholder\" [inputId]=\"id\" (dcFocusIn)=\"onDropdownFocusIn()\"\r\n        [ngClass]=\"{'dcm-dropdown-input':true}\" [dcClass]=\"dcClass\">\r\n        <dca-icon (dcClick)=\"isMenuShow ? closeDropdown() : focusInput()\" [ngClass]=\"{'disable': disabled}\"\r\n            dcClass=\"dcm-dropdown-icon\" [icon]=\"isMenuShow==true ? 'chevron-left' : 'chevron-down'\"></dca-icon>\r\n    </dca-input>\r\n\r\n\r\n</div>","import { AfterViewInit, Component, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { TableColumn, dataType } from '../../../../types/table-column.type';\r\nimport { DcDropdownComponent } from '../../../molecules/dc-dropdown/dc-dropdown.component';\r\nimport { validationRules } from '../../../../models/dc-models.model'\r\nimport { DCCheckboxComponent, DCInputComponent, DcTreeComponent } from '../../../atoms';\r\nimport { DCService } from '../../../../services/dc.service';\r\n\r\n@Component({\r\n  selector: 'cell-input',\r\n  templateUrl: './cell-input.component.html',\r\n  host: {\r\n    class: 'cell-input'\r\n  }\r\n})\r\nexport class CellInputComponent implements AfterViewInit{\r\n  @Input() rowIndex: number\r\n  @Input() totalRowCount: number\r\n  @Input() dataType?: dataType = 'text'\r\n  @Input() sanitizedValue: any\r\n  @Input() value: any\r\n  @Input() validationRules?: validationRules[]\r\n  @Input() isEditable?: boolean = true\r\n  @Input() column: TableColumn\r\n  @Input() isRemoved: boolean = false\r\n  @Input() row: any\r\n\r\n  @Output() onCellChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onCellValidating: EventEmitter<any> = new EventEmitter();\r\n  @Output() onCellValidated: EventEmitter<any> = new EventEmitter();\r\n\r\n  @ViewChild('treeComponent') treeComponent: DcTreeComponent\r\n  @ViewChild(DCInputComponent) dcInputComponents: DCInputComponent\r\n  @ViewChild(DcDropdownComponent) dcDropdownComponents: DcDropdownComponent\r\n  @ViewChild(DCCheckboxComponent) dcCheckboxComponents: DCCheckboxComponent\r\n\r\n  constructor(private dcService: DCService) { }\r\n  ngAfterViewInit(): void {\r\n    if (this.column.prop) {\r\n      this.dcService.checkValidationOfCell(this.row.$$$id, this.column.prop, this.isCellValid, this)\r\n    }\r\n  }\r\n\r\n  get type() {\r\n    return this.dataType != undefined ? this.dataType : 'text'\r\n  }\r\n\r\n  get readonly() {\r\n    return this.isEditable != undefined ? !this.isEditable : false\r\n  }\r\n\r\n  get isRequired() {\r\n    if (!this.column.validationRules || this.column.validationRules.length === 0) {\r\n      return false;\r\n    }\r\n\r\n    for (const rule of this.column.validationRules) {\r\n      if (rule.type === 'required') {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  get validationMessage() {\r\n    if (!this.column.validationRules || this.column.validationRules.length === 0) {\r\n      return '';\r\n    }\r\n\r\n    if (this.isRequired) {\r\n      for (const rule of this.column.validationRules) {\r\n        if (rule.type === 'required') {\r\n          return rule.message ? rule.message : '';\r\n        }\r\n      }\r\n    }\r\n\r\n    return ''\r\n  }\r\n\r\n  get processedValue() {\r\n    if (this.type == 'text' || this.type == 'number' || this.type == 'date') {\r\n      return this.value\r\n    }\r\n    else if (this.type == 'lookup') {\r\n      if (this.column.lookup && this.column.lookup.dataSource) {\r\n        if (!this.isTree) {\r\n          let val = ''\r\n          this.column.lookup.dataSource.forEach((data: any) => {\r\n            if (this.column.lookup && data[this.column.lookup.valueExp] === this.value) {\r\n              val = data[this.column.lookup.displayExp]\r\n            }\r\n          })\r\n          return val\r\n        } else {\r\n          return this.getTreeValue()\r\n        }\r\n      }\r\n    } else if (this.type == 'boolean') {\r\n      if (this.value === true || this.value === false) return this.value\r\n      return null\r\n\r\n    }\r\n  }\r\n\r\n  get isTree() {\r\n    let isTreePresent = false;\r\n    this.column.lookup?.dataSource.forEach((data: any) => {\r\n      if (data.hasOwnProperty('subItems')) {\r\n        isTreePresent = true;\r\n        return;\r\n      }\r\n    });\r\n    return isTreePresent;\r\n  }\r\n\r\n  get dropdownPosition() {\r\n    if (this.rowIndex != undefined && this.totalRowCount != undefined) {\r\n      if (this.totalRowCount / 2 >= this.rowIndex) {\r\n        return 'below'\r\n      } else {\r\n        return 'above'\r\n      }\r\n    } else {\r\n      return 'below'\r\n    }\r\n  }\r\n\r\n\r\n  get isCellValid() {\r\n    if (this.type == 'date' || this.type == 'text' || this.type == 'number') {\r\n      return this.dcInputComponents?.isValid\r\n    } else if (this.type == 'lookup') {\r\n      return this.dcDropdownComponents?.isValid\r\n    }\r\n    else {\r\n      return this.dcCheckboxComponents?.isValid\r\n    }\r\n  }\r\n\r\n  get isClickedOnce() {\r\n    if (this.type == 'date' || this.type == 'text' || this.type == 'number') {\r\n      return this.dcInputComponents?.clickedOnce\r\n    } else if (this.type == 'lookup') {\r\n      return this.dcDropdownComponents?.clickedOnce\r\n    }\r\n    else {\r\n      return this.dcCheckboxComponents?.clickedOnce\r\n    }\r\n  }\r\n\r\n  clickCell(){\r\n    if (this.type == 'date' || this.type == 'text' || this.type == 'number') {\r\n      return this.dcInputComponents.clickedOnce = true\r\n    } else if (this.type == 'lookup') {\r\n      return this.dcDropdownComponents.clickedOnce = true\r\n    }\r\n    else {\r\n      return this.dcCheckboxComponents.clickedOnce = true\r\n    }\r\n  }\r\n\r\n  get notEqual() {\r\n    const canNoteBeRule = this.column.validationRules?.find((rule) => rule.type === 'canNotBe');\r\n    return canNoteBeRule && (typeof canNoteBeRule.value === 'boolean') ? canNoteBeRule.value : null;\r\n  }\r\n\r\n\r\n  optionSelect(e: any, dropdown: DcDropdownComponent) {\r\n    if (this.column.lookup) {\r\n      this.value = e.listItem[this.column.lookup?.valueExp]\r\n      dropdown.value = this.processedValue\r\n      this.onCellChange.emit({ nativeElement: e.nativeElement, newValue: this.value })\r\n    }\r\n    dropdown.closeDropdown()\r\n    if (this.column.prop) {\r\n      this.dcService.checkValidationOfCell(this.row.$$$id, this.column.prop, this.isCellValid, this)\r\n    }\r\n  }\r\n\r\n  getTreeValue(): string {\r\n    if (this.column.lookup && this.column.lookup.dataSource) {\r\n      const data = this.column.lookup.dataSource;\r\n      const valueExp = this.column.lookup.valueExp;\r\n      const displayExp = this.column.lookup.displayExp;\r\n      const findValueInDataSource = (data: any[], value: string): string => {\r\n        let result = '';\r\n        data.forEach(item => {\r\n          if (item[valueExp] === value) {\r\n            result = item[displayExp];\r\n          } else if (item.subItems) {\r\n            const subItemResult = findValueInDataSource(item.subItems, value);\r\n            if (subItemResult !== '') {\r\n              result = subItemResult;\r\n            }\r\n          }\r\n        });\r\n        return result;\r\n      };\r\n\r\n      return findValueInDataSource(data, this.value);\r\n    }\r\n    return '';\r\n  }\r\n\r\n  onTreeClick(e: any, treeDropdown: DcDropdownComponent) {\r\n    if (!e.item.subItems && this.column.lookup) {\r\n      this.value = e.item[this.column.lookup?.valueExp]\r\n      treeDropdown.value = this.getTreeValue()\r\n      this.onCellChange.emit({ nativeElement: e.nativeElement, newValue: this.value })\r\n      treeDropdown.closeDropdown()\r\n\r\n      if (this.column.prop) {\r\n        this.dcService.checkValidationOfCell(this.row.$$$id, this.column.prop, this.isCellValid, this)\r\n      }\r\n    }\r\n  }\r\n\r\n  dcCollapsing() {\r\n    if (this.treeComponent) {\r\n      this.treeComponent.closeAllNodesExcept()\r\n    }\r\n  }\r\n\r\n  onBooleanChange(e: any) {\r\n    this.value = e.value\r\n    this.onCellChange.emit({ nativeElement: e.nativeElement, newValue: this.value })\r\n\r\n    if (this.column.prop) {\r\n      this.dcService.checkValidationOfCell(this.row.$$$id, this.column.prop, this.isCellValid, this)\r\n    }\r\n  }\r\n\r\n  dcValidated(e: any) {\r\n    this.onCellValidated.emit(e)\r\n    if (this.column.prop) {\r\n      this.dcService.checkValidationOfCell(this.row.$$$id, this.column.prop, this.isCellValid, this)\r\n    }\r\n  }\r\n}\r\n","<span class=\"cell-input-wrapper\">\r\n    <span *ngIf=\"type == 'text' || type =='number' || type == 'date'\">\r\n        <dca-input [class]=\"'cell-input ' + type\" [disabled]=\"isRemoved\" [readonly]=\"readonly\" [type]=\"type\" [dcClass]=\"'cell-input ' + type\" [validationRules]=\"validationRules\"\r\n            (dcValueChanged)=\"onCellChange.emit($event)\" [title]=\"sanitizedValue\" [value]=\"processedValue\" (dcValidating)=\"onCellValidating.emit($event)\"\r\n            (dcValidated)=\"dcValidated($event)\" [style.width.px]=\"column.width\"></dca-input>\r\n    </span>\r\n    \r\n    <span *ngIf=\"type == 'lookup'\">\r\n        <dcm-dropdown (dcCollapsing)=\"dcCollapsing()\" [contentPosition]=\"dropdownPosition\" [disabled]=\"readonly\" [isRequired]=\"isRequired\" [validationMessage]=\"validationMessage\"\r\n         [readonly]=\"true\" dcClass=\"cell-input dropdown\" [value]=\"processedValue\" #cellInputDropdown>\r\n            <dca-list *ngIf=\"!isTree\" (dcClick)=\"optionSelect($event, cellInputDropdown)\"\r\n            [displayExp]=\"column.lookup?.displayExp\" [valueExp]=\"column.lookup?.valueExp\" [dataSource]=\"column.lookup?.dataSource\"\r\n            ></dca-list>\r\n    \r\n            <dca-tree #treeComponent *ngIf=\"isTree\" [treeData]=\"this.column.lookup?.dataSource\" (dcClick)=\"onTreeClick($event, cellInputDropdown)\"> </dca-tree>\r\n        </dcm-dropdown>\r\n    </span>\r\n    \r\n    <span *ngIf=\"type == 'boolean'\" class=\"boolean\">\r\n        <dca-checkbox [notEqual]=\"notEqual\" [isRequired]=\"isRequired\" [disabled]=\"isRemoved\" (dcValueChanged)=\"onBooleanChange($event)\" [checked]=\"processedValue\"></dca-checkbox>\r\n    </span>\r\n</span>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DoCheck, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, PipeTransform, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { TreeStatus } from '../../../../types/dc-types';\r\nimport { SortDirection } from '../../../../types/sort-direction.type';\r\nimport { TableColumn } from '../../../../types/table-column.type';\r\nimport { Keys } from '../../../../utils/keys';\r\nimport { CellInputComponent } from '../../elements/cell-input/cell-input.component';\r\n\r\n@Component({\r\n  selector: 'dc-body-cell',\r\n  templateUrl: './body-cell.component.html',\r\n})\r\nexport class BodyCellComponent implements DoCheck, OnDestroy {\r\n\r\n  //#region Dev: Ergül\r\n  @Input() totalRowCount:number\r\n  @Input() changes: any\r\n  @Output() onRowRemoving: EventEmitter<any> = new EventEmitter();\r\n  @Output() onRowReversing: EventEmitter<any> = new EventEmitter();\r\n  @ViewChild (CellInputComponent) cellInputRef: CellInputComponent\r\n  cellChange(e: any) {\r\n    if (this._column && this._column.prop) {\r\n      this._row[this._column.prop] = e.newValue\r\n    }\r\n    this.onCellChange.emit({ nativeElement: e, value: e.newValue, column: this._column })\r\n  }\r\n\r\n  onCellValidating(e: any) {\r\n\r\n  }\r\n  onCellValidated(e: any) {\r\n\r\n  }\r\n\r\n  getCellState() {\r\n    if (this.changes.length > 0) {\r\n      for (const changedItem of this.changes) {\r\n        if (changedItem.key === this._row['$$$id']) {\r\n          return changedItem.type\r\n        }\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n  isEditable() {\r\n    if (this.column.isEditable === false || this.getCellState() === 'remove') {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n  \r\n\r\n  //#endregion\r\n\r\n  @Input() displayCheck: (row: any, column?: TableColumn, value?: any) => boolean;\r\n\r\n  @Input() set group(group: any) {\r\n    this._group = group;\r\n    this.cellContext.group = group;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get group() {\r\n    return this._group;\r\n  }\r\n\r\n  @Input() set rowHeight(val: number) {\r\n    this._rowHeight = val;\r\n    this.cellContext.rowHeight = val;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get rowHeight() {\r\n    return this._rowHeight;\r\n  }\r\n\r\n  @Input() set isSelected(val: boolean) {\r\n    this._isSelected = val;\r\n    this.cellContext.isSelected = val;\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get isSelected(): boolean {\r\n    return this._isSelected;\r\n  }\r\n\r\n  @Input() set expanded(val: boolean) {\r\n    this._expanded = val;\r\n    this.cellContext.expanded = val;\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get expanded(): boolean {\r\n    return this._expanded;\r\n  }\r\n\r\n  @Input() set rowIndex(val: number) {\r\n    this._rowIndex = val;\r\n    this.cellContext.rowIndex = val;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get rowIndex(): number {\r\n    return this._rowIndex;\r\n  }\r\n\r\n  @Input() set column(column: TableColumn) {\r\n    this._column = column;\r\n    this.cellContext.column = column;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get column(): TableColumn {\r\n    return this._column;\r\n  }\r\n\r\n  @Input() set row(row: any) {\r\n    this._row = row;\r\n    this.cellContext.row = row;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get row(): any {\r\n    return this._row;\r\n  }\r\n\r\n  @Input() set sorts(val: any[]) {\r\n    this._sorts = val;\r\n    this.calcSortDir = this.calcSortDir(val);\r\n  }\r\n\r\n  get sorts(): any[] {\r\n    return this._sorts;\r\n  }\r\n\r\n  @Input() set treeStatus(status: TreeStatus) {\r\n    if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {\r\n      this._treeStatus = 'collapsed';\r\n    } else {\r\n      this._treeStatus = status;\r\n    }\r\n    this.cellContext.treeStatus = this._treeStatus;\r\n    this.checkValueUpdates();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get treeStatus(): TreeStatus {\r\n    return this._treeStatus;\r\n  }\r\n\r\n  @Output() activate: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() treeAction: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() onCellChange: EventEmitter<any> = new EventEmitter();\r\n\r\n  @ViewChild('cellTemplate', { read: ViewContainerRef, static: true })\r\n  cellTemplate: ViewContainerRef;\r\n\r\n  @HostBinding('class')\r\n  get columnCssClasses(): any {\r\n    let cls = 'datatable-body-cell';\r\n    if (this.column.cellClass) {\r\n      if (typeof this.column.cellClass === 'string') {\r\n        cls += ' ' + this.column.cellClass;\r\n      } else if (typeof this.column.cellClass === 'function') {\r\n        const res = this.column.cellClass({\r\n          row: this.row,\r\n          group: this.group,\r\n          column: this.column,\r\n          value: this.value,\r\n          rowHeight: this.rowHeight\r\n        });\r\n\r\n        if (typeof res === 'string') {\r\n          cls += ' ' + res;\r\n        } else if (typeof res === 'object') {\r\n          const keys = Object.keys(res);\r\n          for (const k of keys) {\r\n            if (res[k] === true) {\r\n              cls += ` ${k}`;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n    if (!this.sortDir) {\r\n      cls += ' sort-active';\r\n    }\r\n    if (this.isFocused) {\r\n      cls += ' active';\r\n    }\r\n    if (this.sortDir === SortDirection.asc) {\r\n      cls += ' sort-asc';\r\n    }\r\n    if (this.sortDir === SortDirection.desc) {\r\n      cls += ' sort-desc';\r\n    }\r\n\r\n    return cls;\r\n  }\r\n\r\n  @HostBinding('style.width.px')\r\n  get width(): number | undefined {\r\n    return this.column.width;\r\n  }\r\n\r\n  @HostBinding('style.minWidth.px')\r\n  get minWidth(): number | undefined {\r\n    return this.column.minWidth;\r\n  }\r\n\r\n  @HostBinding('style.maxWidth.px')\r\n  get maxWidth(): number | undefined {\r\n    return this.column.maxWidth;\r\n  }\r\n\r\n  @HostBinding('style.height')\r\n  get height(): string | number {\r\n    const height = this.rowHeight;\r\n    if (isNaN(height)) {\r\n      return height;\r\n    }\r\n    return height + 'px';\r\n  }\r\n\r\n  sanitizedValue: any;\r\n  value: any;\r\n  sortDir: SortDirection;\r\n  isFocused = false;\r\n  onCheckboxChangeFn = this.onCheckboxChange.bind(this);\r\n  activateFn = this.activate.emit.bind(this.activate);\r\n\r\n  cellContext: any;\r\n\r\n  private _isSelected: boolean;\r\n  private _sorts: any[];\r\n  private _column: TableColumn;\r\n  private _row: any;\r\n  private _group: any;\r\n  private _rowHeight: number;\r\n  private _rowIndex: number;\r\n  private _expanded: boolean;\r\n  private _element: any;\r\n  private _treeStatus: TreeStatus;\r\n\r\n  constructor(element: ElementRef, private cd: ChangeDetectorRef) {\r\n    this.cellContext = {\r\n      onCheckboxChangeFn: this.onCheckboxChangeFn,\r\n      activateFn: this.activateFn,\r\n      row: this.row,\r\n      group: this.group,\r\n      value: this.value,\r\n      column: this.column,\r\n      rowHeight: this.rowHeight,\r\n      isSelected: this.isSelected,\r\n      rowIndex: this.rowIndex,\r\n      treeStatus: this.treeStatus,\r\n      onTreeAction: this.onTreeAction.bind(this)\r\n    };\r\n\r\n    this._element = element.nativeElement;\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    this.checkValueUpdates();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.cellTemplate) {\r\n      this.cellTemplate.clear();\r\n    }\r\n  }\r\n\r\n  checkValueUpdates(): void {\r\n    let value = '';\r\n\r\n    if (!this.row || !this.column) {\r\n      value = '';\r\n    } else {\r\n      if (typeof this.column.prop === 'undefined') {\r\n        throw new Error('TableColumnProp is undefined.');\r\n      }\r\n\r\n      const val = this.column.$$valueGetter?.(this.row, this.column.prop);\r\n\r\n      const userPipe: PipeTransform | undefined = this.column.pipe;\r\n\r\n      if (userPipe) {\r\n        value = userPipe.transform(val);\r\n      } else if (value !== undefined) {\r\n        value = val;\r\n      }\r\n    }\r\n\r\n    if (this.value !== value) {\r\n      this.value = value;\r\n      this.cellContext.value = value;\r\n      this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;\r\n      this.cd.markForCheck();\r\n    }\r\n  }\r\n\r\n  @HostListener('focus')\r\n  onFocus(): void {\r\n    this.isFocused = true;\r\n  }\r\n\r\n  @HostListener('blur')\r\n  onBlur(): void {\r\n    this.isFocused = false;\r\n  }\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event: MouseEvent): void {\r\n    this.activate.emit({\r\n      type: 'click',\r\n      event,\r\n      row: this.row,\r\n      group: this.group,\r\n      rowHeight: this.rowHeight,\r\n      column: this.column,\r\n      value: this.value,\r\n      cellElement: this._element\r\n    });\r\n  }\r\n\r\n  @HostListener('dblclick', ['$event'])\r\n  onDblClick(event: MouseEvent): void {\r\n    this.activate.emit({\r\n      type: 'dblclick',\r\n      event,\r\n      row: this.row,\r\n      group: this.group,\r\n      rowHeight: this.rowHeight,\r\n      column: this.column,\r\n      value: this.value,\r\n      cellElement: this._element\r\n    });\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    const keyCode = event.keyCode;\r\n    const isTargetCell = event.target === this._element;\r\n\r\n    const isAction =\r\n      keyCode === Keys.return ||\r\n      keyCode === Keys.down ||\r\n      keyCode === Keys.up ||\r\n      keyCode === Keys.left ||\r\n      keyCode === Keys.right;\r\n\r\n    if (isAction && isTargetCell) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      this.activate.emit({\r\n        type: 'keydown',\r\n        event,\r\n        row: this.row,\r\n        group: this.group,\r\n        rowHeight: this.rowHeight,\r\n        column: this.column,\r\n        value: this.value,\r\n        cellElement: this._element\r\n      });\r\n    }\r\n  }\r\n\r\n  onCheckboxChange(event: any): void {\r\n    this.activate.emit({\r\n      type: 'checkbox',\r\n      event,\r\n      row: this.row,\r\n      group: this.group,\r\n      rowHeight: this.rowHeight,\r\n      column: this.column,\r\n      value: this.value,\r\n      cellElement: this._element,\r\n      treeStatus: 'collapsed'\r\n    });\r\n  }\r\n\r\n  calcSortDir(sorts: any[]): any {\r\n    if (!sorts) {\r\n      return;\r\n    }\r\n\r\n    const sort = sorts.find((s: any) => {\r\n      return s.prop === this.column.prop;\r\n    });\r\n\r\n    if (sort) {\r\n      return sort.dir;\r\n    }\r\n  }\r\n\r\n  stripHtml(html: string): string {\r\n    if (!html.replace) {\r\n      return html;\r\n    }\r\n    return html.replace(/<\\/?[^>]+(>|$)/g, '');\r\n  }\r\n\r\n  onTreeAction() {\r\n    this.treeAction.emit(this.row);\r\n  }\r\n\r\n  calcLeftMargin(column: any, row: any) {\r\n    const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;\r\n    return column.isTreeColumn ? row.level * levelIndent : 0;\r\n  }\r\n\r\n\r\n}\r\n","<div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\r\n    <label *ngIf=\"column.checkboxable && (!displayCheck || displayCheck(row, column, value))\"\r\n        class=\"datatable-checkbox\">\r\n        <input type=\"checkbox\" [checked]=\"isSelected\" (click)=\"onCheckboxChange($event)\" />\r\n    </label>\r\n    <ng-container *ngIf=\"column.isTreeColumn\">\r\n        <button *ngIf=\"!column.treeToggleTemplate\" class=\"datatable-tree-button\" [disabled]=\"treeStatus === 'disabled'\"\r\n            (click)=\"onTreeAction()\">\r\n            <span>\r\n                <i *ngIf=\"treeStatus === 'loading'\" class=\"icon datatable-icon-collapse\"></i>\r\n                <i *ngIf=\"treeStatus === 'collapsed'\" class=\"icon datatable-icon-up\"></i>\r\n                <i *ngIf=\"treeStatus === 'expanded' || treeStatus === 'disabled'\" class=\"icon datatable-icon-down\"></i>\r\n            </span>\r\n        </button>\r\n        <ng-template *ngIf=\"column.treeToggleTemplate\" [ngTemplateOutlet]=\"column.treeToggleTemplate\"\r\n            [ngTemplateOutletContext]=\"{ cellContext: cellContext }\">\r\n        </ng-template>\r\n    </ng-container>\r\n\r\n    <!-- <span *ngIf=\"!column.cellTemplate\" [title]=\"sanitizedValue\" [innerHTML]=\"value\"> </span> -->\r\n    <!-- <input style=\"width: 100%; height: 100%; background-color: transparent; border: none; outline: none;\" (change)=\"cellChange($event)\" *ngIf=\"!column.cellTemplate\" [title]=\"sanitizedValue\" [value]=\"value\"> -->\r\n    <!-- <dca-input *ngIf=\"!column.cellTemplate\" [type]=\"column.dataType ?? 'text'\" dcClass=\"cell-input\"  (dcValueChanged)=\"cellChange($event)\" [title]=\"sanitizedValue\" [value]=\"value\"></dca-input> -->\r\n    <span *ngIf=\"!column.cellTemplate\">\r\n        <cell-input [column]=\"column\" [class]=\"getCellState()\" (onCellValidating)=\"onCellValidating($event)\"\r\n            (onCellValidated)=\"onCellValidated($event)\" *ngIf=\"column.prop != 'action-column'\"\r\n            (onCellChange)=\"cellChange($event)\" [isEditable]=\"isEditable()\" [validationRules]=\"column.validationRules\"\r\n            [dataType]=\"column.dataType\" [sanitizedValue]=\"sanitizedValue\" [value]=\"value\"\r\n            [style.width.px]=\"column.width\" [isRemoved]=\"getCellState() =='remove'\" [totalRowCount]=\"totalRowCount\" [rowIndex]=\"rowIndex\" [row]=\"row\"></cell-input>\r\n\r\n        <span class=\"action-column\">\r\n            <dca-icon class=\"action-icon\" *ngIf=\"column.prop == 'action-column'\"\r\n                [icon]=\"getCellState() =='remove' ? 'arrow-rotate-left' : 'trash'\"\r\n                (dcClick)=\"getCellState() =='remove' ? onRowReversing.emit($event) : onRowRemoving.emit($event)\"></dca-icon>\r\n        </span>\r\n\r\n\r\n    </span>\r\n\r\n\r\n    <ng-template #cellTemplate *ngIf=\"column.cellTemplate\" [ngTemplateOutlet]=\"column.cellTemplate\"\r\n        [ngTemplateOutletContext]=\"cellContext\">\r\n    </ng-template>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DoCheck, ElementRef, EventEmitter, HostBinding, HostListener, Input, KeyValueDiffer, KeyValueDiffers, Output, SkipSelf } from '@angular/core';\r\nimport { ScrollbarHelper } from '../../../../services/scrollbar-helper.service';\r\nimport { TreeStatus } from '../../../../types/dc-types';\r\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../../../utils/column';\r\nimport { Keys } from '../../../../utils/keys';\r\nimport { translateXY } from '../../../../utils/translate';\r\n\r\n@Component({\r\n  selector: 'dc-body-row',\r\n  templateUrl: './body-row.component.html',\r\n})\r\nexport class BodyRowComponent implements DoCheck {\r\n  @Input() totalRowCount:number\r\n\r\n  @Input() set columns(val: any[]) {\r\n    this._columns = val;\r\n    this.recalculateColumns(val);\r\n    this.buildStylesByGroup();\r\n  }\r\n\r\n  get columns(): any[] {\r\n    return this._columns;\r\n  }\r\n\r\n  @Input() set innerWidth(val: number) {\r\n    if (this._columns) {\r\n      const colByPin = columnsByPin(this._columns);\r\n      this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\r\n    }\r\n\r\n    this._innerWidth = val;\r\n    this.recalculateColumns();\r\n    this.buildStylesByGroup();\r\n  }\r\n\r\n  get innerWidth(): number {\r\n    return this._innerWidth;\r\n  }\r\n\r\n  @Input() expanded: boolean;\r\n  @Input() rowClass: any;\r\n  @Input() row: any;\r\n  @Input() group: any;\r\n  @Input() isSelected: boolean;\r\n  @Input() rowIndex: number;\r\n  @Input() displayCheck: any;\r\n  @Input() treeStatus: TreeStatus = 'collapsed';\r\n\r\n  @Input()\r\n  set offsetX(val: number) {\r\n    this._offsetX = val;\r\n    this.buildStylesByGroup();\r\n  }\r\n  get offsetX() {\r\n    return this._offsetX;\r\n  }\r\n\r\n  @HostBinding('class')\r\n  get cssClass() {\r\n    let cls = 'datatable-body-row';\r\n    if (this.isSelected) {\r\n      cls += ' active';\r\n    }\r\n    if (this.rowIndex % 2 !== 0) {\r\n      cls += ' datatable-row-odd';\r\n    }\r\n    if (this.rowIndex % 2 === 0) {\r\n      cls += ' datatable-row-even';\r\n    }\r\n\r\n    if (this.rowClass) {\r\n      const res = this.rowClass(this.row);\r\n      if (typeof res === 'string') {\r\n        cls += ` ${res}`;\r\n      } else if (typeof res === 'object') {\r\n        const keys = Object.keys(res);\r\n        for (const k of keys) {\r\n          if (res[k] === true) {\r\n            cls += ` ${k}`;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return cls;\r\n  }\r\n\r\n  @HostBinding('style.height.px')\r\n  @Input()\r\n  rowHeight: number;\r\n\r\n  @HostBinding('style.width.px')\r\n  get columnsTotalWidths(): string {\r\n    return this._columnGroupWidths.total;\r\n  }\r\n\r\n  @Output() activate: EventEmitter<any> = new EventEmitter();\r\n  @Output() treeAction: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowChange: EventEmitter<any> = new EventEmitter();\r\n\r\n  _element: any;\r\n  _columnGroupWidths: any;\r\n  _columnsByPin: any;\r\n  _offsetX: number;\r\n  _columns: any[];\r\n  _innerWidth: number;\r\n  _groupStyles: { [prop: string]: {} } = {\r\n    left: {},\r\n    center: {},\r\n    right: {}\r\n  };\r\n\r\n  private _rowDiffer: KeyValueDiffer<{}, {}>;\r\n\r\n  constructor(\r\n    private differs: KeyValueDiffers,\r\n    @SkipSelf() private scrollbarHelper: ScrollbarHelper,\r\n    private cd: ChangeDetectorRef,\r\n    element: ElementRef\r\n  ) {\r\n    this._element = element.nativeElement;\r\n    this._rowDiffer = differs.find({}).create();\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    if (this._rowDiffer.diff(this.row)) {\r\n      this.cd.markForCheck();\r\n    }\r\n  }\r\n\r\n  trackByGroups(index: number, colGroup: any): any {\r\n    return colGroup.type;\r\n  }\r\n\r\n  columnTrackingFn(index: number, column: any): any {\r\n    return column.$$id;\r\n  }\r\n\r\n  buildStylesByGroup() {\r\n    this._groupStyles['left'] = this.calcStylesByGroup('left');\r\n    this._groupStyles['center'] = this.calcStylesByGroup('center');\r\n    this._groupStyles['right'] = this.calcStylesByGroup('right');\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  calcStylesByGroup(group: string) {\r\n    const widths = this._columnGroupWidths;\r\n    const offsetX = this.offsetX;\r\n\r\n    const styles = {\r\n      width: `${widths[group]}px`\r\n    };\r\n\r\n    if (group === 'left') {\r\n      translateXY(styles, offsetX, 0);\r\n    } else if (group === 'right') {\r\n      const bodyWidth = parseInt(this.innerWidth + '', 0);\r\n      const totalDiff = widths.total - bodyWidth;\r\n      const offsetDiff = totalDiff - offsetX;\r\n      const offset = (offsetDiff + this.scrollbarHelper.width - 7) * -1;\r\n      translateXY(styles, offset, 0);\r\n    }\r\n\r\n    return styles;\r\n  }\r\n\r\n  onActivate(event: any, index: number): void {\r\n    event.cellIndex = index;\r\n    event.rowElement = this._element;\r\n    this.activate.emit(event);\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    const keyCode = event.keyCode;\r\n    const isTargetRow = event.target === this._element;\r\n\r\n    const isAction =\r\n      keyCode === Keys.return ||\r\n      keyCode === Keys.down ||\r\n      keyCode === Keys.up ||\r\n      keyCode === Keys.left ||\r\n      keyCode === Keys.right;\r\n\r\n    if (isAction && isTargetRow) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n\r\n      this.activate.emit({\r\n        type: 'keydown',\r\n        event,\r\n        row: this.row,\r\n        rowElement: this._element\r\n      });\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseenter', ['$event'])\r\n  onMouseenter(event: any): void {\r\n    this.activate.emit({\r\n      type: 'mouseenter',\r\n      event,\r\n      row: this.row,\r\n      rowElement: this._element\r\n    });\r\n  }\r\n\r\n  recalculateColumns(val: any[] = this.columns): void {\r\n    this._columns = val;\r\n    const colsByPin = columnsByPin(this._columns);\r\n    this._columnsByPin = columnsByPinArr(this._columns);\r\n    this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);\r\n  }\r\n\r\n  onTreeAction() {\r\n    this.treeAction.emit();\r\n  }\r\n\r\n  //#region Dev: Ergül\r\n  @Input() changes:any\r\n  @Output() onRowRemoving: EventEmitter<any>= new EventEmitter();\r\n  @Output() onRowReversing: EventEmitter<any> = new EventEmitter();\r\n  onCellChange(e:any){\r\n    this.onRowChange.emit({cell:e, row:this.row})\r\n  }\r\n\r\n  getRowState() {\r\n    if (this.changes.length > 0) {\r\n      for (const changedItem of this.changes) {\r\n        if (changedItem.key === this.row['$$$id']) {\r\n          return changedItem.type\r\n        }\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n  //#endregion\r\n}\r\n","<div *ngFor=\"let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups\"\r\n    class=\"datatable-row-{{ colGroup.type }} datatable-row-group\" [ngClass]=\"getRowState()\" [ngStyle]=\"_groupStyles[colGroup.type]\">\r\n    <dc-body-cell role=\"cell\" *ngFor=\"let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn\"\r\n        tabindex=\"-1\" [row]=\"row\" [group]=\"group\" [expanded]=\"expanded\" [isSelected]=\"isSelected\" [rowIndex]=\"rowIndex\"\r\n        [column]=\"column\" [rowHeight]=\"rowHeight\" [displayCheck]=\"displayCheck\" [treeStatus]=\"treeStatus\"\r\n        (activate)=\"onActivate($event, ii)\" (treeAction)=\"onTreeAction()\" (onCellChange)=\"onCellChange($event)\"\r\n        (onRowRemoving)=\"onRowRemoving.emit({nativeElement:$event,row:this.row})\"\r\n        [changes]=\"changes\" (onRowReversing)=\"onRowReversing.emit({nativeElement:$event,row:this.row})\"\r\n        [totalRowCount]=\"totalRowCount\">\r\n    </dc-body-cell>\r\n</div>","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { ISummaryColumn } from '../../../../models/dc-grid.model';\r\nimport { defaultSumFunc, noopSumFunc } from '../../../../utils/summary-row';\r\n\r\n@Component({\r\n  selector: 'dc-summary-row',\r\n  templateUrl: './summary-row.component.html',\r\n  host: {\r\n    class: 'datatable-summary-row'\r\n  }\r\n})\r\nexport class SummaryRowComponent implements OnChanges {\r\n  @Input() rows: any[];\r\n  @Input() columns: ISummaryColumn[];\r\n\r\n  @Input() rowHeight: number;\r\n  @Input() offsetX: number;\r\n  @Input() innerWidth: number;\r\n\r\n  _internalColumns: ISummaryColumn[];\r\n  summaryRow: any = {};\r\n\r\n  ngOnChanges() {\r\n    if (!this.columns || !this.rows) {\r\n      return;\r\n    }\r\n    this.updateInternalColumns();\r\n    this.updateValues();\r\n  }\r\n\r\n  private updateInternalColumns() {\r\n    this._internalColumns = this.columns.map(col => ({\r\n      ...col,\r\n      cellTemplate: col.summaryTemplate\r\n    }));\r\n  }\r\n\r\n  private updateValues() {\r\n    this.summaryRow = {};\r\n\r\n    this.columns\r\n      .filter(col => !col.summaryTemplate)\r\n      .forEach(col => {\r\n        const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);\r\n        const sumFunc = this.getSummaryFunction(col);\r\n\r\n        this.summaryRow[col.prop] = col.pipe\r\n          ? col.pipe.transform(sumFunc(cellsFromSingleColumn))\r\n          : sumFunc(cellsFromSingleColumn);\r\n      });\r\n  }\r\n\r\n  private getSummaryFunction(column: ISummaryColumn): (a: any[]) => any {\r\n    if (column.summaryFunc === undefined) {\r\n      return defaultSumFunc;\r\n    } else if (column.summaryFunc === null) {\r\n      return noopSumFunc;\r\n    } else {\r\n      return column.summaryFunc;\r\n    }\r\n  }\r\n}\r\n","<dc-body-row\r\n*ngIf=\"summaryRow && _internalColumns\"\r\ntabindex=\"-1\"\r\n[innerWidth]=\"innerWidth\"\r\n[offsetX]=\"offsetX\"\r\n[columns]=\"_internalColumns\"\r\n[rowHeight]=\"rowHeight\"\r\n[row]=\"summaryRow\"\r\n[rowIndex]=\"-1\"\r\n>\r\n</dc-body-row>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DoCheck, EventEmitter, HostListener, Input, KeyValueDiffer, KeyValueDiffers, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dc-body-row-wrapper',\r\n  templateUrl: './body-row-wrapper.component.html',\r\n  host: {\r\n    class: 'datatable-row-wrapper'\r\n  }\r\n})\r\nexport class BodyRowWrapperComponent implements DoCheck {\r\n  @Input() innerWidth: number;\r\n  @Input() rowDetail: any;\r\n  @Input() groupHeader: any;\r\n  @Input() offsetX: number;\r\n  @Input() detailRowHeight: any;\r\n  @Input() row: any;\r\n  @Input() groupedRows: any;\r\n  @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\r\n\r\n  @Input() set rowIndex(val: number) {\r\n    this._rowIndex = val;\r\n    this.rowContext.rowIndex = val;\r\n    this.groupContext.rowIndex = val;\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get rowIndex(): number {\r\n    return this._rowIndex;\r\n  }\r\n\r\n  @Input() set expanded(val: boolean) {\r\n    this._expanded = val;\r\n    this.groupContext.expanded = val;\r\n    this.rowContext.expanded = val;\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get expanded(): boolean {\r\n    return this._expanded;\r\n  }\r\n\r\n  groupContext: any;\r\n  rowContext: any;\r\n\r\n  private rowDiffer: KeyValueDiffer<{}, {}>;\r\n  private _expanded: boolean = false;\r\n  private _rowIndex: number;\r\n\r\n  constructor(private cd: ChangeDetectorRef, private differs: KeyValueDiffers) {\r\n    this.groupContext = {\r\n      group: this.row,\r\n      expanded: this.expanded,\r\n      rowIndex: this.rowIndex\r\n    };\r\n\r\n    this.rowContext = {\r\n      row: this.row,\r\n      expanded: this.expanded,\r\n      rowIndex: this.rowIndex\r\n    };\r\n\r\n    this.rowDiffer = differs.find({}).create();\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    if (this.rowDiffer.diff(this.row)) {\r\n      this.rowContext.row = this.row;\r\n      this.groupContext.group = this.row;\r\n      this.cd.markForCheck();\r\n    }\r\n  }\r\n\r\n  @HostListener('contextmenu', ['$event'])\r\n  onContextmenu($event: MouseEvent): void {\r\n    this.rowContextmenu.emit({ event: $event, row: this.row });\r\n  }\r\n\r\n  getGroupHeaderStyle(): any {\r\n    const styles: any = {};\r\n\r\n    styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';\r\n    styles['backface-visibility'] = 'hidden';\r\n    styles['width'] = this.innerWidth;\r\n\r\n    return styles;\r\n  }\r\n}\r\n","<div *ngIf=\"groupHeader && groupHeader.template\" class=\"datatable-group-header\" [ngStyle]=\"getGroupHeaderStyle()\">\r\n    <ng-template *ngIf=\"groupHeader && groupHeader.template\" [ngTemplateOutlet]=\"groupHeader.template\"\r\n        [ngTemplateOutletContext]=\"groupContext\">\r\n    </ng-template>\r\n</div>\r\n<ng-content *ngIf=\"(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template\">\r\n</ng-content>\r\n<div *ngIf=\"rowDetail && rowDetail.template && expanded\" [style.height.px]=\"detailRowHeight\"\r\n    class=\"datatable-row-detail\">\r\n    <ng-template *ngIf=\"rowDetail && rowDetail.template\" [ngTemplateOutlet]=\"rowDetail.template\"\r\n        [ngTemplateOutletContext]=\"rowContext\">\r\n    </ng-template>\r\n</div>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dc-progress-bar',\r\n  templateUrl: './progress-bar.component.html',\r\n})\r\nexport class ProgressBarComponent {\r\n\r\n}\r\n","<div class=\"progress-linear\" role=\"progressbar\">\r\n    <div class=\"container\">\r\n        <div class=\"bar\"></div>\r\n    </div>\r\n</div>","export enum SelectionType {\r\n    single = 'single',\r\n    multi = 'multi',\r\n    multiClick = 'multiClick',\r\n    cell = 'cell',\r\n    checkbox = 'checkbox'\r\n  }\r\n  ","export function selectRows(selected: any[], row: any, comparefn: any) {\r\n  const selectedIndex = comparefn(row, selected);\r\n\r\n  if (selectedIndex > -1) {\r\n    selected.splice(selectedIndex, 1);\r\n  } else {\r\n    selected.push(row);\r\n  }\r\n\r\n  return selected;\r\n}\r\n\r\nexport function selectRowsBetween(\r\n  selected: any[],\r\n  rows: any[],\r\n  index: number,\r\n  prevIndex: number,\r\n  comparefn: any\r\n): any[] {\r\n  const reverse = index < prevIndex;\r\n\r\n  for (let i = 0; i < rows.length; i++) {\r\n    const row = rows[i];\r\n    const greater = i >= prevIndex && i <= index;\r\n    const lesser = i <= prevIndex && i >= index;\r\n\r\n    let range = { start: 0, end: 0 };\r\n    if (reverse) {\r\n      range = {\r\n        start: index,\r\n        end: prevIndex\r\n      };\r\n    } else {\r\n      range = {\r\n        start: prevIndex,\r\n        end: index + 1\r\n      };\r\n    }\r\n\r\n    if ((reverse && lesser) || (!reverse && greater)) {\r\n      // if in the positive range to be added to `selected`, and\r\n      // not already in the selected array, add it\r\n      if (i >= range.start && i <= range.end) {\r\n        selected.push(row);\r\n      }\r\n    }\r\n  }\r\n\r\n  return selected;\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Model } from '../../../../models/dc-grid.model';\r\nimport { SelectionType } from '../../../../types/selection.type';\r\nimport { Keys } from '../../../../utils/keys';\r\nimport { selectRowsBetween, selectRows } from '../../../../utils/selection';\r\n\r\n@Component({\r\n  selector: 'dc-selection',\r\n  templateUrl: './selection.component.html',\r\n})\r\nexport class SelectionComponent {\r\n  @Input() rows: any[];\r\n  @Input() selected: any[];\r\n  @Input() selectEnabled: boolean;\r\n  @Input() selectionType: SelectionType;\r\n  @Input() rowIdentity: any;\r\n  @Input() selectCheck: any;\r\n\r\n  @Output() activate: EventEmitter<any> = new EventEmitter();\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n\r\n  prevIndex: number;\r\n\r\n  selectRow(event: KeyboardEvent | MouseEvent, index: number, row: any): void {\r\n    if (!this.selectEnabled) return;\r\n\r\n    const chkbox = this.selectionType === SelectionType.checkbox;\r\n    const multi = this.selectionType === SelectionType.multi;\r\n    const multiClick = this.selectionType === SelectionType.multiClick;\r\n    let selected: any[] = [];\r\n\r\n    if (multi || chkbox || multiClick) {\r\n      if (event.shiftKey) {\r\n        selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));\r\n      } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {\r\n        selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));\r\n      } else {\r\n        selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\r\n      }\r\n    } else {\r\n      selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\r\n    }\r\n\r\n    if (typeof this.selectCheck === 'function') {\r\n      selected = selected.filter(this.selectCheck.bind(this));\r\n    }\r\n\r\n    this.selected.splice(0, this.selected.length);\r\n    this.selected.push(...selected);\r\n\r\n    this.prevIndex = index;\r\n\r\n    this.select.emit({\r\n      selected\r\n    });\r\n  }\r\n\r\n  onActivate(model: Model, index: number): void {\r\n    const { type, event, row } = model;\r\n    const chkbox = this.selectionType === SelectionType.checkbox;\r\n    const select = (!chkbox && (type === 'click' || type === 'dblclick')) || (chkbox && type === 'checkbox');\r\n\r\n    if (select) {\r\n      this.selectRow(event, index, row);\r\n    } else if (type === 'keydown') {\r\n      if ((<KeyboardEvent>event).keyCode === Keys.return) {\r\n        this.selectRow(event, index, row);\r\n      } else {\r\n        this.onKeyboardFocus(model);\r\n      }\r\n    }\r\n    this.activate.emit(model);\r\n  }\r\n\r\n  onKeyboardFocus(model: Model): void {\r\n    const { keyCode } = <KeyboardEvent>model.event;\r\n    const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;\r\n\r\n    if (shouldFocus) {\r\n      const isCellSelection = this.selectionType === SelectionType.cell;\r\n\r\n      if (!model.cellElement || !isCellSelection) {\r\n        this.focusRow(model.rowElement, keyCode);\r\n      } else if (isCellSelection) {\r\n        this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);\r\n      }\r\n    }\r\n  }\r\n\r\n  focusRow(rowElement: any, keyCode: number): void {\r\n    const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\r\n    if (nextRowElement) nextRowElement.focus();\r\n  }\r\n\r\n  getPrevNextRow(rowElement: any, keyCode: number): any {\r\n    const parentElement = rowElement.parentElement;\r\n\r\n    if (parentElement) {\r\n      let focusElement: HTMLElement | null = null;\r\n      if (keyCode === Keys.up) {\r\n        focusElement = parentElement.previousElementSibling;\r\n      } else if (keyCode === Keys.down) {\r\n        focusElement = parentElement.nextElementSibling;\r\n      }\r\n\r\n      if (focusElement && focusElement.children.length) {\r\n        return focusElement.children[0];\r\n      }\r\n    }\r\n  }\r\n\r\n  focusCell(cellElement: any, rowElement: any, keyCode: number, cellIndex: number): void {\r\n    let nextCellElement: HTMLElement | null = null;\r\n\r\n    if (keyCode === Keys.left) {\r\n      nextCellElement = cellElement.previousElementSibling;\r\n    } else if (keyCode === Keys.right) {\r\n      nextCellElement = cellElement.nextElementSibling;\r\n    } else if (keyCode === Keys.up || keyCode === Keys.down) {\r\n      const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\r\n      if (nextRowElement) {\r\n        const children = nextRowElement.getElementsByClassName('datatable-body-cell');\r\n        if (children.length) nextCellElement = children[cellIndex];\r\n      }\r\n    }\r\n\r\n    if (nextCellElement) nextCellElement.focus();\r\n  }\r\n\r\n  getRowSelected(row: any): boolean {\r\n    return this.getRowSelectedIdx(row, this.selected) > -1;\r\n  }\r\n\r\n  getRowSelectedIdx(row: any, selected: any[]): number {\r\n    if (!selected || !selected.length) return -1;\r\n\r\n    const rowId = this.rowIdentity(row);\r\n    return selected.findIndex(r => {\r\n      const id = this.rowIdentity(r);\r\n      return id === rowId;\r\n    });\r\n  }\r\n}\r\n","<ng-content></ng-content>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { SelectionType } from '../../../../types/selection.type';\r\nimport { columnsByPin, columnGroupWidths } from '../../../../utils/column';\r\nimport { RowHeightCache } from '../../../../utils/row-height-cache';\r\nimport { translateXY } from '../../../../utils/translate';\r\nimport { ScrollerComponent } from '../scroller/scroller.component';\r\n\r\n\r\n@Component({\r\n  selector: 'dc-body',\r\n  templateUrl: './body.component.html',\r\n  host: {\r\n    class: 'datatable-body'\r\n  }\r\n})\r\nexport class BodyComponent implements OnInit, OnDestroy{\r\n  @Input() scrollbarV: boolean;\r\n  @Input() scrollbarH: boolean;\r\n  @Input() loadingIndicator: boolean;\r\n  @Input() externalPaging: boolean;\r\n  @Input() rowHeight: number | 'auto' | ((row?: any) => number);\r\n  @Input() offsetX: number;\r\n  @Input() emptyMessage: string;\r\n  @Input() selectionType: SelectionType;\r\n  @Input() selected: any[] = [];\r\n  @Input() rowIdentity: any;\r\n  @Input() rowDetail: any;\r\n  @Input() groupHeader: any;\r\n  @Input() selectCheck: any;\r\n  @Input() displayCheck: any;\r\n  @Input() trackByProp: string;\r\n  @Input() rowClass: any;\r\n  @Input() groupedRows: any;\r\n  @Input() groupExpansionDefault: boolean;\r\n  @Input() innerWidth: number;\r\n  @Input() groupRowsBy: string;\r\n  @Input() virtualization: boolean;\r\n  @Input() summaryRow: boolean;\r\n  @Input() summaryPosition: string;\r\n  @Input() summaryHeight: number;\r\n\r\n  //#region Dev: Ergül\r\n  @Input() mode: 'batch' | 'popup' | 'row'\r\n  @Input() changes:any = []\r\n  @Output() onRowReversing: EventEmitter<any> =new EventEmitter();\r\n  @Output() onRowChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onRowRemoving: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n\r\n \r\n\r\n\r\n  //#endregion\r\n\r\n  @Input() set pageSize(val: number) {\r\n    this._pageSize = val;\r\n    this.recalcLayout();\r\n  }\r\n\r\n  get pageSize(): number {\r\n    return this._pageSize;\r\n  }\r\n\r\n  @Input() set rows(val: any[]) {\r\n    this._rows = val;\r\n    this.recalcLayout();\r\n  }\r\n\r\n  get rows(): any[] {\r\n    return this._rows;\r\n  }\r\n\r\n  @Input() set columns(val: any[]) {\r\n    this._columns = val;\r\n    const colsByPin = columnsByPin(val);\r\n    this.columnGroupWidths = columnGroupWidths(colsByPin, val);\r\n  }\r\n\r\n  get columns(): any[] {\r\n    return this._columns;\r\n  }\r\n\r\n  @Input() set offset(val: number) {\r\n    this._offset = val;\r\n    if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) this.recalcLayout();\r\n  }\r\n\r\n  get offset(): number {\r\n    return this._offset;\r\n  }\r\n\r\n  @Input() set rowCount(val: number) {\r\n    this._rowCount = val;\r\n    this.recalcLayout();\r\n  }\r\n\r\n  get rowCount(): number {\r\n    return this._rowCount;\r\n  }\r\n\r\n  @HostBinding('style.width')\r\n  get bodyWidth(): string {\r\n    if (this.scrollbarH) {\r\n      return this.innerWidth + 'px';\r\n    } else {\r\n      return '100%';\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  @HostBinding('style.height')\r\n  set bodyHeight(val) {\r\n    if (this.scrollbarV) {\r\n      this._bodyHeight = val + 'px';\r\n    } else {\r\n      this._bodyHeight = 'auto';\r\n    }\r\n\r\n    this.recalcLayout();\r\n  }\r\n\r\n  get bodyHeight() {\r\n    return this._bodyHeight;\r\n  }\r\n\r\n  @Output() scroll: EventEmitter<any> = new EventEmitter();\r\n  @Output() page: EventEmitter<any> = new EventEmitter();\r\n  @Output() activate: EventEmitter<any> = new EventEmitter();\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n  @Output() detailToggle: EventEmitter<any> = new EventEmitter();\r\n  @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\r\n  @Output() treeAction: EventEmitter<any> = new EventEmitter();\r\n\r\n  @ViewChild(ScrollerComponent) scroller: any;\r\n\r\n  /**\r\n   * Returns if selection is enabled.\r\n   */\r\n  get selectEnabled(): boolean {\r\n    return !!this.selectionType;\r\n  }\r\n\r\n  /**\r\n   * Property that would calculate the height of scroll bar\r\n   * based on the row heights cache for virtual scroll and virtualization. Other scenarios\r\n   * calculate scroll height automatically (as height will be undefined).\r\n   */\r\n  get scrollHeight(): number | undefined {\r\n    if (this.scrollbarV && this.virtualization && this.rowCount) {\r\n      return this.rowHeightsCache.query(this.rowCount - 1);\r\n    }\r\n    // avoid TS7030: Not all code paths return a value.\r\n    return undefined;\r\n  }\r\n\r\n  rowHeightsCache: RowHeightCache = new RowHeightCache();\r\n  temp: any[] = [];\r\n  offsetY = 0;\r\n  indexes: any = {};\r\n  columnGroupWidths: any;\r\n  columnGroupWidthsWithoutGroup: any;\r\n  rowTrackingFn: any;\r\n  listener: any;\r\n  rowIndexes: any = new WeakMap<any, string>();\r\n  rowExpansions: any[] = [];\r\n\r\n  _rows: any[];\r\n  _bodyHeight: any;\r\n  _columns: any[];\r\n  _rowCount: number;\r\n  _offset: number;\r\n  _pageSize: number;\r\n\r\n  /**\r\n   * Creates an instance of DataTableBodyComponent.\r\n   */\r\n  constructor(private cd: ChangeDetectorRef) {\r\n    // declare fn here so we can get access to the `this` property\r\n    this.rowTrackingFn = (index: number, row: any): any => {\r\n      const idx = this.getRowIndex(row);\r\n      if (this.trackByProp) {\r\n        return row[this.trackByProp];\r\n      } else {\r\n        return idx;\r\n      }\r\n    };\r\n  }\r\n\r\n\r\n  /**\r\n   * Called after the constructor, initializing input properties\r\n   */\r\n  ngOnInit(): void {\r\n    if (this.rowDetail) {\r\n      this.listener = this.rowDetail.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\r\n        if (type === 'row') {\r\n          this.toggleRowExpansion(value);\r\n        }\r\n        if (type === 'all') {\r\n          this.toggleAllRows(value);\r\n        }\r\n\r\n        // Refresh rows after toggle\r\n        // Fixes #883\r\n        this.updateIndexes();\r\n        this.updateRows();\r\n        this.cd.markForCheck();\r\n      });\r\n    }\r\n\r\n    if (this.groupHeader) {\r\n      this.listener = this.groupHeader.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\r\n        if (type === 'group') {\r\n          this.toggleRowExpansion(value);\r\n        }\r\n        if (type === 'all') {\r\n          this.toggleAllRows(value);\r\n        }\r\n\r\n        // Refresh rows after toggle\r\n        // Fixes #883\r\n        this.updateIndexes();\r\n        this.updateRows();\r\n        this.cd.markForCheck();\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Called once, before the instance is destroyed.\r\n   */\r\n  ngOnDestroy(): void {\r\n    if (this.rowDetail || this.groupHeader) {\r\n      this.listener.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Updates the Y offset given a new offset.\r\n   */\r\n  updateOffsetY(offset?: number): void {\r\n    // scroller is missing on empty table\r\n    if (!this.scroller) {\r\n      return;\r\n    }\r\n\r\n    if (this.scrollbarV && this.virtualization && offset) {\r\n      // First get the row Index that we need to move to.\r\n      const rowIndex = this.pageSize * offset;\r\n      offset = this.rowHeightsCache.query(rowIndex - 1);\r\n    } else if (this.scrollbarV && !this.virtualization) {\r\n      offset = 0;\r\n    }\r\n\r\n    this.scroller.setOffset(offset || 0);\r\n  }\r\n\r\n  /**\r\n   * Body was scrolled, this is mainly useful for\r\n   * when a user is server-side pagination via virtual scroll.\r\n   */\r\n  onBodyScroll(event: any): void {\r\n    const scrollYPos: number = event.scrollYPos;\r\n    const scrollXPos: number = event.scrollXPos;\r\n\r\n    // if scroll change, trigger update\r\n    // this is mainly used for header cell positions\r\n    if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {\r\n      this.scroll.emit({\r\n        offsetY: scrollYPos,\r\n        offsetX: scrollXPos\r\n      });\r\n    }\r\n\r\n    this.offsetY = scrollYPos;\r\n    this.offsetX = scrollXPos;\r\n\r\n    this.updateIndexes();\r\n    this.updatePage(event.direction);\r\n    this.updateRows();\r\n  }\r\n\r\n  /**\r\n   * Updates the page given a direction.\r\n   */\r\n  updatePage(direction: string): void {\r\n    let offset = this.indexes.first / this.pageSize;\r\n\r\n    if (direction === 'up') {\r\n      offset = Math.ceil(offset);\r\n    } else if (direction === 'down') {\r\n      offset = Math.floor(offset);\r\n    }\r\n\r\n    if (direction !== undefined && !isNaN(offset)) {\r\n      this.page.emit({ offset });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Updates the rows in the view port\r\n   */\r\n  updateRows(): void {\r\n    const { first, last } = this.indexes;\r\n    let rowIndex = first;\r\n    let idx = 0;\r\n    const temp: any[] = [];\r\n    // if grouprowsby has been specified treat row paging\r\n    // parameters as group paging parameters ie if limit 10 has been\r\n    // specified treat it as 10 groups rather than 10 rows\r\n    if (this.groupedRows) {\r\n      let maxRowsPerGroup = 3;\r\n      // if there is only one group set the maximum number of\r\n      // rows per group the same as the total number of rows\r\n      if (this.groupedRows.length === 1) {\r\n        maxRowsPerGroup = this.groupedRows[0].value.length;\r\n      }\r\n\r\n      while (rowIndex < last && rowIndex < this.groupedRows.length) {\r\n        // Add the groups into this page\r\n        const group = this.groupedRows[rowIndex];\r\n        this.rowIndexes.set(group, rowIndex);\r\n\r\n        if (group.value) {\r\n          // add indexes for each group item\r\n          group.value.forEach((g: any, i: number) => {\r\n            const _idx = `${rowIndex}-${i}`;\r\n            this.rowIndexes.set(g, _idx);\r\n          });\r\n        }\r\n        temp[idx] = group;\r\n        idx++;\r\n\r\n        // Group index in this context\r\n        rowIndex++;\r\n      }\r\n    } else {\r\n      while (rowIndex < last && rowIndex < this.rowCount) {\r\n        const row = this.rows[rowIndex];\r\n\r\n        if (row) {\r\n          // add indexes for each row\r\n          this.rowIndexes.set(row, rowIndex);\r\n          temp[idx] = row;\r\n        }\r\n\r\n        idx++;\r\n        rowIndex++;\r\n      }\r\n    }\r\n\r\n    this.temp = temp;\r\n  }\r\n\r\n  /**\r\n   * Get the row height\r\n   */\r\n  getRowHeight(row: any): number {\r\n    // if its a function return it\r\n    if (typeof this.rowHeight === 'function') {\r\n      return this.rowHeight(row);\r\n    }\r\n\r\n    return this.rowHeight as number;\r\n  }\r\n\r\n  /**\r\n   * @param group the group with all rows\r\n   */\r\n  getGroupHeight(group: any): number {\r\n    let rowHeight = 0;\r\n\r\n    if (group.value) {\r\n      for (let index = 0; index < group.value.length; index++) {\r\n        rowHeight += this.getRowAndDetailHeight(group.value[index]);\r\n      }\r\n    }\r\n\r\n    return rowHeight;\r\n  }\r\n\r\n  /**\r\n   * Calculate row height based on the expanded state of the row.\r\n   */\r\n  getRowAndDetailHeight(row: any): number {\r\n    let rowHeight = this.getRowHeight(row);\r\n    const expanded = this.getRowExpanded(row);\r\n\r\n    // Adding detail row height if its expanded.\r\n    if (expanded) {\r\n      rowHeight += this.getDetailRowHeight(row);\r\n    }\r\n\r\n    return rowHeight;\r\n  }\r\n\r\n  /**\r\n   * Get the height of the detail row.\r\n   */\r\n  getDetailRowHeight = (row?: any, index?: any): number => {\r\n    if (!this.rowDetail) {\r\n      return 0;\r\n    }\r\n    const rowHeight = this.rowDetail.rowHeight;\r\n    return typeof rowHeight === 'function' ? rowHeight(row, index) : (rowHeight as number);\r\n  };\r\n\r\n  /**\r\n   * Calculates the styles for the row so that the rows can be moved in 2D space\r\n   * during virtual scroll inside the DOM.   In the below case the Y position is\r\n   * manipulated.   As an example, if the height of row 0 is 30 px and row 1 is\r\n   * 100 px then following styles are generated:\r\n   *\r\n   * transform: translate3d(0px, 0px, 0px);    ->  row0\r\n   * transform: translate3d(0px, 30px, 0px);   ->  row1\r\n   * transform: translate3d(0px, 130px, 0px);  ->  row2\r\n   *\r\n   * Row heights have to be calculated based on the row heights cache as we wont\r\n   * be able to determine which row is of what height before hand.  In the above\r\n   * case the positionY of the translate3d for row2 would be the sum of all the\r\n   * heights of the rows before it (i.e. row0 and row1).\r\n   *\r\n   * @param rows the row that needs to be placed in the 2D space.\r\n   * @returns the CSS3 style to be applied\r\n   *\r\n   * @memberOf DataTableBodyComponent\r\n   */\r\n  getRowsStyles(rows: any): any {\r\n    const styles: any = {};\r\n\r\n    // only add styles for the group if there is a group\r\n    if (this.groupedRows) {\r\n      styles.width = this.columnGroupWidths.total;\r\n    }\r\n\r\n    if (this.scrollbarV && this.virtualization) {\r\n      let idx = 0;\r\n\r\n      if (this.groupedRows) {\r\n        // Get the latest row rowindex in a group\r\n        const row = rows[rows.length - 1];\r\n        idx = row ? this.getRowIndex(row) : 0;\r\n      } else {\r\n        idx = this.getRowIndex(rows);\r\n      }\r\n\r\n      // const pos = idx * rowHeight;\r\n      // The position of this row would be the sum of all row heights\r\n      // until the previous row position.\r\n      const pos = this.rowHeightsCache.query(idx - 1);\r\n\r\n      translateXY(styles, 0, pos);\r\n    }\r\n\r\n    return styles;\r\n  }\r\n\r\n  /**\r\n   * Calculate bottom summary row offset for scrollbar mode.\r\n   * For more information about cache and offset calculation\r\n   * see description for `getRowsStyles` method\r\n   *\r\n   * @returns the CSS3 style to be applied\r\n   *\r\n   * @memberOf DataTableBodyComponent\r\n   */\r\n  getBottomSummaryRowStyles(): any {\r\n    if (!this.scrollbarV || !this.rows || !this.rows.length) {\r\n      return null;\r\n    }\r\n\r\n    const styles = { position: 'absolute' };\r\n    const pos = this.rowHeightsCache.query(this.rows.length - 1);\r\n\r\n    translateXY(styles, 0, pos);\r\n\r\n    return styles;\r\n  }\r\n\r\n  /**\r\n   * Hides the loading indicator\r\n   */\r\n  hideIndicator(): void {\r\n    setTimeout(() => (this.loadingIndicator = false), 500);\r\n  }\r\n\r\n  /**\r\n   * Updates the index of the rows in the viewport\r\n   */\r\n  updateIndexes(): void {\r\n    let first = 0;\r\n    let last = 0;\r\n\r\n    if (this.scrollbarV) {\r\n      if (this.virtualization) {\r\n        // Calculation of the first and last indexes will be based on where the\r\n        // scrollY position would be at.  The last index would be the one\r\n        // that shows up inside the view port the last.\r\n        const height = parseInt(this.bodyHeight, 0);\r\n        first = this.rowHeightsCache.getRowIndex(this.offsetY);\r\n        last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;\r\n      } else {\r\n        // If virtual rows are not needed\r\n        // We render all in one go\r\n        first = 0;\r\n        last = this.rowCount;\r\n      }\r\n    } else {\r\n      // The server is handling paging and will pass an array that begins with the\r\n      // element at a specified offset.  first should always be 0 with external paging.\r\n      if (!this.externalPaging) {\r\n        first = Math.max(this.offset * this.pageSize, 0);\r\n      }\r\n      last = Math.min(first + this.pageSize, this.rowCount);\r\n    }\r\n\r\n    this.indexes = { first, last };\r\n  }\r\n\r\n  /**\r\n   * Refreshes the full Row Height cache.  Should be used\r\n   * when the entire row array state has changed.\r\n   */\r\n  refreshRowHeightCache(): void {\r\n    if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) {\r\n      return;\r\n    }\r\n\r\n    // clear the previous row height cache if already present.\r\n    // this is useful during sorts, filters where the state of the\r\n    // rows array is changed.\r\n    this.rowHeightsCache.clearCache();\r\n\r\n    // Initialize the tree only if there are rows inside the tree.\r\n    if (this.rows && this.rows.length) {\r\n      const rowExpansions = new Set();\r\n      for (const row of this.rows) {\r\n        if (this.getRowExpanded(row)) {\r\n          rowExpansions.add(row);\r\n        }\r\n      }\r\n\r\n      this.rowHeightsCache.initCache({\r\n        rows: this.rows,\r\n        rowHeight: this.rowHeight,\r\n        detailRowHeight: this.getDetailRowHeight,\r\n        externalVirtual: this.scrollbarV && this.externalPaging,\r\n        rowCount: this.rowCount,\r\n        rowIndexes: this.rowIndexes,\r\n        rowExpansions\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Gets the index for the view port\r\n   */\r\n  getAdjustedViewPortIndex(): number {\r\n    // Capture the row index of the first row that is visible on the viewport.\r\n    // If the scroll bar is just below the row which is highlighted then make that as the\r\n    // first index.\r\n    const viewPortFirstRowIndex = this.indexes.first;\r\n\r\n    if (this.scrollbarV && this.virtualization) {\r\n      const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);\r\n      return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;\r\n    }\r\n\r\n    return viewPortFirstRowIndex;\r\n  }\r\n\r\n  /**\r\n   * Toggle the Expansion of the row i.e. if the row is expanded then it will\r\n   * collapse and vice versa.   Note that the expanded status is stored as\r\n   * a part of the row object itself as we have to preserve the expanded row\r\n   * status in case of sorting and filtering of the row set.\r\n   */\r\n  toggleRowExpansion(row: any): void {\r\n    // Capture the row index of the first row that is visible on the viewport.\r\n    const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\r\n    const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);\r\n    const expanded = rowExpandedIdx > -1;\r\n\r\n    // If the detailRowHeight is auto --> only in case of non-virtualized scroll\r\n    if (this.scrollbarV && this.virtualization) {\r\n      const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);\r\n      // const idx = this.rowIndexes.get(row) || 0;\r\n      const idx = this.getRowIndex(row);\r\n      this.rowHeightsCache.update(idx, detailRowHeight);\r\n    }\r\n\r\n    // Update the toggled row and update thive nevere heights in the cache.\r\n    if (expanded) {\r\n      this.rowExpansions.splice(rowExpandedIdx, 1);\r\n    } else {\r\n      this.rowExpansions.push(row);\r\n    }\r\n\r\n    this.detailToggle.emit({\r\n      rows: [row],\r\n      currentIndex: viewPortFirstRowIndex\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Expand/Collapse all the rows no matter what their state is.\r\n   */\r\n  toggleAllRows(expanded: boolean): void {\r\n    // clear prev expansions\r\n    this.rowExpansions = [];\r\n\r\n    // Capture the row index of the first row that is visible on the viewport.\r\n    const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\r\n\r\n    if (expanded) {\r\n      for (const row of this.rows) {\r\n        this.rowExpansions.push(row);\r\n      }\r\n    }\r\n\r\n    if (this.scrollbarV) {\r\n      // Refresh the full row heights cache since every row was affected.\r\n      this.recalcLayout();\r\n    }\r\n\r\n    // Emit all rows that have been expanded.\r\n    this.detailToggle.emit({\r\n      rows: this.rows,\r\n      currentIndex: viewPortFirstRowIndex\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Recalculates the table\r\n   */\r\n  recalcLayout(): void {\r\n    this.refreshRowHeightCache();\r\n    this.updateIndexes();\r\n    this.updateRows();\r\n  }\r\n\r\n  /**\r\n   * Tracks the column\r\n   */\r\n  columnTrackingFn(index: number, column: any): any {\r\n    return column.$$id;\r\n  }\r\n\r\n  /**\r\n   * Gets the row pinning group styles\r\n   */\r\n  stylesByGroup(group: string) {\r\n    const widths = this.columnGroupWidths;\r\n    const offsetX = this.offsetX;\r\n\r\n    const styles = {\r\n      width: `${widths[group]}px`\r\n    };\r\n\r\n    if (group === 'left') {\r\n      translateXY(styles, offsetX, 0);\r\n    } else if (group === 'right') {\r\n      const bodyWidth = parseInt(this.innerWidth + '', 0);\r\n      const totalDiff = widths.total - bodyWidth;\r\n      const offsetDiff = totalDiff - offsetX;\r\n      const offset = offsetDiff * -1;\r\n      translateXY(styles, offset, 0);\r\n    }\r\n\r\n    return styles;\r\n  }\r\n\r\n  /**\r\n   * Returns if the row was expanded and set default row expansion when row expansion is empty\r\n   */\r\n  getRowExpanded(row: any): boolean {\r\n    if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {\r\n      for (const group of this.groupedRows) {\r\n        this.rowExpansions.push(group);\r\n      }\r\n    }\r\n\r\n    return this.getRowExpandedIdx(row, this.rowExpansions) > -1;\r\n  }\r\n\r\n  getRowExpandedIdx(row: any, expanded: any[]): number {\r\n    if (!expanded || !expanded.length) return -1;\r\n\r\n    const rowId = this.rowIdentity(row);\r\n    return expanded.findIndex(r => {\r\n      const id = this.rowIdentity(r);\r\n      return id === rowId;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Gets the row index given a row\r\n   */\r\n  getRowIndex(row: any): number {\r\n    return this.rowIndexes.get(row) || 0;\r\n  }\r\n\r\n  onTreeAction(row: any) {\r\n    this.treeAction.emit({ row });\r\n  }\r\n\r\n}\r\n","<dc-progress-bar *ngIf=\"loadingIndicator\"> </dc-progress-bar>\r\n    <dc-selection\r\n      #selector\r\n      [selected]=\"selected\"\r\n      [rows]=\"rows\"\r\n      [selectCheck]=\"selectCheck\"\r\n      [selectEnabled]=\"selectEnabled\"\r\n      [selectionType]=\"selectionType\"\r\n      [rowIdentity]=\"rowIdentity\"\r\n      (select)=\"select.emit($event)\"\r\n      (activate)=\"activate.emit($event)\"\r\n    >\r\n      <dc-scroller\r\n        *ngIf=\"rows?.length\"\r\n        [scrollbarV]=\"scrollbarV\"\r\n        [scrollbarH]=\"scrollbarH\"\r\n        [scrollHeight]=\"scrollHeight\"\r\n        [scrollWidth]=\"columnGroupWidths?.total\"\r\n        (scroll)=\"onBodyScroll($event)\"\r\n      >\r\n        <dc-summary-row\r\n          *ngIf=\"summaryRow && summaryPosition === 'top'\"\r\n          [rowHeight]=\"summaryHeight\"\r\n          [offsetX]=\"offsetX\"\r\n          [innerWidth]=\"innerWidth\"\r\n          [rows]=\"rows\"\r\n          [columns]=\"columns\"\r\n        >\r\n        </dc-summary-row>\r\n        <dc-body-row-wrapper\r\n          [groupedRows]=\"groupedRows\"\r\n          *ngFor=\"let group of temp; let i = index\"\r\n          [innerWidth]=\"innerWidth\"\r\n          [ngStyle]=\"getRowsStyles(group)\"\r\n          [rowDetail]=\"rowDetail\"\r\n          [groupHeader]=\"groupHeader\"\r\n          [offsetX]=\"offsetX\"\r\n          [detailRowHeight]=\"getDetailRowHeight(group && group[i], i)\"\r\n          [row]=\"group\"\r\n          [expanded]=\"getRowExpanded(group)\"\r\n          [rowIndex]=\"getRowIndex(group && group[i])\"\r\n          (rowContextmenu)=\"rowContextmenu.emit($event)\"\r\n        >\r\n          <dc-body-row\r\n            role=\"row\"\r\n            *ngIf=\"!groupedRows; else groupedRowsTemplate\"\r\n            tabindex=\"-1\"\r\n            [isSelected]=\"selector.getRowSelected(group)\"\r\n            [innerWidth]=\"innerWidth\"\r\n            [offsetX]=\"offsetX\"\r\n            [columns]=\"columns\"\r\n            [rowHeight]=\"getRowHeight(group)\"\r\n            [row]=\"group\"\r\n            [rowIndex]=\"getRowIndex(group)\"\r\n            [expanded]=\"getRowExpanded(group)\"\r\n            [rowClass]=\"rowClass\"\r\n            [displayCheck]=\"displayCheck\"\r\n            [treeStatus]=\"group && group.treeStatus\"\r\n            (treeAction)=\"onTreeAction(group)\"\r\n            (activate)=\"selector.onActivate($event, indexes.first + i)\"\r\n            (onRowChange)=\"onRowChange.emit($event)\"\r\n            (onRowRemoving)=\"onRowRemoving.emit($event)\"\r\n            [changes]=\"changes\"\r\n            (onRowReversing)=\"onRowReversing.emit($event)\"\r\n            [totalRowCount]=\"rows.length\"\r\n            >\r\n          </dc-body-row>\r\n          <ng-template #groupedRowsTemplate>\r\n            <dc-body-row\r\n              role=\"row\"\r\n              *ngFor=\"let row of group.value; let i = index; trackBy: rowTrackingFn\"\r\n              tabindex=\"-1\"\r\n              [isSelected]=\"selector.getRowSelected(row)\"\r\n              [innerWidth]=\"innerWidth\"\r\n              [offsetX]=\"offsetX\"\r\n              [columns]=\"columns\"\r\n              [rowHeight]=\"getRowHeight(row)\"\r\n              [row]=\"row\"\r\n              [group]=\"group.value\"\r\n              [rowIndex]=\"getRowIndex(row)\"\r\n              [expanded]=\"getRowExpanded(row)\"\r\n              [rowClass]=\"rowClass\"\r\n              (activate)=\"selector.onActivate($event, i)\"\r\n            >\r\n            </dc-body-row>\r\n          </ng-template>\r\n        </dc-body-row-wrapper>\r\n        <dc-summary-row\r\n          role=\"row\"\r\n          *ngIf=\"summaryRow && summaryPosition === 'bottom'\"\r\n          [ngStyle]=\"getBottomSummaryRowStyles()\"\r\n          [rowHeight]=\"summaryHeight\"\r\n          [offsetX]=\"offsetX\"\r\n          [innerWidth]=\"innerWidth\"\r\n          [rows]=\"rows\"\r\n          [columns]=\"columns\"\r\n        >\r\n        </dc-summary-row>\r\n      </dc-scroller>\r\n      <div class=\"empty-row\" *ngIf=\"!rows?.length && !loadingIndicator\" [innerHTML]=\"emptyMessage\"></div>\r\n    </dc-selection>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TableColumn } from '../../../../types/table-column.type';\r\n\r\n@Component({\r\n  selector: 'column-search',\r\n  templateUrl: './column-search.component.html'\r\n})\r\nexport class ColumnSearchComponent {\r\n\r\n  @Output() dcValueChanged = new EventEmitter<Object>\r\n  @Input() height: number | null\r\n  @Input() column: TableColumn\r\n\r\n  get inputHeight(){\r\n    return this.height==null ? null : this.height + 'px'\r\n  }\r\n\r\n  iconClick(e:Event){\r\n    \r\n  }\r\n\r\n  valueChanged(e:any){\r\n    e.newValue\r\n    \r\n  }\r\n\r\n  keyUp(e:any){\r\n    this.dcValueChanged.emit(e)\r\n  }\r\n}\r\n","<dca-input *ngIf=\"column.prop != 'action-column'; else actionColumn\" [height]=\"inputHeight\" type=\"search\"\r\n    (dcValueChanged)=\"valueChanged($event)\" (dcKeyUp)=\"keyUp($event)\" [width]=\"'100%'\" dcClass=\"search-input\">\r\n    <dca-icon (dcClick)=\"iconClick($event)\" class=\"column-search-icon\" icon=\"magnifying-glass\"></dca-icon>\r\n</dca-input>\r\n<ng-template #actionColumn>\r\n<div class=\"action-column-placeholder\" [style.height.px]=\"height\"></div>\r\n</ng-template>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'column-chooser',\r\n  templateUrl: './column-chooser.component.html',\r\n})\r\nexport class ColumnChooserComponent {\r\n  \r\n  @Input() set columns(val:any){\r\n    this._initialColumns = JSON.parse(JSON.stringify(val))\r\n    this._columns = val\r\n  }\r\n  @Output() changeColumns:any = new EventEmitter<any>();\r\n\r\n  columnVisible:any = {}\r\n  showColumnChooser = false\r\n  _columns:any;\r\n  _initialColumns:any;\r\n  sendButtonDisabled:boolean = false\r\n  iconClick(){\r\n    this.showColumnChooser = !this.showColumnChooser\r\n  }\r\n\r\n  columnVisibleChange(e:any, prop:string){\r\n    let flag = false\r\n    this.columnVisible[prop] = e.value\r\n\r\n    for(let keys in this.columnVisible){\r\n      for(let key in this._columns){\r\n        if(this._columns[key].prop == keys){\r\n          this._columns[key].visible = this.columnVisible[keys]\r\n        }\r\n      }\r\n    }\r\n\r\n    this._columns.forEach((item:any) => {\r\n      if(item.visible == true){\r\n        flag = true\r\n      }\r\n    })\r\n\r\n    flag ? this.sendButtonDisabled = false : this.sendButtonDisabled = true\r\n  }\r\n  sendColumns(){\r\n    this.changeColumns.emit(this._columns)\r\n    this.showColumnChooser = !this.showColumnChooser\r\n  }\r\n\r\n  clickCancelButton(){\r\n    this.columnVisible = {}\r\n    this._columns = JSON.parse(JSON.stringify(this._initialColumns)) \r\n    this.showColumnChooser = !this.showColumnChooser\r\n  }\r\n}\r\n","<dca-icon  icon=\"table-cells-column-lock-solid\" (dcClick)=\"iconClick()\"></dca-icon>\r\n<div class=\"column-chooser\" *ngIf=\"showColumnChooser\">\r\n    <span class=\"column-chooser-span\"> COLUMN CHOOSER </span>\r\n    <ul class=\"column-chooser-content\">\r\n        <ng-container *ngFor=\"let column of _initialColumns\">\r\n            <li class=\"column-chooser-item\"  *ngIf=\"column.prop != 'action-column' && column.showInColumnChooser != false\">\r\n                <dca-checkbox (dcValueChanged)=\"columnVisibleChange($event, column.prop)\" [checked]=\"column.visible\" [checkboxId]=\"column.prop\"></dca-checkbox>\r\n                <label [for]=\"column.prop\" class=\"column-chooser-content-label\">{{column.name}}</label>    \r\n            </li>\r\n        </ng-container>\r\n    </ul>\r\n    <div class=\"column-chooser-footer\">\r\n        <dca-button [height]=\"'10px'\" dcClass=\"dca-btn dca-btn-outline-primary\" (dcClick)=\"sendColumns()\" [disabled]=\"sendButtonDisabled\" [width]=\"'10px'\" buttonText=\"SAVE\" ></dca-button>\r\n        <dca-button [height]=\"'10px'\" dcClass=\"dca-btn dca-btn-outline-danger\" [width]=\"'15px'\" buttonText=\"CANCEL\" (dcClick)=\"clickCancelButton()\" class=\"column-chooser-footer-button\"></dca-button>\r\n    </div>\r\n    \r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'column-reorder',\r\n  templateUrl: './column-reorder.component.html',\r\n})\r\nexport class ColumnReorderComponent {\r\n\r\n}\r\n","<dca-icon  icon=\"right-left\"></dca-icon>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'grid-search',\r\n  templateUrl: './grid-search.component.html',\r\n})\r\nexport class GridSearchComponent {\r\n\r\n}\r\n","<dca-input type=\"search\" height=\"2rem\"></dca-input>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n  selector: 'dc-toolbar',\r\n  templateUrl: './toolbar.component.html',\r\n})\r\nexport class ToolbarComponent {\r\n  @Input() columns: any;\r\n  @Input() passiveReversing: boolean = false;\r\n  @Input() passiveSaving: boolean = false;\r\n  @Input() allowAdding:boolean = true\r\n  @Input() allowEditing:boolean = true\r\n  @Input() allowSaveButton?:boolean = true;\r\n  @Input() allowReverseButton?:boolean = true;\r\n  @Input() allowDeleting:boolean = true\r\n  @Input() allowGridSearch:boolean = true\r\n  @Input() allowColumnChooser:boolean = true\r\n  @Input() allowColumnReorder:boolean = true\r\n  @Output() onAddClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() onSaveClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() onGridReverse: EventEmitter<any> = new EventEmitter();\r\n  @Output() onChangeColumns = new EventEmitter<any>();\r\n\r\n\r\n  changeColumns(e: any) {\r\n    this.onChangeColumns.emit(e)\r\n  }\r\n  addClick(e: any) {\r\n    this.onAddClick.emit(e)\r\n  }\r\n  gridReverse(e: any) {\r\n    if(this.passiveReversing != true){\r\n      this.onGridReverse.emit(e)\r\n    }\r\n  }\r\n  saveClick(e: any) {\r\n    if(this.passiveSaving != true){\r\n      this.onSaveClick.emit(e)\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","<span class=\"toolbar\">\r\n\r\n    \r\n\r\n    <div *ngIf=\"allowColumnChooser !=false\" class=\"toolbar-item icon-button\">\r\n        <column-chooser [columns]=\"columns\" (changeColumns)=\"changeColumns($event)\"></column-chooser>\r\n    </div>\r\n\r\n    <div *ngIf=\"allowSaveButton !=false\" (click)=\"saveClick($event)\" class=\"toolbar-item icon-button\"[ngClass]=\"{'disable':passiveSaving}\">\r\n        <dca-icon icon=\"floppy-disk\"></dca-icon>\r\n    </div>\r\n\r\n    <div *ngIf=\"allowAdding !=false\" (click)=\"addClick($event)\" class=\"toolbar-item icon-button\" >\r\n        <dca-icon icon=\"plus\"></dca-icon>\r\n    </div>\r\n\r\n    <div *ngIf=\"allowReverseButton\" (click)=\"gridReverse($event)\" class=\"toolbar-item icon-button\" [ngClass]=\"{'disable':passiveReversing}\">\r\n        <dca-icon icon=\"arrow-rotate-left\"></dca-icon>\r\n    </div>\r\n\r\n    <div *ngIf=\"allowGridSearch !=false\" class=\"toolbar-item\">\r\n        <grid-search></grid-search>\r\n    </div>\r\n</span>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'dc-pager',\r\n  templateUrl: './pager.component.html',\r\n  host: {\r\n    class: 'datatable-pager'\r\n  },\r\n})\r\nexport class PagerComponent {\r\n  @Input() pagerLeftArrowIcon: string;\r\n  @Input() pagerRightArrowIcon: string;\r\n  @Input() pagerPreviousIcon: string;\r\n  @Input() pagerNextIcon: string;\r\n\r\n  @Input()\r\n  set size(val: number) {\r\n    this._size = val;\r\n    this.pages = this.calcPages();\r\n  }\r\n\r\n  get size(): number {\r\n    return this._size;\r\n  }\r\n\r\n  @Input()\r\n  set count(val: number) {\r\n    this._count = val;\r\n    this.pages = this.calcPages();\r\n  }\r\n\r\n  get count(): number {\r\n    return this._count;\r\n  }\r\n\r\n  @Input()\r\n  set page(val: number) {\r\n    this._page = val;\r\n    this.pages = this.calcPages();\r\n  }\r\n\r\n  get page(): number {\r\n    return this._page;\r\n  }\r\n\r\n  get totalPages(): number {\r\n    const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\r\n    return Math.max(count || 0, 1);\r\n  }\r\n\r\n  @Output() change: EventEmitter<any> = new EventEmitter();\r\n\r\n  _count: number = 0;\r\n  _page: number = 1;\r\n  _size: number = 0;\r\n  pages: any;\r\n\r\n  canPrevious(): boolean {\r\n    return this.page > 1;\r\n  }\r\n\r\n  canNext(): boolean {\r\n    return this.page < this.totalPages;\r\n  }\r\n\r\n  prevPage(): void {\r\n    this.selectPage(this.page - 1);\r\n  }\r\n\r\n  nextPage(): void {\r\n    this.selectPage(this.page + 1);\r\n  }\r\n\r\n  selectPage(page: number): void {\r\n    if (page > 0 && page <= this.totalPages && page !== this.page) {\r\n      this.page = page;\r\n\r\n      this.change.emit({\r\n        page\r\n      });\r\n    }\r\n  }\r\n\r\n  calcPages(page?: number): any[] {\r\n    const pages = [];\r\n    let startPage = 1;\r\n    let endPage = this.totalPages;\r\n    const maxSize = 5;\r\n    const isMaxSized = maxSize < this.totalPages;\r\n\r\n    page = page || this.page;\r\n\r\n    if (isMaxSized) {\r\n      startPage = page - Math.floor(maxSize / 2);\r\n      endPage = page + Math.floor(maxSize / 2);\r\n\r\n      if (startPage < 1) {\r\n        startPage = 1;\r\n        endPage = Math.min(startPage + maxSize - 1, this.totalPages);\r\n      } else if (endPage > this.totalPages) {\r\n        startPage = Math.max(this.totalPages - maxSize + 1, 1);\r\n        endPage = this.totalPages;\r\n      }\r\n    }\r\n\r\n    for (let num = startPage; num <= endPage; num++) {\r\n      pages.push({\r\n        number: num,\r\n        text: <string>(<any>num)\r\n      });\r\n    }\r\n\r\n    return pages;\r\n  }\r\n}","<ul class=\"pager\">\r\n    <li [class.disabled]=\"!canPrevious()\">\r\n      <a role=\"button\" aria-label=\"go to first page\" href=\"javascript:void(0)\" (click)=\"selectPage(1)\">\r\n        <i class=\"{{ pagerPreviousIcon }}\"></i>\r\n      </a>\r\n    </li>\r\n    <li [class.disabled]=\"!canPrevious()\">\r\n      <a role=\"button\" aria-label=\"go to previous page\" href=\"javascript:void(0)\" (click)=\"prevPage()\">\r\n        <i class=\"{{ pagerLeftArrowIcon }}\"></i>\r\n      </a>\r\n    </li>\r\n    <li\r\n      role=\"button\"\r\n      [attr.aria-label]=\"'page ' + pg.number\"\r\n      class=\"pages\"\r\n      *ngFor=\"let pg of pages\"\r\n      [class.active]=\"pg.number === page\"\r\n    >\r\n      <a href=\"javascript:void(0)\" (click)=\"selectPage(pg.number)\">\r\n        {{ pg.text }}\r\n      </a>\r\n    </li>\r\n    <li [class.disabled]=\"!canNext()\">\r\n      <a role=\"button\" aria-label=\"go to next page\" href=\"javascript:void(0)\" (click)=\"nextPage()\">\r\n        <i class=\"{{ pagerRightArrowIcon }}\"></i>\r\n      </a>\r\n    </li>\r\n    <li [class.disabled]=\"!canNext()\">\r\n      <a role=\"button\" aria-label=\"go to last page\" href=\"javascript:void(0)\" (click)=\"selectPage(totalPages)\">\r\n        <i class=\"{{ pagerNextIcon }}\"></i>\r\n      </a>\r\n    </li>\r\n  </ul>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DatatableFooterDirective } from '../../../../directives/footer.directive';\r\n\r\n@Component({\r\n  selector: 'dc-footer',\r\n  templateUrl: './footer.component.html',\r\n  host: {\r\n    class: 'datatable-footer'\r\n  },\r\n})\r\nexport class FooterComponent {\r\n  @Input() footerHeight: number;\r\n  @Input() rowCount: number;\r\n  @Input() pageSize: number;\r\n  @Input() offset: number;\r\n  @Input() pagerLeftArrowIcon: string;\r\n  @Input() pagerRightArrowIcon: string;\r\n  @Input() pagerPreviousIcon: string;\r\n  @Input() pagerNextIcon: string;\r\n  @Input() totalMessage: string;\r\n  @Input() footerTemplate: DatatableFooterDirective;\r\n\r\n  @Input() selectedCount: number = 0;\r\n  @Input() selectedMessage: string | boolean;\r\n\r\n  @Output() page: EventEmitter<any> = new EventEmitter();\r\n\r\n  get isVisible(): boolean {\r\n    return this.rowCount / this.pageSize > 1;\r\n  }\r\n\r\n  get curPage(): number {\r\n    return this.offset + 1;\r\n  }\r\n}\r\n","<div\r\n      class=\"datatable-footer-inner\"\r\n      [ngClass]=\"{ 'selected-count': selectedMessage }\"\r\n      [style.height.px]=\"footerHeight\"\r\n    >\r\n      <ng-template\r\n        *ngIf=\"footerTemplate\"\r\n        [ngTemplateOutlet]=\"footerTemplate.template\"\r\n        [ngTemplateOutletContext]=\"{\r\n          rowCount: rowCount,\r\n          pageSize: pageSize,\r\n          selectedCount: selectedCount,\r\n          curPage: curPage,\r\n          offset: offset\r\n        }\"\r\n      >\r\n      </ng-template>\r\n      <div class=\"page-count\" *ngIf=\"!footerTemplate\">\r\n        <span *ngIf=\"selectedMessage\"> {{ selectedCount.toLocaleString() }} {{ selectedMessage }} / </span>\r\n        {{ rowCount.toLocaleString() }} {{ totalMessage }}\r\n      </div>\r\n      <dc-pager\r\n        *ngIf=\"!footerTemplate\"\r\n        [pagerLeftArrowIcon]=\"pagerLeftArrowIcon\"\r\n        [pagerRightArrowIcon]=\"pagerRightArrowIcon\"\r\n        [pagerPreviousIcon]=\"pagerPreviousIcon\"\r\n        [pagerNextIcon]=\"pagerNextIcon\"\r\n        [page]=\"curPage\"\r\n        [size]=\"pageSize\"\r\n        [count]=\"rowCount\"\r\n        [hidden]=\"!isVisible\"\r\n        (change)=\"page.emit($event)\"\r\n      >\r\n      </dc-pager>\r\n    </div>","export enum SortType {\r\n    single = 'single',\r\n    multi = 'multi'\r\n  }\r\n  ","import { TableColumnProp } from '../types/table-column.type';\r\n\r\n// maybe rename this file to prop-getters.ts\r\n\r\nexport type ValueGetter = (obj: any, prop: TableColumnProp) => any;\r\n\r\n/**\r\n * Always returns the empty string ''\r\n */\r\nexport function emptyStringGetter(): string {\r\n  return '';\r\n}\r\n\r\n/**\r\n * Returns the appropriate getter function for this kind of prop.\r\n * If prop == null, returns the emptyStringGetter.\r\n */\r\nexport function getterForProp(prop: TableColumnProp): ValueGetter {\r\n  if (prop == null) {\r\n    return emptyStringGetter;\r\n  }\r\n\r\n  if (typeof prop === 'number') {\r\n    // Adjusting to handle the index case separately\r\n    return (row: any) => (Array.isArray(row) ? row[prop] : undefined);\r\n  } else {\r\n    // deep or simple\r\n    if (prop.indexOf('.') !== -1) {\r\n      return (row: any) => deepValueGetter(row, prop);\r\n    } else {\r\n      return (row: any) => shallowValueGetter(row, prop);\r\n    }\r\n  }\r\n}\r\n\r\n\r\n/**\r\n * Returns the value at this numeric index.\r\n * @param row array of values\r\n * @param index numeric index\r\n * @returns any or '' if invalid index\r\n */\r\nexport function numericIndexGetter(row: any[], index: number): any {\r\n  if (row == null) {\r\n    return '';\r\n  }\r\n  // mimic behavior of deepValueGetter\r\n  if (!row || index == null) {\r\n    return row;\r\n  }\r\n\r\n  const value = row[index];\r\n  if (value == null) {\r\n    return '';\r\n  }\r\n  return value;\r\n}\r\n\r\n/**\r\n * Returns the value of a field.\r\n * (more efficient than deepValueGetter)\r\n * @param obj object containing the field\r\n * @param fieldName field name string\r\n */\r\nexport function shallowValueGetter(obj: any, fieldName: string): any {\r\n  if (obj == null) {\r\n    return '';\r\n  }\r\n  if (!obj || !fieldName) {\r\n    return obj;\r\n  }\r\n\r\n  const value = obj[fieldName];\r\n  if (value == null) {\r\n    return '';\r\n  }\r\n  return value;\r\n}\r\n\r\n/**\r\n * Returns a deep object given a string. zoo['animal.type']\r\n */\r\nexport function deepValueGetter(obj: any, path: string): any {\r\n  if (obj == null) {\r\n    return '';\r\n  }\r\n  if (!obj || !path) {\r\n    return obj;\r\n  }\r\n\r\n  // check if path matches a root-level field\r\n  // { \"a.b.c\": 123 }\r\n  let current = obj[path];\r\n  if (current !== undefined) {\r\n    return current;\r\n  }\r\n\r\n  current = obj;\r\n  const split = path.split('.');\r\n\r\n  if (split.length) {\r\n    for (let i = 0; i < split.length; i++) {\r\n      current = current[split[i]];\r\n\r\n      // if found undefined, return empty string\r\n      if (current === undefined || current === null) {\r\n        return '';\r\n      }\r\n    }\r\n  }\r\n\r\n  return current;\r\n}\r\n","import { getterForProp } from './column-prop-getters';\r\nimport { SortType } from '../types/sort.type';\r\nimport { SortDirection } from '../types/sort-direction.type';\r\nimport { SortPropDir } from '../types/sort-prop-dir.type';\r\n/**\r\n * Gets the next sort direction\r\n */\r\nexport function nextSortDir(sortType: SortType, current: SortDirection): SortDirection | undefined {\r\n  if (sortType === SortType.single) {\r\n    if (current === SortDirection.asc) {\r\n      return SortDirection.desc;\r\n    } else {\r\n      return SortDirection.asc;\r\n    }\r\n  } else {\r\n    if (!current) {\r\n      return SortDirection.asc;\r\n    } else if (current === SortDirection.asc) {\r\n      return SortDirection.desc;\r\n    } else if (current === SortDirection.desc) {\r\n      return undefined;\r\n    }\r\n    // avoid TS7030: Not all code paths return a value.\r\n    return undefined;\r\n  }\r\n}\r\n\r\n/**\r\n * Adapted from fueld-ui on 6/216\r\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\r\n */\r\nexport function orderByComparator(a: any, b: any): number {\r\n  if (a === null || typeof a === 'undefined') a = 0;\r\n  if (b === null || typeof b === 'undefined') b = 0;\r\n  if (a instanceof Date && b instanceof Date) {\r\n    if (a < b) return -1;\r\n    if (a > b) return 1;\r\n  } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\r\n    // Convert to string in case of a=0 or b=0\r\n    a = String(a);\r\n    b = String(b);\r\n    // Isn't a number so lowercase the string to properly compare\r\n    if (a.toLowerCase() < b.toLowerCase()) return -1;\r\n    if (a.toLowerCase() > b.toLowerCase()) return 1;\r\n  } else {\r\n    // Parse strings as numbers to compare properly\r\n    if (parseFloat(a) < parseFloat(b)) return -1;\r\n    if (parseFloat(a) > parseFloat(b)) return 1;\r\n  }\r\n\r\n  // equal each other\r\n  return 0;\r\n}\r\n\r\n/**\r\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\r\n * does not sort the `rows` argument in place\r\n */\r\nexport function sortRows(rows: any[], columns: any[], dirs: SortPropDir[]): any[] {\r\n  if (!rows) return [];\r\n  if (!dirs || !dirs.length || !columns) return [...rows];\r\n\r\n  /**\r\n   * record the row ordering of results from prior sort operations (if applicable)\r\n   * this is necessary to guarantee stable sorting behavior\r\n   */\r\n  const rowToIndexMap = new Map<any, number>();\r\n  rows.forEach((row, index) => rowToIndexMap.set(row, index));\r\n\r\n  const temp = [...rows];\r\n  const cols = columns.reduce((obj, col) => {\r\n    if (col.comparator && typeof col.comparator === 'function') {\r\n      obj[col.prop] = col.comparator;\r\n    }\r\n    return obj;\r\n  }, {});\r\n\r\n  // cache valueGetter and compareFn so that they\r\n  // do not need to be looked-up in the sort function body\r\n  const cachedDirs = dirs.map(dir => {\r\n    const prop = dir.prop;\r\n    return {\r\n      prop,\r\n      dir: dir.dir,\r\n      valueGetter: getterForProp(prop),\r\n      compareFn: cols[prop] || orderByComparator\r\n    };\r\n  });\r\n\r\n  return temp.sort(function (rowA: any, rowB: any) {\r\n    for (const cachedDir of cachedDirs) {\r\n      // Get property and valuegetters for column to be sorted\r\n      const { prop, valueGetter } = cachedDir;\r\n      // Get A and B cell values from rows based on properties of the columns\r\n      const propA = valueGetter(rowA, prop);\r\n      const propB = valueGetter(rowB, prop);\r\n\r\n      // Compare function gets five parameters:\r\n      // Two cell values to be compared as propA and propB\r\n      // Two rows corresponding to the cells as rowA and rowB\r\n      // Direction of the sort for this column as SortDirection\r\n      // Compare can be a standard JS comparison function (a,b) => -1|0|1\r\n      // as additional parameters are silently ignored. The whole row and sort\r\n      // direction enable more complex sort logic.\r\n      const comparison =\r\n        cachedDir.dir !== SortDirection.desc\r\n          ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir)\r\n          : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);\r\n\r\n      // Don't return 0 yet in case of needing to sort by next property\r\n      if (comparison !== 0) return comparison;\r\n    }\r\n\r\n    if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;\r\n\r\n    /**\r\n     * all else being equal, preserve original order of the rows (stable sort)\r\n     */\r\n    return (rowToIndexMap.get(rowA) ?? Number.MAX_VALUE) < (rowToIndexMap.get(rowB) ?? Number.MAX_VALUE) ? -1 : 1;\r\n  });\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\r\nimport { SelectionType } from '../../../../types/selection.type';\r\nimport { SortDirection } from '../../../../types/sort-direction.type';\r\nimport { SortType } from '../../../../types/sort.type';\r\nimport { TableColumn } from '../../../../types/table-column.type';\r\nimport { nextSortDir } from '../../../../utils/sort';\r\n\r\n@Component({\r\n  selector: 'dc-header-cell',\r\n  templateUrl: './header-cell.component.html',\r\n  host: {\r\n    class: 'datatable-header-cell'\r\n  },\r\n})\r\nexport class HeaderCellComponent {\r\n  @Input() sortType: SortType;\r\n  @Input() sortAscendingIcon: string;\r\n  @Input() sortDescendingIcon: string;\r\n  @Input() sortUnsetIcon: string;\r\n\r\n  @Input() isTarget: boolean;\r\n  @Input() targetMarkerTemplate: any;\r\n  @Input() targetMarkerContext: any;\r\n  @Input() rowHeight: number | 'auto' | ((row?: any) => number);\r\n  @Input() allowColumnSearch: boolean | null\r\n  get height(){\r\n    return isNaN(+this.rowHeight) ? null : +this.rowHeight\r\n  }\r\n\r\n  _allRowsSelected: boolean;\r\n\r\n  @Input() set allRowsSelected(value) {\r\n    this._allRowsSelected = value;\r\n    this.cellContext.allRowsSelected = value;\r\n  }\r\n  get allRowsSelected() {\r\n    return this._allRowsSelected;\r\n  }\r\n\r\n  @Input() selectionType: SelectionType;\r\n\r\n  @Input() set column(column: TableColumn) {\r\n    this._column = column;\r\n    this.cellContext.column = column;\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get column(): TableColumn {\r\n    return this._column;\r\n  }\r\n\r\n  @HostBinding('style.height.px')\r\n  @Input()\r\n  headerHeight: number;\r\n\r\n  @Input() set sorts(val: any[]) {\r\n    this._sorts = val;\r\n    this.sortDir = this.calcSortDir(val);\r\n    this.cellContext.sortDir = this.sortDir;\r\n    this.sortClass = this.calcSortClass(this.sortDir);\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get sorts(): any[] {\r\n    return this._sorts;\r\n  }\r\n\r\n  @Output() sort: EventEmitter<any> = new EventEmitter();\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n  @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\r\n  //dev:serkan\r\n  @Output() onColumnSearch = new EventEmitter();\r\n\r\n  @HostBinding('class')\r\n  get columnCssClasses(): any {\r\n    let cls = 'datatable-header-cell';\r\n\r\n    if (this.column.sortable) cls += ' sortable';\r\n    if (this.column.resizeable) cls += ' resizeable';\r\n    if (this.column.headerClass) {\r\n      if (typeof this.column.headerClass === 'string') {\r\n        cls += ' ' + this.column.headerClass;\r\n      } else if (typeof this.column.headerClass === 'function') {\r\n        const res = this.column.headerClass({\r\n          column: this.column\r\n        });\r\n\r\n        if (typeof res === 'string') {\r\n          cls += res;\r\n        } else if (typeof res === 'object') {\r\n          const keys = Object.keys(res);\r\n          for (const k of keys) {\r\n            if (res[k] === true) cls += ` ${k}`;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    const sortDir = this.sortDir;\r\n    if (sortDir) {\r\n      cls += ` sort-active sort-${sortDir}`;\r\n    }\r\n\r\n    return cls;\r\n  }\r\n\r\n  @HostBinding('attr.title')\r\n  get name(): string | undefined {\r\n    // guaranteed to have a value by setColumnDefaults() in column-helper.ts\r\n    return this.column.headerTemplate === undefined ? this.column.name : undefined;\r\n  }\r\n\r\n  @HostBinding('style.minWidth.px')\r\n  get minWidth(): number | undefined {\r\n    return this.column.minWidth;\r\n  }\r\n\r\n  @HostBinding('style.maxWidth.px')\r\n  get maxWidth(): number | undefined {\r\n    return this.column.maxWidth;\r\n  }\r\n\r\n  @HostBinding('style.width.px')\r\n  get width(): number | undefined {\r\n    return this.column.width;\r\n  }\r\n\r\n  get isCheckboxable(): boolean | undefined {\r\n    return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;\r\n  }\r\n\r\n  sortFn = this.onSort.bind(this);\r\n  sortClass: string;\r\n  sortDir: SortDirection;\r\n  selectFn = this.select.emit.bind(this.select);\r\n\r\n  cellContext: any;\r\n\r\n  private _column: TableColumn;\r\n  private _sorts: any[];\r\n\r\n  constructor(private cd: ChangeDetectorRef) {\r\n    this.cellContext = {\r\n      column: this.column,\r\n      sortDir: this.sortDir,\r\n      sortFn: this.sortFn,\r\n      allRowsSelected: this.allRowsSelected,\r\n      selectFn: this.selectFn\r\n    };\r\n  }\r\n\r\n  @HostListener('contextmenu', ['$event'])\r\n  onContextmenu($event: MouseEvent): void {\r\n    this.columnContextmenu.emit({ event: $event, column: this.column });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.sortClass = this.calcSortClass(this.sortDir);\r\n  }\r\n\r\n  calcSortDir(sorts: any[]): any {\r\n    if (sorts && this.column) {\r\n      const sort = sorts.find((s: any) => {\r\n        return s.prop === this.column.prop;\r\n      });\r\n\r\n      if (sort) return sort.dir;\r\n    }\r\n  }\r\n\r\n  onSort(): void {\r\n    if (!this.column.sortable) return;\r\n\r\n    const newValue = nextSortDir(this.sortType, this.sortDir);\r\n    this.sort.emit({\r\n      column: this.column,\r\n      prevValue: this.sortDir,\r\n      newValue\r\n    });\r\n  }\r\n\r\n  calcSortClass(sortDir: SortDirection): string {\r\n    if (!this.cellContext.column.sortable) return '';\r\n    if (sortDir === SortDirection.asc) {\r\n      return `sort-btn sort-asc ${this.sortAscendingIcon}`;\r\n    } else if (sortDir === SortDirection.desc) {\r\n      return `sort-btn sort-desc ${this.sortDescendingIcon}`;\r\n    } else {\r\n      return `sort-btn ${this.sortUnsetIcon}`;\r\n    }\r\n  }\r\n\r\n  //dev:serkan\r\n  columnSearchValueChanged(e:any){\r\n    this.onColumnSearch.emit({\r\n      nativeElement : e.nativeElement,\r\n      value: e.value,\r\n      dataField: this._column.prop\r\n    })\r\n  }\r\n}\r\n","<div class=\"datatable-header-cell-template-wrap\">\r\n    <ng-template\r\n      *ngIf=\"isTarget\"\r\n      [ngTemplateOutlet]=\"targetMarkerTemplate\"\r\n      [ngTemplateOutletContext]=\"targetMarkerContext\"\r\n    >\r\n    </ng-template>\r\n    <label *ngIf=\"isCheckboxable\" class=\"datatable-checkbox\">\r\n      <input type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"select.emit(!allRowsSelected)\" />\r\n    </label>\r\n\r\n    <ng-template\r\n      *ngIf=\"column.headerTemplate\"\r\n      [ngTemplateOutlet]=\"column.headerTemplate\"\r\n      [ngTemplateOutletContext]=\"cellContext\"\r\n    >\r\n    </ng-template>\r\n    <span (click)=\"onSort()\" [class]=\"sortClass\"> </span>\r\n    <span *ngIf=\"!column.headerTemplate\" class=\"datatable-header-cell-wrapper\" >\r\n      <div>\r\n       \r\n        <span class=\"datatable-header-cell-label draggable\" [innerHTML]=\"name\"> </span>\r\n        <column-search [column]=\"column\" [height]=\"height\" *ngIf=\"allowColumnSearch\" (dcValueChanged)=\"columnSearchValueChanged($event)\" class=\"column-search\"></column-search>\r\n        \r\n      </div>\r\n      \r\n    </span>\r\n  </div>","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnDestroy,\r\n  AfterViewInit,\r\n  Renderer2\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[resizeable]',\r\n  host: {\r\n    '[class.resizeable]': 'resizeEnabled'\r\n  }\r\n})\r\nexport class ResizeableDirective implements OnDestroy, AfterViewInit {\r\n  @Input() resizeEnabled: boolean = true;\r\n  @Input() minWidth: number;\r\n  @Input() maxWidth: number;\r\n\r\n  @Output() resize: EventEmitter<any> = new EventEmitter();\r\n\r\n  element: HTMLElement;\r\n  subscription?: Subscription;\r\n  resizing: boolean = false;\r\n  private resizeHandle: HTMLElement;\r\n\r\n  constructor(element: ElementRef, private renderer: Renderer2) {\r\n    this.element = element.nativeElement;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    const renderer2 = this.renderer;\r\n    this.resizeHandle = renderer2.createElement('span');\r\n    if (this.resizeEnabled) {\r\n      renderer2.addClass(this.resizeHandle, 'resize-handle');\r\n    } else {\r\n      renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');\r\n    }\r\n    renderer2.appendChild(this.element, this.resizeHandle);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubscription();\r\n    if (this.renderer.destroyNode) {\r\n      this.renderer.destroyNode(this.resizeHandle);\r\n    } else if (this.resizeHandle) {\r\n      this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);\r\n    }\r\n  }\r\n\r\n  onMouseup(): void {\r\n    this.resizing = false;\r\n\r\n    if (this.subscription && !this.subscription.closed) {\r\n      this._destroySubscription();\r\n      this.resize.emit(this.element.clientWidth);\r\n    }\r\n  }\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  onMousedown(event: MouseEvent): void {\r\n    const isHandle = (<HTMLElement>event.target).classList.contains('resize-handle');\r\n    const initialWidth = this.element.clientWidth;\r\n    const mouseDownScreenX = event.screenX;\r\n\r\n    if (isHandle) {\r\n      event.stopPropagation();\r\n      this.resizing = true;\r\n\r\n      const mouseup = fromEvent(document, 'mouseup');\r\n      this.subscription = mouseup.subscribe(() => this.onMouseup());\r\n\r\n      const mouseMoveSub = fromEvent(document, 'mousemove')\r\n        .pipe(takeUntil(mouseup))\r\n        .subscribe((e) => this.move(e as MouseEvent, initialWidth, mouseDownScreenX));\r\n\r\n      this.subscription.add(mouseMoveSub);\r\n    }\r\n  }\r\n\r\n  move(event: MouseEvent, initialWidth: number, mouseDownScreenX: number): void {\r\n    const movementX = event.screenX - mouseDownScreenX;\r\n    const newWidth = initialWidth + movementX;\r\n\r\n    const overMinWidth = !this.minWidth || newWidth >= this.minWidth;\r\n    const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;\r\n\r\n    if (overMinWidth && underMaxWidth) {\r\n      this.element.style.width = `${newWidth}px`;\r\n    }\r\n  }\r\n\r\n  private _destroySubscription() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = undefined;\r\n    }\r\n  }\r\n}\r\n","import { Directive, Input, Output, EventEmitter, HostBinding, HostListener, OnDestroy } from '@angular/core';\r\nimport { Observable, Subscription, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { MouseEvent } from '../events';\r\n\r\n@Directive({ selector: '[long-press]' })\r\nexport class LongPressDirective implements OnDestroy {\r\n  @Input() pressEnabled: boolean = true;\r\n  @Input() pressModel: any;\r\n  @Input() duration: number = 500;\r\n\r\n  @Output() longPressStart: EventEmitter<any> = new EventEmitter();\r\n  @Output() longPressing: EventEmitter<any> = new EventEmitter();\r\n  @Output() longPressEnd: EventEmitter<any> = new EventEmitter();\r\n\r\n  pressing: boolean;\r\n  isLongPressing: boolean;\r\n  timeout: any;\r\n  mouseX: number = 0;\r\n  mouseY: number = 0;\r\n\r\n  subscription?: Subscription;\r\n\r\n  @HostBinding('class.press')\r\n  get press(): boolean {\r\n    return this.pressing;\r\n  }\r\n\r\n  @HostBinding('class.longpress')\r\n  get isLongPress(): boolean {\r\n    return this.isLongPressing;\r\n  }\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  onMouseDown(event: MouseEvent): void {\r\n    // don't do right/middle clicks\r\n    if (event.which !== 1 || !this.pressEnabled) return;\r\n\r\n    // don't start drag if its on resize handle\r\n    const target = <HTMLElement>event.target;\r\n    if (target.classList.contains('resize-handle')) return;\r\n\r\n    this.mouseX = event.clientX;\r\n    this.mouseY = event.clientY;\r\n\r\n    this.pressing = true;\r\n    this.isLongPressing = false;\r\n\r\n    const mouseup = fromEvent(document, 'mouseup');\r\n    this.subscription = mouseup.subscribe(() => this.onMouseup());\r\n\r\n    this.timeout = setTimeout(() => {\r\n      this.isLongPressing = true;\r\n      this.longPressStart.emit({\r\n        event,\r\n        model: this.pressModel\r\n      });\r\n\r\n      if(this.subscription){\r\n        this.subscription.add(\r\n          fromEvent(document, 'mousemove')\r\n            .pipe(takeUntil(mouseup))\r\n            .subscribe((mouseEvent) => this.onMouseMove(mouseEvent as MouseEvent))\r\n        );\r\n      }\r\n\r\n      this.loop(event);\r\n    }, this.duration);\r\n\r\n    this.loop(event);\r\n  }\r\n\r\n  onMouseMove(event: MouseEvent): void {\r\n    if (this.pressing && !this.isLongPressing) {\r\n      const xThres = Math.abs(event.clientX - this.mouseX) > 10;\r\n      const yThres = Math.abs(event.clientY - this.mouseY) > 10;\r\n\r\n      if (xThres || yThres) {\r\n        this.endPress();\r\n      }\r\n    }\r\n  }\r\n\r\n  loop(event: MouseEvent): void {\r\n    if (this.isLongPressing) {\r\n      this.timeout = setTimeout(() => {\r\n        this.longPressing.emit({\r\n          event,\r\n          model: this.pressModel\r\n        });\r\n        this.loop(event);\r\n      }, 50);\r\n    }\r\n  }\r\n\r\n  endPress(): void {\r\n    clearTimeout(this.timeout);\r\n    this.isLongPressing = false;\r\n    this.pressing = false;\r\n    this._destroySubscription();\r\n\r\n    this.longPressEnd.emit({\r\n      model: this.pressModel\r\n    });\r\n  }\r\n\r\n  onMouseup(): void {\r\n    this.endPress();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubscription();\r\n  }\r\n\r\n  private _destroySubscription(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = undefined;\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, Input, Output, EventEmitter, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({ selector: '[draggable]' })\r\nexport class DraggableDirective implements OnDestroy, OnChanges {\r\n  @Input() dragEventTarget: any;\r\n  @Input() dragModel: any;\r\n  @Input() dragX: boolean = true;\r\n  @Input() dragY: boolean = true;\r\n\r\n  @Output() dragStart: EventEmitter<any> = new EventEmitter();\r\n  @Output() dragging: EventEmitter<any> = new EventEmitter();\r\n  @Output() dragEnd: EventEmitter<any> = new EventEmitter();\r\n\r\n  element: HTMLElement;\r\n  isDragging: boolean = false;\r\n  subscription?: Subscription;\r\n\r\n  constructor(element: ElementRef) {\r\n    this.element = element.nativeElement;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['dragEventTarget'] && changes['dragEventTarget'].currentValue && this.dragModel.dragging) {\r\n      this.onMousedown(changes['dragEventTarget'].currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubscription();\r\n  }\r\n\r\n  onMouseup(event: MouseEvent): void {\r\n    if (!this.isDragging) return;\r\n\r\n    this.isDragging = false;\r\n    this.element.classList.remove('dragging');\r\n\r\n    if (this.subscription) {\r\n      this._destroySubscription();\r\n      this.dragEnd.emit({\r\n        event,\r\n        element: this.element,\r\n        model: this.dragModel\r\n      });\r\n    }\r\n  }\r\n\r\n  onMousedown(event: MouseEvent): void {\r\n    const isDragElm = (<HTMLElement>event.target).classList.contains('draggable');\r\n\r\n    if (isDragElm && (this.dragX || this.dragY)) {\r\n      event.preventDefault();\r\n      this.isDragging = true;\r\n\r\n      const mouseDownPos = { x: event.clientX, y: event.clientY };\r\n\r\n      const mouseup = fromEvent(document, 'mouseup');\r\n      this.subscription = mouseup.subscribe((ev) => this.onMouseup(ev as MouseEvent));\r\n\r\n\r\n      const mouseMoveSub = fromEvent<MouseEvent>(document, 'mousemove')\r\n        .pipe(takeUntil(mouseup))\r\n        .subscribe((ev: MouseEvent) => this.move(ev, mouseDownPos));\r\n\r\n      this.subscription.add(mouseMoveSub);\r\n\r\n      this.dragStart.emit({\r\n        event,\r\n        element: this.element,\r\n        model: this.dragModel\r\n      });\r\n    }\r\n  }\r\n\r\n  move(event: MouseEvent, mouseDownPos: { x: number; y: number }): void {\r\n    if (!this.isDragging) return;\r\n\r\n    const x = event.clientX - mouseDownPos.x;\r\n    const y = event.clientY - mouseDownPos.y;\r\n\r\n    if (this.dragX) this.element.style.left = `${x}px`;\r\n    if (this.dragY) this.element.style.top = `${y}px`;\r\n\r\n    this.element.classList.add('dragging');\r\n\r\n    this.dragging.emit({\r\n      event,\r\n      element: this.element,\r\n      model: this.dragModel\r\n    });\r\n  }\r\n\r\n  private _destroySubscription(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = undefined;\r\n    }\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, Output } from '@angular/core';\r\nimport { DataTableColumnDirective } from '../../../../directives/column.directive';\r\nimport { SelectionType } from '../../../../types/selection.type';\r\nimport { SortType } from '../../../../types/sort.type';\r\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../../../utils/column';\r\nimport { translateXY } from '../../../../utils/translate';\r\n@Component({\r\n  selector: 'dc-header',\r\n  templateUrl: './header.component.html',\r\n  host: {\r\n    class: 'datatable-header'\r\n  },\r\n})\r\nexport class HeaderComponent implements OnDestroy {\r\n  @Input() sortAscendingIcon: any;\r\n  @Input() sortDescendingIcon: any;\r\n  @Input() sortUnsetIcon: any;\r\n  @Input() scrollbarH: boolean;\r\n  @Input() dealsWithGroup: boolean;\r\n  @Input() targetMarkerTemplate: any;\r\n\r\n  //#region Dev: Ergül\r\n\r\n  @Input() rowHeight: number | 'auto' | ((row?: any) => number);\r\n  _allowColumnSearch:boolean | null\r\n  @Input() set allowColumnSearch(val:boolean | null){\r\n    this._allowColumnSearch = val\r\n    if(isNaN(+this.headerHeight)){\r\n      this.headerHeight = (+(this.headerHeight.replace('px',''))) //Converting string to int hight value\r\n    }\r\n\r\n  }\r\n  get allowColumnSearch(){\r\n    return this._allowColumnSearch\r\n  }\r\n//#endregion\r\n\r\n  targetMarkerContext: any;\r\n\r\n  @Input() set innerWidth(val: number) {\r\n    this._innerWidth = val;\r\n    setTimeout(() => {\r\n      if (this._columns) {\r\n        const colByPin = columnsByPin(this._columns);\r\n        this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\r\n        this.setStylesByGroup();\r\n      }\r\n    });\r\n  }\r\n\r\n  get innerWidth(): number {\r\n    return this._innerWidth;\r\n  }\r\n\r\n  @Input() sorts: any[];\r\n  @Input() sortType: SortType;\r\n  @Input() allRowsSelected: boolean;\r\n  @Input() selectionType: SelectionType;\r\n  @Input() reorderable: boolean;\r\n\r\n  dragEventTarget: any;\r\n\r\n  @HostBinding('style.height')\r\n  @Input()\r\n  set headerHeight(val: any) {\r\n    if (this.allowColumnSearch) {     //Dev:Ergül\r\n      val = val + this.rowHeight      //Dev:Ergül\r\n    }                                 //Dev:Ergül\r\n\r\n    if (val !== 'auto') {\r\n      this._headerHeight = `${val}px`;\r\n    } else {\r\n      this._headerHeight = val;\r\n    }\r\n  }\r\n\r\n  get headerHeight(): any {\r\n    return this._headerHeight;\r\n  }\r\n\r\n  @Input() set columns(val: any[]) {\r\n    this._columns = val;\r\n\r\n    const colsByPin = columnsByPin(val);\r\n    this._columnsByPin = columnsByPinArr(val);\r\n    setTimeout(() => {\r\n      this._columnGroupWidths = columnGroupWidths(colsByPin, val);\r\n      this.setStylesByGroup();\r\n    });\r\n  }\r\n\r\n  get columns(): any[] {\r\n    return this._columns;\r\n  }\r\n\r\n  @Input()\r\n  set offsetX(val: number) {\r\n    this._offsetX = val;\r\n    this.setStylesByGroup();\r\n  }\r\n  get offsetX() {\r\n    return this._offsetX;\r\n  }\r\n\r\n  @Output() sort: EventEmitter<any> = new EventEmitter();\r\n  @Output() reorder: EventEmitter<any> = new EventEmitter();\r\n  @Output() resize: EventEmitter<any> = new EventEmitter();\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n  @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\r\n  //dev:serkan\r\n  @Output() onColumnSearch = new EventEmitter()\r\n\r\n  _columnsByPin: any;\r\n  _columnGroupWidths: any = {\r\n    total: 100\r\n  };\r\n  _innerWidth: number;\r\n  _offsetX: number;\r\n  _columns: any[];\r\n  _headerHeight: string;\r\n  _styleByGroup: { [prop: string]: {} } = {\r\n    left: {},\r\n    center: {},\r\n    right: {}\r\n  };\r\n\r\n  private destroyed = false;\r\n\r\n  constructor(private cd: ChangeDetectorRef) { }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyed = true;\r\n  }\r\n\r\n  onLongPressStart({ event, model }: { event: any; model: any }) {\r\n    model.dragging = true;\r\n    this.dragEventTarget = event;\r\n  }\r\n\r\n  onLongPressEnd({ event, model }: { event: any; model: any }) {\r\n    this.dragEventTarget = event;\r\n\r\n    // delay resetting so sort can be\r\n    // prevented if we were dragging\r\n    setTimeout(() => {\r\n      // datatable component creates copies from columns on reorder\r\n      // set dragging to false on new objects\r\n      const column = this._columns.find(c => c.$$id === model.$$id);\r\n      if (column) {\r\n        column.dragging = false;\r\n      }\r\n    }, 5);\r\n  }\r\n\r\n  @HostBinding('style.width')\r\n  get headerWidth(): string {\r\n    if (this.scrollbarH) {\r\n      return this.innerWidth + 'px';\r\n    }\r\n\r\n    return '100%';\r\n  }\r\n\r\n  trackByGroups(index: number, colGroup: any): any {\r\n    return colGroup.type;\r\n  }\r\n\r\n  columnTrackingFn(index: number, column: any): any {\r\n    return column.$$id;\r\n  }\r\n\r\n  onColumnResized(width: number, column: DataTableColumnDirective): void {\r\n    if (width <= column.minWidth) {\r\n      width = column.minWidth;\r\n    } else if (width >= column.maxWidth) {\r\n      width = column.maxWidth;\r\n    }\r\n\r\n    this.resize.emit({\r\n      column,\r\n      prevValue: column.width,\r\n      newValue: width\r\n    });\r\n  }\r\n\r\n  onColumnReordered({ prevIndex, newIndex, model }: any): void {\r\n    const column = this.getColumn(newIndex);\r\n    column.isTarget = false;\r\n    column.targetMarkerContext = undefined;\r\n    this.reorder.emit({\r\n      column: model,\r\n      prevValue: prevIndex,\r\n      newValue: newIndex\r\n    });\r\n  }\r\n\r\n  onTargetChanged({ prevIndex, newIndex, initialIndex }: any): void {\r\n    if (prevIndex || prevIndex === 0) {\r\n      const oldColumn = this.getColumn(prevIndex);\r\n      oldColumn.isTarget = false;\r\n      oldColumn.targetMarkerContext = undefined;\r\n    }\r\n    if (newIndex || newIndex === 0) {\r\n      const newColumn = this.getColumn(newIndex);\r\n      newColumn.isTarget = true;\r\n\r\n      if (initialIndex !== newIndex) {\r\n        newColumn.targetMarkerContext = {\r\n          class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\r\n        };\r\n      }\r\n    }\r\n  }\r\n\r\n  getColumn(index: number): any {\r\n    const leftColumnCount = this._columnsByPin[0].columns.length;\r\n    if (index < leftColumnCount) {\r\n      return this._columnsByPin[0].columns[index];\r\n    }\r\n\r\n    const centerColumnCount = this._columnsByPin[1].columns.length;\r\n    if (index < leftColumnCount + centerColumnCount) {\r\n      return this._columnsByPin[1].columns[index - leftColumnCount];\r\n    }\r\n\r\n    return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\r\n  }\r\n\r\n  onSort({ column, prevValue, newValue }: any): void {\r\n    // if we are dragging don't sort!\r\n    if (column.dragging) {\r\n      return;\r\n    }\r\n\r\n    const sorts = this.calcNewSorts(column, prevValue, newValue);\r\n    this.sort.emit({\r\n      sorts,\r\n      column,\r\n      prevValue,\r\n      newValue\r\n    });\r\n  }\r\n\r\n  calcNewSorts(column: any, prevValue: number, newValue: number): any[] {\r\n    let idx = 0;\r\n\r\n    if (!this.sorts) {\r\n      this.sorts = [];\r\n    }\r\n\r\n    const sorts = this.sorts.map((s, i) => {\r\n      s = { ...s };\r\n      if (s.prop === column.prop) {\r\n        idx = i;\r\n      }\r\n      return s;\r\n    });\r\n\r\n    if (newValue === undefined) {\r\n      sorts.splice(idx, 1);\r\n    } else if (prevValue) {\r\n      sorts[idx].dir = newValue;\r\n    } else {\r\n      if (this.sortType === SortType.single) {\r\n        sorts.splice(0, this.sorts.length);\r\n      }\r\n\r\n      sorts.push({ dir: newValue, prop: column.prop });\r\n    }\r\n\r\n    return sorts;\r\n  }\r\n\r\n  setStylesByGroup() {\r\n    this._styleByGroup['left'] = this.calcStylesByGroup('left');\r\n    this._styleByGroup['center'] = this.calcStylesByGroup('center');\r\n    this._styleByGroup['right'] = this.calcStylesByGroup('right');\r\n    if (!this.destroyed) {\r\n      this.cd.detectChanges();\r\n    }\r\n  }\r\n\r\n  calcStylesByGroup(group: string): any {\r\n    const widths = this._columnGroupWidths;\r\n    const offsetX = this.offsetX;\r\n\r\n    const styles = {\r\n      width: `${widths[group]}px`\r\n    };\r\n\r\n    if (group === 'center') {\r\n      translateXY(styles, offsetX * -1, 0);\r\n    } else if (group === 'right') {\r\n      const totalDiff = widths.total - this.innerWidth;\r\n      const offset = totalDiff * -1;\r\n      translateXY(styles, offset, 0);\r\n    }\r\n\r\n    return styles;\r\n  }\r\n\r\n  //dev:serkan\r\n  columnSearch(e: any) {\r\n    this.onColumnSearch.emit(e)\r\n  }\r\n}\r\n","<div\r\n      role=\"row\"\r\n      orderable\r\n      (reorder)=\"onColumnReordered($event)\"\r\n      (targetChanged)=\"onTargetChanged($event)\"\r\n      [style.width.px]=\"_columnGroupWidths.total\"\r\n      class=\"datatable-header-inner\"\r\n    >\r\n      <div\r\n        *ngFor=\"let colGroup of _columnsByPin; trackBy: trackByGroups\"\r\n        [class]=\"'datatable-row-' + colGroup.type\"\r\n        [ngStyle]=\"_styleByGroup[colGroup.type]\"\r\n      >\r\n        <dc-header-cell\r\n          role=\"columnheader\"\r\n          *ngFor=\"let column of colGroup.columns; trackBy: columnTrackingFn\"\r\n          resizeable\r\n          [resizeEnabled]=\"column.resizeable\"\r\n          (resize)=\"onColumnResized($event, column)\"\r\n          long-press\r\n          [pressModel]=\"column\"\r\n          [pressEnabled]=\"reorderable && column.draggable\"\r\n          (longPressStart)=\"onLongPressStart($event)\"\r\n          (longPressEnd)=\"onLongPressEnd($event)\"\r\n          draggable\r\n          [dragX]=\"reorderable && column.draggable && column.dragging\"\r\n          [dragY]=\"false\"\r\n          [dragModel]=\"column\"\r\n          [dragEventTarget]=\"dragEventTarget\"\r\n          [headerHeight]=\"headerHeight\"\r\n          [isTarget]=\"column.isTarget\"\r\n          [targetMarkerTemplate]=\"targetMarkerTemplate\"\r\n          [targetMarkerContext]=\"column.targetMarkerContext\"\r\n          [column]=\"column\"\r\n          [sortType]=\"sortType\"\r\n          [sorts]=\"sorts\"\r\n          [selectionType]=\"selectionType\"\r\n          [sortAscendingIcon]=\"sortAscendingIcon\"\r\n          [sortDescendingIcon]=\"sortDescendingIcon\"\r\n          [sortUnsetIcon]=\"sortUnsetIcon\"\r\n          [allRowsSelected]=\"allRowsSelected\"\r\n          (sort)=\"onSort($event)\"\r\n          (select)=\"select.emit($event)\"\r\n          (columnContextmenu)=\"columnContextmenu.emit($event)\"\r\n          (onColumnSearch)=\"columnSearch($event)\"\r\n          [rowHeight]=\"rowHeight\"\r\n          [allowColumnSearch]=\"_allowColumnSearch\"\r\n          >\r\n        </dc-header-cell>\r\n      \r\n      </div>\r\n    </div>","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[dc-datatable-group-header-template]'\r\n})\r\nexport class DatatableGroupHeaderTemplateDirective {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\r\nimport { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';\r\n\r\n@Directive({ selector: 'dc-datatable-group-header' })\r\nexport class DatatableGroupHeaderDirective {\r\n  /**\r\n   * Row height is required when virtual scroll is enabled.\r\n   */\r\n  @Input() rowHeight: number | ((group?: any, index?: number) => number) = 0;\r\n\r\n  @Input('template')\r\n  _templateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef, static: true })\r\n  _templateQuery: TemplateRef<any>;\r\n\r\n  get template(): TemplateRef<any> {\r\n    return this._templateInput || this._templateQuery;\r\n  }\r\n\r\n  /**\r\n   * Track toggling of group visibility\r\n   */\r\n  @Output() toggle: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Toggle the expansion of a group\r\n   */\r\n  toggleExpandGroup(group: any): void {\r\n    this.toggle.emit({\r\n      type: 'group',\r\n      value: group\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Expand all groups\r\n   */\r\n  expandAllGroups(): void {\r\n    this.toggle.emit({\r\n      type: 'all',\r\n      value: true\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Collapse all groups\r\n   */\r\n  collapseAllGroups(): void {\r\n    this.toggle.emit({\r\n      type: 'all',\r\n      value: false\r\n    });\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[dc-datatable-header-template]' })\r\nexport class DataTableColumnHeaderDirective {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[dc-datatable-cell-template]' })\r\nexport class DataTableColumnCellDirective {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[dc-datatable-tree-toggle]' })\r\nexport class DataTableColumnCellTreeToggle {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n/**\r\n * service to make DatatableComponent aware of changes to\r\n * input bindings of DataTableColumnDirective\r\n */\r\n@Injectable()\r\nexport class ColumnChangesService {\r\n  private columnInputChanges = new Subject<void>();\r\n\r\n  get columnInputChanges$(): Observable<void> {\r\n    return this.columnInputChanges.asObservable();\r\n  }\r\n\r\n  onInputChange(): void {\r\n    this.columnInputChanges.next();\r\n  }\r\n}\r\n","import { Directive, TemplateRef, ContentChild, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { DataTableColumnHeaderDirective } from './column-header.directive';\r\nimport { DataTableColumnCellDirective } from './column-cell.directive';\r\nimport { DataTableColumnCellTreeToggle } from './tree.directive';\r\nimport { ColumnChangesService } from '../services/column-changes.service';\r\nimport { TableColumnProp } from '../types/table-column.type';\r\n\r\n@Directive({ selector: 'dc-datatable-column' })\r\nexport class DataTableColumnDirective implements OnChanges {\r\n  @Input() name: string;\r\n  @Input() prop: TableColumnProp;\r\n  @Input() frozenLeft: any;\r\n  @Input() frozenRight: any;\r\n  @Input() flexGrow: number;\r\n  @Input() resizeable: boolean;\r\n  @Input() comparator: any;\r\n  @Input() pipe: any;\r\n  @Input() sortable: boolean;\r\n  @Input() draggable: boolean;\r\n  @Input() canAutoResize: boolean;\r\n  @Input() minWidth: number;\r\n  @Input() width: number;\r\n  @Input() maxWidth: number;\r\n  @Input() checkboxable: boolean;\r\n  @Input() headerCheckboxable: boolean;\r\n  @Input() headerClass: string | ((data: any) => string | any);\r\n  @Input() cellClass: string | ((data: any) => string | any);\r\n  @Input() isTreeColumn: boolean;\r\n  @Input() treeLevelIndent: number;\r\n  @Input() summaryFunc: (cells: any[]) => any;\r\n  @Input() summaryTemplate: TemplateRef<any>;\r\n\r\n  @Input('cellTemplate')\r\n  _cellTemplateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DataTableColumnCellDirective, { read: TemplateRef, static: true })\r\n  _cellTemplateQuery: TemplateRef<any>;\r\n\r\n  get cellTemplate(): TemplateRef<any> {\r\n    return this._cellTemplateInput || this._cellTemplateQuery;\r\n  }\r\n\r\n  @Input('headerTemplate')\r\n  _headerTemplateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })\r\n  _headerTemplateQuery: TemplateRef<any>;\r\n\r\n  get headerTemplate(): TemplateRef<any> {\r\n    return this._headerTemplateInput || this._headerTemplateQuery;\r\n  }\r\n\r\n  @Input('treeToggleTemplate')\r\n  _treeToggleTemplateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })\r\n  _treeToggleTemplateQuery: TemplateRef<any>;\r\n\r\n  get treeToggleTemplate(): TemplateRef<any> {\r\n    return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\r\n  }\r\n\r\n  private isFirstChange = true;\r\n\r\n  constructor(private columnChangesService: ColumnChangesService) {}\r\n\r\n  ngOnChanges() {\r\n    if (this.isFirstChange) {\r\n      this.isFirstChange = false;\r\n    } else {\r\n      this.columnChangesService.onInputChange();\r\n    }\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: '[dc-datatable-footer-template]' })\r\nexport class DataTableFooterTemplateDirective {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Input, Directive, TemplateRef, ContentChild } from '@angular/core';\r\nimport { DataTableFooterTemplateDirective } from './footer-template.directive';\r\n\r\n@Directive({ selector: 'dc-datatable-footer' })\r\nexport class DatatableFooterDirective {\r\n  @Input() footerHeight: number;\r\n  @Input() totalMessage: string;\r\n  @Input() selectedMessage: string | boolean;\r\n  @Input() pagerLeftArrowIcon: string;\r\n  @Input() pagerRightArrowIcon: string;\r\n  @Input() pagerPreviousIcon: string;\r\n  @Input() pagerNextIcon: string;\r\n\r\n  @Input('template')\r\n  _templateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DataTableFooterTemplateDirective, { read: TemplateRef })\r\n  _templateQuery: TemplateRef<any>;\r\n\r\n  get template(): TemplateRef<any> {\r\n    return this._templateInput || this._templateQuery;\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[dc-datatable-row-detail-template]'\r\n})\r\nexport class DatatableRowDetailTemplateDirective {\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\r\nimport { DatatableRowDetailTemplateDirective } from './row-detail-template.directive';\r\n\r\n@Directive({ selector: 'dc-datatable-row-detail' })\r\nexport class DatatableRowDetailDirective {\r\n  /**\r\n   * The detail row height is required especially\r\n   * when virtual scroll is enabled.\r\n   */\r\n  @Input() rowHeight: number | ((row?: any, index?: number) => number) = 0;\r\n\r\n  @Input('template')\r\n  _templateInput: TemplateRef<any>;\r\n\r\n  @ContentChild(DatatableRowDetailTemplateDirective, { read: TemplateRef, static: true })\r\n  _templateQuery: TemplateRef<any>;\r\n\r\n  get template(): TemplateRef<any> {\r\n    return this._templateInput || this._templateQuery;\r\n  }\r\n\r\n  /**\r\n   * Row detail row visbility was toggled.\r\n   */\r\n  @Output() toggle: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Toggle the expansion of the row\r\n   */\r\n  toggleExpandRow(row: any): void {\r\n    this.toggle.emit({\r\n      type: 'row',\r\n      value: row\r\n    });\r\n  }\r\n\r\n  /**\r\n   * API method to expand all the rows.\r\n   */\r\n  expandAllRows(): void {\r\n    this.toggle.emit({\r\n      type: 'all',\r\n      value: true\r\n    });\r\n  }\r\n\r\n  /**\r\n   * API method to collapse all the rows.\r\n   */\r\n  collapseAllRows(): void {\r\n    this.toggle.emit({\r\n      type: 'all',\r\n      value: false\r\n    });\r\n  }\r\n}\r\n","export enum ColumnMode {\r\n    standard = 'standard',\r\n    flex = 'flex',\r\n    force = 'force'\r\n  }\r\n  ","export enum ContextmenuType {\r\n    header = 'header',\r\n    body = 'body'\r\n  }\r\n  ","/**\r\n * Creates a unique object id.\r\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\r\n */\r\nexport function id() {\r\n  return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\r\n}\r\n","import { camelCase, deCamelCase } from './camel-case';\r\nimport { id } from './id';\r\nimport { getterForProp } from './column-prop-getters';\r\nimport { TableColumn } from '../types/table-column.type';\r\nimport { DataTableColumnDirective } from '../directives/column.directive';\r\n\r\n/**\r\n * Sets the column defaults\r\n */\r\nexport function setColumnDefaults(columns: TableColumn[]) {\r\n  if (!columns) return;\r\n\r\n  // Only one column should hold the tree view\r\n  // Thus if multiple columns are provided with\r\n  // isTreeColumn as true we take only the first one\r\n  let treeColumnFound: boolean = false;\r\n\r\n  for (const column of columns) {\r\n    if (!column.$$id) {\r\n      column.$$id = id();\r\n    }\r\n\r\n    // prop can be numeric; zero is valid not a missing prop\r\n    // translate name => prop\r\n    if (isNullOrUndefined(column.prop) && column.name) {\r\n      column.prop = camelCase(column.name);\r\n    }\r\n\r\n    if (!column.$$valueGetter && column.prop) {\r\n      column.$$valueGetter = getterForProp(column.prop);\r\n    }\r\n\r\n    // format props if no name passed\r\n    if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\r\n      column.name = deCamelCase(String(column.prop));\r\n    }\r\n\r\n    if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\r\n      column.name = ''; // Fixes IE and Edge displaying `null`\r\n    }\r\n\r\n    if (!column.hasOwnProperty('resizeable')) {\r\n      column.resizeable = true;\r\n    }\r\n\r\n    if (!column.hasOwnProperty('sortable')) {\r\n      column.sortable = true;\r\n    }\r\n\r\n    if (!column.hasOwnProperty('draggable')) {\r\n      column.draggable = true;\r\n    }\r\n\r\n    if (!column.hasOwnProperty('canAutoResize')) {\r\n      column.canAutoResize = true;\r\n    }\r\n\r\n    if (!column.hasOwnProperty('width')) {\r\n      column.width = 150;\r\n    }\r\n\r\n    if (!column.hasOwnProperty('isTreeColumn')) {\r\n      column.isTreeColumn = false;\r\n    } else {\r\n      if (column.isTreeColumn && !treeColumnFound) {\r\n        // If the first column with isTreeColumn is true found\r\n        // we mark that treeCoulmn is found\r\n        treeColumnFound = true;\r\n      } else {\r\n        // After that isTreeColumn property for any other column\r\n        // will be set as false\r\n        column.isTreeColumn = false;\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport function isNullOrUndefined<T>(value: T | null | undefined): value is null | undefined {\r\n  return value === null || value === undefined;\r\n}\r\n\r\n/**\r\n * Translates templates definitions to objects\r\n */\r\nexport function translateTemplates(templates: DataTableColumnDirective[]): any[] {\r\n  const result: any[] = [];\r\n  for (const temp of templates) {\r\n    const col: any = {};\r\n\r\n    const props = Object.getOwnPropertyNames(temp);\r\n    for (const prop of props) {\r\n      col[prop] = (temp as any)[prop];\r\n    }\r\n\r\n    if (temp.headerTemplate) {\r\n      col.headerTemplate = temp.headerTemplate;\r\n    }\r\n\r\n    if (temp.cellTemplate) {\r\n      col.cellTemplate = temp.cellTemplate;\r\n    }\r\n\r\n    if (temp.summaryFunc) {\r\n      col.summaryFunc = temp.summaryFunc;\r\n    }\r\n\r\n    if (temp.summaryTemplate) {\r\n      col.summaryTemplate = temp.summaryTemplate;\r\n    }\r\n\r\n    result.push(col);\r\n  }\r\n\r\n  return result;\r\n}\r\n","import { columnsByPin, columnsTotalWidth } from './column';\r\n\r\n/**\r\n * Calculates the Total Flex Grow\r\n */\r\nexport function getTotalFlexGrow(columns: any[]) {\r\n  let totalFlexGrow = 0;\r\n\r\n  for (const c of columns) {\r\n    totalFlexGrow += c.flexGrow || 0;\r\n  }\r\n\r\n  return totalFlexGrow;\r\n}\r\n\r\n/**\r\n * Adjusts the column widths.\r\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\r\n */\r\nexport function adjustColumnWidths(allColumns: any, expectedWidth: any) {\r\n  const columnsWidth = columnsTotalWidth(allColumns);\r\n  const totalFlexGrow = getTotalFlexGrow(allColumns);\r\n  const colsByGroup = columnsByPin(allColumns);\r\n\r\n  if (columnsWidth !== expectedWidth) {\r\n    scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\r\n  }\r\n}\r\n\r\n/**\r\n * Resizes columns based on the flexGrow property, while respecting manually set widths\r\n */\r\nfunction scaleColumns(colsByGroup: any, maxWidth: any, totalFlexGrow: any) {\r\n  // calculate total width and flexgrow points for coulumns that can be resized\r\n  for (const attr in colsByGroup) {\r\n    for (const column of colsByGroup[attr]) {\r\n      if (!column.canAutoResize) {\r\n        maxWidth -= column.width;\r\n        totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;\r\n      } else {\r\n        column.width = 0;\r\n      }\r\n    }\r\n  }\r\n\r\n  const hasMinWidth:any = {};\r\n  let remainingWidth = maxWidth;\r\n\r\n  // resize columns until no width is left to be distributed\r\n  do {\r\n    const widthPerFlexPoint = remainingWidth / totalFlexGrow;\r\n    remainingWidth = 0;\r\n\r\n    for (const attr in colsByGroup) {\r\n      for (const column of colsByGroup[attr]) {\r\n        // if the column can be resize and it hasn't reached its minimum width yet\r\n        if (column.canAutoResize && !hasMinWidth[column.prop]) {\r\n          const newWidth = column.width + column.flexGrow * widthPerFlexPoint;\r\n          if (column.minWidth !== undefined && newWidth < column.minWidth) {\r\n            remainingWidth += newWidth - column.minWidth;\r\n            column.width = column.minWidth;\r\n            hasMinWidth[column.prop] = true;\r\n          } else {\r\n            column.width = newWidth;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  } while (remainingWidth !== 0);\r\n}\r\n\r\n/**\r\n * Forces the width of the columns to\r\n * distribute equally but overflowing when necessary\r\n *\r\n * Rules:\r\n *\r\n *  - If combined withs are less than the total width of the grid,\r\n *    proportion the widths given the min / max / normal widths to fill the width.\r\n *\r\n *  - If the combined widths, exceed the total width of the grid,\r\n *    use the standard widths.\r\n *\r\n *  - If a column is resized, it should always use that width\r\n *\r\n *  - The proportional widths should never fall below min size if specified.\r\n *\r\n *  - If the grid starts off small but then becomes greater than the size ( + / - )\r\n *    the width should use the original width; not the newly proportioned widths.\r\n */\r\nexport function forceFillColumnWidths(\r\n  allColumns: any[],\r\n  expectedWidth: number,\r\n  startIdx: number,\r\n  allowBleed: boolean,\r\n  defaultColWidth: number = 300\r\n) {\r\n  const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(c => {\r\n    return c.canAutoResize !== false;\r\n  });\r\n\r\n  for (const column of columnsToResize) {\r\n    if (!column.$$oldWidth) {\r\n      column.$$oldWidth = column.width;\r\n    }\r\n  }\r\n\r\n  let additionWidthPerColumn = 0;\r\n  let exceedsWindow = false;\r\n  let contentWidth = getContentWidth(allColumns, defaultColWidth);\r\n  let remainingWidth = expectedWidth - contentWidth;\r\n  const columnsProcessed: any[] = [];\r\n  const remainingWidthLimit = 1; // when to stop\r\n\r\n  // This loop takes care of the\r\n  do {\r\n    additionWidthPerColumn = remainingWidth / columnsToResize.length;\r\n    exceedsWindow = contentWidth >= expectedWidth;\r\n\r\n    for (const column of columnsToResize) {\r\n      if (exceedsWindow && allowBleed) {\r\n        column.width = column.$$oldWidth || column.width || defaultColWidth;\r\n      } else {\r\n        const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;\r\n\r\n        if (column.minWidth && newSize < column.minWidth) {\r\n          column.width = column.minWidth;\r\n          columnsProcessed.push(column);\r\n        } else if (column.maxWidth && newSize > column.maxWidth) {\r\n          column.width = column.maxWidth;\r\n          columnsProcessed.push(column);\r\n        } else {\r\n          column.width = newSize;\r\n        }\r\n      }\r\n\r\n      column.width = Math.max(0, column.width);\r\n    }\r\n\r\n    contentWidth = getContentWidth(allColumns);\r\n    remainingWidth = expectedWidth - contentWidth;\r\n    removeProcessedColumns(columnsToResize, columnsProcessed);\r\n  } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\r\n}\r\n\r\n/**\r\n * Remove the processed columns from the current active columns.\r\n */\r\nfunction removeProcessedColumns(columnsToResize: any[], columnsProcessed: any[]) {\r\n  for (const column of columnsProcessed) {\r\n    const index = columnsToResize.indexOf(column);\r\n    columnsToResize.splice(index, 1);\r\n  }\r\n}\r\n\r\n/**\r\n * Gets the width of the columns\r\n */\r\nfunction getContentWidth(allColumns: any, defaultColWidth: number = 300): number {\r\n  let contentWidth = 0;\r\n\r\n  for (const column of allColumns) {\r\n    contentWidth += column.width || defaultColWidth;\r\n  }\r\n\r\n  return contentWidth;\r\n}\r\n","/**\r\n * Throttle a function\r\n */\r\nexport function throttle(func: any, wait: number, options?: any) {\r\n  options = options || {};\r\n  let context: any;\r\n  let args: any;\r\n  let result: any;\r\n  let timeout: any = null;\r\n  let previous = 0;\r\n\r\n  function later() {\r\n    previous = options.leading === false ? 0 : +new Date();\r\n    timeout = null;\r\n    result = func.apply(context, args);\r\n  }\r\n\r\n  return function (this: any) {\r\n    const now = +new Date();\r\n\r\n    if (!previous && options.leading === false) {\r\n      previous = now;\r\n    }\r\n\r\n    const remaining = wait - (now - previous);\r\n    context = this;\r\n    args = arguments;\r\n\r\n    if (remaining <= 0) {\r\n      clearTimeout(timeout);\r\n      timeout = null;\r\n      previous = now;\r\n      result = func.apply(context, args);\r\n    } else if (!timeout && options.trailing !== false) {\r\n      timeout = setTimeout(later, remaining);\r\n    }\r\n\r\n    return result;\r\n  };\r\n}\r\n\r\n/**\r\n * Throttle decorator\r\n *\r\n *  class MyClass {\r\n *    throttleable(10)\r\n *    myFn() { ... }\r\n *  }\r\n */\r\nexport function throttleable(duration: number, options?: any) {\r\n  return function innerDecorator(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\r\n    return {\r\n      configurable: true,\r\n      enumerable: descriptor.enumerable,\r\n      get: function getter(this:any):any {\r\n        Object.defineProperty(this, key, {\r\n          configurable: true,\r\n          enumerable: descriptor.enumerable,\r\n          value: throttle(descriptor.value, duration, options)\r\n        });\r\n\r\n        return this[key];\r\n      }\r\n    };\r\n  };\r\n}\r\n","import { getterForProp } from './column-prop-getters';\r\nimport { TableColumnProp } from '../types/table-column.type';\r\n\r\nexport type OptionalValueGetter = (row: any) => any | undefined;\r\nexport function optionalGetterForProp(prop: TableColumnProp): any {\r\n  return prop && ((row:any) => getterForProp(prop)(row, prop));\r\n}\r\n\r\n/**\r\n * This functions rearrange items by their parents\r\n * Also sets the level value to each of the items\r\n *\r\n * Note: Expecting each item has a property called parentId\r\n * Note: This algorithm will fail if a list has two or more items with same ID\r\n * NOTE: This algorithm will fail if there is a deadlock of relationship\r\n *\r\n * For example,\r\n *\r\n * Input\r\n *\r\n * id -> parent\r\n * 1  -> 0\r\n * 2  -> 0\r\n * 3  -> 1\r\n * 4  -> 1\r\n * 5  -> 2\r\n * 7  -> 8\r\n * 6  -> 3\r\n *\r\n *\r\n * Output\r\n * id -> level\r\n * 1      -> 0\r\n * --3    -> 1\r\n * ----6  -> 2\r\n * --4    -> 1\r\n * 2      -> 0\r\n * --5    -> 1\r\n * 7     -> 8\r\n *\r\n *\r\n * @param rows\r\n *\r\n */\r\nexport function groupRowsByParents(rows: any[], from?: OptionalValueGetter, to?: OptionalValueGetter): any[] {\r\n  if (from && to) {\r\n    const nodeById: any = {};\r\n    const l = rows.length;\r\n    let node: TreeNode | null = null;\r\n\r\n    nodeById[0] = new TreeNode(); // that's the root node\r\n\r\n    const uniqIDs = rows.reduce((arr, item) => {\r\n      const toValue = to(item);\r\n      if (arr.indexOf(toValue) === -1) {\r\n        arr.push(toValue);\r\n      }\r\n      return arr;\r\n    }, []);\r\n\r\n    for (let i = 0; i < l; i++) {\r\n      // make TreeNode objects for each item\r\n      nodeById[to(rows[i])] = new TreeNode(rows[i]);\r\n    }\r\n\r\n    for (let i = 0; i < l; i++) {\r\n      // link all TreeNode objects\r\n      node = nodeById[to(rows[i])];\r\n      let parent = 0;\r\n      const fromValue = from(node?.row);\r\n      if (node) {\r\n        let parent = 0;\r\n        const fromValue = from(node.row);\r\n        if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {\r\n          parent = fromValue;\r\n        }\r\n        node.parent = nodeById[parent];\r\n        node.row['level'] = node.parent.row['level'] + 1;\r\n        node.parent.children.push(node);\r\n      }\r\n    }\r\n\r\n    let resolvedRows: any[] = [];\r\n    nodeById[0].flatten(function  (this: any) {\r\n      resolvedRows = [...resolvedRows, this.row];\r\n    }, true);\r\n\r\n    return resolvedRows;\r\n  } else {\r\n    return rows;\r\n  }\r\n}\r\n\r\nclass TreeNode {\r\n  public row: any;\r\n  public parent: any;\r\n  public children: any[];\r\n\r\n  constructor(row: any | null = null) {\r\n    if (!row) {\r\n      row = {\r\n        level: -1,\r\n        treeStatus: 'expanded'\r\n      };\r\n    }\r\n    this.row = row;\r\n    this.parent = null;\r\n    this.children = [];\r\n  }\r\n\r\n  flatten(this: TreeNode, f: any, recursive: boolean) {\r\n    if (this.row['treeStatus'] === 'expanded') {\r\n      for (let i = 0, l = this.children.length; i < l; i++) {\r\n        const child = this.children[i];\r\n        f.apply(child, Array.prototype.slice.call(arguments, 2));\r\n        if (recursive) child.flatten.apply(child, arguments);\r\n      }\r\n    }\r\n  }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\n\r\n/**\r\n * Gets the width of the scrollbar.  Nesc for windows\r\n * http://stackoverflow.com/a/13382873/888165\r\n */\r\n@Injectable()\r\nexport class DimensionsHelper {\r\n  getDimensions(element: Element): ClientRect {\r\n    return element.getBoundingClientRect();\r\n  }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, OnInit, DoCheck, AfterViewInit, Input, Output, EventEmitter, HostBinding, ContentChildren, QueryList, ContentChild, ViewChild, KeyValueDiffer, SkipSelf, ChangeDetectorRef, ElementRef, KeyValueDiffers, Optional, Inject, HostListener, OnChanges, SimpleChanges, Renderer2 } from \"@angular/core\";\r\nimport { BehaviorSubject, Subscription } from \"rxjs\";\r\nimport { DatatableGroupHeaderDirective } from \"../../directives/body-group-header.directive\";\r\nimport { DataTableColumnDirective } from \"../../directives/column.directive\";\r\nimport { DatatableFooterDirective } from \"../../directives/footer.directive\";\r\nimport { DatatableRowDetailDirective } from \"../../directives/row-detail.directive\";\r\nimport { ColumnChangesService } from \"../../services/column-changes.service\";\r\nimport { DimensionsHelper } from \"../../services/dimensions-helper.service\";\r\nimport { ScrollbarHelper } from \"../../services/scrollbar-helper.service\";\r\nimport { ColumnMode } from \"../../types/column-mode.type\";\r\nimport { ContextmenuType } from \"../../types/contextmenu.type\";\r\nimport { SelectionType } from \"../../types/selection.type\";\r\nimport { SortType } from \"../../types/sort.type\";\r\nimport { TableColumn } from \"../../types/table-column.type\";\r\nimport { setColumnDefaults, translateTemplates } from \"../../utils/column-helper\";\r\nimport { forceFillColumnWidths, adjustColumnWidths } from \"../../utils/math\";\r\nimport { sortRows } from \"../../utils/sort\";\r\nimport { throttleable } from \"../../utils/throttle\";\r\nimport { groupRowsByParents, optionalGetterForProp } from \"../../utils/tree\";\r\nimport { BodyComponent } from \"./body/body/body.component\";\r\nimport { HeaderComponent } from \"./header/header/header.component\";\r\nimport { IDcDatatableConfig } from \"../../models/dc-grid.model\";\r\nimport { DCService } from \"../../services\";\r\nimport { DcToastService } from \"dc-toast-ng\";\r\n\r\n\r\n@Component({\r\n  selector: 'dc-datatable',\r\n  templateUrl: './datatable.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    class: 'dc-datatable'\r\n  }\r\n})\r\nexport class DatatableComponent implements OnInit, DoCheck, AfterViewInit, OnChanges {\r\n\r\n  //#region Dev: Ergül\r\n\r\n  /**\r\n   * Is datatable datas editable \r\n   */\r\n  @Input() allowEditing?: boolean = true\r\n  @Input() allowSorting?: boolean = true\r\n  /**\r\n   * Is datatable datas deletable \r\n   */\r\n\r\n  @Input() set allowDeleting(val: boolean) {\r\n    this._allowDeleting = val\r\n    if (val == false) {\r\n      this.columns = this.columns.filter((x: any) => x.prop != \"action-column\")\r\n    }\r\n  }\r\n\r\n  @Input() allowSaveButton?:boolean = true\r\n  @Input() allowReverseButton?:boolean = true\r\n\r\n  _allowDeleting: boolean = true\r\n\r\n  get allowDeleting() {\r\n    return this._allowDeleting\r\n  }\r\n\r\n  /**\r\n   * Is new datas insertable \r\n   */\r\n  @Input() allowAdding?: boolean = true\r\n\r\n  /**\r\n   * Paramet of the using column search\r\n   */\r\n  @Input() allowColumnSearch: boolean | null\r\n\r\n  /**\r\n  * Paramet of the using grid search\r\n  */\r\n  @Input() allowGridSearch: boolean\r\n\r\n  /**\r\n  * Paramet of the using column chooser\r\n  */\r\n  @Input() allowColumnChooser: boolean\r\n\r\n  /**\r\n  * Paramet of the using column reorder\r\n  */\r\n  @Input() allowColumnReorder: boolean\r\n\r\n  /**\r\n  * Paramet of the using toolbar\r\n  */\r\n  @Input() useToolbar: boolean\r\n\r\n  /**\r\n   * Editing mode of the datatable (Just 'batch' is available)\r\n   */\r\n  @Input() editingMode?: 'batch' | 'popup' | 'row' = 'batch'\r\n\r\n\r\n  /**\r\n   * Event triggered when a row is being inserted\r\n   */\r\n  @Output() onRowInserting: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row has been inserted\r\n   */\r\n  @Output() onRowInserted: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row is being removed\r\n   */\r\n  @Output() onRowRemoving: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row has been removed\r\n   */\r\n  @Output() onRowRemoved: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row is being reversed\r\n   */\r\n  @Output() onRowReversing: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row has been reversed\r\n   */\r\n  @Output() onRowReversed: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when saving operation is performed\r\n   */\r\n  @Output() onSaving: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when saving operation has been completed\r\n   */\r\n  @Output() onSaved: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when validating operation is performed\r\n   */\r\n  @Output() onValidating: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when validating operation has been completed\r\n   */\r\n  @Output() onValidated: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when the grid is being reversed\r\n   */\r\n  @Output() onGridReversing: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when the grid has been reversed\r\n   */\r\n  @Output() onGridReversed: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row is changing\r\n   */\r\n  @Output() onRowChanging: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event triggered when a row has been changed\r\n   */\r\n  @Output() onRowChanged: EventEmitter<any> = new EventEmitter();\r\n\r\n  get isAllowEditing() {\r\n    return this.allowEditing != undefined ? this.allowEditing : true\r\n  }\r\n  get isAllowAdding() {\r\n    return this.allowAdding != undefined ? this.allowAdding : true\r\n  }\r\n\r\n  get mode() {\r\n    return this.editingMode != undefined ? this.editingMode : 'batch'\r\n  }\r\n  changes: any = []\r\n  initialRows: any\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['rows']) {\r\n      this.initialRows = JSON.parse(JSON.stringify(this._internalRows))\r\n    }\r\n  }\r\n\r\n  rowInserting() {\r\n    this.onRowInserting.emit(this)\r\n    let emptyRow: any = { $$$id: this.dcService.generateUniqueId() }\r\n    this._internalColumns.forEach((column: TableColumn) => {\r\n      if (column && column.prop && column.prop != 'action-column') {\r\n        emptyRow[column.prop] = null\r\n      }\r\n    })\r\n    this.changes.push(\r\n      {\r\n        row: emptyRow,\r\n        key: emptyRow.$$$id,\r\n        type: 'insert'\r\n      })\r\n    this._internalRows.unshift(emptyRow)\r\n    this.rows = this._internalRows\r\n    this.onRowInserted.emit(this)\r\n  }\r\n\r\n  saving() {\r\n    this.onSaving.emit(this)\r\n    if (this.isChangesValid()) {\r\n      let removedRows = this.changes.filter((x: any) => x.type == 'remove')\r\n      removedRows.forEach((row: any) => {\r\n        this.rows = this.rows.filter((x: any) => x.$$$id != row.key)\r\n      });\r\n      this.changes = []\r\n      this.initialRows = JSON.parse(JSON.stringify(this.rows));\r\n      this.onSaved.emit(this)\r\n    } else {\r\n    }\r\n  }\r\n\r\n  isRowValid(rowId: string) {\r\n    const invalidCells = this.dcService.getInvalidCells()\r\n    const row = invalidCells.find((row: any) => row.hasOwnProperty(rowId))\r\n    if (row) {\r\n      let props = Object.keys(row[rowId])\r\n      props.forEach(prop => {\r\n        row[rowId][prop].clickCell()\r\n      });\r\n    }\r\n    return row ? false : true\r\n  }\r\n\r\n  isChangesValid() {\r\n    this.onValidating.emit(this)\r\n    let flag = true\r\n    this.changes.forEach((change: any) => {\r\n      if (!this.isRowValid(change.row[\"$$$id\"])) {\r\n        flag = false\r\n      }\r\n    });\r\n    this.onValidated.emit({ this: this, isValid: flag })\r\n    return flag\r\n  }\r\n\r\n  rowReversing(e: any) {\r\n    this.onRowReversing.emit(this)\r\n    this.changes = this.changes.filter((x: any) => x.key != e.row.$$$id)\r\n    this.onRowReversed.emit(this)\r\n  }\r\n\r\n  isChangesEmpty() {\r\n    return !(this.changes.length > 0)\r\n  }\r\n\r\n  gridReverse(e: any) {\r\n    this.onGridReversing.emit(this)\r\n    this.changes = [];\r\n    this.rows = JSON.parse(JSON.stringify(this.initialRows));\r\n    this.onGridReversed.emit(this)\r\n  }\r\n\r\n  rowChange(e: any) {\r\n    this.onRowChanging.emit({ this: this, event: e })\r\n    let isChanged = false\r\n    this.changes.forEach((changedItem: any) => {\r\n      if (changedItem.key == e.row.$$$id) {\r\n        isChanged = true\r\n        changedItem.row[e.cell.column.prop] = e.cell.value\r\n      }\r\n    });\r\n\r\n    if (!isChanged) {\r\n      this.changes.push({\r\n        row: {\r\n          [e.cell.column.prop]: e.cell.value\r\n        },\r\n        key: e.row['$$$id'],\r\n        type: 'update'\r\n      });\r\n    }\r\n    this.onRowChanged.emit({ this: this, event: e })\r\n  }\r\n\r\n  rowRemoving(e: any) {\r\n    debugger\r\n    this.onRowRemoving.emit(this)\r\n    let isOnChanges = false;\r\n    this.changes.forEach((changedItem: any, index: number) => {\r\n      if (changedItem.key === e.row['$$$id']) {\r\n        isOnChanges = true;\r\n        if (changedItem.type === 'insert') {\r\n          this.changes.splice(index, 1);\r\n          this.rows = this.rows.filter((x: any) => x.$$$id != e.row.$$$id)\r\n        }\r\n        else if (changedItem.type === 'update') {\r\n          changedItem.row = null\r\n          changedItem.type = 'remove'\r\n        }\r\n      }\r\n    });\r\n\r\n    if (!isOnChanges) {\r\n      this.changes.push(\r\n        {\r\n          row: e.row,\r\n          key: e.row.$$$id,\r\n          type: 'remove'\r\n        }\r\n      )\r\n    }\r\n\r\n    this.onRowRemoved.emit(this)\r\n  }\r\n\r\n\r\n  //#endregion\r\n  /**\r\n   * Template for the target marker of drag target columns.\r\n   */\r\n  @Input() targetMarkerTemplate: any;\r\n\r\n  /**\r\n   * Rows that are displayed in the table.\r\n   */\r\n  @Input() set rows(val: any) {\r\n    if (val) {\r\n      val.forEach((row: any) => {\r\n        row['$$$id'] ? row['$$$id'] = row['$$$id'] : row['$$$id'] = this.dcService.generateUniqueId()\r\n      });\r\n      this._internalRows = [...val];\r\n    }\r\n\r\n    this._rows = val;\r\n\r\n    // auto sort on new updates\r\n    if (!this.externalSorting) {\r\n      this.sortInternalRows();\r\n    }\r\n\r\n    // auto group by parent on new update\r\n    this._internalRows = groupRowsByParents(\r\n      this._internalRows,\r\n      optionalGetterForProp(this.treeFromRelation),\r\n      optionalGetterForProp(this.treeToRelation)\r\n    );\r\n\r\n    // recalculate sizes/etc\r\n    this.recalculate();\r\n    if (this._rows && this._groupRowsBy) {\r\n      // If a column has been specified in _groupRowsBy created a new array with the data grouped by that row\r\n      this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\r\n    }\r\n\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * Gets the rows.\r\n   */\r\n  get rows(): any {\r\n    return this._rows;\r\n  }\r\n\r\n  /**\r\n   * This attribute allows the user to set the name of the column to group the data with\r\n   */\r\n  @Input() set groupRowsBy(val: string) {\r\n    if (val) {\r\n      this._groupRowsBy = val;\r\n      if (this._rows && this._groupRowsBy) {\r\n        // cretes a new array with the data grouped\r\n        this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\r\n      }\r\n    }\r\n  }\r\n\r\n  get groupRowsBy() {\r\n    return this._groupRowsBy;\r\n  }\r\n\r\n  /**\r\n   * This attribute allows the user to set a grouped array in the following format:\r\n   *  [\r\n   *    {groupid=1} [\r\n   *      {id=1 name=\"test1\"},\r\n   *      {id=2 name=\"test2\"},\r\n   *      {id=3 name=\"test3\"}\r\n   *    ]},\r\n   *    {groupid=2>[\r\n   *      {id=4 name=\"test4\"},\r\n   *      {id=5 name=\"test5\"},\r\n   *      {id=6 name=\"test6\"}\r\n   *    ]}\r\n   *  ]\r\n   */\r\n  @Input() groupedRows: any[];\r\n\r\n  /**\r\n   * Columns to be displayed.\r\n   */\r\n  @Input() set columns(val: TableColumn[]) {\r\n    let actionColumn: TableColumn = {\r\n      $$id: this.dcService.generateUniqueId(),      //Dev: Ergül         \r\n      canAutoResize: false,                         //Dev: Ergül      \r\n      frozenRight: true,                            //Dev: Ergül        \r\n      headerCheckboxable: false,                    //Dev: Ergül          \r\n      headerClass: 'action-column-header',          //Dev: Ergül                  \r\n      cellClass: 'action-column-cell',              //Dev: Ergül              \r\n      prop: 'action-column',                        //Dev: Ergül      \r\n      name: '',                                     //Dev: Ergül          \r\n      sortable: false,                               //Dev: Ergül\r\n      resizeable: false\r\n    }\r\n    let flag = this.isActionColumnAlreadyHas(val)\r\n    if (val) {\r\n      if (this.allowDeleting && !flag) {\r\n        this._internalColumns = [...val, actionColumn]\r\n      } else {\r\n        this._internalColumns = [...val];\r\n      }\r\n      this._internalColumns.forEach((item: any) => {\r\n        item.visible == null || undefined ? item.visible = true : null\r\n      })\r\n      this._internalColumns = this._internalColumns.filter((x: any) => x.visible || x.prop == 'action-column')\r\n      setColumnDefaults(this._internalColumns);\r\n      this.recalculateColumns();\r\n    }\r\n\r\n    if (this.allowDeleting && !flag) {\r\n      this._columns = [...val, actionColumn];\r\n    } else {\r\n      this._columns = [...val];\r\n    }\r\n\r\n  }\r\n\r\n  /**\r\n   * Get the columns.\r\n   */\r\n  get columns(): TableColumn[] {\r\n    return this._columns;\r\n  }\r\n\r\n  /**\r\n   * List of row objects that should be\r\n   * represented as selected in the grid.\r\n   * Default value: `[]`\r\n   */\r\n  @Input() selected: any[] = [];\r\n\r\n  /**\r\n   * Enable vertical scrollbars\r\n   */\r\n  @Input() scrollbarV: boolean = false;\r\n\r\n  /**\r\n   * Enable horz scrollbars\r\n   */\r\n  @Input() scrollbarH: boolean = false;\r\n\r\n  /**\r\n   * The row height; which is necessary\r\n   * to calculate the height for the lazy rendering.\r\n   */\r\n  @Input() rowHeight: number | 'auto' | ((row?: any) => number) = 30;\r\n\r\n  /**\r\n   * Type of column width distribution formula.\r\n   * Example: flex, force, standard\r\n   */\r\n  @Input() columnMode: ColumnMode | keyof typeof ColumnMode = ColumnMode.standard;\r\n\r\n  /**\r\n   * The minimum header height in pixels.\r\n   * Pass a falsey for no header\r\n   */\r\n  @Input() headerHeight: number = 30;\r\n\r\n  /**\r\n   * The minimum footer height in pixels.\r\n   * Pass falsey for no footer\r\n   */\r\n  @Input() footerHeight: number = 50;\r\n\r\n  /**\r\n   * If the table should use external paging\r\n   * otherwise its assumed that all data is preloaded.\r\n   */\r\n  @Input() externalPaging: boolean = false;\r\n\r\n  /**\r\n   * If the table should use external sorting or\r\n   * the built-in basic sorting.\r\n   */\r\n  @Input() externalSorting: boolean = false;\r\n\r\n  /**\r\n   * The page size to be shown.\r\n   * Default value: `undefined`\r\n   */\r\n  @Input() set limit(val: number | undefined) {\r\n    this._limit = val;\r\n\r\n    // recalculate sizes/etc\r\n    this.recalculate();\r\n  }\r\n\r\n  /**\r\n   * Gets the limit.\r\n   */\r\n  get limit(): number | undefined {\r\n    return this._limit;\r\n  }\r\n\r\n  /**\r\n   * The total count of all rows.\r\n   * Default value: `0`\r\n   */\r\n  @Input() set count(val: number) {\r\n    this._count = val;\r\n\r\n    // recalculate sizes/etc\r\n    this.recalculate();\r\n  }\r\n\r\n  /**\r\n   * Gets the count.\r\n   */\r\n  get count(): number {\r\n    return this._count;\r\n  }\r\n\r\n  /**\r\n   * The current offset ( page - 1 ) shown.\r\n   * Default value: `0`\r\n   */\r\n  @Input() set offset(val: number) {\r\n    this._offset = val;\r\n  }\r\n  get offset(): number {\r\n    return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);\r\n  }\r\n\r\n  /**\r\n   * Show the linear loading bar.\r\n   * Default value: `false`\r\n   */\r\n  @Input() loadingIndicator: boolean = false;\r\n\r\n  /**\r\n   * Type of row selection. Options are:\r\n   *\r\n   *  - `single`\r\n   *  - `multi`\r\n   *  - `checkbox`\r\n   *  - `multiClick`\r\n   *  - `cell`\r\n   *\r\n   * For no selection pass a `falsey`.\r\n   * Default value: `undefined`\r\n   */\r\n  @Input() selectionType: SelectionType;\r\n\r\n  /**\r\n   * Enable/Disable ability to re-order columns\r\n   * by dragging them.\r\n   */\r\n  @Input() reorderable: boolean = true;\r\n\r\n  /**\r\n   * Swap columns on re-order columns or\r\n   * move them.\r\n   */\r\n  @Input() swapColumns: boolean = true;\r\n\r\n  /**\r\n   * The type of sorting\r\n   */\r\n  @Input() sortType: SortType = SortType.single;\r\n\r\n  /**\r\n   * Array of sorted columns by property and type.\r\n   * Default value: `[]`\r\n   */\r\n  @Input() sorts: any[] = [];\r\n\r\n  /**\r\n   * Css class overrides\r\n   */\r\n  @Input() cssClasses: any = {\r\n    sortAscending: 'datatable-icon-up',\r\n    sortDescending: 'datatable-icon-down',\r\n    sortUnset: 'datatable-icon-sort-unset',\r\n    pagerLeftArrow: 'datatable-icon-left',\r\n    pagerRightArrow: 'datatable-icon-right',\r\n    pagerPrevious: 'datatable-icon-prev',\r\n    pagerNext: 'datatable-icon-skip'\r\n  };\r\n\r\n  /**\r\n   * Message overrides for localization\r\n   *\r\n   * emptyMessage     [default] = 'No data to display'\r\n   * totalMessage     [default] = 'total'\r\n   * selectedMessage  [default] = 'selected'\r\n   */\r\n  @Input() messages: any = {\r\n    // Message to show when array is presented\r\n    // but contains no values\r\n    emptyMessage: 'No data to display',\r\n\r\n    // Footer total message\r\n    totalMessage: 'total',\r\n\r\n    // Footer selected message\r\n    selectedMessage: 'selected'\r\n  };\r\n\r\n  /**\r\n   * Row specific classes.\r\n   * Similar implementation to ngClass.\r\n   *\r\n   *  [rowClass]=\"'first second'\"\r\n   *  [rowClass]=\"{ 'first': true, 'second': true, 'third': false }\"\r\n   */\r\n  @Input() rowClass: any;\r\n\r\n  /**\r\n   * A boolean/function you can use to check whether you want\r\n   * to select a particular row based on a criteria. Example:\r\n   *\r\n   *    (selection) => {\r\n   *      return selection !== 'Ethel Price';\r\n   *    }\r\n   */\r\n  @Input() selectCheck: any;\r\n\r\n  /**\r\n   * A function you can use to check whether you want\r\n   * to show the checkbox for a particular row based on a criteria. Example:\r\n   *\r\n   *    (row, column, value) => {\r\n   *      return row.name !== 'Ethel Price';\r\n   *    }\r\n   */\r\n  @Input() displayCheck: (row: any, column?: any, value?: any) => boolean;\r\n\r\n  /**\r\n   * A boolean you can use to set the detault behaviour of rows and groups\r\n   * whether they will start expanded or not. If ommited the default is NOT expanded.\r\n   *\r\n   */\r\n  @Input() groupExpansionDefault: boolean = false;\r\n\r\n  /**\r\n   * Property to which you can use for custom tracking of rows.\r\n   * Example: 'name'\r\n   */\r\n  @Input() trackByProp: string;\r\n\r\n  /**\r\n   * Property to which you can use for determining select all\r\n   * rows on current page or not.\r\n   *\r\n   * @memberOf DatatableComponent\r\n   */\r\n  @Input() selectAllRowsOnPage = false;\r\n\r\n  /**\r\n   * A flag for row virtualization on / off\r\n   */\r\n  @Input() virtualization: boolean = true;\r\n\r\n  /**\r\n   * Tree from relation\r\n   */\r\n  @Input() treeFromRelation: string;\r\n\r\n  /**\r\n   * Tree to relation\r\n   */\r\n  @Input() treeToRelation: string;\r\n\r\n  /**\r\n   * A flag for switching summary row on / off\r\n   */\r\n  @Input() summaryRow: boolean = false;\r\n\r\n  /**\r\n   * A height of summary row\r\n   */\r\n  @Input() summaryHeight: number = 30;\r\n\r\n  /**\r\n   * A property holds a summary row position: top/bottom\r\n   */\r\n  @Input() summaryPosition: string = 'top';\r\n\r\n  /**\r\n   * Body was scrolled typically in a `scrollbarV:true` scenario.\r\n   */\r\n  @Output() scroll: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * A cell or row was focused via keyboard or mouse click.\r\n   */\r\n  @Output() activate: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * A cell or row was selected.\r\n   */\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Column sort was invoked.\r\n   */\r\n  @Output() sort: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * The table was paged either triggered by the pager or the body scroll.\r\n   */\r\n  @Output() page: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Columns were re-ordered.\r\n   */\r\n  @Output() reorder: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Column was resized.\r\n   */\r\n  @Output() resize: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * The context menu was invoked on the table.\r\n   * type indicates whether the header or the body was clicked.\r\n   * content contains either the column or the row that was clicked.\r\n   */\r\n  @Output() tableContextmenu = new EventEmitter<{ event: MouseEvent; type: ContextmenuType; content: any }>(false);\r\n\r\n  /**\r\n   * A row was expanded ot collapsed for tree\r\n   */\r\n  @Output() treeAction: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * CSS class applied if the header height if fixed height.\r\n   */\r\n  @HostBinding('class.fixed-header')\r\n  get isFixedHeader(): boolean {\r\n    const headerHeight: number | string = this.headerHeight;\r\n    return typeof headerHeight === 'string' ? <string>headerHeight !== 'auto' : true;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to the root element if\r\n   * the row heights are fixed heights.\r\n   */\r\n  @HostBinding('class.fixed-row')\r\n  get isFixedRow(): boolean {\r\n    return this.rowHeight !== 'auto';\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root element if\r\n   * vertical scrolling is enabled.\r\n   */\r\n  @HostBinding('class.scroll-vertical')\r\n  get isVertScroll(): boolean {\r\n    return this.scrollbarV;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root element if\r\n   * virtualization is enabled.\r\n   */\r\n  @HostBinding('class.virtualized')\r\n  get isVirtualized(): boolean {\r\n    return this.virtualization;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to the root element\r\n   * if the horziontal scrolling is enabled.\r\n   */\r\n  @HostBinding('class.scroll-horz')\r\n  get isHorScroll(): boolean {\r\n    return this.scrollbarH;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root element is selectable.\r\n   */\r\n  @HostBinding('class.selectable')\r\n  get isSelectable(): boolean {\r\n    return this.selectionType !== undefined;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root is checkbox selection.\r\n   */\r\n  @HostBinding('class.checkbox-selection')\r\n  get isCheckboxSelection(): boolean {\r\n    return this.selectionType === SelectionType.checkbox;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root if cell selection.\r\n   */\r\n  @HostBinding('class.cell-selection')\r\n  get isCellSelection(): boolean {\r\n    return this.selectionType === SelectionType.cell;\r\n  }\r\n\r\n  /**\r\n   * CSS class applied to root if single select.\r\n   */\r\n  @HostBinding('class.single-selection')\r\n  get isSingleSelection(): boolean {\r\n    return this.selectionType === SelectionType.single;\r\n  }\r\n\r\n  /**\r\n   * CSS class added to root element if mulit select\r\n   */\r\n  @HostBinding('class.multi-selection')\r\n  get isMultiSelection(): boolean {\r\n    return this.selectionType === SelectionType.multi;\r\n  }\r\n\r\n  /**\r\n   * CSS class added to root element if mulit click select\r\n   */\r\n  @HostBinding('class.multi-click-selection')\r\n  get isMultiClickSelection(): boolean {\r\n    return this.selectionType === SelectionType.multiClick;\r\n  }\r\n\r\n  /**\r\n   * Column templates gathered from `ContentChildren`\r\n   * if described in your markup.\r\n   */\r\n  @ContentChildren(DataTableColumnDirective)\r\n  set columnTemplates(val: QueryList<DataTableColumnDirective>) {\r\n    this._columnTemplates = val;\r\n    this.translateColumns(val);\r\n  }\r\n\r\n  /**\r\n   * Returns the column templates.\r\n   */\r\n  get columnTemplates(): QueryList<DataTableColumnDirective> {\r\n    return this._columnTemplates;\r\n  }\r\n\r\n  /**\r\n   * Row Detail templates gathered from the ContentChild\r\n   */\r\n  @ContentChild(DatatableRowDetailDirective)\r\n  rowDetail: DatatableRowDetailDirective;\r\n\r\n  /**\r\n   * Group Header templates gathered from the ContentChild\r\n   */\r\n  @ContentChild(DatatableGroupHeaderDirective)\r\n  groupHeader: DatatableGroupHeaderDirective;\r\n\r\n  /**\r\n   * Footer template gathered from the ContentChild\r\n   */\r\n  @ContentChild(DatatableFooterDirective)\r\n  footer: DatatableFooterDirective;\r\n\r\n  /**\r\n   * Reference to the body component for manually\r\n   * invoking functions on the body.\r\n   */\r\n  @ViewChild(BodyComponent)\r\n  bodyComponent: any;\r\n\r\n  /**\r\n   * Reference to the header component for manually\r\n   * invoking functions on the header.\r\n   *\r\n   * @memberOf DatatableComponent\r\n   */\r\n  @ViewChild(HeaderComponent)\r\n  headerComponent: any;\r\n\r\n  /**\r\n   * Returns if all rows are selected.\r\n   */\r\n  get allRowsSelected(): boolean {\r\n    let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;\r\n\r\n    if (this.bodyComponent && this.selectAllRowsOnPage) {\r\n      const indexes = this.bodyComponent.indexes;\r\n      const rowsOnPage = indexes.last - indexes.first;\r\n      allRowsSelected = this.selected.length === rowsOnPage;\r\n    }\r\n\r\n    return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;\r\n  }\r\n\r\n  element: HTMLElement;\r\n  _innerWidth: number;\r\n  pageSize: number;\r\n  bodyHeight: number;\r\n  rowCount: number = 0;\r\n  rowDiffer: KeyValueDiffer<{}, {}>;\r\n\r\n  _offsetX = new BehaviorSubject(0);\r\n  _limit: number | undefined;\r\n  _count: number = 0;\r\n  _offset: number = 0;\r\n  _rows: any[];\r\n  _groupRowsBy: string;\r\n  _internalRows: any[];\r\n  _internalColumns: TableColumn[];\r\n  _columns: TableColumn[];\r\n  _columnTemplates: QueryList<DataTableColumnDirective>;\r\n  _subscriptions: Subscription[] = [];\r\n\r\n  constructor(\r\n    @SkipSelf() private scrollbarHelper: ScrollbarHelper,\r\n    @SkipSelf() private dimensionsHelper: DimensionsHelper,\r\n    private cd: ChangeDetectorRef,\r\n    element: ElementRef,\r\n    differs: KeyValueDiffers,\r\n    private columnChangesService: ColumnChangesService,\r\n    @Optional() @Inject('configuration') private configuration: IDcDatatableConfig,\r\n    private dcService: DCService,\r\n  ) {\r\n    // get ref to elm for measuring\r\n    this.element = element.nativeElement;\r\n    this.rowDiffer = differs.find({}).create();\r\n\r\n    // apply global settings from Module.forRoot\r\n    if (this.configuration && this.configuration.messages) {\r\n      this.messages = { ...this.configuration.messages };\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Lifecycle hook that is called after data-bound\r\n   * properties of a directive are initialized.\r\n   */\r\n  ngOnInit(): void {\r\n    // need to call this immediatly to size\r\n    // if the table is hidden the visibility\r\n    // listener will invoke this itself upon show\r\n    this.recalculate();\r\n  }\r\n\r\n  /**\r\n   * Lifecycle hook that is called after a component's\r\n   * view has been fully initialized.\r\n   */\r\n  ngAfterViewInit(): void {\r\n    // setTimeout(() => {\r\n    //   this.onColumnResize({ column: this._columns[0], newValue: this._columns[0].width })\r\n    // }, 500)\r\n\r\n    if (!this.externalSorting) {\r\n      this.sortInternalRows();\r\n    }\r\n\r\n    // this has to be done to prevent the change detection\r\n    // tree from freaking out because we are readjusting\r\n    if (typeof requestAnimationFrame === 'undefined') {\r\n      return;\r\n    }\r\n\r\n    requestAnimationFrame(() => {\r\n      this.recalculate();\r\n\r\n      // emit page for virtual server-side kickoff\r\n      if (this.externalPaging && this.scrollbarV) {\r\n        this.page.emit({\r\n          count: this.count,\r\n          pageSize: this.pageSize,\r\n          limit: this.limit,\r\n          offset: 0\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Lifecycle hook that is called after a component's\r\n   * content has been fully initialized.\r\n   */\r\n  ngAfterContentInit() {\r\n    this.columnTemplates.changes.subscribe(v => this.translateColumns(v));\r\n    this.listenForColumnInputChanges();\r\n  }\r\n\r\n  /**\r\n   * This will be used when displaying or selecting rows.\r\n   * when tracking/comparing them, we'll use the value of this fn,\r\n   *\r\n   * (`fn(x) === fn(y)` instead of `x === y`)\r\n   */\r\n  @Input() rowIdentity: (x: any) => any = (x: any) => {\r\n    if (this._groupRowsBy) {\r\n      // each group in groupedRows are stored as {key, value: [rows]},\r\n      // where key is the groupRowsBy index\r\n      return x.key;\r\n    } else {\r\n      return x;\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Translates the templates to the column objects\r\n   */\r\n  translateColumns(val: any) {\r\n    if (val) {\r\n      const arr = val.toArray();\r\n      if (arr.length) {\r\n        this._internalColumns = translateTemplates(arr);\r\n        setColumnDefaults(this._internalColumns);\r\n        this.recalculateColumns();\r\n        this.sortInternalRows();\r\n        this.cd.markForCheck();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Creates a map with the data grouped by the user choice of grouping index\r\n   *\r\n   * @param originalArray the original array passed via parameter\r\n   * @param groupByIndex  the index of the column to group the data by\r\n   */\r\n  groupArrayBy(originalArray: any, groupBy: any) {\r\n    // create a map to hold groups with their corresponding results\r\n    const map = new Map();\r\n    let i: number = 0;\r\n\r\n    originalArray.forEach((item: any) => {\r\n      const key = item[groupBy];\r\n      if (!map.has(key)) {\r\n        map.set(key, [item]);\r\n      } else {\r\n        map.get(key).push(item);\r\n      }\r\n      i++;\r\n    });\r\n\r\n    const addGroup = (key: any, value: any) => {\r\n      return { key, value };\r\n    };\r\n\r\n    // convert map back to a simple array of objects\r\n    return Array.from(map, x => addGroup(x[0], x[1]));\r\n  }\r\n\r\n  /*\r\n   * Lifecycle hook that is called when Angular dirty checks a directive.\r\n   */\r\n  ngDoCheck(): void {\r\n    if (this.rowDiffer.diff(this.rows)) {\r\n      if (!this.externalSorting) {\r\n        this.sortInternalRows();\r\n      } else {\r\n        this._internalRows = [...this.rows];\r\n      }\r\n\r\n      // auto group by parent on new update\r\n      this._internalRows = groupRowsByParents(\r\n        this._internalRows,\r\n        optionalGetterForProp(this.treeFromRelation),\r\n        optionalGetterForProp(this.treeToRelation)\r\n      );\r\n\r\n      this.recalculatePages();\r\n      this.cd.markForCheck();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Recalc's the sizes of the grid.\r\n   *\r\n   * Updated automatically on changes to:\r\n   *\r\n   *  - Columns\r\n   *  - Rows\r\n   *  - Paging related\r\n   *\r\n   * Also can be manually invoked or upon window resize.\r\n   */\r\n  recalculate(): void {\r\n    this.recalculateDims();\r\n    this.recalculateColumns();\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * Window resize handler to update sizes.\r\n   */\r\n  @HostListener('window:resize')\r\n  @throttleable(5)\r\n  onWindowResize(): void {\r\n    this.recalculate();\r\n  }\r\n\r\n  /**\r\n   * Recalulcates the column widths based on column width\r\n   * distribution mode and scrollbar offsets.\r\n   */\r\n  recalculateColumns(\r\n    columns: any[] = this._internalColumns,\r\n    forceIdx: number = -1,\r\n    allowBleed: boolean = this.scrollbarH\r\n  ): any[] | undefined {\r\n    if (!columns) return undefined;\r\n\r\n    let width = this._innerWidth;\r\n    if (this.scrollbarV) {\r\n      width = width - this.scrollbarHelper.width;\r\n    }\r\n\r\n    if (this.columnMode === ColumnMode.force) {\r\n      forceFillColumnWidths(columns, width, forceIdx, allowBleed);\r\n    } else if (this.columnMode === ColumnMode.flex) {\r\n      adjustColumnWidths(columns, width);\r\n    }\r\n\r\n    return columns;\r\n  }\r\n\r\n  /**\r\n   * Recalculates the dimensions of the table size.\r\n   * Internally calls the page size and row count calcs too.\r\n   *\r\n   */\r\n  recalculateDims(): void {\r\n    const dims = this.dimensionsHelper.getDimensions(this.element);\r\n    this._innerWidth = Math.floor(dims.width);\r\n\r\n    if (this.scrollbarV) {\r\n      let height = dims.height;\r\n      if (this.headerHeight) height = height - this.headerHeight;\r\n      if (this.footerHeight) height = height - this.footerHeight;\r\n      this.bodyHeight = height;\r\n    }\r\n\r\n    this.recalculatePages();\r\n  }\r\n\r\n  /**\r\n   * Recalculates the pages after a update.\r\n   */\r\n  recalculatePages(): void {\r\n    this.pageSize = this.calcPageSize();\r\n    this.rowCount = this.calcRowCount();\r\n  }\r\n\r\n  /**\r\n   * Body triggered a page event.\r\n   */\r\n  onBodyPage({ offset }: any): void {\r\n    // Avoid pagination caming from body events like scroll when the table\r\n    // has no virtualization and the external paging is enable.\r\n    // This means, let's the developer handle pagination by my him(her) self\r\n    if (this.externalPaging && !this.virtualization) {\r\n      return;\r\n    }\r\n\r\n    this.offset = offset;\r\n\r\n    this.page.emit({\r\n      count: this.count,\r\n      pageSize: this.pageSize,\r\n      limit: this.limit,\r\n      offset: this.offset\r\n    });\r\n  }\r\n\r\n  /**\r\n   * The body triggered a scroll event.\r\n   */\r\n  onBodyScroll(event: MouseEvent): void {\r\n    this._offsetX.next(event.offsetX);\r\n    this.scroll.emit(event);\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * The footer triggered a page event.\r\n   */\r\n  onFooterPage(event: any) {\r\n    this.offset = event.page - 1;\r\n    this.bodyComponent.updateOffsetY(this.offset);\r\n\r\n    this.page.emit({\r\n      count: this.count,\r\n      pageSize: this.pageSize,\r\n      limit: this.limit,\r\n      offset: this.offset\r\n    });\r\n\r\n    if (this.selectAllRowsOnPage) {\r\n      this.selected = [];\r\n      this.select.emit({\r\n        selected: this.selected\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Recalculates the sizes of the page\r\n   */\r\n  calcPageSize(val: any[] = this.rows): number {\r\n    // Keep the page size constant even if the row has been expanded.\r\n    // This is because an expanded row is still considered to be a child of\r\n    // the original row.  Hence calculation would use rowHeight only.\r\n    if (this.scrollbarV && this.virtualization) {\r\n      const size = Math.ceil(this.bodyHeight / (this.rowHeight as number));\r\n      return Math.max(size, 0);\r\n    }\r\n\r\n    // if limit is passed, we are paging\r\n    if (this.limit !== undefined) {\r\n      return this.limit;\r\n    }\r\n\r\n    // otherwise use row length\r\n    if (val) {\r\n      return val.length;\r\n    }\r\n\r\n    // other empty :(\r\n    return 0;\r\n  }\r\n\r\n  /**\r\n   * Calculates the row count.\r\n   */\r\n  calcRowCount(val: any[] = this.rows): number {\r\n    if (!this.externalPaging) {\r\n      if (!val) return 0;\r\n\r\n      if (this.groupedRows) {\r\n        return this.groupedRows.length;\r\n      } else if (this.treeFromRelation != null && this.treeToRelation != null) {\r\n        return this._internalRows.length;\r\n      } else {\r\n        return val.length;\r\n      }\r\n    }\r\n\r\n    return this.count;\r\n  }\r\n\r\n  /**\r\n   * The header triggered a contextmenu event.\r\n   */\r\n  onColumnContextmenu({ event, column }: any): void {\r\n    this.tableContextmenu.emit({ event, type: ContextmenuType.header, content: column });\r\n  }\r\n\r\n  /**\r\n   * The body triggered a contextmenu event.\r\n   */\r\n  onRowContextmenu({ event, row }: any): void {\r\n    this.tableContextmenu.emit({ event, type: ContextmenuType.body, content: row });\r\n  }\r\n\r\n  /**\r\n   * The header triggered a column resize event.\r\n   */\r\n  onColumnResize({ column, newValue }: any): void {\r\n    /* Safari/iOS 10.2 workaround */\r\n    if (column === undefined) {\r\n      return;\r\n    }\r\n\r\n    let idx: number | undefined = undefined;\r\n    const cols = this._internalColumns.map((c, i) => {\r\n      c = { ...c };\r\n\r\n      if (c.$$id === column.$$id) {\r\n        idx = i;\r\n        c.width = newValue;\r\n\r\n        // set this so we can force the column\r\n        // width distribution to be to this value\r\n        c.$$oldWidth = newValue;\r\n      }\r\n\r\n      return c;\r\n    });\r\n\r\n    this.recalculateColumns(cols, idx);\r\n    this._internalColumns = cols;\r\n\r\n    this.resize.emit({\r\n      column,\r\n      newValue\r\n    });\r\n  }\r\n\r\n  /**\r\n   * The header triggered a column re-order event.\r\n   */\r\n  onColumnReorder({ column, newValue, prevValue }: any): void {\r\n    const cols = this._internalColumns.map(c => {\r\n      return { ...c };\r\n    });\r\n\r\n    if (this.swapColumns) {\r\n      const prevCol = cols[newValue];\r\n      cols[newValue] = column;\r\n      cols[prevValue] = prevCol;\r\n    } else {\r\n      if (newValue > prevValue) {\r\n        const movedCol = cols[prevValue];\r\n        for (let i = prevValue; i < newValue; i++) {\r\n          cols[i] = cols[i + 1];\r\n        }\r\n        cols[newValue] = movedCol;\r\n      } else {\r\n        const movedCol = cols[prevValue];\r\n        for (let i = prevValue; i > newValue; i--) {\r\n          cols[i] = cols[i - 1];\r\n        }\r\n        cols[newValue] = movedCol;\r\n      }\r\n    }\r\n\r\n    this._internalColumns = cols;\r\n\r\n    this.reorder.emit({\r\n      column,\r\n      newValue,\r\n      prevValue\r\n    });\r\n  }\r\n\r\n  /**\r\n   * The header triggered a column sort event.\r\n   */\r\n  onColumnSort(event: any): void {\r\n    // clean selected rows\r\n    if (this.selectAllRowsOnPage) {\r\n      this.selected = [];\r\n      this.select.emit({\r\n        selected: this.selected\r\n      });\r\n    }\r\n\r\n    this.sorts = event.sorts;\r\n\r\n    // this could be optimized better since it will resort\r\n    // the rows again on the 'push' detection...\r\n    if (this.externalSorting === false) {\r\n      // don't use normal setter so we don't resort\r\n      this.sortInternalRows();\r\n    }\r\n\r\n    // auto group by parent on new update\r\n    this._internalRows = groupRowsByParents(\r\n      this._internalRows,\r\n      optionalGetterForProp(this.treeFromRelation),\r\n      optionalGetterForProp(this.treeToRelation)\r\n    );\r\n\r\n    // Always go to first page when sorting to see the newly sorted data\r\n    this.offset = 0;\r\n    this.bodyComponent.updateOffsetY(this.offset);\r\n    this.sort.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Toggle all row selection\r\n   */\r\n  onHeaderSelect(event: any): void {\r\n    if (this.bodyComponent && this.selectAllRowsOnPage) {\r\n      // before we splice, chk if we currently have all selected\r\n      const first = this.bodyComponent.indexes.first;\r\n      const last = this.bodyComponent.indexes.last;\r\n      const allSelected = this.selected.length === last - first;\r\n\r\n      // remove all existing either way\r\n      this.selected = [];\r\n\r\n      // do the opposite here\r\n      if (!allSelected) {\r\n        this.selected.push(...this._internalRows.slice(first, last));\r\n      }\r\n    } else {\r\n      // before we splice, chk if we currently have all selected\r\n      const allSelected = this.selected.length === this.rows.length;\r\n      // remove all existing either way\r\n      this.selected = [];\r\n      // do the opposite here\r\n      if (!allSelected) {\r\n        this.selected.push(...this.rows);\r\n      }\r\n    }\r\n\r\n    this.select.emit({\r\n      selected: this.selected\r\n    });\r\n  }\r\n\r\n  /**\r\n   * A row was selected from body\r\n   */\r\n  onBodySelect(event: any): void {\r\n    this.select.emit(event);\r\n  }\r\n\r\n  /**\r\n   * A row was expanded or collapsed for tree\r\n   */\r\n  onTreeAction(event: any) {\r\n    const row = event.row;\r\n    // TODO: For duplicated items this will not work\r\n    const rowIndex = this._rows.findIndex(r => r[this.treeToRelation] === event.row[this.treeToRelation]);\r\n    this.treeAction.emit({ row, rowIndex });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._subscriptions.forEach(subscription => subscription.unsubscribe());\r\n  }\r\n\r\n  /**\r\n   * listen for changes to input bindings of all DataTableColumnDirective and\r\n   * trigger the columnTemplates.changes observable to emit\r\n   */\r\n  private listenForColumnInputChanges(): void {\r\n    this._subscriptions.push(\r\n      this.columnChangesService.columnInputChanges$.subscribe(() => {\r\n        if (this.columnTemplates) {\r\n          this.columnTemplates.notifyOnChanges();\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  private sortInternalRows(): void {\r\n    this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);\r\n  }\r\n\r\n\r\n\r\n  //dev:serkan\r\n  columnSearchValues: any = {}\r\n  onColumnSearch(e: any) {\r\n    if (e.value == '') {\r\n      delete this.columnSearchValues[e.dataField]\r\n    }\r\n    else {\r\n      this.columnSearchValues[e.dataField] = e.value\r\n    }\r\n    let searchDatas: any = []\r\n    this.initialRows.forEach((item: any) => {\r\n      if (Object.keys(this.columnSearchValues).length > 0) {\r\n        for (let key in this.columnSearchValues) {\r\n          if (item[key]?.toLowerCase().includes(this.columnSearchValues[key].toLowerCase())) {\r\n            if (!searchDatas.includes(item)) {\r\n              searchDatas.push(item)\r\n            }\r\n\r\n          }\r\n          else {\r\n            if (searchDatas.includes(item)) {\r\n              searchDatas = searchDatas.filter((x: any) => x != item)\r\n            }\r\n          }\r\n        }\r\n      }\r\n    })\r\n    if (searchDatas.length > 0) {\r\n      this.rows = searchDatas\r\n    }\r\n    else {\r\n      this.rows = JSON.parse(JSON.stringify(this.initialRows))\r\n    }\r\n\r\n\r\n  }\r\n\r\n  changeColumns(e: any) {\r\n    this.columns = e\r\n    this.recalculate()\r\n    this.onColumnResize({ column: this._columns[0], newValue: this._columns[0].width })\r\n\r\n  }\r\n\r\n  isActionColumnAlreadyHas(val: any) {\r\n    return val.find((x: any) => x.prop == 'action-column') ? true : false\r\n\r\n  }\r\n}\r\n","<div class=\"container\">\r\n  <dc-toolbar *ngIf=\"useToolbar != false\" [columns]=\"columns\" (onChangeColumns)=\"changeColumns($event)\"\r\n    (onGridReverse)=\"gridReverse($event)\" (onSaveClick)=\"saving()\"\r\n    (onAddClick)=\"rowInserting()\" [passiveReversing]=\"isChangesEmpty()\"\r\n    [passiveSaving]=\"isChangesEmpty()\" [allowAdding]=\"isAllowAdding\"\r\n    [allowEditing]=\"isAllowEditing\" [allowDeleting]=\"allowDeleting\"\r\n    [allowGridSearch]=\"allowGridSearch\" [allowColumnChooser]=\"allowColumnChooser\" \r\n    [allowColumnReorder]=\"allowColumnReorder\" [allowSaveButton]=\"allowSaveButton\" [allowReverseButton]=\"allowReverseButton\">\r\n  </dc-toolbar>\r\n\r\n  <div role=\"table\" visibilityObserver (visible)=\"recalculate()\">\r\n    <dc-header\r\n      role=\"rowgroup\"\r\n      *ngIf=\"headerHeight\"\r\n      [sorts]=\"sorts\"\r\n      [sortType]=\"sortType\"\r\n      [scrollbarH]=\"scrollbarH\"\r\n      [innerWidth]=\"_innerWidth\"\r\n      [offsetX]=\"_offsetX.value\"\r\n      [dealsWithGroup]=\"groupedRows !== undefined\"\r\n      [columns]=\"_internalColumns\"\r\n      [headerHeight]=\"headerHeight\"\r\n      [reorderable]=\"reorderable\"\r\n      [targetMarkerTemplate]=\"targetMarkerTemplate\"\r\n      [sortAscendingIcon]=\"allowSorting ? cssClasses.sortAscending : null\"\r\n      [sortDescendingIcon]=\"allowSorting ? cssClasses.sortDescending : null\"\r\n      [sortUnsetIcon]=\"allowSorting ? cssClasses.sortUnset : null\"\r\n      [allRowsSelected]=\"allRowsSelected\"\r\n      [selectionType]=\"selectionType\"\r\n      (sort)=\"onColumnSort($event)\"\r\n      (resize)=\"onColumnResize($event)\"\r\n      (reorder)=\"onColumnReorder($event)\"\r\n      (select)=\"onHeaderSelect($event)\"\r\n      (columnContextmenu)=\"onColumnContextmenu($event)\"\r\n      (onColumnSearch)=\"onColumnSearch($event)\"\r\n      [rowHeight]=\"rowHeight\"\r\n      [allowColumnSearch]=\"allowColumnSearch\">\r\n    </dc-header>\r\n    <dc-body\r\n      role=\"rowgroup\"\r\n      [groupRowsBy]=\"groupRowsBy\"\r\n      [groupedRows]=\"groupedRows\"\r\n      [rows]=\"_internalRows\"\r\n      [groupExpansionDefault]=\"groupExpansionDefault\"\r\n      [scrollbarV]=\"scrollbarV\"\r\n      [scrollbarH]=\"scrollbarH\"\r\n      [virtualization]=\"virtualization\"\r\n      [loadingIndicator]=\"loadingIndicator\"\r\n      [externalPaging]=\"externalPaging\"\r\n      [rowHeight]=\"rowHeight\"\r\n      [rowCount]=\"rowCount\"\r\n      [offset]=\"offset\"\r\n      [trackByProp]=\"trackByProp\"\r\n      [columns]=\"_internalColumns\"\r\n      [pageSize]=\"pageSize\"\r\n      [offsetX]=\"_offsetX.value\"\r\n      [rowDetail]=\"rowDetail\"\r\n      [groupHeader]=\"groupHeader\"\r\n      [selected]=\"selected\"\r\n      [innerWidth]=\"_innerWidth\"\r\n      [bodyHeight]=\"bodyHeight\"\r\n      [selectionType]=\"selectionType\"\r\n      [emptyMessage]=\"messages.emptyMessage\"\r\n      [rowIdentity]=\"rowIdentity\"\r\n      [rowClass]=\"rowClass\"\r\n      [selectCheck]=\"selectCheck\"\r\n      [displayCheck]=\"displayCheck\"\r\n      [summaryRow]=\"summaryRow\"\r\n      [summaryHeight]=\"summaryHeight\"\r\n      [summaryPosition]=\"summaryPosition\"\r\n      (page)=\"onBodyPage($event)\"\r\n      (activate)=\"activate.emit($event)\"\r\n      (rowContextmenu)=\"onRowContextmenu($event)\"\r\n      (select)=\"onBodySelect($event)\"\r\n      (scroll)=\"onBodyScroll($event)\"\r\n      (treeAction)=\"onTreeAction($event)\"\r\n      [mode]=\"mode\"\r\n      [changes]=\"changes\"\r\n      (onRowReversing)=\"rowReversing($event)\"\r\n      (onRowChange)=\"rowChange($event)\"\r\n      (onRowRemoving)=\"rowRemoving($event)\">\r\n    </dc-body>\r\n    <dc-footer\r\n      *ngIf=\"footerHeight\"\r\n      [rowCount]=\"rowCount\"\r\n      [pageSize]=\"pageSize\"\r\n      [offset]=\"offset\"\r\n      [footerHeight]=\"footerHeight\"\r\n      [footerTemplate]=\"footer\"\r\n      [totalMessage]=\"messages.totalMessage\"\r\n      [pagerLeftArrowIcon]=\"cssClasses.pagerLeftArrow\"\r\n      [pagerRightArrowIcon]=\"cssClasses.pagerRightArrow\"\r\n      [pagerPreviousIcon]=\"cssClasses.pagerPrevious\"\r\n      [selectedCount]=\"selected.length\"\r\n      [selectedMessage]=\"!!selectionType && messages.selectedMessage\"\r\n      [pagerNextIcon]=\"cssClasses.pagerNext\"\r\n      (page)=\"onFooterPage($event)\">\r\n    </dc-footer>\r\n  </div>\r\n</div>\r\n","import { AfterViewInit, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, Input, OnChanges, Output, QueryList, SimpleChanges, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { TabModel } from '../../../models/dc-models.model';\r\nimport { DCService } from '../../../services';\r\n\r\n\r\n@Component({\r\n  selector: 'dcm-tab',\r\n  templateUrl: './dc-tab.component.html',\r\n})\r\nexport class DcTabComponent implements OnChanges, AfterViewInit {\r\n\r\n  @Input() tab: TabModel[] | null = null\r\n  @Input() dcClass: string = ''\r\n\r\n  @Output() dcTabChange = new EventEmitter<Object>()\r\n  @Output() dcTabClick = new EventEmitter<Object>()\r\n  @Output() dcTabHover = new EventEmitter<Object>()\r\n  @Output() dcTabMouseDown = new EventEmitter<Object>()\r\n  @Output() dcTabMouseUp = new EventEmitter<Object>()\r\n  @Output() dcTabMouseEnter = new EventEmitter<Object>()\r\n  @Output() dcTabMouseLeave = new EventEmitter<Object>()\r\n  @Output() dcTabDoubleClick = new EventEmitter<Object>()\r\n\r\n\r\n  @ContentChildren('tabContent') tabContents!: QueryList<ElementRef>\r\n  \r\n  constructor(private dcService: DCService) {  }\r\n\r\n  tabContentArray!: ElementRef[]\r\n  activeTab: TabModel | null = null\r\n  id = this.dcService.generateUniqueId()\r\n\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['tab']) {\r\n      let activeTabs = this.tab?.filter((tabItem: TabModel) => tabItem.isActive === true)\r\n      this.activeTab = activeTabs ? (activeTabs.length > 0 ? activeTabs[0] : (this.tab ? this.tab[0] : null)) : null;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.tabContentArray = this.contentToArray()\r\n    this.displayNone()\r\n    this.activateTab()\r\n    this.tabContents.changes.subscribe(() => {\r\n      this.tabContentArray = this.contentToArray()\r\n      this.displayNone()\r\n      this.activateTab()\r\n    })\r\n  }\r\n\r\n  displayNone() {\r\n    this.tabContentArray.forEach((tab: ElementRef) => {\r\n      if (!tab.nativeElement.classList.contains('tab-content')) {\r\n        (tab.nativeElement as HTMLElement).classList.add('tab-content')\r\n      }\r\n    })\r\n  }\r\n\r\n  activateTab() {\r\n    this.tabContentArray.forEach((tab: ElementRef) => {\r\n      if ((tab.nativeElement as HTMLElement).classList.contains('active-tab-content')) {\r\n        (tab.nativeElement as HTMLElement).classList.remove('active-tab-content');\r\n      }\r\n      if (tab.nativeElement.id == this.activeTab?.tabId) {\r\n        (tab.nativeElement as HTMLElement).classList.add('active-tab-content');\r\n      }\r\n    })\r\n  }\r\n  contentToArray() {\r\n    return Array.from(this.tabContents)\r\n  }\r\n\r\n  onTabChange(e: Event, tabItem: TabModel) {\r\n    let oldActiveTab = this.activeTab\r\n    this.activeTab = tabItem\r\n    this.tabContentArray = this.contentToArray()\r\n    this.displayNone()\r\n    this.activateTab()\r\n    this.dcTabChange.emit({ nativeElement: e, oldActiveTab: oldActiveTab, newActiveTab: this.activeTab })\r\n  }\r\n\r\n  onTabClick(e: Event, tabItem: TabModel) {\r\n    this.dcTabClick.emit({\r\n      nativeElement: e,\r\n      tabItem: tabItem\r\n    })\r\n  }\r\n\r\n  //#region onHover Event\r\n  onTabHover(e: Event, tabItem: TabModel) {\r\n    this.dcTabHover.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseDown Event\r\n  onTabMouseDown(e: Event, tabItem: TabModel) {\r\n    this.dcTabMouseDown.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseUp Event\r\n  onTabMouseUp(e: Event, tabItem: TabModel) {\r\n    this.dcTabMouseUp.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseEnter Event\r\n  onTabMouseEnter(e: Event, tabItem: TabModel) {\r\n    this.dcTabMouseEnter.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onMouseOut Event\r\n  onTabMouseLeave(e: Event, tabItem: TabModel) {\r\n    this.dcTabMouseLeave.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n  //#region onDoubleClick Event\r\n  onTabDoubleClick(e: Event, tabItem: TabModel) {\r\n    this.dcTabDoubleClick.emit({ nativeElement: e, tabItem: tabItem })\r\n  }\r\n  //#endregion\r\n\r\n}\r\n","<div [id]=\"id\" [class]=\"dcClass\" [ngClass]=\"{'tab':true}\">\r\n    <input class=\"tab-input\" *ngFor=\"let tabItem of tab\" type=\"radio\" [id]=\"tabItem.tabId + id\" name=\"tab-control\"\r\n        [checked]=\"activeTab === tabItem\" (change)=\"onTabChange($event,tabItem)\">\r\n    <ul class=\"tab-list\">\r\n        <li (mouseover)=\"onTabHover($event, tabItem)\" (mousedown)=\"onTabMouseDown($event, tabItem)\" (mouseup)=\"onTabMouseUp($event, tabItem)\"\r\n            (mouseenter)=\"onTabMouseEnter($event, tabItem)\" (mouseleave)=\"onTabMouseLeave($event, tabItem)\" (dblclick)=\"onTabDoubleClick($event, tabItem)\"\r\n            (click)=\"onTabClick($event,tabItem)\" [ngClass]=\"{'active-tab':activeTab ===tabItem}\" class=\"tab-list-item\"\r\n            *ngFor=\"let tabItem of tab\" [title]=\"tabItem.tabTitle\">\r\n            <label class=\"tab-list-item-label\" [for]=\"tabItem.tabId + id\" role=\"button\">\r\n                <dca-icon class=\"tab-list-item-icon\" *ngIf=\"tabItem.tabIcon\" [icon]=\"tabItem.tabIcon\"></dca-icon>\r\n                <span class=\"tab-list-item-title\">{{tabItem.tabTitle}}</span>\r\n            </label>\r\n        </li>\r\n    </ul>\r\n\r\n    <div class=\"tab-content-wraper\"><ng-content></ng-content></div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { DcDropdownComponent } from './dc-dropdown/dc-dropdown.component';\r\nimport { DCAtomModule } from '../atoms';\r\nimport { DcTabComponent } from './dc-tab/dc-tab.component';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DcDropdownComponent,\r\n    DcTabComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    HttpClientModule,\r\n    DCAtomModule\r\n  ],\r\n  exports: [\r\n    DcDropdownComponent,\r\n    DcTabComponent,\r\n  ]\r\n})\r\nexport class DCMoleculeModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SummaryRowComponent } from './body/summary-row/summary-row.component';\r\nimport { BodyCellComponent } from './body/body-cell/body-cell.component';\r\nimport { BodyRowWrapperComponent } from './body/body-row-wrapper/body-row-wrapper.component';\r\nimport { BodyRowComponent } from './body/body-row/body-row.component';\r\nimport { BodyComponent } from './body/body/body.component';\r\nimport { ScrollerComponent } from './body/scroller/scroller.component';\r\nimport { ProgressBarComponent } from './body/progress-bar/progress-bar.component';\r\nimport { SelectionComponent } from './body/selection/selection.component';\r\nimport { FooterComponent } from './footer/footer/footer.component';\r\nimport { PagerComponent } from './footer/pager/pager.component';\r\nimport { HeaderCellComponent } from './header/header-cell/header-cell.component';\r\nimport { HeaderComponent } from './header/header/header.component';\r\nimport { ResizeableDirective } from '../../directives/resizeable.directive';\r\nimport { LongPressDirective } from '../../directives/long-press.directive';\r\nimport { DraggableDirective } from '../../directives/draggable.directive';\r\nimport { DatatableComponent } from './datatable.component';\r\nimport { ScrollbarHelper } from '../../services/scrollbar-helper.service';\r\nimport { ColumnChangesService } from '../../services/column-changes.service';\r\nimport { DimensionsHelper } from '../../services/dimensions-helper.service';\r\nimport { DCAtomModule } from '../atoms';\r\nimport { CellInputComponent } from './elements/cell-input/cell-input.component';\r\nimport { ColumnSearchComponent } from './elements/column-search/column-search.component';\r\nimport { ToolbarComponent } from './elements/toolbar/toolbar.component';\r\nimport { GridSearchComponent } from './elements/toolbar/grid-search/grid-search/grid-search.component';\r\nimport { ColumnChooserComponent } from './elements/toolbar/column-chooser/column-chooser.component';\r\nimport { ColumnReorderComponent } from './elements/toolbar/column-reorder/column-reorder.component';\r\nimport { DCMoleculeModule } from '../molecules';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SummaryRowComponent,\r\n    BodyCellComponent,\r\n    BodyRowWrapperComponent,\r\n    BodyRowComponent,\r\n    BodyComponent,\r\n    ScrollerComponent,\r\n    ProgressBarComponent,\r\n    SelectionComponent,\r\n    FooterComponent,\r\n    PagerComponent,\r\n    HeaderCellComponent,\r\n    HeaderComponent,\r\n    ResizeableDirective,\r\n    LongPressDirective,\r\n    DraggableDirective,\r\n    DatatableComponent,\r\n    CellInputComponent,\r\n    ColumnSearchComponent,\r\n    ToolbarComponent,\r\n    GridSearchComponent,\r\n    ColumnChooserComponent,\r\n    ColumnReorderComponent,\r\n\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    HttpClientModule,\r\n    DCAtomModule,\r\n    DCMoleculeModule\r\n  ],\r\n  exports: [\r\n    SummaryRowComponent,\r\n    BodyCellComponent,\r\n    BodyRowWrapperComponent,\r\n    BodyRowComponent,\r\n    BodyComponent,\r\n    ScrollerComponent,\r\n    ProgressBarComponent,\r\n    SelectionComponent,\r\n    FooterComponent,\r\n    PagerComponent,\r\n    HeaderCellComponent,\r\n    HeaderComponent,\r\n    ResizeableDirective,\r\n    LongPressDirective,\r\n    DraggableDirective,\r\n    DatatableComponent,\r\n    ToolbarComponent\r\n  ],\r\n  providers:[ScrollbarHelper,ColumnChangesService,DimensionsHelper]\r\n})\r\nexport class DCGridModule { }","import {\r\n  Directive,\r\n  Output,\r\n  EventEmitter,\r\n  ContentChildren,\r\n  QueryList,\r\n  KeyValueDiffers,\r\n  AfterContentInit,\r\n  OnDestroy,\r\n  Inject\r\n} from '@angular/core';\r\nimport { DraggableDirective } from './draggable.directive';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({ selector: '[orderable]' })\r\nexport class OrderableDirective implements AfterContentInit, OnDestroy {\r\n  @Output() reorder: EventEmitter<any> = new EventEmitter();\r\n  @Output() targetChanged: EventEmitter<any> = new EventEmitter();\r\n\r\n  @ContentChildren(DraggableDirective, { descendants: true })\r\n  draggables: QueryList<DraggableDirective>;\r\n\r\n  positions: any;\r\n  differ: any;\r\n  lastDraggingIndex?: number;\r\n\r\n  constructor(differs: KeyValueDiffers, @Inject(DOCUMENT) private document: any) {\r\n    this.differ = differs.find({}).create();\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    // HACK: Investigate Better Way\r\n    this.updateSubscriptions();\r\n    this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.draggables.forEach(d => {\r\n      d.dragStart.unsubscribe();\r\n      d.dragging.unsubscribe();\r\n      d.dragEnd.unsubscribe();\r\n    });\r\n  }\r\n\r\n  updateSubscriptions(): void {\r\n    const diffs = this.differ.diff(this.createMapDiffs());\r\n\r\n    if (diffs) {\r\n      const subscribe = ({ currentValue, previousValue }: any) => {\r\n        unsubscribe({ previousValue });\r\n\r\n        if (currentValue) {\r\n          currentValue.dragStart.subscribe(this.onDragStart.bind(this));\r\n          currentValue.dragging.subscribe(this.onDragging.bind(this));\r\n          currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));\r\n        }\r\n      };\r\n\r\n      const unsubscribe = ({ previousValue }: any) => {\r\n        if (previousValue) {\r\n          previousValue.dragStart.unsubscribe();\r\n          previousValue.dragging.unsubscribe();\r\n          previousValue.dragEnd.unsubscribe();\r\n        }\r\n      };\r\n\r\n      diffs.forEachAddedItem(subscribe);\r\n      // diffs.forEachChangedItem(subscribe.bind(this));\r\n      diffs.forEachRemovedItem(unsubscribe);\r\n    }\r\n  }\r\n\r\n  onDragStart(): void {\r\n    this.positions = {};\r\n\r\n    let i = 0;\r\n    for (const dragger of this.draggables.toArray()) {\r\n      const elm = dragger.element;\r\n      const left = parseInt(elm.offsetLeft.toString(), 0);\r\n      this.positions[dragger.dragModel.prop] = {\r\n        left,\r\n        right: left + parseInt(elm.offsetWidth.toString(), 0),\r\n        index: i++,\r\n        element: elm\r\n      };\r\n    }\r\n  }\r\n\r\n  onDragging({ element, model, event }: any): void {\r\n    const prevPos = this.positions[model.prop];\r\n    const target = this.isTarget(model, event);\r\n\r\n    if (target) {\r\n      if (this.lastDraggingIndex !== target.i) {\r\n        this.targetChanged.emit({\r\n          prevIndex: this.lastDraggingIndex,\r\n          newIndex: target.i,\r\n          initialIndex: prevPos.index\r\n        });\r\n        this.lastDraggingIndex = target.i;\r\n      }\r\n    } else if (this.lastDraggingIndex !== prevPos.index) {\r\n      this.targetChanged.emit({\r\n        prevIndex: this.lastDraggingIndex,\r\n        initialIndex: prevPos.index\r\n      });\r\n      this.lastDraggingIndex = prevPos.index;\r\n    }\r\n  }\r\n\r\n  onDragEnd({ element, model, event }: any): void {\r\n    const prevPos = this.positions[model.prop];\r\n\r\n    const target = this.isTarget(model, event);\r\n    if (target) {\r\n      this.reorder.emit({\r\n        prevIndex: prevPos.index,\r\n        newIndex: target.i,\r\n        model\r\n      });\r\n    }\r\n\r\n    this.lastDraggingIndex = undefined;\r\n    element.style.left = 'auto';\r\n  }\r\n\r\n  isTarget(model: any, event: any): any {\r\n    let i = 0;\r\n    const x = event.x || event.clientX;\r\n    const y = event.y || event.clientY;\r\n    const targets = this.document.elementsFromPoint(x, y);\r\n\r\n    for (const prop in this.positions) {\r\n      // current column position which throws event.\r\n      const pos = this.positions[prop];\r\n\r\n      // since we drag the inner span, we need to find it in the elements at the cursor\r\n      if (model.prop !== prop && targets.find((el: any) => el === pos.element)) {\r\n        return {\r\n          pos,\r\n          i\r\n        };\r\n      }\r\n\r\n      i++;\r\n    }\r\n  }\r\n\r\n  private createMapDiffs(): { [key: string]: DraggableDirective } {\r\n    return this.draggables.toArray().reduce((acc:any, curr) => {\r\n      acc[curr.dragModel.$$id] = curr;\r\n      return acc;\r\n    }, {});\r\n  }\r\n}\r\n","import { Directive, Output, EventEmitter, ElementRef, HostBinding, NgZone, OnInit, OnDestroy } from '@angular/core';\r\n\r\n/**\r\n * Visibility Observer Directive\r\n *\r\n * Usage:\r\n *\r\n * \t\t<div\r\n * \t\t\tvisibilityObserver\r\n * \t\t\t(visible)=\"onVisible($event)\">\r\n * \t\t</div>\r\n *\r\n */\r\n@Directive({ selector: '[visibilityObserver]' })\r\nexport class VisibilityDirective implements OnInit, OnDestroy {\r\n  @HostBinding('class.visible')\r\n  isVisible: boolean = false;\r\n\r\n  @Output() visible: EventEmitter<any> = new EventEmitter();\r\n\r\n  timeout: any;\r\n\r\n  constructor(private element: ElementRef, private zone: NgZone) {}\r\n\r\n  ngOnInit(): void {\r\n    this.runCheck();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    clearTimeout(this.timeout);\r\n  }\r\n\r\n  onVisibilityChange(): void {\r\n    // trigger zone recalc for columns\r\n    this.zone.run(() => {\r\n      this.isVisible = true;\r\n      this.visible.emit(true);\r\n    });\r\n  }\r\n\r\n  runCheck(): void {\r\n    const check = () => {\r\n      // https://davidwalsh.name/offsetheight-visibility\r\n      const { offsetHeight, offsetWidth } = this.element.nativeElement;\r\n\r\n      if (offsetHeight && offsetWidth) {\r\n        clearTimeout(this.timeout);\r\n        this.onVisibilityChange();\r\n      } else {\r\n        clearTimeout(this.timeout);\r\n        this.zone.runOutsideAngular(() => {\r\n          this.timeout = setTimeout(() => check(), 50);\r\n        });\r\n      }\r\n    };\r\n\r\n    this.timeout = setTimeout(() => check());\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SidebarDataService {\r\n\r\n  constructor(private http: HttpClient) { }\r\n\r\n  getSidebarData(): Observable<any[]> {\r\n    return this.http.get<any[]>('../../../assets/jsons/sidebar-data.json');\r\n  }\r\n}\r\n","export enum ClickType {\r\n    single = 'single',\r\n    double = 'double'\r\n  }\r\n  ","/*tslint:disable */\r\n/**\r\n * @license\r\n * Copyright Google Inc. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n/**\r\n * JS version of browser APIs. This library can only run in the browser.\r\n */\r\nvar win = (typeof window !== 'undefined' && window) || <any>{};\r\n\r\nexport { win as window };\r\nexport var document = win.document;\r\nexport var location = win.location;\r\nexport var gc = win['gc'] ? () => win['gc']() : (): any => null;\r\nexport var performance = win['performance'] ? win['performance'] : null;\r\nexport const Event = win['Event'];\r\nexport const MouseEvent = win['MouseEvent'];\r\nexport const KeyboardEvent = win['KeyboardEvent'];\r\nexport const EventTarget = win['EventTarget'];\r\nexport const History = win['History'];\r\nexport const Location = win['Location'];\r\nexport const EventListener = win['EventListener'];\r\n","if (typeof document !== 'undefined' && !document.elementsFromPoint) {\r\n  document.elementsFromPoint = elementsFromPoint;\r\n}\r\n\r\n/*tslint:disable*/\r\n/**\r\n * Polyfill for `elementsFromPoint`\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint\r\n * https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380\r\n * https://gist.github.com/oslego/7265412\r\n */\r\nexport function elementsFromPoint(x: number, y: number) {\r\n  const elements = [];\r\n  const previousPointerEvents = [];\r\n  let current: any; // TODO: window.getComputedStyle should be used with inferred type (Element)\r\n  let i;\r\n  let d;\r\n\r\n  //if (document === undefined) return elements;\r\n\r\n  // get all elements via elementFromPoint, and remove them from hit-testing in order\r\n  while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {\r\n    // push the element and its current style\r\n    elements.push(current);\r\n    previousPointerEvents.push({\r\n      value: current.style.getPropertyValue('pointer-events'),\r\n      priority: current.style.getPropertyPriority('pointer-events')\r\n    });\r\n\r\n    // add \"pointer-events: none\", to get to the underlying element\r\n    current.style.setProperty('pointer-events', 'none', 'important');\r\n  }\r\n\r\n  // restore the previous pointer-events values\r\n  for (i = previousPointerEvents.length; (d = previousPointerEvents[--i]); ) {\r\n    elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);\r\n  }\r\n\r\n  // return our results\r\n  return elements;\r\n}\r\n/*tslint:enable*/\r\n","import { NgZone } from '@angular/core';\r\n\r\nexport function checkVisibility(element: any, callback: any, zone: NgZone) {\r\n  let timeout: any;\r\n\r\n  function check() {\r\n    // https://davidwalsh.name/offsetheight-visibility\r\n    const { offsetHeight, offsetWidth } = element;\r\n\r\n    if (offsetHeight && offsetWidth) {\r\n      clearTimeout(timeout);\r\n      if (callback) zone.run(() => callback());\r\n    } else {\r\n      clearTimeout(timeout);\r\n      zone.runOutsideAngular(() => {\r\n        timeout = setTimeout(() => check(), 50);\r\n      });\r\n    }\r\n  }\r\n\r\n  check();\r\n}\r\n","/*\r\n * Public API Surface of darkchicken\r\n */\r\n\r\n\r\nexport * from './lib/darkchicken.module';\r\n\r\n//ATOMS\r\nexport * from './lib/components/atoms/bread-crumb/dc-bread-crumb.component'\r\nexport * from './lib/components/atoms/button/dc-button.component';\r\nexport * from './lib/components/atoms/checkbox/dc-checkbox.component';\r\nexport * from './lib/components/atoms/icon/dc-icon.component';\r\nexport * from './lib/components/atoms/input/dc-input.component';\r\nexport * from './lib/components/atoms/list/dc-list.component';\r\nexport * from './lib/components/atoms/spinner/dc-spinner.component';\r\nexport * from './lib/components/atoms/tree/dc-tree.component';\r\nexport * from './lib/components/atoms/dc-atoms.module';\r\n\r\n//GRID\r\nexport * from './lib/components/grid/body/body/body.component'\r\nexport * from './lib/components/grid/body/body-cell/body-cell.component';\r\nexport * from './lib/components/grid/body/body-row/body-row.component';\r\nexport * from './lib/components/grid/body/body-row-wrapper/body-row-wrapper.component';\r\nexport * from './lib/components/grid/body/progress-bar/progress-bar.component';\r\nexport * from './lib/components/grid/body/scroller/scroller.component';\r\nexport * from './lib/components/grid/body/selection/selection.component';\r\nexport * from './lib/components/grid/body/summary-row/summary-row.component';\r\nexport * from './lib/components/grid/elements/cell-input/cell-input.component';\r\nexport * from './lib/components/grid/elements/column-search/column-search.component';\r\nexport * from './lib/components/grid/elements/toolbar/column-chooser/column-chooser.component';\r\nexport * from './lib/components/grid/elements/toolbar/column-reorder/column-reorder.component';\r\nexport * from './lib/components/grid/elements/toolbar/grid-search/grid-search/grid-search.component';\r\nexport * from './lib/components/grid/elements/toolbar/toolbar.component';\r\nexport * from './lib/components/grid/footer/footer/footer.component';\r\nexport * from './lib/components/grid/footer/pager/pager.component';\r\nexport * from './lib/components/grid/header/header/header.component';\r\nexport * from './lib/components/grid/header/header-cell/header-cell.component';\r\nexport * from './lib/components/grid/datatable.component';\r\nexport * from './lib/components/grid/dc-grid.module'\r\n\r\n//MOLECULES\r\nexport * from './lib/components/molecules/dc-dropdown/dc-dropdown.component';\r\nexport * from './lib/components/molecules/dc-tab/dc-tab.component';\r\nexport * from './lib/components/molecules/dc-molecules.module';\r\n\r\n\r\n//DIRECTIVES\r\nexport * from './lib/directives/body-group-header-template.directive';\r\nexport * from './lib/directives/body-group-header.directive';\r\nexport * from './lib/directives/column-cell.directive';\r\nexport * from './lib/directives/column-header.directive';\r\nexport * from './lib/directives/column.directive';\r\nexport * from './lib/directives/draggable.directive';\r\nexport * from './lib/directives/footer-template.directive';\r\nexport * from './lib/directives/footer.directive';\r\nexport * from './lib/directives/long-press.directive';\r\nexport * from './lib/directives/orderable.directive';\r\nexport * from './lib/directives/resizeable.directive';\r\nexport * from './lib/directives/row-detail-template.directive';\r\nexport * from './lib/directives/row-detail.directive';\r\nexport * from './lib/directives/tree.directive';\r\nexport * from './lib/directives/visibility.directive';\r\n\r\n//MODELS\r\nexport * from './lib/models/dc-grid.model';\r\nexport * from './lib/models/dc-models.model';\r\n\r\n\r\n//SERVİCES\r\nexport * from './lib/services/column-changes.service';\r\nexport * from './lib/services/dc.service';\r\nexport * from './lib/services/dimensions-helper.service';\r\nexport * from './lib/services/language.service';\r\nexport * from './lib/services/scrollbar-helper.service';\r\nexport * from './lib/services/sidebar-data.service';\r\n\r\n\r\n//TYPES\r\nexport * from './lib/types/click.type';\r\nexport * from './lib/types/column-mode.type';\r\nexport * from './lib/types/contextmenu.type';\r\nexport * from './lib/types/dc-types';\r\nexport * from './lib/types/selection.type';\r\nexport * from './lib/types/sort-direction.type';\r\nexport * from './lib/types/sort-prop-dir.type';\r\nexport * from './lib/types/sort.type';\r\nexport * from './lib/types/table-column.type';\r\n\r\n//UTILS\r\n\r\nexport * from './lib/utils/facade/browser';\r\nexport * from './lib/utils/camel-case';\r\nexport * from './lib/utils/column';\r\nexport * from './lib/utils/column-helper';\r\nexport * from './lib/utils/column-prop-getters';\r\nexport * from './lib/utils/elm-from-point';\r\nexport * from './lib/utils/facade/browser';\r\nexport * from './lib/utils/id';\r\nexport * from './lib/utils/keys';\r\nexport * from './lib/utils/math';\r\nexport * from './lib/utils/prefixes';\r\nexport * from './lib/utils/row-height-cache';\r\nexport * from './lib/utils/selection';\r\nexport * from './lib/utils/sort';\r\nexport * from './lib/utils/summary-row';\r\nexport * from './lib/utils/throttle';\r\nexport * from './lib/utils/translate';\r\nexport * from './lib/utils/tree';\r\nexport * from './lib/utils/visibility-observer';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DCService","i3","i1","i2.DCIconComponent","i1.LanguageService","i2","i3.DCIconComponent","i3.DCInputComponent","i4.DCIconComponent","i4.DCCheckboxComponent","i5.DcTreeComponent","i6.DcListComponent","i7.DcDropdownComponent","i3.CellInputComponent","i1.ScrollbarHelper","i3.BodyCellComponent","i2.BodyRowComponent","i2.SummaryRowComponent","i3.BodyRowWrapperComponent","i4.BodyRowComponent","i5.ScrollerComponent","i6.ProgressBarComponent","i7.SelectionComponent","i2.DCInputComponent","i2.DCButtonComponent","i1.DCIconComponent","i1.DCInputComponent","i3.GridSearchComponent","i4.ColumnChooserComponent","i2.PagerComponent","i2.ColumnSearchComponent","i2.HeaderCellComponent","i3.ResizeableDirective","i4.LongPressDirective","i5.DraggableDirective","i1.ColumnChangesService","i4.DCService","i5","i6.BodyComponent","i7.FooterComponent","i8.HeaderComponent","i9.ToolbarComponent","document"],"mappings":"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"}