@spartan-ng/brain 0.0.1-alpha.683 → 0.0.1-alpha.685
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.
|
@@ -280,6 +280,9 @@ class BrnComboboxAnchor {
|
|
|
280
280
|
_combobox = injectBrnComboboxBase();
|
|
281
281
|
_elementSize = injectElementSize();
|
|
282
282
|
constructor() {
|
|
283
|
+
// skip if it's inside a combobox content
|
|
284
|
+
if (this._content)
|
|
285
|
+
return;
|
|
283
286
|
effect(() => {
|
|
284
287
|
const size = this._elementSize();
|
|
285
288
|
if (size) {
|
|
@@ -287,9 +290,6 @@ class BrnComboboxAnchor {
|
|
|
287
290
|
this._brnDialog?.updatePosition();
|
|
288
291
|
}
|
|
289
292
|
});
|
|
290
|
-
// skip if it's inside a combobox content
|
|
291
|
-
if (this._content)
|
|
292
|
-
return;
|
|
293
293
|
if (!this._brnDialog)
|
|
294
294
|
return;
|
|
295
295
|
this._brnDialog.mutableAttachTo.set(this._host.nativeElement);
|
|
@@ -892,8 +892,7 @@ class BrnComboboxMultiple {
|
|
|
892
892
|
const selected = this.value() ?? [];
|
|
893
893
|
if (selected.length === 0)
|
|
894
894
|
return;
|
|
895
|
-
selected.
|
|
896
|
-
this.value.set([...selected]);
|
|
895
|
+
this.value.set(selected.slice(0, -1));
|
|
897
896
|
this._onChange?.(this.value());
|
|
898
897
|
}
|
|
899
898
|
open() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-combobox.mjs","sources":["../../../../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-content.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.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-placeholder.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-value-template.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 { 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 type { ControlState } from '@spartan-ng/brain/forms';\nimport type { BrnComboboxChipInput } from './brn-combobox-chip-input';\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\tcontrolState?: Signal<ControlState | null>;\n\thasValue: Signal<boolean>;\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\t/** Register the combobox chip input component for multi selection mode */\n\tregisterComboboxChipInput?: (input: BrnComboboxChipInput<T>) => void;\n\tupdateInputWidth: (width: number | null) => 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 { computed, Directive, ElementRef, inject } 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\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\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 { 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 { 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\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\tComboboxInputMode,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\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: [BRN_COMBOBOX_VALUE_ACCESSOR, provideBrnComboboxBase(BrnCombobox), provideBrnLabelable(BrnCombobox)],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\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\tpublic readonly controlState = this._fieldControl?.controlState;\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\tpublic readonly hasValue = computed(() => this.value() !== null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\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\tprivate readonly _content = contentChild<BrnComboboxContent>(BrnComboboxContent, {\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\tpublic readonly labelableId = computed(() => this._comboboxInput()?.id());\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 updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\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\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\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\t\tconst contentEl = this._content()?.el.nativeElement;\n\n\t\tif (!currentTarget.contains(focusedEl) && !contentEl?.contains(focusedEl)) {\n\t\t\tif (this.isExpanded()) {\n\t\t\t\tthis._brnPopover?.close();\n\t\t\t}\n\t\t\tthis._onTouched?.();\n\t\t}\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","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectElementSize } from '@spartan-ng/brain/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\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\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\tprivate readonly _elementSize = injectElementSize();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst size = this._elementSize();\n\t\t\tif (size) {\n\t\t\t\tthis._combobox.updateInputWidth(size.width);\n\t\t\t\tthis._brnDialog?.updatePosition();\n\t\t\t}\n\t\t});\n\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, 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.aria-invalid]': '_ariaInvalid() ? \"true\" : null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\" : null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\" : null',\n\t\t'[attr.data-dirty]': '_touched() ? \"true\" : null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\" : null',\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\t/** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\n\n\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._combobox.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\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\tthis._combobox.registerComboboxChipInput?.(this);\n\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, 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.aria-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': '_dirty() ? \"true\": null',\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\t/** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\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\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._combobox.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\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 === 'Tab') {\n\t\t\t\tthis._combobox.selectActiveItem();\n\t\t\t}\n\t\t} else {\n\t\t\tif (event.key === 'Enter' || 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'[attr.data-disabled]': '_disabled() ? \"\" : null',\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\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxChipInput } from './brn-combobox-chip-input';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\tComboboxInputMode,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\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: [\n\t\tBRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR,\n\t\tprovideBrnComboboxBase(BrnComboboxMultiple),\n\t\tprovideBrnLabelable(BrnComboboxMultiple),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\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\tpublic readonly controlState = this._fieldControl?.controlState;\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\tpublic readonly hasValue = computed(() => {\n\t\tconst value = this.value();\n\t\tif (value == null) return false;\n\t\treturn value.length > 0;\n\t});\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\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\tprivate readonly _content = contentChild<BrnComboboxContent>(BrnComboboxContent, {\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\tprivate readonly _comboboxChipInput = signal<BrnComboboxChipInput<T> | undefined>(undefined);\n\n\tpublic readonly mode = signal<ComboboxInputMode>('combobox').asReadonly();\n\n\tpublic readonly labelableId = computed(() => this._comboboxChipInput()?.id());\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 registerComboboxChipInput(input: BrnComboboxChipInput<T>): void {\n\t\tthis._comboboxChipInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\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\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\t\tconst contentEl = this._content()?.el.nativeElement;\n\n\t\tif (!currentTarget.contains(focusedEl) && !contentEl?.contains(focusedEl)) {\n\t\t\tif (this.isExpanded()) {\n\t\t\t\tthis._brnPopover?.close();\n\t\t\t}\n\t\t\tthis._onTouched?.();\n\t\t}\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 } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxPlaceholder]',\n\thost: {\n\t\t'[attr.data-hidden]': '_hasValue() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxPlaceholder {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\tprotected readonly _hasValue = this._combobox.hasValue;\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 { computed, 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\trole: 'combobox',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': '_isExpanded() ? \"true\" : \"false\"',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-placeholder]': '_isPlaceholder() ? \"\" : null',\n\t\t'[attr.aria-invalid]': ' _ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': ' _ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': ' _spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': ' _touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': ' _dirty() ? \"true\": null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t},\n})\nexport class BrnComboboxTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tprotected readonly _isPlaceholder = computed(() => !this._combobox.hasValue());\n\n\tprotected readonly _ariaInvalid = computed(() => this._combobox.controlState?.()?.invalid);\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (!this._combobox.isExpanded() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n\t\t\tthis._combobox.open();\n\t\t}\n\t}\n}\n","import { computed, Directive, input } 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'[attr.data-placeholder]': '_isPlaceholder() ? \"\" : null',\n\t\t'[attr.data-hidden]': 'hidden() ? \"\" : null',\n\t\t'[textContent]': '_value()',\n\t},\n})\nexport class BrnComboboxValue<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tpublic readonly placeholder = input<string>('');\n\n\tprotected readonly _isPlaceholder = computed(() => !this._combobox.hasValue());\n\n\tpublic readonly hidden = computed(() => !this._combobox.hasValue() && !this.placeholder());\n\n\tprotected readonly _value = computed(() => {\n\t\treturn this._combobox.hasValue()\n\t\t\t? stringifyAsLabel(this._combobox.value(), this._combobox.itemToString())\n\t\t\t: this.placeholder();\n\t});\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValueTemplate]',\n})\nexport class BrnComboboxValueTemplate<T> {\n\tprivate readonly _templateRef = inject(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _value = computed<T | null>(() => {\n\t\tconst value = this._combobox.value();\n\n\t\tif (value === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn value as T;\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._value();\n\t\t\tif (value !== null) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t\t$implicit: value,\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 { 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 { 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 { BrnComboboxPlaceholder } from './lib/brn-combobox-placeholder';\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 { BrnComboboxValueTemplate } from './lib/brn-combobox-value-template';\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-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-placeholder';\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-value-template';\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\tBrnComboboxInput,\n\tBrnComboboxItem,\n\tBrnComboboxLabel,\n\tBrnComboboxList,\n\tBrnComboboxMultiple,\n\tBrnComboboxPlaceholder,\n\tBrnComboboxPopoverTrigger,\n\tBrnComboboxSeparator,\n\tBrnComboboxStatus,\n\tBrnComboboxTrigger,\n\tBrnComboboxValue,\n\tBrnComboboxValueTemplate,\n\tBrnComboboxValues,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AASO,MAAM,sBAAsB,GAAsB,CACxD,IAAU,EACV,KAAa,EACb,QAAuB,EACvB,YAAqC,KACzB;IACZ,IAAI,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,IAAI;;IAGZ,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;AAEvD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACzE,YAAA,OAAO,IAAI;;;AAIb,IAAA,OAAO,KAAK;AACb;AAEO,MAAM,wBAAwB,GAAsB,CAC1D,IAAU,EACV,KAAa,EACb,QAAuB,EACvB,YAAqC,KACzB;IACZ,IAAI,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,IAAI;;IAGZ,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;AAEvD,IAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AACxE;AAEO,MAAM,sBAAsB,GAAsB,CACxD,IAAU,EACV,KAAa,EACb,QAAuB,EACvB,YAAqC,KACzB;IACZ,IAAI,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,IAAI;;IAGZ,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;AACvD,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM;IAEhC,QACC,UAAU,CAAC,MAAM,IAAI,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AAEtH;;MCTa,oBAAoB,GAAG,IAAI,cAAc,CAA2B,sBAAsB;AAEjG,SAAU,sBAAsB,CAAI,QAAkC,EAAA;IAC3E,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChE;AAEA;;AAEG;SACa,qBAAqB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,oBAAoB,CAAuB;AAC1D;AA8BA,SAAS,gBAAgB,GAAA;IACxB,OAAO;AACN,QAAA,aAAa,EAAE;AACd,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,iBAAiB,EAAE,IAAI;AACvB,SAAA;QACD,MAAM,EAAE,CAAC,SAAY,EAAE,MAAc,EAAE,QAAuB,EAAE,YAAsC,KACrG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;AAClE,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,sBAAsB,GAAG,IAAI,cAAc,CAA6B,mBAAmB,CAAC;AAE5F,SAAU,wBAAwB,CAAI,MAAqC,EAAA;AAChF,IAAA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;AAC3F;SAEgB,uBAAuB,GAAA;AACtC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzE,OAAO,cAAc,GAAI,cAAuC,GAAG,gBAAgB,EAAE;AACtF;;MC3Ga,kBAAkB,CAAA;IACb,SAAS,GAAG,qBAAqB,EAAE;AACpC,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAG7C,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7F,IAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB;2HAP9D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACL,wBAAA,mBAAmB,EAAE,sBAAsB;AAC3C,wBAAA,iCAAiC,EAAE,kBAAkB;AACrD,qBAAA;AACD,iBAAA;;;MCNY,oBAAoB,GAAG,IAAI,cAAc,CAA2B,sBAAsB;AAEjG,SAAU,sBAAsB,CAAI,YAAsC,EAAA;IAC/E,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE;AACpE;;AC+BO,MAAM,2BAA2B,GAAG;AAC1C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC;AAC1C,IAAA,KAAK,EAAE,IAAI;;MAWC,WAAW,CAAA;AACN,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE3D,OAAO,GAAG,uBAAuB,EAAK;;IAGtC,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErD,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY;;AAG/C,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;;AAG3C,IAAA,aAAa,GAAG,KAAK,CAAwB,EAAE,yDAAC;;AAGhD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE;QACnE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AACxD,KAAC,oDAAC;;IAGc,kBAAkB,GAAG,KAAK,CAA8B,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGxF,YAAY,GAAG,KAAK,CAAsC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGpF,MAAM,GAAG,KAAK,CAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGtD,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;AAE7B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,oDAAC;;AAGhD,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;AAEzB,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,uDAAC;;AAG1C,IAAA,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;;IAGvD,KAAK,GAAG,eAAe,CAAqB,oBAAoB,yCAC/E,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CADgE;AACjF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;IAEe,QAAQ,GAAG,YAAY,CAAqB,kBAAkB,4CAC9E,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD+D;AAChF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;IAGc,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG1E,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;AAExE,IAAA,cAAc,GAAG,MAAM,CAAkC,SAAS,0DAAC;AAEpE,IAAA,IAAI,GAAG,QAAQ,CAAoB,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,UAAU,gDAAC;AAErF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,uDAAC;AAE/D,IAAA,SAAS;AACT,IAAA,UAAU;AAEpB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC;AACH,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;AACR,aAAA,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAE3D,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,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;;AAGI,IAAA,qBAAqB,CAAC,KAA0B,EAAA;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGxB,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGrB,IAAA,UAAU,CAAC,SAAY,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGnD,IAAA,MAAM,CAAC,SAAY,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE;;;IAIN,gBAAgB,GAAA;AACtB,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;;;IAIP,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;IAGhB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGb,IAAA,WAAW,CAAC,CAAI,EAAA;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC;;IAG9E,sBAAsB,GAAA;AAC5B,QAAA,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC;;IAG7E,IAAI,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAE3C,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;;AAIlB,IAAA,UAAU,CAAC,KAAe,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGf,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGb,IAAA,iBAAiB,CAAC,EAAW,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGd,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;AAGrB,IAAA,WAAW,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;AACxD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAmC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,aAAa;AAEnD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC1E,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;AAE1B,YAAA,IAAI,CAAC,UAAU,IAAI;;;IAIb,KAAK,GAAA;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE5C,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;2HA1Md,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,0vCANZ,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EA+DnD,oBAAoB,2FAInB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA7DnE,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,2BAA2B,EAAE,sBAAsB,CAAA,WAAA,CAAa,EAAE,mBAAmB,CAAA,WAAA,CAAa,CAAC;oBAC/G,cAAc,EAAE,CAAC,eAAe,CAAC;AACjC,oBAAA,IAAI,EAAE;AACL,wBAAA,YAAY,EAAE,qBAAqB;AACnC,qBAAA;AACD,iBAAA;AA0D4D,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,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,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,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,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,oBAAoB,CAAA,EAAA,EAAA,GAAE;AACjF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE4D,kBAAkB,CAAA,EAAA,EAAA,GAAE;AAChF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC5GW,iBAAiB,CAAA;IACZ,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;IAElD,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEzD,SAAS,GAAG,qBAAqB,EAAE;IAEnC,YAAY,GAAG,iBAAiB,EAAE;AAEnD,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAChC,IAAI,IAAI,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,gBAAA,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE;;AAEnC,SAAC,CAAC;;QAGF,IAAI,IAAI,CAAC,QAAQ;YAAE;QAEnB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAEtB,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;2HAxBlD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;;;MCKjC,eAAe,CAAA;IACV,SAAS,GAAG,qBAAqB,EAAK;AAEpC,IAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAE3C,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAK;2HAL/B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,qBAAA;AACD,iBAAA;;;MCkBY,oBAAoB,CAAA;AACxB,IAAA,OAAO,GAAG,GAAG,CAAC;AACL,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,GAAG,qBAAqB,EAAK;;IAGvC,EAAE,GAAG,KAAK,CAAS,CAAA,mBAAA,EAAsB,EAAE,oBAAoB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGtE,IAAA,mBAAmB,GAAG,KAAK,CAAoC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EACvF,SAAS,EAAE,CAAC,CAAe,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/F,KAAK,EAAE,cAAc,EAAA,CAAA,GAAA,CAFoE;YACzF,SAAS,EAAE,CAAC,CAAe,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC/F,YAAA,KAAK,EAAE,cAAc;AACrB,SAAA,CAAA,CAAA,CAAC;;IAGiB,YAAY,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5E;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,KAAK,kDAAC;AAC/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,oDAAC;AACnE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,cAAc,2DAAC;AAEjF,IAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;;AAGxC,IAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;AAE1D,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,SAAS,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAEhD,MAAM,CAAC,MAAK;YACX,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAEtC,YAAA,IAAI,MAAM,KAAK,EAAE,EAAE;;gBAElB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;;AAEnC,SAAC,CAAC;;AAGO,IAAA,OAAO,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QAEtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;;AAIZ,IAAA,SAAS,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;;YAE1B,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;;AAGlC,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,SAAS,CAAC,IAAI,EAAE;;AAGtB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;;AAI7B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAChE,YAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;;QAGxC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;2HAvE/B,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,cAAA,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,mBAAA,EAAA,kCAAA,EAAA,mBAAA,EAAA,kCAAA,EAAA,mCAAA,EAAA,qCAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,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,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,qCAAqC,EAAE,mCAAmC;AAC1E,wBAAA,mBAAmB,EAAE,4BAA4B;AACjD,wBAAA,qBAAqB,EAAE,4BAA4B;AACnD,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,qBAAA;AACD,iBAAA;;;MCXY,qBAAqB,CAAA;IAChB,SAAS,GAAG,qBAAqB,EAAK;AAEtC,IAAA,KAAK,GAAG,MAAM,EAAC,eAAkB,EAAC;AAEhC,IAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAEjD,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE;YACnC;;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;;2HAftB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,qBAAA;AACD,iBAAA;;;MCTY,gBAAgB,CAAA;IACX,SAAS,GAAG,qBAAqB,EAAE;AACnC,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,MAAK;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAClC,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI;;aAChC;YACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;;AAEvC,KAAC,qDAAC;AAEF,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;;IAGK,KAAK,GAAA;QACZ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AACzC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;aACrB;AACN,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;;2HAnClB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,iBAAA;;;MCKY,gBAAgB,CAAA;2HAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,aAAa,EAAE,MAAM;AACrB,qBAAA;AACD,iBAAA;;;MCDY,gBAAgB,CAAA;AACpB,IAAA,OAAO,GAAG,GAAG,CAAC;;IAGN,EAAE,GAAG,KAAK,CAAS,CAAA,mBAAA,EAAsB,EAAE,gBAAgB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;2HAJtE,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,qBAAA;AACD,iBAAA;;;MCKY,gBAAgB,CAAA;;IAEX,MAAM,GAAG,eAAe,CAAC,oBAAoB,0CAC7D,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD8C;AAC/D,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;IAGiB,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGzE,IAAA,MAAM,GAAG,YAAY,CAAC,gBAAgB,kDAAC;AAErC,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,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,EAEc,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQvB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAV3C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,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,oBAAoB,CAAA,EAAA,EAAA,GAAE;AAC/D,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,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCQ3C,gBAAgB,CAAA;AACpB,IAAA,OAAO,GAAG,GAAG,CAAC;AACL,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,GAAG,qBAAqB,EAAK;IAEtC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE1D,IAAI,GAAG,QAAQ,CAAoB,OAAO,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC,gDAAC;;IAGhF,EAAE,GAAG,KAAK,CAAS,CAAA,mBAAA,EAAsB,EAAE,gBAAgB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGlE,IAAA,mBAAmB,GAAG,KAAK,CAAoC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EACvF,SAAS,EAAE,CAAC,CAAe,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/F,KAAK,EAAE,cAAc,EAAA,CAAA,GAAA,CAFoE;YACzF,SAAS,EAAE,CAAC,CAAe,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC/F,YAAA,KAAK,EAAE,cAAc;AACrB,SAAA,CAAA,CAAA,CAAC;AAEc,IAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;;AAGpC,IAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;;IAGvC,YAAY,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5E;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,KAAK,kDAAC;AAC/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,oDAAC;AACnE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,cAAc,2DAAC;AAEpG,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAE5C,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;;YAGtC,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,IAAI,MAAM,KAAK,EAAE,EAAE;AAClD,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBACrF;;;YAID,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;QAEtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAErB,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;;;AAKnB,IAAA,SAAS,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;;YAE1B,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;;AAGlC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACxB,gBAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;;;aAE5B;AACN,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAClF,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;AAGtB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;;QAI7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;2HAvF/B,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,cAAA,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,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,oCAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,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,qBAAqB,EAAE,+BAA+B;AACtD,wBAAA,qBAAqB,EAAE,+BAA+B;AACtD,wBAAA,qCAAqC,EAAE,kCAAkC;AACzE,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,mBAAmB,EAAE,yBAAyB;AAC9C,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,qBAAA;AACD,iBAAA;;;MCLY,eAAe,CAAA;AACnB,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AAE/B,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGzD,SAAS,GAAG,qBAAqB,EAAK;;IAGvC,EAAE,GAAG,KAAK,CAAS,CAAA,kBAAA,EAAqB,EAAE,eAAe,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGhE,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,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,kDAAC;AAE7D,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;;AAG/B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAC7B,IAAI,CAAC,KAAK,EAAE,EACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAC7B;AACF,KAAC,mDAAC;IAEK,eAAe,GAAA;AACrB,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;;;IAI9D,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGtB,QAAQ,GAAA;AACd,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;;IAG3D,MAAM,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;QAGD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAG1B,QAAQ,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;;QAGD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;;2HAzElC,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,8zBAdhB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAcxC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE,CAAC,sBAAsB,CAAA,eAAA,CAAiB,CAAC;AACpD,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,oBAAoB,EAAE,wBAAwB;AAC9C,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,cAAc,EAAE,YAAY;AAC5B,qBAAA;AACD,iBAAA;;;MCVY,eAAe,CAAA;AACnB,IAAA,OAAO,GAAG,GAAG,CAAC;IAEL,SAAS,GAAG,qBAAqB,EAAE;;AAGjC,IAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;;IAG9C,EAAE,GAAG,KAAK,CAAS,CAAA,kBAAA,EAAqB,EAAE,eAAe,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;2HATpE,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,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;;;AC0BM,MAAM,oCAAoC,GAAG;AACnD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;;MAeC,mBAAmB,CAAA;AACd,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE3D,OAAO,GAAG,uBAAuB,EAAK;;IAGtC,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErD,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY;;AAG/C,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;;AAG3C,IAAA,aAAa,GAAG,KAAK,CAAwB,EAAE,yDAAC;;AAGhD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE;QACnE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AACxD,KAAC,oDAAC;;IAGc,kBAAkB,GAAG,KAAK,CAA8B,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGxF,YAAY,GAAG,KAAK,CAAsC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGpF,MAAM,GAAG,KAAK,CAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGtD,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,CAAa,IAAI,iDAAC;AAE/B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;AAC/B,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;AACxB,KAAC,oDAAC;;AAGc,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;AAEzB,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,uDAAC;;AAG1C,IAAA,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;;IAGvD,KAAK,GAAG,eAAe,CAAqB,oBAAoB,yCAC/E,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CADgE;AACjF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;IAEe,QAAQ,GAAG,YAAY,CAAqB,kBAAkB,4CAC9E,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD+D;AAChF,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;;IAGc,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG1E,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;AAExE,IAAA,kBAAkB,GAAG,MAAM,CAAsC,SAAS,8DAAC;IAE5E,IAAI,GAAG,MAAM,CAAoB,UAAU,CAAC,CAAC,UAAU,EAAE;AAEzD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,uDAAC;AAEnE,IAAA,SAAS;AACT,IAAA,UAAU;AAEpB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC;AACH,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;AACR,aAAA,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAE3D,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,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;;AAGI,IAAA,yBAAyB,CAAC,KAA8B,EAAA;AAC9D,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAG5B,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGrB,IAAA,UAAU,CAAC,SAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK;;AAG5E,IAAA,MAAM,CAAC,SAAY,EAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;;aAChF;AACN,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;;AAGzC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;AAEzB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE;;QAGb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;;;IAI9B,gBAAgB,GAAA;AACtB,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;;;IAIP,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;IAGhB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGb,IAAA,WAAW,CAAC,SAAY,EAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGxB,sBAAsB,GAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;AACnC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE;QAE3B,QAAQ,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGxB,IAAI,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAE3C,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;AAGf,IAAA,WAAW,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B;AACxD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAmC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,aAAa;AAEnD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC1E,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;AAE1B,YAAA,IAAI,CAAC,UAAU,IAAI;;;IAIb,KAAK,GAAA;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE5C,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;;;AAInB,IAAA,UAAU,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGf,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGb,IAAA,iBAAiB,CAAC,EAAW,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGd,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAjOnB,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAVpB;YACV,oCAAoC;YACpC,sBAAsB,CAAC,mBAAmB,CAAC;YAC3C,mBAAmB,CAAC,mBAAmB,CAAC;SACxC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAmE2D,oBAAoB,2FAInB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAjEnE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE;wBACV,oCAAoC;AACpC,wBAAA,sBAAsB,CAAA,mBAAA,CAAqB;AAC3C,wBAAA,mBAAmB,CAAA,mBAAA,CAAqB;AACxC,qBAAA;oBACD,cAAc,EAAE,CAAC,eAAe,CAAC;AACjC,oBAAA,IAAI,EAAE;AACL,wBAAA,YAAY,EAAE,qBAAqB;AACnC,qBAAA;AACD,iBAAA;AA8D4D,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,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,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,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,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,oBAAoB,CAAA,EAAA,EAAA,GAAE;AACjF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE4D,kBAAkB,CAAA,EAAA,EAAA,GAAE;AAChF,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MClHW,sBAAsB,CAAA;IACjB,SAAS,GAAG,qBAAqB,EAAE;AAEjC,IAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;2HAH1C,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,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACL,wBAAA,oBAAoB,EAAE,yBAAyB;AAC/C,qBAAA;AACD,iBAAA;;;MCEY,yBAAyB,CAAA;IACpB,SAAS,GAAG,qBAAqB,EAAK;IAEtC,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEzD,IAAI,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;YAAE;AAEpC,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;;2HARZ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,QAAQ;AACnB,qBAAA;AACD,iBAAA;;;MCCY,oBAAoB,CAAA;AAChB,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,uDAAC;2HADhE,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,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;;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,WAAW;AACjB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,qBAAA;AACD,iBAAA;;;MCCY,iBAAiB,CAAA;2HAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,aAAa,EAAE,MAAM;AACrB,qBAAA;AACD,iBAAA;;;MCYY,kBAAkB,CAAA;IACb,SAAS,GAAG,qBAAqB,EAAK;AAEpC,IAAA,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;AAEvC,IAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAExC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,0DAAC;AAE3D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,wDAAC;AACvE,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,KAAK,kDAAC;AAC/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,OAAO,oDAAC;AACnE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,cAAc,2DAAC;;AAG1F,IAAA,SAAS,CAAC,KAAoB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE;AAC3F,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;;2HAjBX,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,sCAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,kCAAA,EAAA,mBAAA,EAAA,kCAAA,EAAA,mCAAA,EAAA,qCAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,eAAe,EAAE,QAAQ;AACzB,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,yBAAyB,EAAE,8BAA8B;AACzD,wBAAA,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,qCAAqC,EAAE,mCAAmC;AAC1E,wBAAA,qBAAqB,EAAE,4BAA4B;AACnD,wBAAA,mBAAmB,EAAE,0BAA0B;AAC/C,wBAAA,WAAW,EAAE,mBAAmB;AAChC,qBAAA;AACD,iBAAA;;;MCRY,gBAAgB,CAAA;IACX,SAAS,GAAG,qBAAqB,EAAK;AAEvC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAE5B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,0DAAC;IAE9D,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kDAAC;AAEvE,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7B,cAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACxE,cAAE,IAAI,CAAC,WAAW,EAAE;AACtB,KAAC,kDAAC;2HAbU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,uBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACL,wBAAA,yBAAyB,EAAE,8BAA8B;AACzD,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,eAAe,EAAE,UAAU;AAC3B,qBAAA;AACD,iBAAA;;;MCLY,wBAAwB,CAAA;AACnB,IAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,SAAS,GAAG,qBAAqB,EAAK;AAEpC,IAAA,MAAM,GAAG,QAAQ,CAAW,MAAK;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAEpC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAU;AAClB,KAAC,kDAAC;AAEF,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5D,oBAAA,SAAS,EAAE,KAAK;AAChB,iBAAA,CAAC;;iBACI;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;AAEhC,SAAC,CAAC;;2HA3BS,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,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,iBAAA;;;MCCY,iBAAiB,CAAA;AACZ,IAAA,YAAY,GAAG,MAAM,EAAC,WAAc,EAAC;AACrC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,SAAS,GAAG,qBAAqB,EAAK;AAEpC,IAAA,OAAO,GAAG,QAAQ,CAAa,MAAK;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAErC,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AACnB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;AACjD,KAAC,mDAAC;AAEF,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5D,oBAAA,SAAS,EAAE,MAAM;AACjB,iBAAA,CAAC;;iBACI;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;AAEhC,SAAC,CAAC;;2HA3BS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,iBAAA;;;AC4CM,MAAM,kBAAkB,GAAG;IACjC,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,oBAAoB;IACpB,qBAAqB;IACrB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,yBAAyB;IACzB,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,wBAAwB;IACxB,iBAAiB;;;ACvElB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-combobox.mjs","sources":["../../../../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-content.ts","../../../../libs/brain/combobox/src/lib/brn-combobox-item.token.ts","../../../../libs/brain/combobox/src/lib/brn-combobox.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-placeholder.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-value-template.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 { 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 type { ControlState } from '@spartan-ng/brain/forms';\nimport type { BrnComboboxChipInput } from './brn-combobox-chip-input';\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\tcontrolState?: Signal<ControlState | null>;\n\thasValue: Signal<boolean>;\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\t/** Register the combobox chip input component for multi selection mode */\n\tregisterComboboxChipInput?: (input: BrnComboboxChipInput<T>) => void;\n\tupdateInputWidth: (width: number | null) => 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 { computed, Directive, ElementRef, inject } 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\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\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 { 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 { 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\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport type { BrnComboboxInput } from './brn-combobox-input';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\tComboboxInputMode,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\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: [BRN_COMBOBOX_VALUE_ACCESSOR, provideBrnComboboxBase(BrnCombobox), provideBrnLabelable(BrnCombobox)],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\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\tpublic readonly controlState = this._fieldControl?.controlState;\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\tpublic readonly hasValue = computed(() => this.value() !== null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\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\tprivate readonly _content = contentChild<BrnComboboxContent>(BrnComboboxContent, {\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\tpublic readonly labelableId = computed(() => this._comboboxInput()?.id());\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 updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\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\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\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\t\tconst contentEl = this._content()?.el.nativeElement;\n\n\t\tif (!currentTarget.contains(focusedEl) && !contentEl?.contains(focusedEl)) {\n\t\t\tif (this.isExpanded()) {\n\t\t\t\tthis._brnPopover?.close();\n\t\t\t}\n\t\t\tthis._onTouched?.();\n\t\t}\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","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectElementSize } from '@spartan-ng/brain/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\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\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\tprivate readonly _elementSize = injectElementSize();\n\n\tconstructor() {\n\t\t// skip if it's inside a combobox content\n\t\tif (this._content) return;\n\n\t\teffect(() => {\n\t\t\tconst size = this._elementSize();\n\t\t\tif (size) {\n\t\t\t\tthis._combobox.updateInputWidth(size.width);\n\t\t\t\tthis._brnDialog?.updatePosition();\n\t\t\t}\n\t\t});\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, 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.aria-invalid]': '_ariaInvalid() ? \"true\" : null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\" : null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\" : null',\n\t\t'[attr.data-dirty]': '_touched() ? \"true\" : null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\" : null',\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\t/** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\n\n\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._combobox.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\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\tthis._combobox.registerComboboxChipInput?.(this);\n\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, 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.aria-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': '_dirty() ? \"true\": null',\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\t/** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\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\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._combobox.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\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 === 'Tab') {\n\t\t\t\tthis._combobox.selectActiveItem();\n\t\t\t}\n\t\t} else {\n\t\t\tif (event.key === 'Enter' || 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'[attr.data-disabled]': '_disabled() ? \"\" : null',\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\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnComboboxChipInput } from './brn-combobox-chip-input';\nimport { BrnComboboxContent } from './brn-combobox-content';\nimport { type BrnComboboxItem } from './brn-combobox-item';\nimport { BrnComboboxItemToken } from './brn-combobox-item.token';\nimport {\n\ttype BrnComboboxBase,\n\ttype ComboboxFilter,\n\ttype ComboboxFilterOptions,\n\tComboboxInputMode,\n\ttype ComboboxItemEqualToValue,\n\ttype ComboboxItemToString,\n\tinjectBrnComboboxConfig,\n\tprovideBrnComboboxBase,\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: [\n\t\tBRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR,\n\t\tprovideBrnComboboxBase(BrnComboboxMultiple),\n\t\tprovideBrnLabelable(BrnComboboxMultiple),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\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\tpublic readonly controlState = this._fieldControl?.controlState;\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\tpublic readonly hasValue = computed(() => {\n\t\tconst value = this.value();\n\t\tif (value == null) return false;\n\t\treturn value.length > 0;\n\t});\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\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\tprivate readonly _content = contentChild<BrnComboboxContent>(BrnComboboxContent, {\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\tprivate readonly _comboboxChipInput = signal<BrnComboboxChipInput<T> | undefined>(undefined);\n\n\tpublic readonly mode = signal<ComboboxInputMode>('combobox').asReadonly();\n\n\tpublic readonly labelableId = computed(() => this._comboboxChipInput()?.id());\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 registerComboboxChipInput(input: BrnComboboxChipInput<T>): void {\n\t\tthis._comboboxChipInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\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\tthis.value.set(selected.slice(0, -1));\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\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\t\tconst contentEl = this._content()?.el.nativeElement;\n\n\t\tif (!currentTarget.contains(focusedEl) && !contentEl?.contains(focusedEl)) {\n\t\t\tif (this.isExpanded()) {\n\t\t\t\tthis._brnPopover?.close();\n\t\t\t}\n\t\t\tthis._onTouched?.();\n\t\t}\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 } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxPlaceholder]',\n\thost: {\n\t\t'[attr.data-hidden]': '_hasValue() ? \"\" : null',\n\t},\n})\nexport class BrnComboboxPlaceholder {\n\tprivate readonly _combobox = injectBrnComboboxBase();\n\n\tprotected readonly _hasValue = this._combobox.hasValue;\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 { computed, 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\trole: 'combobox',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': '_isExpanded() ? \"true\" : \"false\"',\n\t\t'[attr.aria-disabled]': '_disabled() ? \"true\" : null',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-placeholder]': '_isPlaceholder() ? \"\" : null',\n\t\t'[attr.aria-invalid]': ' _ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': ' _ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': ' _spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': ' _touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': ' _dirty() ? \"true\": null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t},\n})\nexport class BrnComboboxTrigger<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _isExpanded = this._combobox.isExpanded;\n\n\tprotected readonly _disabled = this._combobox.disabledState;\n\n\tprotected readonly _isPlaceholder = computed(() => !this._combobox.hasValue());\n\n\tprotected readonly _ariaInvalid = computed(() => this._combobox.controlState?.()?.invalid);\n\tprotected readonly _dirty = computed(() => this._combobox.controlState?.()?.dirty);\n\tprotected readonly _touched = computed(() => this._combobox.controlState?.()?.touched);\n\tprotected readonly _spartanInvalid = computed(() => this._combobox.controlState?.()?.spartanInvalid);\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (!this._combobox.isExpanded() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n\t\t\tthis._combobox.open();\n\t\t}\n\t}\n}\n","import { computed, Directive, input } 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'[attr.data-placeholder]': '_isPlaceholder() ? \"\" : null',\n\t\t'[attr.data-hidden]': 'hidden() ? \"\" : null',\n\t\t'[textContent]': '_value()',\n\t},\n})\nexport class BrnComboboxValue<T> {\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tpublic readonly placeholder = input<string>('');\n\n\tprotected readonly _isPlaceholder = computed(() => !this._combobox.hasValue());\n\n\tpublic readonly hidden = computed(() => !this._combobox.hasValue() && !this.placeholder());\n\n\tprotected readonly _value = computed(() => {\n\t\treturn this._combobox.hasValue()\n\t\t\t? stringifyAsLabel(this._combobox.value(), this._combobox.itemToString())\n\t\t\t: this.placeholder();\n\t});\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnComboboxBase } from './brn-combobox.token';\n\n@Directive({\n\tselector: '[brnComboboxValueTemplate]',\n})\nexport class BrnComboboxValueTemplate<T> {\n\tprivate readonly _templateRef = inject(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\tprivate readonly _combobox = injectBrnComboboxBase<T>();\n\n\tprotected readonly _value = computed<T | null>(() => {\n\t\tconst value = this._combobox.value();\n\n\t\tif (value === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn value as T;\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._value();\n\t\t\tif (value !== null) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t\t$implicit: value,\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 { 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 { 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 { BrnComboboxPlaceholder } from './lib/brn-combobox-placeholder';\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 { BrnComboboxValueTemplate } from './lib/brn-combobox-value-template';\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-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-placeholder';\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-value-template';\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\tBrnComboboxInput,\n\tBrnComboboxItem,\n\tBrnComboboxLabel,\n\tBrnComboboxList,\n\tBrnComboboxMultiple,\n\tBrnComboboxPlaceholder,\n\tBrnComboboxPopoverTrigger,\n\tBrnComboboxSeparator,\n\tBrnComboboxStatus,\n\tBrnComboboxTrigger,\n\tBrnComboboxValue,\n\tBrnComboboxValueTemplate,\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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"}
|