@angular/aria 21.0.0-rc.0 → 21.0.0-rc.1

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/_adev_assets/aria-accordion.json +14 -14
  2. package/_adev_assets/aria-combobox.json +10 -10
  3. package/_adev_assets/aria-grid.json +81 -12
  4. package/_adev_assets/aria-listbox.json +3 -3
  5. package/_adev_assets/aria-menu.json +174 -74
  6. package/_adev_assets/aria-tabs.json +22 -22
  7. package/_adev_assets/aria-toolbar.json +99 -120
  8. package/_adev_assets/aria-tree.json +20 -16
  9. package/fesm2022/_widget-chunk.mjs +266 -144
  10. package/fesm2022/_widget-chunk.mjs.map +1 -1
  11. package/fesm2022/accordion.mjs +12 -13
  12. package/fesm2022/accordion.mjs.map +1 -1
  13. package/fesm2022/aria.mjs +1 -1
  14. package/fesm2022/aria.mjs.map +1 -1
  15. package/fesm2022/combobox.mjs +9 -7
  16. package/fesm2022/combobox.mjs.map +1 -1
  17. package/fesm2022/grid.mjs +61 -12
  18. package/fesm2022/grid.mjs.map +1 -1
  19. package/fesm2022/listbox.mjs +14 -15
  20. package/fesm2022/listbox.mjs.map +1 -1
  21. package/fesm2022/menu.mjs +117 -61
  22. package/fesm2022/menu.mjs.map +1 -1
  23. package/fesm2022/private.mjs +390 -399
  24. package/fesm2022/private.mjs.map +1 -1
  25. package/fesm2022/tabs.mjs +16 -17
  26. package/fesm2022/tabs.mjs.map +1 -1
  27. package/fesm2022/toolbar.mjs +79 -44
  28. package/fesm2022/toolbar.mjs.map +1 -1
  29. package/fesm2022/tree.mjs +22 -19
  30. package/fesm2022/tree.mjs.map +1 -1
  31. package/package.json +2 -10
  32. package/types/_grid-chunk.d.ts +115 -53
  33. package/types/accordion.d.ts +4 -4
  34. package/types/combobox.d.ts +2 -2
  35. package/types/grid.d.ts +12 -3
  36. package/types/listbox.d.ts +3 -4
  37. package/types/menu.d.ts +33 -21
  38. package/types/private.d.ts +263 -341
  39. package/types/tabs.d.ts +4 -4
  40. package/types/toolbar.d.ts +29 -26
  41. package/types/tree.d.ts +5 -6
  42. package/_adev_assets/aria-radio-group.json +0 -389
  43. package/fesm2022/deferred-content.mjs +0 -99
  44. package/fesm2022/deferred-content.mjs.map +0 -1
  45. package/fesm2022/radio-group.mjs +0 -338
  46. package/fesm2022/radio-group.mjs.map +0 -1
  47. package/types/deferred-content.d.ts +0 -38
  48. package/types/radio-group.d.ts +0 -84
package/fesm2022/aria.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('21.0.0-rc.0');
3
+ const VERSION = new Version('21.0.0-rc.1');
4
4
 
5
5
  export { VERSION };
6
6
  //# sourceMappingURL=aria.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aria.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"aria.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the CDK Experimental package. */\nexport const VERSION = new Version('21.0.0-rc.1');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
@@ -1,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ElementRef, contentChild, input, signal, computed, afterRenderEffect, Directive, model, untracked } from '@angular/core';
3
- import * as i1 from '@angular/aria/deferred-content';
4
- import { DeferredContentAware, DeferredContent } from '@angular/aria/deferred-content';
5
- import { ComboboxPattern } from '@angular/aria/private';
3
+ import * as i1 from '@angular/aria/private';
4
+ import { DeferredContentAware, ComboboxPattern, DeferredContent } from '@angular/aria/private';
6
5
  import { Directionality } from '@angular/cdk/bidi';
7
6
  import { toSignal } from '@angular/core/rxjs-interop';
8
7
 
@@ -171,6 +170,7 @@ class ComboboxInput {
171
170
  this.combobox._pattern.inputs.inputEl.set(this._elementRef.nativeElement);
172
171
  this.combobox._pattern.inputs.inputValue = this.value;
173
172
  afterRenderEffect(() => {
173
+ this.value();
174
174
  this.combobox.popup()?.controls()?.items();
175
175
  untracked(() => this.combobox._pattern.onFilter());
176
176
  });
@@ -208,10 +208,11 @@ class ComboboxInput {
208
208
  properties: {
209
209
  "value": "value()",
210
210
  "attr.aria-expanded": "combobox._pattern.expanded()",
211
- "attr.aria-activedescendant": "combobox._pattern.activedescendant()",
211
+ "attr.aria-activedescendant": "combobox._pattern.activeDescendant()",
212
212
  "attr.aria-controls": "combobox._pattern.popupId()",
213
213
  "attr.aria-haspopup": "combobox._pattern.hasPopup()",
214
- "attr.aria-autocomplete": "combobox._pattern.autocomplete()"
214
+ "attr.aria-autocomplete": "combobox._pattern.autocomplete()",
215
+ "attr.readonly": "combobox._pattern.readonly()"
215
216
  }
216
217
  },
217
218
  exportAs: ["ngComboboxInput"],
@@ -232,10 +233,11 @@ i0.ɵɵngDeclareClassMetadata({
232
233
  'role': 'combobox',
233
234
  '[value]': 'value()',
234
235
  '[attr.aria-expanded]': 'combobox._pattern.expanded()',
235
- '[attr.aria-activedescendant]': 'combobox._pattern.activedescendant()',
236
+ '[attr.aria-activedescendant]': 'combobox._pattern.activeDescendant()',
236
237
  '[attr.aria-controls]': 'combobox._pattern.popupId()',
237
238
  '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',
238
- '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()'
239
+ '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',
240
+ '[attr.readonly]': 'combobox._pattern.readonly()'
239
241
  }
240
242
  }]
241
243
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/combobox/combobox.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 {\n afterRenderEffect,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport {DeferredContent, DeferredContentAware} from '@angular/aria/deferred-content';\nimport {\n ComboboxPattern,\n ComboboxListboxControls,\n ComboboxTreeControls,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n host: {\n '[attr.data-expanded]': 'expanded()',\n '(input)': '_pattern.onInput($event)',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Combobox<V> {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The combobox popup. */\n readonly popup = contentChild<ComboboxPopup<V>>(ComboboxPopup);\n\n /** The filter mode for the combobox. */\n filterMode = input<'manual' | 'auto-select' | 'highlight'>('manual');\n\n /** Whether the combobox is focused. */\n readonly isFocused = signal(false);\n\n /** Whether the listbox has received focus yet. */\n private _hasBeenFocused = signal(false);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false);\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false);\n\n /** The value of the first matching item in the popup. */\n readonly firstMatch = input<V | undefined>(undefined);\n\n /** Whether the combobox is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Input element connected to the combobox, if any. */\n readonly inputElement = computed(() => this._pattern.inputs.inputEl());\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern<any, V>({\n ...this,\n textDirection: this.textDirection,\n disabled: this.disabled,\n readonly: this.readonly,\n inputValue: signal(''),\n inputEl: signal(undefined),\n containerEl: () => this._elementRef.nativeElement,\n popupControls: () => this.popup()?.controls(),\n });\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._deferredContentAware?.contentVisible() && this._pattern.isFocused()) {\n this._deferredContentAware?.contentVisible.set(true);\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasBeenFocused() && this._pattern.isFocused()) {\n this._hasBeenFocused.set(true);\n }\n });\n }\n}\n\n@Directive({\n selector: 'input[ngComboboxInput]',\n exportAs: 'ngComboboxInput',\n host: {\n 'role': 'combobox',\n '[value]': 'value()',\n '[attr.aria-expanded]': 'combobox._pattern.expanded()',\n '[attr.aria-activedescendant]': 'combobox._pattern.activedescendant()',\n '[attr.aria-controls]': 'combobox._pattern.popupId()',\n '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',\n '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',\n },\n})\nexport class ComboboxInput {\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** The combobox that the input belongs to. */\n readonly combobox = inject(Combobox);\n\n /** The value of the input. */\n value = model<string>('');\n\n constructor() {\n (this.combobox._pattern.inputs.inputEl as WritableSignal<HTMLInputElement>).set(\n this._elementRef.nativeElement,\n );\n this.combobox._pattern.inputs.inputValue = this.value;\n\n /** Focuses & selects the first item in the combobox if the user changes the input value. */\n afterRenderEffect(() => {\n this.combobox.popup()?.controls()?.items();\n untracked(() => this.combobox._pattern.onFilter());\n });\n }\n}\n\n@Directive({\n selector: 'ng-template[ngComboboxPopupContainer]',\n exportAs: 'ngComboboxPopupContainer',\n hostDirectives: [DeferredContent],\n})\nexport class ComboboxPopupContainer {}\n\n@Directive({\n selector: '[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n})\nexport class ComboboxPopup<V> {\n /** The combobox that the popup belongs to. */\n readonly combobox = inject<Combobox<V>>(Combobox, {optional: true});\n\n /** The controls the popup exposes to the combobox. */\n readonly controls = signal<\n ComboboxListboxControls<any, V> | ComboboxTreeControls<any, V> | undefined\n >(undefined);\n}\n"],"names":["Combobox","inject","toSignal","_directionality","change","_elementRef","ElementRef","_deferredContentAware","DeferredContentAware","optional","contentChild","ComboboxPopup","ngDevMode","debugName","filterMode","input","isFocused","signal","disabled","readonly","firstMatch","undefined","expanded","computed","_pattern","inputElement","inputs","inputEl","ComboboxPattern","inputValue","containerEl","nativeElement","popupControls","popup","controls","contentVisible","set","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","deps","target","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","queries","propertyName","first","predicate","descendants","exportAs","hostDirectives","directive","i1","decorators","args","constructor","combobox","value","ComboboxPopupContainer","DeferredContent"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/combobox/combobox.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 {\n afterRenderEffect,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport {\n DeferredContent,\n DeferredContentAware,\n ComboboxPattern,\n ComboboxListboxControls,\n ComboboxTreeControls,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n host: {\n '[attr.data-expanded]': 'expanded()',\n '(input)': '_pattern.onInput($event)',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Combobox<V> {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The combobox popup. */\n readonly popup = contentChild<ComboboxPopup<V>>(ComboboxPopup);\n\n /** The filter mode for the combobox. */\n filterMode = input<'manual' | 'auto-select' | 'highlight'>('manual');\n\n /** Whether the combobox is focused. */\n readonly isFocused = signal(false);\n\n /** Whether the combobox has received focus yet. */\n private _hasBeenFocused = signal(false);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false);\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false);\n\n /** The value of the first matching item in the popup. */\n readonly firstMatch = input<V | undefined>(undefined);\n\n /** Whether the combobox is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Input element connected to the combobox, if any. */\n readonly inputElement = computed(() => this._pattern.inputs.inputEl());\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern<any, V>({\n ...this,\n textDirection: this.textDirection,\n disabled: this.disabled,\n readonly: this.readonly,\n inputValue: signal(''),\n inputEl: signal(undefined),\n containerEl: () => this._elementRef.nativeElement,\n popupControls: () => this.popup()?.controls(),\n });\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._deferredContentAware?.contentVisible() && this._pattern.isFocused()) {\n this._deferredContentAware?.contentVisible.set(true);\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasBeenFocused() && this._pattern.isFocused()) {\n this._hasBeenFocused.set(true);\n }\n });\n }\n}\n\n@Directive({\n selector: 'input[ngComboboxInput]',\n exportAs: 'ngComboboxInput',\n host: {\n 'role': 'combobox',\n '[value]': 'value()',\n '[attr.aria-expanded]': 'combobox._pattern.expanded()',\n '[attr.aria-activedescendant]': 'combobox._pattern.activeDescendant()',\n '[attr.aria-controls]': 'combobox._pattern.popupId()',\n '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',\n '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',\n '[attr.readonly]': 'combobox._pattern.readonly()',\n },\n})\nexport class ComboboxInput {\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** The combobox that the input belongs to. */\n readonly combobox = inject(Combobox);\n\n /** The value of the input. */\n value = model<string>('');\n\n constructor() {\n (this.combobox._pattern.inputs.inputEl as WritableSignal<HTMLInputElement>).set(\n this._elementRef.nativeElement,\n );\n this.combobox._pattern.inputs.inputValue = this.value;\n\n /** Focuses & selects the first item in the combobox if the user changes the input value. */\n afterRenderEffect(() => {\n this.value();\n this.combobox.popup()?.controls()?.items();\n untracked(() => this.combobox._pattern.onFilter());\n });\n }\n}\n\n@Directive({\n selector: 'ng-template[ngComboboxPopupContainer]',\n exportAs: 'ngComboboxPopupContainer',\n hostDirectives: [DeferredContent],\n})\nexport class ComboboxPopupContainer {}\n\n@Directive({\n selector: '[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n})\nexport class ComboboxPopup<V> {\n /** The combobox that the popup belongs to. */\n readonly combobox = inject<Combobox<V>>(Combobox, {optional: true});\n\n /** The controls the popup exposes to the combobox. */\n readonly controls = signal<\n ComboboxListboxControls<any, V> | ComboboxTreeControls<any, V> | undefined\n >(undefined);\n}\n"],"names":["Combobox","_directionality","inject","Directionality","textDirection","toSignal","change","initialValue","value","_elementRef","ElementRef","_deferredContentAware","DeferredContentAware","optional","popup","contentChild","ComboboxPopup","filterMode","input","isFocused","signal","_hasBeenFocused","disabled","readonly","firstMatch","undefined","expanded","computed","_pattern","inputElement","inputs","inputEl","ComboboxPattern","inputValue","containerEl","nativeElement","popupControls","controls","constructor","afterRenderEffect","contentVisible","set","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","descendants","isSignal","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","selector","host","ComboboxInput","combobox","model","items","untracked","onFilter","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","attributes","properties","ComboboxPopupContainer","DeferredContent"],"mappings":"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"}
package/fesm2022/grid.mjs CHANGED
@@ -1,16 +1,21 @@
1
1
  import { _IdGenerator } from '@angular/cdk/a11y';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, ElementRef, contentChildren, computed, input, booleanAttribute, afterRenderEffect, Directive, contentChild, model } from '@angular/core';
4
+ import { Directionality } from '@angular/cdk/bidi';
4
5
  import { GridPattern, GridRowPattern, GridCellPattern, GridCellWidgetPattern } from './_widget-chunk.mjs';
5
6
 
6
7
  class Grid {
7
8
  _elementRef = inject(ElementRef);
8
9
  _rows = contentChildren(GridRow, ...(ngDevMode ? [{
9
- debugName: "_rows"
10
- }] : []));
10
+ debugName: "_rows",
11
+ descendants: true
12
+ }] : [{
13
+ descendants: true
14
+ }]));
11
15
  _rowPatterns = computed(() => this._rows().map(r => r._pattern), ...(ngDevMode ? [{
12
16
  debugName: "_rowPatterns"
13
17
  }] : []));
18
+ textDirection = inject(Directionality).valueSignal;
14
19
  element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
15
20
  debugName: "element"
16
21
  }] : []));
@@ -26,8 +31,8 @@ class Grid {
26
31
  }] : [{
27
32
  transform: booleanAttribute
28
33
  }]));
