@ng-matero/extensions 20.1.0 → 20.2.0
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/_index.scss +0 -1
- package/alert/_alert-theme.scss +30 -41
- package/alert/_m2-alert.scss +34 -51
- package/colorpicker/_colorpicker-theme.scss +36 -45
- package/colorpicker/_m2-colorpicker.scss +12 -35
- package/column-resize/index.d.ts +0 -1
- package/core/index.d.ts +1 -2
- package/core/theming/_all-theme.scss +12 -15
- package/core/tokens/_m2-utils.scss +17 -100
- package/core/tokens/_token-utils.scss +7 -27
- package/datetimepicker/_datetimepicker-theme.scss +36 -62
- package/datetimepicker/_m2-datetimepicker.scss +81 -131
- package/datetimepicker/_m3-datetimepicker.scss +18 -15
- package/datetimepicker/index.d.ts +10 -28
- package/drawer/_drawer-theme.scss +28 -39
- package/drawer/_m2-drawer.scss +12 -34
- package/fesm2022/mtxAlert.mjs +7 -7
- package/fesm2022/mtxButton.mjs +20 -9
- package/fesm2022/mtxButton.mjs.map +1 -1
- package/fesm2022/mtxCheckboxGroup.mjs +7 -7
- package/fesm2022/mtxColorpicker.mjs +19 -19
- package/fesm2022/mtxColumnResize.mjs +44 -44
- package/fesm2022/mtxColumnResize.mjs.map +1 -1
- package/fesm2022/mtxCore.mjs +21 -21
- package/fesm2022/mtxCore.mjs.map +1 -1
- package/fesm2022/mtxDatetimepicker.mjs +62 -62
- package/fesm2022/mtxDatetimepicker.mjs.map +1 -1
- package/fesm2022/mtxDialog.mjs +10 -10
- package/fesm2022/mtxDialog.mjs.map +1 -1
- package/fesm2022/mtxDrawer.mjs +10 -10
- package/fesm2022/mtxGrid.mjs +70 -70
- package/fesm2022/mtxGrid.mjs.map +1 -1
- package/fesm2022/mtxLoader.mjs +7 -7
- package/fesm2022/mtxPhotoviewer.mjs +7 -7
- package/fesm2022/mtxPopover.mjs +19 -19
- package/fesm2022/mtxProgress.mjs +7 -7
- package/fesm2022/mtxSelect.mjs +52 -52
- package/fesm2022/mtxSplit.mjs +10 -10
- package/fesm2022/mtxTooltip.mjs +10 -10
- package/fesm2022/mtxTooltip.mjs.map +1 -1
- package/grid/_grid-theme.scss +28 -39
- package/grid/_m2-grid.scss +37 -56
- package/loader/_loader-theme.scss +28 -39
- package/loader/_m2-loader.scss +9 -32
- package/package.json +17 -17
- package/popover/_m2-popover.scss +15 -37
- package/popover/_popover-theme.scss +29 -39
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/progress/_m2-progress.scss +29 -44
- package/progress/_progress-theme.scss +28 -39
- package/select/_m2-select.scss +40 -67
- package/select/_m3-select.scss +2 -1
- package/select/_select-theme.scss +34 -43
- package/split/_m2-split.scss +13 -34
- package/split/_split-theme.scss +33 -44
- package/tooltip/_m2-tooltip.scss +18 -43
- package/tooltip/_tooltip-theme.scss +28 -35
- package/tooltip/index.d.ts +2 -2
- package/core/tokens/_m2-tokens.scss +0 -71
|
@@ -126,10 +126,10 @@ class ColumnResize {
|
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
130
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0
|
|
129
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.0", type: ColumnResize, isStandalone: true, inputs: { liveResizeUpdates: "liveResizeUpdates" }, ngImport: i0 }); }
|
|
131
131
|
}
|
|
132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResize, decorators: [{
|
|
133
133
|
type: Directive
|
|
134
134
|
}], propDecorators: { liveResizeUpdates: [{
|
|
135
135
|
type: Input
|
|
@@ -155,10 +155,10 @@ class ColumnResizeNotifierSource {
|
|
|
155
155
|
/** Triggers a resize action. */
|
|
156
156
|
this.triggerResize = new Subject();
|
|
157
157
|
}
|
|
158
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
159
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
158
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifierSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
159
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifierSource }); }
|
|
160
160
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifierSource, decorators: [{
|
|
162
162
|
type: Injectable
|
|
163
163
|
}] });
|
|
164
164
|
/** Service for triggering column resizes imperatively or being notified of them. */
|
|
@@ -177,10 +177,10 @@ class ColumnResizeNotifier {
|
|
|
177
177
|
isStickyColumn: true,
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
181
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
180
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
181
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifier }); }
|
|
182
182
|
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnResizeNotifier, decorators: [{
|
|
184
184
|
type: Injectable
|
|
185
185
|
}] });
|
|
186
186
|
|
|
@@ -241,10 +241,10 @@ class HeaderRowEventDispatcher {
|
|
|
241
241
|
complete: () => observer.complete(),
|
|
242
242
|
}));
|
|
243
243
|
}
|
|
244
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
245
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
244
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: HeaderRowEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
245
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: HeaderRowEventDispatcher }); }
|
|
246
246
|
}
|
|
247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: HeaderRowEventDispatcher, decorators: [{
|
|
248
248
|
type: Injectable
|
|
249
249
|
}] });
|
|
250
250
|
|
|
@@ -318,12 +318,12 @@ class _CoalescedStyleScheduler {
|
|
|
318
318
|
this._currentSchedule = null;
|
|
319
319
|
}));
|
|
320
320
|
}
|
|
321
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
322
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
321
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: _CoalescedStyleScheduler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
322
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: _CoalescedStyleScheduler }); }
|
|
323
323
|
}
|
|
324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{
|
|
325
325
|
type: Injectable
|
|
326
|
-
}]
|
|
326
|
+
}] });
|
|
327
327
|
|
|
328
328
|
/**
|
|
329
329
|
* @license
|
|
@@ -361,10 +361,10 @@ class ResizeStrategy {
|
|
|
361
361
|
// offsetWidth which triggers layout.
|
|
362
362
|
return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;
|
|
363
363
|
}
|
|
364
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
365
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
364
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResizeStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
365
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResizeStrategy }); }
|
|
366
366
|
}
|
|
367
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
367
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResizeStrategy, decorators: [{
|
|
368
368
|
type: Injectable
|
|
369
369
|
}] });
|
|
370
370
|
/**
|
|
@@ -401,10 +401,10 @@ class TableLayoutFixedResizeStrategy extends ResizeStrategy {
|
|
|
401
401
|
const newWidth = Math.min(currentWidth, sizeInPx);
|
|
402
402
|
this.applyColumnSize(_, columnHeader, newWidth, currentWidth);
|
|
403
403
|
}
|
|
404
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
405
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
404
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: TableLayoutFixedResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
405
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: TableLayoutFixedResizeStrategy }); }
|
|
406
406
|
}
|
|
407
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
407
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: TableLayoutFixedResizeStrategy, decorators: [{
|
|
408
408
|
type: Injectable
|
|
409
409
|
}] });
|
|
410
410
|
/**
|
|
@@ -516,10 +516,10 @@ class CdkFlexTableResizeStrategy extends ResizeStrategy {
|
|
|
516
516
|
const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');
|
|
517
517
|
this._getStyleSheet().insertRule(`${selector} {${body}}`, index);
|
|
518
518
|
}
|
|
519
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
520
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
519
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkFlexTableResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
520
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkFlexTableResizeStrategy }); }
|
|
521
521
|
}
|
|
522
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
522
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkFlexTableResizeStrategy, decorators: [{
|
|
523
523
|
type: Injectable
|
|
524
524
|
}] });
|
|
525
525
|
/** Converts CSS pixel values to numbers, eg "123px" to 123. Returns NaN for non pixel values. */
|
|
@@ -582,10 +582,10 @@ class CdkColumnResize extends ColumnResize {
|
|
|
582
582
|
this.notifier = inject(ColumnResizeNotifierSource);
|
|
583
583
|
this.table = inject(CdkTable);
|
|
584
584
|
}
|
|
585
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
586
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0
|
|
585
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResize, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
586
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.0", type: CdkColumnResize, isStandalone: true, selector: "table[cdk-table][columnResize]", providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }], usesInheritance: true, ngImport: i0 }); }
|
|
587
587
|
}
|
|
588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResize, decorators: [{
|
|
589
589
|
type: Directive,
|
|
590
590
|
args: [{
|
|
591
591
|
selector: 'table[cdk-table][columnResize]',
|
|
@@ -614,10 +614,10 @@ class CdkColumnResizeFlex extends ColumnResize {
|
|
|
614
614
|
this.notifier = inject(ColumnResizeNotifierSource);
|
|
615
615
|
this.table = inject(CdkTable);
|
|
616
616
|
}
|
|
617
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
618
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0
|
|
617
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeFlex, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
618
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.0", type: CdkColumnResizeFlex, isStandalone: true, selector: "cdk-table[columnResize]", providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }], usesInheritance: true, ngImport: i0 }); }
|
|
619
619
|
}
|
|
620
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
620
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeFlex, decorators: [{
|
|
621
621
|
type: Directive,
|
|
622
622
|
args: [{
|
|
623
623
|
selector: 'cdk-table[columnResize]',
|
|
@@ -637,11 +637,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
|
637
637
|
* When using this module, columns are not resizable by default.
|
|
638
638
|
*/
|
|
639
639
|
class CdkColumnResizeModule {
|
|
640
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
641
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0
|
|
642
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0
|
|
640
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
641
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeModule, imports: [CdkColumnResize, CdkColumnResizeFlex], exports: [CdkColumnResize, CdkColumnResizeFlex] }); }
|
|
642
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeModule }); }
|
|
643
643
|
}
|
|
644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: CdkColumnResizeModule, decorators: [{
|
|
645
645
|
type: NgModule,
|
|
646
646
|
args: [{
|
|
647
647
|
imports: [CdkColumnResize, CdkColumnResizeFlex],
|
|
@@ -660,10 +660,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
|
660
660
|
* Can be provided by the host application to enable persistence of column resize state.
|
|
661
661
|
*/
|
|
662
662
|
class ColumnSizeStore {
|
|
663
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
664
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0
|
|
663
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnSizeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
664
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnSizeStore }); }
|
|
665
665
|
}
|
|
666
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
666
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ColumnSizeStore, decorators: [{
|
|
667
667
|
type: Injectable
|
|
668
668
|
}] });
|
|
669
669
|
|
|
@@ -869,10 +869,10 @@ class Resizable {
|
|
|
869
869
|
this.elementRef.nativeElement.appendChild(this.inlineHandle);
|
|
870
870
|
});
|
|
871
871
|
}
|
|
872
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
873
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0
|
|
872
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: Resizable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
873
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.0", type: Resizable, isStandalone: true, ngImport: i0 }); }
|
|
874
874
|
}
|
|
875
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
875
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: Resizable, decorators: [{
|
|
876
876
|
type: Directive
|
|
877
877
|
}] });
|
|
878
878
|
|
|
@@ -1038,10 +1038,10 @@ class ResizeOverlayHandle {
|
|
|
1038
1038
|
};
|
|
1039
1039
|
});
|
|
1040
1040
|
}
|
|
1041
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0
|
|
1042
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0
|
|
1041
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResizeOverlayHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1042
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.0", type: ResizeOverlayHandle, isStandalone: true, ngImport: i0 }); }
|
|
1043
1043
|
}
|
|
1044
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0
|
|
1044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResizeOverlayHandle, decorators: [{
|
|
1045
1045
|
type: Directive
|
|
1046
1046
|
}] });
|
|
1047
1047
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxColumnResize.mjs","sources":["../../../projects/extensions/column-resize/selectors.ts","../../../projects/extensions/column-resize/polyfill.ts","../../../projects/extensions/column-resize/column-resize.ts","../../../projects/extensions/column-resize/column-resize-notifier.ts","../../../projects/extensions/column-resize/event-dispatcher.ts","../../../projects/extensions/column-resize/coalesced-style-scheduler.ts","../../../projects/extensions/column-resize/resize-strategy.ts","../../../projects/extensions/column-resize/column-resize-directives/constants.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/column-resize/column-resize-module.ts","../../../projects/extensions/column-resize/column-size-store.ts","../../../projects/extensions/column-resize/resize-ref.ts","../../../projects/extensions/column-resize/resizable.ts","../../../projects/extensions/column-resize/overlay-handle.ts","../../../projects/extensions/column-resize/mtxColumnResize.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.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\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 {\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 { ColumnResizeNotifier, ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { closest } from './polyfill';\n\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\n\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';\nimport { closest } from './polyfill';\n\nimport { HEADER_ROW_SELECTOR } from './selectors';\n\n/** Coordinates events between the column resize directives. */\n@Injectable()\nexport class HeaderRowEventDispatcher {\n 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, InjectionToken, NgZone, inject } from '@angular/core';\n\n/**\n * @docs-private\n */\nexport class _Schedule {\n tasks: (() => unknown)[] = [];\n endTasks: (() => unknown)[] = [];\n}\n\n/** Injection token used to provide a coalesced style scheduler. */\nexport const _COALESCED_STYLE_SCHEDULER = new InjectionToken<_CoalescedStyleScheduler>(\n '_COALESCED_STYLE_SCHEDULER'\n);\n\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\n@Injectable()\nexport class _CoalescedStyleScheduler {\n private _currentSchedule: _Schedule | null = null;\n private _ngZone = inject(NgZone);\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task: () => unknown): void {\n this._createScheduleIfNeeded();\n\n this._currentSchedule!.tasks.push(task);\n }\n\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task: () => unknown): void {\n this._createScheduleIfNeeded();\n\n this._currentSchedule!.endTasks.push(task);\n }\n\n private _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n\n this._currentSchedule = new _Schedule();\n\n this._ngZone.runOutsideAngular(() =>\n // TODO(mmalerba): Scheduling this using something that runs less frequently\n // (e.g. requestAnimationFrame, setTimeout, etc.) causes noticeable jank with the column\n // resizer. We should audit the usages of schedule / scheduleEnd in that component and see\n // if we can refactor it so that we don't need to flush the tasks quite so frequently.\n queueMicrotask(() => {\n while (this._currentSchedule!.tasks.length || this._currentSchedule!.endTasks.length) {\n const schedule = this._currentSchedule!;\n\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n\n for (const task of schedule.tasks) {\n task();\n }\n\n for (const task of schedule.endTasks) {\n task();\n }\n }\n\n this._currentSchedule = null;\n })\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Injectable, OnDestroy, Provider, CSP_NONCE, inject, DOCUMENT } from '@angular/core';\n\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from './column-resize';\nimport { _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler } from './coalesced-style-scheduler';\n\n/**\n * Provides an implementation for resizing a column.\n * The details of how resizing works for tables for flex mat-tables are quite different.\n */\n@Injectable()\nexport abstract class ResizeStrategy {\n protected abstract readonly columnResize: ColumnResize;\n protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n protected abstract readonly table: CdkTable<unknown>;\n\n private _pendingResizeDelta: number | null = null;\n\n /** Updates the width of the specified column. */\n abstract applyColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n sizeInPx: number,\n previousSizeInPx?: number\n ): void;\n\n /** Applies a minimum width to the specified column, updating its current width as needed. */\n abstract applyMinColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n minSizeInPx: number\n ): void;\n\n /** Applies a maximum width to the specified column, updating its current width as needed. */\n abstract applyMaxColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n minSizeInPx: number\n ): void;\n\n /** Adjusts the width of the table element by the specified delta. */\n protected updateTableWidthAndStickyColumns(delta: number): void {\n if (this._pendingResizeDelta === null) {\n const tableElement = this.columnResize.elementRef.nativeElement;\n const tableWidth = this.getElementWidth(tableElement);\n\n this.styleScheduler.schedule(() => {\n tableElement.style.width = coerceCssPixelValue(tableWidth + this._pendingResizeDelta!);\n\n this._pendingResizeDelta = null;\n });\n\n this.styleScheduler.scheduleEnd(() => {\n this.table.updateStickyColumnStyles();\n });\n }\n\n this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;\n }\n\n /** 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 coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\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 ngOnDestroy(): void {\n this._styleElement?.remove();\n this._styleElement = undefined;\n }\n\n private _getPropertyValue(cssFriendlyColumnName: string, key: string): string | undefined {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n return properties.get(key);\n }\n\n private _getAppliedWidth(cssFriendslyColumnName: string): number {\n return coercePixelsFromFlexValue(this._getPropertyValue(cssFriendslyColumnName, 'flex'));\n }\n\n private _applyProperty(\n cssFriendlyColumnName: string,\n key: string,\n value: string,\n enable = true\n ): void {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n\n this.styleScheduler.schedule(() => {\n if (enable) {\n properties.set(key, value);\n } else {\n properties.delete(key);\n }\n this._applySizeCss(cssFriendlyColumnName);\n });\n }\n\n private _getStyleSheet(): CSSStyleSheet {\n if (!this._styleElement) {\n this._styleElement = this._document.createElement('style');\n\n if (this._nonce) {\n this._styleElement.setAttribute('nonce', this._nonce);\n }\n\n this._styleElement.appendChild(this._document.createTextNode(''));\n this._document.head.appendChild(this._styleElement);\n }\n\n return this._styleElement.sheet as CSSStyleSheet;\n }\n\n private _getColumnPropertiesMap(cssFriendlyColumnName: string): Map<string, string> {\n let properties = this._columnProperties.get(cssFriendlyColumnName);\n if (properties === undefined) {\n properties = new Map<string, string>();\n this._columnProperties.set(cssFriendlyColumnName, properties);\n }\n return properties;\n }\n\n private _applySizeCss(cssFriendlyColumnName: string) {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n const propertyKeys = Array.from(properties.keys());\n\n let index = this._columnIndexes.get(cssFriendlyColumnName);\n if (index === undefined) {\n if (!propertyKeys.length) {\n // Nothing to set or unset.\n return;\n }\n\n index = this._indexSequence++;\n this._columnIndexes.set(cssFriendlyColumnName, index);\n } else {\n this._getStyleSheet().deleteRule(index);\n }\n\n const columnClassName = this.getColumnCssClass(cssFriendlyColumnName);\n const tableClassName = this.columnResize.getUniqueCssClass();\n\n const selector = `.${tableClassName} .${columnClassName}`;\n const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');\n\n this._getStyleSheet().insertRule(`${selector} {${body}}`, index!);\n }\n}\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nfunction coercePixelsFromCssValue(cssValue: string): number {\n return Number(cssValue.match(/(\\d+)px/)?.[1]);\n}\n\n/**\n * Converts CSS flex values as set in CdkFlexTableResizeStrategy to numbers,\n * eg \"0 0.01 123px\" to 123.\n */\nfunction coercePixelsFromFlexValue(flexValue: string | undefined): number {\n return Number(flexValue?.match(/0 0\\.01 (\\d+)px/)?.[1]);\n}\n\nexport const TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: TableLayoutFixedResizeStrategy,\n};\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: CdkFlexTableResizeStrategy,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Provider } from '@angular/core';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport {\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\nimport { _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler } from '../coalesced-style-scheduler';\n\nconst PROVIDERS: Provider[] = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n];\n\nexport const TABLE_PROVIDERS: Provider[] = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { TABLE_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a table-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'table[cdk-table][columnResize]',\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }],\n})\nexport class CdkColumnResize extends ColumnResize {\n readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n protected readonly ngZone = inject(NgZone);\n protected readonly notifier = inject(ColumnResizeNotifierSource);\n protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { FLEX_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a flexbox-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'cdk-table[columnResize]',\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }],\n})\nexport class CdkColumnResizeFlex extends ColumnResize {\n readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n protected readonly ngZone = inject(NgZone);\n protected readonly notifier = inject(ColumnResizeNotifierSource);\n protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { CdkColumnResize } from './column-resize-directives/column-resize';\nimport { CdkColumnResizeFlex } from './column-resize-directives/column-resize-flex';\n\n/**\n * One of two NgModules for use with CdkColumnResize.\n * When using this module, columns are not resizable by default.\n */\n@NgModule({\n imports: [CdkColumnResize, CdkColumnResizeFlex],\n exports: [CdkColumnResize, CdkColumnResizeFlex],\n})\nexport class CdkColumnResizeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.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","import { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { _CoalescedStyleScheduler } from './coalesced-style-scheduler';\nimport { ColumnResize } from './column-resize';\nimport { ColumnResizeNotifierSource, ColumnSizeAction } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeOverlayHandle } from './overlay-handle';\nimport { closest } from './polyfill';\nimport { ResizeRef } from './resize-ref';\nimport { ResizeStrategy } from './resize-strategy';\nimport { HEADER_ROW_SELECTOR } from './selectors';\n\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\n\n/**\n * Base class for Resizable directives which are applied to column headers to make those columns\n * resizable.\n */\n@Directive()\nexport abstract class Resizable<HandleComponent extends ResizeOverlayHandle>\n implements AfterViewInit, OnDestroy\n{\n protected isResizable = true;\n\n protected minWidthPxInternal: number = 0;\n protected maxWidthPxInternal: number = Number.MAX_SAFE_INTEGER;\n\n protected inlineHandle?: HTMLElement;\n protected overlayRef?: OverlayRef;\n protected readonly destroyed = new Subject<void>();\n\n protected abstract readonly columnDef: CdkColumnDef;\n protected abstract readonly columnResize: ColumnResize;\n protected abstract readonly directionality: Directionality;\n protected abstract readonly document: Document;\n protected abstract readonly elementRef: ElementRef;\n protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\n protected abstract readonly injector: Injector;\n protected abstract readonly ngZone: NgZone;\n protected abstract readonly overlay: Overlay;\n protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\n protected abstract readonly resizeStrategy: ResizeStrategy;\n protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n protected abstract readonly viewContainerRef: ViewContainerRef;\n protected abstract readonly changeDetectorRef: ChangeDetectorRef;\n\n private _viewInitialized = false;\n private _isDestroyed = false;\n\n /** The minimum width to allow the column to be sized to. */\n get minWidthPx(): number {\n return this.minWidthPxInternal;\n }\n set minWidthPx(value: number) {\n if (value) {\n this.minWidthPxInternal = value;\n }\n\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMinWidthPx();\n }\n }\n\n /** The maximum width to allow the column to be sized to. */\n get maxWidthPx(): number {\n return this.maxWidthPxInternal;\n }\n set maxWidthPx(value: number) {\n if (value) {\n this.maxWidthPxInternal = value;\n }\n\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMaxWidthPx();\n }\n }\n\n ngAfterViewInit() {\n if (this.isResizable) {\n this._listenForRowHoverEvents();\n this._listenForResizeEvents();\n this._appendInlineHandle();\n\n this.styleScheduler.scheduleEnd(() => {\n if (this._isDestroyed) return;\n this._viewInitialized = true;\n this._applyMinWidthPx();\n this._applyMaxWidthPx();\n });\n }\n }\n\n ngOnDestroy(): void {\n this._isDestroyed = true;\n this.destroyed.next();\n this.destroyed.complete();\n this.inlineHandle?.remove();\n this.overlayRef?.dispose();\n }\n\n protected abstract getInlineHandleCssClassName(): string;\n\n protected abstract getOverlayHandleComponentType(): Type<HandleComponent>;\n\n private _createOverlayForHandle(): OverlayRef {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n\n const isRtl = this.directionality.value === 'rtl';\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withDefaultOffsetX(isRtl ? 1 : 0)\n .withPositions([\n {\n originX: isRtl ? 'start' : 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top',\n },\n ]);\n\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n direction: 'ltr',\n disposeOnNavigation: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: '16px',\n });\n }\n\n private _listenForRowHoverEvents(): void {\n const element = this.elementRef.nativeElement;\n const takeUntilDestroyed = takeUntil<boolean>(this.destroyed);\n\n this.eventDispatcher\n .resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR)!)\n .pipe(takeUntilDestroyed)\n .subscribe(hoveringRow => {\n if (hoveringRow) {\n if (!this.overlayRef) {\n this.overlayRef = this._createOverlayForHandle();\n }\n\n this._showHandleOverlay();\n } else if (this.overlayRef) {\n // todo - can't detach during an active resize - need to work that out\n this.overlayRef.detach();\n }\n });\n }\n\n private _listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroyed);\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(\n takeUntilDestroyed,\n filter(columnSize => columnSize.columnId === this.columnDef.name)\n )\n .subscribe(({ size, previousSize, completeImmediately }) => {\n this.elementRef.nativeElement.classList.add(OVERLAY_ACTIVE_CLASS);\n this._applySize(size, previousSize);\n\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n });\n }\n\n private _completeResizeOperation(): void {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n columnId: this.columnDef.name,\n size: this.elementRef.nativeElement.offsetWidth,\n });\n });\n }\n\n private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n this.elementRef.nativeElement.classList.remove(OVERLAY_ACTIVE_CLASS);\n\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this._updateOverlayHandleHeight();\n this.overlayRef.updatePosition();\n\n if (columnSize.columnId === this.columnDef.name) {\n this.inlineHandle!.focus();\n }\n }\n }\n\n private _createHandlePortal(): ComponentPortal<HandleComponent> {\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: ResizeRef,\n useValue: new ResizeRef(\n this.elementRef,\n this.overlayRef!,\n this.minWidthPx,\n this.maxWidthPx\n ),\n },\n ],\n });\n\n return new ComponentPortal(\n this.getOverlayHandleComponentType(),\n this.viewContainerRef,\n injector\n );\n }\n\n private _showHandleOverlay(): void {\n this._updateOverlayHandleHeight();\n this.overlayRef!.attach(this._createHandlePortal());\n\n // Needed to ensure that all of the lifecycle hooks inside the overlay run immediately.\n this.changeDetectorRef.markForCheck();\n }\n\n private _updateOverlayHandleHeight() {\n this.overlayRef!.updateSize({ height: this.elementRef.nativeElement.offsetHeight });\n }\n\n private _applySize(sizeInPixels: number, previousSize?: number): void {\n const sizeToApply = Math.min(Math.max(sizeInPixels, this.minWidthPx, 0), this.maxWidthPx);\n\n this.resizeStrategy.applyColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n sizeToApply,\n previousSize\n );\n }\n\n private _applyMinWidthPx(): void {\n this.resizeStrategy.applyMinColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n this.minWidthPx\n );\n }\n\n private _applyMaxWidthPx(): void {\n this.resizeStrategy.applyMaxColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n this.maxWidthPx\n );\n }\n\n private _appendInlineHandle(): void {\n this.styleScheduler.schedule(() => {\n this.inlineHandle = this.document.createElement('div');\n this.inlineHandle.tabIndex = 0;\n this.inlineHandle.className = this.getInlineHandleCssClassName();\n\n // TODO: Apply correct aria role (probably slider) after a11y spec questions resolved.\n\n this.elementRef.nativeElement.appendChild(this.inlineHandle);\n });\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n OnDestroy,\n NgZone,\n Renderer2,\n inject,\n} from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { Subject, merge, Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n mapTo,\n pairwise,\n startWith,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { HEADER_CELL_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeRef } from './resize-ref';\nimport { _CoalescedStyleScheduler } from './coalesced-style-scheduler';\nimport { closest } from './polyfill';\n\n// TODO: Take another look at using cdk drag drop. IIRC I ran into a couple\n// good reasons for not using it but I don't remember what they were at this point.\n/**\n * Base class for a component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying any visible UI on the column edge.\n */\n@Directive()\nexport abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {\n 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxColumnResize.mjs","sources":["../../../projects/extensions/column-resize/selectors.ts","../../../projects/extensions/column-resize/polyfill.ts","../../../projects/extensions/column-resize/column-resize.ts","../../../projects/extensions/column-resize/column-resize-notifier.ts","../../../projects/extensions/column-resize/event-dispatcher.ts","../../../projects/extensions/column-resize/coalesced-style-scheduler.ts","../../../projects/extensions/column-resize/resize-strategy.ts","../../../projects/extensions/column-resize/column-resize-directives/constants.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/column-resize/column-resize-module.ts","../../../projects/extensions/column-resize/column-size-store.ts","../../../projects/extensions/column-resize/resize-ref.ts","../../../projects/extensions/column-resize/resizable.ts","../../../projects/extensions/column-resize/overlay-handle.ts","../../../projects/extensions/column-resize/mtxColumnResize.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.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\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 {\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 { ColumnResizeNotifier, ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { closest } from './polyfill';\n\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\n\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';\nimport { closest } from './polyfill';\n\nimport { HEADER_ROW_SELECTOR } from './selectors';\n\n/** Coordinates events between the column resize directives. */\n@Injectable()\nexport class HeaderRowEventDispatcher {\n 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, InjectionToken, NgZone, inject } from '@angular/core';\n\n/**\n * @docs-private\n */\nexport class _Schedule {\n tasks: (() => unknown)[] = [];\n endTasks: (() => unknown)[] = [];\n}\n\n/** Injection token used to provide a coalesced style scheduler. */\nexport const _COALESCED_STYLE_SCHEDULER = new InjectionToken<_CoalescedStyleScheduler>(\n '_COALESCED_STYLE_SCHEDULER'\n);\n\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\n@Injectable()\nexport class _CoalescedStyleScheduler {\n private _currentSchedule: _Schedule | null = null;\n private _ngZone = inject(NgZone);\n\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task: () => unknown): void {\n this._createScheduleIfNeeded();\n\n this._currentSchedule!.tasks.push(task);\n }\n\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task: () => unknown): void {\n this._createScheduleIfNeeded();\n\n this._currentSchedule!.endTasks.push(task);\n }\n\n private _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n\n this._currentSchedule = new _Schedule();\n\n this._ngZone.runOutsideAngular(() =>\n // TODO(mmalerba): Scheduling this using something that runs less frequently\n // (e.g. requestAnimationFrame, setTimeout, etc.) causes noticeable jank with the column\n // resizer. We should audit the usages of schedule / scheduleEnd in that component and see\n // if we can refactor it so that we don't need to flush the tasks quite so frequently.\n queueMicrotask(() => {\n while (this._currentSchedule!.tasks.length || this._currentSchedule!.endTasks.length) {\n const schedule = this._currentSchedule!;\n\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n\n for (const task of schedule.tasks) {\n task();\n }\n\n for (const task of schedule.endTasks) {\n task();\n }\n }\n\n this._currentSchedule = null;\n })\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Injectable, OnDestroy, Provider, CSP_NONCE, inject, DOCUMENT } from '@angular/core';\n\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from './column-resize';\nimport { _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler } from './coalesced-style-scheduler';\n\n/**\n * Provides an implementation for resizing a column.\n * The details of how resizing works for tables for flex mat-tables are quite different.\n */\n@Injectable()\nexport abstract class ResizeStrategy {\n protected abstract readonly columnResize: ColumnResize;\n protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n protected abstract readonly table: CdkTable<unknown>;\n\n private _pendingResizeDelta: number | null = null;\n\n /** Updates the width of the specified column. */\n abstract applyColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n sizeInPx: number,\n previousSizeInPx?: number\n ): void;\n\n /** Applies a minimum width to the specified column, updating its current width as needed. */\n abstract applyMinColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n minSizeInPx: number\n ): void;\n\n /** Applies a maximum width to the specified column, updating its current width as needed. */\n abstract applyMaxColumnSize(\n cssFriendlyColumnName: string,\n columnHeader: HTMLElement,\n minSizeInPx: number\n ): void;\n\n /** Adjusts the width of the table element by the specified delta. */\n protected updateTableWidthAndStickyColumns(delta: number): void {\n if (this._pendingResizeDelta === null) {\n const tableElement = this.columnResize.elementRef.nativeElement;\n const tableWidth = this.getElementWidth(tableElement);\n\n this.styleScheduler.schedule(() => {\n tableElement.style.width = coerceCssPixelValue(tableWidth + this._pendingResizeDelta!);\n\n this._pendingResizeDelta = null;\n });\n\n this.styleScheduler.scheduleEnd(() => {\n this.table.updateStickyColumnStyles();\n });\n }\n\n this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;\n }\n\n /** 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 coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\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 ngOnDestroy(): void {\n this._styleElement?.remove();\n this._styleElement = undefined;\n }\n\n private _getPropertyValue(cssFriendlyColumnName: string, key: string): string | undefined {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n return properties.get(key);\n }\n\n private _getAppliedWidth(cssFriendslyColumnName: string): number {\n return coercePixelsFromFlexValue(this._getPropertyValue(cssFriendslyColumnName, 'flex'));\n }\n\n private _applyProperty(\n cssFriendlyColumnName: string,\n key: string,\n value: string,\n enable = true\n ): void {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n\n this.styleScheduler.schedule(() => {\n if (enable) {\n properties.set(key, value);\n } else {\n properties.delete(key);\n }\n this._applySizeCss(cssFriendlyColumnName);\n });\n }\n\n private _getStyleSheet(): CSSStyleSheet {\n if (!this._styleElement) {\n this._styleElement = this._document.createElement('style');\n\n if (this._nonce) {\n this._styleElement.setAttribute('nonce', this._nonce);\n }\n\n this._styleElement.appendChild(this._document.createTextNode(''));\n this._document.head.appendChild(this._styleElement);\n }\n\n return this._styleElement.sheet as CSSStyleSheet;\n }\n\n private _getColumnPropertiesMap(cssFriendlyColumnName: string): Map<string, string> {\n let properties = this._columnProperties.get(cssFriendlyColumnName);\n if (properties === undefined) {\n properties = new Map<string, string>();\n this._columnProperties.set(cssFriendlyColumnName, properties);\n }\n return properties;\n }\n\n private _applySizeCss(cssFriendlyColumnName: string) {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n const propertyKeys = Array.from(properties.keys());\n\n let index = this._columnIndexes.get(cssFriendlyColumnName);\n if (index === undefined) {\n if (!propertyKeys.length) {\n // Nothing to set or unset.\n return;\n }\n\n index = this._indexSequence++;\n this._columnIndexes.set(cssFriendlyColumnName, index);\n } else {\n this._getStyleSheet().deleteRule(index);\n }\n\n const columnClassName = this.getColumnCssClass(cssFriendlyColumnName);\n const tableClassName = this.columnResize.getUniqueCssClass();\n\n const selector = `.${tableClassName} .${columnClassName}`;\n const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');\n\n this._getStyleSheet().insertRule(`${selector} {${body}}`, index!);\n }\n}\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nfunction coercePixelsFromCssValue(cssValue: string): number {\n return Number(cssValue.match(/(\\d+)px/)?.[1]);\n}\n\n/**\n * Converts CSS flex values as set in CdkFlexTableResizeStrategy to numbers,\n * eg \"0 0.01 123px\" to 123.\n */\nfunction coercePixelsFromFlexValue(flexValue: string | undefined): number {\n return Number(flexValue?.match(/0 0\\.01 (\\d+)px/)?.[1]);\n}\n\nexport const TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: TableLayoutFixedResizeStrategy,\n};\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: CdkFlexTableResizeStrategy,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Provider } from '@angular/core';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport {\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\nimport { _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler } from '../coalesced-style-scheduler';\n\nconst PROVIDERS: Provider[] = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n];\n\nexport const TABLE_PROVIDERS: Provider[] = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { TABLE_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a table-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'table[cdk-table][columnResize]',\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }],\n})\nexport class CdkColumnResize extends ColumnResize {\n readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n protected readonly ngZone = inject(NgZone);\n protected readonly notifier = inject(ColumnResizeNotifierSource);\n protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { CdkTable } from '@angular/cdk/table';\n\nimport { ColumnResize } from '../column-resize';\nimport { ColumnResizeNotifier, ColumnResizeNotifierSource } from '../column-resize-notifier';\nimport { HeaderRowEventDispatcher } from '../event-dispatcher';\nimport { FLEX_PROVIDERS } from './constants';\n\n/**\n * Explicitly enables column resizing for a flexbox-based cdk-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'cdk-table[columnResize]',\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }],\n})\nexport class CdkColumnResizeFlex extends ColumnResize {\n readonly columnResizeNotifier = inject(ColumnResizeNotifier);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly eventDispatcher = inject(HeaderRowEventDispatcher);\n protected readonly ngZone = inject(NgZone);\n protected readonly notifier = inject(ColumnResizeNotifierSource);\n protected readonly table = inject<CdkTable<unknown>>(CdkTable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { CdkColumnResize } from './column-resize-directives/column-resize';\nimport { CdkColumnResizeFlex } from './column-resize-directives/column-resize-flex';\n\n/**\n * One of two NgModules for use with CdkColumnResize.\n * When using this module, columns are not resizable by default.\n */\n@NgModule({\n imports: [CdkColumnResize, CdkColumnResizeFlex],\n exports: [CdkColumnResize, CdkColumnResizeFlex],\n})\nexport class CdkColumnResizeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.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","import { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { _CoalescedStyleScheduler } from './coalesced-style-scheduler';\nimport { ColumnResize } from './column-resize';\nimport { ColumnResizeNotifierSource, ColumnSizeAction } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeOverlayHandle } from './overlay-handle';\nimport { closest } from './polyfill';\nimport { ResizeRef } from './resize-ref';\nimport { ResizeStrategy } from './resize-strategy';\nimport { HEADER_ROW_SELECTOR } from './selectors';\n\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\n\n/**\n * Base class for Resizable directives which are applied to column headers to make those columns\n * resizable.\n */\n@Directive()\nexport abstract class Resizable<HandleComponent extends ResizeOverlayHandle>\n implements AfterViewInit, OnDestroy\n{\n protected isResizable = true;\n\n protected minWidthPxInternal: number = 0;\n protected maxWidthPxInternal: number = Number.MAX_SAFE_INTEGER;\n\n protected inlineHandle?: HTMLElement;\n protected overlayRef?: OverlayRef;\n protected readonly destroyed = new Subject<void>();\n\n protected abstract readonly columnDef: CdkColumnDef;\n protected abstract readonly columnResize: ColumnResize;\n protected abstract readonly directionality: Directionality;\n protected abstract readonly document: Document;\n protected abstract readonly elementRef: ElementRef;\n protected abstract readonly eventDispatcher: HeaderRowEventDispatcher;\n protected abstract readonly injector: Injector;\n protected abstract readonly ngZone: NgZone;\n protected abstract readonly overlay: Overlay;\n protected abstract readonly resizeNotifier: ColumnResizeNotifierSource;\n protected abstract readonly resizeStrategy: ResizeStrategy;\n protected abstract readonly styleScheduler: _CoalescedStyleScheduler;\n protected abstract readonly viewContainerRef: ViewContainerRef;\n protected abstract readonly changeDetectorRef: ChangeDetectorRef;\n\n private _viewInitialized = false;\n private _isDestroyed = false;\n\n /** The minimum width to allow the column to be sized to. */\n get minWidthPx(): number {\n return this.minWidthPxInternal;\n }\n set minWidthPx(value: number) {\n if (value) {\n this.minWidthPxInternal = value;\n }\n\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMinWidthPx();\n }\n }\n\n /** The maximum width to allow the column to be sized to. */\n get maxWidthPx(): number {\n return this.maxWidthPxInternal;\n }\n set maxWidthPx(value: number) {\n if (value) {\n this.maxWidthPxInternal = value;\n }\n\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMaxWidthPx();\n }\n }\n\n ngAfterViewInit() {\n if (this.isResizable) {\n this._listenForRowHoverEvents();\n this._listenForResizeEvents();\n this._appendInlineHandle();\n\n this.styleScheduler.scheduleEnd(() => {\n if (this._isDestroyed) return;\n this._viewInitialized = true;\n this._applyMinWidthPx();\n this._applyMaxWidthPx();\n });\n }\n }\n\n ngOnDestroy(): void {\n this._isDestroyed = true;\n this.destroyed.next();\n this.destroyed.complete();\n this.inlineHandle?.remove();\n this.overlayRef?.dispose();\n }\n\n protected abstract getInlineHandleCssClassName(): string;\n\n protected abstract getOverlayHandleComponentType(): Type<HandleComponent>;\n\n private _createOverlayForHandle(): OverlayRef {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n\n const isRtl = this.directionality.value === 'rtl';\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withDefaultOffsetX(isRtl ? 1 : 0)\n .withPositions([\n {\n originX: isRtl ? 'start' : 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top',\n },\n ]);\n\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n direction: 'ltr',\n disposeOnNavigation: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: '16px',\n });\n }\n\n private _listenForRowHoverEvents(): void {\n const element = this.elementRef.nativeElement;\n const takeUntilDestroyed = takeUntil<boolean>(this.destroyed);\n\n this.eventDispatcher\n .resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR)!)\n .pipe(takeUntilDestroyed)\n .subscribe(hoveringRow => {\n if (hoveringRow) {\n if (!this.overlayRef) {\n this.overlayRef = this._createOverlayForHandle();\n }\n\n this._showHandleOverlay();\n } else if (this.overlayRef) {\n // todo - can't detach during an active resize - need to work that out\n this.overlayRef.detach();\n }\n });\n }\n\n private _listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroyed);\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(\n takeUntilDestroyed,\n filter(columnSize => columnSize.columnId === this.columnDef.name)\n )\n .subscribe(({ size, previousSize, completeImmediately }) => {\n this.elementRef.nativeElement.classList.add(OVERLAY_ACTIVE_CLASS);\n this._applySize(size, previousSize);\n\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n });\n }\n\n private _completeResizeOperation(): void {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n columnId: this.columnDef.name,\n size: this.elementRef.nativeElement.offsetWidth,\n });\n });\n }\n\n private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n this.elementRef.nativeElement.classList.remove(OVERLAY_ACTIVE_CLASS);\n\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this._updateOverlayHandleHeight();\n this.overlayRef.updatePosition();\n\n if (columnSize.columnId === this.columnDef.name) {\n this.inlineHandle!.focus();\n }\n }\n }\n\n private _createHandlePortal(): ComponentPortal<HandleComponent> {\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: ResizeRef,\n useValue: new ResizeRef(\n this.elementRef,\n this.overlayRef!,\n this.minWidthPx,\n this.maxWidthPx\n ),\n },\n ],\n });\n\n return new ComponentPortal(\n this.getOverlayHandleComponentType(),\n this.viewContainerRef,\n injector\n );\n }\n\n private _showHandleOverlay(): void {\n this._updateOverlayHandleHeight();\n this.overlayRef!.attach(this._createHandlePortal());\n\n // Needed to ensure that all of the lifecycle hooks inside the overlay run immediately.\n this.changeDetectorRef.markForCheck();\n }\n\n private _updateOverlayHandleHeight() {\n this.overlayRef!.updateSize({ height: this.elementRef.nativeElement.offsetHeight });\n }\n\n private _applySize(sizeInPixels: number, previousSize?: number): void {\n const sizeToApply = Math.min(Math.max(sizeInPixels, this.minWidthPx, 0), this.maxWidthPx);\n\n this.resizeStrategy.applyColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n sizeToApply,\n previousSize\n );\n }\n\n private _applyMinWidthPx(): void {\n this.resizeStrategy.applyMinColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n this.minWidthPx\n );\n }\n\n private _applyMaxWidthPx(): void {\n this.resizeStrategy.applyMaxColumnSize(\n this.columnDef.cssClassFriendlyName,\n this.elementRef.nativeElement,\n this.maxWidthPx\n );\n }\n\n private _appendInlineHandle(): void {\n this.styleScheduler.schedule(() => {\n this.inlineHandle = this.document.createElement('div');\n this.inlineHandle.tabIndex = 0;\n this.inlineHandle.className = this.getInlineHandleCssClassName();\n\n // TODO: Apply correct aria role (probably slider) after a11y spec questions resolved.\n\n this.elementRef.nativeElement.appendChild(this.inlineHandle);\n });\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n OnDestroy,\n NgZone,\n Renderer2,\n inject,\n} from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { Subject, merge, Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n mapTo,\n pairwise,\n startWith,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { HEADER_CELL_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { HeaderRowEventDispatcher } from './event-dispatcher';\nimport { ResizeRef } from './resize-ref';\nimport { _CoalescedStyleScheduler } from './coalesced-style-scheduler';\nimport { closest } from './polyfill';\n\n// TODO: Take another look at using cdk drag drop. IIRC I ran into a couple\n// good reasons for not using it but I don't remember what they were at this point.\n/**\n * Base class for a component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying any visible UI on the column edge.\n */\n@Directive()\nexport abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {\n 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|