@angular/cdk-experimental 19.0.0-next.1 → 19.0.0-next.3

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.
Files changed (80) hide show
  1. package/column-resize/index.d.ts +2 -9
  2. package/combobox/index.d.ts +5 -11
  3. package/fesm2022/cdk-experimental.mjs +1 -1
  4. package/fesm2022/cdk-experimental.mjs.map +1 -1
  5. package/fesm2022/column-resize.mjs +109 -124
  6. package/fesm2022/column-resize.mjs.map +1 -1
  7. package/fesm2022/combobox.mjs +38 -47
  8. package/fesm2022/combobox.mjs.map +1 -1
  9. package/fesm2022/popover-edit.mjs +121 -125
  10. package/fesm2022/popover-edit.mjs.map +1 -1
  11. package/fesm2022/scrolling.mjs +7 -7
  12. package/fesm2022/selection.mjs +43 -76
  13. package/fesm2022/selection.mjs.map +1 -1
  14. package/fesm2022/table-scroll-container.mjs +17 -30
  15. package/fesm2022/table-scroll-container.mjs.map +1 -1
  16. package/package.json +2 -16
  17. package/popover-edit/index.d.ts +11 -19
  18. package/selection/index.d.ts +6 -10
  19. package/table-scroll-container/index.d.ts +3 -6
  20. package/esm2022/column-resize/column-resize-directives/column-resize-flex.mjs +0 -43
  21. package/esm2022/column-resize/column-resize-directives/column-resize.mjs +0 -43
  22. package/esm2022/column-resize/column-resize-directives/constants.mjs +0 -21
  23. package/esm2022/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +0 -49
  24. package/esm2022/column-resize/column-resize-directives/default-enabled-column-resize.mjs +0 -49
  25. package/esm2022/column-resize/column-resize-module.mjs +0 -46
  26. package/esm2022/column-resize/column-resize-notifier.mjs +0 -52
  27. package/esm2022/column-resize/column-resize.mjs +0 -82
  28. package/esm2022/column-resize/column-resize_public_index.mjs +0 -5
  29. package/esm2022/column-resize/column-size-store.mjs +0 -20
  30. package/esm2022/column-resize/event-dispatcher.mjs +0 -70
  31. package/esm2022/column-resize/index.mjs +0 -9
  32. package/esm2022/column-resize/overlay-handle.mjs +0 -146
  33. package/esm2022/column-resize/public-api.mjs +0 -21
  34. package/esm2022/column-resize/resizable.mjs +0 -199
  35. package/esm2022/column-resize/resize-ref.mjs +0 -17
  36. package/esm2022/column-resize/resize-strategy.mjs +0 -239
  37. package/esm2022/column-resize/selectors.mjs +0 -13
  38. package/esm2022/combobox/combobox-module.mjs +0 -26
  39. package/esm2022/combobox/combobox-popup.mjs +0 -73
  40. package/esm2022/combobox/combobox.mjs +0 -281
  41. package/esm2022/combobox/combobox_public_index.mjs +0 -5
  42. package/esm2022/combobox/index.mjs +0 -9
  43. package/esm2022/combobox/public-api.mjs +0 -11
  44. package/esm2022/index.mjs +0 -9
  45. package/esm2022/popover-edit/constants.mjs +0 -20
  46. package/esm2022/popover-edit/edit-event-dispatcher.mjs +0 -227
  47. package/esm2022/popover-edit/edit-ref.mjs +0 -83
  48. package/esm2022/popover-edit/edit-services.mjs +0 -45
  49. package/esm2022/popover-edit/focus-dispatcher.mjs +0 -82
  50. package/esm2022/popover-edit/focus-escape-notifier.mjs +0 -69
  51. package/esm2022/popover-edit/form-value-container.mjs +0 -33
  52. package/esm2022/popover-edit/index.mjs +0 -9
  53. package/esm2022/popover-edit/lens-directives.mjs +0 -185
  54. package/esm2022/popover-edit/polyfill.mjs +0 -19
  55. package/esm2022/popover-edit/popover-edit-module.mjs +0 -49
  56. package/esm2022/popover-edit/popover-edit_public_index.mjs +0 -5
  57. package/esm2022/popover-edit/public-api.mjs +0 -18
  58. package/esm2022/popover-edit/table-directives.mjs +0 -441
  59. package/esm2022/public-api.mjs +0 -9
  60. package/esm2022/scrolling/auto-size-virtual-scroll.mjs +0 -422
  61. package/esm2022/scrolling/index.mjs +0 -9
  62. package/esm2022/scrolling/public-api.mjs +0 -10
  63. package/esm2022/scrolling/scrolling-module.mjs +0 -23
  64. package/esm2022/scrolling/scrolling_public_index.mjs +0 -5
  65. package/esm2022/selection/index.mjs +0 -9
  66. package/esm2022/selection/public-api.mjs +0 -15
  67. package/esm2022/selection/row-selection.mjs +0 -52
  68. package/esm2022/selection/select-all.mjs +0 -101
  69. package/esm2022/selection/selection-column.mjs +0 -147
  70. package/esm2022/selection/selection-module.mjs +0 -44
  71. package/esm2022/selection/selection-set.mjs +0 -80
  72. package/esm2022/selection/selection-toggle.mjs +0 -101
  73. package/esm2022/selection/selection.mjs +0 -187
  74. package/esm2022/selection/selection_public_index.mjs +0 -5
  75. package/esm2022/table-scroll-container/index.mjs +0 -9
  76. package/esm2022/table-scroll-container/public-api.mjs +0 -10
  77. package/esm2022/table-scroll-container/table-scroll-container-module.mjs +0 -23
  78. package/esm2022/table-scroll-container/table-scroll-container.mjs +0 -141
  79. package/esm2022/table-scroll-container/table-scroll-container_public_index.mjs +0 -5
  80. package/esm2022/version.mjs +0 -11
