@angular/cdk-experimental 19.2.3 → 19.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cdk-experimental.mjs +1 -1
- package/fesm2022/cdk-experimental.mjs.map +1 -1
- package/fesm2022/column-resize.mjs +6 -6
- package/fesm2022/column-resize.mjs.map +1 -1
- package/fesm2022/polyfill-ae40ec6f.mjs +14 -0
- package/fesm2022/polyfill-ae40ec6f.mjs.map +1 -0
- package/fesm2022/popover-edit.mjs +3 -13
- package/fesm2022/popover-edit.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdk-experimental.mjs","sources":["../../../../../../src/cdk-experimental/version.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\nimport {Version} from '@angular/core';\n\n/** Current version of the CDK Experimental package. */\nexport const VERSION = new Version('19.2.
|
|
1
|
+
{"version":3,"file":"cdk-experimental.mjs","sources":["../../../../../../src/cdk-experimental/version.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\nimport {Version} from '@angular/core';\n\n/** Current version of the CDK Experimental package. */\nexport const VERSION = new Version('19.2.4');\n"],"names":[],"mappings":";;AAUA;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
|
|
@@ -3,7 +3,7 @@ import { InjectionToken, inject, Renderer2, Directive, Input, Injectable, NgZone
|
|
|
3
3
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
4
|
import { Subject, merge, combineLatest, Observable } from 'rxjs';
|
|
5
5
|
import { mapTo, take, takeUntil, startWith, pairwise, distinctUntilChanged, share, map, skip, filter } from 'rxjs/operators';
|
|
6
|
-
import {
|
|
6
|
+
import { c as closest } from './polyfill-ae40ec6f.mjs';
|
|
7
7
|
import { _COALESCED_STYLE_SCHEDULER, CdkTable } from '@angular/cdk/table';
|
|
8
8
|
import { DOCUMENT } from '@angular/common';
|
|
9
9
|
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
@@ -66,7 +66,7 @@ class ColumnResize {
|
|
|
66
66
|
const element = this.elementRef.nativeElement;
|
|
67
67
|
this._eventCleanups = [
|
|
68
68
|
this._renderer.listen(element, 'mouseover', (event) => {
|
|
69
|
-
this.eventDispatcher.headerCellHovered.next(
|
|
69
|
+
this.eventDispatcher.headerCellHovered.next(closest(event.target, HEADER_CELL_SELECTOR));
|
|
70
70
|
}),
|
|
71
71
|
this._renderer.listen(element, 'mouseleave', (event) => {
|
|
72
72
|
if (event.relatedTarget &&
|
|
@@ -164,8 +164,8 @@ class HeaderRowEventDispatcher {
|
|
|
164
164
|
* taking precedence).
|
|
165
165
|
*/
|
|
166
166
|
headerRowHoveredOrActiveDistinct = combineLatest([
|
|
167
|
-
this.headerCellHoveredDistinct.pipe(map(cell =>
|
|
168
|
-
this.overlayHandleActiveForCell.pipe(map(cell =>
|
|
167
|
+
this.headerCellHoveredDistinct.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged()),
|
|
168
|
+
this.overlayHandleActiveForCell.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged()),
|
|
169
169
|
]).pipe(skip(1), // Ignore initial [null, null] emission.
|
|
170
170
|
map(([hovered, active]) => active || hovered), distinctUntilChanged(), share());
|
|
171
171
|
_headerRowHoveredOrActiveDistinctReenterZone = this.headerRowHoveredOrActiveDistinct.pipe(this._enterZone(), share());
|
|
@@ -702,7 +702,7 @@ class Resizable {
|
|
|
702
702
|
const element = this.elementRef.nativeElement;
|
|
703
703
|
const takeUntilDestroyed = takeUntil(this.destroyed);
|
|
704
704
|
this.eventDispatcher
|
|
705
|
-
.resizeOverlayVisibleForHeaderRow(
|
|
705
|
+
.resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR))
|
|
706
706
|
.pipe(takeUntilDestroyed)
|
|
707
707
|
.subscribe(hoveringRow => {
|
|
708
708
|
if (hoveringRow) {
|
|
@@ -826,7 +826,7 @@ class ResizeOverlayHandle {
|
|
|
826
826
|
.pipe(mapTo(this.resizeRef.origin.nativeElement), takeUntil(this.destroyed))
|
|
827
827
|
.subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
|
|
828
828
|
this._observableFromEvent(this.elementRef.nativeElement, 'mouseleave')
|
|
829
|
-
.pipe(map(event => event.relatedTarget &&
|
|
829
|
+
.pipe(map(event => event.relatedTarget && closest(event.relatedTarget, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))
|
|
830
830
|
.subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
|
|
831
831
|
this._observableFromEvent(this.elementRef.nativeElement, 'mousedown')
|
|
832
832
|
.pipe(takeUntil(this.destroyed))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-resize.mjs","sources":["../../../../../../src/cdk-experimental/column-resize/selectors.ts","../../../../../../src/cdk-experimental/column-resize/column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-notifier.ts","../../../../../../src/cdk-experimental/column-resize/event-dispatcher.ts","../../../../../../src/cdk-experimental/column-resize/resize-strategy.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/constants.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/column-resize-flex.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize-flex.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-module.ts","../../../../../../src/cdk-experimental/column-resize/column-size-store.ts","../../../../../../src/cdk-experimental/column-resize/resize-ref.ts","../../../../../../src/cdk-experimental/column-resize/resizable.ts","../../../../../../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 '@angular/cdk-experimental/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, 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 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 {Injectable, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged, map, share, skip, startWith} from 'rxjs/operators';\n\nimport {_closest} from '@angular/cdk-experimental/popover-edit';\n\nimport {HEADER_ROW_SELECTOR} from './selectors';\n\n/** Coordinates events between the column resize directives. */\n@Injectable()\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(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.dev/license\n */\n\nimport {Injectable, OnDestroy, Provider, CSP_NONCE, inject} 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 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 <table> 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 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@Injectable()\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';\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.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 {Injectable} 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@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): 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} 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 {distinctUntilChanged, filter, take, takeUntil} from 'rxjs/operators';\n\nimport {_closest} from '@angular/cdk-experimental/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';\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, 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 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 protected readonly columnSizeStore = inject(ColumnSizeStore, {optional: true});\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 = 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 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 && 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 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.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, _CoalescedStyleScheduler} 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 '@angular/cdk-experimental/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';\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":[],"mappings":";;;;;;;;;;;;AAQA;AACA;AAEO,MAAM,oBAAoB,GAAG,oCAAoC,CAAA;AAEjE,MAAM,mBAAmB,GAAG,kCAAkC,CAAA;AAE9D,MAAM,uBAAuB,GAAG,kCAAkC;;ACczE,MAAM,qBAAqB,GAAG,mCAAmC,CAAA;AACjE,MAAM,yBAAyB,GAAG,uCAAuC,CAAA;MAO5D,qBAAqB,GAAG,IAAI,cAAc,CACrD,wBAAwB,EACzB;AAED;;;AAGG;MAEmB,YAAY,CAAA;AACxB,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAC7B,IAAA,cAAc,CAAA;AACH,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAA;;IAa/B,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;;AAGhF,IAAA,EAAE,CAAA;;IAGF,aAAa,GAAG,KAAK,CAAA;AAErB;;;AAGG;AACM,IAAA,iBAAiB,GACxB,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAE,iBAAiB,IAAI,IAAI,CAAA;IAE5E,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAEtE,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,uBAAuB,EAAE,CAAA;KAChC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAA;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;KAC3B;;IAGA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAA;KACxB;;IAGA,UAAU,GAAA;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;KACjD;;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;KACzE;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAA;YAE7C,IAAI,CAAC,cAAc,GAAG;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAiB,KAAI;AAChE,oBAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAA;AAC3F,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,KAAiB,KAAI;oBACjE,IACE,KAAK,CAAC,aAAa;wBACnB,CAAE,KAAK,CAAC,aAAyB,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAClE;wBACA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;qBACnD;AACF,iBAAC,CAAC;aACH,CAAA;AACH,SAAC,CAAC,CAAA;KACJ;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,KAAK,CACH,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EACtE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAClD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;AAEnD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE,CAAA;AACnB,SAAC,CAAC,CAAA;KACN;IAEQ,uBAAuB,GAAA;QAC7B,IAAI,CAAC,eAAe,CAAC,gCAAgC;AAClD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3D,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,KAAI;YACvC,IAAI,UAAU,EAAE;AACd,gBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;aACjD;YACA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;aACrD;AACF,SAAC,CAAC,CAAA;KACN;uGAvGoB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;8BA6BC,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;ACpCR;;;AAGG;MAEU,0BAA0B,CAAA;;AAE5B,IAAA,cAAc,GAAG,IAAI,OAAO,EAAoB,CAAA;;AAGhD,IAAA,eAAe,GAAG,IAAI,OAAO,EAAc,CAAA;;AAG3C,IAAA,aAAa,GAAG,IAAI,OAAO,EAAoB,CAAA;uGAR7C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;AAYX;MAEa,oBAAoB,CAAA;AACd,IAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;;AAGpD,IAAA,eAAe,GAA2B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAA;;IAG/E,MAAM,CAAC,QAAgB,EAAE,IAAY,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;YAC9B,QAAQ;YACR,IAAI;AACJ,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,cAAc,EAAE,IAAI;AACrB,SAAA,CAAC,CAAA;KACJ;uGAdW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACvCX;MAEa,wBAAwB,CAAA;AAClB,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAEzC;;;;AAIG;AACM,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAkB,CAAA;AAE1D;;;AAGG;AACM,IAAA,0BAA0B,GAAG,IAAI,OAAO,EAAkB,CAAA;;AAG1D,IAAA,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AAEjG;;;AAGG;IACM,gCAAgC,GAAG,aAAa,CAAC;QACxD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,EAChD,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,CACvB;QACD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAClC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,EAChD,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,CACvB;KACF,CAAC,CAAC,IAAI,CACL,IAAI,CAAC,CAAC,CAAC;IACP,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,EAC7C,oBAAoB,EAAE,EACtB,KAAK,EAAE,CACR,CAAA;AAEgB,IAAA,4CAA4C,GAC3D,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;;;IAIhE,YAAY,GAAmB,IAAI,CAAA;IACnC,iBAAiB,GAA+B,IAAI,CAAA;AAE5D;;;AAGG;AACH,IAAA,gCAAgC,CAAC,GAAY,EAAA;AAC3C,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,4CAA4C,CAAC,IAAI,CAC7E,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG,CAAC,EACrC,oBAAoB,EAAE,EACtB,KAAK,EAAE,CACR,CAAA;SACH;QAEA,OAAO,IAAI,CAAC,iBAAkB,CAAA;KAChC;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,CAAC,MAAqB,KAC3B,IAAI,UAAU,CAAI,QAAQ,IACxB,MAAM,CAAC,SAAS,CAAC;YACf,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,YAAA,QAAQ,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE;AACpC,SAAA,CAAC,CACH,CAAA;KACL;uGA3EW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACFX;;;AAGG;MAEmB,cAAc,CAAA;IAK1B,cAAc,GAAG,KAAK,CAAA;AACtB,IAAA,cAAc,GAAG,IAAI,OAAO,EAAgD,CAAA;IAC5E,eAAe,GAAG,UAAU,EAAE,cAAc;AAClD,UAAE,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;UACzE,IAAI,CAAA;;AAyBE,IAAA,gCAAgC,CAAC,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAA;AAEtC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;gBACpC,OAAO;aACT;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK,CAAA;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAA;AACvC,SAAC,CAAC,CAAA;KACJ;;AAGU,IAAA,eAAe,CAAC,OAAoB,EAAA;;;QAG5C,QACE,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK;YACvC,OAAO,CAAC,WAAW,EACpB;KACH;;AAGA,IAAA,cAAc,CAAC,MAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;AAC1B,YAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE;AACxE,gBAAA,GAAG,EAAE,YAAY;AAClB,aAAA,CAAC,CAAA;SACJ;AACA,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,YAAY,EAAC,CAAC,CAAA;KAC5D;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,CAAA;KACpC;AAEQ,IAAA,kBAAkB,CAAC,OAA8B,EAAA;AACvD,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,MAAM;AAC1C,kBAAE;oBACE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU;oBACxC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;AACzC,iBAAA;AACH,kBAAE;AACE,oBAAA,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;AAC9B,oBAAA,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;iBACjC,CAAA;YAEL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAqB,EAAE,QAAQ,CAAC,CAAA;SAChE;KACF;uGAtFoB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;AA0FX;;;;;;AAMG;AAEG,MAAO,8BAA+B,SAAQ,cAAc,CAAA;AAC7C,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AACnC,IAAA,cAAc,GAAG,MAAM,CAA2B,0BAA0B,CAAC,CAAA;AAC7E,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;AAE9D,IAAA,eAAe,CACb,CAAS,EACT,YAAyB,EACzB,QAAgB,EAChB,gBAAyB,EAAA;AAEzB,QAAA,MAAM,KAAK,GAAG,QAAQ,IAAI,gBAAgB,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAA;AAEjF,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO;SACT;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAK;YAChC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;AAC1D,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAA;KAC9C;AAEA,IAAA,kBAAkB,CAAC,CAAS,EAAE,YAAyB,EAAE,QAAgB,EAAA;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAEjD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;KAC/D;AAEA,IAAA,kBAAkB,CAAC,CAAS,EAAE,YAAyB,EAAE,QAAgB,EAAA;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAEjD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;KAC/D;uGApCW,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAA9B,8BAA8B,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;;AAwCX;;;;;AAKG;AAEG,MAAO,0BAA2B,SAAQ,cAAc,CAAA;AACzC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AACnC,IAAA,cAAc,GAAG,MAAM,CAA2B,0BAA0B,CAAC,CAAA;AAC7E,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;IAC7C,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;AAE5C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC5B,IAAA,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;AAC1C,IAAA,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAA;AAEnE,IAAA,aAAa,CAAA;IACb,cAAc,GAAG,CAAC,CAAA;IAEP,cAAc,GAAG,CAAC,CAAA;AAClB,IAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAA;AAE3D,IAAA,eAAe,CACb,qBAA6B,EAC7B,YAAyB,EACzB,QAAgB,EAChB,gBAAyB,EAAA;;;QAIzB,MAAM,KAAK,GACT,QAAQ;AACR,aAAC,gBAAgB;AACf,iBAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAA;AAE/E,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO;SACT;AAEA,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAE7C,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAU,OAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAA;AACvE,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAA;KAC9C;AAEA,IAAA,kBAAkB,CAAC,qBAA6B,EAAE,CAAc,EAAE,QAAgB,EAAA;AAChF,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;AAE7C,QAAA,IAAI,CAAC,cAAc,CACjB,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,QAAQ,KAAK,IAAI,CAAC,cAAc,CACjC,CAAA;AACD,QAAA,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAA;KAC1C;AAEA,IAAA,kBAAkB,CAAC,qBAA6B,EAAE,CAAc,EAAE,QAAgB,EAAA;AAChF,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;AAE7C,QAAA,IAAI,CAAC,cAAc,CACjB,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,QAAQ,KAAK,IAAI,CAAC,cAAc,CACjC,CAAA;AACD,QAAA,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAA;KAC1C;AAEU,IAAA,iBAAiB,CAAC,qBAA6B,EAAA;QACvD,OAAO,CAAA,WAAA,EAAc,qBAAqB,CAAA,CAAE,CAAA;KAC9C;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAA;AACnB,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;KAChC;IAEQ,iBAAiB,CAAC,qBAA6B,EAAE,GAAW,EAAA;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAA;AACtE,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KAC5B;AAEQ,IAAA,gBAAgB,CAAC,sBAA8B,EAAA;QACrD,OAAO,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAA;KAC1F;IAEQ,cAAc,CACpB,qBAA6B,EAC7B,GAAW,EACX,KAAa,EACb,MAAM,GAAG,IAAI,EAAA;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAA;AAEtE,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAK;YAChC,IAAI,MAAM,EAAE;AACV,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;aAC5B;iBAAO;AACL,gBAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aACxB;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAA;AAC3C,SAAC,CAAC,CAAA;KACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1D,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;aACvD;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;YACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;SACrD;AAEA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAsB,CAAA;KAClD;AAEQ,IAAA,uBAAuB,CAAC,qBAA6B,EAAA;QAC3D,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAClE,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC5B,YAAA,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;YACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAA;SAC/D;AACA,QAAA,OAAO,UAAU,CAAA;KACnB;AAEQ,IAAA,aAAa,CAAC,qBAA6B,EAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAA;QACtE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;QAElD,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAC1D,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;gBAExB,OAAO;aACT;AAEA,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;SACvD;aAAO;YACL,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;SACzC;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAA;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAA;AAE5D,QAAA,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAI,cAAc,CAAK,EAAA,EAAA,eAAe,EAAE,CAAA;QACzD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE/E,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAG,EAAE,KAAM,CAAC,CAAA;KACnE;uGApJW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;AAwJX;AACA,SAAS,wBAAwB,CAAC,QAAgB,EAAA;AAChD,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAA;AAEA;;;AAGG;AACH,SAAS,yBAAyB,CAAC,SAA6B,EAAA;AAC9D,IAAA,OAAO,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,CAAA;AAEa,MAAA,2CAA2C,GAAa;AACnE,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,QAAQ,EAAE,8BAA8B;EACzC;AACY,MAAA,6BAA6B,GAAa;AACrD,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,QAAQ,EAAE,0BAA0B;;;AC7TtC,MAAM,SAAS,GAAe;IAC5B,oBAAoB;IACpB,wBAAwB;IACxB,0BAA0B;CAC3B,CAAA;AAEM,MAAM,eAAe,GAAe;AACzC,IAAA,GAAG,SAAS;IACZ,2CAA2C;CAC5C,CAAA;AACM,MAAM,cAAc,GAAe,CAAC,GAAG,SAAS,EAAE,6BAA6B,CAAC;;ACVvF;;;AAGG;AAKG,MAAO,eAAgB,SAAQ,YAAY,CAAA;AACtC,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAA;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAClD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAC7C,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;uGANnD,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAFf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,CAAC,GAAG,eAAe,EAAE,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE3E,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,SAAS,EAAE,CAAC,GAAG,eAAe,EAAE,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAA,eAAiB,EAAC,CAAC;AACvF,iBAAA,CAAA;;;ACPD;;;AAGG;AAKG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AAC1C,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAA;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAClD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAC7C,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;uGANnD,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAFnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAC,GAAG,cAAc,EAAE,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE9E,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,SAAS,EAAE,CAAC,GAAG,cAAc,EAAE,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAA,mBAAqB,EAAC,CAAC;AAC1F,iBAAA,CAAA;;;ACPD;;;AAGG;AAQG,MAAO,6BAA8B,SAAQ,YAAY,CAAA;AACpD,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAA;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAClD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAC7C,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;uGANnD,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAL7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA;AACT,YAAA,GAAG,eAAe;AAClB,YAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,6BAA6B,EAAC;AACpE,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE;AACT,wBAAA,GAAG,eAAe;AAClB,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,+BAA+B,EAAC;AACpE,qBAAA;AACF,iBAAA,CAAA;;;ACVD;;;AAGG;AAQG,MAAO,iCAAkC,SAAQ,YAAY,CAAA;AACxD,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACnD,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAA;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAClD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAC7C,IAAA,KAAK,GAAG,MAAM,CAAoB,QAAQ,CAAC,CAAA;uGANnD,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EALjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA;AACT,YAAA,GAAG,cAAc;AACjB,YAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iCAAiC,EAAC;AACxE,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE;AACT,wBAAA,GAAG,cAAc;AACjB,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,mCAAmC,EAAC;AACxE,qBAAA;AACF,iBAAA,CAAA;;;ACXD;;;AAGG;MAKU,mCAAmC,CAAA;uGAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,YAHpC,6BAA6B,EAAE,iCAAiC,CAChE,EAAA,OAAA,EAAA,CAAA,6BAA6B,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA;wGAE/D,mCAAmC,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC;AAC3E,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC;AAC5E,iBAAA,CAAA;;AAGD;;;AAGG;MAKU,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,eAAe,EAAE,mBAAmB,CACpC,EAAA,OAAA,EAAA,CAAA,eAAe,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;wGAEnC,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;AAC/C,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;AAChD,iBAAA,CAAA;;;ACrBD;;AAEG;MAEmB,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACHX;MACa,SAAS,CAAA;AAET,IAAA,MAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,WAAA,CAAA;IALX,WACW,CAAA,MAAkB,EAClB,UAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,WAAA,GAAc,IAAI,EAAA;QAJlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAA;QACN,IAAU,CAAA,UAAA,GAAV,UAAU,CAAA;QACV,IAAU,CAAA,UAAA,GAAV,UAAU,CAAA;QACV,IAAU,CAAA,UAAA,GAAV,UAAU,CAAA;QACV,IAAW,CAAA,WAAA,GAAX,WAAW,CAAA;KACnB;AACJ;;ACmBD,MAAM,oBAAoB,GAAG,oCAAoC,CAAA;AAEjE;;;AAGG;MAEmB,SAAS,CAAA;IAGnB,kBAAkB,GAAW,CAAC,CAAA;AAC9B,IAAA,kBAAkB,GAAW,MAAM,CAAC,gBAAgB,CAAA;AAEpD,IAAA,YAAY,CAAA;AACZ,IAAA,UAAU,CAAA;AACD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAA;IAiB/B,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;IAEtE,gBAAgB,GAAG,KAAK,CAAA;IACxB,YAAY,GAAG,KAAK,CAAA;;AAG5B,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAA;KAChC;IACA,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAA;AAE/B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAA;SACzB;KACF;;AAGA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAA;KAChC;IACA,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAA;AAE/B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAA;SACzB;KACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;KACnE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAA;AAE1B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAK;YACnC,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACvB,YAAA,IAAI,CAAC,eAAe;AAClB,kBAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;AAC7D,kBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;iBACxC,SAAS,CAAC,IAAI,IAAG;AAChB,gBAAA,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,OAAO;iBACT;AACA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACvB,aAAC,CAAC,CAAA;AACN,SAAC,CAAC,CAAA;KACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;AACzB,QAAA,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAA;KAC5B;IAMQ,uBAAuB,GAAA;;;;QAK7B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,CAAA;AACjD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO;AAClC,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,CAAA;aAClD,sBAAsB,CAAC,KAAK,CAAA;aAC5B,iBAAiB,CAAC,KAAK,CAAA;aACvB,QAAQ,CAAC,KAAK,CAAA;aACd,kBAAkB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,aAAA,aAAa,CAAC;AACb,YAAA;gBACE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK;AAChC,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACF,SAAA,CAAC,CAAA;AAEJ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEzB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,mBAAmB,EAAE,IAAI;YACzB,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,KAAK,EAAE,MAAM;AACd,SAAA,CAAC,CAAA;KACJ;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAc,CAAA;QAC9C,MAAM,kBAAkB,GAAG,SAAS,CAAU,IAAI,CAAC,SAAS,CAAC,CAAA;AAE7D,QAAA,IAAI,CAAC,eAAe;AACjB,aAAA,gCAAgC,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAE,CAAA;aACxE,IAAI,CAAC,kBAAkB,CAAA;aACvB,SAAS,CAAC,WAAW,IAAG;YACvB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;iBAClD;gBAEA,IAAI,CAAC,kBAAkB,EAAE,CAAA;aAC3B;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;AAE1B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;aAC1B;AACF,SAAC,CAAC,CAAA;KACN;IAEQ,sBAAsB,GAAA;QAC5B,MAAM,kBAAkB,GAAG,SAAS,CAAmB,IAAI,CAAC,SAAS,CAAC,CAAA;AAEtE,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAA;AACxE,aAAA,IAAI,CACH,kBAAkB,EAClB,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;aAElE,SAAS,CAAC,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAC,KAAI;YACvD,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAClE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;YAEnC,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,wBAAwB,EAAE,CAAA;aACjC;AACF,SAAC,CAAC,CAAA;AAEJ,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAA;aAC1E,IAAI,CAAC,kBAAkB,CAAA;aACvB,SAAS,CAAC,UAAU,IAAG;AACtB,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;AACtC,SAAC,CAAC,CAAA;QAEJ,IAAI,CAAC,cAAc,CAAC,eAAe;AAChC,aAAA,IAAI,CACH,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACjE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EACjD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAE1B,SAAS,CAAC,UAAU,IAAG;YACtB,IAAI,CAAC,eAAe,EAAE,OAAO,CAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,UAAU,CAAC,IAAI,CAChB,CAAA;AACH,SAAC,CAAC,CAAA;KACN;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AAC7B,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,WAAW;AACjD,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACJ;AAEQ,IAAA,mBAAmB,CAAC,UAA4B,EAAA;QACtD,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAErE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YACpD,IAAI,CAAC,0BAA0B,EAAE,CAAA;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAA;YAEhC,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC/C,gBAAA,IAAI,CAAC,YAAa,CAAC,KAAK,EAAE,CAAA;aAC5B;SACF;KACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,SAAS;oBAClB,QAAQ,EAAE,IAAI,SAAS,CACrB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACpC;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAA;AAEF,QAAA,OAAO,IAAI,eAAe,CACxB,IAAI,CAAC,6BAA6B,EAAE,EACpC,IAAI,CAAC,gBAAgB,EACrB,QAAQ,CACT,CAAA;KACH;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,0BAA0B,EAAE,CAAA;QACjC,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;;AAGnD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAA;KACvC;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,UAAW,CAAC,UAAU,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,YAAY,EAAC,CAAC,CAAA;KACpF;IAEQ,UAAU,CAAC,YAAoB,EAAE,YAAqB,EAAA;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAEzF,IAAI,CAAC,cAAc,CAAC,eAAe,CACjC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EACnC,IAAI,CAAC,UAAU,CAAC,aAAc,EAC9B,WAAW,EACX,YAAY,CACb,CAAA;KACH;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CACpC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EACnC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,UAAU,CAChB,CAAA;KACH;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CACpC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EACnC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,UAAU,CAChB,CAAA;KACH;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;;;QAGtD,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;;QAIhE,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;KAC/D;uGAvRoB,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;;;ACNV;AACA;AACA;;;AAGG;MAEmB,mBAAmB,CAAA;AAC/B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAClB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAA;IAY1C,iBAAiB,GAAG,CAAC,CAAA;IAE7B,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAA;KAC9B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;KAC3B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,CAAC,oBAAoB,CAAa,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,YAAY,CAAA;AAC/E,iBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAc,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3E,iBAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAEvE,IAAI,CAAC,oBAAoB,CAAa,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,YAAY,CAAA;iBAC/E,IAAI,CACH,GAAG,CACD,KAAK,IACH,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAwB,EAAE,oBAAoB,CAAC,CACxF,EACD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAE1B,iBAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAEvE,IAAI,CAAC,oBAAoB,CAAa,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,WAAW,CAAA;AAC9E,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;iBAC9B,SAAS,CAAC,cAAc,IAAG;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;AACnC,aAAC,CAAC,CAAA;AACN,SAAC,CAAC,CAAA;KACJ;AAEQ,IAAA,YAAY,CAAC,cAA0B,EAAA;;AAE7C,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,OAAO;SACT;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAa,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAC/E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAa,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AACnF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAgB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAClF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAC1C,CAAA;AAED,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAA;AAErC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC1C,IAAI,aAAa,GAAG,CAAC,CAAA;AACrB,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC1C,IAAI,IAAI,GAAG,WAAW,CAAA;QACtB,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;AAE1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAE7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,OAAO,EAAC,KAAI;AAC7E,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAK;gBACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC,CAAA;AACnD,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AAEF,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACpE,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;AACtC,SAAC,CAAC,CAAA;QAEF,SAAS;AACN,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,KAAK,OAAO,CAAC,EAC3B,SAAS,CAAC,MAAM,CAAC,EACjB,oBAAoB,EAAE,EACtB,QAAQ,EAAE,EACV,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;aAElD,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;AAC5B,YAAA,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAC/B,gBAAA,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAA;AAChC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;AAC3E,gBAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;gBAEpC,OAAO;aACT;;;AAIA,YAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;oBAChE,QAAQ,IAAI,MAAM,CAAA;oBAClB,OAAO;iBACT;qBAAO;AACL,oBAAA,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,CAAA;oBAC3C,QAAQ;wBACN,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;AAChF,oBAAA,MAAM,GAAG,iBAAiB,GAAG,QAAQ,CAAA;AAErC,oBAAA,IAAI,MAAM,KAAK,CAAC,EAAE;wBAChB,OAAO;qBACT;iBACF;aACF;AAEA,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAEjC,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAK;AACnC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;AAC5C,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;AAC/C,gBAAA,MAAM,kBAAkB,GAAG,eAAe,GAAG,YAAY,CAAA;AACzD,gBAAA,MAAM,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAAA;gBAC7C,IAAI,GAAG,aAAa,CAAA;gBACpB,YAAY,GAAG,eAAe,CAAA;AAE9B,gBAAA,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAA;AAC3E,gBAAA,aAAa,IAAI,kBAAkB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAA;AAE5E,gBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;AAC1C,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACN;AAEU,IAAA,kBAAkB,CAAC,MAAe,EAAA;QAC1C,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,IAAI,CAClD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAc,GAAG,IAAI,CACrD,CAAA;KACH;IAEQ,cAAc,CAAC,SAAiB,EAAE,MAAc,EAAA;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC;AAC7C,YAAA,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS;AAClE,SAAA,CAAC,CAAA;KACJ;IAEQ,eAAe,CAAC,SAAiB,EAAE,MAAc,EAAA;AACvD,QAAA,IAAI,eAAe,GAAW,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5E,eAAe,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,EACvD,IAAI,CAAC,SAAS,CAAC,UAAU,CAC1B,CAAA;AACD,QAAA,OAAO,eAAe,CAAA;KACxB;IAEQ,eAAe,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAc,CAAC,WAAW,CAAA;KACzD;IAEQ,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAc,CAAC,UAAU,CAAA;KACxD;AAEQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,CAAc,WAAA,EAAA,mBAAmB,CAC1F,MAAM,CACP,GAAG,CAAA;KACN;IAEQ,MAAM,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,CAAA;KAC5C;AAEQ,IAAA,kBAAkB,CAAC,IAAY,EAAE,qBAAqB,GAAG,KAAK,EAAA;AACpE,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;gBAC7B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC;aACzD,CAAA;YACD,IAAI,qBAAqB,EAAE;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;iBACnD;gBAEA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;aACvD;iBAAO;gBACL,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;aACtD;AACF,SAAC,CAAC,CAAA;KACJ;IAEQ,oBAAoB,CAAkB,OAA2B,EAAE,IAAY,EAAA;AACrF,QAAA,OAAO,IAAI,UAAU,CAAI,UAAU,IAAG;AACpC,YAAA,MAAM,OAAO,GAAG,CAAC,KAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC7D,YAAA,OAAO,MAAK;AACV,gBAAA,OAAO,EAAE,CAAA;gBACT,UAAU,CAAC,QAAQ,EAAE,CAAA;AACvB,aAAC,CAAA;AACH,SAAC,CAAC,CAAA;KACJ;uGAhNoB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;;;;;"}
|
|
1
|
+
{"version":3,"file":"column-resize.mjs","sources":["../../../../../../src/cdk-experimental/column-resize/selectors.ts","../../../../../../src/cdk-experimental/column-resize/column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-notifier.ts","../../../../../../src/cdk-experimental/column-resize/event-dispatcher.ts","../../../../../../src/cdk-experimental/column-resize/resize-strategy.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/constants.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/column-resize-flex.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-directives/default-enabled-column-resize-flex.ts","../../../../../../src/cdk-experimental/column-resize/column-resize-module.ts","../../../../../../src/cdk-experimental/column-resize/column-size-store.ts","../../../../../../src/cdk-experimental/column-resize/resize-ref.ts","../../../../../../src/cdk-experimental/column-resize/resizable.ts","../../../../../../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, 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 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 {Injectable, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged, map, share, skip, startWith} 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@Injectable()\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(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.dev/license\n */\n\nimport {Injectable, OnDestroy, Provider, CSP_NONCE, inject} 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 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 <table> 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 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@Injectable()\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';\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.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 {Injectable} 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@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): 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} 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 {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';\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, 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 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 protected readonly columnSizeStore = inject(ColumnSizeStore, {optional: true});\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 = 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 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 && 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 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.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, _CoalescedStyleScheduler} 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';\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":["_closest"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** closest implementation that is able to start from non-Element Nodes. */
|
|
2
|
+
function closest(element, selector) {
|
|
3
|
+
if (!(element instanceof Node)) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
let curr = element;
|
|
7
|
+
while (curr != null && !(curr instanceof Element)) {
|
|
8
|
+
curr = curr.parentNode;
|
|
9
|
+
}
|
|
10
|
+
return curr?.closest(selector) ?? null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { closest as c };
|
|
14
|
+
//# sourceMappingURL=polyfill-ae40ec6f.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyfill-ae40ec6f.mjs","sources":["../../../../../../src/cdk-experimental/popover-edit/polyfill.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/** 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"],"names":[],"mappings":"AAQA;AACgB,SAAA,OAAO,CACrB,OAAiD,EACjD,QAAgB,EAAA;AAEhB,IAAA,IAAI,EAAE,OAAO,YAAY,IAAI,CAAC,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAA;KACb;IAEA,IAAI,IAAI,GAAgB,OAAO,CAAA;IAC/B,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,EAAE;AACjD,QAAA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;KACxB;IAEA,OAAO,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;AACxC;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { c as closest } from './polyfill-ae40ec6f.mjs';
|
|
2
|
+
export { c as _closest } from './polyfill-ae40ec6f.mjs';
|
|
1
3
|
import * as i0 from '@angular/core';
|
|
2
4
|
import { inject, NgZone, Injectable, Injector, afterNextRender, ElementRef, EventEmitter, Directive, Input, Renderer2, afterRender, ViewContainerRef, TemplateRef, NgModule } from '@angular/core';
|
|
3
5
|
import { Subject, pipe, combineLatest, Observable, merge } from 'rxjs';
|
|
@@ -25,18 +27,6 @@ const EDIT_PANE_CLASS = 'cdk-edit-pane';
|
|
|
25
27
|
/** Selector for finding the edit lens pane. */
|
|
26
28
|
const EDIT_PANE_SELECTOR = `.${EDIT_PANE_CLASS}, .mat-edit-pane`;
|
|
27
29
|
|
|
28
|
-
/** closest implementation that is able to start from non-Element Nodes. */
|
|
29
|
-
function closest(element, selector) {
|
|
30
|
-
if (!(element instanceof Node)) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
let curr = element;
|
|
34
|
-
while (curr != null && !(curr instanceof Element)) {
|
|
35
|
-
curr = curr.parentNode;
|
|
36
|
-
}
|
|
37
|
-
return curr?.closest(selector) ?? null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
30
|
/** The delay applied to mouse events before hiding or showing hover content. */
|
|
41
31
|
const MOUSE_EVENT_DELAY_MS = 40;
|
|
42
32
|
/** The delay for reacting to focus/blur changes. */
|
|
@@ -1131,5 +1121,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.0", ngImpor
|
|
|
1131
1121
|
}]
|
|
1132
1122
|
}] });
|
|
1133
1123
|
|
|
1134
|
-
export { CdkEditClose, CdkEditControl, CdkEditOpen, CdkEditRevert, CdkEditable, CdkPopoverEdit, CdkPopoverEditModule, CdkPopoverEditTabOut, CdkRowHoverContent, EditEventDispatcher, EditRef, FocusDispatcher, FormValueContainer, HoverContentState, CELL_SELECTOR as _CELL_SELECTOR
|
|
1124
|
+
export { CdkEditClose, CdkEditControl, CdkEditOpen, CdkEditRevert, CdkEditable, CdkPopoverEdit, CdkPopoverEditModule, CdkPopoverEditTabOut, CdkRowHoverContent, EditEventDispatcher, EditRef, FocusDispatcher, FormValueContainer, HoverContentState, CELL_SELECTOR as _CELL_SELECTOR };
|
|
1135
1125
|
//# sourceMappingURL=popover-edit.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-edit.mjs","sources":["../../../../../../src/cdk-experimental/popover-edit/constants.ts","../../../../../../src/cdk-experimental/popover-edit/polyfill.ts","../../../../../../src/cdk-experimental/popover-edit/edit-event-dispatcher.ts","../../../../../../src/cdk-experimental/popover-edit/edit-ref.ts","../../../../../../src/cdk-experimental/popover-edit/focus-dispatcher.ts","../../../../../../src/cdk-experimental/popover-edit/form-value-container.ts","../../../../../../src/cdk-experimental/popover-edit/lens-directives.ts","../../../../../../src/cdk-experimental/popover-edit/edit-services.ts","../../../../../../src/cdk-experimental/popover-edit/focus-escape-notifier.ts","../../../../../../src/cdk-experimental/popover-edit/table-directives.ts","../../../../../../src/cdk-experimental/popover-edit/popover-edit-module.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/** Selector for finding table cells. */\nexport const CELL_SELECTOR = '.cdk-cell, .mat-cell, td';\n\n/** Selector for finding editable table cells. */\nexport const EDITABLE_CELL_SELECTOR = '.cdk-popover-edit-cell, .mat-popover-edit-cell';\n\n/** Selector for finding table rows. */\nexport const ROW_SELECTOR = '.cdk-row, .mat-row, tr';\n\n/** Selector for finding the table element. */\nexport const TABLE_SELECTOR = 'table, cdk-table, mat-table';\n\n/** CSS class added to the edit lens pane. */\nexport const EDIT_PANE_CLASS = 'cdk-edit-pane';\n\n/** Selector for finding the edit lens pane. */\nexport const EDIT_PANE_SELECTOR = `.${EDIT_PANE_CLASS}, .mat-edit-pane`;\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\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.dev/license\n */\n\nimport {Injectable, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, pipe, Subject} from 'rxjs';\nimport {\n audit,\n auditTime,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n skip,\n startWith,\n shareReplay,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, ROW_SELECTOR} from './constants';\nimport {closest} from './polyfill';\n\n/** The delay applied to mouse events before hiding or showing hover content. */\nconst MOUSE_EVENT_DELAY_MS = 40;\n\n/** The delay for reacting to focus/blur changes. */\nconst FOCUS_DELAY = 0;\n\n/**\n * The possible states for hover content:\n * OFF - Not rendered.\n * FOCUSABLE - Rendered in the dom and styled for its contents to be focusable but invisible.\n * ON - Rendered and fully visible.\n */\nexport enum HoverContentState {\n OFF = 0,\n FOCUSABLE,\n ON,\n}\n\n// Note: this class is generic, rather than referencing EditRef directly, in order to avoid\n// circular imports. If we were to reference it here, importing the registry into the\n// class that is registering itself will introduce a circular import.\n\n/**\n * Service for sharing delegated events and state for triggering table edits.\n */\n@Injectable()\nexport class EditEventDispatcher<R> {\n private readonly _ngZone = inject(NgZone);\n\n /** A subject that indicates which table cell is currently editing (unless it is disabled). */\n readonly editing = new Subject<Element | null>();\n\n /** A subject that indicates which table row is currently hovered. */\n readonly hovering = new Subject<Element | null>();\n\n /** A subject that indicates which table row currently contains focus. */\n readonly focused = new Subject<Element | null>();\n\n /** A subject that indicates all elements in the table matching ROW_SELECTOR. */\n readonly allRows = new Subject<NodeList>();\n\n /** A subject that emits mouse move events from the table indicating the targeted row. */\n readonly mouseMove = new Subject<Element | null>();\n\n // TODO: Use WeakSet once IE11 support is dropped.\n /**\n * Tracks the currently disabled editable cells - edit calls will be ignored\n * for these cells.\n */\n readonly disabledCells = new WeakMap<Element, boolean>();\n\n /** The EditRef for the currently active edit lens (if any). */\n get editRef(): R | null {\n return this._editRef;\n }\n private _editRef: R | null = null;\n\n // Optimization: Precompute common pipeable operators used per row/cell.\n private readonly _distinctUntilChanged = distinctUntilChanged<\n Element | HoverContentState | boolean | null\n >();\n private readonly _startWithNull = startWith<Element | null>(null);\n private readonly _distinctShare = pipe(\n this._distinctUntilChanged as MonoTypeOperatorFunction<HoverContentState>,\n shareReplay(1),\n );\n private readonly _startWithNullDistinct = pipe(\n this._startWithNull,\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n );\n\n readonly editingAndEnabled = this.editing.pipe(\n filter(cell => cell == null || !this.disabledCells.has(cell)),\n shareReplay(1),\n );\n\n /** An observable that emits the row containing focus or an active edit. */\n readonly editingOrFocused = combineLatest([\n this.editingAndEnabled.pipe(\n map(cell => closest(cell, ROW_SELECTOR)),\n this._startWithNull,\n ),\n this.focused.pipe(this._startWithNull),\n ]).pipe(\n map(([editingRow, focusedRow]) => focusedRow || editingRow),\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n auditTime(FOCUS_DELAY), // Use audit to skip over blur events to the next focused element.\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n shareReplay(1),\n );\n\n /** Tracks rows that contain hover content with a reference count. */\n private _rowsWithHoverContent = new WeakMap<Element, number>();\n\n /** The table cell that has an active edit lens (or null). */\n private _currentlyEditing: Element | null = null;\n\n /** The combined set of row hover content states organized by row. */\n private readonly _hoveredContentStateDistinct = combineLatest([\n this._getFirstRowWithHoverContent(),\n this._getLastRowWithHoverContent(),\n this.editingOrFocused,\n this.hovering.pipe(\n distinctUntilChanged(),\n audit(row =>\n this.mouseMove.pipe(\n filter(mouseMoveRow => row === mouseMoveRow),\n this._startWithNull,\n debounceTime(MOUSE_EVENT_DELAY_MS),\n ),\n ),\n this._startWithNullDistinct,\n ),\n ]).pipe(\n skip(1), // Skip the initial emission of [null, null, null, null].\n map(computeHoverContentState),\n distinctUntilChanged(areMapEntriesEqual),\n // Optimization: Enter the zone before shareReplay so that we trigger a single\n // ApplicationRef.tick for all row updates.\n this._enterZone(),\n shareReplay(1),\n );\n\n private readonly _editingAndEnabledDistinct = this.editingAndEnabled.pipe(\n distinctUntilChanged(),\n this._enterZone(),\n shareReplay(1),\n );\n\n // Optimization: Share row events observable with subsequent callers.\n // At startup, calls will be sequential by row.\n private _lastSeenRow: Element | null = null;\n private _lastSeenRowHoverOrFocus: Observable<HoverContentState> | null = null;\n\n constructor() {\n this._editingAndEnabledDistinct.subscribe(cell => {\n this._currentlyEditing = cell;\n });\n }\n\n /**\n * Gets an Observable that emits true when the specified element's cell\n * is editing and false when not.\n */\n editingCell(element: Element | EventTarget): Observable<boolean> {\n let cell: Element | null = null;\n\n return this._editingAndEnabledDistinct.pipe(\n map(editCell => editCell === (cell || (cell = closest(element, CELL_SELECTOR)))),\n this._distinctUntilChanged as MonoTypeOperatorFunction<boolean>,\n );\n }\n\n /**\n * Stops editing for the specified cell. If the specified cell is not the current\n * edit cell, does nothing.\n */\n doneEditingCell(element: Element | EventTarget): void {\n const cell = closest(element, CELL_SELECTOR);\n\n if (this._currentlyEditing === cell) {\n this.editing.next(null);\n }\n }\n\n /** Sets the currently active EditRef. */\n setActiveEditRef(ref: R) {\n this._editRef = ref;\n }\n\n /** Unset the currently active EditRef, if the specified editRef is active. */\n unsetActiveEditRef(ref: R) {\n if (this._editRef !== ref) {\n return;\n }\n\n this._editRef = null;\n }\n\n /** Adds the specified table row to be tracked for first/last row comparisons. */\n registerRowWithHoverContent(row: Element): void {\n this._rowsWithHoverContent.set(row, (this._rowsWithHoverContent.get(row) || 0) + 1);\n }\n\n /**\n * Reference decrements and ultimately removes the specified table row from first/last row\n * comparisons.\n */\n deregisterRowWithHoverContent(row: Element): void {\n const refCount = this._rowsWithHoverContent.get(row) || 0;\n\n if (refCount <= 1) {\n this._rowsWithHoverContent.delete(row);\n } else {\n this._rowsWithHoverContent.set(row, refCount - 1);\n }\n }\n\n /**\n * Gets an Observable that emits true when the specified element's row\n * contains the focused element or is being hovered over and false when not.\n * Hovering is defined as when the mouse has momentarily stopped moving over the cell.\n */\n hoverOrFocusOnRow(row: Element): Observable<HoverContentState> {\n if (row !== this._lastSeenRow) {\n this._lastSeenRow = row;\n this._lastSeenRowHoverOrFocus = this._hoveredContentStateDistinct.pipe(\n map(state => state.get(row) || HoverContentState.OFF),\n this._distinctShare,\n );\n }\n\n return this._lastSeenRowHoverOrFocus!;\n }\n\n /**\n * RxJS operator that enters the Angular zone, used to reduce boilerplate in\n * re-entering the zone for stream pipelines.\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 private _getFirstRowWithHoverContent(): Observable<Element | null> {\n return this._mapAllRowsToSingleRow(rows => {\n for (let i = 0, row; (row = rows[i]); i++) {\n if (this._rowsWithHoverContent.has(row as Element)) {\n return row as Element;\n }\n }\n return null;\n });\n }\n\n private _getLastRowWithHoverContent(): Observable<Element | null> {\n return this._mapAllRowsToSingleRow(rows => {\n for (let i = rows.length - 1, row; (row = rows[i]); i--) {\n if (this._rowsWithHoverContent.has(row as Element)) {\n return row as Element;\n }\n }\n return null;\n });\n }\n\n private _mapAllRowsToSingleRow(\n mapper: (rows: NodeList) => Element | null,\n ): Observable<Element | null> {\n return this.allRows.pipe(map(mapper), this._startWithNullDistinct);\n }\n}\n\nfunction computeHoverContentState([\n firstRow,\n lastRow,\n activeRow,\n hoverRow,\n]: (Element | null)[]): Map<Element, HoverContentState> {\n const hoverContentState = new Map<Element, HoverContentState>();\n\n // Add focusable rows.\n for (const focussableRow of [\n firstRow,\n lastRow,\n activeRow && activeRow.previousElementSibling,\n activeRow && activeRow.nextElementSibling,\n ]) {\n if (focussableRow) {\n hoverContentState.set(focussableRow as Element, HoverContentState.FOCUSABLE);\n }\n }\n\n // Add/overwrite with fully visible rows.\n for (const onRow of [activeRow, hoverRow]) {\n if (onRow) {\n hoverContentState.set(onRow, HoverContentState.ON);\n }\n }\n\n return hoverContentState;\n}\n\nfunction areMapEntriesEqual<K, V>(a: Map<K, V>, b: Map<K, V>): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n // TODO: use Map.prototype.entries once we're off IE11.\n for (const aKey of Array.from(a.keys())) {\n if (b.get(aKey) !== a.get(aKey)) {\n return false;\n }\n }\n\n return true;\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 {Injectable, OnDestroy, afterNextRender, inject, Injector} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {Observable, Subject} from 'rxjs';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\n\n/**\n * Used for communication between the form within the edit lens and the\n * table that launched it. Provided by CdkEditControl within the lens.\n */\n@Injectable()\nexport class EditRef<FormValue> implements OnDestroy {\n private readonly _form = inject(ControlContainer, {self: true});\n private readonly _editEventDispatcher =\n inject<EditEventDispatcher<EditRef<FormValue>>>(EditEventDispatcher);\n\n /** Emits the final value of this edit instance before closing. */\n private readonly _finalValueSubject = new Subject<FormValue>();\n readonly finalValue: Observable<FormValue> = this._finalValueSubject;\n\n /** Emits when the user tabs out of this edit lens before closing. */\n private readonly _blurredSubject = new Subject<void>();\n readonly blurred: Observable<void> = this._blurredSubject;\n\n /** The value to set the form back to on revert. */\n private _revertFormValue: FormValue;\n\n private _injector = inject(Injector);\n\n constructor() {\n this._editEventDispatcher.setActiveEditRef(this);\n }\n\n /**\n * Called by the host directive's OnInit hook. Reads the initial state of the\n * form and overrides it with persisted state from previous openings, if\n * applicable.\n */\n init(previousFormValue: FormValue | undefined): void {\n // Wait for the next render before caching the initial value.\n // This ensures that all form controls have been initialized.\n afterNextRender(\n () => {\n this.updateRevertValue();\n if (previousFormValue) {\n this.reset(previousFormValue);\n }\n },\n {injector: this._injector},\n );\n }\n\n ngOnDestroy(): void {\n this._editEventDispatcher.unsetActiveEditRef(this);\n this._finalValueSubject.next(this._form.value);\n this._finalValueSubject.complete();\n }\n\n /** Whether the attached form is in a valid state. */\n isValid(): boolean | null {\n return this._form.valid;\n }\n\n /** Set the form's current value as what it will be set to on revert/reset. */\n updateRevertValue(): void {\n this._revertFormValue = this._form.value;\n }\n\n /** Tells the table to close the edit popup. */\n close(): void {\n this._editEventDispatcher.editing.next(null);\n }\n\n /** Notifies the active edit that the user has moved focus out of the lens. */\n blur(): void {\n this._blurredSubject.next();\n }\n\n /**\n * Resets the form value to the specified value or the previously set\n * revert value.\n */\n reset(value?: FormValue): void {\n this._form.reset(value || this._revertFormValue);\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 {Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, UP_ARROW, RIGHT_ARROW, DOWN_ARROW} from '@angular/cdk/keycodes';\nimport {Injectable, inject} from '@angular/core';\nimport {PartialObserver} from 'rxjs';\n\nimport {EDITABLE_CELL_SELECTOR, ROW_SELECTOR, TABLE_SELECTOR} from './constants';\nimport {closest} from './polyfill';\n\n/**\n * Service responsible for moving cell focus around in response to keyboard events.\n * May be overridden to customize the keyboard behavior of popover edit.\n */\n@Injectable({providedIn: 'root'})\nexport class FocusDispatcher {\n protected readonly directionality = inject(Directionality);\n\n /** Observes keydown events triggered from the table. */\n readonly keyObserver: PartialObserver<KeyboardEvent>;\n\n constructor() {\n this.keyObserver = {next: event => this.handleKeyboardEvent(event)};\n }\n\n /**\n * Moves focus to earlier or later cells (in dom order) by offset cells relative to\n * currentCell.\n */\n moveFocusHorizontally(currentCell: HTMLElement, offset: number): void {\n const cells = Array.from(\n closest(currentCell, TABLE_SELECTOR)!.querySelectorAll(EDITABLE_CELL_SELECTOR),\n ) as HTMLElement[];\n const currentIndex = cells.indexOf(currentCell);\n const newIndex = currentIndex + offset;\n\n if (cells[newIndex]) {\n cells[newIndex].focus();\n }\n }\n\n /** Moves focus to up or down by row by offset cells relative to currentCell. */\n moveFocusVertically(currentCell: HTMLElement, offset: number): void {\n const currentRow = closest(currentCell, ROW_SELECTOR)!;\n const rows = Array.from(closest(currentRow, TABLE_SELECTOR)!.querySelectorAll(ROW_SELECTOR));\n const currentRowIndex = rows.indexOf(currentRow);\n const currentIndexWithinRow = Array.from(\n currentRow.querySelectorAll(EDITABLE_CELL_SELECTOR),\n ).indexOf(currentCell);\n const newRowIndex = currentRowIndex + offset;\n\n if (rows[newRowIndex]) {\n const rowToFocus = Array.from(\n rows[newRowIndex].querySelectorAll(EDITABLE_CELL_SELECTOR),\n ) as HTMLElement[];\n\n if (rowToFocus[currentIndexWithinRow]) {\n rowToFocus[currentIndexWithinRow].focus();\n }\n }\n }\n\n /** Translates arrow keydown events into focus move operations. */\n protected handleKeyboardEvent(event: KeyboardEvent): void {\n const cell = closest(event.target, EDITABLE_CELL_SELECTOR) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n switch (event.keyCode) {\n case UP_ARROW:\n this.moveFocusVertically(cell, -1);\n break;\n case DOWN_ARROW:\n this.moveFocusVertically(cell, 1);\n break;\n case LEFT_ARROW:\n this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? -1 : 1);\n break;\n case RIGHT_ARROW:\n this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? 1 : -1);\n break;\n default:\n // If the keyboard event is not handled, return now so that we don't `preventDefault`.\n return;\n }\n\n event.preventDefault();\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\nexport interface Entry<FormValue> {\n value?: FormValue;\n}\n\n/**\n * A convenience class for preserving unsaved form state while an edit lens is closed.\n *\n * Example usage:\n * class MyComponent {\n * readonly nameEditValues = new FormValueContainer<Item, {name: string}>();\n * }\n *\n * <form cdkEditControl [(cdkEditControlPreservedFormValue)]=\"nameEditValues.for(item).value\">\n */\nexport class FormValueContainer<Key extends object, FormValue> {\n private _formValues = new WeakMap<Key, Entry<FormValue>>();\n\n for(key: Key): Entry<FormValue> {\n const _formValues = this._formValues;\n\n let entry = _formValues.get(key);\n if (!entry) {\n // Expose entry as an object so that we can [(two-way)] bind to its value member\n entry = {};\n _formValues.set(key, entry);\n }\n\n return entry;\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 {Subject} from 'rxjs';\nimport {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Input, inject} from '@angular/core';\nimport {hasModifierKey} from '@angular/cdk/keycodes';\nimport {EDIT_PANE_SELECTOR} from './constants';\nimport {closest} from './polyfill';\nimport {EditRef} from './edit-ref';\n\n/** Options for what do to when the user clicks outside of an edit lens. */\nexport type PopoverEditClickOutBehavior = 'close' | 'submit' | 'noop';\n\n/**\n * A directive that attaches to a form within the edit lens.\n * It coordinates the form state with the table-wide edit system and handles\n * closing the edit lens when the form is submitted or the user clicks\n * out.\n */\n@Directive({\n selector: 'form[cdkEditControl]',\n inputs: [\n {name: 'clickOutBehavior', alias: 'cdkEditControlClickOutBehavior'},\n {name: 'preservedFormValue', alias: 'cdkEditControlPreservedFormValue'},\n {name: 'ignoreSubmitUnlessValid', alias: 'cdkEditControlIgnoreSubmitUnlessValid'},\n ],\n outputs: ['preservedFormValueChange: cdkEditControlPreservedFormValueChange'],\n providers: [EditRef],\n host: {\n '(ngSubmit)': 'handleFormSubmit()',\n '(document:click)': 'handlePossibleClickOut($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class CdkEditControl<FormValue> implements OnDestroy, OnInit {\n protected readonly elementRef = inject(ElementRef);\n readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n protected readonly destroyed = new Subject<void>();\n\n /**\n * Specifies what should happen when the user clicks outside of the edit lens.\n * The default behavior is to close the lens without submitting the form.\n */\n clickOutBehavior: PopoverEditClickOutBehavior = 'close';\n\n /**\n * A two-way binding for storing unsubmitted form state. If not provided\n * then form state will be discarded on close. The PeristBy directive is offered\n * as a convenient shortcut for these bindings.\n */\n preservedFormValue?: FormValue;\n readonly preservedFormValueChange = new EventEmitter<FormValue>();\n\n /**\n * Determines whether the lens will close on form submit if the form is not in a valid\n * state. By default the lens will remain open.\n */\n ignoreSubmitUnlessValid = true;\n\n ngOnInit(): void {\n this.editRef.init(this.preservedFormValue);\n this.editRef.finalValue.subscribe(this.preservedFormValueChange);\n this.editRef.blurred.subscribe(() => this._handleBlur());\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Called when the form submits. If ignoreSubmitUnlessValid is true, checks\n * the form for validity before proceeding.\n * Updates the revert state with the latest submitted value then closes the edit.\n */\n handleFormSubmit(): void {\n if (this.ignoreSubmitUnlessValid && !this.editRef.isValid()) {\n return;\n }\n\n this.editRef.updateRevertValue();\n this.editRef.close();\n }\n\n /** Called on Escape keyup. Closes the edit. */\n close(): void {\n // todo - allow this behavior to be customized as well, such as calling\n // reset before close\n this.editRef.close();\n }\n\n /**\n * Called on click anywhere in the document.\n * If the click was outside of the lens, trigger the specified click out behavior.\n */\n handlePossibleClickOut(evt: Event): void {\n if (closest(evt.target, EDIT_PANE_SELECTOR)) {\n return;\n }\n switch (this.clickOutBehavior) {\n case 'submit':\n // Manually cause the form to submit before closing.\n this._triggerFormSubmit();\n this.editRef.close();\n break;\n case 'close':\n this.editRef.close();\n break;\n default:\n break;\n }\n }\n\n _handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && !hasModifierKey(event)) {\n this.close();\n event.preventDefault();\n }\n }\n\n /** Triggers submit on tab out if clickOutBehavior is 'submit'. */\n private _handleBlur(): void {\n if (this.clickOutBehavior === 'submit') {\n // Manually cause the form to submit before closing.\n this._triggerFormSubmit();\n }\n }\n\n private _triggerFormSubmit() {\n this.elementRef.nativeElement!.dispatchEvent(new Event('submit'));\n }\n}\n\n/** Reverts the form to its initial or previously submitted state on click. */\n@Directive({\n selector: 'button[cdkEditRevert]',\n host: {\n 'type': 'button',\n '(click)': 'revertEdit()',\n },\n})\nexport class CdkEditRevert<FormValue> {\n protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n /** Type of the button. Defaults to `button` to avoid accident form submits. */\n @Input() type: string = 'button';\n\n revertEdit(): void {\n this.editRef.reset();\n }\n}\n\n/** Closes the lens on click. */\n@Directive({\n selector: '[cdkEditClose]',\n host: {\n '(click)': 'closeEdit()',\n '(keydown.enter)': 'closeEdit()',\n '(keydown.space)': 'closeEdit()',\n },\n})\nexport class CdkEditClose<FormValue> {\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n constructor() {\n const nativeElement = this.elementRef.nativeElement;\n\n // Prevent accidental form submits.\n if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n nativeElement.setAttribute('type', 'button');\n }\n }\n\n closeEdit(): void {\n // Note that we use `click` here, rather than a keyboard event, because some screen readers\n // will emit a fake click event instead of an enter keyboard event on buttons. For the keyboard\n // events we use `keydown`, rather than `keyup`, because we use `keydown` to open the overlay\n // as well. If we were to use `keyup`, the user could end up opening and closing within\n // the same event sequence if focus was moved quickly.\n this.editRef.close();\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 {Injectable, NgZone, inject} from '@angular/core';\nimport {FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Overlay} from '@angular/cdk/overlay';\nimport {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {EditRef} from './edit-ref';\n\n/**\n * Optimization\n * Collects multiple Injectables into a singleton shared across the table. By reducing the\n * number of services injected into each CdkPopoverEdit, this saves about 0.023ms of cpu time\n * and 56 bytes of memory per instance.\n */\n@Injectable()\nexport class EditServices {\n readonly directionality = inject(Directionality);\n readonly editEventDispatcher = inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n readonly focusDispatcher = inject(FocusDispatcher);\n readonly focusTrapFactory = inject(FocusTrapFactory);\n readonly ngZone = inject(NgZone);\n readonly overlay = inject(Overlay);\n readonly scrollDispatcher = inject(ScrollDispatcher);\n readonly viewportRuler = inject(ViewportRuler);\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 {Injectable, NgZone, inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, InteractivityChecker} from '@angular/cdk/a11y';\nimport {Observable, Subject} from 'rxjs';\n\n/** Value indicating whether focus left the target area before or after the enclosed elements. */\nexport enum FocusEscapeNotifierDirection {\n START,\n END,\n}\n\n/**\n * Like FocusTrap, but rather than trapping focus within a dom region, notifies subscribers when\n * focus leaves the region.\n */\nexport class FocusEscapeNotifier extends FocusTrap {\n private readonly _escapeSubject = new Subject<FocusEscapeNotifierDirection>();\n\n constructor(\n element: HTMLElement,\n checker: InteractivityChecker,\n ngZone: NgZone,\n document: Document,\n ) {\n super(element, checker, ngZone, document, true /* deferAnchors */);\n\n // The focus trap adds \"anchors\" at the beginning and end of a trapped region that redirect\n // focus. We override that redirect behavior here with simply emitting on a stream.\n this.startAnchorListener = () => {\n this._escapeSubject.next(FocusEscapeNotifierDirection.START);\n return true;\n };\n this.endAnchorListener = () => {\n this._escapeSubject.next(FocusEscapeNotifierDirection.END);\n return true;\n };\n\n this.attachAnchors();\n }\n\n escapes(): Observable<FocusEscapeNotifierDirection> {\n return this._escapeSubject;\n }\n}\n\n/** Factory that allows easy instantiation of focus escape notifiers. */\n@Injectable({providedIn: 'root'})\nexport class FocusEscapeNotifierFactory {\n private _checker = inject(InteractivityChecker);\n private _ngZone = inject(NgZone);\n private _document = inject(DOCUMENT);\n\n /**\n * Creates a focus escape notifier region around the given element.\n * @param element The element around which focus will be monitored.\n * @returns The created focus escape notifier instance.\n */\n create(element: HTMLElement): FocusEscapeNotifier {\n return new FocusEscapeNotifier(element, this._checker, this._ngZone, this._document);\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 */\nimport {FocusTrap} from '@angular/cdk/a11y';\nimport {OverlayRef, OverlaySizeConfig, PositionStrategy} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n afterRender,\n AfterViewInit,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n inject,\n Renderer2,\n ListenerOptions,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n mapTo,\n share,\n startWith,\n takeUntil,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, EDIT_PANE_CLASS, EDIT_PANE_SELECTOR, ROW_SELECTOR} from './constants';\nimport {EditEventDispatcher, HoverContentState} from './edit-event-dispatcher';\nimport {EditServices} from './edit-services';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {\n FocusEscapeNotifier,\n FocusEscapeNotifierDirection,\n FocusEscapeNotifierFactory,\n} from './focus-escape-notifier';\nimport {closest} from './polyfill';\nimport {EditRef} from './edit-ref';\nimport {_bindEventWithOptions} from '@angular/cdk/platform';\n\n/**\n * Describes the number of columns before and after the originating cell that the\n * edit popup should span. In left to right locales, before means left and after means\n * right. In right to left locales before means right and after means left.\n */\nexport interface CdkPopoverEditColspan {\n before?: number;\n after?: number;\n}\n\n/** Used for rate-limiting mousemove events. */\nconst MOUSE_MOVE_THROTTLE_TIME_MS = 10;\n\n/**\n * A directive that must be attached to enable editability on a table.\n * It is responsible for setting up delegated event handlers and providing the\n * EditEventDispatcher service for use by the other edit directives.\n */\n@Directive({\n selector: 'table[editable], cdk-table[editable], mat-table[editable]',\n providers: [EditEventDispatcher, EditServices],\n})\nexport class CdkEditable implements AfterViewInit, OnDestroy {\n protected readonly elementRef = inject(ElementRef);\n protected readonly editEventDispatcher =\n inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n protected readonly focusDispatcher = inject(FocusDispatcher);\n protected readonly ngZone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n\n protected readonly destroyed = new Subject<void>();\n\n private _rendered = new Subject();\n\n constructor() {\n afterRender(() => {\n this._rendered.next();\n });\n }\n\n ngAfterViewInit(): void {\n this._listenForTableEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n this._rendered.complete();\n }\n\n private _observableFromEvent<T extends Event>(\n element: Element,\n name: string,\n options?: ListenerOptions,\n ) {\n return new Observable<T>(subscriber => {\n const handler = (event: T) => subscriber.next(event);\n const cleanup = options\n ? _bindEventWithOptions(this._renderer, element, name, handler, options)\n : this._renderer.listen(element, name, handler, options);\n return () => {\n cleanup();\n subscriber.complete();\n };\n });\n }\n\n private _listenForTableEvents(): void {\n const element = this.elementRef.nativeElement;\n const toClosest = (selector: string) =>\n map((event: UIEvent) => closest(event.target, selector));\n\n this.ngZone.runOutsideAngular(() => {\n // Track mouse movement over the table to hide/show hover content.\n this._observableFromEvent<MouseEvent>(element, 'mouseover')\n .pipe(toClosest(ROW_SELECTOR), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.hovering);\n this._observableFromEvent<MouseEvent>(element, 'mouseleave')\n .pipe(mapTo(null), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.hovering);\n this._observableFromEvent<MouseEvent>(element, 'mousemove')\n .pipe(\n throttleTime(MOUSE_MOVE_THROTTLE_TIME_MS),\n toClosest(ROW_SELECTOR),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.mouseMove);\n\n // Track focus within the table to hide/show/make focusable hover content.\n this._observableFromEvent<FocusEvent>(element, 'focus', {capture: true})\n .pipe(toClosest(ROW_SELECTOR), share(), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.focused);\n\n merge(\n this._observableFromEvent(element, 'blur', {capture: true}),\n this._observableFromEvent<KeyboardEvent>(element, 'keydown').pipe(\n filter(event => event.key === 'Escape'),\n ),\n )\n .pipe(mapTo(null), share(), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.focused);\n\n // Keep track of rows within the table. This is used to know which rows with hover content\n // are first or last in the table. They are kept focusable in case focus enters from above\n // or below the table.\n this._rendered\n .pipe(\n // Avoid some timing inconsistencies since Angular v19.\n debounceTime(0),\n // Optimization: ignore dom changes while focus is within the table as we already\n // ensure that rows above and below the focused/active row are tabbable.\n withLatestFrom(this.editEventDispatcher.editingOrFocused),\n filter(([_, activeRow]) => activeRow == null),\n map(() => element.querySelectorAll(ROW_SELECTOR)),\n share(),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.allRows);\n\n this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n filter(event => event.key === 'Enter'),\n toClosest(CELL_SELECTOR),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.editing);\n\n // Keydown must be used here or else key auto-repeat does not work properly on some platforms.\n this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(takeUntil(this.destroyed))\n .subscribe(this.focusDispatcher.keyObserver);\n });\n }\n}\n\nconst POPOVER_EDIT_HOST_BINDINGS = {\n '[attr.tabindex]': 'disabled ? null : 0',\n 'class': 'cdk-popover-edit-cell',\n '[attr.aria-haspopup]': '!disabled',\n};\n\nconst POPOVER_EDIT_INPUTS = [\n {name: 'template', alias: 'cdkPopoverEdit'},\n {name: 'context', alias: 'cdkPopoverEditContext'},\n {name: 'colspan', alias: 'cdkPopoverEditColspan'},\n {name: 'disabled', alias: 'cdkPopoverEditDisabled'},\n {name: 'ariaLabel', alias: 'cdkPopoverEditAriaLabel'},\n];\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n selector: '[cdkPopoverEdit]:not([cdkPopoverEditTabOut])',\n host: POPOVER_EDIT_HOST_BINDINGS,\n inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEdit<C> implements AfterViewInit, OnDestroy {\n protected readonly services = inject(EditServices);\n protected readonly elementRef = inject(ElementRef);\n protected readonly viewContainerRef = inject(ViewContainerRef);\n\n /** The edit lens template shown over the cell on edit. */\n template: TemplateRef<any> | null = null;\n\n /**\n * Implicit context to pass along to the template. Can be omitted if the template\n * is defined within the cell.\n */\n context?: C;\n\n /** Aria label to set on the popover dialog element. */\n ariaLabel?: string;\n\n /**\n * Specifies that the popup should cover additional table cells before and/or after\n * this one.\n */\n get colspan(): CdkPopoverEditColspan {\n return this._colspan;\n }\n set colspan(value: CdkPopoverEditColspan) {\n this._colspan = value;\n\n // Recompute positioning when the colspan changes.\n if (this.overlayRef) {\n this.overlayRef.updatePositionStrategy(this._getPositionStrategy());\n\n if (this.overlayRef.hasAttached()) {\n this._updateOverlaySize();\n }\n }\n }\n private _colspan: CdkPopoverEditColspan = {};\n\n /** Whether popover edit is disabled for this cell. */\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n\n if (value) {\n this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n this.services.editEventDispatcher.disabledCells.set(this.elementRef.nativeElement!, true);\n } else {\n this.services.editEventDispatcher.disabledCells.delete(this.elementRef.nativeElement!);\n }\n }\n private _disabled = false;\n\n protected focusTrap?: FocusTrap;\n protected overlayRef?: OverlayRef;\n protected readonly destroyed = new Subject<void>();\n\n ngAfterViewInit(): void {\n this._startListeningToEditEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n\n if (this.focusTrap) {\n this.focusTrap.destroy();\n this.focusTrap = undefined;\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n protected initFocusTrap(): void {\n this.focusTrap = this.services.focusTrapFactory.create(this.overlayRef!.overlayElement);\n }\n\n protected closeEditOverlay(): void {\n this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n }\n\n protected panelClass(): string {\n return EDIT_PANE_CLASS;\n }\n\n private _startListeningToEditEvents(): void {\n this.services.editEventDispatcher\n .editingCell(this.elementRef.nativeElement!)\n .pipe(takeUntil(this.destroyed))\n .subscribe(open => {\n if (open && this.template) {\n if (!this.overlayRef) {\n this._createEditOverlay();\n }\n\n this._showEditOverlay();\n } else if (this.overlayRef) {\n this._maybeReturnFocusToCell();\n\n this.overlayRef.detach();\n }\n });\n }\n\n private _createEditOverlay(): void {\n this.overlayRef = this.services.overlay.create({\n disposeOnNavigation: true,\n panelClass: this.panelClass(),\n positionStrategy: this._getPositionStrategy(),\n scrollStrategy: this.services.overlay.scrollStrategies.reposition(),\n direction: this.services.directionality,\n });\n\n this.initFocusTrap();\n this.overlayRef.overlayElement.setAttribute('role', 'dialog');\n if (this.ariaLabel) {\n this.overlayRef.overlayElement.setAttribute('aria-label', this.ariaLabel);\n }\n\n this.overlayRef.detachments().subscribe(() => this.closeEditOverlay());\n }\n\n private _showEditOverlay(): void {\n this.overlayRef!.attach(\n new TemplatePortal(this.template!, this.viewContainerRef, {$implicit: this.context}),\n );\n\n // We have to defer trapping focus, because doing so too early can cause the form inside\n // the overlay to be submitted immediately if it was opened on an Enter keydown event.\n this.services.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.focusTrap!.focusInitialElement();\n });\n });\n\n // Update the size of the popup initially and on subsequent changes to\n // scroll position and viewport size.\n merge(this.services.scrollDispatcher.scrolled(), this.services.viewportRuler.change())\n .pipe(startWith(null), takeUntil(merge(this.overlayRef!.detachments(), this.destroyed)))\n .subscribe(() => {\n this._updateOverlaySize();\n });\n }\n\n private _getOverlayCells(): HTMLElement[] {\n const cell = closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement;\n\n if (!this._colspan.before && !this._colspan.after) {\n return [cell];\n }\n\n const row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n const rowCells = Array.from(row.querySelectorAll(CELL_SELECTOR)) as HTMLElement[];\n const ownIndex = rowCells.indexOf(cell);\n\n return rowCells.slice(\n ownIndex - (this._colspan.before || 0),\n ownIndex + (this._colspan.after || 0) + 1,\n );\n }\n\n private _getPositionStrategy(): PositionStrategy {\n const cells = this._getOverlayCells();\n return this.services.overlay\n .position()\n .flexibleConnectedTo(cells[0])\n .withGrowAfterOpen()\n .withPush()\n .withViewportMargin(16)\n .withPositions([\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]);\n }\n\n private _updateOverlaySize(): void {\n this.overlayRef!.updateSize(this._sizeConfigForCells(this._getOverlayCells()));\n }\n\n private _maybeReturnFocusToCell(): void {\n if (closest(document.activeElement, EDIT_PANE_SELECTOR) === this.overlayRef!.overlayElement) {\n this.elementRef.nativeElement!.focus();\n }\n }\n\n private _sizeConfigForCells(cells: HTMLElement[]): OverlaySizeConfig {\n if (cells.length === 0) {\n return {};\n }\n\n if (cells.length === 1) {\n return {width: cells[0].getBoundingClientRect().width};\n }\n\n let firstCell, lastCell;\n if (this.services.directionality.value === 'ltr') {\n firstCell = cells[0];\n lastCell = cells[cells.length - 1];\n } else {\n lastCell = cells[0];\n firstCell = cells[cells.length - 1];\n }\n\n return {width: lastCell.getBoundingClientRect().right - firstCell.getBoundingClientRect().left};\n }\n}\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n selector: '[cdkPopoverEdit][cdkPopoverEditTabOut]',\n host: POPOVER_EDIT_HOST_BINDINGS,\n inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEditTabOut<C> extends CdkPopoverEdit<C> {\n protected readonly focusEscapeNotifierFactory = inject(FocusEscapeNotifierFactory);\n\n protected override focusTrap?: FocusEscapeNotifier = undefined;\n\n protected override initFocusTrap(): void {\n this.focusTrap = this.focusEscapeNotifierFactory.create(this.overlayRef!.overlayElement);\n\n this.focusTrap\n .escapes()\n .pipe(takeUntil(this.destroyed))\n .subscribe(direction => {\n this.services.editEventDispatcher.editRef?.blur();\n this.services.focusDispatcher.moveFocusHorizontally(\n closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement,\n direction === FocusEscapeNotifierDirection.START ? -1 : 1,\n );\n\n this.closeEditOverlay();\n });\n }\n}\n\n/**\n * A structural directive that shows its contents when the table row containing\n * it is hovered or when an element in the row has focus.\n */\n@Directive({\n selector: '[cdkRowHoverContent]',\n})\nexport class CdkRowHoverContent implements AfterViewInit, OnDestroy {\n protected readonly services = inject(EditServices);\n protected readonly elementRef = inject(ElementRef);\n protected readonly templateRef = inject<TemplateRef<any>>(TemplateRef);\n protected readonly viewContainerRef = inject(ViewContainerRef);\n\n protected readonly destroyed = new Subject<void>();\n protected viewRef: EmbeddedViewRef<any> | null = null;\n\n private _row?: Element;\n\n ngAfterViewInit(): void {\n this._row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n\n this.services.editEventDispatcher.registerRowWithHoverContent(this._row);\n this._listenForHoverAndFocusEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n\n if (this.viewRef) {\n this.viewRef.destroy();\n }\n\n if (this._row) {\n this.services.editEventDispatcher.deregisterRowWithHoverContent(this._row);\n }\n }\n\n /**\n * Called immediately after the hover content is created and added to the dom.\n * In the CDK version, this is a noop but subclasses such as MatRowHoverContent use this\n * to prepare/style the inserted element.\n */\n protected initElement(_: HTMLElement): void {}\n\n /**\n * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n * but should not yet be shown.\n */\n protected makeElementHiddenButFocusable(element: HTMLElement): void {\n element.style.opacity = '0';\n }\n\n /**\n * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n * but should not yet be shown.\n */\n protected makeElementVisible(element: HTMLElement): void {\n element.style.opacity = '';\n }\n\n private _listenForHoverAndFocusEvents(): void {\n this.services.editEventDispatcher\n .hoverOrFocusOnRow(this._row!)\n .pipe(takeUntil(this.destroyed))\n .subscribe(eventState => {\n // When in FOCUSABLE state, add the hover content to the dom but make it transparent so\n // that it is in the tab order relative to the currently focused row.\n\n if (eventState === HoverContentState.ON || eventState === HoverContentState.FOCUSABLE) {\n if (!this.viewRef) {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, {});\n this.initElement(this.viewRef.rootNodes[0] as HTMLElement);\n this.viewRef.markForCheck();\n } else if (this.viewContainerRef.indexOf(this.viewRef) === -1) {\n this.viewContainerRef.insert(this.viewRef!);\n this.viewRef.markForCheck();\n }\n\n if (eventState === HoverContentState.ON) {\n this.makeElementVisible(this.viewRef.rootNodes[0] as HTMLElement);\n } else {\n this.makeElementHiddenButFocusable(this.viewRef.rootNodes[0] as HTMLElement);\n }\n } else if (this.viewRef) {\n this.viewContainerRef.detach(this.viewContainerRef.indexOf(this.viewRef));\n }\n });\n }\n}\n\n/**\n * Opens the closest edit popover to this element, whether it's associated with this exact\n * element or an ancestor element.\n */\n@Directive({\n selector: '[cdkEditOpen]',\n host: {\n '(click)': 'openEdit($event)',\n },\n})\nexport class CdkEditOpen {\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly editEventDispatcher =\n inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n\n constructor() {\n const elementRef = this.elementRef;\n\n const nativeElement = elementRef.nativeElement;\n\n // Prevent accidental form submits.\n if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n nativeElement.setAttribute('type', 'button');\n }\n }\n\n openEdit(evt: Event): void {\n this.editEventDispatcher.editing.next(closest(this.elementRef.nativeElement!, CELL_SELECTOR));\n evt.stopPropagation();\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 {NgModule} from '@angular/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {\n CdkPopoverEdit,\n CdkPopoverEditTabOut,\n CdkRowHoverContent,\n CdkEditable,\n CdkEditOpen,\n} from './table-directives';\nimport {CdkEditControl, CdkEditRevert, CdkEditClose} from './lens-directives';\n\nconst EXPORTED_DECLARATIONS = [\n CdkPopoverEdit,\n CdkPopoverEditTabOut,\n CdkRowHoverContent,\n CdkEditControl,\n CdkEditRevert,\n CdkEditClose,\n CdkEditable,\n CdkEditOpen,\n];\n\n@NgModule({\n imports: [OverlayModule, ...EXPORTED_DECLARATIONS],\n exports: EXPORTED_DECLARATIONS,\n})\nexport class CdkPopoverEditModule {}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover-edit.mjs","sources":["../../../../../../src/cdk-experimental/popover-edit/constants.ts","../../../../../../src/cdk-experimental/popover-edit/edit-event-dispatcher.ts","../../../../../../src/cdk-experimental/popover-edit/edit-ref.ts","../../../../../../src/cdk-experimental/popover-edit/focus-dispatcher.ts","../../../../../../src/cdk-experimental/popover-edit/form-value-container.ts","../../../../../../src/cdk-experimental/popover-edit/lens-directives.ts","../../../../../../src/cdk-experimental/popover-edit/edit-services.ts","../../../../../../src/cdk-experimental/popover-edit/focus-escape-notifier.ts","../../../../../../src/cdk-experimental/popover-edit/table-directives.ts","../../../../../../src/cdk-experimental/popover-edit/popover-edit-module.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/** Selector for finding table cells. */\nexport const CELL_SELECTOR = '.cdk-cell, .mat-cell, td';\n\n/** Selector for finding editable table cells. */\nexport const EDITABLE_CELL_SELECTOR = '.cdk-popover-edit-cell, .mat-popover-edit-cell';\n\n/** Selector for finding table rows. */\nexport const ROW_SELECTOR = '.cdk-row, .mat-row, tr';\n\n/** Selector for finding the table element. */\nexport const TABLE_SELECTOR = 'table, cdk-table, mat-table';\n\n/** CSS class added to the edit lens pane. */\nexport const EDIT_PANE_CLASS = 'cdk-edit-pane';\n\n/** Selector for finding the edit lens pane. */\nexport const EDIT_PANE_SELECTOR = `.${EDIT_PANE_CLASS}, .mat-edit-pane`;\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 {Injectable, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, pipe, Subject} from 'rxjs';\nimport {\n audit,\n auditTime,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n skip,\n startWith,\n shareReplay,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, ROW_SELECTOR} from './constants';\nimport {closest} from './polyfill';\n\n/** The delay applied to mouse events before hiding or showing hover content. */\nconst MOUSE_EVENT_DELAY_MS = 40;\n\n/** The delay for reacting to focus/blur changes. */\nconst FOCUS_DELAY = 0;\n\n/**\n * The possible states for hover content:\n * OFF - Not rendered.\n * FOCUSABLE - Rendered in the dom and styled for its contents to be focusable but invisible.\n * ON - Rendered and fully visible.\n */\nexport enum HoverContentState {\n OFF = 0,\n FOCUSABLE,\n ON,\n}\n\n// Note: this class is generic, rather than referencing EditRef directly, in order to avoid\n// circular imports. If we were to reference it here, importing the registry into the\n// class that is registering itself will introduce a circular import.\n\n/**\n * Service for sharing delegated events and state for triggering table edits.\n */\n@Injectable()\nexport class EditEventDispatcher<R> {\n private readonly _ngZone = inject(NgZone);\n\n /** A subject that indicates which table cell is currently editing (unless it is disabled). */\n readonly editing = new Subject<Element | null>();\n\n /** A subject that indicates which table row is currently hovered. */\n readonly hovering = new Subject<Element | null>();\n\n /** A subject that indicates which table row currently contains focus. */\n readonly focused = new Subject<Element | null>();\n\n /** A subject that indicates all elements in the table matching ROW_SELECTOR. */\n readonly allRows = new Subject<NodeList>();\n\n /** A subject that emits mouse move events from the table indicating the targeted row. */\n readonly mouseMove = new Subject<Element | null>();\n\n // TODO: Use WeakSet once IE11 support is dropped.\n /**\n * Tracks the currently disabled editable cells - edit calls will be ignored\n * for these cells.\n */\n readonly disabledCells = new WeakMap<Element, boolean>();\n\n /** The EditRef for the currently active edit lens (if any). */\n get editRef(): R | null {\n return this._editRef;\n }\n private _editRef: R | null = null;\n\n // Optimization: Precompute common pipeable operators used per row/cell.\n private readonly _distinctUntilChanged = distinctUntilChanged<\n Element | HoverContentState | boolean | null\n >();\n private readonly _startWithNull = startWith<Element | null>(null);\n private readonly _distinctShare = pipe(\n this._distinctUntilChanged as MonoTypeOperatorFunction<HoverContentState>,\n shareReplay(1),\n );\n private readonly _startWithNullDistinct = pipe(\n this._startWithNull,\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n );\n\n readonly editingAndEnabled = this.editing.pipe(\n filter(cell => cell == null || !this.disabledCells.has(cell)),\n shareReplay(1),\n );\n\n /** An observable that emits the row containing focus or an active edit. */\n readonly editingOrFocused = combineLatest([\n this.editingAndEnabled.pipe(\n map(cell => closest(cell, ROW_SELECTOR)),\n this._startWithNull,\n ),\n this.focused.pipe(this._startWithNull),\n ]).pipe(\n map(([editingRow, focusedRow]) => focusedRow || editingRow),\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n auditTime(FOCUS_DELAY), // Use audit to skip over blur events to the next focused element.\n this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n shareReplay(1),\n );\n\n /** Tracks rows that contain hover content with a reference count. */\n private _rowsWithHoverContent = new WeakMap<Element, number>();\n\n /** The table cell that has an active edit lens (or null). */\n private _currentlyEditing: Element | null = null;\n\n /** The combined set of row hover content states organized by row. */\n private readonly _hoveredContentStateDistinct = combineLatest([\n this._getFirstRowWithHoverContent(),\n this._getLastRowWithHoverContent(),\n this.editingOrFocused,\n this.hovering.pipe(\n distinctUntilChanged(),\n audit(row =>\n this.mouseMove.pipe(\n filter(mouseMoveRow => row === mouseMoveRow),\n this._startWithNull,\n debounceTime(MOUSE_EVENT_DELAY_MS),\n ),\n ),\n this._startWithNullDistinct,\n ),\n ]).pipe(\n skip(1), // Skip the initial emission of [null, null, null, null].\n map(computeHoverContentState),\n distinctUntilChanged(areMapEntriesEqual),\n // Optimization: Enter the zone before shareReplay so that we trigger a single\n // ApplicationRef.tick for all row updates.\n this._enterZone(),\n shareReplay(1),\n );\n\n private readonly _editingAndEnabledDistinct = this.editingAndEnabled.pipe(\n distinctUntilChanged(),\n this._enterZone(),\n shareReplay(1),\n );\n\n // Optimization: Share row events observable with subsequent callers.\n // At startup, calls will be sequential by row.\n private _lastSeenRow: Element | null = null;\n private _lastSeenRowHoverOrFocus: Observable<HoverContentState> | null = null;\n\n constructor() {\n this._editingAndEnabledDistinct.subscribe(cell => {\n this._currentlyEditing = cell;\n });\n }\n\n /**\n * Gets an Observable that emits true when the specified element's cell\n * is editing and false when not.\n */\n editingCell(element: Element | EventTarget): Observable<boolean> {\n let cell: Element | null = null;\n\n return this._editingAndEnabledDistinct.pipe(\n map(editCell => editCell === (cell || (cell = closest(element, CELL_SELECTOR)))),\n this._distinctUntilChanged as MonoTypeOperatorFunction<boolean>,\n );\n }\n\n /**\n * Stops editing for the specified cell. If the specified cell is not the current\n * edit cell, does nothing.\n */\n doneEditingCell(element: Element | EventTarget): void {\n const cell = closest(element, CELL_SELECTOR);\n\n if (this._currentlyEditing === cell) {\n this.editing.next(null);\n }\n }\n\n /** Sets the currently active EditRef. */\n setActiveEditRef(ref: R) {\n this._editRef = ref;\n }\n\n /** Unset the currently active EditRef, if the specified editRef is active. */\n unsetActiveEditRef(ref: R) {\n if (this._editRef !== ref) {\n return;\n }\n\n this._editRef = null;\n }\n\n /** Adds the specified table row to be tracked for first/last row comparisons. */\n registerRowWithHoverContent(row: Element): void {\n this._rowsWithHoverContent.set(row, (this._rowsWithHoverContent.get(row) || 0) + 1);\n }\n\n /**\n * Reference decrements and ultimately removes the specified table row from first/last row\n * comparisons.\n */\n deregisterRowWithHoverContent(row: Element): void {\n const refCount = this._rowsWithHoverContent.get(row) || 0;\n\n if (refCount <= 1) {\n this._rowsWithHoverContent.delete(row);\n } else {\n this._rowsWithHoverContent.set(row, refCount - 1);\n }\n }\n\n /**\n * Gets an Observable that emits true when the specified element's row\n * contains the focused element or is being hovered over and false when not.\n * Hovering is defined as when the mouse has momentarily stopped moving over the cell.\n */\n hoverOrFocusOnRow(row: Element): Observable<HoverContentState> {\n if (row !== this._lastSeenRow) {\n this._lastSeenRow = row;\n this._lastSeenRowHoverOrFocus = this._hoveredContentStateDistinct.pipe(\n map(state => state.get(row) || HoverContentState.OFF),\n this._distinctShare,\n );\n }\n\n return this._lastSeenRowHoverOrFocus!;\n }\n\n /**\n * RxJS operator that enters the Angular zone, used to reduce boilerplate in\n * re-entering the zone for stream pipelines.\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 private _getFirstRowWithHoverContent(): Observable<Element | null> {\n return this._mapAllRowsToSingleRow(rows => {\n for (let i = 0, row; (row = rows[i]); i++) {\n if (this._rowsWithHoverContent.has(row as Element)) {\n return row as Element;\n }\n }\n return null;\n });\n }\n\n private _getLastRowWithHoverContent(): Observable<Element | null> {\n return this._mapAllRowsToSingleRow(rows => {\n for (let i = rows.length - 1, row; (row = rows[i]); i--) {\n if (this._rowsWithHoverContent.has(row as Element)) {\n return row as Element;\n }\n }\n return null;\n });\n }\n\n private _mapAllRowsToSingleRow(\n mapper: (rows: NodeList) => Element | null,\n ): Observable<Element | null> {\n return this.allRows.pipe(map(mapper), this._startWithNullDistinct);\n }\n}\n\nfunction computeHoverContentState([\n firstRow,\n lastRow,\n activeRow,\n hoverRow,\n]: (Element | null)[]): Map<Element, HoverContentState> {\n const hoverContentState = new Map<Element, HoverContentState>();\n\n // Add focusable rows.\n for (const focussableRow of [\n firstRow,\n lastRow,\n activeRow && activeRow.previousElementSibling,\n activeRow && activeRow.nextElementSibling,\n ]) {\n if (focussableRow) {\n hoverContentState.set(focussableRow as Element, HoverContentState.FOCUSABLE);\n }\n }\n\n // Add/overwrite with fully visible rows.\n for (const onRow of [activeRow, hoverRow]) {\n if (onRow) {\n hoverContentState.set(onRow, HoverContentState.ON);\n }\n }\n\n return hoverContentState;\n}\n\nfunction areMapEntriesEqual<K, V>(a: Map<K, V>, b: Map<K, V>): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n // TODO: use Map.prototype.entries once we're off IE11.\n for (const aKey of Array.from(a.keys())) {\n if (b.get(aKey) !== a.get(aKey)) {\n return false;\n }\n }\n\n return true;\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 {Injectable, OnDestroy, afterNextRender, inject, Injector} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {Observable, Subject} from 'rxjs';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\n\n/**\n * Used for communication between the form within the edit lens and the\n * table that launched it. Provided by CdkEditControl within the lens.\n */\n@Injectable()\nexport class EditRef<FormValue> implements OnDestroy {\n private readonly _form = inject(ControlContainer, {self: true});\n private readonly _editEventDispatcher =\n inject<EditEventDispatcher<EditRef<FormValue>>>(EditEventDispatcher);\n\n /** Emits the final value of this edit instance before closing. */\n private readonly _finalValueSubject = new Subject<FormValue>();\n readonly finalValue: Observable<FormValue> = this._finalValueSubject;\n\n /** Emits when the user tabs out of this edit lens before closing. */\n private readonly _blurredSubject = new Subject<void>();\n readonly blurred: Observable<void> = this._blurredSubject;\n\n /** The value to set the form back to on revert. */\n private _revertFormValue: FormValue;\n\n private _injector = inject(Injector);\n\n constructor() {\n this._editEventDispatcher.setActiveEditRef(this);\n }\n\n /**\n * Called by the host directive's OnInit hook. Reads the initial state of the\n * form and overrides it with persisted state from previous openings, if\n * applicable.\n */\n init(previousFormValue: FormValue | undefined): void {\n // Wait for the next render before caching the initial value.\n // This ensures that all form controls have been initialized.\n afterNextRender(\n () => {\n this.updateRevertValue();\n if (previousFormValue) {\n this.reset(previousFormValue);\n }\n },\n {injector: this._injector},\n );\n }\n\n ngOnDestroy(): void {\n this._editEventDispatcher.unsetActiveEditRef(this);\n this._finalValueSubject.next(this._form.value);\n this._finalValueSubject.complete();\n }\n\n /** Whether the attached form is in a valid state. */\n isValid(): boolean | null {\n return this._form.valid;\n }\n\n /** Set the form's current value as what it will be set to on revert/reset. */\n updateRevertValue(): void {\n this._revertFormValue = this._form.value;\n }\n\n /** Tells the table to close the edit popup. */\n close(): void {\n this._editEventDispatcher.editing.next(null);\n }\n\n /** Notifies the active edit that the user has moved focus out of the lens. */\n blur(): void {\n this._blurredSubject.next();\n }\n\n /**\n * Resets the form value to the specified value or the previously set\n * revert value.\n */\n reset(value?: FormValue): void {\n this._form.reset(value || this._revertFormValue);\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 {Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, UP_ARROW, RIGHT_ARROW, DOWN_ARROW} from '@angular/cdk/keycodes';\nimport {Injectable, inject} from '@angular/core';\nimport {PartialObserver} from 'rxjs';\n\nimport {EDITABLE_CELL_SELECTOR, ROW_SELECTOR, TABLE_SELECTOR} from './constants';\nimport {closest} from './polyfill';\n\n/**\n * Service responsible for moving cell focus around in response to keyboard events.\n * May be overridden to customize the keyboard behavior of popover edit.\n */\n@Injectable({providedIn: 'root'})\nexport class FocusDispatcher {\n protected readonly directionality = inject(Directionality);\n\n /** Observes keydown events triggered from the table. */\n readonly keyObserver: PartialObserver<KeyboardEvent>;\n\n constructor() {\n this.keyObserver = {next: event => this.handleKeyboardEvent(event)};\n }\n\n /**\n * Moves focus to earlier or later cells (in dom order) by offset cells relative to\n * currentCell.\n */\n moveFocusHorizontally(currentCell: HTMLElement, offset: number): void {\n const cells = Array.from(\n closest(currentCell, TABLE_SELECTOR)!.querySelectorAll(EDITABLE_CELL_SELECTOR),\n ) as HTMLElement[];\n const currentIndex = cells.indexOf(currentCell);\n const newIndex = currentIndex + offset;\n\n if (cells[newIndex]) {\n cells[newIndex].focus();\n }\n }\n\n /** Moves focus to up or down by row by offset cells relative to currentCell. */\n moveFocusVertically(currentCell: HTMLElement, offset: number): void {\n const currentRow = closest(currentCell, ROW_SELECTOR)!;\n const rows = Array.from(closest(currentRow, TABLE_SELECTOR)!.querySelectorAll(ROW_SELECTOR));\n const currentRowIndex = rows.indexOf(currentRow);\n const currentIndexWithinRow = Array.from(\n currentRow.querySelectorAll(EDITABLE_CELL_SELECTOR),\n ).indexOf(currentCell);\n const newRowIndex = currentRowIndex + offset;\n\n if (rows[newRowIndex]) {\n const rowToFocus = Array.from(\n rows[newRowIndex].querySelectorAll(EDITABLE_CELL_SELECTOR),\n ) as HTMLElement[];\n\n if (rowToFocus[currentIndexWithinRow]) {\n rowToFocus[currentIndexWithinRow].focus();\n }\n }\n }\n\n /** Translates arrow keydown events into focus move operations. */\n protected handleKeyboardEvent(event: KeyboardEvent): void {\n const cell = closest(event.target, EDITABLE_CELL_SELECTOR) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n switch (event.keyCode) {\n case UP_ARROW:\n this.moveFocusVertically(cell, -1);\n break;\n case DOWN_ARROW:\n this.moveFocusVertically(cell, 1);\n break;\n case LEFT_ARROW:\n this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? -1 : 1);\n break;\n case RIGHT_ARROW:\n this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? 1 : -1);\n break;\n default:\n // If the keyboard event is not handled, return now so that we don't `preventDefault`.\n return;\n }\n\n event.preventDefault();\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\nexport interface Entry<FormValue> {\n value?: FormValue;\n}\n\n/**\n * A convenience class for preserving unsaved form state while an edit lens is closed.\n *\n * Example usage:\n * class MyComponent {\n * readonly nameEditValues = new FormValueContainer<Item, {name: string}>();\n * }\n *\n * <form cdkEditControl [(cdkEditControlPreservedFormValue)]=\"nameEditValues.for(item).value\">\n */\nexport class FormValueContainer<Key extends object, FormValue> {\n private _formValues = new WeakMap<Key, Entry<FormValue>>();\n\n for(key: Key): Entry<FormValue> {\n const _formValues = this._formValues;\n\n let entry = _formValues.get(key);\n if (!entry) {\n // Expose entry as an object so that we can [(two-way)] bind to its value member\n entry = {};\n _formValues.set(key, entry);\n }\n\n return entry;\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 {Subject} from 'rxjs';\nimport {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Input, inject} from '@angular/core';\nimport {hasModifierKey} from '@angular/cdk/keycodes';\nimport {EDIT_PANE_SELECTOR} from './constants';\nimport {closest} from './polyfill';\nimport {EditRef} from './edit-ref';\n\n/** Options for what do to when the user clicks outside of an edit lens. */\nexport type PopoverEditClickOutBehavior = 'close' | 'submit' | 'noop';\n\n/**\n * A directive that attaches to a form within the edit lens.\n * It coordinates the form state with the table-wide edit system and handles\n * closing the edit lens when the form is submitted or the user clicks\n * out.\n */\n@Directive({\n selector: 'form[cdkEditControl]',\n inputs: [\n {name: 'clickOutBehavior', alias: 'cdkEditControlClickOutBehavior'},\n {name: 'preservedFormValue', alias: 'cdkEditControlPreservedFormValue'},\n {name: 'ignoreSubmitUnlessValid', alias: 'cdkEditControlIgnoreSubmitUnlessValid'},\n ],\n outputs: ['preservedFormValueChange: cdkEditControlPreservedFormValueChange'],\n providers: [EditRef],\n host: {\n '(ngSubmit)': 'handleFormSubmit()',\n '(document:click)': 'handlePossibleClickOut($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class CdkEditControl<FormValue> implements OnDestroy, OnInit {\n protected readonly elementRef = inject(ElementRef);\n readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n protected readonly destroyed = new Subject<void>();\n\n /**\n * Specifies what should happen when the user clicks outside of the edit lens.\n * The default behavior is to close the lens without submitting the form.\n */\n clickOutBehavior: PopoverEditClickOutBehavior = 'close';\n\n /**\n * A two-way binding for storing unsubmitted form state. If not provided\n * then form state will be discarded on close. The PeristBy directive is offered\n * as a convenient shortcut for these bindings.\n */\n preservedFormValue?: FormValue;\n readonly preservedFormValueChange = new EventEmitter<FormValue>();\n\n /**\n * Determines whether the lens will close on form submit if the form is not in a valid\n * state. By default the lens will remain open.\n */\n ignoreSubmitUnlessValid = true;\n\n ngOnInit(): void {\n this.editRef.init(this.preservedFormValue);\n this.editRef.finalValue.subscribe(this.preservedFormValueChange);\n this.editRef.blurred.subscribe(() => this._handleBlur());\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Called when the form submits. If ignoreSubmitUnlessValid is true, checks\n * the form for validity before proceeding.\n * Updates the revert state with the latest submitted value then closes the edit.\n */\n handleFormSubmit(): void {\n if (this.ignoreSubmitUnlessValid && !this.editRef.isValid()) {\n return;\n }\n\n this.editRef.updateRevertValue();\n this.editRef.close();\n }\n\n /** Called on Escape keyup. Closes the edit. */\n close(): void {\n // todo - allow this behavior to be customized as well, such as calling\n // reset before close\n this.editRef.close();\n }\n\n /**\n * Called on click anywhere in the document.\n * If the click was outside of the lens, trigger the specified click out behavior.\n */\n handlePossibleClickOut(evt: Event): void {\n if (closest(evt.target, EDIT_PANE_SELECTOR)) {\n return;\n }\n switch (this.clickOutBehavior) {\n case 'submit':\n // Manually cause the form to submit before closing.\n this._triggerFormSubmit();\n this.editRef.close();\n break;\n case 'close':\n this.editRef.close();\n break;\n default:\n break;\n }\n }\n\n _handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && !hasModifierKey(event)) {\n this.close();\n event.preventDefault();\n }\n }\n\n /** Triggers submit on tab out if clickOutBehavior is 'submit'. */\n private _handleBlur(): void {\n if (this.clickOutBehavior === 'submit') {\n // Manually cause the form to submit before closing.\n this._triggerFormSubmit();\n }\n }\n\n private _triggerFormSubmit() {\n this.elementRef.nativeElement!.dispatchEvent(new Event('submit'));\n }\n}\n\n/** Reverts the form to its initial or previously submitted state on click. */\n@Directive({\n selector: 'button[cdkEditRevert]',\n host: {\n 'type': 'button',\n '(click)': 'revertEdit()',\n },\n})\nexport class CdkEditRevert<FormValue> {\n protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n /** Type of the button. Defaults to `button` to avoid accident form submits. */\n @Input() type: string = 'button';\n\n revertEdit(): void {\n this.editRef.reset();\n }\n}\n\n/** Closes the lens on click. */\n@Directive({\n selector: '[cdkEditClose]',\n host: {\n '(click)': 'closeEdit()',\n '(keydown.enter)': 'closeEdit()',\n '(keydown.space)': 'closeEdit()',\n },\n})\nexport class CdkEditClose<FormValue> {\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n constructor() {\n const nativeElement = this.elementRef.nativeElement;\n\n // Prevent accidental form submits.\n if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n nativeElement.setAttribute('type', 'button');\n }\n }\n\n closeEdit(): void {\n // Note that we use `click` here, rather than a keyboard event, because some screen readers\n // will emit a fake click event instead of an enter keyboard event on buttons. For the keyboard\n // events we use `keydown`, rather than `keyup`, because we use `keydown` to open the overlay\n // as well. If we were to use `keyup`, the user could end up opening and closing within\n // the same event sequence if focus was moved quickly.\n this.editRef.close();\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 {Injectable, NgZone, inject} from '@angular/core';\nimport {FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Overlay} from '@angular/cdk/overlay';\nimport {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {EditRef} from './edit-ref';\n\n/**\n * Optimization\n * Collects multiple Injectables into a singleton shared across the table. By reducing the\n * number of services injected into each CdkPopoverEdit, this saves about 0.023ms of cpu time\n * and 56 bytes of memory per instance.\n */\n@Injectable()\nexport class EditServices {\n readonly directionality = inject(Directionality);\n readonly editEventDispatcher = inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n readonly focusDispatcher = inject(FocusDispatcher);\n readonly focusTrapFactory = inject(FocusTrapFactory);\n readonly ngZone = inject(NgZone);\n readonly overlay = inject(Overlay);\n readonly scrollDispatcher = inject(ScrollDispatcher);\n readonly viewportRuler = inject(ViewportRuler);\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 {Injectable, NgZone, inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, InteractivityChecker} from '@angular/cdk/a11y';\nimport {Observable, Subject} from 'rxjs';\n\n/** Value indicating whether focus left the target area before or after the enclosed elements. */\nexport enum FocusEscapeNotifierDirection {\n START,\n END,\n}\n\n/**\n * Like FocusTrap, but rather than trapping focus within a dom region, notifies subscribers when\n * focus leaves the region.\n */\nexport class FocusEscapeNotifier extends FocusTrap {\n private readonly _escapeSubject = new Subject<FocusEscapeNotifierDirection>();\n\n constructor(\n element: HTMLElement,\n checker: InteractivityChecker,\n ngZone: NgZone,\n document: Document,\n ) {\n super(element, checker, ngZone, document, true /* deferAnchors */);\n\n // The focus trap adds \"anchors\" at the beginning and end of a trapped region that redirect\n // focus. We override that redirect behavior here with simply emitting on a stream.\n this.startAnchorListener = () => {\n this._escapeSubject.next(FocusEscapeNotifierDirection.START);\n return true;\n };\n this.endAnchorListener = () => {\n this._escapeSubject.next(FocusEscapeNotifierDirection.END);\n return true;\n };\n\n this.attachAnchors();\n }\n\n escapes(): Observable<FocusEscapeNotifierDirection> {\n return this._escapeSubject;\n }\n}\n\n/** Factory that allows easy instantiation of focus escape notifiers. */\n@Injectable({providedIn: 'root'})\nexport class FocusEscapeNotifierFactory {\n private _checker = inject(InteractivityChecker);\n private _ngZone = inject(NgZone);\n private _document = inject(DOCUMENT);\n\n /**\n * Creates a focus escape notifier region around the given element.\n * @param element The element around which focus will be monitored.\n * @returns The created focus escape notifier instance.\n */\n create(element: HTMLElement): FocusEscapeNotifier {\n return new FocusEscapeNotifier(element, this._checker, this._ngZone, this._document);\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 */\nimport {FocusTrap} from '@angular/cdk/a11y';\nimport {OverlayRef, OverlaySizeConfig, PositionStrategy} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n afterRender,\n AfterViewInit,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n inject,\n Renderer2,\n ListenerOptions,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n mapTo,\n share,\n startWith,\n takeUntil,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, EDIT_PANE_CLASS, EDIT_PANE_SELECTOR, ROW_SELECTOR} from './constants';\nimport {EditEventDispatcher, HoverContentState} from './edit-event-dispatcher';\nimport {EditServices} from './edit-services';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {\n FocusEscapeNotifier,\n FocusEscapeNotifierDirection,\n FocusEscapeNotifierFactory,\n} from './focus-escape-notifier';\nimport {closest} from './polyfill';\nimport {EditRef} from './edit-ref';\nimport {_bindEventWithOptions} from '@angular/cdk/platform';\n\n/**\n * Describes the number of columns before and after the originating cell that the\n * edit popup should span. In left to right locales, before means left and after means\n * right. In right to left locales before means right and after means left.\n */\nexport interface CdkPopoverEditColspan {\n before?: number;\n after?: number;\n}\n\n/** Used for rate-limiting mousemove events. */\nconst MOUSE_MOVE_THROTTLE_TIME_MS = 10;\n\n/**\n * A directive that must be attached to enable editability on a table.\n * It is responsible for setting up delegated event handlers and providing the\n * EditEventDispatcher service for use by the other edit directives.\n */\n@Directive({\n selector: 'table[editable], cdk-table[editable], mat-table[editable]',\n providers: [EditEventDispatcher, EditServices],\n})\nexport class CdkEditable implements AfterViewInit, OnDestroy {\n protected readonly elementRef = inject(ElementRef);\n protected readonly editEventDispatcher =\n inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n protected readonly focusDispatcher = inject(FocusDispatcher);\n protected readonly ngZone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n\n protected readonly destroyed = new Subject<void>();\n\n private _rendered = new Subject();\n\n constructor() {\n afterRender(() => {\n this._rendered.next();\n });\n }\n\n ngAfterViewInit(): void {\n this._listenForTableEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n this._rendered.complete();\n }\n\n private _observableFromEvent<T extends Event>(\n element: Element,\n name: string,\n options?: ListenerOptions,\n ) {\n return new Observable<T>(subscriber => {\n const handler = (event: T) => subscriber.next(event);\n const cleanup = options\n ? _bindEventWithOptions(this._renderer, element, name, handler, options)\n : this._renderer.listen(element, name, handler, options);\n return () => {\n cleanup();\n subscriber.complete();\n };\n });\n }\n\n private _listenForTableEvents(): void {\n const element = this.elementRef.nativeElement;\n const toClosest = (selector: string) =>\n map((event: UIEvent) => closest(event.target, selector));\n\n this.ngZone.runOutsideAngular(() => {\n // Track mouse movement over the table to hide/show hover content.\n this._observableFromEvent<MouseEvent>(element, 'mouseover')\n .pipe(toClosest(ROW_SELECTOR), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.hovering);\n this._observableFromEvent<MouseEvent>(element, 'mouseleave')\n .pipe(mapTo(null), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.hovering);\n this._observableFromEvent<MouseEvent>(element, 'mousemove')\n .pipe(\n throttleTime(MOUSE_MOVE_THROTTLE_TIME_MS),\n toClosest(ROW_SELECTOR),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.mouseMove);\n\n // Track focus within the table to hide/show/make focusable hover content.\n this._observableFromEvent<FocusEvent>(element, 'focus', {capture: true})\n .pipe(toClosest(ROW_SELECTOR), share(), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.focused);\n\n merge(\n this._observableFromEvent(element, 'blur', {capture: true}),\n this._observableFromEvent<KeyboardEvent>(element, 'keydown').pipe(\n filter(event => event.key === 'Escape'),\n ),\n )\n .pipe(mapTo(null), share(), takeUntil(this.destroyed))\n .subscribe(this.editEventDispatcher.focused);\n\n // Keep track of rows within the table. This is used to know which rows with hover content\n // are first or last in the table. They are kept focusable in case focus enters from above\n // or below the table.\n this._rendered\n .pipe(\n // Avoid some timing inconsistencies since Angular v19.\n debounceTime(0),\n // Optimization: ignore dom changes while focus is within the table as we already\n // ensure that rows above and below the focused/active row are tabbable.\n withLatestFrom(this.editEventDispatcher.editingOrFocused),\n filter(([_, activeRow]) => activeRow == null),\n map(() => element.querySelectorAll(ROW_SELECTOR)),\n share(),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.allRows);\n\n this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n filter(event => event.key === 'Enter'),\n toClosest(CELL_SELECTOR),\n takeUntil(this.destroyed),\n )\n .subscribe(this.editEventDispatcher.editing);\n\n // Keydown must be used here or else key auto-repeat does not work properly on some platforms.\n this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(takeUntil(this.destroyed))\n .subscribe(this.focusDispatcher.keyObserver);\n });\n }\n}\n\nconst POPOVER_EDIT_HOST_BINDINGS = {\n '[attr.tabindex]': 'disabled ? null : 0',\n 'class': 'cdk-popover-edit-cell',\n '[attr.aria-haspopup]': '!disabled',\n};\n\nconst POPOVER_EDIT_INPUTS = [\n {name: 'template', alias: 'cdkPopoverEdit'},\n {name: 'context', alias: 'cdkPopoverEditContext'},\n {name: 'colspan', alias: 'cdkPopoverEditColspan'},\n {name: 'disabled', alias: 'cdkPopoverEditDisabled'},\n {name: 'ariaLabel', alias: 'cdkPopoverEditAriaLabel'},\n];\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n selector: '[cdkPopoverEdit]:not([cdkPopoverEditTabOut])',\n host: POPOVER_EDIT_HOST_BINDINGS,\n inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEdit<C> implements AfterViewInit, OnDestroy {\n protected readonly services = inject(EditServices);\n protected readonly elementRef = inject(ElementRef);\n protected readonly viewContainerRef = inject(ViewContainerRef);\n\n /** The edit lens template shown over the cell on edit. */\n template: TemplateRef<any> | null = null;\n\n /**\n * Implicit context to pass along to the template. Can be omitted if the template\n * is defined within the cell.\n */\n context?: C;\n\n /** Aria label to set on the popover dialog element. */\n ariaLabel?: string;\n\n /**\n * Specifies that the popup should cover additional table cells before and/or after\n * this one.\n */\n get colspan(): CdkPopoverEditColspan {\n return this._colspan;\n }\n set colspan(value: CdkPopoverEditColspan) {\n this._colspan = value;\n\n // Recompute positioning when the colspan changes.\n if (this.overlayRef) {\n this.overlayRef.updatePositionStrategy(this._getPositionStrategy());\n\n if (this.overlayRef.hasAttached()) {\n this._updateOverlaySize();\n }\n }\n }\n private _colspan: CdkPopoverEditColspan = {};\n\n /** Whether popover edit is disabled for this cell. */\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n\n if (value) {\n this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n this.services.editEventDispatcher.disabledCells.set(this.elementRef.nativeElement!, true);\n } else {\n this.services.editEventDispatcher.disabledCells.delete(this.elementRef.nativeElement!);\n }\n }\n private _disabled = false;\n\n protected focusTrap?: FocusTrap;\n protected overlayRef?: OverlayRef;\n protected readonly destroyed = new Subject<void>();\n\n ngAfterViewInit(): void {\n this._startListeningToEditEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n\n if (this.focusTrap) {\n this.focusTrap.destroy();\n this.focusTrap = undefined;\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n protected initFocusTrap(): void {\n this.focusTrap = this.services.focusTrapFactory.create(this.overlayRef!.overlayElement);\n }\n\n protected closeEditOverlay(): void {\n this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n }\n\n protected panelClass(): string {\n return EDIT_PANE_CLASS;\n }\n\n private _startListeningToEditEvents(): void {\n this.services.editEventDispatcher\n .editingCell(this.elementRef.nativeElement!)\n .pipe(takeUntil(this.destroyed))\n .subscribe(open => {\n if (open && this.template) {\n if (!this.overlayRef) {\n this._createEditOverlay();\n }\n\n this._showEditOverlay();\n } else if (this.overlayRef) {\n this._maybeReturnFocusToCell();\n\n this.overlayRef.detach();\n }\n });\n }\n\n private _createEditOverlay(): void {\n this.overlayRef = this.services.overlay.create({\n disposeOnNavigation: true,\n panelClass: this.panelClass(),\n positionStrategy: this._getPositionStrategy(),\n scrollStrategy: this.services.overlay.scrollStrategies.reposition(),\n direction: this.services.directionality,\n });\n\n this.initFocusTrap();\n this.overlayRef.overlayElement.setAttribute('role', 'dialog');\n if (this.ariaLabel) {\n this.overlayRef.overlayElement.setAttribute('aria-label', this.ariaLabel);\n }\n\n this.overlayRef.detachments().subscribe(() => this.closeEditOverlay());\n }\n\n private _showEditOverlay(): void {\n this.overlayRef!.attach(\n new TemplatePortal(this.template!, this.viewContainerRef, {$implicit: this.context}),\n );\n\n // We have to defer trapping focus, because doing so too early can cause the form inside\n // the overlay to be submitted immediately if it was opened on an Enter keydown event.\n this.services.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.focusTrap!.focusInitialElement();\n });\n });\n\n // Update the size of the popup initially and on subsequent changes to\n // scroll position and viewport size.\n merge(this.services.scrollDispatcher.scrolled(), this.services.viewportRuler.change())\n .pipe(startWith(null), takeUntil(merge(this.overlayRef!.detachments(), this.destroyed)))\n .subscribe(() => {\n this._updateOverlaySize();\n });\n }\n\n private _getOverlayCells(): HTMLElement[] {\n const cell = closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement;\n\n if (!this._colspan.before && !this._colspan.after) {\n return [cell];\n }\n\n const row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n const rowCells = Array.from(row.querySelectorAll(CELL_SELECTOR)) as HTMLElement[];\n const ownIndex = rowCells.indexOf(cell);\n\n return rowCells.slice(\n ownIndex - (this._colspan.before || 0),\n ownIndex + (this._colspan.after || 0) + 1,\n );\n }\n\n private _getPositionStrategy(): PositionStrategy {\n const cells = this._getOverlayCells();\n return this.services.overlay\n .position()\n .flexibleConnectedTo(cells[0])\n .withGrowAfterOpen()\n .withPush()\n .withViewportMargin(16)\n .withPositions([\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]);\n }\n\n private _updateOverlaySize(): void {\n this.overlayRef!.updateSize(this._sizeConfigForCells(this._getOverlayCells()));\n }\n\n private _maybeReturnFocusToCell(): void {\n if (closest(document.activeElement, EDIT_PANE_SELECTOR) === this.overlayRef!.overlayElement) {\n this.elementRef.nativeElement!.focus();\n }\n }\n\n private _sizeConfigForCells(cells: HTMLElement[]): OverlaySizeConfig {\n if (cells.length === 0) {\n return {};\n }\n\n if (cells.length === 1) {\n return {width: cells[0].getBoundingClientRect().width};\n }\n\n let firstCell, lastCell;\n if (this.services.directionality.value === 'ltr') {\n firstCell = cells[0];\n lastCell = cells[cells.length - 1];\n } else {\n lastCell = cells[0];\n firstCell = cells[cells.length - 1];\n }\n\n return {width: lastCell.getBoundingClientRect().right - firstCell.getBoundingClientRect().left};\n }\n}\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n selector: '[cdkPopoverEdit][cdkPopoverEditTabOut]',\n host: POPOVER_EDIT_HOST_BINDINGS,\n inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEditTabOut<C> extends CdkPopoverEdit<C> {\n protected readonly focusEscapeNotifierFactory = inject(FocusEscapeNotifierFactory);\n\n protected override focusTrap?: FocusEscapeNotifier = undefined;\n\n protected override initFocusTrap(): void {\n this.focusTrap = this.focusEscapeNotifierFactory.create(this.overlayRef!.overlayElement);\n\n this.focusTrap\n .escapes()\n .pipe(takeUntil(this.destroyed))\n .subscribe(direction => {\n this.services.editEventDispatcher.editRef?.blur();\n this.services.focusDispatcher.moveFocusHorizontally(\n closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement,\n direction === FocusEscapeNotifierDirection.START ? -1 : 1,\n );\n\n this.closeEditOverlay();\n });\n }\n}\n\n/**\n * A structural directive that shows its contents when the table row containing\n * it is hovered or when an element in the row has focus.\n */\n@Directive({\n selector: '[cdkRowHoverContent]',\n})\nexport class CdkRowHoverContent implements AfterViewInit, OnDestroy {\n protected readonly services = inject(EditServices);\n protected readonly elementRef = inject(ElementRef);\n protected readonly templateRef = inject<TemplateRef<any>>(TemplateRef);\n protected readonly viewContainerRef = inject(ViewContainerRef);\n\n protected readonly destroyed = new Subject<void>();\n protected viewRef: EmbeddedViewRef<any> | null = null;\n\n private _row?: Element;\n\n ngAfterViewInit(): void {\n this._row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n\n this.services.editEventDispatcher.registerRowWithHoverContent(this._row);\n this._listenForHoverAndFocusEvents();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n\n if (this.viewRef) {\n this.viewRef.destroy();\n }\n\n if (this._row) {\n this.services.editEventDispatcher.deregisterRowWithHoverContent(this._row);\n }\n }\n\n /**\n * Called immediately after the hover content is created and added to the dom.\n * In the CDK version, this is a noop but subclasses such as MatRowHoverContent use this\n * to prepare/style the inserted element.\n */\n protected initElement(_: HTMLElement): void {}\n\n /**\n * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n * but should not yet be shown.\n */\n protected makeElementHiddenButFocusable(element: HTMLElement): void {\n element.style.opacity = '0';\n }\n\n /**\n * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n * but should not yet be shown.\n */\n protected makeElementVisible(element: HTMLElement): void {\n element.style.opacity = '';\n }\n\n private _listenForHoverAndFocusEvents(): void {\n this.services.editEventDispatcher\n .hoverOrFocusOnRow(this._row!)\n .pipe(takeUntil(this.destroyed))\n .subscribe(eventState => {\n // When in FOCUSABLE state, add the hover content to the dom but make it transparent so\n // that it is in the tab order relative to the currently focused row.\n\n if (eventState === HoverContentState.ON || eventState === HoverContentState.FOCUSABLE) {\n if (!this.viewRef) {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, {});\n this.initElement(this.viewRef.rootNodes[0] as HTMLElement);\n this.viewRef.markForCheck();\n } else if (this.viewContainerRef.indexOf(this.viewRef) === -1) {\n this.viewContainerRef.insert(this.viewRef!);\n this.viewRef.markForCheck();\n }\n\n if (eventState === HoverContentState.ON) {\n this.makeElementVisible(this.viewRef.rootNodes[0] as HTMLElement);\n } else {\n this.makeElementHiddenButFocusable(this.viewRef.rootNodes[0] as HTMLElement);\n }\n } else if (this.viewRef) {\n this.viewContainerRef.detach(this.viewContainerRef.indexOf(this.viewRef));\n }\n });\n }\n}\n\n/**\n * Opens the closest edit popover to this element, whether it's associated with this exact\n * element or an ancestor element.\n */\n@Directive({\n selector: '[cdkEditOpen]',\n host: {\n '(click)': 'openEdit($event)',\n },\n})\nexport class CdkEditOpen {\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly editEventDispatcher =\n inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n\n constructor() {\n const elementRef = this.elementRef;\n\n const nativeElement = elementRef.nativeElement;\n\n // Prevent accidental form submits.\n if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n nativeElement.setAttribute('type', 'button');\n }\n }\n\n openEdit(evt: Event): void {\n this.editEventDispatcher.editing.next(closest(this.elementRef.nativeElement!, CELL_SELECTOR));\n evt.stopPropagation();\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 {NgModule} from '@angular/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {\n CdkPopoverEdit,\n CdkPopoverEditTabOut,\n CdkRowHoverContent,\n CdkEditable,\n CdkEditOpen,\n} from './table-directives';\nimport {CdkEditControl, CdkEditRevert, CdkEditClose} from './lens-directives';\n\nconst EXPORTED_DECLARATIONS = [\n CdkPopoverEdit,\n CdkPopoverEditTabOut,\n CdkRowHoverContent,\n CdkEditControl,\n CdkEditRevert,\n CdkEditClose,\n CdkEditable,\n CdkEditOpen,\n];\n\n@NgModule({\n imports: [OverlayModule, ...EXPORTED_DECLARATIONS],\n exports: EXPORTED_DECLARATIONS,\n})\nexport class CdkPopoverEditModule {}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA;AACO,MAAM,aAAa,GAAG,2BAA0B;AAEvD;AACO,MAAM,sBAAsB,GAAG,gDAAgD,CAAA;AAEtF;AACO,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAEpD;AACO,MAAM,cAAc,GAAG,6BAA6B,CAAA;AAE3D;AACO,MAAM,eAAe,GAAG,eAAe,CAAA;AAE9C;AACO,MAAM,kBAAkB,GAAG,CAAI,CAAA,EAAA,eAAe,kBAAkB;;ACCvE;AACA,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAE/B;AACA,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB;;;;;AAKG;IACS,kBAIX;AAJD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,iBAAA,CAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,iBAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACJ,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA,CAAA;AAED;AACA;AACA;AAEA;;AAEG;MAEU,mBAAmB,CAAA;AACb,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;AAGhC,IAAA,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAA;;AAGvC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAkB,CAAA;;AAGxC,IAAA,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAA;;AAGvC,IAAA,OAAO,GAAG,IAAI,OAAO,EAAY,CAAA;;AAGjC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAkB,CAAA;;AAGlD;;;AAGG;AACM,IAAA,aAAa,GAAG,IAAI,OAAO,EAAoB,CAAA;;AAGxD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;KACtB;IACQ,QAAQ,GAAa,IAAI,CAAA;;IAGhB,qBAAqB,GAAG,oBAAoB,EAE1D,CAAA;AACc,IAAA,cAAc,GAAG,SAAS,CAAiB,IAAI,CAAC,CAAA;AAChD,IAAA,cAAc,GAAG,IAAI,CACpC,IAAI,CAAC,qBAAoE,EACzE,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;IACgB,sBAAsB,GAAG,IAAI,CAC5C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,qBAAiE,CACvE,CAAA;AAEQ,IAAA,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC5C,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAC7D,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;;IAGQ,gBAAgB,GAAG,aAAa,CAAC;QACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EACxC,IAAI,CAAC,cAAc,CACpB;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AACvC,KAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,UAAU,IAAI,UAAU,CAAC,EAC3D,IAAI,CAAC,qBAAiE,EACtE,SAAS,CAAC,WAAW,CAAC;IACtB,IAAI,CAAC,qBAAiE,EACtE,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;;AAGO,IAAA,qBAAqB,GAAG,IAAI,OAAO,EAAmB,CAAA;;IAGtD,iBAAiB,GAAmB,IAAI,CAAA;;IAG/B,4BAA4B,GAAG,aAAa,CAAC;QAC5D,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,oBAAoB,EAAE,EACtB,KAAK,CAAC,GAAG,IACP,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,MAAM,CAAC,YAAY,IAAI,GAAG,KAAK,YAAY,CAAC,EAC5C,IAAI,CAAC,cAAc,EACnB,YAAY,CAAC,oBAAoB,CAAC,CACnC,CACF,EACD,IAAI,CAAC,sBAAsB,CAC5B;KACF,CAAC,CAAC,IAAI,CACL,IAAI,CAAC,CAAC,CAAC;AACP,IAAA,GAAG,CAAC,wBAAwB,CAAC,EAC7B,oBAAoB,CAAC,kBAAkB,CAAC;;;IAGxC,IAAI,CAAC,UAAU,EAAE,EACjB,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;IAEgB,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvE,oBAAoB,EAAE,EACtB,IAAI,CAAC,UAAU,EAAE,EACjB,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;;;IAIO,YAAY,GAAmB,IAAI,CAAA;IACnC,wBAAwB,GAAyC,IAAI,CAAA;AAE7E,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,IAAG;AAC/C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;AAC/B,SAAC,CAAC,CAAA;KACJ;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,OAA8B,EAAA;QACxC,IAAI,IAAI,GAAmB,IAAI,CAAA;AAE/B,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CACzC,GAAG,CAAC,QAAQ,IAAI,QAAQ,MAAM,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAChF,IAAI,CAAC,qBAA0D,CAChE,CAAA;KACH;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,OAA8B,EAAA;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAE5C,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACzB;KACF;;AAGA,IAAA,gBAAgB,CAAC,GAAM,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;KACrB;;AAGA,IAAA,kBAAkB,CAAC,GAAM,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;YACzB,OAAO;SACT;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;KACtB;;AAGA,IAAA,2BAA2B,CAAC,GAAY,EAAA;QACtC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;KACrF;AAEA;;;AAGG;AACH,IAAA,6BAA6B,CAAC,GAAY,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAEzD,QAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACxC;aAAO;YACL,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;SACnD;KACF;AAEA;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,GAAY,EAAA;AAC5B,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;AACvB,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACpE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,EACrD,IAAI,CAAC,cAAc,CACpB,CAAA;SACH;QAEA,OAAO,IAAI,CAAC,wBAAyB,CAAA;KACvC;AAEA;;;AAGG;IACK,UAAU,GAAA;AAChB,QAAA,OAAO,CAAC,MAAqB,KAC3B,IAAI,UAAU,CAAI,QAAQ,IACxB,MAAM,CAAC,SAAS,CAAC;YACf,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,YAAA,QAAQ,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE;AACpC,SAAA,CAAC,CACH,CAAA;KACL;IAEQ,4BAA4B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAG;AACxC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;gBACzC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAc,CAAC,EAAE;AAClD,oBAAA,OAAO,GAAc,CAAA;iBACvB;aACF;AACA,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAC,CAAA;KACJ;IAEQ,2BAA2B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAG;YACxC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;gBACvD,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAc,CAAC,EAAE;AAClD,oBAAA,OAAO,GAAc,CAAA;iBACvB;aACF;AACA,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAC,CAAA;KACJ;AAEQ,IAAA,sBAAsB,CAC5B,MAA0C,EAAA;AAE1C,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;KACpE;uGAtOW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AA0OX,SAAS,wBAAwB,CAAC,CAChC,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACW,EAAA;AACnB,IAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA8B,CAAA;;IAG/D,KAAK,MAAM,aAAa,IAAI;QAC1B,QAAQ;QACR,OAAO;QACP,SAAS,IAAI,SAAS,CAAC,sBAAsB;QAC7C,SAAS,IAAI,SAAS,CAAC,kBAAkB;AAC1C,KAAA,EAAE;QACD,IAAI,aAAa,EAAE;YACjB,iBAAiB,CAAC,GAAG,CAAC,aAAwB,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;SAC9E;KACF;;IAGA,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;QACzC,IAAI,KAAK,EAAE;YACT,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;SACpD;KACF;AAEA,IAAA,OAAO,iBAAiB,CAAA;AAC1B,CAAA;AAEA,SAAS,kBAAkB,CAAO,CAAY,EAAE,CAAY,EAAA;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AACrB,QAAA,OAAO,KAAK,CAAA;KACd;;AAGA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AACvC,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAA;SACd;KACF;AAEA,IAAA,OAAO,IAAI,CAAA;AACb;;ACzTA;;;AAGG;MAEU,OAAO,CAAA;IACD,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAA;AAC9C,IAAA,oBAAoB,GACnC,MAAM,CAA0C,mBAAmB,CAAC,CAAA;;AAGrD,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAAa,CAAA;AACrD,IAAA,UAAU,GAA0B,IAAI,CAAC,kBAAkB,CAAA;;AAGnD,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ,CAAA;AAC7C,IAAA,OAAO,GAAqB,IAAI,CAAC,eAAe,CAAA;;AAGjD,IAAA,gBAAgB,CAAA;AAEhB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEpC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;KAClD;AAEA;;;;AAIG;AACH,IAAA,IAAI,CAAC,iBAAwC,EAAA;;;QAG3C,eAAe,CACb,MAAK;YACH,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,IAAI,iBAAiB,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;aAC/B;SACD,EACD,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAC,CAC3B,CAAA;KACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAA;KACpC;;IAGA,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;KACzB;;IAGA,iBAAiB,GAAA;QACf,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;KAC1C;;IAGA,KAAK,GAAA;QACH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC9C;;IAGA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;KAC7B;AAEA;;;AAGG;AACH,IAAA,KAAK,CAAC,KAAiB,EAAA;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAA;KAClD;uGAzEW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAP,OAAO,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;;;ACFX;;;AAGG;MAEU,eAAe,CAAA;AACP,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;;AAGjD,IAAA,WAAW,CAAA;AAEpB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,EAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAC,CAAA;KACrE;AAEA;;;AAGG;IACH,qBAAqB,CAAC,WAAwB,EAAE,MAAc,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,OAAO,CAAC,WAAW,EAAE,cAAc,CAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAC9D,CAAA;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAA;AAEtC,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACnB,YAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;SACzB;KACF;;IAGA,mBAAmB,CAAC,WAAwB,EAAE,MAAc,EAAA;QAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAE,CAAA;AACtD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAA;QAC5F,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAChD,QAAA,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CACtC,UAAU,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CACpD,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AACtB,QAAA,MAAM,WAAW,GAAG,eAAe,GAAG,MAAM,CAAA;AAE5C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AACrB,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAC1C,CAAA;AAElB,YAAA,IAAI,UAAU,CAAC,qBAAqB,CAAC,EAAE;AACrC,gBAAA,UAAU,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAA;aAC3C;SACF;KACF;;AAGU,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAuB,CAAA;QAEhF,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACT;AAEA,QAAA,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACjC,MAAM;AACR,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9E,MAAM;AACR,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC9E,MAAM;AACR,YAAA;;gBAEE,OAAO;SACX;QAEA,KAAK,CAAC,cAAc,EAAE,CAAA;KACxB;uGA1EW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADH,MAAM,EAAA,CAAA,CAAA;;2FAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACRhC;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AACrB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAyB,CAAA;AAE1D,IAAA,GAAG,CAAC,GAAQ,EAAA;AACV,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAEpC,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE;;YAEV,KAAK,GAAG,EAAE,CAAA;AACV,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SAC7B;AAEA,QAAA,OAAO,KAAK,CAAA;KACd;AACD;;ACnBD;;;;;AAKG;MAgBU,cAAc,CAAA;AACN,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AACzC,IAAA,OAAO,GAAG,MAAM,CAAqB,OAAO,CAAC,CAAA;AAEnC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAA;AAElD;;;AAGG;IACH,gBAAgB,GAAgC,OAAO,CAAA;AAEvD;;;;AAIG;AACH,IAAA,kBAAkB,CAAA;AACT,IAAA,wBAAwB,GAAG,IAAI,YAAY,EAAa,CAAA;AAEjE;;;AAGG;IACH,uBAAuB,GAAG,IAAI,CAAA;IAE9B,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;AAChE,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;KAC1D;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;KAC3B;AAEA;;;;AAIG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YAC3D,OAAO;SACT;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;KACtB;;IAGA,KAAK,GAAA;;;AAGH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;KACtB;AAEA;;;AAGG;AACH,IAAA,sBAAsB,CAAC,GAAU,EAAA;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE;YAC3C,OAAO;SACT;AACA,QAAA,QAAQ,IAAI,CAAC,gBAAgB;AAC3B,YAAA,KAAK,QAAQ;;gBAEX,IAAI,CAAC,kBAAkB,EAAE,CAAA;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,MAAM;SAGV;KACF;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACpD,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,KAAK,CAAC,cAAc,EAAE,CAAA;SACxB;KACF;;IAGQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE;;YAEtC,IAAI,CAAC,kBAAkB,EAAE,CAAA;SAC3B;KACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;KACnE;uGAjGW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,gCAAA,EAAA,kBAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,kCAAA,EAAA,oBAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,uCAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,wCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAPd,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAOT,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,MAAM,EAAE;AACN,wBAAA,EAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,gCAAgC,EAAC;AACnE,wBAAA,EAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,kCAAkC,EAAC;AACvE,wBAAA,EAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,uCAAuC,EAAC;AAClF,qBAAA;oBACD,OAAO,EAAE,CAAC,kEAAkE,CAAC;oBAC7E,SAAS,EAAE,CAAC,OAAO,CAAC;AACpB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,kBAAkB,EAAE,gCAAgC;AACpD,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA;AACF,iBAAA,CAAA;;AAqGD;MAQa,aAAa,CAAA;AACL,IAAA,OAAO,GAAG,MAAM,CAAqB,OAAO,CAAC,CAAA;;IAGvD,IAAI,GAAW,QAAQ,CAAA;IAEhC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;KACtB;uGARW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA;AACF,iBAAA,CAAA;8BAKU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAOR;MASa,YAAY,CAAA;AACJ,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAA;AACxD,IAAA,OAAO,GAAG,MAAM,CAAqB,OAAO,CAAC,CAAA;AAEhE,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAA;;AAGnD,QAAA,IAAI,aAAa,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9E,YAAA,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;SAC9C;KACF;IAEA,SAAS,GAAA;;;;;;AAMP,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;KACtB;uGApBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,iBAAiB,EAAE,aAAa;AAChC,wBAAA,iBAAiB,EAAE,aAAa;AACjC,qBAAA;AACF,iBAAA,CAAA;;;ACpJD;;;;;AAKG;MAEU,YAAY,CAAA;AACd,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AACvC,IAAA,mBAAmB,GAAG,MAAM,CAAwC,mBAAmB,CAAC,CAAA;AACxF,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AACzC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC3C,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AACzB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC3C,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;uGARnC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACXX;AACA,IAAY,4BAGX,CAAA;AAHD,CAAA,UAAY,4BAA4B,EAAA;AACtC,IAAA,4BAAA,CAAA,4BAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,4BAAA,CAAA,4BAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACL,CAAC,EAHW,4BAA4B,KAA5B,4BAA4B,GAGvC,EAAA,CAAA,CAAA,CAAA;AAED;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,SAAS,CAAA;AAC/B,IAAA,cAAc,GAAG,IAAI,OAAO,EAAgC,CAAA;AAE7E,IAAA,WAAA,CACE,OAAoB,EACpB,OAA6B,EAC7B,MAAc,EACd,QAAkB,EAAA;AAElB,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,oBAAoB,CAAA;;;AAIlE,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAK;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAA;AAC5D,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAK;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAA;AAC1D,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;QAED,IAAI,CAAC,aAAa,EAAE,CAAA;KACtB;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,cAAc,CAAA;KAC5B;AACD,CAAA;AAED;MAEa,0BAA0B,CAAA;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACvC,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACxB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEpC;;;;AAIG;AACH,IAAA,MAAM,CAAC,OAAoB,EAAA;AACzB,QAAA,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;KACtF;uGAZW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADd,MAAM,EAAA,CAAA,CAAA;;2FAClB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACMhC;AACA,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;;;AAIG;MAKU,WAAW,CAAA;AACH,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAA,mBAAmB,GACpC,MAAM,CAAwC,mBAAmB,CAAC,CAAC;AAClD,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE5B,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE3C,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAElC,IAAA,WAAA,GAAA;QACE,WAAW,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEO,IAAA,oBAAoB,CAC1B,OAAgB,EAChB,IAAY,EACZ,OAAyB,EAAA;AAEzB,QAAA,OAAO,IAAI,UAAU,CAAI,UAAU,IAAG;AACpC,YAAA,MAAM,OAAO,GAAG,CAAC,KAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,OAAO;AACrB,kBAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AACxE,kBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,YAAA,OAAO,MAAK;AACV,gBAAA,OAAO,EAAE,CAAC;gBACV,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxB,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAEO,qBAAqB,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC9C,MAAM,SAAS,GAAG,CAAC,QAAgB,KACjC,GAAG,CAAC,CAAC,KAAc,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;AAEjC,YAAA,IAAI,CAAC,oBAAoB,CAAa,OAAO,EAAE,WAAW,CAAC;AACxD,iBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,oBAAoB,CAAa,OAAO,EAAE,YAAY,CAAC;AACzD,iBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,oBAAoB,CAAa,OAAO,EAAE,WAAW,CAAC;AACxD,iBAAA,IAAI,CACH,YAAY,CAAC,2BAA2B,CAAC,EACzC,SAAS,CAAC,YAAY,CAAC,EACvB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;;AAGjD,YAAA,IAAI,CAAC,oBAAoB,CAAa,OAAO,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;AACrE,iBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjE,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE/C,YAAA,KAAK,CACH,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,EAC3D,IAAI,CAAC,oBAAoB,CAAgB,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CACxC,CACF;AACE,iBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;;;;AAK/C,YAAA,IAAI,CAAC,SAAS;iBACX,IAAI;;YAEH,YAAY,CAAC,CAAC,CAAC;;;YAGf,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACzD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,EAC7C,GAAG,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EACjD,KAAK,EAAE,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE/C,YAAA,IAAI,CAAC,oBAAoB,CAAgB,OAAO,EAAE,SAAS,CAAC;iBACzD,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,EACtC,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,iBAAA,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;;AAG/C,YAAA,IAAI,CAAC,oBAAoB,CAAgB,OAAO,EAAE,SAAS,CAAC;AACzD,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;KACJ;uGA9GU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAFX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEnC,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2DAA2D;AACrE,oBAAA,SAAS,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;AAC/C,iBAAA,CAAA;;AAkHD,MAAM,0BAA0B,GAAG;AACjC,IAAA,iBAAiB,EAAE,qBAAqB;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,sBAAsB,EAAE,WAAW;CACpC,CAAC;AAEF,MAAM,mBAAmB,GAAG;AAC1B,IAAA,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAC;AAC3C,IAAA,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAC;AACjD,IAAA,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAC;AACjD,IAAA,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAC;AACnD,IAAA,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,yBAAyB,EAAC;CACtD,CAAC;AAEF;;;;AAIG;MAMU,cAAc,CAAA;AACN,IAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;;IAG/D,QAAQ,GAA4B,IAAI,CAAC;AAEzC;;;AAGG;AACH,IAAA,OAAO,CAAK;;AAGZ,IAAA,SAAS,CAAU;AAEnB;;;AAGG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAGtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAEpE,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;gBACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;SACF;KACF;IACO,QAAQ,GAA0B,EAAE,CAAC;;AAG7C,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,IAAI,CAAC,CAAC;SAC3F;aAAM;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC;SACxF;KACF;IACO,SAAS,GAAG,KAAK,CAAC;AAEhB,IAAA,SAAS,CAAa;AACtB,IAAA,UAAU,CAAc;AACf,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEnD,eAAe,GAAA;QACb,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;KACF;IAES,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,CAAC;KACzF;IAES,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC;KACnF;IAES,UAAU,GAAA;AAClB,QAAA,OAAO,eAAe,CAAC;KACxB;IAEO,2BAA2B,GAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AAC9B,aAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC;AAC3C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC3B;gBAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAE/B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACN;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YAC7C,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACnE,YAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;AACxC,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9D,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3E;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACxE;IAEO,gBAAgB,GAAA;QACtB,IAAI,CAAC,UAAW,CAAC,MAAM,CACrB,IAAI,cAAc,CAAC,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CACrF,CAAC;;;QAIF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAC1C,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,SAAU,CAAC,mBAAmB,EAAE,CAAC;AACxC,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;;AAIH,QAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;aACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aACvF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,aAAa,CAAgB,CAAC;AAEnF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;AAED,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,YAAY,CAAE,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAkB,CAAC;QAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAExC,QAAA,OAAO,QAAQ,CAAC,KAAK,CACnB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EACtC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAC1C,CAAC;KACH;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;AACzB,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,aAAA,iBAAiB,EAAE;AACnB,aAAA,QAAQ,EAAE;aACV,kBAAkB,CAAC,EAAE,CAAC;AACtB,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACF,SAAA,CAAC,CAAC;KACN;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAW,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;KAChF;IAEO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,UAAW,CAAC,cAAc,EAAE;AAC3F,YAAA,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,KAAK,EAAE,CAAC;SACxC;KACF;AAEO,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAC,CAAC;SACxD;QAED,IAAI,SAAS,EAAE,QAAQ,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,EAAE;AAChD,YAAA,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACpC;aAAM;AACL,YAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrC;AAED,QAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAC,CAAC;KACjG;uGAnNU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,EAAA,UAAA,CAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,MAAM,EAAE,mBAAmB;AAC5B,iBAAA,CAAA;;AAuND;;;;AAIG;AAMG,MAAO,oBAAwB,SAAQ,cAAiB,CAAA;AACzC,IAAA,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEhE,SAAS,GAAyB,SAAS,CAAC;IAE5C,aAAa,GAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,SAAS;AACX,aAAA,OAAO,EAAE;AACT,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,SAAS,IAAG;YACrB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,CACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,aAAa,CAAgB,EACrE,SAAS,KAAK,4BAA4B,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAC1D,CAAC;YAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;uGApBU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,EAAA,UAAA,CAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,MAAM,EAAE,mBAAmB;AAC5B,iBAAA,CAAA;;AAwBD;;;AAGG;MAIU,kBAAkB,CAAA;AACV,IAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAA,WAAW,GAAG,MAAM,CAAmB,WAAW,CAAC,CAAC;AACpD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5C,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IACzC,OAAO,GAAgC,IAAI,CAAC;AAE9C,IAAA,IAAI,CAAW;IAEvB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,YAAY,CAAE,CAAC;QAEnE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACtC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACxB;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5E;KACF;AAED;;;;AAIG;IACO,WAAW,CAAC,CAAc,EAAA,GAAU;AAE9C;;;AAGG;AACO,IAAA,6BAA6B,CAAC,OAAoB,EAAA;AAC1D,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;KAC7B;AAED;;;AAGG;AACO,IAAA,kBAAkB,CAAC,OAAoB,EAAA;AAC/C,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;KAC5B;IAEO,6BAA6B,GAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AAC9B,aAAA,iBAAiB,CAAC,IAAI,CAAC,IAAK,CAAC;AAC7B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,UAAU,IAAG;;;AAItB,YAAA,IAAI,UAAU,KAAK,iBAAiB,CAAC,EAAE,IAAI,UAAU,KAAK,iBAAiB,CAAC,SAAS,EAAE;AACrF,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9E,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;iBAC7B;AAAM,qBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC7D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;AAC5C,oBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;iBAC7B;AAED,gBAAA,IAAI,UAAU,KAAK,iBAAiB,CAAC,EAAE,EAAE;AACvC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC,CAAC;iBACnE;qBAAM;AACL,oBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC,CAAC;iBAC9E;aACF;AAAM,iBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAC3E;AACH,SAAC,CAAC,CAAC;KACN;uGAjFU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;;AAqFD;;;AAGG;MAOU,WAAW,CAAA;AACH,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AACzD,IAAA,mBAAmB,GACpC,MAAM,CAAwC,mBAAmB,CAAC,CAAC;AAErE,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAEnC,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;;AAG/C,QAAA,IAAI,aAAa,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9E,YAAA,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SAC9C;KACF;AAED,IAAA,QAAQ,CAAC,GAAU,EAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAc,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9F,GAAG,CAAC,eAAe,EAAE,CAAC;KACvB;uGAnBU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACF,iBAAA,CAAA;;;ACzhBD,MAAM,qBAAqB,GAAG;IAC5B,cAAc;IACd,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;CACZ,CAAA;MAMY,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,aAAa,EAXvB,cAAc;YACd,oBAAoB;YACpB,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,WAAW;AACX,YAAA,WAAW,aAPX,cAAc;YACd,oBAAoB;YACpB,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,WAAW;YACX,WAAW,CAAA,EAAA,CAAA,CAAA;AAOA,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAGZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,GAAG,qBAAqB,CAAC;AAClD,oBAAA,OAAO,EAAE,qBAAqB;AAC/B,iBAAA,CAAA;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/cdk-experimental",
|
|
3
|
-
"version": "19.2.
|
|
3
|
+
"version": "19.2.4",
|
|
4
4
|
"description": "Experimental components for Angular CDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"homepage": "https://github.com/angular/components#readme",
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@angular/cdk": "19.2.
|
|
15
|
+
"@angular/cdk": "19.2.4",
|
|
16
16
|
"@angular/core": "^19.0.0 || ^20.0.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|