@spartan-ng/brain 0.0.1-alpha.646 → 0.0.1-alpha.648
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/combobox/index.d.ts +1 -0
- package/fesm2022/spartan-ng-brain-autocomplete.mjs +6 -2
- package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-combobox.mjs +7 -2
- package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-core.mjs +2 -1
- package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
- package/package.json +1 -1
package/combobox/index.d.ts
CHANGED
|
@@ -309,6 +309,7 @@ declare class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValue
|
|
|
309
309
|
/** The current search query. */
|
|
310
310
|
readonly search: _angular_core.ModelSignal<string>;
|
|
311
311
|
private readonly _searchInputWrapper;
|
|
312
|
+
/** @internal The width of the search input wrapper */
|
|
312
313
|
readonly searchInputWrapperWidth: _angular_core.Signal<number | null>;
|
|
313
314
|
/** @internal Access all the items within the combobox */
|
|
314
315
|
readonly items: _angular_core.Signal<readonly BrnComboboxItem<T>[]>;
|
|
@@ -77,7 +77,9 @@ class BrnAutocomplete {
|
|
|
77
77
|
/** @internal The width of the search input wrapper */
|
|
78
78
|
searchInputWrapperWidth = computed(() => {
|
|
79
79
|
const inputElement = this._searchInputWrapper()?.nativeElement;
|
|
80
|
-
|
|
80
|
+
if (!inputElement)
|
|
81
|
+
return null;
|
|
82
|
+
return inputElement.getBoundingClientRect().width || inputElement.offsetWidth;
|
|
81
83
|
}, ...(ngDevMode ? [{ debugName: "searchInputWrapperWidth" }] : []));
|
|
82
84
|
/** @internal Access all the items within the autocomplete */
|
|
83
85
|
items = contentChildren(BrnAutocompleteItemToken, ...(ngDevMode ? [{ debugName: "items", descendants: true }] : [{
|
|
@@ -520,7 +522,9 @@ class BrnAutocompleteSearch {
|
|
|
520
522
|
/** @internal The width of the search input wrapper */
|
|
521
523
|
searchInputWrapperWidth = computed(() => {
|
|
522
524
|
const inputElement = this._searchInputWrapper()?.nativeElement;
|
|
523
|
-
|
|
525
|
+
if (!inputElement)
|
|
526
|
+
return null;
|
|
527
|
+
return inputElement.getBoundingClientRect().width || inputElement.offsetWidth;
|
|
524
528
|
}, ...(ngDevMode ? [{ debugName: "searchInputWrapperWidth" }] : []));
|
|
525
529
|
/** @internal Access all the items within the autocomplete */
|
|
526
530
|
items = contentChildren(BrnAutocompleteItemToken, ...(ngDevMode ? [{ debugName: "items", descendants: true }] : [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-autocomplete.mjs","sources":["../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input-wrapper.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-anchor.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-clear.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-content.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-empty.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-label.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-group.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-list.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-search.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-separator.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-status.ts","../../../../libs/brain/autocomplete/src/index.ts","../../../../libs/brain/autocomplete/src/spartan-ng-brain-autocomplete.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[brnAutocompleteInputWrapper]' })\nexport class BrnAutocompleteInputWrapper {}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport const BrnAutocompleteItemToken = new InjectionToken<BrnAutocompleteItem<unknown>>('BrnAutocompleteItemToken');\n\nexport function provideBrnAutocompleteItem<T>(autocomplete: Type<BrnAutocompleteItem<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteItemToken, useExisting: autocomplete };\n}\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport interface BrnAutocompleteBase<T> {\n\titemToString: InputSignal<AutocompleteItemToString<T> | undefined>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;\n\tvalue: ModelSignal<T | null> | ModelSignal<string | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\n\tupdateSearch: (value: string) => void;\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n}\n\nexport const BrnAutocompleteBaseToken = new InjectionToken<BrnAutocompleteBase<unknown>>('BrnAutocompleteBaseToken');\n\nexport function provideBrnAutocompleteBase<T>(autocomplete: Type<BrnAutocompleteBase<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteBaseToken, useExisting: autocomplete };\n}\n\nexport function injectBrnAutocompleteBase<T>(): BrnAutocompleteBase<T> {\n\treturn inject(BrnAutocompleteBaseToken) as BrnAutocompleteBase<T>;\n}\n\n// config\nexport type AutocompleteItemEqualToValue<T> = (itemValue: T, selectedValue: T | null) => boolean;\nexport type AutocompleteItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnAutocompleteConfig<T> {\n\tisItemEqualToValue: AutocompleteItemEqualToValue<T>;\n\titemToString?: AutocompleteItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnAutocompleteConfig<T> {\n\treturn {\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnAutocompleteConfigToken = new InjectionToken<BrnAutocompleteConfig<unknown>>('BrnAutocompleteConfig');\n\nexport function provideBrnAutocompleteConfig<T>(config: Partial<BrnAutocompleteConfig<T>>): ValueProvider {\n\treturn { provide: BrnAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnAutocompleteConfig<T>(): BrnAutocompleteConfig<T> {\n\tconst injectedConfig = inject(BrnAutocompleteConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnAutocompleteConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInputWrapper } from './brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemEqualToValue,\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocomplete),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [provideBrnAutocompleteBase(BrnAutocomplete), BRN_AUTOCOMPLETE_VALUE_ACCESSOR],\n})\nexport class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<AutocompleteItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<T | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnAutocompleteInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\treturn inputElement ? (inputElement.offsetWidth as number) : null;\n\t});\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.search.set(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tselect(itemValue: T) {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: T | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({ selector: '[brnAutocompleteAnchor]' })\nexport class BrnAutocompleteAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tconstructor() {\n\t\tif (!this._brnDialog) return;\n\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteClear]',\n})\nexport class BrnAutocompleteClear {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the combobox has a value */\n\tprivate readonly _hasValue = computed(() => this._autocomplete.value() !== null);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._hasValue()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tclear() {\n\t\tthis._autocomplete.resetValue();\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteContent]',\n\thost: {\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t\t'[style.--brn-autocomplete-width.px]': '_autocompleteWidth()',\n\t},\n})\nexport class BrnAutocompleteContent {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\tprotected readonly _autocompleteWidth = this._autocomplete.searchInputWrapperWidth;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnAutocompleteLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the autocomplete label */\n\tpublic readonly id = input<string>(`brn-autocomplete-label-${++BrnAutocompleteLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport { BrnAutocompleteLabel } from './brn-autocomplete-label';\n\n@Directive({\n\tselector: '[brnAutocompleteGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnAutocompleteGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().length > 0);\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnAutocompleteLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: 'input[brnAutocompleteInput]',\n\texportAs: 'brnAutocompleteInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnAutocompleteInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** The id of the autocomplete input */\n\tpublic readonly id = input<string>(`brn-autocomplete-input-${++BrnAutocompleteInput._id}`);\n\n\tpublic readonly disabled = this._autocomplete.disabledState;\n\n\t/** Whether the autocomplete panel is expanded */\n\tprotected readonly _isExpanded = this._autocomplete.isExpanded;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._autocomplete.value();\n\t\t\tconst valueLabel = stringifyAsLabel(value, this._autocomplete.itemToString());\n\t\t\tthis._el.nativeElement.value = valueLabel ?? '';\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst search = this._autocomplete.search();\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._autocomplete.updateSearch(value);\n\t}\n\n\tprotected onKeyDown(event: KeyboardEvent) {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t}\n\n\t\tif (event.key === 'Tab' && this._isExpanded()) {\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._autocomplete.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._autocomplete.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._autocomplete.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnAutocompleteItem } from './brn-autocomplete-item.token';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteItem]',\n\tproviders: [provideBrnAutocompleteItem(BrnAutocompleteItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnAutocompleteItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the autocomplete component */\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-autocomplete-item-${++BrnAutocompleteItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._autocomplete.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\tsetActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tgetLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._autocomplete.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t\tthis._autocomplete.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnAutocompleteList {\n\tprivate static _id = 0;\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\t/** The id of the autocomplete list */\n\tpublic readonly id = input<string>(`brn-autocomplete-list-${++BrnAutocompleteList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInputWrapper } from './brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocompleteSearch),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [provideBrnAutocompleteBase(BrnAutocompleteSearch), BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR],\n})\nexport class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<string | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnAutocompleteInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\treturn inputElement ? (inputElement.offsetWidth as number) : null;\n\t});\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprotected _onChange?: ChangeFn<string | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.value.set(value);\n\t\tthis.search.set(value);\n\t\tthis._onChange?.(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn stringifyAsLabel(itemValue, this.itemToString()) === this.value();\n\t}\n\n\tselect(itemValue: T) {\n\t\tconst label = stringifyAsLabel(itemValue, this.itemToString());\n\n\t\tthis.value.set(label);\n\t\tthis._onChange?.(label);\n\t\tthis.search.set(label);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnAutocompleteSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteStatus {}\n","import { BrnAutocomplete } from './lib/brn-autocomplete';\nimport { BrnAutocompleteAnchor } from './lib/brn-autocomplete-anchor';\nimport { BrnAutocompleteClear } from './lib/brn-autocomplete-clear';\nimport { BrnAutocompleteContent } from './lib/brn-autocomplete-content';\nimport { BrnAutocompleteEmpty } from './lib/brn-autocomplete-empty';\nimport { BrnAutocompleteGroup } from './lib/brn-autocomplete-group';\nimport { BrnAutocompleteInput } from './lib/brn-autocomplete-input';\nimport { BrnAutocompleteInputWrapper } from './lib/brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './lib/brn-autocomplete-item';\nimport { BrnAutocompleteLabel } from './lib/brn-autocomplete-label';\nimport { BrnAutocompleteList } from './lib/brn-autocomplete-list';\nimport { BrnAutocompleteSearch } from './lib/brn-autocomplete-search';\nimport { BrnAutocompleteSeparator } from './lib/brn-autocomplete-separator';\nimport { BrnAutocompleteStatus } from './lib/brn-autocomplete-status';\n\nexport * from './lib/brn-autocomplete';\nexport * from './lib/brn-autocomplete-anchor';\nexport * from './lib/brn-autocomplete-clear';\nexport * from './lib/brn-autocomplete-content';\nexport * from './lib/brn-autocomplete-empty';\nexport * from './lib/brn-autocomplete-group';\nexport * from './lib/brn-autocomplete-input';\nexport * from './lib/brn-autocomplete-input-wrapper';\nexport * from './lib/brn-autocomplete-item';\nexport * from './lib/brn-autocomplete-item.token';\nexport * from './lib/brn-autocomplete-label';\nexport * from './lib/brn-autocomplete-list';\nexport * from './lib/brn-autocomplete-search';\nexport * from './lib/brn-autocomplete-separator';\nexport * from './lib/brn-autocomplete-status';\nexport * from './lib/brn-autocomplete.token';\n\nexport const BrnAutocompleteImports = [\n\tBrnAutocomplete,\n\tBrnAutocompleteAnchor,\n\tBrnAutocompleteClear,\n\tBrnAutocompleteContent,\n\tBrnAutocompleteEmpty,\n\tBrnAutocompleteGroup,\n\tBrnAutocompleteInput,\n\tBrnAutocompleteInputWrapper,\n\tBrnAutocompleteItem,\n\tBrnAutocompleteLabel,\n\tBrnAutocompleteList,\n\tBrnAutocompleteSearch,\n\tBrnAutocompleteSeparator,\n\tBrnAutocompleteStatus,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAGa,2BAA2B,CAAA;2HAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE;;;MCC3C,wBAAwB,GAAG,IAAI,cAAc,CAA+B,0BAA0B;AAE7G,SAAU,0BAA0B,CAAI,YAA0C,EAAA;IACvF,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,YAAY,EAAE;AACxE;;MC0Ba,wBAAwB,GAAG,IAAI,cAAc,CAA+B,0BAA0B;AAE7G,SAAU,0BAA0B,CAAI,YAA0C,EAAA;IACvF,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,YAAY,EAAE;AACxE;SAEgB,yBAAyB,GAAA;AACxC,IAAA,OAAO,MAAM,CAAC,wBAAwB,CAA2B;AAClE;AAYA,SAAS,gBAAgB,GAAA;IACxB,OAAO;AACN,QAAA,kBAAkB,EAAE,CAAC,SAAY,EAAE,aAAuB,KAAK,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;AAClG,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,aAAa,EAAE,KAAK;KACpB;AACF;AAEA,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAAiC,uBAAuB,CAAC;AAExG,SAAU,4BAA4B,CAAI,MAAyC,EAAA;AACxF,IAAA,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;AAC/F;SAEgB,2BAA2B,GAAA;AAC1C,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7E,OAAO,cAAc,GAAI,cAA2C,GAAG,gBAAgB,EAAE;AAC1F;;ACrCO,MAAM,+BAA+B,GAAG;AAC9C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,IAAA,KAAK,EAAE,IAAI;;MAOC,eAAe,CAAA;AACV,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE5B,OAAO,GAAG,2BAA2B,EAAK;;IAG1C,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGrD,IAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE5E,IAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,qDAAC;;AAG1C,IAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;IAG3C,kBAAkB,GAAG,KAAK,CAAkC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG5F,YAAY,GAAG,KAAK,CAA0C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGxF,IAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EACtF,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAD6D;AACxF,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,KAAK,GAAG,KAAK,CAAW,IAAI,iDAAC;;AAG7B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;IAEzB,mBAAmB,GAAG,YAAY,CAAC,2BAA2B,uDAC9E,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CADgE;AAChF,YAAA,IAAI,EAAE,UAAU;AAChB,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,uBAAuB,GAAG,QAAQ,CAAgB,MAAK;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa;QAC9D,OAAO,YAAY,GAAI,YAAY,CAAC,WAAsB,GAAG,IAAI;AAClE,KAAC,mEAAC;;IAGc,KAAK,GAAG,eAAe,CAAyB,wBAAwB,yCACvF,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CADwE;AACzF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,wDAAC;;AAGtD,IAAA,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;;AAGvE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,MAAM,sDAAC;AAE/E,IAAA,SAAS;AACT,IAAA,UAAU;AAEpB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC;AACH,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;aACR,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;YACvC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAClC,SAAC,CAAC;QAEF,eAAe,CAAC,MAAK;YACpB,MAAM,CACL,MAAK;AACJ,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAAE;AAEnE,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE;gBAE3C,SAAS,CAAC,MAAK;oBACd,IAAI,eAAe,EAAE;AACpB,wBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;;yBAC9B;wBACN,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;AAEnC,iBAAC,CAAC;aACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B;AACF,SAAC,CAAC;;AAGH,IAAA,YAAY,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,IAAI,EAAE;AAEX,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;;;AAInB,IAAA,UAAU,CAAC,SAAY,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;AAG1D,IAAA,MAAM,CAAC,SAAY,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE;;;IAIb,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE;QAEjD,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;aACZ;YACN,IAAI,CAAC,KAAK,EAAE;;;IAId,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;IAGvB,IAAI,GAAA;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAE3C,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;IAGzB,KAAK,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE5C,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;IAG1B,MAAM,GAAA;QACL,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AAEtB,QAAA,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;;;AAI/C,IAAA,UAAU,CAAC,KAAe,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGtB,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAjKnB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAFhB,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,+BAA+B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmCrC,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACxE,UAAU,wDAU+C,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA5C5E,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE,CAAC,0BAA0B,CAAA,eAAA,CAAiB,EAAE,+BAA+B,CAAC;AACzF,iBAAA;AAkCoD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,2BAA2B,CAAA,EAAA,EAAA,GAAE;AAChF,4BAAA,IAAI,EAAE,UAAU;AAChB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAS+D,wBAAwB,CAAA,EAAA,EAAA,GAAE;AACzF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCrFW,qBAAqB,CAAA;IAChB,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEnE,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAEtB,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;2HAPlD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,yBAAyB,EAAE;;;MCGrC,oBAAoB,CAAA;IACf,aAAa,GAAG,yBAAyB,EAAE;AAC3C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,YAAY,GAAG,MAAM,CAAoB,WAAW,CAAC;AACrD,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG5C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,IAAI,qDAAC;AAEhF,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;gBACzE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC/B,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAI;wBAC1C,CAAC,CAAC,cAAc,EAAE;wBAClB,IAAI,CAAC,KAAK,EAAE;AACb,qBAAC,CAAC;AACH,iBAAC,CAAC;;AAEJ,SAAC,CAAC;;IAGH,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;2HAzBpB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,iBAAA;;;MCKY,sBAAsB,CAAA;IACjB,aAAa,GAAG,yBAAyB,EAAE;;AAGzC,IAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;AAE/C,IAAA,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB;2HANtE,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,mCAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACL,wBAAA,mBAAmB,EAAE,8BAA8B;AACnD,wBAAA,qCAAqC,EAAE,sBAAsB;AAC7D,qBAAA;AACD,iBAAA;;;MCCY,oBAAoB,CAAA;2HAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,aAAa,EAAE,MAAM;AACrB,qBAAA;AACD,iBAAA;;;MCDY,oBAAoB,CAAA;AACxB,IAAA,OAAO,GAAG,GAAG,CAAC;;IAGN,EAAE,GAAG,KAAK,CAAS,CAAA,uBAAA,EAA0B,EAAE,oBAAoB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;2HAJ9E,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,qBAAA;AACD,iBAAA;;;MCKY,oBAAoB,CAAA;;IAEf,MAAM,GAAG,eAAe,CAAC,wBAAwB,0CACjE,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CADkD;AACnE,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;AAGiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,oDAAC;;AAGrD,IAAA,MAAM,GAAG,YAAY,CAAC,oBAAoB,kDAAC;AAEzC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI;AACjC,KAAC,uDAAC;2HAfU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAEU,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQ3B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAV/C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,oBAAoB,EAAE,yBAAyB;AAC/C,wBAAA,wBAAwB,EAAE,eAAe;AACzC,qBAAA;AACD,iBAAA;AAG0C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAAwB,CAAA,EAAA,EAAA,GAAE;AACnE,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAMsC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCC/C,oBAAoB,CAAA;AACxB,IAAA,OAAO,GAAG,GAAG,CAAC;AACL,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,GAAG,yBAAyB,EAAK;;IAG/C,EAAE,GAAG,KAAK,CAAS,CAAA,uBAAA,EAA0B,EAAE,oBAAoB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE1E,IAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;;AAGxC,IAAA,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU;AAE9D,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACxC,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE;AAChD,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACX,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,EAAE;gBAC5C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM;;AAEvC,SAAC,CAAC;;AAGO,IAAA,OAAO,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AAEtD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;;AAG7B,IAAA,SAAS,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;;YAE1B,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;;QAGtC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACrC;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AACzD,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;AAG1B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;;QAIjC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;2HAzDnC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,aAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,qBAAA;AACD,iBAAA;;;MCAY,mBAAmB,CAAA;AACvB,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AAE/B,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGzD,aAAa,GAAG,yBAAyB,EAAK;;IAG/C,EAAE,GAAG,KAAK,CAAS,CAAA,sBAAA,EAAyB,EAAE,mBAAmB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGxE,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAK;;AAG3B,IAAA,SAAS,GAAG,KAAK,CAAwB,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAC7D,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAFoC;AAC/D,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;AAGF,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;;AAIR,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,kDAAC;AAEjE,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;IAE/C,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG3B,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;;IAIrE,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;;IAG7B,QAAQ,GAAA;AACP,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;;IAG/D,MAAM,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;QAGD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAG9B,QAAQ,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;QAGD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;;2HA/DtC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,iuBAZpB,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAYhD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE,CAAC,0BAA0B,CAAA,mBAAA,CAAqB,CAAC;AAC5D,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,yBAAyB,EAAE,4BAA4B;AACvD,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,cAAc,EAAE,YAAY;AAC5B,qBAAA;AACD,iBAAA;;;MCRY,mBAAmB,CAAA;AACvB,IAAA,OAAO,GAAG,GAAG,CAAC;IAEL,aAAa,GAAG,yBAAyB,EAAE;;AAGzC,IAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;;IAGlD,EAAE,GAAG,KAAK,CAAS,CAAA,sBAAA,EAAyB,EAAE,mBAAmB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;2HAT5E,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,mBAAmB,EAAE,8BAA8B;AACnD,qBAAA;AACD,iBAAA;;;ACqBM,MAAM,sCAAsC,GAAG;AACrD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,IAAA,KAAK,EAAE,IAAI;;MAOC,qBAAqB,CAAA;AAChB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE5B,OAAO,GAAG,2BAA2B,EAAK;;IAG1C,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGrD,IAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE5E,IAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,qDAAC;;AAG1C,IAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;IAG3C,YAAY,GAAG,KAAK,CAA0C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGxF,IAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EACtF,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAD6D;AACxF,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;;AAGlC,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;IAEzB,mBAAmB,GAAG,YAAY,CAAC,2BAA2B,uDAC9E,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CADgE;AAChF,YAAA,IAAI,EAAE,UAAU;AAChB,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,uBAAuB,GAAG,QAAQ,CAAgB,MAAK;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,aAAa;QAC9D,OAAO,YAAY,GAAI,YAAY,CAAC,WAAsB,GAAG,IAAI;AAClE,KAAC,mEAAC;;IAGc,KAAK,GAAG,eAAe,CAAyB,wBAAwB,yCACvF,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CADwE;AACzF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;AAGc,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,wDAAC;;AAGtD,IAAA,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;;AAGvE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,MAAM,sDAAC;AAE/E,IAAA,SAAS;AACT,IAAA,UAAU;AAEpB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC;AACH,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;aACR,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;YACvC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAClC,SAAC,CAAC;QAEF,eAAe,CAAC,MAAK;YACpB,MAAM,CACL,MAAK;AACJ,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAAE;AAEnE,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE;gBAE3C,SAAS,CAAC,MAAK;oBACd,IAAI,eAAe,EAAE;AACpB,wBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;;yBAC9B;wBACN,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;AAEnC,iBAAC,CAAC;aACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B;AACF,SAAC,CAAC;;AAGH,IAAA,YAAY,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE;AAEX,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;;;AAInB,IAAA,UAAU,CAAC,SAAY,EAAA;AACtB,QAAA,OAAO,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;;AAGzE,IAAA,MAAM,CAAC,SAAY,EAAA;QAClB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAE9D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;;;IAIb,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE;QAEjD,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;aACZ;YACN,IAAI,CAAC,KAAK,EAAE;;;IAId,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;IAGvB,IAAI,GAAA;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAE3C,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;IAGzB,KAAK,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE5C,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;IAG1B,MAAM,GAAA;QACL,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AAEtB,QAAA,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;;;AAI/C,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGtB,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAnKnB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,EAAE,sCAAsC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgClD,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACxE,UAAU,wDAU+C,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAzC5E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE,CAAC,0BAA0B,CAAA,qBAAA,CAAuB,EAAE,sCAAsC,CAAC;AACtG,iBAAA;AA+BoD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,2BAA2B,CAAA,EAAA,EAAA,GAAE;AAChF,4BAAA,IAAI,EAAE,UAAU;AAChB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAS+D,wBAAwB,CAAA,EAAA,EAAA,GAAE;AACzF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC5EW,wBAAwB,CAAA;AACpB,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,uDAAC;2HADhE,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,qBAAA;AACD,iBAAA;;;MCCY,qBAAqB,CAAA;2HAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,aAAa,EAAE,MAAM;AACrB,qBAAA;AACD,iBAAA;;;ACuBM,MAAM,sBAAsB,GAAG;IACrC,eAAe;IACf,qBAAqB;IACrB,oBAAoB;IACpB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,2BAA2B;IAC3B,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;IACxB,qBAAqB;;;AC9CtB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-autocomplete.mjs","sources":["../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input-wrapper.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-anchor.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-clear.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-content.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-empty.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-label.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-group.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-list.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-search.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-separator.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-status.ts","../../../../libs/brain/autocomplete/src/index.ts","../../../../libs/brain/autocomplete/src/spartan-ng-brain-autocomplete.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[brnAutocompleteInputWrapper]' })\nexport class BrnAutocompleteInputWrapper {}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport const BrnAutocompleteItemToken = new InjectionToken<BrnAutocompleteItem<unknown>>('BrnAutocompleteItemToken');\n\nexport function provideBrnAutocompleteItem<T>(autocomplete: Type<BrnAutocompleteItem<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteItemToken, useExisting: autocomplete };\n}\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport interface BrnAutocompleteBase<T> {\n\titemToString: InputSignal<AutocompleteItemToString<T> | undefined>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;\n\tvalue: ModelSignal<T | null> | ModelSignal<string | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\n\tupdateSearch: (value: string) => void;\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n}\n\nexport const BrnAutocompleteBaseToken = new InjectionToken<BrnAutocompleteBase<unknown>>('BrnAutocompleteBaseToken');\n\nexport function provideBrnAutocompleteBase<T>(autocomplete: Type<BrnAutocompleteBase<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteBaseToken, useExisting: autocomplete };\n}\n\nexport function injectBrnAutocompleteBase<T>(): BrnAutocompleteBase<T> {\n\treturn inject(BrnAutocompleteBaseToken) as BrnAutocompleteBase<T>;\n}\n\n// config\nexport type AutocompleteItemEqualToValue<T> = (itemValue: T, selectedValue: T | null) => boolean;\nexport type AutocompleteItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnAutocompleteConfig<T> {\n\tisItemEqualToValue: AutocompleteItemEqualToValue<T>;\n\titemToString?: AutocompleteItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnAutocompleteConfig<T> {\n\treturn {\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnAutocompleteConfigToken = new InjectionToken<BrnAutocompleteConfig<unknown>>('BrnAutocompleteConfig');\n\nexport function provideBrnAutocompleteConfig<T>(config: Partial<BrnAutocompleteConfig<T>>): ValueProvider {\n\treturn { provide: BrnAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnAutocompleteConfig<T>(): BrnAutocompleteConfig<T> {\n\tconst injectedConfig = inject(BrnAutocompleteConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnAutocompleteConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInputWrapper } from './brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemEqualToValue,\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocomplete),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [provideBrnAutocompleteBase(BrnAutocomplete), BRN_AUTOCOMPLETE_VALUE_ACCESSOR],\n})\nexport class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<AutocompleteItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<T | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnAutocompleteInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\tif (!inputElement) return null;\n\t\treturn inputElement.getBoundingClientRect().width || inputElement.offsetWidth;\n\t});\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.search.set(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tselect(itemValue: T) {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: T | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({ selector: '[brnAutocompleteAnchor]' })\nexport class BrnAutocompleteAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tconstructor() {\n\t\tif (!this._brnDialog) return;\n\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteClear]',\n})\nexport class BrnAutocompleteClear {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the combobox has a value */\n\tprivate readonly _hasValue = computed(() => this._autocomplete.value() !== null);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._hasValue()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tclear() {\n\t\tthis._autocomplete.resetValue();\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteContent]',\n\thost: {\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t\t'[style.--brn-autocomplete-width.px]': '_autocompleteWidth()',\n\t},\n})\nexport class BrnAutocompleteContent {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\tprotected readonly _autocompleteWidth = this._autocomplete.searchInputWrapperWidth;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnAutocompleteLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the autocomplete label */\n\tpublic readonly id = input<string>(`brn-autocomplete-label-${++BrnAutocompleteLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport { BrnAutocompleteLabel } from './brn-autocomplete-label';\n\n@Directive({\n\tselector: '[brnAutocompleteGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnAutocompleteGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().length > 0);\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnAutocompleteLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: 'input[brnAutocompleteInput]',\n\texportAs: 'brnAutocompleteInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnAutocompleteInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** The id of the autocomplete input */\n\tpublic readonly id = input<string>(`brn-autocomplete-input-${++BrnAutocompleteInput._id}`);\n\n\tpublic readonly disabled = this._autocomplete.disabledState;\n\n\t/** Whether the autocomplete panel is expanded */\n\tprotected readonly _isExpanded = this._autocomplete.isExpanded;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._autocomplete.value();\n\t\t\tconst valueLabel = stringifyAsLabel(value, this._autocomplete.itemToString());\n\t\t\tthis._el.nativeElement.value = valueLabel ?? '';\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst search = this._autocomplete.search();\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._autocomplete.updateSearch(value);\n\t}\n\n\tprotected onKeyDown(event: KeyboardEvent) {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t}\n\n\t\tif (event.key === 'Tab' && this._isExpanded()) {\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._autocomplete.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._autocomplete.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._autocomplete.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnAutocompleteItem } from './brn-autocomplete-item.token';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteItem]',\n\tproviders: [provideBrnAutocompleteItem(BrnAutocompleteItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnAutocompleteItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the autocomplete component */\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-autocomplete-item-${++BrnAutocompleteItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._autocomplete.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\tsetActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tgetLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._autocomplete.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t\tthis._autocomplete.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnAutocompleteList {\n\tprivate static _id = 0;\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\t/** The id of the autocomplete list */\n\tpublic readonly id = input<string>(`brn-autocomplete-list-${++BrnAutocompleteList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInputWrapper } from './brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocompleteSearch),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [provideBrnAutocompleteBase(BrnAutocompleteSearch), BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR],\n})\nexport class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<string | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnAutocompleteInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\tif (!inputElement) return null;\n\t\treturn inputElement.getBoundingClientRect().width || inputElement.offsetWidth;\n\t});\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprotected _onChange?: ChangeFn<string | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.value.set(value);\n\t\tthis.search.set(value);\n\t\tthis._onChange?.(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn stringifyAsLabel(itemValue, this.itemToString()) === this.value();\n\t}\n\n\tselect(itemValue: T) {\n\t\tconst label = stringifyAsLabel(itemValue, this.itemToString());\n\n\t\tthis.value.set(label);\n\t\tthis._onChange?.(label);\n\t\tthis.search.set(label);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnAutocompleteSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteStatus {}\n","import { BrnAutocomplete } from './lib/brn-autocomplete';\nimport { BrnAutocompleteAnchor } from './lib/brn-autocomplete-anchor';\nimport { BrnAutocompleteClear } from './lib/brn-autocomplete-clear';\nimport { BrnAutocompleteContent } from './lib/brn-autocomplete-content';\nimport { BrnAutocompleteEmpty } from './lib/brn-autocomplete-empty';\nimport { BrnAutocompleteGroup } from './lib/brn-autocomplete-group';\nimport { BrnAutocompleteInput } from './lib/brn-autocomplete-input';\nimport { BrnAutocompleteInputWrapper } from './lib/brn-autocomplete-input-wrapper';\nimport { BrnAutocompleteItem } from './lib/brn-autocomplete-item';\nimport { BrnAutocompleteLabel } from './lib/brn-autocomplete-label';\nimport { BrnAutocompleteList } from './lib/brn-autocomplete-list';\nimport { BrnAutocompleteSearch } from './lib/brn-autocomplete-search';\nimport { BrnAutocompleteSeparator } from './lib/brn-autocomplete-separator';\nimport { BrnAutocompleteStatus } from './lib/brn-autocomplete-status';\n\nexport * from './lib/brn-autocomplete';\nexport * from './lib/brn-autocomplete-anchor';\nexport * from './lib/brn-autocomplete-clear';\nexport * from './lib/brn-autocomplete-content';\nexport * from './lib/brn-autocomplete-empty';\nexport * from './lib/brn-autocomplete-group';\nexport * from './lib/brn-autocomplete-input';\nexport * from './lib/brn-autocomplete-input-wrapper';\nexport * from './lib/brn-autocomplete-item';\nexport * from './lib/brn-autocomplete-item.token';\nexport * from './lib/brn-autocomplete-label';\nexport * from './lib/brn-autocomplete-list';\nexport * from './lib/brn-autocomplete-search';\nexport * from './lib/brn-autocomplete-separator';\nexport * from './lib/brn-autocomplete-status';\nexport * from './lib/brn-autocomplete.token';\n\nexport const BrnAutocompleteImports = [\n\tBrnAutocomplete,\n\tBrnAutocompleteAnchor,\n\tBrnAutocompleteClear,\n\tBrnAutocompleteContent,\n\tBrnAutocompleteEmpty,\n\tBrnAutocompleteGroup,\n\tBrnAutocompleteInput,\n\tBrnAutocompleteInputWrapper,\n\tBrnAutocompleteItem,\n\tBrnAutocompleteLabel,\n\tBrnAutocompleteList,\n\tBrnAutocompleteSearch,\n\tBrnAutocompleteSeparator,\n\tBrnAutocompleteStatus,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -124,7 +124,9 @@ class BrnCombobox {
|
|
|
124
124
|
/** @internal The width of the search input wrapper */
|
|
125
125
|
searchInputWrapperWidth = computed(() => {
|
|
126
126
|
const inputElement = this._searchInputWrapper()?.nativeElement;
|
|
127
|
-
|
|
127
|
+
if (!inputElement)
|
|
128
|
+
return null;
|
|
129
|
+
return inputElement.getBoundingClientRect().width || inputElement.offsetWidth;
|
|
128
130
|
}, ...(ngDevMode ? [{ debugName: "searchInputWrapperWidth" }] : []));
|
|
129
131
|
/** @internal Access all the items within the combobox */
|
|
130
132
|
items = contentChildren(BrnComboboxItemToken, ...(ngDevMode ? [{ debugName: "items", descendants: true }] : [{
|
|
@@ -726,9 +728,12 @@ class BrnComboboxMultiple {
|
|
|
726
728
|
_searchInputWrapper = contentChild(BrnComboboxInputWrapper, ...(ngDevMode ? [{ debugName: "_searchInputWrapper", read: ElementRef }] : [{
|
|
727
729
|
read: ElementRef,
|
|
728
730
|
}]));
|
|
731
|
+
/** @internal The width of the search input wrapper */
|
|
729
732
|
searchInputWrapperWidth = computed(() => {
|
|
730
733
|
const inputElement = this._searchInputWrapper()?.nativeElement;
|
|
731
|
-
|
|
734
|
+
if (!inputElement)
|
|
735
|
+
return null;
|
|
736
|
+
return inputElement.getBoundingClientRect().width || inputElement.offsetWidth;
|
|
732
737
|
}, ...(ngDevMode ? [{ debugName: "searchInputWrapperWidth" }] : []));
|
|
733
738
|
/** @internal Access all the items within the combobox */
|
|
734
739
|
items = contentChildren(BrnComboboxItemToken, ...(ngDevMode ? [{ debugName: "items", descendants: true }] : [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-combobox.mjs","sources":["../../../../libs/brain/combobox/src/lib/brn-combobox-input-wrapper.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-filter.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-content.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-anchor.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip-input.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip-remove.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-clear.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-empty.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-label.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-group.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-input.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-list.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-multiple.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-popover-trigger.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-separator.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-status.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-trigger.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-value.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-values.ts","../../../../libs/brain/combobox/src/index.ts","../../../../libs/brain/combobox/src/spartan-ng-brain-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[brnComboboxInputWrapper]' })\nexport class BrnComboboxInputWrapper {}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnComboboxItem } from './brn-combobox-item';\n\nexport const BrnComboboxItemToken = new InjectionToken<BrnComboboxItem<unknown>>('BrnComboboxItemToken');\n\nexport function provideBrnComboboxItem<T>(comboboxItem: Type<BrnComboboxItem<T>>): ExistingProvider {\n\treturn { provide: BrnComboboxItemToken, useExisting: comboboxItem };\n}\n","import { stringifyAsLabel } from '@spartan-ng/brain/core';\n\nexport type BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n) => boolean;\n\nexport const comboboxContainsFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\n\tfor (let i = 0; i <= itemString.length - query.length; i += 1) {\n\t\tif (collator.compare(itemString.slice(i, i + query.length), query) === 0) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport const comboboxStartsWithFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\n\treturn collator.compare(itemString.slice(0, query.length), query) === 0;\n};\n\nexport const comboboxEndsWithFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\tconst queryLength = query.length;\n\n\treturn (\n\t\titemString.length >= queryLength && collator.compare(itemString.slice(itemString.length - queryLength), query) === 0\n\t);\n};\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport { comboboxContainsFilter } from './brn-combobox-filter';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport type { BrnComboboxItem } from './brn-combobox-item';\n\nexport type ComboboxInputMode = 'combobox' | 'popup';\n\nexport interface BrnComboboxBase<T> {\n\tfilter: InputSignal<ComboboxFilter<T>>;\n\titemToString: InputSignal<ComboboxItemToString<T> | undefined>;\n\tcollator: Signal<Intl.Collator>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnComboboxItem<T>>;\n\tvalue: ModelSignal<T | null> | ModelSignal<T[] | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\tmode: Signal<ComboboxInputMode>;\n\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\tresetSearch: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n\t/** Remove last selected item with Backspace key. Only works with multiple selection comboboxes. */\n\tremoveLastSelectedItem: () => void;\n\tremoveValue: (value: T) => void;\n\t/** Register the combobox input component for single selection mode */\n\tregisterComboboxInput?: (input: BrnComboboxInput<T>) => void;\n}\n\nexport const BrnComboboxBaseToken = new InjectionToken<BrnComboboxBase<unknown>>('BrnComboboxBaseToken');\n\nexport function provideBrnComboboxBase<T>(instance: Type<BrnComboboxBase<T>>): ExistingProvider {\n\treturn { provide: BrnComboboxBaseToken, useExisting: instance };\n}\n\n/**\n * Inject the combobox component.\n */\nexport function injectBrnComboboxBase<T>(): BrnComboboxBase<T> {\n\treturn inject(BrnComboboxBaseToken) as BrnComboboxBase<T>;\n}\n\n// config\nexport interface ComboboxFilterOptions extends Intl.CollatorOptions {\n\t/**\n\t * The locale to use for string comparison.\n\t * Defaults to the user's runtime locale.\n\t */\n\tlocale?: Intl.LocalesArgument;\n}\n\nexport type ComboboxFilter<T> = (\n\titemValue: T,\n\tsearch: string,\n\tcollator: Intl.Collator,\n\titemToString?: ComboboxItemToString<T>,\n) => boolean;\n\nexport type ComboboxItemEqualToValue<T> = (itemValue: T, selectedValue: T | null) => boolean;\n\nexport type ComboboxItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnComboboxConfig<T> {\n\tfilterOptions: ComboboxFilterOptions;\n\tfilter: ComboboxFilter<T>;\n\tisItemEqualToValue: ComboboxItemEqualToValue<T>;\n\titemToString?: ComboboxItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnComboboxConfig<T> {\n\treturn {\n\t\tfilterOptions: {\n\t\t\tusage: 'search',\n\t\t\tsensitivity: 'base',\n\t\t\tignorePunctuation: true,\n\t\t},\n\t\tfilter: (itemValue: T, search: string, collator: Intl.Collator, itemToString?: ComboboxItemToString<T>) =>\n\t\t\tcomboboxContainsFilter(itemValue, search, collator, itemToString),\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnComboboxConfigToken = new InjectionToken<BrnComboboxConfig<unknown>>('BrnComboboxConfig');\n\nexport function provideBrnComboboxConfig<T>(config: Partial<BrnComboboxConfig<T>>): ValueProvider {\n\treturn { provide: BrnComboboxConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnComboboxConfig<T>(): BrnComboboxConfig<T> {\n\tconst injectedConfig = inject(BrnComboboxConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnComboboxConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport { BrnComboboxInputWrapper } from './brn-combobox-input-wrapper';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\tComboboxInputMode,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n} from './brn-combobox.token';\n\nexport const BRN_COMBOBOX_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCombobox),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCombobox]',\n\tproviders: [provideBrnComboboxBase(BrnCombobox), BRN_COMBOBOX_VALUE_ACCESSOR],\n})\nexport class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnComboboxConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the combobox is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** Options for filtering the combobox items */\n\tpublic readonly filterOptions = input<ComboboxFilterOptions>({});\n\n\t/** @internal The collator used for string comparison */\n\tpublic readonly collator = computed(() => {\n\t\tconst options = this.filterOptions();\n\t\tconst mergedOptions = { ...this._config.filterOptions, ...options };\n\t\treturn new Intl.Collator(options.locale, mergedOptions);\n\t});\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<ComboboxItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<ComboboxItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<ComboboxFilter<T>>(this._config.filter);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the combobox. */\n\tpublic readonly value = model<T | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnComboboxInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\treturn inputElement ? (inputElement.offsetWidth as number) : null;\n\t});\n\n\t/** @internal Access all the items within the combobox */\n\tpublic readonly items = contentChildren<BrnComboboxItem<T>>(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the combobox has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().some((item) => item.visible()));\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the combobox is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _comboboxInput = signal<BrnComboboxInput<T> | undefined>(undefined);\n\n\tpublic readonly mode = computed<ComboboxInputMode>(() => this._comboboxInput()?.mode() || 'combobox');\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.search.set('');\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerComboboxInput(input: BrnComboboxInput<T>): void {\n\t\tthis._comboboxInput.set(input);\n\t}\n\n\tpublic isSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tpublic select(itemValue: T): void {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tpublic selectActiveItem(): void {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tpublic resetValue(): void {\n\t\tthis.value.set(null);\n\t\tthis._onChange?.(null);\n\t}\n\n\tpublic resetSearch(): void {\n\t\tthis.search.set('');\n\t}\n\n\tpublic removeValue(_: T): void {\n\t\tconsole.warn('BrnComboboxChipRemove only works with multiple selection comboboxes.');\n\t}\n\n\tpublic removeLastSelectedItem(): void {\n\t\tconsole.warn('BrnComboboxChipInput only works with multiple selection comboboxes.');\n\t}\n\n\tpublic open(): void {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tprivate close(): void {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxContent]',\n\thost: {\n\t\t'[attr.data-empty]': '_empty() ? \"\" : null',\n\t\t'[style.--brn-combobox-width.px]': '_comboboxWidth()',\n\t},\n})\nexport class BrnComboboxContent {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\t/** Determine if the combobox is empty */\n\tprotected readonly _empty = computed(() => !this._combobox.visibleItems() && this._combobox.search().length > 0);\n\n\tprotected readonly _comboboxWidth = this._combobox.searchInputWrapperWidth;\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { BrnComboboxContent } from './brn-combobox-content';\n\n@Directive({ selector: '[brnComboboxAnchor]' })\nexport class BrnComboboxAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tprivate readonly _content = inject(BrnComboboxContent, { optional: true });\n\n\tconstructor() {\n\t\t// skip if it's inside a combobox content\n\t\tif (this._content) return;\n\n\t\tif (!this._brnDialog) return;\n\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxChip]',\n\thost: {\n\t\ttabindex: '-1',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t},\n})\nexport class BrnComboboxChip<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tpublic readonly value = input.required<T>();\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'input[brnComboboxChipInput]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnComboboxChipInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\t/** The id of the combobox input */\n\tpublic readonly id = input<string>(`brn-combobox-input-${++BrnComboboxChipInput._id}`);\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\t/** Whether the combobox panel is expanded */\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst search = this._combobox.search();\n\n\t\t\tif (search === '') {\n\t\t\t\t// reset input on popover close\n\t\t\t\tthis._el.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._combobox.search.set(value);\n\t\tthis._combobox.open();\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._combobox.selectActiveItem();\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._combobox.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._combobox.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tif (this._combobox.search() === '' && event.key === 'Backspace') {\n\t\t\tthis._combobox.removeLastSelectedItem();\n\t\t}\n\n\t\tthis._combobox.keyManager.onKeydown(event);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnComboboxChip } from './brn-combobox-chip';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'button[brnComboboxChipRemove]',\n\thost: {\n\t\ttype: 'button',\n\t\ttabindex: '-1',\n\t\t'aria-disabled': 'true',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'(click)': 'removeChip($event)',\n\t},\n})\nexport class BrnComboboxChipRemove<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _chip = inject(BrnComboboxChip<T>);\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tprotected removeChip(event: Event) {\n\t\tevent.stopPropagation();\n\n\t\tif (this._combobox.disabledState()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this._chip.value();\n\t\tthis._combobox.removeValue(value);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxClear]',\n})\nexport class BrnComboboxClear {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the combobox has a value */\n\tprivate readonly _hasValue = computed(() => {\n\t\tconst mode = this._combobox.mode();\n\t\tif (mode === 'combobox') {\n\t\t\treturn this._combobox.value() !== null;\n\t\t} else {\n\t\t\treturn this._combobox.search() !== '';\n\t\t}\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._hasValue()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate clear() {\n\t\tif (this._combobox.mode() === 'combobox') {\n\t\t\tthis._combobox.resetValue();\n\t\t} else {\n\t\t\tthis._combobox.resetSearch();\n\t\t}\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnComboboxEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnComboboxLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the combobox label */\n\tpublic readonly id = input<string>(`brn-combobox-label-${++BrnComboboxLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport { BrnComboboxLabel } from './brn-combobox-label';\n\n@Directive({\n\tselector: '[brnComboboxGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnComboboxGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().some((item) => item.visible()));\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnComboboxLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { ComboboxInputMode, injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'input[brnComboboxInput]',\n\texportAs: 'brnComboboxInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnComboboxInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _content = inject(BrnComboboxContent, { optional: true });\n\n\tpublic readonly mode = computed<ComboboxInputMode>(() => (this._content ? 'popup' : 'combobox'));\n\n\t/** The id of the combobox input */\n\tpublic readonly id = input<string>(`brn-combobox-input-${++BrnComboboxInput._id}`);\n\n\tpublic readonly disabled = this._combobox.disabledState;\n\n\t/** Whether the combobox panel is expanded */\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tconstructor() {\n\t\tthis._combobox.registerComboboxInput?.(this);\n\n\t\teffect(() => {\n\t\t\tconst mode = this.mode();\n\t\t\tconst value = this._combobox.value();\n\t\t\tconst search = this._combobox.search();\n\n\t\t\t// In combobox mode we want to display the label of the selected value if no search is active\n\t\t\tif (mode === 'combobox' && value && search === '') {\n\t\t\t\tthis._el.nativeElement.value = stringifyAsLabel(value, this._combobox.itemToString());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise we want to update the input value to the search value\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._combobox.search.set(value);\n\t\tthis._combobox.open();\n\n\t\tif (value === '' && this.mode() === 'combobox') {\n\t\t\tthis._combobox.resetValue();\n\t\t}\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._combobox.selectActiveItem();\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._combobox.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._combobox.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._combobox.keyManager.onKeydown(event);\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnComboboxItem } from './brn-combobox-item.token';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxItem]',\n\tproviders: [provideBrnComboboxItem(BrnComboboxItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': \"!visible() ? '' : null\",\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnComboboxItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the combobox component */\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-combobox-item-${++BrnComboboxItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._combobox.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => {\n\t\treturn this._combobox.filter()(\n\t\t\tthis.value(),\n\t\t\tthis._combobox.search(),\n\t\t\tthis._combobox.collator(),\n\t\t\tthis._combobox.itemToString(),\n\t\t);\n\t});\n\n\tpublic setActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tpublic setInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tpublic getLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._combobox.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._combobox.keyManager.setActiveItem(this);\n\t\tthis._combobox.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._combobox.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxList {\n\tprivate static _id = 0;\n\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\t/** Determine if the combobox has any visible items */\n\tprotected readonly _visibleItems = this._combobox.visibleItems;\n\n\t/** The id of the combobox list */\n\tpublic readonly id = input<string>(`brn-combobox-list-${++BrnComboboxList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxInputWrapper } from './brn-combobox-input-wrapper';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\tComboboxInputMode,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n} from './brn-combobox.token';\n\nexport const BRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnComboboxMultiple),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCombobox]',\n\tproviders: [provideBrnComboboxBase(BrnComboboxMultiple), BRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR],\n})\nexport class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnComboboxConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the combobox is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** Options for filtering the combobox items */\n\tpublic readonly filterOptions = input<ComboboxFilterOptions>({});\n\n\t/** @internal The collator used for string comparison */\n\tpublic readonly collator = computed(() => {\n\t\tconst options = this.filterOptions();\n\t\tconst mergedOptions = { ...this._config.filterOptions, ...options };\n\t\treturn new Intl.Collator(options.locale, mergedOptions);\n\t});\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<ComboboxItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<ComboboxItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<ComboboxFilter<T>>(this._config.filter);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected values of the combobox. */\n\tpublic readonly value = model<T[] | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnComboboxInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\treturn inputElement ? (inputElement.offsetWidth as number) : null;\n\t});\n\n\t/** @internal Access all the items within the combobox */\n\tpublic readonly items = contentChildren<BrnComboboxItem<T>>(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the combobox has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().some((item) => item.visible()));\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tpublic readonly mode = signal<ComboboxInputMode>('combobox').asReadonly();\n\n\tprotected _onChange?: ChangeFn<T[] | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.search.set('');\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic isSelected(itemValue: T): boolean {\n\t\treturn this.value()?.some((v) => this.isItemEqualToValue()(itemValue, v)) ?? false;\n\t}\n\n\tpublic select(itemValue: T): void {\n\t\tconst selected = this.value() ?? [];\n\t\tif (this.isSelected(itemValue)) {\n\t\t\tthis.value.set(selected.filter((d) => !this.isItemEqualToValue()(d, itemValue)) ?? []);\n\t\t} else {\n\t\t\tthis.value.set([...selected, itemValue]);\n\t\t}\n\n\t\tif (this.search() !== '') {\n\t\t\t// reset search after selection and close popover\n\t\t\tthis.search.set('');\n\t\t\tthis.close();\n\t\t}\n\n\t\tthis._onChange?.(this.value() ?? []);\n\t}\n\n\t/** Select the active item with Enter key. */\n\tpublic selectActiveItem(): void {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tpublic resetValue(): void {\n\t\tthis.value.set(null);\n\t\tthis._onChange?.(null);\n\t}\n\n\tpublic resetSearch(): void {\n\t\tthis.search.set('');\n\t}\n\n\tpublic removeValue(itemValue: T): void {\n\t\tconst selected = this.value() ?? [];\n\n\t\tthis.value.set(selected.filter((value) => !this.isItemEqualToValue()(itemValue, value)) ?? []);\n\t\tthis._onChange?.(this.value());\n\t}\n\n\tpublic removeLastSelectedItem(): void {\n\t\tconst selected = this.value() ?? [];\n\t\tif (selected.length === 0) return;\n\n\t\tselected.pop();\n\t\tthis.value.set([...selected]);\n\t\tthis._onChange?.(this.value());\n\t}\n\n\tpublic open(): void {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tprivate close(): void {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T[] | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T[] | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxPopoverTrigger]',\n\thost: {\n\t\t'(click)': 'open()',\n\t},\n})\nexport class BrnComboboxPopoverTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tprotected open() {\n\t\tif (this._combobox.disabledState()) return;\n\n\t\tthis._brnDialog?.open();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnComboboxSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnComboboxStatus {}\n","import { Directive } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'button[brnComboboxTrigger]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n}\n","import { computed, Directive } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValue]',\n\thost: {\n\t\t'[textContent]': '_value()',\n\t},\n})\nexport class BrnComboboxValue<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _value = computed(() => stringifyAsLabel(this._combobox.value(), this._combobox.itemToString()));\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValues]',\n})\nexport class BrnComboboxValues<T> {\n\tprivate readonly _templateRef = inject(TemplateRef<T>);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _values = computed<T[] | null>(() => {\n\t\tconst values = this._combobox.value();\n\n\t\tif (values == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn Array.isArray(values) ? values : [values];\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst values = this._values();\n\t\t\tif (values?.length) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t\t$implicit: values,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t}\n\t\t});\n\t}\n}\n","import { BrnCombobox } from './lib/brn-combobox';\nimport { BrnComboboxAnchor } from './lib/brn-combobox-anchor';\nimport { BrnComboboxChip } from './lib/brn-combobox-chip';\nimport { BrnComboboxChipInput } from './lib/brn-combobox-chip-input';\nimport { BrnComboboxChipRemove } from './lib/brn-combobox-chip-remove';\nimport { BrnComboboxClear } from './lib/brn-combobox-clear';\nimport { BrnComboboxContent } from './lib/brn-combobox-content';\nimport { BrnComboboxEmpty } from './lib/brn-combobox-empty';\nimport { BrnComboboxGroup } from './lib/brn-combobox-group';\nimport { BrnComboboxInput } from './lib/brn-combobox-input';\nimport { BrnComboboxInputWrapper } from './lib/brn-combobox-input-wrapper';\nimport { BrnComboboxItem } from './lib/brn-combobox-item';\nimport { BrnComboboxLabel } from './lib/brn-combobox-label';\nimport { BrnComboboxList } from './lib/brn-combobox-list';\nimport { BrnComboboxMultiple } from './lib/brn-combobox-multiple';\nimport { BrnComboboxPopoverTrigger } from './lib/brn-combobox-popover-trigger';\nimport { BrnComboboxSeparator } from './lib/brn-combobox-separator';\nimport { BrnComboboxStatus } from './lib/brn-combobox-status';\nimport { BrnComboboxTrigger } from './lib/brn-combobox-trigger';\nimport { BrnComboboxValue } from './lib/brn-combobox-value';\nimport { BrnComboboxValues } from './lib/brn-combobox-values';\n\nexport * from './lib/brn-combobox';\nexport * from './lib/brn-combobox-anchor';\nexport * from './lib/brn-combobox-chip';\nexport * from './lib/brn-combobox-chip-input';\nexport * from './lib/brn-combobox-chip-remove';\nexport * from './lib/brn-combobox-clear';\nexport * from './lib/brn-combobox-content';\nexport * from './lib/brn-combobox-empty';\nexport * from './lib/brn-combobox-filter';\nexport * from './lib/brn-combobox-group';\nexport * from './lib/brn-combobox-input';\nexport * from './lib/brn-combobox-input-wrapper';\nexport * from './lib/brn-combobox-item';\nexport * from './lib/brn-combobox-item.token';\nexport * from './lib/brn-combobox-label';\nexport * from './lib/brn-combobox-list';\nexport * from './lib/brn-combobox-multiple';\nexport * from './lib/brn-combobox-popover-trigger';\nexport * from './lib/brn-combobox-separator';\nexport * from './lib/brn-combobox-status';\nexport * from './lib/brn-combobox-trigger';\nexport * from './lib/brn-combobox-value';\nexport * from './lib/brn-combobox-values';\nexport * from './lib/brn-combobox.token';\n\nexport const BrnComboboxImports = [\n\tBrnCombobox,\n\tBrnComboboxAnchor,\n\tBrnComboboxChip,\n\tBrnComboboxChipInput,\n\tBrnComboboxChipRemove,\n\tBrnComboboxClear,\n\tBrnComboboxContent,\n\tBrnComboboxEmpty,\n\tBrnComboboxGroup,\n\tBrnComboboxInputWrapper,\n\tBrnComboboxInput,\n\tBrnComboboxItem,\n\tBrnComboboxLabel,\n\tBrnComboboxList,\n\tBrnComboboxMultiple,\n\tBrnComboboxPopoverTrigger,\n\tBrnComboboxSeparator,\n\tBrnComboboxStatus,\n\tBrnComboboxTrigger,\n\tBrnComboboxValue,\n\tBrnComboboxValues,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-combobox.mjs","sources":["../../../../libs/brain/combobox/src/lib/brn-combobox-input-wrapper.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-filter.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-content.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-anchor.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip-input.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-chip-remove.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-clear.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-empty.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-label.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-group.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-input.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-list.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-multiple.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-popover-trigger.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-separator.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-status.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-trigger.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-value.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-values.ts","../../../../libs/brain/combobox/src/index.ts","../../../../libs/brain/combobox/src/spartan-ng-brain-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[brnComboboxInputWrapper]' })\nexport class BrnComboboxInputWrapper {}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnComboboxItem } from './brn-combobox-item';\n\nexport const BrnComboboxItemToken = new InjectionToken<BrnComboboxItem<unknown>>('BrnComboboxItemToken');\n\nexport function provideBrnComboboxItem<T>(comboboxItem: Type<BrnComboboxItem<T>>): ExistingProvider {\n\treturn { provide: BrnComboboxItemToken, useExisting: comboboxItem };\n}\n","import { stringifyAsLabel } from '@spartan-ng/brain/core';\n\nexport type BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n) => boolean;\n\nexport const comboboxContainsFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\n\tfor (let i = 0; i <= itemString.length - query.length; i += 1) {\n\t\tif (collator.compare(itemString.slice(i, i + query.length), query) === 0) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport const comboboxStartsWithFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\n\treturn collator.compare(itemString.slice(0, query.length), query) === 0;\n};\n\nexport const comboboxEndsWithFilter: BrnComboboxFilter = <Item>(\n\titem: Item,\n\tquery: string,\n\tcollator: Intl.Collator,\n\titemToString?: (item: Item) => string,\n): boolean => {\n\tif (!query) {\n\t\treturn true;\n\t}\n\n\tconst itemString = stringifyAsLabel(item, itemToString);\n\tconst queryLength = query.length;\n\n\treturn (\n\t\titemString.length >= queryLength && collator.compare(itemString.slice(itemString.length - queryLength), query) === 0\n\t);\n};\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport { comboboxContainsFilter } from './brn-combobox-filter';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport type { BrnComboboxItem } from './brn-combobox-item';\n\nexport type ComboboxInputMode = 'combobox' | 'popup';\n\nexport interface BrnComboboxBase<T> {\n\tfilter: InputSignal<ComboboxFilter<T>>;\n\titemToString: InputSignal<ComboboxItemToString<T> | undefined>;\n\tcollator: Signal<Intl.Collator>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnComboboxItem<T>>;\n\tvalue: ModelSignal<T | null> | ModelSignal<T[] | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\tmode: Signal<ComboboxInputMode>;\n\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\tresetSearch: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n\t/** Remove last selected item with Backspace key. Only works with multiple selection comboboxes. */\n\tremoveLastSelectedItem: () => void;\n\tremoveValue: (value: T) => void;\n\t/** Register the combobox input component for single selection mode */\n\tregisterComboboxInput?: (input: BrnComboboxInput<T>) => void;\n}\n\nexport const BrnComboboxBaseToken = new InjectionToken<BrnComboboxBase<unknown>>('BrnComboboxBaseToken');\n\nexport function provideBrnComboboxBase<T>(instance: Type<BrnComboboxBase<T>>): ExistingProvider {\n\treturn { provide: BrnComboboxBaseToken, useExisting: instance };\n}\n\n/**\n * Inject the combobox component.\n */\nexport function injectBrnComboboxBase<T>(): BrnComboboxBase<T> {\n\treturn inject(BrnComboboxBaseToken) as BrnComboboxBase<T>;\n}\n\n// config\nexport interface ComboboxFilterOptions extends Intl.CollatorOptions {\n\t/**\n\t * The locale to use for string comparison.\n\t * Defaults to the user's runtime locale.\n\t */\n\tlocale?: Intl.LocalesArgument;\n}\n\nexport type ComboboxFilter<T> = (\n\titemValue: T,\n\tsearch: string,\n\tcollator: Intl.Collator,\n\titemToString?: ComboboxItemToString<T>,\n) => boolean;\n\nexport type ComboboxItemEqualToValue<T> = (itemValue: T, selectedValue: T | null) => boolean;\n\nexport type ComboboxItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnComboboxConfig<T> {\n\tfilterOptions: ComboboxFilterOptions;\n\tfilter: ComboboxFilter<T>;\n\tisItemEqualToValue: ComboboxItemEqualToValue<T>;\n\titemToString?: ComboboxItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnComboboxConfig<T> {\n\treturn {\n\t\tfilterOptions: {\n\t\t\tusage: 'search',\n\t\t\tsensitivity: 'base',\n\t\t\tignorePunctuation: true,\n\t\t},\n\t\tfilter: (itemValue: T, search: string, collator: Intl.Collator, itemToString?: ComboboxItemToString<T>) =>\n\t\t\tcomboboxContainsFilter(itemValue, search, collator, itemToString),\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnComboboxConfigToken = new InjectionToken<BrnComboboxConfig<unknown>>('BrnComboboxConfig');\n\nexport function provideBrnComboboxConfig<T>(config: Partial<BrnComboboxConfig<T>>): ValueProvider {\n\treturn { provide: BrnComboboxConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnComboboxConfig<T>(): BrnComboboxConfig<T> {\n\tconst injectedConfig = inject(BrnComboboxConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnComboboxConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport { BrnComboboxInputWrapper } from './brn-combobox-input-wrapper';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\tComboboxInputMode,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n} from './brn-combobox.token';\n\nexport const BRN_COMBOBOX_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCombobox),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCombobox]',\n\tproviders: [provideBrnComboboxBase(BrnCombobox), BRN_COMBOBOX_VALUE_ACCESSOR],\n})\nexport class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnComboboxConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the combobox is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** Options for filtering the combobox items */\n\tpublic readonly filterOptions = input<ComboboxFilterOptions>({});\n\n\t/** @internal The collator used for string comparison */\n\tpublic readonly collator = computed(() => {\n\t\tconst options = this.filterOptions();\n\t\tconst mergedOptions = { ...this._config.filterOptions, ...options };\n\t\treturn new Intl.Collator(options.locale, mergedOptions);\n\t});\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<ComboboxItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<ComboboxItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<ComboboxFilter<T>>(this._config.filter);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the combobox. */\n\tpublic readonly value = model<T | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnComboboxInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\tif (!inputElement) return null;\n\t\treturn inputElement.getBoundingClientRect().width || inputElement.offsetWidth;\n\t});\n\n\t/** @internal Access all the items within the combobox */\n\tpublic readonly items = contentChildren<BrnComboboxItem<T>>(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the combobox has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().some((item) => item.visible()));\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the combobox is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _comboboxInput = signal<BrnComboboxInput<T> | undefined>(undefined);\n\n\tpublic readonly mode = computed<ComboboxInputMode>(() => this._comboboxInput()?.mode() || 'combobox');\n\n\tprotected _onChange?: ChangeFn<T | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.search.set('');\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerComboboxInput(input: BrnComboboxInput<T>): void {\n\t\tthis._comboboxInput.set(input);\n\t}\n\n\tpublic isSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tpublic select(itemValue: T): void {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tpublic selectActiveItem(): void {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tpublic resetValue(): void {\n\t\tthis.value.set(null);\n\t\tthis._onChange?.(null);\n\t}\n\n\tpublic resetSearch(): void {\n\t\tthis.search.set('');\n\t}\n\n\tpublic removeValue(_: T): void {\n\t\tconsole.warn('BrnComboboxChipRemove only works with multiple selection comboboxes.');\n\t}\n\n\tpublic removeLastSelectedItem(): void {\n\t\tconsole.warn('BrnComboboxChipInput only works with multiple selection comboboxes.');\n\t}\n\n\tpublic open(): void {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tprivate close(): void {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxContent]',\n\thost: {\n\t\t'[attr.data-empty]': '_empty() ? \"\" : null',\n\t\t'[style.--brn-combobox-width.px]': '_comboboxWidth()',\n\t},\n})\nexport class BrnComboboxContent {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\t/** Determine if the combobox is empty */\n\tprotected readonly _empty = computed(() => !this._combobox.visibleItems() && this._combobox.search().length > 0);\n\n\tprotected readonly _comboboxWidth = this._combobox.searchInputWrapperWidth;\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { BrnComboboxContent } from './brn-combobox-content';\n\n@Directive({ selector: '[brnComboboxAnchor]' })\nexport class BrnComboboxAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tprivate readonly _content = inject(BrnComboboxContent, { optional: true });\n\n\tconstructor() {\n\t\t// skip if it's inside a combobox content\n\t\tif (this._content) return;\n\n\t\tif (!this._brnDialog) return;\n\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxChip]',\n\thost: {\n\t\ttabindex: '-1',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t},\n})\nexport class BrnComboboxChip<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tpublic readonly value = input.required<T>();\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'input[brnComboboxChipInput]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnComboboxChipInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\t/** The id of the combobox input */\n\tpublic readonly id = input<string>(`brn-combobox-input-${++BrnComboboxChipInput._id}`);\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\t/** Whether the combobox panel is expanded */\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst search = this._combobox.search();\n\n\t\t\tif (search === '') {\n\t\t\t\t// reset input on popover close\n\t\t\t\tthis._el.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._combobox.search.set(value);\n\t\tthis._combobox.open();\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._combobox.selectActiveItem();\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._combobox.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._combobox.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tif (this._combobox.search() === '' && event.key === 'Backspace') {\n\t\t\tthis._combobox.removeLastSelectedItem();\n\t\t}\n\n\t\tthis._combobox.keyManager.onKeydown(event);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnComboboxChip } from './brn-combobox-chip';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'button[brnComboboxChipRemove]',\n\thost: {\n\t\ttype: 'button',\n\t\ttabindex: '-1',\n\t\t'aria-disabled': 'true',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'(click)': 'removeChip($event)',\n\t},\n})\nexport class BrnComboboxChipRemove<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _chip = inject(BrnComboboxChip<T>);\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tprotected removeChip(event: Event) {\n\t\tevent.stopPropagation();\n\n\t\tif (this._combobox.disabledState()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this._chip.value();\n\t\tthis._combobox.removeValue(value);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxClear]',\n})\nexport class BrnComboboxClear {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the combobox has a value */\n\tprivate readonly _hasValue = computed(() => {\n\t\tconst mode = this._combobox.mode();\n\t\tif (mode === 'combobox') {\n\t\t\treturn this._combobox.value() !== null;\n\t\t} else {\n\t\t\treturn this._combobox.search() !== '';\n\t\t}\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._hasValue()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate clear() {\n\t\tif (this._combobox.mode() === 'combobox') {\n\t\t\tthis._combobox.resetValue();\n\t\t} else {\n\t\t\tthis._combobox.resetSearch();\n\t\t}\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnComboboxEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnComboboxLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the combobox label */\n\tpublic readonly id = input<string>(`brn-combobox-label-${++BrnComboboxLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport { BrnComboboxLabel } from './brn-combobox-label';\n\n@Directive({\n\tselector: '[brnComboboxGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnComboboxGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().some((item) => item.visible()));\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnComboboxLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { ComboboxInputMode, injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'input[brnComboboxInput]',\n\texportAs: 'brnComboboxInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnComboboxInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _content = inject(BrnComboboxContent, { optional: true });\n\n\tpublic readonly mode = computed<ComboboxInputMode>(() => (this._content ? 'popup' : 'combobox'));\n\n\t/** The id of the combobox input */\n\tpublic readonly id = input<string>(`brn-combobox-input-${++BrnComboboxInput._id}`);\n\n\tpublic readonly disabled = this._combobox.disabledState;\n\n\t/** Whether the combobox panel is expanded */\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tconstructor() {\n\t\tthis._combobox.registerComboboxInput?.(this);\n\n\t\teffect(() => {\n\t\t\tconst mode = this.mode();\n\t\t\tconst value = this._combobox.value();\n\t\t\tconst search = this._combobox.search();\n\n\t\t\t// In combobox mode we want to display the label of the selected value if no search is active\n\t\t\tif (mode === 'combobox' && value && search === '') {\n\t\t\t\tthis._el.nativeElement.value = stringifyAsLabel(value, this._combobox.itemToString());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise we want to update the input value to the search value\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._combobox.search.set(value);\n\t\tthis._combobox.open();\n\n\t\tif (value === '' && this.mode() === 'combobox') {\n\t\t\tthis._combobox.resetValue();\n\t\t}\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._combobox.selectActiveItem();\n\t\t}\n\n\t\tif (!this._isExpanded()) {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._combobox.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._combobox.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._combobox.keyManager.onKeydown(event);\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnComboboxItem } from './brn-combobox-item.token';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxItem]',\n\tproviders: [provideBrnComboboxItem(BrnComboboxItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': \"!visible() ? '' : null\",\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnComboboxItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the combobox component */\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-combobox-item-${++BrnComboboxItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._combobox.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => {\n\t\treturn this._combobox.filter()(\n\t\t\tthis.value(),\n\t\t\tthis._combobox.search(),\n\t\t\tthis._combobox.collator(),\n\t\t\tthis._combobox.itemToString(),\n\t\t);\n\t});\n\n\tpublic setActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tpublic setInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tpublic getLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._combobox.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._combobox.keyManager.setActiveItem(this);\n\t\tthis._combobox.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._combobox.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxList {\n\tprivate static _id = 0;\n\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\t/** Determine if the combobox has any visible items */\n\tprotected readonly _visibleItems = this._combobox.visibleItems;\n\n\t/** The id of the combobox list */\n\tpublic readonly id = input<string>(`brn-combobox-list-${++BrnComboboxList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxInputWrapper } from './brn-combobox-input-wrapper';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\tComboboxInputMode,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n} from './brn-combobox.token';\n\nexport const BRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnComboboxMultiple),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCombobox]',\n\tproviders: [provideBrnComboboxBase(BrnComboboxMultiple), BRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR],\n})\nexport class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnComboboxConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the combobox is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** Options for filtering the combobox items */\n\tpublic readonly filterOptions = input<ComboboxFilterOptions>({});\n\n\t/** @internal The collator used for string comparison */\n\tpublic readonly collator = computed(() => {\n\t\tconst options = this.filterOptions();\n\t\tconst mergedOptions = { ...this._config.filterOptions, ...options };\n\t\treturn new Intl.Collator(options.locale, mergedOptions);\n\t});\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<ComboboxItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<ComboboxItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<ComboboxFilter<T>>(this._config.filter);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected values of the combobox. */\n\tpublic readonly value = model<T[] | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _searchInputWrapper = contentChild(BrnComboboxInputWrapper, {\n\t\tread: ElementRef,\n\t});\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = computed<number | null>(() => {\n\t\tconst inputElement = this._searchInputWrapper()?.nativeElement;\n\t\tif (!inputElement) return null;\n\t\treturn inputElement.getBoundingClientRect().width || inputElement.offsetWidth;\n\t});\n\n\t/** @internal Access all the items within the combobox */\n\tpublic readonly items = contentChildren<BrnComboboxItem<T>>(BrnComboboxItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the combobox has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().some((item) => item.visible()));\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tpublic readonly mode = signal<ComboboxInputMode>('combobox').asReadonly();\n\n\tprotected _onChange?: ChangeFn<T[] | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.search.set('');\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic isSelected(itemValue: T): boolean {\n\t\treturn this.value()?.some((v) => this.isItemEqualToValue()(itemValue, v)) ?? false;\n\t}\n\n\tpublic select(itemValue: T): void {\n\t\tconst selected = this.value() ?? [];\n\t\tif (this.isSelected(itemValue)) {\n\t\t\tthis.value.set(selected.filter((d) => !this.isItemEqualToValue()(d, itemValue)) ?? []);\n\t\t} else {\n\t\t\tthis.value.set([...selected, itemValue]);\n\t\t}\n\n\t\tif (this.search() !== '') {\n\t\t\t// reset search after selection and close popover\n\t\t\tthis.search.set('');\n\t\t\tthis.close();\n\t\t}\n\n\t\tthis._onChange?.(this.value() ?? []);\n\t}\n\n\t/** Select the active item with Enter key. */\n\tpublic selectActiveItem(): void {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tpublic resetValue(): void {\n\t\tthis.value.set(null);\n\t\tthis._onChange?.(null);\n\t}\n\n\tpublic resetSearch(): void {\n\t\tthis.search.set('');\n\t}\n\n\tpublic removeValue(itemValue: T): void {\n\t\tconst selected = this.value() ?? [];\n\n\t\tthis.value.set(selected.filter((value) => !this.isItemEqualToValue()(itemValue, value)) ?? []);\n\t\tthis._onChange?.(this.value());\n\t}\n\n\tpublic removeLastSelectedItem(): void {\n\t\tconst selected = this.value() ?? [];\n\t\tif (selected.length === 0) return;\n\n\t\tselected.pop();\n\t\tthis.value.set([...selected]);\n\t\tthis._onChange?.(this.value());\n\t}\n\n\tpublic open(): void {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tprivate close(): void {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\tpublic writeValue(value: T[] | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T[] | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxPopoverTrigger]',\n\thost: {\n\t\t'(click)': 'open()',\n\t},\n})\nexport class BrnComboboxPopoverTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tprotected open() {\n\t\tif (this._combobox.disabledState()) return;\n\n\t\tthis._brnDialog?.open();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnComboboxSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnComboboxStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnComboboxStatus {}\n","import { Directive } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: 'button[brnComboboxTrigger]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n}\n","import { computed, Directive } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValue]',\n\thost: {\n\t\t'[textContent]': '_value()',\n\t},\n})\nexport class BrnComboboxValue<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _value = computed(() => stringifyAsLabel(this._combobox.value(), this._combobox.itemToString()));\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValues]',\n})\nexport class BrnComboboxValues<T> {\n\tprivate readonly _templateRef = inject(TemplateRef<T>);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _values = computed<T[] | null>(() => {\n\t\tconst values = this._combobox.value();\n\n\t\tif (values == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn Array.isArray(values) ? values : [values];\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst values = this._values();\n\t\t\tif (values?.length) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t\t$implicit: values,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t}\n\t\t});\n\t}\n}\n","import { BrnCombobox } from './lib/brn-combobox';\nimport { BrnComboboxAnchor } from './lib/brn-combobox-anchor';\nimport { BrnComboboxChip } from './lib/brn-combobox-chip';\nimport { BrnComboboxChipInput } from './lib/brn-combobox-chip-input';\nimport { BrnComboboxChipRemove } from './lib/brn-combobox-chip-remove';\nimport { BrnComboboxClear } from './lib/brn-combobox-clear';\nimport { BrnComboboxContent } from './lib/brn-combobox-content';\nimport { BrnComboboxEmpty } from './lib/brn-combobox-empty';\nimport { BrnComboboxGroup } from './lib/brn-combobox-group';\nimport { BrnComboboxInput } from './lib/brn-combobox-input';\nimport { BrnComboboxInputWrapper } from './lib/brn-combobox-input-wrapper';\nimport { BrnComboboxItem } from './lib/brn-combobox-item';\nimport { BrnComboboxLabel } from './lib/brn-combobox-label';\nimport { BrnComboboxList } from './lib/brn-combobox-list';\nimport { BrnComboboxMultiple } from './lib/brn-combobox-multiple';\nimport { BrnComboboxPopoverTrigger } from './lib/brn-combobox-popover-trigger';\nimport { BrnComboboxSeparator } from './lib/brn-combobox-separator';\nimport { BrnComboboxStatus } from './lib/brn-combobox-status';\nimport { BrnComboboxTrigger } from './lib/brn-combobox-trigger';\nimport { BrnComboboxValue } from './lib/brn-combobox-value';\nimport { BrnComboboxValues } from './lib/brn-combobox-values';\n\nexport * from './lib/brn-combobox';\nexport * from './lib/brn-combobox-anchor';\nexport * from './lib/brn-combobox-chip';\nexport * from './lib/brn-combobox-chip-input';\nexport * from './lib/brn-combobox-chip-remove';\nexport * from './lib/brn-combobox-clear';\nexport * from './lib/brn-combobox-content';\nexport * from './lib/brn-combobox-empty';\nexport * from './lib/brn-combobox-filter';\nexport * from './lib/brn-combobox-group';\nexport * from './lib/brn-combobox-input';\nexport * from './lib/brn-combobox-input-wrapper';\nexport * from './lib/brn-combobox-item';\nexport * from './lib/brn-combobox-item.token';\nexport * from './lib/brn-combobox-label';\nexport * from './lib/brn-combobox-list';\nexport * from './lib/brn-combobox-multiple';\nexport * from './lib/brn-combobox-popover-trigger';\nexport * from './lib/brn-combobox-separator';\nexport * from './lib/brn-combobox-status';\nexport * from './lib/brn-combobox-trigger';\nexport * from './lib/brn-combobox-value';\nexport * from './lib/brn-combobox-values';\nexport * from './lib/brn-combobox.token';\n\nexport const BrnComboboxImports = [\n\tBrnCombobox,\n\tBrnComboboxAnchor,\n\tBrnComboboxChip,\n\tBrnComboboxChipInput,\n\tBrnComboboxChipRemove,\n\tBrnComboboxClear,\n\tBrnComboboxContent,\n\tBrnComboboxEmpty,\n\tBrnComboboxGroup,\n\tBrnComboboxInputWrapper,\n\tBrnComboboxInput,\n\tBrnComboboxItem,\n\tBrnComboboxLabel,\n\tBrnComboboxList,\n\tBrnComboboxMultiple,\n\tBrnComboboxPopoverTrigger,\n\tBrnComboboxSeparator,\n\tBrnComboboxStatus,\n\tBrnComboboxTrigger,\n\tBrnComboboxValue,\n\tBrnComboboxValues,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -197,7 +197,8 @@ const measureDimensions = (elementToMeasure, measurementDisplay) => {
|
|
|
197
197
|
const previousHidden = elementToMeasure.hidden;
|
|
198
198
|
elementToMeasure.hidden = false;
|
|
199
199
|
elementToMeasure.style.height = 'auto';
|
|
200
|
-
elementToMeasure.style.display =
|
|
200
|
+
elementToMeasure.style.display =
|
|
201
|
+
!previousDisplay || previousDisplay === 'none' ? measurementDisplay : previousDisplay;
|
|
201
202
|
const { width, height } = elementToMeasure.getBoundingClientRect();
|
|
202
203
|
elementToMeasure.hidden = previousHidden;
|
|
203
204
|
elementToMeasure.style.display = previousDisplay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-core.mjs","sources":["../../../../libs/brain/core/src/helpers/computed-previous.ts","../../../../libs/brain/core/src/helpers/zone-free.ts","../../../../libs/brain/core/src/helpers/create-hover-observable.ts","../../../../libs/brain/core/src/helpers/create-injection-token.ts","../../../../libs/brain/core/src/helpers/custom-element-class-settable.ts","../../../../libs/brain/core/src/helpers/debounced-signal.ts","../../../../libs/brain/core/src/helpers/dev-mode.ts","../../../../libs/brain/core/src/helpers/exposes-side.ts","../../../../libs/brain/core/src/helpers/exposes-state.ts","../../../../libs/brain/core/src/helpers/inject-element-size.ts","../../../../libs/brain/core/src/helpers/measure-dimensions.ts","../../../../libs/brain/core/src/helpers/menu-align.ts","../../../../libs/brain/core/src/helpers/resolve-value-label.ts","../../../../libs/brain/core/src/helpers/table-classes-settable.ts","../../../../libs/brain/core/src/helpers/wait-for-element-animations.ts","../../../../libs/brain/core/src/spartan-ng-brain-core.ts"],"sourcesContent":["import { computed, type Signal, untracked } from '@angular/core';\n\n/**\n * Returns a signal that emits the previous value of the given signal.\n * The first time the signal is emitted, the previous value will be the same as the current value.\n *\n * @example\n * ```ts\n * const value = signal(0);\n * const previous = computedPrevious(value);\n *\n * effect(() => {\n * console.log('Current value:', value());\n * console.log('Previous value:', previous());\n * });\n *\n * Logs:\n * // Current value: 0\n * // Previous value: 0\n *\n * value.set(1);\n *\n * Logs:\n * // Current value: 1\n * // Previous value: 0\n *\n * value.set(2);\n *\n * Logs:\n * // Current value: 2\n * // Previous value: 1\n *```\n *\n * @param computation Signal to compute previous value for\n * @returns Signal that emits previous value of `s`\n */\nexport function computedPrevious<T>(computation: Signal<T>): Signal<T> {\n\tlet current = null as T;\n\tlet previous = untracked(() => computation()); // initial value is the current value\n\n\treturn computed(() => {\n\t\tcurrent = computation();\n\t\tconst result = previous;\n\t\tprevious = current;\n\t\treturn result;\n\t});\n}\n","/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/cdk/observables/zone-free.ts#L22\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\nimport type { NgZone } from '@angular/core';\nimport { type MonoTypeOperatorFunction, Observable, pipe } from 'rxjs';\n\nexport function brnZoneFull<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn (source) =>\n\t\tnew Observable((subscriber) =>\n\t\t\tsource.subscribe({\n\t\t\t\tnext: (value) => zone.run(() => subscriber.next(value)),\n\t\t\t\terror: (error: unknown) => zone.run(() => subscriber.error(error)),\n\t\t\t\tcomplete: () => zone.run(() => subscriber.complete()),\n\t\t\t}),\n\t\t);\n}\n\nexport function brnZoneFree<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn (source) => new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));\n}\n\nexport function brnZoneOptimized<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn pipe(brnZoneFree(zone), brnZoneFull(zone));\n}\n","import type { NgZone } from '@angular/core';\nimport { type Observable, type Subject, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { brnZoneOptimized } from './zone-free';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n\treturn !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\nexport function isElement(node?: Element | EventTarget | Node | null): node is Element {\n\treturn !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const createHoverObservable = (\n\tnativeElement: HTMLElement,\n\tzone: NgZone,\n\tdestroyed$: Subject<void>,\n): Observable<{ hover: boolean; relatedTarget?: EventTarget | null }> => {\n\treturn merge(\n\t\tfromEvent(nativeElement, 'mouseenter').pipe(map(() => ({ hover: true }))),\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseleave').pipe(\n\t\t\tmap((e) => ({ hover: false, relatedTarget: e.relatedTarget })),\n\t\t),\n\t\t// Hello, Safari\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseout').pipe(\n\t\t\tfilter(movedOut),\n\t\t\tmap((e) => ({ hover: false, relatedTarget: e.relatedTarget })),\n\t\t),\n\t).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));\n};\n","import { type InjectOptions, InjectionToken, type Provider, type Type, forwardRef, inject } from '@angular/core';\n\ntype InjectFn<TTokenValue> = {\n\t(): TTokenValue;\n\t(injectOptions: InjectOptions & { optional?: false }): TTokenValue;\n\t(injectOptions: InjectOptions & { optional: true }): TTokenValue | null;\n};\n\ntype ProvideFn<TTokenValue> = (value: TTokenValue) => Provider;\n\ntype ProvideExistingFn<TTokenValue> = (valueFactory: () => Type<TTokenValue>) => Provider;\n\nexport type CreateInjectionTokenReturn<TTokenValue> = [\n\tInjectFn<TTokenValue>,\n\tProvideFn<TTokenValue>,\n\tProvideExistingFn<TTokenValue>,\n\tInjectionToken<TTokenValue>,\n];\n\nexport function createInjectionToken<TTokenValue>(description: string): CreateInjectionTokenReturn<TTokenValue> {\n\tconst token = new InjectionToken<TTokenValue>(description);\n\n\tconst provideFn = (value: TTokenValue) => {\n\t\treturn { provide: token, useValue: value };\n\t};\n\n\tconst provideExistingFn = (value: () => TTokenValue) => {\n\t\treturn { provide: token, useExisting: forwardRef(value) };\n\t};\n\n\tconst injectFn = (options: InjectOptions = {}) => {\n\t\treturn inject(token, options);\n\t};\n\n\treturn [injectFn, provideFn, provideExistingFn, token] as CreateInjectionTokenReturn<TTokenValue>;\n}\n","import { createInjectionToken } from './create-injection-token';\n\nexport interface CustomElementClassSettable {\n\tsetClassToCustomElement: (newClass: string) => void;\n}\n\nexport const [\n\tinjectCustomClassSettable,\n\tprovideCustomClassSettable,\n\tprovideCustomClassSettableExisting,\n\tSET_CLASS_TO_CUSTOM_ELEMENT_TOKEN,\n] = createInjectionToken<CustomElementClassSettable>('@spartan-ng SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN');\n","import type { Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * Creates a debounced version of a source signal.\n *\n * @param source - The input signal to debounce.\n * @param delay - Debounce time in milliseconds.\n * @returns A new signal that updates only after the source has stopped changing for `delay` ms.\n */\nexport function debouncedSignal<T>(source: Signal<T>, delay: number): Signal<T> {\n\tconst source$ = toObservable(source);\n\n\tconst debounced$ = source$.pipe(debounceTime(delay), distinctUntilChanged());\n\n\treturn toSignal(debounced$, { initialValue: source() });\n}\n","declare const ngDevMode: boolean;\n/**\n * Set by Angular to true when in development mode.\n * Allows for tree-shaking code that is only used in development.\n */\nexport const brnDevMode = ngDevMode;\n","import type { Signal } from '@angular/core';\nimport { createInjectionToken } from './create-injection-token';\n\nexport interface ExposesSide {\n\tside: Signal<'top' | 'bottom' | 'left' | 'right'>;\n}\n\nexport const [\n\tinjectExposedSideProvider,\n\tprovideExposedSideProvider,\n\tprovideExposedSideProviderExisting,\n\tEXPOSES_SIDE_TOKEN,\n] = createInjectionToken<ExposesSide>('@spartan-ng EXPOSES_SIDE_TOKEN');\n","import type { Signal } from '@angular/core';\nimport { createInjectionToken } from './create-injection-token';\n\nexport interface ExposesState {\n\tstate: Signal<'open' | 'closed'>;\n}\n\nexport const [\n\tinjectExposesStateProvider,\n\tprovideExposesStateProvider,\n\tprovideExposesStateProviderExisting,\n\tEXPOSES_STATE_TOKEN,\n] = createInjectionToken<ExposesState>('@spartan-ng EXPOSES_STATE_TOKEN');\n","import { isPlatformServer } from '@angular/common';\nimport {\n\tafterNextRender,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tPLATFORM_ID,\n\trunInInjectionContext,\n\ttype Signal,\n\tsignal,\n\ttype WritableSignal,\n} from '@angular/core';\n\n/**\n * Returns a reactive signal that tracks the size of a DOM element.\n *\n * This function uses a shared {@link ResizeObserver} internally to monitor multiple elements efficiently.\n * The returned signal updates whenever the element's width or height changes. It is fully SSR-safe.\n *\n * @param options Optional {@link ElementSizeOptions} configuration object.\n * @param options.elementRef The {@link ElementRef} of the element to observe. Defaults to the {@link ElementRef} injected in the current context.\n * @param options.injector Optional custom {@link Injector} to run the function in. Defaults to the current injection context.\n *\n * @returns A readonly {@link Signal} containing `{ width, height }` of the element, or `undefined` if the element has not yet been measured or on the server.\n *\n * Based on https://github.com/radix-ui/primitives/blob/main/packages/react/use-size/src/use-size.tsx\n */\nexport function injectElementSize(\n\toptions: ElementSizeOptions = {},\n): Signal<{ width: number; height: number } | undefined> {\n\treturn runInInjectionContext(options.injector ?? inject(Injector), () => {\n\t\tconst elementRef = options.elementRef ?? inject(ElementRef);\n\t\tconst platformId = inject(PLATFORM_ID);\n\t\tconst destroyRef = inject(DestroyRef);\n\n\t\tconst element = elementRef.nativeElement;\n\t\tconst size = signal<{ width: number; height: number } | undefined>(undefined);\n\n\t\tif (isPlatformServer(platformId)) {\n\t\t\treturn size;\n\t\t}\n\n\t\tafterNextRender({\n\t\t\tread: () => {\n\t\t\t\t// Initial read\n\t\t\t\tsize.set({\n\t\t\t\t\twidth: element.offsetWidth,\n\t\t\t\t\theight: element.offsetHeight,\n\t\t\t\t});\n\n\t\t\t\t// Register element in shared observer\n\t\t\t\tobserverMap.set(element, { element, size });\n\t\t\t\tgetSharedObserver().observe(element, { box: 'border-box' });\n\n\t\t\t\tdestroyRef.onDestroy(() => {\n\t\t\t\t\tgetSharedObserver().unobserve(element);\n\t\t\t\t\tobserverMap.delete(element);\n\n\t\t\t\t\t// Disconnect global observer if no elements left\n\t\t\t\t\tif (observerMap.size === 0 && sharedObserver) {\n\t\t\t\t\t\tsharedObserver.disconnect();\n\t\t\t\t\t\tsharedObserver = undefined;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\treturn size.asReadonly();\n\t});\n}\n\nconst observerMap = new Map<HTMLElement, SizeEntry>();\nlet sharedObserver: ResizeObserver | undefined;\n\nfunction getSharedObserver() {\n\tif (!sharedObserver) {\n\t\tsharedObserver = new ResizeObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target as HTMLElement;\n\t\t\t\tconst entryData = observerMap.get(el);\n\t\t\t\tif (!entryData) continue;\n\n\t\t\t\tlet width: number;\n\t\t\t\tlet height: number;\n\n\t\t\t\tif ('borderBoxSize' in entry) {\n\t\t\t\t\t// Iron out differences between browsers\n\t\t\t\t\tconst borderSize = Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize;\n\t\t\t\t\twidth = borderSize.inlineSize;\n\t\t\t\t\theight = borderSize.blockSize;\n\t\t\t\t} else {\n\t\t\t\t\twidth = el.offsetWidth;\n\t\t\t\t\theight = el.offsetHeight;\n\t\t\t\t}\n\n\t\t\t\tentryData.size.set({ width, height });\n\t\t\t}\n\t\t});\n\t}\n\n\treturn sharedObserver;\n}\n\n/**\n * Options to configure `injectElementSize`.\n */\ninterface ElementSizeOptions {\n\t/** The ElementRef of the element to observe. Defaults to injected ElementRef in the current context. */\n\telementRef?: ElementRef<HTMLElement>;\n\t/** Optional Injector to run the function in. Defaults to the current injection context. */\n\tinjector?: Injector;\n}\n\n/**\n * Internal type used to track each observed element in the shared ResizeObserver.\n */\ninterface SizeEntry {\n\t/** The HTML element being observed. */\n\telement: HTMLElement;\n\t/** Writable signal storing the element's current width and height. */\n\tsize: WritableSignal<{ width: number; height: number } | undefined>;\n}\n","export type MeasurementDisplay = 'block' | 'inline-block' | 'flex' | 'grid' | 'table' | 'contents' | (string & {});\n\nexport const measureDimensions = (elementToMeasure: HTMLElement, measurementDisplay: MeasurementDisplay) => {\n\tconst previousHeight = elementToMeasure.style.height;\n\tconst previousDisplay = elementToMeasure.style.display;\n\tconst previousHidden = elementToMeasure.hidden;\n\n\telementToMeasure.hidden = false;\n\telementToMeasure.style.height = 'auto';\n\telementToMeasure.style.display = previousDisplay === 'hidden' ? measurementDisplay : previousDisplay;\n\n\tconst { width, height } = elementToMeasure.getBoundingClientRect();\n\n\telementToMeasure.hidden = previousHidden;\n\telementToMeasure.style.display = previousDisplay;\n\telementToMeasure.style.height = previousHeight;\n\n\treturn { width, height };\n};\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type MenuAlign = 'start' | 'center' | 'end';\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nexport const createMenuPosition = (align: MenuAlign, side: MenuSide): ConnectedPosition[] => {\n\tconst verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';\n\n\tconst createPositions = (\n\t\toriginX: 'start' | 'center' | 'end',\n\t\toriginY: 'top' | 'center' | 'bottom',\n\t\toverlayX: 'start' | 'center' | 'end',\n\t\toverlayY: 'top' | 'center' | 'bottom',\n\t): ConnectedPosition[] => [\n\t\t{ originX, originY, overlayX, overlayY },\n\t\t{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },\n\t];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\treturn createPositions(align, 'top', align, 'bottom');\n\t\tcase 'bottom':\n\t\t\treturn createPositions(align, 'bottom', align, 'top');\n\t\tcase 'left':\n\t\t\treturn createPositions('start', verticalAlign, 'end', verticalAlign);\n\t\tcase 'right':\n\t\t\treturn createPositions('end', verticalAlign, 'start', verticalAlign);\n\t}\n};\n","export function stringifyAsLabel(item: any, itemToStringLabel?: (item: any) => string) {\n\tif (itemToStringLabel && item != null) {\n\t\treturn itemToStringLabel(item) ?? '';\n\t}\n\tif (item && typeof item === 'object') {\n\t\tif ('label' in item && item.label != null) {\n\t\t\treturn String(item.label);\n\t\t}\n\t\tif ('value' in item) {\n\t\t\treturn String(item.value);\n\t\t}\n\t}\n\treturn serializeValue(item);\n}\n\nexport function serializeValue(value: unknown): string {\n\tif (value == null) {\n\t\treturn '';\n\t}\n\tif (typeof value === 'string') {\n\t\treturn value;\n\t}\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n","import { createInjectionToken } from './create-injection-token';\n\nexport interface TableClassesSettable {\n\tsetTableClasses: (classes: Partial<{ table: string; headerRow: string; bodyRow: string }>) => void;\n}\n\nexport const [\n\tinjectTableClassesSettable,\n\tprovideTableClassesSettable,\n\tprovideTableClassesSettableExisting,\n\tSET_TABLE_CLASSES_TOKEN,\n] = createInjectionToken<TableClassesSettable>('@spartan-ng SET_TABLE_CLASSES_TOKEN');\n","/**\n * Waits for all animations (including subtree) within the given element to finish.\n * Ignores animations canceled with an AbortError.\n */\nexport async function waitForElementAnimations(el: HTMLElement): Promise<void> {\n\t// Wait a tick to allow newly triggered animations to start\n\tawait new Promise<void>((resolve) => setTimeout(resolve, 0));\n\n\tconst animationFillMode = el.style.animationFillMode;\n\tconst animations = el.getAnimations({ subtree: true });\n\tel.style.animationFillMode = 'forwards';\n\n\tawait Promise.all(\n\t\tanimations.map((animation) =>\n\t\t\tanimation.finished.catch((err) => {\n\t\t\t\t// Ignore AbortError from canceled animations (treated as \"finished\")\n\t\t\t\tif (!(err instanceof Error && err.name === 'AbortError')) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\n\t\t\t\treturn animation;\n\t\t\t}),\n\t\t),\n\t);\n\n\tsetTimeout(() => {\n\t\tif (el.style.animationFillMode === 'forwards') el.style.animationFillMode = animationFillMode;\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-core.mjs","sources":["../../../../libs/brain/core/src/helpers/computed-previous.ts","../../../../libs/brain/core/src/helpers/zone-free.ts","../../../../libs/brain/core/src/helpers/create-hover-observable.ts","../../../../libs/brain/core/src/helpers/create-injection-token.ts","../../../../libs/brain/core/src/helpers/custom-element-class-settable.ts","../../../../libs/brain/core/src/helpers/debounced-signal.ts","../../../../libs/brain/core/src/helpers/dev-mode.ts","../../../../libs/brain/core/src/helpers/exposes-side.ts","../../../../libs/brain/core/src/helpers/exposes-state.ts","../../../../libs/brain/core/src/helpers/inject-element-size.ts","../../../../libs/brain/core/src/helpers/measure-dimensions.ts","../../../../libs/brain/core/src/helpers/menu-align.ts","../../../../libs/brain/core/src/helpers/resolve-value-label.ts","../../../../libs/brain/core/src/helpers/table-classes-settable.ts","../../../../libs/brain/core/src/helpers/wait-for-element-animations.ts","../../../../libs/brain/core/src/spartan-ng-brain-core.ts"],"sourcesContent":["import { computed, type Signal, untracked } from '@angular/core';\n\n/**\n * Returns a signal that emits the previous value of the given signal.\n * The first time the signal is emitted, the previous value will be the same as the current value.\n *\n * @example\n * ```ts\n * const value = signal(0);\n * const previous = computedPrevious(value);\n *\n * effect(() => {\n * console.log('Current value:', value());\n * console.log('Previous value:', previous());\n * });\n *\n * Logs:\n * // Current value: 0\n * // Previous value: 0\n *\n * value.set(1);\n *\n * Logs:\n * // Current value: 1\n * // Previous value: 0\n *\n * value.set(2);\n *\n * Logs:\n * // Current value: 2\n * // Previous value: 1\n *```\n *\n * @param computation Signal to compute previous value for\n * @returns Signal that emits previous value of `s`\n */\nexport function computedPrevious<T>(computation: Signal<T>): Signal<T> {\n\tlet current = null as T;\n\tlet previous = untracked(() => computation()); // initial value is the current value\n\n\treturn computed(() => {\n\t\tcurrent = computation();\n\t\tconst result = previous;\n\t\tprevious = current;\n\t\treturn result;\n\t});\n}\n","/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/cdk/observables/zone-free.ts#L22\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\nimport type { NgZone } from '@angular/core';\nimport { type MonoTypeOperatorFunction, Observable, pipe } from 'rxjs';\n\nexport function brnZoneFull<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn (source) =>\n\t\tnew Observable((subscriber) =>\n\t\t\tsource.subscribe({\n\t\t\t\tnext: (value) => zone.run(() => subscriber.next(value)),\n\t\t\t\terror: (error: unknown) => zone.run(() => subscriber.error(error)),\n\t\t\t\tcomplete: () => zone.run(() => subscriber.complete()),\n\t\t\t}),\n\t\t);\n}\n\nexport function brnZoneFree<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn (source) => new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));\n}\n\nexport function brnZoneOptimized<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\n\treturn pipe(brnZoneFree(zone), brnZoneFull(zone));\n}\n","import type { NgZone } from '@angular/core';\nimport { type Observable, type Subject, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { brnZoneOptimized } from './zone-free';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n\treturn !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\nexport function isElement(node?: Element | EventTarget | Node | null): node is Element {\n\treturn !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const createHoverObservable = (\n\tnativeElement: HTMLElement,\n\tzone: NgZone,\n\tdestroyed$: Subject<void>,\n): Observable<{ hover: boolean; relatedTarget?: EventTarget | null }> => {\n\treturn merge(\n\t\tfromEvent(nativeElement, 'mouseenter').pipe(map(() => ({ hover: true }))),\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseleave').pipe(\n\t\t\tmap((e) => ({ hover: false, relatedTarget: e.relatedTarget })),\n\t\t),\n\t\t// Hello, Safari\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseout').pipe(\n\t\t\tfilter(movedOut),\n\t\t\tmap((e) => ({ hover: false, relatedTarget: e.relatedTarget })),\n\t\t),\n\t).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));\n};\n","import { type InjectOptions, InjectionToken, type Provider, type Type, forwardRef, inject } from '@angular/core';\n\ntype InjectFn<TTokenValue> = {\n\t(): TTokenValue;\n\t(injectOptions: InjectOptions & { optional?: false }): TTokenValue;\n\t(injectOptions: InjectOptions & { optional: true }): TTokenValue | null;\n};\n\ntype ProvideFn<TTokenValue> = (value: TTokenValue) => Provider;\n\ntype ProvideExistingFn<TTokenValue> = (valueFactory: () => Type<TTokenValue>) => Provider;\n\nexport type CreateInjectionTokenReturn<TTokenValue> = [\n\tInjectFn<TTokenValue>,\n\tProvideFn<TTokenValue>,\n\tProvideExistingFn<TTokenValue>,\n\tInjectionToken<TTokenValue>,\n];\n\nexport function createInjectionToken<TTokenValue>(description: string): CreateInjectionTokenReturn<TTokenValue> {\n\tconst token = new InjectionToken<TTokenValue>(description);\n\n\tconst provideFn = (value: TTokenValue) => {\n\t\treturn { provide: token, useValue: value };\n\t};\n\n\tconst provideExistingFn = (value: () => TTokenValue) => {\n\t\treturn { provide: token, useExisting: forwardRef(value) };\n\t};\n\n\tconst injectFn = (options: InjectOptions = {}) => {\n\t\treturn inject(token, options);\n\t};\n\n\treturn [injectFn, provideFn, provideExistingFn, token] as CreateInjectionTokenReturn<TTokenValue>;\n}\n","import { createInjectionToken } from './create-injection-token';\n\nexport interface CustomElementClassSettable {\n\tsetClassToCustomElement: (newClass: string) => void;\n}\n\nexport const [\n\tinjectCustomClassSettable,\n\tprovideCustomClassSettable,\n\tprovideCustomClassSettableExisting,\n\tSET_CLASS_TO_CUSTOM_ELEMENT_TOKEN,\n] = createInjectionToken<CustomElementClassSettable>('@spartan-ng SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN');\n","import type { Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * Creates a debounced version of a source signal.\n *\n * @param source - The input signal to debounce.\n * @param delay - Debounce time in milliseconds.\n * @returns A new signal that updates only after the source has stopped changing for `delay` ms.\n */\nexport function debouncedSignal<T>(source: Signal<T>, delay: number): Signal<T> {\n\tconst source$ = toObservable(source);\n\n\tconst debounced$ = source$.pipe(debounceTime(delay), distinctUntilChanged());\n\n\treturn toSignal(debounced$, { initialValue: source() });\n}\n","declare const ngDevMode: boolean;\n/**\n * Set by Angular to true when in development mode.\n * Allows for tree-shaking code that is only used in development.\n */\nexport const brnDevMode = ngDevMode;\n","import type { Signal } from '@angular/core';\nimport { createInjectionToken } from './create-injection-token';\n\nexport interface ExposesSide {\n\tside: Signal<'top' | 'bottom' | 'left' | 'right'>;\n}\n\nexport const [\n\tinjectExposedSideProvider,\n\tprovideExposedSideProvider,\n\tprovideExposedSideProviderExisting,\n\tEXPOSES_SIDE_TOKEN,\n] = createInjectionToken<ExposesSide>('@spartan-ng EXPOSES_SIDE_TOKEN');\n","import type { Signal } from '@angular/core';\nimport { createInjectionToken } from './create-injection-token';\n\nexport interface ExposesState {\n\tstate: Signal<'open' | 'closed'>;\n}\n\nexport const [\n\tinjectExposesStateProvider,\n\tprovideExposesStateProvider,\n\tprovideExposesStateProviderExisting,\n\tEXPOSES_STATE_TOKEN,\n] = createInjectionToken<ExposesState>('@spartan-ng EXPOSES_STATE_TOKEN');\n","import { isPlatformServer } from '@angular/common';\nimport {\n\tafterNextRender,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tPLATFORM_ID,\n\trunInInjectionContext,\n\ttype Signal,\n\tsignal,\n\ttype WritableSignal,\n} from '@angular/core';\n\n/**\n * Returns a reactive signal that tracks the size of a DOM element.\n *\n * This function uses a shared {@link ResizeObserver} internally to monitor multiple elements efficiently.\n * The returned signal updates whenever the element's width or height changes. It is fully SSR-safe.\n *\n * @param options Optional {@link ElementSizeOptions} configuration object.\n * @param options.elementRef The {@link ElementRef} of the element to observe. Defaults to the {@link ElementRef} injected in the current context.\n * @param options.injector Optional custom {@link Injector} to run the function in. Defaults to the current injection context.\n *\n * @returns A readonly {@link Signal} containing `{ width, height }` of the element, or `undefined` if the element has not yet been measured or on the server.\n *\n * Based on https://github.com/radix-ui/primitives/blob/main/packages/react/use-size/src/use-size.tsx\n */\nexport function injectElementSize(\n\toptions: ElementSizeOptions = {},\n): Signal<{ width: number; height: number } | undefined> {\n\treturn runInInjectionContext(options.injector ?? inject(Injector), () => {\n\t\tconst elementRef = options.elementRef ?? inject(ElementRef);\n\t\tconst platformId = inject(PLATFORM_ID);\n\t\tconst destroyRef = inject(DestroyRef);\n\n\t\tconst element = elementRef.nativeElement;\n\t\tconst size = signal<{ width: number; height: number } | undefined>(undefined);\n\n\t\tif (isPlatformServer(platformId)) {\n\t\t\treturn size;\n\t\t}\n\n\t\tafterNextRender({\n\t\t\tread: () => {\n\t\t\t\t// Initial read\n\t\t\t\tsize.set({\n\t\t\t\t\twidth: element.offsetWidth,\n\t\t\t\t\theight: element.offsetHeight,\n\t\t\t\t});\n\n\t\t\t\t// Register element in shared observer\n\t\t\t\tobserverMap.set(element, { element, size });\n\t\t\t\tgetSharedObserver().observe(element, { box: 'border-box' });\n\n\t\t\t\tdestroyRef.onDestroy(() => {\n\t\t\t\t\tgetSharedObserver().unobserve(element);\n\t\t\t\t\tobserverMap.delete(element);\n\n\t\t\t\t\t// Disconnect global observer if no elements left\n\t\t\t\t\tif (observerMap.size === 0 && sharedObserver) {\n\t\t\t\t\t\tsharedObserver.disconnect();\n\t\t\t\t\t\tsharedObserver = undefined;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\treturn size.asReadonly();\n\t});\n}\n\nconst observerMap = new Map<HTMLElement, SizeEntry>();\nlet sharedObserver: ResizeObserver | undefined;\n\nfunction getSharedObserver() {\n\tif (!sharedObserver) {\n\t\tsharedObserver = new ResizeObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target as HTMLElement;\n\t\t\t\tconst entryData = observerMap.get(el);\n\t\t\t\tif (!entryData) continue;\n\n\t\t\t\tlet width: number;\n\t\t\t\tlet height: number;\n\n\t\t\t\tif ('borderBoxSize' in entry) {\n\t\t\t\t\t// Iron out differences between browsers\n\t\t\t\t\tconst borderSize = Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize;\n\t\t\t\t\twidth = borderSize.inlineSize;\n\t\t\t\t\theight = borderSize.blockSize;\n\t\t\t\t} else {\n\t\t\t\t\twidth = el.offsetWidth;\n\t\t\t\t\theight = el.offsetHeight;\n\t\t\t\t}\n\n\t\t\t\tentryData.size.set({ width, height });\n\t\t\t}\n\t\t});\n\t}\n\n\treturn sharedObserver;\n}\n\n/**\n * Options to configure `injectElementSize`.\n */\ninterface ElementSizeOptions {\n\t/** The ElementRef of the element to observe. Defaults to injected ElementRef in the current context. */\n\telementRef?: ElementRef<HTMLElement>;\n\t/** Optional Injector to run the function in. Defaults to the current injection context. */\n\tinjector?: Injector;\n}\n\n/**\n * Internal type used to track each observed element in the shared ResizeObserver.\n */\ninterface SizeEntry {\n\t/** The HTML element being observed. */\n\telement: HTMLElement;\n\t/** Writable signal storing the element's current width and height. */\n\tsize: WritableSignal<{ width: number; height: number } | undefined>;\n}\n","export type MeasurementDisplay = 'block' | 'inline-block' | 'flex' | 'grid' | 'table' | 'contents' | (string & {});\n\nexport const measureDimensions = (elementToMeasure: HTMLElement, measurementDisplay: MeasurementDisplay) => {\n\tconst previousHeight = elementToMeasure.style.height;\n\tconst previousDisplay = elementToMeasure.style.display;\n\tconst previousHidden = elementToMeasure.hidden;\n\n\telementToMeasure.hidden = false;\n\telementToMeasure.style.height = 'auto';\n\telementToMeasure.style.display =\n\t\t!previousDisplay || previousDisplay === 'none' ? measurementDisplay : previousDisplay;\n\n\tconst { width, height } = elementToMeasure.getBoundingClientRect();\n\n\telementToMeasure.hidden = previousHidden;\n\telementToMeasure.style.display = previousDisplay;\n\telementToMeasure.style.height = previousHeight;\n\n\treturn { width, height };\n};\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type MenuAlign = 'start' | 'center' | 'end';\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nexport const createMenuPosition = (align: MenuAlign, side: MenuSide): ConnectedPosition[] => {\n\tconst verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';\n\n\tconst createPositions = (\n\t\toriginX: 'start' | 'center' | 'end',\n\t\toriginY: 'top' | 'center' | 'bottom',\n\t\toverlayX: 'start' | 'center' | 'end',\n\t\toverlayY: 'top' | 'center' | 'bottom',\n\t): ConnectedPosition[] => [\n\t\t{ originX, originY, overlayX, overlayY },\n\t\t{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },\n\t];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\treturn createPositions(align, 'top', align, 'bottom');\n\t\tcase 'bottom':\n\t\t\treturn createPositions(align, 'bottom', align, 'top');\n\t\tcase 'left':\n\t\t\treturn createPositions('start', verticalAlign, 'end', verticalAlign);\n\t\tcase 'right':\n\t\t\treturn createPositions('end', verticalAlign, 'start', verticalAlign);\n\t}\n};\n","export function stringifyAsLabel(item: any, itemToStringLabel?: (item: any) => string) {\n\tif (itemToStringLabel && item != null) {\n\t\treturn itemToStringLabel(item) ?? '';\n\t}\n\tif (item && typeof item === 'object') {\n\t\tif ('label' in item && item.label != null) {\n\t\t\treturn String(item.label);\n\t\t}\n\t\tif ('value' in item) {\n\t\t\treturn String(item.value);\n\t\t}\n\t}\n\treturn serializeValue(item);\n}\n\nexport function serializeValue(value: unknown): string {\n\tif (value == null) {\n\t\treturn '';\n\t}\n\tif (typeof value === 'string') {\n\t\treturn value;\n\t}\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n","import { createInjectionToken } from './create-injection-token';\n\nexport interface TableClassesSettable {\n\tsetTableClasses: (classes: Partial<{ table: string; headerRow: string; bodyRow: string }>) => void;\n}\n\nexport const [\n\tinjectTableClassesSettable,\n\tprovideTableClassesSettable,\n\tprovideTableClassesSettableExisting,\n\tSET_TABLE_CLASSES_TOKEN,\n] = createInjectionToken<TableClassesSettable>('@spartan-ng SET_TABLE_CLASSES_TOKEN');\n","/**\n * Waits for all animations (including subtree) within the given element to finish.\n * Ignores animations canceled with an AbortError.\n */\nexport async function waitForElementAnimations(el: HTMLElement): Promise<void> {\n\t// Wait a tick to allow newly triggered animations to start\n\tawait new Promise<void>((resolve) => setTimeout(resolve, 0));\n\n\tconst animationFillMode = el.style.animationFillMode;\n\tconst animations = el.getAnimations({ subtree: true });\n\tel.style.animationFillMode = 'forwards';\n\n\tawait Promise.all(\n\t\tanimations.map((animation) =>\n\t\t\tanimation.finished.catch((err) => {\n\t\t\t\t// Ignore AbortError from canceled animations (treated as \"finished\")\n\t\t\t\tif (!(err instanceof Error && err.name === 'AbortError')) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\n\t\t\t\treturn animation;\n\t\t\t}),\n\t\t),\n\t);\n\n\tsetTimeout(() => {\n\t\tif (el.style.animationFillMode === 'forwards') el.style.animationFillMode = animationFillMode;\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|