@@ -1,187 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
9
- import { isDataSource } from '@angular/cdk/collections';
10
- import { Directive, EventEmitter, Input, Output, } from '@angular/core';
11
- import { Observable, of as observableOf, Subject } from 'rxjs';
12
- import { takeUntil } from 'rxjs/operators';
13
- import { SelectionSet } from './selection-set';
14
- import * as i0 from "@angular/core";
15
- /**
16
- * Manages the selection states of the items and provides methods to check and update the selection
17
- * states.
18
- * It must be applied to the parent element if `cdkSelectionToggle`, `cdkSelectAll`,
19
- * `cdkRowSelection` and `cdkSelectionColumn` are applied.
20
- */
21
- export class CdkSelection {
22
- constructor() {
23
- /** Emits when selection changes. */
24
- this.change = new EventEmitter();
25
- this._destroyed = new Subject();
26
- this.selectAllState = 'none';
27
- }
28
- get dataSource() {
29
- return this._dataSource;
30
- }
31
- set dataSource(dataSource) {
32
- if (this._dataSource !== dataSource) {
33
- this._switchDataSource(dataSource);
34
- }
35
- }
36
- /** Whether to support multiple selection */
37
- get multiple() {
38
- return this._multiple;
39
- }
40
- set multiple(multiple) {
41
- this._multiple = coerceBooleanProperty(multiple);
42
- }
43
- _switchDataSource(dataSource) {
44
- this._data = [];
45
- // TODO: Move this logic to a shared function in `cdk/collections`.
46
- if (isDataSource(this._dataSource)) {
47
- this._dataSource.disconnect(this);
48
- }
49
- if (this._renderChangeSubscription) {
50
- this._renderChangeSubscription.unsubscribe();
51
- this._renderChangeSubscription = null;
52
- }
53
- this._dataSource = dataSource;
54
- }
55
- _observeRenderChanges() {
56
- if (!this._dataSource) {
57
- return;
58
- }
59
- let dataStream;
60
- if (isDataSource(this._dataSource)) {
61
- dataStream = this._dataSource.connect(this);
62
- }
63
- else if (this._dataSource instanceof Observable) {
64
- dataStream = this._dataSource;
65
- }
66
- else if (Array.isArray(this._dataSource)) {
67
- dataStream = observableOf(this._dataSource);
68
- }
69
- if (dataStream == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {
70
- throw Error('Unknown data source');
71
- }
72
- this._renderChangeSubscription = dataStream
73
- .pipe(takeUntil(this._destroyed))
74
- .subscribe(data => {
75
- this._data = data || [];
76
- });
77
- }
78
- ngOnInit() {
79
- this._selection = new SelectionSet(this._multiple, this.trackByFn);
80
- this._selection.changed.pipe(takeUntil(this._destroyed)).subscribe(change => {
81
- this._updateSelectAllState();
82
- this.change.emit(change);
83
- });
84
- }
85
- ngAfterContentChecked() {
86
- if (this._dataSource && !this._renderChangeSubscription) {
87
- this._observeRenderChanges();
88
- }
89
- }
90
- ngOnDestroy() {
91
- this._destroyed.next();
92
- this._destroyed.complete();
93
- if (isDataSource(this._dataSource)) {
94
- this._dataSource.disconnect(this);
95
- }
96
- }
97
- /** Toggles selection for a given value. `index` is required if `trackBy` is used. */
98
- toggleSelection(value, index) {
99
- if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {
100
- throw Error('CdkSelection: index required when trackBy is used');
101
- }
102
- if (this.isSelected(value, index)) {
103
- this._selection.deselect({ value, index });
104
- }
105
- else {
106
- this._selection.select({ value, index });
107
- }
108
- }
109
- /**
110
- * Toggles select-all. If no value is selected, select all values. If all values or some of the
111
- * values are selected, de-select all values.
112
- */
113
- toggleSelectAll() {
114
- if (!this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {
115
- throw Error('CdkSelection: multiple selection not enabled');
116
- }
117
- if (this.selectAllState === 'none') {
118
- this._selectAll();
119
- }
120
- else {
121
- this._clearAll();
122
- }
123
- }
124
- /** Checks whether a value is selected. `index` is required if `trackBy` is used. */
125
- isSelected(value, index) {
126
- if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {
127
- throw Error('CdkSelection: index required when trackBy is used');
128
- }
129
- return this._selection.isSelected({ value, index });
130
- }
131
- /** Checks whether all values are selected. */
132
- isAllSelected() {
133
- return this._data.every((value, index) => this._selection.isSelected({ value, index }));
134
- }
135
- /** Checks whether partially selected. */
136
- isPartialSelected() {
137
- return (!this.isAllSelected() &&
138
- this._data.some((value, index) => this._selection.isSelected({ value, index })));
139
- }
140
- _selectAll() {
141
- const toSelect = [];
142
- this._data.forEach((value, index) => {
143
- toSelect.push({ value, index });
144
- });
145
- this._selection.select(...toSelect);
146
- }
147
- _clearAll() {
148
- const toDeselect = [];
149
- this._data.forEach((value, index) => {
150
- toDeselect.push({ value, index });
151
- });
152
- this._selection.deselect(...toDeselect);
153
- }
154
- _updateSelectAllState() {
155
- if (this.isAllSelected()) {
156
- this.selectAllState = 'all';
157
- }
158
- else if (this.isPartialSelected()) {
159
- this.selectAllState = 'partial';
160
- }
161
- else {
162
- this.selectAllState = 'none';
163
- }
164
- }
165
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
166
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0-next.2", type: CdkSelection, isStandalone: true, selector: "[cdkSelection]", inputs: { dataSource: "dataSource", trackByFn: ["trackBy", "trackByFn"], multiple: ["cdkSelectionMultiple", "multiple"] }, outputs: { change: "cdkSelectionChange" }, exportAs: ["cdkSelection"], ngImport: i0 }); }
167
- }
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkSelection, decorators: [{
169
- type: Directive,
170
- args: [{
171
- selector: '[cdkSelection]',
172
- exportAs: 'cdkSelection',
173
- standalone: true,
174
- }]
175
- }], propDecorators: { dataSource: [{
176
- type: Input
177
- }], trackByFn: [{
178
- type: Input,
179
- args: ['trackBy']
180
- }], multiple: [{
181
- type: Input,
182
- args: ['cdkSelectionMultiple']
183
- }], change: [{
184
- type: Output,
185
- args: ['cdkSelectionChange']
186
- }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay1leHBlcmltZW50YWwvc2VsZWN0aW9uL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQStCLFlBQVksRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQy9GLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUF1QyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkY7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8sWUFBWTtJQUx6QjtRQStCRSxvQ0FBb0M7UUFDRyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFRL0UsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFvSnpDLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQztLQUN6QztJQXJMQyxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLFVBQThCO1FBQzNDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFLRCw0Q0FBNEM7SUFDNUMsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hC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RUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztxSEFyTFUsWUFBWTt5R0FBWixZQUFZOztrR0FBWixZQUFZO2tCQUx4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBS0ssVUFBVTtzQkFEYixLQUFLO2dCQVdZLFNBQVM7c0JBQTFCLEtBQUs7dUJBQUMsU0FBUztnQkFJWixRQUFRO3NCQURYLEtBQUs7dUJBQUMsc0JBQXNCO2dCQVVVLE1BQU07c0JBQTVDLE1BQU07dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0NvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZSwgTGlzdFJhbmdlfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1NlbGVjdGFibGVXaXRoSW5kZXgsIFNlbGVjdGlvbkNoYW5nZSwgU2VsZWN0aW9uU2V0fSBmcm9tICcuL3NlbGVjdGlvbi1zZXQnO1xuXG4vKipcbiAqIE1hbmFnZXMgdGhlIHNlbGVjdGlvbiBzdGF0ZXMgb2YgdGhlIGl0ZW1zIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIGNoZWNrIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvblxuICogc3RhdGVzLlxuICogSXQgbXVzdCBiZSBhcHBsaWVkIHRvIHRoZSBwYXJlbnQgZWxlbWVudCBpZiBgY2RrU2VsZWN0aW9uVG9nZ2xlYCwgYGNka1NlbGVjdEFsbGAsXG4gKiBgY2RrUm93U2VsZWN0aW9uYCBhbmQgYGNka1NlbGVjdGlvbkNvbHVtbmAgYXJlIGFwcGxpZWQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZGtTZWxlY3Rpb25dJyxcbiAgZXhwb3J0QXM6ICdjZGtTZWxlY3Rpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtTZWxlY3Rpb248VD4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIENvbGxlY3Rpb25WaWV3ZXIsIE9uRGVzdHJveSB7XG4gIHZpZXdDaGFuZ2U6IE9ic2VydmFibGU8TGlzdFJhbmdlPjtcblxuICBASW5wdXQoKVxuICBnZXQgZGF0YVNvdXJjZSgpOiBUYWJsZURhdGFTb3VyY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICB9XG4gIHNldCBkYXRhU291cmNlKGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxUPikge1xuICAgIGlmICh0aGlzLl9kYXRhU291cmNlICE9PSBkYXRhU291cmNlKSB7XG4gICAgICB0aGlzLl9zd2l0Y2hEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9kYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8VD47XG5cbiAgQElucHV0KCd0cmFja0J5JykgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248VD47XG5cbiAgLyoqIFdoZXRoZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24gKi9cbiAgQElucHV0KCdjZGtTZWxlY3Rpb25NdWx0aXBsZScpXG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgc2V0IG11bHRpcGxlKG11bHRpcGxlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aXBsZSk7XG4gIH1cbiAgcHJvdGVjdGVkIF9tdWx0aXBsZTogYm9vbGVhbjtcblxuICAvKiogRW1pdHMgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcy4gKi9cbiAgQE91dHB1dCgnY2RrU2VsZWN0aW9uQ2hhbmdlJykgcmVhZG9ubHkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25DaGFuZ2U8VD4+KCk7XG5cbiAgLyoqIExhdGVzdCBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBkYXRhIHNvdXJjZS4gKi9cbiAgcHJpdmF0ZSBfZGF0YTogVFtdIHwgcmVhZG9ubHkgVFtdO1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdGhhdCBsaXN0ZW5zIGZvciB0aGUgZGF0YSBwcm92aWRlZCBieSB0aGUgZGF0YSBzb3VyY2UuICAqL1xuICBwcml2YXRlIF9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGw7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9zZWxlY3Rpb246IFNlbGVjdGlvblNldDxUPjtcblxuICBwcml2YXRlIF9zd2l0Y2hEYXRhU291cmNlKGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxUPikge1xuICAgIHRoaXMuX2RhdGEgPSBbXTtcblxuICAgIC8vIFRPRE86IE1vdmUgdGhpcyBsb2dpYyB0byBhIHNoYXJlZCBmdW5jdGlvbiBpbiBgY2RrL2NvbGxlY3Rpb25zYC5cbiAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICB0aGlzLl9kYXRhU291cmNlLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZVJlbmRlckNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLl9kYXRhU291cmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGRhdGFTdHJlYW06IE9ic2VydmFibGU8cmVhZG9ubHkgVFtdPiB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5fZGF0YVNvdXJjZSkpIHtcbiAgICAgIGRhdGFTdHJlYW0gPSB0aGlzLl9kYXRhU291cmNlLmNvbm5lY3QodGhpcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9kYXRhU291cmNlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgZGF0YVN0cmVhbSA9IHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICBkYXRhU3RyZWFtID0gb2JzZXJ2YWJsZU9mKHRoaXMuX2RhdGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmIChkYXRhU3RyZWFtID09IG51bGwgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmtub3duIGRhdGEgc291cmNlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uID0gZGF0YVN0cmVhbSFcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGEgfHwgW107XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25TZXQ8VD4odGhpcy5fbXVsdGlwbGUsIHRoaXMudHJhY2tCeUZuKTtcbiAgICB0aGlzLl9zZWxlY3Rpb24uY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdEFsbFN0YXRlKCk7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KGNoYW5nZSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UgJiYgIXRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fb2JzZXJ2ZVJlbmRlckNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLl9kYXRhU291cmNlKSkge1xuICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUb2dnbGVzIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiB2YWx1ZS4gYGluZGV4YCBpcyByZXF1aXJlZCBpZiBgdHJhY2tCeWAgaXMgdXNlZC4gKi9cbiAgdG9nZ2xlU2VsZWN0aW9uKHZhbHVlOiBULCBpbmRleD86IG51bWJlcikge1xuICAgIGlmICghIXRoaXMudHJhY2tCeUZuICYmIGluZGV4ID09IG51bGwgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdDZGtTZWxlY3Rpb246IGluZGV4IHJlcXVpcmVkIHdoZW4gdHJhY2tCeSBpcyB1c2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSwgaW5kZXgpKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24uZGVzZWxlY3Qoe3ZhbHVlLCBpbmRleH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24uc2VsZWN0KHt2YWx1ZSwgaW5kZXh9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBzZWxlY3QtYWxsLiBJZiBubyB2YWx1ZSBpcyBzZWxlY3RlZCwgc2VsZWN0IGFsbCB2YWx1ZXMuIElmIGFsbCB2YWx1ZXMgb3Igc29tZSBvZiB0aGVcbiAgICogdmFsdWVzIGFyZSBzZWxlY3RlZCwgZGUtc2VsZWN0IGFsbCB2YWx1ZXMuXG4gICAqL1xuICB0b2dnbGVTZWxlY3RBbGwoKSB7XG4gICAgaWYgKCF0aGlzLl9tdWx0aXBsZSAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Nka1NlbGVjdGlvbjogbXVsdGlwbGUgc2VsZWN0aW9uIG5vdCBlbmFibGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsU3RhdGUgPT09ICdub25lJykge1xuICAgICAgdGhpcy5fc2VsZWN0QWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NsZWFyQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgc2VsZWN0ZWQuIGBpbmRleGAgaXMgcmVxdWlyZWQgaWYgYHRyYWNrQnlgIGlzIHVzZWQuICovXG4gIGlzU2VsZWN0ZWQodmFsdWU6IFQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgaWYgKCEhdGhpcy50cmFja0J5Rm4gJiYgaW5kZXggPT0gbnVsbCAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Nka1NlbGVjdGlvbjogaW5kZXggcmVxdWlyZWQgd2hlbiB0cmFja0J5IGlzIHVzZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uLmlzU2VsZWN0ZWQoe3ZhbHVlLCBpbmRleH0pO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIGFsbCB2YWx1ZXMgYXJlIHNlbGVjdGVkLiAqL1xuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHRoaXMuX3NlbGVjdGlvbi5pc1NlbGVjdGVkKHt2YWx1ZSwgaW5kZXh9KSk7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgcGFydGlhbGx5IHNlbGVjdGVkLiAqL1xuICBpc1BhcnRpYWxTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuaXNBbGxTZWxlY3RlZCgpICYmXG4gICAgICB0aGlzLl9kYXRhLnNvbWUoKHZhbHVlLCBpbmRleCkgPT4gdGhpcy5fc2VsZWN0aW9uLmlzU2VsZWN0ZWQoe3ZhbHVlLCBpbmRleH0pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RBbGwoKSB7XG4gICAgY29uc3QgdG9TZWxlY3Q6IFNlbGVjdGFibGVXaXRoSW5kZXg8VD5bXSA9IFtdO1xuICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICB0b1NlbGVjdC5wdXNoKHt2YWx1ZSwgaW5kZXh9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbGVjdGlvbi5zZWxlY3QoLi4udG9TZWxlY3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYXJBbGwoKSB7XG4gICAgY29uc3QgdG9EZXNlbGVjdDogU2VsZWN0YWJsZVdpdGhJbmRleDxUPltdID0gW107XG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIHRvRGVzZWxlY3QucHVzaCh7dmFsdWUsIGluZGV4fSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb24uZGVzZWxlY3QoLi4udG9EZXNlbGVjdCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTZWxlY3RBbGxTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU3RhdGUgPSAnYWxsJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNQYXJ0aWFsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGxTdGF0ZSA9ICdwYXJ0aWFsJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGxTdGF0ZSA9ICdub25lJztcbiAgICB9XG4gIH1cblxuICBzZWxlY3RBbGxTdGF0ZTogU2VsZWN0QWxsU3RhdGUgPSAnbm9uZSc7XG59XG5cbnR5cGUgU2VsZWN0QWxsU3RhdGUgPSAnYWxsJyB8ICdub25lJyB8ICdwYXJ0aWFsJztcbnR5cGUgVGFibGVEYXRhU291cmNlPFQ+ID0gRGF0YVNvdXJjZTxUPiB8IE9ic2VydmFibGU8cmVhZG9ubHkgVFtdPiB8IHJlYWRvbmx5IFRbXTtcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uX3B1YmxpY19pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL3NlbGVjdGlvbi9zZWxlY3Rpb25fcHVibGljX2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export * from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrLWV4cGVyaW1lbnRhbC90YWJsZS1zY3JvbGwtY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,10 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export * from './table-scroll-container';
9
- export * from './table-scroll-container-module';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL3RhYmxlLXNjcm9sbC1jb250YWluZXIvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1zY3JvbGwtY29udGFpbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtc2Nyb2xsLWNvbnRhaW5lci1tb2R1bGUnO1xuIl19
@@ -1,23 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { NgModule } from '@angular/core';
9
- import { CdkTableScrollContainer } from './table-scroll-container';
10
- import * as i0 from "@angular/core";
11
- export class CdkTableScrollContainerModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, imports: [CdkTableScrollContainer], exports: [CdkTableScrollContainer] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, decorators: [{
17
- type: NgModule,
18
- args: [{
19
- imports: [CdkTableScrollContainer],
20
- exports: [CdkTableScrollContainer],
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWNvbnRhaW5lci1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrLWV4cGVyaW1lbnRhbC90YWJsZS1zY3JvbGwtY29udGFpbmVyL3RhYmxlLXNjcm9sbC1jb250YWluZXItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBTWpFLE1BQU0sT0FBTyw2QkFBNkI7cUhBQTdCLDZCQUE2QjtzSEFBN0IsNkJBQTZCLFlBSDlCLHVCQUF1QixhQUN2Qix1QkFBdUI7c0hBRXRCLDZCQUE2Qjs7a0dBQTdCLDZCQUE2QjtrQkFKekMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0Nka1RhYmxlU2Nyb2xsQ29udGFpbmVyfSBmcm9tICcuL3RhYmxlLXNjcm9sbC1jb250YWluZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ2RrVGFibGVTY3JvbGxDb250YWluZXJdLFxuICBleHBvcnRzOiBbQ2RrVGFibGVTY3JvbGxDb250YWluZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtUYWJsZVNjcm9sbENvbnRhaW5lck1vZHVsZSB7fVxuIl19
@@ -1,141 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { CSP_NONCE, Directive, ElementRef, Inject, Optional } from '@angular/core';
9
- import { DOCUMENT } from '@angular/common';
10
- import { Directionality } from '@angular/cdk/bidi';
11
- import { _getShadowRoot } from '@angular/cdk/platform';
12
- import { STICKY_POSITIONING_LISTENER, } from '@angular/cdk/table';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/cdk/bidi";
15
- let nextId = 0;
16
- /**
17
- * Applies styles to the host element that make its scrollbars match up with
18
- * the non-sticky scrollable portions of the CdkTable contained within.
19
- *
20
- * This visual effect only works in Webkit and Blink based browsers (eg Chrome,
21
- * Safari, Edge). Other browsers such as Firefox will gracefully degrade to
22
- * normal scrollbar appearance.
23
- * Further note: These styles have no effect when the browser is using OS-default
24
- * scrollbars. The easiest way to force them into custom mode is to specify width
25
- * and height for the scrollbar and thumb.
26
- */
27
- export class CdkTableScrollContainer {
28
- constructor(_elementRef, _document, _directionality, _nonce) {
29
- this._elementRef = _elementRef;
30
- this._document = _document;
31
- this._directionality = _directionality;
32
- this._nonce = _nonce;
33
- /** The most recent sticky column size values from the CdkTable. */
34
- this._startSizes = [];
35
- this._endSizes = [];
36
- this._headerSizes = [];
37
- this._footerSizes = [];
38
- this._uniqueClassName = `cdk-table-scroll-container-${++nextId}`;
39
- _elementRef.nativeElement.classList.add(this._uniqueClassName);
40
- }
41
- ngOnInit() {
42
- // Note that we need to look up the root node in ngOnInit, rather than the constructor, because
43
- // Angular seems to create the element outside the shadow root and then moves it inside, if the
44
- // node is inside an `ngIf` and a ShadowDom-encapsulated component.
45
- this._styleRoot = _getShadowRoot(this._elementRef.nativeElement) ?? this._document.head;
46
- }
47
- ngOnDestroy() {
48
- this._styleElement?.remove();
49
- this._styleElement = undefined;
50
- }
51
- stickyColumnsUpdated({ sizes }) {
52
- this._startSizes = sizes;
53
- this._updateScrollbar();
54
- }
55
- stickyEndColumnsUpdated({ sizes }) {
56
- this._endSizes = sizes;
57
- this._updateScrollbar();
58
- }
59
- stickyHeaderRowsUpdated({ sizes }) {
60
- this._headerSizes = sizes;
61
- this._updateScrollbar();
62
- }
63
- stickyFooterRowsUpdated({ sizes }) {
64
- this._footerSizes = sizes;
65
- this._updateScrollbar();
66
- }
67
- /**
68
- * Set padding on the scrollbar track based on the sticky states from CdkTable.
69
- */
70
- _updateScrollbar() {
71
- const topMargin = computeMargin(this._headerSizes);
72
- const bottomMargin = computeMargin(this._footerSizes);
73
- const startMargin = computeMargin(this._startSizes);
74
- const endMargin = computeMargin(this._endSizes);
75
- if (topMargin === 0 && bottomMargin === 0 && startMargin === 0 && endMargin === 0) {
76
- this._clearCss();
77
- return;
78
- }
79
- const direction = this._directionality ? this._directionality.value : 'ltr';
80
- const leftMargin = direction === 'rtl' ? endMargin : startMargin;
81
- const rightMargin = direction === 'rtl' ? startMargin : endMargin;
82
- this._applyCss(`${topMargin}px ${rightMargin}px ${bottomMargin}px ${leftMargin}px`);
83
- }
84
- /** Gets the stylesheet for the scrollbar styles and creates it if need be. */
85
- _getStyleSheet() {
86
- if (!this._styleElement) {
87
- this._styleElement = this._document.createElement('style');
88
- if (this._nonce) {
89
- this._styleElement.setAttribute('nonce', this._nonce);
90
- }
91
- this._styleRoot.appendChild(this._styleElement);
92
- }
93
- return this._styleElement.sheet;
94
- }
95
- /** Updates the stylesheet with the specified scrollbar style. */
96
- _applyCss(value) {
97
- this._clearCss();
98
- const selector = `.${this._uniqueClassName}::-webkit-scrollbar-track`;
99
- this._getStyleSheet().insertRule(`${selector} {margin: ${value}}`, 0);
100
- }
101
- _clearCss() {
102
- const styleSheet = this._getStyleSheet();
103
- if (styleSheet.cssRules.length > 0) {
104
- styleSheet.deleteRule(0);
105
- }
106
- }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainer, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.Directionality, optional: true }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
108
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0-next.2", type: CdkTableScrollContainer, isStandalone: true, selector: "[cdkTableScrollContainer]", host: { classAttribute: "cdk-table-scroll-container" }, providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer }], ngImport: i0 }); }
109
- }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableScrollContainer, decorators: [{
111
- type: Directive,
112
- args: [{
113
- selector: '[cdkTableScrollContainer]',
114
- host: {
115
- 'class': 'cdk-table-scroll-container',
116
- },
117
- providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer }],
118
- standalone: true,
119
- }]
120
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: Document, decorators: [{
121
- type: Inject,
122
- args: [DOCUMENT]
123
- }] }, { type: i1.Directionality, decorators: [{
124
- type: Optional
125
- }] }, { type: undefined, decorators: [{
126
- type: Optional
127
- }, {
128
- type: Inject,
129
- args: [CSP_NONCE]
130
- }] }] });
131
- function computeMargin(sizes) {
132
- let margin = 0;
133
- for (const size of sizes) {
134
- if (size == null) {
135
- break;
136
- }
137
- margin += size;
138
- }
139
- return margin;
140
- }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL3RhYmxlLXNjcm9sbC1jb250YWluZXIvdGFibGUtc2Nyb2xsLWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUNMLDJCQUEyQixHQUk1QixNQUFNLG9CQUFvQixDQUFDOzs7QUFFNUIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWY7Ozs7Ozs7Ozs7R0FVRztBQVNILE1BQU0sT0FBTyx1QkFBdUI7SUFXbEMsWUFDbUIsV0FBb0MsRUFDbEIsU0FBbUIsRUFDekIsZUFBZ0MsRUFDYixNQUFzQjtRQUhyRCxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQVZ4RSxtRUFBbUU7UUFDM0QsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBQzdCLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFpQixFQUFFLENBQUM7UUFRdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLDhCQUE4QixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pFLFdBQVcsQ0FBQyxhQUFhLENBQUMs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RCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxJQUFJLElBQUksQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0NTUF9OT05DRSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtfZ2V0U2hhZG93Um9vdH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIFNUSUNLWV9QT1NJVElPTklOR19MSVNURU5FUixcbiAgU3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcixcbiAgU3RpY2t5U2l6ZSxcbiAgU3RpY2t5VXBkYXRlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBBcHBsaWVzIHN0eWxlcyB0byB0aGUgaG9zdCBlbGVtZW50IHRoYXQgbWFrZSBpdHMgc2Nyb2xsYmFycyBtYXRjaCB1cCB3aXRoXG4gKiB0aGUgbm9uLXN0aWNreSBzY3JvbGxhYmxlIHBvcnRpb25zIG9mIHRoZSBDZGtUYWJsZSBjb250YWluZWQgd2l0aGluLlxuICpcbiAqIFRoaXMgdmlzdWFsIGVmZmVjdCBvbmx5IHdvcmtzIGluIFdlYmtpdCBhbmQgQmxpbmsgYmFzZWQgYnJvd3NlcnMgKGVnIENocm9tZSxcbiAqIFNhZmFyaSwgRWRnZSkuIE90aGVyIGJyb3dzZXJzIHN1Y2ggYXMgRmlyZWZveCB3aWxsIGdyYWNlZnVsbHkgZGVncmFkZSB0b1xuICogbm9ybWFsIHNjcm9sbGJhciBhcHBlYXJhbmNlLlxuICogRnVydGhlciBub3RlOiBUaGVzZSBzdHlsZXMgaGF2ZSBubyBlZmZlY3Qgd2hlbiB0aGUgYnJvd3NlciBpcyB1c2luZyBPUy1kZWZhdWx0XG4gKiBzY3JvbGxiYXJzLiBUaGUgZWFzaWVzdCB3YXkgdG8gZm9yY2UgdGhlbSBpbnRvIGN1c3RvbSBtb2RlIGlzIHRvIHNwZWNpZnkgd2lkdGhcbiAqIGFuZCBoZWlnaHQgZm9yIHRoZSBzY3JvbGxiYXIgYW5kIHRodW1iLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrVGFibGVTY3JvbGxDb250YWluZXJdJyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdjZGstdGFibGUtc2Nyb2xsLWNvbnRhaW5lcicsXG4gIH0sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBTVElDS1lfUE9TSVRJT05JTkdfTElTVEVORVIsIHVzZUV4aXN0aW5nOiBDZGtUYWJsZVNjcm9sbENvbnRhaW5lcn1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtUYWJsZVNjcm9sbENvbnRhaW5lciBpbXBsZW1lbnRzIFN0aWNreVBvc2l0aW9uaW5nTGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdW5pcXVlQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0eWxlUm9vdCE6IE5vZGU7XG4gIHByaXZhdGUgX3N0eWxlRWxlbWVudD86IEhUTUxTdHlsZUVsZW1lbnQ7XG5cbiAgLyoqIFRoZSBtb3N0IHJlY2VudCBzdGlja3kgY29sdW1uIHNpemUgdmFsdWVzIGZyb20gdGhlIENka1RhYmxlLiAqL1xuICBwcml2YXRlIF9zdGFydFNpemVzOiBTdGlja3lTaXplW10gPSBbXTtcbiAgcHJpdmF0ZSBfZW5kU2l6ZXM6IFN0aWNreVNpemVbXSA9IFtdO1xuICBwcml2YXRlIF9oZWFkZXJTaXplczogU3RpY2t5U2l6ZVtdID0gW107XG4gIHByaXZhdGUgX2Zvb3RlclNpemVzOiBTdGlja3lTaXplW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfZGlyZWN0aW9uYWxpdHk/OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENTUF9OT05DRSkgcHJpdmF0ZSByZWFkb25seSBfbm9uY2U/OiBzdHJpbmcgfCBudWxsLFxuICApIHtcbiAgICB0aGlzLl91bmlxdWVDbGFzc05hbWUgPSBgY2RrLXRhYmxlLXNjcm9sbC1jb250YWluZXItJHsrK25leHRJZH1gO1xuICAgIF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl91bmlxdWVDbGFzc05hbWUpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gTm90ZSB0aGF0IHdlIG5lZWQgdG8gbG9vayB1cCB0aGUgcm9vdCBub2RlIGluIG5nT25Jbml0LCByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3IsIGJlY2F1c2VcbiAgICAvLyBBbmd1bGFyIHNlZW1zIHRvIGNyZWF0ZSB0aGUgZWxlbWVudCBvdXRzaWRlIHRoZSBzaGFkb3cgcm9vdCBhbmQgdGhlbiBtb3ZlcyBpdCBpbnNpZGUsIGlmIHRoZVxuICAgIC8vIG5vZGUgaXMgaW5zaWRlIGFuIGBuZ0lmYCBhbmQgYSBTaGFkb3dEb20tZW5jYXBzdWxhdGVkIGNvbXBvbmVudC5cbiAgICB0aGlzLl9zdHlsZVJvb3QgPSBfZ2V0U2hhZG93Um9vdCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpID8/IHRoaXMuX2RvY3VtZW50LmhlYWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdHlsZUVsZW1lbnQ/LnJlbW92ZSgpO1xuICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0aWNreUNvbHVtbnNVcGRhdGVkKHtzaXplc306IFN0aWNreVVwZGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0U2l6ZXMgPSBzaXplcztcbiAgICB0aGlzLl91cGRhdGVTY3JvbGxiYXIoKTtcbiAgfVxuXG4gIHN0aWNreUVuZENvbHVtbnNVcGRhdGVkKHtzaXplc306IFN0aWNreVVwZGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZFNpemVzID0gc2l6ZXM7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyKCk7XG4gIH1cblxuICBzdGlja3lIZWFkZXJSb3dzVXBkYXRlZCh7c2l6ZXN9OiBTdGlja3lVcGRhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJTaXplcyA9IHNpemVzO1xuICAgIHRoaXMuX3VwZGF0ZVNjcm9sbGJhcigpO1xuICB9XG5cbiAgc3RpY2t5Rm9vdGVyUm93c1VwZGF0ZWQoe3NpemVzfTogU3RpY2t5VXBkYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fZm9vdGVyU2l6ZXMgPSBzaXplcztcbiAgICB0aGlzLl91cGRhdGVTY3JvbGxiYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcGFkZGluZyBvbiB0aGUgc2Nyb2xsYmFyIHRyYWNrIGJhc2VkIG9uIHRoZSBzdGlja3kgc3RhdGVzIGZyb20gQ2RrVGFibGUuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgY29uc3QgdG9wTWFyZ2luID0gY29tcHV0ZU1hcmdpbih0aGlzLl9oZWFkZXJTaXplcyk7XG4gICAgY29uc3QgYm90dG9tTWFyZ2luID0gY29tcHV0ZU1hcmdpbih0aGlzLl9mb290ZXJTaXplcyk7XG4gICAgY29uc3Qgc3RhcnRNYXJnaW4gPSBjb21wdXRlTWFyZ2luKHRoaXMuX3N0YXJ0U2l6ZXMpO1xuICAgIGNvbnN0IGVuZE1hcmdpbiA9IGNvbXB1dGVNYXJnaW4odGhpcy5fZW5kU2l6ZXMpO1xuXG4gICAgaWYgKHRvcE1hcmdpbiA9PT0gMCAmJiBib3R0b21NYXJnaW4gPT09IDAgJiYgc3RhcnRNYXJnaW4gPT09IDAgJiYgZW5kTWFyZ2luID09PSAwKSB7XG4gICAgICB0aGlzLl9jbGVhckNzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuX2RpcmVjdGlvbmFsaXR5ID8gdGhpcy5fZGlyZWN0aW9uYWxpdHkudmFsdWUgOiAnbHRyJztcbiAgICBjb25zdCBsZWZ0TWFyZ2luID0gZGlyZWN0aW9uID09PSAncnRsJyA/IGVuZE1hcmdpbiA6IHN0YXJ0TWFyZ2luO1xuICAgIGNvbnN0IHJpZ2h0TWFyZ2luID0gZGlyZWN0aW9uID09PSAncnRsJyA/IHN0YXJ0TWFyZ2luIDogZW5kTWFyZ2luO1xuXG4gICAgdGhpcy5fYXBwbHlDc3MoYCR7dG9wTWFyZ2lufXB4ICR7cmlnaHRNYXJnaW59cHggJHtib3R0b21NYXJnaW59cHggJHtsZWZ0TWFyZ2lufXB4YCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgc3R5bGVzaGVldCBmb3IgdGhlIHNjcm9sbGJhciBzdHlsZXMgYW5kIGNyZWF0ZXMgaXQgaWYgbmVlZCBiZS4gKi9cbiAgcHJpdmF0ZSBfZ2V0U3R5bGVTaGVldCgpOiBDU1NTdHlsZVNoZWV0IHtcbiAgICBpZiAoIXRoaXMuX3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy5fc3R5bGVFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICAgICAgaWYgKHRoaXMuX25vbmNlKSB7XG4gICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgdGhpcy5fbm9uY2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zdHlsZVJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3R5bGVFbGVtZW50LnNoZWV0IGFzIENTU1N0eWxlU2hlZXQ7XG4gIH1cblxuICAvKiogVXBkYXRlcyB0aGUgc3R5bGVzaGVldCB3aXRoIHRoZSBzcGVjaWZpZWQgc2Nyb2xsYmFyIHN0eWxlLiAqL1xuICBwcml2YXRlIF9hcHBseUNzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2xlYXJDc3MoKTtcblxuICAgIGNvbnN0IHNlbGVjdG9yID0gYC4ke3RoaXMuX3VuaXF1ZUNsYXNzTmFtZX06Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrYDtcbiAgICB0aGlzLl9nZXRTdHlsZVNoZWV0KCkuaW5zZXJ0UnVsZShgJHtzZWxlY3Rvcn0ge21hcmdpbjogJHt2YWx1ZX19YCwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckNzcygpIHtcbiAgICBjb25zdCBzdHlsZVNoZWV0ID0gdGhpcy5fZ2V0U3R5bGVTaGVldCgpO1xuICAgIGlmIChzdHlsZVNoZWV0LmNzc1J1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHN0eWxlU2hlZXQuZGVsZXRlUnVsZSgwKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZU1hcmdpbihzaXplczogKG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpW10pOiBudW1iZXIge1xuICBsZXQgbWFyZ2luID0gMDtcbiAgZm9yIChjb25zdCBzaXplIG9mIHNpemVzKSB7XG4gICAgaWYgKHNpemUgPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG1hcmdpbiArPSBzaXplO1xuICB9XG4gIHJldHVybiBtYXJnaW47XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWNvbnRhaW5lcl9wdWJsaWNfaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrLWV4cGVyaW1lbnRhbC90YWJsZS1zY3JvbGwtY29udGFpbmVyL3RhYmxlLXNjcm9sbC1jb250YWluZXJfcHVibGljX2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Version } from '@angular/core';
9
- /** Current version of the CDK Experimental package. */
10
- export const VERSION = new Version('19.0.0-next.1');
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0Qyx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQ0RLIEV4cGVyaW1lbnRhbCBwYWNrYWdlLiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==