@angular/aria 22.1.3 → 22.1.5
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/_deferred-content-chunk.mjs +6 -6
- package/fesm2022/_menu-chunk.mjs +4 -2
- package/fesm2022/_menu-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +12 -12
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +11 -10
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +12 -12
- package/fesm2022/listbox.mjs +6 -6
- package/fesm2022/menu.mjs +15 -15
- package/fesm2022/private.mjs +6 -1
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs.mjs +15 -15
- package/fesm2022/toolbar.mjs +9 -9
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +9 -9
- package/package.json +2 -2
- package/types/_accordion-chunk.d.ts +2 -2
- package/types/_collection-chunk.d.ts +1 -1
- package/types/_grid-chunk.d.ts +4 -4
- package/types/_list-chunk.d.ts +2 -2
- package/types/_listbox-chunk.d.ts +3 -3
- package/types/_menu-chunk.d.ts +8 -6
- package/types/_tabs-chunk.d.ts +4 -4
- package/types/_toolbar-chunk.d.ts +2 -2
- package/types/_tree-chunk.d.ts +7 -7
- package/types/combobox.d.ts +1 -1
- package/types/grid.d.ts +6 -6
- package/types/listbox.d.ts +3 -3
- package/types/menu.d.ts +3 -3
- package/types/private.d.ts +9 -3
- package/types/tabs.d.ts +3 -3
- package/types/toolbar.d.ts +1 -1
- package/types/tree.d.ts +5 -5
|
@@ -10,7 +10,7 @@ class DeferredContentAware {
|
|
|
10
10
|
}] : []));
|
|
11
11
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
12
12
|
minVersion: "12.0.0",
|
|
13
|
-
version: "22.1.
|
|
13
|
+
version: "22.1.4",
|
|
14
14
|
ngImport: i0,
|
|
15
15
|
type: DeferredContentAware,
|
|
16
16
|
deps: [],
|
|
@@ -18,7 +18,7 @@ class DeferredContentAware {
|
|
|
18
18
|
});
|
|
19
19
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
20
20
|
minVersion: "17.1.0",
|
|
21
|
-
version: "22.1.
|
|
21
|
+
version: "22.1.4",
|
|
22
22
|
type: DeferredContentAware,
|
|
23
23
|
isStandalone: true,
|
|
24
24
|
inputs: {
|
|
@@ -38,7 +38,7 @@ class DeferredContentAware {
|
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({
|
|
40
40
|
minVersion: "12.0.0",
|
|
41
|
-
version: "22.1.
|
|
41
|
+
version: "22.1.4",
|
|
42
42
|
ngImport: i0,
|
|
43
43
|
type: DeferredContentAware,
|
|
44
44
|
decorators: [{
|
|
@@ -97,7 +97,7 @@ class DeferredContent {
|
|
|
97
97
|
}
|
|
98
98
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
99
99
|
minVersion: "12.0.0",
|
|
100
|
-
version: "22.1.
|
|
100
|
+
version: "22.1.4",
|
|
101
101
|
ngImport: i0,
|
|
102
102
|
type: DeferredContent,
|
|
103
103
|
deps: [],
|
|
@@ -105,7 +105,7 @@ class DeferredContent {
|
|
|
105
105
|
});
|
|
106
106
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
107
107
|
minVersion: "14.0.0",
|
|
108
|
-
version: "22.1.
|
|
108
|
+
version: "22.1.4",
|
|
109
109
|
type: DeferredContent,
|
|
110
110
|
isStandalone: true,
|
|
111
111
|
ngImport: i0
|
|
@@ -113,7 +113,7 @@ class DeferredContent {
|
|
|
113
113
|
}
|
|
114
114
|
i0.ɵɵngDeclareClassMetadata({
|
|
115
115
|
minVersion: "12.0.0",
|
|
116
|
-
version: "22.1.
|
|
116
|
+
version: "22.1.4",
|
|
117
117
|
ngImport: i0,
|
|
118
118
|
type: DeferredContent,
|
|
119
119
|
decorators: [{
|
package/fesm2022/_menu-chunk.mjs
CHANGED
|
@@ -12,6 +12,7 @@ class MenuPattern {
|
|
|
12
12
|
isFocused = signal(false);
|
|
13
13
|
hasBeenInteracted = signal(false);
|
|
14
14
|
hasBeenHovered = signal(false);
|
|
15
|
+
items = () => this.inputs.items();
|
|
15
16
|
_openTimeout;
|
|
16
17
|
_closeTimeout;
|
|
17
18
|
tabIndex = () => this.listBehavior.tabIndex();
|
|
@@ -101,7 +102,7 @@ class MenuPattern {
|
|
|
101
102
|
return;
|
|
102
103
|
}
|
|
103
104
|
const parent = this.inputs.parent();
|
|
104
|
-
const activeItem = this
|
|
105
|
+
const activeItem = this.inputs.activeItem();
|
|
105
106
|
if (parent instanceof MenuItemPattern) {
|
|
106
107
|
const grandparent = parent.inputs.parent();
|
|
107
108
|
if (grandparent instanceof MenuPattern) {
|
|
@@ -439,7 +440,8 @@ class MenuTriggerPattern {
|
|
|
439
440
|
pendingFocusEffect() {
|
|
440
441
|
const menu = this.inputs.menu();
|
|
441
442
|
const intent = this.pendingFocus();
|
|
442
|
-
|
|
443
|
+
const items = menu?.items();
|
|
444
|
+
if (menu && intent && items?.length) {
|
|
443
445
|
if (intent === 'first') {
|
|
444
446
|
menu.first();
|
|
445
447
|
} else if (intent === 'last') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_menu-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/menu/menu.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 {_getEventTarget} from '@angular/cdk/platform';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/** The inputs for the MenuBarPattern class. */\nexport interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V> {\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** The inputs for the MenuPattern class. */\nexport interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n expansionDelay: SignalLike<number>;\n}\n\n/** The inputs for the MenuTriggerPattern class. */\nexport interface MenuTriggerInputs<V> {\n /** A reference to the menu trigger element. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** A reference to the menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** Whether the menu trigger is disabled. */\n disabled: SignalLike<boolean>;\n}\n\n/** The inputs for the MenuItemPattern class. */\nexport interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;\n\n /** A reference to the submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The role of the menu item. */\n role: SignalLike<'menuitem' | 'menuitemradio' | 'menuitemcheckbox'>;\n}\n\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n readonly id: SignalLike<string>;\n\n /** The role of the menu. */\n readonly role = () => 'menu';\n\n /** Whether the menu is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n readonly visible = computed(() =>\n this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true,\n );\n\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menu has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n readonly hasBeenHovered = signal(false);\n\n /** Timeout used to open sub-menus on hover. */\n _openTimeout: any;\n\n /** Timeout used to close sub-menus on hover out. */\n _closeTimeout: any;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n readonly shouldFocus = computed(() => {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n return true;\n }\n\n if (root instanceof MenuBarPattern || root instanceof MenuPattern) {\n return root.isFocused();\n }\n\n return false;\n });\n\n /** The key used to expand sub-menus. */\n private readonly _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private readonly _collapseKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n readonly root: SignalLike<\n MenuTriggerPattern<V> | MenuBarPattern<V> | MenuPattern<V> | undefined\n > = computed(() => {\n const parent = this.inputs.parent();\n\n if (!parent) {\n return this;\n }\n\n if (parent instanceof MenuTriggerPattern) {\n return parent;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (grandparent instanceof MenuBarPattern) {\n return grandparent;\n }\n\n return grandparent?.root();\n });\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on('ArrowDown', () => this.next(), {ignoreRepeat: false})\n .on('ArrowUp', () => this.prev(), {ignoreRepeat: false})\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on('Enter', () => this.trigger())\n .on('Escape', () => this.closeAll())\n .on(this._expandKey, () => this.expand())\n .on(this._collapseKey, () => this.collapse())\n .on(this.dynamicSpaceKey, () => this.trigger())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuInputs<V>) {\n this.id = inputs.id;\n this.listBehavior = new List<MenuItemPattern<V>, V>({\n ...inputs,\n value: signal([]),\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n const values = this.inputs.items().map(i => i.value());\n const duplicates = values.filter((val, idx) => values.indexOf(val) !== idx);\n if (duplicates.length > 0) {\n violations.push(`Duplicate value '${duplicates[0]}' detected inside ngMenu.`);\n }\n\n return violations;\n }\n\n /** Sets the default state for the menu. */\n setDefaultState() {\n if (!this.inputs.parent()) {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.listBehavior.goto(firstFocusable, {focusElement: false});\n }\n }\n }\n\n /** Sets the default active state of the menu before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted() || this.hasBeenHovered()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles mouseover events for the menu. */\n onMouseOver(event: MouseEvent) {\n if (!this.visible()) {\n return;\n }\n\n this.hasBeenHovered.set(true);\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n const parent = this.inputs.parent();\n const activeItem = this?.inputs.activeItem();\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n if (grandparent instanceof MenuPattern) {\n grandparent._clearTimeouts();\n grandparent.listBehavior.goto(parent, {focusElement: false});\n }\n }\n\n if (activeItem && activeItem !== item) {\n this._closeItem(activeItem);\n }\n\n if (item.expanded()) {\n this._clearCloseTimeout();\n }\n\n this._openItem(item);\n this.listBehavior.goto(item, {focusElement: this.shouldFocus()});\n }\n\n /** Closes the specified menu item after a delay. */\n private _closeItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n if (!this._closeTimeout) {\n this._closeTimeout = setTimeout(() => {\n item.close();\n this._closeTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n }\n\n /** Opens the specified menu item after a delay. */\n private _openItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n this._openTimeout = setTimeout(() => {\n item.open();\n this._openTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n\n /** Handles mouseout events for the menu. */\n onMouseOut(event: MouseEvent) {\n this._clearOpenTimeout();\n\n if (this.isFocused()) {\n return;\n }\n\n const root = this.root();\n const parent = this.inputs.parent();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!root || !parent || parent instanceof MenuTriggerPattern) {\n return;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (!grandparent || grandparent instanceof MenuBarPattern) {\n return;\n }\n\n if (!grandparent.inputs.element()?.contains(relatedTarget)) {\n parent.close();\n }\n }\n\n /** Handles click events for the menu. */\n onClick(event: MouseEvent) {\n const relatedTarget = _getEventTarget<Node>(event);\n const item = this.inputs.items().find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n item.open();\n this.listBehavior.goto(item);\n this.submit(item);\n }\n }\n\n /** Handles focusin events for the menu. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles the focusout event for the menu. */\n onFocusOut(event: FocusEvent) {\n const parent = this.inputs.parent();\n const parentEl = parent?.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget) {\n this.isFocused.set(false);\n this.inputs.parent()?.close({refocus: true});\n }\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n const siblings = grandparent?.inputs.items().filter(i => i !== parent);\n const item = siblings?.find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n return;\n }\n }\n\n if (\n this.visible() &&\n !parentEl?.contains(relatedTarget) &&\n !this.inputs.element()?.contains(relatedTarget)\n ) {\n this.isFocused.set(false);\n this.inputs.parent()?.close();\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n this.inputs.activeItem()?.close();\n this.listBehavior.prev();\n }\n\n /** Focuses the next menu item. */\n next() {\n this.inputs.activeItem()?.close();\n this.listBehavior.next();\n }\n\n /** Focuses the first menu item. */\n first() {\n this.inputs.activeItem()?.close();\n this.listBehavior.first();\n }\n\n /** Focuses the last menu item. */\n last() {\n this.inputs.activeItem()?.close();\n this.listBehavior.last();\n }\n\n /** Triggers the active menu item. */\n trigger() {\n this.inputs.activeItem()?.hasPopup()\n ? this.inputs.activeItem()?.open({first: true})\n : this.submit();\n }\n\n /** Submits the menu. */\n submit(item = this.inputs.activeItem()) {\n if (!item || item.disabled() || item.submenu()) {\n return;\n }\n\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n root?.inputs.menu()?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuBarPattern) {\n root.close();\n root?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n root?.inputs.itemSelected?.(item.value());\n }\n }\n\n /** Collapses the current menu or focuses the previous item in the menubar. */\n collapse() {\n const root = this.root();\n const parent = this.inputs.parent();\n\n if (parent instanceof MenuItemPattern && !(parent.inputs.parent() instanceof MenuBarPattern)) {\n parent.close({refocus: true});\n } else if (root instanceof MenuBarPattern) {\n root.prev();\n }\n }\n\n /** Expands the current menu or focuses the next item in the menubar. */\n expand() {\n const root = this.root();\n const activeItem = this.inputs.activeItem();\n\n if (activeItem?.submenu()) {\n activeItem.open({first: true});\n } else if (root instanceof MenuBarPattern) {\n root.next();\n }\n }\n\n /** Closes the menu. */\n close() {\n this.inputs.parent()?.close();\n }\n\n /** Closes the menu and all parent menus. */\n closeAll() {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n }\n\n if (root instanceof MenuBarPattern) {\n root.close();\n }\n\n if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n }\n }\n\n /** Clears any open or close timeouts for sub-menus. */\n _clearTimeouts() {\n this._clearOpenTimeout();\n this._clearCloseTimeout();\n }\n\n /** Clears the open timeout. */\n _clearOpenTimeout() {\n if (this._openTimeout) {\n clearTimeout(this._openTimeout);\n this._openTimeout = undefined;\n }\n }\n\n /** Clears the close timeout. */\n _clearCloseTimeout() {\n if (this._closeTimeout) {\n clearTimeout(this._closeTimeout);\n this._closeTimeout = undefined;\n }\n }\n}\n\n/** The menubar ui pattern class. */\nexport class MenuBarPattern<V> {\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private readonly _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private readonly _previousKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menubar has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menubar is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(this._nextKey, () => this.next(), {ignoreRepeat: false})\n .on(this._previousKey, () => this.prev(), {ignoreRepeat: false})\n .on('End', () => this.listBehavior.last())\n .on('Home', () => this.listBehavior.first())\n .on('Enter', () => this.inputs.activeItem()?.open({first: true}))\n .on('ArrowUp', () => this.inputs.activeItem()?.open({last: true}))\n .on('ArrowDown', () => this.inputs.activeItem()?.open({first: true}))\n .on(this.dynamicSpaceKey, () => this.inputs.activeItem()?.open({first: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuBarInputs<V>) {\n this.listBehavior = new List<MenuItemPattern<V>, V>(inputs);\n }\n\n /** Sets the default state for the menubar. */\n setDefaultState() {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.inputs.activeItem.set(firstFocusable);\n }\n }\n\n /** Sets the default active state of the menubar before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles click events for the menu bar. */\n onClick(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n this.goto(item);\n item.expanded() ? item.close() : item.open();\n }\n\n /** Handles mouseover events for the menu bar. */\n onMouseOver(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (item) {\n this.goto(item, {focusElement: this.isFocused()});\n }\n }\n\n /** Handles focusin events for the menu bar. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu bar. */\n onFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!this.inputs.element()?.contains(relatedTarget)) {\n this.isFocused.set(false);\n this.close();\n }\n }\n\n /** Goes to and optionally focuses the specified menu item. */\n goto(item: MenuItemPattern<V>, opts?: {focusElement?: boolean}) {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.goto(item, opts);\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open();\n }\n\n if (item === prevItem) {\n if (item.expanded() && item.submenu()?.inputs.activeItem()) {\n item.submenu()?.inputs.activeItem()?.close();\n item.submenu()?.listBehavior.unfocus();\n }\n }\n }\n\n /** Focuses the next menu item. */\n next() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.next();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.prev();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Closes the menubar and refocuses the root menu bar item. */\n close() {\n this.inputs.activeItem()?.close({refocus: this.isFocused()});\n }\n}\n\n/** The menu trigger ui pattern class. */\nexport class MenuTriggerPattern<V> {\n /** Whether the menu trigger is expanded. */\n readonly expanded = signal(false);\n\n /** Whether the menu trigger has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The pending focus target when the menu is opened before the menu instance is available. */\n readonly pendingFocus = signal<'first' | 'last' | undefined>(undefined);\n\n /** The role of the menu trigger. */\n readonly role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n readonly menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n readonly tabIndex = computed(() =>\n this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0,\n );\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(' ', () => this.open({first: true}))\n .on('Enter', () => this.open({first: true}))\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}))\n .on('Escape', () => this.close({refocus: true}));\n });\n\n constructor(readonly inputs: MenuTriggerInputs<V>) {\n this.menu = this.inputs.menu;\n }\n\n /** Flushes any pending focus when the menu instance becomes available. */\n pendingFocusEffect(): void {\n const menu = this.inputs.menu();\n const intent = this.pendingFocus();\n if (menu && intent) {\n if (intent === 'first') {\n menu.first();\n } else if (intent === 'last') {\n menu.last();\n }\n this.pendingFocus.set(undefined);\n }\n }\n\n /** Handles keyboard events for the menu trigger. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n }\n\n /** Handles click events for the menu trigger. */\n onClick() {\n if (!this.inputs.disabled()) {\n this.expanded() ? this.close() : this.open({first: true});\n }\n }\n\n /** Handles focusin events for the menu trigger. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu trigger. */\n onFocusOut(event: FocusEvent) {\n const element = this.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (\n this.expanded() &&\n !element?.contains(relatedTarget) &&\n !this.inputs.menu()?.inputs.element()?.contains(relatedTarget)\n ) {\n this.close();\n }\n }\n\n /** Opens the menu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n this.expanded.set(true);\n\n if (opts?.first) {\n this.pendingFocus.set('first');\n } else if (opts?.last) {\n this.pendingFocus.set('last');\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\n this.pendingFocus.set(undefined);\n this.menu()?.listBehavior.unfocus();\n\n if (opts.refocus) {\n this.inputs.element()?.focus();\n }\n\n let menuitems = this.inputs.menu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n }\n }\n}\n\n/** The menu item ui pattern class. */\nexport class MenuItemPattern<V> implements ListItem<V> {\n /** The value of the menu item. */\n readonly value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n readonly id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n readonly disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n readonly searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n readonly element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The tab index of the menu item. */\n readonly tabIndex = computed(() => {\n if (this.submenu() && this.submenu()?.inputs.activeItem()) {\n return -1;\n }\n return this.inputs.parent()?.listBehavior.getItemTabindex(this) ?? -1;\n });\n\n /** The position of the menu item in the menu. */\n readonly index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n readonly expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n readonly _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n readonly controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n readonly role = () => this.inputs.role();\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n readonly submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n readonly selectable: SignalLike<boolean>;\n\n constructor(readonly inputs: MenuItemInputs<V>) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.element = inputs.element;\n this.submenu = this.inputs.submenu;\n this.searchTerm = inputs.searchTerm;\n this.selectable = computed(() => !this.submenu());\n }\n\n /** Opens the submenu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n if (this.disabled()) {\n return;\n }\n\n this._expanded.set(true);\n\n if (opts?.first) {\n this.submenu()?.first();\n }\n if (opts?.last) {\n this.submenu()?.last();\n }\n }\n\n /** Closes the submenu. */\n close(opts: {refocus?: boolean} = {}) {\n this._expanded.set(false);\n\n if (opts.refocus) {\n this.inputs.parent()?.listBehavior.goto(this);\n }\n\n let menuitems = this.inputs.submenu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n\n const parent = menuitem?.inputs.parent();\n\n if (parent instanceof MenuPattern) {\n parent._clearTimeouts();\n }\n }\n }\n\n /** Handles focusin events for the menu item. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_menu-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/menu/menu.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 {_getEventTarget} from '@angular/cdk/platform';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/** The inputs for the MenuBarPattern class. */\nexport interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V> {\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** The inputs for the MenuPattern class. */\nexport interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n expansionDelay: SignalLike<number>;\n}\n\n/** The inputs for the MenuTriggerPattern class. */\nexport interface MenuTriggerInputs<V> {\n /** A reference to the menu trigger element. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** A reference to the menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** Whether the menu trigger is disabled. */\n disabled: SignalLike<boolean>;\n}\n\n/** The inputs for the MenuItemPattern class. */\nexport interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;\n\n /** A reference to the submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The role of the menu item. */\n role: SignalLike<'menuitem' | 'menuitemradio' | 'menuitemcheckbox'>;\n}\n\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n readonly id: SignalLike<string>;\n\n /** The role of the menu. */\n readonly role = () => 'menu';\n\n /** Whether the menu is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n readonly visible = computed(() =>\n this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true,\n );\n\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menu has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n readonly hasBeenHovered = signal(false);\n\n /** Items currently inside the menu. */\n readonly items = () => this.inputs.items();\n\n /** Timeout used to open sub-menus on hover. */\n private _openTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /** Timeout used to close sub-menus on hover out. */\n private _closeTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n readonly shouldFocus = computed(() => {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n return true;\n }\n\n if (root instanceof MenuBarPattern || root instanceof MenuPattern) {\n return root.isFocused();\n }\n\n return false;\n });\n\n /** The key used to expand sub-menus. */\n private readonly _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private readonly _collapseKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n readonly root: SignalLike<\n MenuTriggerPattern<V> | MenuBarPattern<V> | MenuPattern<V> | undefined\n > = computed(() => {\n const parent = this.inputs.parent();\n\n if (!parent) {\n return this;\n }\n\n if (parent instanceof MenuTriggerPattern) {\n return parent;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (grandparent instanceof MenuBarPattern) {\n return grandparent;\n }\n\n return grandparent?.root();\n });\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on('ArrowDown', () => this.next(), {ignoreRepeat: false})\n .on('ArrowUp', () => this.prev(), {ignoreRepeat: false})\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on('Enter', () => this.trigger())\n .on('Escape', () => this.closeAll())\n .on(this._expandKey, () => this.expand())\n .on(this._collapseKey, () => this.collapse())\n .on(this.dynamicSpaceKey, () => this.trigger())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuInputs<V>) {\n this.id = inputs.id;\n this.listBehavior = new List<MenuItemPattern<V>, V>({\n ...inputs,\n value: signal([]),\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n const values = this.inputs.items().map(i => i.value());\n const duplicates = values.filter((val, idx) => values.indexOf(val) !== idx);\n if (duplicates.length > 0) {\n violations.push(`Duplicate value '${duplicates[0]}' detected inside ngMenu.`);\n }\n\n return violations;\n }\n\n /** Sets the default state for the menu. */\n setDefaultState() {\n if (!this.inputs.parent()) {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.listBehavior.goto(firstFocusable, {focusElement: false});\n }\n }\n }\n\n /** Sets the default active state of the menu before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted() || this.hasBeenHovered()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles mouseover events for the menu. */\n onMouseOver(event: MouseEvent) {\n if (!this.visible()) {\n return;\n }\n\n this.hasBeenHovered.set(true);\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n const parent = this.inputs.parent();\n const activeItem = this.inputs.activeItem();\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n if (grandparent instanceof MenuPattern) {\n grandparent._clearTimeouts();\n grandparent.listBehavior.goto(parent, {focusElement: false});\n }\n }\n\n if (activeItem && activeItem !== item) {\n this._closeItem(activeItem);\n }\n\n if (item.expanded()) {\n this._clearCloseTimeout();\n }\n\n this._openItem(item);\n this.listBehavior.goto(item, {focusElement: this.shouldFocus()});\n }\n\n /** Closes the specified menu item after a delay. */\n private _closeItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n if (!this._closeTimeout) {\n this._closeTimeout = setTimeout(() => {\n item.close();\n this._closeTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n }\n\n /** Opens the specified menu item after a delay. */\n private _openItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n this._openTimeout = setTimeout(() => {\n item.open();\n this._openTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n\n /** Handles mouseout events for the menu. */\n onMouseOut(event: MouseEvent) {\n this._clearOpenTimeout();\n\n if (this.isFocused()) {\n return;\n }\n\n const root = this.root();\n const parent = this.inputs.parent();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!root || !parent || parent instanceof MenuTriggerPattern) {\n return;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (!grandparent || grandparent instanceof MenuBarPattern) {\n return;\n }\n\n if (!grandparent.inputs.element()?.contains(relatedTarget)) {\n parent.close();\n }\n }\n\n /** Handles click events for the menu. */\n onClick(event: MouseEvent) {\n const relatedTarget = _getEventTarget<Node>(event);\n const item = this.inputs.items().find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n item.open();\n this.listBehavior.goto(item);\n this.submit(item);\n }\n }\n\n /** Handles focusin events for the menu. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles the focusout event for the menu. */\n onFocusOut(event: FocusEvent) {\n const parent = this.inputs.parent();\n const parentEl = parent?.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget) {\n this.isFocused.set(false);\n this.inputs.parent()?.close({refocus: true});\n }\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n const siblings = grandparent?.inputs.items().filter(i => i !== parent);\n const item = siblings?.find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n return;\n }\n }\n\n if (\n this.visible() &&\n !parentEl?.contains(relatedTarget) &&\n !this.inputs.element()?.contains(relatedTarget)\n ) {\n this.isFocused.set(false);\n this.inputs.parent()?.close();\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n this.inputs.activeItem()?.close();\n this.listBehavior.prev();\n }\n\n /** Focuses the next menu item. */\n next() {\n this.inputs.activeItem()?.close();\n this.listBehavior.next();\n }\n\n /** Focuses the first menu item. */\n first() {\n this.inputs.activeItem()?.close();\n this.listBehavior.first();\n }\n\n /** Focuses the last menu item. */\n last() {\n this.inputs.activeItem()?.close();\n this.listBehavior.last();\n }\n\n /** Triggers the active menu item. */\n trigger() {\n this.inputs.activeItem()?.hasPopup()\n ? this.inputs.activeItem()?.open({first: true})\n : this.submit();\n }\n\n /** Submits the menu. */\n submit(item = this.inputs.activeItem()) {\n if (!item || item.disabled() || item.submenu()) {\n return;\n }\n\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n root?.inputs.menu()?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuBarPattern) {\n root.close();\n root?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n root?.inputs.itemSelected?.(item.value());\n }\n }\n\n /** Collapses the current menu or focuses the previous item in the menubar. */\n collapse() {\n const root = this.root();\n const parent = this.inputs.parent();\n\n if (parent instanceof MenuItemPattern && !(parent.inputs.parent() instanceof MenuBarPattern)) {\n parent.close({refocus: true});\n } else if (root instanceof MenuBarPattern) {\n root.prev();\n }\n }\n\n /** Expands the current menu or focuses the next item in the menubar. */\n expand() {\n const root = this.root();\n const activeItem = this.inputs.activeItem();\n\n if (activeItem?.submenu()) {\n activeItem.open({first: true});\n } else if (root instanceof MenuBarPattern) {\n root.next();\n }\n }\n\n /** Closes the menu. */\n close() {\n this.inputs.parent()?.close();\n }\n\n /** Closes the menu and all parent menus. */\n closeAll() {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n }\n\n if (root instanceof MenuBarPattern) {\n root.close();\n }\n\n if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n }\n }\n\n /** Clears any open or close timeouts for sub-menus. */\n _clearTimeouts() {\n this._clearOpenTimeout();\n this._clearCloseTimeout();\n }\n\n /** Clears the open timeout. */\n _clearOpenTimeout() {\n if (this._openTimeout) {\n clearTimeout(this._openTimeout);\n this._openTimeout = undefined;\n }\n }\n\n /** Clears the close timeout. */\n _clearCloseTimeout() {\n if (this._closeTimeout) {\n clearTimeout(this._closeTimeout);\n this._closeTimeout = undefined;\n }\n }\n}\n\n/** The menubar ui pattern class. */\nexport class MenuBarPattern<V> {\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private readonly _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private readonly _previousKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menubar has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menubar is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(this._nextKey, () => this.next(), {ignoreRepeat: false})\n .on(this._previousKey, () => this.prev(), {ignoreRepeat: false})\n .on('End', () => this.listBehavior.last())\n .on('Home', () => this.listBehavior.first())\n .on('Enter', () => this.inputs.activeItem()?.open({first: true}))\n .on('ArrowUp', () => this.inputs.activeItem()?.open({last: true}))\n .on('ArrowDown', () => this.inputs.activeItem()?.open({first: true}))\n .on(this.dynamicSpaceKey, () => this.inputs.activeItem()?.open({first: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuBarInputs<V>) {\n this.listBehavior = new List<MenuItemPattern<V>, V>(inputs);\n }\n\n /** Sets the default state for the menubar. */\n setDefaultState() {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.inputs.activeItem.set(firstFocusable);\n }\n }\n\n /** Sets the default active state of the menubar before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles click events for the menu bar. */\n onClick(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n this.goto(item);\n item.expanded() ? item.close() : item.open();\n }\n\n /** Handles mouseover events for the menu bar. */\n onMouseOver(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (item) {\n this.goto(item, {focusElement: this.isFocused()});\n }\n }\n\n /** Handles focusin events for the menu bar. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu bar. */\n onFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!this.inputs.element()?.contains(relatedTarget)) {\n this.isFocused.set(false);\n this.close();\n }\n }\n\n /** Goes to and optionally focuses the specified menu item. */\n goto(item: MenuItemPattern<V>, opts?: {focusElement?: boolean}) {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.goto(item, opts);\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open();\n }\n\n if (item === prevItem) {\n if (item.expanded() && item.submenu()?.inputs.activeItem()) {\n item.submenu()?.inputs.activeItem()?.close();\n item.submenu()?.listBehavior.unfocus();\n }\n }\n }\n\n /** Focuses the next menu item. */\n next() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.next();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.prev();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Closes the menubar and refocuses the root menu bar item. */\n close() {\n this.inputs.activeItem()?.close({refocus: this.isFocused()});\n }\n}\n\n/** The menu trigger ui pattern class. */\nexport class MenuTriggerPattern<V> {\n /** Whether the menu trigger is expanded. */\n readonly expanded = signal(false);\n\n /** Whether the menu trigger has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The pending focus target when the menu is opened before the menu instance is available. */\n readonly pendingFocus = signal<'first' | 'last' | undefined>(undefined);\n\n /** The role of the menu trigger. */\n readonly role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n readonly menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n readonly tabIndex = computed(() =>\n this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0,\n );\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(' ', () => this.open({first: true}))\n .on('Enter', () => this.open({first: true}))\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}))\n .on('Escape', () => this.close({refocus: true}));\n });\n\n constructor(readonly inputs: MenuTriggerInputs<V>) {\n this.menu = this.inputs.menu;\n }\n\n /** Flushes any pending focus when the menu instance becomes available. */\n pendingFocusEffect(): void {\n const menu = this.inputs.menu();\n const intent = this.pendingFocus();\n const items = menu?.items();\n\n // We check the items so that we don't try calling into\n // `first/last` until the items are actually available.\n if (menu && intent && items?.length) {\n if (intent === 'first') {\n menu.first();\n } else if (intent === 'last') {\n menu.last();\n }\n this.pendingFocus.set(undefined);\n }\n }\n\n /** Handles keyboard events for the menu trigger. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n }\n\n /** Handles click events for the menu trigger. */\n onClick() {\n if (!this.inputs.disabled()) {\n this.expanded() ? this.close() : this.open({first: true});\n }\n }\n\n /** Handles focusin events for the menu trigger. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu trigger. */\n onFocusOut(event: FocusEvent) {\n const element = this.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (\n this.expanded() &&\n !element?.contains(relatedTarget) &&\n !this.inputs.menu()?.inputs.element()?.contains(relatedTarget)\n ) {\n this.close();\n }\n }\n\n /** Opens the menu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n this.expanded.set(true);\n\n if (opts?.first) {\n this.pendingFocus.set('first');\n } else if (opts?.last) {\n this.pendingFocus.set('last');\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\n this.pendingFocus.set(undefined);\n this.menu()?.listBehavior.unfocus();\n\n if (opts.refocus) {\n this.inputs.element()?.focus();\n }\n\n let menuitems = this.inputs.menu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n }\n }\n}\n\n/** The menu item ui pattern class. */\nexport class MenuItemPattern<V> implements ListItem<V> {\n /** The value of the menu item. */\n readonly value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n readonly id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n readonly disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n readonly searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n readonly element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The tab index of the menu item. */\n readonly tabIndex = computed(() => {\n if (this.submenu() && this.submenu()?.inputs.activeItem()) {\n return -1;\n }\n return this.inputs.parent()?.listBehavior.getItemTabindex(this) ?? -1;\n });\n\n /** The position of the menu item in the menu. */\n readonly index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n readonly expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n readonly _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n readonly controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n readonly role = () => this.inputs.role();\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n readonly submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n readonly selectable: SignalLike<boolean>;\n\n constructor(readonly inputs: MenuItemInputs<V>) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.element = inputs.element;\n this.submenu = this.inputs.submenu;\n this.searchTerm = inputs.searchTerm;\n this.selectable = computed(() => !this.submenu());\n }\n\n /** Opens the submenu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n if (this.disabled()) {\n return;\n }\n\n this._expanded.set(true);\n\n if (opts?.first) {\n this.submenu()?.first();\n }\n if (opts?.last) {\n this.submenu()?.last();\n }\n }\n\n /** Closes the submenu. */\n close(opts: {refocus?: boolean} = {}) {\n this._expanded.set(false);\n\n if (opts.refocus) {\n this.inputs.parent()?.listBehavior.goto(this);\n }\n\n let menuitems = this.inputs.submenu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n\n const parent = menuitem?.inputs.parent();\n\n if (parent instanceof MenuPattern) {\n parent._clearTimeouts();\n }\n }\n }\n\n /** Handles focusin events for the menu item. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n}\n"],"names":[],"mappings":";;;;MA0Ea,WAAW,CAAA;EA4GD,MAAA;EA1GZ,EAAE;EAGF,IAAI,GAAG,MAAM,MAAM;EAGnB,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;EAGvC,OAAO,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CACjE;EAGQ,YAAY;AAGZ,EAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAGzB,EAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;AAGjC,EAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;EAG9B,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;EAGlC,YAAY;EAGZ,aAAa;EAGZ,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;EAG7C,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IAExB,IAAI,IAAI,YAAY,kBAAkB,EAAE;AACtC,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,IAAI,IAAI,YAAY,cAAc,IAAI,IAAI,YAAY,WAAW,EAAE;AACjE,MAAA,OAAO,IAAI,CAAC,SAAS,EAAE;AACzB,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA,CAAC,CAAC;EAGe,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC1C,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY;AAC3E,EAAA,CAAC,CAAC;EAGe,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5C,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,YAAY,GAAG,WAAW;AAC3E,EAAA,CAAC,CAAC;AAGO,EAAA,eAAe,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;AAG3E,EAAA,eAAe,GAAG,KAAK;EAGvB,IAAI,GAET,QAAQ,CAAC,MAAK;IAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAEnC,IAAI,CAAC,MAAM,EAAE;AACX,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAI,MAAM,YAAY,kBAAkB,EAAE;AACxC,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IAE1C,IAAI,WAAW,YAAY,cAAc,EAAE;AACzC,MAAA,OAAO,WAAW;AACpB,IAAA;AAEA,IAAA,OAAO,WAAW,EAAE,IAAI,EAAE;AAC5B,EAAA,CAAC,CAAC;EAGO,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,IAAA,OAAO,IAAI,oBAAoB,EAAA,CAC5B,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAAC,MAAA,YAAY,EAAE;KAAM,CAAA,CACxD,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAAC,MAAA,YAAY,EAAE;KAAM,CAAA,CACtD,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA,CAC7B,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAC3B,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA,CAChC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA,CAClC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA,CACvC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA,CAC3C,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA,CAC7C,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnE,EAAA,CAAC,CAAC;EAEF,WAAA,CAAqB,MAAqB,EAAA;IAArB,IAAA,CAAA,MAAM,GAAN,MAAM;AACzB,IAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;AACnB,IAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAwB;AAClD,MAAA,GAAG,MAAM;MACT,KAAK,EAAE,MAAM,CAAC,EAAE;AACjB,KAAA,CAAC;AACJ,EAAA;AAGA,EAAA,QAAQ,GAAA;IACN,MAAM,UAAU,GAAa,EAAE;AAE/B,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACtD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAC3E,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;MACzB,UAAU,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,UAAU,CAAC,CAAC,CAAC,CAAA,yBAAA,CAA2B,CAAC;AAC/E,IAAA;AAEA,IAAA,OAAO,UAAU;AACnB,EAAA;AAGA,EAAA,eAAe,GAAA;IACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;MACzB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACvE,MAAA,IAAI,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE;AAAC,UAAA,YAAY,EAAE;AAAK,SAAC,CAAC;AAC/D,MAAA;AACF,IAAA;AACF,EAAA;AAGA,EAAA,qBAAqB,GAAA;IACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;IAEvD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;MAClC,IAAI,CAAC,eAAe,EAAE;AACxB,IAAA;AACF,EAAA;EAGA,SAAS,CAAC,KAAoB,EAAA;AAC5B,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,EAAA;EAGA,WAAW,CAAC,KAAiB,EAAA;AAC3B,IAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzF,IAAI,CAAC,IAAI,EAAE;AACT,MAAA;AACF,IAAA;IAEA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAE3C,IAAI,MAAM,YAAY,eAAe,EAAE;MACrC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;MAC1C,IAAI,WAAW,YAAY,WAAW,EAAE;QACtC,WAAW,CAAC,cAAc,EAAE;AAC5B,QAAA,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AAAC,UAAA,YAAY,EAAE;AAAK,SAAC,CAAC;AAC9D,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;AACrC,MAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC7B,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;MACnB,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAA;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACpB,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;AAAC,MAAA,YAAY,EAAE,IAAI,CAAC,WAAW;AAAE,KAAC,CAAC;AAClE,EAAA;EAGQ,UAAU,CAAC,IAAwB,EAAA;IACzC,IAAI,CAAC,iBAAiB,EAAE;AAExB,IAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,MAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;QACnC,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,aAAa,GAAG,SAAS;MAChC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AAClC,IAAA;AACF,EAAA;EAGQ,SAAS,CAAC,IAAwB,EAAA;IACxC,IAAI,CAAC,iBAAiB,EAAE;AAExB,IAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAK;MAClC,IAAI,CAAC,IAAI,EAAE;MACX,IAAI,CAAC,YAAY,GAAG,SAAS;IAC/B,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AAClC,EAAA;EAGA,UAAU,CAAC,KAAiB,EAAA;IAC1B,IAAI,CAAC,iBAAiB,EAAE;AAExB,IAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;IAExD,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,YAAY,kBAAkB,EAAE;AAC5D,MAAA;AACF,IAAA;IAEA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAE1C,IAAA,IAAI,CAAC,WAAW,IAAI,WAAW,YAAY,cAAc,EAAE;AACzD,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE;MAC1D,MAAM,CAAC,KAAK,EAAE;AAChB,IAAA;AACF,EAAA;EAGA,OAAO,CAAC,KAAiB,EAAA;AACvB,IAAA,MAAM,aAAa,GAAG,eAAe,CAAO,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;AAEhF,IAAA,IAAI,IAAI,EAAE;MACR,IAAI,CAAC,IAAI,EAAE;AACX,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,IAAA;AACF,EAAA;AAGA,EAAA,SAAS,GAAA;AACP,IAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,EAAA;EAGA,UAAU,CAAC,KAAiB,EAAA;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IACnC,MAAM,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;AACzC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;IAExD,IAAI,CAAC,aAAa,EAAE;AAClB,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;MACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;AAC9C,IAAA;IAEA,IAAI,MAAM,YAAY,eAAe,EAAE;MACrC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1C,MAAA,MAAM,QAAQ,GAAG,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AACtE,MAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;AAEtE,MAAA,IAAI,IAAI,EAAE;AACR,QAAA;AACF,MAAA;AACF,IAAA;IAEA,IACE,IAAI,CAAC,OAAO,EAAE,IACd,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,IAClC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/C;AACA,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;MACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;AAC/B,IAAA;AACF,EAAA;AAGA,EAAA,IAAI,GAAA;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACjC,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,EAAA;AAGA,EAAA,IAAI,GAAA;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACjC,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,EAAA;AAGA,EAAA,KAAK,GAAA;IACH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACjC,IAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,EAAA;AAGA,EAAA,IAAI,GAAA;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACjC,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,EAAA;AAGA,EAAA,OAAO,GAAA;IACL,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAA,GAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;KAAK,CAAA,GAC5C,IAAI,CAAC,MAAM,EAAE;AACnB,EAAA;EAGA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAA;AACpC,IAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IAExB,IAAI,IAAI,YAAY,kBAAkB,EAAE;MACtC,IAAI,CAAC,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;AAC3B,MAAA,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC1D,IAAA,CAAA,MAAO,IAAI,IAAI,YAAY,cAAc,EAAE;MACzC,IAAI,CAAC,KAAK,EAAE;MACZ,IAAI,EAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3C,IAAA,CAAA,MAAO,IAAI,IAAI,YAAY,WAAW,EAAE;MACtC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;MAChD,IAAI,EAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3C,IAAA;AACF,EAAA;AAGA,EAAA,QAAQ,GAAA;AACN,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAEnC,IAAA,IAAI,MAAM,YAAY,eAAe,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,cAAc,CAAC,EAAE;MAC5F,MAAM,CAAC,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;AAC/B,IAAA,CAAA,MAAO,IAAI,IAAI,YAAY,cAAc,EAAE;MACzC,IAAI,CAAC,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAGA,EAAA,MAAM,GAAA;AACJ,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAE3C,IAAA,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE;MACzB,UAAU,CAAC,IAAI,CAAC;AAAC,QAAA,KAAK,EAAE;AAAI,OAAC,CAAC;AAChC,IAAA,CAAA,MAAO,IAAI,IAAI,YAAY,cAAc,EAAE;MACzC,IAAI,CAAC,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAGA,EAAA,KAAK,GAAA;IACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;AAC/B,EAAA;AAGA,EAAA,QAAQ,GAAA;AACN,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IAExB,IAAI,IAAI,YAAY,kBAAkB,EAAE;MACtC,IAAI,CAAC,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;AAC7B,IAAA;IAEA,IAAI,IAAI,YAAY,cAAc,EAAE;MAClC,IAAI,CAAC,KAAK,EAAE;AACd,IAAA;IAEA,IAAI,IAAI,YAAY,WAAW,EAAE;MAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;AAAC,QAAA,OAAO,EAAE;AAAI,OAAC,CAAC;AAClD,IAAA;AACF,EAAA;AAGA,EAAA,cAAc,GAAA;IACZ,IAAI,CAAC,iBAAiB,EAAE;IACxB,IAAI,CAAC,kBAAkB,EAAE;AAC3B,EAAA;AAGA,EAAA,iBAAiB,GAAA;IACf,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,MAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;MAC/B,IAAI,CAAC,YAAY,GAAG,SAAS;AAC/B,IAAA;AACF,EAAA;AAGA,EAAA,kBAAkB,GAAA;IAChB,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,MAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;MAChC,IAAI,CAAC,aAAa,GAAG,SAAS;AAChC,IAAA;AACF,EAAA;AACD;MAGY,cAAc,CAAA;EA8CJ,MAAA;EA5CZ,YAAY;EAGZ,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;EAGrC,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY;AAC3E,EAAA,CAAC,CAAC;EAGe,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5C,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,KAAK,GAAG,YAAY,GAAG,WAAW;AAC3E,EAAA,CAAC,CAAC;AAGO,EAAA,eAAe,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;AAG3E,EAAA,eAAe,GAAG,KAAK;AAGvB,EAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAGzB,EAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;EAGjC,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;EAGvC,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,IAAA,OAAO,IAAI,oBAAoB,EAAA,CAC5B,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAAC,MAAA,YAAY,EAAE;KAAM,CAAA,CAC1D,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAAC,MAAA,YAAY,EAAE;KAAM,CAAA,CAC9D,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA,CACxC,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA,CAC1C,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;AAAI,KAAC,CAAC,CAAA,CAC/D,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,MAAA,IAAI,EAAE;AAAI,KAAC,CAAC,CAAA,CAChE,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;AAAI,KAAC,CAAC,CAAA,CACnE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;KAAK,CAAC,CAAA,CAC5E,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnE,EAAA,CAAC,CAAC;EAEF,WAAA,CAAqB,MAAwB,EAAA;IAAxB,IAAA,CAAA,MAAM,GAAN,MAAM;AACzB,IAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAwB,MAAM,CAAC;AAC7D,EAAA;AAGA,EAAA,eAAe,GAAA;IACb,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACvE,IAAA,IAAI,cAAc,EAAE;MAClB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5C,IAAA;AACF,EAAA;AAGA,EAAA,qBAAqB,GAAA;AACnB,IAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;MAClC,IAAI,CAAC,eAAe,EAAE;AACxB,IAAA;AACF,EAAA;EAGA,SAAS,CAAC,KAAoB,EAAA;AAC5B,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,EAAA;EAGA,OAAO,CAAC,KAAiB,EAAA;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzF,IAAI,CAAC,IAAI,EAAE;AACT,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACf,IAAA,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AAC9C,EAAA;EAGA,WAAW,CAAC,KAAiB,EAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzF,IAAA,IAAI,IAAI,EAAE;AACR,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAAC,QAAA,YAAY,EAAE,IAAI,CAAC,SAAS;AAAE,OAAC,CAAC;AACnD,IAAA;AACF,EAAA;AAGA,EAAA,SAAS,GAAA;AACP,IAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,EAAA;EAGA,UAAU,CAAC,KAAiB,EAAA;AAC1B,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;AAExD,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE;AACnD,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;MACzB,IAAI,CAAC,KAAK,EAAE;AACd,IAAA;AACF,EAAA;AAGA,EAAA,IAAI,CAAC,IAAwB,EAAE,IAA+B,EAAA;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAElC,IAAA,IAAI,QAAQ,EAAE,QAAQ,EAAE,EAAE;MACxB,QAAQ,EAAE,KAAK,EAAE;MACjB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;AAClC,IAAA;IAEA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,MAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;AAC1D,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;QAC5C,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE;AACxC,MAAA;AACF,IAAA;AACF,EAAA;AAGA,EAAA,IAAI,GAAA;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACzC,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAExB,IAAA,IAAI,QAAQ,EAAE,QAAQ,EAAE,EAAE;MACxB,QAAQ,EAAE,KAAK,EAAE;MACjB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,QAAA,KAAK,EAAE;AAAI,OAAC,CAAC;AAC/C,IAAA;AACF,EAAA;AAGA,EAAA,IAAI,GAAA;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACzC,IAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAExB,IAAA,IAAI,QAAQ,EAAE,QAAQ,EAAE,EAAE;MACxB,QAAQ,EAAE,KAAK,EAAE;MACjB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC;AAAC,QAAA,KAAK,EAAE;AAAI,OAAC,CAAC;AAC/C,IAAA;AACF,EAAA;AAGA,EAAA,KAAK,GAAA;IACH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;AAAC,MAAA,OAAO,EAAE,IAAI,CAAC,SAAS;AAAE,KAAC,CAAC;AAC9D,EAAA;AACD;MAGY,kBAAkB,CAAA;EAqCR,MAAA;AAnCZ,EAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAGxB,EAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;AAGjC,EAAA,YAAY,GAAG,MAAM,CAA+B,SAAS,CAAC;EAG9D,IAAI,GAAG,MAAM,QAAQ;EAGrB,QAAQ,GAAG,MAAM,IAAI;EAGrB,IAAI;EAGJ,QAAQ,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAC7D;EAGQ,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;EAGvC,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,IAAA,OAAO,IAAI,oBAAoB,EAAA,CAC5B,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;KAAK,CAAC,CAAA,CACtC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;KAAK,CAAC,CAAA,CAC1C,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AAAC,MAAA,KAAK,EAAE;KAAK,CAAC,CAAA,CAC9C,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AAAC,MAAA,IAAI,EAAE;KAAK,CAAC,CAAA,CAC3C,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC;AAAC,MAAA,OAAO,EAAE;AAAI,KAAC,CAAC,CAAC;AACpD,EAAA,CAAC,CAAC;EAEF,WAAA,CAAqB,MAA4B,EAAA;IAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;AACzB,IAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAC9B,EAAA;AAGA,EAAA,kBAAkB,GAAA;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,IAAA,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE;AAI3B,IAAA,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,EAAE,MAAM,EAAE;MACnC,IAAI,MAAM,KAAK,OAAO,EAAE;QACtB,IAAI,CAAC,KAAK,EAAE;AACd,MAAA,CAAA,MAAO,IAAI,MAAM,KAAK,MAAM,EAAE;QAC5B,IAAI,CAAC,IAAI,EAAE;AACb,MAAA;AACA,MAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AAClC,IAAA;AACF,EAAA;EAGA,SAAS,CAAC,KAAoB,EAAA;IAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;AAC3B,MAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;MAChC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,IAAA;AACF,EAAA;AAGA,EAAA,OAAO,GAAA;IACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;AAC3B,MAAA,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AAAC,QAAA,KAAK,EAAE;AAAI,OAAC,CAAC;AAC3D,IAAA;AACF,EAAA;AAGA,EAAA,SAAS,GAAA;AACP,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,EAAA;EAGA,UAAU,CAAC,KAAiB,EAAA;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACrC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;AAExD,IAAA,IACE,IAAI,CAAC,QAAQ,EAAE,IACf,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,IACjC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC9D;MACA,IAAI,CAAC,KAAK,EAAE;AACd,IAAA;AACF,EAAA;EAGA,IAAI,CAAC,IAAwC,EAAA;AAC3C,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAEvB,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,MAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,IAAA,CAAA,MAAO,IAAI,IAAI,EAAE,IAAI,EAAE;AACrB,MAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,IAAA;AACF,EAAA;AAGA,EAAA,KAAK,CAAC,OAA4B,EAAE,EAAA;AAClC,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,IAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE;IAEnC,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAChC,IAAA;AAEA,IAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;IAExD,OAAO,SAAS,CAAC,MAAM,EAAE;AACvB,MAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;AAChC,MAAA,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;MAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE;AACjD,MAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AACzE,IAAA;AACF,EAAA;AACD;MAGY,eAAe,CAAA;EAsDL,MAAA;EApDZ,KAAK;EAGL,EAAE;EAGF,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;EAG3E,UAAU;EAGV,OAAO;AAGP,EAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;AAG3E,EAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;EAGjC,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,IAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;AACzD,MAAA,OAAO,EAAE;AACX,IAAA;AACA,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE;AACvE,EAAA,CAAC,CAAC;EAGO,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAGhF,EAAA,QAAQ,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAK,CAAC;AAGrE,EAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAGzB,EAAA,QAAQ,GAAG,MAAM,CAAqB,SAAS,CAAC;EAGhD,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;EAG/B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;EAG3C,OAAO;EAGP,UAAU;EAEnB,WAAA,CAAqB,MAAyB,EAAA;IAAzB,IAAA,CAAA,MAAM,GAAN,MAAM;AACzB,IAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;AACnB,IAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,IAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC7B,IAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAClC,IAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACnC,IAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,EAAA;EAGA,IAAI,CAAC,IAAwC,EAAA;AAC3C,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAExB,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,MAAA,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AACzB,IAAA;IACA,IAAI,IAAI,EAAE,IAAI,EAAE;AACd,MAAA,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE;AACxB,IAAA;AACF,EAAA;AAGA,EAAA,KAAK,CAAC,OAA4B,EAAE,EAAA;AAClC,IAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAEzB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,MAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,IAAA;AAEA,IAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;IAE3D,OAAO,SAAS,CAAC,MAAM,EAAE;AACvB,MAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;AAChC,MAAA,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;MAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE;AACjD,MAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;MAEvE,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;MAExC,IAAI,MAAM,YAAY,WAAW,EAAE;QACjC,MAAM,CAAC,cAAc,EAAE;AACzB,MAAA;AACF,IAAA;AACF,EAAA;AAGA,EAAA,SAAS,GAAA;AACP,IAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,EAAA;AACD;;;;"}
|
package/fesm2022/accordion.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import './_click-event-manager-chunk.mjs';
|
|
|
14
14
|
class AccordionContent {
|
|
15
15
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
16
16
|
minVersion: "12.0.0",
|
|
17
|
-
version: "22.1.
|
|
17
|
+
version: "22.1.4",
|
|
18
18
|
ngImport: i0,
|
|
19
19
|
type: AccordionContent,
|
|
20
20
|
deps: [],
|
|
@@ -22,7 +22,7 @@ class AccordionContent {
|
|
|
22
22
|
});
|
|
23
23
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
24
24
|
minVersion: "14.0.0",
|
|
25
|
-
version: "22.1.
|
|
25
|
+
version: "22.1.4",
|
|
26
26
|
type: AccordionContent,
|
|
27
27
|
isStandalone: true,
|
|
28
28
|
selector: "ng-template[ngAccordionContent]",
|
|
@@ -34,7 +34,7 @@ class AccordionContent {
|
|
|
34
34
|
}
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({
|
|
36
36
|
minVersion: "12.0.0",
|
|
37
|
-
version: "22.1.
|
|
37
|
+
version: "22.1.4",
|
|
38
38
|
ngImport: i0,
|
|
39
39
|
type: AccordionContent,
|
|
40
40
|
decorators: [{
|
|
@@ -92,7 +92,7 @@ class AccordionPanel {
|
|
|
92
92
|
}
|
|
93
93
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
94
94
|
minVersion: "12.0.0",
|
|
95
|
-
version: "22.1.
|
|
95
|
+
version: "22.1.4",
|
|
96
96
|
ngImport: i0,
|
|
97
97
|
type: AccordionPanel,
|
|
98
98
|
deps: [],
|
|
@@ -100,7 +100,7 @@ class AccordionPanel {
|
|
|
100
100
|
});
|
|
101
101
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
102
102
|
minVersion: "17.2.0",
|
|
103
|
-
version: "22.1.
|
|
103
|
+
version: "22.1.4",
|
|
104
104
|
type: AccordionPanel,
|
|
105
105
|
isStandalone: true,
|
|
106
106
|
selector: "[ngAccordionPanel]",
|
|
@@ -140,7 +140,7 @@ class AccordionPanel {
|
|
|
140
140
|
}
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({
|
|
142
142
|
minVersion: "12.0.0",
|
|
143
|
-
version: "22.1.
|
|
143
|
+
version: "22.1.4",
|
|
144
144
|
ngImport: i0,
|
|
145
145
|
type: AccordionPanel,
|
|
146
146
|
decorators: [{
|
|
@@ -245,7 +245,7 @@ class AccordionGroup {
|
|
|
245
245
|
}
|
|
246
246
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
247
247
|
minVersion: "12.0.0",
|
|
248
|
-
version: "22.1.
|
|
248
|
+
version: "22.1.4",
|
|
249
249
|
ngImport: i0,
|
|
250
250
|
type: AccordionGroup,
|
|
251
251
|
deps: [],
|
|
@@ -253,7 +253,7 @@ class AccordionGroup {
|
|
|
253
253
|
});
|
|
254
254
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
255
255
|
minVersion: "17.1.0",
|
|
256
|
-
version: "22.1.
|
|
256
|
+
version: "22.1.4",
|
|
257
257
|
type: AccordionGroup,
|
|
258
258
|
isStandalone: true,
|
|
259
259
|
selector: "[ngAccordionGroup]",
|
|
@@ -304,7 +304,7 @@ class AccordionGroup {
|
|
|
304
304
|
}
|
|
305
305
|
i0.ɵɵngDeclareClassMetadata({
|
|
306
306
|
minVersion: "12.0.0",
|
|
307
|
-
version: "22.1.
|
|
307
|
+
version: "22.1.4",
|
|
308
308
|
ngImport: i0,
|
|
309
309
|
type: AccordionGroup,
|
|
310
310
|
decorators: [{
|
|
@@ -430,7 +430,7 @@ class AccordionTrigger {
|
|
|
430
430
|
}
|
|
431
431
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
432
432
|
minVersion: "12.0.0",
|
|
433
|
-
version: "22.1.
|
|
433
|
+
version: "22.1.4",
|
|
434
434
|
ngImport: i0,
|
|
435
435
|
type: AccordionTrigger,
|
|
436
436
|
deps: [],
|
|
@@ -438,7 +438,7 @@ class AccordionTrigger {
|
|
|
438
438
|
});
|
|
439
439
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
440
440
|
minVersion: "17.1.0",
|
|
441
|
-
version: "22.1.
|
|
441
|
+
version: "22.1.4",
|
|
442
442
|
type: AccordionTrigger,
|
|
443
443
|
isStandalone: true,
|
|
444
444
|
selector: "[ngAccordionTrigger]",
|
|
@@ -495,7 +495,7 @@ class AccordionTrigger {
|
|
|
495
495
|
}
|
|
496
496
|
i0.ɵɵngDeclareClassMetadata({
|
|
497
497
|
minVersion: "12.0.0",
|
|
498
|
-
version: "22.1.
|
|
498
|
+
version: "22.1.4",
|
|
499
499
|
ngImport: i0,
|
|
500
500
|
type: AccordionTrigger,
|
|
501
501
|
decorators: [{
|
package/fesm2022/aria.mjs
CHANGED
package/fesm2022/aria.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.
|
|
1
|
+
{"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.5');\n"],"names":[],"mappings":";;MAWa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
|
package/fesm2022/combobox.mjs
CHANGED
|
@@ -89,7 +89,7 @@ class Combobox extends DeferredContentAware {
|
|
|
89
89
|
}
|
|
90
90
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
91
91
|
minVersion: "12.0.0",
|
|
92
|
-
version: "22.1.
|
|
92
|
+
version: "22.1.4",
|
|
93
93
|
ngImport: i0,
|
|
94
94
|
type: Combobox,
|
|
95
95
|
deps: [],
|
|
@@ -97,7 +97,7 @@ class Combobox extends DeferredContentAware {
|
|
|
97
97
|
});
|
|
98
98
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
99
99
|
minVersion: "17.1.0",
|
|
100
|
-
version: "22.1.
|
|
100
|
+
version: "22.1.4",
|
|
101
101
|
type: Combobox,
|
|
102
102
|
isStandalone: true,
|
|
103
103
|
selector: "[ngCombobox]",
|
|
@@ -194,7 +194,7 @@ class Combobox extends DeferredContentAware {
|
|
|
194
194
|
}
|
|
195
195
|
i0.ɵɵngDeclareClassMetadata({
|
|
196
196
|
minVersion: "12.0.0",
|
|
197
|
-
version: "22.1.
|
|
197
|
+
version: "22.1.4",
|
|
198
198
|
ngImport: i0,
|
|
199
199
|
type: Combobox,
|
|
200
200
|
decorators: [{
|
|
@@ -320,7 +320,8 @@ class ComboboxPopup {
|
|
|
320
320
|
debugName: "popupType"
|
|
321
321
|
}] : []));
|
|
322
322
|
_pattern = new ComboboxPopupPattern({
|
|
323
|
-
...this
|
|
323
|
+
...this,
|
|
324
|
+
combobox: computed(() => this.combobox()._pattern)
|
|
324
325
|
});
|
|
325
326
|
ngOnInit() {
|
|
326
327
|
this.combobox()._registerPopup(this);
|
|
@@ -337,7 +338,7 @@ class ComboboxPopup {
|
|
|
337
338
|
}
|
|
338
339
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
339
340
|
minVersion: "12.0.0",
|
|
340
|
-
version: "22.1.
|
|
341
|
+
version: "22.1.4",
|
|
341
342
|
ngImport: i0,
|
|
342
343
|
type: ComboboxPopup,
|
|
343
344
|
deps: [],
|
|
@@ -345,7 +346,7 @@ class ComboboxPopup {
|
|
|
345
346
|
});
|
|
346
347
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
347
348
|
minVersion: "17.1.0",
|
|
348
|
-
version: "22.1.
|
|
349
|
+
version: "22.1.4",
|
|
349
350
|
type: ComboboxPopup,
|
|
350
351
|
isStandalone: true,
|
|
351
352
|
selector: "ng-template[ngComboboxPopup]",
|
|
@@ -378,7 +379,7 @@ class ComboboxPopup {
|
|
|
378
379
|
}
|
|
379
380
|
i0.ɵɵngDeclareClassMetadata({
|
|
380
381
|
minVersion: "12.0.0",
|
|
381
|
-
version: "22.1.
|
|
382
|
+
version: "22.1.4",
|
|
382
383
|
ngImport: i0,
|
|
383
384
|
type: ComboboxPopup,
|
|
384
385
|
decorators: [{
|
|
@@ -461,7 +462,7 @@ class ComboboxWidget {
|
|
|
461
462
|
}
|
|
462
463
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
463
464
|
minVersion: "12.0.0",
|
|
464
|
-
version: "22.1.
|
|
465
|
+
version: "22.1.4",
|
|
465
466
|
ngImport: i0,
|
|
466
467
|
type: ComboboxWidget,
|
|
467
468
|
deps: [],
|
|
@@ -469,7 +470,7 @@ class ComboboxWidget {
|
|
|
469
470
|
});
|
|
470
471
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
471
472
|
minVersion: "17.1.0",
|
|
472
|
-
version: "22.1.
|
|
473
|
+
version: "22.1.4",
|
|
473
474
|
type: ComboboxWidget,
|
|
474
475
|
isStandalone: true,
|
|
475
476
|
selector: "[ngComboboxWidget]",
|
|
@@ -494,7 +495,7 @@ class ComboboxWidget {
|
|
|
494
495
|
}
|
|
495
496
|
i0.ɵɵngDeclareClassMetadata({
|
|
496
497
|
minVersion: "12.0.0",
|
|
497
|
-
version: "22.1.
|
|
498
|
+
version: "22.1.4",
|
|
498
499
|
ngImport: i0,
|
|
499
500
|
type: ComboboxWidget,
|
|
500
501
|
decorators: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout()',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect({write: () => this._pattern.keyboardEventRelayEffect()});\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern = new ComboboxPopupPattern({\n ...this,\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(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 afterNextRender,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n private readonly _idGenerator = inject(_IdGenerator);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n\n afterNextRender(() => {\n // Imperative, not a host binding: the element's id may already be owned by another\n // directive (e.g. Listbox, Tree, Grid), so this can't collide with it.\n if (!el.id) {\n el.id = this._idGenerator.getId('ng-combobox-widget-', true);\n }\n // Set synchronously; the MutationObserver above only fires on the next microtask.\n this.popupId.set(el.id);\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout()',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect({write: () => this._pattern.keyboardEventRelayEffect()});\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern: ComboboxPopupPattern = new ComboboxPopupPattern({\n ...this,\n combobox: computed(() => this.combobox()._pattern),\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(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 afterNextRender,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n private readonly _idGenerator = inject(_IdGenerator);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n\n afterNextRender(() => {\n // Imperative, not a host binding: the element's id may already be owned by another\n // directive (e.g. Listbox, Tree, Grid), so this can't collide with it.\n if (!el.id) {\n el.id = this._idGenerator.getId('ng-combobox-widget-', true);\n }\n // Set synchronously; the MutationObserver above only fires on the next microtask.\n this.popupId.set(el.id);\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":[],"mappings":"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"}
|