{"version":3,"file":"column-resize.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/selectors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-notifier.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/event-dispatcher.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/coalesced-style-scheduler.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/resize-strategy.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-directives/constants.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-directives/column-resize.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-directives/column-resize-flex.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize-flex.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-resize-module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/column-size-store.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/resize-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/resizable.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/column-resize/overlay-handle.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.dev/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.dev/license\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Renderer2,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {merge, Subject} from 'rxjs';\nimport {mapTo, pairwise, startWith, take, takeUntil} from 'rxjs/operators';\n\nimport {_closest} from '../popover-edit';\n\nimport {ColumnResizeNotifier, ColumnResizeNotifierSource} from './column-resize-notifier';\nimport {HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR} from './selectors';\nimport {HeaderRowEventDispatcher} from './event-dispatcher';\n\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\n\n/** Configurable options for column resize. */\nexport interface ColumnResizeOptions {\n  liveResizeUpdates?: boolean; // Defaults to true.\n}\n\nexport const COLUMN_RESIZE_OPTIONS = new InjectionToken<ColumnResizeOptions>(\n  'CdkColumnResizeOptions',\n);\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  private _renderer = inject(Renderer2);\n  private _eventCleanups: (() => void)[] | undefined;\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 = inject(_IdGenerator).getId('cdk-column-resize-');\n\n  /** The id attribute of the table, if specified. */\n  id?: string;\n\n  /** @docs-private Whether a call to updateStickyColumnStyles is pending after a resize. */\n  _flushPending = false;\n\n  /**\n   * Whether to update the column's width continuously as the mouse position\n   * changes, or to wait until mouseup to apply the new size.\n   */\n  @Input() liveResizeUpdates =\n    inject(COLUMN_RESIZE_OPTIONS, {optional: true})?.liveResizeUpdates ?? true;\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._eventCleanups?.forEach(cleanup => cleanup());\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 this.selectorId;\n  }\n\n  /** Gets the ID for this table used for column size persistance. */\n  getTableId(): string {\n    return String(this.elementRef.nativeElement.id);\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      this._eventCleanups = [\n        this._renderer.listen(element, 'mouseover', (event: MouseEvent) => {\n          this.eventDispatcher.headerCellHovered.next(_closest(event.target, HEADER_CELL_SELECTOR));\n        }),\n        this._renderer.listen(element, 'mouseleave', (event: MouseEvent) => {\n          if (\n            event.relatedTarget &&\n            !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR)\n          ) {\n            this.eventDispatcher.headerCellHovered.next(null);\n          }\n        }),\n      ];\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.dev/license\n */\n\nimport {inject, Service} 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@Service({autoProvided: false})\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@Service({autoProvided: false})\nexport class ColumnResizeNotifier {\n  private readonly _source = inject(ColumnResizeNotifierSource);\n\n  /** Emits whenever a column is resized. */\n  readonly resizeCompleted: Observable<ColumnSize> = this._source.resizeCompleted;\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.dev/license\n */\n\nimport {Service, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged, map, share, skip, startWith, debounceTime} from 'rxjs/operators';\n\nimport {_closest} from '../popover-edit';\n\nimport {HEADER_ROW_SELECTOR} from './selectors';\n\n/** Coordinates events between the column resize directives. */\n@Service({autoProvided: false})\nexport class HeaderRowEventDispatcher {\n  private readonly _ngZone = inject(NgZone);\n\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  /** Distinct and shared version of headerCellHovered. */\n  readonly headerCellHoveredDistinct = this.headerCellHovered.pipe(\n    distinctUntilChanged(),\n    debounceTime(200),\n    share(),\n  );\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.dev/license\n */\n\nimport {Service, InjectionToken, NgZone, inject} from '@angular/core';\n\n/**\n * @docs-private\n */\nexport class _Schedule {\n  tasks: (() => unknown)[] = [];\n  endTasks: (() => unknown)[] = [];\n}\n\n/** Injection token used to provide a coalesced style scheduler. */\nexport const _COALESCED_STYLE_SCHEDULER = new InjectionToken<_CoalescedStyleScheduler>(\n  '_COALESCED_STYLE_SCHEDULER',\n);\n\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\n@Service({autoProvided: false})\nexport class _CoalescedStyleScheduler {\n  private _currentSchedule: _Schedule | null = null;\n  private _ngZone = inject(NgZone);\n\n  /**\n   * Schedules the specified task to run at the end of the current VM turn.\n   */\n  schedule(task: () => unknown): void {\n    this._createScheduleIfNeeded();\n\n    this._currentSchedule!.tasks.push(task);\n  }\n\n  /**\n   * Schedules the specified task to run after other scheduled tasks at the end of the current\n   * VM turn.\n   */\n  scheduleEnd(task: () => unknown): void {\n    this._createScheduleIfNeeded();\n\n    this._currentSchedule!.endTasks.push(task);\n  }\n\n  private _createScheduleIfNeeded() {\n    if (this._currentSchedule) {\n      return;\n    }\n\n    this._currentSchedule = new _Schedule();\n\n    this._ngZone.runOutsideAngular(() =>\n      // TODO(mmalerba): Scheduling this using something that runs less frequently\n      //  (e.g. requestAnimationFrame, setTimeout, etc.) causes noticeable jank with the column\n      //  resizer. We should audit the usages of schedule / scheduleEnd in that component and see\n      //  if we can refactor it so that we don't need to flush the tasks quite so frequently.\n      queueMicrotask(() => {\n        while (this._currentSchedule!.tasks.length || this._currentSchedule!.endTasks.length) {\n          const schedule = this._currentSchedule!;\n\n          // Capture new tasks scheduled by the current set of tasks.\n          this._currentSchedule = new _Schedule();\n\n          for (const task of schedule.tasks) {\n            task();\n          }\n\n          for (const task of schedule.endTasks) {\n            task();\n          }\n        }\n\n        this._currentSchedule = null;\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.dev/license\n */\n\nimport {Service, OnDestroy, Provider, CSP_NONCE, inject, DOCUMENT} from '@angular/core';\n\nimport {coerceCssPixelValue} from '@angular/cdk/coercion';\nimport {CdkTable} from '@angular/cdk/table';\n\nimport {ColumnResize} from './column-resize';\nimport {_COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler} from './coalesced-style-scheduler';\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@Service({autoProvided: false})\nexport abstract class ResizeStrategy implements OnDestroy {\n  protected abstract readonly columnResize: ColumnResize;\n  protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n  protected abstract readonly table: CdkTable<unknown>;\n\n  private _tableObserved = false;\n  private _elemSizeCache = new WeakMap<HTMLElement, {width: number; height: number}>();\n  private _resizeObserver = globalThis?.ResizeObserver\n    ? new globalThis.ResizeObserver(entries => this._updateCachedSizes(entries))\n    : 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    this.columnResize._flushPending = true;\n\n    this.styleScheduler.scheduleEnd(() => {\n      if (!this.columnResize._flushPending) {\n        return;\n      }\n      this.columnResize._flushPending = false;\n      this.table.updateStickyColumnStyles();\n    });\n  }\n\n  /** Gets the style.width pixels on the specified element if present, otherwise its offsetWidth. */\n  protected getElementWidth(element: HTMLElement) {\n    // Optimization: Check style.width first as we probably set it already before reading\n    // offsetWidth which triggers layout.\n    return (\n      coercePixelsFromCssValue(element.style.width) ||\n      this._elemSizeCache.get(element)?.width ||\n      element.offsetWidth\n    );\n  }\n\n  /** Informs the ResizeStrategy instance of a column that may be resized in the future. */\n  registerColumn(column: HTMLElement) {\n    if (!this._tableObserved) {\n      this._tableObserved = true;\n      this._resizeObserver?.observe(this.columnResize.elementRef.nativeElement, {\n        box: 'border-box',\n      });\n    }\n    this._resizeObserver?.observe(column, {box: 'border-box'});\n  }\n\n  ngOnDestroy(): void {\n    this._resizeObserver?.disconnect();\n  }\n\n  private _updateCachedSizes(entries: ResizeObserverEntry[]) {\n    for (const entry of entries) {\n      const newEntry = entry.borderBoxSize?.length\n        ? {\n            width: entry.borderBoxSize[0].inlineSize,\n            height: entry.borderBoxSize[0].blockSize,\n          }\n        : {\n            width: entry.contentRect.width,\n            height: entry.contentRect.height,\n          };\n\n      this._elemSizeCache.set(entry.target as HTMLElement, newEntry);\n    }\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@Service({autoProvided: false})\nexport class TableLayoutFixedResizeStrategy extends ResizeStrategy {\n  protected readonly columnResize = inject(ColumnResize);\n  protected readonly styleScheduler = inject<_CoalescedStyleScheduler>(_COALESCED_STYLE_SCHEDULER);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n\n  applyColumnSize(\n    _: string,\n    columnHeader: HTMLElement,\n    sizeInPx: number,\n    previousSizeInPx?: number,\n  ): void {\n    const delta = sizeInPx - (previousSizeInPx ?? this.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 = this.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 = this.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@Service({autoProvided: false})\nexport class CdkFlexTableResizeStrategy extends ResizeStrategy implements OnDestroy {\n  protected readonly columnResize = inject(ColumnResize);\n  protected readonly styleScheduler = inject<_CoalescedStyleScheduler>(_COALESCED_STYLE_SCHEDULER);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n  private readonly _nonce = inject(CSP_NONCE, {optional: true});\n\n  private readonly _document = inject(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  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  override ngOnDestroy(): void {\n    super.ngOnDestroy();\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.setAttribute('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/**\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.dev/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';\nimport {_COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler} from '../coalesced-style-scheduler';\n\nconst PROVIDERS: Provider[] = [\n  ColumnResizeNotifier,\n  HeaderRowEventDispatcher,\n  ColumnResizeNotifierSource,\n  {provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler},\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.dev/license\n */\n\nimport {Directive, ElementRef, NgZone, inject} 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})\nexport class CdkColumnResize extends ColumnResize {\n  readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n  protected readonly ngZone = inject(NgZone);\n  protected readonly notifier = inject(ColumnResizeNotifierSource);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\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.dev/license\n */\n\nimport {Directive, ElementRef, NgZone, inject} 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})\nexport class CdkColumnResizeFlex extends ColumnResize {\n  readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n  protected readonly ngZone = inject(NgZone);\n  protected readonly notifier = inject(ColumnResizeNotifierSource);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\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.dev/license\n */\n\nimport {Directive, ElementRef, NgZone, inject} 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 * Implicitly enables column resizing for a table-based cdk-table.\n * Individual columns will be resizable unless opted out.\n */\n@Directive({\n  selector: 'table[cdk-table]',\n  providers: [\n    ...TABLE_PROVIDERS,\n    {provide: ColumnResize, useExisting: CdkDefaultEnabledColumnResize},\n  ],\n})\nexport class CdkDefaultEnabledColumnResize extends ColumnResize {\n  readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n  protected readonly ngZone = inject(NgZone);\n  protected readonly notifier = inject(ColumnResizeNotifierSource);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\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.dev/license\n */\n\nimport {Directive, ElementRef, NgZone, inject} 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 * Implicitly enables column resizing for a flex cdk-table.\n * Individual columns will be resizable unless opted out.\n */\n@Directive({\n  selector: 'cdk-table',\n  providers: [\n    ...FLEX_PROVIDERS,\n    {provide: ColumnResize, useExisting: CdkDefaultEnabledColumnResizeFlex},\n  ],\n})\nexport class CdkDefaultEnabledColumnResizeFlex extends ColumnResize {\n  readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n  protected readonly ngZone = inject(NgZone);\n  protected readonly notifier = inject(ColumnResizeNotifierSource);\n  protected readonly table = inject<CdkTable<unknown>>(CdkTable);\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.dev/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';\nimport {CdkDefaultEnabledColumnResize} from './column-resize-directives/default-enabled-column-resize';\nimport {CdkDefaultEnabledColumnResizeFlex} from './column-resize-directives/default-enabled-column-resize-flex';\n\n/**\n * One of two NgModules for use with CdkColumnResize.\n * When using this module, columns are resizable by default.\n */\n@NgModule({\n  imports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex],\n  exports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex],\n})\nexport class CdkColumnResizeDefaultEnabledModule {}\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.dev/license\n */\n\nimport {Service} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * Can be provided by the host application to enable persistence of column resize state.\n */\n@Service({autoProvided: false})\nexport abstract class ColumnSizeStore {\n  /** Returns the persisted size of the specified column in the specified table. */\n  abstract getSize(tableId: string, columnId: string): Observable<number | null> | null;\n\n  /** Persists the size of the specified column in the specified table. */\n  abstract setSize(tableId: string, columnId: string, sizePx: number): 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.dev/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    readonly liveUpdates = true,\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.dev/license\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  inject,\n  Injector,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Type,\n  ViewContainerRef,\n  ChangeDetectorRef,\n  afterNextRender,\n  runInInjectionContext,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {\n  createFlexibleConnectedPositionStrategy,\n  createOverlayRef,\n  createRepositionScrollStrategy,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {merge, Subject} from 'rxjs';\nimport {distinctUntilChanged, filter, take, takeUntil} from 'rxjs/operators';\n\nimport {_closest} from '../popover-edit';\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 {ColumnSizeStore} from './column-size-store';\nimport {HeaderRowEventDispatcher} from './event-dispatcher';\nimport {ResizeRef} from './resize-ref';\nimport {ResizeStrategy} from './resize-strategy';\nimport {_CoalescedStyleScheduler} from './coalesced-style-scheduler';\n\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\nconst RESIZE_DISABLED_CLASS = 'cdk-resizable-resize-disabled';\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, OnInit\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 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  protected readonly columnSizeStore = inject(ColumnSizeStore, {optional: true});\n  private _injector = inject(Injector);\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    this.minWidthPxInternal = value;\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    this.maxWidthPxInternal = value;\n\n    this.columnResize.setResized();\n    if (this.elementRef.nativeElement && this._viewInitialized) {\n      this._applyMaxWidthPx();\n    }\n  }\n\n  ngOnInit() {\n    this.resizeStrategy.registerColumn(this.elementRef.nativeElement);\n  }\n\n  ngAfterViewInit() {\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      this.columnSizeStore\n        ?.getSize(this.columnResize.getTableId(), this.columnDef.name)\n        ?.pipe(take(1), takeUntil(this.destroyed))\n        .subscribe(size => {\n          if (size == null) {\n            return;\n          }\n          this._applySize(size);\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 = createFlexibleConnectedPositionStrategy(\n      this._injector,\n      this.elementRef.nativeElement!,\n    )\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 createOverlayRef(this._injector, {\n      // Always position the overlay based on left-indexed coordinates.\n      direction: 'ltr',\n      disposeOnNavigation: true,\n      positionStrategy,\n      scrollStrategy: createRepositionScrollStrategy(this._injector),\n      width: '16px',\n    });\n  }\n\n  private _listenForRowHoverEvents(): void {\n    const element = this.elementRef.nativeElement!;\n\n    this.eventDispatcher\n      .resizeOverlayVisibleForHeaderRow(_closest(element, HEADER_ROW_SELECTOR)!)\n      .pipe(takeUntil(this.destroyed))\n      .subscribe(hoveringRow => {\n        if (this._isDestroyed) {\n          return;\n        }\n\n        if (hoveringRow) {\n          const tooBigToResize =\n            this.maxWidthPxInternal < Number.MAX_SAFE_INTEGER &&\n            element.offsetWidth > this.maxWidthPxInternal;\n          element.classList.toggle(RESIZE_DISABLED_CLASS, tooBigToResize);\n\n          if (!tooBigToResize) {\n            this.overlayRef ??= this._createOverlayForHandle();\n            this._showHandleOverlay();\n          }\n        } else {\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    this.resizeNotifier.resizeCompleted\n      .pipe(\n        filter(sizeUpdate => sizeUpdate.columnId === this.columnDef.name),\n        distinctUntilChanged((a, b) => a.size === b.size),\n        takeUntil(this.destroyed),\n      )\n      .subscribe(sizeUpdate => {\n        this.columnSizeStore?.setSize(\n          this.columnResize.getTableId(),\n          this.columnDef.name,\n          sizeUpdate.size,\n        );\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?.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            this.columnResize.liveResizeUpdates,\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    if (!this._isDestroyed) {\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\n  private _updateOverlayHandleHeight() {\n    runInInjectionContext(this.injector, () => {\n      afterNextRender({\n        write: () => {\n          this.overlayRef?.updateSize({height: this.elementRef.nativeElement!.offsetHeight});\n        },\n      });\n    });\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.inlineHandle = this.document.createElement('div');\n    // TODO: re-apply tab index once this element has behavior.\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 * @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.dev/license\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  OnDestroy,\n  NgZone,\n  Renderer2,\n  inject,\n} from '@angular/core';\nimport {coerceCssPixelValue} from '@angular/cdk/coercion';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ESCAPE} from '@angular/cdk/keycodes';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {Subject, merge, Observable} from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  mapTo,\n  pairwise,\n  startWith,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport {_closest} from '../popover-edit';\n\nimport {HEADER_CELL_SELECTOR} from './selectors';\nimport {ColumnResizeNotifierSource} from './column-resize-notifier';\nimport {HeaderRowEventDispatcher} from './event-dispatcher';\nimport {ResizeRef} from './resize-ref';\nimport {_CoalescedStyleScheduler} from './coalesced-style-scheduler';\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  private _renderer = inject(Renderer2);\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  private _cumulativeDeltaX = 0;\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      this._observableFromEvent<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      this._observableFromEvent<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      this._observableFromEvent<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 = this._observableFromEvent<MouseEvent>(this.document, 'mouseup');\n    const mousemove = this._observableFromEvent<MouseEvent>(this.document, 'mousemove');\n    const escape = this._observableFromEvent<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    this._cumulativeDeltaX = 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 (!this.resizeRef.liveUpdates) {\n          this._cumulativeDeltaX += deltaX;\n          const sizeDelta = this._computeNewSize(size, this._cumulativeDeltaX) - size;\n          this._updateOverlayOffset(sizeDelta);\n\n          return;\n        }\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        this._triggerResize(size, deltaX);\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 _triggerResize(startSize: number, deltaX: number): void {\n    this.resizeNotifier.triggerResize.next({\n      columnId: this.columnDef.name,\n      size: this._computeNewSize(startSize, deltaX),\n      previousSize: startSize,\n      isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,\n    });\n  }\n\n  private _computeNewSize(startSize: number, deltaX: number): number {\n    let computedNewSize: number = startSize + (this._isLtr() ? deltaX : -deltaX);\n    computedNewSize = Math.min(\n      Math.max(computedNewSize, this.resizeRef.minWidthPx, 0),\n      this.resizeRef.maxWidthPx,\n    );\n    return computedNewSize;\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 = {\n        columnId: this.columnDef.name,\n        size: this._computeNewSize(size, this._cumulativeDeltaX),\n      };\n      if (completedSuccessfully) {\n        if (!this.resizeRef.liveUpdates) {\n          this._triggerResize(size, this._cumulativeDeltaX);\n        }\n\n        this.resizeNotifier.resizeCompleted.next(sizeMessage);\n      } else {\n        this.resizeNotifier.resizeCanceled.next(sizeMessage);\n      }\n    });\n  }\n\n  private _observableFromEvent<T extends Event>(element: Element | Document, name: string) {\n    return new Observable<T>(subscriber => {\n      const handler = (event: T) => subscriber.next(event);\n      const cleanup = this._renderer.listen(element, name, handler);\n      return () => {\n        cleanup();\n        subscriber.complete();\n      };\n    });\n  }\n}\n"],"names":["HEADER_CELL_SELECTOR","HEADER_ROW_SELECTOR","RESIZE_OVERLAY_SELECTOR","HOVER_OR_ACTIVE_CLASS","WITH_RESIZED_COLUMN_CLASS","COLUMN_RESIZE_OPTIONS","InjectionToken","ColumnResize","_renderer","inject","Renderer2","_eventCleanups","destroyed","Subject","selectorId","_IdGenerator","getId","id","_flushPending","liveResizeUpdates","optional","ngAfterViewInit","elementRef","nativeElement","classList","add","getUniqueCssClass","_listenForRowHoverEvents","_listenForResizeActivity","_listenForHoverActivity","ngOnDestroy","forEach","cleanup","next","complete","getTableId","String","setResized","ngZone","runOutsideAngular","element","listen","event","eventDispatcher","headerCellHovered","_closest","target","relatedTarget","matches","merge","overlayHandleActiveForCell","pipe","mapTo","undefined","notifier","triggerResize","resizeCompleted","take","takeUntil","subscribe","headerRowHoveredOrActiveDistinct","startWith","pairwise","previousRow","hoveredRow","remove","deps","i0","ɵɵFactoryTarget","Directive","isStandalone","inputs","ngImport","decorators","Input","ColumnResizeNotifierSource","resizeCanceled","Service","autoProvided","ColumnResizeNotifier","_source","resize","columnId","size","completeImmediately","isStickyColumn","HeaderRowEventDispatcher","_ngZone","NgZone","headerCellHoveredDistinct","distinctUntilChanged","debounceTime","share","combineLatest","map","cell","skip","hovered","active","_headerRowHoveredOrActiveDistinctReenterZone","_enterZone","_lastSeenRow","_lastSeenRowHover","resizeOverlayVisibleForHeaderRow","row","source","Observable","observer","value","run","error","err","_Schedule","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_currentSchedule","schedule","task","_createScheduleIfNeeded","push","scheduleEnd","queueMicrotask","length","ResizeStrategy","_tableObserved","_elemSizeCache","WeakMap","_resizeObserver","globalThis","ResizeObserver","entries","_updateCachedSizes","updateTableWidthAndStickyColumns","delta","columnResize","styleScheduler","table","updateStickyColumnStyles","getElementWidth","coercePixelsFromCssValue","style","width","get","offsetWidth","registerColumn","column","observe","box","disconnect","entry","newEntry","borderBoxSize","inlineSize","height","blockSize","contentRect","set","TableLayoutFixedResizeStrategy","CdkTable","applyColumnSize","_","columnHeader","sizeInPx","previousSizeInPx","coerceCssPixelValue","applyMinColumnSize","currentWidth","newWidth","Math","max","applyMaxColumnSize","min","CdkFlexTableResizeStrategy","_nonce","CSP_NONCE","_document","DOCUMENT","_columnIndexes","Map","_columnProperties","_styleElement","_indexSequence","defaultMinSize","defaultMaxSize","Number","MAX_SAFE_INTEGER","cssFriendlyColumnName","_getAppliedWidth","cssSize","_applyProperty","getColumnCssClass","_getPropertyValue","key","properties","_getColumnPropertiesMap","cssFriendslyColumnName","coercePixelsFromFlexValue","enable","delete","_applySizeCss","_getStyleSheet","createElement","setAttribute","appendChild","createTextNode","head","sheet","propertyKeys","Array","from","keys","index","deleteRule","columnClassName","tableClassName","selector","body","join","insertRule","cssValue","match","flexValue","TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER","provide","useClass","FLEX_RESIZE_STRATEGY_PROVIDER","PROVIDERS","TABLE_PROVIDERS","FLEX_PROVIDERS","CdkColumnResize","columnResizeNotifier","ElementRef","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","providers","useExisting","usesInheritance","args","CdkColumnResizeFlex","CdkDefaultEnabledColumnResize","CdkDefaultEnabledColumnResizeFlex","CdkColumnResizeDefaultEnabledModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","imports","CdkColumnResizeModule","ColumnSizeStore","ResizeRef","origin","overlayRef","minWidthPx","maxWidthPx","liveUpdates","constructor","OVERLAY_ACTIVE_CLASS","RESIZE_DISABLED_CLASS","Resizable","minWidthPxInternal","maxWidthPxInternal","inlineHandle","columnSizeStore","_injector","Injector","_viewInitialized","_isDestroyed","_applyMinWidthPx","_applyMaxWidthPx","ngOnInit","resizeStrategy","_listenForResizeEvents","_appendInlineHandle","getSize","columnDef","name","_applySize","dispose","_createOverlayForHandle","isRtl","directionality","positionStrategy","createFlexibleConnectedPositionStrategy","withFlexibleDimensions","withGrowAfterOpen","withPush","withDefaultOffsetX","withPositions","originX","originY","overlayX","overlayY","createOverlayRef","direction","disposeOnNavigation","scrollStrategy","createRepositionScrollStrategy","hoveringRow","tooBigToResize","toggle","_showHandleOverlay","detach","takeUntilDestroyed","resizeNotifier","filter","columnSize","previousSize","_completeResizeOperation","_cleanUpAfterResize","sizeUpdate","a","b","setSize","hasAttached","_updateOverlayHandleHeight","updatePosition","focus","_createHandlePortal","injector","create","parent","useValue","ComponentPortal","getOverlayHandleComponentType","viewContainerRef","attach","changeDetectorRef","markForCheck","runInInjectionContext","afterNextRender","write","updateSize","offsetHeight","sizeInPixels","sizeToApply","cssClassFriendlyName","document","className","getInlineHandleCssClassName","ResizeOverlayHandle","_cumulativeDeltaX","_listenForMouseEvents","_observableFromEvent","resizeRef","mousedownEvent","_dragStarted","button","mouseup","mousemove","escape","keyCode","ESCAPE","startX","screenX","initialSize","_getOriginWidth","overlayOffset","originOffset","_getOriginOffset","overshot","updateResizeActive","_notifyResizeEnded","prevX","currX","deltaX","sizeDelta","_computeNewSize","_updateOverlayOffset","remainingOvershot","_triggerResize","originNewSize","originNewOffset","originOffsetDeltaX","originSizeDeltaX","_isLtr","startSize","sticky","stickyEnd","computedNewSize","offsetLeft","offset","overlayElement","transform","completedSuccessfully","sizeMessage","subscriber","handler"],"mappings":"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"}