@angular/cdk-experimental 21.0.0-next.0 → 21.0.0-next.2

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 (48) hide show
  1. package/accordion/index.d.ts +2 -0
  2. package/fesm2022/accordion.mjs +15 -12
  3. package/fesm2022/accordion.mjs.map +1 -1
  4. package/fesm2022/accordion2.mjs.map +1 -1
  5. package/fesm2022/cdk-experimental.mjs +1 -1
  6. package/fesm2022/cdk-experimental.mjs.map +1 -1
  7. package/fesm2022/column-resize.mjs +53 -53
  8. package/fesm2022/column-resize.mjs.map +1 -1
  9. package/fesm2022/combobox.mjs +10 -10
  10. package/fesm2022/combobox.mjs.map +1 -1
  11. package/fesm2022/deferred-content.mjs +6 -6
  12. package/fesm2022/deferred-content.mjs.map +1 -1
  13. package/fesm2022/expansion.mjs.map +1 -1
  14. package/fesm2022/list-navigation.mjs +1 -3
  15. package/fesm2022/list-navigation.mjs.map +1 -1
  16. package/fesm2022/list.mjs +17 -2
  17. package/fesm2022/list.mjs.map +1 -1
  18. package/fesm2022/listbox.mjs +10 -7
  19. package/fesm2022/listbox.mjs.map +1 -1
  20. package/fesm2022/option.mjs.map +1 -1
  21. package/fesm2022/polyfill.mjs.map +1 -1
  22. package/fesm2022/popover-edit.mjs +43 -43
  23. package/fesm2022/popover-edit.mjs.map +1 -1
  24. package/fesm2022/radio-group.mjs +10 -7
  25. package/fesm2022/radio-group.mjs.map +1 -1
  26. package/fesm2022/radio-group2.mjs.map +1 -1
  27. package/fesm2022/scrolling.mjs +7 -7
  28. package/fesm2022/scrolling.mjs.map +1 -1
  29. package/fesm2022/selection.mjs +19 -19
  30. package/fesm2022/selection.mjs.map +1 -1
  31. package/fesm2022/table-scroll-container.mjs +7 -7
  32. package/fesm2022/table-scroll-container.mjs.map +1 -1
  33. package/fesm2022/tabs.mjs +19 -16
  34. package/fesm2022/tabs.mjs.map +1 -1
  35. package/fesm2022/tabs2.mjs.map +1 -1
  36. package/fesm2022/toolbar.mjs +10 -7
  37. package/fesm2022/toolbar.mjs.map +1 -1
  38. package/fesm2022/toolbar2.mjs.map +1 -1
  39. package/fesm2022/tree.mjs +36 -44
  40. package/fesm2022/tree.mjs.map +1 -1
  41. package/fesm2022/ui-patterns.mjs.map +1 -1
  42. package/listbox/index.d.ts +2 -0
  43. package/package.json +2 -2
  44. package/pointer-event-manager.d.d.ts +1 -0
  45. package/radio-group/index.d.ts +2 -0
  46. package/tabs/index.d.ts +2 -0
  47. package/toolbar/index.d.ts +2 -0
  48. package/tree/index.d.ts +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group2.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/ui-patterns/radio-group/radio-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport {RadioButtonPattern} from './radio-button';\n\n/** Represents the required inputs for a radio group. */\nexport type RadioGroupInputs<V> = Omit<\n ListInputs<RadioButtonPattern<V>, V>,\n 'multi' | 'selectionMode' | 'wrap' | 'typeaheadDelay'\n> & {\n /** Whether the radio group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the radio group is readonly. */\n readonly: SignalLike<boolean>;\n /** Parent toolbar of radio group */\n toolbar: SignalLike<ToolbarLike<V> | undefined>;\n};\n\n/**\n * Represents the properties exposed by a toolbar widget that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\ntype ToolbarWidgetLike = {\n id: SignalLike<string>;\n index: SignalLike<number>;\n element: SignalLike<HTMLElement>;\n disabled: SignalLike<boolean>;\n searchTerm: SignalLike<any>;\n value: SignalLike<any>;\n};\n\n/**\n * Represents the properties exposed by a toolbar that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\nexport interface ToolbarLike<V> {\n listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n orientation: SignalLike<'vertical' | 'horizontal'>;\n disabled: SignalLike<boolean>;\n}\n\n/** Controls the state of a radio group. */\nexport class RadioGroupPattern<V> {\n /** The list behavior for the radio group. */\n readonly listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n\n /** Whether the radio group is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the radio group is disabled. */\n disabled = computed(() => this.inputs.disabled() || this.listBehavior.disabled());\n\n /** The currently selected radio button. */\n selectedItem = computed(() => this.listBehavior.selectionBehavior.selectedItems()[0]);\n\n /** Whether the radio group is readonly. */\n readonly = computed(() => this.selectedItem()?.disabled() || this.inputs.readonly());\n\n /** The tabindex of the radio group. */\n tabindex = computed(() => (this.inputs.toolbar() ? -1 : this.listBehavior.tabindex()));\n\n /** The id of the current active radio button (if using activedescendant). */\n activedescendant = computed(() => this.listBehavior.activedescendant());\n\n /** The key used to navigate to the previous radio button. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next radio button. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the radio group. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n // When within a toolbar relinquish keyboard control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n // Readonly mode allows navigation but not selection changes.\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.listBehavior.prev())\n .on(this.nextKey, () => this.listBehavior.next())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n }\n\n // Default behavior: navigate and select on arrow keys, home, end.\n // Space/Enter also select the focused item.\n return manager\n .on(this.prevKey, () => this.listBehavior.prev({selectOne: true}))\n .on(this.nextKey, () => this.listBehavior.next({selectOne: true}))\n .on('Home', () => this.listBehavior.first({selectOne: true}))\n .on('End', () => this.listBehavior.last({selectOne: true}))\n .on(' ', () => this.listBehavior.selectOne())\n .on('Enter', () => this.listBehavior.selectOne());\n });\n\n /** The pointerdown event manager for the radio group. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n // When within a toolbar relinquish pointer control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n if (this.readonly()) {\n // Navigate focus only in readonly mode.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!));\n }\n\n // Default behavior: navigate and select on click.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}));\n });\n\n constructor(readonly inputs: RadioGroupInputs<V>) {\n this.orientation =\n inputs.toolbar() !== undefined ? inputs.toolbar()!.orientation : inputs.orientation;\n\n this.listBehavior = new List({\n ...inputs,\n activeItem: inputs.toolbar()?.listBehavior.inputs.activeItem ?? inputs.activeItem,\n wrap: () => !!inputs.toolbar(),\n multi: () => false,\n selectionMode: () => (inputs.toolbar() ? 'explicit' : 'follow'),\n typeaheadDelay: () => 0, // Radio groups do not support typeahead.\n });\n }\n\n /** Handles keydown events for the radio group. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles pointerdown events for the radio group. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /**\n * Sets the radio group to its default initial state.\n *\n * Sets the active index to the selected radio button if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable radio button.\n */\n setDefaultState() {\n let firstItem: RadioButtonPattern<V> | null = null;\n\n for (const item of this.inputs.items()) {\n if (this.listBehavior.isFocusable(item)) {\n if (!firstItem) {\n firstItem = item;\n }\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n }\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Validates the state of the radio group and returns a list of accessibility violations. */\n validate(): string[] {\n const violations: string[] = [];\n\n if (this.selectedItem()?.disabled() && this.inputs.skipDisabled()) {\n violations.push(\n \"Accessibility Violation: The selected radio button is disabled while 'skipDisabled' is true, making the selection unreachable via keyboard.\",\n );\n }\n\n return violations;\n }\n\n /** Finds the RadioButtonPattern associated with a pointer event target. */\n private _getItem(e: PointerEvent): RadioButtonPattern<V> | undefined {\n if (!(e.target instanceof HTMLElement)) {\n return undefined;\n }\n\n // Assumes the target or its ancestor has role=\"radio\"\n const element = e.target.closest('[role=\"radio\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radio-group2.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/ui-patterns/radio-group/radio-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport {RadioButtonPattern} from './radio-button';\n\n/** Represents the required inputs for a radio group. */\nexport type RadioGroupInputs<V> = Omit<\n ListInputs<RadioButtonPattern<V>, V>,\n 'multi' | 'selectionMode' | 'wrap' | 'typeaheadDelay'\n> & {\n /** Whether the radio group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the radio group is readonly. */\n readonly: SignalLike<boolean>;\n /** Parent toolbar of radio group */\n toolbar: SignalLike<ToolbarLike<V> | undefined>;\n};\n\n/**\n * Represents the properties exposed by a toolbar widget that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\ntype ToolbarWidgetLike = {\n id: SignalLike<string>;\n index: SignalLike<number>;\n element: SignalLike<HTMLElement>;\n disabled: SignalLike<boolean>;\n searchTerm: SignalLike<any>;\n value: SignalLike<any>;\n};\n\n/**\n * Represents the properties exposed by a toolbar that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\nexport interface ToolbarLike<V> {\n listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n orientation: SignalLike<'vertical' | 'horizontal'>;\n disabled: SignalLike<boolean>;\n}\n\n/** Controls the state of a radio group. */\nexport class RadioGroupPattern<V> {\n /** The list behavior for the radio group. */\n readonly listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n\n /** Whether the radio group is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the radio group is disabled. */\n disabled = computed(() => this.inputs.disabled() || this.listBehavior.disabled());\n\n /** The currently selected radio button. */\n selectedItem = computed(() => this.listBehavior.selectionBehavior.selectedItems()[0]);\n\n /** Whether the radio group is readonly. */\n readonly = computed(() => this.selectedItem()?.disabled() || this.inputs.readonly());\n\n /** The tabindex of the radio group. */\n tabindex = computed(() => (this.inputs.toolbar() ? -1 : this.listBehavior.tabindex()));\n\n /** The id of the current active radio button (if using activedescendant). */\n activedescendant = computed(() => this.listBehavior.activedescendant());\n\n /** The key used to navigate to the previous radio button. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next radio button. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the radio group. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n // When within a toolbar relinquish keyboard control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n // Readonly mode allows navigation but not selection changes.\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.listBehavior.prev())\n .on(this.nextKey, () => this.listBehavior.next())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n }\n\n // Default behavior: navigate and select on arrow keys, home, end.\n // Space/Enter also select the focused item.\n return manager\n .on(this.prevKey, () => this.listBehavior.prev({selectOne: true}))\n .on(this.nextKey, () => this.listBehavior.next({selectOne: true}))\n .on('Home', () => this.listBehavior.first({selectOne: true}))\n .on('End', () => this.listBehavior.last({selectOne: true}))\n .on(' ', () => this.listBehavior.selectOne())\n .on('Enter', () => this.listBehavior.selectOne());\n });\n\n /** The pointerdown event manager for the radio group. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n // When within a toolbar relinquish pointer control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n if (this.readonly()) {\n // Navigate focus only in readonly mode.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!));\n }\n\n // Default behavior: navigate and select on click.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}));\n });\n\n constructor(readonly inputs: RadioGroupInputs<V>) {\n this.orientation =\n inputs.toolbar() !== undefined ? inputs.toolbar()!.orientation : inputs.orientation;\n\n this.listBehavior = new List({\n ...inputs,\n activeItem: inputs.toolbar()?.listBehavior.inputs.activeItem ?? inputs.activeItem,\n wrap: () => !!inputs.toolbar(),\n multi: () => false,\n selectionMode: () => (inputs.toolbar() ? 'explicit' : 'follow'),\n typeaheadDelay: () => 0, // Radio groups do not support typeahead.\n });\n }\n\n /** Handles keydown events for the radio group. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles pointerdown events for the radio group. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /**\n * Sets the radio group to its default initial state.\n *\n * Sets the active index to the selected radio button if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable radio button.\n */\n setDefaultState() {\n let firstItem: RadioButtonPattern<V> | null = null;\n\n for (const item of this.inputs.items()) {\n if (this.listBehavior.isFocusable(item)) {\n if (!firstItem) {\n firstItem = item;\n }\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n }\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Validates the state of the radio group and returns a list of accessibility violations. */\n validate(): string[] {\n const violations: string[] = [];\n\n if (this.selectedItem()?.disabled() && this.inputs.skipDisabled()) {\n violations.push(\n \"Accessibility Violation: The selected radio button is disabled while 'skipDisabled' is true, making the selection unreachable via keyboard.\",\n );\n }\n\n return violations;\n }\n\n /** Finds the RadioButtonPattern associated with a pointer event target. */\n private _getItem(e: PointerEvent): RadioButtonPattern<V> | undefined {\n if (!(e.target instanceof HTMLElement)) {\n return undefined;\n }\n\n // Assumes the target or its ancestor has role=\"radio\"\n const element = e.target.closest('[role=\"radio\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -400,8 +400,8 @@ class CdkAutoSizeVirtualScroll {
400
400
  ngOnChanges() {
401
401
  this._scrollStrategy.updateBufferSize(this.minBufferPx, this.maxBufferPx);
402
402
  }
403
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkAutoSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });
404
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkAutoSizeVirtualScroll, isStandalone: true, selector: "cdk-virtual-scroll-viewport[autosize]", inputs: { minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, providers: [
403
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkAutoSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });
404
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkAutoSizeVirtualScroll, isStandalone: true, selector: "cdk-virtual-scroll-viewport[autosize]", inputs: { minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, providers: [
405
405
  {
406
406
  provide: VIRTUAL_SCROLL_STRATEGY,
407
407
  useFactory: _autoSizeVirtualScrollStrategyFactory,
@@ -409,7 +409,7 @@ class CdkAutoSizeVirtualScroll {
409
409
  },
410
410
  ], usesOnChanges: true, ngImport: i0 });
411
411
  }
412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkAutoSizeVirtualScroll, decorators: [{
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkAutoSizeVirtualScroll, decorators: [{
413
413
  type: Directive,
414
414
  args: [{
415
415
  selector: 'cdk-virtual-scroll-viewport[autosize]',
@@ -428,11 +428,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ng
428
428
  }] } });
429
429
 
430
430
  class ScrollingModule {
431
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
432
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: ScrollingModule, imports: [CdkAutoSizeVirtualScroll], exports: [CdkAutoSizeVirtualScroll] });
433
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: ScrollingModule });
431
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
432
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-next.2", ngImport: i0, type: ScrollingModule, imports: [CdkAutoSizeVirtualScroll], exports: [CdkAutoSizeVirtualScroll] });
433
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: ScrollingModule });
434
434
  }