29
- skipDisabled = input(true, ...(ngDevMode ? [{
30
- debugName: "skipDisabled",
34
+ softDisabled = input(true, ...(ngDevMode ? [{
35
+ debugName: "softDisabled",
31
36
  transform: booleanAttribute
32
37
  }] : [{
33
38
  transform: booleanAttribute
@@ -41,12 +46,28 @@ class Grid {
41
46
  colWrap = input('loop', ...(ngDevMode ? [{
42
47
  debugName: "colWrap"
43
48
  }] : []));
49
+ multi = input(false, ...(ngDevMode ? [{
50
+ debugName: "multi",
51
+ transform: booleanAttribute
52
+ }] : [{
53
+ transform: booleanAttribute
54
+ }]));
55
+ selectionMode = input('follow', ...(ngDevMode ? [{
56
+ debugName: "selectionMode"
57
+ }] : []));
58
+ enableRangeSelection = input(false, ...(ngDevMode ? [{
59
+ debugName: "enableRangeSelection",
60
+ transform: booleanAttribute
61
+ }] : [{
62
+ transform: booleanAttribute
63
+ }]));
44
64
  _pattern = new GridPattern({
45
65
  ...this,
46
66
  rows: this._rowPatterns,
47
67
  getCell: e => this._getCell(e)
48
68
  });
49
69
  constructor() {
70
+ afterRenderEffect(() => this._pattern.setDefaultStateEffect());
50
71
  afterRenderEffect(() => this._pattern.resetStateEffect());
51
72
  afterRenderEffect(() => this._pattern.focusEffect());
52
73
  }
@@ -92,9 +113,9 @@ class Grid {
92
113
  isRequired: false,
93
114
  transformFunction: null
94
115
  },
95
- skipDisabled: {
96
- classPropertyName: "skipDisabled",
97
- publicName: "skipDisabled",
116
+ softDisabled: {
117
+ classPropertyName: "softDisabled",
118
+ publicName: "softDisabled",
98
119
  isSignal: true,
99
120
  isRequired: false,
100
121
  transformFunction: null
@@ -119,6 +140,27 @@ class Grid {
119
140
  isSignal: true,
120
141
  isRequired: false,
121
142
  transformFunction: null
143
+ },
144
+ multi: {
145
+ classPropertyName: "multi",
146
+ publicName: "multi",
147
+ isSignal: true,
148
+ isRequired: false,
149
+ transformFunction: null
150
+ },
151
+ selectionMode: {
152
+ classPropertyName: "selectionMode",
153
+ publicName: "selectionMode",
154
+ isSignal: true,
155
+ isRequired: false,
156
+ transformFunction: null
157
+ },
158
+ enableRangeSelection: {
159
+ classPropertyName: "enableRangeSelection",
160
+ publicName: "enableRangeSelection",
161
+ isSignal: true,
162
+ isRequired: false,
163
+ transformFunction: null
122
164
  }
123
165
  },
124
166
  host: {
@@ -130,7 +172,7 @@ class Grid {
130
172
  "pointerdown": "_pattern.onPointerdown($event)",
131
173
  "pointermove": "_pattern.onPointermove($event)",
132
174
  "pointerup": "_pattern.onPointerup($event)",
133
- "focusin": "_pattern.onFocusIn($event)",
175
+ "focusin": "_pattern.onFocusIn()",
134
176
  "focusout": "_pattern.onFocusOut($event)"
135
177
  },
136
178
  properties: {
@@ -143,6 +185,7 @@ class Grid {
143
185
  queries: [{
144
186
  propertyName: "_rows",
145
187
  predicate: GridRow,
188
+ descendants: true,
146
189
  isSignal: true
147
190
  }],
148
191
  exportAs: ["ngGrid"],
@@ -169,7 +212,7 @@ i0.ɵɵngDeclareClassMetadata({
169
212
  '(pointerdown)': '_pattern.onPointerdown($event)',
170
213
  '(pointermove)': '_pattern.onPointermove($event)',
171
214
  '(pointerup)': '_pattern.onPointerup($event)',
172
- '(focusin)': '_pattern.onFocusIn($event)',
215
+ '(focusin)': '_pattern.onFocusIn()',
173
216
  '(focusout)': '_pattern.onFocusOut($event)'
174
217
  }
175
218
  }]
@@ -179,8 +222,11 @@ i0.ɵɵngDeclareClassMetadata({
179
222
  class GridRow {
180
223
  _elementRef = inject(ElementRef);
181
224
  _cells = contentChildren(GridCell, ...(ngDevMode ? [{
182
- debugName: "_cells"
183
- }] : []));
225
+ debugName: "_cells",
226
+ descendants: true
227
+ }] : [{
228
+ descendants: true
229
+ }]));
184
230
  _cellPatterns = computed(() => this._cells().map(c => c._pattern), ...(ngDevMode ? [{
185
231
  debugName: "_cellPatterns"
186
232
  }] : []));
@@ -240,6 +286,7 @@ class GridRow {
240
286
  queries: [{
241
287
  propertyName: "_cells",
242
288
  predicate: GridCell,
289
+ descendants: true,
243
290
  isSignal: true
244
291
  }],
245
292
  exportAs: ["ngGridRow"],
@@ -272,7 +319,7 @@ class GridCell {
272
319
  debugName: "_widgetPattern"
273
320
  }] : []));
274
321
  _row = inject(GridRow);
275
- _id = inject(_IdGenerator).getId('ng-grid-cell-');
322
+ _id = inject(_IdGenerator).getId('ng-grid-cell-', true);
276
323
  element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
277
324
  debugName: "element"
278
325
  }] : []));
@@ -392,6 +439,7 @@ class GridCell {
392
439
  "attr.rowspan": "_pattern.rowSpan()",
393
440
  "attr.colspan": "_pattern.colSpan()",
394
441
  "attr.data-active": "_pattern.active()",
442
+ "attr.data-anchor": "_pattern.anchor()",
395
443
  "attr.aria-disabled": "_pattern.disabled()",
396
444
  "attr.aria-rowspan": "_pattern.rowSpan()",
397
445
  "attr.aria-colspan": "_pattern.colSpan()",
@@ -430,6 +478,7 @@ i0.ɵɵngDeclareClassMetadata({
430
478
  '[attr.rowspan]': '_pattern.rowSpan()',
431
479
  '[attr.colspan]': '_pattern.colSpan()',
432
480
  '[attr.data-active]': '_pattern.active()',
481
+ '[attr.data-anchor]': '_pattern.anchor()',
433
482
  '[attr.aria-disabled]': '_pattern.disabled()',
434
483
  '[attr.aria-rowspan]': '_pattern.rowSpan()',
435
484
  '[attr.aria-colspan]': '_pattern.colSpan()',
@@ -1 +1 @@
1
- {"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/grid/grid.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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern, GridCellPattern, GridCellWidgetPattern} from '../private';\n\n/** A directive that provides grid-based navigation and selection behavior. */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'class': 'grid',\n 'role': 'grid',\n '[tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(pointermove)': '_pattern.onPointermove($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Grid {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The rows that make up the grid. */\n private readonly _rows = contentChildren(GridRow);\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<GridRowPattern[]> = computed(() =>\n this._rows().map(r => r._pattern),\n );\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether to skip disabled items during navigation. */\n readonly skipDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the grid. */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The wrapping behavior for keyboard navigation along the row axis. */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** The wrapping behavior for keyboard navigation along the column axis. */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n });\n\n constructor() {\n afterRenderEffect(() => this._pattern.resetStateEffect());\n afterRenderEffect(() => this._pattern.focusEffect());\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element): GridCellPattern | undefined {\n const cellElement = element.closest('[ngGridCell]');\n if (cellElement === undefined) return;\n\n const widgetElement = element.closest('[ngGridCellWidget]');\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (\n cell.element() === cellElement ||\n (widgetElement !== undefined && cell.element() === widgetElement)\n ) {\n return cell;\n }\n }\n }\n return;\n }\n}\n\n/** A directive that represents a row in a grid. */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'class': 'grid-row',\n '[attr.role]': 'role()',\n },\n})\nexport class GridRow {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The cells that make up this row. */\n private readonly _cells = contentChildren(GridCell);\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<GridCellPattern[]> = computed(() =>\n this._cells().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(Grid);\n\n /** The parent grid UI pattern. */\n readonly grid = computed(() => this._grid._pattern);\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** The ARIA role for the row. */\n readonly role = input<'row' | 'rowheader'>('row');\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n });\n}\n\n/** A directive that represents a cell in a grid. */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n host: {\n 'class': 'grid-cell',\n '[attr.role]': 'role()',\n '[attr.id]': '_pattern.id()',\n '[attr.rowspan]': '_pattern.rowSpan()',\n '[attr.colspan]': '_pattern.colSpan()',\n '[attr.data-active]': '_pattern.active()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-rowspan]': '_pattern.rowSpan()',\n '[attr.aria-colspan]': '_pattern.colSpan()',\n '[attr.aria-rowindex]': '_pattern.ariaRowIndex()',\n '[attr.aria-colindex]': '_pattern.ariaColIndex()',\n '[attr.aria-selected]': '_pattern.ariaSelected()',\n '[tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class GridCell {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The widget contained within this cell, if any. */\n private readonly _widgets = contentChild(GridCellWidget);\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widgets()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GridRow);\n\n /** A unique identifier for the cell. */\n private readonly _id = inject(_IdGenerator).getId('ng-grid-cell-');\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n id: () => this._id,\n grid: this._row.grid,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n });\n}\n\n/** A directive that represents a widget inside a grid cell. */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n 'class': 'grid-cell-widget',\n '[attr.data-active]': '_pattern.active()',\n '[tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent cell. */\n private readonly _cell = inject(GridCell);\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether the widget is activated and the grid navigation should be paused. */\n readonly activate = model<boolean>(false);\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n cell: () => this._cell._pattern,\n });\n\n /** Focuses the widget. */\n focus(): void {\n this.element().focus();\n }\n}\n"],"names":["inject","ElementRef","contentChildren","GridRow","ngDevMode","debugName","nativeElement","enableSelection","input","transform","booleanAttribute","focusMode","rowWrap","colWrap","_pattern","GridPattern","rows","_rowPatterns","getCell","e","_getCell","constructor","afterRenderEffect","resetStateEffect","focusEffect","element","cellElement","closest","widgetElement","cell","undefined","ɵɵngDeclareFactory","minVersion","version","ɵɵngDeclareDirective","type","Grid","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","disabled","skipDisabled","host","attributes","listeners","properties","classAttribute","queries","propertyName","predicate","exportAs","ngImport","i0","args","ctorParameters","_cellPatterns","computed","_cells","map","c","_grid","rowIndex","cells","deps","target","ɵɵFactoryTarget","Directive","ɵdir","decorators","GridCellWidget","_row","role","selected","model","selectable","GridCellPattern","GridCell"],"mappings":"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"}
1
+ {"version":3,"file":"grid.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/grid/grid.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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridPattern, GridRowPattern, GridCellPattern, GridCellWidgetPattern} from '../private';\n\n/** A directive that provides grid-based navigation and selection behavior. */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'class': 'grid',\n 'role': 'grid',\n '[tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(pointermove)': '_pattern.onPointermove($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Grid {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The rows that make up the grid. */\n private readonly _rows = contentChildren(GridRow, {descendants: true});\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<GridRowPattern[]> = computed(() =>\n this._rows().map(r => r._pattern),\n );\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether to allow disabled items to receive focus. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the grid. */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The wrapping behavior for keyboard navigation along the row axis. */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** The wrapping behavior for keyboard navigation along the column axis. */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** Whether multiple cells in the grid can be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** The selection strategy used by the grid. */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** Whether enable range selections (with modifier keys or dragging). */\n readonly enableRangeSelection = input(false, {transform: booleanAttribute});\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n });\n\n constructor() {\n afterRenderEffect(() => this._pattern.setDefaultStateEffect());\n afterRenderEffect(() => this._pattern.resetStateEffect());\n afterRenderEffect(() => this._pattern.focusEffect());\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element): GridCellPattern | undefined {\n const cellElement = element.closest('[ngGridCell]');\n if (cellElement === undefined) return;\n\n const widgetElement = element.closest('[ngGridCellWidget]');\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (\n cell.element() === cellElement ||\n (widgetElement !== undefined && cell.element() === widgetElement)\n ) {\n return cell;\n }\n }\n }\n return;\n }\n}\n\n/** A directive that represents a row in a grid. */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'class': 'grid-row',\n '[attr.role]': 'role()',\n },\n})\nexport class GridRow {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The cells that make up this row. */\n private readonly _cells = contentChildren(GridCell, {descendants: true});\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<GridCellPattern[]> = computed(() =>\n this._cells().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(Grid);\n\n /** The parent grid UI pattern. */\n readonly grid = computed(() => this._grid._pattern);\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** The ARIA role for the row. */\n readonly role = input<'row' | 'rowheader'>('row');\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n });\n}\n\n/** A directive that represents a cell in a grid. */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n host: {\n 'class': 'grid-cell',\n '[attr.role]': 'role()',\n '[attr.id]': '_pattern.id()',\n '[attr.rowspan]': '_pattern.rowSpan()',\n '[attr.colspan]': '_pattern.colSpan()',\n '[attr.data-active]': '_pattern.active()',\n '[attr.data-anchor]': '_pattern.anchor()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-rowspan]': '_pattern.rowSpan()',\n '[attr.aria-colspan]': '_pattern.colSpan()',\n '[attr.aria-rowindex]': '_pattern.ariaRowIndex()',\n '[attr.aria-colindex]': '_pattern.ariaColIndex()',\n '[attr.aria-selected]': '_pattern.ariaSelected()',\n '[tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class GridCell {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The widget contained within this cell, if any. */\n private readonly _widgets = contentChild(GridCellWidget);\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widgets()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GridRow);\n\n /** A unique identifier for the cell. */\n private readonly _id = inject(_IdGenerator).getId('ng-grid-cell-', true);\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n id: () => this._id,\n grid: this._row.grid,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n });\n}\n\n/** A directive that represents a widget inside a grid cell. */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n 'class': 'grid-cell-widget',\n '[attr.data-active]': '_pattern.active()',\n '[tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent cell. */\n private readonly _cell = inject(GridCell);\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether the widget is activated and the grid navigation should be paused. */\n readonly activate = model<boolean>(false);\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n cell: () => this._cell._pattern,\n });\n\n /** Focuses the widget. */\n focus(): void {\n this.element().focus();\n }\n}\n"],"names":["Grid","_elementRef","inject","ElementRef","_rows","contentChildren","GridRow","descendants","_rowPatterns","computed","map","r","_pattern","ngDevMode","debugName","textDirection","Directionality","valueSignal","element","nativeElement","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","enableRangeSelection","GridPattern","rows","getCell","e","_getCell","constructor","afterRenderEffect","setDefaultStateEffect","resetStateEffect","focusEffect","cellElement","closest","undefined","widgetElement","row","cell","inputs","cells","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","ngImport","decorators","args","selector","host","_cells","GridCell","_cellPatterns","c","_grid","grid","role","rowIndex","GridRowPattern","_widgets","contentChild","GridCellWidget","_widgetPattern","_row","_id","_IdGenerator","getId","rowSpan","colSpan","colIndex","selected","model","selectable","GridCellPattern","id","widget","_cell","activate","GridCellWidgetPattern","focus","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","properties","classAttribute"],"mappings":"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"}
@@ -5,10 +5,9 @@ import { Directionality } from '@angular/cdk/bidi';
5
5
  import { toSignal } from '@angular/core/rxjs-interop';
6
6
  import { _IdGenerator } from '@angular/cdk/a11y';
7
7
  import { ComboboxPopup } from './combobox.mjs';
8
- import '@angular/aria/deferred-content';
9
8
 
10
9
  class Listbox {
11
- _generatedId = inject(_IdGenerator).getId('ng-listbox-');
10
+ _generatedId = inject(_IdGenerator).getId('ng-listbox-', true);
12
11
  id = computed(() => this._generatedId, ...(ngDevMode ? [{
13
12
  debugName: "id"
14
13
  }] : []));
@@ -44,8 +43,8 @@ class Listbox {
44
43
  }] : [{
45
44
  transform: booleanAttribute
46
45
  }]));
47
- skipDisabled = input(true, ...(ngDevMode ? [{
48
- debugName: "skipDisabled",
46
+ softDisabled = input(true, ...(ngDevMode ? [{
47
+ debugName: "softDisabled",
49
48
  transform: booleanAttribute
50
49
  }] : [{
51
50
  transform: booleanAttribute
@@ -126,7 +125,7 @@ class Listbox {
126
125
  scrollActiveItemIntoView(options = {
127
126
  block: 'nearest'
128
127
  }) {
129
- this._pattern.inputs.activeItem()?.element().scrollIntoView(options);
128
+ this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);
130
129
  }
131
130
  static ɵfac = i0.ɵɵngDeclareFactory({
132
131
  minVersion: "12.0.0",
@@ -164,9 +163,9 @@ class Listbox {
164
163
  isRequired: false,
165
164
  transformFunction: null
166
165
  },
167
- skipDisabled: {
168
- classPropertyName: "skipDisabled",
169
- publicName: "skipDisabled",
166
+ softDisabled: {
167
+ classPropertyName: "softDisabled",
168
+ publicName: "softDisabled",
170
169
  isSignal: true,
171
170
  isRequired: false,
172
171
  transformFunction: null
@@ -228,12 +227,12 @@ class Listbox {
228
227
  },
229
228
  properties: {
230
229
  "attr.id": "id()",
231
- "attr.tabindex": "_pattern.tabindex()",
230
+ "attr.tabindex": "_pattern.tabIndex()",
232
231
  "attr.aria-readonly": "_pattern.readonly()",
233
232
  "attr.aria-disabled": "_pattern.disabled()",
234
233
  "attr.aria-orientation": "_pattern.orientation()",
235
234
  "attr.aria-multiselectable": "_pattern.multi()",
236
- "attr.aria-activedescendant": "_pattern.activedescendant()"
235
+ "attr.aria-activedescendant": "_pattern.activeDescendant()"
237
236
  },
238
237
  classAttribute: "ng-listbox"
239
238
  },
@@ -264,12 +263,12 @@ i0.ɵɵngDeclareClassMetadata({
264
263
  'role': 'listbox',
265
264
  'class': 'ng-listbox',
266
265
  '[attr.id]': 'id()',
267
- '[attr.tabindex]': '_pattern.tabindex()',
266
+ '[attr.tabindex]': '_pattern.tabIndex()',
268
267
  '[attr.aria-readonly]': '_pattern.readonly()',
269
268
  '[attr.aria-disabled]': '_pattern.disabled()',
270
269
  '[attr.aria-orientation]': '_pattern.orientation()',
271
270
  '[attr.aria-multiselectable]': '_pattern.multi()',
272
- '[attr.aria-activedescendant]': '_pattern.activedescendant()',
271
+ '[attr.aria-activedescendant]': '_pattern.activeDescendant()',
273
272
  '(keydown)': '_pattern.onKeydown($event)',
274
273
  '(pointerdown)': '_pattern.onPointerdown($event)',
275
274
  '(focusin)': 'onFocus()'
@@ -284,7 +283,7 @@ i0.ɵɵngDeclareClassMetadata({
284
283
  class Option {
285
284
  _elementRef = inject(ElementRef);
286
285
  _listbox = inject(Listbox);
287
- _generatedId = inject(_IdGenerator).getId('ng-option-');
286
+ _generatedId = inject(_IdGenerator).getId('ng-option-', true);
288
287
  id = computed(() => this._generatedId, ...(ngDevMode ? [{
289
288
  debugName: "id"
290
289
  }] : []));
@@ -364,7 +363,7 @@ class Option {
364
363
  properties: {
365
364
  "attr.data-active": "_pattern.active()",
366
365
  "attr.id": "_pattern.id()",
367
- "attr.tabindex": "_pattern.tabindex()",
366
+ "attr.tabindex": "_pattern.tabIndex()",
368
367
  "attr.aria-selected": "_pattern.selected()",
369
368
  "attr.aria-disabled": "_pattern.disabled()"
370
369
  },
@@ -389,7 +388,7 @@ i0.ɵɵngDeclareClassMetadata({
389
388
  'class': 'ng-option',
390
389
  '[attr.data-active]': '_pattern.active()',
391
390
  '[attr.id]': '_pattern.id()',
392
- '[attr.tabindex]': '_pattern.tabindex()',
391
+ '[attr.tabindex]': '_pattern.tabIndex()',
393
392
  '[attr.aria-selected]': '_pattern.selected()',
394
393
  '[attr.aria-disabled]': '_pattern.disabled()'
395
394
  }
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/listbox/listbox.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxPopup} from '../combobox';\n\n/**\n * A listbox container.\n *\n * Listboxes are used to display a list of items for a user to select from. The Listbox is meant\n * to be used in conjunction with Option as follows:\n *\n * ```html\n * <ul ngListbox>\n * <li [value]=\"1\" ngOption>Item 1</li>\n * <li [value]=\"2\" ngOption>Item 2</li>\n * <li [value]=\"3\" ngOption>Item 3</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n 'class': 'ng-listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabindex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activedescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n hostDirectives: [{directive: ComboboxPopup}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-listbox-');\n\n // TODO(wagnermaciel): https://github.com/angular/components/pull/30495#discussion_r1972601144.\n /** A unique identifier for the listbox. */\n protected id = computed(() => this._generatedId);\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the listbox element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed(() => this._options().map(option => option._pattern));\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /** Whether disabled items in the list should be skipped when navigating. */\n skipDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the list. */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The selection strategy used by the list. */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(0.5); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the current selected items. */\n value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** Whether the listbox has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup.controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the value is always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n onFocus() {\n this._hasFocused.set(true);\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element().scrollIntoView(options);\n }\n}\n\n/** A selectable option in a Listbox. */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n 'class': 'ng-option',\n '[attr.data-active]': '_pattern.active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabindex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the option element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Listbox. */\n private readonly _listbox = inject(Listbox);\n\n /** A unique identifier for the option. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-option-');\n\n // TODO(wagnermaciel): https://github.com/angular/components/pull/30495#discussion_r1972601144.\n /** A unique identifier for the option. */\n protected id = computed(() => this._generatedId);\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element().textContent);\n\n /** The parent Listbox UIPattern. */\n protected listbox = computed(() => this._listbox._pattern);\n\n /** A reference to the option element to be focused on navigation. */\n protected element = computed(() => this._elementRef.nativeElement);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this.listbox,\n element: this.element,\n searchTerm: this.searchTerm,\n });\n}\n"],"names":["inject","ComboboxPopup","optional","_elementRef","ElementRef","_directionality","Directionality","contentChildren","Option","ngDevMode","debugName","descendants","textDirection","toSignal","change","initialValue","value","items","computed","_options","map","option","_pattern","transform","booleanAttribute","wrap","input","focusMode","selectionMode","disabled","readonly","model","constructor","element","nativeElement","combobox","_popup","ComboboxListboxPattern","inputs","ListboxPattern","controls","set","violations","validate","violation","console","error","_hasFocused","setDefaultState","afterRenderEffect","activeItem","untracked","some","i","listBehavior","unfocus","v","filter","scrollActiveItemIntoView","options","block","args","selector","directive","ctorParameters","Listbox","_generatedId","_IdGenerator","getId"],"mappings":";;;;;;;;;;;;;;QAkHyC,GAAAA,MAAA,CAAAC,aAAA,EAAA;IACvCC,QAAA,EAAA;AAEgD,GAAA,CAAA;EAIvCC,WAAA,GAAAH,MAAA,CAAAI,UAAA,CAAA;EAKTC,eAAA,GAAAL,MAAA,CAAAM,cAAA,CAAA;AAEI,EAAA,QAAA,GAAAC,eAAO,CAAAC,MAAA,EAAA,IAAAC,SAAA,GAAA,CAAA;IAAAC,SAAA,EAAA,UAAA;IAAAC,WAAA,EAAA;AAAA,GAAA,CAAA,GAAA,CAAA;IAAAA,WAAA,EAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAGPC,EAAAA,aAAA,GAAAC,QAAA,CAAAR,IAAAA,CAAAA,eAA6B,CAAAS,MAAA,EAAA;IAChBC,YAAoB,EAAA,IAAA,CAAAV,eAAA,CAAAW;;AAMjCC,EAAAA,KAAA,GAAAC,QAAA,CAAAC,MAAAA,IAAAA,CAAAA,QAAA,EAAAC,CAAAA,GAAA,CAAAC,MAAsC,IAAAA,MAAA,CAAAC,QAAA,OAAAb,SAAA,GAAA,CAAA;IAAAC,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;+CAI6B,GAAA,CAAA;IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;qBAGpD,EAAAD,IAAAA,SAAA,GAAM,CAAA;IAAAC,SAAA,EAAA,OAAA;AAAAa,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,GAAA,CAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,CAAA,CAAA;EAGnBC,IAAA,GAAAC,KAAA,CAAA,IAAA,EAAA,IAAAjB,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAoC,MAAA;AAAAa,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,GAAA,CAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,CAAA,CAAA;;eAGtC,cAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,GAAA,CAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,CAAA,CAAA;EAIAG,SAAA,GAAAD,KAAA,CAAA,QAAA,EAAA,IAAAjB,SAAA,GAAA,CAAA;IAAAC,SAAA,EAAA;AAAyB,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAG3BkB,EAAAA,aAAA,GAAAF,KAAA,CAAAjB,QAAAA,EAAAA,IAAAA,SAAA,GAAE,CAAA;IAAAC,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;;;GAIqB,CAAA,GAAA,EAAA,CAAA,CAAA;EAIrBmB,QAAA,GAAAH,KAAA,CAAA,KAAA,EAAA,IAAAjB,SAAA,GAAA,CAAA;IAAqCC,SAAA,EAAA,UAAA;AAAAa,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,GAAA,CAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,CAAA,CAAA;EAGvCM,QAAA,GAAAJ,KAAA,CAAA,KAAA,EAAA,IAAAjB,SAAA,GAAA,CAAA;IAAAC,SAAE,EAAA,UAAA;AAAAa,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,GAAA,CAAA;AAAAD,IAAAA,SAAA,EAAAC;AAAA,GAAA,CAAA,CAAA,CAAA;EAIAR,KAAA,GAAAe,KAAA,CAAA,EAAA,EAAA,IAAAtB,SAAA,GAAA,CAAA;IAAAC,SAAA,EAAA;GAA4B,CAAA,GAAA,EAAA,CAAA,CAAA;EAI1BY,QAAA;2CAGN,GAAA,CAAA;IAAAZ,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;aAEOsB,GAAA;;MAIP,GAAA,IAAA;;;;;AAjJSC,MAAAA,OAAA,EAAAA,MAAA9B,IAAAA,CAAAA,WAAA,CAAA+B,aAAA;AACTC,MAAAA,QAAA,EAAAA,MAAA,KAAAC,MAAA,EAAAD,QAAA,EAAAb;;AAEA,IAAA,IAAA,CAAAA,QAAA,GAAA,IAAA,CAAAc,MAAA,EAAAD,QAAA,GACE,IAAAE,sBAAA,CAAAC,MAAA,CACA,GAAA,IAAAC,cAAA,CAAAD,MAAA,CAAqB;AACrB,IAAA,IAAA,IAAA,CAAAF,MAAA,EAAA;AACA,MAAA,IAAA,CAAAA,MAAA,CAAAI,QAAA,CAAAC,GAAA,MAAAnB,QAAA,CAAA;;AAEA,IAAA,iBAAA,CAAA,MAAA;AAEA,MAAA,IAAA,OAAAb,SAAA,KAAA,WAAA,IAAAA,SAAA,EAAA;AACA,QAAA,MAAAiC,UAAA,GAAA,IAAA,CAAApB,QAAA,CAAAqB,QAAA,EAAA;QACA,KAAA,MAAAC,SAAA,IAAaF,UAA4B,EAAA;UAEzCG,OAAA,CAAAC,KAAA,CAAAF,SAAA,CAAA;AACD;AACD;;qBAqIsC,CAAA,MAAA;gBAcrBG,WAAA,EAAA,EAAA;QACwB,IAAAzB,CAAAA,QAAA,CAAA0B,eAAA,EAAA;;;AASzCC,IAAAA,iBAA+F,CAAA,MAAA;AACrD,MAAA,MAAAhC,KAAA,GAAAqB,MAAA,CAAArB,KAAA,EAAA;AAC9BiC,MAAAA,MAAAA,UAAW,GAAIC,SAAA,CAAoBb,MAAAA,MAAA,CAAAY,UAAA,EAAA,CAAA;MAE4C,IAAA,CAAAjC,KAAA,CAAAmC,IAAA,CAAAC,CAAA,IAAAA,CAAA,KAAAH,UAAA,CAAA,IAAAA,UAAA,EAAA;AACF,QAAA,IAAA,CAAA5B,QAAA,CAAAgC,YAAA,CAAAC,OAAA,EAAA;AAE/E;AAEV,KAAA,CAAA;AAGqE,IAAA,iBAAA,CAAA,MAAA;AAC3D,MAAA,MAAUtC,KAAA,GAAAqB,MAAS,CAAArB,KAAA,EAAW;AAGxC,MAAA,MAAQD,KAAK,GAAAmC;AAEsBlC,MAAAA,IAAAA,KAAA,IAAAD,KAAA,CAAAoC,IAAA,CAAAI,CAAA,IAAAvC,CAAAA,KAAA,CAAAmC,IAAA,CAAAC,CAAA,IAAAA,CAAA,CAAArC,KAAA,OAAAwC,CAAA,CAAA,CAAA,EAAA;QACnC,IAAAxC,CAAAA,KAAA,CAAAyB,GAAA,CAAAzB,KAAA,CAAAyC,MAAA,CAAAD,CAAA,IAAAvC,KAAA,CAAAmC,IAAA,CAAAC,CAAA,IAAAA,CAAA,CAAArC,KAAA,OAAAwC,CAAA,CAAA,CAAA,CAAA;AAE6C;AAG7C,KAAA,CAAA;;AAG4B,EAAA,OAAA,GAAA;QACX,CAAAT,WAAO,CAAAN,GAAA,CAAA,IAAA,CAAA;;AAGXiB,EAAAA,wBAAAA,CAAAC,OAAM,GAAA;AAAAC,IAAAA,KAAA,EAAA;AAAA,GAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAtDVC,IAAA,EAAA,CAAA;MACTC,QAAA,EAAA,aAAA;;;;;QA5GC,WAAC,EAAA,MAAA;AAAA,QAAA,iBAAA,EAAA,qBAAA;8BAEgD,EAAA,qBAAA;8BACvB,EAAA,qBAAA;QAEoC,yBAAA,EAAA,wBAAA;QAC/D,6BAAc,EAAA,kBAAA;QAEd,8BAAkE,EAAA,6BAAA;AAClE,QAAA,WAAQ,EAAK,4BAAM;AAEnB,QAAA,eAAA,EAAiD,gCAAA;AACjD,QAAA,WAAA,EAAA;;AAGA,MAAA,cAAA,EAAA,CAAA;AAAAC,QAAAA,SAAA,EAAyB9D;;;;AAGzB,EAAA,cAAA,EAAA+D,MAAA;AAAA,CAAA,CAAA;;AAMA,EAAA,WAAA,GAAA,MAAA,CAAA5D,UAAA,CAAA;AAGA,EAAA,QAAA,GAAA,MAAA,CAAA6D,OAAA,CAAA;AAoFEC,EAAAA,YAAA,GAAAlE,MAAA,CAAAmE,YAAA,EAAgBC,KAAA,CAAA,YAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAChB,oBAAA,EAAA,mBAAA;AAAA,QAAA,WAAA,EAAA,eAAA;AACA,QAAA,iBAAA,EAAA,qBAAA;QACA,sBAAA,EAAA,qBAAA;QACA,sBAAA,EAAA;;;;;;;;"}
1
+ {"version":3,"file":"listbox.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/listbox/listbox.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxPopup} from '../combobox';\n\n/**\n * A listbox container.\n *\n * Listboxes are used to display a list of items for a user to select from. The Listbox is meant\n * to be used in conjunction with Option as follows:\n *\n * ```html\n * <ul ngListbox>\n * <li [value]=\"1\" ngOption>Item 1</li>\n * <li [value]=\"2\" ngOption>Item 2</li>\n * <li [value]=\"3\" ngOption>Item 3</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n 'class': 'ng-listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n hostDirectives: [{directive: ComboboxPopup}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-listbox-', true);\n\n // TODO(wagnermaciel): https://github.com/angular/components/pull/30495#discussion_r1972601144.\n /** A unique identifier for the listbox. */\n protected id = computed(() => this._generatedId);\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the listbox element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed(() => this._options().map(option => option._pattern));\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /** Whether to allow disabled items in the list to receive focus. */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the list. */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The selection strategy used by the list. */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(0.5); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the current selected items. */\n value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** Whether the listbox has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup.controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the value is always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n onFocus() {\n this._hasFocused.set(true);\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n}\n\n/** A selectable option in a Listbox. */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n 'class': 'ng-option',\n '[attr.data-active]': '_pattern.active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the option element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Listbox. */\n private readonly _listbox = inject(Listbox);\n\n /** A unique identifier for the option. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-option-', true);\n\n // TODO(wagnermaciel): https://github.com/angular/components/pull/30495#discussion_r1972601144.\n /** A unique identifier for the option. */\n protected id = computed(() => this._generatedId);\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element().textContent);\n\n /** The parent Listbox UIPattern. */\n protected listbox = computed(() => this._listbox._pattern);\n\n /** A reference to the option element to be focused on navigation. */\n protected element = computed(() => this._elementRef.nativeElement);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this.listbox,\n element: this.element,\n searchTerm: this.searchTerm,\n });\n}\n"],"names":["Listbox","_generatedId","inject","_IdGenerator","getId","id","computed","ngDevMode","debugName","_popup","ComboboxPopup","optional","_elementRef","ElementRef","_directionality","Directionality","_options","contentChildren","Option","descendants","textDirection","toSignal","change","initialValue","value","items","map","option","_pattern","orientation","input","multi","transform","booleanAttribute","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","disabled","readonly","model","_hasFocused","signal","constructor","inputs","activeItem","undefined","element","nativeElement","combobox","ComboboxListboxPattern","ListboxPattern","controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultState","untracked","some","i","listBehavior","unfocus","v","filter","onFocus","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","selector","host","_listbox","searchTerm","label","textContent","listbox","required","selected","OptionPattern","isStandalone","classPropertyName","publicName","isRequired","transformFunction","attributes","properties","classAttribute"],"mappings":";;;;;;;;MA4DaA,OAAO,CAAA;EAEDC,YAAY,GAAGC,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC;EAIrEC,EAAE,GAAGC,QAAQ,CAAC,MAAM,IAAI,CAACL,YAAY,EAAA,IAAAM,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAG/BC,EAAAA,MAAM,GAAGP,MAAM,CAAmBQ,aAAa,EAAE;AAChEC,IAAAA,QAAQ,EAAE;AACX,GAAA,CAAC;AAGeC,EAAAA,WAAW,GAAGV,MAAM,CAACW,UAAU,CAAC;AAGhCC,EAAAA,eAAe,GAAGZ,MAAM,CAACa,cAAc,CAAC;EAGxCC,QAAQ,GAAGC,eAAe,CAACC,MAAM;;AAAGC,IAAAA,WAAW,EAAE;GAAI,CAAA,GAAA,CAAlB;AAACA,IAAAA,WAAW,EAAE;GAAK,GAAC;EAG9DC,aAAa,GAAGC,QAAQ,CAAC,IAAI,CAACP,eAAe,CAACQ,MAAM,EAAE;AAC9DC,IAAAA,YAAY,EAAE,IAAI,CAACT,eAAe,CAACU;AACpC,GAAA,CAAC;EAGQC,KAAK,GAAGnB,QAAQ,CAAC,MAAM,IAAI,CAACU,QAAQ,EAAE,CAACU,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,QAAQ,CAAC,EAAA,IAAArB,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAC;EAGhFqB,WAAW,GAAGC,KAAK,CAA4B,UAAU;;WAAC;EAG1DC,KAAK,GAAGD,KAAK,CAAC,KAAK;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGnDC,IAAI,GAAGJ,KAAK,CAAC,IAAI;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGjDE,YAAY,GAAGL,KAAK,CAAC,IAAI;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGzDG,SAAS,GAAGN,KAAK,CAAgC,QAAQ;;WAAC;EAG1DO,aAAa,GAAGP,KAAK,CAAwB,QAAQ;;WAAC;EAGtDQ,cAAc,GAAGR,KAAK,CAAS,GAAG,EAAC,IAAAvB,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;EAGnC+B,QAAQ,GAAGT,KAAK,CAAC,KAAK;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGtDO,QAAQ,GAAGV,KAAK,CAAC,KAAK;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGtDT,KAAK,GAAGiB,KAAK,CAAM,EAAE;;WAAC;EAGbb,QAAQ;EAGTc,WAAW,GAAGC,MAAM,CAAC,KAAK;;WAAC;AAEnCC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,MAAM,GAAG;AACb,MAAA,GAAG,IAAI;MACPxC,EAAE,EAAE,IAAI,CAACA,EAAE;MACXoB,KAAK,EAAE,IAAI,CAACA,KAAK;AACjBqB,MAAAA,UAAU,EAAEH,MAAM,CAACI,SAAS,CAAC;MAC7B3B,aAAa,EAAE,IAAI,CAACA,aAAa;AACjC4B,MAAAA,OAAO,EAAEA,MAAM,IAAI,CAACpC,WAAW,CAACqC,aAAa;MAC7CC,QAAQ,EAAEA,MAAM,IAAI,CAACzC,MAAM,EAAEyC,QAAQ,EAAEtB;KACxC;AAED,IAAA,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACnB,MAAM,EAAEyC,QAAQ,GACjC,IAAIC,sBAAsB,CAAIN,MAAM,CAAA,GACpC,IAAIO,cAAc,CAAIP,MAAM,CAAC;IAEjC,IAAI,IAAI,CAACpC,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC4C,QAAQ,CAACC,GAAG,CAAC,IAAI,CAAC1B,QAAqC,CAAC;AACtE;AAEA2B,IAAAA,iBAAiB,CAAC,MAAK;AACrB,MAAA,IAAI,OAAOhD,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;QACjD,MAAMiD,UAAU,GAAG,IAAI,CAAC5B,QAAQ,CAAC6B,QAAQ,EAAE;AAC3C,QAAA,KAAK,MAAMC,SAAS,IAAIF,UAAU,EAAE;AAClCG,UAAAA,OAAO,CAACC,KAAK,CAACF,SAAS,CAAC;AAC1B;AACF;AACF,KAAC,CAAC;AAEFH,IAAAA,iBAAiB,CAAC,MAAK;AACrB,MAAA,IAAI,CAAC,IAAI,CAACb,WAAW,EAAE,EAAE;AACvB,QAAA,IAAI,CAACd,QAAQ,CAACiC,eAAe,EAAE;AACjC;AACF,KAAC,CAAC;AAIFN,IAAAA,iBAAiB,CAAC,MAAK;AACrB,MAAA,MAAM9B,KAAK,GAAGoB,MAAM,CAACpB,KAAK,EAAE;MAC5B,MAAMqB,UAAU,GAAGgB,SAAS,CAAC,MAAMjB,MAAM,CAACC,UAAU,EAAE,CAAC;AAEvD,MAAA,IAAI,CAACrB,KAAK,CAACsC,IAAI,CAACC,CAAC,IAAIA,CAAC,KAAKlB,UAAU,CAAC,IAAIA,UAAU,EAAE;AACpD,QAAA,IAAI,CAAClB,QAAQ,CAACqC,YAAY,CAACC,OAAO,EAAE;AACtC;AACF,KAAC,CAAC;AAGFX,IAAAA,iBAAiB,CAAC,MAAK;AACrB,MAAA,MAAM9B,KAAK,GAAGoB,MAAM,CAACpB,KAAK,EAAE;MAC5B,MAAMD,KAAK,GAAGsC,SAAS,CAAC,MAAM,IAAI,CAACtC,KAAK,EAAE,CAAC;MAE3C,IAAIC,KAAK,IAAID,KAAK,CAACuC,IAAI,CAACI,CAAC,IAAI,CAAC1C,KAAK,CAACsC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACxC,KAAK,EAAE,KAAK2C,CAAC,CAAC,CAAC,EAAE;QAC/D,IAAI,CAAC3C,KAAK,CAAC8B,GAAG,CAAC9B,KAAK,CAAC4C,MAAM,CAACD,CAAC,IAAI1C,KAAK,CAACsC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACxC,KAAK,EAAE,KAAK2C,CAAC,CAAC,CAAC,CAAC;AACrE;AACF,KAAC,CAAC;AACJ;AAEAE,EAAAA,OAAOA,GAAA;AACL,IAAA,IAAI,CAAC3B,WAAW,CAACY,GAAG,CAAC,IAAI,CAAC;AAC5B;EAEAgB,wBAAwBA,CAACC,OAAiC,GAAA;AAACC,IAAAA,KAAK,EAAE;AAAU,GAAA,EAAA;AAC1E,IAAA,IAAI,CAAC5C,QAAQ,CAACiB,MAAM,CAACC,UAAU,EAAE,EAAEE,OAAO,EAAE,EAAEyB,cAAc,CAACF,OAAO,CAAC;AACvE;;;;;UAhIWvE,OAAO;AAAA0E,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAP,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAnF,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoB0BkB,MAAM;AAAAC,MAAAA,WAAA,EAAA,IAAA;AAAAiE,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;IAAAC,QAAA,EAAA,CAAA,WAAA,CAAA;AAAAC,IAAAA,cAAA,EAAA,CAAA;MAAAC,SAAA,EAAAC;AAAA,KAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAb;AAAA,GAAA,CAAA;;;;;;QApBvC5E,OAAO;AAAA0F,EAAAA,UAAA,EAAA,CAAA;UAnBnBZ,SAAS;AAACa,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,aAAa;AACvBP,MAAAA,QAAQ,EAAE,WAAW;AACrBQ,MAAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,iBAAiB,EAAE,qBAAqB;AACxC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,6BAA6B,EAAE,kBAAkB;AACjD,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,eAAe,EAAE,gCAAgC;AACjD,QAAA,WAAW,EAAE;OACd;AACDP,MAAAA,cAAc,EAAE,CAAC;AAACC,QAAAA,SAAS,EAAE7E;OAAc;KAC5C;;;;MAkJYQ,MAAM,CAAA;AAEAN,EAAAA,WAAW,GAAGV,MAAM,CAACW,UAAU,CAAC;AAGhCiF,EAAAA,QAAQ,GAAG5F,MAAM,CAACF,OAAO,CAAC;EAG1BC,YAAY,GAAGC,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;EAIpEC,EAAE,GAAGC,QAAQ,CAAC,MAAM,IAAI,CAACL,YAAY,EAAA,IAAAM,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAC;EAKtCuF,UAAU,GAAGzF,QAAQ,CAAC,MAAM,IAAI,CAAC0F,KAAK,EAAE,IAAI,IAAI,CAAChD,OAAO,EAAE,CAACiD,WAAW;;WAAC;AAGvEC,EAAAA,OAAO,GAAG5F,QAAQ,CAAC,MAAM,IAAI,CAACwF,QAAQ,CAAClE,QAAQ,EAAA,IAAArB,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAGhDwC,EAAAA,OAAO,GAAG1C,QAAQ,CAAC,MAAM,IAAI,CAACM,WAAW,CAACqC,aAAa,EAAA,IAAA1C,SAAA,GAAA,CAAA;AAAAC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAC;EAGlEgB,KAAK,GAAGM,KAAK,CAACqE,QAAQ;;WAAK;EAG3B5D,QAAQ,GAAGT,KAAK,CAAC,KAAK;;AAAGE,IAAAA,SAAS,EAAEC;GAAgB,CAAA,GAAA,CAA5B;AAACD,IAAAA,SAAS,EAAEC;GAAiB,GAAC;EAGtD+D,KAAK,GAAGlE,KAAK,CAAA,IAAAvB,SAAA,GAAA,CAAAwC,SAAA,EAAA;AAAAvC,IAAAA,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAGd4F,EAAAA,QAAQ,GAAG9F,QAAQ,CAAC,MAAM,IAAI,CAACsB,QAAQ,CAACwE,QAAQ,EAAE;;WAAC;EAGnDxE,QAAQ,GAAG,IAAIyE,aAAa,CAAI;AACvC,IAAA,GAAG,IAAI;IACPhG,EAAE,EAAE,IAAI,CAACA,EAAE;IACXmB,KAAK,EAAE,IAAI,CAACA,KAAK;IACjB0E,OAAO,EAAE,IAAI,CAACA,OAAO;IACrBlD,OAAO,EAAE,IAAI,CAACA,OAAO;IACrB+C,UAAU,EAAE,IAAI,CAACA;AAClB,GAAA,CAAC;;;;;UA7CS7E,MAAM;AAAAwD,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAN5D,MAAM;AAAAoF,IAAAA,YAAA,EAAA,IAAA;AAAAV,IAAAA,QAAA,EAAA,YAAA;AAAA/C,IAAAA,MAAA,EAAA;AAAArB,MAAAA,KAAA,EAAA;AAAA+E,QAAAA,iBAAA,EAAA,OAAA;AAAAC,QAAAA,UAAA,EAAA,OAAA;AAAApB,QAAAA,QAAA,EAAA,IAAA;AAAAqB,QAAAA,UAAA,EAAA,IAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAnE,MAAAA,QAAA,EAAA;AAAAgE,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAApB,QAAAA,QAAA,EAAA,IAAA;AAAAqB,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAV,MAAAA,KAAA,EAAA;AAAAO,QAAAA,iBAAA,EAAA,OAAA;AAAAC,QAAAA,UAAA,EAAA,OAAA;AAAApB,QAAAA,QAAA,EAAA,IAAA;AAAAqB,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAb,IAAAA,IAAA,EAAA;AAAAc,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,kBAAA,EAAA,mBAAA;AAAA,QAAA,SAAA,EAAA,eAAA;AAAA,QAAA,eAAA,EAAA,qBAAA;AAAA,QAAA,oBAAA,EAAA,qBAAA;AAAA,QAAA,oBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAxB,QAAA,EAAA,CAAA,UAAA,CAAA;AAAAI,IAAAA,QAAA,EAAAb;AAAA,GAAA,CAAA;;;;;;QAAN1D,MAAM;AAAAwE,EAAAA,UAAA,EAAA,CAAA;UAblBZ,SAAS;AAACa,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,YAAY;AACtBP,MAAAA,QAAQ,EAAE,UAAU;AACpBQ,MAAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,oBAAoB,EAAE,mBAAmB;AACzC,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,iBAAiB,EAAE,qBAAqB;AACxC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE;AACzB;KACF;;;;;;"}