@angular/aria 22.0.0-next.6 → 22.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_accordion-chunk.mjs.map +1 -1
- package/fesm2022/_click-event-manager-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-chunk.mjs +51 -2
- package/fesm2022/_combobox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-listbox-chunk.mjs +3 -0
- package/fesm2022/_combobox-listbox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-tree-chunk.mjs.map +1 -1
- package/fesm2022/_deferred-content-chunk.mjs +16 -14
- package/fesm2022/_deferred-content-chunk.mjs.map +1 -1
- package/fesm2022/_element-chunk.mjs.map +1 -1
- package/fesm2022/_expansion-chunk.mjs.map +1 -1
- package/fesm2022/_list-chunk.mjs.map +1 -1
- package/fesm2022/_list-navigation-chunk.mjs +3 -1
- package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
- package/fesm2022/_list-typeahead-chunk.mjs.map +1 -1
- package/fesm2022/_menu-chunk.mjs.map +1 -1
- package/fesm2022/_signal-like-chunk.mjs +0 -1
- package/fesm2022/_signal-like-chunk.mjs.map +1 -1
- package/fesm2022/_tabs-chunk.mjs +22 -47
- package/fesm2022/_tabs-chunk.mjs.map +1 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
- package/fesm2022/_widget-chunk.mjs +55 -13
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion-testing.mjs.map +1 -1
- package/fesm2022/accordion.mjs +16 -14
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +59 -34
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid-testing.mjs +72 -0
- package/fesm2022/grid-testing.mjs.map +1 -0
- package/fesm2022/grid.mjs +83 -37
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox-testing.mjs.map +1 -1
- package/fesm2022/listbox.mjs +58 -31
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu-testing.mjs.map +1 -1
- package/fesm2022/menu.mjs +41 -35
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +156 -5
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/simple-combobox.mjs +443 -0
- package/fesm2022/simple-combobox.mjs.map +1 -0
- package/fesm2022/tabs-testing.mjs.map +1 -1
- package/fesm2022/tabs.mjs +243 -218
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar-testing.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +11 -11
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree-testing.mjs.map +1 -1
- package/fesm2022/tree.mjs +65 -33
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +10 -2
- package/types/_combobox-chunk.d.ts +32 -2
- package/types/_grid-chunk.d.ts +16 -8
- package/types/_tabs-chunk.d.ts +7 -42
- package/types/combobox.d.ts +4 -3
- package/types/grid-testing.d.ts +79 -0
- package/types/grid.d.ts +14 -6
- package/types/listbox.d.ts +8 -6
- package/types/menu.d.ts +7 -4
- package/types/private.d.ts +106 -10
- package/types/simple-combobox.d.ts +124 -0
- package/types/tabs.d.ts +79 -74
- package/types/tree.d.ts +5 -2
- package/fesm2022/_pointer-event-manager-chunk.mjs +0 -54
- package/fesm2022/_pointer-event-manager-chunk.mjs.map +0 -1
- package/resources/code-examples.db +0 -0
- package/types/_pointer-event-manager-chunk.d.ts +0 -34
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ContentContainerComponentHarness, HarnessPredicate, ComponentHarness, parallel } from '@angular/cdk/testing';
|
|
2
|
+
|
|
3
|
+
class GridCellHarness extends ContentContainerComponentHarness {
|
|
4
|
+
static hostSelector = '[ngGridCell]';
|
|
5
|
+
static with(options = {}) {
|
|
6
|
+
return new HarnessPredicate(GridCellHarness, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text)).addOption('selected', options.selected, async (harness, selected) => (await harness.isSelected()) === selected).addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled);
|
|
7
|
+
}
|
|
8
|
+
async isSelected() {
|
|
9
|
+
const host = await this.host();
|
|
10
|
+
return (await host.getAttribute('aria-selected')) === 'true';
|
|
11
|
+
}
|
|
12
|
+
async isDisabled() {
|
|
13
|
+
const host = await this.host();
|
|
14
|
+
return (await host.getAttribute('aria-disabled')) === 'true';
|
|
15
|
+
}
|
|
16
|
+
async getText() {
|
|
17
|
+
const host = await this.host();
|
|
18
|
+
return host.text();
|
|
19
|
+
}
|
|
20
|
+
async click() {
|
|
21
|
+
const host = await this.host();
|
|
22
|
+
return host.click();
|
|
23
|
+
}
|
|
24
|
+
async focus() {
|
|
25
|
+
const host = await this.host();
|
|
26
|
+
return host.focus();
|
|
27
|
+
}
|
|
28
|
+
async blur() {
|
|
29
|
+
const host = await this.host();
|
|
30
|
+
return host.blur();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class GridRowHarness extends ComponentHarness {
|
|
34
|
+
static hostSelector = '[ngGridRow]';
|
|
35
|
+
static with(options = {}) {
|
|
36
|
+
return new HarnessPredicate(GridRowHarness, options);
|
|
37
|
+
}
|
|
38
|
+
async getCells(filters = {}) {
|
|
39
|
+
return this.locatorForAll(GridCellHarness.with(filters))();
|
|
40
|
+
}
|
|
41
|
+
async getCellTextByIndex(filters = {}) {
|
|
42
|
+
const cells = await this.getCells(filters);
|
|
43
|
+
return parallel(() => cells.map(cell => cell.getText()));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class GridHarness extends ComponentHarness {
|
|
47
|
+
static hostSelector = '[ngGrid]';
|
|
48
|
+
static with(options = {}) {
|
|
49
|
+
return new HarnessPredicate(GridHarness, options).addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled);
|
|
50
|
+
}
|
|
51
|
+
async isDisabled() {
|
|
52
|
+
const host = await this.host();
|
|
53
|
+
return (await host.getAttribute('aria-disabled')) === 'true';
|
|
54
|
+
}
|
|
55
|
+
async isMultiSelectable() {
|
|
56
|
+
const host = await this.host();
|
|
57
|
+
return (await host.getAttribute('aria-multiselectable')) === 'true';
|
|
58
|
+
}
|
|
59
|
+
async getRows(filters = {}) {
|
|
60
|
+
return this.locatorForAll(GridRowHarness.with(filters))();
|
|
61
|
+
}
|
|
62
|
+
async getCells(filters = {}) {
|
|
63
|
+
return this.locatorForAll(GridCellHarness.with(filters))();
|
|
64
|
+
}
|
|
65
|
+
async getCellTextByIndex() {
|
|
66
|
+
const rows = await this.getRows();
|
|
67
|
+
return parallel(() => rows.map(row => row.getCellTextByIndex()));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { GridCellHarness, GridHarness, GridRowHarness };
|
|
72
|
+
//# sourceMappingURL=grid-testing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/testing/grid-harness.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 ComponentHarness,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n GridHarnessFilters,\n GridRowHarnessFilters,\n GridCellHarnessFilters,\n} from './grid-harness-filters';\n\n/** Harness for interacting with a standard ngGridCell in tests. */\nexport class GridCellHarness extends ContentContainerComponentHarness {\n static hostSelector = '[ngGridCell]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a grid cell with specific attributes.\n * @param options Options for filtering which cell instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridCellHarnessFilters = {}): HarnessPredicate<GridCellHarness> {\n return new HarnessPredicate(GridCellHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the cell is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n /** Whether the cell is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets the text content of the cell. */\n async getText(): Promise<string> {\n const host = await this.host();\n return host.text();\n }\n\n /** Clicks the cell. */\n async click(): Promise<void> {\n const host = await this.host();\n return host.click();\n }\n\n /** Focuses the cell. */\n async focus(): Promise<void> {\n const host = await this.host();\n return host.focus();\n }\n\n /** Blurs the cell. */\n async blur(): Promise<void> {\n const host = await this.host();\n return host.blur();\n }\n}\n\n/** Harness for interacting with a standard ngGridRow in tests. */\nexport class GridRowHarness extends ComponentHarness {\n static hostSelector = '[ngGridRow]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a grid row with specific attributes.\n * @param options Options for filtering which row instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridRowHarnessFilters = {}): HarnessPredicate<GridRowHarness> {\n return new HarnessPredicate(GridRowHarness, options);\n }\n\n /** Gets all cells in the row. */\n async getCells(filters: GridCellHarnessFilters = {}): Promise<GridCellHarness[]> {\n return this.locatorForAll(GridCellHarness.with(filters))();\n }\n\n /** Gets the text of the cells in the row. */\n async getCellTextByIndex(filters: GridCellHarnessFilters = {}): Promise<string[]> {\n const cells = await this.getCells(filters);\n return parallel(() => cells.map(cell => cell.getText()));\n }\n}\n\n/** Harness for interacting with a standard ngGrid in tests. */\nexport class GridHarness extends ComponentHarness {\n static hostSelector = '[ngGrid]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a grid with specific attributes.\n * @param options Options for filtering which grid instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridHarnessFilters = {}): HarnessPredicate<GridHarness> {\n return new HarnessPredicate(GridHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the grid is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the grid is multi-selectable. */\n async isMultiSelectable(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Gets all rows in the grid. */\n async getRows(filters: GridRowHarnessFilters = {}): Promise<GridRowHarness[]> {\n return this.locatorForAll(GridRowHarness.with(filters))();\n }\n\n /** Gets all cells in the grid. */\n async getCells(filters: GridCellHarnessFilters = {}): Promise<GridCellHarness[]> {\n return this.locatorForAll(GridCellHarness.with(filters))();\n }\n\n /** Gets the text inside the entire grid organized by rows. */\n async getCellTextByIndex(): Promise<string[][]> {\n const rows = await this.getRows();\n return parallel(() => rows.map(row => row.getCellTextByIndex()));\n }\n}\n"],"names":["GridCellHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","selected","isSelected","disabled","isDisabled","host","getAttribute","click","focus","blur","GridRowHarness","ComponentHarness","getCells","filters","locatorForAll","getCellTextByIndex","cells","parallel","map","cell","GridHarness","isMultiSelectable","getRows","rows","row"],"mappings":";;AAqBM,MAAOA,eAAgB,SAAQC,gCAAgC,CAAA;EACnE,OAAOC,YAAY,GAAG,cAAc;AAOpC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAkC,EAAE,EAAA;AAC9C,IAAA,OAAO,IAAIC,gBAAgB,CAACL,eAAe,EAAEI,OAAO,CAAA,CACjDE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,CAACC,OAAO,EAAED,IAAI,KAC7CF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAAA,CAExDD,SAAS,CACR,UAAU,EACVF,OAAO,CAACO,QAAQ,EAChB,OAAOH,OAAO,EAAEG,QAAQ,KAAK,CAAC,MAAMH,OAAO,CAACI,UAAU,EAAE,MAAMD,QAAQ,CAAA,CAEvEL,SAAS,CACR,UAAU,EACVF,OAAO,CAACS,QAAQ,EAChB,OAAOL,OAAO,EAAEK,QAAQ,KAAK,CAAC,MAAML,OAAO,CAACM,UAAU,EAAE,MAAMD,QAAQ,CACvE;AACL,EAAA;EAGA,MAAMD,UAAUA,GAAA;AACd,IAAA,MAAMG,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAMA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC9D,EAAA;EAGA,MAAMF,UAAUA,GAAA;AACd,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAMA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC9D,EAAA;EAGA,MAAMN,OAAOA,GAAA;AACX,IAAA,MAAMK,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACR,IAAI,EAAE;AACpB,EAAA;EAGA,MAAMU,KAAKA,GAAA;AACT,IAAA,MAAMF,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACE,KAAK,EAAE;AACrB,EAAA;EAGA,MAAMC,KAAKA,GAAA;AACT,IAAA,MAAMH,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACG,KAAK,EAAE;AACrB,EAAA;EAGA,MAAMC,IAAIA,GAAA;AACR,IAAA,MAAMJ,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACI,IAAI,EAAE;AACpB,EAAA;;AAII,MAAOC,cAAe,SAAQC,gBAAgB,CAAA;EAClD,OAAOnB,YAAY,GAAG,aAAa;AAOnC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAiC,EAAE,EAAA;AAC7C,IAAA,OAAO,IAAIC,gBAAgB,CAACe,cAAc,EAAEhB,OAAO,CAAC;AACtD,EAAA;AAGA,EAAA,MAAMkB,QAAQA,CAACC,OAAA,GAAkC,EAAE,EAAA;AACjD,IAAA,OAAO,IAAI,CAACC,aAAa,CAACxB,eAAe,CAACG,IAAI,CAACoB,OAAO,CAAC,CAAC,EAAE;AAC5D,EAAA;AAGA,EAAA,MAAME,kBAAkBA,CAACF,OAAA,GAAkC,EAAE,EAAA;IAC3D,MAAMG,KAAK,GAAG,MAAM,IAAI,CAACJ,QAAQ,CAACC,OAAO,CAAC;AAC1C,IAAA,OAAOI,QAAQ,CAAC,MAAMD,KAAK,CAACE,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACnB,OAAO,EAAE,CAAC,CAAC;AAC1D,EAAA;;AAII,MAAOoB,WAAY,SAAQT,gBAAgB,CAAA;EAC/C,OAAOnB,YAAY,GAAG,UAAU;AAOhC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAA8B,EAAE,EAAA;AAC1C,IAAA,OAAO,IAAIC,gBAAgB,CAACyB,WAAW,EAAE1B,OAAO,CAAC,CAACE,SAAS,CACzD,UAAU,EACVF,OAAO,CAACS,QAAQ,EAChB,OAAOL,OAAO,EAAEK,QAAQ,KAAK,CAAC,MAAML,OAAO,CAACM,UAAU,EAAE,MAAMD,QAAQ,CACvE;AACH,EAAA;EAGA,MAAMC,UAAUA,GAAA;AACd,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAMA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC9D,EAAA;EAGA,MAAMe,iBAAiBA,GAAA;AACrB,IAAA,MAAMhB,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAMA,IAAI,CAACC,YAAY,CAAC,sBAAsB,CAAC,MAAM,MAAM;AACrE,EAAA;AAGA,EAAA,MAAMgB,OAAOA,CAACT,OAAA,GAAiC,EAAE,EAAA;AAC/C,IAAA,OAAO,IAAI,CAACC,aAAa,CAACJ,cAAc,CAACjB,IAAI,CAACoB,OAAO,CAAC,CAAC,EAAE;AAC3D,EAAA;AAGA,EAAA,MAAMD,QAAQA,CAACC,OAAA,GAAkC,EAAE,EAAA;AACjD,IAAA,OAAO,IAAI,CAACC,aAAa,CAACxB,eAAe,CAACG,IAAI,CAACoB,OAAO,CAAC,CAAC,EAAE;AAC5D,EAAA;EAGA,MAAME,kBAAkBA,GAAA;AACtB,IAAA,MAAMQ,IAAI,GAAG,MAAM,IAAI,CAACD,OAAO,EAAE;AACjC,IAAA,OAAOL,QAAQ,CAAC,MAAMM,IAAI,CAACL,GAAG,CAACM,GAAG,IAAIA,GAAG,CAACT,kBAAkB,EAAE,CAAC,CAAC;AAClE,EAAA;;;;;"}
|
package/fesm2022/grid.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef, contentChildren, computed, input, booleanAttribute, afterRenderEffect, Directive, output, Renderer2, contentChild, model } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, ElementRef, contentChildren, computed, input, booleanAttribute, numberAttribute, afterRenderEffect, Directive, output, Renderer2, EventEmitter, contentChild, model, Output } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@angular/cdk/bidi';
|
|
4
4
|
import { GridPattern, GridCellWidgetPattern, GridCellPattern, GridRowPattern } from './_widget-chunk.mjs';
|
|
5
5
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
6
6
|
import './_signal-like-chunk.mjs';
|
|
7
7
|
import '@angular/core/primitives/signals';
|
|
8
|
-
import './
|
|
8
|
+
import './_click-event-manager-chunk.mjs';
|
|
9
9
|
|
|
10
10
|
const GRID_CELL = new InjectionToken('GRID_CELL');
|
|
11
11
|
const GRID_ROW = new InjectionToken('GRID_ROW');
|
|
@@ -59,18 +59,42 @@ class Grid {
|
|
|
59
59
|
selectionMode = input('follow', ...(ngDevMode ? [{
|
|
60
60
|
debugName: "selectionMode"
|
|
61
61
|
}] : []));
|
|
62
|
+
tabIndex = input(undefined, {
|
|
63
|
+
...(ngDevMode ? {
|
|
64
|
+
debugName: "tabIndex"
|
|
65
|
+
} : {}),
|
|
66
|
+
transform: v => v === undefined ? undefined : numberAttribute(v)
|
|
67
|
+
});
|
|
62
68
|
_pattern = new GridPattern({
|
|
63
69
|
...this,
|
|
64
70
|
rows: this._rowPatterns,
|
|
65
71
|
getCell: e => this._getCell(e),
|
|
66
72
|
element: () => this.element
|
|
67
73
|
});
|
|
74
|
+
activeDescendant = computed(() => this._pattern.activeDescendant(), ...(ngDevMode ? [{
|
|
75
|
+
debugName: "activeDescendant"
|
|
76
|
+
}] : []));
|
|
68
77
|
constructor() {
|
|
69
|
-
afterRenderEffect(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
afterRenderEffect(
|
|
73
|
-
|
|
78
|
+
afterRenderEffect({
|
|
79
|
+
write: () => this._pattern.setDefaultStateEffect()
|
|
80
|
+
});
|
|
81
|
+
afterRenderEffect({
|
|
82
|
+
write: () => this._pattern.resetStateEffect()
|
|
83
|
+
});
|
|
84
|
+
afterRenderEffect({
|
|
85
|
+
write: () => this._pattern.resetFocusEffect()
|
|
86
|
+
});
|
|
87
|
+
afterRenderEffect({
|
|
88
|
+
write: () => this._pattern.restoreFocusEffect()
|
|
89
|
+
});
|
|
90
|
+
afterRenderEffect({
|
|
91
|
+
write: () => this._pattern.focusEffect()
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
scrollActiveCellIntoView(options = {
|
|
95
|
+
block: 'nearest'
|
|
96
|
+
}) {
|
|
97
|
+
this._pattern.activeCell()?.element().scrollIntoView(options);
|
|
74
98
|
}
|
|
75
99
|
_getCell(element) {
|
|
76
100
|
let target = element;
|
|
@@ -88,7 +112,7 @@ class Grid {
|
|
|
88
112
|
}
|
|
89
113
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
90
114
|
minVersion: "12.0.0",
|
|
91
|
-
version: "22.0.0-next.
|
|
115
|
+
version: "22.0.0-next.9",
|
|
92
116
|
ngImport: i0,
|
|
93
117
|
type: Grid,
|
|
94
118
|
deps: [],
|
|
@@ -96,7 +120,7 @@ class Grid {
|
|
|
96
120
|
});
|
|
97
121
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
98
122
|
minVersion: "17.2.0",
|
|
99
|
-
version: "22.0.0-next.
|
|
123
|
+
version: "22.0.0-next.9",
|
|
100
124
|
type: Grid,
|
|
101
125
|
isStandalone: true,
|
|
102
126
|
selector: "[ngGrid]",
|
|
@@ -156,6 +180,13 @@ class Grid {
|
|
|
156
180
|
isSignal: true,
|
|
157
181
|
isRequired: false,
|
|
158
182
|
transformFunction: null
|
|
183
|
+
},
|
|
184
|
+
tabIndex: {
|
|
185
|
+
classPropertyName: "tabIndex",
|
|
186
|
+
publicName: "tabIndex",
|
|
187
|
+
isSignal: true,
|
|
188
|
+
isRequired: false,
|
|
189
|
+
transformFunction: null
|
|
159
190
|
}
|
|
160
191
|
},
|
|
161
192
|
host: {
|
|
@@ -164,12 +195,12 @@ class Grid {
|
|
|
164
195
|
},
|
|
165
196
|
listeners: {
|
|
166
197
|
"keydown": "_pattern.onKeydown($event)",
|
|
167
|
-
"
|
|
198
|
+
"click": "_pattern.onClick($event)",
|
|
168
199
|
"focusin": "_pattern.onFocusIn($event)",
|
|
169
200
|
"focusout": "_pattern.onFocusOut($event)"
|
|
170
201
|
},
|
|
171
202
|
properties: {
|
|
172
|
-
"tabindex": "_pattern.tabIndex()",
|
|
203
|
+
"tabindex": "tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()",
|
|
173
204
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
174
205
|
"attr.aria-multiselectable": "_pattern.multiSelectable()",
|
|
175
206
|
"attr.aria-activedescendant": "_pattern.activeDescendant()"
|
|
@@ -187,7 +218,7 @@ class Grid {
|
|
|
187
218
|
}
|
|
188
219
|
i0.ɵɵngDeclareClassMetadata({
|
|
189
220
|
minVersion: "12.0.0",
|
|
190
|
-
version: "22.0.0-next.
|
|
221
|
+
version: "22.0.0-next.9",
|
|
191
222
|
ngImport: i0,
|
|
192
223
|
type: Grid,
|
|
193
224
|
decorators: [{
|
|
@@ -197,12 +228,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
197
228
|
exportAs: 'ngGrid',
|
|
198
229
|
host: {
|
|
199
230
|
'role': 'grid',
|
|
200
|
-
'[tabindex]': '_pattern.tabIndex()',
|
|
231
|
+
'[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',
|
|
201
232
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
202
233
|
'[attr.aria-multiselectable]': '_pattern.multiSelectable()',
|
|
203
234
|
'[attr.aria-activedescendant]': '_pattern.activeDescendant()',
|
|
204
235
|
'(keydown)': '_pattern.onKeydown($event)',
|
|
205
|
-
'(
|
|
236
|
+
'(click)': '_pattern.onClick($event)',
|
|
206
237
|
'(focusin)': '_pattern.onFocusIn($event)',
|
|
207
238
|
'(focusout)': '_pattern.onFocusOut($event)'
|
|
208
239
|
}
|
|
@@ -282,6 +313,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
282
313
|
alias: "selectionMode",
|
|
283
314
|
required: false
|
|
284
315
|
}]
|
|
316
|
+
}],
|
|
317
|
+
tabIndex: [{
|
|
318
|
+
type: i0.Input,
|
|
319
|
+
args: [{
|
|
320
|
+
isSignal: true,
|
|
321
|
+
alias: "tabIndex",
|
|
322
|
+
required: false
|
|
323
|
+
}]
|
|
285
324
|
}]
|
|
286
325
|
}
|
|
287
326
|
});
|
|
@@ -319,26 +358,27 @@ class GridCellWidget {
|
|
|
319
358
|
_pattern = new GridCellWidgetPattern({
|
|
320
359
|
...this,
|
|
321
360
|
element: () => this.element,
|
|
322
|
-
cell: () => this._cell._pattern
|
|
323
|
-
focusTarget: computed(() => {
|
|
324
|
-
const target = this.focusTarget();
|
|
325
|
-
return target instanceof ElementRef ? target.nativeElement : target;
|
|
326
|
-
})
|
|
361
|
+
cell: () => this._cell._pattern
|
|
327
362
|
});
|
|
328
363
|
get isActivated() {
|
|
329
364
|
return computed(() => this._pattern.isActivated());
|
|
330
365
|
}
|
|
331
366
|
constructor() {
|
|
332
|
-
afterRenderEffect(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
367
|
+
afterRenderEffect({
|
|
368
|
+
read: () => {
|
|
369
|
+
if (this._pattern.isActivated()) {
|
|
370
|
+
const activateEvent = this._pattern.lastActivateEvent();
|
|
371
|
+
this.activated.emit(activateEvent);
|
|
372
|
+
this._pattern.focus();
|
|
373
|
+
}
|
|
336
374
|
}
|
|
337
375
|
});
|
|
338
|
-
afterRenderEffect(
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
376
|
+
afterRenderEffect({
|
|
377
|
+
read: () => {
|
|
378
|
+
const deactivateEvent = this._pattern.lastDeactivateEvent();
|
|
379
|
+
if (deactivateEvent) {
|
|
380
|
+
this.deactivated.emit(deactivateEvent);
|
|
381
|
+
}
|
|
342
382
|
}
|
|
343
383
|
});
|
|
344
384
|
}
|
|
@@ -350,7 +390,7 @@ class GridCellWidget {
|
|
|
350
390
|
}
|
|
351
391
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
352
392
|
minVersion: "12.0.0",
|
|
353
|
-
version: "22.0.0-next.
|
|
393
|
+
version: "22.0.0-next.9",
|
|
354
394
|
ngImport: i0,
|
|
355
395
|
type: GridCellWidget,
|
|
356
396
|
deps: [],
|
|
@@ -358,7 +398,7 @@ class GridCellWidget {
|
|
|
358
398
|
});
|
|
359
399
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
360
400
|
minVersion: "17.1.0",
|
|
361
|
-
version: "22.0.0-next.
|
|
401
|
+
version: "22.0.0-next.9",
|
|
362
402
|
type: GridCellWidget,
|
|
363
403
|
isStandalone: true,
|
|
364
404
|
selector: "[ngGridCellWidget]",
|
|
@@ -417,7 +457,7 @@ class GridCellWidget {
|
|
|
417
457
|
}
|
|
418
458
|
i0.ɵɵngDeclareClassMetadata({
|
|
419
459
|
minVersion: "12.0.0",
|
|
420
|
-
version: "22.0.0-next.
|
|
460
|
+
version: "22.0.0-next.9",
|
|
421
461
|
ngImport: i0,
|
|
422
462
|
type: GridCellWidget,
|
|
423
463
|
decorators: [{
|
|
@@ -490,6 +530,7 @@ class GridCell {
|
|
|
490
530
|
_elementRef = inject(ElementRef);
|
|
491
531
|
_renderer = inject(Renderer2);
|
|
492
532
|
element = this._elementRef.nativeElement;
|
|
533
|
+
activated = new EventEmitter();
|
|
493
534
|
active = computed(() => this._pattern.active(), ...(ngDevMode ? [{
|
|
494
535
|
debugName: "active"
|
|
495
536
|
}] : []));
|
|
@@ -546,7 +587,8 @@ class GridCell {
|
|
|
546
587
|
row: () => this._row._pattern,
|
|
547
588
|
widget: this._widgetPattern,
|
|
548
589
|
getWidget: e => this._getWidget(e),
|
|
549
|
-
element: () => this.element
|
|
590
|
+
element: () => this.element,
|
|
591
|
+
onActivate: e => this.activated.emit(e)
|
|
550
592
|
});
|
|
551
593
|
constructor() {
|
|
552
594
|
afterRenderEffect({
|
|
@@ -594,7 +636,7 @@ class GridCell {
|
|
|
594
636
|
}
|
|
595
637
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
596
638
|
minVersion: "12.0.0",
|
|
597
|
-
version: "22.0.0-next.
|
|
639
|
+
version: "22.0.0-next.9",
|
|
598
640
|
ngImport: i0,
|
|
599
641
|
type: GridCell,
|
|
600
642
|
deps: [],
|
|
@@ -602,7 +644,7 @@ class GridCell {
|
|
|
602
644
|
});
|
|
603
645
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
604
646
|
minVersion: "17.2.0",
|
|
605
|
-
version: "22.0.0-next.
|
|
647
|
+
version: "22.0.0-next.9",
|
|
606
648
|
type: GridCell,
|
|
607
649
|
isStandalone: true,
|
|
608
650
|
selector: "[ngGridCell]",
|
|
@@ -679,6 +721,7 @@ class GridCell {
|
|
|
679
721
|
}
|
|
680
722
|
},
|
|
681
723
|
outputs: {
|
|
724
|
+
activated: "activated",
|
|
682
725
|
selected: "selectedChange"
|
|
683
726
|
},
|
|
684
727
|
providers: [{
|
|
@@ -698,7 +741,7 @@ class GridCell {
|
|
|
698
741
|
}
|
|
699
742
|
i0.ɵɵngDeclareClassMetadata({
|
|
700
743
|
minVersion: "12.0.0",
|
|
701
|
-
version: "22.0.0-next.
|
|
744
|
+
version: "22.0.0-next.9",
|
|
702
745
|
ngImport: i0,
|
|
703
746
|
type: GridCell,
|
|
704
747
|
decorators: [{
|
|
@@ -714,6 +757,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
714
757
|
}],
|
|
715
758
|
ctorParameters: () => [],
|
|
716
759
|
propDecorators: {
|
|
760
|
+
activated: [{
|
|
761
|
+
type: Output
|
|
762
|
+
}],
|
|
717
763
|
_widget: [{
|
|
718
764
|
type: i0.ContentChild,
|
|
719
765
|
args: [i0.forwardRef(() => GridCellWidget), {
|
|
@@ -835,7 +881,7 @@ class GridRow {
|
|
|
835
881
|
});
|
|
836
882
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
837
883
|
minVersion: "12.0.0",
|
|
838
|
-
version: "22.0.0-next.
|
|
884
|
+
version: "22.0.0-next.9",
|
|
839
885
|
ngImport: i0,
|
|
840
886
|
type: GridRow,
|
|
841
887
|
deps: [],
|
|
@@ -843,7 +889,7 @@ class GridRow {
|
|
|
843
889
|
});
|
|
844
890
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
845
891
|
minVersion: "17.2.0",
|
|
846
|
-
version: "22.0.0-next.
|
|
892
|
+
version: "22.0.0-next.9",
|
|
847
893
|
type: GridRow,
|
|
848
894
|
isStandalone: true,
|
|
849
895
|
selector: "[ngGridRow]",
|
|
@@ -880,7 +926,7 @@ class GridRow {
|
|
|
880
926
|
}
|
|
881
927
|
i0.ɵɵngDeclareClassMetadata({
|
|
882
928
|
minVersion: "12.0.0",
|
|
883
|
-
version: "22.0.0-next.
|
|
929
|
+
version: "22.0.0-next.9",
|
|
884
930
|
ngImport: i0,
|
|
885
931
|
type: GridRow,
|
|
886
932
|
decorators: [{
|
package/fesm2022/grid.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.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 {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridPattern, GridCellPattern} from '../private';\nimport {GRID_ROW} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($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 /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The rows that make up the grid. */\n private readonly _rows = contentChildren(GRID_ROW, {descendants: true});\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<any[]> = computed(() => this._rows().map(r => r._pattern));\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\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 /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\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 /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\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 element: () => this.element,\n });\n\n constructor() {\n afterRenderEffect(() => this._pattern.setDefaultStateEffect());\n afterRenderEffect(() => this._pattern.resetStateEffect());\n afterRenderEffect(() => this._pattern.resetFocusEffect());\n afterRenderEffect(() => this._pattern.restoreFocusEffect());\n afterRenderEffect(() => this._pattern.focusEffect());\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return undefined;\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementRef | HTMLElement | undefined>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? (this.focusTarget() ? -1 : this._pattern.tabIndex()),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n focusTarget: computed(() => {\n const target = this.focusTarget();\n return target instanceof ElementRef ? target.nativeElement : target;\n }),\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect(() => {\n const activateEvent = this._pattern.lastActivateEvent();\n if (activateEvent) {\n this.activated.emit(activateEvent);\n }\n });\n\n afterRenderEffect(() => {\n const deactivateEvent = this._pattern.lastDeactivateEvent();\n if (deactivateEvent) {\n this.deactivated.emit(deactivateEvent);\n }\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern, GridCellWidgetPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widget contained within this cell, if any. */\n private readonly _widget = contentChild(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widget()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('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 tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n const widget = this._widgetPattern();\n\n if (!widget) return undefined;\n\n while (target) {\n if (widget.element() === target) {\n return widget;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern} from '../private';\nimport {Grid} from './grid';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The cells that make up this row. */\n private readonly _cells = contentChildren(GRID_CELL, {descendants: true});\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = 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 _gridPattern = computed<GridPattern>(() => this._grid._pattern);\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 grid: this._gridPattern,\n });\n}\n"],"names":["GRID_CELL","InjectionToken","GRID_ROW","Grid","_elementRef","inject","ElementRef","element","nativeElement","_rows","contentChildren","descendants","_rowPatterns","computed","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","GridPattern","rows","getCell","e","_getCell","constructor","afterRenderEffect","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","target","row","cell","inputs","cells","parentElement","closest","undefined","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","ngImport","decorators","args","selector","host","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","required","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","tabIndex","GridCellWidgetPattern","isActivated","activateEvent","lastActivateEvent","emit","deactivateEvent","lastDeactivateEvent","activate","deactivate","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","properties","GridCell","_renderer","Renderer2","_widget","contentChild","_widgetPattern","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","GridCellPattern","grid","_gridPattern","widget","getWidget","_getWidget","write","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","name","value","removeAttribute","setAttribute","providers","provide","useExisting","ContentChild","Output","GridRow","_cells","_cellPatterns","c","_grid","GridRowPattern","attributes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.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 {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridPattern, GridCellPattern} from '../private';\nimport {GRID_ROW} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($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 /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The rows that make up the grid. */\n private readonly _rows = contentChildren(GRID_ROW, {descendants: true});\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<any[]> = computed(() => this._rows().map(r => r._pattern));\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\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 /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\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 /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The tabindex of the grid. */\n readonly tabIndex = input(undefined, {\n transform: (v: string | number | undefined) =>\n v === undefined ? undefined : numberAttribute(v),\n });\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 element: () => this.element,\n });\n\n /** The ID of the active descendant in the grid. */\n readonly activeDescendant = computed(() => this._pattern.activeDescendant());\n\n constructor() {\n // Use Write mode for all direct DOM focus management actions.\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetFocusEffect()});\n afterRenderEffect({write: () => this._pattern.restoreFocusEffect()});\n afterRenderEffect({write: () => this._pattern.focusEffect()});\n }\n\n /** Scrolls the active cell into view. */\n scrollActiveCellIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.activeCell()?.element().scrollIntoView(options);\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return undefined;\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern, ElementResolver} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementResolver<HTMLElement>>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? (this.focusTarget() ? -1 : this._pattern.tabIndex()),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect({\n read: () => {\n if (this._pattern.isActivated()) {\n const activateEvent = this._pattern.lastActivateEvent();\n this.activated.emit(activateEvent);\n this._pattern.focus();\n }\n },\n });\n\n afterRenderEffect({\n read: () => {\n const deactivateEvent = this._pattern.lastDeactivateEvent();\n if (deactivateEvent) {\n this.deactivated.emit(deactivateEvent);\n }\n },\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n input,\n model,\n Output,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern, GridCellWidgetPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Emits when the cell is activated via Enter/Space (simple widgets only). */\n @Output() readonly activated = new EventEmitter<KeyboardEvent>();\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widget contained within this cell, if any. */\n private readonly _widget = contentChild(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widget()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('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 tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n onActivate: e => this.activated.emit(e),\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n const widget = this._widgetPattern();\n\n if (!widget) return undefined;\n\n while (target) {\n if (widget.element() === target) {\n return widget;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern} from '../private';\nimport {Grid} from './grid';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The cells that make up this row. */\n private readonly _cells = contentChildren(GRID_CELL, {descendants: true});\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = 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 _gridPattern = computed<GridPattern>(() => this._grid._pattern);\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 grid: this._gridPattern,\n });\n}\n"],"names":["GRID_CELL","InjectionToken","GRID_ROW","Grid","_elementRef","inject","ElementRef","element","nativeElement","_rows","contentChildren","descendants","_rowPatterns","computed","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","tabIndex","undefined","ngDevMode","debugName","v","numberAttribute","GridPattern","rows","getCell","e","_getCell","activeDescendant","constructor","afterRenderEffect","write","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","scrollActiveCellIntoView","options","block","activeCell","scrollIntoView","target","row","cell","inputs","cells","parentElement","closest","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isSignal","exportAs","ngImport","decorators","args","selector","host","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","required","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","GridCellWidgetPattern","isActivated","read","activateEvent","lastActivateEvent","emit","focus","deactivateEvent","lastDeactivateEvent","activate","deactivate","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","properties","GridCell","_renderer","Renderer2","EventEmitter","_widget","contentChild","_widgetPattern","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","GridCellPattern","grid","_gridPattern","widget","getWidget","_getWidget","onActivate","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","name","value","removeAttribute","setAttribute","providers","provide","useExisting","Output","ContentChild","GridRow","_cells","_cellPatterns","c","_grid","GridRowPattern","attributes"],"mappings":";;;;;;;;;AAaO,MAAMA,SAAS,GAAG,IAAIC,cAAc,CAAW,WAAW,CAAC;AAG3D,MAAMC,QAAQ,GAAG,IAAID,cAAc,CAAU,UAAU,CAAC;;MC8ClDE,IAAI,CAAA;AAEEC,EAAAA,WAAW,GAAGC,MAAM,CAACC,UAAU,CAAC;AAGxCC,EAAAA,OAAO,GAAG,IAAI,CAACH,WAAW,CAACI,aAA4B;AAG/CC,EAAAA,KAAK,GAAGC,eAAe,CAACR,QAAQ;;;;AAAGS,IAAAA,WAAW,EAAE;AAAI,GAAA,CAAE;EAGtDC,YAAY,GAAkBC,QAAQ,CAAC,MAAM,IAAI,CAACJ,KAAK,EAAE,CAACK,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC;;WAAC;AAGvFC,EAAAA,aAAa,GAAGZ,MAAM,CAACa,cAAc,CAAC,CAACC,WAAW;AAGlDC,EAAAA,eAAe,GAAGC,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAG7DC,EAAAA,QAAQ,GAAGH,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAMtDE,EAAAA,YAAY,GAAGJ,KAAK,CAAC,IAAI;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;EAOzDG,SAAS,GAAGL,KAAK,CAAgC,QAAQ;;WAAC;EAQ1DM,OAAO,GAAGN,KAAK,CAAmC,MAAM;;WAAC;EAQzDO,OAAO,GAAGP,KAAK,CAAmC,MAAM;;WAAC;AAGzDQ,EAAAA,KAAK,GAAGR,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;EAOnDO,aAAa,GAAGT,KAAK,CAAwB,QAAQ;;WAAC;AAGtDU,EAAAA,QAAQ,GAAGV,KAAK,CAACW,SAAS,EAAA;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;IACjCZ,SAAS,EAAGa,CAA8B,IACxCA,CAAC,KAAKH,SAAS,GAAGA,SAAS,GAAGI,eAAe,CAACD,CAAC;AAAC,GAAA,CAClD;EAGOnB,QAAQ,GAAG,IAAIqB,WAAW,CAAC;AAClC,IAAA,GAAG,IAAI;IACPC,IAAI,EAAE,IAAI,CAAC1B,YAAY;IACvB2B,OAAO,EAAEC,CAAC,IAAI,IAAI,CAACC,QAAQ,CAACD,CAAC,CAAC;AAC9BjC,IAAAA,OAAO,EAAEA,MAAM,IAAI,CAACA;AACrB,GAAA,CAAC;AAGOmC,EAAAA,gBAAgB,GAAG7B,QAAQ,CAAC,MAAM,IAAI,CAACG,QAAQ,CAAC0B,gBAAgB,EAAE;;WAAC;AAE5EC,EAAAA,WAAAA,GAAA;AAEEC,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAAC7B,QAAQ,CAAC8B,qBAAqB;AAAE,KAAC,CAAC;AACvEF,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAAC7B,QAAQ,CAAC+B,gBAAgB;AAAE,KAAC,CAAC;AAClEH,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAAC7B,QAAQ,CAACgC,gBAAgB;AAAE,KAAC,CAAC;AAClEJ,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAAC7B,QAAQ,CAACiC,kBAAkB;AAAE,KAAC,CAAC;AACpEL,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAAC7B,QAAQ,CAACkC,WAAW;AAAE,KAAC,CAAC;AAC/D,EAAA;EAGAC,wBAAwBA,CAACC,OAAA,GAAiC;AAACC,IAAAA,KAAK,EAAE;AAAS,GAAC,EAAA;AAC1E,IAAA,IAAI,CAACrC,QAAQ,CAACsC,UAAU,EAAE,EAAE/C,OAAO,EAAE,CAACgD,cAAc,CAACH,OAAO,CAAC;AAC/D,EAAA;EAGQX,QAAQA,CAAClC,OAAmC,EAAA;IAClD,IAAIiD,MAAM,GAAGjD,OAAO;AAEpB,IAAA,OAAOiD,MAAM,EAAE;MACb,KAAK,MAAMC,GAAG,IAAI,IAAI,CAAC7C,YAAY,EAAE,EAAE;QACrC,KAAK,MAAM8C,IAAI,IAAID,GAAG,CAACE,MAAM,CAACC,KAAK,EAAE,EAAE;AACrC,UAAA,IAAIF,IAAI,CAACnD,OAAO,EAAE,KAAKiD,MAAM,EAAE;AAC7B,YAAA,OAAOE,IAAI;AACb,UAAA;AACF,QAAA;AACF,MAAA;MAEAF,MAAM,GAAGA,MAAM,CAACK,aAAa,EAAEC,OAAO,CAAC,cAAc,CAAC;AACxD,IAAA;AAEA,IAAA,OAAO9B,SAAS;AAClB,EAAA;;;;;UA7GW7B,IAAI;AAAA4D,IAAAA,IAAA,EAAA,EAAA;AAAAP,IAAAA,MAAA,EAAAQ,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAJ,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAApE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ0BD,QAAQ;AAAAS,MAAAA,WAAA,EAAA,IAAA;AAAA6D,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;IAAAC,QAAA,EAAA,CAAA,QAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QARtC7D,IAAI;AAAAwE,EAAAA,UAAA,EAAA,CAAA;UAfhBT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,UAAU;AACpBJ,MAAAA,QAAQ,EAAE,QAAQ;AAClBK,MAAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,YAAY,EAAE,6DAA6D;AAC3E,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,6BAA6B,EAAE,4BAA4B;AAC3D,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,SAAS,EAAE,0BAA0B;AACrC,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,YAAY,EAAE;AACf;KACF;AAS0C,GAAA,CAAA;EAAAC,cAAA,EAAAA,MAAA,EAAA;AAAAC,EAAAA,cAAA,EAAA;AAAAvE,IAAAA,KAAA,EAAA,CAAA;MAAA8D,IAAA,EAAAP,EAAA,CAAAiB,eAAA;MAAAL,IAAA,EAAA,CAAAZ,EAAA,CAAAkB,UAAA,CAAA,MAAAhF,QAAQ,CAAA,EAAA;QAAA,GAAE;AAACS,UAAAA,WAAW,EAAE;SAAK;AAAA6D,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAApD,IAAAA,eAAA,EAAA,CAAA;MAAAmD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,iBAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA7D,IAAAA,QAAA,EAAA,CAAA;MAAA+C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA5D,IAAAA,YAAA,EAAA,CAAA;MAAA8C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,cAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA3D,IAAAA,SAAA,EAAA,CAAA;MAAA6C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,WAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA1D,IAAAA,OAAA,EAAA,CAAA;MAAA4C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,SAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAzD,IAAAA,OAAA,EAAA,CAAA;MAAA2C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,SAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAxD,IAAAA,KAAA,EAAA,CAAA;MAAA0C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,OAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAvD,IAAAA,aAAA,EAAA,CAAA;MAAAyC,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,eAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAtD,IAAAA,QAAA,EAAA,CAAA;MAAAwC,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;KAAA;AAAA;AAAA,CAAA,CAAA;;MCnB3DC,cAAc,CAAA;AAERlF,EAAAA,WAAW,GAAGC,MAAM,CAACC,UAAU,CAAC;AAGxCC,EAAAA,OAAO,GAAG,IAAI,CAACH,WAAW,CAACI,aAA4B;AAGvD+E,EAAAA,MAAM,GAAG1E,QAAQ,CAAC,MAAM,IAAI,CAACG,QAAQ,CAACuE,MAAM,EAAE;;WAAC;AAGvCC,EAAAA,KAAK,GAAGnF,MAAM,CAACL,SAAS,CAAC;AAGjCyF,EAAAA,EAAE,GAAGpE,KAAK,CAAChB,MAAM,CAACqF,YAAY,CAAC,CAACC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC;;WAAC;EAGpEC,UAAU,GAAGvE,KAAK,CAAoC,QAAQ;;WAAC;AAG/DG,EAAAA,QAAQ,GAAGH,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;EAGtDsE,WAAW,GAAGxE,KAAK;;WAAgC;EAGnDyE,SAAS,GAAGC,MAAM,EAA0C;EAG5DC,WAAW,GAAGD,MAAM,EAA0C;EAG9DE,QAAQ,GAAG5E,KAAK;;WAAsB;AAM5B6E,EAAAA,SAAS,GAAmBrF,QAAQ,CACrD,MAAM,IAAI,CAACoF,QAAQ,EAAE,KAAK,IAAI,CAACJ,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC7E,QAAQ,CAACe,QAAQ,EAAE,CAAC;;WAC9E;EAGQf,QAAQ,GAAG,IAAImF,qBAAqB,CAAC;AAC5C,IAAA,GAAG,IAAI;AACP5F,IAAAA,OAAO,EAAEA,MAAM,IAAI,CAACA,OAAO;AAC3BmD,IAAAA,IAAI,EAAEA,MAAM,IAAI,CAAC8B,KAAK,CAACxE;AACxB,GAAA,CAAC;EAGF,IAAIoF,WAAWA,GAAA;IACb,OAAOvF,QAAQ,CAAC,MAAM,IAAI,CAACG,QAAQ,CAACoF,WAAW,EAAE,CAAC;AACpD,EAAA;AAEAzD,EAAAA,WAAAA,GAAA;AACEC,IAAAA,iBAAiB,CAAC;MAChByD,IAAI,EAAEA,MAAK;AACT,QAAA,IAAI,IAAI,CAACrF,QAAQ,CAACoF,WAAW,EAAE,EAAE;UAC/B,MAAME,aAAa,GAAG,IAAI,CAACtF,QAAQ,CAACuF,iBAAiB,EAAE;AACvD,UAAA,IAAI,CAACT,SAAS,CAACU,IAAI,CAACF,aAAa,CAAC;AAClC,UAAA,IAAI,CAACtF,QAAQ,CAACyF,KAAK,EAAE;AACvB,QAAA;AACF,MAAA;AACD,KAAA,CAAC;AAEF7D,IAAAA,iBAAiB,CAAC;MAChByD,IAAI,EAAEA,MAAK;QACT,MAAMK,eAAe,GAAG,IAAI,CAAC1F,QAAQ,CAAC2F,mBAAmB,EAAE;AAC3D,QAAA,IAAID,eAAe,EAAE;AACnB,UAAA,IAAI,CAACV,WAAW,CAACQ,IAAI,CAACE,eAAe,CAAC;AACxC,QAAA;AACF,MAAA;AACD,KAAA,CAAC;AACJ,EAAA;AAGAE,EAAAA,QAAQA,GAAA;AACN,IAAA,IAAI,CAAC5F,QAAQ,CAAC4F,QAAQ,EAAE;AAC1B,EAAA;AAGAC,EAAAA,UAAUA,GAAA;AACR,IAAA,IAAI,CAAC7F,QAAQ,CAAC6F,UAAU,EAAE;AAC5B,EAAA;;;;;UAnFWvB,cAAc;AAAAvB,IAAAA,IAAA,EAAA,EAAA;AAAAP,IAAAA,MAAA,EAAAQ,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAdoB,cAAc;AAAAwB,IAAAA,YAAA,EAAA,IAAA;AAAAjC,IAAAA,QAAA,EAAA,oBAAA;AAAAlB,IAAAA,MAAA,EAAA;AAAA8B,MAAAA,EAAA,EAAA;AAAAsB,QAAAA,iBAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,IAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAtB,MAAAA,UAAA,EAAA;AAAAmB,QAAAA,iBAAA,EAAA,YAAA;AAAAC,QAAAA,UAAA,EAAA,YAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA1F,MAAAA,QAAA,EAAA;AAAAuF,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAArB,MAAAA,WAAA,EAAA;AAAAkB,QAAAA,iBAAA,EAAA,aAAA;AAAAC,QAAAA,UAAA,EAAA,aAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAjB,MAAAA,QAAA,EAAA;AAAAc,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAArB,MAAAA,SAAA,EAAA,WAAA;AAAAE,MAAAA,WAAA,EAAA;KAAA;AAAAlB,IAAAA,IAAA,EAAA;AAAAsC,MAAAA,UAAA,EAAA;AAAA,QAAA,kBAAA,EAAA,UAAA;AAAA,QAAA,0BAAA,EAAA,uCAAA;AAAA,QAAA,UAAA,EAAA,aAAA;AAAA,QAAA,SAAA,EAAA;AAAA;KAAA;IAAA3C,QAAA,EAAA,CAAA,kBAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QAAdsB,cAAc;AAAAX,EAAAA,UAAA,EAAA,CAAA;UAV1BT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,oBAAoB;AAC9BJ,MAAAA,QAAQ,EAAE,kBAAkB;AAC5BK,MAAAA,IAAI,EAAE;AACJ,QAAA,oBAAoB,EAAE,UAAU;AAChC,QAAA,4BAA4B,EAAE,mCAAmC;AACjE,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,WAAW,EAAE;AACd;KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCDYuC,QAAQ,CAAA;AACFjH,EAAAA,WAAW,GAAGC,MAAM,CAACC,UAAU,CAAC;AAChCgH,EAAAA,SAAS,GAAGjH,MAAM,CAACkH,SAAS,CAAC;AAGrChH,EAAAA,OAAO,GAAG,IAAI,CAACH,WAAW,CAACI,aAA4B;AAG7CsF,EAAAA,SAAS,GAAG,IAAI0B,YAAY,EAAiB;AAGvDjC,EAAAA,MAAM,GAAG1E,QAAQ,CAAC,MAAM,IAAI,CAACG,QAAQ,CAACuE,MAAM,EAAE;;WAAC;AAGvCkC,EAAAA,OAAO,GAAGC,YAAY,CAACpC,cAAc;;;;AAAG3E,IAAAA,WAAW,EAAE;AAAI,GAAA,CAAE;AAG3DgH,EAAAA,cAAc,GAA8C9G,QAAQ,CACnF,MAAM,IAAI,CAAC4G,OAAO,EAAE,EAAEzG,QAAQ;;WAC/B;AAGgB4G,EAAAA,IAAI,GAAGvH,MAAM,CAACH,QAAQ,CAAC;AAG/Be,EAAAA,aAAa,GAAGZ,MAAM,CAACa,cAAc,CAAC,CAACC,WAAW;AAGlDsE,EAAAA,EAAE,GAAGpE,KAAK,CAAChB,MAAM,CAACqF,YAAY,CAAC,CAACC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC;;WAAC;EAG7DkC,IAAI,GAAGxG,KAAK,CAA4C,UAAU;;WAAC;EAGnEyG,OAAO,GAAGzG,KAAK,CAAS,CAAC;;WAAC;EAG1B0G,OAAO,GAAG1G,KAAK,CAAS,CAAC;;WAAC;EAG1B2G,QAAQ,GAAG3G,KAAK;;WAAU;EAG1B4G,QAAQ,GAAG5G,KAAK;;WAAU;AAG1BG,EAAAA,QAAQ,GAAGH,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;EAGtD2G,QAAQ,GAAGC,KAAK,CAAU,KAAK;;WAAC;EAGhCC,UAAU,GAAG/G,KAAK,CAAU,IAAI;;WAAC;EAGjC4E,QAAQ,GAAG5E,KAAK;;WAAsB;EAM5B6E,SAAS,GAAmBrF,QAAQ,CACrD,MAAM,IAAI,CAACoF,QAAQ,EAAE,IAAI,IAAI,CAACjF,QAAQ,CAACe,QAAQ,EAAE;;WAClD;EAGQf,QAAQ,GAAG,IAAIqH,eAAe,CAAC;AACtC,IAAA,GAAG,IAAI;AACPC,IAAAA,IAAI,EAAE,IAAI,CAACV,IAAI,CAACW,YAAY;AAC5B9E,IAAAA,GAAG,EAAEA,MAAM,IAAI,CAACmE,IAAI,CAAC5G,QAAQ;IAC7BwH,MAAM,EAAE,IAAI,CAACb,cAAc;IAC3Bc,SAAS,EAAEjG,CAAC,IAAI,IAAI,CAACkG,UAAU,CAAClG,CAAC,CAAC;AAClCjC,IAAAA,OAAO,EAAEA,MAAM,IAAI,CAACA,OAAO;IAC3BoI,UAAU,EAAEnG,CAAC,IAAI,IAAI,CAACsD,SAAS,CAACU,IAAI,CAAChE,CAAC;AACvC,GAAA,CAAC;AAEFG,EAAAA,WAAAA,GAAA;AAIEC,IAAAA,iBAAiB,CAAC;MAChBC,KAAK,EAAEA,MAAK;QACV,MAAM;AAAC7B,UAAAA,QAAQ,EAAE4H,OAAO;AAAEC,UAAAA,gBAAgB,EAAEC;AAAM,SAAC,GAAG,IAAI;AAC1D,QAAA,MAAMhB,OAAO,GAAGc,OAAO,CAACd,OAAO,EAAE;AACjC,QAAA,MAAMC,OAAO,GAAGa,OAAO,CAACb,OAAO,EAAE;QACjCe,MAAM,CAAC,MAAM,EAAE,IAAI,CAACjB,IAAI,EAAE,CAAC;QAC3BiB,MAAM,CAAC,IAAI,EAAEF,OAAO,CAACnD,EAAE,EAAE,CAAC;AAC1BqD,QAAAA,MAAM,CAAC,SAAS,EAAEhB,OAAO,CAAC;AAC1BgB,QAAAA,MAAM,CAAC,SAAS,EAAEf,OAAO,CAAC;AAC1Be,QAAAA,MAAM,CAAC,cAAc,EAAEhB,OAAO,CAAC;AAC/BgB,QAAAA,MAAM,CAAC,cAAc,EAAEf,OAAO,CAAC;QAC/Be,MAAM,CAAC,aAAa,EAAE,IAAI,CAACvD,MAAM,EAAE,CAAC;QACpCuD,MAAM,CAAC,aAAa,EAAEF,OAAO,CAACG,MAAM,EAAE,CAAC;QACvCD,MAAM,CAAC,eAAe,EAAEF,OAAO,CAACpH,QAAQ,EAAE,CAAC;QAC3CsH,MAAM,CAAC,eAAe,EAAEF,OAAO,CAACI,YAAY,EAAE,CAAC;QAC/CF,MAAM,CAAC,eAAe,EAAEF,OAAO,CAACK,YAAY,EAAE,CAAC;QAC/CH,MAAM,CAAC,eAAe,EAAEF,OAAO,CAACM,YAAY,EAAE,CAAC;QAC/CJ,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC5C,SAAS,EAAE,CAAC;AACtC,MAAA;AACD,KAAA,CAAC;AACJ,EAAA;AAEQ2C,EAAAA,gBAAgB,GAAGA,CAACM,IAAY,EAAEC,KAAc,KAAI;IAC1D,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,CAAC9B,SAAS,CAAC+B,eAAe,CAAC,IAAI,CAAC9I,OAAO,EAAE4I,IAAI,CAAC;AACpD,IAAA,CAAA,MAAO;AACL,MAAA,IAAI,CAAC7B,SAAS,CAACgC,YAAY,CAAC,IAAI,CAAC/I,OAAO,EAAE4I,IAAI,EAAEC,KAAe,CAAC;AAClE,IAAA;EACF,CAAC;EAGOV,UAAUA,CAACnI,OAAmC,EAAA;IACpD,IAAIiD,MAAM,GAAGjD,OAAO;AACpB,IAAA,MAAMiI,MAAM,GAAG,IAAI,CAACb,cAAc,EAAE;AAEpC,IAAA,IAAI,CAACa,MAAM,EAAE,OAAOxG,SAAS;AAE7B,IAAA,OAAOwB,MAAM,EAAE;AACb,MAAA,IAAIgF,MAAM,CAACjI,OAAO,EAAE,KAAKiD,MAAM,EAAE;AAC/B,QAAA,OAAOgF,MAAM;AACf,MAAA;MAEAhF,MAAM,GAAGA,MAAM,CAACK,aAAa,EAAEC,OAAO,CAAC,oBAAoB,CAAC;AAC9D,IAAA;AAEA,IAAA,OAAO9B,SAAS;AAClB,EAAA;;;;;UA9HWqF,QAAQ;AAAAtD,IAAAA,IAAA,EAAA,EAAA;AAAAP,IAAAA,MAAA,EAAAQ,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAR,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAA8C,QAAQ;AAAAP,IAAAA,YAAA,EAAA,IAAA;AAAAjC,IAAAA,QAAA,EAAA,cAAA;AAAAlB,IAAAA,MAAA,EAAA;AAAA8B,MAAAA,EAAA,EAAA;AAAAsB,QAAAA,iBAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,IAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAW,MAAAA,IAAA,EAAA;AAAAd,QAAAA,iBAAA,EAAA,MAAA;AAAAC,QAAAA,UAAA,EAAA,MAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAY,MAAAA,OAAA,EAAA;AAAAf,QAAAA,iBAAA,EAAA,SAAA;AAAAC,QAAAA,UAAA,EAAA,SAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAa,MAAAA,OAAA,EAAA;AAAAhB,QAAAA,iBAAA,EAAA,SAAA;AAAAC,QAAAA,UAAA,EAAA,SAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAc,MAAAA,QAAA,EAAA;AAAAjB,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAe,MAAAA,QAAA,EAAA;AAAAlB,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA1F,MAAAA,QAAA,EAAA;AAAAuF,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAgB,MAAAA,QAAA,EAAA;AAAAnB,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAkB,MAAAA,UAAA,EAAA;AAAArB,QAAAA,iBAAA,EAAA,YAAA;AAAAC,QAAAA,UAAA,EAAA,YAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAjB,MAAAA,QAAA,EAAA;AAAAc,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAArB,MAAAA,SAAA,EAAA,WAAA;AAAAoC,MAAAA,QAAA,EAAA;KAAA;AAAAqB,IAAAA,SAAA,EAFR,CAAC;AAACC,MAAAA,OAAO,EAAExJ,SAAS;AAAEyJ,MAAAA,WAAW,EAAEpC;AAAQ,KAAC,CAAC;;;;iBAgBhB/B,cAAc;AAAA3E,MAAAA,WAAA,EAAA,IAAA;AAAA6D,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;IAAAC,QAAA,EAAA,CAAA,YAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QAd3CqD,QAAQ;AAAA1C,EAAAA,UAAA,EAAA,CAAA;UALpBT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,cAAc;AACxBJ,MAAAA,QAAQ,EAAE,YAAY;AACtB8E,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,OAAO,EAAExJ,SAAS;AAAEyJ,QAAAA,WAAW,EAAApC;OAAW;KACxD;;;;;YASEqC;AAMuC,KAAA,CAAA;AAAAjC,IAAAA,OAAA,EAAA,CAAA;MAAAlD,IAAA,EAAAP,EAAA,CAAA2F,YAAA;MAAA/E,IAAA,EAAA,CAAAZ,EAAA,CAAAkB,UAAA,CAAA,MAAAI,cAAc,CAAA,EAAA;QAAA,GAAE;AAAC3E,UAAAA,WAAW,EAAE;SAAK;AAAA6D,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAiB,IAAAA,EAAA,EAAA,CAAA;MAAAlB,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,IAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAwC,IAAAA,IAAA,EAAA,CAAA;MAAAtD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,MAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAyC,IAAAA,OAAA,EAAA,CAAA;MAAAvD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,SAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA0C,IAAAA,OAAA,EAAA,CAAA;MAAAxD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,SAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA2C,IAAAA,QAAA,EAAA,CAAA;MAAAzD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA4C,IAAAA,QAAA,EAAA,CAAA;MAAA1D,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA7D,IAAAA,QAAA,EAAA,CAAA;MAAA+C,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA6C,IAAAA,QAAA,EAAA,CAAA;MAAA3D,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,EAAA;MAAAd,IAAA,EAAAP,EAAA,CAAA0F,MAAA;MAAA9E,IAAA,EAAA,CAAA,gBAAA;AAAA,KAAA,CAAA;AAAAwD,IAAAA,UAAA,EAAA,CAAA;MAAA7D,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,YAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAY,IAAAA,QAAA,EAAA,CAAA;MAAA1B,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;KAAA;AAAA;AAAA,CAAA,CAAA;;MCpBhEuE,OAAO,CAAA;AAEDxJ,EAAAA,WAAW,GAAGC,MAAM,CAACC,UAAU,CAAC;AAGxCC,EAAAA,OAAO,GAAG,IAAI,CAACH,WAAW,CAACI,aAA4B;AAG/CqJ,EAAAA,MAAM,GAAGnJ,eAAe,CAACV,SAAS;;;;AAAGW,IAAAA,WAAW,EAAE;AAAI,GAAA,CAAE;EAGxDmJ,aAAa,GAAkBjJ,QAAQ,CAAC,MACvD,IAAI,CAACgJ,MAAM,EAAE,CAAC/I,GAAG,CAACiJ,CAAC,IAAIA,CAAC,CAAC/I,QAAQ,CAAC;;WACnC;AAGgBgJ,EAAAA,KAAK,GAAG3J,MAAM,CAACF,IAAI,CAAC;AAG5BoI,EAAAA,YAAY,GAAG1H,QAAQ,CAAc,MAAM,IAAI,CAACmJ,KAAK,CAAChJ,QAAQ;;WAAC;EAG/DgH,QAAQ,GAAG3G,KAAK;;WAAU;EAG1BL,QAAQ,GAAG,IAAIiJ,cAAc,CAAC;AACrC,IAAA,GAAG,IAAI;IACPrG,KAAK,EAAE,IAAI,CAACkG,aAAa;IACzBxB,IAAI,EAAE,IAAI,CAACC;AACZ,GAAA,CAAC;;;;;UA7BSqB,OAAO;AAAA7F,IAAAA,IAAA,EAAA,EAAA;AAAAP,IAAAA,MAAA,EAAAQ,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,EAAAqF,OAAO;AAAA9C,IAAAA,YAAA,EAAA,IAAA;AAAAjC,IAAAA,QAAA,EAAA,aAAA;AAAAlB,IAAAA,MAAA,EAAA;AAAAqE,MAAAA,QAAA,EAAA;AAAAjB,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAxC,QAAAA,QAAA,EAAA,IAAA;AAAAyC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAApC,IAAAA,IAAA,EAAA;AAAAoF,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAA9C,MAAAA,UAAA,EAAA;AAAA,QAAA,oBAAA,EAAA;AAAA;KAAA;AAAAmC,IAAAA,SAAA,EAFP,CAAC;AAACC,MAAAA,OAAO,EAAEtJ,QAAQ;AAAEuJ,MAAAA,WAAW,EAAEG;AAAO,KAAC,CAAC;;;iBAUZ5J,SAAS;AAAAW,MAAAA,WAAA,EAAA,IAAA;AAAA6D,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;IAAAC,QAAA,EAAA,CAAA,WAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QARxC4F,OAAO;AAAAjF,EAAAA,UAAA,EAAA,CAAA;UATnBT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTC,MAAAA,QAAQ,EAAE,aAAa;AACvBJ,MAAAA,QAAQ,EAAE,WAAW;AACrBK,MAAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,sBAAsB,EAAE;OACzB;AACDyE,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,OAAO,EAAEtJ,QAAQ;AAAEuJ,QAAAA,WAAW,EAAAG;OAAU;KACtD;AAS2C,GAAA,CAAA;AAAA5E,EAAAA,cAAA,EAAA;AAAA6E,IAAAA,MAAA,EAAA,CAAA;MAAAtF,IAAA,EAAAP,EAAA,CAAAiB,eAAA;MAAAL,IAAA,EAAA,CAAAZ,EAAA,CAAAkB,UAAA,CAAA,MAAAlF,SAAS,CAAA,EAAA;QAAA,GAAE;AAACW,UAAAA,WAAW,EAAE;SAAK;AAAA6D,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAwD,IAAAA,QAAA,EAAA,CAAA;MAAAzD,IAAA,EAAAP,EAAA,CAAAmB,KAAA;AAAAP,MAAAA,IAAA,EAAA,CAAA;AAAAJ,QAAAA,QAAA,EAAA,IAAA;AAAAY,QAAAA,KAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA;OAAA;KAAA;AAAA;AAAA,CAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listbox-testing.mjs","sources":["../../../../../
|
|
1
|
+
{"version":3,"file":"listbox-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/testing/listbox-harness.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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {ListboxHarnessFilters, ListboxOptionHarnessFilters} from './listbox-harness-filters';\n\nexport class ListboxOptionHarness extends ComponentHarness {\n static hostSelector = '[ngOption]';\n\n static with(options: ListboxOptionHarnessFilters = {}): HarnessPredicate<ListboxOptionHarness> {\n return new HarnessPredicate(ListboxOptionHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-disabled')) === 'true' ||\n (await host.getProperty('disabled')) === true\n );\n }\n\n async getText(): Promise<string> {\n const host = await this.host();\n return host.text();\n }\n\n async click(): Promise<void> {\n const host = await this.host();\n return host.click();\n }\n}\n\nexport class ListboxHarness extends ComponentHarness {\n static hostSelector = '[ngListbox]';\n\n static with(options: ListboxHarnessFilters = {}): HarnessPredicate<ListboxHarness> {\n return new HarnessPredicate(ListboxHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n async getOrientation(): Promise<'vertical' | 'horizontal'> {\n const host = await this.host();\n const orientation = await host.getAttribute('aria-orientation');\n return orientation === 'horizontal' ? 'horizontal' : 'vertical';\n }\n\n async isMulti(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-multiselectable')) === 'true';\n }\n\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n async getOptions(filters: ListboxOptionHarnessFilters = {}): Promise<ListboxOptionHarness[]> {\n return this.locatorForAll(ListboxOptionHarness.with(filters))();\n }\n\n async focus(): Promise<void> {\n await (await this.host()).focus();\n }\n\n /** Blurs the listbox container. */\n async blur(): Promise<void> {\n await (await this.host()).blur();\n }\n}\n"],"names":["ListboxOptionHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","selected","isSelected","disabled","isDisabled","host","getAttribute","getProperty","click","ListboxHarness","getOrientation","orientation","isMulti","getOptions","filters","locatorForAll","focus","blur"],"mappings":"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"}
|