@fluentui/web-components 3.0.0-rc.12 → 3.0.0-rc.14
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/CHANGELOG.md +20 -2
- package/custom-elements.json +968 -164
- package/dist/esm/accordion/accordion.d.ts +5 -0
- package/dist/esm/accordion/accordion.js +28 -27
- package/dist/esm/accordion/accordion.js.map +1 -1
- package/dist/esm/dropdown/dropdown.base.d.ts +5 -0
- package/dist/esm/dropdown/dropdown.base.js +23 -10
- package/dist/esm/dropdown/dropdown.base.js.map +1 -1
- package/dist/esm/dropdown/dropdown.styles.js +1 -0
- package/dist/esm/dropdown/dropdown.styles.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/menu/menu.d.ts +25 -16
- package/dist/esm/menu/menu.js +61 -67
- package/dist/esm/menu/menu.js.map +1 -1
- package/dist/esm/menu-list/index.d.ts +1 -0
- package/dist/esm/menu-list/index.js +1 -0
- package/dist/esm/menu-list/index.js.map +1 -1
- package/dist/esm/menu-list/menu-list.base.d.ts +76 -0
- package/dist/esm/menu-list/menu-list.base.js +251 -0
- package/dist/esm/menu-list/menu-list.base.js.map +1 -0
- package/dist/esm/menu-list/menu-list.d.ts +3 -70
- package/dist/esm/menu-list/menu-list.js +3 -244
- package/dist/esm/menu-list/menu-list.js.map +1 -1
- package/dist/esm/radio-group/index.d.ts +1 -0
- package/dist/esm/radio-group/index.js +1 -0
- package/dist/esm/radio-group/index.js.map +1 -1
- package/dist/esm/radio-group/radio-group.base.d.ts +285 -0
- package/dist/esm/radio-group/radio-group.base.js +497 -0
- package/dist/esm/radio-group/radio-group.base.js.map +1 -0
- package/dist/esm/radio-group/radio-group.d.ts +4 -280
- package/dist/esm/radio-group/radio-group.js +4 -491
- package/dist/esm/radio-group/radio-group.js.map +1 -1
- package/dist/esm/tablist/tablist.base.js +3 -3
- package/dist/esm/tablist/tablist.base.js.map +1 -1
- package/dist/esm/utils/request-idle-callback.d.ts +15 -0
- package/dist/esm/utils/request-idle-callback.js +8 -2
- package/dist/esm/utils/request-idle-callback.js.map +1 -1
- package/dist/web-components.d.ts +1970 -1932
- package/dist/web-components.js +165 -124
- package/dist/web-components.min.js +114 -114
- package/package.json +1 -1
package/dist/esm/menu/menu.js
CHANGED
|
@@ -3,7 +3,6 @@ import { attr, FASTElement, observable, Updates } from '@microsoft/fast-element'
|
|
|
3
3
|
import { keyEnter, keyEscape, keySpace, keyTab } from '@microsoft/fast-web-utilities';
|
|
4
4
|
import { MenuItem } from '../menu-item/menu-item.js';
|
|
5
5
|
import { MenuItemRole } from '../menu-item/menu-item.options.js';
|
|
6
|
-
import { waitForConnectedDescendants } from '../utils/request-idle-callback.js';
|
|
7
6
|
/**
|
|
8
7
|
* A Menu component that provides a customizable menu element.
|
|
9
8
|
*
|
|
@@ -150,7 +149,33 @@ export class Menu extends FASTElement {
|
|
|
150
149
|
* @internal
|
|
151
150
|
*/
|
|
152
151
|
slottedMenuListChanged(prev, next) {
|
|
153
|
-
this.
|
|
152
|
+
this._menuListAbortController?.abort();
|
|
153
|
+
if (!next?.length) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this._menuList = next[0];
|
|
157
|
+
this._menuList.popover = this.openOnContext ? 'manual' : '';
|
|
158
|
+
this.addMenuListListeners();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Ensures the trigger is properly set up when the slotted triggers change.
|
|
162
|
+
* This includes setting ARIA attributes and adding event listeners based on the current property values.
|
|
163
|
+
*
|
|
164
|
+
* @param prev - The previous items in the slotted triggers list.
|
|
165
|
+
* @param next - The current items in the slotted triggers list.
|
|
166
|
+
* @internal
|
|
167
|
+
*/
|
|
168
|
+
slottedTriggersChanged(prev, next) {
|
|
169
|
+
this._triggerAbortController?.abort();
|
|
170
|
+
if (next?.length) {
|
|
171
|
+
const trigger = next[0];
|
|
172
|
+
this._trigger = trigger;
|
|
173
|
+
if (this._trigger?.isConnected) {
|
|
174
|
+
this._trigger.setAttribute('aria-haspopup', 'true');
|
|
175
|
+
this._trigger.setAttribute('aria-expanded', `${this._open}`);
|
|
176
|
+
this.addTriggerListeners();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
154
179
|
}
|
|
155
180
|
/**
|
|
156
181
|
* Called when the element is connected to the DOM.
|
|
@@ -159,6 +184,8 @@ export class Menu extends FASTElement {
|
|
|
159
184
|
*/
|
|
160
185
|
connectedCallback() {
|
|
161
186
|
super.connectedCallback();
|
|
187
|
+
// Retained for backward compatibility. The trigger and menu list listeners are now managed by their respective
|
|
188
|
+
// slot-changed callbacks, so this method is no longer responsible for setting up the component. However, it is left in place to avoid breaking changes for any existing implementations that may be relying on it.
|
|
162
189
|
this.setComponent();
|
|
163
190
|
}
|
|
164
191
|
/**
|
|
@@ -168,30 +195,16 @@ export class Menu extends FASTElement {
|
|
|
168
195
|
*/
|
|
169
196
|
disconnectedCallback() {
|
|
170
197
|
super.disconnectedCallback();
|
|
171
|
-
this.
|
|
198
|
+
this._triggerAbortController?.abort();
|
|
199
|
+
this._menuListAbortController?.abort();
|
|
172
200
|
}
|
|
173
201
|
/**
|
|
174
202
|
* Sets the component.
|
|
175
|
-
*
|
|
203
|
+
* @deprecated This method is no longer used. Trigger and menu-list listeners are now
|
|
204
|
+
* managed by their respective slot-changed callbacks.
|
|
176
205
|
* @public
|
|
177
206
|
*/
|
|
178
|
-
setComponent() {
|
|
179
|
-
waitForConnectedDescendants(this, () => {
|
|
180
|
-
const trigger = this.slottedTriggers?.[0];
|
|
181
|
-
const menuList = this.slottedMenuList?.[0];
|
|
182
|
-
if (!trigger || !menuList) {
|
|
183
|
-
this.removeListeners();
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
this._trigger = trigger;
|
|
187
|
-
this._menuList = menuList;
|
|
188
|
-
this._trigger.setAttribute('aria-haspopup', 'true');
|
|
189
|
-
this._trigger.setAttribute('aria-expanded', `${this._open}`);
|
|
190
|
-
this._menuList.setAttribute('popover', this.openOnContext ? 'manual' : '');
|
|
191
|
-
this.removeListeners();
|
|
192
|
-
this.addListeners();
|
|
193
|
-
}, { shallow: true });
|
|
194
|
-
}
|
|
207
|
+
setComponent() { }
|
|
195
208
|
/**
|
|
196
209
|
* Focuses on the menu list.
|
|
197
210
|
* @public
|
|
@@ -219,11 +232,9 @@ export class Menu extends FASTElement {
|
|
|
219
232
|
* @public
|
|
220
233
|
*/
|
|
221
234
|
openOnHoverChanged(oldValue, newValue) {
|
|
222
|
-
if (
|
|
223
|
-
this.
|
|
224
|
-
|
|
225
|
-
else {
|
|
226
|
-
this._trigger?.removeEventListener('mouseover', this.openMenu);
|
|
235
|
+
if (this._trigger) {
|
|
236
|
+
this._triggerAbortController?.abort();
|
|
237
|
+
this.addTriggerListeners();
|
|
227
238
|
}
|
|
228
239
|
}
|
|
229
240
|
/**
|
|
@@ -234,11 +245,9 @@ export class Menu extends FASTElement {
|
|
|
234
245
|
* @param newValue - The new value of 'persistOnItemClick'.
|
|
235
246
|
*/
|
|
236
247
|
persistOnItemClickChanged(oldValue, newValue) {
|
|
237
|
-
if (
|
|
238
|
-
this.
|
|
239
|
-
|
|
240
|
-
else {
|
|
241
|
-
this._menuList?.removeEventListener('change', this.closeMenu);
|
|
248
|
+
if (this._menuList) {
|
|
249
|
+
this._menuListAbortController?.abort();
|
|
250
|
+
this.addMenuListListeners();
|
|
242
251
|
}
|
|
243
252
|
}
|
|
244
253
|
/**
|
|
@@ -250,10 +259,14 @@ export class Menu extends FASTElement {
|
|
|
250
259
|
*/
|
|
251
260
|
openOnContextChanged(oldValue, newValue) {
|
|
252
261
|
if (newValue) {
|
|
253
|
-
this.
|
|
262
|
+
this._menuList?.setAttribute('popover', 'manual');
|
|
254
263
|
}
|
|
255
264
|
else {
|
|
256
|
-
this.
|
|
265
|
+
this._menuList?.setAttribute('popover', '');
|
|
266
|
+
}
|
|
267
|
+
if (this._trigger) {
|
|
268
|
+
this._triggerAbortController?.abort();
|
|
269
|
+
this.addTriggerListeners();
|
|
257
270
|
}
|
|
258
271
|
}
|
|
259
272
|
/**
|
|
@@ -272,53 +285,34 @@ export class Menu extends FASTElement {
|
|
|
272
285
|
}
|
|
273
286
|
}
|
|
274
287
|
/**
|
|
275
|
-
* Adds event listeners.
|
|
276
|
-
* Adds click and keydown event listeners to the trigger.
|
|
277
|
-
* Adds a 'toggle' event listener to the menu list.
|
|
278
|
-
* If 'openOnHover' is true, adds a 'mouseover' event listener to the trigger.
|
|
279
|
-
* If 'openOnContext' is true, adds a 'contextmenu' event listener to the trigger and a document 'click' event listener.
|
|
288
|
+
* Adds trigger-related event listeners.
|
|
280
289
|
* @internal
|
|
281
290
|
*/
|
|
282
|
-
|
|
283
|
-
this.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
this._menuList?.addEventListener('change', this.closeMenu);
|
|
287
|
-
}
|
|
291
|
+
addTriggerListeners() {
|
|
292
|
+
this._triggerAbortController = new AbortController();
|
|
293
|
+
const { signal } = this._triggerAbortController;
|
|
294
|
+
this._trigger?.addEventListener('keydown', this.triggerKeydownHandler, { signal });
|
|
288
295
|
if (this.openOnHover) {
|
|
289
|
-
this._trigger?.addEventListener('mouseover', this.openMenu);
|
|
296
|
+
this._trigger?.addEventListener('mouseover', this.openMenu, { signal });
|
|
290
297
|
}
|
|
291
298
|
else if (this.openOnContext) {
|
|
292
|
-
this._trigger?.addEventListener('contextmenu', this.openMenu);
|
|
293
|
-
document.addEventListener('click', this.documentClickHandler);
|
|
299
|
+
this._trigger?.addEventListener('contextmenu', this.openMenu, { signal });
|
|
300
|
+
document.addEventListener('click', this.documentClickHandler, { signal });
|
|
294
301
|
}
|
|
295
302
|
else {
|
|
296
|
-
this._trigger?.addEventListener('click', this.toggleMenu);
|
|
303
|
+
this._trigger?.addEventListener('click', this.toggleMenu, { signal });
|
|
297
304
|
}
|
|
298
305
|
}
|
|
299
306
|
/**
|
|
300
|
-
*
|
|
301
|
-
* Removes click and keydown event listeners from the trigger.
|
|
302
|
-
* Also removes toggle event listener from the menu list.
|
|
303
|
-
* Also removes 'mouseover' event listeners from the trigger.
|
|
304
|
-
* Also removes 'contextmenu' event listeners from the trigger and document 'click' event listeners.
|
|
307
|
+
* Adds menu-list event listeners.
|
|
305
308
|
* @internal
|
|
306
309
|
*/
|
|
307
|
-
|
|
308
|
-
this.
|
|
309
|
-
|
|
310
|
+
addMenuListListeners() {
|
|
311
|
+
this._menuListAbortController = new AbortController();
|
|
312
|
+
const { signal } = this._menuListAbortController;
|
|
313
|
+
this._menuList?.addEventListener('toggle', this.toggleHandler, { signal });
|
|
310
314
|
if (!this.persistOnItemClick) {
|
|
311
|
-
this._menuList?.
|
|
312
|
-
}
|
|
313
|
-
if (this.openOnHover) {
|
|
314
|
-
this._trigger?.removeEventListener('mouseover', this.openMenu);
|
|
315
|
-
}
|
|
316
|
-
if (this.openOnContext) {
|
|
317
|
-
this._trigger?.removeEventListener('contextmenu', this.openMenu);
|
|
318
|
-
document.removeEventListener('click', this.documentClickHandler);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
this._trigger?.removeEventListener('click', this.toggleMenu);
|
|
315
|
+
this._menuList?.addEventListener('change', this.closeMenu, { signal });
|
|
322
316
|
}
|
|
323
317
|
}
|
|
324
318
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/menu/menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/menu/menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/menu-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/menu-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FASTElement } from '@microsoft/fast-element';
|
|
2
|
+
/**
|
|
3
|
+
* A Base Menu List Custom HTML Element.
|
|
4
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare class BaseMenuList extends FASTElement {
|
|
9
|
+
/**
|
|
10
|
+
* The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
elementInternals: ElementInternals;
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
items: HTMLElement[];
|
|
19
|
+
protected itemsChanged(oldValue: HTMLElement[], newValue: HTMLElement[]): void;
|
|
20
|
+
protected menuItems: Element[] | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* The index of the focusable element in the items array
|
|
23
|
+
* defaults to -1
|
|
24
|
+
*/
|
|
25
|
+
private focusIndex;
|
|
26
|
+
private static focusableElementRoles;
|
|
27
|
+
constructor();
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
connectedCallback(): void;
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
disconnectedCallback(): void;
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
readonly isNestedMenu: () => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Focuses the first item in the menu.
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
45
|
+
focus(): void;
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
handleMenuKeyDown(e: KeyboardEvent): void | boolean;
|
|
50
|
+
/**
|
|
51
|
+
* if focus is moving out of the menu, reset to a stable initial state
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
handleFocusOut: (e: FocusEvent) => void;
|
|
55
|
+
private handleItemFocus;
|
|
56
|
+
private removeItemListeners;
|
|
57
|
+
private static elementIndent;
|
|
58
|
+
protected setItems(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Method for Observable changes to the hidden attribute of child elements
|
|
61
|
+
*/
|
|
62
|
+
handleChange(source: any, propertyName: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Handle change from child MenuItem element and set radio group behavior
|
|
65
|
+
*/
|
|
66
|
+
private changedMenuItemHandler;
|
|
67
|
+
/**
|
|
68
|
+
* check if the item is a menu item
|
|
69
|
+
*/
|
|
70
|
+
protected isMenuItemElement: (el: Element) => el is HTMLElement;
|
|
71
|
+
/**
|
|
72
|
+
* check if the item is focusable
|
|
73
|
+
*/
|
|
74
|
+
private isFocusableElement;
|
|
75
|
+
private setFocus;
|
|
76
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { FASTElement, Observable, observable, Updates } from '@microsoft/fast-element';
|
|
3
|
+
import { isHTMLElement, keyArrowDown, keyArrowUp, keyEnd, keyHome } from '@microsoft/fast-web-utilities';
|
|
4
|
+
import { isMenuItem, MenuItemRole } from '../menu-item/menu-item.options.js';
|
|
5
|
+
/**
|
|
6
|
+
* A Base Menu List Custom HTML Element.
|
|
7
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export class BaseMenuList extends FASTElement {
|
|
12
|
+
itemsChanged(oldValue, newValue) {
|
|
13
|
+
// only update children after the component is connected and
|
|
14
|
+
// the setItems has run on connectedCallback
|
|
15
|
+
// (menuItems is undefined until then)
|
|
16
|
+
if (this.$fastController.isConnected && this.menuItems !== undefined) {
|
|
17
|
+
this.setItems();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static { this.focusableElementRoles = MenuItemRole; }
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
/**
|
|
24
|
+
* The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
this.elementInternals = this.attachInternals();
|
|
29
|
+
/**
|
|
30
|
+
* The index of the focusable element in the items array
|
|
31
|
+
* defaults to -1
|
|
32
|
+
*/
|
|
33
|
+
this.focusIndex = -1;
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
this.isNestedMenu = () => {
|
|
38
|
+
return (this.parentElement !== null &&
|
|
39
|
+
isHTMLElement(this.parentElement) &&
|
|
40
|
+
this.parentElement.getAttribute('role') === 'menuitem');
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* if focus is moving out of the menu, reset to a stable initial state
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
this.handleFocusOut = (e) => {
|
|
47
|
+
if (!this.contains(e.relatedTarget) && this.menuItems !== undefined) {
|
|
48
|
+
// find our first focusable element
|
|
49
|
+
const focusIndex = this.menuItems.findIndex(this.isFocusableElement);
|
|
50
|
+
// set the current focus index's tabindex to -1
|
|
51
|
+
this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
|
|
52
|
+
// set the first focusable element tabindex to 0
|
|
53
|
+
this.menuItems[focusIndex].setAttribute('tabindex', '0');
|
|
54
|
+
// set the focus index
|
|
55
|
+
this.focusIndex = focusIndex;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
this.handleItemFocus = (e) => {
|
|
59
|
+
const targetItem = e.target;
|
|
60
|
+
if (this.menuItems !== undefined && targetItem !== this.menuItems[this.focusIndex]) {
|
|
61
|
+
this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
|
|
62
|
+
this.focusIndex = this.menuItems.indexOf(targetItem);
|
|
63
|
+
targetItem.setAttribute('tabindex', '0');
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Handle change from child MenuItem element and set radio group behavior
|
|
68
|
+
*/
|
|
69
|
+
this.changedMenuItemHandler = (e) => {
|
|
70
|
+
if (this.menuItems === undefined) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const changedMenuItem = e.target;
|
|
74
|
+
const changeItemIndex = this.menuItems.indexOf(changedMenuItem);
|
|
75
|
+
if (changeItemIndex === -1) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (changedMenuItem.role === 'menuitemradio' && changedMenuItem.checked === true) {
|
|
79
|
+
for (let i = changeItemIndex - 1; i >= 0; --i) {
|
|
80
|
+
const item = this.menuItems[i];
|
|
81
|
+
const role = item.role;
|
|
82
|
+
if (role === MenuItemRole.menuitemradio) {
|
|
83
|
+
item.checked = false;
|
|
84
|
+
}
|
|
85
|
+
if (role === 'separator') {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const maxIndex = this.menuItems.length - 1;
|
|
90
|
+
for (let i = changeItemIndex + 1; i <= maxIndex; ++i) {
|
|
91
|
+
const item = this.menuItems[i];
|
|
92
|
+
const role = item.role;
|
|
93
|
+
if (role === MenuItemRole.menuitemradio) {
|
|
94
|
+
item.checked = false;
|
|
95
|
+
}
|
|
96
|
+
if (role === 'separator') {
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* check if the item is a menu item
|
|
104
|
+
*/
|
|
105
|
+
this.isMenuItemElement = (el) => {
|
|
106
|
+
return isMenuItem(el) || (isHTMLElement(el) && !!el.role && el.role in BaseMenuList.focusableElementRoles);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* check if the item is focusable
|
|
110
|
+
*/
|
|
111
|
+
this.isFocusableElement = (el) => {
|
|
112
|
+
return this.isMenuItemElement(el);
|
|
113
|
+
};
|
|
114
|
+
this.elementInternals.role = 'menu';
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @internal
|
|
118
|
+
*/
|
|
119
|
+
connectedCallback() {
|
|
120
|
+
super.connectedCallback();
|
|
121
|
+
Updates.enqueue(() => {
|
|
122
|
+
// wait until children have had a chance to
|
|
123
|
+
// connect before setting/checking their props/attributes
|
|
124
|
+
this.setItems();
|
|
125
|
+
});
|
|
126
|
+
this.addEventListener('change', this.changedMenuItemHandler);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* @internal
|
|
130
|
+
*/
|
|
131
|
+
disconnectedCallback() {
|
|
132
|
+
super.disconnectedCallback();
|
|
133
|
+
this.removeItemListeners();
|
|
134
|
+
this.menuItems = undefined;
|
|
135
|
+
this.removeEventListener('change', this.changedMenuItemHandler);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Focuses the first item in the menu.
|
|
139
|
+
*
|
|
140
|
+
* @public
|
|
141
|
+
*/
|
|
142
|
+
focus() {
|
|
143
|
+
this.setFocus(0, 1);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
148
|
+
handleMenuKeyDown(e) {
|
|
149
|
+
if (e.defaultPrevented || this.menuItems === undefined) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
switch (e.key) {
|
|
153
|
+
case keyArrowDown:
|
|
154
|
+
// go forward one index
|
|
155
|
+
this.setFocus(this.focusIndex + 1, 1);
|
|
156
|
+
return;
|
|
157
|
+
case keyArrowUp:
|
|
158
|
+
// go back one index
|
|
159
|
+
this.setFocus(this.focusIndex - 1, -1);
|
|
160
|
+
return;
|
|
161
|
+
case keyEnd:
|
|
162
|
+
// set focus on last item
|
|
163
|
+
this.setFocus(this.menuItems.length - 1, -1);
|
|
164
|
+
return;
|
|
165
|
+
case keyHome:
|
|
166
|
+
// set focus on first item
|
|
167
|
+
this.setFocus(0, 1);
|
|
168
|
+
return;
|
|
169
|
+
default:
|
|
170
|
+
// if we are not handling the event, do not prevent default
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
removeItemListeners(items = this.items) {
|
|
175
|
+
items.forEach(item => {
|
|
176
|
+
item.removeEventListener('focus', this.handleItemFocus);
|
|
177
|
+
Observable.getNotifier(item).unsubscribe(this, 'hidden');
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
static elementIndent(el) {
|
|
181
|
+
const role = el.role;
|
|
182
|
+
const startSlot = el.querySelector('[slot=start]');
|
|
183
|
+
if (role && role !== MenuItemRole.menuitem) {
|
|
184
|
+
return startSlot ? 2 : 1;
|
|
185
|
+
}
|
|
186
|
+
return startSlot ? 1 : 0;
|
|
187
|
+
}
|
|
188
|
+
setItems() {
|
|
189
|
+
const children = Array.from(this.children);
|
|
190
|
+
this.removeItemListeners(children);
|
|
191
|
+
children.forEach((child) => Observable.getNotifier(child).subscribe(this, 'hidden'));
|
|
192
|
+
const newItems = children.filter(child => !child.hasAttribute('hidden'));
|
|
193
|
+
this.menuItems = newItems;
|
|
194
|
+
const menuItems = this.menuItems.filter(this.isMenuItemElement);
|
|
195
|
+
// if our focus index is not -1 we have items
|
|
196
|
+
if (menuItems.length) {
|
|
197
|
+
this.focusIndex = 0;
|
|
198
|
+
}
|
|
199
|
+
menuItems.forEach((item, index) => {
|
|
200
|
+
item.setAttribute('tabindex', index === 0 ? '0' : '-1');
|
|
201
|
+
item.addEventListener('focus', this.handleItemFocus);
|
|
202
|
+
});
|
|
203
|
+
/**
|
|
204
|
+
* Set the indent attribute on MenuItem elements based on their
|
|
205
|
+
* position in the MenuList. Each MenuItem element has a data-indent attribute that is
|
|
206
|
+
* used to set the indent of the element's start slot content.
|
|
207
|
+
*/
|
|
208
|
+
const filteredMenuListItems = this.menuItems?.filter(this.isMenuItemElement);
|
|
209
|
+
const indent = filteredMenuListItems?.reduce((accum, current) => {
|
|
210
|
+
const elementValue = BaseMenuList.elementIndent(current);
|
|
211
|
+
return Math.max(accum, elementValue);
|
|
212
|
+
}, 0);
|
|
213
|
+
filteredMenuListItems?.forEach((item) => {
|
|
214
|
+
item.dataset.indent = `${indent}`;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Method for Observable changes to the hidden attribute of child elements
|
|
219
|
+
*/
|
|
220
|
+
handleChange(source, propertyName) {
|
|
221
|
+
if (propertyName === 'hidden') {
|
|
222
|
+
this.setItems();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
setFocus(focusIndex, adjustment) {
|
|
226
|
+
if (this.menuItems === undefined) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
while (focusIndex >= 0 && focusIndex < this.menuItems.length) {
|
|
230
|
+
const child = this.menuItems[focusIndex];
|
|
231
|
+
if (this.isFocusableElement(child)) {
|
|
232
|
+
// change the previous index to -1
|
|
233
|
+
if (this.focusIndex > -1 && this.menuItems.length >= this.focusIndex - 1) {
|
|
234
|
+
this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
|
|
235
|
+
}
|
|
236
|
+
// update the focus index
|
|
237
|
+
this.focusIndex = focusIndex;
|
|
238
|
+
// update the tabindex of next focusable element
|
|
239
|
+
child.setAttribute('tabindex', '0');
|
|
240
|
+
// focus the element
|
|
241
|
+
child.focus();
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
focusIndex += adjustment;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
__decorate([
|
|
249
|
+
observable
|
|
250
|
+
], BaseMenuList.prototype, "items", void 0);
|
|
251
|
+
//# sourceMappingURL=menu-list.base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-list.base.js","sourceRoot":"","sources":["../../../src/menu-list/menu-list.base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGzG,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAajC,YAAY,CAAC,QAAuB,EAAE,QAAuB;QACrE,4DAA4D;QAC5D,4CAA4C;QAC5C,sCAAsC;QACtC,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;aAUc,0BAAqB,GAAG,YAAY,AAAf,CAAgB;IAEpD;QACE,KAAK,EAAE,CAAC;QAhCV;;;;WAIG;QACI,qBAAgB,GAAqB,IAAI,CAAC,eAAe,EAAE,CAAC;QAkBnE;;;WAGG;QACK,eAAU,GAAW,CAAC,CAAC,CAAC;QAkChC;;WAEG;QACa,iBAAY,GAAG,GAAY,EAAE;YAC3C,OAAO,CACL,IAAI,CAAC,aAAa,KAAK,IAAI;gBAC3B,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,UAAU,CACvD,CAAC;QACJ,CAAC,CAAC;QAyCF;;;WAGG;QACI,mBAAc,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAwB,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC/E,mCAAmC;gBACnC,MAAM,UAAU,GAAW,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC7E,+CAA+C;gBAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC/D,gDAAgD;gBAChD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACzD,sBAAsB;gBACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YAC1C,MAAM,UAAU,GAAgB,CAAC,CAAC,MAAqB,CAAC;YAExD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrD,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC;QAqEF;;WAEG;QACK,2BAAsB,GAAG,CAAC,CAAQ,EAAQ,EAAE;YAClD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,eAAe,GAAa,CAAC,CAAC,MAAkB,CAAC;YACvD,MAAM,eAAe,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAExE,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACjF,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAI,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,IAAI,GAAmB,IAAoB,CAAC,IAAI,CAAC;oBACvD,IAAI,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;wBACvC,IAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrC,CAAC;oBACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;wBACzB,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,MAAM,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnD,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,IAAI,GAAmB,IAAoB,CAAC,IAAI,CAAC;oBACvD,IAAI,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;wBACvC,IAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrC,CAAC;oBACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;wBACzB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF;;WAEG;QACO,sBAAiB,GAAG,CAAC,EAAW,EAAqB,EAAE;YAC/D,OAAO,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAC7G,CAAC,CAAC;QAEF;;WAEG;QACK,uBAAkB,GAAG,CAAC,EAAW,EAAqB,EAAE;YAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QA9NA,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAAM,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,2CAA2C;YAC3C,yDAAyD;YACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAClE,CAAC;IAaD;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,CAAgB;QACvC,IAAI,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,YAAY;gBACf,uBAAuB;gBACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtC,OAAO;YACT,KAAK,UAAU;gBACb,oBAAoB;gBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,OAAO;YACT,KAAK,MAAM;gBACT,yBAAyB;gBACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,KAAK,OAAO;gBACV,0BAA0B;gBAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpB,OAAO;YACT;gBACE,2DAA2D;gBAC3D,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IA6BO,mBAAmB,CAAC,QAAuB,IAAI,CAAC,KAAK;QAC3D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,EAAe;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,IAAI,IAAI,IAAI,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAES,QAAQ;QAChB,MAAM,QAAQ,GAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAkB,CAAC;QAE3E,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEnC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE9F,MAAM,QAAQ,GAAc,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEhE,6CAA6C;QAC7C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,CAAC,IAAiB,EAAE,KAAa,EAAE,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH;;;;WAIG;QACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAwB,qBAAqB,EAAE,MAAM,CAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACxG,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,OAAsB,CAAC,CAAC;YAExE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAsB,CAAwB,CAAC;QACxE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,qBAAqB,EAAE,OAAO,CAAC,CAAC,IAAiB,EAAE,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,MAAW,EAAE,YAAoB;QACnD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAuDO,QAAQ,CAAC,UAAkB,EAAE,UAAkB;QACrD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,OAAO,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,kCAAkC;gBAClC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;oBACzE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACjE,CAAC;gBAED,yBAAyB;gBACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBAE7B,gDAAgD;gBAChD,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAEpC,oBAAoB;gBACpB,KAAK,CAAC,KAAK,EAAE,CAAC;gBAEd,MAAM;YACR,CAAC;YAED,UAAU,IAAI,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;;AAnRM;IADN,UAAU;2CACkB"}
|