New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@angular/aria

Package Overview
Dependencies
Maintainers
2
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@angular/aria - npm Package Compare versions

Comparing version
22.0.0-next.3
to
22.0.0-next.4
+45
fesm2022/_click-event-manager-chunk.mjs
import { EventManager, Modifier, hasModifiers } from './_signal-like-chunk.mjs';
function isFakeClick(event) {
return event.detail === 0 || !event.pointerType;
}
function isProgrammaticClick(event) {
return !event.isTrusted;
}
class ClickEventManager extends EventManager {
options = {
preventDefault: false,
stopPropagation: false
};
on(...args) {
const {
handler,
modifiers
} = this._normalizeInputs(...args);
this.configs.push({
handler,
matcher: event => this._isMatch(event, modifiers),
...this.options
});
return this;
}
_normalizeInputs(...args) {
if (args.length === 2) {
return {
modifiers: args[0],
handler: args[1]
};
}
return {
modifiers: Modifier.None,
handler: args[0]
};
}
_isMatch(event, modifiers) {
const isAllowed = isProgrammaticClick(event) || !isFakeClick(event);
return isAllowed && hasModifiers(event, modifiers);
}
}
export { ClickEventManager };
//# sourceMappingURL=_click-event-manager-chunk.mjs.map
{"version":3,"file":"_click-event-manager-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/event-manager/click-event-manager.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 EventHandler,\n EventHandlerOptions,\n EventManager,\n hasModifiers,\n ModifierInputs,\n Modifier,\n} from './event-manager';\n\n/**\n * Gets whether an event could be a simulated click event.\n *\n * Screen readers and keyboard activation (Enter/Space) often dispatch fake click\n * events. We distinguish them by checking if `event.detail` is zero or if\n * `event.pointerType` is missing.\n */\nexport function isFakeClick(event: PointerEvent): boolean {\n return event.detail === 0 || !event.pointerType;\n}\n\n/**\n * Gets whether an event is a programmatic click (e.g. triggered by .click() or .dispatchEvent()).\n * Programmatic events are untrusted.\n */\nexport function isProgrammaticClick(event: Event): boolean {\n return !event.isTrusted;\n}\n\n/**\n * An event manager that is specialized for handling click events.\n *\n * This manager should ONLY be used to handle click events. It explicitly\n * filters out simulated click events generated by browsers when Enter or Space\n * keys are pressed, to avoid concurrent logic or overwriting selection state\n * when handling keyboard activation explicitly via KeyboardEventManager.\n */\nexport class ClickEventManager<T extends PointerEvent> extends EventManager<T> {\n options: EventHandlerOptions = {\n preventDefault: false,\n stopPropagation: false,\n };\n\n /**\n * Configures this event manager to handle events with a specific modifier combination.\n */\n on(modifiers: ModifierInputs, handler: EventHandler<T>): this;\n\n /**\n * Configures this event manager to handle events with no modifiers.\n *\n * @param handler The handler function\n */\n on(handler: EventHandler<T>): this;\n\n on(...args: unknown[]) {\n const {handler, modifiers} = this._normalizeInputs(...args);\n\n this.configs.push({\n handler,\n matcher: event => this._isMatch(event, modifiers),\n ...this.options,\n });\n return this;\n }\n\n private _normalizeInputs(...args: unknown[]) {\n if (args.length === 2) {\n return {\n modifiers: args[0] as ModifierInputs,\n handler: args[1] as EventHandler<T>,\n };\n }\n\n return {\n modifiers: Modifier.None,\n handler: args[0] as EventHandler<T>,\n };\n }\n\n _isMatch(event: T, modifiers: ModifierInputs) {\n const isAllowed = isProgrammaticClick(event) || !isFakeClick(event);\n return isAllowed && hasModifiers(event, modifiers);\n }\n}\n"],"names":["isFakeClick","event","detail","pointerType","isProgrammaticClick","isTrusted","ClickEventManager","EventManager","options","preventDefault","stopPropagation","on","args","handler","modifiers","_normalizeInputs","configs","push","matcher","_isMatch","length","Modifier","None","isAllowed","hasModifiers"],"mappings":";;AAwBM,SAAUA,WAAWA,CAACC,KAAmB,EAAA;EAC7C,OAAOA,KAAK,CAACC,MAAM,KAAK,CAAC,IAAI,CAACD,KAAK,CAACE,WAAW;AACjD;AAMM,SAAUC,mBAAmBA,CAACH,KAAY,EAAA;EAC9C,OAAO,CAACA,KAAK,CAACI,SAAS;AACzB;AAUM,MAAOC,iBAA0C,SAAQC,YAAe,CAAA;AAC5EC,EAAAA,OAAO,GAAwB;AAC7BC,IAAAA,cAAc,EAAE,KAAK;AACrBC,IAAAA,eAAe,EAAE;GAClB;EAcDC,EAAEA,CAAC,GAAGC,IAAe,EAAA;IACnB,MAAM;MAACC,OAAO;AAAEC,MAAAA;AAAS,KAAC,GAAG,IAAI,CAACC,gBAAgB,CAAC,GAAGH,IAAI,CAAC;AAE3D,IAAA,IAAI,CAACI,OAAO,CAACC,IAAI,CAAC;MAChBJ,OAAO;MACPK,OAAO,EAAEjB,KAAK,IAAI,IAAI,CAACkB,QAAQ,CAAClB,KAAK,EAAEa,SAAS,CAAC;AACjD,MAAA,GAAG,IAAI,CAACN;AACT,KAAA,CAAC;AACF,IAAA,OAAO,IAAI;AACb,EAAA;EAEQO,gBAAgBA,CAAC,GAAGH,IAAe,EAAA;AACzC,IAAA,IAAIA,IAAI,CAACQ,MAAM,KAAK,CAAC,EAAE;MACrB,OAAO;AACLN,QAAAA,SAAS,EAAEF,IAAI,CAAC,CAAC,CAAmB;QACpCC,OAAO,EAAED,IAAI,CAAC,CAAC;OAChB;AACH,IAAA;IAEA,OAAO;MACLE,SAAS,EAAEO,QAAQ,CAACC,IAAI;MACxBT,OAAO,EAAED,IAAI,CAAC,CAAC;KAChB;AACH,EAAA;AAEAO,EAAAA,QAAQA,CAAClB,KAAQ,EAAEa,SAAyB,EAAA;IAC1C,MAAMS,SAAS,GAAGnB,mBAAmB,CAACH,KAAK,CAAC,IAAI,CAACD,WAAW,CAACC,KAAK,CAAC;AACnE,IAAA,OAAOsB,SAAS,IAAIC,YAAY,CAACvB,KAAK,EAAEa,SAAS,CAAC;AACpD,EAAA;AACD;;;;"}
import { EventManager, EventHandlerOptions, ModifierInputs, EventHandler } from './_keyboard-event-manager-chunk.js';
/**
* An event manager that is specialized for handling click events.
*
* This manager should ONLY be used to handle click events. It explicitly
* filters out simulated click events generated by browsers when Enter or Space
* keys are pressed, to avoid concurrent logic or overwriting selection state
* when handling keyboard activation explicitly via KeyboardEventManager.
*/
declare class ClickEventManager<T extends PointerEvent> extends EventManager<T> {
options: EventHandlerOptions;
/**
* Configures this event manager to handle events with a specific modifier combination.
*/
on(modifiers: ModifierInputs, handler: EventHandler<T>): this;
/**
* Configures this event manager to handle events with no modifiers.
*
* @param handler The handler function
*/
on(handler: EventHandler<T>): this;
private _normalizeInputs;
_isMatch(event: T, modifiers: ModifierInputs): boolean;
}
export { ClickEventManager };
+3
-3

@@ -18,3 +18,3 @@ import { computed, signal, KeyboardEventManager } from './_signal-like-chunk.mjs';

