{"version":3,"file":"mtxColumnResize.mjs","sources":["../../../projects/extensions/column-resize/selectors.ts","../../../projects/extensions/column-resize/polyfill.ts","../../../projects/extensions/column-resize/column-resize.ts","../../../projects/extensions/column-resize/column-resize-notifier.ts","../../../projects/extensions/column-resize/event-dispatcher.ts","../../../projects/extensions/column-resize/resize-strategy.ts","../../../projects/extensions/column-resize/column-resize-directives/constants.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/column-resize/column-resize-module.ts","../../../projects/extensions/column-resize/column-size-store.ts","../../../projects/extensions/column-resize/resize-ref.ts","../../../projects/extensions/column-resize/resizable.ts","../../../projects/extensions/column-resize/overlay-handle.ts","../../../projects/extensions/column-resize/mtxColumnResize.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// TODO: Figure out how to remove `mat-` classes from the CDK part of the\n// column resize implementation.\n\nexport const HEADER_CELL_SELECTOR = '.cdk-header-cell, .mat-header-cell';\n\nexport const HEADER_ROW_SELECTOR = '.cdk-header-row, .mat-header-row';\n\nexport const RESIZE_OVERLAY_SELECTOR = '.mat-column-resize-overlay-thumb';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** closest implementation that is able to start from non-Element Nodes. */\nexport function closest(\n  element: EventTarget | Element | null | undefined,\n  selector: string\n): Element | null {\n  if (!(element instanceof Node)) {\n    return null;\n  }\n\n  let curr: Node | null = element;\n  while (curr != null && !(curr instanceof Element)) {\n    curr = curr.parentNode;\n  }\n\n  return curr?.closest(selector) ?? null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterViewInit, Directive, ElementRef, NgZone, OnDestroy } from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, map, mapTo, pairwise, startWith, take, takeUntil } from 'rxjs/operators';\n\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { closest } from './polyfill';\n\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\n\nlet nextId = 0;\n\n/**\n * Base class for ColumnResize directives which attach to mat-table elements to\n * provide common events and services for column resizing.\n */\n@Directive()\nexport abstract class ColumnResize implements AfterViewInit, OnDestroy {\n  protected readonly destroyed = new Subject<void>();\n\n  /* Publicly accessible interface for triggering and being notified of resizes. */\n  abstract readonly columnResizeNotifier: ColumnResizeNotifier;\n\n  /* ElementRef that this directive is attached to. Exposed For use by column-level directives */\n  abstract readonly elementRef: ElementRef<HTMLElement>;\n\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\n  protected abstract readonly ngZone: NgZone;\n  protected abstract readonly notifier: ColumnResizeNotifierSource;\n\n  /** Unique ID for this table instance. */\n  protected readonly selectorId = `${++nextId}`;\n\n  /** The id attribute of the table, if specified. */\n  id?: string;\n\n  ngAfterViewInit() {\n    this.elementRef.nativeElement.classList.add(this.getUniqueCssClass());\n\n    this._listenForRowHoverEvents();\n    this._listenForResizeActivity();\n    this._listenForHoverActivity();\n  }\n\n  ngOnDestroy() {\n    this.destroyed.next();\n    this.destroyed.complete();\n  }\n\n  /** Gets the unique CSS class name for this table instance. */\n  getUniqueCssClass() {\n    return `cdk-column-resize-${this.selectorId}`;\n  }\n\n  /** Called when a column in the table is resized. Applies a css class to the table element. */\n  setResized() {\n    this.elementRef.nativeElement.classList.add(WITH_RESIZED_COLUMN_CLASS);\n  }\n\n  private _listenForRowHoverEvents() {\n    this.ngZone.runOutsideAngular(() => {\n      const element = this.elementRef.nativeElement;\n\n      fromEvent<MouseEvent>(element, 'mouseover')\n        .pipe(\n          map(event => closest(event.target, HEADER_CELL_SELECTOR)),\n          takeUntil(this.destroyed)\n        )\n        .subscribe(this.eventDispatcher.headerCellHovered);\n      fromEvent<MouseEvent>(element, 'mouseleave')\n        .pipe(\n          filter(\n            event =>\n              !!event.relatedTarget &&\n              !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR)\n          ),\n          mapTo(null),\n          takeUntil(this.destroyed)\n        )\n        .subscribe(this.eventDispatcher.headerCellHovered);\n    });\n  }\n\n  private _listenForResizeActivity() {\n    merge(\n      this.eventDispatcher.overlayHandleActiveForCell.pipe(mapTo(undefined)),\n      this.notifier.triggerResize.pipe(mapTo(undefined)),\n      this.notifier.resizeCompleted.pipe(mapTo(undefined))\n    )\n      .pipe(take(1), takeUntil(this.destroyed))\n      .subscribe(() => {\n        this.setResized();\n      });\n  }\n\n  private _listenForHoverActivity() {\n    this.eventDispatcher.headerRowHoveredOrActiveDistinct\n      .pipe(startWith(null), pairwise(), takeUntil(this.destroyed))\n      .subscribe(([previousRow, hoveredRow]) => {\n        if (hoveredRow) {\n          hoveredRow.classList.add(HOVER_OR_ACTIVE_CLASS);\n        }\n        if (previousRow) {\n          previousRow.classList.remove(HOVER_OR_ACTIVE_CLASS);\n        }\n      });\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** Indicates the width of a column. */\nexport interface ColumnSize {\n  /** The ID/name of the column, as defined in CdkColumnDef. */\n  readonly columnId: string;\n\n  /** The width in pixels of the column. */\n  readonly size: number;\n\n  /** The width in pixels of the column prior to this update, if known. */\n  readonly previousSize?: number;\n}\n\n/** Interface describing column size changes. */\nexport interface ColumnSizeAction extends ColumnSize {\n  /**\n   * Whether the resize action should be applied instantaneously. False for events triggered during\n   * a UI-triggered resize (such as with the mouse) until the mouse button is released. True\n   * for all programmatically triggered resizes.\n   */\n  readonly completeImmediately?: boolean;\n\n  /**\n   * Whether the resize action is being applied to a sticky/stickyEnd column.\n   */\n  readonly isStickyColumn?: boolean;\n}\n\n/**\n * Originating source of column resize events within a table.\n * @docs-private\n */\n@Injectable()\nexport class ColumnResizeNotifierSource {\n  /** Emits when an in-progress resize is canceled. */\n  readonly resizeCanceled = new Subject<ColumnSizeAction>();\n\n  /** Emits when a resize is applied. */\n  readonly resizeCompleted = new Subject<ColumnSize>();\n\n  /** Triggers a resize action. */\n  readonly triggerResize = new Subject<ColumnSizeAction>();\n}\n\n/** Service for triggering column resizes imperatively or being notified of them. */\n@Injectable()\nexport class ColumnResizeNotifier {\n  /** Emits whenever a column is resized. */\n  readonly resizeCompleted: Observable<ColumnSize> = this._source.resizeCompleted;\n\n  constructor(private readonly _source: ColumnResizeNotifierSource) {}\n\n  /** Instantly resizes the specified column. */\n  resize(columnId: string, size: number): void {\n    this._source.triggerResize.next({\n      columnId,\n      size,\n      completeImmediately: true,\n      isStickyColumn: true,\n    });\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable, NgZone } from '@angular/core';\nimport { combineLatest, MonoTypeOperatorFunction, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, share, skip, startWith } from 'rxjs/operators';\nimport { closest } from './polyfill';\n\nimport { HEADER_ROW_SELECTOR } from './selectors';\n\n/** Coordinates events between the column resize directives. */\n@Injectable()\nexport class HeaderRowEventDispatcher {\n  /**\n   * Emits the currently hovered header cell or null when no header cells are hovered.\n   * Exposed publicly for events to feed in, but subscribers should use headerCellHoveredDistinct,\n   * defined below.\n   */\n  readonly headerCellHovered = new Subject<Element | null>();\n\n  /**\n   * Emits the header cell for which a user-triggered resize is active or null\n   * when no resize is in progress.\n   */\n  readonly overlayHandleActiveForCell = new Subject<Element | null>();\n\n  constructor(private readonly _ngZone: NgZone) {}\n\n  /** Distinct and shared version of headerCellHovered. */\n  readonly headerCellHoveredDistinct = this.headerCellHovered.pipe(distinctUntilChanged(), share());\n\n  /**\n   * Emits the header that is currently hovered or hosting an active resize event (with active\n   * taking precedence).\n   */\n  readonly headerRowHoveredOrActiveDistinct = combineLatest([\n    this.headerCellHoveredDistinct.pipe(\n      map(cell => closest(cell, HEADER_ROW_SELECTOR)),\n      startWith(null),\n      distinctUntilChanged()\n    ),\n    this.overlayHandleActiveForCell.pipe(\n      map(cell => closest(cell, HEADER_ROW_SELECTOR)),\n      startWith(null),\n      distinctUntilChanged()\n    ),\n  ]).pipe(\n    skip(1), // Ignore initial [null, null] emission.\n    map(([hovered, active]) => active || hovered),\n    distinctUntilChanged(),\n    share()\n  );\n\n  private readonly _headerRowHoveredOrActiveDistinctReenterZone =\n    this.headerRowHoveredOrActiveDistinct.pipe(this._enterZone(), share());\n\n  // Optimization: Share row events observable with subsequent callers.\n  // At startup, calls will be sequential by row (and typically there's only one).\n  private _lastSeenRow: Element | null = null;\n  private _lastSeenRowHover: Observable<boolean> | null = null;\n\n  /**\n   * Emits whether the specified row should show its overlay controls.\n   * Emission occurs within the NgZone.\n   */\n  resizeOverlayVisibleForHeaderRow(row: Element): Observable<boolean> {\n    if (row !== this._lastSeenRow) {\n      this._lastSeenRow = row;\n      this._lastSeenRowHover = this._headerRowHoveredOrActiveDistinctReenterZone.pipe(\n        map(hoveredRow => hoveredRow === row),\n        distinctUntilChanged(),\n        share()\n      );\n    }\n\n    return this._lastSeenRowHover!;\n  }\n\n  private _enterZone<T>(): MonoTypeOperatorFunction<T> {\n    return (source: Observable<T>) =>\n      new Observable<T>(observer =>\n        source.subscribe({\n          next: value => this._ngZone.run(() => observer.next(value)),\n          error: err => observer.error(err),\n          complete: () => observer.complete(),\n        })\n      );\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Inject, Injectable, OnDestroy, Provider, CSP_NONCE, Optional } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkTable, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\n\nimport { ColumnResize } from './column-resize';\n\n/**\n * Provides an implementation for resizing a column.\n * The details of how resizing works for tables for flex mat-tables are quite different.\n */\n@Injectable()\nexport abstract class ResizeStrategy {\n  protected abstract readonly columnResize: ColumnResize;\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n  protected abstract readonly table: CdkTable<unknown>;\n\n  private _pendingResizeDelta: number | null = null;\n\n  /** Updates the width of the specified column. */\n  abstract applyColumnSize(\n    cssFriendlyColumnName: string,\n    columnHeader: HTMLElement,\n    sizeInPx: number,\n    previousSizeInPx?: number\n  ): void;\n\n  /** Applies a minimum width to the specified column, updating its current width as needed. */\n  abstract applyMinColumnSize(\n    cssFriendlyColumnName: string,\n    columnHeader: HTMLElement,\n    minSizeInPx: number\n  ): void;\n\n  /** Applies a maximum width to the specified column, updating its current width as needed. */\n  abstract applyMaxColumnSize(\n    cssFriendlyColumnName: string,\n    columnHeader: HTMLElement,\n    minSizeInPx: number\n  ): void;\n\n  /** Adjusts the width of the table element by the specified delta. */\n  protected updateTableWidthAndStickyColumns(delta: number): void {\n    if (this._pendingResizeDelta === null) {\n      const tableElement = this.columnResize.elementRef.nativeElement;\n      const tableWidth = getElementWidth(tableElement);\n\n      this.styleScheduler.schedule(() => {\n        tableElement.style.width = coerceCssPixelValue(tableWidth + this._pendingResizeDelta!);\n\n        this._pendingResizeDelta = null;\n      });\n\n      this.styleScheduler.scheduleEnd(() => {\n        this.table.updateStickyColumnStyles();\n      });\n    }\n\n    this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;\n  }\n}\n\n/**\n * The optimally performing resize strategy for &lt;table&gt; elements with table-layout: fixed.\n * Tested against and outperformed:\n *   CSS selector\n *   CSS selector w/ CSS variable\n *   Updating all cell nodes\n */\n@Injectable()\nexport class TableLayoutFixedResizeStrategy extends ResizeStrategy {\n  constructor(\n    protected readonly columnResize: ColumnResize,\n    @Inject(_COALESCED_STYLE_SCHEDULER)\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\n    protected readonly table: CdkTable<unknown>\n  ) {\n    super();\n  }\n\n  applyColumnSize(\n    _: string,\n    columnHeader: HTMLElement,\n    sizeInPx: number,\n    previousSizeInPx?: number\n  ): void {\n    const delta = sizeInPx - (previousSizeInPx ?? getElementWidth(columnHeader));\n\n    if (delta === 0) {\n      return;\n    }\n\n    this.styleScheduler.schedule(() => {\n      columnHeader.style.width = coerceCssPixelValue(sizeInPx);\n    });\n\n    this.updateTableWidthAndStickyColumns(delta);\n  }\n\n  applyMinColumnSize(_: string, columnHeader: HTMLElement, sizeInPx: number): void {\n    const currentWidth = getElementWidth(columnHeader);\n    const newWidth = Math.max(currentWidth, sizeInPx);\n\n    this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\n  }\n\n  applyMaxColumnSize(_: string, columnHeader: HTMLElement, sizeInPx: number): void {\n    const currentWidth = getElementWidth(columnHeader);\n    const newWidth = Math.min(currentWidth, sizeInPx);\n\n    this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\n  }\n}\n\n/**\n * The optimally performing resize strategy for flex mat-tables.\n * Tested against and outperformed:\n *   CSS selector w/ CSS variable\n *   Updating all mat-cell nodes\n */\n@Injectable()\nexport class CdkFlexTableResizeStrategy extends ResizeStrategy implements OnDestroy {\n  private readonly _document: Document;\n  private readonly _columnIndexes = new Map<string, number>();\n  private readonly _columnProperties = new Map<string, Map<string, string>>();\n\n  private _styleElement?: HTMLStyleElement;\n  private _indexSequence = 0;\n\n  protected readonly defaultMinSize = 0;\n  protected readonly defaultMaxSize = Number.MAX_SAFE_INTEGER;\n\n  constructor(\n    protected readonly columnResize: ColumnResize,\n    @Inject(_COALESCED_STYLE_SCHEDULER)\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\n    protected readonly table: CdkTable<unknown>,\n    @Inject(DOCUMENT) document: any,\n    @Inject(CSP_NONCE) @Optional() private readonly _nonce?: string | null\n  ) {\n    super();\n    this._document = document;\n  }\n\n  applyColumnSize(\n    cssFriendlyColumnName: string,\n    columnHeader: HTMLElement,\n    sizeInPx: number,\n    previousSizeInPx?: number\n  ): void {\n    // Optimization: Check applied width first as we probably set it already before reading\n    // offsetWidth which triggers layout.\n    const delta =\n      sizeInPx -\n      (previousSizeInPx ??\n        (this._getAppliedWidth(cssFriendlyColumnName) || columnHeader.offsetWidth));\n\n    if (delta === 0) {\n      return;\n    }\n\n    const cssSize = coerceCssPixelValue(sizeInPx);\n\n    this._applyProperty(cssFriendlyColumnName, 'flex', `0 0.01 ${cssSize}`);\n    this.updateTableWidthAndStickyColumns(delta);\n  }\n\n  applyMinColumnSize(cssFriendlyColumnName: string, _: HTMLElement, sizeInPx: number): void {\n    const cssSize = coerceCssPixelValue(sizeInPx);\n\n    this._applyProperty(\n      cssFriendlyColumnName,\n      'min-width',\n      cssSize,\n      sizeInPx !== this.defaultMinSize\n    );\n    this.updateTableWidthAndStickyColumns(0);\n  }\n\n  applyMaxColumnSize(cssFriendlyColumnName: string, _: HTMLElement, sizeInPx: number): void {\n    const cssSize = coerceCssPixelValue(sizeInPx);\n\n    this._applyProperty(\n      cssFriendlyColumnName,\n      'max-width',\n      cssSize,\n      sizeInPx !== this.defaultMaxSize\n    );\n    this.updateTableWidthAndStickyColumns(0);\n  }\n\n  protected getColumnCssClass(cssFriendlyColumnName: string): string {\n    return `cdk-column-${cssFriendlyColumnName}`;\n  }\n\n  ngOnDestroy(): void {\n    this._styleElement?.remove();\n    this._styleElement = undefined;\n  }\n\n  private _getPropertyValue(cssFriendlyColumnName: string, key: string): string | undefined {\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n    return properties.get(key);\n  }\n\n  private _getAppliedWidth(cssFriendslyColumnName: string): number {\n    return coercePixelsFromFlexValue(this._getPropertyValue(cssFriendslyColumnName, 'flex'));\n  }\n\n  private _applyProperty(\n    cssFriendlyColumnName: string,\n    key: string,\n    value: string,\n    enable = true\n  ): void {\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n\n    this.styleScheduler.schedule(() => {\n      if (enable) {\n        properties.set(key, value);\n      } else {\n        properties.delete(key);\n      }\n      this._applySizeCss(cssFriendlyColumnName);\n    });\n  }\n\n  private _getStyleSheet(): CSSStyleSheet {\n    if (!this._styleElement) {\n      this._styleElement = this._document.createElement('style');\n\n      if (this._nonce) {\n        this._styleElement.nonce = this._nonce;\n      }\n\n      this._styleElement.appendChild(this._document.createTextNode(''));\n      this._document.head.appendChild(this._styleElement);\n    }\n\n    return this._styleElement.sheet as CSSStyleSheet;\n  }\n\n  private _getColumnPropertiesMap(cssFriendlyColumnName: string): Map<string, string> {\n    let properties = this._columnProperties.get(cssFriendlyColumnName);\n    if (properties === undefined) {\n      properties = new Map<string, string>();\n      this._columnProperties.set(cssFriendlyColumnName, properties);\n    }\n    return properties;\n  }\n\n  private _applySizeCss(cssFriendlyColumnName: string) {\n    const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n    const propertyKeys = Array.from(properties.keys());\n\n    let index = this._columnIndexes.get(cssFriendlyColumnName);\n    if (index === undefined) {\n      if (!propertyKeys.length) {\n        // Nothing to set or unset.\n        return;\n      }\n\n      index = this._indexSequence++;\n      this._columnIndexes.set(cssFriendlyColumnName, index);\n    } else {\n      this._getStyleSheet().deleteRule(index);\n    }\n\n    const columnClassName = this.getColumnCssClass(cssFriendlyColumnName);\n    const tableClassName = this.columnResize.getUniqueCssClass();\n\n    const selector = `.${tableClassName} .${columnClassName}`;\n    const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');\n\n    this._getStyleSheet().insertRule(`${selector} {${body}}`, index);\n  }\n}\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nfunction coercePixelsFromCssValue(cssValue: string): number {\n  return Number(cssValue.match(/(\\d+)px/)?.[1]);\n}\n\n/** Gets the style.width pixels on the specified element if present, otherwise its offsetWidth. */\nfunction getElementWidth(element: HTMLElement) {\n  // Optimization: Check style.width first as we probably set it already before reading\n  // offsetWidth which triggers layout.\n  return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\n}\n\n/**\n * Converts CSS flex values as set in CdkFlexTableResizeStrategy to numbers,\n * eg \"0 0.01 123px\" to 123.\n */\nfunction coercePixelsFromFlexValue(flexValue: string | undefined): number {\n  return Number(flexValue?.match(/0 0\\.01 (\\d+)px/)?.[1]);\n}\n\nexport const TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER: Provider = {\n  provide: ResizeStrategy,\n  useClass: TableLayoutFixedResizeStrategy,\n};\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n  provide: ResizeStrategy,\n  useClass: CdkFlexTableResizeStrategy,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Provider } from '@angular/core';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport {\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n  FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\n\nconst PROVIDERS: Provider[] = [\n  ColumnResizeNotifier,\n  HeaderRowEventDispatcher,\n  ColumnResizeNotifierSource,\n];\n\nexport const TABLE_PROVIDERS: Provider[] = [\n  ...PROVIDERS,\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { TABLE_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a table-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n  selector: 'table[cdk-table][columnResize]',\n  providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }],\n  standalone: true,\n})\nexport class CdkColumnResize extends ColumnResize {\n  constructor(\n    readonly columnResizeNotifier: ColumnResizeNotifier,\n    readonly elementRef: ElementRef<HTMLElement>,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly ngZone: NgZone,\n    protected readonly notifier: ColumnResizeNotifierSource,\n    protected readonly table: CdkTable<unknown>\n  ) {\n    super();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { FLEX_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a flexbox-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n  selector: 'cdk-table[columnResize]',\n  providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }],\n  standalone: true,\n})\nexport class CdkColumnResizeFlex extends ColumnResize {\n  constructor(\n    readonly columnResizeNotifier: ColumnResizeNotifier,\n    readonly elementRef: ElementRef<HTMLElement>,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly ngZone: NgZone,\n    protected readonly notifier: ColumnResizeNotifierSource,\n    protected readonly table: CdkTable<unknown>\n  ) {\n    super();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { CdkColumnResize } from './column-resize-directives/column-resize';\nimport { CdkColumnResizeFlex } from './column-resize-directives/column-resize-flex';\n\n/**\n * One of two NgModules for use with CdkColumnResize.\n * When using this module, columns are not resizable by default.\n */\n@NgModule({\n  imports: [CdkColumnResize, CdkColumnResizeFlex],\n  exports: [CdkColumnResize, CdkColumnResizeFlex],\n})\nexport class CdkColumnResizeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * Can be provided by the host application to enable persistence of column resize state.\n */\n@Injectable()\nexport abstract class ColumnSizeStore {\n  /** Returns the persisted size of the specified column in the specified table. */\n  abstract getSize(tableId: string, columnId: string): number;\n\n  /** Persists the size of the specified column in the specified table. */\n  abstract setSize(tableId: string, columnId: string): void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ElementRef } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\n/** Tracks state of resize events in progress. */\nexport class ResizeRef {\n  constructor(\n    readonly origin: ElementRef,\n    readonly overlayRef: OverlayRef,\n    readonly minWidthPx: number,\n    readonly maxWidthPx: number\n  ) {}\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Injector,\n  NgZone,\n  OnDestroy,\n  Type,\n  ViewContainerRef,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkColumnDef, _CoalescedStyleScheduler } from '@angular/cdk/table';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { HEADER_ROW_SELECTOR } from './selectors';\nimport { ResizeOverlayHandle } from './overlay-handle';\nimport { ColumnResize } from './column-resize';\nimport { ColumnSizeAction, ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeRef } from './resize-ref';\nimport { ResizeStrategy } from './resize-strategy';\nimport { closest } from './polyfill';\n\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\n\n/**\n * Base class for Resizable directives which are applied to column headers to make those columns\n * resizable.\n */\n@Directive()\nexport abstract class Resizable<HandleComponent extends ResizeOverlayHandle>\n  implements AfterViewInit, OnDestroy\n{\n  protected isResizable = true;\n\n  protected minWidthPxInternal: number = 0;\n  protected maxWidthPxInternal: number = Number.MAX_SAFE_INTEGER;\n\n  protected inlineHandle?: HTMLElement;\n  protected overlayRef?: OverlayRef;\n  protected readonly destroyed = new Subject<void>();\n\n  protected abstract readonly columnDef: CdkColumnDef;\n  protected abstract readonly columnResize: ColumnResize;\n  protected abstract readonly directionality: Directionality;\n  protected abstract readonly document: Document;\n  protected abstract readonly elementRef: ElementRef;\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\n  protected abstract readonly injector: Injector;\n  protected abstract readonly ngZone: NgZone;\n  protected abstract readonly overlay: Overlay;\n  protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\n  protected abstract readonly resizeStrategy: ResizeStrategy;\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n  protected abstract readonly viewContainerRef: ViewContainerRef;\n  protected abstract readonly changeDetectorRef: ChangeDetectorRef;\n\n  private _viewInitialized = false;\n  private _isDestroyed = false;\n\n  /** The minimum width to allow the column to be sized to. */\n  get minWidthPx(): number {\n    return this.minWidthPxInternal;\n  }\n  set minWidthPx(value: number) {\n    if (value) {\n      this.minWidthPxInternal = value;\n    }\n\n    this.columnResize.setResized();\n    if (this.elementRef.nativeElement && this._viewInitialized) {\n      this._applyMinWidthPx();\n    }\n  }\n\n  /** The maximum width to allow the column to be sized to. */\n  get maxWidthPx(): number {\n    return this.maxWidthPxInternal;\n  }\n  set maxWidthPx(value: number) {\n    if (value) {\n      this.maxWidthPxInternal = value;\n    }\n\n    this.columnResize.setResized();\n    if (this.elementRef.nativeElement && this._viewInitialized) {\n      this._applyMaxWidthPx();\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.isResizable) {\n      this._listenForRowHoverEvents();\n      this._listenForResizeEvents();\n      this._appendInlineHandle();\n\n      this.styleScheduler.scheduleEnd(() => {\n        if (this._isDestroyed) return;\n        this._viewInitialized = true;\n        this._applyMinWidthPx();\n        this._applyMaxWidthPx();\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._isDestroyed = true;\n    this.destroyed.next();\n    this.destroyed.complete();\n    this.inlineHandle?.remove();\n    this.overlayRef?.dispose();\n  }\n\n  protected abstract getInlineHandleCssClassName(): string;\n\n  protected abstract getOverlayHandleComponentType(): Type<HandleComponent>;\n\n  private _createOverlayForHandle(): OverlayRef {\n    // Use of overlays allows us to properly capture click events spanning parts\n    // of two table cells and is also useful for displaying a resize thumb\n    // over both cells and extending it down the table as needed.\n\n    const isRtl = this.directionality.value === 'rtl';\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.elementRef.nativeElement)\n      .withFlexibleDimensions(false)\n      .withGrowAfterOpen(false)\n      .withPush(false)\n      .withDefaultOffsetX(isRtl ? 1 : 0)\n      .withPositions([\n        {\n          originX: isRtl ? 'start' : 'end',\n          originY: 'top',\n          overlayX: 'center',\n          overlayY: 'top',\n        },\n      ]);\n\n    return this.overlay.create({\n      // Always position the overlay based on left-indexed coordinates.\n      direction: 'ltr',\n      disposeOnNavigation: true,\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      width: '16px',\n    });\n  }\n\n  private _listenForRowHoverEvents(): void {\n    const element = this.elementRef.nativeElement;\n    const takeUntilDestroyed = takeUntil<boolean>(this.destroyed);\n\n    this.eventDispatcher\n      .resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR)!)\n      .pipe(takeUntilDestroyed)\n      .subscribe(hoveringRow => {\n        if (hoveringRow) {\n          if (!this.overlayRef) {\n            this.overlayRef = this._createOverlayForHandle();\n          }\n\n          this._showHandleOverlay();\n        } else if (this.overlayRef) {\n          // todo - can't detach during an active resize - need to work that out\n          this.overlayRef.detach();\n        }\n      });\n  }\n\n  private _listenForResizeEvents() {\n    const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroyed);\n\n    merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n      .pipe(\n        takeUntilDestroyed,\n        filter(columnSize => columnSize.columnId === this.columnDef.name)\n      )\n      .subscribe(({ size, previousSize, completeImmediately }) => {\n        this.elementRef.nativeElement.classList.add(OVERLAY_ACTIVE_CLASS);\n        this._applySize(size, previousSize);\n\n        if (completeImmediately) {\n          this._completeResizeOperation();\n        }\n      });\n\n    merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n      .pipe(takeUntilDestroyed)\n      .subscribe(columnSize => {\n        this._cleanUpAfterResize(columnSize);\n      });\n  }\n\n  private _completeResizeOperation(): void {\n    this.ngZone.run(() => {\n      this.resizeNotifier.resizeCompleted.next({\n        columnId: this.columnDef.name,\n        size: this.elementRef.nativeElement.offsetWidth,\n      });\n    });\n  }\n\n  private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n    this.elementRef.nativeElement.classList.remove(OVERLAY_ACTIVE_CLASS);\n\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\n      this._updateOverlayHandleHeight();\n      this.overlayRef.updatePosition();\n\n      if (columnSize.columnId === this.columnDef.name) {\n        this.inlineHandle!.focus();\n      }\n    }\n  }\n\n  private _createHandlePortal(): ComponentPortal<HandleComponent> {\n    const injector = Injector.create({\n      parent: this.injector,\n      providers: [\n        {\n          provide: ResizeRef,\n          useValue: new ResizeRef(\n            this.elementRef,\n            this.overlayRef!,\n            this.minWidthPx,\n            this.maxWidthPx\n          ),\n        },\n      ],\n    });\n\n    return new ComponentPortal(\n      this.getOverlayHandleComponentType(),\n      this.viewContainerRef,\n      injector\n    );\n  }\n\n  private _showHandleOverlay(): void {\n    this._updateOverlayHandleHeight();\n    this.overlayRef!.attach(this._createHandlePortal());\n\n    // Needed to ensure that all of the lifecycle hooks inside the overlay run immediately.\n    this.changeDetectorRef.markForCheck();\n  }\n\n  private _updateOverlayHandleHeight() {\n    this.overlayRef!.updateSize({ height: this.elementRef.nativeElement.offsetHeight });\n  }\n\n  private _applySize(sizeInPixels: number, previousSize?: number): void {\n    const sizeToApply = Math.min(Math.max(sizeInPixels, this.minWidthPx, 0), this.maxWidthPx);\n\n    this.resizeStrategy.applyColumnSize(\n      this.columnDef.cssClassFriendlyName,\n      this.elementRef.nativeElement,\n      sizeToApply,\n      previousSize\n    );\n  }\n\n  private _applyMinWidthPx(): void {\n    this.resizeStrategy.applyMinColumnSize(\n      this.columnDef.cssClassFriendlyName,\n      this.elementRef.nativeElement,\n      this.minWidthPx\n    );\n  }\n\n  private _applyMaxWidthPx(): void {\n    this.resizeStrategy.applyMaxColumnSize(\n      this.columnDef.cssClassFriendlyName,\n      this.elementRef.nativeElement,\n      this.maxWidthPx\n    );\n  }\n\n  private _appendInlineHandle(): void {\n    this.styleScheduler.schedule(() => {\n      this.inlineHandle = this.document.createElement('div');\n      this.inlineHandle.tabIndex = 0;\n      this.inlineHandle.className = this.getInlineHandleCssClassName();\n\n      // TODO: Apply correct aria role (probably slider) after a11y spec questions resolved.\n\n      this.elementRef.nativeElement.appendChild(this.inlineHandle);\n    });\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterViewInit, Directive, ElementRef, OnDestroy, NgZone } from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkColumnDef, _CoalescedStyleScheduler } from '@angular/cdk/table';\nimport { fromEvent, Subject, merge } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  mapTo,\n  pairwise,\n  startWith,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport { HEADER_CELL_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeRef } from './resize-ref';\nimport { closest } from './polyfill';\n\n// TODO: Take another look at using cdk drag drop. IIRC I ran into a couple\n// good reasons for not using it but I don't remember what they were at this point.\n/**\n * Base class for a component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying any visible UI on the column edge.\n */\n@Directive()\nexport abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {\n  protected readonly destroyed = new Subject<void>();\n\n  protected abstract readonly columnDef: CdkColumnDef;\n  protected abstract readonly document: Document;\n  protected abstract readonly directionality: Directionality;\n  protected abstract readonly elementRef: ElementRef;\n  protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\n  protected abstract readonly ngZone: NgZone;\n  protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\n  protected abstract readonly resizeRef: ResizeRef;\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n\n  ngAfterViewInit() {\n    this._listenForMouseEvents();\n  }\n\n  ngOnDestroy() {\n    this.destroyed.next();\n    this.destroyed.complete();\n  }\n\n  private _listenForMouseEvents() {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter')\n        .pipe(mapTo(this.resizeRef.origin.nativeElement), takeUntil(this.destroyed))\n        .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\n\n      fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseleave')\n        .pipe(\n          map(\n            event =>\n              event.relatedTarget && closest(event.relatedTarget as Element, HEADER_CELL_SELECTOR)\n          ),\n          takeUntil(this.destroyed)\n        )\n        .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\n\n      fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\n        .pipe(takeUntil(this.destroyed))\n        .subscribe(mousedownEvent => {\n          this._dragStarted(mousedownEvent);\n        });\n    });\n  }\n\n  private _dragStarted(mousedownEvent: MouseEvent) {\n    // Only allow dragging using the left mouse button.\n    if (mousedownEvent.button !== 0) {\n      return;\n    }\n\n    const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup');\n    const mousemove = fromEvent<MouseEvent>(this.document, 'mousemove');\n    const escape = fromEvent<KeyboardEvent>(this.document, 'keyup').pipe(\n      filter(event => event.keyCode === ESCAPE)\n    );\n\n    const startX = mousedownEvent.screenX;\n\n    const initialSize = this._getOriginWidth();\n    let overlayOffset = 0;\n    let originOffset = this._getOriginOffset();\n    let size = initialSize;\n    let overshot = 0;\n\n    this.updateResizeActive(true);\n\n    mouseup.pipe(takeUntil(merge(escape, this.destroyed))).subscribe(({ screenX }) => {\n      this.styleScheduler.scheduleEnd(() => {\n        this._notifyResizeEnded(size, screenX !== startX);\n      });\n    });\n\n    escape.pipe(takeUntil(merge(mouseup, this.destroyed))).subscribe(() => {\n      this._notifyResizeEnded(initialSize);\n    });\n\n    mousemove\n      .pipe(\n        map(({ screenX }) => screenX),\n        startWith(startX),\n        distinctUntilChanged(),\n        pairwise(),\n        takeUntil(merge(mouseup, escape, this.destroyed))\n      )\n      .subscribe(([prevX, currX]) => {\n        let deltaX = currX - prevX;\n\n        // If the mouse moved further than the resize was able to match, limit the\n        // movement of the overlay to match the actual size and position of the origin.\n        if (overshot !== 0) {\n          if ((overshot < 0 && deltaX < 0) || (overshot > 0 && deltaX > 0)) {\n            overshot += deltaX;\n            return;\n          } else {\n            const remainingOvershot = overshot + deltaX;\n            overshot =\n              overshot > 0 ? Math.max(remainingOvershot, 0) : Math.min(remainingOvershot, 0);\n            deltaX = remainingOvershot - overshot;\n\n            if (deltaX === 0) {\n              return;\n            }\n          }\n        }\n\n        let computedNewSize: number = size + (this._isLtr() ? deltaX : -deltaX);\n        computedNewSize = Math.min(\n          Math.max(computedNewSize, this.resizeRef.minWidthPx, 0),\n          this.resizeRef.maxWidthPx\n        );\n\n        this.resizeNotifier.triggerResize.next({\n          columnId: this.columnDef.name,\n          size: computedNewSize,\n          previousSize: size,\n          isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,\n        });\n\n        this.styleScheduler.scheduleEnd(() => {\n          const originNewSize = this._getOriginWidth();\n          const originNewOffset = this._getOriginOffset();\n          const originOffsetDeltaX = originNewOffset - originOffset;\n          const originSizeDeltaX = originNewSize - size;\n          size = originNewSize;\n          originOffset = originNewOffset;\n\n          overshot += deltaX + (this._isLtr() ? -originSizeDeltaX : originSizeDeltaX);\n          overlayOffset += originOffsetDeltaX + (this._isLtr() ? originSizeDeltaX : 0);\n\n          this._updateOverlayOffset(overlayOffset);\n        });\n      });\n  }\n\n  protected updateResizeActive(active: boolean): void {\n    this.eventDispatcher.overlayHandleActiveForCell.next(\n      active ? this.resizeRef.origin.nativeElement : null\n    );\n  }\n\n  private _getOriginWidth(): number {\n    return this.resizeRef.origin.nativeElement.offsetWidth;\n  }\n\n  private _getOriginOffset(): number {\n    return this.resizeRef.origin.nativeElement.offsetLeft;\n  }\n\n  private _updateOverlayOffset(offset: number): void {\n    this.resizeRef.overlayRef.overlayElement.style.transform = `translateX(${coerceCssPixelValue(\n      offset\n    )})`;\n  }\n\n  private _isLtr(): boolean {\n    return this.directionality.value === 'ltr';\n  }\n\n  private _notifyResizeEnded(size: number, completedSuccessfully = false): void {\n    this.updateResizeActive(false);\n\n    this.ngZone.run(() => {\n      const sizeMessage = { columnId: this.columnDef.name, size };\n      if (completedSuccessfully) {\n        this.resizeNotifier.resizeCompleted.next(sizeMessage);\n      } else {\n        this.resizeNotifier.resizeCanceled.next(sizeMessage);\n      }\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ColumnResize","i1.ColumnResizeNotifier","i2.HeaderRowEventDispatcher","i1.ColumnResizeNotifierSource","i3"],"mappings":"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"}