435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: ScrollingModule, decorators: [{
435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: ScrollingModule, decorators: [{
436
436
  type: NgModule,
437
437
  args: [{
438
438
  imports: [CdkAutoSizeVirtualScroll],
@@ -1 +1 @@
1
- {"version":3,"file":"scrolling.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/scrolling/scrolling-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ListRange} from '@angular/cdk/collections';\nimport {\n CdkVirtualScrollViewport,\n VIRTUAL_SCROLL_STRATEGY,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {Directive, forwardRef, Input, OnChanges} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * A class that tracks the size of items that have been seen and uses it to estimate the average\n * item size.\n */\nexport class ItemSizeAverager {\n /** The total amount of weight behind the current average. */\n private _totalWeight = 0;\n\n /** The current average item size. */\n private _averageItemSize: number;\n\n /** The default size to use for items when no data is available. */\n private _defaultItemSize: number;\n\n /** @param defaultItemSize The default size to use for items when no data is available. */\n constructor(defaultItemSize = 50) {\n this._defaultItemSize = defaultItemSize;\n this._averageItemSize = defaultItemSize;\n }\n\n /** Returns the average item size. */\n getAverageItemSize(): number {\n return this._averageItemSize;\n }\n\n /**\n * Adds a measurement sample for the estimator to consider.\n * @param range The measured range.\n * @param size The measured size of the given range in pixels.\n */\n addSample(range: ListRange, size: number) {\n const newTotalWeight = this._totalWeight + range.end - range.start;\n if (newTotalWeight) {\n const newAverageItemSize =\n (size + this._averageItemSize * this._totalWeight) / newTotalWeight;\n if (newAverageItemSize) {\n this._averageItemSize = newAverageItemSize;\n this._totalWeight = newTotalWeight;\n }\n }\n }\n\n /** Resets the averager. */\n reset() {\n this._averageItemSize = this._defaultItemSize;\n this._totalWeight = 0;\n }\n}\n\n/** Virtual scrolling strategy for lists with items of unknown or dynamic size. */\nexport class AutoSizeVirtualScrollStrategy implements VirtualScrollStrategy {\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n scrolledIndexChange = new Observable<number>(() => {\n // TODO(mmalerba): Implement.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error(\n 'cdk-virtual-scroll: scrolledIndexChange is currently not supported for the' +\n ' autosize scroll strategy',\n );\n }\n });\n\n /** The attached viewport. */\n private _viewport: CdkVirtualScrollViewport | null = null;\n\n /** The minimum amount of buffer rendered beyond the viewport (in pixels). */\n private _minBufferPx: number;\n\n /** The number of buffer items to render beyond the edge of the viewport (in pixels). */\n private _maxBufferPx: number;\n\n /** The estimator used to estimate the size of unseen items. */\n private _averager: ItemSizeAverager;\n\n /** The last measured scroll offset of the viewport. */\n private _lastScrollOffset: number;\n\n /** The last measured size of the rendered content in the viewport. */\n private _lastRenderedContentSize: number;\n\n /** The last measured size of the rendered content in the viewport. */\n private _lastRenderedContentOffset: number;\n\n /**\n * The number of consecutive cycles where removing extra items has failed. Failure here means that\n * we estimated how many items we could safely remove, but our estimate turned out to be too much\n * and it wasn't safe to remove that many elements.\n */\n private _removalFailures = 0;\n\n /**\n * @param minBufferPx The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered.\n * @param maxBufferPx The number of pixels worth of buffer to shoot for when rendering new items.\n * If the actual amount turns out to be less it will not necessarily trigger an additional\n * rendering cycle (as long as the amount of buffer is still greater than `minBufferPx`).\n * @param averager The averager used to estimate the size of unseen items.\n */\n constructor(minBufferPx: number, maxBufferPx: number, averager = new ItemSizeAverager()) {\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._averager = averager;\n }\n\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport: CdkVirtualScrollViewport) {\n this._averager.reset();\n this._viewport = viewport;\n this._renderContentForCurrentOffset();\n }\n\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._viewport = null;\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n if (this._viewport) {\n this._updateRenderedContentAfterScroll();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n if (this._viewport) {\n this._renderContentForCurrentOffset();\n this._checkRenderedContentSize();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n if (this._viewport) {\n this._checkRenderedContentSize();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n if (this._viewport) {\n this._checkRenderedContentOffset();\n }\n }\n\n /** Scroll to the offset for the given index. */\n scrollToIndex(): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // TODO(mmalerba): Implement.\n throw Error(\n 'cdk-virtual-scroll: scrollToIndex is currently not supported for the autosize' +\n ' scroll strategy',\n );\n }\n }\n\n /**\n * Update the buffer parameters.\n * @param minBufferPx The minimum amount of buffer rendered beyond the viewport (in pixels).\n * @param maxBufferPx The number of buffer items to render beyond the edge of the viewport (in\n * pixels).\n */\n updateBufferSize(minBufferPx: number, maxBufferPx: number) {\n if (maxBufferPx < minBufferPx) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n\n /** Update the rendered content after the user scrolls. */\n private _updateRenderedContentAfterScroll() {\n const viewport = this._viewport!;\n\n // The current scroll offset.\n const scrollOffset = viewport.measureScrollOffset();\n // The delta between the current scroll offset and the previously recorded scroll offset.\n let scrollDelta = scrollOffset - this._lastScrollOffset;\n // The magnitude of the scroll delta.\n let scrollMagnitude = Math.abs(scrollDelta);\n\n // The currently rendered range.\n const renderedRange = viewport.getRenderedRange();\n\n // If we're scrolling toward the top, we need to account for the fact that the predicted amount\n // of content and the actual amount of scrollable space may differ. We address this by slowly\n // correcting the difference on each scroll event.\n let offsetCorrection = 0;\n if (scrollDelta < 0) {\n // The content offset we would expect based on the average item size.\n const predictedOffset = renderedRange.start * this._averager.getAverageItemSize();\n // The difference between the predicted size of the un-rendered content at the beginning and\n // the actual available space to scroll over. We need to reduce this to zero by the time the\n // user scrolls to the top.\n // - 0 indicates that the predicted size and available space are the same.\n // - A negative number that the predicted size is smaller than the available space.\n // - A positive number indicates the predicted size is larger than the available space\n const offsetDifference = predictedOffset - this._lastRenderedContentOffset;\n // The amount of difference to correct during this scroll event. We calculate this as a\n // percentage of the total difference based on the percentage of the distance toward the top\n // that the user scrolled.\n offsetCorrection = Math.round(\n offsetDifference *\n Math.max(0, Math.min(1, scrollMagnitude / (scrollOffset + scrollMagnitude))),\n );\n\n // Based on the offset correction above, we pretend that the scroll delta was bigger or\n // smaller than it actually was, this way we can start to eliminate the difference.\n scrollDelta = scrollDelta - offsetCorrection;\n scrollMagnitude = Math.abs(scrollDelta);\n }\n\n // The current amount of buffer past the start of the viewport.\n const startBuffer = this._lastScrollOffset - this._lastRenderedContentOffset;\n // The current amount of buffer past the end of the viewport.\n const endBuffer =\n this._lastRenderedContentOffset +\n this._lastRenderedContentSize -\n (this._lastScrollOffset + viewport.getViewportSize());\n // The amount of unfilled space that should be filled on the side the user is scrolling toward\n // in order to safely absorb the scroll delta.\n const underscan =\n scrollMagnitude + this._minBufferPx - (scrollDelta < 0 ? startBuffer : endBuffer);\n\n // Check if there's unfilled space that we need to render new elements to fill.\n if (underscan > 0) {\n // Check if the scroll magnitude was larger than the viewport size. In this case the user\n // won't notice a discontinuity if we just jump to the new estimated position in the list.\n // However, if the scroll magnitude is smaller than the viewport the user might notice some\n // jitteriness if we just jump to the estimated position. Instead we make sure to scroll by\n // the same number of pixels as the scroll magnitude.\n if (scrollMagnitude >= viewport.getViewportSize()) {\n this._renderContentForCurrentOffset();\n } else {\n // The number of new items to render on the side the user is scrolling towards. Rather than\n // just filling the underscan space, we actually fill enough to have a buffer size of\n // `maxBufferPx`. This gives us a little wiggle room in case our item size estimate is off.\n const addItems = Math.max(\n 0,\n Math.ceil(\n (underscan - this._minBufferPx + this._maxBufferPx) /\n this._averager.getAverageItemSize(),\n ),\n );\n // The amount of filled space beyond what is necessary on the side the user is scrolling\n // away from.\n const overscan =\n (scrollDelta < 0 ? endBuffer : startBuffer) - this._minBufferPx + scrollMagnitude;\n // The number of currently rendered items to remove on the side the user is scrolling away\n // from. If removal has failed in recent cycles we are less aggressive in how much we try to\n // remove.\n const unboundedRemoveItems = Math.floor(\n overscan / this._averager.getAverageItemSize() / (this._removalFailures + 1),\n );\n const removeItems = Math.min(\n renderedRange.end - renderedRange.start,\n Math.max(0, unboundedRemoveItems),\n );\n\n // The new range we will tell the viewport to render. We first expand it to include the new\n // items we want rendered, we then contract the opposite side to remove items we no longer\n // want rendered.\n const range = this._expandRange(\n renderedRange,\n scrollDelta < 0 ? addItems : 0,\n scrollDelta > 0 ? addItems : 0,\n );\n if (scrollDelta < 0) {\n range.end = Math.max(range.start + 1, range.end - removeItems);\n } else {\n range.start = Math.min(range.end - 1, range.start + removeItems);\n }\n\n // The new offset we want to set on the rendered content. To determine this we measure the\n // number of pixels we removed and then adjust the offset to the start of the rendered\n // content or to the end of the rendered content accordingly (whichever one doesn't require\n // that the newly added items to be rendered to calculate.)\n let contentOffset: number;\n let contentOffsetTo: 'to-start' | 'to-end';\n if (scrollDelta < 0) {\n let removedSize = viewport.measureRangeSize({\n start: range.end,\n end: renderedRange.end,\n });\n // Check that we're not removing too much.\n if (removedSize <= overscan) {\n contentOffset =\n this._lastRenderedContentOffset + this._lastRenderedContentSize - removedSize;\n this._removalFailures = 0;\n } else {\n // If the removal is more than the overscan can absorb just undo it and record the fact\n // that the removal failed so we can be less aggressive next time.\n range.end = renderedRange.end;\n contentOffset = this._lastRenderedContentOffset + this._lastRenderedContentSize;\n this._removalFailures++;\n }\n contentOffsetTo = 'to-end';\n } else {\n const removedSize = viewport.measureRangeSize({\n start: renderedRange.start,\n end: range.start,\n });\n // Check that we're not removing too much.\n if (removedSize <= overscan) {\n contentOffset = this._lastRenderedContentOffset + removedSize;\n this._removalFailures = 0;\n } else {\n // If the removal is more than the overscan can absorb just undo it and record the fact\n // that the removal failed so we can be less aggressive next time.\n range.start = renderedRange.start;\n contentOffset = this._lastRenderedContentOffset;\n this._removalFailures++;\n }\n contentOffsetTo = 'to-start';\n }\n\n // Set the range and offset we calculated above.\n viewport.setRenderedRange(range);\n viewport.setRenderedContentOffset(contentOffset + offsetCorrection, contentOffsetTo);\n }\n } else if (offsetCorrection) {\n // Even if the rendered range didn't change, we may still need to adjust the content offset to\n // simulate scrolling slightly slower or faster than the user actually scrolled.\n viewport.setRenderedContentOffset(this._lastRenderedContentOffset + offsetCorrection);\n }\n\n // Save the scroll offset to be compared to the new value on the next scroll event.\n this._lastScrollOffset = scrollOffset;\n }\n\n /**\n * Checks the size of the currently rendered content and uses it to update the estimated item size\n * and estimated total content size.\n */\n private _checkRenderedContentSize() {\n const viewport = this._viewport!;\n this._lastRenderedContentSize = viewport.measureRenderedContentSize();\n this._averager.addSample(viewport.getRenderedRange(), this._lastRenderedContentSize);\n this._updateTotalContentSize(this._lastRenderedContentSize);\n }\n\n /** Checks the currently rendered content offset and saves the value for later use. */\n private _checkRenderedContentOffset() {\n const viewport = this._viewport!;\n this._lastRenderedContentOffset = viewport.getOffsetToRenderedContentStart()!;\n }\n\n /**\n * Recalculates the rendered content based on our estimate of what should be shown at the current\n * scroll offset.\n */\n private _renderContentForCurrentOffset() {\n const viewport = this._viewport!;\n const scrollOffset = viewport.measureScrollOffset();\n this._lastScrollOffset = scrollOffset;\n this._removalFailures = 0;\n\n const itemSize = this._averager.getAverageItemSize();\n const firstVisibleIndex = Math.min(\n viewport.getDataLength() - 1,\n Math.floor(scrollOffset / itemSize),\n );\n const bufferSize = Math.ceil(this._maxBufferPx / itemSize);\n const range = this._expandRange(\n this._getVisibleRangeForIndex(firstVisibleIndex),\n bufferSize,\n bufferSize,\n );\n\n viewport.setRenderedRange(range);\n viewport.setRenderedContentOffset(itemSize * range.start);\n }\n\n // TODO: maybe move to base class, can probably share with fixed size strategy.\n /**\n * Gets the visible range of data for the given start index. If the start index is too close to\n * the end of the list it may be backed up to ensure the estimated size of the range is enough to\n * fill the viewport.\n * Note: must not be called if `this._viewport` is null\n * @param startIndex The index to start the range at\n * @return a range estimated to be large enough to fill the viewport when rendered.\n */\n private _getVisibleRangeForIndex(startIndex: number): ListRange {\n const viewport = this._viewport!;\n const range: ListRange = {\n start: startIndex,\n end: startIndex + Math.ceil(viewport.getViewportSize() / this._averager.getAverageItemSize()),\n };\n const extra = range.end - viewport.getDataLength();\n if (extra > 0) {\n range.start = Math.max(0, range.start - extra);\n }\n return range;\n }\n\n // TODO: maybe move to base class, can probably share with fixed size strategy.\n /**\n * Expand the given range by the given amount in either direction.\n * Note: must not be called if `this._viewport` is null\n * @param range The range to expand\n * @param expandStart The number of items to expand the start of the range by.\n * @param expandEnd The number of items to expand the end of the range by.\n * @return The expanded range.\n */\n private _expandRange(range: ListRange, expandStart: number, expandEnd: number): ListRange {\n const viewport = this._viewport!;\n const start = Math.max(0, range.start - expandStart);\n const end = Math.min(viewport.getDataLength(), range.end + expandEnd);\n return {start, end};\n }\n\n /** Update the viewport's total content size. */\n private _updateTotalContentSize(renderedContentSize: number) {\n const viewport = this._viewport!;\n const renderedRange = viewport.getRenderedRange();\n const totalSize =\n renderedContentSize +\n (viewport.getDataLength() - (renderedRange.end - renderedRange.start)) *\n this._averager.getAverageItemSize();\n viewport.setTotalContentSize(totalSize);\n }\n}\n\n/**\n * Provider factory for `AutoSizeVirtualScrollStrategy` that simply extracts the already created\n * `AutoSizeVirtualScrollStrategy` from the given directive.\n * @param autoSizeDir The instance of `CdkAutoSizeVirtualScroll` to extract the\n * `AutoSizeVirtualScrollStrategy` from.\n */\nexport function _autoSizeVirtualScrollStrategyFactory(autoSizeDir: CdkAutoSizeVirtualScroll) {\n return autoSizeDir._scrollStrategy;\n}\n\n/** A virtual scroll strategy that supports unknown or dynamic size items. */\n@Directive({\n selector: 'cdk-virtual-scroll-viewport[autosize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _autoSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkAutoSizeVirtualScroll)],\n },\n ],\n})\nexport class CdkAutoSizeVirtualScroll implements OnChanges {\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n @Input()\n get minBufferPx(): number {\n return this._minBufferPx;\n }\n set minBufferPx(value: NumberInput) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n _minBufferPx = 100;\n\n /**\n * The number of pixels worth of buffer to shoot for when rendering new items.\n * If the actual amount turns out to be less it will not necessarily trigger an additional\n * rendering cycle (as long as the amount of buffer is still greater than `minBufferPx`).\n * Defaults to 200px.\n */\n @Input()\n get maxBufferPx(): number {\n return this._maxBufferPx;\n }\n set maxBufferPx(value: NumberInput) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n _maxBufferPx = 200;\n\n /** The scroll strategy used by this directive. */\n _scrollStrategy = new AutoSizeVirtualScrollStrategy(this.minBufferPx, this.maxBufferPx);\n\n ngOnChanges() {\n this._scrollStrategy.updateBufferSize(this.minBufferPx, this.maxBufferPx);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkAutoSizeVirtualScroll} from './auto-size-virtual-scroll';\n\n@NgModule({\n imports: [CdkAutoSizeVirtualScroll],\n exports: [CdkAutoSizeVirtualScroll],\n})\nexport class ScrollingModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scrolling.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/scrolling/scrolling-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ListRange} from '@angular/cdk/collections';\nimport {\n CdkVirtualScrollViewport,\n VIRTUAL_SCROLL_STRATEGY,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {Directive, forwardRef, Input, OnChanges} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * A class that tracks the size of items that have been seen and uses it to estimate the average\n * item size.\n */\nexport class ItemSizeAverager {\n /** The total amount of weight behind the current average. */\n private _totalWeight = 0;\n\n /** The current average item size. */\n private _averageItemSize: number;\n\n /** The default size to use for items when no data is available. */\n private _defaultItemSize: number;\n\n /** @param defaultItemSize The default size to use for items when no data is available. */\n constructor(defaultItemSize = 50) {\n this._defaultItemSize = defaultItemSize;\n this._averageItemSize = defaultItemSize;\n }\n\n /** Returns the average item size. */\n getAverageItemSize(): number {\n return this._averageItemSize;\n }\n\n /**\n * Adds a measurement sample for the estimator to consider.\n * @param range The measured range.\n * @param size The measured size of the given range in pixels.\n */\n addSample(range: ListRange, size: number) {\n const newTotalWeight = this._totalWeight + range.end - range.start;\n if (newTotalWeight) {\n const newAverageItemSize =\n (size + this._averageItemSize * this._totalWeight) / newTotalWeight;\n if (newAverageItemSize) {\n this._averageItemSize = newAverageItemSize;\n this._totalWeight = newTotalWeight;\n }\n }\n }\n\n /** Resets the averager. */\n reset() {\n this._averageItemSize = this._defaultItemSize;\n this._totalWeight = 0;\n }\n}\n\n/** Virtual scrolling strategy for lists with items of unknown or dynamic size. */\nexport class AutoSizeVirtualScrollStrategy implements VirtualScrollStrategy {\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n scrolledIndexChange = new Observable<number>(() => {\n // TODO(mmalerba): Implement.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error(\n 'cdk-virtual-scroll: scrolledIndexChange is currently not supported for the' +\n ' autosize scroll strategy',\n );\n }\n });\n\n /** The attached viewport. */\n private _viewport: CdkVirtualScrollViewport | null = null;\n\n /** The minimum amount of buffer rendered beyond the viewport (in pixels). */\n private _minBufferPx: number;\n\n /** The number of buffer items to render beyond the edge of the viewport (in pixels). */\n private _maxBufferPx: number;\n\n /** The estimator used to estimate the size of unseen items. */\n private _averager: ItemSizeAverager;\n\n /** The last measured scroll offset of the viewport. */\n private _lastScrollOffset: number;\n\n /** The last measured size of the rendered content in the viewport. */\n private _lastRenderedContentSize: number;\n\n /** The last measured size of the rendered content in the viewport. */\n private _lastRenderedContentOffset: number;\n\n /**\n * The number of consecutive cycles where removing extra items has failed. Failure here means that\n * we estimated how many items we could safely remove, but our estimate turned out to be too much\n * and it wasn't safe to remove that many elements.\n */\n private _removalFailures = 0;\n\n /**\n * @param minBufferPx The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered.\n * @param maxBufferPx The number of pixels worth of buffer to shoot for when rendering new items.\n * If the actual amount turns out to be less it will not necessarily trigger an additional\n * rendering cycle (as long as the amount of buffer is still greater than `minBufferPx`).\n * @param averager The averager used to estimate the size of unseen items.\n */\n constructor(minBufferPx: number, maxBufferPx: number, averager = new ItemSizeAverager()) {\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._averager = averager;\n }\n\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport: CdkVirtualScrollViewport) {\n this._averager.reset();\n this._viewport = viewport;\n this._renderContentForCurrentOffset();\n }\n\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._viewport = null;\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n if (this._viewport) {\n this._updateRenderedContentAfterScroll();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n if (this._viewport) {\n this._renderContentForCurrentOffset();\n this._checkRenderedContentSize();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n if (this._viewport) {\n this._checkRenderedContentSize();\n }\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n if (this._viewport) {\n this._checkRenderedContentOffset();\n }\n }\n\n /** Scroll to the offset for the given index. */\n scrollToIndex(): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // TODO(mmalerba): Implement.\n throw Error(\n 'cdk-virtual-scroll: scrollToIndex is currently not supported for the autosize' +\n ' scroll strategy',\n );\n }\n }\n\n /**\n * Update the buffer parameters.\n * @param minBufferPx The minimum amount of buffer rendered beyond the viewport (in pixels).\n * @param maxBufferPx The number of buffer items to render beyond the edge of the viewport (in\n * pixels).\n */\n updateBufferSize(minBufferPx: number, maxBufferPx: number) {\n if (maxBufferPx < minBufferPx) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n\n /** Update the rendered content after the user scrolls. */\n private _updateRenderedContentAfterScroll() {\n const viewport = this._viewport!;\n\n // The current scroll offset.\n const scrollOffset = viewport.measureScrollOffset();\n // The delta between the current scroll offset and the previously recorded scroll offset.\n let scrollDelta = scrollOffset - this._lastScrollOffset;\n // The magnitude of the scroll delta.\n let scrollMagnitude = Math.abs(scrollDelta);\n\n // The currently rendered range.\n const renderedRange = viewport.getRenderedRange();\n\n // If we're scrolling toward the top, we need to account for the fact that the predicted amount\n // of content and the actual amount of scrollable space may differ. We address this by slowly\n // correcting the difference on each scroll event.\n let offsetCorrection = 0;\n if (scrollDelta < 0) {\n // The content offset we would expect based on the average item size.\n const predictedOffset = renderedRange.start * this._averager.getAverageItemSize();\n // The difference between the predicted size of the un-rendered content at the beginning and\n // the actual available space to scroll over. We need to reduce this to zero by the time the\n // user scrolls to the top.\n // - 0 indicates that the predicted size and available space are the same.\n // - A negative number that the predicted size is smaller than the available space.\n // - A positive number indicates the predicted size is larger than the available space\n const offsetDifference = predictedOffset - this._lastRenderedContentOffset;\n // The amount of difference to correct during this scroll event. We calculate this as a\n // percentage of the total difference based on the percentage of the distance toward the top\n // that the user scrolled.\n offsetCorrection = Math.round(\n offsetDifference *\n Math.max(0, Math.min(1, scrollMagnitude / (scrollOffset + scrollMagnitude))),\n );\n\n // Based on the offset correction above, we pretend that the scroll delta was bigger or\n // smaller than it actually was, this way we can start to eliminate the difference.\n scrollDelta = scrollDelta - offsetCorrection;\n scrollMagnitude = Math.abs(scrollDelta);\n }\n\n // The current amount of buffer past the start of the viewport.\n const startBuffer = this._lastScrollOffset - this._lastRenderedContentOffset;\n // The current amount of buffer past the end of the viewport.\n const endBuffer =\n this._lastRenderedContentOffset +\n this._lastRenderedContentSize -\n (this._lastScrollOffset + viewport.getViewportSize());\n // The amount of unfilled space that should be filled on the side the user is scrolling toward\n // in order to safely absorb the scroll delta.\n const underscan =\n scrollMagnitude + this._minBufferPx - (scrollDelta < 0 ? startBuffer : endBuffer);\n\n // Check if there's unfilled space that we need to render new elements to fill.\n if (underscan > 0) {\n // Check if the scroll magnitude was larger than the viewport size. In this case the user\n // won't notice a discontinuity if we just jump to the new estimated position in the list.\n // However, if the scroll magnitude is smaller than the viewport the user might notice some\n // jitteriness if we just jump to the estimated position. Instead we make sure to scroll by\n // the same number of pixels as the scroll magnitude.\n if (scrollMagnitude >= viewport.getViewportSize()) {\n this._renderContentForCurrentOffset();\n } else {\n // The number of new items to render on the side the user is scrolling towards. Rather than\n // just filling the underscan space, we actually fill enough to have a buffer size of\n // `maxBufferPx`. This gives us a little wiggle room in case our item size estimate is off.\n const addItems = Math.max(\n 0,\n Math.ceil(\n (underscan - this._minBufferPx + this._maxBufferPx) /\n this._averager.getAverageItemSize(),\n ),\n );\n // The amount of filled space beyond what is necessary on the side the user is scrolling\n // away from.\n const overscan =\n (scrollDelta < 0 ? endBuffer : startBuffer) - this._minBufferPx + scrollMagnitude;\n // The number of currently rendered items to remove on the side the user is scrolling away\n // from. If removal has failed in recent cycles we are less aggressive in how much we try to\n // remove.\n const unboundedRemoveItems = Math.floor(\n overscan / this._averager.getAverageItemSize() / (this._removalFailures + 1),\n );\n const removeItems = Math.min(\n renderedRange.end - renderedRange.start,\n Math.max(0, unboundedRemoveItems),\n );\n\n // The new range we will tell the viewport to render. We first expand it to include the new\n // items we want rendered, we then contract the opposite side to remove items we no longer\n // want rendered.\n const range = this._expandRange(\n renderedRange,\n scrollDelta < 0 ? addItems : 0,\n scrollDelta > 0 ? addItems : 0,\n );\n if (scrollDelta < 0) {\n range.end = Math.max(range.start + 1, range.end - removeItems);\n } else {\n range.start = Math.min(range.end - 1, range.start + removeItems);\n }\n\n // The new offset we want to set on the rendered content. To determine this we measure the\n // number of pixels we removed and then adjust the offset to the start of the rendered\n // content or to the end of the rendered content accordingly (whichever one doesn't require\n // that the newly added items to be rendered to calculate.)\n let contentOffset: number;\n let contentOffsetTo: 'to-start' | 'to-end';\n if (scrollDelta < 0) {\n let removedSize = viewport.measureRangeSize({\n start: range.end,\n end: renderedRange.end,\n });\n // Check that we're not removing too much.\n if (removedSize <= overscan) {\n contentOffset =\n this._lastRenderedContentOffset + this._lastRenderedContentSize - removedSize;\n this._removalFailures = 0;\n } else {\n // If the removal is more than the overscan can absorb just undo it and record the fact\n // that the removal failed so we can be less aggressive next time.\n range.end = renderedRange.end;\n contentOffset = this._lastRenderedContentOffset + this._lastRenderedContentSize;\n this._removalFailures++;\n }\n contentOffsetTo = 'to-end';\n } else {\n const removedSize = viewport.measureRangeSize({\n start: renderedRange.start,\n end: range.start,\n });\n // Check that we're not removing too much.\n if (removedSize <= overscan) {\n contentOffset = this._lastRenderedContentOffset + removedSize;\n this._removalFailures = 0;\n } else {\n // If the removal is more than the overscan can absorb just undo it and record the fact\n // that the removal failed so we can be less aggressive next time.\n range.start = renderedRange.start;\n contentOffset = this._lastRenderedContentOffset;\n this._removalFailures++;\n }\n contentOffsetTo = 'to-start';\n }\n\n // Set the range and offset we calculated above.\n viewport.setRenderedRange(range);\n viewport.setRenderedContentOffset(contentOffset + offsetCorrection, contentOffsetTo);\n }\n } else if (offsetCorrection) {\n // Even if the rendered range didn't change, we may still need to adjust the content offset to\n // simulate scrolling slightly slower or faster than the user actually scrolled.\n viewport.setRenderedContentOffset(this._lastRenderedContentOffset + offsetCorrection);\n }\n\n // Save the scroll offset to be compared to the new value on the next scroll event.\n this._lastScrollOffset = scrollOffset;\n }\n\n /**\n * Checks the size of the currently rendered content and uses it to update the estimated item size\n * and estimated total content size.\n */\n private _checkRenderedContentSize() {\n const viewport = this._viewport!;\n this._lastRenderedContentSize = viewport.measureRenderedContentSize();\n this._averager.addSample(viewport.getRenderedRange(), this._lastRenderedContentSize);\n this._updateTotalContentSize(this._lastRenderedContentSize);\n }\n\n /** Checks the currently rendered content offset and saves the value for later use. */\n private _checkRenderedContentOffset() {\n const viewport = this._viewport!;\n this._lastRenderedContentOffset = viewport.getOffsetToRenderedContentStart()!;\n }\n\n /**\n * Recalculates the rendered content based on our estimate of what should be shown at the current\n * scroll offset.\n */\n private _renderContentForCurrentOffset() {\n const viewport = this._viewport!;\n const scrollOffset = viewport.measureScrollOffset();\n this._lastScrollOffset = scrollOffset;\n this._removalFailures = 0;\n\n const itemSize = this._averager.getAverageItemSize();\n const firstVisibleIndex = Math.min(\n viewport.getDataLength() - 1,\n Math.floor(scrollOffset / itemSize),\n );\n const bufferSize = Math.ceil(this._maxBufferPx / itemSize);\n const range = this._expandRange(\n this._getVisibleRangeForIndex(firstVisibleIndex),\n bufferSize,\n bufferSize,\n );\n\n viewport.setRenderedRange(range);\n viewport.setRenderedContentOffset(itemSize * range.start);\n }\n\n // TODO: maybe move to base class, can probably share with fixed size strategy.\n /**\n * Gets the visible range of data for the given start index. If the start index is too close to\n * the end of the list it may be backed up to ensure the estimated size of the range is enough to\n * fill the viewport.\n * Note: must not be called if `this._viewport` is null\n * @param startIndex The index to start the range at\n * @return a range estimated to be large enough to fill the viewport when rendered.\n */\n private _getVisibleRangeForIndex(startIndex: number): ListRange {\n const viewport = this._viewport!;\n const range: ListRange = {\n start: startIndex,\n end: startIndex + Math.ceil(viewport.getViewportSize() / this._averager.getAverageItemSize()),\n };\n const extra = range.end - viewport.getDataLength();\n if (extra > 0) {\n range.start = Math.max(0, range.start - extra);\n }\n return range;\n }\n\n // TODO: maybe move to base class, can probably share with fixed size strategy.\n /**\n * Expand the given range by the given amount in either direction.\n * Note: must not be called if `this._viewport` is null\n * @param range The range to expand\n * @param expandStart The number of items to expand the start of the range by.\n * @param expandEnd The number of items to expand the end of the range by.\n * @return The expanded range.\n */\n private _expandRange(range: ListRange, expandStart: number, expandEnd: number): ListRange {\n const viewport = this._viewport!;\n const start = Math.max(0, range.start - expandStart);\n const end = Math.min(viewport.getDataLength(), range.end + expandEnd);\n return {start, end};\n }\n\n /** Update the viewport's total content size. */\n private _updateTotalContentSize(renderedContentSize: number) {\n const viewport = this._viewport!;\n const renderedRange = viewport.getRenderedRange();\n const totalSize =\n renderedContentSize +\n (viewport.getDataLength() - (renderedRange.end - renderedRange.start)) *\n this._averager.getAverageItemSize();\n viewport.setTotalContentSize(totalSize);\n }\n}\n\n/**\n * Provider factory for `AutoSizeVirtualScrollStrategy` that simply extracts the already created\n * `AutoSizeVirtualScrollStrategy` from the given directive.\n * @param autoSizeDir The instance of `CdkAutoSizeVirtualScroll` to extract the\n * `AutoSizeVirtualScrollStrategy` from.\n */\nexport function _autoSizeVirtualScrollStrategyFactory(autoSizeDir: CdkAutoSizeVirtualScroll) {\n return autoSizeDir._scrollStrategy;\n}\n\n/** A virtual scroll strategy that supports unknown or dynamic size items. */\n@Directive({\n selector: 'cdk-virtual-scroll-viewport[autosize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _autoSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkAutoSizeVirtualScroll)],\n },\n ],\n})\nexport class CdkAutoSizeVirtualScroll implements OnChanges {\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n @Input()\n get minBufferPx(): number {\n return this._minBufferPx;\n }\n set minBufferPx(value: NumberInput) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n _minBufferPx = 100;\n\n /**\n * The number of pixels worth of buffer to shoot for when rendering new items.\n * If the actual amount turns out to be less it will not necessarily trigger an additional\n * rendering cycle (as long as the amount of buffer is still greater than `minBufferPx`).\n * Defaults to 200px.\n */\n @Input()\n get maxBufferPx(): number {\n return this._maxBufferPx;\n }\n set maxBufferPx(value: NumberInput) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n _maxBufferPx = 200;\n\n /** The scroll strategy used by this directive. */\n _scrollStrategy = new AutoSizeVirtualScrollStrategy(this.minBufferPx, this.maxBufferPx);\n\n ngOnChanges() {\n this._scrollStrategy.updateBufferSize(this.minBufferPx, this.maxBufferPx);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkAutoSizeVirtualScroll} from './auto-size-virtual-scroll';\n\n@NgModule({\n imports: [CdkAutoSizeVirtualScroll],\n exports: [CdkAutoSizeVirtualScroll],\n})\nexport class ScrollingModule {}\n"],"names":[],"mappings":"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"}
@@ -235,10 +235,10 @@ class CdkSelection {
235
235
  }
236
236
  }
237
237
  selectAllState = 'none';
238
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
239
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkSelection, isStandalone: true, selector: "[cdkSelection]", inputs: { dataSource: "dataSource", trackByFn: ["trackBy", "trackByFn"], multiple: ["cdkSelectionMultiple", "multiple"] }, outputs: { change: "cdkSelectionChange" }, exportAs: ["cdkSelection"], ngImport: i0 });
238
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
239
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.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 });
240
240
  }
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelection, decorators: [{
241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelection, decorators: [{
242
242
  type: Directive,
243
243
  args: [{
244
244
  selector: '[cdkSelection]',
@@ -332,10 +332,10 @@ class CdkSelectAll {
332
332
  this._destroyed.next();
333
333
  this._destroyed.complete();
334
334
  }
335
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectAll, deps: [], target: i0.ɵɵFactoryTarget.Directive });
336
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkSelectAll, isStandalone: true, selector: "[cdkSelectAll]", exportAs: ["cdkSelectAll"], ngImport: i0 });
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectAll, deps: [], target: i0.ɵɵFactoryTarget.Directive });
336
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkSelectAll, isStandalone: true, selector: "[cdkSelectAll]", exportAs: ["cdkSelectAll"], ngImport: i0 });
337
337
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectAll, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectAll, decorators: [{
339
339
  type: Directive,
340
340
  args: [{
341
341
  selector: '[cdkSelectAll]',
@@ -405,10 +405,10 @@ class CdkSelectionToggle {
405
405
  _isSelected() {
406
406
  return this._selection.isSelected(this.value, this.index);
407
407
  }
408
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
409
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkSelectionToggle, isStandalone: true, selector: "[cdkSelectionToggle]", inputs: { value: ["cdkSelectionToggleValue", "value"], index: ["cdkSelectionToggleIndex", "index"] }, exportAs: ["cdkSelectionToggle"], ngImport: i0 });
408
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
409
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkSelectionToggle, isStandalone: true, selector: "[cdkSelectionToggle]", inputs: { value: ["cdkSelectionToggleValue", "value"], index: ["cdkSelectionToggleIndex", "index"] }, exportAs: ["cdkSelectionToggle"], ngImport: i0 });
410
410
  }
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionToggle, decorators: [{
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionToggle, decorators: [{
412
412
  type: Directive,
413
413
  args: [{
414
414
  selector: '[cdkSelectionToggle]',
@@ -467,8 +467,8 @@ class CdkSelectionColumn {
467
467
  this._columnDef.name = this._name;
468
468
  }
469
469
  }
470
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
471
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0-rc.1", type: CdkSelectionColumn, isStandalone: true, selector: "cdk-selection-column", inputs: { name: ["cdkSelectionColumnName", "name"] }, viewQueries: [{ propertyName: "_columnDef", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: "_cell", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: "_headerCell", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `
470
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
471
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0-next.2", type: CdkSelectionColumn, isStandalone: true, selector: "cdk-selection-column", inputs: { name: ["cdkSelectionColumnName", "name"] }, viewQueries: [{ propertyName: "_columnDef", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: "_cell", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: "_headerCell", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `
472
472
  <ng-container cdkColumnDef>
473
473
  <th cdkHeaderCell *cdkHeaderCellDef>
474
474
  @if (selection && selection.multiple) {
@@ -492,7 +492,7 @@ class CdkSelectionColumn {
492
492
  </ng-container>
493
493
  `, isInline: true, dependencies: [{ kind: "directive", type: CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["cdkColumnDef", "sticky", "stickyEnd"] }, { kind: "directive", type: CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: CdkSelectAll, selector: "[cdkSelectAll]", exportAs: ["cdkSelectAll"] }, { kind: "directive", type: CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: CdkSelectionToggle, selector: "[cdkSelectionToggle]", inputs: ["cdkSelectionToggleValue", "cdkSelectionToggleIndex"], exportAs: ["cdkSelectionToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
494
494
  }
495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionColumn, decorators: [{
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionColumn, decorators: [{
496
496
  type: Component,
497
497
  args: [{
498
498
  selector: 'cdk-selection-column',
@@ -562,10 +562,10 @@ class CdkRowSelection {
562
562
  this._index = coerceNumberProperty(index);
563
563
  }
564
564
  _index;
565
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkRowSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
566
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkRowSelection, isStandalone: true, selector: "[cdkRowSelection]", inputs: { value: ["cdkRowSelectionValue", "value"], index: ["cdkRowSelectionIndex", "index"] }, host: { properties: { "class.cdk-selected": "_selection.isSelected(this.value, this.index)", "attr.aria-selected": "_selection.isSelected(this.value, this.index)" } }, ngImport: i0 });
565
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkRowSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
566
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkRowSelection, isStandalone: true, selector: "[cdkRowSelection]", inputs: { value: ["cdkRowSelectionValue", "value"], index: ["cdkRowSelectionIndex", "index"] }, host: { properties: { "class.cdk-selected": "_selection.isSelected(this.value, this.index)", "attr.aria-selected": "_selection.isSelected(this.value, this.index)" } }, ngImport: i0 });
567
567
  }
568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkRowSelection, decorators: [{
568
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkRowSelection, decorators: [{
569
569
  type: Directive,
570
570
  args: [{
571
571
  selector: '[cdkRowSelection]',
@@ -583,16 +583,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ng
583
583
  }] } });
584
584
 
585
585
  class CdkSelectionModule {
586
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
587
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionModule, imports: [CdkTableModule,
586
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
587
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionModule, imports: [CdkTableModule,
588
588
  CdkSelection,
589
589
  CdkSelectionToggle,
590
590
  CdkSelectAll,
591
591
  CdkSelectionColumn,
592
592
  CdkRowSelection], exports: [CdkSelection, CdkSelectionToggle, CdkSelectAll, CdkSelectionColumn, CdkRowSelection] });
593
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionModule, imports: [CdkTableModule] });
593
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionModule, imports: [CdkTableModule] });
594
594
  }
595
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkSelectionModule, decorators: [{
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkSelectionModule, decorators: [{
596
596
  type: NgModule,
597
597
  args: [{
598
598
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"selection.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/selection-set.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/selection.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/select-all.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/selection-toggle.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/selection-column.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/row-selection.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/selection/selection-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {TrackByFunction} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Maintains a set of selected values. One or more values can be added to or removed from the\n * selection.\n */\ninterface TrackBySelection<T> {\n isSelected(value: SelectableWithIndex<T>): boolean;\n select(...values: SelectableWithIndex<T>[]): void;\n deselect(...values: SelectableWithIndex<T>[]): void;\n changed: Subject<SelectionChange<T>>;\n}\n\n/**\n * A selectable value with an optional index. The index is required when the selection is used with\n * `trackBy`.\n */\nexport interface SelectableWithIndex<T> {\n value: T;\n index?: number;\n}\n\n/**\n * Represents the change in the selection set.\n */\nexport interface SelectionChange<T> {\n before: SelectableWithIndex<T>[];\n after: SelectableWithIndex<T>[];\n}\n\n/**\n * Maintains a set of selected items. Support selecting and deselecting items, and checking if a\n * value is selected.\n * When constructed with a `trackByFn`, all the items will be identified by applying the `trackByFn`\n * on them. Because `trackByFn` requires the index of the item to be passed in, the `index` field is\n * expected to be set when calling `isSelected`, `select` and `deselect`.\n */\nexport class SelectionSet<T> implements TrackBySelection<T> {\n private _selectionMap = new Map<T | ReturnType<TrackByFunction<T>>, SelectableWithIndex<T>>();\n changed = new Subject<SelectionChange<T>>();\n\n constructor(\n private _multiple = false,\n private _trackByFn?: TrackByFunction<T>,\n ) {}\n\n isSelected(value: SelectableWithIndex<T>): boolean {\n return this._selectionMap.has(this._getTrackedByValue(value));\n }\n\n select(...selects: SelectableWithIndex<T>[]) {\n if (!this._multiple && selects.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: not multiple selection');\n }\n\n const before = this._getCurrentSelection();\n\n if (!this._multiple) {\n this._selectionMap.clear();\n }\n\n const toSelect: SelectableWithIndex<T>[] = [];\n for (const select of selects) {\n if (this.isSelected(select)) {\n continue;\n }\n\n toSelect.push(select);\n this._markSelected(this._getTrackedByValue(select), select);\n }\n\n const after = this._getCurrentSelection();\n\n this.changed.next({before, after});\n }\n\n deselect(...selects: SelectableWithIndex<T>[]) {\n if (!this._multiple && selects.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: not multiple selection');\n }\n\n const before = this._getCurrentSelection();\n const toDeselect: SelectableWithIndex<T>[] = [];\n\n for (const select of selects) {\n if (!this.isSelected(select)) {\n continue;\n }\n\n toDeselect.push(select);\n this._markDeselected(this._getTrackedByValue(select));\n }\n\n const after = this._getCurrentSelection();\n this.changed.next({before, after});\n }\n\n private _markSelected(key: T | ReturnType<TrackByFunction<T>>, toSelect: SelectableWithIndex<T>) {\n this._selectionMap.set(key, toSelect);\n }\n\n private _markDeselected(key: T | ReturnType<TrackByFunction<T>>) {\n this._selectionMap.delete(key);\n }\n\n private _getTrackedByValue(select: SelectableWithIndex<T>) {\n if (!this._trackByFn) {\n return select.value;\n }\n\n if (select.index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: index required when trackByFn is used.');\n }\n\n return this._trackByFn(select.index!, select.value);\n }\n\n private _getCurrentSelection(): SelectableWithIndex<T>[] {\n return Array.from(this._selectionMap.values());\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 {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CollectionViewer, DataSource, isDataSource, ListRange} from '@angular/cdk/collections';\nimport {\n AfterContentChecked,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TrackByFunction,\n} from '@angular/core';\nimport {Observable, of as observableOf, Subject, Subscription} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {SelectableWithIndex, SelectionChange, SelectionSet} from './selection-set';\n\n/**\n * Manages the selection states of the items and provides methods to check and update the selection\n * states.\n * It must be applied to the parent element if `cdkSelectionToggle`, `cdkSelectAll`,\n * `cdkRowSelection` and `cdkSelectionColumn` are applied.\n */\n@Directive({\n selector: '[cdkSelection]',\n exportAs: 'cdkSelection',\n})\nexport class CdkSelection<T> implements OnInit, AfterContentChecked, CollectionViewer, OnDestroy {\n viewChange: Observable<ListRange>;\n\n @Input()\n get dataSource(): TableDataSource<T> {\n return this._dataSource;\n }\n set dataSource(dataSource: TableDataSource<T>) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n private _dataSource: TableDataSource<T>;\n\n @Input('trackBy') trackByFn: TrackByFunction<T>;\n\n /** Whether to support multiple selection */\n @Input('cdkSelectionMultiple')\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(multiple: BooleanInput) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n protected _multiple: boolean;\n\n /** Emits when selection changes. */\n @Output('cdkSelectionChange') readonly change = new EventEmitter<SelectionChange<T>>();\n\n /** Latest data provided by the data source. */\n private _data: T[] | readonly T[];\n\n /** Subscription that listens for the data provided by the data source. */\n private _renderChangeSubscription: Subscription | null;\n\n private _destroyed = new Subject<void>();\n\n private _selection: SelectionSet<T>;\n\n private _switchDataSource(dataSource: TableDataSource<T>) {\n this._data = [];\n\n // TODO: Move this logic to a shared function in `cdk/collections`.\n if (isDataSource(this._dataSource)) {\n this._dataSource.disconnect(this);\n }\n\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n\n this._dataSource = dataSource;\n }\n\n private _observeRenderChanges() {\n if (!this._dataSource) {\n return;\n }\n\n let dataStream: Observable<readonly T[]> | undefined;\n\n if (isDataSource(this._dataSource)) {\n dataStream = this._dataSource.connect(this);\n } else if (this._dataSource instanceof Observable) {\n dataStream = this._dataSource;\n } else if (Array.isArray(this._dataSource)) {\n dataStream = observableOf(this._dataSource);\n }\n\n if (dataStream == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Unknown data source');\n }\n\n this._renderChangeSubscription = dataStream!\n .pipe(takeUntil(this._destroyed))\n .subscribe(data => {\n this._data = data || [];\n });\n }\n\n ngOnInit() {\n this._selection = new SelectionSet<T>(this._multiple, this.trackByFn);\n this._selection.changed.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateSelectAllState();\n this.change.emit(change);\n });\n }\n\n ngAfterContentChecked() {\n if (this._dataSource && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n\n if (isDataSource(this._dataSource)) {\n this._dataSource.disconnect(this);\n }\n }\n\n /** Toggles selection for a given value. `index` is required if `trackBy` is used. */\n toggleSelection(value: T, index?: number) {\n if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: index required when trackBy is used');\n }\n\n if (this.isSelected(value, index)) {\n this._selection.deselect({value, index});\n } else {\n this._selection.select({value, index});\n }\n }\n\n /**\n * Toggles select-all. If no value is selected, select all values. If all values or some of the\n * values are selected, de-select all values.\n */\n toggleSelectAll() {\n if (!this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: multiple selection not enabled');\n }\n\n if (this.selectAllState === 'none') {\n this._selectAll();\n } else {\n this._clearAll();\n }\n }\n\n /** Checks whether a value is selected. `index` is required if `trackBy` is used. */\n isSelected(value: T, index?: number) {\n if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: index required when trackBy is used');\n }\n\n return this._selection.isSelected({value, index});\n }\n\n /** Checks whether all values are selected. */\n isAllSelected() {\n return this._data.every((value, index) => this._selection.isSelected({value, index}));\n }\n\n /** Checks whether partially selected. */\n isPartialSelected() {\n return (\n !this.isAllSelected() &&\n this._data.some((value, index) => this._selection.isSelected({value, index}))\n );\n }\n\n private _selectAll() {\n const toSelect: SelectableWithIndex<T>[] = [];\n this._data.forEach((value, index) => {\n toSelect.push({value, index});\n });\n\n this._selection.select(...toSelect);\n }\n\n private _clearAll() {\n const toDeselect: SelectableWithIndex<T>[] = [];\n this._data.forEach((value, index) => {\n toDeselect.push({value, index});\n });\n\n this._selection.deselect(...toDeselect);\n }\n\n private _updateSelectAllState() {\n if (this.isAllSelected()) {\n this.selectAllState = 'all';\n } else if (this.isPartialSelected()) {\n this.selectAllState = 'partial';\n } else {\n this.selectAllState = 'none';\n }\n }\n\n selectAllState: SelectAllState = 'none';\n}\n\ntype SelectAllState = 'all' | 'none' | 'partial';\ntype TableDataSource<T> = DataSource<T> | Observable<readonly T[]> | readonly T[];\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, OnDestroy, OnInit, inject} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, of as observableOf, Subject} from 'rxjs';\nimport {switchMap, takeUntil} from 'rxjs/operators';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Makes the element a select-all toggle.\n *\n * Must be used within a parent `CdkSelection` directive. It toggles the selection states\n * of all the selection toggles connected with the `CdkSelection` directive.\n * If the element implements `ControlValueAccessor`, e.g. `MatCheckbox`, the directive\n * automatically connects it with the select-all state provided by the `CdkSelection` directive. If\n * not, use `checked$` to get the checked state, `indeterminate$` to get the indeterminate state,\n * and `toggle()` to change the selection state.\n */\n@Directive({\n selector: '[cdkSelectAll]',\n exportAs: 'cdkSelectAll',\n})\nexport class CdkSelectAll<T> implements OnDestroy, OnInit {\n private readonly _selection = inject<CdkSelection<T>>(CdkSelection, {optional: true})!;\n private readonly _controlValueAccessor = inject(NG_VALUE_ACCESSOR, {optional: true, self: true});\n\n /**\n * The checked state of the toggle.\n * Resolves to `true` if all the values are selected, `false` if no value is selected.\n */\n readonly checked: Observable<boolean>;\n\n /**\n * The indeterminate state of the toggle.\n * Resolves to `true` if part (not all) of the values are selected, `false` if all values or no\n * value at all are selected.\n */\n readonly indeterminate: Observable<boolean>;\n\n /**\n * Toggles the select-all state.\n * @param event The click event if the toggle is triggered by a (mouse or keyboard) click. If\n * using with a native `<input type=\"checkbox\">`, the parameter is required for the\n * indeterminate state to work properly.\n */\n toggle(event?: MouseEvent) {\n // This is needed when applying the directive on a native <input type=\"checkbox\">\n // checkbox. The default behavior needs to be prevented in order to support the indeterminate\n // state. The timeout is also needed so the checkbox can show the latest state.\n if (event) {\n event.preventDefault();\n }\n\n setTimeout(() => {\n this._selection.toggleSelectAll();\n });\n }\n\n private readonly _destroyed = new Subject<void>();\n\n constructor() {\n const _selection = this._selection;\n\n this.checked = _selection.change.pipe(\n switchMap(() => observableOf(_selection.isAllSelected())),\n );\n\n this.indeterminate = _selection.change.pipe(\n switchMap(() => observableOf(_selection.isPartialSelected())),\n );\n }\n\n ngOnInit() {\n this._assertValidParentSelection();\n this._configureControlValueAccessor();\n }\n\n private _configureControlValueAccessor() {\n if (this._controlValueAccessor && this._controlValueAccessor.length) {\n this._controlValueAccessor[0].registerOnChange((e: unknown) => {\n if (e === true || e === false) {\n this.toggle();\n }\n });\n this.checked.pipe(takeUntil(this._destroyed)).subscribe(state => {\n this._controlValueAccessor![0].writeValue(state);\n });\n }\n }\n\n private _assertValidParentSelection() {\n if (!this._selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: missing CdkSelection in the parent');\n }\n\n if (!this._selection.multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: CdkSelection must have cdkSelectionMultiple set to true');\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\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 {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Directive, Input, OnDestroy, OnInit, inject} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, of as observableOf, Subject} from 'rxjs';\nimport {distinctUntilChanged, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Makes the element a selection toggle.\n *\n * Must be used within a parent `CdkSelection` directive.\n * Must be provided with the value. If `trackBy` is used on `CdkSelection`, the index of the value\n * is required. If the element implements `ControlValueAccessor`, e.g. `MatCheckbox`, the directive\n * automatically connects it with the selection state provided by the `CdkSelection` directive. If\n * not, use `checked$` to get the checked state of the value, and `toggle()` to change the selection\n * state.\n */\n@Directive({\n selector: '[cdkSelectionToggle]',\n exportAs: 'cdkSelectionToggle',\n})\nexport class CdkSelectionToggle<T> implements OnDestroy, OnInit {\n private _selection = inject<CdkSelection<T>>(CdkSelection, {optional: true})!;\n private _controlValueAccessors = inject(NG_VALUE_ACCESSOR, {optional: true, self: true});\n\n /** The value that is associated with the toggle */\n @Input('cdkSelectionToggleValue') value: T;\n\n /** The index of the value in the list. Required when used with `trackBy` */\n @Input('cdkSelectionToggleIndex')\n get index(): number | undefined {\n return this._index;\n }\n set index(index: NumberInput) {\n this._index = coerceNumberProperty(index);\n }\n protected _index?: number;\n\n /** The checked state of the selection toggle */\n readonly checked: Observable<boolean>;\n\n /** Toggles the selection */\n toggle() {\n this._selection.toggleSelection(this.value, this.index);\n }\n\n private _destroyed = new Subject<void>();\n\n constructor() {\n const _selection = this._selection;\n\n this.checked = _selection.change.pipe(\n switchMap(() => observableOf(this._isSelected())),\n distinctUntilChanged(),\n );\n }\n\n ngOnInit() {\n this._assertValidParentSelection();\n this._configureControlValueAccessor();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n private _assertValidParentSelection() {\n if (!this._selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: missing CdkSelection in the parent');\n }\n }\n\n private _configureControlValueAccessor() {\n if (this._controlValueAccessors && this._controlValueAccessors.length) {\n this._controlValueAccessors[0].registerOnChange((e: unknown) => {\n if (typeof e === 'boolean') {\n this.toggle();\n }\n });\n\n this.checked.pipe(takeUntil(this._destroyed)).subscribe(state => {\n this._controlValueAccessors![0].writeValue(state);\n });\n }\n }\n\n private _isSelected(): boolean {\n return this._selection.isSelected(this.value, this.index);\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 {CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkTable} from '@angular/cdk/table';\nimport {\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\nimport {CdkSelection} from './selection';\nimport {AsyncPipe} from '@angular/common';\nimport {CdkSelectionToggle} from './selection-toggle';\nimport {CdkSelectAll} from './select-all';\n\n/**\n * Column that adds row selecting checkboxes and a select-all checkbox if `cdkSelectionMultiple` is\n * `true`.\n *\n * Must be used within a parent `CdkSelection` directive.\n */\n@Component({\n selector: 'cdk-selection-column',\n template: `\n <ng-container cdkColumnDef>\n <th cdkHeaderCell *cdkHeaderCellDef>\n @if (selection && selection.multiple) {\n <input type=\"checkbox\"\n cdkSelectAll\n #allToggler=\"cdkSelectAll\"\n [checked]=\"allToggler.checked | async\"\n [indeterminate]=\"allToggler.indeterminate | async\"\n (click)=\"allToggler.toggle($event)\">\n }\n </th>\n <td cdkCell *cdkCellDef=\"let row; let i = $index\">\n <input type=\"checkbox\"\n #toggler=\"cdkSelectionToggle\"\n cdkSelectionToggle\n [cdkSelectionToggleValue]=\"row\"\n [cdkSelectionToggleIndex]=\"i\"\n (click)=\"toggler.toggle()\"\n [checked]=\"toggler.checked | async\">\n </td>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CdkColumnDef,\n CdkHeaderCellDef,\n CdkSelectAll,\n CdkCellDef,\n CdkSelectionToggle,\n AsyncPipe,\n ],\n})\nexport class CdkSelectionColumn<T> implements OnInit, OnDestroy {\n private _table = inject<CdkTable<T>>(CdkTable, {optional: true});\n readonly selection = inject<CdkSelection<T>>(CdkSelection, {optional: true});\n\n /** Column name that should be used to reference this column. */\n @Input('cdkSelectionColumnName')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n\n this._syncColumnDefName();\n }\n private _name: string;\n\n @ViewChild(CdkColumnDef, {static: true}) private readonly _columnDef: CdkColumnDef;\n @ViewChild(CdkCellDef, {static: true}) private readonly _cell: CdkCellDef;\n @ViewChild(CdkHeaderCellDef, {static: true}) private readonly _headerCell: CdkHeaderCellDef;\n\n ngOnInit() {\n if (!this.selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectionColumn: missing CdkSelection in the parent');\n }\n\n this._syncColumnDefName();\n\n if (this._table) {\n this._columnDef.cell = this._cell;\n this._columnDef.headerCell = this._headerCell;\n this._table.addColumnDef(this._columnDef);\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error('CdkSelectionColumn: missing parent table');\n }\n }\n\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this._columnDef);\n }\n }\n\n private _syncColumnDefName() {\n if (this._columnDef) {\n this._columnDef.name = this._name;\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 {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Directive, Input, inject} from '@angular/core';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Applies `cdk-selected` class and `aria-selected` to an element.\n *\n * Must be used within a parent `CdkSelection` directive.\n * Must be provided with the value. The index is required if `trackBy` is used on the `CdkSelection`\n * directive.\n */\n@Directive({\n selector: '[cdkRowSelection]',\n host: {\n '[class.cdk-selected]': '_selection.isSelected(this.value, this.index)',\n '[attr.aria-selected]': '_selection.isSelected(this.value, this.index)',\n },\n})\nexport class CdkRowSelection<T> {\n readonly _selection = inject<CdkSelection<T>>(CdkSelection);\n\n // We need an initializer here to avoid a TS error.\n @Input('cdkRowSelectionValue') value: T = undefined!;\n\n @Input('cdkRowSelectionIndex')\n get index(): number | undefined {\n return this._index;\n }\n set index(index: NumberInput) {\n this._index = coerceNumberProperty(index);\n }\n protected _index?: number;\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 {CdkTableModule} from '@angular/cdk/table';\nimport {NgModule} from '@angular/core';\n\nimport {CdkRowSelection} from './row-selection';\nimport {CdkSelectAll} from './select-all';\nimport {CdkSelection} from './selection';\nimport {CdkSelectionColumn} from './selection-column';\nimport {CdkSelectionToggle} from './selection-toggle';\n\n@NgModule({\n imports: [\n CdkTableModule,\n CdkSelection,\n CdkSelectionToggle,\n CdkSelectAll,\n CdkSelectionColumn,\n CdkRowSelection,\n ],\n exports: [CdkSelection, CdkSelectionToggle, CdkSelectAll, CdkSelectionColumn, CdkRowSelection],\n})\nexport class CdkSelectionModule {}\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"selection.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/selection-set.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/selection.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/select-all.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/selection-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/selection-column.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/row-selection.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/selection/selection-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {TrackByFunction} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Maintains a set of selected values. One or more values can be added to or removed from the\n * selection.\n */\ninterface TrackBySelection<T> {\n isSelected(value: SelectableWithIndex<T>): boolean;\n select(...values: SelectableWithIndex<T>[]): void;\n deselect(...values: SelectableWithIndex<T>[]): void;\n changed: Subject<SelectionChange<T>>;\n}\n\n/**\n * A selectable value with an optional index. The index is required when the selection is used with\n * `trackBy`.\n */\nexport interface SelectableWithIndex<T> {\n value: T;\n index?: number;\n}\n\n/**\n * Represents the change in the selection set.\n */\nexport interface SelectionChange<T> {\n before: SelectableWithIndex<T>[];\n after: SelectableWithIndex<T>[];\n}\n\n/**\n * Maintains a set of selected items. Support selecting and deselecting items, and checking if a\n * value is selected.\n * When constructed with a `trackByFn`, all the items will be identified by applying the `trackByFn`\n * on them. Because `trackByFn` requires the index of the item to be passed in, the `index` field is\n * expected to be set when calling `isSelected`, `select` and `deselect`.\n */\nexport class SelectionSet<T> implements TrackBySelection<T> {\n private _selectionMap = new Map<T | ReturnType<TrackByFunction<T>>, SelectableWithIndex<T>>();\n changed = new Subject<SelectionChange<T>>();\n\n constructor(\n private _multiple = false,\n private _trackByFn?: TrackByFunction<T>,\n ) {}\n\n isSelected(value: SelectableWithIndex<T>): boolean {\n return this._selectionMap.has(this._getTrackedByValue(value));\n }\n\n select(...selects: SelectableWithIndex<T>[]) {\n if (!this._multiple && selects.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: not multiple selection');\n }\n\n const before = this._getCurrentSelection();\n\n if (!this._multiple) {\n this._selectionMap.clear();\n }\n\n const toSelect: SelectableWithIndex<T>[] = [];\n for (const select of selects) {\n if (this.isSelected(select)) {\n continue;\n }\n\n toSelect.push(select);\n this._markSelected(this._getTrackedByValue(select), select);\n }\n\n const after = this._getCurrentSelection();\n\n this.changed.next({before, after});\n }\n\n deselect(...selects: SelectableWithIndex<T>[]) {\n if (!this._multiple && selects.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: not multiple selection');\n }\n\n const before = this._getCurrentSelection();\n const toDeselect: SelectableWithIndex<T>[] = [];\n\n for (const select of selects) {\n if (!this.isSelected(select)) {\n continue;\n }\n\n toDeselect.push(select);\n this._markDeselected(this._getTrackedByValue(select));\n }\n\n const after = this._getCurrentSelection();\n this.changed.next({before, after});\n }\n\n private _markSelected(key: T | ReturnType<TrackByFunction<T>>, toSelect: SelectableWithIndex<T>) {\n this._selectionMap.set(key, toSelect);\n }\n\n private _markDeselected(key: T | ReturnType<TrackByFunction<T>>) {\n this._selectionMap.delete(key);\n }\n\n private _getTrackedByValue(select: SelectableWithIndex<T>) {\n if (!this._trackByFn) {\n return select.value;\n }\n\n if (select.index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('SelectionSet: index required when trackByFn is used.');\n }\n\n return this._trackByFn(select.index!, select.value);\n }\n\n private _getCurrentSelection(): SelectableWithIndex<T>[] {\n return Array.from(this._selectionMap.values());\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 {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CollectionViewer, DataSource, isDataSource, ListRange} from '@angular/cdk/collections';\nimport {\n AfterContentChecked,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TrackByFunction,\n} from '@angular/core';\nimport {Observable, of as observableOf, Subject, Subscription} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {SelectableWithIndex, SelectionChange, SelectionSet} from './selection-set';\n\n/**\n * Manages the selection states of the items and provides methods to check and update the selection\n * states.\n * It must be applied to the parent element if `cdkSelectionToggle`, `cdkSelectAll`,\n * `cdkRowSelection` and `cdkSelectionColumn` are applied.\n */\n@Directive({\n selector: '[cdkSelection]',\n exportAs: 'cdkSelection',\n})\nexport class CdkSelection<T> implements OnInit, AfterContentChecked, CollectionViewer, OnDestroy {\n viewChange: Observable<ListRange>;\n\n @Input()\n get dataSource(): TableDataSource<T> {\n return this._dataSource;\n }\n set dataSource(dataSource: TableDataSource<T>) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n private _dataSource: TableDataSource<T>;\n\n @Input('trackBy') trackByFn: TrackByFunction<T>;\n\n /** Whether to support multiple selection */\n @Input('cdkSelectionMultiple')\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(multiple: BooleanInput) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n protected _multiple: boolean;\n\n /** Emits when selection changes. */\n @Output('cdkSelectionChange') readonly change = new EventEmitter<SelectionChange<T>>();\n\n /** Latest data provided by the data source. */\n private _data: T[] | readonly T[];\n\n /** Subscription that listens for the data provided by the data source. */\n private _renderChangeSubscription: Subscription | null;\n\n private _destroyed = new Subject<void>();\n\n private _selection: SelectionSet<T>;\n\n private _switchDataSource(dataSource: TableDataSource<T>) {\n this._data = [];\n\n // TODO: Move this logic to a shared function in `cdk/collections`.\n if (isDataSource(this._dataSource)) {\n this._dataSource.disconnect(this);\n }\n\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n\n this._dataSource = dataSource;\n }\n\n private _observeRenderChanges() {\n if (!this._dataSource) {\n return;\n }\n\n let dataStream: Observable<readonly T[]> | undefined;\n\n if (isDataSource(this._dataSource)) {\n dataStream = this._dataSource.connect(this);\n } else if (this._dataSource instanceof Observable) {\n dataStream = this._dataSource;\n } else if (Array.isArray(this._dataSource)) {\n dataStream = observableOf(this._dataSource);\n }\n\n if (dataStream == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Unknown data source');\n }\n\n this._renderChangeSubscription = dataStream!\n .pipe(takeUntil(this._destroyed))\n .subscribe(data => {\n this._data = data || [];\n });\n }\n\n ngOnInit() {\n this._selection = new SelectionSet<T>(this._multiple, this.trackByFn);\n this._selection.changed.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateSelectAllState();\n this.change.emit(change);\n });\n }\n\n ngAfterContentChecked() {\n if (this._dataSource && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n\n if (isDataSource(this._dataSource)) {\n this._dataSource.disconnect(this);\n }\n }\n\n /** Toggles selection for a given value. `index` is required if `trackBy` is used. */\n toggleSelection(value: T, index?: number) {\n if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: index required when trackBy is used');\n }\n\n if (this.isSelected(value, index)) {\n this._selection.deselect({value, index});\n } else {\n this._selection.select({value, index});\n }\n }\n\n /**\n * Toggles select-all. If no value is selected, select all values. If all values or some of the\n * values are selected, de-select all values.\n */\n toggleSelectAll() {\n if (!this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: multiple selection not enabled');\n }\n\n if (this.selectAllState === 'none') {\n this._selectAll();\n } else {\n this._clearAll();\n }\n }\n\n /** Checks whether a value is selected. `index` is required if `trackBy` is used. */\n isSelected(value: T, index?: number) {\n if (!!this.trackByFn && index == null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelection: index required when trackBy is used');\n }\n\n return this._selection.isSelected({value, index});\n }\n\n /** Checks whether all values are selected. */\n isAllSelected() {\n return this._data.every((value, index) => this._selection.isSelected({value, index}));\n }\n\n /** Checks whether partially selected. */\n isPartialSelected() {\n return (\n !this.isAllSelected() &&\n this._data.some((value, index) => this._selection.isSelected({value, index}))\n );\n }\n\n private _selectAll() {\n const toSelect: SelectableWithIndex<T>[] = [];\n this._data.forEach((value, index) => {\n toSelect.push({value, index});\n });\n\n this._selection.select(...toSelect);\n }\n\n private _clearAll() {\n const toDeselect: SelectableWithIndex<T>[] = [];\n this._data.forEach((value, index) => {\n toDeselect.push({value, index});\n });\n\n this._selection.deselect(...toDeselect);\n }\n\n private _updateSelectAllState() {\n if (this.isAllSelected()) {\n this.selectAllState = 'all';\n } else if (this.isPartialSelected()) {\n this.selectAllState = 'partial';\n } else {\n this.selectAllState = 'none';\n }\n }\n\n selectAllState: SelectAllState = 'none';\n}\n\ntype SelectAllState = 'all' | 'none' | 'partial';\ntype TableDataSource<T> = DataSource<T> | Observable<readonly T[]> | readonly T[];\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, OnDestroy, OnInit, inject} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, of as observableOf, Subject} from 'rxjs';\nimport {switchMap, takeUntil} from 'rxjs/operators';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Makes the element a select-all toggle.\n *\n * Must be used within a parent `CdkSelection` directive. It toggles the selection states\n * of all the selection toggles connected with the `CdkSelection` directive.\n * If the element implements `ControlValueAccessor`, e.g. `MatCheckbox`, the directive\n * automatically connects it with the select-all state provided by the `CdkSelection` directive. If\n * not, use `checked$` to get the checked state, `indeterminate$` to get the indeterminate state,\n * and `toggle()` to change the selection state.\n */\n@Directive({\n selector: '[cdkSelectAll]',\n exportAs: 'cdkSelectAll',\n})\nexport class CdkSelectAll<T> implements OnDestroy, OnInit {\n private readonly _selection = inject<CdkSelection<T>>(CdkSelection, {optional: true})!;\n private readonly _controlValueAccessor = inject(NG_VALUE_ACCESSOR, {optional: true, self: true});\n\n /**\n * The checked state of the toggle.\n * Resolves to `true` if all the values are selected, `false` if no value is selected.\n */\n readonly checked: Observable<boolean>;\n\n /**\n * The indeterminate state of the toggle.\n * Resolves to `true` if part (not all) of the values are selected, `false` if all values or no\n * value at all are selected.\n */\n readonly indeterminate: Observable<boolean>;\n\n /**\n * Toggles the select-all state.\n * @param event The click event if the toggle is triggered by a (mouse or keyboard) click. If\n * using with a native `<input type=\"checkbox\">`, the parameter is required for the\n * indeterminate state to work properly.\n */\n toggle(event?: MouseEvent) {\n // This is needed when applying the directive on a native <input type=\"checkbox\">\n // checkbox. The default behavior needs to be prevented in order to support the indeterminate\n // state. The timeout is also needed so the checkbox can show the latest state.\n if (event) {\n event.preventDefault();\n }\n\n setTimeout(() => {\n this._selection.toggleSelectAll();\n });\n }\n\n private readonly _destroyed = new Subject<void>();\n\n constructor() {\n const _selection = this._selection;\n\n this.checked = _selection.change.pipe(\n switchMap(() => observableOf(_selection.isAllSelected())),\n );\n\n this.indeterminate = _selection.change.pipe(\n switchMap(() => observableOf(_selection.isPartialSelected())),\n );\n }\n\n ngOnInit() {\n this._assertValidParentSelection();\n this._configureControlValueAccessor();\n }\n\n private _configureControlValueAccessor() {\n if (this._controlValueAccessor && this._controlValueAccessor.length) {\n this._controlValueAccessor[0].registerOnChange((e: unknown) => {\n if (e === true || e === false) {\n this.toggle();\n }\n });\n this.checked.pipe(takeUntil(this._destroyed)).subscribe(state => {\n this._controlValueAccessor![0].writeValue(state);\n });\n }\n }\n\n private _assertValidParentSelection() {\n if (!this._selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: missing CdkSelection in the parent');\n }\n\n if (!this._selection.multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: CdkSelection must have cdkSelectionMultiple set to true');\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\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 {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Directive, Input, OnDestroy, OnInit, inject} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, of as observableOf, Subject} from 'rxjs';\nimport {distinctUntilChanged, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Makes the element a selection toggle.\n *\n * Must be used within a parent `CdkSelection` directive.\n * Must be provided with the value. If `trackBy` is used on `CdkSelection`, the index of the value\n * is required. If the element implements `ControlValueAccessor`, e.g. `MatCheckbox`, the directive\n * automatically connects it with the selection state provided by the `CdkSelection` directive. If\n * not, use `checked$` to get the checked state of the value, and `toggle()` to change the selection\n * state.\n */\n@Directive({\n selector: '[cdkSelectionToggle]',\n exportAs: 'cdkSelectionToggle',\n})\nexport class CdkSelectionToggle<T> implements OnDestroy, OnInit {\n private _selection = inject<CdkSelection<T>>(CdkSelection, {optional: true})!;\n private _controlValueAccessors = inject(NG_VALUE_ACCESSOR, {optional: true, self: true});\n\n /** The value that is associated with the toggle */\n @Input('cdkSelectionToggleValue') value: T;\n\n /** The index of the value in the list. Required when used with `trackBy` */\n @Input('cdkSelectionToggleIndex')\n get index(): number | undefined {\n return this._index;\n }\n set index(index: NumberInput) {\n this._index = coerceNumberProperty(index);\n }\n protected _index?: number;\n\n /** The checked state of the selection toggle */\n readonly checked: Observable<boolean>;\n\n /** Toggles the selection */\n toggle() {\n this._selection.toggleSelection(this.value, this.index);\n }\n\n private _destroyed = new Subject<void>();\n\n constructor() {\n const _selection = this._selection;\n\n this.checked = _selection.change.pipe(\n switchMap(() => observableOf(this._isSelected())),\n distinctUntilChanged(),\n );\n }\n\n ngOnInit() {\n this._assertValidParentSelection();\n this._configureControlValueAccessor();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n private _assertValidParentSelection() {\n if (!this._selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectAll: missing CdkSelection in the parent');\n }\n }\n\n private _configureControlValueAccessor() {\n if (this._controlValueAccessors && this._controlValueAccessors.length) {\n this._controlValueAccessors[0].registerOnChange((e: unknown) => {\n if (typeof e === 'boolean') {\n this.toggle();\n }\n });\n\n this.checked.pipe(takeUntil(this._destroyed)).subscribe(state => {\n this._controlValueAccessors![0].writeValue(state);\n });\n }\n }\n\n private _isSelected(): boolean {\n return this._selection.isSelected(this.value, this.index);\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 {CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkTable} from '@angular/cdk/table';\nimport {\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\nimport {CdkSelection} from './selection';\nimport {AsyncPipe} from '@angular/common';\nimport {CdkSelectionToggle} from './selection-toggle';\nimport {CdkSelectAll} from './select-all';\n\n/**\n * Column that adds row selecting checkboxes and a select-all checkbox if `cdkSelectionMultiple` is\n * `true`.\n *\n * Must be used within a parent `CdkSelection` directive.\n */\n@Component({\n selector: 'cdk-selection-column',\n template: `\n <ng-container cdkColumnDef>\n <th cdkHeaderCell *cdkHeaderCellDef>\n @if (selection && selection.multiple) {\n <input type=\"checkbox\"\n cdkSelectAll\n #allToggler=\"cdkSelectAll\"\n [checked]=\"allToggler.checked | async\"\n [indeterminate]=\"allToggler.indeterminate | async\"\n (click)=\"allToggler.toggle($event)\">\n }\n </th>\n <td cdkCell *cdkCellDef=\"let row; let i = $index\">\n <input type=\"checkbox\"\n #toggler=\"cdkSelectionToggle\"\n cdkSelectionToggle\n [cdkSelectionToggleValue]=\"row\"\n [cdkSelectionToggleIndex]=\"i\"\n (click)=\"toggler.toggle()\"\n [checked]=\"toggler.checked | async\">\n </td>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CdkColumnDef,\n CdkHeaderCellDef,\n CdkSelectAll,\n CdkCellDef,\n CdkSelectionToggle,\n AsyncPipe,\n ],\n})\nexport class CdkSelectionColumn<T> implements OnInit, OnDestroy {\n private _table = inject<CdkTable<T>>(CdkTable, {optional: true});\n readonly selection = inject<CdkSelection<T>>(CdkSelection, {optional: true});\n\n /** Column name that should be used to reference this column. */\n @Input('cdkSelectionColumnName')\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n\n this._syncColumnDefName();\n }\n private _name: string;\n\n @ViewChild(CdkColumnDef, {static: true}) private readonly _columnDef: CdkColumnDef;\n @ViewChild(CdkCellDef, {static: true}) private readonly _cell: CdkCellDef;\n @ViewChild(CdkHeaderCellDef, {static: true}) private readonly _headerCell: CdkHeaderCellDef;\n\n ngOnInit() {\n if (!this.selection && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkSelectionColumn: missing CdkSelection in the parent');\n }\n\n this._syncColumnDefName();\n\n if (this._table) {\n this._columnDef.cell = this._cell;\n this._columnDef.headerCell = this._headerCell;\n this._table.addColumnDef(this._columnDef);\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error('CdkSelectionColumn: missing parent table');\n }\n }\n\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this._columnDef);\n }\n }\n\n private _syncColumnDefName() {\n if (this._columnDef) {\n this._columnDef.name = this._name;\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 {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Directive, Input, inject} from '@angular/core';\n\nimport {CdkSelection} from './selection';\n\n/**\n * Applies `cdk-selected` class and `aria-selected` to an element.\n *\n * Must be used within a parent `CdkSelection` directive.\n * Must be provided with the value. The index is required if `trackBy` is used on the `CdkSelection`\n * directive.\n */\n@Directive({\n selector: '[cdkRowSelection]',\n host: {\n '[class.cdk-selected]': '_selection.isSelected(this.value, this.index)',\n '[attr.aria-selected]': '_selection.isSelected(this.value, this.index)',\n },\n})\nexport class CdkRowSelection<T> {\n readonly _selection = inject<CdkSelection<T>>(CdkSelection);\n\n // We need an initializer here to avoid a TS error.\n @Input('cdkRowSelectionValue') value: T = undefined!;\n\n @Input('cdkRowSelectionIndex')\n get index(): number | undefined {\n return this._index;\n }\n set index(index: NumberInput) {\n this._index = coerceNumberProperty(index);\n }\n protected _index?: number;\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 {CdkTableModule} from '@angular/cdk/table';\nimport {NgModule} from '@angular/core';\n\nimport {CdkRowSelection} from './row-selection';\nimport {CdkSelectAll} from './select-all';\nimport {CdkSelection} from './selection';\nimport {CdkSelectionColumn} from './selection-column';\nimport {CdkSelectionToggle} from './selection-toggle';\n\n@NgModule({\n imports: [\n CdkTableModule,\n CdkSelection,\n CdkSelectionToggle,\n CdkSelectAll,\n CdkSelectionColumn,\n CdkRowSelection,\n ],\n exports: [CdkSelection, CdkSelectionToggle, CdkSelectAll, CdkSelectionColumn, CdkRowSelection],\n})\nexport class CdkSelectionModule {}\n"],"names":["observableOf"],"mappings":"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"}
@@ -93,10 +93,10 @@ class CdkTableScrollContainer {
93
93
  styleSheet.deleteRule(0);
94
94
  }
95
95
  }
96
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
97
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkTableScrollContainer, isStandalone: true, selector: "[cdkTableScrollContainer]", host: { classAttribute: "cdk-table-scroll-container" }, providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer }], ngImport: i0 });
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
97
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.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 });
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainer, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainer, decorators: [{
100
100
  type: Directive,
101
101
  args: [{
102
102
  selector: '[cdkTableScrollContainer]',
@@ -118,11 +118,11 @@ function computeMargin(sizes) {
118
118
  }
119
119
 
120
120
  class CdkTableScrollContainerModule {
121
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
122
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainerModule, imports: [CdkTableScrollContainer], exports: [CdkTableScrollContainer] });
123
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainerModule });
121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
122
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, imports: [CdkTableScrollContainer], exports: [CdkTableScrollContainer] });
123
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule });
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTableScrollContainerModule, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTableScrollContainerModule, decorators: [{
126
126
  type: NgModule,
127
127
  args: [{
128
128
  imports: [CdkTableScrollContainer],