isFocused = signal(false);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
expandKey = computed(() => this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight');

@@ -175,3 +175,3 @@ collapseKey = computed(() => this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft');

onFocusIn() {
if (this.inputs.alwaysExpanded() && !this.hasBeenFocused()) {
if (this.inputs.alwaysExpanded() && !this.hasBeenInteracted()) {
const firstSelectedItem = this.listControls()?.getSelectedItems()[0];

@@ -181,3 +181,3 @@ firstSelectedItem ? this.listControls()?.focus(firstSelectedItem) : this.first();

this.isFocused.set(true);
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
}

@@ -184,0 +184,0 @@ onFocusOut(event) {

@@ -1,1 +0,1 @@

{"version":3,"file":"_combobox-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/combobox/combobox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {\n computed,\n signal,\n SignalLike,\n WritableSignalLike,\n} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\n\n/** Represents the required inputs for a combobox. */\nexport interface ComboboxInputs<T extends ListItem<V>, V> {\n /** The controls for the popup associated with the combobox. */\n popupControls: SignalLike<\n ComboboxListboxControls<T, V> | ComboboxTreeControls<T, V> | ComboboxDialogPattern | undefined\n >;\n\n /** The HTML input element that serves as the combobox input. */\n inputEl: SignalLike<HTMLInputElement | undefined>;\n\n /** The HTML element that serves as the combobox container. */\n containerEl: SignalLike<HTMLElement | undefined>;\n\n /** The filtering mode for the combobox. */\n filterMode: SignalLike<'manual' | 'auto-select' | 'highlight'>;\n\n /** The current value of the combobox. */\n inputValue?: WritableSignalLike<string>;\n\n /** The value of the first matching item in the popup. */\n firstMatch: SignalLike<V | undefined>;\n\n /** Whether the combobox is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the combobox is read-only. */\n readonly: SignalLike<boolean>;\n\n /** Whether the combobox is in a right-to-left context. */\n textDirection: SignalLike<'rtl' | 'ltr'>;\n\n /** Whether the combobox is always expanded. */\n alwaysExpanded: SignalLike<boolean>;\n}\n\n/** An interface that allows combobox popups to expose the necessary controls for the combobox. */\nexport interface ComboboxListboxControls<T extends ListItem<V>, V> {\n /** A unique identifier for the popup. */\n id: () => string;\n\n /** The ARIA role for the popup. */\n role: SignalLike<'listbox' | 'tree' | 'grid'>;\n\n // TODO(wagnermaciel): Add validation that ensures only readonly comboboxes can have multi-select popups.\n\n /** Whether multiple items in the popup can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The ID of the active item in the popup. */\n activeId: SignalLike<string | undefined>;\n\n /** The list of items in the popup. */\n items: SignalLike<T[]>;\n\n /** Navigates to the given item in the popup. */\n focus: (item: T, opts?: {focusElement?: boolean}) => void;\n\n /** Navigates to the next item in the popup. */\n next: () => void;\n\n /** Navigates to the previous item in the popup. */\n prev: () => void;\n\n /** Navigates to the first item in the popup. */\n first: () => void;\n\n /** Navigates to the last item in the popup. */\n last: () => void;\n\n /** Selects the current item in the popup. */\n select: (item?: T) => void;\n\n /** Toggles the selection state of the given item in the popup. */\n toggle: (item?: T) => void;\n\n /** Clears the selection state of the popup. */\n clearSelection: () => void;\n\n /** Removes focus from any item in the popup. */\n unfocus: () => void;\n\n /** Returns the item corresponding to the given event. */\n getItem: (e: PointerEvent) => T | undefined;\n\n /** Returns the currently active (focused) item in the popup. */\n getActiveItem: () => T | undefined;\n\n /** Returns the currently selected items in the popup. */\n getSelectedItems: () => T[];\n\n /** Sets the value of the combobox based on the selected item. */\n setValue: (value: V | undefined) => void; // For re-setting the value if the popup was destroyed.\n}\n\nexport interface ComboboxTreeControls<T extends ListItem<V>, V> extends ComboboxListboxControls<\n T,\n V\n> {\n /** Whether the currently active item in the popup is collapsible. */\n isItemCollapsible: () => boolean;\n\n /** Expands the currently active item in the popup. */\n expandItem: () => void;\n\n /** Collapses the currently active item in the popup. */\n collapseItem: () => void;\n\n /** Checks if the currently active item in the popup is expandable. */\n isItemExpandable: (item?: T) => boolean;\n\n /** Expands all nodes in the tree. */\n expandAll: () => void;\n\n /** Collapses all nodes in the tree. */\n collapseAll: () => void;\n\n /** Toggles the expansion state of the currently active item in the popup. */\n toggleExpansion: (item?: T) => void;\n\n /** Whether the current active item is selectable. */\n isItemSelectable: (item?: T) => boolean;\n}\n\n/** Controls the state of a combobox. */\nexport class ComboboxPattern<T extends ListItem<V>, V> {\n /** Whether the combobox is expanded. */\n expanded = signal(false);\n\n /** Whether the combobox is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** The ID of the active item in the combobox. */\n activeDescendant = computed(() => {\n const popupControls = this.inputs.popupControls();\n if (popupControls instanceof ComboboxDialogPattern) {\n return null;\n }\n\n return popupControls?.activeId() ?? null;\n });\n\n /** The currently highlighted item in the combobox. */\n highlightedItem = signal<T | undefined>(undefined);\n\n /** Whether the most recent input event was a deletion. */\n isDeleting = false;\n\n /** Whether the combobox is focused. */\n isFocused = signal(false);\n\n /** Whether the combobox has ever been focused. */\n hasBeenFocused = signal(false);\n\n /** The key used to navigate to the previous item in the list. */\n expandKey = computed(() => (this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight'));\n\n /** The key used to navigate to the next item in the list. */\n collapseKey = computed(() =>\n this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft',\n );\n\n /** The ID of the popup associated with the combobox. */\n popupId = computed(() => this.inputs.popupControls()?.id() || null);\n\n /** The autocomplete behavior of the combobox. */\n autocomplete = computed(() => (this.inputs.filterMode() === 'highlight' ? 'both' : 'list'));\n\n /** The ARIA role of the popup associated with the combobox. */\n hasPopup = computed(() => this.inputs.popupControls()?.role() || null);\n\n /** Whether the combobox is read-only. */\n readonly = computed(() => this.inputs.readonly() || this.inputs.disabled() || null);\n\n /** Returns the listbox controls for the combobox. */\n listControls = () => {\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return null;\n }\n\n return popupControls;\n };\n\n /** Returns the tree controls for the combobox. */\n treeControls = () => {\n const popupControls = this.inputs.popupControls();\n\n if (popupControls?.role() === 'tree') {\n return popupControls as ComboboxTreeControls<T, V>;\n }\n\n return null;\n };\n\n /** The keydown event manager for the combobox. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n const popupControls = this.inputs.popupControls();\n\n if (!popupControls) {\n return manager;\n }\n\n if (popupControls instanceof ComboboxDialogPattern) {\n if (!this.expanded()) {\n manager.on('ArrowUp', () => this.open()).on('ArrowDown', () => this.open());\n\n if (this.readonly()) {\n manager.on('Enter', () => this.open()).on(' ', () => this.open());\n }\n }\n\n return manager;\n }\n\n if (!this.inputs.alwaysExpanded()) {\n manager.on('Escape', () => this.close({reset: !this.readonly()}));\n }\n\n if (!this.expanded()) {\n manager\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}));\n\n if (this.readonly()) {\n manager\n .on('Enter', () => this.open({selected: true}))\n .on(' ', () => this.open({selected: true}));\n }\n\n return manager;\n }\n\n manager\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\n if (this.readonly()) {\n manager.on(' ', () => this.select({commit: true, close: !popupControls.multi()}));\n }\n\n if (popupControls.role() === 'listbox') {\n manager.on('Enter', () => {\n this.select({commit: true, close: !popupControls.multi()});\n });\n }\n\n const treeControls = this.treeControls();\n\n if (treeControls?.isItemSelectable()) {\n manager.on('Enter', () => this.select({commit: true, close: true}));\n }\n\n if (treeControls?.isItemExpandable()) {\n manager\n .on(this.expandKey(), () => this.expandItem())\n .on(this.collapseKey(), () => this.collapseItem());\n\n if (!treeControls.isItemSelectable()) {\n manager.on('Enter', () => this.expandItem());\n }\n }\n\n if (treeControls?.isItemCollapsible()) {\n manager.on(this.collapseKey(), () => this.collapseItem());\n }\n\n return manager;\n });\n\n /** The click event manager for the combobox. */\n click = computed(() =>\n new PointerEventManager().on(e => {\n if (e.target === this.inputs.inputEl()) {\n if (this.readonly()) {\n this.expanded() ? this.close() : this.open({selected: true});\n }\n }\n\n const controls = this.inputs.popupControls();\n\n if (controls instanceof ComboboxDialogPattern) {\n return;\n }\n\n const item = controls?.getItem(e);\n\n if (item) {\n if (controls?.role() === 'tree') {\n const treeControls = controls as ComboboxTreeControls<T, V>;\n\n if (treeControls.isItemExpandable(item) && !treeControls.isItemSelectable(item)) {\n treeControls.toggleExpansion(item);\n this.inputs.inputEl()?.focus();\n return;\n }\n }\n\n this.select({item, commit: true, close: !controls?.multi()});\n this.inputs.inputEl()?.focus(); // Return focus to the input after selecting.\n }\n }),\n );\n\n constructor(readonly inputs: ComboboxInputs<T, V>) {}\n\n /** Handles keydown events for the combobox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles click events for the combobox. */\n onClick(event: MouseEvent) {\n if (!this.inputs.disabled()) {\n this.click().handle(event as PointerEvent);\n }\n }\n\n /** Handles input events for the combobox. */\n onInput(event: Event) {\n if (this.inputs.disabled() || this.inputs.readonly()) {\n return;\n }\n\n const inputEl = this.inputs.inputEl();\n\n if (!inputEl) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n this.open();\n this.inputs.inputValue?.set(inputEl.value);\n this.isDeleting = event instanceof InputEvent && !!event.inputType.match(/^delete/);\n\n if (this.inputs.filterMode() === 'highlight' && !this.isDeleting) {\n this.highlight();\n }\n }\n\n /** Handles focus in events for the combobox. */\n onFocusIn() {\n if (this.inputs.alwaysExpanded() && !this.hasBeenFocused()) {\n const firstSelectedItem = this.listControls()?.getSelectedItems()[0];\n firstSelectedItem ? this.listControls()?.focus(firstSelectedItem) : this.first();\n }\n\n this.isFocused.set(true);\n this.hasBeenFocused.set(true);\n }\n\n /** Handles focus out events for the combobox. */\n onFocusOut(event: FocusEvent) {\n if (this.inputs.disabled()) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n if (\n !(event.relatedTarget instanceof HTMLElement) ||\n !this.inputs.containerEl()?.contains(event.relatedTarget)\n ) {\n this.isFocused.set(false);\n\n if (!this.expanded()) {\n return;\n }\n\n if (this.readonly()) {\n this.close();\n return;\n }\n\n if (this.inputs.filterMode() !== 'manual') {\n this.commit();\n } else {\n const item = popupControls\n ?.items()\n .find(i => i.searchTerm() === this.inputs.inputEl()?.value);\n\n if (item) {\n this.select({item});\n }\n }\n\n this.close();\n }\n }\n\n /** The first matching item in the combobox. */\n firstMatch = computed(() => {\n // TODO(wagnermaciel): Consider whether we should not provide this default behavior for the\n // listbox. Instead, we may want to allow users to have no match so that typing does not focus\n // any option.\n if (this.listControls()?.role() === 'listbox') {\n return this.listControls()?.items()[0];\n }\n\n return this.listControls()\n ?.items()\n .find(i => i.value() === this.inputs.firstMatch());\n });\n\n /** Handles filtering logic for the combobox. */\n onFilter() {\n if (this.readonly()) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n // TODO(wagnermaciel)\n // When the user first interacts with the combobox, the popup will lazily render for the first\n // time. This is a simple way to detect this and avoid auto-focus & selection logic, but this\n // should probably be moved to the component layer instead.\n const isInitialRender = !this.inputs.inputValue?.().length && !this.isDeleting;\n\n if (isInitialRender) {\n return;\n }\n\n // Avoid refocusing the input if a filter event occurs after focus has left the combobox.\n if (!this.isFocused()) {\n return;\n }\n\n if (this.inputs.popupControls()?.role() === 'tree') {\n const treeControls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this.inputs.inputValue?.().length ? treeControls.expandAll() : treeControls.collapseAll();\n }\n\n const item = this.firstMatch();\n\n if (!item) {\n popupControls?.clearSelection();\n popupControls?.unfocus();\n return;\n }\n\n popupControls?.focus(item);\n\n if (this.inputs.filterMode() !== 'manual') {\n this.select({item});\n }\n\n if (this.inputs.filterMode() === 'highlight' && !this.isDeleting) {\n this.highlight();\n }\n }\n\n /** Highlights the currently selected item in the combobox. */\n highlight() {\n const inputEl = this.inputs.inputEl();\n const selectedItems = this.listControls()?.getSelectedItems();\n const item = selectedItems?.[0];\n\n if (!inputEl || !item) {\n return;\n }\n\n const isHighlightable = item\n .searchTerm()\n .toLowerCase()\n .startsWith(this.inputs.inputValue!().toLowerCase());\n\n if (isHighlightable) {\n inputEl.value =\n this.inputs.inputValue!() + item.searchTerm().slice(this.inputs.inputValue!().length);\n inputEl.setSelectionRange(this.inputs.inputValue!().length, item.searchTerm().length);\n this.highlightedItem.set(item);\n }\n }\n\n /** Closes the combobox. */\n close(opts?: {reset: boolean}) {\n const popupControls = this.inputs.popupControls();\n\n if (this.inputs.alwaysExpanded()) {\n return;\n }\n\n if (popupControls instanceof ComboboxDialogPattern) {\n this.expanded.set(false);\n return;\n }\n\n if (this.readonly()) {\n this.expanded.set(false);\n popupControls?.unfocus();\n return;\n }\n\n if (!opts?.reset) {\n if (this.inputs.filterMode() === 'manual') {\n if (\n !this.listControls()\n ?.items()\n .some(i => i.searchTerm() === this.inputs.inputEl()?.value)\n ) {\n this.listControls()?.clearSelection();\n }\n }\n\n this.expanded.set(false);\n popupControls?.unfocus();\n return;\n }\n\n if (!this.expanded()) {\n this.inputs.inputValue?.set('');\n popupControls?.clearSelection();\n\n const inputEl = this.inputs.inputEl();\n\n if (inputEl) {\n inputEl.value = '';\n }\n } else if (this.expanded()) {\n this.expanded.set(false);\n const selectedItem = popupControls?.getSelectedItems()?.[0];\n\n if (selectedItem?.searchTerm() !== this.inputs.inputValue!()) {\n popupControls?.clearSelection();\n }\n\n return;\n }\n\n this.close();\n\n if (!this.readonly()) {\n popupControls?.clearSelection();\n }\n }\n\n /** Opens the combobox. */\n open(nav?: {first?: boolean; last?: boolean; selected?: boolean}) {\n this.expanded.set(true);\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n const inputEl = this.inputs.inputEl();\n\n if (inputEl && this.inputs.filterMode() === 'highlight') {\n const isHighlighting = inputEl.selectionStart !== inputEl.value.length;\n this.inputs.inputValue?.set(inputEl.value.slice(0, inputEl.selectionStart || 0));\n if (!isHighlighting) {\n this.highlightedItem.set(undefined);\n }\n }\n\n if (nav?.first) {\n this.first();\n }\n if (nav?.last) {\n this.last();\n }\n if (nav?.selected) {\n const selectedItem = popupControls\n ?.items()\n .find(i => popupControls?.getSelectedItems().includes(i));\n\n if (selectedItem) {\n popupControls?.focus(selectedItem);\n }\n }\n }\n\n /** Navigates to the next focusable item in the combobox popup. */\n next() {\n this._navigate(() => this.listControls()?.next());\n }\n\n /** Navigates to the previous focusable item in the combobox popup. */\n prev() {\n this._navigate(() => this.listControls()?.prev());\n }\n\n /** Navigates to the first focusable item in the combobox popup. */\n first() {\n this._navigate(() => this.listControls()?.first());\n }\n\n /** Navigates to the last focusable item in the combobox popup. */\n last() {\n this._navigate(() => this.listControls()?.last());\n }\n\n /** Collapses the currently focused item in the combobox. */\n collapseItem() {\n const controls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this._navigate(() => controls?.collapseItem());\n }\n\n /** Expands the currently focused item in the combobox. */\n expandItem() {\n const controls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this._navigate(() => controls?.expandItem());\n }\n\n /** Selects an item in the combobox popup. */\n select(opts: {item?: T; commit?: boolean; close?: boolean} = {}) {\n const controls = this.listControls();\n\n // When no item is specified (e.g. on keyboard toggle), get the active item instead.\n // Note: this is only necessary for disabled check, as select/toggle will check active item too.\n const item = opts.item ?? controls?.getActiveItem();\n\n // Check if item is disabled before proceeding.\n if (item?.disabled()) {\n return;\n }\n\n if (opts.item) {\n controls?.focus(opts.item, {focusElement: false});\n }\n\n controls?.multi() ? controls.toggle(opts.item) : controls?.select(opts.item);\n\n if (opts.commit) {\n this.commit();\n }\n if (opts.close) {\n this.close();\n }\n }\n\n /** Updates the value of the input based on the currently selected item. */\n commit() {\n const inputEl = this.inputs.inputEl();\n const selectedItems = this.listControls()?.getSelectedItems();\n\n if (!inputEl) {\n return;\n }\n\n inputEl.value = selectedItems?.map(i => i.searchTerm()).join(', ') || '';\n this.inputs.inputValue?.set(inputEl.value);\n\n if (this.inputs.filterMode() === 'highlight' && !this.readonly()) {\n const length = inputEl.value.length;\n inputEl.setSelectionRange(length, length);\n }\n }\n\n /** Navigates and handles additional actions based on filter mode. */\n private _navigate(operation: () => void) {\n operation();\n\n if (this.inputs.filterMode() !== 'manual') {\n this.select();\n }\n\n if (this.inputs.filterMode() === 'highlight') {\n // This is to handle when the user navigates back to the originally highlighted item.\n // E.g. User types \"Al\", highlights \"Alice\", then navigates down and back up to \"Alice\".\n const selectedItem = this.listControls()?.getSelectedItems()[0];\n\n if (!selectedItem) {\n return;\n }\n\n if (selectedItem === this.highlightedItem()) {\n this.highlight();\n } else {\n const inputEl = this.inputs.inputEl()!;\n inputEl.value = selectedItem?.searchTerm()!;\n }\n }\n }\n}\n\nexport class ComboboxDialogPattern {\n id = () => this.inputs.id();\n\n role = () => 'dialog' as const;\n\n keydown = computed(() => {\n return new KeyboardEventManager().on('Escape', () => this.inputs.combobox.close());\n });\n\n constructor(\n readonly inputs: {\n combobox: ComboboxPattern<any, any>;\n element: SignalLike<HTMLDialogElement>;\n id: SignalLike<string>;\n },\n ) {}\n\n onKeydown(event: KeyboardEvent) {\n this.keydown().handle(event);\n }\n\n onClick(event: MouseEvent) {\n // The \"click\" event fires on the dialog when the user clicks outside of the dialog content.\n if (event.target === this.inputs.element()) {\n this.inputs.combobox.close();\n }\n }\n}\n"],"names":["ComboboxPattern","inputs","expanded","signal","disabled","activeDescendant","computed","popupControls","ComboboxDialogPattern","activeId","highlightedItem","undefined","isDeleting","isFocused","hasBeenFocused","expandKey","textDirection","collapseKey","popupId","id","autocomplete","filterMode","hasPopup","role","readonly","listControls","treeControls","keydown","manager","KeyboardEventManager","on","open","alwaysExpanded","close","reset","first","last","selected","next","ignoreRepeat","prev","select","commit","multi","isItemSelectable","isItemExpandable","expandItem","collapseItem","isItemCollapsible","click","PointerEventManager","e","target","inputEl","controls","item","getItem","toggleExpansion","focus","constructor","onKeydown","event","handle","onClick","onInput","inputValue","set","value","InputEvent","inputType","match","highlight","onFocusIn","firstSelectedItem","getSelectedItems","onFocusOut","relatedTarget","HTMLElement","containerEl","contains","items","find","i","searchTerm","firstMatch","onFilter","isInitialRender","length","expandAll","collapseAll","clearSelection","unfocus","selectedItems","isHighlightable","toLowerCase","startsWith","slice","setSelectionRange","opts","some","selectedItem","nav","isHighlighting","selectionStart","includes","_navigate","getActiveItem","focusElement","toggle","map","join","operation","combobox","element"],"mappings":"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"}
{"version":3,"file":"_combobox-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/combobox/combobox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {\n computed,\n signal,\n SignalLike,\n WritableSignalLike,\n} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\n\n/** Represents the required inputs for a combobox. */\nexport interface ComboboxInputs<T extends ListItem<V>, V> {\n /** The controls for the popup associated with the combobox. */\n popupControls: SignalLike<\n ComboboxListboxControls<T, V> | ComboboxTreeControls<T, V> | ComboboxDialogPattern | undefined\n >;\n\n /** The HTML input element that serves as the combobox input. */\n inputEl: SignalLike<HTMLInputElement | undefined>;\n\n /** The HTML element that serves as the combobox container. */\n containerEl: SignalLike<HTMLElement | undefined>;\n\n /** The filtering mode for the combobox. */\n filterMode: SignalLike<'manual' | 'auto-select' | 'highlight'>;\n\n /** The current value of the combobox. */\n inputValue?: WritableSignalLike<string>;\n\n /** The value of the first matching item in the popup. */\n firstMatch: SignalLike<V | undefined>;\n\n /** Whether the combobox is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the combobox is read-only. */\n readonly: SignalLike<boolean>;\n\n /** Whether the combobox is in a right-to-left context. */\n textDirection: SignalLike<'rtl' | 'ltr'>;\n\n /** Whether the combobox is always expanded. */\n alwaysExpanded: SignalLike<boolean>;\n}\n\n/** An interface that allows combobox popups to expose the necessary controls for the combobox. */\nexport interface ComboboxListboxControls<T extends ListItem<V>, V> {\n /** A unique identifier for the popup. */\n id: () => string;\n\n /** The ARIA role for the popup. */\n role: SignalLike<'listbox' | 'tree' | 'grid'>;\n\n // TODO(wagnermaciel): Add validation that ensures only readonly comboboxes can have multi-select popups.\n\n /** Whether multiple items in the popup can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The ID of the active item in the popup. */\n activeId: SignalLike<string | undefined>;\n\n /** The list of items in the popup. */\n items: SignalLike<T[]>;\n\n /** Navigates to the given item in the popup. */\n focus: (item: T, opts?: {focusElement?: boolean}) => void;\n\n /** Navigates to the next item in the popup. */\n next: () => void;\n\n /** Navigates to the previous item in the popup. */\n prev: () => void;\n\n /** Navigates to the first item in the popup. */\n first: () => void;\n\n /** Navigates to the last item in the popup. */\n last: () => void;\n\n /** Selects the current item in the popup. */\n select: (item?: T) => void;\n\n /** Toggles the selection state of the given item in the popup. */\n toggle: (item?: T) => void;\n\n /** Clears the selection state of the popup. */\n clearSelection: () => void;\n\n /** Removes focus from any item in the popup. */\n unfocus: () => void;\n\n /** Returns the item corresponding to the given event. */\n getItem: (e: PointerEvent) => T | undefined;\n\n /** Returns the currently active (focused) item in the popup. */\n getActiveItem: () => T | undefined;\n\n /** Returns the currently selected items in the popup. */\n getSelectedItems: () => T[];\n\n /** Sets the value of the combobox based on the selected item. */\n setValue: (value: V | undefined) => void; // For re-setting the value if the popup was destroyed.\n}\n\nexport interface ComboboxTreeControls<T extends ListItem<V>, V> extends ComboboxListboxControls<\n T,\n V\n> {\n /** Whether the currently active item in the popup is collapsible. */\n isItemCollapsible: () => boolean;\n\n /** Expands the currently active item in the popup. */\n expandItem: () => void;\n\n /** Collapses the currently active item in the popup. */\n collapseItem: () => void;\n\n /** Checks if the currently active item in the popup is expandable. */\n isItemExpandable: (item?: T) => boolean;\n\n /** Expands all nodes in the tree. */\n expandAll: () => void;\n\n /** Collapses all nodes in the tree. */\n collapseAll: () => void;\n\n /** Toggles the expansion state of the currently active item in the popup. */\n toggleExpansion: (item?: T) => void;\n\n /** Whether the current active item is selectable. */\n isItemSelectable: (item?: T) => boolean;\n}\n\n/** Controls the state of a combobox. */\nexport class ComboboxPattern<T extends ListItem<V>, V> {\n /** Whether the combobox is expanded. */\n expanded = signal(false);\n\n /** Whether the combobox is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** The ID of the active item in the combobox. */\n activeDescendant = computed(() => {\n const popupControls = this.inputs.popupControls();\n if (popupControls instanceof ComboboxDialogPattern) {\n return null;\n }\n\n return popupControls?.activeId() ?? null;\n });\n\n /** The currently highlighted item in the combobox. */\n highlightedItem = signal<T | undefined>(undefined);\n\n /** Whether the most recent input event was a deletion. */\n isDeleting = false;\n\n /** Whether the combobox is focused. */\n isFocused = signal(false);\n\n /** Whether the combobox has ever been focused. */\n hasBeenInteracted = signal(false);\n\n /** The key used to navigate to the previous item in the list. */\n expandKey = computed(() => (this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight'));\n\n /** The key used to navigate to the next item in the list. */\n collapseKey = computed(() =>\n this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft',\n );\n\n /** The ID of the popup associated with the combobox. */\n popupId = computed(() => this.inputs.popupControls()?.id() || null);\n\n /** The autocomplete behavior of the combobox. */\n autocomplete = computed(() => (this.inputs.filterMode() === 'highlight' ? 'both' : 'list'));\n\n /** The ARIA role of the popup associated with the combobox. */\n hasPopup = computed(() => this.inputs.popupControls()?.role() || null);\n\n /** Whether the combobox is read-only. */\n readonly = computed(() => this.inputs.readonly() || this.inputs.disabled() || null);\n\n /** Returns the listbox controls for the combobox. */\n listControls = () => {\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return null;\n }\n\n return popupControls;\n };\n\n /** Returns the tree controls for the combobox. */\n treeControls = () => {\n const popupControls = this.inputs.popupControls();\n\n if (popupControls?.role() === 'tree') {\n return popupControls as ComboboxTreeControls<T, V>;\n }\n\n return null;\n };\n\n /** The keydown event manager for the combobox. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n const popupControls = this.inputs.popupControls();\n\n if (!popupControls) {\n return manager;\n }\n\n if (popupControls instanceof ComboboxDialogPattern) {\n if (!this.expanded()) {\n manager.on('ArrowUp', () => this.open()).on('ArrowDown', () => this.open());\n\n if (this.readonly()) {\n manager.on('Enter', () => this.open()).on(' ', () => this.open());\n }\n }\n\n return manager;\n }\n\n if (!this.inputs.alwaysExpanded()) {\n manager.on('Escape', () => this.close({reset: !this.readonly()}));\n }\n\n if (!this.expanded()) {\n manager\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}));\n\n if (this.readonly()) {\n manager\n .on('Enter', () => this.open({selected: true}))\n .on(' ', () => this.open({selected: true}));\n }\n\n return manager;\n }\n\n manager\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\n if (this.readonly()) {\n manager.on(' ', () => this.select({commit: true, close: !popupControls.multi()}));\n }\n\n if (popupControls.role() === 'listbox') {\n manager.on('Enter', () => {\n this.select({commit: true, close: !popupControls.multi()});\n });\n }\n\n const treeControls = this.treeControls();\n\n if (treeControls?.isItemSelectable()) {\n manager.on('Enter', () => this.select({commit: true, close: true}));\n }\n\n if (treeControls?.isItemExpandable()) {\n manager\n .on(this.expandKey(), () => this.expandItem())\n .on(this.collapseKey(), () => this.collapseItem());\n\n if (!treeControls.isItemSelectable()) {\n manager.on('Enter', () => this.expandItem());\n }\n }\n\n if (treeControls?.isItemCollapsible()) {\n manager.on(this.collapseKey(), () => this.collapseItem());\n }\n\n return manager;\n });\n\n /** The click event manager for the combobox. */\n click = computed(() =>\n new PointerEventManager().on(e => {\n if (e.target === this.inputs.inputEl()) {\n if (this.readonly()) {\n this.expanded() ? this.close() : this.open({selected: true});\n }\n }\n\n const controls = this.inputs.popupControls();\n\n if (controls instanceof ComboboxDialogPattern) {\n return;\n }\n\n const item = controls?.getItem(e);\n\n if (item) {\n if (controls?.role() === 'tree') {\n const treeControls = controls as ComboboxTreeControls<T, V>;\n\n if (treeControls.isItemExpandable(item) && !treeControls.isItemSelectable(item)) {\n treeControls.toggleExpansion(item);\n this.inputs.inputEl()?.focus();\n return;\n }\n }\n\n this.select({item, commit: true, close: !controls?.multi()});\n this.inputs.inputEl()?.focus(); // Return focus to the input after selecting.\n }\n }),\n );\n\n constructor(readonly inputs: ComboboxInputs<T, V>) {}\n\n /** Handles keydown events for the combobox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles click events for the combobox. */\n onClick(event: MouseEvent) {\n if (!this.inputs.disabled()) {\n this.click().handle(event as PointerEvent);\n }\n }\n\n /** Handles input events for the combobox. */\n onInput(event: Event) {\n if (this.inputs.disabled() || this.inputs.readonly()) {\n return;\n }\n\n const inputEl = this.inputs.inputEl();\n\n if (!inputEl) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n this.open();\n this.inputs.inputValue?.set(inputEl.value);\n this.isDeleting = event instanceof InputEvent && !!event.inputType.match(/^delete/);\n\n if (this.inputs.filterMode() === 'highlight' && !this.isDeleting) {\n this.highlight();\n }\n }\n\n /** Handles focus in events for the combobox. */\n onFocusIn() {\n if (this.inputs.alwaysExpanded() && !this.hasBeenInteracted()) {\n const firstSelectedItem = this.listControls()?.getSelectedItems()[0];\n firstSelectedItem ? this.listControls()?.focus(firstSelectedItem) : this.first();\n }\n\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focus out events for the combobox. */\n onFocusOut(event: FocusEvent) {\n if (this.inputs.disabled()) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n if (\n !(event.relatedTarget instanceof HTMLElement) ||\n !this.inputs.containerEl()?.contains(event.relatedTarget)\n ) {\n this.isFocused.set(false);\n\n if (!this.expanded()) {\n return;\n }\n\n if (this.readonly()) {\n this.close();\n return;\n }\n\n if (this.inputs.filterMode() !== 'manual') {\n this.commit();\n } else {\n const item = popupControls\n ?.items()\n .find(i => i.searchTerm() === this.inputs.inputEl()?.value);\n\n if (item) {\n this.select({item});\n }\n }\n\n this.close();\n }\n }\n\n /** The first matching item in the combobox. */\n firstMatch = computed(() => {\n // TODO(wagnermaciel): Consider whether we should not provide this default behavior for the\n // listbox. Instead, we may want to allow users to have no match so that typing does not focus\n // any option.\n if (this.listControls()?.role() === 'listbox') {\n return this.listControls()?.items()[0];\n }\n\n return this.listControls()\n ?.items()\n .find(i => i.value() === this.inputs.firstMatch());\n });\n\n /** Handles filtering logic for the combobox. */\n onFilter() {\n if (this.readonly()) {\n return;\n }\n\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n // TODO(wagnermaciel)\n // When the user first interacts with the combobox, the popup will lazily render for the first\n // time. This is a simple way to detect this and avoid auto-focus & selection logic, but this\n // should probably be moved to the component layer instead.\n const isInitialRender = !this.inputs.inputValue?.().length && !this.isDeleting;\n\n if (isInitialRender) {\n return;\n }\n\n // Avoid refocusing the input if a filter event occurs after focus has left the combobox.\n if (!this.isFocused()) {\n return;\n }\n\n if (this.inputs.popupControls()?.role() === 'tree') {\n const treeControls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this.inputs.inputValue?.().length ? treeControls.expandAll() : treeControls.collapseAll();\n }\n\n const item = this.firstMatch();\n\n if (!item) {\n popupControls?.clearSelection();\n popupControls?.unfocus();\n return;\n }\n\n popupControls?.focus(item);\n\n if (this.inputs.filterMode() !== 'manual') {\n this.select({item});\n }\n\n if (this.inputs.filterMode() === 'highlight' && !this.isDeleting) {\n this.highlight();\n }\n }\n\n /** Highlights the currently selected item in the combobox. */\n highlight() {\n const inputEl = this.inputs.inputEl();\n const selectedItems = this.listControls()?.getSelectedItems();\n const item = selectedItems?.[0];\n\n if (!inputEl || !item) {\n return;\n }\n\n const isHighlightable = item\n .searchTerm()\n .toLowerCase()\n .startsWith(this.inputs.inputValue!().toLowerCase());\n\n if (isHighlightable) {\n inputEl.value =\n this.inputs.inputValue!() + item.searchTerm().slice(this.inputs.inputValue!().length);\n inputEl.setSelectionRange(this.inputs.inputValue!().length, item.searchTerm().length);\n this.highlightedItem.set(item);\n }\n }\n\n /** Closes the combobox. */\n close(opts?: {reset: boolean}) {\n const popupControls = this.inputs.popupControls();\n\n if (this.inputs.alwaysExpanded()) {\n return;\n }\n\n if (popupControls instanceof ComboboxDialogPattern) {\n this.expanded.set(false);\n return;\n }\n\n if (this.readonly()) {\n this.expanded.set(false);\n popupControls?.unfocus();\n return;\n }\n\n if (!opts?.reset) {\n if (this.inputs.filterMode() === 'manual') {\n if (\n !this.listControls()\n ?.items()\n .some(i => i.searchTerm() === this.inputs.inputEl()?.value)\n ) {\n this.listControls()?.clearSelection();\n }\n }\n\n this.expanded.set(false);\n popupControls?.unfocus();\n return;\n }\n\n if (!this.expanded()) {\n this.inputs.inputValue?.set('');\n popupControls?.clearSelection();\n\n const inputEl = this.inputs.inputEl();\n\n if (inputEl) {\n inputEl.value = '';\n }\n } else if (this.expanded()) {\n this.expanded.set(false);\n const selectedItem = popupControls?.getSelectedItems()?.[0];\n\n if (selectedItem?.searchTerm() !== this.inputs.inputValue!()) {\n popupControls?.clearSelection();\n }\n\n return;\n }\n\n this.close();\n\n if (!this.readonly()) {\n popupControls?.clearSelection();\n }\n }\n\n /** Opens the combobox. */\n open(nav?: {first?: boolean; last?: boolean; selected?: boolean}) {\n this.expanded.set(true);\n const popupControls = this.inputs.popupControls();\n\n if (popupControls instanceof ComboboxDialogPattern) {\n return;\n }\n\n const inputEl = this.inputs.inputEl();\n\n if (inputEl && this.inputs.filterMode() === 'highlight') {\n const isHighlighting = inputEl.selectionStart !== inputEl.value.length;\n this.inputs.inputValue?.set(inputEl.value.slice(0, inputEl.selectionStart || 0));\n if (!isHighlighting) {\n this.highlightedItem.set(undefined);\n }\n }\n\n if (nav?.first) {\n this.first();\n }\n if (nav?.last) {\n this.last();\n }\n if (nav?.selected) {\n const selectedItem = popupControls\n ?.items()\n .find(i => popupControls?.getSelectedItems().includes(i));\n\n if (selectedItem) {\n popupControls?.focus(selectedItem);\n }\n }\n }\n\n /** Navigates to the next focusable item in the combobox popup. */\n next() {\n this._navigate(() => this.listControls()?.next());\n }\n\n /** Navigates to the previous focusable item in the combobox popup. */\n prev() {\n this._navigate(() => this.listControls()?.prev());\n }\n\n /** Navigates to the first focusable item in the combobox popup. */\n first() {\n this._navigate(() => this.listControls()?.first());\n }\n\n /** Navigates to the last focusable item in the combobox popup. */\n last() {\n this._navigate(() => this.listControls()?.last());\n }\n\n /** Collapses the currently focused item in the combobox. */\n collapseItem() {\n const controls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this._navigate(() => controls?.collapseItem());\n }\n\n /** Expands the currently focused item in the combobox. */\n expandItem() {\n const controls = this.inputs.popupControls() as ComboboxTreeControls<T, V>;\n this._navigate(() => controls?.expandItem());\n }\n\n /** Selects an item in the combobox popup. */\n select(opts: {item?: T; commit?: boolean; close?: boolean} = {}) {\n const controls = this.listControls();\n\n // When no item is specified (e.g. on keyboard toggle), get the active item instead.\n // Note: this is only necessary for disabled check, as select/toggle will check active item too.\n const item = opts.item ?? controls?.getActiveItem();\n\n // Check if item is disabled before proceeding.\n if (item?.disabled()) {\n return;\n }\n\n if (opts.item) {\n controls?.focus(opts.item, {focusElement: false});\n }\n\n controls?.multi() ? controls.toggle(opts.item) : controls?.select(opts.item);\n\n if (opts.commit) {\n this.commit();\n }\n if (opts.close) {\n this.close();\n }\n }\n\n /** Updates the value of the input based on the currently selected item. */\n commit() {\n const inputEl = this.inputs.inputEl();\n const selectedItems = this.listControls()?.getSelectedItems();\n\n if (!inputEl) {\n return;\n }\n\n inputEl.value = selectedItems?.map(i => i.searchTerm()).join(', ') || '';\n this.inputs.inputValue?.set(inputEl.value);\n\n if (this.inputs.filterMode() === 'highlight' && !this.readonly()) {\n const length = inputEl.value.length;\n inputEl.setSelectionRange(length, length);\n }\n }\n\n /** Navigates and handles additional actions based on filter mode. */\n private _navigate(operation: () => void) {\n operation();\n\n if (this.inputs.filterMode() !== 'manual') {\n this.select();\n }\n\n if (this.inputs.filterMode() === 'highlight') {\n // This is to handle when the user navigates back to the originally highlighted item.\n // E.g. User types \"Al\", highlights \"Alice\", then navigates down and back up to \"Alice\".\n const selectedItem = this.listControls()?.getSelectedItems()[0];\n\n if (!selectedItem) {\n return;\n }\n\n if (selectedItem === this.highlightedItem()) {\n this.highlight();\n } else {\n const inputEl = this.inputs.inputEl()!;\n inputEl.value = selectedItem?.searchTerm()!;\n }\n }\n }\n}\n\nexport class ComboboxDialogPattern {\n id = () => this.inputs.id();\n\n role = () => 'dialog' as const;\n\n keydown = computed(() => {\n return new KeyboardEventManager().on('Escape', () => this.inputs.combobox.close());\n });\n\n constructor(\n readonly inputs: {\n combobox: ComboboxPattern<any, any>;\n element: SignalLike<HTMLDialogElement>;\n id: SignalLike<string>;\n },\n ) {}\n\n onKeydown(event: KeyboardEvent) {\n this.keydown().handle(event);\n }\n\n onClick(event: MouseEvent) {\n // The \"click\" event fires on the dialog when the user clicks outside of the dialog content.\n if (event.target === this.inputs.element()) {\n this.inputs.combobox.close();\n }\n }\n}\n"],"names":["ComboboxPattern","inputs","expanded","signal","disabled","activeDescendant","computed","popupControls","ComboboxDialogPattern","activeId","highlightedItem","undefined","isDeleting","isFocused","hasBeenInteracted","expandKey","textDirection","collapseKey","popupId","id","autocomplete","filterMode","hasPopup","role","readonly","listControls","treeControls","keydown","manager","KeyboardEventManager","on","open","alwaysExpanded","close","reset","first","last","selected","next","ignoreRepeat","prev","select","commit","multi","isItemSelectable","isItemExpandable","expandItem","collapseItem","isItemCollapsible","click","PointerEventManager","e","target","inputEl","controls","item","getItem","toggleExpansion","focus","constructor","onKeydown","event","handle","onClick","onInput","inputValue","set","value","InputEvent","inputType","match","highlight","onFocusIn","firstSelectedItem","getSelectedItems","onFocusOut","relatedTarget","HTMLElement","containerEl","contains","items","find","i","searchTerm","firstMatch","onFilter","isInitialRender","length","expandAll","collapseAll","clearSelection","unfocus","selectedItems","isHighlightable","toLowerCase","startsWith","slice","setSelectionRange","opts","some","selectedItem","nav","isHighlighting","selectionStart","includes","_navigate","getActiveItem","focusElement","toggle","map","join","operation","combobox","element"],"mappings":"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"}

@@ -1,4 +0,4 @@

import { computed, signal, KeyboardEventManager, Modifier } from './_signal-like-chunk.mjs';
import { signal, computed, KeyboardEventManager, Modifier } from './_signal-like-chunk.mjs';
import { ClickEventManager } from './_click-event-manager-chunk.mjs';
import { List } from './_list-chunk.mjs';
import { PointerEventManager } from './_pointer-event-manager-chunk.mjs';

@@ -8,2 +8,3 @@ class ListboxPattern {

listBehavior;
hasBeenInteracted = signal(false);
orientation;

@@ -107,4 +108,4 @@ disabled = computed(() => this.listBehavior.disabled());

});
pointerdown = computed(() => {
const manager = new PointerEventManager();
clickManager = computed(() => {
const manager = new ClickEventManager();
if (this.readonly()) {

@@ -158,10 +159,15 @@ return manager.on(e => this.listBehavior.goto(this._getItem(e)));

if (!this.disabled()) {
this.hasBeenInteracted.set(true);
this.keydown().handle(event);
}
}
onPointerdown(event) {
onClick(event) {
if (!this.disabled()) {
this.pointerdown().handle(event);
this.hasBeenInteracted.set(true);
this.clickManager().handle(event);
}
}
onFocusIn() {
this.hasBeenInteracted.set(true);
}
setDefaultState() {

@@ -184,2 +190,6 @@ let firstItem = null;

}
setDefaultStateEffect() {
if (this.hasBeenInteracted()) return;
this.setDefaultState();
}
_getItem(e) {

@@ -235,3 +245,3 @@ if (!(e.target instanceof HTMLElement)) {

onKeydown(_) {}
onPointerdown(_) {}
onClick(_) {}
setDefaultState() {}

@@ -238,0 +248,0 @@ focus = (item, opts) => {

@@ -1,1 +0,1 @@

{"version":3,"file":"_combobox-listbox-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/combobox-listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OptionPattern} from './option';\nimport {KeyboardEventManager, PointerEventManager, Modifier} from '../behaviors/event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs} from '../behaviors/list/list';\n\n/** Represents the required inputs for a listbox. */\nexport type ListboxInputs<V> = ListInputs<OptionPattern<V>, V> & {\n /** A unique identifier for the listbox. */\n id: SignalLike<string>;\n\n /** Whether the listbox is readonly. */\n readonly: SignalLike<boolean>;\n};\n\n/** Controls the state of a listbox. */\nexport class ListboxPattern<V> {\n listBehavior: List<OptionPattern<V>, V>;\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the listbox is disabled. */\n disabled = computed(() => this.listBehavior.disabled());\n\n /** Whether the listbox is readonly. */\n readonly: SignalLike<boolean>;\n\n /** The tab index of the listbox. */\n tabIndex: SignalLike<-1 | 0> = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active item. */\n activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** Whether multiple items in the list can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The number of items in the listbox. */\n setsize = computed(() => this.inputs.items().length);\n\n /** Whether the listbox selection follows focus. */\n followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** Whether the listbox should wrap. Used to disable wrapping while range selecting. */\n wrap = signal(true);\n\n /** The key used to navigate to the previous item in the list. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next item in the list. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** The keydown event manager for the listbox. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n }\n\n if (!this.followFocus()) {\n manager\n .on(this.prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n }\n\n if (this.followFocus()) {\n manager\n .on(this.prevKey, () => this.listBehavior.prev({selectOne: true}), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next({selectOne: true}), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first({selectOne: true}))\n .on('End', () => this.listBehavior.last({selectOne: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key, {selectOne: true}));\n }\n\n if (this.inputs.multi()) {\n manager\n .on(Modifier.Any, 'Shift', () => this.listBehavior.anchor(this.listBehavior.activeIndex()))\n .on(Modifier.Shift, this.prevKey, () => this.listBehavior.prev({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on(Modifier.Shift, this.nextKey, () => this.listBehavior.next({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () =>\n this.listBehavior.first({selectRange: true, anchor: false}),\n )\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () =>\n this.listBehavior.last({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, 'Enter', () =>\n this.listBehavior.updateSelection({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, this.dynamicSpaceKey, () =>\n this.listBehavior.updateSelection({selectRange: true, anchor: false}),\n );\n }\n\n if (!this.followFocus() && this.inputs.multi()) {\n manager\n .on(this.dynamicSpaceKey, () => this.listBehavior.toggle())\n .on('Enter', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => this.listBehavior.toggleAll());\n }\n\n if (!this.followFocus() && !this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => this.listBehavior.toggleOne());\n manager.on('Enter', () => this.listBehavior.toggleOne());\n }\n\n if (this.inputs.multi() && this.followFocus()) {\n manager\n .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => this.listBehavior.prev(), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => this.listBehavior.next(), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl, Modifier.Meta], ' ', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => this.listBehavior.first())\n .on([Modifier.Ctrl, Modifier.Meta], 'End', () => this.listBehavior.last())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => {\n this.listBehavior.toggleAll();\n this.listBehavior.select(); // Ensure the currect option remains selected.\n });\n }\n\n return manager;\n });\n\n /** The pointerdown event manager for the listbox. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n if (this.readonly()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!));\n }\n\n if (this.multi()) {\n manager.on(Modifier.Shift, e =>\n this.listBehavior.goto(this._getItem(e)!, {selectRange: true}),\n );\n }\n\n if (!this.multi() && this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}));\n }\n\n if (!this.multi() && !this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n if (this.multi() && this.followFocus()) {\n return manager\n .on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}))\n .on(Modifier.Ctrl, e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n if (this.multi() && !this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n return manager;\n });\n\n constructor(readonly inputs: ListboxInputs<V>) {\n this.readonly = inputs.readonly;\n this.orientation = inputs.orientation;\n this.multi = inputs.multi;\n this.listBehavior = new List(inputs);\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n if (!this.inputs.multi() && this.inputs.value().length > 1) {\n violations.push(\n `A single-select listbox should not have multiple selected options. Selected options: ${this.inputs.value().join(', ')}`,\n );\n }\n\n return violations;\n }\n\n /** Handles keydown events for the listbox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /**\n * Sets the listbox to it's default initial state.\n *\n * Sets the active index of the listbox to the first focusable selected\n * item if one exists. Otherwise, sets focus to the first focusable item.\n *\n * This method should be called once the listbox and it's options are properly initialized,\n * meaning the ListboxPattern and OptionPatterns should have references to each other before this\n * is called.\n */\n setDefaultState() {\n let firstItem: OptionPattern<V> | null = null;\n\n for (const item of this.inputs.items()) {\n if (this.listBehavior.isFocusable(item)) {\n if (!firstItem) {\n firstItem = item;\n }\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n }\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n protected _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"option\"]');\n return this.inputs.items().find(i => i.element() === element);\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 {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/**\n * Represents the properties exposed by a listbox that need to be accessed by an option.\n * This exists to avoid circular dependency errors between the listbox and option.\n */\ninterface ListboxPattern<V> {\n inputs: ListInputs<OptionPattern<V>, V>;\n listBehavior: List<OptionPattern<V>, V>;\n}\n\n/** Represents the required inputs for an option in a listbox. */\nexport interface OptionInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n}\n\n/** Represents an option in a listbox. */\nexport class OptionPattern<V> {\n /** A unique identifier for the option. */\n id: SignalLike<string>;\n\n /** The value of the option. */\n value: SignalLike<V>;\n\n /** The position of the option in the list. */\n index = computed(() => this.listbox()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the option is active. */\n active = computed(() => this.listbox()?.inputs.activeItem() === this);\n\n /** Whether the option is selected. */\n selected = computed(() => this.listbox()?.inputs.value().includes(this.value()));\n\n /** Whether the option is selectable. */\n selectable = () => true;\n\n /** Whether the option is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The text used by the typeahead search. */\n searchTerm: SignalLike<string>;\n\n /** A reference to the parent listbox. */\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n\n /** The tab index of the option. */\n tabIndex = computed(() => this.listbox()?.listBehavior.getItemTabindex(this));\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement | undefined>;\n\n constructor(args: OptionInputs<V>) {\n this.id = args.id;\n this.value = args.value;\n this.listbox = args.listbox;\n this.element = args.element;\n this.disabled = args.disabled;\n this.searchTerm = args.searchTerm;\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 {ListboxInputs, ListboxPattern} from './listbox';\nimport {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {OptionPattern} from './option';\nimport {ComboboxPattern, ComboboxListboxControls} from '../combobox/combobox';\n\nexport type ComboboxListboxInputs<V> = ListboxInputs<V> & {\n /** The combobox controlling the listbox. */\n combobox: SignalLike<ComboboxPattern<OptionPattern<V>, V> | undefined>;\n};\n\nexport class ComboboxListboxPattern<V>\n extends ListboxPattern<V>\n implements ComboboxListboxControls<OptionPattern<V>, V>\n{\n /** A unique identifier for the popup. */\n id = computed(() => this.inputs.id());\n\n /** The ARIA role for the listbox. */\n role = computed(() => 'listbox' as const);\n\n /** The id of the active (focused) item in the listbox. */\n activeId = computed(() => this.listBehavior.activeDescendant());\n\n /** The list of options in the listbox. */\n items: SignalLike<OptionPattern<V>[]> = computed(() => this.inputs.items());\n\n /** The tab index for the listbox. Always -1 because the combobox handles focus. */\n override tabIndex: SignalLike<-1 | 0> = () => -1;\n\n /** Whether multiple items in the list can be selected at once. */\n override multi = computed(() => {\n return this.inputs.combobox()?.readonly() ? this.inputs.multi() : false;\n });\n\n constructor(override readonly inputs: ComboboxListboxInputs<V>) {\n if (inputs.combobox()) {\n inputs.focusMode = () => 'activedescendant';\n inputs.element = inputs.combobox()!.inputs.inputEl;\n }\n\n super(inputs);\n }\n\n /** Noop. The combobox handles keydown events. */\n override onKeydown(_: KeyboardEvent): void {}\n\n /** Noop. The combobox handles pointerdown events. */\n override onPointerdown(_: PointerEvent): void {}\n\n /** Noop. The combobox controls the open state. */\n override setDefaultState(): void {}\n\n /** Navigates to the specified item in the listbox. */\n focus = (item: OptionPattern<V>, opts?: {focusElement?: boolean}) => {\n this.listBehavior.goto(item, opts);\n };\n\n /** Navigates to the previous focusable item in the listbox. */\n getActiveItem = () => this.inputs.activeItem();\n\n /** Navigates to the next focusable item in the listbox. */\n next = () => this.listBehavior.next();\n\n /** Navigates to the previous focusable item in the listbox. */\n prev = () => this.listBehavior.prev();\n\n /** Navigates to the last focusable item in the listbox. */\n last = () => this.listBehavior.last();\n\n /** Navigates to the first focusable item in the listbox. */\n first = () => this.listBehavior.first();\n\n /** Unfocuses the currently focused item in the listbox. */\n unfocus = () => this.listBehavior.unfocus();\n\n /** Selects the specified item in the listbox. */\n select = (item?: OptionPattern<V>) => this.listBehavior.select(item);\n\n /** Toggles the selection state of the given item in the listbox. */\n toggle = (item?: OptionPattern<V>) => this.listBehavior.toggle(item);\n\n /** Clears the selection in the listbox. */\n clearSelection = () => this.listBehavior.deselectAll();\n\n /** Retrieves the OptionPattern associated with a pointer event. */\n getItem = (e: PointerEvent) => this._getItem(e);\n\n /** Retrieves the currently selected items in the listbox. */\n getSelectedItems = () => {\n // NOTE: We need to do this funky for loop to preserve the order of the selected values.\n const items = [];\n for (const value of this.inputs.value()) {\n const item = this.items().find(i => i.value() === value);\n if (item) {\n items.push(item);\n }\n }\n return items;\n };\n\n /** Sets the value of the combobox listbox. */\n setValue = (value: V | undefined) => this.inputs.value.set(value ? [value] : []);\n}\n"],"names":["ListboxPattern","inputs","listBehavior","orientation","disabled","computed","readonly","tabIndex","activeDescendant","multi","setsize","items","length","followFocus","selectionMode","wrap","signal","prevKey","textDirection","nextKey","dynamicSpaceKey","isTyping","typeaheadRegexp","keydown","manager","KeyboardEventManager","on","prev","ignoreRepeat","next","first","last","e","search","key","selectOne","Modifier","Any","anchor","activeIndex","Shift","selectRange","Ctrl","Meta","updateSelection","toggle","toggleAll","toggleOne","select","pointerdown","PointerEventManager","goto","_getItem","constructor","List","validate","violations","value","push","join","onKeydown","event","handle","onPointerdown","setDefaultState","firstItem","item","isFocusable","selected","activeItem","set","target","HTMLElement","element","closest","find","i","OptionPattern","id","index","listbox","indexOf","active","includes","selectable","searchTerm","getItemTabindex","args","ComboboxListboxPattern","role","activeId","combobox","focusMode","inputEl","_","focus","opts","getActiveItem","unfocus","clearSelection","deselectAll","getItem","getSelectedItems","setValue"],"mappings":"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"}
{"version":3,"file":"_combobox-listbox-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/listbox/combobox-listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OptionPattern} from './option';\nimport {KeyboardEventManager, Modifier} from '../behaviors/event-manager';\nimport {ClickEventManager} from '../behaviors/event-manager/click-event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs} from '../behaviors/list/list';\n\n/** Represents the required inputs for a listbox. */\nexport type ListboxInputs<V> = ListInputs<OptionPattern<V>, V> & {\n /** A unique identifier for the listbox. */\n id: SignalLike<string>;\n\n /** Whether the listbox is readonly. */\n readonly: SignalLike<boolean>;\n};\n\n/** Controls the state of a listbox. */\nexport class ListboxPattern<V> {\n listBehavior: List<OptionPattern<V>, V>;\n\n /** Whether the listbox has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the listbox is disabled. */\n disabled = computed(() => this.listBehavior.disabled());\n\n /** Whether the listbox is readonly. */\n readonly: SignalLike<boolean>;\n\n /** The tab index of the listbox. */\n tabIndex: SignalLike<-1 | 0> = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active item. */\n activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** Whether multiple items in the list can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The number of items in the listbox. */\n setsize = computed(() => this.inputs.items().length);\n\n /** Whether the listbox selection follows focus. */\n followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** Whether the listbox should wrap. Used to disable wrapping while range selecting. */\n wrap = signal(true);\n\n /** The key used to navigate to the previous item in the list. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next item in the list. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** The keydown event manager for the listbox. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n }\n\n if (!this.followFocus()) {\n manager\n .on(this.prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n }\n\n if (this.followFocus()) {\n manager\n .on(this.prevKey, () => this.listBehavior.prev({selectOne: true}), {ignoreRepeat: false})\n .on(this.nextKey, () => this.listBehavior.next({selectOne: true}), {ignoreRepeat: false})\n .on('Home', () => this.listBehavior.first({selectOne: true}))\n .on('End', () => this.listBehavior.last({selectOne: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key, {selectOne: true}));\n }\n\n if (this.inputs.multi()) {\n manager\n .on(Modifier.Any, 'Shift', () => this.listBehavior.anchor(this.listBehavior.activeIndex()))\n .on(Modifier.Shift, this.prevKey, () => this.listBehavior.prev({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on(Modifier.Shift, this.nextKey, () => this.listBehavior.next({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () =>\n this.listBehavior.first({selectRange: true, anchor: false}),\n )\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () =>\n this.listBehavior.last({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, 'Enter', () =>\n this.listBehavior.updateSelection({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, this.dynamicSpaceKey, () =>\n this.listBehavior.updateSelection({selectRange: true, anchor: false}),\n );\n }\n\n if (!this.followFocus() && this.inputs.multi()) {\n manager\n .on(this.dynamicSpaceKey, () => this.listBehavior.toggle())\n .on('Enter', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => this.listBehavior.toggleAll());\n }\n\n if (!this.followFocus() && !this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => this.listBehavior.toggleOne());\n manager.on('Enter', () => this.listBehavior.toggleOne());\n }\n\n if (this.inputs.multi() && this.followFocus()) {\n manager\n .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => this.listBehavior.prev(), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => this.listBehavior.next(), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl, Modifier.Meta], ' ', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => this.listBehavior.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => this.listBehavior.first())\n .on([Modifier.Ctrl, Modifier.Meta], 'End', () => this.listBehavior.last())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => {\n this.listBehavior.toggleAll();\n this.listBehavior.select(); // Ensure the currect option remains selected.\n });\n }\n\n return manager;\n });\n\n /** The click event manager for the listbox. */\n clickManager = computed(() => {\n const manager = new ClickEventManager<PointerEvent>();\n\n if (this.readonly()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!));\n }\n\n if (this.multi()) {\n manager.on(Modifier.Shift, e =>\n this.listBehavior.goto(this._getItem(e)!, {selectRange: true}),\n );\n }\n\n if (!this.multi() && this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}));\n }\n\n if (!this.multi() && !this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n if (this.multi() && this.followFocus()) {\n return manager\n .on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}))\n .on(Modifier.Ctrl, e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n if (this.multi() && !this.followFocus()) {\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {toggle: true}));\n }\n\n return manager;\n });\n\n constructor(readonly inputs: ListboxInputs<V>) {\n this.readonly = inputs.readonly;\n this.orientation = inputs.orientation;\n this.multi = inputs.multi;\n this.listBehavior = new List(inputs);\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n if (!this.inputs.multi() && this.inputs.value().length > 1) {\n violations.push(\n `A single-select listbox should not have multiple selected options. Selected options: ${this.inputs.value().join(', ')}`,\n );\n }\n\n return violations;\n }\n\n /** Handles keydown events for the listbox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydown().handle(event);\n }\n }\n\n onClick(event: PointerEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.clickManager().handle(event);\n }\n }\n\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /**\n * Sets the listbox to it's default initial state.\n *\n * Sets the active index of the listbox to the first focusable selected\n * item if one exists. Otherwise, sets focus to the first focusable item.\n *\n * This method should be called once the listbox and it's options are properly initialized,\n * meaning the ListboxPattern and OptionPatterns should have references to each other before this\n * is called.\n */\n setDefaultState() {\n let firstItem: OptionPattern<V> | null = null;\n\n for (const item of this.inputs.items()) {\n if (this.listBehavior.isFocusable(item)) {\n if (!firstItem) {\n firstItem = item;\n }\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n }\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /**\n * Sets the default active state of the listbox before receiving interaction for the first time.\n */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n this.setDefaultState();\n }\n\n protected _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"option\"]');\n return this.inputs.items().find(i => i.element() === element);\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 {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/**\n * Represents the properties exposed by a listbox that need to be accessed by an option.\n * This exists to avoid circular dependency errors between the listbox and option.\n */\ninterface ListboxPattern<V> {\n inputs: ListInputs<OptionPattern<V>, V>;\n listBehavior: List<OptionPattern<V>, V>;\n}\n\n/** Represents the required inputs for an option in a listbox. */\nexport interface OptionInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n}\n\n/** Represents an option in a listbox. */\nexport class OptionPattern<V> {\n /** A unique identifier for the option. */\n id: SignalLike<string>;\n\n /** The value of the option. */\n value: SignalLike<V>;\n\n /** The position of the option in the list. */\n index = computed(() => this.listbox()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the option is active. */\n active = computed(() => this.listbox()?.inputs.activeItem() === this);\n\n /** Whether the option is selected. */\n selected = computed(() => this.listbox()?.inputs.value().includes(this.value()));\n\n /** Whether the option is selectable. */\n selectable = () => true;\n\n /** Whether the option is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The text used by the typeahead search. */\n searchTerm: SignalLike<string>;\n\n /** A reference to the parent listbox. */\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n\n /** The tab index of the option. */\n tabIndex = computed(() => this.listbox()?.listBehavior.getItemTabindex(this));\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement | undefined>;\n\n constructor(args: OptionInputs<V>) {\n this.id = args.id;\n this.value = args.value;\n this.listbox = args.listbox;\n this.element = args.element;\n this.disabled = args.disabled;\n this.searchTerm = args.searchTerm;\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 {ListboxInputs, ListboxPattern} from './listbox';\nimport {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {OptionPattern} from './option';\nimport {ComboboxPattern, ComboboxListboxControls} from '../combobox/combobox';\n\nexport type ComboboxListboxInputs<V> = ListboxInputs<V> & {\n /** The combobox controlling the listbox. */\n combobox: SignalLike<ComboboxPattern<OptionPattern<V>, V> | undefined>;\n};\n\nexport class ComboboxListboxPattern<V>\n extends ListboxPattern<V>\n implements ComboboxListboxControls<OptionPattern<V>, V>\n{\n /** A unique identifier for the popup. */\n id = computed(() => this.inputs.id());\n\n /** The ARIA role for the listbox. */\n role = computed(() => 'listbox' as const);\n\n /** The id of the active (focused) item in the listbox. */\n activeId = computed(() => this.listBehavior.activeDescendant());\n\n /** The list of options in the listbox. */\n items: SignalLike<OptionPattern<V>[]> = computed(() => this.inputs.items());\n\n /** The tab index for the listbox. Always -1 because the combobox handles focus. */\n override tabIndex: SignalLike<-1 | 0> = () => -1;\n\n /** Whether multiple items in the list can be selected at once. */\n override multi = computed(() => {\n return this.inputs.combobox()?.readonly() ? this.inputs.multi() : false;\n });\n\n constructor(override readonly inputs: ComboboxListboxInputs<V>) {\n if (inputs.combobox()) {\n inputs.focusMode = () => 'activedescendant';\n inputs.element = inputs.combobox()!.inputs.inputEl;\n }\n\n super(inputs);\n }\n\n /** Noop. The combobox handles keydown events. */\n override onKeydown(_: KeyboardEvent): void {}\n\n /** Noop. The combobox handles pointerdown events. */\n override onClick(_: PointerEvent): void {}\n\n /** Noop. The combobox controls the open state. */\n override setDefaultState(): void {}\n\n /** Navigates to the specified item in the listbox. */\n focus = (item: OptionPattern<V>, opts?: {focusElement?: boolean}) => {\n this.listBehavior.goto(item, opts);\n };\n\n /** Navigates to the previous focusable item in the listbox. */\n getActiveItem = () => this.inputs.activeItem();\n\n /** Navigates to the next focusable item in the listbox. */\n next = () => this.listBehavior.next();\n\n /** Navigates to the previous focusable item in the listbox. */\n prev = () => this.listBehavior.prev();\n\n /** Navigates to the last focusable item in the listbox. */\n last = () => this.listBehavior.last();\n\n /** Navigates to the first focusable item in the listbox. */\n first = () => this.listBehavior.first();\n\n /** Unfocuses the currently focused item in the listbox. */\n unfocus = () => this.listBehavior.unfocus();\n\n /** Selects the specified item in the listbox. */\n select = (item?: OptionPattern<V>) => this.listBehavior.select(item);\n\n /** Toggles the selection state of the given item in the listbox. */\n toggle = (item?: OptionPattern<V>) => this.listBehavior.toggle(item);\n\n /** Clears the selection in the listbox. */\n clearSelection = () => this.listBehavior.deselectAll();\n\n /** Retrieves the OptionPattern associated with a pointer event. */\n getItem = (e: PointerEvent) => this._getItem(e);\n\n /** Retrieves the currently selected items in the listbox. */\n getSelectedItems = () => {\n // NOTE: We need to do this funky for loop to preserve the order of the selected values.\n const items = [];\n for (const value of this.inputs.value()) {\n const item = this.items().find(i => i.value() === value);\n if (item) {\n items.push(item);\n }\n }\n return items;\n };\n\n /** Sets the value of the combobox listbox. */\n setValue = (value: V | undefined) => this.inputs.value.set(value ? [value] : []);\n}\n"],"names":["ListboxPattern","inputs","listBehavior","hasBeenInteracted","signal","orientation","disabled","computed","readonly","tabIndex","activeDescendant","multi","setsize","items","length","followFocus","selectionMode","wrap","prevKey","textDirection","nextKey","dynamicSpaceKey","isTyping","typeaheadRegexp","keydown","manager","KeyboardEventManager","on","prev","ignoreRepeat","next","first","last","e","search","key","selectOne","Modifier","Any","anchor","activeIndex","Shift","selectRange","Ctrl","Meta","updateSelection","toggle","toggleAll","toggleOne","select","clickManager","ClickEventManager","goto","_getItem","constructor","List","validate","violations","value","push","join","onKeydown","event","set","handle","onClick","onFocusIn","setDefaultState","firstItem","item","isFocusable","selected","activeItem","setDefaultStateEffect","target","HTMLElement","element","closest","find","i","OptionPattern","id","index","listbox","indexOf","active","includes","selectable","searchTerm","getItemTabindex","args","ComboboxListboxPattern","role","activeId","combobox","focusMode","inputEl","_","focus","opts","getActiveItem","unfocus","clearSelection","deselectAll","getItem","getSelectedItems","setValue"],"mappings":"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"}

@@ -252,2 +252,3 @@ import { computed, signal, KeyboardEventManager, Modifier } from './_signal-like-chunk.mjs';

treeBehavior;
hasBeenInteracted = signal(false);
level = () => 0;

@@ -431,4 +432,9 @@ expanded = () => true;

}
setDefaultStateEffect() {
if (this.hasBeenInteracted()) return;
this.setDefaultState();
}
onKeydown(event) {
if (!this.disabled()) {
this.hasBeenInteracted.set(true);
this.keydown().handle(event);

@@ -439,5 +445,9 @@ }

if (!this.disabled()) {
this.hasBeenInteracted.set(true);
this.pointerdown().handle(event);
}
}
onFocusIn() {
this.hasBeenInteracted.set(true);
}
goto(e, opts) {

@@ -444,0 +454,0 @@ const item = this._getItem(e);

@@ -1,1 +0,1 @@

{"version":3,"file":"_combobox-tree-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tree/combobox-tree.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike} from '../signal-like/signal-like';\nimport {ExpansionItem, ListExpansion, ListExpansionInputs} from '../expansion/expansion';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../list-navigation/list-navigation';\nimport {\n ListSelection,\n ListSelectionInputs,\n ListSelectionItem,\n} from '../list-selection/list-selection';\nimport {\n ListTypeahead,\n ListTypeaheadInputs,\n ListTypeaheadItem,\n} from '../list-typeahead/list-typeahead';\nimport {NavOptions} from '../list/list';\n\n/** Represents an item in the tree. */\nexport interface TreeItem<V, T extends TreeItem<V, T>>\n extends\n ListTypeaheadItem,\n ListNavigationItem,\n ListSelectionItem<V>,\n ListFocusItem,\n ExpansionItem {\n /** The children of this item. */\n children: SignalLike<T[] | undefined>;\n\n /** The parent of this item. */\n parent: SignalLike<T | undefined>;\n\n /** Whether this item is visible. */\n visible: SignalLike<boolean>;\n}\n\n/** The necessary inputs for the tree behavior. */\nexport type TreeInputs<T extends TreeItem<V, T>, V> = ListFocusInputs<T> &\n ListNavigationInputs<T> &\n ListSelectionInputs<T, V> &\n ListTypeaheadInputs<T> &\n ListExpansionInputs;\n\n/** Controls focus for a tree, ensuring that only visible items are focusable. */\nclass TreeListFocus<T extends TreeItem<V, T>, V> extends ListFocus<T> {\n override isFocusable(item: T): boolean {\n return super.isFocusable(item) && item.visible();\n }\n}\n\n/** Controls the state of a tree. */\nexport class Tree<T extends TreeItem<V, T>, V> {\n /** Controls navigation for the tree. */\n navigationBehavior: ListNavigation<T>;\n\n /** Controls selection for the tree. */\n selectionBehavior: ListSelection<T, V>;\n\n /** Controls typeahead for the tree. */\n typeaheadBehavior: ListTypeahead<T>;\n\n /** Controls focus for the tree. */\n focusBehavior: ListFocus<T>;\n\n /** Controls expansion for the tree. */\n expansionBehavior: ListExpansion;\n\n /** Whether the tree is disabled. */\n disabled = computed(() => this.focusBehavior.isListDisabled());\n\n /** The id of the current active item. */\n activeDescendant = computed(() => this.focusBehavior.getActiveDescendant());\n\n /** The tab index of the tree. */\n tabIndex = computed(() => this.focusBehavior.getListTabIndex());\n\n /** The index of the currently active item in the tree (within the flattened list). */\n activeIndex = computed(() => this.focusBehavior.activeIndex());\n\n /** The uncommitted index for selecting a range of options. */\n private _anchorIndex = signal(0);\n\n /** Whether the list should wrap. */\n private _wrap = signal(true);\n\n constructor(readonly inputs: TreeInputs<T, V>) {\n this.focusBehavior = new TreeListFocus<T, V>(inputs);\n this.selectionBehavior = new ListSelection<T, V>({...inputs, focusManager: this.focusBehavior});\n this.typeaheadBehavior = new ListTypeahead<T>({...inputs, focusManager: this.focusBehavior});\n this.expansionBehavior = new ListExpansion(inputs);\n this.navigationBehavior = new ListNavigation<T>({\n ...inputs,\n focusManager: this.focusBehavior,\n wrap: computed(() => this._wrap() && this.inputs.wrap()),\n });\n }\n\n /** Returns the tab index for the given item. */\n getItemTabindex(item: T) {\n return this.focusBehavior.getItemTabIndex(item);\n }\n\n /** Navigates to the first option in the tree. */\n first(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.first(opts));\n }\n\n /** Navigates to the last option in the tree. */\n last(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.last(opts));\n }\n\n /** Navigates to the next option in the tree. */\n next(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.next(opts));\n }\n\n /** Navigates to the previous option in the tree. */\n prev(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.prev(opts));\n }\n\n /** Navigates to the first child of the current active item. */\n firstChild(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.children?.() ?? [];\n return this.navigationBehavior.first({items, ...opts});\n });\n }\n\n /** Navigates to the last child of the current active item. */\n lastChild(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.children?.() ?? [];\n return this.navigationBehavior.last({items, ...opts});\n });\n }\n\n /** Navigates to the next sibling of the current active item. */\n nextSibling(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.parent?.()?.children?.() ?? [];\n return this.navigationBehavior.next({items, ...opts});\n });\n }\n\n /** Navigates to the previous sibling of the current active item. */\n prevSibling(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.parent?.()?.children?.() ?? [];\n return this.navigationBehavior.prev({items, ...opts});\n });\n }\n\n /** Navigates to the parent of the current active item. */\n parent(opts?: NavOptions<T>) {\n this._navigate(opts, () =>\n this.navigationBehavior.goto(this.inputs.activeItem()?.parent?.(), opts),\n );\n }\n\n /** Navigates to the given item in the tree. */\n goto(item: T, opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.goto(item, opts));\n }\n\n /** Removes focus from the tree. */\n unfocus() {\n this.inputs.activeItem.set(undefined);\n }\n\n /** Marks the given index as the potential start of a range selection. */\n anchor(index: number) {\n this._anchorIndex.set(index);\n }\n\n /** Handles typeahead search navigation for the tree. */\n search(char: string, opts?: NavOptions<T>) {\n this._navigate(opts, () => this.typeaheadBehavior.search(char));\n }\n\n /** Checks if the tree is currently typing for typeahead search. */\n isTyping() {\n return this.typeaheadBehavior.isTyping();\n }\n\n /** Selects the currently active item in the tree. */\n select(item?: T) {\n this.selectionBehavior.select(item);\n }\n\n /** Sets the selection to only the current active item. */\n selectOne() {\n this.selectionBehavior.selectOne();\n }\n\n /** Deselects the currently active item in the tree. */\n deselect(item?: T) {\n this.selectionBehavior.deselect(item);\n }\n\n /** Deselects all items in the tree. */\n deselectAll() {\n this.selectionBehavior.deselectAll();\n }\n\n /** Toggles the currently active item in the tree. */\n toggle(item?: T) {\n this.selectionBehavior.toggle(item);\n }\n\n /** Toggles the currently active item in the tree, deselecting all other items. */\n toggleOne() {\n this.selectionBehavior.toggleOne();\n }\n\n /** Toggles the selection of all items in the tree. */\n toggleAll() {\n this.selectionBehavior.toggleAll();\n }\n\n /** Toggles the expansion of the given item. */\n toggleExpansion(item?: T) {\n item ??= this.inputs.activeItem();\n if (!item || !this.isFocusable(item)) return;\n\n if (this.isExpandable(item)) {\n this.expansionBehavior.toggle(item);\n }\n }\n\n /** Expands the given item. */\n expand(item: T) {\n if (this.isExpandable(item)) {\n this.expansionBehavior.open(item);\n }\n }\n\n /** Collapses the given item. */\n collapse(item: T) {\n this.expansionBehavior.close(item);\n }\n\n /** Expands all sibling items of the given item (or active item). */\n expandSiblings(item?: T) {\n item ??= this.inputs.activeItem();\n if (!item) return;\n\n const parent = item.parent?.();\n // TODO: This assumes that items without a parent are root items.\n const siblings = parent ? parent.children?.() : this.inputs.items().filter(i => !i.parent?.());\n siblings?.forEach(s => this.expand(s));\n }\n\n /** Expands all items in the tree. */\n expandAll() {\n this.expansionBehavior.openAll();\n }\n\n /** Collapses all items in the tree. */\n collapseAll() {\n this.expansionBehavior.closeAll();\n }\n\n /** Checks if the given item is able to receive focus. */\n isFocusable(item: T) {\n return this.focusBehavior.isFocusable(item);\n }\n\n /** Checks if the given item is expandable. */\n isExpandable(item: T) {\n return this.expansionBehavior.isExpandable(item);\n }\n\n /** Handles updating selection for the tree. */\n updateSelection(opts: NavOptions<T> = {anchor: true}) {\n if (opts.toggle) {\n this.selectionBehavior.toggle();\n }\n if (opts.select) {\n this.selectionBehavior.select();\n }\n if (opts.selectOne) {\n this.selectionBehavior.selectOne();\n }\n if (opts.selectRange) {\n this.selectionBehavior.selectRange();\n }\n if (!opts.anchor) {\n this.anchor(this.selectionBehavior.rangeStartIndex());\n }\n }\n\n /**\n * Safely performs a navigation operation.\n */\n private _navigate(opts: NavOptions<T> = {}, operation: () => boolean) {\n if (opts?.selectRange) {\n this._wrap.set(false);\n this.selectionBehavior.rangeStartIndex.set(this._anchorIndex());\n }\n\n const moved = operation();\n\n if (moved) {\n this.updateSelection(opts);\n }\n\n this._wrap.set(true);\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 {SignalLike, computed, WritableSignalLike} from '../behaviors/signal-like/signal-like';\nimport {Tree, TreeItem, TreeInputs as TreeBehaviorInputs} from '../behaviors/tree/tree';\nimport {KeyboardEventManager, PointerEventManager, Modifier} from '../behaviors/event-manager';\n\n/** Represents the required inputs for a tree item. */\nexport interface TreeItemInputs<V> extends Omit<\n TreeItem<V, TreeItemPattern<V>>,\n 'index' | 'parent' | 'visible' | 'expandable'\n> {\n /** The parent item. */\n parent: SignalLike<TreeItemPattern<V> | TreePattern<V>>;\n\n /** Whether this item has children. Children can be lazily loaded. */\n hasChildren: SignalLike<boolean>;\n\n /** The tree pattern this item belongs to. */\n tree: SignalLike<TreePattern<V>>;\n}\n\n/**\n * Represents an item in a Tree.\n */\nexport class TreeItemPattern<V> implements TreeItem<V, TreeItemPattern<V>> {\n /** A unique identifier for this item. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The value of this item. */\n readonly value: SignalLike<V> = () => this.inputs.value();\n\n /** A reference to the item element. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether the item is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The text used by the typeahead search. */\n readonly searchTerm: SignalLike<string> = () => this.inputs.searchTerm();\n\n /** The tree pattern this item belongs to. */\n readonly tree: SignalLike<TreePattern<V>> = () => this.inputs.tree();\n\n /** The parent item. */\n readonly parent: SignalLike<TreeItemPattern<V> | undefined> = computed(() => {\n const parent = this.inputs.parent();\n return parent instanceof TreeItemPattern ? parent : undefined;\n });\n\n /** The children items. */\n readonly children: SignalLike<TreeItemPattern<V>[]> = () => this.inputs.children() ?? [];\n\n /** The position of this item among its siblings. */\n readonly index = computed(() => this.tree().inputs.items().indexOf(this));\n\n /** Whether the item is expandable. It's expandable if children item exist. */\n readonly expandable: SignalLike<boolean> = () => this.inputs.hasChildren();\n\n /** Whether the item is selectable. */\n readonly selectable: SignalLike<boolean> = () => this.inputs.selectable();\n\n /** Whether the item is expanded. */\n readonly expanded: WritableSignalLike<boolean>;\n\n /** The level of the current item in a tree. */\n readonly level: SignalLike<number> = computed(() => this.inputs.parent().level() + 1);\n\n /** Whether this item is visible. */\n readonly visible: SignalLike<boolean> = computed(\n () => this.inputs.parent().expanded() && this.inputs.parent().visible(),\n );\n\n /** The number of items under the same parent at the same level. */\n readonly setsize = computed(() => this.inputs.parent().children().length);\n\n /** The position of this item among its siblings (1-based). */\n readonly posinset = computed(() => this.inputs.parent().children().indexOf(this) + 1);\n\n /** Whether the item is active. */\n readonly active = computed(() => this.tree().activeItem() === this);\n\n /** The tab index of the item. */\n readonly tabIndex = computed(() => this.tree().treeBehavior.getItemTabindex(this));\n\n /** Whether the item is selected. */\n readonly selected: SignalLike<boolean | undefined> = computed(() => {\n if (this.tree().nav()) {\n return undefined;\n }\n if (!this.selectable()) {\n return undefined;\n }\n return this.tree().value().includes(this.value());\n });\n\n /** The current type of this item. */\n readonly current: SignalLike<string | undefined> = computed(() => {\n if (!this.tree().nav()) {\n return undefined;\n }\n if (!this.selectable()) {\n return undefined;\n }\n return this.tree().value().includes(this.value()) ? this.tree().currentType() : undefined;\n });\n\n constructor(readonly inputs: TreeItemInputs<V>) {\n this.expanded = inputs.expanded;\n }\n}\n\n/** The selection operations that the tree can perform. */\ninterface SelectOptions {\n toggle?: boolean;\n selectOne?: boolean;\n selectRange?: boolean;\n anchor?: boolean;\n}\n\n/** Represents the required inputs for a tree. */\nexport interface TreeInputs<V> extends Omit<\n TreeBehaviorInputs<TreeItemPattern<V>, V>,\n 'multiExpandable'\n> {\n /** A unique identifier for the tree. */\n id: SignalLike<string>;\n\n /** Whether the tree is in navigation mode. */\n nav: SignalLike<boolean>;\n\n /** The aria-current type. */\n currentType: SignalLike<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>;\n\n /** The text direction of the tree. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** Controls the state and interactions of a tree view. */\nexport class TreePattern<V> implements TreeInputs<V> {\n /** The tree behavior for the tree. */\n readonly treeBehavior: Tree<TreeItemPattern<V>, V>;\n\n /** The root level is 0. */\n readonly level = () => 0;\n\n /** The root is always expanded. */\n readonly expanded = () => true;\n\n /** The root is always visible. */\n readonly visible = () => true;\n\n /** The tab index of the tree. */\n readonly tabIndex: SignalLike<-1 | 0> = computed(() => this.treeBehavior.tabIndex());\n\n /** The id of the current active item. */\n readonly activeDescendant = computed(() => this.treeBehavior.activeDescendant());\n\n /** The direct children of the root (top-level tree items). */\n readonly children = computed(() =>\n this.inputs.items().filter(item => item.level() === this.level() + 1),\n );\n\n /** Whether the tree selection follows focus. */\n readonly followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** Whether the tree direction is RTL. */\n readonly isRtl = computed(() => this.inputs.textDirection() === 'rtl');\n\n /** The key for navigating to the previous item. */\n readonly prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.isRtl() ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key for navigating to the next item. */\n readonly nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.isRtl() ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key for collapsing an item or moving to its parent. */\n readonly collapseKey = computed(() => {\n if (this.inputs.orientation() === 'horizontal') {\n return 'ArrowUp';\n }\n return this.isRtl() ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key for expanding an item or moving to its first child. */\n readonly expandKey = computed(() => {\n if (this.inputs.orientation() === 'horizontal') {\n return 'ArrowDown';\n }\n return this.isRtl() ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.treeBehavior.isTyping() ? '' : ' '));\n\n /** Regular expression to match characters for typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The keydown event manager for the tree. */\n readonly keydown = computed(() => {\n const manager = new KeyboardEventManager();\n const tree = this.treeBehavior;\n\n manager\n .on(this.prevKey, () => tree.prev({selectOne: this.followFocus()}), {ignoreRepeat: false})\n .on(this.nextKey, () => tree.next({selectOne: this.followFocus()}), {ignoreRepeat: false})\n .on('Home', () => tree.first({selectOne: this.followFocus()}))\n .on('End', () => tree.last({selectOne: this.followFocus()}))\n .on(this.typeaheadRegexp, e => tree.search(e.key, {selectOne: this.followFocus()}))\n .on(Modifier.Shift, '*', () => tree.expandSiblings())\n .on(this.expandKey, () => this._expandOrFirstChild({selectOne: this.followFocus()}))\n .on(this.collapseKey, () => this._collapseOrParent({selectOne: this.followFocus()}));\n\n if (this.inputs.multi()) {\n manager\n // TODO: Tracking the anchor by index can break if the\n // tree is expanded or collapsed causing the index to change.\n .on(Modifier.Any, 'Shift', () => tree.anchor(this.treeBehavior.activeIndex()))\n .on(Modifier.Shift, this.prevKey, () => tree.prev({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on(Modifier.Shift, this.nextKey, () => tree.next({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () =>\n tree.first({selectRange: true, anchor: false}),\n )\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () =>\n tree.last({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, 'Enter', () => tree.updateSelection({selectRange: true, anchor: false}))\n .on(Modifier.Shift, this.dynamicSpaceKey, () =>\n tree.updateSelection({selectRange: true, anchor: false}),\n );\n }\n\n if (!this.followFocus() && this.inputs.multi()) {\n manager\n .on(this.dynamicSpaceKey, () => tree.toggle())\n .on('Enter', () => tree.toggle(), {preventDefault: !this.nav()})\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => tree.toggleAll());\n }\n\n if (!this.followFocus() && !this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => tree.selectOne());\n manager.on('Enter', () => tree.selectOne(), {preventDefault: !this.nav()});\n }\n\n if (this.inputs.multi() && this.followFocus()) {\n manager\n .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => tree.prev(), {ignoreRepeat: false})\n .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => tree.next(), {ignoreRepeat: false})\n .on([Modifier.Ctrl, Modifier.Meta], this.expandKey, () => this._expandOrFirstChild())\n .on([Modifier.Ctrl, Modifier.Meta], this.collapseKey, () => this._collapseOrParent())\n .on([Modifier.Ctrl, Modifier.Meta], ' ', () => tree.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => tree.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => tree.first())\n .on([Modifier.Ctrl, Modifier.Meta], 'End', () => tree.last())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => {\n tree.toggleAll();\n tree.select(); // Ensure the currect item remains selected.\n });\n }\n\n return manager;\n });\n\n /** The pointerdown event manager for the tree. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n if (this.multi()) {\n manager.on(Modifier.Shift, e => this.goto(e, {selectRange: true}));\n }\n\n if (!this.multi()) {\n return manager.on(e => this.goto(e, {selectOne: true}));\n }\n\n if (this.multi() && this.followFocus()) {\n return manager\n .on(e => this.goto(e, {selectOne: true}))\n .on(Modifier.Ctrl, e => this.goto(e, {toggle: true}));\n }\n\n if (this.multi() && !this.followFocus()) {\n return manager.on(e => this.goto(e, {toggle: true}));\n }\n\n return manager;\n });\n\n /** A unique identifier for the tree. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The host native element. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether the tree is in navigation mode. */\n readonly nav: SignalLike<boolean> = () => this.inputs.nav();\n\n /** The aria-current type. */\n readonly currentType: SignalLike<\n 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'\n > = () => this.inputs.currentType();\n\n /** All items in the tree, in document order (DFS-like, a flattened list). */\n readonly items: SignalLike<TreeItemPattern<V>[]> = () => this.inputs.items();\n\n /** The focus strategy used by the tree. */\n readonly focusMode: SignalLike<'roving' | 'activedescendant'> = () => this.inputs.focusMode();\n\n /** Whether the tree is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The currently active item in the tree. */\n readonly activeItem: WritableSignalLike<TreeItemPattern<V> | undefined>;\n\n /** Whether disabled items should be focusable. */\n readonly softDisabled: SignalLike<boolean> = () => this.inputs.softDisabled();\n\n /** Whether the focus should wrap when navigating past the first or last item. */\n readonly wrap: SignalLike<boolean> = () => this.inputs.wrap();\n\n /** The orientation of the tree. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'> = () => this.inputs.orientation();\n\n /** The text direction of the tree. */\n readonly textDirection: SignalLike<'ltr' | 'rtl'> = () => this.textDirection();\n\n /** Whether multiple items can be selected at the same time. */\n readonly multi: SignalLike<boolean> = computed(() => (this.nav() ? false : this.inputs.multi()));\n\n /** The selection mode of the tree. */\n readonly selectionMode: SignalLike<'follow' | 'explicit'> = () => this.inputs.selectionMode();\n\n /** The delay in milliseconds to wait before clearing the typeahead buffer. */\n readonly typeaheadDelay: SignalLike<number> = () => this.inputs.typeaheadDelay();\n\n /** The current selected items of the tree. */\n readonly value: WritableSignalLike<V[]>;\n\n constructor(readonly inputs: TreeInputs<V>) {\n this.activeItem = inputs.activeItem;\n this.value = inputs.value;\n\n this.treeBehavior = new Tree<TreeItemPattern<V>, V>({\n ...inputs,\n multi: this.multi,\n multiExpandable: () => true,\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n if (!this.inputs.multi() && this.inputs.value().length > 1) {\n violations.push(\n `A single-select tree should not have multiple selected options. Selected options: ${this.inputs.value().join(', ')}`,\n );\n }\n\n return violations;\n }\n\n /**\n * Sets the tree to it's default initial state.\n *\n * Sets the active index of the tree to the first focusable selected tree item if one exists.\n * Otherwise, sets focus to the first focusable tree item.\n */\n setDefaultState() {\n let firstItem: TreeItemPattern<V> | undefined;\n\n for (const item of this.inputs.items()) {\n if (!item.visible()) continue;\n if (!this.treeBehavior.isFocusable(item)) continue;\n\n if (firstItem === undefined) {\n firstItem = item;\n }\n\n if (item.selected()) {\n this.activeItem.set(item);\n return;\n }\n }\n\n if (firstItem !== undefined) {\n this.activeItem.set(firstItem);\n }\n }\n\n /** Handles keydown events on the tree. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles pointerdown events on the tree. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /** Navigates to the given tree item in the tree. */\n goto(e: PointerEvent, opts?: SelectOptions) {\n const item = this._getItem(e);\n if (!item) return;\n\n this.treeBehavior.goto(item, opts);\n this.treeBehavior.toggleExpansion(item);\n }\n\n /** Expands the active item if possible, otherwise navigates to the first child. */\n _expandOrFirstChild(opts?: SelectOptions) {\n const item = this.treeBehavior.inputs.activeItem();\n if (item && this.treeBehavior.isExpandable(item) && !item.expanded()) {\n this.treeBehavior.expand(item);\n } else {\n this.treeBehavior.firstChild(opts);\n }\n }\n\n /** Collapses the active item if possible, otherwise navigates to the parent. */\n _collapseOrParent(opts?: SelectOptions) {\n const item = this.treeBehavior.inputs.activeItem();\n if (item && this.treeBehavior.isExpandable(item) && item.expanded()) {\n this.treeBehavior.collapse(item);\n } else {\n this.treeBehavior.parent(opts);\n }\n }\n\n /** Retrieves the TreeItemPattern associated with a DOM event, if any. */\n protected _getItem(event: Event): TreeItemPattern<V> | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const element = event.target.closest('[role=\"treeitem\"]');\n return this.inputs.items().find(i => i.element() === element);\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 {TreeInputs, TreePattern, TreeItemPattern} from './tree';\nimport {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {ComboboxPattern, ComboboxTreeControls} from '../combobox/combobox';\n\nexport type ComboboxTreeInputs<V> = TreeInputs<V> & {\n /** The combobox controlling the tree. */\n combobox: SignalLike<ComboboxPattern<TreeItemPattern<V>, V> | undefined>;\n};\n\nexport class ComboboxTreePattern<V>\n extends TreePattern<V>\n implements ComboboxTreeControls<TreeItemPattern<V>, V>\n{\n /** Toggles to expand or collapse a tree item. */\n toggleExpansion = (item?: TreeItemPattern<V>) => this.treeBehavior.toggleExpansion(item);\n\n /** Whether the currently focused item is collapsible. */\n isItemCollapsible = () => this.inputs.activeItem()?.parent() instanceof TreeItemPattern;\n\n /** The ARIA role for the tree. */\n role = () => 'tree' as const;\n\n /* The id of the active (focused) item in the tree. */\n activeId = computed(() => this.treeBehavior.activeDescendant());\n\n /** Returns the currently active (focused) item in the tree. */\n getActiveItem = () => this.inputs.activeItem();\n\n /** The list of items in the tree. */\n override items = computed(() => this.inputs.items());\n\n /** The tab index for the tree. Always -1 because the combobox handles focus. */\n override tabIndex: SignalLike<-1 | 0> = () => -1;\n\n constructor(override readonly inputs: ComboboxTreeInputs<V>) {\n if (inputs.combobox()) {\n inputs.multi = () => false;\n inputs.focusMode = () => 'activedescendant';\n inputs.element = inputs.combobox()!.inputs.inputEl;\n }\n\n super(inputs);\n }\n\n /** Noop. The combobox handles keydown events. */\n override onKeydown(_: KeyboardEvent): void {}\n\n /** Noop. The combobox handles pointerdown events. */\n override onPointerdown(_: PointerEvent): void {}\n\n /** Noop. The combobox controls the open state. */\n override setDefaultState(): void {}\n\n /** Navigates to the specified item in the tree. */\n focus = (item: TreeItemPattern<V>) => this.treeBehavior.goto(item);\n\n /** Navigates to the next focusable item in the tree. */\n next = () => this.treeBehavior.next();\n\n /** Navigates to the previous focusable item in the tree. */\n prev = () => this.treeBehavior.prev();\n\n /** Navigates to the last focusable item in the tree. */\n last = () => this.treeBehavior.last();\n\n /** Navigates to the first focusable item in the tree. */\n first = () => this.treeBehavior.first();\n\n /** Unfocuses the currently focused item in the tree. */\n unfocus = () => this.treeBehavior.unfocus();\n\n // TODO: handle non-selectable parent nodes.\n /** Selects the specified item in the tree or the current active item if not provided. */\n select = (item?: TreeItemPattern<V>) => this.treeBehavior.select(item);\n\n /** Toggles the selection state of the given item in the tree or the current active item if not provided. */\n toggle = (item?: TreeItemPattern<V>) => this.treeBehavior.toggle(item);\n\n /** Clears the selection in the tree. */\n clearSelection = () => this.treeBehavior.deselectAll();\n\n /** Retrieves the TreeItemPattern associated with a pointer event. */\n getItem = (e: PointerEvent) => this._getItem(e);\n\n /** Retrieves the currently selected items in the tree */\n getSelectedItems = () => this.inputs.items().filter(item => item.selected());\n\n /** Sets the value of the combobox tree. */\n setValue = (value: V | undefined) => this.inputs.value.set(value ? [value] : []);\n\n /** Expands the currently focused item if it is expandable, or navigates to the first child. */\n expandItem = () => this._expandOrFirstChild();\n\n /** Collapses the currently focused item if it is expandable, or navigates to the parent. */\n collapseItem = () => this._collapseOrParent();\n\n /** Whether the specified item or the currently active item is expandable. */\n isItemExpandable(item: TreeItemPattern<V> | undefined = this.inputs.activeItem()) {\n return item ? item.expandable() : false;\n }\n\n /** Expands all of the tree items. */\n expandAll = () => this.treeBehavior.expandAll();\n\n /** Collapses all of the tree items. */\n collapseAll = () => this.treeBehavior.collapseAll();\n\n /** Whether the currently active item is selectable. */\n isItemSelectable = (item: TreeItemPattern<V> | undefined = this.inputs.activeItem()) => {\n return item ? item.selectable() : false;\n };\n}\n"],"names":["TreeListFocus","ListFocus","isFocusable","item","visible","Tree","inputs","navigationBehavior","selectionBehavior","typeaheadBehavior","focusBehavior","expansionBehavior","disabled","computed","isListDisabled","activeDescendant","getActiveDescendant","tabIndex","getListTabIndex","activeIndex","_anchorIndex","signal","_wrap","constructor","ListSelection","focusManager","ListTypeahead","ListExpansion","ListNavigation","wrap","getItemTabindex","getItemTabIndex","first","opts","_navigate","last","next","prev","firstChild","activeItem","items","children","lastChild","nextSibling","parent","prevSibling","goto","unfocus","set","undefined","anchor","index","search","char","isTyping","select","selectOne","deselect","deselectAll","toggle","toggleOne","toggleAll","toggleExpansion","isExpandable","expand","open","collapse","close","expandSiblings","siblings","filter","i","forEach","s","expandAll","openAll","collapseAll","closeAll","updateSelection","selectRange","rangeStartIndex","operation","moved","TreeItemPattern","id","value","element","searchTerm","tree","indexOf","expandable","hasChildren","selectable","expanded","level","setsize","length","posinset","active","treeBehavior","selected","nav","includes","current","currentType","TreePattern","followFocus","selectionMode","isRtl","textDirection","prevKey","orientation","nextKey","collapseKey","expandKey","dynamicSpaceKey","typeaheadRegexp","keydown","manager","KeyboardEventManager","on","ignoreRepeat","e","key","Modifier","Shift","_expandOrFirstChild","_collapseOrParent","multi","Any","Ctrl","Meta","preventDefault","pointerdown","PointerEventManager","focusMode","softDisabled","typeaheadDelay","multiExpandable","validate","violations","push","join","setDefaultState","firstItem","onKeydown","event","handle","onPointerdown","_getItem","target","HTMLElement","closest","find","ComboboxTreePattern","isItemCollapsible","role","activeId","getActiveItem","combobox","inputEl","_","focus","clearSelection","getItem","getSelectedItems","setValue","expandItem","collapseItem","isItemExpandable","isItemSelectable"],"mappings":"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"}
{"version":3,"file":"_combobox-tree-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tree/combobox-tree.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike} from '../signal-like/signal-like';\nimport {ExpansionItem, ListExpansion, ListExpansionInputs} from '../expansion/expansion';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../list-navigation/list-navigation';\nimport {\n ListSelection,\n ListSelectionInputs,\n ListSelectionItem,\n} from '../list-selection/list-selection';\nimport {\n ListTypeahead,\n ListTypeaheadInputs,\n ListTypeaheadItem,\n} from '../list-typeahead/list-typeahead';\nimport {NavOptions} from '../list/list';\n\n/** Represents an item in the tree. */\nexport interface TreeItem<V, T extends TreeItem<V, T>>\n extends\n ListTypeaheadItem,\n ListNavigationItem,\n ListSelectionItem<V>,\n ListFocusItem,\n ExpansionItem {\n /** The children of this item. */\n children: SignalLike<T[] | undefined>;\n\n /** The parent of this item. */\n parent: SignalLike<T | undefined>;\n\n /** Whether this item is visible. */\n visible: SignalLike<boolean>;\n}\n\n/** The necessary inputs for the tree behavior. */\nexport type TreeInputs<T extends TreeItem<V, T>, V> = ListFocusInputs<T> &\n ListNavigationInputs<T> &\n ListSelectionInputs<T, V> &\n ListTypeaheadInputs<T> &\n ListExpansionInputs;\n\n/** Controls focus for a tree, ensuring that only visible items are focusable. */\nclass TreeListFocus<T extends TreeItem<V, T>, V> extends ListFocus<T> {\n override isFocusable(item: T): boolean {\n return super.isFocusable(item) && item.visible();\n }\n}\n\n/** Controls the state of a tree. */\nexport class Tree<T extends TreeItem<V, T>, V> {\n /** Controls navigation for the tree. */\n navigationBehavior: ListNavigation<T>;\n\n /** Controls selection for the tree. */\n selectionBehavior: ListSelection<T, V>;\n\n /** Controls typeahead for the tree. */\n typeaheadBehavior: ListTypeahead<T>;\n\n /** Controls focus for the tree. */\n focusBehavior: ListFocus<T>;\n\n /** Controls expansion for the tree. */\n expansionBehavior: ListExpansion;\n\n /** Whether the tree is disabled. */\n disabled = computed(() => this.focusBehavior.isListDisabled());\n\n /** The id of the current active item. */\n activeDescendant = computed(() => this.focusBehavior.getActiveDescendant());\n\n /** The tab index of the tree. */\n tabIndex = computed(() => this.focusBehavior.getListTabIndex());\n\n /** The index of the currently active item in the tree (within the flattened list). */\n activeIndex = computed(() => this.focusBehavior.activeIndex());\n\n /** The uncommitted index for selecting a range of options. */\n private _anchorIndex = signal(0);\n\n /** Whether the list should wrap. */\n private _wrap = signal(true);\n\n constructor(readonly inputs: TreeInputs<T, V>) {\n this.focusBehavior = new TreeListFocus<T, V>(inputs);\n this.selectionBehavior = new ListSelection<T, V>({...inputs, focusManager: this.focusBehavior});\n this.typeaheadBehavior = new ListTypeahead<T>({...inputs, focusManager: this.focusBehavior});\n this.expansionBehavior = new ListExpansion(inputs);\n this.navigationBehavior = new ListNavigation<T>({\n ...inputs,\n focusManager: this.focusBehavior,\n wrap: computed(() => this._wrap() && this.inputs.wrap()),\n });\n }\n\n /** Returns the tab index for the given item. */\n getItemTabindex(item: T) {\n return this.focusBehavior.getItemTabIndex(item);\n }\n\n /** Navigates to the first option in the tree. */\n first(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.first(opts));\n }\n\n /** Navigates to the last option in the tree. */\n last(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.last(opts));\n }\n\n /** Navigates to the next option in the tree. */\n next(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.next(opts));\n }\n\n /** Navigates to the previous option in the tree. */\n prev(opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.prev(opts));\n }\n\n /** Navigates to the first child of the current active item. */\n firstChild(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.children?.() ?? [];\n return this.navigationBehavior.first({items, ...opts});\n });\n }\n\n /** Navigates to the last child of the current active item. */\n lastChild(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.children?.() ?? [];\n return this.navigationBehavior.last({items, ...opts});\n });\n }\n\n /** Navigates to the next sibling of the current active item. */\n nextSibling(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.parent?.()?.children?.() ?? [];\n return this.navigationBehavior.next({items, ...opts});\n });\n }\n\n /** Navigates to the previous sibling of the current active item. */\n prevSibling(opts?: NavOptions<T>) {\n this._navigate(opts, () => {\n const item = this.inputs.activeItem();\n const items = item?.parent?.()?.children?.() ?? [];\n return this.navigationBehavior.prev({items, ...opts});\n });\n }\n\n /** Navigates to the parent of the current active item. */\n parent(opts?: NavOptions<T>) {\n this._navigate(opts, () =>\n this.navigationBehavior.goto(this.inputs.activeItem()?.parent?.(), opts),\n );\n }\n\n /** Navigates to the given item in the tree. */\n goto(item: T, opts?: NavOptions<T>) {\n this._navigate(opts, () => this.navigationBehavior.goto(item, opts));\n }\n\n /** Removes focus from the tree. */\n unfocus() {\n this.inputs.activeItem.set(undefined);\n }\n\n /** Marks the given index as the potential start of a range selection. */\n anchor(index: number) {\n this._anchorIndex.set(index);\n }\n\n /** Handles typeahead search navigation for the tree. */\n search(char: string, opts?: NavOptions<T>) {\n this._navigate(opts, () => this.typeaheadBehavior.search(char));\n }\n\n /** Checks if the tree is currently typing for typeahead search. */\n isTyping() {\n return this.typeaheadBehavior.isTyping();\n }\n\n /** Selects the currently active item in the tree. */\n select(item?: T) {\n this.selectionBehavior.select(item);\n }\n\n /** Sets the selection to only the current active item. */\n selectOne() {\n this.selectionBehavior.selectOne();\n }\n\n /** Deselects the currently active item in the tree. */\n deselect(item?: T) {\n this.selectionBehavior.deselect(item);\n }\n\n /** Deselects all items in the tree. */\n deselectAll() {\n this.selectionBehavior.deselectAll();\n }\n\n /** Toggles the currently active item in the tree. */\n toggle(item?: T) {\n this.selectionBehavior.toggle(item);\n }\n\n /** Toggles the currently active item in the tree, deselecting all other items. */\n toggleOne() {\n this.selectionBehavior.toggleOne();\n }\n\n /** Toggles the selection of all items in the tree. */\n toggleAll() {\n this.selectionBehavior.toggleAll();\n }\n\n /** Toggles the expansion of the given item. */\n toggleExpansion(item?: T) {\n item ??= this.inputs.activeItem();\n if (!item || !this.isFocusable(item)) return;\n\n if (this.isExpandable(item)) {\n this.expansionBehavior.toggle(item);\n }\n }\n\n /** Expands the given item. */\n expand(item: T) {\n if (this.isExpandable(item)) {\n this.expansionBehavior.open(item);\n }\n }\n\n /** Collapses the given item. */\n collapse(item: T) {\n this.expansionBehavior.close(item);\n }\n\n /** Expands all sibling items of the given item (or active item). */\n expandSiblings(item?: T) {\n item ??= this.inputs.activeItem();\n if (!item) return;\n\n const parent = item.parent?.();\n // TODO: This assumes that items without a parent are root items.\n const siblings = parent ? parent.children?.() : this.inputs.items().filter(i => !i.parent?.());\n siblings?.forEach(s => this.expand(s));\n }\n\n /** Expands all items in the tree. */\n expandAll() {\n this.expansionBehavior.openAll();\n }\n\n /** Collapses all items in the tree. */\n collapseAll() {\n this.expansionBehavior.closeAll();\n }\n\n /** Checks if the given item is able to receive focus. */\n isFocusable(item: T) {\n return this.focusBehavior.isFocusable(item);\n }\n\n /** Checks if the given item is expandable. */\n isExpandable(item: T) {\n return this.expansionBehavior.isExpandable(item);\n }\n\n /** Handles updating selection for the tree. */\n updateSelection(opts: NavOptions<T> = {anchor: true}) {\n if (opts.toggle) {\n this.selectionBehavior.toggle();\n }\n if (opts.select) {\n this.selectionBehavior.select();\n }\n if (opts.selectOne) {\n this.selectionBehavior.selectOne();\n }\n if (opts.selectRange) {\n this.selectionBehavior.selectRange();\n }\n if (!opts.anchor) {\n this.anchor(this.selectionBehavior.rangeStartIndex());\n }\n }\n\n /**\n * Safely performs a navigation operation.\n */\n private _navigate(opts: NavOptions<T> = {}, operation: () => boolean) {\n if (opts?.selectRange) {\n this._wrap.set(false);\n this.selectionBehavior.rangeStartIndex.set(this._anchorIndex());\n }\n\n const moved = operation();\n\n if (moved) {\n this.updateSelection(opts);\n }\n\n this._wrap.set(true);\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 SignalLike,\n computed,\n WritableSignalLike,\n signal,\n} from '../behaviors/signal-like/signal-like';\nimport {Tree, TreeItem, TreeInputs as TreeBehaviorInputs} from '../behaviors/tree/tree';\nimport {KeyboardEventManager, PointerEventManager, Modifier} from '../behaviors/event-manager';\n\n/** Represents the required inputs for a tree item. */\nexport interface TreeItemInputs<V> extends Omit<\n TreeItem<V, TreeItemPattern<V>>,\n 'index' | 'parent' | 'visible' | 'expandable'\n> {\n /** The parent item. */\n parent: SignalLike<TreeItemPattern<V> | TreePattern<V>>;\n\n /** Whether this item has children. Children can be lazily loaded. */\n hasChildren: SignalLike<boolean>;\n\n /** The tree pattern this item belongs to. */\n tree: SignalLike<TreePattern<V>>;\n}\n\n/**\n * Represents an item in a Tree.\n */\nexport class TreeItemPattern<V> implements TreeItem<V, TreeItemPattern<V>> {\n /** A unique identifier for this item. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The value of this item. */\n readonly value: SignalLike<V> = () => this.inputs.value();\n\n /** A reference to the item element. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether the item is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The text used by the typeahead search. */\n readonly searchTerm: SignalLike<string> = () => this.inputs.searchTerm();\n\n /** The tree pattern this item belongs to. */\n readonly tree: SignalLike<TreePattern<V>> = () => this.inputs.tree();\n\n /** The parent item. */\n readonly parent: SignalLike<TreeItemPattern<V> | undefined> = computed(() => {\n const parent = this.inputs.parent();\n return parent instanceof TreeItemPattern ? parent : undefined;\n });\n\n /** The children items. */\n readonly children: SignalLike<TreeItemPattern<V>[]> = () => this.inputs.children() ?? [];\n\n /** The position of this item among its siblings. */\n readonly index = computed(() => this.tree().inputs.items().indexOf(this));\n\n /** Whether the item is expandable. It's expandable if children item exist. */\n readonly expandable: SignalLike<boolean> = () => this.inputs.hasChildren();\n\n /** Whether the item is selectable. */\n readonly selectable: SignalLike<boolean> = () => this.inputs.selectable();\n\n /** Whether the item is expanded. */\n readonly expanded: WritableSignalLike<boolean>;\n\n /** The level of the current item in a tree. */\n readonly level: SignalLike<number> = computed(() => this.inputs.parent().level() + 1);\n\n /** Whether this item is visible. */\n readonly visible: SignalLike<boolean> = computed(\n () => this.inputs.parent().expanded() && this.inputs.parent().visible(),\n );\n\n /** The number of items under the same parent at the same level. */\n readonly setsize = computed(() => this.inputs.parent().children().length);\n\n /** The position of this item among its siblings (1-based). */\n readonly posinset = computed(() => this.inputs.parent().children().indexOf(this) + 1);\n\n /** Whether the item is active. */\n readonly active = computed(() => this.tree().activeItem() === this);\n\n /** The tab index of the item. */\n readonly tabIndex = computed(() => this.tree().treeBehavior.getItemTabindex(this));\n\n /** Whether the item is selected. */\n readonly selected: SignalLike<boolean | undefined> = computed(() => {\n if (this.tree().nav()) {\n return undefined;\n }\n if (!this.selectable()) {\n return undefined;\n }\n return this.tree().value().includes(this.value());\n });\n\n /** The current type of this item. */\n readonly current: SignalLike<string | undefined> = computed(() => {\n if (!this.tree().nav()) {\n return undefined;\n }\n if (!this.selectable()) {\n return undefined;\n }\n return this.tree().value().includes(this.value()) ? this.tree().currentType() : undefined;\n });\n\n constructor(readonly inputs: TreeItemInputs<V>) {\n this.expanded = inputs.expanded;\n }\n}\n\n/** The selection operations that the tree can perform. */\ninterface SelectOptions {\n toggle?: boolean;\n selectOne?: boolean;\n selectRange?: boolean;\n anchor?: boolean;\n}\n\n/** Represents the required inputs for a tree. */\nexport interface TreeInputs<V> extends Omit<\n TreeBehaviorInputs<TreeItemPattern<V>, V>,\n 'multiExpandable'\n> {\n /** A unique identifier for the tree. */\n id: SignalLike<string>;\n\n /** Whether the tree is in navigation mode. */\n nav: SignalLike<boolean>;\n\n /** The aria-current type. */\n currentType: SignalLike<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>;\n\n /** The text direction of the tree. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** Controls the state and interactions of a tree view. */\nexport class TreePattern<V> implements TreeInputs<V> {\n /** The tree behavior for the tree. */\n readonly treeBehavior: Tree<TreeItemPattern<V>, V>;\n\n /** Whether the tree has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** The root level is 0. */\n readonly level = () => 0;\n\n /** The root is always expanded. */\n readonly expanded = () => true;\n\n /** The root is always visible. */\n readonly visible = () => true;\n\n /** The tab index of the tree. */\n readonly tabIndex: SignalLike<-1 | 0> = computed(() => this.treeBehavior.tabIndex());\n\n /** The id of the current active item. */\n readonly activeDescendant = computed(() => this.treeBehavior.activeDescendant());\n\n /** The direct children of the root (top-level tree items). */\n readonly children = computed(() =>\n this.inputs.items().filter(item => item.level() === this.level() + 1),\n );\n\n /** Whether the tree selection follows focus. */\n readonly followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** Whether the tree direction is RTL. */\n readonly isRtl = computed(() => this.inputs.textDirection() === 'rtl');\n\n /** The key for navigating to the previous item. */\n readonly prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.isRtl() ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key for navigating to the next item. */\n readonly nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.isRtl() ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key for collapsing an item or moving to its parent. */\n readonly collapseKey = computed(() => {\n if (this.inputs.orientation() === 'horizontal') {\n return 'ArrowUp';\n }\n return this.isRtl() ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key for expanding an item or moving to its first child. */\n readonly expandKey = computed(() => {\n if (this.inputs.orientation() === 'horizontal') {\n return 'ArrowDown';\n }\n return this.isRtl() ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.treeBehavior.isTyping() ? '' : ' '));\n\n /** Regular expression to match characters for typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The keydown event manager for the tree. */\n readonly keydown = computed(() => {\n const manager = new KeyboardEventManager();\n const tree = this.treeBehavior;\n\n manager\n .on(this.prevKey, () => tree.prev({selectOne: this.followFocus()}), {ignoreRepeat: false})\n .on(this.nextKey, () => tree.next({selectOne: this.followFocus()}), {ignoreRepeat: false})\n .on('Home', () => tree.first({selectOne: this.followFocus()}))\n .on('End', () => tree.last({selectOne: this.followFocus()}))\n .on(this.typeaheadRegexp, e => tree.search(e.key, {selectOne: this.followFocus()}))\n .on(Modifier.Shift, '*', () => tree.expandSiblings())\n .on(this.expandKey, () => this._expandOrFirstChild({selectOne: this.followFocus()}))\n .on(this.collapseKey, () => this._collapseOrParent({selectOne: this.followFocus()}));\n\n if (this.inputs.multi()) {\n manager\n // TODO: Tracking the anchor by index can break if the\n // tree is expanded or collapsed causing the index to change.\n .on(Modifier.Any, 'Shift', () => tree.anchor(this.treeBehavior.activeIndex()))\n .on(Modifier.Shift, this.prevKey, () => tree.prev({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on(Modifier.Shift, this.nextKey, () => tree.next({selectRange: true}), {\n ignoreRepeat: false,\n })\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () =>\n tree.first({selectRange: true, anchor: false}),\n )\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () =>\n tree.last({selectRange: true, anchor: false}),\n )\n .on(Modifier.Shift, 'Enter', () => tree.updateSelection({selectRange: true, anchor: false}))\n .on(Modifier.Shift, this.dynamicSpaceKey, () =>\n tree.updateSelection({selectRange: true, anchor: false}),\n );\n }\n\n if (!this.followFocus() && this.inputs.multi()) {\n manager\n .on(this.dynamicSpaceKey, () => tree.toggle())\n .on('Enter', () => tree.toggle(), {preventDefault: !this.nav()})\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => tree.toggleAll());\n }\n\n if (!this.followFocus() && !this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => tree.selectOne());\n manager.on('Enter', () => tree.selectOne(), {preventDefault: !this.nav()});\n }\n\n if (this.inputs.multi() && this.followFocus()) {\n manager\n .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => tree.prev(), {ignoreRepeat: false})\n .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => tree.next(), {ignoreRepeat: false})\n .on([Modifier.Ctrl, Modifier.Meta], this.expandKey, () => this._expandOrFirstChild())\n .on([Modifier.Ctrl, Modifier.Meta], this.collapseKey, () => this._collapseOrParent())\n .on([Modifier.Ctrl, Modifier.Meta], ' ', () => tree.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => tree.toggle())\n .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => tree.first())\n .on([Modifier.Ctrl, Modifier.Meta], 'End', () => tree.last())\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => {\n tree.toggleAll();\n tree.select(); // Ensure the currect item remains selected.\n });\n }\n\n return manager;\n });\n\n /** The pointerdown event manager for the tree. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n if (this.multi()) {\n manager.on(Modifier.Shift, e => this.goto(e, {selectRange: true}));\n }\n\n if (!this.multi()) {\n return manager.on(e => this.goto(e, {selectOne: true}));\n }\n\n if (this.multi() && this.followFocus()) {\n return manager\n .on(e => this.goto(e, {selectOne: true}))\n .on(Modifier.Ctrl, e => this.goto(e, {toggle: true}));\n }\n\n if (this.multi() && !this.followFocus()) {\n return manager.on(e => this.goto(e, {toggle: true}));\n }\n\n return manager;\n });\n\n /** A unique identifier for the tree. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The host native element. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether the tree is in navigation mode. */\n readonly nav: SignalLike<boolean> = () => this.inputs.nav();\n\n /** The aria-current type. */\n readonly currentType: SignalLike<\n 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'\n > = () => this.inputs.currentType();\n\n /** All items in the tree, in document order (DFS-like, a flattened list). */\n readonly items: SignalLike<TreeItemPattern<V>[]> = () => this.inputs.items();\n\n /** The focus strategy used by the tree. */\n readonly focusMode: SignalLike<'roving' | 'activedescendant'> = () => this.inputs.focusMode();\n\n /** Whether the tree is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The currently active item in the tree. */\n readonly activeItem: WritableSignalLike<TreeItemPattern<V> | undefined>;\n\n /** Whether disabled items should be focusable. */\n readonly softDisabled: SignalLike<boolean> = () => this.inputs.softDisabled();\n\n /** Whether the focus should wrap when navigating past the first or last item. */\n readonly wrap: SignalLike<boolean> = () => this.inputs.wrap();\n\n /** The orientation of the tree. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'> = () => this.inputs.orientation();\n\n /** The text direction of the tree. */\n readonly textDirection: SignalLike<'ltr' | 'rtl'> = () => this.textDirection();\n\n /** Whether multiple items can be selected at the same time. */\n readonly multi: SignalLike<boolean> = computed(() => (this.nav() ? false : this.inputs.multi()));\n\n /** The selection mode of the tree. */\n readonly selectionMode: SignalLike<'follow' | 'explicit'> = () => this.inputs.selectionMode();\n\n /** The delay in milliseconds to wait before clearing the typeahead buffer. */\n readonly typeaheadDelay: SignalLike<number> = () => this.inputs.typeaheadDelay();\n\n /** The current selected items of the tree. */\n readonly value: WritableSignalLike<V[]>;\n\n constructor(readonly inputs: TreeInputs<V>) {\n this.activeItem = inputs.activeItem;\n this.value = inputs.value;\n\n this.treeBehavior = new Tree<TreeItemPattern<V>, V>({\n ...inputs,\n multi: this.multi,\n multiExpandable: () => true,\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n if (!this.inputs.multi() && this.inputs.value().length > 1) {\n violations.push(\n `A single-select tree should not have multiple selected options. Selected options: ${this.inputs.value().join(', ')}`,\n );\n }\n\n return violations;\n }\n\n /**\n * Sets the tree to it's default initial state.\n *\n * Sets the active index of the tree to the first focusable selected tree item if one exists.\n * Otherwise, sets focus to the first focusable tree item.\n */\n setDefaultState() {\n let firstItem: TreeItemPattern<V> | undefined;\n\n for (const item of this.inputs.items()) {\n if (!item.visible()) continue;\n if (!this.treeBehavior.isFocusable(item)) continue;\n\n if (firstItem === undefined) {\n firstItem = item;\n }\n\n if (item.selected()) {\n this.activeItem.set(item);\n return;\n }\n }\n\n if (firstItem !== undefined) {\n this.activeItem.set(firstItem);\n }\n }\n\n /** Sets the default active state of the tree before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n this.setDefaultState();\n }\n\n /** Handles keydown events on the tree. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydown().handle(event);\n }\n }\n\n /** Handles pointerdown events on the tree. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.pointerdown().handle(event);\n }\n }\n\n /** Handles focusin events on the tree. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Navigates to the given tree item in the tree. */\n goto(e: PointerEvent, opts?: SelectOptions) {\n const item = this._getItem(e);\n if (!item) return;\n\n this.treeBehavior.goto(item, opts);\n this.treeBehavior.toggleExpansion(item);\n }\n\n /** Expands the active item if possible, otherwise navigates to the first child. */\n _expandOrFirstChild(opts?: SelectOptions) {\n const item = this.treeBehavior.inputs.activeItem();\n if (item && this.treeBehavior.isExpandable(item) && !item.expanded()) {\n this.treeBehavior.expand(item);\n } else {\n this.treeBehavior.firstChild(opts);\n }\n }\n\n /** Collapses the active item if possible, otherwise navigates to the parent. */\n _collapseOrParent(opts?: SelectOptions) {\n const item = this.treeBehavior.inputs.activeItem();\n if (item && this.treeBehavior.isExpandable(item) && item.expanded()) {\n this.treeBehavior.collapse(item);\n } else {\n this.treeBehavior.parent(opts);\n }\n }\n\n /** Retrieves the TreeItemPattern associated with a DOM event, if any. */\n protected _getItem(event: Event): TreeItemPattern<V> | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const element = event.target.closest('[role=\"treeitem\"]');\n return this.inputs.items().find(i => i.element() === element);\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 {TreeInputs, TreePattern, TreeItemPattern} from './tree';\nimport {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {ComboboxPattern, ComboboxTreeControls} from '../combobox/combobox';\n\nexport type ComboboxTreeInputs<V> = TreeInputs<V> & {\n /** The combobox controlling the tree. */\n combobox: SignalLike<ComboboxPattern<TreeItemPattern<V>, V> | undefined>;\n};\n\nexport class ComboboxTreePattern<V>\n extends TreePattern<V>\n implements ComboboxTreeControls<TreeItemPattern<V>, V>\n{\n /** Toggles to expand or collapse a tree item. */\n toggleExpansion = (item?: TreeItemPattern<V>) => this.treeBehavior.toggleExpansion(item);\n\n /** Whether the currently focused item is collapsible. */\n isItemCollapsible = () => this.inputs.activeItem()?.parent() instanceof TreeItemPattern;\n\n /** The ARIA role for the tree. */\n role = () => 'tree' as const;\n\n /* The id of the active (focused) item in the tree. */\n activeId = computed(() => this.treeBehavior.activeDescendant());\n\n /** Returns the currently active (focused) item in the tree. */\n getActiveItem = () => this.inputs.activeItem();\n\n /** The list of items in the tree. */\n override items = computed(() => this.inputs.items());\n\n /** The tab index for the tree. Always -1 because the combobox handles focus. */\n override tabIndex: SignalLike<-1 | 0> = () => -1;\n\n constructor(override readonly inputs: ComboboxTreeInputs<V>) {\n if (inputs.combobox()) {\n inputs.multi = () => false;\n inputs.focusMode = () => 'activedescendant';\n inputs.element = inputs.combobox()!.inputs.inputEl;\n }\n\n super(inputs);\n }\n\n /** Noop. The combobox handles keydown events. */\n override onKeydown(_: KeyboardEvent): void {}\n\n /** Noop. The combobox handles pointerdown events. */\n override onPointerdown(_: PointerEvent): void {}\n\n /** Noop. The combobox controls the open state. */\n override setDefaultState(): void {}\n\n /** Navigates to the specified item in the tree. */\n focus = (item: TreeItemPattern<V>) => this.treeBehavior.goto(item);\n\n /** Navigates to the next focusable item in the tree. */\n next = () => this.treeBehavior.next();\n\n /** Navigates to the previous focusable item in the tree. */\n prev = () => this.treeBehavior.prev();\n\n /** Navigates to the last focusable item in the tree. */\n last = () => this.treeBehavior.last();\n\n /** Navigates to the first focusable item in the tree. */\n first = () => this.treeBehavior.first();\n\n /** Unfocuses the currently focused item in the tree. */\n unfocus = () => this.treeBehavior.unfocus();\n\n // TODO: handle non-selectable parent nodes.\n /** Selects the specified item in the tree or the current active item if not provided. */\n select = (item?: TreeItemPattern<V>) => this.treeBehavior.select(item);\n\n /** Toggles the selection state of the given item in the tree or the current active item if not provided. */\n toggle = (item?: TreeItemPattern<V>) => this.treeBehavior.toggle(item);\n\n /** Clears the selection in the tree. */\n clearSelection = () => this.treeBehavior.deselectAll();\n\n /** Retrieves the TreeItemPattern associated with a pointer event. */\n getItem = (e: PointerEvent) => this._getItem(e);\n\n /** Retrieves the currently selected items in the tree */\n getSelectedItems = () => this.inputs.items().filter(item => item.selected());\n\n /** Sets the value of the combobox tree. */\n setValue = (value: V | undefined) => this.inputs.value.set(value ? [value] : []);\n\n /** Expands the currently focused item if it is expandable, or navigates to the first child. */\n expandItem = () => this._expandOrFirstChild();\n\n /** Collapses the currently focused item if it is expandable, or navigates to the parent. */\n collapseItem = () => this._collapseOrParent();\n\n /** Whether the specified item or the currently active item is expandable. */\n isItemExpandable(item: TreeItemPattern<V> | undefined = this.inputs.activeItem()) {\n return item ? item.expandable() : false;\n }\n\n /** Expands all of the tree items. */\n expandAll = () => this.treeBehavior.expandAll();\n\n /** Collapses all of the tree items. */\n collapseAll = () => this.treeBehavior.collapseAll();\n\n /** Whether the currently active item is selectable. */\n isItemSelectable = (item: TreeItemPattern<V> | undefined = this.inputs.activeItem()) => {\n return item ? item.selectable() : false;\n };\n}\n"],"names":["TreeListFocus","ListFocus","isFocusable","item","visible","Tree","inputs","navigationBehavior","selectionBehavior","typeaheadBehavior","focusBehavior","expansionBehavior","disabled","computed","isListDisabled","activeDescendant","getActiveDescendant","tabIndex","getListTabIndex","activeIndex","_anchorIndex","signal","_wrap","constructor","ListSelection","focusManager","ListTypeahead","ListExpansion","ListNavigation","wrap","getItemTabindex","getItemTabIndex","first","opts","_navigate","last","next","prev","firstChild","activeItem","items","children","lastChild","nextSibling","parent","prevSibling","goto","unfocus","set","undefined","anchor","index","search","char","isTyping","select","selectOne","deselect","deselectAll","toggle","toggleOne","toggleAll","toggleExpansion","isExpandable","expand","open","collapse","close","expandSiblings","siblings","filter","i","forEach","s","expandAll","openAll","collapseAll","closeAll","updateSelection","selectRange","rangeStartIndex","operation","moved","TreeItemPattern","id","value","element","searchTerm","tree","indexOf","expandable","hasChildren","selectable","expanded","level","setsize","length","posinset","active","treeBehavior","selected","nav","includes","current","currentType","TreePattern","hasBeenInteracted","followFocus","selectionMode","isRtl","textDirection","prevKey","orientation","nextKey","collapseKey","expandKey","dynamicSpaceKey","typeaheadRegexp","keydown","manager","KeyboardEventManager","on","ignoreRepeat","e","key","Modifier","Shift","_expandOrFirstChild","_collapseOrParent","multi","Any","Ctrl","Meta","preventDefault","pointerdown","PointerEventManager","focusMode","softDisabled","typeaheadDelay","multiExpandable","validate","violations","push","join","setDefaultState","firstItem","setDefaultStateEffect","onKeydown","event","handle","onPointerdown","onFocusIn","_getItem","target","HTMLElement","closest","find","ComboboxTreePattern","isItemCollapsible","role","activeId","getActiveItem","combobox","inputEl","_","focus","clearSelection","getItem","getSelectedItems","setValue","expandItem","collapseItem","isItemExpandable","isItemSelectable"],"mappings":"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"}

@@ -13,3 +13,3 @@ import * as i0 from '@angular/core';

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -22,3 +22,3 @@ type: DeferredContentAware,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: DeferredContentAware,

@@ -43,3 +43,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -101,3 +101,3 @@ type: DeferredContentAware,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -110,3 +110,3 @@ type: DeferredContent,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: DeferredContent,

@@ -119,3 +119,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -122,0 +122,0 @@ type: DeferredContent,

@@ -12,3 +12,3 @@ import { computed, signal, KeyboardEventManager } from './_signal-like-chunk.mjs';

isFocused = signal(false);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
hasBeenHovered = signal(false);

@@ -67,8 +67,18 @@ _openTimeout;

if (!this.inputs.parent()) {
this.listBehavior.goto(this.inputs.items()[0], {
focusElement: false
});
const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();
if (firstFocusable) {
this.listBehavior.goto(firstFocusable, {
focusElement: false
});
}
}
}
setDefaultStateEffect() {
if (this.hasBeenInteracted() || this.hasBeenHovered()) return;
if (this.inputs.items().length > 0) {
this.setDefaultState();
}
}
onKeydown(event) {
this.hasBeenInteracted.set(true);
this.keydownManager().handle(event);

@@ -153,3 +163,3 @@ }

this.isFocused.set(true);
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
}

@@ -291,3 +301,3 @@ onFocusOut(event) {

isFocused = signal(false);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
disabled = () => this.inputs.disabled();

@@ -314,5 +324,15 @@ keydownManager = computed(() => {

setDefaultState() {
this.inputs.activeItem.set(this.inputs.items()[0]);
const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();
if (firstFocusable) {
this.inputs.activeItem.set(firstFocusable);
}
}
setDefaultStateEffect() {
if (this.hasBeenInteracted()) return;
if (this.inputs.items().length > 0) {
this.setDefaultState();
}
}
onKeydown(event) {
this.hasBeenInteracted.set(true);
this.keydownManager().handle(event);

@@ -338,3 +358,3 @@ }

this.isFocused.set(true);
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
}

@@ -391,3 +411,3 @@ onFocusOut(event) {

expanded = signal(false);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
role = () => 'button';

@@ -417,2 +437,3 @@ hasPopup = () => true;

if (!this.inputs.disabled()) {
this.hasBeenInteracted.set(true);
this.keydownManager().handle(event);

@@ -429,3 +450,3 @@ }

onFocusIn() {
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
}

@@ -470,3 +491,3 @@ onFocusOut(event) {

active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
tabIndex = computed(() => {

@@ -525,3 +546,3 @@ if (this.submenu() && this.submenu()?.inputs.activeItem()) {

onFocusIn() {
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
}

@@ -528,0 +549,0 @@ }

@@ -1,1 +0,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 {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\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The role of the menu. */\n role = () => 'menu';\n\n /** Whether the menu is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n visible = computed(() => (this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true));\n\n /** Controls list behavior for the menu items. */\n listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n isFocused = signal(false);\n\n /** Whether the menu has received focus. */\n hasBeenFocused = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n 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 tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n 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 _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private _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 dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n root: SignalLike<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 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 /** Sets the default state for the menu. */\n setDefaultState() {\n if (!this.inputs.parent()) {\n this.listBehavior.goto(this.inputs.items()[0], {focusElement: false});\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\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(event.target as Node));\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 = event.target as Node | null;\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.hasBeenFocused.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 listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private _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 dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n isFocused = signal(false);\n\n /** Whether the menubar has been focused. */\n hasBeenFocused = signal(false);\n\n /** Whether the menubar is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n 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 this.inputs.activeItem.set(this.inputs.items()[0]);\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\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(event.target as Node));\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(event.target as Node));\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.hasBeenFocused.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 is expanded. */\n expanded = signal(false);\n\n /** Whether the menu trigger has received focus. */\n hasBeenFocused = signal(false);\n\n /** The role of the menu trigger. */\n role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n tabIndex = computed(() => (this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0));\n\n /** Whether the menu trigger is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n 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 /** Handles keyboard events for the menu trigger. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\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.hasBeenFocused.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.inputs.menu()?.first();\n } else if (opts?.last) {\n this.inputs.menu()?.last();\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\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 value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received focus. */\n hasBeenFocused = signal(false);\n\n /** The tab index of the menu item. */\n 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 index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n role = () => 'menuitem';\n\n /** Whether the menu item has a popup. */\n hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n 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.hasBeenFocused.set(true);\n }\n}\n"],"names":["MenuPattern","inputs","id","role","disabled","visible","computed","parent","expanded","listBehavior","isFocused","signal","hasBeenFocused","hasBeenHovered","_openTimeout","_closeTimeout","tabIndex","shouldFocus","root","MenuTriggerPattern","MenuBarPattern","_expandKey","textDirection","_collapseKey","dynamicSpaceKey","isTyping","typeaheadRegexp","grandparent","keydownManager","KeyboardEventManager","on","next","ignoreRepeat","prev","first","last","trigger","closeAll","expand","collapse","e","search","key","constructor","List","value","setDefaultState","goto","items","focusElement","onKeydown","event","handle","onMouseOver","set","item","find","i","element","contains","target","activeItem","MenuItemPattern","_clearTimeouts","_closeItem","_clearCloseTimeout","_openItem","_clearOpenTimeout","setTimeout","close","undefined","expansionDelay","open","onMouseOut","relatedTarget","onClick","submit","onFocusIn","onFocusOut","parentEl","refocus","siblings","filter","hasPopup","submenu","menu","itemSelected","clearTimeout","_nextKey","_previousKey","opts","prevItem","unfocus","focus","menuitems","length","menuitem","pop","_expanded","concat","searchTerm","active","getItemTabindex","index","indexOf","controls","selectable"],"mappings":"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"}
{"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 {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\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The role of the menu. */\n role = () => 'menu';\n\n /** Whether the menu is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n visible = computed(() => (this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true));\n\n /** Controls list behavior for the menu items. */\n listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n isFocused = signal(false);\n\n /** Whether the menu has received interaction. */\n hasBeenInteracted = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n 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 tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n 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 _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private _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 dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n root: SignalLike<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 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 /** 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(event.target as Node));\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 = event.target as Node | null;\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 listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private _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 dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n isFocused = signal(false);\n\n /** Whether the menubar has been interacted with. */\n hasBeenInteracted = signal(false);\n\n /** Whether the menubar is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n 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(event.target as Node));\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(event.target as Node));\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 expanded = signal(false);\n\n /** Whether the menu trigger has received interaction. */\n hasBeenInteracted = signal(false);\n\n /** The role of the menu trigger. */\n role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n tabIndex = computed(() => (this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0));\n\n /** Whether the menu trigger is disabled. */\n disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n 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 /** 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.inputs.menu()?.first();\n } else if (opts?.last) {\n this.inputs.menu()?.last();\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\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 value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received interaction. */\n hasBeenInteracted = signal(false);\n\n /** The tab index of the menu item. */\n 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 index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n role = () => 'menuitem';\n\n /** Whether the menu item has a popup. */\n hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n 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":["MenuPattern","inputs","id","role","disabled","visible","computed","parent","expanded","listBehavior","isFocused","signal","hasBeenInteracted","hasBeenHovered","_openTimeout","_closeTimeout","tabIndex","shouldFocus","root","MenuTriggerPattern","MenuBarPattern","_expandKey","textDirection","_collapseKey","dynamicSpaceKey","isTyping","typeaheadRegexp","grandparent","keydownManager","KeyboardEventManager","on","next","ignoreRepeat","prev","first","last","trigger","closeAll","expand","collapse","e","search","key","constructor","List","value","setDefaultState","firstFocusable","navigationBehavior","peekFirst","goto","focusElement","setDefaultStateEffect","items","length","onKeydown","event","set","handle","onMouseOver","item","find","i","element","contains","target","activeItem","MenuItemPattern","_clearTimeouts","_closeItem","_clearCloseTimeout","_openItem","_clearOpenTimeout","setTimeout","close","undefined","expansionDelay","open","onMouseOut","relatedTarget","onClick","submit","onFocusIn","onFocusOut","parentEl","refocus","siblings","filter","hasPopup","submenu","menu","itemSelected","clearTimeout","_nextKey","_previousKey","opts","prevItem","unfocus","focus","menuitems","menuitem","pop","_expanded","concat","searchTerm","active","getItemTabindex","index","indexOf","controls","selectable"],"mappings":"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"}

@@ -0,5 +1,5 @@

import { ClickEventManager } from './_click-event-manager-chunk.mjs';
import { ListExpansion } from './_expansion-chunk.mjs';
import { computed, signal, KeyboardEventManager } from './_signal-like-chunk.mjs';
import { ListFocus, ListNavigation } from './_list-navigation-chunk.mjs';
import { PointerEventManager } from './_pointer-event-manager-chunk.mjs';

@@ -68,2 +68,3 @@ class LabelControl {

expansionBehavior;
hasBeenInteracted = signal(false);
activeTab = () => this.inputs.activeItem();

@@ -95,4 +96,4 @@ selectedTab = signal(undefined);

});
pointerdown = computed(() => {
return new PointerEventManager().on(e => this._navigate(() => this.navigationBehavior.goto(this._getItem(e)), true));
clickManager = computed(() => {
return new ClickEventManager().on(e => this._navigate(() => this.navigationBehavior.goto(this._getItem(e)), true));
});

@@ -127,12 +128,21 @@ constructor(inputs) {

}
setDefaultStateEffect() {
if (this.hasBeenInteracted()) return;
this.setDefaultState();
}
onKeydown(event) {
if (!this.disabled()) {
this.hasBeenInteracted.set(true);
this.keydown().handle(event);
}
}
onPointerdown(event) {
onClick(event) {
if (!this.disabled()) {
this.pointerdown().handle(event);
this.hasBeenInteracted.set(true);
this.clickManager().handle(event);
}
}
onFocusIn() {
this.hasBeenInteracted.set(true);
}
open(tab) {

@@ -139,0 +149,0 @@ tab ??= this.activeTab();

@@ -1,1 +0,1 @@

{"version":3,"file":"_tabs-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/label/label.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tabs/tabs.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 */\nimport {computed, SignalLike} from '../signal-like/signal-like';\n\n/** Represents the required inputs for the label control. */\nexport interface LabelControlInputs {\n /** The default `aria-labelledby` ids. */\n defaultLabelledBy: SignalLike<string[]>;\n}\n\n/** Represents the optional inputs for the label control. */\nexport interface LabelControlOptionalInputs {\n /** The `aria-label`. */\n label?: SignalLike<string | undefined>;\n\n /** The user-provided `aria-labelledby` ids. */\n labelledBy?: SignalLike<string[]>;\n}\n\n/** Controls label and description of an element. */\nexport class LabelControl {\n /** The `aria-label`. */\n readonly label = computed(() => this.inputs.label?.());\n\n /** The `aria-labelledby` ids. */\n readonly labelledBy = computed(() => {\n const label = this.label();\n const labelledBy = this.inputs.labelledBy?.();\n const defaultLabelledBy = this.inputs.defaultLabelledBy();\n\n if (labelledBy && labelledBy.length > 0) {\n return labelledBy;\n }\n\n // If an aria-label is provided by developers, do not set aria-labelledby with the\n // defaultLabelledBy value because if both attributes are set, aria-labelledby will be used.\n if (label) {\n return [];\n }\n\n return defaultLabelledBy;\n });\n\n constructor(readonly inputs: LabelControlInputs & LabelControlOptionalInputs) {}\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 {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {ExpansionItem, ListExpansionInputs, ListExpansion} from '../behaviors/expansion/expansion';\nimport {\n SignalLike,\n computed,\n signal,\n WritableSignalLike,\n} from '../behaviors/signal-like/signal-like';\nimport {LabelControl, LabelControlOptionalInputs} from '../behaviors/label/label';\nimport {ListFocus} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigationItem,\n ListNavigation,\n ListNavigationInputs,\n} from '../behaviors/list-navigation/list-navigation';\n\n/** The required inputs to tabs. */\nexport interface TabInputs\n extends Omit<ListNavigationItem, 'index'>, Omit<ExpansionItem, 'expandable'> {\n /** The parent tablist that controls the tab. */\n tablist: SignalLike<TabListPattern>;\n\n /** The remote tabpanel controlled by the tab. */\n tabpanel: SignalLike<TabPanelPattern | undefined>;\n\n /** The remote tabpanel unique identifier. */\n value: SignalLike<string>;\n}\n\n/** A tab in a tablist. */\nexport class TabPattern {\n /** A global unique identifier for the tab. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The index of the tab. */\n readonly index = computed(() => this.inputs.tablist().inputs.items().indexOf(this));\n\n /** The remote tabpanel unique identifier. */\n readonly value: SignalLike<string> = () => this.inputs.value();\n\n /** Whether the tab is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The html element that should receive focus. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether this tab has expandable panel. */\n readonly expandable: SignalLike<boolean> = () => true;\n\n /** Whether the tab panel is expanded. */\n readonly expanded: WritableSignalLike<boolean>;\n\n /** Whether the tab is active. */\n readonly active = computed(() => this.inputs.tablist().inputs.activeItem() === this);\n\n /** Whether the tab is selected. */\n readonly selected = computed(() => this.inputs.tablist().selectedTab() === this);\n\n /** The tab index of the tab. */\n readonly tabIndex = computed(() => this.inputs.tablist().focusBehavior.getItemTabIndex(this));\n\n /** The id of the tabpanel associated with the tab. */\n readonly controls = computed(() => this.inputs.tabpanel()?.id());\n\n constructor(readonly inputs: TabInputs) {\n this.expanded = inputs.expanded;\n }\n\n /** Opens the tab. */\n open(): boolean {\n return this.inputs.tablist().open(this);\n }\n}\n\n/** The required inputs for the tabpanel. */\nexport interface TabPanelInputs extends LabelControlOptionalInputs {\n /** A global unique identifier for the tabpanel. */\n id: SignalLike<string>;\n\n /** The tab that controls this tabpanel. */\n tab: SignalLike<TabPattern | undefined>;\n\n /** A local unique identifier for the tabpanel. */\n value: SignalLike<string>;\n}\n\n/** A tabpanel associated with a tab. */\nexport class TabPanelPattern {\n /** A global unique identifier for the tabpanel. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** A local unique identifier for the tabpanel. */\n readonly value: SignalLike<string> = () => this.inputs.value();\n\n /** Controls label for this tabpanel. */\n readonly labelManager: LabelControl;\n\n /** Whether the tabpanel is hidden. */\n readonly hidden = computed(() => this.inputs.tab()?.expanded() === false);\n\n /** The tab index of this tabpanel. */\n readonly tabIndex = computed(() => (this.hidden() ? -1 : 0));\n\n /** The aria-labelledby value for this tabpanel. */\n readonly labelledBy = computed(() =>\n this.labelManager.labelledBy().length > 0\n ? this.labelManager.labelledBy().join(' ')\n : undefined,\n );\n\n constructor(readonly inputs: TabPanelInputs) {\n this.labelManager = new LabelControl({\n ...inputs,\n defaultLabelledBy: computed(() => (this.inputs.tab() ? [this.inputs.tab()!.id()] : [])),\n });\n }\n}\n\n/** The required inputs for the tablist. */\nexport interface TabListInputs\n extends\n Omit<ListNavigationInputs<TabPattern>, 'multi'>,\n Omit<ListExpansionInputs, 'multiExpandable' | 'items'> {\n /** The selection strategy used by the tablist. */\n selectionMode: SignalLike<'follow' | 'explicit'>;\n}\n\n/** Controls the state of a tablist. */\nexport class TabListPattern {\n /** The list focus behavior for the tablist. */\n readonly focusBehavior: ListFocus<TabPattern>;\n\n /** The list navigation behavior for the tablist. */\n readonly navigationBehavior: ListNavigation<TabPattern>;\n\n /** Controls expansion for the tablist. */\n readonly expansionBehavior: ListExpansion;\n\n /** The currently active tab. */\n readonly activeTab: SignalLike<TabPattern | undefined> = () => this.inputs.activeItem();\n\n /** The currently selected tab. */\n readonly selectedTab: WritableSignalLike<TabPattern | undefined> = signal(undefined);\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'> = () => this.inputs.orientation();\n\n /** Whether the tablist is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The tab index of the tablist. */\n readonly tabIndex = computed(() => this.focusBehavior.getListTabIndex());\n\n /** The id of the current active tab. */\n readonly activeDescendant = computed(() => this.focusBehavior.getActiveDescendant());\n\n /** Whether selection should follow focus. */\n readonly followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** The key used to navigate to the previous tab in the tablist. */\n readonly prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next item in the list. */\n readonly nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the tablist. */\n readonly keydown = computed(() => {\n return new KeyboardEventManager()\n .on(\n this.prevKey,\n () => this._navigate(() => this.navigationBehavior.prev(), this.followFocus()),\n {ignoreRepeat: false},\n )\n .on(\n this.nextKey,\n () => this._navigate(() => this.navigationBehavior.next(), this.followFocus()),\n {ignoreRepeat: false},\n )\n .on('Home', () => this._navigate(() => this.navigationBehavior.first(), this.followFocus()))\n .on('End', () => this._navigate(() => this.navigationBehavior.last(), this.followFocus()))\n .on(' ', () => this.open())\n .on('Enter', () => this.open());\n });\n\n /** The pointerdown event manager for the tablist. */\n readonly pointerdown = computed(() => {\n return new PointerEventManager().on(e =>\n this._navigate(() => this.navigationBehavior.goto(this._getItem(e)!), true),\n );\n });\n\n constructor(readonly inputs: TabListInputs) {\n this.focusBehavior = new ListFocus(inputs);\n\n this.navigationBehavior = new ListNavigation({\n ...inputs,\n focusManager: this.focusBehavior,\n });\n\n this.expansionBehavior = new ListExpansion({\n ...inputs,\n multiExpandable: () => false,\n });\n }\n\n /**\n * Sets the tablist to its default initial state.\n *\n * Sets the active index of the tablist to the first focusable selected\n * tab if one exists. Otherwise, sets focus to the first focusable tab.\n *\n * This method should be called once the tablist and its tabs are properly initialized.\n */\n setDefaultState() {\n let firstItem: TabPattern | undefined;\n\n for (const item of this.inputs.items()) {\n if (!this.focusBehavior.isFocusable(item)) continue;\n\n if (firstItem === undefined) {\n firstItem = item;\n }\n\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n if (firstItem !== undefined) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Handles keydown events for the tablist. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** The pointerdown event manager for the tablist. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /** Opens the tab by given value. */\n open(value: string): boolean;\n\n /** Opens the given tab or the current active tab. */\n open(tab?: TabPattern): boolean;\n\n open(tab: TabPattern | string | undefined): boolean {\n tab ??= this.activeTab();\n\n if (typeof tab === 'string') {\n tab = this.inputs.items().find(t => t.value() === tab);\n }\n\n if (tab === undefined) return false;\n\n const success = this.expansionBehavior.open(tab);\n if (success) {\n this.selectedTab.set(tab);\n }\n\n return success;\n }\n\n /** Executes a navigation operation and expand the active tab if needed. */\n private _navigate(op: () => boolean, shouldExpand: boolean = false): void {\n const success = op();\n if (success && shouldExpand) {\n this.open();\n }\n }\n\n /** Returns the tab item associated with the given pointer event. */\n private _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"tab\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":["LabelControl","inputs","label","computed","labelledBy","defaultLabelledBy","length","constructor","TabPattern","id","index","tablist","items","indexOf","value","disabled","element","expandable","expanded","active","activeItem","selected","selectedTab","tabIndex","focusBehavior","getItemTabIndex","controls","tabpanel","open","TabPanelPattern","labelManager","hidden","tab","join","undefined","TabListPattern","navigationBehavior","expansionBehavior","activeTab","signal","orientation","getListTabIndex","activeDescendant","getActiveDescendant","followFocus","selectionMode","prevKey","textDirection","nextKey","keydown","KeyboardEventManager","on","_navigate","prev","ignoreRepeat","next","first","last","pointerdown","PointerEventManager","e","goto","_getItem","ListFocus","ListNavigation","focusManager","ListExpansion","multiExpandable","setDefaultState","firstItem","item","isFocusable","set","onKeydown","event","handle","onPointerdown","find","t","success","op","shouldExpand","target","HTMLElement","closest","i"],"mappings":"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"}
{"version":3,"file":"_tabs-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/label/label.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/tabs/tabs.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 */\nimport {computed, SignalLike} from '../signal-like/signal-like';\n\n/** Represents the required inputs for the label control. */\nexport interface LabelControlInputs {\n /** The default `aria-labelledby` ids. */\n defaultLabelledBy: SignalLike<string[]>;\n}\n\n/** Represents the optional inputs for the label control. */\nexport interface LabelControlOptionalInputs {\n /** The `aria-label`. */\n label?: SignalLike<string | undefined>;\n\n /** The user-provided `aria-labelledby` ids. */\n labelledBy?: SignalLike<string[]>;\n}\n\n/** Controls label and description of an element. */\nexport class LabelControl {\n /** The `aria-label`. */\n readonly label = computed(() => this.inputs.label?.());\n\n /** The `aria-labelledby` ids. */\n readonly labelledBy = computed(() => {\n const label = this.label();\n const labelledBy = this.inputs.labelledBy?.();\n const defaultLabelledBy = this.inputs.defaultLabelledBy();\n\n if (labelledBy && labelledBy.length > 0) {\n return labelledBy;\n }\n\n // If an aria-label is provided by developers, do not set aria-labelledby with the\n // defaultLabelledBy value because if both attributes are set, aria-labelledby will be used.\n if (label) {\n return [];\n }\n\n return defaultLabelledBy;\n });\n\n constructor(readonly inputs: LabelControlInputs & LabelControlOptionalInputs) {}\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 {KeyboardEventManager} from '../behaviors/event-manager';\nimport {ClickEventManager} from '../behaviors/event-manager/click-event-manager';\nimport {ExpansionItem, ListExpansionInputs, ListExpansion} from '../behaviors/expansion/expansion';\nimport {\n SignalLike,\n computed,\n signal,\n WritableSignalLike,\n} from '../behaviors/signal-like/signal-like';\nimport {LabelControl, LabelControlOptionalInputs} from '../behaviors/label/label';\nimport {ListFocus} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigationItem,\n ListNavigation,\n ListNavigationInputs,\n} from '../behaviors/list-navigation/list-navigation';\n\n/** The required inputs to tabs. */\nexport interface TabInputs\n extends Omit<ListNavigationItem, 'index'>, Omit<ExpansionItem, 'expandable'> {\n /** The parent tablist that controls the tab. */\n tablist: SignalLike<TabListPattern>;\n\n /** The remote tabpanel controlled by the tab. */\n tabpanel: SignalLike<TabPanelPattern | undefined>;\n\n /** The remote tabpanel unique identifier. */\n value: SignalLike<string>;\n}\n\n/** A tab in a tablist. */\nexport class TabPattern {\n /** A global unique identifier for the tab. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** The index of the tab. */\n readonly index = computed(() => this.inputs.tablist().inputs.items().indexOf(this));\n\n /** The remote tabpanel unique identifier. */\n readonly value: SignalLike<string> = () => this.inputs.value();\n\n /** Whether the tab is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The html element that should receive focus. */\n readonly element: SignalLike<HTMLElement> = () => this.inputs.element()!;\n\n /** Whether this tab has expandable panel. */\n readonly expandable: SignalLike<boolean> = () => true;\n\n /** Whether the tab panel is expanded. */\n readonly expanded: WritableSignalLike<boolean>;\n\n /** Whether the tab is active. */\n readonly active = computed(() => this.inputs.tablist().inputs.activeItem() === this);\n\n /** Whether the tab is selected. */\n readonly selected = computed(() => this.inputs.tablist().selectedTab() === this);\n\n /** The tab index of the tab. */\n readonly tabIndex = computed(() => this.inputs.tablist().focusBehavior.getItemTabIndex(this));\n\n /** The id of the tabpanel associated with the tab. */\n readonly controls = computed(() => this.inputs.tabpanel()?.id());\n\n constructor(readonly inputs: TabInputs) {\n this.expanded = inputs.expanded;\n }\n\n /** Opens the tab. */\n open(): boolean {\n return this.inputs.tablist().open(this);\n }\n}\n\n/** The required inputs for the tabpanel. */\nexport interface TabPanelInputs extends LabelControlOptionalInputs {\n /** A global unique identifier for the tabpanel. */\n id: SignalLike<string>;\n\n /** The tab that controls this tabpanel. */\n tab: SignalLike<TabPattern | undefined>;\n\n /** A local unique identifier for the tabpanel. */\n value: SignalLike<string>;\n}\n\n/** A tabpanel associated with a tab. */\nexport class TabPanelPattern {\n /** A global unique identifier for the tabpanel. */\n readonly id: SignalLike<string> = () => this.inputs.id();\n\n /** A local unique identifier for the tabpanel. */\n readonly value: SignalLike<string> = () => this.inputs.value();\n\n /** Controls label for this tabpanel. */\n readonly labelManager: LabelControl;\n\n /** Whether the tabpanel is hidden. */\n readonly hidden = computed(() => this.inputs.tab()?.expanded() === false);\n\n /** The tab index of this tabpanel. */\n readonly tabIndex = computed(() => (this.hidden() ? -1 : 0));\n\n /** The aria-labelledby value for this tabpanel. */\n readonly labelledBy = computed(() =>\n this.labelManager.labelledBy().length > 0\n ? this.labelManager.labelledBy().join(' ')\n : undefined,\n );\n\n constructor(readonly inputs: TabPanelInputs) {\n this.labelManager = new LabelControl({\n ...inputs,\n defaultLabelledBy: computed(() => (this.inputs.tab() ? [this.inputs.tab()!.id()] : [])),\n });\n }\n}\n\n/** The required inputs for the tablist. */\nexport interface TabListInputs\n extends\n Omit<ListNavigationInputs<TabPattern>, 'multi'>,\n Omit<ListExpansionInputs, 'multiExpandable' | 'items'> {\n /** The selection strategy used by the tablist. */\n selectionMode: SignalLike<'follow' | 'explicit'>;\n}\n\n/** Controls the state of a tablist. */\nexport class TabListPattern {\n /** The list focus behavior for the tablist. */\n readonly focusBehavior: ListFocus<TabPattern>;\n\n /** The list navigation behavior for the tablist. */\n readonly navigationBehavior: ListNavigation<TabPattern>;\n\n /** Controls expansion for the tablist. */\n readonly expansionBehavior: ListExpansion;\n\n /** Whether the tablist has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** The currently active tab. */\n readonly activeTab: SignalLike<TabPattern | undefined> = () => this.inputs.activeItem();\n\n /** The currently selected tab. */\n readonly selectedTab: WritableSignalLike<TabPattern | undefined> = signal(undefined);\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'> = () => this.inputs.orientation();\n\n /** Whether the tablist is disabled. */\n readonly disabled: SignalLike<boolean> = () => this.inputs.disabled();\n\n /** The tab index of the tablist. */\n readonly tabIndex = computed(() => this.focusBehavior.getListTabIndex());\n\n /** The id of the current active tab. */\n readonly activeDescendant = computed(() => this.focusBehavior.getActiveDescendant());\n\n /** Whether selection should follow focus. */\n readonly followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** The key used to navigate to the previous tab in the tablist. */\n readonly prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next item in the list. */\n readonly nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the tablist. */\n readonly keydown = computed(() => {\n return new KeyboardEventManager()\n .on(\n this.prevKey,\n () => this._navigate(() => this.navigationBehavior.prev(), this.followFocus()),\n {ignoreRepeat: false},\n )\n .on(\n this.nextKey,\n () => this._navigate(() => this.navigationBehavior.next(), this.followFocus()),\n {ignoreRepeat: false},\n )\n .on('Home', () => this._navigate(() => this.navigationBehavior.first(), this.followFocus()))\n .on('End', () => this._navigate(() => this.navigationBehavior.last(), this.followFocus()))\n .on(' ', () => this.open())\n .on('Enter', () => this.open());\n });\n\n /** The click event manager for the tablist. */\n readonly clickManager = computed(() => {\n return new ClickEventManager<PointerEvent>().on(e =>\n this._navigate(() => this.navigationBehavior.goto(this._getItem(e)!), true),\n );\n });\n\n constructor(readonly inputs: TabListInputs) {\n this.focusBehavior = new ListFocus(inputs);\n\n this.navigationBehavior = new ListNavigation({\n ...inputs,\n focusManager: this.focusBehavior,\n });\n\n this.expansionBehavior = new ListExpansion({\n ...inputs,\n multiExpandable: () => false,\n });\n }\n\n /**\n * Sets the tablist to its default initial state.\n *\n * Sets the active index of the tablist to the first focusable selected\n * tab if one exists. Otherwise, sets focus to the first focusable tab.\n *\n * This method should be called once the tablist and its tabs are properly initialized.\n */\n setDefaultState() {\n let firstItem: TabPattern | undefined;\n\n for (const item of this.inputs.items()) {\n if (!this.focusBehavior.isFocusable(item)) continue;\n\n if (firstItem === undefined) {\n firstItem = item;\n }\n\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n if (firstItem !== undefined) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Sets the default active state of the tablist before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n this.setDefaultState();\n }\n\n /** Handles keydown events for the tablist. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydown().handle(event);\n }\n }\n\n /** The click event manager for the tablist. */\n onClick(event: PointerEvent) {\n if (!this.disabled()) {\n this.hasBeenInteracted.set(true);\n this.clickManager().handle(event);\n }\n }\n\n /** Handles focusin events for the tablist. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Opens the tab by given value. */\n open(value: string): boolean;\n\n /** Opens the given tab or the current active tab. */\n open(tab?: TabPattern): boolean;\n\n open(tab: TabPattern | string | undefined): boolean {\n tab ??= this.activeTab();\n\n if (typeof tab === 'string') {\n tab = this.inputs.items().find(t => t.value() === tab);\n }\n\n if (tab === undefined) return false;\n\n const success = this.expansionBehavior.open(tab);\n if (success) {\n this.selectedTab.set(tab);\n }\n\n return success;\n }\n\n /** Executes a navigation operation and expand the active tab if needed. */\n private _navigate(op: () => boolean, shouldExpand: boolean = false): void {\n const success = op();\n if (success && shouldExpand) {\n this.open();\n }\n }\n\n /** Returns the tab item associated with the given pointer event. */\n private _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"tab\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":["LabelControl","inputs","label","computed","labelledBy","defaultLabelledBy","length","constructor","TabPattern","id","index","tablist","items","indexOf","value","disabled","element","expandable","expanded","active","activeItem","selected","selectedTab","tabIndex","focusBehavior","getItemTabIndex","controls","tabpanel","open","TabPanelPattern","labelManager","hidden","tab","join","undefined","TabListPattern","navigationBehavior","expansionBehavior","hasBeenInteracted","signal","activeTab","orientation","getListTabIndex","activeDescendant","getActiveDescendant","followFocus","selectionMode","prevKey","textDirection","nextKey","keydown","KeyboardEventManager","on","_navigate","prev","ignoreRepeat","next","first","last","clickManager","ClickEventManager","e","goto","_getItem","ListFocus","ListNavigation","focusManager","ListExpansion","multiExpandable","setDefaultState","firstItem","item","isFocusable","set","setDefaultStateEffect","onKeydown","event","handle","onClick","onFocusIn","find","t","success","op","shouldExpand","target","HTMLElement","closest","i"],"mappings":"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"}

@@ -1,2 +0,2 @@

import { computed, KeyboardEventManager } from './_signal-like-chunk.mjs';
import { signal, computed, KeyboardEventManager } from './_signal-like-chunk.mjs';
import { List } from './_list-chunk.mjs';

@@ -7,2 +7,3 @@

listBehavior;
hasBeenInteracted = signal(false);
orientation;

@@ -106,7 +107,12 @@ softDisabled;

if (this.disabled()) return;
this.hasBeenInteracted.set(true);
this._keydown().handle(event);
}
onPointerdown(event) {
this.hasBeenInteracted.set(true);
event.preventDefault();
}
onFocusIn() {
this.hasBeenInteracted.set(true);
}
onClick(event) {

@@ -124,2 +130,8 @@ if (this.disabled() || event.pointerType === '') return;

}
setDefaultStateEffect() {
if (this.hasBeenInteracted()) return;
if (this.inputs.items().length > 0) {
this.setDefaultState();
}
}
}

@@ -126,0 +138,0 @@

@@ -1,1 +0,1 @@

{"version":3,"file":"_toolbar-widget-group-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {ToolbarWidgetPattern} from './toolbar-widget';\n\n/** Represents the required inputs for a toolbar. */\nexport type ToolbarInputs<V> = Omit<\n ListInputs<ToolbarWidgetPattern<V>, V>,\n 'multi' | 'typeaheadDelay' | 'selectionMode' | 'focusMode'\n> & {\n /** A function that returns the toolbar item associated with a given element. */\n getItem: (e: Element) => ToolbarWidgetPattern<V> | undefined;\n};\n\n/** Controls the state of a toolbar. */\nexport class ToolbarPattern<V> {\n /** The list behavior for the toolbar. */\n readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether disabled items in the group should be focusable. */\n readonly softDisabled: SignalLike<boolean>;\n\n /** Whether the toolbar is disabled. */\n readonly disabled = computed(() => this.listBehavior.disabled());\n\n /** The tab index of the toolbar (if using activedescendant). */\n readonly tabIndex = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active widget (if using activedescendant). */\n readonly activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** The currently active item in the toolbar. */\n readonly activeItem = () => this.listBehavior.inputs.activeItem();\n\n /** The key used to navigate to the previous widget. */\n private readonly _prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next widget. */\n private readonly _nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The alternate key used to navigate to the previous widget. */\n private readonly _altPrevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n }\n return 'ArrowUp';\n });\n\n /** The alternate key used to navigate to the next widget. */\n private readonly _altNextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n }\n return 'ArrowDown';\n });\n\n /** The keydown event manager for the toolbar. */\n private readonly _keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n return manager\n .on(this._nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on(this._prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this._altNextKey, () => this._groupNext(), {ignoreRepeat: false})\n .on(this._altPrevKey, () => this._groupPrev(), {ignoreRepeat: false})\n .on(' ', () => this.select())\n .on('Enter', () => this.select())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n });\n\n /** Navigates to the next widget in a widget group. */\n private _groupNext() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekNext()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekFirst({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.next();\n }\n\n /** Navigates to the previous widget in a widget group. */\n private _groupPrev() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekPrev()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekLast({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.prev();\n }\n\n /** Navigates to the widget targeted by a pointer event. */\n private _goto(e: MouseEvent) {\n const item = this.inputs.getItem(e.target as Element);\n\n if (item) {\n this.listBehavior.goto(item);\n this.select();\n }\n }\n\n select() {\n const group = this.inputs.activeItem()?.group();\n\n if (!group?.multi()) {\n group?.inputs.items().forEach(i => this.listBehavior.deselect(i));\n }\n\n this.listBehavior.toggle();\n }\n\n constructor(readonly inputs: ToolbarInputs<V>) {\n this.orientation = inputs.orientation;\n this.softDisabled = inputs.softDisabled;\n\n this.listBehavior = new List({\n ...inputs,\n multi: () => true,\n focusMode: () => 'roving',\n selectionMode: () => 'explicit',\n typeaheadDelay: () => 0, // Toolbar widgets do not support typeahead.\n });\n }\n\n /** Handles keydown events for the toolbar. */\n onKeydown(event: KeyboardEvent) {\n if (this.disabled()) return;\n this._keydown().handle(event);\n }\n\n onPointerdown(event: PointerEvent) {\n event.preventDefault();\n }\n\n /** Handles click events for the toolbar. */\n onClick(event: MouseEvent) {\n if (this.disabled() || (event as PointerEvent).pointerType === '') return;\n this._goto(event);\n }\n\n /**\n * Sets the toolbar to its default initial state.\n *\n * Sets the active index to the selected widget if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable widget.\n */\n setDefaultState() {\n const firstItem = this.listBehavior.navigationBehavior.peekFirst({\n items: this.inputs.items(),\n });\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\nimport type {ToolbarPattern} from './toolbar';\nimport {ToolbarWidgetGroupPattern} from './toolbar-widget-group';\n\n/** Represents the required inputs for a toolbar widget in a toolbar. */\nexport interface ToolbarWidgetInputs<V> extends Omit<\n ListItem<V>,\n 'searchTerm' | 'index' | 'selectable'\n> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V>>;\n\n /** A reference to the parent widget group. */\n group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined>;\n}\n\nexport class ToolbarWidgetPattern<V> implements ListItem<V> {\n /** A unique identifier for the widget. */\n readonly id = () => this.inputs.id();\n\n /** The html element that should receive focus. */\n readonly element = () => this.inputs.element();\n\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled() || this.group()?.disabled() || false;\n\n /** A reference to the parent toolbar. */\n readonly group = () => this.inputs.group();\n\n /** A reference to the toolbar containing the widget. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** The tabindex of the widget. */\n readonly tabIndex = computed(() => this.toolbar().listBehavior.getItemTabindex(this));\n\n /** The text used by the typeahead search. */\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n\n /** The value associated with the widget. */\n readonly value = () => this.inputs.value();\n\n /** Whether the widget is selectable. */\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n\n /** The position of the widget within the toolbar. */\n readonly index = computed(() => this.toolbar().inputs.items().indexOf(this) ?? -1);\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = computed(() =>\n this.toolbar().listBehavior.inputs.value().includes(this.value()),\n );\n\n /** Whether the widget is currently the active one (focused). */\n readonly active: SignalLike<boolean> = computed(() => this.toolbar().activeItem() === this);\n\n constructor(readonly inputs: ToolbarWidgetInputs<V>) {}\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 {ListItem} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport type {ToolbarPattern} from './toolbar';\n\n/** Represents the required inputs for a toolbar widget group. */\nexport interface ToolbarWidgetGroupInputs<T extends ListItem<V>, V> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V> | undefined>;\n\n /** Whether the widget group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The list of items within the widget group. */\n items: SignalLike<T[]>;\n\n /** Whether the group allows multiple widgets to be selected. */\n multi: SignalLike<boolean>;\n}\n\n/** A group of widgets within a toolbar that provides nested navigation. */\nexport class ToolbarWidgetGroupPattern<T extends ListItem<V>, V> {\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** A reference to the parent toolbar. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = () => this.inputs.multi();\n\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n readonly value = () => '' as V; // Unused because toolbar does not support selection.\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n readonly element = () => undefined; // Unused because toolbar does not focus the group element.\n\n constructor(readonly inputs: ToolbarWidgetGroupInputs<T, V>) {}\n}\n"],"names":["ToolbarPattern","inputs","listBehavior","orientation","softDisabled","disabled","computed","tabIndex","activeDescendant","activeItem","_prevKey","textDirection","_nextKey","_altPrevKey","_altNextKey","_keydown","manager","KeyboardEventManager","on","next","ignoreRepeat","prev","_groupNext","_groupPrev","select","first","last","currGroup","group","nextGroup","navigationBehavior","peekNext","goto","peekFirst","items","peekPrev","peekLast","_goto","e","item","getItem","target","multi","forEach","i","deselect","toggle","constructor","List","focusMode","selectionMode","typeaheadDelay","onKeydown","event","handle","onPointerdown","preventDefault","onClick","pointerType","setDefaultState","firstItem","set","ToolbarWidgetPattern","id","element","toolbar","getItemTabindex","searchTerm","value","selectable","index","indexOf","selected","includes","active","ToolbarWidgetGroupPattern","undefined"],"mappings":"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"}
{"version":3,"file":"_toolbar-widget-group-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {ToolbarWidgetPattern} from './toolbar-widget';\n\n/** Represents the required inputs for a toolbar. */\nexport type ToolbarInputs<V> = Omit<\n ListInputs<ToolbarWidgetPattern<V>, V>,\n 'multi' | 'typeaheadDelay' | 'selectionMode' | 'focusMode'\n> & {\n /** A function that returns the toolbar item associated with a given element. */\n getItem: (e: Element) => ToolbarWidgetPattern<V> | undefined;\n};\n\n/** Controls the state of a toolbar. */\nexport class ToolbarPattern<V> {\n /** The list behavior for the toolbar. */\n readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;\n\n /** Whether the toolbar has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether disabled items in the group should be focusable. */\n readonly softDisabled: SignalLike<boolean>;\n\n /** Whether the toolbar is disabled. */\n readonly disabled = computed(() => this.listBehavior.disabled());\n\n /** The tab index of the toolbar (if using activedescendant). */\n readonly tabIndex = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active widget (if using activedescendant). */\n readonly activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** The currently active item in the toolbar. */\n readonly activeItem = () => this.listBehavior.inputs.activeItem();\n\n /** The key used to navigate to the previous widget. */\n private readonly _prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next widget. */\n private readonly _nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The alternate key used to navigate to the previous widget. */\n private readonly _altPrevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n }\n return 'ArrowUp';\n });\n\n /** The alternate key used to navigate to the next widget. */\n private readonly _altNextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n }\n return 'ArrowDown';\n });\n\n /** The keydown event manager for the toolbar. */\n private readonly _keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n return manager\n .on(this._nextKey, () => this.listBehavior.next(), {ignoreRepeat: false})\n .on(this._prevKey, () => this.listBehavior.prev(), {ignoreRepeat: false})\n .on(this._altNextKey, () => this._groupNext(), {ignoreRepeat: false})\n .on(this._altPrevKey, () => this._groupPrev(), {ignoreRepeat: false})\n .on(' ', () => this.select())\n .on('Enter', () => this.select())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n });\n\n /** Navigates to the next widget in a widget group. */\n private _groupNext() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekNext()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekFirst({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.next();\n }\n\n /** Navigates to the previous widget in a widget group. */\n private _groupPrev() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekPrev()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekLast({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.prev();\n }\n\n /** Navigates to the widget targeted by a pointer event. */\n private _goto(e: MouseEvent) {\n const item = this.inputs.getItem(e.target as Element);\n\n if (item) {\n this.listBehavior.goto(item);\n this.select();\n }\n }\n\n select() {\n const group = this.inputs.activeItem()?.group();\n\n if (!group?.multi()) {\n group?.inputs.items().forEach(i => this.listBehavior.deselect(i));\n }\n\n this.listBehavior.toggle();\n }\n\n constructor(readonly inputs: ToolbarInputs<V>) {\n this.orientation = inputs.orientation;\n this.softDisabled = inputs.softDisabled;\n\n this.listBehavior = new List({\n ...inputs,\n multi: () => true,\n focusMode: () => 'roving',\n selectionMode: () => 'explicit',\n typeaheadDelay: () => 0, // Toolbar widgets do not support typeahead.\n });\n }\n\n /** Handles keydown events for the toolbar. */\n onKeydown(event: KeyboardEvent) {\n if (this.disabled()) return;\n this.hasBeenInteracted.set(true);\n this._keydown().handle(event);\n }\n\n onPointerdown(event: PointerEvent) {\n this.hasBeenInteracted.set(true);\n event.preventDefault();\n }\n\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles click events for the toolbar. */\n onClick(event: MouseEvent) {\n if (this.disabled() || (event as PointerEvent).pointerType === '') return;\n this._goto(event);\n }\n\n /**\n * Sets the toolbar to its default initial state.\n *\n * Sets the active index to the selected widget if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable widget.\n */\n setDefaultState() {\n const firstItem = this.listBehavior.navigationBehavior.peekFirst({\n items: this.inputs.items(),\n });\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Sets the default active state of the toolbar 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","/**\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 {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\nimport type {ToolbarPattern} from './toolbar';\nimport {ToolbarWidgetGroupPattern} from './toolbar-widget-group';\n\n/** Represents the required inputs for a toolbar widget in a toolbar. */\nexport interface ToolbarWidgetInputs<V> extends Omit<\n ListItem<V>,\n 'searchTerm' | 'index' | 'selectable'\n> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V>>;\n\n /** A reference to the parent widget group. */\n group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined>;\n}\n\nexport class ToolbarWidgetPattern<V> implements ListItem<V> {\n /** A unique identifier for the widget. */\n readonly id = () => this.inputs.id();\n\n /** The html element that should receive focus. */\n readonly element = () => this.inputs.element();\n\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled() || this.group()?.disabled() || false;\n\n /** A reference to the parent toolbar. */\n readonly group = () => this.inputs.group();\n\n /** A reference to the toolbar containing the widget. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** The tabindex of the widget. */\n readonly tabIndex = computed(() => this.toolbar().listBehavior.getItemTabindex(this));\n\n /** The text used by the typeahead search. */\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n\n /** The value associated with the widget. */\n readonly value = () => this.inputs.value();\n\n /** Whether the widget is selectable. */\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n\n /** The position of the widget within the toolbar. */\n readonly index = computed(() => this.toolbar().inputs.items().indexOf(this) ?? -1);\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = computed(() =>\n this.toolbar().listBehavior.inputs.value().includes(this.value()),\n );\n\n /** Whether the widget is currently the active one (focused). */\n readonly active: SignalLike<boolean> = computed(() => this.toolbar().activeItem() === this);\n\n constructor(readonly inputs: ToolbarWidgetInputs<V>) {}\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 {ListItem} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport type {ToolbarPattern} from './toolbar';\n\n/** Represents the required inputs for a toolbar widget group. */\nexport interface ToolbarWidgetGroupInputs<T extends ListItem<V>, V> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V> | undefined>;\n\n /** Whether the widget group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The list of items within the widget group. */\n items: SignalLike<T[]>;\n\n /** Whether the group allows multiple widgets to be selected. */\n multi: SignalLike<boolean>;\n}\n\n/** A group of widgets within a toolbar that provides nested navigation. */\nexport class ToolbarWidgetGroupPattern<T extends ListItem<V>, V> {\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** A reference to the parent toolbar. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = () => this.inputs.multi();\n\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n readonly value = () => '' as V; // Unused because toolbar does not support selection.\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n readonly element = () => undefined; // Unused because toolbar does not focus the group element.\n\n constructor(readonly inputs: ToolbarWidgetGroupInputs<T, V>) {}\n}\n"],"names":["ToolbarPattern","inputs","listBehavior","hasBeenInteracted","signal","orientation","softDisabled","disabled","computed","tabIndex","activeDescendant","activeItem","_prevKey","textDirection","_nextKey","_altPrevKey","_altNextKey","_keydown","manager","KeyboardEventManager","on","next","ignoreRepeat","prev","_groupNext","_groupPrev","select","first","last","currGroup","group","nextGroup","navigationBehavior","peekNext","goto","peekFirst","items","peekPrev","peekLast","_goto","e","item","getItem","target","multi","forEach","i","deselect","toggle","constructor","List","focusMode","selectionMode","typeaheadDelay","onKeydown","event","set","handle","onPointerdown","preventDefault","onFocusIn","onClick","pointerType","setDefaultState","firstItem","setDefaultStateEffect","length","ToolbarWidgetPattern","id","element","toolbar","getItemTabindex","searchTerm","value","selectable","index","indexOf","selected","includes","active","ToolbarWidgetGroupPattern","undefined"],"mappings":"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"}

@@ -602,3 +602,3 @@ import { computed, signal, linkedSignal, KeyboardEventManager, Modifier } from './_signal-like-chunk.mjs';

isFocused = signal(false);
hasBeenFocused = signal(false);
hasBeenInteracted = signal(false);
dragging = signal(false);

@@ -725,2 +725,3 @@ prevColKey = computed(() => this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft');

if (this.disabled()) return;
this.hasBeenInteracted.set(true);
this.activeCell()?.onKeydown(event);

@@ -731,2 +732,3 @@ this.keydown().handle(event);

if (this.disabled()) return;
this.hasBeenInteracted.set(true);
this.pointerdown().handle(event);

@@ -750,3 +752,3 @@ }

this.isFocused.set(true);
this.hasBeenFocused.set(true);
this.hasBeenInteracted.set(true);
if (this.dragging()) return;

@@ -772,3 +774,3 @@ const cell = this.inputs.getCell(event.target);

setDefaultStateEffect() {
if (this.hasBeenFocused()) return;
if (this.hasBeenInteracted()) return;
this.gridBehavior.setDefaultState();

@@ -775,0 +777,0 @@ }

@@ -38,3 +38,3 @@ import * as i0 from '@angular/core';

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -47,3 +47,3 @@ type: AccordionPanel,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: AccordionPanel,

@@ -81,3 +81,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -163,3 +163,3 @@ type: AccordionPanel,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -172,3 +172,3 @@ type: AccordionTrigger,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: AccordionTrigger,

@@ -230,3 +230,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -342,3 +342,3 @@ type: AccordionTrigger,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -351,3 +351,3 @@ type: AccordionGroup,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: AccordionGroup,

@@ -409,3 +409,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -477,3 +477,3 @@ type: AccordionGroup,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -486,3 +486,3 @@ type: AccordionContent,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: AccordionContent,

@@ -499,3 +499,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -502,0 +502,0 @@ type: AccordionContent,

import { Version } from '@angular/core';
const VERSION = new Version('22.0.0-next.3');
const VERSION = new Version('22.0.0-next.4');
export { VERSION };
//# sourceMappingURL=aria.mjs.map

@@ -1,1 +0,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.0.0-next.3');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
{"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.0.0-next.4');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}

@@ -21,3 +21,3 @@ import * as i0 from '@angular/core';

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -30,3 +30,3 @@ type: ComboboxPopup,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ComboboxPopup,

@@ -41,3 +41,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -126,3 +126,3 @@ type: ComboboxPopup,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -135,3 +135,3 @@ type: Combobox,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Combobox,

@@ -210,3 +210,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -316,3 +316,3 @@ type: Combobox,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -325,3 +325,3 @@ type: ComboboxDialog,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ComboboxDialog,

@@ -348,3 +348,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -390,3 +390,3 @@ type: ComboboxDialog,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -399,3 +399,3 @@ type: ComboboxInput,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ComboboxInput,

@@ -437,3 +437,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -478,3 +478,3 @@ type: ComboboxInput,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -487,3 +487,3 @@ type: ComboboxPopupContainer,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ComboboxPopupContainer,

@@ -501,3 +501,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -504,0 +504,0 @@ type: ComboboxPopupContainer,

@@ -108,3 +108,3 @@ import * as i0 from '@angular/core';

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -117,3 +117,3 @@ type: Grid,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Grid,

@@ -217,3 +217,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -390,3 +390,3 @@ type: Grid,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -399,3 +399,3 @@ type: GridCellWidget,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: GridCellWidget,

@@ -459,3 +459,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -645,3 +645,3 @@ type: GridCellWidget,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -654,3 +654,3 @@ type: GridCell,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: GridCell,

@@ -764,3 +764,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -918,3 +918,3 @@ type: GridCell,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -927,3 +927,3 @@ type: GridRow,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: GridRow,

@@ -965,3 +965,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -968,0 +968,0 @@ type: GridRow,

@@ -10,8 +10,9 @@ import * as i0 from '@angular/core';

import '@angular/core/primitives/signals';
import './_click-event-manager-chunk.mjs';
import './_list-chunk.mjs';
import './_list-navigation-chunk.mjs';
import './_list-typeahead-chunk.mjs';
import './_pointer-event-manager-chunk.mjs';
import './_deferred-content-chunk.mjs';
import './_combobox-chunk.mjs';
import './_pointer-event-manager-chunk.mjs';

@@ -60,3 +61,3 @@ const LISTBOX = new InjectionToken('LISTBOX');

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -69,3 +70,3 @@ type: Option,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Option,

@@ -122,3 +123,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -242,5 +243,2 @@ type: Option,

_pattern;
_hasFocused = signal(false, ...(ngDevMode ? [{
debugName: "_hasFocused"
}] : []));
constructor() {

@@ -269,5 +267,3 @@ const inputs = {

afterRenderEffect(() => {
if (!this._hasFocused()) {
this._pattern.setDefaultState();
}
this._pattern.setDefaultStateEffect();
});

@@ -289,5 +285,2 @@ afterRenderEffect(() => {

}
_onFocus() {
this._hasFocused.set(true);
}
scrollActiveItemIntoView(options = {

@@ -303,3 +296,3 @@ block: 'nearest'

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -312,3 +305,3 @@ type: Listbox,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Listbox,

@@ -405,4 +398,4 @@ isStandalone: true,

"keydown": "_pattern.onKeydown($event)",
"pointerdown": "_pattern.onPointerdown($event)",
"focusin": "_onFocus()"
"click": "_pattern.onClick($event)",
"focusin": "_pattern.onFocusIn()"
},

@@ -438,3 +431,3 @@ properties: {

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -457,4 +450,4 @@ type: Listbox,

'(keydown)': '_pattern.onKeydown($event)',
'(pointerdown)': '_pattern.onPointerdown($event)',
'(focusin)': '_onFocus()'
'(click)': '_pattern.onClick($event)',
'(focusin)': '_pattern.onFocusIn()'
},

@@ -461,0 +454,0 @@ hostDirectives: [ComboboxPopup],

@@ -1,1 +0,1 @@

{"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\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 {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed<OptionPattern<V>[]>(() =>\n this._options().map(option => option._pattern),\n );\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the currently selected items. */\n value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** Whether the listbox has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the value is always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","searchTerm","label","textContent","_listboxPattern","value","required","disabled","transform","booleanAttribute","selected","OptionPattern","listbox","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","readonly","model","_hasFocused","signal","constructor","activeItem","undefined","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultState","untracked","some","i","listBehavior","unfocus","v","filter","_onFocus","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}
{"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\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 {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed<OptionPattern<V>[]>(() =>\n this._options().map(option => option._pattern),\n );\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the currently selected items. */\n value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the value is always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","searchTerm","label","textContent","_listboxPattern","value","required","disabled","transform","booleanAttribute","selected","OptionPattern","listbox","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","readonly","model","constructor","activeItem","signal","undefined","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","v","filter","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}

@@ -57,3 +57,3 @@ import * as i0 from '@angular/core';

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -66,3 +66,3 @@ type: MenuTrigger,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: MenuTrigger,

@@ -116,3 +116,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -222,3 +222,3 @@ type: MenuTrigger,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -231,3 +231,3 @@ type: MenuItem,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: MenuItem,

@@ -299,3 +299,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -426,5 +426,3 @@ type: MenuItem,

afterRenderEffect(() => {
if (!this._pattern.hasBeenFocused()) {
this._pattern.setDefaultState();
}
this._pattern.setDefaultStateEffect();
});

@@ -437,3 +435,3 @@ }

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -446,3 +444,3 @@ type: MenuBar,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: MenuBar,

@@ -525,3 +523,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -680,3 +678,3 @@ type: MenuBar,

} else {
this._deferredContentAware?.contentVisible.set(this._pattern.visible() || !!this.parent()?._pattern.hasBeenFocused());
this._deferredContentAware?.contentVisible.set(this._pattern.visible() || !!this.parent()?._pattern.hasBeenInteracted());
}

@@ -691,5 +689,3 @@ });

afterRenderEffect(() => {
if (!this._pattern.hasBeenFocused() && !this._pattern.hasBeenHovered() && this._items().length) {
untracked(() => this._pattern.setDefaultState());
}
this._pattern.setDefaultStateEffect();
});

@@ -702,3 +698,3 @@ }

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -711,3 +707,3 @@ type: Menu,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Menu,

@@ -795,3 +791,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -888,3 +884,3 @@ type: Menu,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -897,3 +893,3 @@ type: MenuContent,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: MenuContent,

@@ -911,3 +907,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -914,0 +910,0 @@ type: MenuContent,

@@ -1,1 +0,1 @@

{"version":3,"file":"menu.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-trigger.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-content.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 booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport {MenuTriggerPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport type {Menu} from './menu';\n\n/**\n * A trigger for a menu.\n *\n * The `ngMenuTrigger` directive is used to open and close menus. It can be applied to\n * any interactive element (e.g., a button) to associate it with a `ngMenu` instance.\n * It also supports linking to sub-menus when applied to a `ngMenuItem`.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Open Menu</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Item 1</div>\n * <div ngMenuItem>Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuTrigger]',\n exportAs: 'ngMenuTrigger',\n host: {\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-controls]': '_pattern.menu()?.id()',\n '(click)': '_pattern.onClick()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class MenuTrigger<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The menu associated with the trigger. */\n menu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menu trigger is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The menu trigger ui pattern instance. */\n _pattern: MenuTriggerPattern<V> = new MenuTriggerPattern({\n textDirection: this.textDirection,\n element: computed(() => this._elementRef.nativeElement),\n menu: computed(() => this.menu()?._pattern),\n disabled: () => this.disabled(),\n });\n\n constructor() {\n effect(() => this.menu()?.parent.set(this));\n }\n\n /** Opens the menu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\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 {Menu} from './menu';\nimport type {MenuBar} from './menu-bar';\n\n/** Token used to expose menus to their child components. */\nexport const MENU_COMPONENT = new InjectionToken<Menu<any> | MenuBar<any>>('MENU_COMPONENT');\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, effect, ElementRef, inject, input, model} from '@angular/core';\nimport {MenuItemPattern} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MENU_COMPONENT} from './menu-tokens';\nimport type {Menu} from './menu';\nimport type {MenuBar} from './menu-bar';\n\n/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n * <div ngMenu (itemSelected)=\"doAction()\">\n * <div ngMenuItem >Action Item</div>\n * <div ngMenuItem [submenu]=\"anotherMenu\">Submenu Trigger</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuItem]',\n exportAs: 'ngMenuItem',\n host: {\n 'role': 'menuitem',\n '(focusin)': '_pattern.onFocusIn()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.data-active]': 'active()',\n '[attr.aria-label]': 'value()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.submenu()?.id()',\n },\n})\nexport class MenuItem<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The unique ID of the menu item. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-item-', true));\n\n /** The value of the menu item, used as the default aria-label */\n readonly value = input.required<V>();\n\n /** Whether the menu item is disabled. */\n readonly disabled = input<boolean>(false);\n\n // TODO(wagnermaciel): Discuss whether all inputs should be models.\n\n /** The search term associated with the menu item. */\n readonly searchTerm = model<string>('');\n\n /** A reference to the parent menu or menubar. */\n readonly parent = inject<Menu<V> | MenuBar<V>>(MENU_COMPONENT, {optional: true});\n\n /** The submenu associated with the menu item. */\n readonly submenu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** The menu item ui pattern instance. */\n readonly _pattern: MenuItemPattern<V> = new MenuItemPattern<V>({\n id: this.id,\n value: this.value,\n element: computed(() => this._elementRef.nativeElement),\n disabled: this.disabled,\n searchTerm: this.searchTerm,\n parent: computed(() => this.parent?._pattern),\n submenu: computed(() => this.submenu()?._pattern),\n });\n\n constructor() {\n effect(() => this.submenu()?.parent.set(this));\n }\n\n /** Opens the submenu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the submenu. */\n close() {\n this._pattern.close();\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport {SignalLike, MenuBarPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MenuItem} from './menu-item';\nimport {MENU_COMPONENT} from './menu-tokens';\n\n/**\n * A menu bar of menu items.\n *\n * Like the `ngMenu`, a `ngMenuBar` is used to offer a list of menu item choices to users.\n * However, a menubar is used to display a persistent, top-level, always-visible set of\n * menu item choices, typically found at the top of an application window.\n *\n * ```html\n * <div ngMenuBar>\n * <button ngMenuTrigger [menu]=\"fileMenu\">File</button>\n * <button ngMenuTrigger [menu]=\"editMenu\">Edit</button>\n * </div>\n *\n * <div ngMenu #fileMenu=\"ngMenu\">\n * <div ngMenuItem>New</div>\n * <div ngMenuItem>Open</div>\n * </div>\n *\n * <div ngMenu #editMenu=\"ngMenu\">\n * <div ngMenuItem>Cut</div>\n * <div ngMenuItem>Copy</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuBar]',\n exportAs: 'ngMenuBar',\n host: {\n 'role': 'menubar',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n providers: [{provide: MENU_COMPONENT, useExisting: MenuBar}],\n})\nexport class MenuBar<V> {\n /** The menu items contained in the menubar. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n readonly _items: SignalLike<MenuItem<V>[]> = () =>\n this._allItems().filter(i => i.parent === this);\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the menubar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menubar is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The values of the currently selected menu items. */\n readonly value = model<V[]>([]);\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuBarPattern<V>;\n\n /** The menu items as a writable signal. */\n private readonly _itemPatterns = signal<any[]>([]);\n\n /** A callback function triggered when a menu item is selected. */\n readonly itemSelected = output<V>();\n\n constructor() {\n this._pattern = new MenuBarPattern({\n ...this,\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'horizontal',\n selectionMode: () => 'explicit',\n itemSelected: (value: V) => this.itemSelected.emit(value),\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n });\n\n afterRenderEffect(() => {\n this._itemPatterns.set(this._items().map(i => i._pattern));\n });\n\n afterRenderEffect(() => {\n if (!this._pattern.hasBeenFocused()) {\n this._pattern.setDefaultState();\n }\n });\n }\n\n /** Closes the menubar. */\n close() {\n this._pattern.close();\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n signal,\n untracked,\n} from '@angular/core';\nimport {MenuPattern, DeferredContentAware} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MenuTrigger} from './menu-trigger';\nimport {MenuItem} from './menu-item';\nimport {MenuBar} from './menu-bar';\nimport {MENU_COMPONENT} from './menu-tokens';\n\n/**\n * A list of menu items.\n *\n * A `ngMenu` is used to offer a list of menu item choices to users. Menus can be nested\n * within other menus to create sub-menus. It works in conjunction with `ngMenuTrigger`\n * and `ngMenuItem` directives.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Options</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem value=\"Star\">Star</div>\n * <div ngMenuItem value=\"Edit\">Edit</div>\n * <div ngMenuItem value=\"More\" [submenu]=\"subMenu\">More</div>\n * </div>\n *\n * <div ngMenu #subMenu=\"ngMenu\">\n * <div ngMenuItem value=\"Sub Item 1\">Sub Item 1</div>\n * <div ngMenuItem value=\"Sub Item 2\">Sub Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenu]',\n exportAs: 'ngMenu',\n host: {\n 'role': 'menu',\n '[attr.id]': '_pattern.id()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-visible]': 'visible()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(mouseout)': '_pattern.onMouseOut($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(click)': '_pattern.onClick($event)',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n providers: [{provide: MENU_COMPONENT, useExisting: Menu}],\n})\nexport class Menu<V> {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The menu items contained in the menu. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n /** The menu items that are direct children of this menu. */\n readonly _items: Signal<MenuItem<V>[]> = computed(() =>\n this._allItems().filter(i => i.parent === this),\n );\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The unique ID of the menu. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-', true));\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the menu is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** A reference to the parent menu item or menu trigger. */\n readonly parent = signal<MenuTrigger<V> | MenuItem<V> | undefined>(undefined);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuPattern<V>;\n\n /**\n * The menu items as a writable signal.\n *\n * TODO(wagnermaciel): This would normally be a computed, but using a computed causes a bug where\n * sometimes the items array is empty. The bug can be reproduced by switching this to use a\n * computed and then quickly opening and closing menus in the dev app.\n */\n private readonly _itemPatterns = () => this._items().map(i => i._pattern);\n\n /** Whether the menu is visible. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** The tab index of the menu. */\n readonly tabIndex = computed(() => this._pattern.tabIndex());\n\n /** A callback function triggered when a menu item is selected. */\n readonly itemSelected = output<V>();\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n readonly expansionDelay = input<number>(100); // Arbitrarily chosen.\n\n constructor() {\n this._pattern = new MenuPattern({\n ...this,\n parent: computed(() => this.parent()?._pattern),\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'vertical',\n selectionMode: () => 'explicit',\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n itemSelected: (value: V) => this.itemSelected.emit(value),\n });\n\n afterRenderEffect(() => {\n const parent = this.parent();\n if (parent instanceof MenuItem && parent.parent instanceof MenuBar) {\n this._deferredContentAware?.contentVisible.set(true);\n } else {\n this._deferredContentAware?.contentVisible.set(\n this._pattern.visible() || !!this.parent()?._pattern.hasBeenFocused(),\n );\n }\n });\n\n // TODO(wagnermaciel): This is a redundancy needed for if the user uses display: none to hide\n // submenus. In those cases, the ui pattern is calling focus() before the ui has a chance to\n // update the display property. The result is focus() being called on an element that is not\n // focusable. This simply retries focusing the element after render.\n afterRenderEffect(() => {\n if (this._pattern.visible()) {\n const activeItem = untracked(() => this._pattern.inputs.activeItem());\n this._pattern.listBehavior.goto(activeItem!);\n }\n });\n\n afterRenderEffect(() => {\n if (\n !this._pattern.hasBeenFocused() &&\n !this._pattern.hasBeenHovered() &&\n this._items().length\n ) {\n untracked(() => this._pattern.setDefaultState());\n }\n });\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\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 {Directive} from '@angular/core';\nimport {DeferredContent} from '../private';\n\n/**\n * Defers the rendering of the menu content.\n *\n * This structural directive should be applied to an `ng-template` within a `ngMenu`\n * or `ngMenuBar` to lazily render its content only when the menu is opened.\n *\n * ```html\n * <div ngMenu #myMenu=\"ngMenu\">\n * <ng-template ngMenuContent>\n * <div ngMenuItem>Lazy Item 1</div>\n * <div ngMenuItem>Lazy Item 2</div>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: 'ng-template[ngMenuContent]',\n exportAs: 'ngMenuContent',\n hostDirectives: [DeferredContent],\n})\nexport class MenuContent {}\n"],"names":["MenuTrigger","_elementRef","inject","ElementRef","element","nativeElement","textDirection","Directionality","valueSignal","menu","input","undefined","expanded","computed","_pattern","hasPopup","disabled","transform","booleanAttribute","softDisabled","MenuTriggerPattern","constructor","effect","parent","set","open","first","close","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","exportAs","ngImport","decorators","args","MENU_COMPONENT","InjectionToken","MenuItem","id","_IdGenerator","getId","value","required","searchTerm","model","optional","submenu","active","MenuItemPattern","outputs","attributes","MenuBar","_allItems","contentChildren","descendants","_items","filter","i","wrap","typeaheadDelay","_itemPatterns","signal","itemSelected","output","MenuBarPattern","items","multi","focusMode","orientation","selectionMode","emit","activeItem","afterRenderEffect","map","hasBeenFocused","setDefaultState","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","providers","provide","useExisting","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","Output","Menu","_deferredContentAware","DeferredContentAware","ngDevMode","debugName","visible","tabIndex","expansionDelay","MenuPattern","contentVisible","untracked","listBehavior","goto","hasBeenHovered","length","hostDirectives","directive","i1","MenuContent","DeferredContent"],"mappings":"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"}
{"version":3,"file":"menu.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-trigger.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/menu-content.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 booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport {MenuTriggerPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport type {Menu} from './menu';\n\n/**\n * A trigger for a menu.\n *\n * The `ngMenuTrigger` directive is used to open and close menus. It can be applied to\n * any interactive element (e.g., a button) to associate it with a `ngMenu` instance.\n * It also supports linking to sub-menus when applied to a `ngMenuItem`.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Open Menu</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Item 1</div>\n * <div ngMenuItem>Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuTrigger]',\n exportAs: 'ngMenuTrigger',\n host: {\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-controls]': '_pattern.menu()?.id()',\n '(click)': '_pattern.onClick()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class MenuTrigger<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The menu associated with the trigger. */\n menu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menu trigger is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The menu trigger ui pattern instance. */\n _pattern: MenuTriggerPattern<V> = new MenuTriggerPattern({\n textDirection: this.textDirection,\n element: computed(() => this._elementRef.nativeElement),\n menu: computed(() => this.menu()?._pattern),\n disabled: () => this.disabled(),\n });\n\n constructor() {\n effect(() => this.menu()?.parent.set(this));\n }\n\n /** Opens the menu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\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 {Menu} from './menu';\nimport type {MenuBar} from './menu-bar';\n\n/** Token used to expose menus to their child components. */\nexport const MENU_COMPONENT = new InjectionToken<Menu<any> | MenuBar<any>>('MENU_COMPONENT');\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, effect, ElementRef, inject, input, model} from '@angular/core';\nimport {MenuItemPattern} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MENU_COMPONENT} from './menu-tokens';\nimport type {Menu} from './menu';\nimport type {MenuBar} from './menu-bar';\n\n/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n * <div ngMenu (itemSelected)=\"doAction()\">\n * <div ngMenuItem >Action Item</div>\n * <div ngMenuItem [submenu]=\"anotherMenu\">Submenu Trigger</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuItem]',\n exportAs: 'ngMenuItem',\n host: {\n 'role': 'menuitem',\n '(focusin)': '_pattern.onFocusIn()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.data-active]': 'active()',\n '[attr.aria-label]': 'value()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.submenu()?.id()',\n },\n})\nexport class MenuItem<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The unique ID of the menu item. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-item-', true));\n\n /** The value of the menu item, used as the default aria-label */\n readonly value = input.required<V>();\n\n /** Whether the menu item is disabled. */\n readonly disabled = input<boolean>(false);\n\n // TODO(wagnermaciel): Discuss whether all inputs should be models.\n\n /** The search term associated with the menu item. */\n readonly searchTerm = model<string>('');\n\n /** A reference to the parent menu or menubar. */\n readonly parent = inject<Menu<V> | MenuBar<V>>(MENU_COMPONENT, {optional: true});\n\n /** The submenu associated with the menu item. */\n readonly submenu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** The menu item ui pattern instance. */\n readonly _pattern: MenuItemPattern<V> = new MenuItemPattern<V>({\n id: this.id,\n value: this.value,\n element: computed(() => this._elementRef.nativeElement),\n disabled: this.disabled,\n searchTerm: this.searchTerm,\n parent: computed(() => this.parent?._pattern),\n submenu: computed(() => this.submenu()?._pattern),\n });\n\n constructor() {\n effect(() => this.submenu()?.parent.set(this));\n }\n\n /** Opens the submenu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the submenu. */\n close() {\n this._pattern.close();\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport {SignalLike, MenuBarPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MenuItem} from './menu-item';\nimport {MENU_COMPONENT} from './menu-tokens';\n\n/**\n * A menu bar of menu items.\n *\n * Like the `ngMenu`, a `ngMenuBar` is used to offer a list of menu item choices to users.\n * However, a menubar is used to display a persistent, top-level, always-visible set of\n * menu item choices, typically found at the top of an application window.\n *\n * ```html\n * <div ngMenuBar>\n * <button ngMenuTrigger [menu]=\"fileMenu\">File</button>\n * <button ngMenuTrigger [menu]=\"editMenu\">Edit</button>\n * </div>\n *\n * <div ngMenu #fileMenu=\"ngMenu\">\n * <div ngMenuItem>New</div>\n * <div ngMenuItem>Open</div>\n * </div>\n *\n * <div ngMenu #editMenu=\"ngMenu\">\n * <div ngMenuItem>Cut</div>\n * <div ngMenuItem>Copy</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenuBar]',\n exportAs: 'ngMenuBar',\n host: {\n 'role': 'menubar',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n providers: [{provide: MENU_COMPONENT, useExisting: MenuBar}],\n})\nexport class MenuBar<V> {\n /** The menu items contained in the menubar. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n readonly _items: SignalLike<MenuItem<V>[]> = () =>\n this._allItems().filter(i => i.parent === this);\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the menubar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menubar is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The values of the currently selected menu items. */\n readonly value = model<V[]>([]);\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuBarPattern<V>;\n\n /** The menu items as a writable signal. */\n private readonly _itemPatterns = signal<any[]>([]);\n\n /** A callback function triggered when a menu item is selected. */\n readonly itemSelected = output<V>();\n\n constructor() {\n this._pattern = new MenuBarPattern({\n ...this,\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'horizontal',\n selectionMode: () => 'explicit',\n itemSelected: (value: V) => this.itemSelected.emit(value),\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n });\n\n afterRenderEffect(() => {\n this._itemPatterns.set(this._items().map(i => i._pattern));\n });\n\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n }\n\n /** Closes the menubar. */\n close() {\n this._pattern.close();\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 afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n signal,\n untracked,\n} from '@angular/core';\nimport {MenuPattern, DeferredContentAware} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {MenuTrigger} from './menu-trigger';\nimport {MenuItem} from './menu-item';\nimport {MenuBar} from './menu-bar';\nimport {MENU_COMPONENT} from './menu-tokens';\n\n/**\n * A list of menu items.\n *\n * A `ngMenu` is used to offer a list of menu item choices to users. Menus can be nested\n * within other menus to create sub-menus. It works in conjunction with `ngMenuTrigger`\n * and `ngMenuItem` directives.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Options</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem value=\"Star\">Star</div>\n * <div ngMenuItem value=\"Edit\">Edit</div>\n * <div ngMenuItem value=\"More\" [submenu]=\"subMenu\">More</div>\n * </div>\n *\n * <div ngMenu #subMenu=\"ngMenu\">\n * <div ngMenuItem value=\"Sub Item 1\">Sub Item 1</div>\n * <div ngMenuItem value=\"Sub Item 2\">Sub Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: '[ngMenu]',\n exportAs: 'ngMenu',\n host: {\n 'role': 'menu',\n '[attr.id]': '_pattern.id()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-visible]': 'visible()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(mouseout)': '_pattern.onMouseOut($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(click)': '_pattern.onClick($event)',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n providers: [{provide: MENU_COMPONENT, useExisting: Menu}],\n})\nexport class Menu<V> {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The menu items contained in the menu. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n /** The menu items that are direct children of this menu. */\n readonly _items: Signal<MenuItem<V>[]> = computed(() =>\n this._allItems().filter(i => i.parent === this),\n );\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The unique ID of the menu. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-', true));\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the menu is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** A reference to the parent menu item or menu trigger. */\n readonly parent = signal<MenuTrigger<V> | MenuItem<V> | undefined>(undefined);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuPattern<V>;\n\n /**\n * The menu items as a writable signal.\n *\n * TODO(wagnermaciel): This would normally be a computed, but using a computed causes a bug where\n * sometimes the items array is empty. The bug can be reproduced by switching this to use a\n * computed and then quickly opening and closing menus in the dev app.\n */\n private readonly _itemPatterns = () => this._items().map(i => i._pattern);\n\n /** Whether the menu is visible. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** The tab index of the menu. */\n readonly tabIndex = computed(() => this._pattern.tabIndex());\n\n /** A callback function triggered when a menu item is selected. */\n readonly itemSelected = output<V>();\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n readonly expansionDelay = input<number>(100); // Arbitrarily chosen.\n\n constructor() {\n this._pattern = new MenuPattern({\n ...this,\n parent: computed(() => this.parent()?._pattern),\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'vertical',\n selectionMode: () => 'explicit',\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n itemSelected: (value: V) => this.itemSelected.emit(value),\n });\n\n afterRenderEffect(() => {\n const parent = this.parent();\n if (parent instanceof MenuItem && parent.parent instanceof MenuBar) {\n this._deferredContentAware?.contentVisible.set(true);\n } else {\n this._deferredContentAware?.contentVisible.set(\n this._pattern.visible() || !!this.parent()?._pattern.hasBeenInteracted(),\n );\n }\n });\n\n // TODO(wagnermaciel): This is a redundancy needed for if the user uses display: none to hide\n // submenus. In those cases, the ui pattern is calling focus() before the ui has a chance to\n // update the display property. The result is focus() being called on an element that is not\n // focusable. This simply retries focusing the element after render.\n afterRenderEffect(() => {\n if (this._pattern.visible()) {\n const activeItem = untracked(() => this._pattern.inputs.activeItem());\n this._pattern.listBehavior.goto(activeItem!);\n }\n });\n\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\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 {Directive} from '@angular/core';\nimport {DeferredContent} from '../private';\n\n/**\n * Defers the rendering of the menu content.\n *\n * This structural directive should be applied to an `ng-template` within a `ngMenu`\n * or `ngMenuBar` to lazily render its content only when the menu is opened.\n *\n * ```html\n * <div ngMenu #myMenu=\"ngMenu\">\n * <ng-template ngMenuContent>\n * <div ngMenuItem>Lazy Item 1</div>\n * <div ngMenuItem>Lazy Item 2</div>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */\n@Directive({\n selector: 'ng-template[ngMenuContent]',\n exportAs: 'ngMenuContent',\n hostDirectives: [DeferredContent],\n})\nexport class MenuContent {}\n"],"names":["MenuTrigger","_elementRef","inject","ElementRef","element","nativeElement","textDirection","Directionality","valueSignal","menu","input","undefined","expanded","computed","_pattern","hasPopup","disabled","transform","booleanAttribute","softDisabled","MenuTriggerPattern","constructor","effect","parent","set","open","first","close","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","exportAs","ngImport","decorators","args","MENU_COMPONENT","InjectionToken","MenuItem","id","_IdGenerator","getId","value","required","searchTerm","model","optional","submenu","active","MenuItemPattern","outputs","attributes","MenuBar","_allItems","contentChildren","descendants","_items","filter","i","wrap","typeaheadDelay","_itemPatterns","signal","itemSelected","output","MenuBarPattern","items","multi","focusMode","orientation","selectionMode","emit","activeItem","afterRenderEffect","map","setDefaultStateEffect","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","providers","provide","useExisting","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","Output","Menu","_deferredContentAware","DeferredContentAware","ngDevMode","debugName","visible","tabIndex","expansionDelay","MenuPattern","contentVisible","hasBeenInteracted","untracked","listBehavior","goto","hostDirectives","directive","i1","MenuContent","DeferredContent"],"mappings":"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"}

@@ -15,2 +15,3 @@ export { AccordionGroupPattern, AccordionTriggerPattern } from './_accordion-chunk.mjs';

import './_pointer-event-manager-chunk.mjs';
import './_click-event-manager-chunk.mjs';
import './_list-chunk.mjs';

@@ -17,0 +18,0 @@ import './_list-typeahead-chunk.mjs';

@@ -1,1 +0,1 @@

{"version":3,"file":"private.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
{"version":3,"file":"private.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}

@@ -7,7 +7,7 @@ import { _IdGenerator } from '@angular/cdk/a11y';

import { DeferredContentAware, DeferredContent } from './_deferred-content-chunk.mjs';
import './_expansion-chunk.mjs';
import './_click-event-manager-chunk.mjs';
import './_signal-like-chunk.mjs';
import '@angular/core/primitives/signals';
import './_expansion-chunk.mjs';
import './_list-navigation-chunk.mjs';
import './_pointer-event-manager-chunk.mjs';

@@ -66,10 +66,5 @@ const TABS = new InjectionToken('TABS');

});
_hasFocused = signal(false, ...(ngDevMode ? [{
debugName: "_hasFocused"
}] : []));
constructor() {
afterRenderEffect(() => {
if (!this._hasFocused()) {
this._pattern.setDefaultState();
}
this._pattern.setDefaultStateEffect();
});

@@ -92,5 +87,2 @@ afterRenderEffect(() => {

}
_onFocus() {
this._hasFocused.set(true);
}
ngOnInit() {

@@ -115,3 +107,3 @@ this._tabs._register(this);

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -124,3 +116,3 @@ type: TabList,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: TabList,

@@ -189,4 +181,4 @@ isStandalone: true,

"keydown": "_pattern.onKeydown($event)",
"pointerdown": "_pattern.onPointerdown($event)",
"focusin": "_onFocus()"
"click": "_pattern.onClick($event)",
"focusin": "_pattern.onFocusIn()"
},

@@ -206,3 +198,3 @@ properties: {

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -222,4 +214,4 @@ type: TabList,

'(keydown)': '_pattern.onKeydown($event)',
'(pointerdown)': '_pattern.onPointerdown($event)',
'(focusin)': '_onFocus()'
'(click)': '_pattern.onClick($event)',
'(focusin)': '_pattern.onFocusIn()'
}

@@ -324,3 +316,3 @@ }]

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -333,3 +325,3 @@ type: TabPanel,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: TabPanel,

@@ -375,3 +367,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -453,3 +445,3 @@ type: TabPanel,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -462,3 +454,3 @@ type: Tabs,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Tabs,

@@ -477,3 +469,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -541,3 +533,3 @@ type: Tabs,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -550,3 +542,3 @@ type: Tab,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Tab,

@@ -597,3 +589,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -648,3 +640,3 @@ type: Tab,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -657,3 +649,3 @@ type: TabContent,

minVersion: "14.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: TabContent,

@@ -671,3 +663,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -674,0 +666,0 @@ type: TabContent,

@@ -1,1 +0,1 @@

{"version":3,"file":"tabs.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-panel.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tabs.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-content.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Tabs} from './tabs';\n\n/** Token used to expose the `Tabs` directive to child directives. */\nexport const TABS = new InjectionToken<Tabs>('TABS');\n\nexport interface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 {Directionality} from '@angular/cdk/bidi';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabListPattern, TabPattern} from '../private';\nimport {sortDirectives, TABS} from './utils';\nimport type {Tab} from './tab';\n\n/**\n * A TabList container.\n *\n * The `ngTabList` directive controls a list of `ngTab` elements. It manages keyboard\n * navigation, selection, and the overall orientation of the tabs. It should be placed\n * within an `ngTabs` container.\n *\n * ```html\n * <ul ngTabList [(selectedTab)]=\"mySelectedTab\" orientation=\"horizontal\" selectionMode=\"explicit\">\n * <li ngTab value=\"first\">First Tab</li>\n * <li ngTab value=\"second\">Second Tab</li>\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabList]',\n exportAs: 'ngTabList',\n host: {\n 'role': 'tablist',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n})\nexport class TabList implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** The Tabs nested inside of the TabList. */\n private readonly _unorderedTabs = signal(new Set<Tab>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The Tab UIPatterns of the child Tabs. */\n readonly _tabPatterns = computed<TabPattern[]>(() =>\n [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab._pattern),\n );\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the tablist.\n * - `roving`: Focus is moved to the active tab using `tabindex`.\n * - `activedescendant`: Focus remains on the tablist container, and `aria-activedescendant` is used to indicate the active tab.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the tablist.\n * - `follow`: The focused tab is automatically selected.\n * - `explicit`: Tabs are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The current selected tab. */\n readonly selectedTab = model<string | undefined>();\n\n /** Whether the tablist is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The TabList UIPattern. */\n readonly _pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this._tabPatterns,\n activeItem: signal(undefined),\n element: () => this._elementRef.nativeElement,\n });\n\n /** Whether the tree has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n afterRenderEffect(() => {\n const tab = this._pattern.selectedTab();\n if (tab) {\n this.selectedTab.set(tab.value());\n }\n });\n\n afterRenderEffect(() => {\n const value = this.selectedTab();\n if (value) {\n this._tabPatterns().forEach(tab => tab.expanded.set(false));\n const tab = this._tabPatterns().find(t => t.value() === value);\n this._pattern.selectedTab.set(tab);\n tab?.expanded.set(true);\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\n }\n\n ngOnInit() {\n this._tabs._register(this);\n }\n\n ngOnDestroy() {\n this._tabs._unregister(this);\n }\n\n _register(child: Tab) {\n this._unorderedTabs().add(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n _unregister(child: Tab) {\n this._unorderedTabs().delete(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n /** Opens the tab panel with the specified value. */\n open(value: string): boolean {\n return this._pattern.open(value);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabPanelPattern, DeferredContentAware} from '../private';\nimport {TABS} from './utils';\n\n/**\n * A TabPanel container for the resources of layered content associated with a tab.\n *\n * The `ngTabPanel` directive holds the content for a specific tab. It is linked to an\n * `ngTab` by a matching `value`. If a tab panel is hidden, the `inert` attribute will be\n * applied to remove it from the accessibility tree. Proper styling is required for visual hiding.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <!-- Content for the tab panel -->\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabPanel]',\n exportAs: 'ngTabPanel',\n host: {\n 'role': 'tabpanel',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': '!visible() ? true : null',\n '[attr.aria-labelledby]': '_pattern.labelledBy()',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class TabPanel implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** A global unique identifier for the tab. */\n readonly id = input(inject(_IdGenerator).getId('ng-tabpanel-', true));\n\n /** The Tab UIPattern associated with the tabpanel */\n private readonly _tabPattern = computed(() =>\n this._tabs._tabPatterns()?.find(tab => tab.value() === this.value()),\n );\n\n /** A local unique identifier for the tabpanel. */\n readonly value = input.required<string>();\n\n /** Whether the tab panel is visible. */\n readonly visible = computed(() => !this._pattern.hidden());\n\n /** The TabPanel UIPattern. */\n readonly _pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n tab: this._tabPattern,\n });\n\n constructor() {\n afterRenderEffect(() => this._deferredContentAware.contentVisible.set(this.visible()));\n }\n\n ngOnInit() {\n this._tabs._register(this);\n }\n\n ngOnDestroy() {\n this._tabs._unregister(this);\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 {computed, Directive, ElementRef, inject, signal} from '@angular/core';\nimport {TabList} from './tab-list';\nimport {TabPanel} from './tab-panel';\nimport {TABS} from './utils';\nimport {TabPanelPattern, TabPattern} from '../private';\n\n/**\n * A Tabs container.\n *\n * The `ngTabs` directive represents a set of layered sections of content. It acts as the\n * overarching container for a tabbed interface, coordinating the behavior of `ngTabList`,\n * `ngTab`, and `ngTabPanel` directives.\n *\n * ```html\n * <div ngTabs>\n * <ul ngTabList [(selectedTab)]=\"selectedTabValue\">\n * <li ngTab value=\"tab1\">Tab 1</li>\n * <li ngTab value=\"tab2\">Tab 2</li>\n * <li ngTab value=\"tab3\">Tab 3</li>\n * </ul>\n *\n * <div ngTabPanel value=\"tab1\">\n * <ng-template ngTabContent>Content for Tab 1</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab2\">\n * <ng-template ngTabContent>Content for Tab 2</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab3\">\n * <ng-template ngTabContent>Content for Tab 3</ng-template>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabs]',\n exportAs: 'ngTabs',\n providers: [{provide: TABS, useExisting: Tabs}],\n})\nexport class Tabs {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The TabList nested inside of the container. */\n private readonly _tablist = signal<TabList | undefined>(undefined);\n\n /** The TabPanels nested inside of the container. */\n private readonly _unorderedPanels = signal(new Set<TabPanel>());\n\n /** The Tab UIPattern of the child Tabs. */\n readonly _tabPatterns = computed<TabPattern[] | undefined>(() => this._tablist()?._tabPatterns());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n readonly _unorderedTabpanelPatterns = computed<TabPanelPattern[]>(() =>\n [...this._unorderedPanels()].map(tabpanel => tabpanel._pattern),\n );\n\n _register(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(child);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().add(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n\n _unregister(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(undefined);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().delete(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabPattern} from '../private';\nimport {TabList} from './tab-list';\nimport {HasElement, TABS} from './utils';\n\n/**\n * A selectable tab in a TabList.\n *\n * The `ngTab` directive represents an individual tab control within an `ngTabList`. It\n * requires a `value` that uniquely identifies it and links it to a corresponding `ngTabPanel`.\n *\n * ```html\n * <li ngTab value=\"myTabId\" [disabled]=\"isTabDisabled\">\n * My Tab Label\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTab]',\n exportAs: 'ngTab',\n host: {\n 'role': 'tab',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.controls()',\n },\n})\nexport class Tab implements HasElement, OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** The parent TabList. */\n private readonly _tabList = inject(TabList);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-tab-', true));\n\n /** The parent TabList UIPattern. */\n private readonly _tablistPattern = computed(() => this._tabList._pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n private readonly _tabpanelPattern = computed(() =>\n this._tabs._unorderedTabpanelPatterns().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The remote tabpanel unique identifier. */\n readonly value = input.required<string>();\n\n /** Whether the tab is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the tab is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Tab UIPattern. */\n readonly _pattern: TabPattern = new TabPattern({\n ...this,\n tablist: this._tablistPattern,\n tabpanel: this._tabpanelPattern,\n expanded: signal(false),\n element: () => this.element,\n });\n\n /** Opens this tab panel. */\n open() {\n this._pattern.open();\n }\n\n ngOnInit() {\n this._tabList._register(this);\n }\n\n ngOnDestroy() {\n this._tabList._unregister(this);\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 {Directive} from '@angular/core';\nimport {DeferredContent} from '../private';\n\n/**\n * A TabContent container for the lazy-loaded content.\n *\n * This structural directive should be applied to an `ng-template` within an `ngTabPanel`.\n * It enables lazy loading of the tab's content, meaning the content is only rendered\n * when the tab is activated for the first time.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <p>This content will be loaded when 'myTabId' is selected.</p>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: 'ng-template[ngTabContent]',\n exportAs: 'ngTabContent',\n hostDirectives: [DeferredContent],\n})\nexport class TabContent {}\n"],"names":["TABS","InjectionToken","sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","TabList","_elementRef","inject","ElementRef","nativeElement","_tabs","_unorderedTabs","signal","Set","textDirection","Directionality","valueSignal","_tabPatterns","computed","sort","map","tab","_pattern","orientation","input","wrap","transform","booleanAttribute","softDisabled","focusMode","selectionMode","selectedTab","model","disabled","TabListPattern","items","activeItem","undefined","_hasFocused","constructor","afterRenderEffect","setDefaultState","set","value","forEach","expanded","find","t","_onFocus","ngOnInit","_register","ngOnDestroy","_unregister","child","add","delete","open","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","TabPanel","_deferredContentAware","DeferredContentAware","id","_IdGenerator","getId","_tabPattern","required","visible","hidden","TabPanelPattern","contentVisible","hostDirectives","directive","i1","Tabs","_tablist","_unorderedPanels","_unorderedTabpanelPatterns","tabpanel","providers","provide","useExisting","Tab","_tabList","_tablistPattern","_tabpanelPattern","active","selected","TabPattern","tablist","TabContent","DeferredContent"],"mappings":"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"}
{"version":3,"file":"tabs.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-panel.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tabs.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tabs/tab-content.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Tabs} from './tabs';\n\n/** Token used to expose the `Tabs` directive to child directives. */\nexport const TABS = new InjectionToken<Tabs>('TABS');\n\nexport interface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 {Directionality} from '@angular/cdk/bidi';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabListPattern, TabPattern} from '../private';\nimport {sortDirectives, TABS} from './utils';\nimport type {Tab} from './tab';\n\n/**\n * A TabList container.\n *\n * The `ngTabList` directive controls a list of `ngTab` elements. It manages keyboard\n * navigation, selection, and the overall orientation of the tabs. It should be placed\n * within an `ngTabs` container.\n *\n * ```html\n * <ul ngTabList [(selectedTab)]=\"mySelectedTab\" orientation=\"horizontal\" selectionMode=\"explicit\">\n * <li ngTab value=\"first\">First Tab</li>\n * <li ngTab value=\"second\">Second Tab</li>\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabList]',\n exportAs: 'ngTabList',\n host: {\n 'role': 'tablist',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class TabList implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** The Tabs nested inside of the TabList. */\n private readonly _unorderedTabs = signal(new Set<Tab>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The Tab UIPatterns of the child Tabs. */\n readonly _tabPatterns = computed<TabPattern[]>(() =>\n [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab._pattern),\n );\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the tablist.\n * - `roving`: Focus is moved to the active tab using `tabindex`.\n * - `activedescendant`: Focus remains on the tablist container, and `aria-activedescendant` is used to indicate the active tab.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the tablist.\n * - `follow`: The focused tab is automatically selected.\n * - `explicit`: Tabs are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The current selected tab. */\n readonly selectedTab = model<string | undefined>();\n\n /** Whether the tablist is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The TabList UIPattern. */\n readonly _pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this._tabPatterns,\n activeItem: signal(undefined),\n element: () => this._elementRef.nativeElement,\n });\n\n constructor() {\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n\n afterRenderEffect(() => {\n const tab = this._pattern.selectedTab();\n if (tab) {\n this.selectedTab.set(tab.value());\n }\n });\n\n afterRenderEffect(() => {\n const value = this.selectedTab();\n if (value) {\n this._tabPatterns().forEach(tab => tab.expanded.set(false));\n const tab = this._tabPatterns().find(t => t.value() === value);\n this._pattern.selectedTab.set(tab);\n tab?.expanded.set(true);\n }\n });\n }\n\n ngOnInit() {\n this._tabs._register(this);\n }\n\n ngOnDestroy() {\n this._tabs._unregister(this);\n }\n\n _register(child: Tab) {\n this._unorderedTabs().add(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n _unregister(child: Tab) {\n this._unorderedTabs().delete(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n /** Opens the tab panel with the specified value. */\n open(value: string): boolean {\n return this._pattern.open(value);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabPanelPattern, DeferredContentAware} from '../private';\nimport {TABS} from './utils';\n\n/**\n * A TabPanel container for the resources of layered content associated with a tab.\n *\n * The `ngTabPanel` directive holds the content for a specific tab. It is linked to an\n * `ngTab` by a matching `value`. If a tab panel is hidden, the `inert` attribute will be\n * applied to remove it from the accessibility tree. Proper styling is required for visual hiding.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <!-- Content for the tab panel -->\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabPanel]',\n exportAs: 'ngTabPanel',\n host: {\n 'role': 'tabpanel',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': '!visible() ? true : null',\n '[attr.aria-labelledby]': '_pattern.labelledBy()',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class TabPanel implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** A global unique identifier for the tab. */\n readonly id = input(inject(_IdGenerator).getId('ng-tabpanel-', true));\n\n /** The Tab UIPattern associated with the tabpanel */\n private readonly _tabPattern = computed(() =>\n this._tabs._tabPatterns()?.find(tab => tab.value() === this.value()),\n );\n\n /** A local unique identifier for the tabpanel. */\n readonly value = input.required<string>();\n\n /** Whether the tab panel is visible. */\n readonly visible = computed(() => !this._pattern.hidden());\n\n /** The TabPanel UIPattern. */\n readonly _pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n tab: this._tabPattern,\n });\n\n constructor() {\n afterRenderEffect(() => this._deferredContentAware.contentVisible.set(this.visible()));\n }\n\n ngOnInit() {\n this._tabs._register(this);\n }\n\n ngOnDestroy() {\n this._tabs._unregister(this);\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 {computed, Directive, ElementRef, inject, signal} from '@angular/core';\nimport {TabList} from './tab-list';\nimport {TabPanel} from './tab-panel';\nimport {TABS} from './utils';\nimport {TabPanelPattern, TabPattern} from '../private';\n\n/**\n * A Tabs container.\n *\n * The `ngTabs` directive represents a set of layered sections of content. It acts as the\n * overarching container for a tabbed interface, coordinating the behavior of `ngTabList`,\n * `ngTab`, and `ngTabPanel` directives.\n *\n * ```html\n * <div ngTabs>\n * <ul ngTabList [(selectedTab)]=\"selectedTabValue\">\n * <li ngTab value=\"tab1\">Tab 1</li>\n * <li ngTab value=\"tab2\">Tab 2</li>\n * <li ngTab value=\"tab3\">Tab 3</li>\n * </ul>\n *\n * <div ngTabPanel value=\"tab1\">\n * <ng-template ngTabContent>Content for Tab 1</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab2\">\n * <ng-template ngTabContent>Content for Tab 2</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab3\">\n * <ng-template ngTabContent>Content for Tab 3</ng-template>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTabs]',\n exportAs: 'ngTabs',\n providers: [{provide: TABS, useExisting: Tabs}],\n})\nexport class Tabs {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The TabList nested inside of the container. */\n private readonly _tablist = signal<TabList | undefined>(undefined);\n\n /** The TabPanels nested inside of the container. */\n private readonly _unorderedPanels = signal(new Set<TabPanel>());\n\n /** The Tab UIPattern of the child Tabs. */\n readonly _tabPatterns = computed<TabPattern[] | undefined>(() => this._tablist()?._tabPatterns());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n readonly _unorderedTabpanelPatterns = computed<TabPanelPattern[]>(() =>\n [...this._unorderedPanels()].map(tabpanel => tabpanel._pattern),\n );\n\n _register(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(child);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().add(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n\n _unregister(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(undefined);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().delete(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TabPattern} from '../private';\nimport {TabList} from './tab-list';\nimport {HasElement, TABS} from './utils';\n\n/**\n * A selectable tab in a TabList.\n *\n * The `ngTab` directive represents an individual tab control within an `ngTabList`. It\n * requires a `value` that uniquely identifies it and links it to a corresponding `ngTabPanel`.\n *\n * ```html\n * <li ngTab value=\"myTabId\" [disabled]=\"isTabDisabled\">\n * My Tab Label\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: '[ngTab]',\n exportAs: 'ngTab',\n host: {\n 'role': 'tab',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.controls()',\n },\n})\nexport class Tab implements HasElement, OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Tabs. */\n private readonly _tabs = inject(TABS);\n\n /** The parent TabList. */\n private readonly _tabList = inject(TabList);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-tab-', true));\n\n /** The parent TabList UIPattern. */\n private readonly _tablistPattern = computed(() => this._tabList._pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n private readonly _tabpanelPattern = computed(() =>\n this._tabs._unorderedTabpanelPatterns().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The remote tabpanel unique identifier. */\n readonly value = input.required<string>();\n\n /** Whether the tab is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the tab is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Tab UIPattern. */\n readonly _pattern: TabPattern = new TabPattern({\n ...this,\n tablist: this._tablistPattern,\n tabpanel: this._tabpanelPattern,\n expanded: signal(false),\n element: () => this.element,\n });\n\n /** Opens this tab panel. */\n open() {\n this._pattern.open();\n }\n\n ngOnInit() {\n this._tabList._register(this);\n }\n\n ngOnDestroy() {\n this._tabList._unregister(this);\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 {Directive} from '@angular/core';\nimport {DeferredContent} from '../private';\n\n/**\n * A TabContent container for the lazy-loaded content.\n *\n * This structural directive should be applied to an `ng-template` within an `ngTabPanel`.\n * It enables lazy loading of the tab's content, meaning the content is only rendered\n * when the tab is activated for the first time.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <p>This content will be loaded when 'myTabId' is selected.</p>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tabs](guide/aria/tabs)\n */\n@Directive({\n selector: 'ng-template[ngTabContent]',\n exportAs: 'ngTabContent',\n hostDirectives: [DeferredContent],\n})\nexport class TabContent {}\n"],"names":["TABS","InjectionToken","sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","TabList","_elementRef","inject","ElementRef","nativeElement","_tabs","_unorderedTabs","signal","Set","textDirection","Directionality","valueSignal","_tabPatterns","computed","sort","map","tab","_pattern","orientation","input","wrap","transform","booleanAttribute","softDisabled","focusMode","selectionMode","selectedTab","model","disabled","TabListPattern","items","activeItem","undefined","constructor","afterRenderEffect","setDefaultStateEffect","set","value","forEach","expanded","find","t","ngOnInit","_register","ngOnDestroy","_unregister","child","add","delete","open","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","TabPanel","_deferredContentAware","DeferredContentAware","id","_IdGenerator","getId","_tabPattern","required","visible","hidden","TabPanelPattern","contentVisible","hostDirectives","directive","i1","Tabs","_tablist","_unorderedPanels","_unorderedTabpanelPatterns","tabpanel","providers","provide","useExisting","Tab","_tabList","_tablistPattern","_tabpanelPattern","active","selected","TabPattern","tablist","TabContent","DeferredContent"],"mappings":"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"}

@@ -60,15 +60,7 @@ import * as i0 from '@angular/core';

});
_hasBeenFocused = signal(false, ...(ngDevMode ? [{
debugName: "_hasBeenFocused"
}] : []));
constructor() {
afterRenderEffect(() => {
if (!this._hasBeenFocused()) {
this._pattern.setDefaultState();
}
this._pattern.setDefaultStateEffect();
});
}
_onFocus() {
this._hasBeenFocused.set(true);
}
_register(widget) {

@@ -92,3 +84,3 @@ const widgets = this._widgets();

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -101,3 +93,3 @@ type: Toolbar,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Toolbar,

@@ -154,3 +146,3 @@ isStandalone: true,

"pointerdown": "_pattern.onPointerdown($event)",
"focusin": "_onFocus()"
"focusin": "_pattern.onFocusIn()"
},

@@ -169,3 +161,3 @@ properties: {

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -186,3 +178,3 @@ type: Toolbar,

'(pointerdown)': '_pattern.onPointerdown($event)',
'(focusin)': '_onFocus()'
'(focusin)': '_pattern.onFocusIn()'
}

@@ -285,3 +277,3 @@ }]

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -294,3 +286,3 @@ type: ToolbarWidget,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ToolbarWidget,

@@ -338,3 +330,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -420,3 +412,3 @@ type: ToolbarWidget,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -429,3 +421,3 @@ type: ToolbarWidgetGroup,

minVersion: "17.2.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: ToolbarWidgetGroup,

@@ -466,3 +458,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -469,0 +461,0 @@ type: ToolbarWidgetGroup,

@@ -1,1 +0,1 @@

{"version":3,"file":"toolbar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {ToolbarWidgetGroup} from './toolbar-widget-group';\n\n/** Token used to provide the `ToolbarWidgetGroup` directive. */\nexport const TOOLBAR_WIDGET_GROUP = new InjectionToken<ToolbarWidgetGroup<unknown>>(\n 'TOOLBAR_WIDGET_GROUP',\n);\n\ninterface HasElement {\n element: HTMLElement;\n}\n\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n signal,\n model,\n} from '@angular/core';\nimport {ToolbarPattern, ToolbarWidgetPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport type {ToolbarWidget} from './toolbar-widget';\nimport {sortDirectives} from './utils';\n\n/**\n * A toolbar widget container for a group of interactive widgets, such as\n * buttons or radio groups. It provides a single point of reference for keyboard navigation\n * and focus management. It supports various orientations and disabled states.\n *\n * ```html\n * <div ngToolbar orientation=\"horizontal\" [wrap]=\"true\">\n * <button ngToolbarWidget value=\"save\">Save</button>\n * <button ngToolbarWidget value=\"print\">Print</button>\n *\n * <div ngToolbarWidgetGroup [(value)]=\"selectedAlignment\">\n * <button ngToolbarWidget value=\"left\">Left</button>\n * <button ngToolbarWidget value=\"center\">Center</button>\n * <button ngToolbarWidget value=\"right\">Right</button>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbar]',\n exportAs: 'ngToolbar',\n host: {\n 'role': 'toolbar',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n})\nexport class Toolbar<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The TabList nested inside of the container. */\n private readonly _widgets = signal(new Set<ToolbarWidget<V>>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Sorted UIPatterns of the child widgets */\n readonly _itemPatterns = computed<ToolbarWidgetPattern<V>[]>(() =>\n [...this._widgets()].sort(sortDirectives).map(widget => widget._pattern),\n );\n\n /** Whether the toolbar is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the toolbar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The values of the selected widgets within the toolbar. */\n readonly value = model<V[]>([]);\n\n /** The toolbar UIPattern. */\n readonly _pattern: ToolbarPattern<V> = new ToolbarPattern<V>({\n ...this,\n items: this._itemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n getItem: e => this._getItem(e),\n value: this.value,\n });\n\n /** Whether the toolbar has received focus yet. */\n private _hasBeenFocused = signal(false);\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._hasBeenFocused()) {\n this._pattern.setDefaultState();\n }\n });\n }\n\n _onFocus() {\n this._hasBeenFocused.set(true);\n }\n\n _register(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (!widgets.has(widget)) {\n widgets.add(widget);\n this._widgets.set(new Set(widgets));\n }\n }\n\n _unregister(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (widgets.delete(widget)) {\n this._widgets.set(new Set(widgets));\n }\n }\n\n /** Finds the toolbar item associated with a given element. */\n private _getItem(element: Element) {\n return this._itemPatterns().find(item => item.element()?.contains(element));\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 Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {\n ToolbarWidgetPattern,\n ToolbarWidgetGroupPattern,\n SignalLike,\n ToolbarPattern,\n} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Toolbar} from './toolbar';\nimport {TOOLBAR_WIDGET_GROUP} from './utils';\nimport type {ToolbarWidgetGroup} from './toolbar-widget-group';\n\n/**\n * A widget within a toolbar.\n *\n * The `ngToolbarWidget` directive should be applied to any native HTML element that acts\n * as an interactive widget within an `ngToolbar` or `ngToolbarWidgetGroup`. It enables\n * keyboard navigation and selection within the toolbar.\n *\n * ```html\n * <button ngToolbarWidget value=\"action-id\" [disabled]=\"isDisabled\">\n * Perform Action\n * </button>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbarWidget]',\n exportAs: 'ngToolbarWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': 'hardDisabled() ? true : null',\n '[attr.disabled]': 'hardDisabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[id]': '_pattern.id()',\n },\n})\nexport class ToolbarWidget<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject<Toolbar<V>>(Toolbar);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-toolbar-widget-', true));\n\n /** The parent Toolbar UIPattern. */\n readonly _toolbarPattern = computed<ToolbarPattern<V>>(() => this._toolbar._pattern);\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the widget is 'hard' disabled, which is different from `aria-disabled`. A hard disabled widget cannot receive focus. */\n readonly hardDisabled = computed(() => this._pattern.disabled() && !this._toolbar.softDisabled());\n\n /** The optional ToolbarWidgetGroup this widget belongs to. */\n readonly _group = inject<ToolbarWidgetGroup<V>>(TOOLBAR_WIDGET_GROUP, {optional: true});\n\n /** The value associated with the widget. */\n readonly value = input.required<V>();\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = () => this._pattern.selected();\n\n private readonly _groupPattern: SignalLike<\n ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined\n > = () => this._group?._pattern;\n\n /** The ToolbarWidget UIPattern. */\n readonly _pattern = new ToolbarWidgetPattern<V>({\n ...this,\n group: this._groupPattern,\n toolbar: this._toolbarPattern,\n id: this.id,\n value: this.value,\n element: () => this.element,\n });\n\n ngOnInit() {\n this._toolbar._register(this);\n }\n\n ngOnDestroy() {\n this._toolbar._unregister(this);\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 Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n contentChildren,\n} from '@angular/core';\nimport {ToolbarWidgetPattern, ToolbarWidgetGroupPattern} from '../private';\nimport {Toolbar} from './toolbar';\nimport {ToolbarWidget} from './toolbar-widget';\nimport {TOOLBAR_WIDGET_GROUP} from './utils';\n\n/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups\n * that have their own internal navigation.\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbarWidgetGroup]',\n exportAs: 'ngToolbarWidgetGroup',\n providers: [{provide: TOOLBAR_WIDGET_GROUP, useExisting: ToolbarWidgetGroup}],\n})\nexport class ToolbarWidgetGroup<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject<Toolbar<V>>(Toolbar, {optional: true});\n\n /** The list of child widgets within the group. */\n private readonly _widgets = contentChildren(ToolbarWidget, {descendants: true});\n\n /** The parent Toolbar UIPattern. */\n private readonly _toolbarPattern = computed(() => this._toolbar?._pattern);\n\n /** Whether the widget group is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The list of toolbar items within the group. */\n private readonly _itemPatterns = () => this._widgets().map(w => w._pattern);\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** The ToolbarWidgetGroup UIPattern. */\n readonly _pattern = new ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V>({\n ...this,\n items: this._itemPatterns,\n toolbar: this._toolbarPattern,\n });\n}\n"],"names":["TOOLBAR_WIDGET_GROUP","InjectionToken","sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Toolbar","_elementRef","inject","ElementRef","nativeElement","_widgets","signal","Set","textDirection","Directionality","valueSignal","_itemPatterns","computed","sort","map","widget","_pattern","orientation","input","softDisabled","transform","booleanAttribute","disabled","wrap","value","model","ToolbarPattern","items","activeItem","undefined","getItem","e","_getItem","_hasBeenFocused","constructor","afterRenderEffect","setDefaultState","_onFocus","set","_register","widgets","has","add","_unregister","delete","find","item","contains","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","ToolbarWidget","_toolbar","id","_IdGenerator","getId","_toolbarPattern","hardDisabled","_group","optional","required","active","selected","_groupPattern","ToolbarWidgetPattern","group","toolbar","ngOnInit","ngOnDestroy","ToolbarWidgetGroup","contentChildren","descendants","w","multi","ToolbarWidgetGroupPattern","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","providers","provide","useExisting","propDecorators","ContentChildren","forwardRef","Input","alias"],"mappings":"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"}
{"version":3,"file":"toolbar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {ToolbarWidgetGroup} from './toolbar-widget-group';\n\n/** Token used to provide the `ToolbarWidgetGroup` directive. */\nexport const TOOLBAR_WIDGET_GROUP = new InjectionToken<ToolbarWidgetGroup<unknown>>(\n 'TOOLBAR_WIDGET_GROUP',\n);\n\ninterface HasElement {\n element: HTMLElement;\n}\n\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n signal,\n model,\n} from '@angular/core';\nimport {ToolbarPattern, ToolbarWidgetPattern} from '../private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport type {ToolbarWidget} from './toolbar-widget';\nimport {sortDirectives} from './utils';\n\n/**\n * A toolbar widget container for a group of interactive widgets, such as\n * buttons or radio groups. It provides a single point of reference for keyboard navigation\n * and focus management. It supports various orientations and disabled states.\n *\n * ```html\n * <div ngToolbar orientation=\"horizontal\" [wrap]=\"true\">\n * <button ngToolbarWidget value=\"save\">Save</button>\n * <button ngToolbarWidget value=\"print\">Print</button>\n *\n * <div ngToolbarWidgetGroup [(value)]=\"selectedAlignment\">\n * <button ngToolbarWidget value=\"left\">Left</button>\n * <button ngToolbarWidget value=\"center\">Center</button>\n * <button ngToolbarWidget value=\"right\">Right</button>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbar]',\n exportAs: 'ngToolbar',\n host: {\n 'role': 'toolbar',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class Toolbar<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The TabList nested inside of the container. */\n private readonly _widgets = signal(new Set<ToolbarWidget<V>>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Sorted UIPatterns of the child widgets */\n readonly _itemPatterns = computed<ToolbarWidgetPattern<V>[]>(() =>\n [...this._widgets()].sort(sortDirectives).map(widget => widget._pattern),\n );\n\n /** Whether the toolbar is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the toolbar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The values of the selected widgets within the toolbar. */\n readonly value = model<V[]>([]);\n\n /** The toolbar UIPattern. */\n readonly _pattern: ToolbarPattern<V> = new ToolbarPattern<V>({\n ...this,\n items: this._itemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n getItem: e => this._getItem(e),\n value: this.value,\n });\n\n constructor() {\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n }\n\n _register(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (!widgets.has(widget)) {\n widgets.add(widget);\n this._widgets.set(new Set(widgets));\n }\n }\n\n _unregister(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (widgets.delete(widget)) {\n this._widgets.set(new Set(widgets));\n }\n }\n\n /** Finds the toolbar item associated with a given element. */\n private _getItem(element: Element) {\n return this._itemPatterns().find(item => item.element()?.contains(element));\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 Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {\n ToolbarWidgetPattern,\n ToolbarWidgetGroupPattern,\n SignalLike,\n ToolbarPattern,\n} from '../private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Toolbar} from './toolbar';\nimport {TOOLBAR_WIDGET_GROUP} from './utils';\nimport type {ToolbarWidgetGroup} from './toolbar-widget-group';\n\n/**\n * A widget within a toolbar.\n *\n * The `ngToolbarWidget` directive should be applied to any native HTML element that acts\n * as an interactive widget within an `ngToolbar` or `ngToolbarWidgetGroup`. It enables\n * keyboard navigation and selection within the toolbar.\n *\n * ```html\n * <button ngToolbarWidget value=\"action-id\" [disabled]=\"isDisabled\">\n * Perform Action\n * </button>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbarWidget]',\n exportAs: 'ngToolbarWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': 'hardDisabled() ? true : null',\n '[attr.disabled]': 'hardDisabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[id]': '_pattern.id()',\n },\n})\nexport class ToolbarWidget<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject<Toolbar<V>>(Toolbar);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-toolbar-widget-', true));\n\n /** The parent Toolbar UIPattern. */\n readonly _toolbarPattern = computed<ToolbarPattern<V>>(() => this._toolbar._pattern);\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the widget is 'hard' disabled, which is different from `aria-disabled`. A hard disabled widget cannot receive focus. */\n readonly hardDisabled = computed(() => this._pattern.disabled() && !this._toolbar.softDisabled());\n\n /** The optional ToolbarWidgetGroup this widget belongs to. */\n readonly _group = inject<ToolbarWidgetGroup<V>>(TOOLBAR_WIDGET_GROUP, {optional: true});\n\n /** The value associated with the widget. */\n readonly value = input.required<V>();\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = () => this._pattern.selected();\n\n private readonly _groupPattern: SignalLike<\n ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined\n > = () => this._group?._pattern;\n\n /** The ToolbarWidget UIPattern. */\n readonly _pattern = new ToolbarWidgetPattern<V>({\n ...this,\n group: this._groupPattern,\n toolbar: this._toolbarPattern,\n id: this.id,\n value: this.value,\n element: () => this.element,\n });\n\n ngOnInit() {\n this._toolbar._register(this);\n }\n\n ngOnDestroy() {\n this._toolbar._unregister(this);\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 Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n contentChildren,\n} from '@angular/core';\nimport {ToolbarWidgetPattern, ToolbarWidgetGroupPattern} from '../private';\nimport {Toolbar} from './toolbar';\nimport {ToolbarWidget} from './toolbar-widget';\nimport {TOOLBAR_WIDGET_GROUP} from './utils';\n\n/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups\n * that have their own internal navigation.\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */\n@Directive({\n selector: '[ngToolbarWidgetGroup]',\n exportAs: 'ngToolbarWidgetGroup',\n providers: [{provide: TOOLBAR_WIDGET_GROUP, useExisting: ToolbarWidgetGroup}],\n})\nexport class ToolbarWidgetGroup<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject<Toolbar<V>>(Toolbar, {optional: true});\n\n /** The list of child widgets within the group. */\n private readonly _widgets = contentChildren(ToolbarWidget, {descendants: true});\n\n /** The parent Toolbar UIPattern. */\n private readonly _toolbarPattern = computed(() => this._toolbar?._pattern);\n\n /** Whether the widget group is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The list of toolbar items within the group. */\n private readonly _itemPatterns = () => this._widgets().map(w => w._pattern);\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** The ToolbarWidgetGroup UIPattern. */\n readonly _pattern = new ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V>({\n ...this,\n items: this._itemPatterns,\n toolbar: this._toolbarPattern,\n });\n}\n"],"names":["TOOLBAR_WIDGET_GROUP","InjectionToken","sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Toolbar","_elementRef","inject","ElementRef","nativeElement","_widgets","signal","Set","textDirection","Directionality","valueSignal","_itemPatterns","computed","sort","map","widget","_pattern","orientation","input","softDisabled","transform","booleanAttribute","disabled","wrap","value","model","ToolbarPattern","items","activeItem","undefined","getItem","e","_getItem","constructor","afterRenderEffect","setDefaultStateEffect","_register","widgets","has","add","set","_unregister","delete","find","item","contains","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","ToolbarWidget","_toolbar","id","_IdGenerator","getId","_toolbarPattern","hardDisabled","_group","optional","required","active","selected","_groupPattern","ToolbarWidgetPattern","group","toolbar","ngOnInit","ngOnDestroy","ToolbarWidgetGroup","contentChildren","descendants","w","multi","ToolbarWidgetGroupPattern","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","providers","provide","useExisting","propDecorators","ContentChildren","forwardRef","Input","alias"],"mappings":"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"}

@@ -83,5 +83,2 @@ import * as i0 from '@angular/core';

_pattern;
_hasFocused = signal(false, ...(ngDevMode ? [{
debugName: "_hasFocused"
}] : []));
constructor() {

@@ -109,5 +106,3 @@ const inputs = {

afterRenderEffect(() => {
if (!this._hasFocused()) {
this._pattern.setDefaultState();
}
this._pattern.setDefaultStateEffect();
});

@@ -130,5 +125,2 @@ afterRenderEffect(() => {

}
_onFocus() {
this._hasFocused.set(true);
}
_register(child) {

@@ -149,3 +141,3 @@ this._unorderedItems().add(child);

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -158,3 +150,3 @@ type: Tree,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: Tree,

@@ -259,3 +251,3 @@ isStandalone: true,

"pointerdown": "_pattern.onPointerdown($event)",
"focusin": "_onFocus()"
"focusin": "_pattern.onFocusIn()"
},

@@ -280,3 +272,3 @@ properties: {

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -299,3 +291,3 @@ type: Tree,

'(pointerdown)': '_pattern.onPointerdown($event)',
'(focusin)': '_onFocus()'
'(focusin)': '_pattern.onFocusIn()'
},

@@ -513,3 +505,3 @@ hostDirectives: [ComboboxPopup]

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -522,3 +514,3 @@ type: TreeItem,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: TreeItem,

@@ -605,3 +597,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -723,3 +715,3 @@ type: TreeItem,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -732,3 +724,3 @@ type: TreeItemGroup,

minVersion: "17.1.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
type: TreeItemGroup,

@@ -755,3 +747,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.5",
version: "22.0.0-next.6",
ngImport: i0,

@@ -758,0 +750,0 @@ type: TreeItemGroup,

@@ -1,1 +0,1 @@

{"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nexport interface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ComboboxTreePattern, TreeItemPattern, TreePattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\n\n/**\n * A container that transforms nested lists into an accessible, ARIA-compliant tree structure.\n * It manages the overall state of the tree, including selection, expansion, and keyboard\n * navigation.\n *\n * ```html\n * <ul ngTree [(value)]=\"selectedItems\" [multi]=\"true\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: treeData, parent: tree}\"\n * />\n * </ul>\n *\n * <ng-template #treeNodes let-nodes=\"nodes\" let-parent=\"parent\">\n * @for (node of nodes; track node.name) {\n * <li ngTreeItem [parent]=\"parent\" [value]=\"node.name\" [label]=\"node.name\">\n * {{ node.name }}\n * @if (node.children) {\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"treeItem\" #group=\"ngTreeItemGroup\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: node.children, parent: group}\"\n * />\n * </ng-template>\n * </ul>\n * }\n * </li>\n * }\n * </ng-template>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: '[ngTree]',\n exportAs: 'ngTree',\n host: {\n 'role': 'tree',\n '[attr.id]': 'id()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n})\nexport class Tree<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** All TreeItem instances within this tree. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** A unique identifier for the tree. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-', true));\n\n /** Orientation of the tree. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multi-selection is allowed. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether the tree is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the tree.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n * - `follow`: The focused item is automatically selected.\n */\n readonly selectionMode = input<'explicit' | 'follow'>('explicit');\n\n /**\n * The focus strategy used by the tree.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the tree container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** Whether navigation wraps. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The delay in seconds before the typeahead search is reset. */\n readonly typeaheadDelay = input(500);\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether the tree is in navigation mode. */\n readonly nav = input(false, {transform: booleanAttribute});\n\n /**\n * The `aria-current` type. It can be used in navigation trees to indicate the currently active item.\n * See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current for more details.\n */\n readonly currentType = input<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>(\n 'page',\n );\n\n /** The UI pattern for the tree. */\n readonly _pattern: TreePattern<V>;\n\n /** Whether the tree has received focus since it was rendered. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: computed(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(item => item._pattern),\n ),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n combobox: () => this._popup?.combobox?._pattern,\n element: () => this.element,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxTreePattern<V>(inputs)\n : new TreePattern<V>(inputs);\n\n if (this._popup?.combobox) {\n this._popup?._controls?.set(this._pattern as ComboboxTreePattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.treeBehavior.unfocus();\n }\n });\n\n afterRenderEffect(() => {\n if (!(this._pattern instanceof ComboboxTreePattern)) return;\n\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\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 Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n afterNextRender,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxTreePattern, TreeItemPattern, DeferredContentAware} from '../private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\nimport {HasElement} from './utils';\n\n/**\n * A selectable and expandable item in an `ngTree`.\n *\n * The `ngTreeItem` directive represents an individual node within an `ngTree`. It can be\n * selected, expanded (if it has children), and disabled. The `parent` input establishes\n * the hierarchical relationship within the tree.\n *\n * ```html\n * <li ngTreeItem [parent]=\"parentTreeOrGroup\" value=\"item-id\" label=\"Item Label\">\n * Item Label\n * </li>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTreeItem]',\n exportAs: 'ngTreeItem',\n host: {\n '[attr.data-active]': 'active()',\n 'role': 'treeitem',\n '[id]': '_pattern.id()',\n '[attr.aria-expanded]': '_expanded()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-current]': '_pattern.current()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-level]': 'level()',\n '[attr.aria-setsize]': '_pattern.setsize()',\n '[attr.aria-posinset]': '_pattern.posinset()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class TreeItem<V> extends DeferredContentAware implements OnInit, OnDestroy, HasElement {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The owned tree item group. */\n private readonly _group = signal<TreeItemGroup<V> | undefined>(undefined);\n\n /** A unique identifier for the tree item. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-item-', true));\n\n /** The value of the tree item. */\n readonly value = input.required<V>();\n\n /** The parent tree root or tree item group. */\n readonly parent = input.required<Tree<V> | TreeItemGroup<V>>();\n\n /** Whether the tree item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the tree item is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** Whether the tree item is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** Optional label for typeahead. Defaults to the element's textContent. */\n readonly label = input<string>();\n\n /** Search term for typeahead. */\n readonly searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The tree root. */\n readonly tree: Signal<Tree<V>> = computed(() => {\n if (this.parent() instanceof Tree) {\n return this.parent() as Tree<V>;\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy().tree();\n });\n\n /** Whether the item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** The level of the current item in a tree. */\n readonly level = computed(() => this._pattern.level());\n\n /** Whether the item is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** Whether this item is visible due to all of its parents being expanded. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** Whether the tree is expanded. Use this value for aria-expanded. */\n protected readonly _expanded: Signal<boolean | undefined> = computed(() =>\n this._pattern.expandable() ? this._pattern.expanded() : undefined,\n );\n\n /** The UI pattern for this item. */\n _pattern!: TreeItemPattern<V>;\n\n constructor() {\n super();\n afterNextRender(() => {\n if (this.tree()._pattern instanceof ComboboxTreePattern) {\n this.preserveContent.set(true);\n }\n });\n // Connect the group's hidden state to the DeferredContentAware's visibility.\n afterRenderEffect(() => {\n this.tree()._pattern instanceof ComboboxTreePattern\n ? this.contentVisible.set(true)\n : this.contentVisible.set(this._pattern.expanded());\n });\n }\n\n ngOnInit() {\n this.parent()._register(this);\n this.tree()._register(this);\n\n const treePattern = computed(() => this.tree()._pattern);\n const parentPattern = computed(() => {\n if (this.parent() instanceof Tree) {\n return treePattern();\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy()._pattern;\n });\n this._pattern = new TreeItemPattern<V>({\n ...this,\n tree: treePattern,\n parent: parentPattern,\n children: computed(() => this._group()?._childPatterns()),\n hasChildren: computed(() => !!this._group()),\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n }\n\n ngOnDestroy() {\n this.parent()._unregister(this);\n this.tree()._unregister(this);\n }\n\n _register(group: TreeItemGroup<V>) {\n this._group.set(group);\n }\n\n _unregister() {\n this._group.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 Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TreeItemPattern, DeferredContent} from '../private';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\n\n/**\n * Group that contains children tree items.\n *\n * The `ngTreeItemGroup` structural directive should be applied to an `ng-template` that\n * wraps the child `ngTreeItem` elements. It is used to define a group of children for an\n * expandable `ngTreeItem`. The `ownedBy` input links the group to its parent `ngTreeItem`.\n *\n * ```html\n * <li ngTreeItem [value]=\"'parent-id'\">\n * Parent Item\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"parentTreeItemRef\">\n * <li ngTreeItem [value]=\"'child-id'\">Child Item</li>\n * </ng-template>\n * </ul>\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: 'ng-template[ngTreeItemGroup]',\n exportAs: 'ngTreeItemGroup',\n hostDirectives: [DeferredContent],\n})\nexport class TreeItemGroup<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContent host directive. */\n private readonly _deferredContent = inject(DeferredContent);\n\n /** All groupable items that are descendants of the group. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** Child items within this group. */\n readonly _childPatterns = computed<TreeItemPattern<V>[]>(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(c => c._pattern),\n );\n\n /** Tree item that owns the group. */\n readonly ownedBy = input.required<TreeItem<V>>();\n\n ngOnInit() {\n this._deferredContent.deferredContentAware.set(this.ownedBy());\n this.ownedBy()._register(this);\n }\n\n ngOnDestroy() {\n this.ownedBy()._unregister();\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n}\n"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tree","_elementRef","inject","ElementRef","nativeElement","_popup","ComboboxPopup","optional","_unorderedItems","signal","Set","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","value","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","_hasFocused","constructor","inputs","items","computed","sort","map","item","activeItem","undefined","combobox","ComboboxTreePattern","TreePattern","_controls","set","afterRenderEffect","ngDevMode","violations","validate","violation","console","error","setDefaultState","untracked","some","i","treeBehavior","unfocus","v","filter","_onFocus","_register","child","add","_unregister","delete","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","TreeItem","DeferredContentAware","_group","required","parent","selectable","expanded","label","searchTerm","textContent","tree","ownedBy","active","level","selected","visible","_expanded","expandable","afterNextRender","preserveContent","contentVisible","ngOnInit","treePattern","parentPattern","TreeItemPattern","children","_childPatterns","hasChildren","ngOnDestroy","group","usesInheritance","TreeItemGroup","_deferredContent","DeferredContent","c","deferredContentAware"],"mappings":"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"}
{"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/tree/tree-item-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nexport interface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nexport function sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\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 Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ComboboxTreePattern, TreeItemPattern, TreePattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\n\n/**\n * A container that transforms nested lists into an accessible, ARIA-compliant tree structure.\n * It manages the overall state of the tree, including selection, expansion, and keyboard\n * navigation.\n *\n * ```html\n * <ul ngTree [(value)]=\"selectedItems\" [multi]=\"true\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: treeData, parent: tree}\"\n * />\n * </ul>\n *\n * <ng-template #treeNodes let-nodes=\"nodes\" let-parent=\"parent\">\n * @for (node of nodes; track node.name) {\n * <li ngTreeItem [parent]=\"parent\" [value]=\"node.name\" [label]=\"node.name\">\n * {{ node.name }}\n * @if (node.children) {\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"treeItem\" #group=\"ngTreeItemGroup\">\n * <ng-template\n * [ngTemplateOutlet]=\"treeNodes\"\n * [ngTemplateOutletContext]=\"{nodes: node.children, parent: group}\"\n * />\n * </ng-template>\n * </ul>\n * }\n * </li>\n * }\n * </ng-template>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: '[ngTree]',\n exportAs: 'ngTree',\n host: {\n 'role': 'tree',\n '[attr.id]': 'id()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n hostDirectives: [ComboboxPopup],\n})\nexport class Tree<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** All TreeItem instances within this tree. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** A unique identifier for the tree. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-', true));\n\n /** Orientation of the tree. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multi-selection is allowed. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether the tree is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the tree.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n * - `follow`: The focused item is automatically selected.\n */\n readonly selectionMode = input<'explicit' | 'follow'>('explicit');\n\n /**\n * The focus strategy used by the tree.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the tree container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** Whether navigation wraps. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The delay in seconds before the typeahead search is reset. */\n readonly typeaheadDelay = input(500);\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether the tree is in navigation mode. */\n readonly nav = input(false, {transform: booleanAttribute});\n\n /**\n * The `aria-current` type. It can be used in navigation trees to indicate the currently active item.\n * See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current for more details.\n */\n readonly currentType = input<'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'>(\n 'page',\n );\n\n /** The UI pattern for the tree. */\n readonly _pattern: TreePattern<V>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: computed(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(item => item._pattern),\n ),\n activeItem: signal<TreeItemPattern<V> | undefined>(undefined),\n combobox: () => this._popup?.combobox?._pattern,\n element: () => this.element,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxTreePattern<V>(inputs)\n : new TreePattern<V>(inputs);\n\n if (this._popup?.combobox) {\n this._popup?._controls?.set(this._pattern as ComboboxTreePattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.treeBehavior.unfocus();\n }\n });\n\n afterRenderEffect(() => {\n if (!(this._pattern instanceof ComboboxTreePattern)) return;\n\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\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 Directive,\n ElementRef,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n afterNextRender,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxTreePattern, TreeItemPattern, DeferredContentAware} from '../private';\nimport {Tree} from './tree';\nimport {TreeItemGroup} from './tree-item-group';\nimport {HasElement} from './utils';\n\n/**\n * A selectable and expandable item in an `ngTree`.\n *\n * The `ngTreeItem` directive represents an individual node within an `ngTree`. It can be\n * selected, expanded (if it has children), and disabled. The `parent` input establishes\n * the hierarchical relationship within the tree.\n *\n * ```html\n * <li ngTreeItem [parent]=\"parentTreeOrGroup\" value=\"item-id\" label=\"Item Label\">\n * Item Label\n * </li>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTreeItem]',\n exportAs: 'ngTreeItem',\n host: {\n '[attr.data-active]': 'active()',\n 'role': 'treeitem',\n '[id]': '_pattern.id()',\n '[attr.aria-expanded]': '_expanded()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-current]': '_pattern.current()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-level]': 'level()',\n '[attr.aria-setsize]': '_pattern.setsize()',\n '[attr.aria-posinset]': '_pattern.posinset()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n },\n})\nexport class TreeItem<V> extends DeferredContentAware implements OnInit, OnDestroy, HasElement {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The owned tree item group. */\n private readonly _group = signal<TreeItemGroup<V> | undefined>(undefined);\n\n /** A unique identifier for the tree item. */\n readonly id = input(inject(_IdGenerator).getId('ng-tree-item-', true));\n\n /** The value of the tree item. */\n readonly value = input.required<V>();\n\n /** The parent tree root or tree item group. */\n readonly parent = input.required<Tree<V> | TreeItemGroup<V>>();\n\n /** Whether the tree item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the tree item is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** Whether the tree item is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** Optional label for typeahead. Defaults to the element's textContent. */\n readonly label = input<string>();\n\n /** Search term for typeahead. */\n readonly searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The tree root. */\n readonly tree: Signal<Tree<V>> = computed(() => {\n if (this.parent() instanceof Tree) {\n return this.parent() as Tree<V>;\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy().tree();\n });\n\n /** Whether the item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** The level of the current item in a tree. */\n readonly level = computed(() => this._pattern.level());\n\n /** Whether the item is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** Whether this item is visible due to all of its parents being expanded. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** Whether the tree is expanded. Use this value for aria-expanded. */\n protected readonly _expanded: Signal<boolean | undefined> = computed(() =>\n this._pattern.expandable() ? this._pattern.expanded() : undefined,\n );\n\n /** The UI pattern for this item. */\n _pattern!: TreeItemPattern<V>;\n\n constructor() {\n super();\n afterNextRender(() => {\n if (this.tree()._pattern instanceof ComboboxTreePattern) {\n this.preserveContent.set(true);\n }\n });\n // Connect the group's hidden state to the DeferredContentAware's visibility.\n afterRenderEffect(() => {\n this.tree()._pattern instanceof ComboboxTreePattern\n ? this.contentVisible.set(true)\n : this.contentVisible.set(this._pattern.expanded());\n });\n }\n\n ngOnInit() {\n this.parent()._register(this);\n this.tree()._register(this);\n\n const treePattern = computed(() => this.tree()._pattern);\n const parentPattern = computed(() => {\n if (this.parent() instanceof Tree) {\n return treePattern();\n }\n return (this.parent() as TreeItemGroup<V>).ownedBy()._pattern;\n });\n this._pattern = new TreeItemPattern<V>({\n ...this,\n tree: treePattern,\n parent: parentPattern,\n children: computed(() => this._group()?._childPatterns()),\n hasChildren: computed(() => !!this._group()),\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n }\n\n ngOnDestroy() {\n this.parent()._unregister(this);\n this.tree()._unregister(this);\n }\n\n _register(group: TreeItemGroup<V>) {\n this._group.set(group);\n }\n\n _unregister() {\n this._group.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 Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {TreeItemPattern, DeferredContent} from '../private';\nimport type {TreeItem} from './tree-item';\nimport {sortDirectives} from './utils';\n\n/**\n * Group that contains children tree items.\n *\n * The `ngTreeItemGroup` structural directive should be applied to an `ng-template` that\n * wraps the child `ngTreeItem` elements. It is used to define a group of children for an\n * expandable `ngTreeItem`. The `ownedBy` input links the group to its parent `ngTreeItem`.\n *\n * ```html\n * <li ngTreeItem [value]=\"'parent-id'\">\n * Parent Item\n * <ul role=\"group\">\n * <ng-template ngTreeItemGroup [ownedBy]=\"parentTreeItemRef\">\n * <li ngTreeItem [value]=\"'child-id'\">Child Item</li>\n * </ng-template>\n * </ul>\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tree](guide/aria/tree)\n */\n@Directive({\n selector: 'ng-template[ngTreeItemGroup]',\n exportAs: 'ngTreeItemGroup',\n hostDirectives: [DeferredContent],\n})\nexport class TreeItemGroup<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContent host directive. */\n private readonly _deferredContent = inject(DeferredContent);\n\n /** All groupable items that are descendants of the group. */\n private readonly _unorderedItems = signal(new Set<TreeItem<V>>());\n\n /** Child items within this group. */\n readonly _childPatterns = computed<TreeItemPattern<V>[]>(() =>\n [...this._unorderedItems()].sort(sortDirectives).map(c => c._pattern),\n );\n\n /** Tree item that owns the group. */\n readonly ownedBy = input.required<TreeItem<V>>();\n\n ngOnInit() {\n this._deferredContent.deferredContentAware.set(this.ownedBy());\n this.ownedBy()._register(this);\n }\n\n ngOnDestroy() {\n this.ownedBy()._unregister();\n }\n\n _register(child: TreeItem<V>) {\n this._unorderedItems().add(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n\n _unregister(child: TreeItem<V>) {\n this._unorderedItems().delete(child);\n this._unorderedItems.set(new Set(this._unorderedItems()));\n }\n}\n"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tree","_elementRef","inject","ElementRef","nativeElement","_popup","ComboboxPopup","optional","_unorderedItems","signal","Set","id","input","_IdGenerator","getId","orientation","multi","transform","booleanAttribute","disabled","selectionMode","focusMode","wrap","softDisabled","typeaheadDelay","value","model","textDirection","Directionality","valueSignal","nav","currentType","_pattern","constructor","inputs","items","computed","sort","map","item","activeItem","undefined","combobox","ComboboxTreePattern","TreePattern","_controls","set","afterRenderEffect","ngDevMode","violations","validate","violation","console","error","setDefaultStateEffect","untracked","some","i","treeBehavior","unfocus","v","filter","_register","child","add","_unregister","delete","scrollActiveItemIntoView","options","block","scrollIntoView","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","TreeItem","DeferredContentAware","_group","required","parent","selectable","expanded","label","searchTerm","textContent","tree","ownedBy","active","level","selected","visible","_expanded","expandable","afterNextRender","preserveContent","contentVisible","ngOnInit","treePattern","parentPattern","TreeItemPattern","children","_childPatterns","hasChildren","ngOnDestroy","group","usesInheritance","TreeItemGroup","_deferredContent","DeferredContent","c","deferredContentAware"],"mappings":"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"}
{
"name": "@angular/aria",
"version": "22.0.0-next.3",
"version": "22.0.0-next.4",
"description": "Angular Aria",

@@ -15,3 +15,3 @@ "repository": {

"peerDependencies": {
"@angular/cdk": "22.0.0-next.3",
"@angular/cdk": "22.0.0-next.4",
"@angular/core": "^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0"

@@ -18,0 +18,0 @@ },

@@ -104,3 +104,3 @@ import { KeyboardEventManager } from './_keyboard-event-manager-chunk.js';

/** Whether the combobox has ever been focused. */
hasBeenFocused: WritableSignalLike<boolean>;
hasBeenInteracted: WritableSignalLike<boolean>;
/** The key used to navigate to the previous item in the list. */

@@ -107,0 +107,0 @@ expandKey: SignalLike<"ArrowLeft" | "ArrowRight">;

@@ -538,4 +538,4 @@ import { SignalLike, WritableSignalLike, ListNavigationItem, ListNavigationInputs, ListFocus, ListNavigation } from './_list-navigation-chunk.js';

readonly isFocused: WritableSignalLike<boolean>;
/** Whether the grid has been focused once. */
readonly hasBeenFocused: WritableSignalLike<boolean>;
/** Whether the grid has received focus once. */
readonly hasBeenInteracted: WritableSignalLike<boolean>;
/** Whether the user is currently dragging to select a range of cells. */

@@ -542,0 +542,0 @@ readonly dragging: WritableSignalLike<boolean>;

import { SignalLike, WritableSignalLike } from './_list-navigation-chunk.js';
import { ListInputs, List, ListItem } from './_list-chunk.js';
import { KeyboardEventManager } from './_keyboard-event-manager-chunk.js';
import { PointerEventManager } from './_pointer-event-manager-chunk.js';
import { ClickEventManager } from './_click-event-manager-chunk.js';

@@ -56,2 +56,4 @@ /**

listBehavior: List<OptionPattern<V>, V>;
/** Whether the listbox has been interacted with. */
readonly hasBeenInteracted: WritableSignalLike<boolean>;
/** Whether the list is vertically or horizontally oriented. */

@@ -85,4 +87,4 @@ orientation: SignalLike<'vertical' | 'horizontal'>;

keydown: SignalLike<KeyboardEventManager<KeyboardEvent>>;
/** The pointerdown event manager for the listbox. */
pointerdown: SignalLike<PointerEventManager<PointerEvent>>;
/** The click event manager for the listbox. */
clickManager: SignalLike<ClickEventManager<PointerEvent>>;
constructor(inputs: ListboxInputs<V>);

@@ -93,3 +95,4 @@ /** Returns a set of violations */

onKeydown(event: KeyboardEvent): void;
onPointerdown(event: PointerEvent): void;
onClick(event: PointerEvent): void;
onFocusIn(): void;
/**

@@ -106,2 +109,6 @@ * Sets the listbox to it's default initial state.

setDefaultState(): void;
/**
* Sets the default active state of the listbox before receiving interaction for the first time.
*/
setDefaultStateEffect(): void;
protected _getItem(e: PointerEvent): OptionPattern<V> | undefined;

@@ -108,0 +115,0 @@ }

@@ -62,4 +62,4 @@ import { SignalLike, WritableSignalLike } from './_list-navigation-chunk.js';

isFocused: WritableSignalLike<boolean>;
/** Whether the menu has received focus. */
hasBeenFocused: WritableSignalLike<boolean>;
/** Whether the menu has received interaction. */
hasBeenInteracted: WritableSignalLike<boolean>;
/** Whether the menu trigger has been hovered. */

@@ -90,2 +90,4 @@ hasBeenHovered: WritableSignalLike<boolean>;

setDefaultState(): void;
/** Sets the default active state of the menu before receiving interaction for the first time. */
setDefaultStateEffect(): void;
/** Handles keyboard events for the menu. */

@@ -151,4 +153,4 @@ onKeydown(event: KeyboardEvent): void;

isFocused: WritableSignalLike<boolean>;
/** Whether the menubar has been focused. */
hasBeenFocused: WritableSignalLike<boolean>;
/** Whether the menubar has been interacted with. */
hasBeenInteracted: WritableSignalLike<boolean>;
/** Whether the menubar is disabled. */

@@ -161,2 +163,4 @@ disabled: () => boolean;

setDefaultState(): void;
/** Sets the default active state of the menubar before receiving interaction for the first time. */
setDefaultStateEffect(): void;
/** Handles keyboard events for the menu. */

@@ -186,6 +190,6 @@ onKeydown(event: KeyboardEvent): void;

readonly inputs: MenuTriggerInputs<V>;
/** Whether the menu is expanded. */
/** Whether the menu trigger is expanded. */
expanded: WritableSignalLike<boolean>;
/** Whether the menu trigger has received focus. */
hasBeenFocused: WritableSignalLike<boolean>;
/** Whether the menu trigger has received interaction. */
hasBeenInteracted: WritableSignalLike<boolean>;
/** The role of the menu trigger. */

@@ -237,4 +241,4 @@ role: () => string;

active: SignalLike<boolean>;
/** Whether the menu item has received focus. */
hasBeenFocused: WritableSignalLike<boolean>;
/** Whether the menu item has received interaction. */
hasBeenInteracted: WritableSignalLike<boolean>;
/** The tab index of the menu item. */

@@ -241,0 +245,0 @@ tabIndex: SignalLike<0 | -1>;

import { KeyboardEventManager } from './_keyboard-event-manager-chunk.js';
import { PointerEventManager } from './_pointer-event-manager-chunk.js';
import { ClickEventManager } from './_click-event-manager-chunk.js';
import { ExpansionItem, ListExpansionInputs, ListExpansion } from './_expansion-chunk.js';

@@ -106,2 +106,4 @@ import { SignalLike, ListNavigationItem, ListNavigationInputs, WritableSignalLike, ListFocus, ListNavigation } from './_list-navigation-chunk.js';

readonly expansionBehavior: ListExpansion;
/** Whether the tablist has been interacted with. */
readonly hasBeenInteracted: WritableSignalLike<boolean>;
/** The currently active tab. */

@@ -127,4 +129,4 @@ readonly activeTab: SignalLike<TabPattern | undefined>;

readonly keydown: SignalLike<KeyboardEventManager<KeyboardEvent>>;
/** The pointerdown event manager for the tablist. */
readonly pointerdown: SignalLike<PointerEventManager<PointerEvent>>;
/** The click event manager for the tablist. */
readonly clickManager: SignalLike<ClickEventManager<PointerEvent>>;
constructor(inputs: TabListInputs);

@@ -140,6 +142,10 @@ /**

setDefaultState(): void;
/** Sets the default active state of the tablist before receiving interaction for the first time. */
setDefaultStateEffect(): void;
/** Handles keydown events for the tablist. */
onKeydown(event: KeyboardEvent): void;
/** The pointerdown event manager for the tablist. */
onPointerdown(event: PointerEvent): void;
/** The click event manager for the tablist. */
onClick(event: PointerEvent): void;
/** Handles focusin events for the tablist. */
onFocusIn(): void;
/** Opens the tab by given value. */

@@ -146,0 +152,0 @@ open(value: string): boolean;

@@ -1,2 +0,2 @@

import { SignalLike } from './_list-navigation-chunk.js';
import { SignalLike, WritableSignalLike } from './_list-navigation-chunk.js';
import { ListItem, ListInputs, List } from './_list-chunk.js';

@@ -77,2 +77,4 @@

readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;
/** Whether the toolbar has been interacted with. */
readonly hasBeenInteracted: WritableSignalLike<boolean>;
/** Whether the tablist is vertically or horizontally oriented. */

@@ -111,2 +113,3 @@ readonly orientation: SignalLike<'vertical' | 'horizontal'>;

onPointerdown(event: PointerEvent): void;
onFocusIn(): void;
/** Handles click events for the toolbar. */

@@ -121,2 +124,4 @@ onClick(event: MouseEvent): void;

setDefaultState(): void;
/** Sets the default active state of the toolbar before receiving interaction for the first time. */
setDefaultStateEffect(): void;
}

@@ -123,0 +128,0 @@

@@ -191,2 +191,4 @@ import { ListNavigationItem, ListFocusItem, SignalLike, ListFocusInputs, ListNavigationInputs, ListNavigation, ListFocus, WritableSignalLike } from './_list-navigation-chunk.js';

readonly treeBehavior: Tree<TreeItemPattern<V>, V>;
/** Whether the tree has been interacted with. */
readonly hasBeenInteracted: WritableSignalLike<boolean>;
/** The root level is 0. */

@@ -266,2 +268,4 @@ readonly level: () => number;

setDefaultState(): void;
/** Sets the default active state of the tree before receiving interaction for the first time. */
setDefaultStateEffect(): void;
/** Handles keydown events on the tree. */

@@ -271,2 +275,4 @@ onKeydown(event: KeyboardEvent): void;

onPointerdown(event: PointerEvent): void;
/** Handles focusin events on the tree. */
onFocusIn(): void;
/** Navigates to the given tree item in the tree. */

@@ -273,0 +279,0 @@ goto(e: PointerEvent, opts?: SelectOptions): void;

@@ -9,4 +9,5 @@ import * as _angular_cdk_bidi from '@angular/cdk/bidi';

import './_keyboard-event-manager-chunk.js';
import './_click-event-manager-chunk.js';
import './_combobox-chunk.js';
import './_pointer-event-manager-chunk.js';
import './_combobox-chunk.js';
import './_deferred-content-chunk.js';

@@ -86,6 +87,3 @@

readonly _pattern: ListboxPattern<V>;
/** Whether the listbox has received focus yet. */
private _hasFocused;
constructor();
_onFocus(): void;
scrollActiveItemIntoView(options?: ScrollIntoViewOptions): void;

@@ -92,0 +90,0 @@ /** Navigates to the first item in the listbox. */

@@ -19,2 +19,3 @@ import { ComboboxPattern, ComboboxListboxControls, ComboboxTreeControls } from './_combobox-chunk.js';

import './_list-chunk.js';
import './_click-event-manager-chunk.js';
import './_expansion-chunk.js';

@@ -45,3 +46,3 @@ import '@angular/core';

/** Noop. The combobox handles pointerdown events. */
onPointerdown(_: PointerEvent): void;
onClick(_: PointerEvent): void;
/** Noop. The combobox controls the open state. */

@@ -48,0 +49,0 @@ setDefaultState(): void;

@@ -8,3 +8,3 @@ import * as _angular_core from '@angular/core';

import './_list-navigation-chunk.js';
import './_pointer-event-manager-chunk.js';
import './_click-event-manager-chunk.js';
import './_expansion-chunk.js';

@@ -123,6 +123,3 @@

readonly _pattern: TabListPattern;
/** Whether the tree has received focus yet. */
private _hasFocused;
constructor();
_onFocus(): void;
ngOnInit(): void;

@@ -129,0 +126,0 @@ ngOnDestroy(): void;

@@ -136,6 +136,3 @@ import * as _angular_core from '@angular/core';

readonly _pattern: ToolbarPattern<V>;
/** Whether the toolbar has received focus yet. */
private _hasBeenFocused;
constructor();
_onFocus(): void;
_register(widget: ToolbarWidget<V>): void;

@@ -142,0 +139,0 @@ _unregister(widget: ToolbarWidget<V>): void;

@@ -210,6 +210,3 @@ import * as _angular_cdk_bidi from '@angular/cdk/bidi';

readonly _pattern: TreePattern<V>;
/** Whether the tree has received focus since it was rendered. */
private _hasFocused;
constructor();
_onFocus(): void;
_register(child: TreeItem<V>): void;

@@ -216,0 +213,0 @@ _unregister(child: TreeItem<V>): void;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet