{"version":3,"file":"material-dynamic-table.mjs","sources":["../../../projects/material-dynamic-table/src/lib/multi-sort/multi-sort.directive.ts","../../../projects/material-dynamic-table/src/lib/column-filter.model.ts","../../../projects/material-dynamic-table/src/lib/table-cell/cell-types/column-filter.service.ts","../../../projects/material-dynamic-table/src/lib/column-resize/closest.ts","../../../projects/material-dynamic-table/src/lib/column-resize/selectors.ts","../../../projects/material-dynamic-table/src/lib/column-resize/column-resize.ts","../../../projects/material-dynamic-table/src/lib/column-resize/column-resize-notifier.ts","../../../projects/material-dynamic-table/src/lib/column-resize/event-dispatcher.ts","../../../projects/material-dynamic-table/src/lib/column-resize/resize-strategy.ts","../../../projects/material-dynamic-table/src/lib/column-resize/column-resize-directives/common.ts","../../../projects/material-dynamic-table/src/lib/column-resize/column-resize-directives/column-resize.ts","../../../projects/material-dynamic-table/src/lib/column-resize/resize-ref.ts","../../../projects/material-dynamic-table/src/lib/column-resize/resizable.ts","../../../projects/material-dynamic-table/src/lib/column-resize/cdk-overlay-handle.ts","../../../projects/material-dynamic-table/src/lib/column-resize/overlay-handle.ts","../../../projects/material-dynamic-table/src/lib/column-resize/resizable-directives/resizable.ts","../../../projects/material-dynamic-table/src/lib/table-cell/cell.directive.ts","../../../projects/material-dynamic-table/src/lib/column-config.model.ts","../../../projects/material-dynamic-table/src/lib/table-cell/cell-types/text-cell.component.ts","../../../projects/material-dynamic-table/src/lib/table-cell/cell-types/cell.service.ts","../../../projects/material-dynamic-table/src/lib/table-cell/table-cell.component.ts","../../../projects/material-dynamic-table/src/lib/multi-sort/multi-sort-header.ts","../../../projects/material-dynamic-table/src/lib/multi-sort/multi-sort-header.html","../../../projects/material-dynamic-table/src/lib/dynamic-table.component.ts","../../../projects/material-dynamic-table/src/lib/dynamic-table.component.html","../../../projects/material-dynamic-table/src/lib/multi-sort/multi-sort-data-source.ts","../../../projects/material-dynamic-table/src/lib/column-resize/column-resize-module.ts","../../../projects/material-dynamic-table/src/lib/table-cell/cell-types/date-cell.component.ts","../../../projects/material-dynamic-table/src/lib/dynamic-table.module.ts","../../../projects/material-dynamic-table/src/public_api.ts","../../../projects/material-dynamic-table/src/material-dynamic-table.ts"],"sourcesContent":["import {\r\n  Directive,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\nimport { MatSort, MatSortable, SortDirection } from '@angular/material/sort';\r\nimport { MdtMultiSortHeader } from './multi-sort-header';\r\n\r\n/** The current sort state. */\r\nexport interface MultiSort {\r\n  sortedBy: { id: string, direction: 'asc' | 'desc' }[];\r\n}\r\n\r\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\r\n@Directive({\r\n  selector: '[mdtMultiSort]',\r\n  exportAs: 'mdtMultiSort',\r\n  inputs: ['disabled: matSortDisabled']\r\n})\r\nexport class MdtMultiSort extends MatSort implements OnChanges, OnDestroy, OnInit {\r\n\r\n  /**\r\n   * The array of active sort ids. Order defines sorting precedence.\r\n   */\r\n  @Input('mdtSortActive')\r\n  get sortedBy() {\r\n    return this._sortedBy;\r\n  }\r\n  set sortedBy(sortedBy: { id: string, direction: 'asc' | 'desc' }[]) {\r\n    this._sortedBy = sortedBy;\r\n    let sort = sortedBy ? sortedBy[0] : undefined;\r\n    let sortedValue = sort ? { active: sort.id, direction: sort.direction } : undefined;\r\n    this.sortChange.emit(sortedValue);\r\n    this.multiSortChange.emit({ sortedBy: this._sortedBy });\r\n  }\r\n\r\n  private _sortedBy: { id: string, direction: 'asc' | 'desc' }[]\r\n\r\n  start: 'asc' | 'desc' = 'asc';\r\n\r\n  @Input('mode') mode: 'single' | 'multi' = 'single';\r\n\r\n  isSortDirectionValid(direction: { [id: string]: SortDirection }): boolean {\r\n    return Object.keys(direction).every((id) => this.isIndividualSortDirectionValid(direction[id]));\r\n  }\r\n\r\n  isIndividualSortDirectionValid(direction: string): boolean {\r\n    return !direction || direction === 'asc' || direction === 'desc';\r\n  }\r\n\r\n  /** Event emitted when the user changes either the active sort or sort direction. */\r\n  @Output('matSortChange')\r\n  readonly multiSortChange: EventEmitter<MultiSort> = new EventEmitter<MultiSort>();\r\n\r\n  /** Sets the active sort id and determines the new sort direction. */\r\n  sort(sortable: MatSortable): void {\r\n    if (!Array.isArray(this.sortedBy)) {\r\n      let direction = sortable.start ? sortable.start : this.start;\r\n      this._sortedBy = [{\r\n        id: sortable.id,\r\n        direction: direction\r\n      }];  \r\n    } else {\r\n      const sort = this._sortedBy.find(s => s.id === sortable.id);\r\n      if (sort) {\r\n        this.direction = sort.direction;\r\n        let nextDirection = this.getNextSortDirection(sortable);        \r\n        if (nextDirection) {\r\n          sort.direction = nextDirection;\r\n        } else {\r\n          let index = this._sortedBy.indexOf(sort);\r\n          this._sortedBy.splice(index, 1);\r\n        }\r\n      } else {\r\n        let newSort = {\r\n          id: sortable.id,\r\n          direction: sortable.start ? sortable.start : this.start\r\n        }\r\n        if (this.mode === 'multi') {\r\n          this._sortedBy.push(newSort);\r\n        } else {\r\n          this._sortedBy = [newSort]\r\n        }\r\n      }\r\n    }\r\n\r\n    this.multiSortChange.emit({ sortedBy: this._sortedBy });   \r\n    super.sort(sortable);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n}\r\n","import { ColumnConfig } from './column-config.model';\r\n\r\nexport class ColumnFilter {\r\n    column: ColumnConfig;\r\n    filter: any;\r\n}","import { Type, Injectable } from '@angular/core';\r\n\r\n@Injectable()\nexport class ColumnFilterService {\r\n\r\n    private registeredFilters: { [key: string]: Type<any>; } = {};\r\n    \r\n    registerFilter(type: string, component: Type<any>) {\r\n        this.registeredFilters[type] = component;\r\n    }\r\n\r\n    getFilter(type: string): Type<any> {\r\n        const component = this.registeredFilters[type];\r\n        \r\n        return component;\r\n    }\r\n}","/**\r\n * @license\r\n * Copyright Google LLC 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/** closest implementation that is able to start from non-Element Nodes. */\r\nexport function closest(\r\n  element: EventTarget | Element | null | undefined,\r\n  selector: string,\r\n): Element | null {\r\n  if (!(element instanceof Node)) {\r\n    return null;\r\n  }\r\n\r\n  let curr: Node | null = element;\r\n  while (curr != null && !(curr instanceof Element)) {\r\n    curr = curr.parentNode;\r\n  }\r\n\r\n  return curr?.closest(selector) ?? null;\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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// TODO: Figure out how to remove `mat-` classes from the CDK part of the\r\n// column resize implementation.\r\n\r\nexport const HEADER_CELL_SELECTOR = '.cdk-header-cell, .mat-header-cell';\r\n\r\nexport const HEADER_ROW_SELECTOR = '.cdk-header-row, .mat-header-row';\r\n\r\nexport const RESIZE_OVERLAY_SELECTOR = '.mat-column-resize-overlay-thumb';\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { AfterViewInit, Directive, ElementRef, NgZone, OnDestroy } from '@angular/core';\r\nimport { fromEvent, merge, Subject } from 'rxjs';\r\nimport { filter, map, mapTo, pairwise, startWith, take, takeUntil } from 'rxjs/operators';\r\n\r\nimport { closest } from './closest';\r\n\r\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from './column-resize-notifier';\r\nimport { HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR } from './selectors';\r\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\r\n\r\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\r\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\r\n\r\nlet nextId = 0;\r\n\r\n/**\r\n * Base class for ColumnResize directives which attach to mat-table elements to\r\n * provide common events and services for column resizing.\r\n */\r\n@Directive()\r\nexport abstract class ColumnResize implements AfterViewInit, OnDestroy {\r\n  protected readonly destroyed = new Subject<void>();\r\n\r\n  /* Publicly accessible interface for triggering and being notified of resizes. */\r\n  abstract readonly columnResizeNotifier: ColumnResizeNotifier;\r\n\r\n  /* ElementRef that this directive is attached to. Exposed For use by column-level directives */\r\n  abstract readonly elementRef: ElementRef<HTMLElement>;\r\n\r\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\r\n  protected abstract readonly ngZone: NgZone;\r\n  protected abstract readonly notifier: ColumnResizeNotifierSource;\r\n\r\n  /** Unique ID for this table instance. */\r\n  protected readonly selectorId = `${++nextId}`;\r\n\r\n  /** The id attribute of the table, if specified. */\r\n  id?: string;\r\n\r\n  ngAfterViewInit() {\r\n    this.elementRef.nativeElement!.classList.add(this.getUniqueCssClass());\r\n\r\n    this._listenForRowHoverEvents();\r\n    this._listenForResizeActivity();\r\n    this._listenForHoverActivity();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyed.next();\r\n    this.destroyed.complete();\r\n  }\r\n\r\n  /** Gets the unique CSS class name for this table instance. */\r\n  getUniqueCssClass() {\r\n    return `cdk-column-resize-${this.selectorId}`;\r\n  }\r\n\r\n  /** Called when a column in the table is resized. Applies a css class to the table element. */\r\n  setResized() {\r\n    this.elementRef.nativeElement!.classList.add(WITH_RESIZED_COLUMN_CLASS);\r\n  }\r\n\r\n  getTableHeight() {\r\n    return this.elementRef.nativeElement!.offsetHeight;\r\n  }\r\n\r\n  private _listenForRowHoverEvents() {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const element = this.elementRef.nativeElement!;\r\n\r\n      fromEvent<MouseEvent>(element, 'mouseover')\r\n        .pipe(\r\n          map(event => closest(event.target, HEADER_CELL_SELECTOR)),\r\n          takeUntil(this.destroyed),\r\n        )\r\n        .subscribe(this.eventDispatcher.headerCellHovered);\r\n      fromEvent<MouseEvent>(element, 'mouseleave')\r\n        .pipe(\r\n          filter(\r\n            event =>\r\n              !!event.relatedTarget &&\r\n              !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR),\r\n          ),\r\n          mapTo(null),\r\n          takeUntil(this.destroyed),\r\n        )\r\n        .subscribe(this.eventDispatcher.headerCellHovered);\r\n    });\r\n  }\r\n\r\n  private _listenForResizeActivity() {\r\n    merge(\r\n      this.eventDispatcher.overlayHandleActiveForCell.pipe(mapTo(undefined)),\r\n      this.notifier.triggerResize.pipe(mapTo(undefined)),\r\n      this.notifier.resizeCompleted.pipe(mapTo(undefined)),\r\n    )\r\n      .pipe(take(1), takeUntil(this.destroyed))\r\n      .subscribe(() => {\r\n        this.setResized();\r\n      });\r\n  }\r\n\r\n  private _listenForHoverActivity() {\r\n    this.eventDispatcher.headerRowHoveredOrActiveDistinct\r\n      .pipe(startWith(null), pairwise(), takeUntil(this.destroyed))\r\n      .subscribe(([previousRow, hoveredRow]) => {\r\n        if (hoveredRow) {\r\n          hoveredRow.classList.add(HOVER_OR_ACTIVE_CLASS);\r\n        }\r\n        if (previousRow) {\r\n          previousRow.classList.remove(HOVER_OR_ACTIVE_CLASS);\r\n        }\r\n      });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n/** Indicates the width of a column. */\r\nexport interface ColumnSize {\r\n  /** The ID/name of the column, as defined in CdkColumnDef. */\r\n  readonly columnId: string;\r\n\r\n  /** The width in pixels of the column. */\r\n  readonly size: number;\r\n\r\n  /** The width in pixels of the column prior to this update, if known. */\r\n  readonly previousSize?: number;\r\n}\r\n\r\n/** Interface describing column size changes. */\r\nexport interface ColumnSizeAction extends ColumnSize {\r\n  /**\r\n   * Whether the resize action should be applied instantaneously. False for events triggered during\r\n   * a UI-triggered resize (such as with the mouse) until the mouse button is released. True\r\n   * for all programmatically triggered resizes.\r\n   */\r\n  readonly completeImmediately?: boolean;\r\n\r\n  /**\r\n   * Whether the resize action is being applied to a sticky/stickyEnd column.\r\n   */\r\n  readonly isStickyColumn?: boolean;\r\n}\r\n\r\n/**\r\n * Originating source of column resize events within a table.\r\n * @docs-private\r\n */\r\n@Injectable()\r\nexport class ColumnResizeNotifierSource {\r\n  /** Emits when an in-progress resize is canceled. */\r\n  readonly resizeCanceled = new Subject<ColumnSizeAction>();\r\n\r\n  /** Emits when a resize is applied. */\r\n  readonly resizeCompleted = new Subject<ColumnSize>();\r\n\r\n  /** Triggers a resize action. */\r\n  readonly triggerResize = new Subject<ColumnSizeAction>();\r\n}\r\n\r\n/** Service for triggering column resizes imperatively or being notified of them. */\r\n@Injectable()\r\nexport class ColumnResizeNotifier {\r\n  /** Emits whenever a column is resized. */\r\n  readonly resizeCompleted: Observable<ColumnSize> = this._source.resizeCompleted;\r\n\r\n  constructor(private readonly _source: ColumnResizeNotifierSource) { }\r\n\r\n  /** Instantly resizes the specified column. */\r\n  resize(columnId: string, size: number): void {\r\n    this._source.triggerResize.next({\r\n      columnId,\r\n      size,\r\n      completeImmediately: true,\r\n      isStickyColumn: true,\r\n    });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { combineLatest, MonoTypeOperatorFunction, Observable, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, map, share, skip, startWith } from 'rxjs/operators';\r\n\r\nimport { closest } from './closest';\r\n\r\nimport { HEADER_ROW_SELECTOR } from './selectors';\r\n\r\n/** Coordinates events between the column resize directives. */\r\n@Injectable()\r\nexport class HeaderRowEventDispatcher {\r\n  /**\r\n   * Emits the currently hovered header cell or null when no header cells are hovered.\r\n   * Exposed publicly for events to feed in, but subscribers should use headerCellHoveredDistinct,\r\n   * defined below.\r\n   */\r\n  readonly headerCellHovered = new Subject<Element | null>();\r\n\r\n  /**\r\n   * Emits the header cell for which a user-triggered resize is active or null\r\n   * when no resize is in progress.\r\n   */\r\n  readonly overlayHandleActiveForCell = new Subject<Element | null>();\r\n\r\n  constructor(private readonly _ngZone: NgZone) { }\r\n\r\n  /** Distinct and shared version of headerCellHovered. */\r\n  readonly headerCellHoveredDistinct = this.headerCellHovered.pipe(distinctUntilChanged(), share());\r\n\r\n  /**\r\n   * Emits the header that is currently hovered or hosting an active resize event (with active\r\n   * taking precedence).\r\n   */\r\n  readonly headerRowHoveredOrActiveDistinct = combineLatest([\r\n    this.headerCellHoveredDistinct.pipe(\r\n      map(cell => closest(cell, HEADER_ROW_SELECTOR)),\r\n      startWith(null),\r\n      distinctUntilChanged(),\r\n    ),\r\n    this.overlayHandleActiveForCell.pipe(\r\n      map(cell => closest(cell, HEADER_ROW_SELECTOR)),\r\n      startWith(null),\r\n      distinctUntilChanged(),\r\n    ),\r\n  ]).pipe(\r\n    skip(1), // Ignore initial [null, null] emission.\r\n    map(([hovered, active]) => active || hovered),\r\n    distinctUntilChanged(),\r\n    share(),\r\n  );\r\n\r\n  private readonly _headerRowHoveredOrActiveDistinctReenterZone =\r\n    this.headerRowHoveredOrActiveDistinct.pipe(this._enterZone(), share());\r\n\r\n  // Optimization: Share row events observable with subsequent callers.\r\n  // At startup, calls will be sequential by row (and typically there's only one).\r\n  private _lastSeenRow: Element | null = null;\r\n  private _lastSeenRowHover: Observable<boolean> | null = null;\r\n\r\n  /**\r\n   * Emits whether the specified row should show its overlay controls.\r\n   * Emission occurs within the NgZone.\r\n   */\r\n  resizeOverlayVisibleForHeaderRow(row: Element): Observable<boolean> {\r\n    if (row !== this._lastSeenRow) {\r\n      this._lastSeenRow = row;\r\n      this._lastSeenRowHover = this._headerRowHoveredOrActiveDistinctReenterZone.pipe(\r\n        map(hoveredRow => hoveredRow === row),\r\n        distinctUntilChanged(),\r\n        share(),\r\n      );\r\n    }\r\n\r\n    return this._lastSeenRowHover!;\r\n  }\r\n\r\n  private _enterZone<T>(): MonoTypeOperatorFunction<T> {\r\n    return (source: Observable<T>) =>\r\n      new Observable<T>(observer =>\r\n        source.subscribe({\r\n          next: value => this._ngZone.run(() => observer.next(value)),\r\n          error: err => observer.error(err),\r\n          complete: () => observer.complete(),\r\n        }),\r\n      );\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { Inject, Injectable, OnDestroy, Provider, CSP_NONCE, Optional } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\r\nimport { CdkTable, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\r\n\r\nimport { ColumnResize } from './column-resize';\r\n\r\n/**\r\n * Provides an implementation for resizing a column.\r\n * The details of how resizing works for tables for flex mat-tables are quite different.\r\n */\r\n@Injectable()\r\nexport abstract class ResizeStrategy {\r\n  protected abstract readonly columnResize: ColumnResize;\r\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\r\n  protected abstract readonly table: CdkTable<unknown>;\r\n\r\n  private _pendingResizeDelta: number | null = null;\r\n\r\n  /** Updates the width of the specified column. */\r\n  abstract applyColumnSize(\r\n    cssFriendlyColumnName: string,\r\n    columnHeader: HTMLElement,\r\n    sizeInPx: number,\r\n    previousSizeInPx?: number,\r\n  ): void;\r\n\r\n  /** Applies a minimum width to the specified column, updating its current width as needed. */\r\n  abstract applyMinColumnSize(\r\n    cssFriendlyColumnName: string,\r\n    columnHeader: HTMLElement,\r\n    minSizeInPx: number,\r\n  ): void;\r\n\r\n  /** Applies a maximum width to the specified column, updating its current width as needed. */\r\n  abstract applyMaxColumnSize(\r\n    cssFriendlyColumnName: string,\r\n    columnHeader: HTMLElement,\r\n    minSizeInPx: number,\r\n  ): void;\r\n\r\n  /** Adjusts the width of the table element by the specified delta. */\r\n  protected updateTableWidthAndStickyColumns(delta: number): void {\r\n    if (this._pendingResizeDelta === null) {\r\n      const tableElement = this.columnResize.elementRef.nativeElement;\r\n      const tableWidth = getElementWidth(tableElement);\r\n\r\n      this.styleScheduler.schedule(() => {\r\n        tableElement.style.width = coerceCssPixelValue(tableWidth + this._pendingResizeDelta!);\r\n\r\n        this._pendingResizeDelta = null;\r\n      });\r\n\r\n      this.styleScheduler.scheduleEnd(() => {\r\n        this.table.updateStickyColumnStyles();\r\n      });\r\n    }\r\n\r\n    this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;\r\n  }\r\n}\r\n\r\n/**\r\n * The optimally performing resize strategy for &lt;table&gt; elements with table-layout: fixed.\r\n * Tested against and outperformed:\r\n *   CSS selector\r\n *   CSS selector w/ CSS variable\r\n *   Updating all cell nodes\r\n */\r\n@Injectable()\r\nexport class TableLayoutFixedResizeStrategy extends ResizeStrategy {\r\n  constructor(\r\n    protected readonly columnResize: ColumnResize,\r\n    @Inject(_COALESCED_STYLE_SCHEDULER)\r\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\r\n    protected readonly table: CdkTable<unknown>,\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  applyColumnSize(\r\n    _: string,\r\n    columnHeader: HTMLElement,\r\n    sizeInPx: number,\r\n    previousSizeInPx?: number,\r\n  ): void {\r\n    const delta = sizeInPx - (previousSizeInPx ?? getElementWidth(columnHeader));\r\n\r\n    if (delta === 0) {\r\n      return;\r\n    }\r\n\r\n    this.styleScheduler.schedule(() => {\r\n      columnHeader.style.width = coerceCssPixelValue(sizeInPx);\r\n    });\r\n\r\n    this.updateTableWidthAndStickyColumns(delta);\r\n  }\r\n\r\n  applyMinColumnSize(_: string, columnHeader: HTMLElement, sizeInPx: number): void {\r\n    const currentWidth = getElementWidth(columnHeader);\r\n    const newWidth = Math.max(currentWidth, sizeInPx);\r\n\r\n    this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\r\n  }\r\n\r\n  applyMaxColumnSize(_: string, columnHeader: HTMLElement, sizeInPx: number): void {\r\n    const currentWidth = getElementWidth(columnHeader);\r\n    const newWidth = Math.min(currentWidth, sizeInPx);\r\n\r\n    this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\r\n  }\r\n}\r\n\r\n/**\r\n * The optimally performing resize strategy for flex mat-tables.\r\n * Tested against and outperformed:\r\n *   CSS selector w/ CSS variable\r\n *   Updating all mat-cell nodes\r\n */\r\n@Injectable()\r\nexport class CdkFlexTableResizeStrategy extends ResizeStrategy implements OnDestroy {\r\n  private readonly _document: Document;\r\n  private readonly _columnIndexes = new Map<string, number>();\r\n  private readonly _columnProperties = new Map<string, Map<string, string>>();\r\n\r\n  private _styleElement?: HTMLStyleElement;\r\n  private _indexSequence = 0;\r\n\r\n  protected readonly defaultMinSize = 0;\r\n  protected readonly defaultMaxSize = Number.MAX_SAFE_INTEGER;\r\n\r\n  constructor(\r\n    protected readonly columnResize: ColumnResize,\r\n    @Inject(_COALESCED_STYLE_SCHEDULER)\r\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\r\n    protected readonly table: CdkTable<unknown>,\r\n    @Inject(DOCUMENT) document: any,\r\n    @Inject(CSP_NONCE) @Optional() private readonly _nonce?: string | null,\r\n  ) {\r\n    super();\r\n    this._document = document;\r\n  }\r\n\r\n  applyColumnSize(\r\n    cssFriendlyColumnName: string,\r\n    columnHeader: HTMLElement,\r\n    sizeInPx: number,\r\n    previousSizeInPx?: number,\r\n  ): void {\r\n    // Optimization: Check applied width first as we probably set it already before reading\r\n    // offsetWidth which triggers layout.\r\n    const delta =\r\n      sizeInPx -\r\n      (previousSizeInPx ??\r\n        (this._getAppliedWidth(cssFriendlyColumnName) || columnHeader.offsetWidth));\r\n\r\n    if (delta === 0) {\r\n      return;\r\n    }\r\n\r\n    const cssSize = coerceCssPixelValue(sizeInPx);\r\n\r\n    this._applyProperty(cssFriendlyColumnName, 'flex', `0 0.01 ${cssSize}`);\r\n    this.updateTableWidthAndStickyColumns(delta);\r\n  }\r\n\r\n  applyMinColumnSize(cssFriendlyColumnName: string, _: HTMLElement, sizeInPx: number): void {\r\n    const cssSize = coerceCssPixelValue(sizeInPx);\r\n\r\n    this._applyProperty(\r\n      cssFriendlyColumnName,\r\n      'min-width',\r\n      cssSize,\r\n      sizeInPx !== this.defaultMinSize,\r\n    );\r\n    this.updateTableWidthAndStickyColumns(0);\r\n  }\r\n\r\n  applyMaxColumnSize(cssFriendlyColumnName: string, _: HTMLElement, sizeInPx: number): void {\r\n    const cssSize = coerceCssPixelValue(sizeInPx);\r\n\r\n    this._applyProperty(\r\n      cssFriendlyColumnName,\r\n      'max-width',\r\n      cssSize,\r\n      sizeInPx !== this.defaultMaxSize,\r\n    );\r\n    this.updateTableWidthAndStickyColumns(0);\r\n  }\r\n\r\n  protected getColumnCssClass(cssFriendlyColumnName: string): string {\r\n    return `cdk-column-${cssFriendlyColumnName}`;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._styleElement?.remove();\r\n    this._styleElement = undefined;\r\n  }\r\n\r\n  private _getPropertyValue(cssFriendlyColumnName: string, key: string): string | undefined {\r\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\r\n    return properties.get(key);\r\n  }\r\n\r\n  private _getAppliedWidth(cssFriendslyColumnName: string): number {\r\n    return coercePixelsFromFlexValue(this._getPropertyValue(cssFriendslyColumnName, 'flex'));\r\n  }\r\n\r\n  private _applyProperty(\r\n    cssFriendlyColumnName: string,\r\n    key: string,\r\n    value: string,\r\n    enable = true,\r\n  ): void {\r\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\r\n\r\n    this.styleScheduler.schedule(() => {\r\n      if (enable) {\r\n        properties.set(key, value);\r\n      } else {\r\n        properties.delete(key);\r\n      }\r\n      this._applySizeCss(cssFriendlyColumnName);\r\n    });\r\n  }\r\n\r\n  private _getStyleSheet(): CSSStyleSheet {\r\n    if (!this._styleElement) {\r\n      this._styleElement = this._document.createElement('style');\r\n\r\n      if (this._nonce) {\r\n        this._styleElement.setAttribute('nonce', this._nonce);\r\n      }\r\n\r\n      this._styleElement.appendChild(this._document.createTextNode(''));\r\n      this._document.head.appendChild(this._styleElement);\r\n    }\r\n\r\n    return this._styleElement.sheet as CSSStyleSheet;\r\n  }\r\n\r\n  private _getColumnPropertiesMap(cssFriendlyColumnName: string): Map<string, string> {\r\n    let properties = this._columnProperties.get(cssFriendlyColumnName);\r\n    if (properties === undefined) {\r\n      properties = new Map<string, string>();\r\n      this._columnProperties.set(cssFriendlyColumnName, properties);\r\n    }\r\n    return properties;\r\n  }\r\n\r\n  private _applySizeCss(cssFriendlyColumnName: string) {\r\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\r\n    const propertyKeys = Array.from(properties.keys());\r\n\r\n    let index = this._columnIndexes.get(cssFriendlyColumnName);\r\n    if (index === undefined) {\r\n      if (!propertyKeys.length) {\r\n        // Nothing to set or unset.\r\n        return;\r\n      }\r\n\r\n      index = this._indexSequence++;\r\n      this._columnIndexes.set(cssFriendlyColumnName, index);\r\n    } else {\r\n      this._getStyleSheet().deleteRule(index);\r\n    }\r\n\r\n    const columnClassName = this.getColumnCssClass(cssFriendlyColumnName);\r\n    const tableClassName = this.columnResize.getUniqueCssClass();\r\n\r\n    const selector = `.${tableClassName} .${columnClassName}`;\r\n    const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');\r\n\r\n    this._getStyleSheet().insertRule(`${selector} {${body}}`, index!);\r\n  }\r\n}\r\n\r\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\r\nfunction coercePixelsFromCssValue(cssValue: string): number {\r\n  return Number(cssValue.match(/(\\d+)px/)?.[1]);\r\n}\r\n\r\n/** Gets the style.width pixels on the specified element if present, otherwise its offsetWidth. */\r\nfunction getElementWidth(element: HTMLElement) {\r\n  // Optimization: Check style.width first as we probably set it already before reading\r\n  // offsetWidth which triggers layout.\r\n  return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\r\n}\r\n\r\n/**\r\n * Converts CSS flex values as set in CdkFlexTableResizeStrategy to numbers,\r\n * eg \"0 0.01 123px\" to 123.\r\n */\r\nfunction coercePixelsFromFlexValue(flexValue: string | undefined): number {\r\n  return Number(flexValue?.match(/0 0\\.01 (\\d+)px/)?.[1]);\r\n}\r\n\r\nexport const TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER: Provider = {\r\n  provide: ResizeStrategy,\r\n  useClass: TableLayoutFixedResizeStrategy,\r\n};\r\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\r\n  provide: ResizeStrategy,\r\n  useClass: CdkFlexTableResizeStrategy,\r\n};\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { Provider } from '@angular/core';\r\n\r\nimport { ColumnResize } from '../column-resize';\r\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\r\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\r\n\r\nimport { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER } from '../resize-strategy';\r\n\r\nexport const TABLE_PROVIDERS: Provider[] = [\r\n  ColumnResizeNotifier,\r\n  HeaderRowEventDispatcher,\r\n  ColumnResizeNotifierSource,\r\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\r\n];\r\n\r\nexport const TABLE_HOST_BINDINGS = {\r\n  'class': 'mat-column-resize-table',\r\n};\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { Directive, ElementRef, NgZone } from '@angular/core';\r\nimport { ColumnResize } from '../column-resize';\r\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\r\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\r\n\r\nimport { TABLE_HOST_BINDINGS, TABLE_PROVIDERS } from './common';\r\n\r\n/**\r\n * Explicitly enables column resizing for a table-based mat-table.\r\n * Individual columns must be annotated specifically.\r\n */\r\n@Directive({\r\n  selector: 'table[mat-table][columnResize]',\r\n  host: TABLE_HOST_BINDINGS,\r\n  providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }],\r\n  standalone: true\r\n})\r\nexport class MatColumnResize extends ColumnResize {\r\n  constructor(\r\n    readonly columnResizeNotifier: ColumnResizeNotifier,\r\n    readonly elementRef: ElementRef<HTMLElement>,\r\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\r\n    protected readonly ngZone: NgZone,\r\n    protected readonly notifier: ColumnResizeNotifierSource,\r\n  ) {\r\n    super();\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { ElementRef } from '@angular/core';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\n\r\n/** Tracks state of resize events in progress. */\r\nexport class ResizeRef {\r\n  constructor(\r\n    readonly origin: ElementRef,\r\n    readonly overlayRef: OverlayRef,\r\n    readonly minWidthPx: number,\r\n    readonly maxWidthPx: number,\r\n  ) { }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport {\r\n  AfterViewInit,\r\n  Directive,\r\n  ElementRef,\r\n  Injector,\r\n  NgZone,\r\n  OnDestroy,\r\n  Type,\r\n  ViewContainerRef,\r\n  ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { CdkColumnDef, _CoalescedStyleScheduler } from '@angular/cdk/table';\r\nimport { merge, Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { closest } from './closest';\r\n\r\nimport { HEADER_ROW_SELECTOR } from './selectors';\r\nimport { ResizeOverlayHandle } from './cdk-overlay-handle';\r\nimport { ColumnResize } from './column-resize';\r\nimport { ColumnSizeAction, ColumnResizeNotifierSource } from './column-resize-notifier';\r\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\r\nimport { ResizeRef } from './resize-ref';\r\nimport { ResizeStrategy } from './resize-strategy';\r\n\r\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\r\n\r\n/**\r\n * Base class for Resizable directives which are applied to column headers to make those columns\r\n * resizable.\r\n */\r\n@Directive()\r\nexport abstract class Resizable<HandleComponent extends ResizeOverlayHandle>\r\n  implements AfterViewInit, OnDestroy {\r\n  protected minWidthPxInternal: number = 0;\r\n  protected maxWidthPxInternal: number = Number.MAX_SAFE_INTEGER;\r\n  protected enabled: boolean = false;\r\n\r\n  protected inlineHandle?: HTMLElement;\r\n  protected overlayRef?: OverlayRef;\r\n  protected readonly destroyed = new Subject<void>();\r\n\r\n  protected abstract readonly columnDef: CdkColumnDef;\r\n  protected abstract readonly columnResize: ColumnResize;\r\n  protected abstract readonly directionality: Directionality;\r\n  protected abstract readonly document: Document;\r\n  protected abstract readonly elementRef: ElementRef;\r\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\r\n  protected abstract readonly injector: Injector;\r\n  protected abstract readonly ngZone: NgZone;\r\n  protected abstract readonly overlay: Overlay;\r\n  protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\r\n  protected abstract readonly resizeStrategy: ResizeStrategy;\r\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\r\n  protected abstract readonly viewContainerRef: ViewContainerRef;\r\n  protected abstract readonly changeDetectorRef: ChangeDetectorRef;\r\n\r\n  private _viewInitialized = false;\r\n  private _isDestroyed = false;\r\n\r\n  /** The minimum width to allow the column to be sized to. */\r\n  get minWidthPx(): number {\r\n    return this.minWidthPxInternal;\r\n  }\r\n  set minWidthPx(value: number) {\r\n    this.minWidthPxInternal = value;\r\n\r\n    this.columnResize.setResized();\r\n    if (this.elementRef.nativeElement && this._viewInitialized) {\r\n      this._applyMinWidthPx();\r\n    }\r\n  }\r\n\r\n  get settings(): boolean | { minWidth: number, maxWidth: number } {\r\n    return this.enabled;\r\n  }\r\n  set settings(value: boolean | { minWidth: number, maxWidth: number }) {\r\n    this.enabled = !!value;\r\n\r\n    if (typeof value === 'object') {\r\n      if (value.minWidth) {\r\n        this.minWidthPx = value.minWidth;\r\n      }\r\n      if (value.maxWidth) {\r\n        this.maxWidthPx = value.maxWidth;\r\n      }\r\n    }\r\n  }\r\n\r\n  /** The maximum width to allow the column to be sized to. */\r\n  get maxWidthPx(): number {\r\n    return this.maxWidthPxInternal;\r\n  }\r\n  set maxWidthPx(value: number) {\r\n    this.maxWidthPxInternal = value;\r\n\r\n    this.columnResize.setResized();\r\n    if (this.elementRef.nativeElement && this._viewInitialized) {\r\n      this._applyMaxWidthPx();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this._listenForRowHoverEvents();\r\n    this._listenForResizeEvents();\r\n    this._appendInlineHandle();\r\n\r\n    this.styleScheduler.scheduleEnd(() => {\r\n      if (this._isDestroyed) return;\r\n      this._viewInitialized = true;\r\n      this._applyMinWidthPx();\r\n      this._applyMaxWidthPx();\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._isDestroyed = true;\r\n    this.destroyed.next();\r\n    this.destroyed.complete();\r\n    this.inlineHandle?.remove();\r\n    this.overlayRef?.dispose();\r\n  }\r\n\r\n  protected abstract getInlineHandleCssClassName(): string;\r\n\r\n  protected abstract getOverlayHandleComponentType(): Type<HandleComponent>;\r\n\r\n  private _createOverlayForHandle(): OverlayRef {\r\n    // Use of overlays allows us to properly capture click events spanning parts\r\n    // of two table cells and is also useful for displaying a resize thumb\r\n    // over both cells and extending it down the table as needed.\r\n\r\n    const isRtl = this.directionality.value === 'rtl';\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this.elementRef.nativeElement!)\r\n      .withFlexibleDimensions(false)\r\n      .withGrowAfterOpen(false)\r\n      .withPush(false)\r\n      .withDefaultOffsetX(isRtl ? 1 : 0)\r\n      .withPositions([\r\n        {\r\n          originX: isRtl ? 'start' : 'end',\r\n          originY: 'top',\r\n          overlayX: 'center',\r\n          overlayY: 'top',\r\n        },\r\n      ]);\r\n\r\n    return this.overlay.create({\r\n      // Always position the overlay based on left-indexed coordinates.\r\n      direction: 'ltr',\r\n      disposeOnNavigation: true,\r\n      positionStrategy,\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n      width: '16px',\r\n    });\r\n  }\r\n\r\n  private _listenForRowHoverEvents(): void {\r\n    const element = this.elementRef.nativeElement!;\r\n    const takeUntilDestroyed = takeUntil<boolean>(this.destroyed);\r\n\r\n    this.eventDispatcher\r\n      .resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR)!)\r\n      .pipe(takeUntilDestroyed)\r\n      .subscribe(hoveringRow => {\r\n        if (hoveringRow && this.enabled) {\r\n          if (!this.overlayRef) {\r\n            this.overlayRef = this._createOverlayForHandle();\r\n          }\r\n\r\n          this._showHandleOverlay();\r\n        } else if (this.overlayRef) {\r\n          // todo - can't detach during an active resize - need to work that out\r\n          this.overlayRef.detach();\r\n        }\r\n      });\r\n  }\r\n\r\n  private _listenForResizeEvents() {\r\n    const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroyed);\r\n\r\n    merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\r\n      .pipe(\r\n        takeUntilDestroyed,\r\n        filter(columnSize => columnSize.columnId === this.columnDef.name),\r\n      )\r\n      .subscribe(({ size, previousSize, completeImmediately }) => {\r\n        this.elementRef.nativeElement!.classList.add(OVERLAY_ACTIVE_CLASS);\r\n        this._applySize(size, previousSize);\r\n\r\n        if (completeImmediately) {\r\n          this._completeResizeOperation();\r\n        }\r\n      });\r\n\r\n    merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\r\n      .pipe(takeUntilDestroyed)\r\n      .subscribe(columnSize => {\r\n        this._cleanUpAfterResize(columnSize);\r\n      });\r\n  }\r\n\r\n  private _completeResizeOperation(): void {\r\n    this.ngZone.run(() => {\r\n      this.resizeNotifier.resizeCompleted.next({\r\n        columnId: this.columnDef.name,\r\n        size: this.elementRef.nativeElement!.offsetWidth,\r\n      });\r\n    });\r\n  }\r\n\r\n  private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\r\n    this.elementRef.nativeElement!.classList.remove(OVERLAY_ACTIVE_CLASS);\r\n\r\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\r\n      this._updateOverlayHandleHeight();\r\n      this.overlayRef.updatePosition();\r\n\r\n      if (columnSize.columnId === this.columnDef.name) {\r\n        this.inlineHandle!.focus();\r\n      }\r\n    }\r\n  }\r\n\r\n  private _createHandlePortal(): ComponentPortal<HandleComponent> {\r\n    const injector = Injector.create({\r\n      parent: this.injector,\r\n      providers: [\r\n        {\r\n          provide: ResizeRef,\r\n          useValue: new ResizeRef(\r\n            this.elementRef,\r\n            this.overlayRef!,\r\n            this.minWidthPx,\r\n            this.maxWidthPx,\r\n          ),\r\n        },\r\n      ],\r\n    });\r\n\r\n    return new ComponentPortal(\r\n      this.getOverlayHandleComponentType(),\r\n      this.viewContainerRef,\r\n      injector,\r\n    );\r\n  }\r\n\r\n  private _showHandleOverlay(): void {\r\n    this._updateOverlayHandleHeight();\r\n    this.overlayRef!.attach(this._createHandlePortal());\r\n\r\n    // Needed to ensure that all of the lifecycle hooks inside the overlay run immediately.\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  private _updateOverlayHandleHeight() {\r\n    this.overlayRef!.updateSize({ height: this.elementRef.nativeElement!.offsetHeight });\r\n  }\r\n\r\n  private _applySize(sizeInPixels: number, previousSize?: number): void {\r\n    const sizeToApply = Math.min(Math.max(sizeInPixels, this.minWidthPx, 0), this.maxWidthPx);\r\n\r\n    this.resizeStrategy.applyColumnSize(\r\n      this.columnDef.cssClassFriendlyName,\r\n      this.elementRef.nativeElement!,\r\n      sizeToApply,\r\n      previousSize,\r\n    );\r\n  }\r\n\r\n  private _applyMinWidthPx(): void {\r\n    this.resizeStrategy.applyMinColumnSize(\r\n      this.columnDef.cssClassFriendlyName,\r\n      this.elementRef.nativeElement,\r\n      this.minWidthPx,\r\n    );\r\n  }\r\n\r\n  private _applyMaxWidthPx(): void {\r\n    this.resizeStrategy.applyMaxColumnSize(\r\n      this.columnDef.cssClassFriendlyName,\r\n      this.elementRef.nativeElement,\r\n      this.maxWidthPx,\r\n    );\r\n  }\r\n\r\n  private _appendInlineHandle(): void {\r\n    this.styleScheduler.schedule(() => {\r\n      this.inlineHandle = this.document.createElement('div');\r\n      this.inlineHandle.tabIndex = 0;\r\n      this.inlineHandle.className = this.getInlineHandleCssClassName();\r\n\r\n      // TODO: Apply correct aria role (probably slider) after a11y spec questions resolved.\r\n\r\n      this.elementRef.nativeElement!.appendChild(this.inlineHandle);\r\n    });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { AfterViewInit, Directive, ElementRef, OnDestroy, NgZone } from '@angular/core';\r\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { ESCAPE } from '@angular/cdk/keycodes';\r\nimport { CdkColumnDef, _CoalescedStyleScheduler } from '@angular/cdk/table';\r\nimport { fromEvent, Subject, merge } from 'rxjs';\r\nimport {\r\n  distinctUntilChanged,\r\n  filter,\r\n  map,\r\n  mapTo,\r\n  pairwise,\r\n  startWith,\r\n  takeUntil,\r\n} from 'rxjs/operators';\r\n\r\nimport { closest } from './closest';\r\n\r\nimport { HEADER_CELL_SELECTOR } from './selectors';\r\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\r\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\r\nimport { ResizeRef } from './resize-ref';\r\n\r\n// TODO: Take another look at using cdk drag drop. IIRC I ran into a couple\r\n// good reasons for not using it but I don't remember what they were at this point.\r\n/**\r\n * Base class for a component shown over the edge of a resizable column that is responsible\r\n * for handling column resize mouse events and displaying any visible UI on the column edge.\r\n */\r\n@Directive()\r\nexport abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {\r\n  protected readonly destroyed = new Subject<void>();\r\n\r\n  protected abstract readonly columnDef: CdkColumnDef;\r\n  protected abstract readonly document: Document;\r\n  protected abstract readonly directionality: Directionality;\r\n  protected abstract readonly elementRef: ElementRef;\r\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\r\n  protected abstract readonly ngZone: NgZone;\r\n  protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\r\n  protected abstract readonly resizeRef: ResizeRef;\r\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\r\n\r\n  ngAfterViewInit() {\r\n    this._listenForMouseEvents();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyed.next();\r\n    this.destroyed.complete();\r\n  }\r\n\r\n  private _listenForMouseEvents() {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      fromEvent<MouseEvent>(this.elementRef.nativeElement!, 'mouseenter')\r\n        .pipe(mapTo(this.resizeRef.origin.nativeElement!), takeUntil(this.destroyed))\r\n        .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\r\n\r\n      fromEvent<MouseEvent>(this.elementRef.nativeElement!, 'mouseleave')\r\n        .pipe(\r\n          map(\r\n            event =>\r\n              event.relatedTarget && closest(event.relatedTarget as Element, HEADER_CELL_SELECTOR),\r\n          ),\r\n          takeUntil(this.destroyed),\r\n        )\r\n        .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\r\n\r\n      fromEvent<MouseEvent>(this.elementRef.nativeElement!, 'mousedown')\r\n        .pipe(takeUntil(this.destroyed))\r\n        .subscribe(mousedownEvent => {\r\n          this._dragStarted(mousedownEvent);\r\n        });\r\n    });\r\n  }\r\n\r\n  private _dragStarted(mousedownEvent: MouseEvent) {\r\n    // Only allow dragging using the left mouse button.\r\n    if (mousedownEvent.button !== 0) {\r\n      return;\r\n    }\r\n\r\n    const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup');\r\n    const mousemove = fromEvent<MouseEvent>(this.document, 'mousemove');\r\n    const escape = fromEvent<KeyboardEvent>(this.document, 'keyup').pipe(\r\n      filter(event => event.keyCode === ESCAPE),\r\n    );\r\n\r\n    const startX = mousedownEvent.screenX;\r\n\r\n    const initialSize = this._getOriginWidth();\r\n    let overlayOffset = 0;\r\n    let originOffset = this._getOriginOffset();\r\n    let size = initialSize;\r\n    let overshot = 0;\r\n\r\n    this.updateResizeActive(true);\r\n\r\n    mouseup.pipe(takeUntil(merge(escape, this.destroyed))).subscribe(({ screenX }) => {\r\n      this.styleScheduler.scheduleEnd(() => {\r\n        this._notifyResizeEnded(size, screenX !== startX);\r\n      });\r\n    });\r\n\r\n    escape.pipe(takeUntil(merge(mouseup, this.destroyed))).subscribe(() => {\r\n      this._notifyResizeEnded(initialSize);\r\n    });\r\n\r\n    mousemove\r\n      .pipe(\r\n        map(({ screenX }) => screenX),\r\n        startWith(startX),\r\n        distinctUntilChanged(),\r\n        pairwise(),\r\n        takeUntil(merge(mouseup, escape, this.destroyed)),\r\n      )\r\n      .subscribe(([prevX, currX]) => {\r\n        let deltaX = currX - prevX;\r\n\r\n        // If the mouse moved further than the resize was able to match, limit the\r\n        // movement of the overlay to match the actual size and position of the origin.\r\n        if (overshot !== 0) {\r\n          if ((overshot < 0 && deltaX < 0) || (overshot > 0 && deltaX > 0)) {\r\n            overshot += deltaX;\r\n            return;\r\n          } else {\r\n            const remainingOvershot = overshot + deltaX;\r\n            overshot =\r\n              overshot > 0 ? Math.max(remainingOvershot, 0) : Math.min(remainingOvershot, 0);\r\n            deltaX = remainingOvershot - overshot;\r\n\r\n            if (deltaX === 0) {\r\n              return;\r\n            }\r\n          }\r\n        }\r\n\r\n        let computedNewSize: number = size + (this._isLtr() ? deltaX : -deltaX);\r\n        computedNewSize = Math.min(\r\n          Math.max(computedNewSize, this.resizeRef.minWidthPx, 0),\r\n          this.resizeRef.maxWidthPx,\r\n        );\r\n\r\n        this.resizeNotifier.triggerResize.next({\r\n          columnId: this.columnDef.name,\r\n          size: computedNewSize,\r\n          previousSize: size,\r\n          isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,\r\n        });\r\n\r\n        this.styleScheduler.scheduleEnd(() => {\r\n          const originNewSize = this._getOriginWidth();\r\n          const originNewOffset = this._getOriginOffset();\r\n          const originOffsetDeltaX = originNewOffset - originOffset;\r\n          const originSizeDeltaX = originNewSize - size;\r\n          size = originNewSize;\r\n          originOffset = originNewOffset;\r\n\r\n          overshot += deltaX + (this._isLtr() ? -originSizeDeltaX : originSizeDeltaX);\r\n          overlayOffset += originOffsetDeltaX + (this._isLtr() ? originSizeDeltaX : 0);\r\n\r\n          this._updateOverlayOffset(overlayOffset);\r\n        });\r\n      });\r\n  }\r\n\r\n  protected updateResizeActive(active: boolean): void {\r\n    this.eventDispatcher.overlayHandleActiveForCell.next(\r\n      active ? this.resizeRef.origin.nativeElement! : null,\r\n    );\r\n  }\r\n\r\n  private _getOriginWidth(): number {\r\n    return this.resizeRef.origin.nativeElement!.offsetWidth;\r\n  }\r\n\r\n  private _getOriginOffset(): number {\r\n    return this.resizeRef.origin.nativeElement!.offsetLeft;\r\n  }\r\n\r\n  private _updateOverlayOffset(offset: number): void {\r\n    this.resizeRef.overlayRef.overlayElement.style.transform = `translateX(${coerceCssPixelValue(\r\n      offset,\r\n    )})`;\r\n  }\r\n\r\n  private _isLtr(): boolean {\r\n    return this.directionality.value === 'ltr';\r\n  }\r\n\r\n  private _notifyResizeEnded(size: number, completedSuccessfully = false): void {\r\n    this.updateResizeActive(false);\r\n\r\n    this.ngZone.run(() => {\r\n      const sizeMessage = { columnId: this.columnDef.name, size };\r\n      if (completedSuccessfully) {\r\n        this.resizeNotifier.resizeCompleted.next(sizeMessage);\r\n      } else {\r\n        this.resizeNotifier.resizeCanceled.next(sizeMessage);\r\n      }\r\n    });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Inject,\r\n  NgZone,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  CdkColumnDef,\r\n  _CoalescedStyleScheduler,\r\n  _COALESCED_STYLE_SCHEDULER,\r\n} from '@angular/cdk/table';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { ResizeOverlayHandle } from './cdk-overlay-handle';\r\nimport { ColumnResize } from './column-resize';\r\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\r\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\r\nimport { ResizeRef } from './resize-ref';\r\n\r\n/**\r\n * Component shown over the edge of a resizable column that is responsible\r\n * for handling column resize mouse events and displaying a vertical line along the column edge.\r\n */\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: { 'class': 'mat-column-resize-overlay-thumb' },\r\n  template: '<div #top class=\"mat-column-resize-overlay-thumb-top\"></div>',\r\n  standalone: true,\r\n})\r\nexport class MatColumnResizeOverlayHandle extends ResizeOverlayHandle {\r\n  protected readonly document: Document;\r\n\r\n  @ViewChild('top', { static: true }) topElement: ElementRef<HTMLElement>;\r\n\r\n  constructor(\r\n    protected readonly columnDef: CdkColumnDef,\r\n    protected readonly columnResize: ColumnResize,\r\n    protected readonly directionality: Directionality,\r\n    protected readonly elementRef: ElementRef,\r\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\r\n    protected readonly ngZone: NgZone,\r\n    protected readonly resizeNotifier: ColumnResizeNotifierSource,\r\n    protected readonly resizeRef: ResizeRef,\r\n    @Inject(_COALESCED_STYLE_SCHEDULER)\r\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\r\n    @Inject(DOCUMENT) document: any,\r\n  ) {\r\n    super();\r\n    this.document = document;\r\n  }\r\n\r\n  protected override updateResizeActive(active: boolean): void {\r\n    super.updateResizeActive(active);\r\n\r\n    const originHeight = this.resizeRef.origin.nativeElement.offsetHeight;\r\n    this.topElement.nativeElement.style.height = `${originHeight}px`;\r\n    this.resizeRef.overlayRef.updateSize({\r\n      height: active\r\n        ? this.columnResize.getTableHeight()\r\n        : originHeight,\r\n    });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  Inject,\r\n  Injector,\r\n  NgZone,\r\n  ViewContainerRef,\r\n  ChangeDetectorRef,\r\n  Type\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { CdkColumnDef, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\r\nimport { ColumnResize } from '../column-resize';\r\nimport { ColumnResizeNotifierSource } from '../column-resize-notifier';\r\nimport { ResizeStrategy } from '../resize-strategy';\r\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\r\n\r\nimport { Resizable } from '../resizable';\r\nimport { MatColumnResizeOverlayHandle } from '../overlay-handle';\r\n\r\n/**\r\n * Explicitly enables column resizing for a mat-header-cell.\r\n */\r\n@Directive({\r\n  selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',\r\n  host: { 'class': 'mat-resizable' },\r\n  inputs: [\r\n    { name: 'settings', alias: 'resizable' },\r\n  ],\r\n  standalone: true,\r\n})\r\nexport class MatResizable extends Resizable<MatColumnResizeOverlayHandle> {\r\n  protected readonly document: Document;\r\n\r\n  override minWidthPxInternal = 32;\r\n\r\n  constructor(\r\n    protected readonly columnDef: CdkColumnDef,\r\n    protected readonly columnResize: ColumnResize,\r\n    protected readonly directionality: Directionality,\r\n    @Inject(DOCUMENT) document: any,\r\n    protected readonly elementRef: ElementRef,\r\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\r\n    protected readonly injector: Injector,\r\n    protected readonly ngZone: NgZone,\r\n    protected readonly overlay: Overlay,\r\n    protected readonly resizeNotifier: ColumnResizeNotifierSource,\r\n    protected readonly resizeStrategy: ResizeStrategy,\r\n    @Inject(_COALESCED_STYLE_SCHEDULER)\r\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\r\n    protected readonly viewContainerRef: ViewContainerRef,\r\n    protected readonly changeDetectorRef: ChangeDetectorRef,\r\n  ) {\r\n    super();\r\n    this.document = document;\r\n  }\r\n\r\n  protected override getInlineHandleCssClassName(): string {\r\n    return 'mat-resizable-handle';\r\n  }\r\n\r\n  protected override getOverlayHandleComponentType(): Type<MatColumnResizeOverlayHandle> {\r\n    return MatColumnResizeOverlayHandle;\r\n  }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[mdtCellHost]',\r\n})\r\nexport class CellDirective {\r\n    constructor(public viewContainerRef: ViewContainerRef) {}\r\n}","export class ColumnConfig {\r\n    name: string;\r\n    displayName?: string;\r\n    type: string;\r\n    options?: any;\r\n    sticky?: string;\r\n    sort?: boolean;\r\n    hint?: string;\r\n    resizable?: boolean | { minWidth?: number, maxWidth?: number };\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CellComponent } from './cell.component';\r\nimport { ColumnConfig } from '../../column-config.model';\r\n\r\n@Component({\r\n    selector: 'mdt-text-cell',\r\n    template: '{{ row[column.name] }}'\r\n})\r\nexport class TextCellComponent implements CellComponent {\r\n    @Input() column: ColumnConfig;\r\n    @Input() row: object;\r\n}","import { Type, Injectable } from '@angular/core';\r\nimport { TextCellComponent } from './text-cell.component';\r\n\r\n@Injectable()\nexport class CellService {\r\n\r\n    private registeredCells: { [key: string]: Type<any>; } = {};\r\n    \r\n    registerCell(type: string, component: Type<any>) {\r\n        this.registeredCells[type] = component;\r\n    }\r\n\r\n    getCell(type: string): Type<any> {\r\n        const component = this.registeredCells[type];\r\n\r\n        if (component == null) {\r\n            return TextCellComponent;\r\n        }\r\n\r\n        return component;\r\n    }\r\n}","import { Component, ComponentFactoryResolver, Input, ViewChild, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CellDirective } from './cell.directive';\r\nimport { CellService } from './cell-types/cell.service';\r\nimport { CellComponent } from './cell-types/cell.component';\r\nimport { ColumnConfig } from '../column-config.model';\r\n\r\n@Component({\r\n    selector: 'mdt-table-cell',\r\n    template: '<ng-template mdtCellHost></ng-template>',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TableCellComponent implements OnInit {\r\n    @ViewChild(CellDirective, { static: true }) cellHost: CellDirective;\r\n\r\n    @Input() row: object;\r\n    @Input() column: ColumnConfig;\r\n\r\n    constructor(\r\n        private readonly cellService: CellService,\r\n        private readonly componentFactoryResolver: ComponentFactoryResolver) { }\r\n\r\n    ngOnInit() {\r\n        this.initCell();\r\n    }\r\n\r\n    initCell() {\r\n        const cellComponent = this.cellService.getCell(this.column.type);\r\n        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(cellComponent);\r\n        const viewContainerRef = this.cellHost.viewContainerRef;\r\n        viewContainerRef.clear();\r\n        const componentRef = viewContainerRef.createComponent(componentFactory);\r\n        const cell = componentRef.instance as CellComponent;\r\n        cell.row = this.row;\r\n        cell.column = this.column;\r\n    }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  ViewEncapsulation,\r\n  Inject,\r\n  ElementRef\r\n} from '@angular/core';\r\nimport { MdtMultiSort } from './multi-sort.directive';\r\nimport { SortDirection, MatSortable, matSortAnimations, MatSortHeader, MatSortHeaderIntl } from '@angular/material/sort';\r\nimport { FocusMonitor } from '@angular/cdk/a11y';\r\n\r\n/**\r\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\r\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\r\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\r\n * be fully opaque in the center.\r\n *\r\n * @docs-private\r\n */\r\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\r\n\r\n/**\r\n * States describing the arrow's animated position (animating fromState to toState).\r\n * If the fromState is not defined, there will be no animated transition to the toState.\r\n * @docs-private\r\n */\r\nexport interface ArrowViewStateTransition {\r\n  fromState?: ArrowViewState;\r\n  toState: ArrowViewState;\r\n}\r\n\r\n/** Column definition associated with a `MatSortHeader`. */\r\ninterface MatSortHeaderColumnDef {\r\n  name: string;\r\n}\r\n\r\n/**\r\n * Applies sorting behavior (click to change sort) and styles to an element, including an\r\n * arrow to display the current sort direction.\r\n *\r\n * Must be provided with an id and contained within a parent MatSort directive.\r\n *\r\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\r\n * column definition.\r\n */\r\n@Component({\r\n  selector: '[mdt-sort-header]',\r\n  exportAs: 'mdtSortHeader',\r\n  templateUrl: 'multi-sort-header.html',\r\n  styleUrls: ['multi-sort-header.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  inputs: ['disabled'],\r\n  animations: [\r\n    matSortAnimations.indicator,\r\n    matSortAnimations.leftPointer,\r\n    matSortAnimations.rightPointer,\r\n    matSortAnimations.arrowOpacity,\r\n    matSortAnimations.arrowPosition,\r\n    matSortAnimations.allowChildren,\r\n  ]\r\n})\r\nexport class MdtMultiSortHeader extends MatSortHeader implements MatSortable, OnDestroy, OnInit {\r\n \r\n  /**\r\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\r\n   * the column's name.\r\n   */\r\n  @Input('mdt-sort-header') id: string;\r\n\r\n  /** Overrides the sort start value of the containing MatSort for this MatSortable. */\r\n  @Input() start: 'asc' | 'desc' = 'asc';\r\n\r\n  private _sortHeader: MdtMultiSort;\r\n\r\n  constructor(public _intl: MatSortHeaderIntl,\r\n    changeDetectorRef: ChangeDetectorRef,\r\n    @Optional() public _multiSort: MdtMultiSort,\r\n    @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional() public _columnDef: MatSortHeaderColumnDef,\r\n    _focusMonitor: FocusMonitor,\r\n    _elementRef: ElementRef<HTMLElement>) {\r\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\r\n    // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\r\n    // and we want to avoid having the sort header depending on the CDK table because\r\n    // of this single reference.\r\n    super(_intl, changeDetectorRef, _multiSort, _columnDef, _focusMonitor, _elementRef);\r\n    this._sortHeader = _multiSort;\r\n  }\r\n\r\n  _handleClick() {\r\n    //this._sort.direction = this.getSortDirection();\r\n    super._handleClick();\r\n  }\r\n      \r\n  /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\r\n  _isSorted() {\r\n    if (!this._sortHeader.sortedBy) {\r\n      return false;\r\n    }\r\n\r\n    let sort = this._sortHeader.sortedBy.find(s => s.id === this.id);\r\n    return !!sort;\r\n  }\r\n\r\n  /**\r\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\r\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\r\n   * active sorted direction. The reason this is updated through a function is because the direction\r\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\r\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\r\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\r\n   * preserving its direction, even though the next sort direction is actually different and should\r\n   * only be changed once the arrow displays again (hint or activation).\r\n   */\r\n  _updateArrowDirection() {\r\n    this._arrowDirection = this.getSortDirection();\r\n  }\r\n\r\n  /**\r\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\r\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\r\n   * says that the aria-sort property should only be present on one header at a time, so removing\r\n   * ensures this is true.\r\n   */\r\n  _getAriaSortAttribute() {\r\n    if (!this._isSorted()) {\r\n      return 'none';\r\n    }\r\n\r\n    let sort = this._sortHeader.sortedBy.find(s => s.id === this.id)!;\r\n    return sort.direction == 'asc' ? 'ascending' : 'descending';\r\n  }\r\n\r\n  getSortDirection(): 'asc' | 'desc' | '' {\r\n    if (!this._isSorted()) {\r\n      return '';\r\n    }\r\n\r\n    let sort = this._sortHeader.sortedBy.find(s => s.id === this.id)!;\r\n    return sort.direction;\r\n  }\r\n\r\n  /**\r\n   * Gets the sort counter that will display whenever multisort is enabled. It shows the order\r\n   * in which sort is applied, whenever there are multiple columns being used for sorting.\r\n   */\r\n  _getSortCounter(): string {\r\n    if (!this._sortHeader.sortedBy || this._sortHeader.mode !== 'multi') {\r\n      return '';\r\n    }\r\n    const index = this._sortHeader.sortedBy.findIndex(s => s.id === this.id);\r\n    if (index === -1) {\r\n      return '';\r\n    }\r\n\r\n    return (index + 1).toString();\r\n  }\r\n}\r\n","<div class=\"mat-sort-header-container mat-focus-indicator\"\r\n     [class.mat-sort-header-sorted]=\"_isSorted()\"\r\n     [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\"\r\n     [attr.tabindex]=\"_isDisabled() ? null : 0\"\r\n     [attr.role]=\"_isDisabled() ? null : 'button'\">\r\n\r\n  <div class=\"mat-sort-header-content\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n\r\n  <!-- Disable animations while a current animation is running -->\r\n  <div class=\"mat-sort-header-arrow\"\r\n       *ngIf=\"_renderArrow()\"\r\n       [@arrowOpacity]=\"_getArrowViewState()\"\r\n       [@arrowPosition]=\"_getArrowViewState()\"\r\n       [@allowChildren]=\"_getArrowDirectionState()\"\r\n       (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\r\n       (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\r\n    <div class=\"mat-sort-header-stem\"></div>\r\n    <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\r\n      <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\r\n      <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\r\n      <div class=\"mat-sort-header-pointer-middle\"></div>\r\n    </div>\r\n    <div class=\"mat-sort-header-counter\">\r\n      {{ _getSortCounter() }}\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DataSource } from '@angular/cdk/table';\r\n\r\nimport { MdtMultiSort } from './multi-sort/multi-sort.directive';\r\nimport { ColumnConfig } from './column-config.model';\r\nimport { ColumnFilter } from './column-filter.model';\r\nimport { ColumnFilterService } from './table-cell/cell-types/column-filter.service';\r\n\r\n@Component({\r\n  selector: 'mdt-dynamic-table',\r\n  templateUrl: './dynamic-table.component.html',\r\n  styleUrls: ['./dynamic-table.component.css']\r\n})\r\nexport class DynamicTableComponent implements OnInit {\r\n\r\n  @Input() columns: ColumnConfig[];\r\n  @Input() dataSource: DataSource<any>;\r\n  @Input() pageSize = 20;\r\n  @Input() pageSizeOptions = [20, 50, 100];\r\n  @Input() showFilters = true;\r\n  @Input() stickyHeader = false;\r\n  @Input() multiSort = false;\r\n  @Input() hintDelay = 500;\r\n  @Input() paginator: MatPaginator;\r\n\r\n  @Output() rowClick = new EventEmitter<any>();\r\n\r\n  displayedColumns: string[];\r\n\r\n  @ViewChild(MdtMultiSort, { static: true }) sort: MdtMultiSort;\r\n  @ViewChild(MatPaginator, { static: true }) private internalPaginator: MatPaginator;\r\n\r\n  private appliedFilters: { [key: string]: any; } = {};\r\n\r\n  isDialogOpen = false;\r\n\r\n  constructor(private readonly columnFilterService: ColumnFilterService, private readonly dialog: MatDialog) { }\r\n\r\n  ngOnInit() {\r\n    if (this.dataSource == null) {\r\n      throw Error('DynamicTable must be provided with data source.');\r\n    }\r\n    if (this.columns == null) {\r\n      throw Error('DynamicTable must be provided with column definitions.');\r\n    }\r\n\r\n    if (this.paginator === undefined) {\r\n      this.paginator = this.internalPaginator;\r\n    }\r\n\r\n    this.columns.forEach((column, index) => column.name = this.prepareColumnName(column.name, index));\r\n    this.displayedColumns = this.columns.map((column, index) => column.name);\r\n\r\n    const dataSource = this.dataSource as any;\r\n    dataSource.sort = this.sort;\r\n    dataSource.paginator = this.paginator;\r\n  }\r\n\r\n  isUsingInternalPaginator() {\r\n    return this.paginator === this.internalPaginator;\r\n  }\r\n\r\n  canFilter(column: ColumnConfig) {\r\n    const filter = this.columnFilterService.getFilter(column.type);\r\n\r\n    return filter != null;\r\n  }\r\n\r\n  isFiltered(column: ColumnConfig) {\r\n    return this.appliedFilters[column.name];\r\n  }\r\n\r\n  getFilterDescription(column: ColumnConfig) {\r\n    const filter = this.appliedFilters[column.name];\r\n    if (!filter || !filter.getDescription) {\r\n      return null;\r\n    }\r\n\r\n    return filter.getDescription();\r\n  }\r\n\r\n  prepareColumnName(name: string | undefined, columnNumber: number) {\r\n    return name || 'col' + columnNumber;\r\n  }\r\n\r\n  onFilterClick(event: Event, column: ColumnConfig): void {\r\n    this.filter(column);\r\n    event.stopPropagation();\r\n  }\r\n\r\n  filter(column: ColumnConfig) {\r\n    if (this.isDialogOpen) {\r\n      return;\r\n    }\r\n\r\n    const filter = this.columnFilterService.getFilter(column.type);\r\n\r\n    if (filter) {\r\n      const dialogConfig = new MatDialogConfig();\r\n      const columnFilter = new ColumnFilter();\r\n      columnFilter.column = column;\r\n\r\n      if (this.appliedFilters[column.name]) {\r\n        columnFilter.filter = Object.create(this.appliedFilters[column.name]);\r\n      }\r\n\r\n      dialogConfig.data = columnFilter;\r\n\r\n      const dialogRef = this.dialog.open(filter, dialogConfig);\r\n      this.isDialogOpen = true;\r\n\r\n      dialogRef.afterClosed().subscribe(result => {\r\n        if (result) {\r\n          this.appliedFilters[column.name] = result;\r\n        } else if (result === '') {\r\n          delete this.appliedFilters[column.name];\r\n        }\r\n\r\n        if (result || result === '') {\r\n          this.updateDataSource();\r\n        }\r\n\r\n        this.isDialogOpen = false;\r\n      });\r\n    }\r\n  }\r\n\r\n  clearFilters() {\r\n    this.appliedFilters = {};\r\n    this.updateDataSource();\r\n  }\r\n\r\n  protected updateDataSource() {\r\n    const dataSource = this.dataSource as any;\r\n    dataSource.filters = this.getFilters();\r\n  }\r\n\r\n  getFilters() {\r\n    const filters = this.appliedFilters;\r\n    const filterArray = Object.keys(filters).map((key) => filters[key]);\r\n    return filterArray;\r\n  }\r\n\r\n  getFilter(columnName: string): any {\r\n    const filterColumn = this.getColumnByName(columnName);\r\n\r\n    if (!filterColumn) {\r\n      throw Error(`Column with name '${columnName}' does not exist.`);\r\n    }\r\n\r\n    return this.appliedFilters[filterColumn.name];\r\n  }\r\n\r\n  setFilter(columnName: string, filter: any) {\r\n    const filterColumn = this.getColumnByName(columnName);\r\n\r\n    if (!filterColumn) {\r\n      throw Error(`Cannot set filter for a column. Column with name '${columnName}' does not exist.`);\r\n    }\r\n\r\n    this.appliedFilters[filterColumn.name] = filter;\r\n    this.updateDataSource();\r\n  }\r\n\r\n  getSort() {\r\n    return this.sort.sortedBy;\r\n  }\r\n\r\n  setSort(sortedBy: { id: string, direction: 'asc' | 'desc' }[]) {\r\n    this.sort.sortedBy = sortedBy;\r\n  }\r\n\r\n  private getColumnByName(columnName: string): ColumnConfig | undefined {\r\n    return this.columns.find(c =>\r\n      (c.name ? c.name.toLowerCase() : c.name) === (columnName ? columnName.toLowerCase() : columnName)\r\n    );\r\n  }\r\n\r\n  onRowClick(row: any) {\r\n    this.rowClick.next(row);\r\n  }\r\n}\r\n","<table mat-table [dataSource]=\"dataSource\" columnResize\r\n       mdtMultiSort mode=\"{{multiSort ? 'multi' : 'single'}}\">\r\n\r\n  <ng-container *ngFor=\"let column of columns; let i = index\" matColumnDef=\"{{ column.name }}\"\r\n                [sticky]=\"column.sticky === 'start'\" [stickyEnd]=\"column.sticky === 'end'\">\r\n    <th mat-header-cell *matHeaderCellDef mdt-sort-header=\"{{ column.name }}\" [disabled]=\"column.sort === false\" [resizable]=\"column.resizable\">\r\n      <span [matTooltip]=\"column.hint\" [matTooltipShowDelay]=\"hintDelay\">{{ column.displayName }}</span>\r\n      <button type=\"button\" [attr.aria-label]=\"'Filter by ' + column.displayName\" class=\"mat-sort-header-button\" *ngIf=\"showFilters && canFilter(column)\"\r\n              (click)=\"onFilterClick($event, column)\" (keydown.enter)=\"onFilterClick($event, column)\" (keydown.space)=\"onFilterClick($event, column)\"\r\n              matTooltip=\"{{ getFilterDescription(column) }}\" matTooltipDisabled=\"{{ !getFilterDescription(column) }}\">\r\n        <mat-icon color=\"{{ isFiltered(column) ? 'primary' : 'default' }}\">filter_list</mat-icon>\r\n      </button>\r\n    </th>\r\n    <td mat-cell *matCellDef=\"let row\"><mdt-table-cell [row]=\"row\" [column]=\"column\"></mdt-table-cell></td>\r\n  </ng-container>\r\n\r\n  <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: [stickyHeader]\"></tr>\r\n  <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClick(row)\"></tr>\r\n</table>\r\n<mat-paginator [hidden]=\"!isUsingInternalPaginator()\" [pageSize]=\"pageSize\"\r\n               [pageSizeOptions]=\"pageSizeOptions\">\r\n</mat-paginator>","import { DataSource } from '@angular/cdk/collections';\r\nimport { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { Observable, BehaviorSubject, Subject, Subscription, of, merge, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { MdtMultiSort } from './multi-sort.directive';\r\nimport { TableFilter } from './table-filter';\r\n\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\n\r\nexport class MdtTableDataSource<T> extends DataSource<T> {\r\n  \r\n  private readonly _data: BehaviorSubject<T[]>;\r\n\r\n  /** Stream emitting render data to the table (depends on ordered data changes). */\r\n  private readonly _renderData = new BehaviorSubject<T[]>([]);\r\n\r\n  /** Stream that emits when a new filter string is set on the data source. */\r\n  private readonly _filter = new BehaviorSubject<string>('');\r\n\r\n  private readonly _filters = new BehaviorSubject<TableFilter[]>([]);\r\n\r\n  /** Used to react to internal changes of the paginator that are made by the data source itself. */\r\n  private readonly _internalPageChanges = new Subject<void>();\r\n\r\n  _renderChangesSubscription: Subscription | null = null;\r\n\r\n  filteredData: T[];\r\n\r\n  constructor(initialData: T[] = []) {\r\n    super();\r\n    this._data = new BehaviorSubject<T[]>(initialData);\r\n    this._updateChangeSubscription();\r\n  }\r\n\r\n  /** Array of data that should be rendered by the table, where each object represents one row. */\r\n  get data() {\r\n    return this._data.value;\r\n  }\r\n\r\n  set data(data: T[]) {\r\n    data = Array.isArray(data) ? data : [];\r\n    this._data.next(data);\r\n    if (!this._renderChangesSubscription) {\r\n      this._filterData(data);\r\n    }\r\n  }\r\n\r\n  get filter(): string {\r\n    return this._filter.value;\r\n  }\r\n\r\n  set filter(filter: string) {\r\n    this._filter.next(filter);\r\n    if (!this._renderChangesSubscription) {\r\n      this._filterData(this.data);\r\n    }\r\n  }\r\n\r\n  get filters(): TableFilter[] {\r\n    return this._filters.value;\r\n  }\r\n  set filters(filters: TableFilter[]) {\r\n    this._filters.next(filters);\r\n    this._updateChangeSubscription();\r\n  }\r\n\r\n  get sort(): MdtMultiSort | null { return this._multiSort; }\r\n  set sort(sort: MdtMultiSort | null) {\r\n    this._multiSort = sort;\r\n    this._updateChangeSubscription();\r\n  }\r\n  private _multiSort: MdtMultiSort | null;\r\n \r\n  get paginator(): MatPaginator | null {\r\n    return this._paginator;\r\n  }\r\n  set paginator(paginator: MatPaginator | null) {\r\n    this._paginator = paginator;\r\n    this._updateChangeSubscription();\r\n  }\r\n  private _paginator: MatPaginator | null;\r\n\r\n  sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\r\n    data: T,\r\n    sortHeaderId: string,\r\n  ): string | number => {\r\n    const value = (data as unknown as Record<string, any>)[sortHeaderId];\r\n\r\n    if (_isNumberValue(value)) {\r\n      const numberValue = Number(value);\r\n\r\n      // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\r\n      // leave them as strings. For more info: https://goo.gl/y5vbSg\r\n      return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n    }\r\n\r\n    return value;\r\n  };\r\n\r\n  connect() {\r\n    if (!this._renderChangesSubscription) {\r\n      this._updateChangeSubscription();\r\n    }\r\n\r\n    return this._renderData;\r\n  }\r\n\r\n  disconnect() {\r\n    this._renderChangesSubscription?.unsubscribe();\r\n    this._renderChangesSubscription = null;\r\n  }\r\n\r\n  _updateChangeSubscription() {\r\n    const sortChange: Observable<Sort | null | void> = this._multiSort\r\n      ? (merge(this._multiSort.multiSortChange, this._multiSort.initialized) as Observable<Sort | void>)\r\n      : of(null);\r\n    const pageChange: Observable<PageEvent | null | void> = this._paginator\r\n      ? (merge(\r\n        this._paginator.page,\r\n        this._internalPageChanges,\r\n        this._paginator.initialized,\r\n      ) as Observable<PageEvent | void>)\r\n      : of(null);\r\n    const dataStream = this._data;\r\n    // Watch for base data or filter changes to provide a filtered set of data.\r\n    const filteredData = combineLatest([dataStream, this._filter]).pipe(\r\n      map(([data]) => this._filterData(data)),\r\n    );\r\n    const filteredData2 = combineLatest([filteredData, this._filters]).pipe(\r\n      map(([data]) => this._filterData(data)),\r\n    );\r\n    // Watch for filtered data or sort changes to provide an ordered set of data.\r\n    const orderedData = combineLatest([filteredData2, sortChange]).pipe(\r\n      map(([data]) => this._orderData(data)),\r\n    );\r\n    // Watch for ordered data or page changes to provide a paged set of data.\r\n    const paginatedData = combineLatest([orderedData, pageChange]).pipe(\r\n      map(([data]) => this._pageData(data)),\r\n    );\r\n    // Watched for paged data changes and send the result to the table to render.\r\n    this._renderChangesSubscription?.unsubscribe();\r\n    this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\r\n  }\r\n\r\n  _filterData(data: T[]) {\r\n    // If there is a filter string, filter out data that does not contain it.\r\n    // Each data object is converted to a string using the function defined by filterPredicate.\r\n    // May be overridden for customization.\r\n    this.filteredData =\r\n      (this.filter == null || this.filter === '') && !this.filters?.length\r\n        ? data\r\n        : data.filter(obj => this.filterPredicate(obj, this.filter));\r\n\r\n    if (this.paginator) {\r\n      this._updatePaginator(this.filteredData.length);\r\n    }\r\n\r\n    return this.filteredData;\r\n  }\r\n\r\n  filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\r\n    const dataStr = Object.keys(data as unknown as Record<string, any>)\r\n      .reduce((currentTerm: string, key: string) => {\r\n        return currentTerm + (data as unknown as Record<string, any>)[key] + '◬';\r\n      }, '')\r\n      .toLowerCase();\r\n\r\n    const transformedFilter = filter.trim().toLowerCase();\r\n\r\n    return dataStr.indexOf(transformedFilter) != -1;\r\n  };\r\n\r\n  _pageData(data: T[]): T[] {\r\n    if (!this.paginator) {\r\n      return data;\r\n    }\r\n\r\n    const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n    return data.slice(startIndex, startIndex + this.paginator.pageSize);\r\n  }\r\n\r\n  _orderData(data: T[]): T[] {\r\n    // If there is no active sort or direction, return the data without trying to sort.\r\n    if (!this.sort) {\r\n      return data;\r\n    }\r\n\r\n    return this.sortData(data.slice(), this.sort);\r\n  }\r\n\r\n  sortData: ((data: T[], sort: MdtMultiSort) => T[]) =\r\n    (data: T[], sort: MdtMultiSort): T[] => {\r\n      let sortedBy = sort.sortedBy;\r\n      if (!Array.isArray(sortedBy) || !sortedBy.length) {\r\n        return data;\r\n      }\r\n\r\n      return data.sort((a, b) => {\r\n        // Get effective sort value after comparing all sorted properties, if values were equal for\r\n        // previous propery then compare the next pair\r\n        return sortedBy.reduce((previous, sort) => {\r\n          if (previous !== 0) {\r\n            return previous;\r\n          }\r\n\r\n          let valueA = this.sortingDataAccessor(a, sort.id);\r\n          let valueB = this.sortingDataAccessor(b, sort.id);\r\n\r\n          return this.compareValues(valueA, valueB, sort.direction);\r\n        }, 0);\r\n      });\r\n    }\r\n\r\n  compareValues(valueA: string | number, valueB: string | number, direction: string) {\r\n    let comparatorResult = 0;\r\n    if (direction == '') {\r\n      return comparatorResult;\r\n    }\r\n\r\n    if (valueA != null && valueB != null) {\r\n      // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\r\n      if (valueA > valueB) {\r\n        comparatorResult = 1;\r\n      } else if (valueA < valueB) {\r\n        comparatorResult = -1;\r\n      }\r\n    } else if (valueA != null) {\r\n      comparatorResult = 1;\r\n    } else if (valueB != null) {\r\n      comparatorResult = -1;\r\n    }\r\n\r\n    return comparatorResult * (direction == 'asc' ? 1 : -1);\r\n  }\r\n\r\n  _updatePaginator(filteredDataLength: number) {\r\n    Promise.resolve().then(() => {\r\n      const paginator = this.paginator;\r\n\r\n      if (!paginator) {\r\n        return;\r\n      }\r\n\r\n      paginator.length = filteredDataLength;\r\n\r\n      // If the page index is set beyond the page, reduce it to the last page.\r\n      if (paginator.pageIndex > 0) {\r\n        const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\r\n        const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\r\n\r\n        if (newPageIndex !== paginator.pageIndex) {\r\n          paginator.pageIndex = newPageIndex;\r\n\r\n          // Since the paginator only emits after user-generated changes,\r\n          // we need our own stream so we know to should re-render the data.\r\n          this._internalPageChanges.next();\r\n        }\r\n      }\r\n    });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Google LLC 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\nimport { NgModule } from '@angular/core';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { MatColumnResize } from './column-resize-directives/column-resize';\r\nimport { MatResizable } from './resizable-directives/resizable';\r\nimport { MatColumnResizeOverlayHandle } from './overlay-handle';\r\n\r\nconst ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];\r\n\r\n@NgModule({\r\n  imports: [...ENTRY_COMMON_COMPONENTS],\r\n  exports: ENTRY_COMMON_COMPONENTS,\r\n})\r\nexport class MatColumnResizeCommonModule { }\r\n\r\n@NgModule({\r\n  imports: [MatCommonModule, OverlayModule, MatColumnResizeCommonModule, MatColumnResize, MatResizable],\r\n  exports: [MatColumnResize, MatResizable],\r\n})\r\nexport class MatColumnResizeModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CellComponent } from './cell.component';\r\nimport { ColumnConfig } from '../../column-config.model';\r\n\r\n@Component({\r\n    selector: 'mdt-date-cell',\r\n    template: '{{ row[column.name] | date:dateFormat }}'\r\n})\r\nexport class DateCellComponent implements CellComponent, OnInit {\r\n    @Input() column: ColumnConfig;\r\n    @Input() row: object;\r\n\r\n    dateFormat = 'short';\r\n\r\n    ngOnInit() {\r\n        if (this.column.options) {\r\n            if (this.column.options.dateFormat) {\r\n                this.dateFormat = this.column.options.dateFormat;\r\n            }\r\n        }\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatColumnResizeModule } from './column-resize/column-resize-module';\r\n\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MdtMultiSort } from './multi-sort/multi-sort.directive';\r\nimport { MdtMultiSortHeader } from './multi-sort/multi-sort-header';\r\n\r\nimport { DynamicTableComponent } from './dynamic-table.component';\r\nimport { TableCellComponent } from './table-cell/table-cell.component';\r\n\r\nimport { CellService } from './table-cell/cell-types/cell.service';\r\nimport { CellDirective } from './table-cell/cell.directive';\r\nimport { ColumnFilterService } from './table-cell/cell-types/column-filter.service';\r\n\r\nexport { CellService, CellDirective, ColumnFilterService };\r\nexport { CellComponent } from './table-cell/cell-types/cell.component';\r\nexport { ColumnFilter } from './column-filter.model';\r\nexport { ColumnConfig } from './column-config.model';\r\nexport { FilterDescription } from './filter-description';\r\n\r\nimport { TextCellComponent } from './table-cell/cell-types/text-cell.component';\r\nimport { DateCellComponent } from './table-cell/cell-types/date-cell.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    MatTableModule,\r\n    MatSortModule,\r\n    MatPaginatorModule,\r\n    MatIconModule,\r\n    MatDialogModule,\r\n    MatTooltipModule,\r\n    MatColumnResizeModule\r\n  ],\r\n  declarations: [\r\n    DynamicTableComponent,\r\n    TableCellComponent,\r\n    CellDirective,\r\n    TextCellComponent,\r\n    DateCellComponent,\r\n    MdtMultiSort,\r\n    MdtMultiSortHeader\r\n  ],\r\n  exports: [DynamicTableComponent, MdtMultiSort, MatColumnResizeModule],\r\n  providers: [\r\n    CellService,\r\n    ColumnFilterService\r\n  ]\r\n})\r\nexport class DynamicTableModule {\r\n  constructor(private readonly cellService: CellService) {\r\n    cellService.registerCell('string', TextCellComponent);\r\n    cellService.registerCell('date', DateCellComponent);\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of dynamic-table\r\n */\r\n\r\nexport * from './lib/dynamic-table.component';\r\nexport * from './lib/multi-sort/multi-sort.directive';\r\nexport * from './lib/multi-sort/multi-sort-data-source';\r\nexport * from './lib/multi-sort/table-filter';\r\nexport * from './lib/column-resize/resizable-directives/resizable';\r\nexport * from './lib/column-resize/column-resize-directives/column-resize';\r\nexport * from './lib/column-resize/column-resize-module';\r\nexport * from './lib/column-resize/overlay-handle';\r\nexport * from './lib/dynamic-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ColumnResize","i1.ColumnResizeNotifier","i2.HeaderRowEventDispatcher","i1.ColumnResizeNotifierSource","i1","i2.ColumnResize","i4.HeaderRowEventDispatcher","i5.ColumnResizeNotifierSource","i6.ResizeRef","i6.ColumnResizeNotifierSource","i7.ResizeStrategy","i1.CellService","i2.CellDirective","i3","i4","i1.ColumnFilterService","i2","i5","i8.MatColumnResize","i9.MatResizable","i10.TableCellComponent","i11.MdtMultiSort","i12.MdtMultiSortHeader"],"mappings":"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"}