@testgorilla/tgo-ui 6.4.2 → 6.4.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/autocomplete/autocomplete.component.d.ts +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +2 -2
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs +1 -0
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
- package/package.json +41 -40
|
@@ -261,7 +261,7 @@ export declare class AutocompleteComponent implements ControlValueAccessor, OnCh
|
|
|
261
261
|
protected overlapIndex: number;
|
|
262
262
|
protected inputOpacity: number;
|
|
263
263
|
protected firstTagMaxWidth: number;
|
|
264
|
-
protected inputValueSearch$:
|
|
264
|
+
protected inputValueSearch$: BehaviorSubject<string>;
|
|
265
265
|
protected userInput$: ReplaySubject<string>;
|
|
266
266
|
protected dynamicFilteredList$: BehaviorSubject<any[] | null>;
|
|
267
267
|
protected filteredItemsList$: import("rxjs").Observable<any>;
|
|
@@ -5,7 +5,7 @@ import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
6
|
import { HostListener, Input, Directive, Pipe, EventEmitter, signal, PLATFORM_ID, booleanAttribute, ViewChild, Output, HostBinding, Optional, Inject, Self, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
7
7
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
-
import { take, map, filter, throttleTime,
|
|
8
|
+
import { take, map, filter, throttleTime, BehaviorSubject, ReplaySubject, startWith } from 'rxjs';
|
|
9
9
|
import * as i14 from '@testgorilla/tgo-ui/components/core';
|
|
10
10
|
import { AutocompleteUtils, IKeyboardEvent, UiTranslatePipe, HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';
|
|
11
11
|
import * as i1 from '@angular/forms';
|
|
@@ -437,7 +437,7 @@ class AutocompleteComponent {
|
|
|
437
437
|
this.overlapIndex = 0;
|
|
438
438
|
this.inputOpacity = 1;
|
|
439
439
|
this.firstTagMaxWidth = 0;
|
|
440
|
-
this.inputValueSearch$ = new
|
|
440
|
+
this.inputValueSearch$ = new BehaviorSubject('');
|
|
441
441
|
this.userInput$ = new ReplaySubject(1);
|
|
442
442
|
this.dynamicFilteredList$ = new BehaviorSubject(null);
|
|
443
443
|
this.filteredItemsList$ = this.inputValueSearch$.pipe(startWith(''), map(inputValue => inputValue.length
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-autocomplete.mjs","sources":["../../../components/autocomplete/autocomplete.model.ts","../../../components/autocomplete/prevent-input.directive.ts","../../../components/autocomplete/select-text.directive.ts","../../../components/autocomplete/transform-Item.pipe.ts","../../../components/autocomplete/includes.pipe.ts","../../../components/autocomplete/autocomplete.component.ts","../../../components/autocomplete/autocomplete.component.html","../../../components/autocomplete/autocomplete.component.module.ts","../../../components/autocomplete/testgorilla-tgo-ui-components-autocomplete.ts"],"sourcesContent":["export type AutocompleteType = 'single' | 'multi' | 'large';\n\nexport enum Autocomplete {\n SINGLE = 'single',\n MULTI = 'multi',\n LARGE = 'large',\n}\n\nexport enum Padding {\n AUTOCOMPLETE_CONTAINER = 40,\n DROPDOWN_CONTAINER = 60,\n AUTOCOMPLETE_SPACE_CONTAINER = 65,\n DROPDOWN_SPACE_CONTAINER = 85,\n}\n\nexport const AMOUNT_TAG_WIDTH = 33;\n\nexport enum Timeout {\n VIEW_INITIALIZED_AFTER_ACTION = 150,\n VIEW_INITIALIZED_COMPONENT_LOAD = 600,\n}\n\nexport enum DropdownVariation {\n AUTOCOMPLETE = 'autocomplete',\n DROPDOWN = 'dropdown',\n}\n\nexport type DropdownVariationType = `${DropdownVariation}`;\n\nexport type AutocompleteSize = 'small' | 'medium';\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[uiPreventInput]',\n standalone: true,\n})\nexport class PreventInputDirective {\n @Input() uiPreventInput: boolean;\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Backspace',\n 'Tab',\n 'Delete',\n 'Control',\n 'Shift',\n 'Alt',\n ];\n if (!allowedKeys.includes(event.key) && !event.ctrlKey && !event.metaKey && this.uiPreventInput) {\n event.preventDefault();\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n/**\n * the SelectTextDirective provides a dynamic way to highlight or style specific text within an element.\n */\n@Directive({\n selector: '[selectText]',\n standalone: false,\n})\nexport class SelectTextDirective implements OnChanges {\n @Input() selectText: string | null;\n\n constructor(private el: ElementRef) {}\n\n /**\n * this method utilizes setTimeout to defer the execution until the next tick of the event loop.\n * The text content of the element is modified by wrapping occurrences of the specified selectText with a <span> element,\n * applying a bold font-weight style.\n */\n private setTextColor(): void {\n const textElement = this.el.nativeElement as HTMLElement;\n setTimeout(() => {\n const { textContent } = textElement;\n if (this.selectText && textContent) {\n textElement.innerHTML = textContent.replace(\n new RegExp(this.selectText, 'gmi'),\n match => `<span style=\"font-weight: bold\" >${match}</span>`\n );\n }\n }, 0);\n }\n\n ngOnChanges(): void {\n if (this.selectText) {\n this.setTextColor();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AutocompleteUtils } from '@testgorilla/tgo-ui/components/core';\n\n/**\n * the TransformItemPipe is designed to selectively extract and return values from objects based on a specified field,\n * providing a way to transform and display data a template.\n */\n@Pipe({\n name: 'transformItem',\n standalone: false,\n})\nexport class TransformItemPipe implements PipeTransform {\n transform(value: any, field: string, getValueList: boolean = false): any {\n if (getValueList) {\n return AutocompleteUtils.isArray(value)\n ? value.map((item: any) => (field ? item[field] : item))\n : field\n ? value?.[field]\n : value;\n }\n\n if (AutocompleteUtils.isPrimitive(value)) {\n return value;\n } else if (!AutocompleteUtils.isPrimitive(value) && field && (value?.[field] || value[0][field])) {\n return value?.[field] || value[0][field];\n } else {\n AutocompleteUtils.throwInvalidSetupError();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * The purpose of this pipe is to determine if the value is present in the values array.\n * If values is an array, the method uses the includes method to check for inclusion.\n * If values is not an array, it checks for strict equality between value and values.\n */\n@Pipe({\n name: 'includes',\n standalone: false,\n})\nexport class IncludesPipe implements PipeTransform {\n transform(value: any, values: any, valueField?: string): boolean {\n return Array.isArray(values)\n ? !!values?.find(v => (valueField ? v?.[valueField] === value?.[valueField] : value === v))\n : valueField\n ? value?.[valueField] === values?.[valueField]\n : value === values;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n PLATFORM_ID,\n Self,\n signal,\n SimpleChanges,\n ViewChild,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { BehaviorSubject, filter, map, ReplaySubject, startWith, Subscription, take, throttleTime } from 'rxjs';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '@testgorilla/tgo-ui/components/core';\nimport { AutocompleteUtils } from '@testgorilla/tgo-ui/components/core';\nimport {\n Autocomplete,\n AutocompleteSize,\n AutocompleteType,\n DropdownVariation,\n DropdownVariationType,\n Padding,\n Timeout,\n} from './autocomplete.model';\n\n@Component({\n selector: 'ui-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\n/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nexport class AutocompleteComponent\n implements ControlValueAccessor, OnChanges, AfterViewInit, DoCheck, OnDestroy, OnInit\n{\n /**\n * @property itemsList\n * @description The list of items to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() itemsList: any[] | { groupName: string; items: any[]; isGroup: boolean }[] = [];\n\n /**\n * @property suggestionsList\n * @description The list of suggestions to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() suggestionsList: any[] = [];\n\n /**\n * @property disabled\n * @description If `true`, the autocomplete is disabled.\n * @memberof AutocompleteComponent\n */\n @Input() disabled = false;\n\n /**\n * @property allowAdd\n * @description If `true`, allows adding new values to the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() allowAdd = true;\n\n /**\n * @property textField\n * @description The field to be used as the display text in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() textField = '';\n\n /**\n * @property valueField\n * @description The field to be used as the value in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() valueField = '';\n\n /**\n * @property label\n * @description The label for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() label = '';\n\n /**\n * @property placeholder\n * @description The placeholder for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() placeholder = '';\n\n /**\n * @property value\n * @description The selected value(s) in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() set itemValue(v: any) {\n this.value = AutocompleteUtils.isArray(v) ? v : v ? [v] : [];\n }\n\n /**\n * @property type\n * @description The type of the autocomplete ('single', 'multi', etc.).\n * @memberof AutocompleteComponent\n */\n @Input() type: AutocompleteType = 'multi';\n\n /**\n * @property minCharactersSearch\n * @description The minimum characters to trigger search.\n * @memberof AutocompleteComponent\n */\n @Input() minCharactersSearch = 3;\n\n /**\n * @property variant\n * @description The variant of Autocomplete\n * @memberof AutocompleteComponent\n */\n @Input({ required: true }) variant: DropdownVariationType = DropdownVariation.AUTOCOMPLETE;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() showBottomContent = true;\n\n /**\n * Return full object if true\n * @property valuePrimitive\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() valuePrimitive = false;\n\n /**\n * Indicator of the autocomplete width\n * @property fullWidth\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof AutocompleteComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Autocomplete is required or not\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() required: boolean;\n\n /**\n * Input field errors\n *\n * @type {string[]}\n * @memberof AutocompleteComponent\n */\n @Input() set errors(errors: string[]) {\n this.safeErrors = errors?.filter(Boolean) ?? [];\n }\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof AutocompleteComponent\n */\n @Input() companyColor: string | null = '#FFF2FC';\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Sets dropdown list to virtual scroll mode\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input({ transform: booleanAttribute }) virtualScroll = false;\n\n /**\n * @property compareWith\n * @description Custom comparison logic for the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() compareWith: (a: any, b: any) => boolean;\n\n /**\n * @property dropdownPanelClass\n * @description Sets class on autocomplete dropdown\n * @memberof AutocompleteComponent\n */\n @Input() dropdownPanelClass = '';\n\n /**\n * @property closeOnScroll\n * @description Defines if dropdown should be closed on page scroll\n * @memberof AutocompleteComponent\n */\n @Input() closeOnScroll = false;\n\n /**\n * @property AutocompleteSize\n * @description Defines the size of the autocomplete. Small changes the tags to counter; medium is default.\n * @memberof AutocompleteComponent\n */\n @Input() size: AutocompleteSize = 'medium';\n\n /**\n * @property allowUserInput\n * @description If `true`, allows the user to input custom values in the autocomplete.\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() allowUserInput = true;\n\n /**\n * @property clearable\n * @description If `true`, allows the user to clear the input values\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() clearable = true;\n\n /**\n * @property exactMatchSelect\n * @description If `true`, allows to select the exact match from the suggestions list\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() exactMatchSelect = true;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum number of items that can be selected in the autocomplete\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxItemSelected = Infinity;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum length of the autocomplete input\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxLength?: number;\n\n @Input() isDynamicFilteringEnabled = false;\n @Input() dynamicFilterLoading = false;\n @Input() dynamicFilteredList: any[] | null = null;\n\n @Input() infiniteScroll = false;\n @Input() hasMoreOptionsForInfiniteScroll = true;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() searchTextChange = new EventEmitter<string>();\n @Output() blur = new EventEmitter<void>();\n @Output() focus = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReached\n * @description Emits when the bottom of the unfiltered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReached = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReachedFiltered\n * @description Emits when the bottom of the filtered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReachedFiltered = new EventEmitter<void>();\n\n @ViewChild('formField') formFieldElement: ElementRef<HTMLElement>;\n @ViewChild('tagContainer') tagContainer: ElementRef<HTMLElement>;\n @ViewChild('trigger') autocomplete: MatAutocompleteTrigger;\n @ViewChild(CdkVirtualScrollViewport, { static: false }) set cdkVirtualScrollViewport(\n viewport: CdkVirtualScrollViewport\n ) {\n if (this.savedVirtualScrollSubscription) {\n this.savedVirtualScrollSubscription.unsubscribe();\n }\n\n if (viewport) {\n this.savedVirtualScrollViewport = viewport;\n\n if (this.infiniteScroll) {\n setTimeout(() => {\n this.inputValueSearch$.pipe(take(1)).subscribe(searchValue => {\n this.isFilteredViewport = !!searchValue;\n });\n }, 0);\n\n this.savedVirtualScrollSubscription = this.savedVirtualScrollViewport\n .elementScrolled()\n .pipe(\n map(() => this.savedVirtualScrollViewport.measureScrollOffset('bottom')),\n filter(offset => offset < this.savedVirtualScrollViewport.getViewportSize() * 0.2),\n throttleTime(200),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n if (this.isFilteredViewport) {\n this.scrollViewportBottomReachedFiltered.emit();\n } else {\n this.scrollViewportBottomReached.emit();\n }\n });\n }\n }\n }\n @ViewChild('autocomplete') matAutocomplete: MatAutocomplete;\n @ViewChild('matInput') matInput: ElementRef<HTMLInputElement>;\n\n protected safeErrors: string[] = [];\n protected value: any;\n protected inputValue: any = '';\n protected isInputFocus = false;\n protected autocompleteType = Autocomplete;\n protected isOverLapping = false;\n protected isOverlapChecking = true;\n protected overlapIndex = 0;\n protected inputOpacity = 1;\n protected firstTagMaxWidth = 0;\n protected inputValueSearch$ = new ReplaySubject<string>(1);\n protected userInput$ = new ReplaySubject<string>(1);\n protected dynamicFilteredList$ = new BehaviorSubject<any[] | null>(null);\n protected filteredItemsList$ = this.inputValueSearch$.pipe(\n startWith(''),\n map(inputValue =>\n inputValue.length\n ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField, this.isGrouped)\n : null\n )\n );\n protected filteredSuggestionList$ = this.inputValueSearch$.pipe(\n map(inputValue =>\n inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null\n )\n );\n protected savedVirtualScrollViewport: CdkVirtualScrollViewport;\n protected savedVirtualScrollSubscription: Subscription;\n protected isFilteredViewport = false;\n\n scrollEvent = (event: any): void => {\n const isNotAutocompleteScroll =\n !event.target?.id?.includes('mat-autocomplete-') &&\n !event.target?.parentElement?.id?.includes('mat-autocomplete-') &&\n !event.target?.classList?.contains('mat-mdc-autocomplete-trigger');\n\n if (this.autocomplete.panelOpen && isNotAutocompleteScroll) {\n this.autocomplete.closePanel();\n }\n };\n\n protected searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));\n protected translationContext = 'AUTOCOMPLETE.';\n protected readonly AutocompleteUtils = AutocompleteUtils;\n private readonly isPlatform = isPlatformBrowser(this.platformId);\n private observer: MutationObserver;\n protected keyboardFocused = signal<boolean>(false);\n isAlreadyAdded = false;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl,\n @Inject(PLATFORM_ID) private readonly platformId: any,\n private readonly el: ElementRef,\n private readonly focusMonitor: FocusMonitor,\n private readonly destroyRef: DestroyRef,\n private readonly ngZone: NgZone\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n this.subscriberDisplayChange();\n }\n\n ngOnInit(): void {\n if (this.isDynamicFilteringEnabled) {\n this.filteredItemsList$ = this.dynamicFilteredList$;\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isDynamicFilteringEnabled) {\n const dynamicFilteredList = changes['dynamicFilteredList']?.currentValue;\n\n if (dynamicFilteredList) {\n this.dynamicFilteredList$.next(dynamicFilteredList);\n }\n\n return;\n }\n\n if (changes['itemsList'] || changes['suggestionsList'] || changes['valueField']) {\n this.itemsList = this.isGrouped\n ? this.itemsList\n : AutocompleteUtils.excludeSuggestions(this.itemsList, this.suggestionsList, this.valueField);\n this.initValue();\n }\n\n if (this.isPlatform && changes['companyColor']) {\n this.setCompanyColorVariable();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngAfterViewInit(): void {\n if (this.type !== (Autocomplete.LARGE as AutocompleteType)) {\n this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);\n }\n this.isPlatform && this.setCompanyColorVariable();\n if (this.closeOnScroll) {\n window.addEventListener('scroll', this.scrollEvent, true);\n }\n\n this.focusMonitor\n .monitor(this.matInput)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n })\n );\n\n this.matInput.nativeElement.onkeydown = this.onKeydown.bind(this);\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnDestroy(): void {\n window.removeEventListener('scroll', this.scrollEvent, true);\n\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n onChange = (_: any) => {};\n onTouch = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: any): void {\n if (this.valuePrimitive && this.textField && this.valueField) {\n if (this.type === (Autocomplete.SINGLE as AutocompleteType)) {\n this.value = this.itemsList.find(item => item[this.valueField] === value);\n } else {\n this.value = AutocompleteUtils.isArray(value)\n ? this.itemsList.filter(item => value.find((v: any) => v === item[this.valueField]))\n : [this.itemsList.find(item => item[this.valueField] === value)];\n this.value = this.value.filter(Boolean).length ? this.value : null;\n }\n } else {\n this.value = value;\n }\n\n this.initValue();\n\n this.cdr.markForCheck();\n }\n\n protected get isGrouped(): boolean {\n return this.itemsList?.some((item: any) => item.isGroup);\n }\n\n protected onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n const inputValue = event.option.value;\n const itemValue = AutocompleteUtils.createValueItem(inputValue, this.textField, this.valueField);\n this.addNewValue(itemValue);\n\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n\n queueMicrotask(() => {\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.inputValue = '';\n } else {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n }\n this.cdr.markForCheck();\n });\n\n this.onUpdate();\n }\n\n protected onOptionRemoved(option: any): void {\n setTimeout(() => this.autocomplete.closePanel(), 0);\n const foundValue = this.value.find((v: any) => (this.compareWith ? this.compareWith(v, option) : v === option));\n\n if (foundValue) {\n this.value = this.value.filter((v: any) => (this.compareWith ? !this.compareWith(v, option) : v !== option));\n this.matAutocomplete.options.forEach(option => {\n if (option.value?.value === foundValue.value) {\n option.deselect();\n }\n });\n }\n\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n\n if (!this.value.length) {\n this.inputValue = '';\n }\n\n this.onUpdate();\n }\n\n protected onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n this.userInput$.next(inputValue);\n if (inputValue.length >= this.minCharactersSearch) {\n this.inputValueSearch$.next(inputValue);\n this.searchTextChange.emit(inputValue);\n const itemList = this.isGrouped ? this.itemsList.flatMap(groups => groups.items) : this.itemsList.flat();\n\n const findValue = [...this.suggestionsList, ...itemList].find(\n v => inputValue === (this.textField ? v[this.textField] : v)\n );\n const count = AutocompleteUtils.countMatchingWords(\n [...this.suggestionsList, ...itemList],\n this.inputValue,\n this.textField\n );\n if (findValue && count === 1 && this.exactMatchSelect) {\n this.onOptionSelected({ option: { value: findValue } } as MatAutocompleteSelectedEvent);\n }\n } else {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n }\n this.isAlreadyAdded = !!(this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, inputValue))\n : AutocompleteUtils.findDuplicate(this.value, inputValue, this.textField));\n }\n\n protected onClear(): void {\n this.inputValue = '';\n this.value = AutocompleteUtils.isArray(this.value) ? [] : '';\n this.isOverLapping = false;\n this.overlapIndex = 0;\n this.onUpdate();\n this.matAutocomplete?.options.forEach(option => option.deselect());\n this.onTouch();\n }\n\n protected refillInput(): void {\n setTimeout(() => {\n if (this.value && this.type === (this.autocompleteType.SINGLE as AutocompleteType) && !this.inputValue) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n } else if (!this.inputValue && this.value?.length) {\n this.inputValue = ' ';\n } else if (\n this.inputValue &&\n this.type === (Autocomplete.SINGLE as AutocompleteType) &&\n this.value &&\n Object.keys(this.value).length\n ) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n );\n } else if (this.inputValue) {\n this.inputValue = ' ';\n }\n\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n this.isInputFocus = false;\n this.onTouch();\n this.blur.emit();\n }, 0);\n }\n\n protected gotoUp() {\n if (this.savedVirtualScrollViewport) {\n this.savedVirtualScrollViewport.scrollToIndex(0);\n this.savedVirtualScrollViewport.checkViewportSize();\n }\n }\n\n protected onFocus(): void {\n this.isInputFocus = true;\n\n const inputValue = AutocompleteUtils.isArray(this.inputValue) ? this.inputValue[0] : this.inputValue;\n\n if (AutocompleteUtils.isPrimitive(inputValue)) {\n if (typeof inputValue !== 'number' && inputValue?.match(/^\\s+/gm)) {\n this.inputValue = inputValue.trimStart();\n }\n } else {\n if (inputValue[this.textField]?.match(/^\\s+/gm)) {\n this.inputValue = inputValue[this.textField].trimStart();\n }\n }\n this.focus.emit();\n }\n\n private checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false): void {\n this.isOverLapping = false;\n this.isOverlapChecking = true;\n this.inputOpacity = 0;\n\n setTimeout(() => {\n const inputWidth = this.inputWidth;\n const tags = this.tagContainer?.nativeElement.querySelectorAll('.value-tag');\n if (tags) {\n let width = 0;\n tags.forEach((tag: any, index: number) => {\n width += tag.getBoundingClientRect().width;\n\n const inpWidth = this.formFieldElement?.nativeElement.getBoundingClientRect().width - 20;\n this.firstTagMaxWidth =\n tags.length > 1\n ? inpWidth -\n (this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType)\n ? Padding.DROPDOWN_SPACE_CONTAINER\n : Padding.AUTOCOMPLETE_SPACE_CONTAINER)\n : inpWidth;\n\n if (!this.isOverLapping && width > inputWidth && index > 0) {\n this.isOverLapping = true;\n this.overlapIndex = index;\n }\n });\n this.isOverlapChecking = false;\n if (init) {\n if (this.type === (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else if (this.value?.length) {\n this.inputValue = ' ';\n }\n }\n const tagContainerWidth = this.tagContainer.nativeElement.getBoundingClientRect().width;\n this.tagContainer.nativeElement.style.maxWidth = tagContainerWidth / 100 ? '100%' : `${tagContainerWidth}px`;\n this.cdr.markForCheck();\n }\n this.inputOpacity = 1;\n }, delay);\n }\n\n private onUpdate(): void {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n if (!this.valuePrimitive) {\n this.onChange(this.value);\n } else {\n if (this.type === (Autocomplete.SINGLE as AutocompleteType)) {\n this.onChange(this.value[this.valueField]);\n } else {\n this.onChange(this.value.map((v: any) => v[this.valueField]));\n }\n }\n this.updateControlMaxLengthValidity();\n this.selectionChange.emit(this.value);\n }\n\n private updateControlMaxLengthValidity(): void {\n const control = this.ngControl?.control;\n if (!control) {\n return;\n }\n\n if (this.type !== (Autocomplete.SINGLE as AutocompleteType)) {\n const existingErrors = control.errors || {};\n\n if (this.value.length > this.maxItemSelected) {\n control.setErrors({\n ...existingErrors,\n maxItemSelected: {\n expected: this.maxItemSelected,\n actual: this.value.length,\n },\n });\n control.markAsTouched();\n } else {\n if (existingErrors['maxItemSelected']) {\n delete existingErrors['maxItemSelected'];\n control.setErrors(Object.keys(existingErrors).length ? existingErrors : null);\n }\n }\n }\n }\n\n private initValue(): void {\n if (\n this.type === (this.autocompleteType.SINGLE as AutocompleteType) &&\n this.variant !== (DropdownVariation.DROPDOWN as DropdownVariationType)\n ) {\n if (AutocompleteUtils.isArray(this.value)) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else {\n this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';\n }\n } else if (this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType)) {\n this.inputValue =\n (AutocompleteUtils.isArray(this.value) && !this.value?.length) || !this.value\n ? ''\n : this.type === (Autocomplete.SINGLE as AutocompleteType)\n ? AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n )\n : ' ';\n } else {\n this.inputValue = this.value && this.value.length ? ' ' : '';\n }\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n }\n\n private addNewValue(newValue: any): void {\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType) && !this.value) {\n this.value = [];\n }\n\n const foundDuplicate = this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, newValue))\n : AutocompleteUtils.findDuplicate(this.value, newValue, this.textField);\n\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.value = foundDuplicate\n ? this.value.filter((v: any) =>\n this.compareWith ? !this.compareWith(v, foundDuplicate) : v !== foundDuplicate\n )\n : [...this.value, newValue];\n } else {\n this.value = newValue;\n }\n }\n\n protected get isDropdown(): boolean {\n return this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType);\n }\n\n protected onChevronClick(autocomplete: MatAutocomplete): void {\n if (autocomplete.isOpen) {\n setTimeout(() => {\n this.autocomplete.closePanel();\n }, 0);\n }\n }\n\n protected get inputWidth(): number {\n return (\n this.formFieldElement?.nativeElement.getBoundingClientRect().width -\n (this.isDropdown ? Padding.DROPDOWN_CONTAINER : Padding.AUTOCOMPLETE_CONTAINER)\n );\n }\n\n protected trackByFn = (index: number, value: string) => value;\n\n /**\n * Adding company color variable to the body to style overlay container that's out of the component scope.\n */\n private setCompanyColorVariable(): void {\n document.body.style.setProperty('--ui-autocomplete-option-color', `${this.companyColor}`);\n }\n\n private subscriberDisplayChange(): void {\n const autocompleteHostElement = this.el.nativeElement;\n\n this.observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName === 'style') {\n const displayStyle = getComputedStyle(autocompleteHostElement).display;\n if (displayStyle !== 'none') {\n this.checkOverlap();\n }\n }\n });\n });\n\n this.observer.observe(autocompleteHostElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n }\n\n protected get hasObjectValue(): boolean {\n return this.value ? !!Object.keys(this.value).length : false;\n }\n\n onKeydown($event: KeyboardEvent) {\n const optionHeight = 48;\n\n if ($event.key === (IKeyboardEvent.HOME as string)) {\n this.matAutocomplete._keyManager.setFirstItemActive();\n } else if ($event.key === (IKeyboardEvent.END as string)) {\n this.matAutocomplete._keyManager.setLastItemActive();\n } else if ($event.key === (IKeyboardEvent.PAGE_DOWN as string)) {\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n } else if ($event.key === (IKeyboardEvent.PAGE_UP as string)) {\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n }\n\n this.matAutocomplete._setScrollTop((this.matAutocomplete._keyManager.activeItemIndex ?? 0) * optionHeight);\n }\n\n protected getVirtualScrollHeight(itemCount: number): number {\n const itemHeight = 48;\n const maxHeight = 200;\n const minHeight = 48;\n\n const calculatedHeight = itemCount * itemHeight;\n\n return Math.min(Math.max(calculatedHeight, minHeight), maxHeight);\n }\n}\n","<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"\n safeErrors.length ||\n (ngControl?.errors && ngControl?.touched) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n ? 'warn'\n : 'accent'\n \"\n [appearance]=\"'outline'\"\n [ngClass]=\"{\n 'large-size': type === autocompleteType.LARGE,\n 'hide-bottom-content': !showBottomContent,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <span\n style=\"position: absolute; left: -9999px\"\n *ngIf=\"textField ? value?.[textField] : value === inputValue\"\n aria-live=\"polite\"\n >{{ ('SELECTED' | uiTranslate | async) + ' ' + inputValue }}</span\n >\n\n <input\n #trigger=\"matAutocompleteTrigger\"\n #matInput\n [attr.maxlength]=\"maxLength !== null && maxLength !== undefined ? maxLength : null\"\n [uiPreventInput]=\"!allowUserInput\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': value && type === autocompleteType.LARGE, 'no-caret': !allowUserInput }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [attr.aria-label]=\"\n (translationContext + 'SELECTED' | uiTranslate | async) + ' ' + (value | transformItem: textField : true)\n \"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [placeholder]=\"value && value.length ? '' : placeholder\"\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && value) ||\n (!(inputValue && isInputFocus) && value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [style.display]=\"\n (isOverLapping && i > 0 && i >= overlapIndex) || (size === 'small' && value.length > 1) ? 'none' : 'block'\n \"\n [ngStyle]=\"{ '--tag-max-width': type === autocompleteType.LARGE ? 'fit-content' : firstTagMaxWidth + 'px' }\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI,\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n @if (size === 'small') {\n <div class=\"selected-count\" *ngIf=\"value.length > 1\">\n {{\n translationContext + 'SELECTED_AMOUNT'\n | uiTranslate: { numberSelected: (value | slice: overlapIndex).length }\n | async\n }}\n </div>\n } @else {\n <div *ngIf=\"value.length > 1 && isOverLapping\" class=\"overlap-count\">\n <ui-tag [applicationTheme]=\"applicationTheme\" [label]=\"'+' + (value.length - overlapIndex)\"></ui-tag>\n </div>\n }\n </div>\n </div>\n\n <ui-icon\n *ngIf=\"\n (clearable && type === autocompleteType.SINGLE && (value?.length || hasObjectValue)) ||\n (type !== autocompleteType.SINGLE &&\n value &&\n value.length > 1 &&\n ((AutocompleteUtils.isPrimitive(value) && value.length) ||\n (!AutocompleteUtils.isPrimitive(value) &&\n ((AutocompleteUtils.isArray(value) && value.length) ||\n (!AutocompleteUtils.isArray(value) && !value.length)))))\n \"\n class=\"remove-selected\"\n [tabIndex]=\"disabled ? -1 : 0\"\n (keydown.enter)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n (keydown.space)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [attr.aria-label]=\"'COMMON.CLEAR' | uiTranslate | async\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme + ' ' + dropdownPanelClass\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n @if (type !== autocompleteType.MULTI || value?.length < maxItemSelected) {\n <ng-container *ngIf=\"(searchResult$ | async) === false\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"suggestionsList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': suggested | includes: value : valueField }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type !== autocompleteType.SINGLE\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n @if (isGrouped) {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type === autocompleteType.SINGLE\"\n >\n <mat-option (mousedown)=\"$event.preventDefault()\" [class]=\"'selected-option'\" [value]=\"value\">\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport\n *ngIf=\"virtualScroll || infiniteScroll; else defaultViewPort\"\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(itemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n\n @if (infiniteScroll && hasMoreOptionsForInfiniteScroll) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n }\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <ng-container *ngIf=\"virtualScroll || infiniteScroll; else filteredWithoutVirtualScroll\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(filteredItemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroupVirtual\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroupVirtual>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-template #filteredWithoutVirtualScroll>\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroup\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </ng-template>\n </ng-container>\n </ng-container>\n }\n </mat-autocomplete>\n <mat-hint\n class=\"error\"\n *ngIf=\"\n safeErrors.length ||\n (ngControl?.errors | hasValidationError) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <div\n class=\"errors\"\n *ngIf=\"\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContext + 'MAX_SELECTED_ERROR' | uiTranslate: { max: maxItemSelected } | async }}</span>\n </div>\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error\n *ngIf=\"ngControl && !hideBuiltInErrors\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n ></ui-validation-error>\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { TagComponentModule } from '@testgorilla/tgo-ui/components/tag';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TransformItemPipe } from './transform-Item.pipe';\nimport { IncludesPipe } from './includes.pipe';\nimport { SelectTextDirective } from './select-text.directive';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\nimport { HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { PreventInputDirective } from './prevent-input.directive';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\n\n@NgModule({\n declarations: [AutocompleteComponent, TransformItemPipe, IncludesPipe, SelectTextDirective],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n MatInputModule,\n FormsModule,\n TagComponentModule,\n MatChipsModule,\n IconComponentModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n PreventInputDirective,\n SpinnerComponentModule,\n ],\n exports: [AutocompleteComponent],\n providers: [TransformItemPipe, IncludesPipe, SelectTextDirective],\n})\nexport class AutocompleteComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i11.PreventInputDirective","i13.SelectTextDirective","i15.TransformItemPipe","i16.IncludesPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-autocomplete.mjs","sources":["../../../components/autocomplete/autocomplete.model.ts","../../../components/autocomplete/prevent-input.directive.ts","../../../components/autocomplete/select-text.directive.ts","../../../components/autocomplete/transform-Item.pipe.ts","../../../components/autocomplete/includes.pipe.ts","../../../components/autocomplete/autocomplete.component.ts","../../../components/autocomplete/autocomplete.component.html","../../../components/autocomplete/autocomplete.component.module.ts","../../../components/autocomplete/testgorilla-tgo-ui-components-autocomplete.ts"],"sourcesContent":["export type AutocompleteType = 'single' | 'multi' | 'large';\n\nexport enum Autocomplete {\n SINGLE = 'single',\n MULTI = 'multi',\n LARGE = 'large',\n}\n\nexport enum Padding {\n AUTOCOMPLETE_CONTAINER = 40,\n DROPDOWN_CONTAINER = 60,\n AUTOCOMPLETE_SPACE_CONTAINER = 65,\n DROPDOWN_SPACE_CONTAINER = 85,\n}\n\nexport const AMOUNT_TAG_WIDTH = 33;\n\nexport enum Timeout {\n VIEW_INITIALIZED_AFTER_ACTION = 150,\n VIEW_INITIALIZED_COMPONENT_LOAD = 600,\n}\n\nexport enum DropdownVariation {\n AUTOCOMPLETE = 'autocomplete',\n DROPDOWN = 'dropdown',\n}\n\nexport type DropdownVariationType = `${DropdownVariation}`;\n\nexport type AutocompleteSize = 'small' | 'medium';\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[uiPreventInput]',\n standalone: true,\n})\nexport class PreventInputDirective {\n @Input() uiPreventInput: boolean;\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const allowedKeys = [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Backspace',\n 'Tab',\n 'Delete',\n 'Control',\n 'Shift',\n 'Alt',\n ];\n if (!allowedKeys.includes(event.key) && !event.ctrlKey && !event.metaKey && this.uiPreventInput) {\n event.preventDefault();\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n/**\n * the SelectTextDirective provides a dynamic way to highlight or style specific text within an element.\n */\n@Directive({\n selector: '[selectText]',\n standalone: false,\n})\nexport class SelectTextDirective implements OnChanges {\n @Input() selectText: string | null;\n\n constructor(private el: ElementRef) {}\n\n /**\n * this method utilizes setTimeout to defer the execution until the next tick of the event loop.\n * The text content of the element is modified by wrapping occurrences of the specified selectText with a <span> element,\n * applying a bold font-weight style.\n */\n private setTextColor(): void {\n const textElement = this.el.nativeElement as HTMLElement;\n setTimeout(() => {\n const { textContent } = textElement;\n if (this.selectText && textContent) {\n textElement.innerHTML = textContent.replace(\n new RegExp(this.selectText, 'gmi'),\n match => `<span style=\"font-weight: bold\" >${match}</span>`\n );\n }\n }, 0);\n }\n\n ngOnChanges(): void {\n if (this.selectText) {\n this.setTextColor();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AutocompleteUtils } from '@testgorilla/tgo-ui/components/core';\n\n/**\n * the TransformItemPipe is designed to selectively extract and return values from objects based on a specified field,\n * providing a way to transform and display data a template.\n */\n@Pipe({\n name: 'transformItem',\n standalone: false,\n})\nexport class TransformItemPipe implements PipeTransform {\n transform(value: any, field: string, getValueList: boolean = false): any {\n if (getValueList) {\n return AutocompleteUtils.isArray(value)\n ? value.map((item: any) => (field ? item[field] : item))\n : field\n ? value?.[field]\n : value;\n }\n\n if (AutocompleteUtils.isPrimitive(value)) {\n return value;\n } else if (!AutocompleteUtils.isPrimitive(value) && field && (value?.[field] || value[0][field])) {\n return value?.[field] || value[0][field];\n } else {\n AutocompleteUtils.throwInvalidSetupError();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * The purpose of this pipe is to determine if the value is present in the values array.\n * If values is an array, the method uses the includes method to check for inclusion.\n * If values is not an array, it checks for strict equality between value and values.\n */\n@Pipe({\n name: 'includes',\n standalone: false,\n})\nexport class IncludesPipe implements PipeTransform {\n transform(value: any, values: any, valueField?: string): boolean {\n return Array.isArray(values)\n ? !!values?.find(v => (valueField ? v?.[valueField] === value?.[valueField] : value === v))\n : valueField\n ? value?.[valueField] === values?.[valueField]\n : value === values;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n PLATFORM_ID,\n Self,\n signal,\n SimpleChanges,\n ViewChild,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { BehaviorSubject, filter, map, ReplaySubject, startWith, Subscription, take, throttleTime } from 'rxjs';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IKeyboardEvent } from '@testgorilla/tgo-ui/components/core';\nimport { AutocompleteUtils } from '@testgorilla/tgo-ui/components/core';\nimport {\n Autocomplete,\n AutocompleteSize,\n AutocompleteType,\n DropdownVariation,\n DropdownVariationType,\n Padding,\n Timeout,\n} from './autocomplete.model';\n\n@Component({\n selector: 'ui-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\n/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nexport class AutocompleteComponent\n implements ControlValueAccessor, OnChanges, AfterViewInit, DoCheck, OnDestroy, OnInit\n{\n /**\n * @property itemsList\n * @description The list of items to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() itemsList: any[] | { groupName: string; items: any[]; isGroup: boolean }[] = [];\n\n /**\n * @property suggestionsList\n * @description The list of suggestions to display in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() suggestionsList: any[] = [];\n\n /**\n * @property disabled\n * @description If `true`, the autocomplete is disabled.\n * @memberof AutocompleteComponent\n */\n @Input() disabled = false;\n\n /**\n * @property allowAdd\n * @description If `true`, allows adding new values to the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() allowAdd = true;\n\n /**\n * @property textField\n * @description The field to be used as the display text in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() textField = '';\n\n /**\n * @property valueField\n * @description The field to be used as the value in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() valueField = '';\n\n /**\n * @property label\n * @description The label for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() label = '';\n\n /**\n * @property placeholder\n * @description The placeholder for the autocomplete input.\n * @memberof AutocompleteComponent\n */\n @Input() placeholder = '';\n\n /**\n * @property value\n * @description The selected value(s) in the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() set itemValue(v: any) {\n this.value = AutocompleteUtils.isArray(v) ? v : v ? [v] : [];\n }\n\n /**\n * @property type\n * @description The type of the autocomplete ('single', 'multi', etc.).\n * @memberof AutocompleteComponent\n */\n @Input() type: AutocompleteType = 'multi';\n\n /**\n * @property minCharactersSearch\n * @description The minimum characters to trigger search.\n * @memberof AutocompleteComponent\n */\n @Input() minCharactersSearch = 3;\n\n /**\n * @property variant\n * @description The variant of Autocomplete\n * @memberof AutocompleteComponent\n */\n @Input({ required: true }) variant: DropdownVariationType = DropdownVariation.AUTOCOMPLETE;\n\n /**\n * Show reserved content below form field\n * @property showBottomContent\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() showBottomContent = true;\n\n /**\n * Return full object if true\n * @property valuePrimitive\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() valuePrimitive = false;\n\n /**\n * Indicator of the autocomplete width\n * @property fullWidth\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @HostBinding('class.full-width')\n @Input()\n fullWidth = false;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof AutocompleteComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Autocomplete is required or not\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() required: boolean;\n\n /**\n * Input field errors\n *\n * @type {string[]}\n * @memberof AutocompleteComponent\n */\n @Input() set errors(errors: string[]) {\n this.safeErrors = errors?.filter(Boolean) ?? [];\n }\n\n /**\n * Color of the option hover.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof AutocompleteComponent\n */\n @Input() companyColor: string | null = '#FFF2FC';\n\n /**\n * Hide in-build errors for Reactive Forms\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideBuiltInErrors = false;\n\n /**\n * Hide label in errors\n *\n * @type {number}\n * @memberof AutocompleteComponent\n */\n @Input() hideLabelInErrors = false;\n\n /**\n * Sets dropdown list to virtual scroll mode\n *\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input({ transform: booleanAttribute }) virtualScroll = false;\n\n /**\n * @property compareWith\n * @description Custom comparison logic for the autocomplete.\n * @memberof AutocompleteComponent\n */\n @Input() compareWith: (a: any, b: any) => boolean;\n\n /**\n * @property dropdownPanelClass\n * @description Sets class on autocomplete dropdown\n * @memberof AutocompleteComponent\n */\n @Input() dropdownPanelClass = '';\n\n /**\n * @property closeOnScroll\n * @description Defines if dropdown should be closed on page scroll\n * @memberof AutocompleteComponent\n */\n @Input() closeOnScroll = false;\n\n /**\n * @property AutocompleteSize\n * @description Defines the size of the autocomplete. Small changes the tags to counter; medium is default.\n * @memberof AutocompleteComponent\n */\n @Input() size: AutocompleteSize = 'medium';\n\n /**\n * @property allowUserInput\n * @description If `true`, allows the user to input custom values in the autocomplete.\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() allowUserInput = true;\n\n /**\n * @property clearable\n * @description If `true`, allows the user to clear the input values\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() clearable = true;\n\n /**\n * @property exactMatchSelect\n * @description If `true`, allows to select the exact match from the suggestions list\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() exactMatchSelect = true;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum number of items that can be selected in the autocomplete\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxItemSelected = Infinity;\n\n /**\n * @property maxItemSelected\n * @description Sets the maximum length of the autocomplete input\n * @type {boolean}\n * @memberof AutocompleteComponent\n */\n @Input() maxLength?: number;\n\n @Input() isDynamicFilteringEnabled = false;\n @Input() dynamicFilterLoading = false;\n @Input() dynamicFilteredList: any[] | null = null;\n\n @Input() infiniteScroll = false;\n @Input() hasMoreOptionsForInfiniteScroll = true;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() searchTextChange = new EventEmitter<string>();\n @Output() blur = new EventEmitter<void>();\n @Output() focus = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReached\n * @description Emits when the bottom of the unfiltered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReached = new EventEmitter<void>();\n\n /**\n * @property scrollViewportBottomReachedFiltered\n * @description Emits when the bottom of the filtered list is reached during infinite scroll\n * @memberof AutocompleteComponent\n */\n @Output() scrollViewportBottomReachedFiltered = new EventEmitter<void>();\n\n @ViewChild('formField') formFieldElement: ElementRef<HTMLElement>;\n @ViewChild('tagContainer') tagContainer: ElementRef<HTMLElement>;\n @ViewChild('trigger') autocomplete: MatAutocompleteTrigger;\n @ViewChild(CdkVirtualScrollViewport, { static: false }) set cdkVirtualScrollViewport(\n viewport: CdkVirtualScrollViewport\n ) {\n if (this.savedVirtualScrollSubscription) {\n this.savedVirtualScrollSubscription.unsubscribe();\n }\n\n if (viewport) {\n this.savedVirtualScrollViewport = viewport;\n\n if (this.infiniteScroll) {\n setTimeout(() => {\n this.inputValueSearch$.pipe(take(1)).subscribe(searchValue => {\n this.isFilteredViewport = !!searchValue;\n });\n }, 0);\n\n this.savedVirtualScrollSubscription = this.savedVirtualScrollViewport\n .elementScrolled()\n .pipe(\n map(() => this.savedVirtualScrollViewport.measureScrollOffset('bottom')),\n filter(offset => offset < this.savedVirtualScrollViewport.getViewportSize() * 0.2),\n throttleTime(200),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n if (this.isFilteredViewport) {\n this.scrollViewportBottomReachedFiltered.emit();\n } else {\n this.scrollViewportBottomReached.emit();\n }\n });\n }\n }\n }\n @ViewChild('autocomplete') matAutocomplete: MatAutocomplete;\n @ViewChild('matInput') matInput: ElementRef<HTMLInputElement>;\n\n protected safeErrors: string[] = [];\n protected value: any;\n protected inputValue: any = '';\n protected isInputFocus = false;\n protected autocompleteType = Autocomplete;\n protected isOverLapping = false;\n protected isOverlapChecking = true;\n protected overlapIndex = 0;\n protected inputOpacity = 1;\n protected firstTagMaxWidth = 0;\n protected inputValueSearch$ = new BehaviorSubject<string>('');\n protected userInput$ = new ReplaySubject<string>(1);\n protected dynamicFilteredList$ = new BehaviorSubject<any[] | null>(null);\n protected filteredItemsList$ = this.inputValueSearch$.pipe(\n startWith(''),\n map(inputValue =>\n inputValue.length\n ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField, this.isGrouped)\n : null\n )\n );\n protected filteredSuggestionList$ = this.inputValueSearch$.pipe(\n map(inputValue =>\n inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null\n )\n );\n protected savedVirtualScrollViewport: CdkVirtualScrollViewport;\n protected savedVirtualScrollSubscription: Subscription;\n protected isFilteredViewport = false;\n\n scrollEvent = (event: any): void => {\n const isNotAutocompleteScroll =\n !event.target?.id?.includes('mat-autocomplete-') &&\n !event.target?.parentElement?.id?.includes('mat-autocomplete-') &&\n !event.target?.classList?.contains('mat-mdc-autocomplete-trigger');\n\n if (this.autocomplete.panelOpen && isNotAutocompleteScroll) {\n this.autocomplete.closePanel();\n }\n };\n\n protected searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));\n protected translationContext = 'AUTOCOMPLETE.';\n protected readonly AutocompleteUtils = AutocompleteUtils;\n private readonly isPlatform = isPlatformBrowser(this.platformId);\n private observer: MutationObserver;\n protected keyboardFocused = signal<boolean>(false);\n isAlreadyAdded = false;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl,\n @Inject(PLATFORM_ID) private readonly platformId: any,\n private readonly el: ElementRef,\n private readonly focusMonitor: FocusMonitor,\n private readonly destroyRef: DestroyRef,\n private readonly ngZone: NgZone\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n\n this.subscriberDisplayChange();\n }\n\n ngOnInit(): void {\n if (this.isDynamicFilteringEnabled) {\n this.filteredItemsList$ = this.dynamicFilteredList$;\n }\n }\n\n /**\n * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors\n * to display validation errors that might happen (e.g. required)\n */\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngDoCheck(): void {\n if (this.ngControl?.touched || this.ngControl?.errors) {\n this.cdr.markForCheck();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isDynamicFilteringEnabled) {\n const dynamicFilteredList = changes['dynamicFilteredList']?.currentValue;\n\n if (dynamicFilteredList) {\n this.dynamicFilteredList$.next(dynamicFilteredList);\n }\n\n return;\n }\n\n if (changes['itemsList'] || changes['suggestionsList'] || changes['valueField']) {\n this.itemsList = this.isGrouped\n ? this.itemsList\n : AutocompleteUtils.excludeSuggestions(this.itemsList, this.suggestionsList, this.valueField);\n this.initValue();\n }\n\n if (this.isPlatform && changes['companyColor']) {\n this.setCompanyColorVariable();\n }\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngAfterViewInit(): void {\n if (this.type !== (Autocomplete.LARGE as AutocompleteType)) {\n this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);\n }\n this.isPlatform && this.setCompanyColorVariable();\n if (this.closeOnScroll) {\n window.addEventListener('scroll', this.scrollEvent, true);\n }\n\n this.focusMonitor\n .monitor(this.matInput)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin =>\n this.ngZone.run(() => {\n this.keyboardFocused.set(origin === 'keyboard');\n })\n );\n\n this.matInput.nativeElement.onkeydown = this.onKeydown.bind(this);\n }\n\n // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n ngOnDestroy(): void {\n window.removeEventListener('scroll', this.scrollEvent, true);\n\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n onChange = (_: any) => {};\n onTouch = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: any): void {\n if (this.valuePrimitive && this.textField && this.valueField) {\n if (this.type === (Autocomplete.SINGLE as AutocompleteType)) {\n this.value = this.itemsList.find(item => item[this.valueField] === value);\n } else {\n this.value = AutocompleteUtils.isArray(value)\n ? this.itemsList.filter(item => value.find((v: any) => v === item[this.valueField]))\n : [this.itemsList.find(item => item[this.valueField] === value)];\n this.value = this.value.filter(Boolean).length ? this.value : null;\n }\n } else {\n this.value = value;\n }\n\n this.initValue();\n\n this.cdr.markForCheck();\n }\n\n protected get isGrouped(): boolean {\n return this.itemsList?.some((item: any) => item.isGroup);\n }\n\n protected onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n const inputValue = event.option.value;\n const itemValue = AutocompleteUtils.createValueItem(inputValue, this.textField, this.valueField);\n this.addNewValue(itemValue);\n\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n\n queueMicrotask(() => {\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.inputValue = '';\n } else {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n }\n this.cdr.markForCheck();\n });\n\n this.onUpdate();\n }\n\n protected onOptionRemoved(option: any): void {\n setTimeout(() => this.autocomplete.closePanel(), 0);\n const foundValue = this.value.find((v: any) => (this.compareWith ? this.compareWith(v, option) : v === option));\n\n if (foundValue) {\n this.value = this.value.filter((v: any) => (this.compareWith ? !this.compareWith(v, option) : v !== option));\n this.matAutocomplete.options.forEach(option => {\n if (option.value?.value === foundValue.value) {\n option.deselect();\n }\n });\n }\n\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n\n if (!this.value.length) {\n this.inputValue = '';\n }\n\n this.onUpdate();\n }\n\n protected onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n this.userInput$.next(inputValue);\n if (inputValue.length >= this.minCharactersSearch) {\n this.inputValueSearch$.next(inputValue);\n this.searchTextChange.emit(inputValue);\n const itemList = this.isGrouped ? this.itemsList.flatMap(groups => groups.items) : this.itemsList.flat();\n\n const findValue = [...this.suggestionsList, ...itemList].find(\n v => inputValue === (this.textField ? v[this.textField] : v)\n );\n const count = AutocompleteUtils.countMatchingWords(\n [...this.suggestionsList, ...itemList],\n this.inputValue,\n this.textField\n );\n if (findValue && count === 1 && this.exactMatchSelect) {\n this.onOptionSelected({ option: { value: findValue } } as MatAutocompleteSelectedEvent);\n }\n } else {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n }\n this.isAlreadyAdded = !!(this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, inputValue))\n : AutocompleteUtils.findDuplicate(this.value, inputValue, this.textField));\n }\n\n protected onClear(): void {\n this.inputValue = '';\n this.value = AutocompleteUtils.isArray(this.value) ? [] : '';\n this.isOverLapping = false;\n this.overlapIndex = 0;\n this.onUpdate();\n this.matAutocomplete?.options.forEach(option => option.deselect());\n this.onTouch();\n }\n\n protected refillInput(): void {\n setTimeout(() => {\n if (this.value && this.type === (this.autocompleteType.SINGLE as AutocompleteType) && !this.inputValue) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);\n } else if (!this.inputValue && this.value?.length) {\n this.inputValue = ' ';\n } else if (\n this.inputValue &&\n this.type === (Autocomplete.SINGLE as AutocompleteType) &&\n this.value &&\n Object.keys(this.value).length\n ) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n );\n } else if (this.inputValue) {\n this.inputValue = ' ';\n }\n\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n this.isInputFocus = false;\n this.onTouch();\n this.blur.emit();\n }, 0);\n }\n\n protected gotoUp() {\n if (this.savedVirtualScrollViewport) {\n this.savedVirtualScrollViewport.scrollToIndex(0);\n this.savedVirtualScrollViewport.checkViewportSize();\n }\n }\n\n protected onFocus(): void {\n this.isInputFocus = true;\n\n const inputValue = AutocompleteUtils.isArray(this.inputValue) ? this.inputValue[0] : this.inputValue;\n\n if (AutocompleteUtils.isPrimitive(inputValue)) {\n if (typeof inputValue !== 'number' && inputValue?.match(/^\\s+/gm)) {\n this.inputValue = inputValue.trimStart();\n }\n } else {\n if (inputValue[this.textField]?.match(/^\\s+/gm)) {\n this.inputValue = inputValue[this.textField].trimStart();\n }\n }\n this.focus.emit();\n }\n\n private checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false): void {\n this.isOverLapping = false;\n this.isOverlapChecking = true;\n this.inputOpacity = 0;\n\n setTimeout(() => {\n const inputWidth = this.inputWidth;\n const tags = this.tagContainer?.nativeElement.querySelectorAll('.value-tag');\n if (tags) {\n let width = 0;\n tags.forEach((tag: any, index: number) => {\n width += tag.getBoundingClientRect().width;\n\n const inpWidth = this.formFieldElement?.nativeElement.getBoundingClientRect().width - 20;\n this.firstTagMaxWidth =\n tags.length > 1\n ? inpWidth -\n (this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType)\n ? Padding.DROPDOWN_SPACE_CONTAINER\n : Padding.AUTOCOMPLETE_SPACE_CONTAINER)\n : inpWidth;\n\n if (!this.isOverLapping && width > inputWidth && index > 0) {\n this.isOverLapping = true;\n this.overlapIndex = index;\n }\n });\n this.isOverlapChecking = false;\n if (init) {\n if (this.type === (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else if (this.value?.length) {\n this.inputValue = ' ';\n }\n }\n const tagContainerWidth = this.tagContainer.nativeElement.getBoundingClientRect().width;\n this.tagContainer.nativeElement.style.maxWidth = tagContainerWidth / 100 ? '100%' : `${tagContainerWidth}px`;\n this.cdr.markForCheck();\n }\n this.inputOpacity = 1;\n }, delay);\n }\n\n private onUpdate(): void {\n this.inputValueSearch$.next('');\n this.userInput$.next('');\n if (!this.valuePrimitive) {\n this.onChange(this.value);\n } else {\n if (this.type === (Autocomplete.SINGLE as AutocompleteType)) {\n this.onChange(this.value[this.valueField]);\n } else {\n this.onChange(this.value.map((v: any) => v[this.valueField]));\n }\n }\n this.updateControlMaxLengthValidity();\n this.selectionChange.emit(this.value);\n }\n\n private updateControlMaxLengthValidity(): void {\n const control = this.ngControl?.control;\n if (!control) {\n return;\n }\n\n if (this.type !== (Autocomplete.SINGLE as AutocompleteType)) {\n const existingErrors = control.errors || {};\n\n if (this.value.length > this.maxItemSelected) {\n control.setErrors({\n ...existingErrors,\n maxItemSelected: {\n expected: this.maxItemSelected,\n actual: this.value.length,\n },\n });\n control.markAsTouched();\n } else {\n if (existingErrors['maxItemSelected']) {\n delete existingErrors['maxItemSelected'];\n control.setErrors(Object.keys(existingErrors).length ? existingErrors : null);\n }\n }\n }\n }\n\n private initValue(): void {\n if (\n this.type === (this.autocompleteType.SINGLE as AutocompleteType) &&\n this.variant !== (DropdownVariation.DROPDOWN as DropdownVariationType)\n ) {\n if (AutocompleteUtils.isArray(this.value)) {\n this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);\n } else {\n this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';\n }\n } else if (this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType)) {\n this.inputValue =\n (AutocompleteUtils.isArray(this.value) && !this.value?.length) || !this.value\n ? ''\n : this.type === (Autocomplete.SINGLE as AutocompleteType)\n ? AutocompleteUtils.transformDisplayValue(\n AutocompleteUtils.isArray(this.value) ? this.value[0] : this.value,\n this.textField\n )\n : ' ';\n } else {\n this.inputValue = this.value && this.value.length ? ' ' : '';\n }\n if (this.type === (this.autocompleteType.MULTI as AutocompleteType)) {\n this.checkOverlap();\n }\n }\n\n private addNewValue(newValue: any): void {\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType) && !this.value) {\n this.value = [];\n }\n\n const foundDuplicate = this.compareWith\n ? this.value.find((v: any) => this.compareWith(v, newValue))\n : AutocompleteUtils.findDuplicate(this.value, newValue, this.textField);\n\n if (this.type !== (this.autocompleteType.SINGLE as AutocompleteType)) {\n this.value = foundDuplicate\n ? this.value.filter((v: any) =>\n this.compareWith ? !this.compareWith(v, foundDuplicate) : v !== foundDuplicate\n )\n : [...this.value, newValue];\n } else {\n this.value = newValue;\n }\n }\n\n protected get isDropdown(): boolean {\n return this.variant === (DropdownVariation.DROPDOWN as DropdownVariationType);\n }\n\n protected onChevronClick(autocomplete: MatAutocomplete): void {\n if (autocomplete.isOpen) {\n setTimeout(() => {\n this.autocomplete.closePanel();\n }, 0);\n }\n }\n\n protected get inputWidth(): number {\n return (\n this.formFieldElement?.nativeElement.getBoundingClientRect().width -\n (this.isDropdown ? Padding.DROPDOWN_CONTAINER : Padding.AUTOCOMPLETE_CONTAINER)\n );\n }\n\n protected trackByFn = (index: number, value: string) => value;\n\n /**\n * Adding company color variable to the body to style overlay container that's out of the component scope.\n */\n private setCompanyColorVariable(): void {\n document.body.style.setProperty('--ui-autocomplete-option-color', `${this.companyColor}`);\n }\n\n private subscriberDisplayChange(): void {\n const autocompleteHostElement = this.el.nativeElement;\n\n this.observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName === 'style') {\n const displayStyle = getComputedStyle(autocompleteHostElement).display;\n if (displayStyle !== 'none') {\n this.checkOverlap();\n }\n }\n });\n });\n\n this.observer.observe(autocompleteHostElement, {\n attributes: true,\n attributeFilter: ['style'],\n });\n }\n\n protected get hasObjectValue(): boolean {\n return this.value ? !!Object.keys(this.value).length : false;\n }\n\n onKeydown($event: KeyboardEvent) {\n const optionHeight = 48;\n\n if ($event.key === (IKeyboardEvent.HOME as string)) {\n this.matAutocomplete._keyManager.setFirstItemActive();\n } else if ($event.key === (IKeyboardEvent.END as string)) {\n this.matAutocomplete._keyManager.setLastItemActive();\n } else if ($event.key === (IKeyboardEvent.PAGE_DOWN as string)) {\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n this.matAutocomplete._keyManager.setNextItemActive();\n } else if ($event.key === (IKeyboardEvent.PAGE_UP as string)) {\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n this.matAutocomplete._keyManager.setPreviousItemActive();\n }\n\n this.matAutocomplete._setScrollTop((this.matAutocomplete._keyManager.activeItemIndex ?? 0) * optionHeight);\n }\n\n protected getVirtualScrollHeight(itemCount: number): number {\n const itemHeight = 48;\n const maxHeight = 200;\n const minHeight = 48;\n\n const calculatedHeight = itemCount * itemHeight;\n\n return Math.min(Math.max(calculatedHeight, minHeight), maxHeight);\n }\n}\n","<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"\n safeErrors.length ||\n (ngControl?.errors && ngControl?.touched) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n ? 'warn'\n : 'accent'\n \"\n [appearance]=\"'outline'\"\n [ngClass]=\"{\n 'large-size': type === autocompleteType.LARGE,\n 'hide-bottom-content': !showBottomContent,\n 'keyboard-focused': keyboardFocused(),\n 'has-label': !!label,\n }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <span\n style=\"position: absolute; left: -9999px\"\n *ngIf=\"textField ? value?.[textField] : value === inputValue\"\n aria-live=\"polite\"\n >{{ ('SELECTED' | uiTranslate | async) + ' ' + inputValue }}</span\n >\n\n <input\n #trigger=\"matAutocompleteTrigger\"\n #matInput\n [attr.maxlength]=\"maxLength !== null && maxLength !== undefined ? maxLength : null\"\n [uiPreventInput]=\"!allowUserInput\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': value && type === autocompleteType.LARGE, 'no-caret': !allowUserInput }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [attr.aria-label]=\"\n (translationContext + 'SELECTED' | uiTranslate | async) + ' ' + (value | transformItem: textField : true)\n \"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [placeholder]=\"value && value.length ? '' : placeholder\"\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && value) ||\n (!(inputValue && isInputFocus) && value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [style.display]=\"\n (isOverLapping && i > 0 && i >= overlapIndex) || (size === 'small' && value.length > 1) ? 'none' : 'block'\n \"\n [ngStyle]=\"{ '--tag-max-width': type === autocompleteType.LARGE ? 'fit-content' : firstTagMaxWidth + 'px' }\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI,\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n @if (size === 'small') {\n <div class=\"selected-count\" *ngIf=\"value.length > 1\">\n {{\n translationContext + 'SELECTED_AMOUNT'\n | uiTranslate: { numberSelected: (value | slice: overlapIndex).length }\n | async\n }}\n </div>\n } @else {\n <div *ngIf=\"value.length > 1 && isOverLapping\" class=\"overlap-count\">\n <ui-tag [applicationTheme]=\"applicationTheme\" [label]=\"'+' + (value.length - overlapIndex)\"></ui-tag>\n </div>\n }\n </div>\n </div>\n\n <ui-icon\n *ngIf=\"\n (clearable && type === autocompleteType.SINGLE && (value?.length || hasObjectValue)) ||\n (type !== autocompleteType.SINGLE &&\n value &&\n value.length > 1 &&\n ((AutocompleteUtils.isPrimitive(value) && value.length) ||\n (!AutocompleteUtils.isPrimitive(value) &&\n ((AutocompleteUtils.isArray(value) && value.length) ||\n (!AutocompleteUtils.isArray(value) && !value.length)))))\n \"\n class=\"remove-selected\"\n [tabIndex]=\"disabled ? -1 : 0\"\n (keydown.enter)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n (keydown.space)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear(); $event.preventDefault(); $event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [attr.aria-label]=\"'COMMON.CLEAR' | uiTranslate | async\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme + ' ' + dropdownPanelClass\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n @if (type !== autocompleteType.MULTI || value?.length < maxItemSelected) {\n <ng-container *ngIf=\"(searchResult$ | async) === false\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"suggestionsList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': suggested | includes: value : valueField }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type !== autocompleteType.SINGLE\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n @if (isGrouped) {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SELECTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type === autocompleteType.SINGLE\"\n >\n <mat-option (mousedown)=\"$event.preventDefault()\" [class]=\"'selected-option'\" [value]=\"value\">\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport\n *ngIf=\"virtualScroll || infiniteScroll; else defaultViewPort\"\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(itemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n\n @if (infiniteScroll && hasMoreOptionsForInfiniteScroll) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n }\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n @if (!isGrouped) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <ng-container *ngIf=\"virtualScroll || infiniteScroll; else filteredWithoutVirtualScroll\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"48\"\n [style.height.px]=\"getVirtualScrollHeight(filteredItemsList.length)\"\n class=\"virtual-scroll\"\n >\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroupVirtual\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroupVirtual>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-template #filteredWithoutVirtualScroll>\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup\n [label]=\"(translationContext + 'SUGGESTED' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\"\n >\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroup\">\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup\n [label]=\"(translationContext + 'ALL_ITEMS' | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\"\n >\n @for (item of filteredItemsList; let idx = $index; track item[valueField] || idx) {\n <mat-option\n (mousedown)=\"$event.preventDefault()\"\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"\n ></ui-icon>\n </mat-option>\n }\n </mat-optgroup>\n </ng-template>\n\n @if (isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if (inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=\"$event.preventDefault()\" [value]=\"inputValue\">\n <span>{{ 'COMMON.ADD' | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </ng-template>\n </ng-container>\n </ng-container>\n }\n </mat-autocomplete>\n <mat-hint\n class=\"error\"\n *ngIf=\"\n safeErrors.length ||\n (ngControl?.errors | hasValidationError) ||\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <div\n class=\"errors\"\n *ngIf=\"\n (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected ||\n ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && inputValue && inputValue !== ' ')\n \"\n >\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ translationContext + 'MAX_SELECTED_ERROR' | uiTranslate: { max: maxItemSelected } | async }}</span>\n </div>\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error\n *ngIf=\"ngControl && !hideBuiltInErrors\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n ></ui-validation-error>\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { TagComponentModule } from '@testgorilla/tgo-ui/components/tag';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { TransformItemPipe } from './transform-Item.pipe';\nimport { IncludesPipe } from './includes.pipe';\nimport { SelectTextDirective } from './select-text.directive';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { ValidationErrorModule } from '@testgorilla/tgo-ui/components/validation-error';\nimport { HasValidationErrorPipe } from '@testgorilla/tgo-ui/components/core';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { PreventInputDirective } from './prevent-input.directive';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\n\n@NgModule({\n declarations: [AutocompleteComponent, TransformItemPipe, IncludesPipe, SelectTextDirective],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n MatInputModule,\n FormsModule,\n TagComponentModule,\n MatChipsModule,\n IconComponentModule,\n UiTranslatePipe,\n ValidationErrorModule,\n HasValidationErrorPipe,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n PreventInputDirective,\n SpinnerComponentModule,\n ],\n exports: [AutocompleteComponent],\n providers: [TransformItemPipe, IncludesPipe, SelectTextDirective],\n})\nexport class AutocompleteComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i11.PreventInputDirective","i13.SelectTextDirective","i15.TransformItemPipe","i16.IncludesPipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEY;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;IAMZ;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAA2B;AAC3B,IAAA,OAAA,CAAA,OAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAuB;AACvB,IAAA,OAAA,CAAA,OAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAAiC;AACjC,IAAA,OAAA,CAAA,OAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAA6B;AAC/B,CAAC,EALW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;AAOZ,MAAM,gBAAgB,GAAG;IAEpB;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,+BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,+BAAmC;AACnC,IAAA,OAAA,CAAA,OAAA,CAAA,iCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iCAAqC;AACvC,CAAC,EAHW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;IAKP;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;MChBhB,qBAAqB,CAAA;AAGhC,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG;YAClB,WAAW;YACX,YAAY;YACZ,SAAS;YACT,WAAW;YACX,WAAW;YACX,KAAK;YACL,QAAQ;YACR,SAAS;YACT,OAAO;YACP,KAAK;SACN;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/F,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;+GAnBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;8BAEU,cAAc,EAAA,CAAA;sBAAtB;gBAED,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACNrC;;AAEG;MAKU,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAA,CAAA,EAAE,GAAF,EAAE;IAAe;AAErC;;;;AAIG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAA4B;QACxD,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;gBAClC,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CACzC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAClC,KAAK,IAAI,CAAA,iCAAA,EAAoC,KAAK,CAAA,OAAA,CAAS,CAC5D;YACH;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;+GA3BW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;+EAEU,UAAU,EAAA,CAAA;sBAAlB;;;ACPH;;;AAGG;MAKU,iBAAiB,CAAA;AAC5B,IAAA,SAAS,CAAC,KAAU,EAAE,KAAa,EAAE,eAAwB,KAAK,EAAA;QAChE,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK;kBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACvD,kBAAE;AACA,sBAAE,KAAK,GAAG,KAAK;sBACb,KAAK;QACb;AAEA,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;aAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChG,YAAA,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C;aAAO;YACL,iBAAiB,CAAC,sBAAsB,EAAE;QAC5C;IACF;+GAjBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;ACRD;;;;AAIG;MAKU,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAW,EAAE,UAAmB,EAAA;AACpD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AACzB,cAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,KAAK,GAAG,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAC1F,cAAE;kBACE,KAAK,GAAG,UAAU,CAAC,KAAK,MAAM,GAAG,UAAU;AAC7C,kBAAE,KAAK,KAAK,MAAM;IACxB;+GAPW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;AC0CD;MACa,qBAAqB,CAAA;AA2DhC;;;;AAIG;IACH,IAAa,SAAS,CAAC,CAAM,EAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;IAC9D;AAoEA;;;;;AAKG;IACH,IAAa,MAAM,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;IACjD;IAoIA,IAA4D,wBAAwB,CAClF,QAAkC,EAAA;AAElC,QAAA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,YAAA,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE;QACnD;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,0BAA0B,GAAG,QAAQ;AAE1C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC3D,wBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW;AACzC,oBAAA,CAAC,CAAC;gBACJ,CAAC,EAAE,CAAC,CAAC;AAEL,gBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;AACxC,qBAAA,eAAe;qBACf,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EACxE,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,EAClF,YAAY,CAAC,GAAG,CAAC,EACjB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;qBAEpC,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,wBAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE;oBACjD;yBAAO;AACL,wBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;oBACzC;AACF,gBAAA,CAAC,CAAC;YACN;QACF;IACF;AAqDA,IAAA,WAAA,CAC6E,eAAiC,EAC3F,GAAsB,EACZ,SAAoB,EACT,UAAe,EACpC,EAAc,EACd,YAA0B,EAC1B,UAAsB,EACtB,MAAc,EAAA;QAP4C,IAAA,CAAA,eAAe,GAAf,eAAe;QACzE,IAAA,CAAA,GAAG,GAAH,GAAG;QACO,IAAA,CAAA,SAAS,GAAT,SAAS;QACE,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;AA9WzB;;;;AAIG;QACM,IAAA,CAAA,SAAS,GAAoE,EAAE;AAExF;;;;AAIG;QACM,IAAA,CAAA,eAAe,GAAU,EAAE;AAEpC;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEzB;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,IAAI;AAExB;;;;AAIG;QACM,IAAA,CAAA,SAAS,GAAG,EAAE;AAEvB;;;;AAIG;QACM,IAAA,CAAA,UAAU,GAAG,EAAE;AAExB;;;;AAIG;QACM,IAAA,CAAA,KAAK,GAAG,EAAE;AAEnB;;;;AAIG;QACM,IAAA,CAAA,WAAW,GAAG,EAAE;AAWzB;;;;AAIG;QACM,IAAA,CAAA,IAAI,GAAqB,OAAO;AAEzC;;;;AAIG;QACM,IAAA,CAAA,mBAAmB,GAAG,CAAC;AAEhC;;;;AAIG;AACwB,QAAA,IAAA,CAAA,OAAO,GAA0B,iBAAiB,CAAC,YAAY;AAE1F;;;;;AAKG;QACM,IAAA,CAAA,iBAAiB,GAAG,IAAI;AAEjC;;;;;AAKG;QACM,IAAA,CAAA,cAAc,GAAG,KAAK;AAE/B;;;;;AAKG;QAGH,IAAA,CAAA,SAAS,GAAG,KAAK;AAEjB;;;;;;AAMG;QAGH,IAAA,CAAA,gBAAgB,GAAqB,OAAO;AAoB5C;;;;;;AAMG;QACM,IAAA,CAAA,YAAY,GAAkB,SAAS;AAEhD;;;;;AAKG;QACM,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAElC;;;;;AAKG;QACM,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAElC;;;;;AAKG;QACqC,IAAA,CAAA,aAAa,GAAG,KAAK;AAS7D;;;;AAIG;QACM,IAAA,CAAA,kBAAkB,GAAG,EAAE;AAEhC;;;;AAIG;QACM,IAAA,CAAA,aAAa,GAAG,KAAK;AAE9B;;;;AAIG;QACM,IAAA,CAAA,IAAI,GAAqB,QAAQ;AAE1C;;;;;AAKG;QACM,IAAA,CAAA,cAAc,GAAG,IAAI;AAE9B;;;;;AAKG;QACM,IAAA,CAAA,SAAS,GAAG,IAAI;AAEzB;;;;;AAKG;QACM,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAEhC;;;;;AAKG;QACM,IAAA,CAAA,eAAe,GAAG,QAAQ;QAU1B,IAAA,CAAA,yBAAyB,GAAG,KAAK;QACjC,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,mBAAmB,GAAiB,IAAI;QAExC,IAAA,CAAA,cAAc,GAAG,KAAK;QACtB,IAAA,CAAA,+BAA+B,GAAG,IAAI;AAErC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAC7C,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAE1C;;;;AAIG;AACO,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAQ;AAEhE;;;;AAIG;AACO,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,YAAY,EAAQ;QA2C9D,IAAA,CAAA,UAAU,GAAa,EAAE;QAEzB,IAAA,CAAA,UAAU,GAAQ,EAAE;QACpB,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,gBAAgB,GAAG,YAAY;QAC/B,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,YAAY,GAAG,CAAC;QAChB,IAAA,CAAA,YAAY,GAAG,CAAC;QAChB,IAAA,CAAA,gBAAgB,GAAG,CAAC;AACpB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;QAC9D,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACxD,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC;AACT,cAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1F,cAAE,IAAI,CACT,CACF;AACS,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC7D,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAC3G,CACF;QAGS,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAU,KAAU;AACjC,YAAA,MAAM,uBAAuB,GAC3B,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC;gBAChD,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC;gBAC/D,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,8BAA8B,CAAC;YAEpE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,uBAAuB,EAAE;AAC1D,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAChC;AACF,QAAA,CAAC;QAES,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAA,CAAA,kBAAkB,GAAG,eAAe;QAC3B,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEtD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;QAClD,IAAA,CAAA,cAAc,GAAG,KAAK;AA+FtB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,EAAE,CAAC;QAsUR,IAAA,CAAA,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,KAAK,KAAK;AA1Z3D,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;QAEA,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QACzC;QAEA,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB;QACrD;IACF;AAEA;;;AAGG;;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,EAAE,YAAY;YAExE,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACrD;YAEA;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AAC/E,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;kBAClB,IAAI,CAAC;AACP,kBAAE,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/F,IAAI,CAAC,SAAS,EAAE;QAClB;QAEA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC9C,IAAI,CAAC,uBAAuB,EAAE;QAChC;IACF;;IAGA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC,KAA0B,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC;QAClE;AACA,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACjD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC,IAAI,CAAC,QAAQ;AACrB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;QACjD,CAAC,CAAC,CACH;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IACnE;;IAGA,WAAW,GAAA;QACT,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QAC5B;IACF;AAKA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACnB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YAC5D,IAAI,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC,MAA2B,EAAE;gBAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC;YAC3E;iBAAO;gBACL,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK;AAC1C,sBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;sBACjF,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC;gBAClE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;YACpE;QACF;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACpB;QAEA,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC;IAC1D;AAEU,IAAA,gBAAgB,CAAC,KAAmC,EAAA;AAC5D,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AACrC,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;AAChG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,KAA0B,EAAE;YACnE,IAAI,CAAC,YAAY,EAAE;QACrB;QAEA,cAAc,CAAC,MAAK;YAClB,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B,EAAE;AACpE,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;YACtB;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;YACvF;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEU,IAAA,eAAe,CAAC,MAAW,EAAA;AACnC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;QAE/G,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;YAC5G,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;oBAC5C,MAAM,CAAC,QAAQ,EAAE;gBACnB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,KAA0B,EAAE;YACnE,IAAI,CAAC,YAAY,EAAE;QACrB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACtB;QAEA,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACjD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAExG,YAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAC3D,CAAC,IAAI,UAAU,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAC7D;YACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,kBAAkB,CAChD,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,EACtC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CACf;YACD,IAAI,SAAS,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAkC,CAAC;YACzF;QACF;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B;QACA,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC;cAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC;AAC7D,cAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5D,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE;IAChB;IAEU,WAAW,GAAA;QACnB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACtG,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;YACvF;iBAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;YACvB;iBAAO,IACL,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC,MAA2B;AACvD,gBAAA,IAAI,CAAC,KAAK;gBACV,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAC9B;AACA,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CACvD,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAClE,IAAI,CAAC,SAAS,CACf;YACH;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;YACvB;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACzB,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAClB,CAAC,EAAE,CAAC,CAAC;IACP;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE;QACrD;IACF;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAExB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU;AAEpG,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AAC7C,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE;YAC1C;QACF;aAAO;AACL,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;YAC1D;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB;IAEQ,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,6BAA6B,EAAE,IAAI,GAAG,KAAK,EAAA;AAC9E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAC5E,IAAI,IAAI,EAAE;gBACR,IAAI,KAAK,GAAG,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,KAAa,KAAI;AACvC,oBAAA,KAAK,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAE1C,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,EAAE;AACxF,oBAAA,IAAI,CAAC,gBAAgB;wBACnB,IAAI,CAAC,MAAM,GAAG;AACZ,8BAAE,QAAQ;AACR,iCAAC,IAAI,CAAC,OAAO,KAAM,iBAAiB,CAAC;sCACjC,OAAO,CAAC;AACV,sCAAE,OAAO,CAAC,4BAA4B;8BACxC,QAAQ;AAEd,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE;AAC1D,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;oBAC3B;AACF,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;gBAC9B,IAAI,IAAI,EAAE;oBACR,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B,EAAE;AACpE,wBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC1F;AAAO,yBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AAC7B,wBAAA,IAAI,CAAC,UAAU,GAAG,GAAG;oBACvB;gBACF;AACA,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;gBACvF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,GAAG,GAAG,GAAG,MAAM,GAAG,CAAA,EAAG,iBAAiB,CAAA,EAAA,CAAI;AAC5G,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QACvB,CAAC,EAAE,KAAK,CAAC;IACX;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B;aAAO;YACL,IAAI,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC,MAA2B,EAAE;AAC3D,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/D;QACF;QACA,IAAI,CAAC,8BAA8B,EAAE;QACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;IAEQ,8BAA8B,GAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QAEA,IAAI,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC,MAA2B,EAAE;AAC3D,YAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE;YAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC;AAChB,oBAAA,GAAG,cAAc;AACjB,oBAAA,eAAe,EAAE;wBACf,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,wBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AAC1B,qBAAA;AACF,iBAAA,CAAC;gBACF,OAAO,CAAC,aAAa,EAAE;YACzB;iBAAO;AACL,gBAAA,IAAI,cAAc,CAAC,iBAAiB,CAAC,EAAE;AACrC,oBAAA,OAAO,cAAc,CAAC,iBAAiB,CAAC;oBACxC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;gBAC/E;YACF;QACF;IACF;IAEQ,SAAS,GAAA;QACf,IACE,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B;AAChE,YAAA,IAAI,CAAC,OAAO,KAAM,iBAAiB,CAAC,QAAkC,EACtE;YACA,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;YAC1F;iBAAO;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YACzG;QACF;aAAO,IAAI,IAAI,CAAC,OAAO,KAAM,iBAAiB,CAAC,QAAkC,EAAE;AACjF,YAAA,IAAI,CAAC,UAAU;gBACb,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC;AACtE,sBAAE;AACF,sBAAE,IAAI,CAAC,IAAI,KAAM,YAAY,CAAC;AAC5B,0BAAE,iBAAiB,CAAC,qBAAqB,CACrC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAClE,IAAI,CAAC,SAAS;0BAEhB,GAAG;QACb;aAAO;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;QAC9D;QACA,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,KAA0B,EAAE;YACnE,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEQ,IAAA,WAAW,CAAC,QAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnF,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACjB;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;cACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3D,cAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QAEzE,IAAI,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,gBAAgB,CAAC,MAA2B,EAAE;YACpE,IAAI,CAAC,KAAK,GAAG;AACX,kBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,KACvB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,cAAc;kBAEhF,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;QACvB;IACF;AAEA,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAM,iBAAiB,CAAC,QAAkC;IAC/E;AAEU,IAAA,cAAc,CAAC,YAA6B,EAAA;AACpD,QAAA,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAChC,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAClE,aAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAEnF;AAIA;;AAEG;IACK,uBAAuB,GAAA;AAC7B,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC;IAC3F;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAErD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AAC/C,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;oBACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,OAAO;AACtE,oBAAA,IAAI,YAAY,KAAK,MAAM,EAAE;wBAC3B,IAAI,CAAC,YAAY,EAAE;oBACrB;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE;AAC7C,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,SAAA,CAAC;IACJ;AAEA,IAAA,IAAc,cAAc,GAAA;QAC1B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK;IAC9D;AAEA,IAAA,SAAS,CAAC,MAAqB,EAAA;QAC7B,MAAM,YAAY,GAAG,EAAE;QAEvB,IAAI,MAAM,CAAC,GAAG,KAAM,cAAc,CAAC,IAAe,EAAE;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,kBAAkB,EAAE;QACvD;aAAO,IAAI,MAAM,CAAC,GAAG,KAAM,cAAc,CAAC,GAAc,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;QACtD;aAAO,IAAI,MAAM,CAAC,GAAG,KAAM,cAAc,CAAC,SAAoB,EAAE;AAC9D,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE;QACtD;aAAO,IAAI,MAAM,CAAC,GAAG,KAAM,cAAc,CAAC,OAAkB,EAAE;AAC5D,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE;QAC1D;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,IAAI,YAAY,CAAC;IAC5G;AAEU,IAAA,sBAAsB,CAAC,SAAiB,EAAA;QAChD,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,SAAS,GAAG,GAAG;QACrB,MAAM,SAAS,GAAG,EAAE;AAEpB,QAAA,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU;AAE/C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;IACnE;+GA10BW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA0WV,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAGhD,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7WV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EA+KZ,gBAAgB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,mCAAA,EAAA,qCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmGzB,wBAAwB,8PCvUrC,kh/BAqnBA,EAAA,MAAA,EAAA,CAAA,w0RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDhkBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,kh/BAAA,EAAA,MAAA,EAAA,CAAA,w0RAAA,CAAA,EAAA;;0BA6Wd;;0BAAY,MAAM;2BAAC,oCAAoC;;0BAEvD;;0BAAY;;0BACZ,MAAM;2BAAC,WAAW;2IArWZ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,eAAe,EAAA,CAAA;sBAAvB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBAOY,SAAS,EAAA,CAAA;sBAArB;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAO0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAQhB,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAUD,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,kBAAkB;;sBAC9B;gBAYD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQY,MAAM,EAAA,CAAA;sBAAlB;gBAWQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQuC,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAO7B,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,yBAAyB,EAAA,CAAA;sBAAjC;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,+BAA+B,EAAA,CAAA;sBAAvC;gBAES,eAAe,EAAA,CAAA;sBAAxB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,IAAI,EAAA,CAAA;sBAAb;gBACS,KAAK,EAAA,CAAA;sBAAd;gBAOS,2BAA2B,EAAA,CAAA;sBAApC;gBAOS,mCAAmC,EAAA,CAAA;sBAA5C;gBAEuB,gBAAgB,EAAA,CAAA;sBAAvC,SAAS;uBAAC,WAAW;gBACK,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc;gBACH,YAAY,EAAA,CAAA;sBAAjC,SAAS;uBAAC,SAAS;gBACwC,wBAAwB,EAAA,CAAA;sBAAnF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAmC3B,eAAe,EAAA,CAAA;sBAAzC,SAAS;uBAAC,cAAc;gBACF,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;;;MEhUV,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA3B,2BAA2B,EAAA,YAAA,EAAA,CAtBvB,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAExF,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,wBAAwB;YACxB,yBAAyB;YACzB,qBAAqB;AACrB,YAAA,sBAAsB,aAEd,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAGpB,2BAA2B,EAAA,SAAA,EAF3B,CAAC,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,OAAA,EAAA,CAlB/D,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YAEnB,qBAAqB;YAGrB,wBAAwB;YAGxB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAKb,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvBvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC;AAC3F,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,cAAc;wBACd,WAAW;wBACX,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,eAAe;wBACf,wBAAwB;wBACxB,yBAAyB;wBACzB,qBAAqB;wBACrB,sBAAsB;AACvB,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,CAAC;AAClE,iBAAA;;;AC1CD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-button.mjs","sources":["../../../components/button/color-contrast.ts","../../../components/button/button.component.ts","../../../components/button/button.component.html","../../../components/button/button.component.module.ts","../../../components/button/testgorilla-tgo-ui-components-button.ts"],"sourcesContent":["/**\n * Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).\n * Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.\n * Used to manage different colors based on application configuration\n *\n * @param hexColor color in hex format\n * @param typeEvent interaction event\n * @param theme\n */\nexport const adjustLightness = (\n hexColor: string,\n typeEvent: 'hover' | 'pressed' | 'disabled',\n theme: 'new' | 'classic' = 'new'\n): string => {\n const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;\n if (hexColor && !hexRegex.test(hexColor)) {\n throw new Error('Invalid HEX color format');\n }\n\n const hslColor = hexToHsl(hexColor);\n const lightness = hslColor.l * 100;\n\n if (theme === 'new') {\n if (lightness > 70 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n }\n } else {\n if (lightness > 70 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness > 70 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness < 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l + 30 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness > 70 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 50 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 20 / 100);\n }\n }\n\n return hslToHex(hslColor);\n};\n\n/**\n * Transforms hex color to HSL in object variation.\n * @param hexColor string value with hex color\n */\nexport const hexToHsl = (hexColor: string): { h: number; s: number; l: number } => {\n const rgbColor = parseInt(hexColor.slice(1), 16);\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = 0;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // grayscale\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, l };\n};\n\n/**\n * Transforms HSL color, represented as an object and transforms it to hex string.\n * @param hslColor accepts the HSL color like an object.\n */\nexport const hslToHex = (hslColor: { h: number; s: number; l: number }): string => {\n const { h, s, l } = hslColor;\n\n const hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n const r = hueToRgb(p, q, h + 1 / 3);\n const g = hueToRgb(p, q, h);\n const b = hueToRgb(p, q, h - 1 / 3);\n\n const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);\n\n return `#${rgbColor.toString(16).padStart(6, '0')}`;\n};\n\n/**\n * Restricts the value to be within the range [0, 1].\n * @param value\n */\nconst clamp = (value: number): number => Math.min(Math.max(value, 0), 1);\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { TooltipPosition } from '@angular/material/tooltip';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport {\n ButtonBadgeConfig,\n ButtonColor,\n ButtonIconPosition,\n ButtonSize,\n ButtonState,\n ButtonType,\n IconButtonSize,\n LinkUrlTarget,\n} from './button.model';\nimport { adjustLightness } from './color-contrast';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false,\n})\nexport class ButtonComponent implements OnInit, AfterViewInit {\n @HostBinding('style.pointer-events')\n get enabled(): string {\n return this.disabled ? 'none' : 'all';\n }\n\n @ViewChild('tooltipElement') tooltipElement: ElementRef<HTMLElement>;\n\n /**\n * Define button height\n *\n * @type {ButtonSize}\n * @memberof ButtonComponent\n */\n @Input() size: ButtonSize = 'big';\n /**\n * Background color of the button while in active state\n *\n * @type {ButtonColor}\n * @memberof ButtonComponent\n */\n @HostBinding('attr.btn-variant')\n @Input()\n variant: ButtonColor = 'primary';\n\n /**\n * Text content to appear on the button\n *\n * @memberof ButtonComponent\n */\n @Input() label = '';\n\n /**\n * Positioning of the icon (when existant)\n *\n * @type {ButtonIconPosition}\n * @memberof ButtonComponent\n */\n @Input() iconPosition?: ButtonIconPosition = 'right';\n\n /**\n * Define if button has only icon without text\n *\n * @memberof ButtonComponent\n */\n @Input() justIcon = false;\n\n /**\n * Name of ui-icon\n *\n * @type {IconName}\n * @memberof ButtonComponent\n */\n @Input() iconName: IconName | undefined;\n\n /**\n * Indicator if the button should be disabled\n *\n * @memberof ButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * Indicator if the loading icon should be shown\n *\n * @memberof ButtonComponent\n */\n @Input() loading = false;\n\n /**\n * Indicator of the button width\n *\n * @memberof ButtonComponent\n */\n @Input() fullWidth = false;\n\n /**\n * Url of button if it is a link\n *\n * @memberof ButtonComponent\n */\n @Input() url?: string;\n\n /**\n * Url's target of button if it is a link\n *\n * @type {@type {LinkUrlTarget}}\n * @memberof ButtonComponent\n */\n @Input() urlTarget?: LinkUrlTarget;\n\n /**\n * Button value\n *\n * @memberof ButtonComponent\n */\n @Input() value?: string;\n\n /**\n * @property tooltip\n * @description The tooltip that is displayed on hover. Required for icon-button type\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() tooltip = '';\n\n /**\n * @property isPremium\n * @description The icon that is displayed for Premium button\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() isPremium = false;\n\n /**\n * The type of the button.\n *\n * @type {ButtonType}\n * @memberof ButtonComponent\n * @default 'button'\n */\n @Input() type: ButtonType = 'button';\n\n /**\n * Color of the button.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() companyColor: string | null = '';\n\n /**\n * Config for the button badge variation\n * @type {ButtonBadgeConfig}\n * @property badgeType Type of badge on the button\n * @property badgeLabel Label text for the badge\n * @property badgeNotificationAmount The amount for notification in the badge\n */\n @Input() buttonBadgeConfig: ButtonBadgeConfig | undefined;\n\n /**\n *\n * Defines the application theme where buttons is used\n *\n * @type {ApplicationTheme}\n * @memberof ButtonComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Disabled button scale on click\n *\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() disabledScaleOnClick = false;\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Prevents default button click behavior\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input({ transform: booleanAttribute }) preventDefault = false;\n\n /**\n * Ghost variant with white background\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input({ transform: booleanAttribute }) hasBackground = false;\n\n /**\n * Sets tooltip position\n *\n * @type {TooltipPosition}\n * @memberof ButtonComponent\n */\n @Input() tooltipPosition: TooltipPosition = 'below';\n\n @Input() role = 'button';\n\n @Input() iconFilled = false;\n\n @Output() buttonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @Output() buttonHoverEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('buttonElement', { static: false }) buttonElement: MatButton;\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n @HostBinding('style.--color')\n get compColor() {\n return this.getCompanyColor;\n }\n\n classCss: string;\n styleCss: any;\n isButtonLink: boolean;\n isLabel: boolean;\n buttonState: ButtonState;\n hover = false;\n iconButtonSize: IconButtonSize = '40';\n allowButtonTypeForPremium: ButtonColor[] = [\n 'secondary',\n 'secondary-inverted',\n 'primary',\n 'ghost',\n 'outlined',\n 'destructive',\n ];\n isFilledIcon: boolean;\n coloredIcons = ['Google-in-line', 'Google', 'Google-filled'];\n labelEllipsis = false;\n icon: IconName = '';\n\n private static nextAriaLabelledId = 0;\n ariaLabelledbyId = '';\n\n get typeIncluded(): boolean {\n return this.allowButtonTypeForPremium.includes(this.variant);\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.classCss = this.setCssClass();\n this.styleCss = this.setCssStyle();\n this.isButtonLink = this.showButtonLink();\n this.isLabel = this.showLabel();\n this.createAriaLabelledById();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['disabled']) {\n this.buttonState = 'default';\n }\n if (!this.applicationTheme) {\n this.applicationTheme = 'light';\n }\n if (changes['type']) {\n this.isButtonLink = this.showButtonLink();\n }\n if (changes['loading']) {\n this.isLabel = this.showLabel();\n }\n if (changes['iconName']) {\n this.icon = changes['iconName'].currentValue;\n }\n if (\n changes['type'] ||\n changes['fullWidth'] ||\n changes['iconName'] ||\n changes['justIcon'] ||\n changes['iconPosition'] ||\n changes['disabled'] ||\n changes['companyColor'] ||\n changes['variant'] ||\n changes['applicationTheme']\n ) {\n this.classCss = this.setCssClass();\n this.styleCss = this.setCssStyle();\n }\n if (\n changes['variant']?.currentValue === 'icon-button' ||\n (changes['variant']?.currentValue === 'menuTrigger' && this.applicationTheme !== 'classic')\n ) {\n this.iconButtonSize = this.setIconButtonSize();\n }\n\n this.isFilledIcon =\n this.applicationTheme !== 'classic' &&\n (this.variant === 'primary' || this.variant === 'secondary' || this.variant === 'secondary-inverted');\n }\n\n ngAfterViewInit(): void {\n this.tooltipElement.nativeElement.onclick = ev => {\n ev.preventDefault();\n ev.stopPropagation();\n };\n }\n\n buttonClick(event: Event): void {\n if (this.preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.buttonClickEvent.emit(event);\n }\n\n buttonHover(event: Event): void {\n if (event.type === 'mouseenter') {\n this.hover = true;\n this.buttonHoverEvent.emit(event);\n this.buttonState = 'hover';\n if (this.shouldChangeFilledStatus && this.icon) {\n this.icon = this.getIconName(this.iconName as IconName, '-filled');\n }\n } else {\n this.hover = false;\n if (this.shouldChangeFilledStatus && this.icon) {\n this.icon = this.iconName as IconName;\n }\n this.buttonState = 'default';\n }\n\n this.styleCss = this.setCssStyle();\n }\n\n //Show or hide label\n showLabel(): boolean {\n return !this.loading;\n }\n\n //Set css class according inputs\n setCssClass(): string {\n const width = this.fullWidth ? 'full-width' : '';\n const hasIcon = this.iconName === null ? '' : 'icon';\n const justIcon = this.justIcon || this.variant === 'icon-button' ? 'only-icon' : '';\n const iconPosition = this.iconPosition === undefined ? '' : this.iconPosition;\n const disabled = this.disabled && this.variant === 'primary' ? 'primary-disabled' : '';\n const variant = this.variant === 'ghost' && this.applicationTheme === 'classic' ? 'outlined' : this.variant;\n const companyColor = this.companyColor ? 'has-company-color' : '';\n return `${this.size} ${iconPosition} ${variant} ${width} ${hasIcon} ${justIcon} ${disabled} ${companyColor} ${this.applicationTheme}-theme`;\n }\n\n setCssStyle(): any {\n this.buttonState = this.disabled ? 'disabled' : this.buttonState;\n const styleObj: any = {};\n\n if (\n (this.variant === 'primary' || this.variant === 'text' || this.variant === 'text-inline') &&\n this.applicationTheme !== 'classic' &&\n (this.buttonState === 'hover' || this.buttonState === 'pressed')\n ) {\n styleObj[this.variant === 'primary' ? 'background-color' : 'color'] = adjustLightness(\n this.getCompanyColor,\n this.buttonState\n );\n if (this.variant === 'text' || this.variant === 'text-inline') {\n styleObj['--active-color'] = this.companyColor\n ? adjustLightness(this.getCompanyColor, this.buttonState)\n : '#666666';\n }\n } else if (\n (this.variant === 'primary' || this.variant === 'text' || this.variant === 'text-inline') &&\n this.applicationTheme === 'classic' &&\n this.buttonState !== 'default'\n ) {\n styleObj[this.variant === 'primary' ? 'background-color' : 'color'] = adjustLightness(\n this.getCompanyColor,\n this.buttonState,\n 'classic'\n );\n } else if (\n this.getCompanyColor &&\n (this.variant === 'link' || this.variant === 'tertiary' || this.variant === 'icon-button')\n ) {\n styleObj.color = this.getCompanyColor;\n } else if (this.hasBackground) {\n styleObj['--ghost-background'] = '#ffffff';\n }\n return styleObj;\n }\n\n //Show or hide spinner\n get showSpinner(): boolean {\n const isNotTab = this.variant !== 'tab';\n const isNotLink = this.variant !== 'link';\n const isLoading = this.loading === true;\n return isLoading && isNotTab && isNotLink;\n }\n\n //Show button with <button> or <a> tag\n showButtonLink(): boolean {\n return this.variant !== 'link';\n }\n\n setIconButtonSize(): IconButtonSize {\n return this.size === 'big' ? '40' : this.size === 'small' ? '24' : '32';\n }\n\n onPressed(ev: Event): void {\n if (ev.type === 'mousedown') {\n this.buttonState = 'pressed';\n } else {\n this.buttonState = this.hover ? 'hover' : 'default';\n }\n\n this.styleCss = this.setCssStyle();\n }\n\n focus(origin?: FocusOrigin): void {\n this.buttonElement.focus(origin);\n }\n\n get getCompanyColor(): string {\n return (\n this.companyColor ||\n (this.variant === 'text' || this.variant === 'text-inline'\n ? this.applicationTheme === 'dark'\n ? '#ffffff'\n : '#242424'\n : this.applicationTheme === 'classic'\n ? '#46A997'\n : '#D410AA')\n );\n }\n\n get shouldChangeFilledStatus(): boolean {\n return (\n this.applicationTheme !== 'classic' &&\n this.variant !== 'primary' &&\n this.variant !== 'secondary' &&\n !this.coloredIcons.includes(this.icon)\n );\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === ' ') {\n event.preventDefault();\n const target = event.target as HTMLElement;\n target.click();\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n this.buttonState = 'pressed';\n this.styleCss = this.setCssStyle();\n }\n }\n\n onKeyup(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n this.buttonState = this.hover ? 'hover' : 'default';\n this.styleCss = this.setCssStyle();\n }\n }\n\n onLabelEllipsisChange(state: boolean): void {\n this.labelEllipsis = state;\n }\n\n getIconName(iconName: string, defaultValue: string): IconName {\n if (iconName.includes('filled')) {\n return iconName.replace(/filled/, 'in-line') as IconName;\n } else if (iconName.includes('in-line')) {\n return iconName.replace(/in-line/, 'filled') as IconName;\n } else {\n return (iconName + defaultValue) as IconName;\n }\n }\n\n private createAriaLabelledById(): void {\n const labelledByValue = this.variant === 'link' ? 'labelledby-link' : 'labelledby';\n this.ariaLabelledbyId = `${labelledByValue}-uiButton-${++ButtonComponent.nextAriaLabelledId}`;\n }\n}\n","<div\n #tooltipElement\n class=\"tooltip\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n></div>\n<div\n class=\"button-wrapper\"\n [ngClass]=\"{\n 'full-width': fullWidth,\n 'rounded-icon': applicationTheme !== 'classic' && icon && !label,\n link: !isButtonLink,\n }\"\n>\n <div\n class=\"button-container\"\n [ngClass]=\"{\n disabled: disabled,\n 'button-scale': buttonState === 'pressed' && applicationTheme !== 'classic' && !disabledScaleOnClick,\n }\"\n >\n <span *ngIf=\"isPremium && typeIncluded\" class=\"right-top\">\n <img [attr.src]=\"'/images/premium.svg'\" [alt]=\"'premium-icon'\" />\n </span>\n <ui-badge\n id=\"badge\"\n *ngIf=\"buttonBadgeConfig?.badgeType\"\n [rebrandColor]=\"buttonBadgeConfig?.rebrandColor ?? 'brand'\"\n [variant]=\"buttonBadgeConfig!.badgeType!\"\n [label]=\"buttonBadgeConfig?.badgeLabel ?? ''\"\n [notificationsAmount]=\"buttonBadgeConfig?.badgeNotificationAmount ?? 0\"\n class=\"right-top\"\n [ngClass]=\"[\n buttonBadgeConfig?.badgeType === 'primary' ? 'badge-primary' : '',\n buttonBadgeConfig?.badgeType === 'notification' ? 'badge-notification' : '',\n variant,\n ]\"\n ></ui-badge>\n <button\n [style]=\"'--icon-button-size:' + iconButtonSize + 'px'\"\n [ngClass]=\"classCss\"\n [ngStyle]=\"styleCss\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick($event)\"\n (mouseleave)=\"buttonHover($event)\"\n (mouseenter)=\"buttonHover($event)\"\n (mousedown)=\"onPressed($event)\"\n (mouseup)=\"onPressed($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n *ngIf=\"isButtonLink\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledbyId\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-disabled]=\"disabled\"\n [type]=\"type\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltipPosition]=\"tooltipPosition\"\n #buttonElement\n [attr.role]=\"role\"\n mat-flat-button\n >\n <span id=\"describedby\" [style.display]=\"'none'\">\n {{ isPremium ? label + ' ' + ('BUTTON.PREMIUM_FEATURE' | uiTranslate | async) : ariaDescribedby }}\n </span>\n <span [id]=\"ariaLabelledbyId\" [style.display]=\"'none'\">\n {{ ariaLabelledby }}\n </span>\n <ng-container *ngIf=\"showSpinner; else icons\">\n <span class=\"spinner-wrapper\">\n <mat-spinner class=\"position-spinner\" aria-label=\"loading\" mode=\"indeterminate\" diameter=\"24\"></mat-spinner>\n </span>\n </ng-container>\n <ng-template #icons>\n <span class=\"icon-only-wrapper\" *ngIf=\"justIcon && !!icon\">\n <span class=\"icon only\" role=\"label\">\n <ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n [size]=\"size === 'small' ? '16' : '24'\"\n ></ui-icon>\n </span>\n </span>\n\n <span class=\"icon-label-wrapper\" [ngClass]=\"{ 'center-text': iconName === '' }\" *ngIf=\"!justIcon\">\n <span class=\"icon\" *ngIf=\"iconPosition === 'left' && !!iconName\" aria-hidden=\"true\">\n <ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n [size]=\"size === 'small' ? '16' : '24'\"\n ></ui-icon>\n </span>\n <span\n *ngIf=\"isLabel\"\n class=\"label\"\n id=\"label\"\n uiEllipseText\n [isMultiline]=\"true\"\n (onChangeTextState)=\"onLabelEllipsisChange($event)\"\n >\n {{ label }}\n </span>\n <span class=\"icon\" *ngIf=\"iconPosition === 'right' && !!icon\" aria-hidden=\"true\"\n ><ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [size]=\"size === 'small' ? '16' : '24'\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n ></ui-icon\n ></span>\n </span>\n </ng-template>\n </button>\n <a\n #buttonElement\n [ngClass]=\"classCss\"\n [ngStyle]=\"styleCss\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick($event)\"\n (mouseenter)=\"buttonHover($event)\"\n (mouseleave)=\"buttonHover($event)\"\n (mousedown)=\"onPressed($event)\"\n (mouseup)=\"onPressed($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n [disableRipple]=\"true\"\n *ngIf=\"!isButtonLink\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledbyId\"\n [attr.aria-describedby]=\"'describedby-link'\"\n [attr.aria-disabled]=\"disabled\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n role=\"link\"\n [href]=\"url\"\n [target]=\"urlTarget\"\n mat-flat-button\n >\n <span id=\"describedby-link\" [style.display]=\"'none'\">\n {{ ariaDescribedby }}\n </span>\n <span [id]=\"ariaLabelledbyId\" [style.display]=\"'none'\">\n {{ ariaLabelledby }}\n </span>\n <span class=\"icon-label-wrapper\">\n {{ label }}\n </span>\n </a>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponent } from './button.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n IconComponentModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n BadgeComponentModule,\n EllipseTextDirective,\n MatRadioModule,\n UiTranslatePipe,\n ],\n exports: [ButtonComponent],\n providers: [],\n})\nexport class ButtonComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-button.mjs","sources":["../../../components/button/color-contrast.ts","../../../components/button/button.component.ts","../../../components/button/button.component.html","../../../components/button/button.component.module.ts","../../../components/button/testgorilla-tgo-ui-components-button.ts"],"sourcesContent":["/**\n * Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).\n * Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.\n * Used to manage different colors based on application configuration\n *\n * @param hexColor color in hex format\n * @param typeEvent interaction event\n * @param theme\n */\nexport const adjustLightness = (\n hexColor: string,\n typeEvent: 'hover' | 'pressed' | 'disabled',\n theme: 'new' | 'classic' = 'new'\n): string => {\n const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;\n if (hexColor && !hexRegex.test(hexColor)) {\n throw new Error('Invalid HEX color format');\n }\n\n const hslColor = hexToHsl(hexColor);\n const lightness = hslColor.l * 100;\n\n if (theme === 'new') {\n if (lightness > 70 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && (typeEvent === 'hover' || typeEvent === 'pressed')) {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n }\n } else {\n if (lightness > 70 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness < 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {\n hslColor.l = clamp(hslColor.l - 10 / 100);\n } else if (lightness > 70 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness < 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l + 30 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {\n hslColor.l = clamp(hslColor.l - 20 / 100);\n } else if (lightness > 70 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 10 / 100);\n } else if (lightness < 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 50 / 100);\n } else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {\n hslColor.l = clamp(hslColor.l + 20 / 100);\n }\n }\n\n return hslToHex(hslColor);\n};\n\n/**\n * Transforms hex color to HSL in object variation.\n * @param hexColor string value with hex color\n */\nexport const hexToHsl = (hexColor: string): { h: number; s: number; l: number } => {\n const rgbColor = parseInt(hexColor.slice(1), 16);\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = 0;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // grayscale\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, l };\n};\n\n/**\n * Transforms HSL color, represented as an object and transforms it to hex string.\n * @param hslColor accepts the HSL color like an object.\n */\nexport const hslToHex = (hslColor: { h: number; s: number; l: number }): string => {\n const { h, s, l } = hslColor;\n\n const hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n const r = hueToRgb(p, q, h + 1 / 3);\n const g = hueToRgb(p, q, h);\n const b = hueToRgb(p, q, h - 1 / 3);\n\n const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);\n\n return `#${rgbColor.toString(16).padStart(6, '0')}`;\n};\n\n/**\n * Restricts the value to be within the range [0, 1].\n * @param value\n */\nconst clamp = (value: number): number => Math.min(Math.max(value, 0), 1);\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { TooltipPosition } from '@angular/material/tooltip';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport {\n ButtonBadgeConfig,\n ButtonColor,\n ButtonIconPosition,\n ButtonSize,\n ButtonState,\n ButtonType,\n IconButtonSize,\n LinkUrlTarget,\n} from './button.model';\nimport { adjustLightness } from './color-contrast';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false,\n})\nexport class ButtonComponent implements OnInit, AfterViewInit {\n @HostBinding('style.pointer-events')\n get enabled(): string {\n return this.disabled ? 'none' : 'all';\n }\n\n @ViewChild('tooltipElement') tooltipElement: ElementRef<HTMLElement>;\n\n /**\n * Define button height\n *\n * @type {ButtonSize}\n * @memberof ButtonComponent\n */\n @Input() size: ButtonSize = 'big';\n /**\n * Background color of the button while in active state\n *\n * @type {ButtonColor}\n * @memberof ButtonComponent\n */\n @HostBinding('attr.btn-variant')\n @Input()\n variant: ButtonColor = 'primary';\n\n /**\n * Text content to appear on the button\n *\n * @memberof ButtonComponent\n */\n @Input() label = '';\n\n /**\n * Positioning of the icon (when existant)\n *\n * @type {ButtonIconPosition}\n * @memberof ButtonComponent\n */\n @Input() iconPosition?: ButtonIconPosition = 'right';\n\n /**\n * Define if button has only icon without text\n *\n * @memberof ButtonComponent\n */\n @Input() justIcon = false;\n\n /**\n * Name of ui-icon\n *\n * @type {IconName}\n * @memberof ButtonComponent\n */\n @Input() iconName: IconName | undefined;\n\n /**\n * Indicator if the button should be disabled\n *\n * @memberof ButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * Indicator if the loading icon should be shown\n *\n * @memberof ButtonComponent\n */\n @Input() loading = false;\n\n /**\n * Indicator of the button width\n *\n * @memberof ButtonComponent\n */\n @Input() fullWidth = false;\n\n /**\n * Url of button if it is a link\n *\n * @memberof ButtonComponent\n */\n @Input() url?: string;\n\n /**\n * Url's target of button if it is a link\n *\n * @type {@type {LinkUrlTarget}}\n * @memberof ButtonComponent\n */\n @Input() urlTarget?: LinkUrlTarget;\n\n /**\n * Button value\n *\n * @memberof ButtonComponent\n */\n @Input() value?: string;\n\n /**\n * @property tooltip\n * @description The tooltip that is displayed on hover. Required for icon-button type\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() tooltip = '';\n\n /**\n * @property isPremium\n * @description The icon that is displayed for Premium button\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() isPremium = false;\n\n /**\n * The type of the button.\n *\n * @type {ButtonType}\n * @memberof ButtonComponent\n * @default 'button'\n */\n @Input() type: ButtonType = 'button';\n\n /**\n * Color of the button.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() companyColor: string | null = '';\n\n /**\n * Config for the button badge variation\n * @type {ButtonBadgeConfig}\n * @property badgeType Type of badge on the button\n * @property badgeLabel Label text for the badge\n * @property badgeNotificationAmount The amount for notification in the badge\n */\n @Input() buttonBadgeConfig: ButtonBadgeConfig | undefined;\n\n /**\n *\n * Defines the application theme where buttons is used\n *\n * @type {ApplicationTheme}\n * @memberof ButtonComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n /**\n *\n * Disabled button scale on click\n *\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() disabledScaleOnClick = false;\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaLabelledby = '';\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof ButtonComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Prevents default button click behavior\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input({ transform: booleanAttribute }) preventDefault = false;\n\n /**\n * Ghost variant with white background\n * @type {boolean}\n * @memberof ButtonComponent\n */\n @Input({ transform: booleanAttribute }) hasBackground = false;\n\n /**\n * Sets tooltip position\n *\n * @type {TooltipPosition}\n * @memberof ButtonComponent\n */\n @Input() tooltipPosition: TooltipPosition = 'below';\n\n @Input() role = 'button';\n\n @Input() iconFilled = false;\n\n @Output() buttonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @Output() buttonHoverEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('buttonElement', { static: false }) buttonElement: MatButton;\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n @HostBinding('style.--color')\n get compColor() {\n return this.getCompanyColor;\n }\n\n classCss: string;\n styleCss: any;\n isButtonLink: boolean;\n isLabel: boolean;\n buttonState: ButtonState;\n hover = false;\n iconButtonSize: IconButtonSize = '40';\n allowButtonTypeForPremium: ButtonColor[] = [\n 'secondary',\n 'secondary-inverted',\n 'primary',\n 'ghost',\n 'outlined',\n 'destructive',\n 'icon-button',\n ];\n isFilledIcon: boolean;\n coloredIcons = ['Google-in-line', 'Google', 'Google-filled'];\n labelEllipsis = false;\n icon: IconName = '';\n\n private static nextAriaLabelledId = 0;\n ariaLabelledbyId = '';\n\n get typeIncluded(): boolean {\n return this.allowButtonTypeForPremium.includes(this.variant);\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.classCss = this.setCssClass();\n this.styleCss = this.setCssStyle();\n this.isButtonLink = this.showButtonLink();\n this.isLabel = this.showLabel();\n this.createAriaLabelledById();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['disabled']) {\n this.buttonState = 'default';\n }\n if (!this.applicationTheme) {\n this.applicationTheme = 'light';\n }\n if (changes['type']) {\n this.isButtonLink = this.showButtonLink();\n }\n if (changes['loading']) {\n this.isLabel = this.showLabel();\n }\n if (changes['iconName']) {\n this.icon = changes['iconName'].currentValue;\n }\n if (\n changes['type'] ||\n changes['fullWidth'] ||\n changes['iconName'] ||\n changes['justIcon'] ||\n changes['iconPosition'] ||\n changes['disabled'] ||\n changes['companyColor'] ||\n changes['variant'] ||\n changes['applicationTheme']\n ) {\n this.classCss = this.setCssClass();\n this.styleCss = this.setCssStyle();\n }\n if (\n changes['variant']?.currentValue === 'icon-button' ||\n (changes['variant']?.currentValue === 'menuTrigger' && this.applicationTheme !== 'classic')\n ) {\n this.iconButtonSize = this.setIconButtonSize();\n }\n\n this.isFilledIcon =\n this.applicationTheme !== 'classic' &&\n (this.variant === 'primary' || this.variant === 'secondary' || this.variant === 'secondary-inverted');\n }\n\n ngAfterViewInit(): void {\n this.tooltipElement.nativeElement.onclick = ev => {\n ev.preventDefault();\n ev.stopPropagation();\n };\n }\n\n buttonClick(event: Event): void {\n if (this.preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.buttonClickEvent.emit(event);\n }\n\n buttonHover(event: Event): void {\n if (event.type === 'mouseenter') {\n this.hover = true;\n this.buttonHoverEvent.emit(event);\n this.buttonState = 'hover';\n if (this.shouldChangeFilledStatus && this.icon) {\n this.icon = this.getIconName(this.iconName as IconName, '-filled');\n }\n } else {\n this.hover = false;\n if (this.shouldChangeFilledStatus && this.icon) {\n this.icon = this.iconName as IconName;\n }\n this.buttonState = 'default';\n }\n\n this.styleCss = this.setCssStyle();\n }\n\n //Show or hide label\n showLabel(): boolean {\n return !this.loading;\n }\n\n //Set css class according inputs\n setCssClass(): string {\n const width = this.fullWidth ? 'full-width' : '';\n const hasIcon = this.iconName === null ? '' : 'icon';\n const justIcon = this.justIcon || this.variant === 'icon-button' ? 'only-icon' : '';\n const iconPosition = this.iconPosition === undefined ? '' : this.iconPosition;\n const disabled = this.disabled && this.variant === 'primary' ? 'primary-disabled' : '';\n const variant = this.variant === 'ghost' && this.applicationTheme === 'classic' ? 'outlined' : this.variant;\n const companyColor = this.companyColor ? 'has-company-color' : '';\n return `${this.size} ${iconPosition} ${variant} ${width} ${hasIcon} ${justIcon} ${disabled} ${companyColor} ${this.applicationTheme}-theme`;\n }\n\n setCssStyle(): any {\n this.buttonState = this.disabled ? 'disabled' : this.buttonState;\n const styleObj: any = {};\n\n if (\n (this.variant === 'primary' || this.variant === 'text' || this.variant === 'text-inline') &&\n this.applicationTheme !== 'classic' &&\n (this.buttonState === 'hover' || this.buttonState === 'pressed')\n ) {\n styleObj[this.variant === 'primary' ? 'background-color' : 'color'] = adjustLightness(\n this.getCompanyColor,\n this.buttonState\n );\n if (this.variant === 'text' || this.variant === 'text-inline') {\n styleObj['--active-color'] = this.companyColor\n ? adjustLightness(this.getCompanyColor, this.buttonState)\n : '#666666';\n }\n } else if (\n (this.variant === 'primary' || this.variant === 'text' || this.variant === 'text-inline') &&\n this.applicationTheme === 'classic' &&\n this.buttonState !== 'default'\n ) {\n styleObj[this.variant === 'primary' ? 'background-color' : 'color'] = adjustLightness(\n this.getCompanyColor,\n this.buttonState,\n 'classic'\n );\n } else if (\n this.getCompanyColor &&\n (this.variant === 'link' || this.variant === 'tertiary' || this.variant === 'icon-button')\n ) {\n styleObj.color = this.getCompanyColor;\n } else if (this.hasBackground) {\n styleObj['--ghost-background'] = '#ffffff';\n }\n return styleObj;\n }\n\n //Show or hide spinner\n get showSpinner(): boolean {\n const isNotTab = this.variant !== 'tab';\n const isNotLink = this.variant !== 'link';\n const isLoading = this.loading === true;\n return isLoading && isNotTab && isNotLink;\n }\n\n //Show button with <button> or <a> tag\n showButtonLink(): boolean {\n return this.variant !== 'link';\n }\n\n setIconButtonSize(): IconButtonSize {\n return this.size === 'big' ? '40' : this.size === 'small' ? '24' : '32';\n }\n\n onPressed(ev: Event): void {\n if (ev.type === 'mousedown') {\n this.buttonState = 'pressed';\n } else {\n this.buttonState = this.hover ? 'hover' : 'default';\n }\n\n this.styleCss = this.setCssStyle();\n }\n\n focus(origin?: FocusOrigin): void {\n this.buttonElement.focus(origin);\n }\n\n get getCompanyColor(): string {\n return (\n this.companyColor ||\n (this.variant === 'text' || this.variant === 'text-inline'\n ? this.applicationTheme === 'dark'\n ? '#ffffff'\n : '#242424'\n : this.applicationTheme === 'classic'\n ? '#46A997'\n : '#D410AA')\n );\n }\n\n get shouldChangeFilledStatus(): boolean {\n return (\n this.applicationTheme !== 'classic' &&\n this.variant !== 'primary' &&\n this.variant !== 'secondary' &&\n !this.coloredIcons.includes(this.icon)\n );\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === ' ') {\n event.preventDefault();\n const target = event.target as HTMLElement;\n target.click();\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n this.buttonState = 'pressed';\n this.styleCss = this.setCssStyle();\n }\n }\n\n onKeyup(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n this.buttonState = this.hover ? 'hover' : 'default';\n this.styleCss = this.setCssStyle();\n }\n }\n\n onLabelEllipsisChange(state: boolean): void {\n this.labelEllipsis = state;\n }\n\n getIconName(iconName: string, defaultValue: string): IconName {\n if (iconName.includes('filled')) {\n return iconName.replace(/filled/, 'in-line') as IconName;\n } else if (iconName.includes('in-line')) {\n return iconName.replace(/in-line/, 'filled') as IconName;\n } else {\n return (iconName + defaultValue) as IconName;\n }\n }\n\n private createAriaLabelledById(): void {\n const labelledByValue = this.variant === 'link' ? 'labelledby-link' : 'labelledby';\n this.ariaLabelledbyId = `${labelledByValue}-uiButton-${++ButtonComponent.nextAriaLabelledId}`;\n }\n}\n","<div\n #tooltipElement\n class=\"tooltip\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n></div>\n<div\n class=\"button-wrapper\"\n [ngClass]=\"{\n 'full-width': fullWidth,\n 'rounded-icon': applicationTheme !== 'classic' && icon && !label,\n link: !isButtonLink,\n }\"\n>\n <div\n class=\"button-container\"\n [ngClass]=\"{\n disabled: disabled,\n 'button-scale': buttonState === 'pressed' && applicationTheme !== 'classic' && !disabledScaleOnClick,\n }\"\n >\n <span *ngIf=\"isPremium && typeIncluded\" class=\"right-top\">\n <img [attr.src]=\"'/images/premium.svg'\" [alt]=\"'premium-icon'\" />\n </span>\n <ui-badge\n id=\"badge\"\n *ngIf=\"buttonBadgeConfig?.badgeType\"\n [rebrandColor]=\"buttonBadgeConfig?.rebrandColor ?? 'brand'\"\n [variant]=\"buttonBadgeConfig!.badgeType!\"\n [label]=\"buttonBadgeConfig?.badgeLabel ?? ''\"\n [notificationsAmount]=\"buttonBadgeConfig?.badgeNotificationAmount ?? 0\"\n class=\"right-top\"\n [ngClass]=\"[\n buttonBadgeConfig?.badgeType === 'primary' ? 'badge-primary' : '',\n buttonBadgeConfig?.badgeType === 'notification' ? 'badge-notification' : '',\n variant,\n ]\"\n ></ui-badge>\n <button\n [style]=\"'--icon-button-size:' + iconButtonSize + 'px'\"\n [ngClass]=\"classCss\"\n [ngStyle]=\"styleCss\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick($event)\"\n (mouseleave)=\"buttonHover($event)\"\n (mouseenter)=\"buttonHover($event)\"\n (mousedown)=\"onPressed($event)\"\n (mouseup)=\"onPressed($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n *ngIf=\"isButtonLink\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledbyId\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-disabled]=\"disabled\"\n [type]=\"type\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltipPosition]=\"tooltipPosition\"\n #buttonElement\n [attr.role]=\"role\"\n mat-flat-button\n >\n <span id=\"describedby\" [style.display]=\"'none'\">\n {{ isPremium ? label + ' ' + ('BUTTON.PREMIUM_FEATURE' | uiTranslate | async) : ariaDescribedby }}\n </span>\n <span [id]=\"ariaLabelledbyId\" [style.display]=\"'none'\">\n {{ ariaLabelledby }}\n </span>\n <ng-container *ngIf=\"showSpinner; else icons\">\n <span class=\"spinner-wrapper\">\n <mat-spinner class=\"position-spinner\" aria-label=\"loading\" mode=\"indeterminate\" diameter=\"24\"></mat-spinner>\n </span>\n </ng-container>\n <ng-template #icons>\n <span class=\"icon-only-wrapper\" *ngIf=\"justIcon && !!icon\">\n <span class=\"icon only\" role=\"label\">\n <ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n [size]=\"size === 'small' ? '16' : '24'\"\n ></ui-icon>\n </span>\n </span>\n\n <span class=\"icon-label-wrapper\" [ngClass]=\"{ 'center-text': iconName === '' }\" *ngIf=\"!justIcon\">\n <span class=\"icon\" *ngIf=\"iconPosition === 'left' && !!iconName\" aria-hidden=\"true\">\n <ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n [size]=\"size === 'small' ? '16' : '24'\"\n ></ui-icon>\n </span>\n <span\n *ngIf=\"isLabel\"\n class=\"label\"\n id=\"label\"\n uiEllipseText\n [isMultiline]=\"true\"\n (onChangeTextState)=\"onLabelEllipsisChange($event)\"\n >\n {{ label }}\n </span>\n <span class=\"icon\" *ngIf=\"iconPosition === 'right' && !!icon\" aria-hidden=\"true\"\n ><ui-icon\n [color]=\"variant === 'ghost-ai' ? 'ai' : 'inherit'\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"icon\"\n [filled]=\"isFilledIcon || iconFilled\"\n [size]=\"size === 'small' ? '16' : '24'\"\n [useFullIconName]=\"variant === 'primary' || variant === 'secondary'\"\n ></ui-icon\n ></span>\n </span>\n </ng-template>\n </button>\n <a\n #buttonElement\n [ngClass]=\"classCss\"\n [ngStyle]=\"styleCss\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick($event)\"\n (mouseenter)=\"buttonHover($event)\"\n (mouseleave)=\"buttonHover($event)\"\n (mousedown)=\"onPressed($event)\"\n (mouseup)=\"onPressed($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n [disableRipple]=\"true\"\n *ngIf=\"!isButtonLink\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledbyId\"\n [attr.aria-describedby]=\"'describedby-link'\"\n [attr.aria-disabled]=\"disabled\"\n [matTooltip]=\"tooltip ? tooltip : labelEllipsis ? label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n role=\"link\"\n [href]=\"url\"\n [target]=\"urlTarget\"\n mat-flat-button\n >\n <span id=\"describedby-link\" [style.display]=\"'none'\">\n {{ ariaDescribedby }}\n </span>\n <span [id]=\"ariaLabelledbyId\" [style.display]=\"'none'\">\n {{ ariaLabelledby }}\n </span>\n <span class=\"icon-label-wrapper\">\n {{ label }}\n </span>\n </a>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ButtonComponent } from './button.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BadgeComponentModule } from '@testgorilla/tgo-ui/components/badge';\nimport { EllipseTextDirective } from '@testgorilla/tgo-ui/components/core';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n IconComponentModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n BadgeComponentModule,\n EllipseTextDirective,\n MatRadioModule,\n UiTranslatePipe,\n ],\n exports: [ButtonComponent],\n providers: [],\n})\nexport class ButtonComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;AAQG;AACI,MAAM,eAAe,GAAG,CAC7B,QAAgB,EAChB,SAA2C,EAC3C,KAAA,GAA2B,KAAK,KACtB;IACV,MAAM,QAAQ,GAAG,wBAAwB;IACzC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACxC,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;IAC7C;AAEA,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACnC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG;AAElC,IAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,QAAA,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AACxE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AAC/E,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE;AACjG,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;IACF;SAAO;QACL,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AAC3C,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;aAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AAClD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;AACpE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;aAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACpD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;aAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACpD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AACtE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;aAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACrD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;aAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACrD,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,UAAU,EAAE;AACvE,YAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C;IACF;AAEA,IAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B;AAEA;;;AAGG;AACI,MAAM,QAAQ,GAAG,CAAC,QAAgB,KAAyC;AAChF,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;AACxC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;IACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG;AAEhC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7B,IAAI,CAAC,GAAG,CAAC;AACT,IAAA,IAAI,CAAC;IACL,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAEzB,IAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,QAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACZ;SAAO;AACL,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG;QACnB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;QAEnD,QAAQ,GAAG;AACT,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC;AACF,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB;AACF,YAAA,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB;;QAGJ,CAAC,IAAI,CAAC;IACR;AAEA,IAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB;AAEA;;;AAGG;AACI,MAAM,QAAQ,GAAG,CAAC,QAA6C,KAAY;IAChF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;IAE5B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAY;AAC3D,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,CAAC,IAAI,CAAC;QACR;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,CAAC,IAAI,CAAC;QACR;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5B;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QACtC;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAEnB,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnC,IAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AAE/F,IAAA,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACrD;AAEA;;;AAGG;AACH,MAAM,KAAK,GAAG,CAAC,KAAa,KAAa,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;;MCnG3D,eAAe,CAAA;AAC1B,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK;IACvC;AA6NA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,eAAe;IAC7B;aAuBe,IAAA,CAAA,kBAAkB,GAAG,CAAH,CAAK;AAGtC,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9D;AAEA,IAAA,WAAA,CAC6E,eAAiC,EAAA;QAAjC,IAAA,CAAA,eAAe,GAAf,eAAe;AA/P5F;;;;;AAKG;QACM,IAAA,CAAA,IAAI,GAAe,KAAK;AACjC;;;;;AAKG;QAGH,IAAA,CAAA,OAAO,GAAgB,SAAS;AAEhC;;;;AAIG;QACM,IAAA,CAAA,KAAK,GAAG,EAAE;AAEnB;;;;;AAKG;QACM,IAAA,CAAA,YAAY,GAAwB,OAAO;AAEpD;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK;AAUzB;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEzB;;;;AAIG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK;AAExB;;;;AAIG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK;AAwB1B;;;;;AAKG;QACM,IAAA,CAAA,OAAO,GAAG,EAAE;AAErB;;;;;AAKG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK;AAE1B;;;;;;AAMG;QACM,IAAA,CAAA,IAAI,GAAe,QAAQ;AAEpC;;;;;;AAMG;QACM,IAAA,CAAA,YAAY,GAAkB,EAAE;AAWzC;;;;;;AAMG;QAGH,IAAA,CAAA,gBAAgB,GAAqB,OAAO;AAE5C;;;;;;AAMG;QACM,IAAA,CAAA,oBAAoB,GAAG,KAAK;AAUrC;;;;;AAKG;QACM,IAAA,CAAA,YAAY,GAAG,KAAK;AAE7B;;;;;AAKG;QACM,IAAA,CAAA,cAAc,GAAG,EAAE;AAE5B;;;;;AAKG;QACM,IAAA,CAAA,eAAe,GAAG,EAAE;AAE7B;;;;AAIG;QACqC,IAAA,CAAA,cAAc,GAAG,KAAK;AAE9D;;;;AAIG;QACqC,IAAA,CAAA,aAAa,GAAG,KAAK;AAE7D;;;;;AAKG;QACM,IAAA,CAAA,eAAe,GAAoB,OAAO;QAE1C,IAAA,CAAA,IAAI,GAAG,QAAQ;QAEf,IAAA,CAAA,UAAU,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,YAAY,EAAS;AAEjE,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,YAAY,EAAS;QAkB3E,IAAA,CAAA,KAAK,GAAG,KAAK;QACb,IAAA,CAAA,cAAc,GAAmB,IAAI;AACrC,QAAA,IAAA,CAAA,yBAAyB,GAAkB;YACzC,WAAW;YACX,oBAAoB;YACpB,SAAS;YACT,OAAO;YACP,UAAU;YACV,aAAa;YACb,aAAa;SACd;QAED,IAAA,CAAA,YAAY,GAAG,CAAC,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC;QAC5D,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,IAAI,GAAa,EAAE;QAGnB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QASnB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QACzC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO;QACjC;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;QAC3C;AACA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;QACjC;AACA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY;QAC9C;QACA,IACE,OAAO,CAAC,MAAM,CAAC;YACf,OAAO,CAAC,WAAW,CAAC;YACpB,OAAO,CAAC,UAAU,CAAC;YACnB,OAAO,CAAC,UAAU,CAAC;YACnB,OAAO,CAAC,cAAc,CAAC;YACvB,OAAO,CAAC,UAAU,CAAC;YACnB,OAAO,CAAC,cAAc,CAAC;YACvB,OAAO,CAAC,SAAS,CAAC;AAClB,YAAA,OAAO,CAAC,kBAAkB,CAAC,EAC3B;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACpC;AACA,QAAA,IACE,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,KAAK,aAAa;AAClD,aAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,KAAK,aAAa,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAC3F;AACA,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAChD;AAEA,QAAA,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,gBAAgB,KAAK,SAAS;AACnC,iBAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC;IACzG;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,IAAG;YAC/C,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,eAAe,EAAE;AACtB,QAAA,CAAC;IACH;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO;YAC1B,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,IAAI,EAAE;AAC9C,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAoB,EAAE,SAAS,CAAC;YACpE;QACF;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,IAAI,EAAE;AAC9C,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAoB;YACvC;AACA,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;IACpC;;IAGA,SAAS,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO;IACtB;;IAGA,WAAW,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE;AAChD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,GAAG,WAAW,GAAG,EAAE;AACnF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY;AAC7E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,kBAAkB,GAAG,EAAE;QACtF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO;AAC3G,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,mBAAmB,GAAG,EAAE;QACjE,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAA,MAAA,CAAQ;IAC7I;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW;QAChE,MAAM,QAAQ,GAAQ,EAAE;AAExB,QAAA,IACE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa;YACxF,IAAI,CAAC,gBAAgB,KAAK,SAAS;AACnC,aAAC,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,EAChE;YACA,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,kBAAkB,GAAG,OAAO,CAAC,GAAG,eAAe,CACnF,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,CACjB;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE;AAC7D,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;sBAC9B,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW;sBACtD,SAAS;YACf;QACF;AAAO,aAAA,IACL,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa;YACxF,IAAI,CAAC,gBAAgB,KAAK,SAAS;AACnC,YAAA,IAAI,CAAC,WAAW,KAAK,SAAS,EAC9B;AACA,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,kBAAkB,GAAG,OAAO,CAAC,GAAG,eAAe,CACnF,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,EAChB,SAAS,CACV;QACH;aAAO,IACL,IAAI,CAAC,eAAe;AACpB,aAAC,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,EAC1F;AACA,YAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe;QACvC;AAAO,aAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AAC7B,YAAA,QAAQ,CAAC,oBAAoB,CAAC,GAAG,SAAS;QAC5C;AACA,QAAA,OAAO,QAAQ;IACjB;;AAGA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI;AACvC,QAAA,OAAO,SAAS,IAAI,QAAQ,IAAI,SAAS;IAC3C;;IAGA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM;IAChC;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;IACzE;AAEA,IAAA,SAAS,CAAC,EAAS,EAAA;AACjB,QAAA,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,SAAS;QACrD;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;IACpC;AAEA,IAAA,KAAK,CAAC,MAAoB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,QACE,IAAI,CAAC,YAAY;aAChB,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK;AAC3C,kBAAE,IAAI,CAAC,gBAAgB,KAAK;AAC1B,sBAAE;AACF,sBAAE;AACJ,kBAAE,IAAI,CAAC,gBAAgB,KAAK;AAC1B,sBAAE;AACF,sBAAE,SAAS,CAAC;IAEpB;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,QACE,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,KAAK,WAAW;YAC5B,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAE1C;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;YAC1C,MAAM,CAAC,KAAK,EAAE;QAChB;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACpC;IACF;AAEA,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,SAAS;AACnD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACpC;IACF;AAEA,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;IAEA,WAAW,CAAC,QAAgB,EAAE,YAAoB,EAAA;AAChD,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC/B,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAa;QAC1D;AAAO,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACvC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAa;QAC1D;aAAO;AACL,YAAA,QAAQ,QAAQ,GAAG,YAAY;QACjC;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,GAAG,iBAAiB,GAAG,YAAY;QAClF,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,eAAe,CAAA,UAAA,EAAa,EAAE,eAAe,CAAC,kBAAkB,CAAA,CAAE;IAC/F;AApfW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAuQJ,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvQ/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAsMN,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAOhB,gBAAgB,0lBCpPtC,imMAkKA,EAAA,MAAA,EAAA,CAAA,4xgDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Ha,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,imMAAA,EAAA,MAAA,EAAA,CAAA,4xgDAAA,CAAA,EAAA;;0BAyQd;;0BAAY,MAAM;2BAAC,oCAAoC;yCArQtD,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAKN,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB;gBAQlB,IAAI,EAAA,CAAA;sBAAZ;gBASD,OAAO,EAAA,CAAA;sBAFN,WAAW;uBAAC,kBAAkB;;sBAC9B;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAQQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,GAAG,EAAA,CAAA;sBAAX;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBASQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAWD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,YAAY;;sBACxB;gBAUQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAOuC,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAOE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQ7B,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAES,gBAAgB,EAAA,CAAA;sBAAzB;gBAES,gBAAgB,EAAA,CAAA;sBAAzB;gBAE8C,aAAa,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAOzC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,eAAe;;;MEhPjB,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAfjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAE5B,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YACpB,oBAAoB;YACpB,cAAc;AACd,YAAA,eAAe,aAEP,eAAe,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAb9B,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YAEpB,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAML,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,wBAAwB;wBACxB,gBAAgB;wBAChB,oBAAoB;wBACpB,oBAAoB;wBACpB,cAAc;wBACd,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;AC3BD;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testgorilla/tgo-ui",
|
|
3
|
-
"version": "6.4.
|
|
3
|
+
"version": "6.4.5-beta.1",
|
|
4
4
|
"license": "proprietary-license",
|
|
5
5
|
"lint-staged": {
|
|
6
6
|
"{projects,components}/**/*.ts": [
|
|
@@ -48,12 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"overrides": {
|
|
50
50
|
"tar": "^7.5.8",
|
|
51
|
+
"ajv": "^8.18.0",
|
|
51
52
|
"serialize-javascript": "^7.0.3",
|
|
52
53
|
"@eslint/eslintrc": {
|
|
53
|
-
"ajv": "6.
|
|
54
|
+
"ajv": "^6.14.0"
|
|
54
55
|
},
|
|
55
56
|
"eslint": {
|
|
56
|
-
"ajv": "6.
|
|
57
|
+
"ajv": "^6.14.0"
|
|
57
58
|
}
|
|
58
59
|
},
|
|
59
60
|
"module": "fesm2022/testgorilla-tgo-ui.mjs",
|
|
@@ -66,22 +67,26 @@
|
|
|
66
67
|
"types": "./index.d.ts",
|
|
67
68
|
"default": "./fesm2022/testgorilla-tgo-ui.mjs"
|
|
68
69
|
},
|
|
69
|
-
"./components/accordion": {
|
|
70
|
-
"types": "./components/accordion/index.d.ts",
|
|
71
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-accordion.mjs"
|
|
72
|
-
},
|
|
73
70
|
"./components/ai-audio-circle": {
|
|
74
71
|
"types": "./components/ai-audio-circle/index.d.ts",
|
|
75
72
|
"default": "./fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs"
|
|
76
73
|
},
|
|
77
|
-
"./components/
|
|
78
|
-
"types": "./components/
|
|
79
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-
|
|
74
|
+
"./components/accordion": {
|
|
75
|
+
"types": "./components/accordion/index.d.ts",
|
|
76
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-accordion.mjs"
|
|
77
|
+
},
|
|
78
|
+
"./components/ai-caveat": {
|
|
79
|
+
"types": "./components/ai-caveat/index.d.ts",
|
|
80
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs"
|
|
80
81
|
},
|
|
81
82
|
"./components/ai-feedback": {
|
|
82
83
|
"types": "./components/ai-feedback/index.d.ts",
|
|
83
84
|
"default": "./fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs"
|
|
84
85
|
},
|
|
86
|
+
"./components/alert-banner": {
|
|
87
|
+
"types": "./components/alert-banner/index.d.ts",
|
|
88
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs"
|
|
89
|
+
},
|
|
85
90
|
"./components/audio-waveform": {
|
|
86
91
|
"types": "./components/audio-waveform/index.d.ts",
|
|
87
92
|
"default": "./fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs"
|
|
@@ -90,10 +95,6 @@
|
|
|
90
95
|
"types": "./components/autocomplete/index.d.ts",
|
|
91
96
|
"default": "./fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs"
|
|
92
97
|
},
|
|
93
|
-
"./components/ai-caveat": {
|
|
94
|
-
"types": "./components/ai-caveat/index.d.ts",
|
|
95
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs"
|
|
96
|
-
},
|
|
97
98
|
"./components/avatar": {
|
|
98
99
|
"types": "./components/avatar/index.d.ts",
|
|
99
100
|
"default": "./fesm2022/testgorilla-tgo-ui-components-avatar.mjs"
|
|
@@ -102,17 +103,13 @@
|
|
|
102
103
|
"types": "./components/badge/index.d.ts",
|
|
103
104
|
"default": "./fesm2022/testgorilla-tgo-ui-components-badge.mjs"
|
|
104
105
|
},
|
|
105
|
-
"./components/button": {
|
|
106
|
-
"types": "./components/button/index.d.ts",
|
|
107
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-button.mjs"
|
|
108
|
-
},
|
|
109
106
|
"./components/breadcrumb": {
|
|
110
107
|
"types": "./components/breadcrumb/index.d.ts",
|
|
111
108
|
"default": "./fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs"
|
|
112
109
|
},
|
|
113
|
-
"./components/
|
|
114
|
-
"types": "./components/
|
|
115
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-
|
|
110
|
+
"./components/button": {
|
|
111
|
+
"types": "./components/button/index.d.ts",
|
|
112
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-button.mjs"
|
|
116
113
|
},
|
|
117
114
|
"./components/card": {
|
|
118
115
|
"types": "./components/card/index.d.ts",
|
|
@@ -122,6 +119,10 @@
|
|
|
122
119
|
"types": "./components/checklist/index.d.ts",
|
|
123
120
|
"default": "./fesm2022/testgorilla-tgo-ui-components-checklist.mjs"
|
|
124
121
|
},
|
|
122
|
+
"./components/checkbox": {
|
|
123
|
+
"types": "./components/checkbox/index.d.ts",
|
|
124
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-checkbox.mjs"
|
|
125
|
+
},
|
|
125
126
|
"./components/core": {
|
|
126
127
|
"types": "./components/core/index.d.ts",
|
|
127
128
|
"default": "./fesm2022/testgorilla-tgo-ui-components-core.mjs"
|
|
@@ -130,6 +131,10 @@
|
|
|
130
131
|
"types": "./components/dialog/index.d.ts",
|
|
131
132
|
"default": "./fesm2022/testgorilla-tgo-ui-components-dialog.mjs"
|
|
132
133
|
},
|
|
134
|
+
"./components/dropdown": {
|
|
135
|
+
"types": "./components/dropdown/index.d.ts",
|
|
136
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-dropdown.mjs"
|
|
137
|
+
},
|
|
133
138
|
"./components/datepicker": {
|
|
134
139
|
"types": "./components/datepicker/index.d.ts",
|
|
135
140
|
"default": "./fesm2022/testgorilla-tgo-ui-components-datepicker.mjs"
|
|
@@ -142,30 +147,26 @@
|
|
|
142
147
|
"types": "./components/donut-chart/index.d.ts",
|
|
143
148
|
"default": "./fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs"
|
|
144
149
|
},
|
|
145
|
-
"./components/
|
|
146
|
-
"types": "./components/
|
|
147
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-
|
|
150
|
+
"./components/elevation-shadow": {
|
|
151
|
+
"types": "./components/elevation-shadow/index.d.ts",
|
|
152
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs"
|
|
148
153
|
},
|
|
149
154
|
"./components/empty-state": {
|
|
150
155
|
"types": "./components/empty-state/index.d.ts",
|
|
151
156
|
"default": "./fesm2022/testgorilla-tgo-ui-components-empty-state.mjs"
|
|
152
157
|
},
|
|
153
|
-
"./components/elevation-shadow": {
|
|
154
|
-
"types": "./components/elevation-shadow/index.d.ts",
|
|
155
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs"
|
|
156
|
-
},
|
|
157
158
|
"./components/field": {
|
|
158
159
|
"types": "./components/field/index.d.ts",
|
|
159
160
|
"default": "./fesm2022/testgorilla-tgo-ui-components-field.mjs"
|
|
160
161
|
},
|
|
161
|
-
"./components/filter-button": {
|
|
162
|
-
"types": "./components/filter-button/index.d.ts",
|
|
163
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-filter-button.mjs"
|
|
164
|
-
},
|
|
165
162
|
"./components/file-upload": {
|
|
166
163
|
"types": "./components/file-upload/index.d.ts",
|
|
167
164
|
"default": "./fesm2022/testgorilla-tgo-ui-components-file-upload.mjs"
|
|
168
165
|
},
|
|
166
|
+
"./components/filter-button": {
|
|
167
|
+
"types": "./components/filter-button/index.d.ts",
|
|
168
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-filter-button.mjs"
|
|
169
|
+
},
|
|
169
170
|
"./components/gaussian-chart": {
|
|
170
171
|
"types": "./components/gaussian-chart/index.d.ts",
|
|
171
172
|
"default": "./fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs"
|
|
@@ -250,14 +251,14 @@
|
|
|
250
251
|
"types": "./components/rating/index.d.ts",
|
|
251
252
|
"default": "./fesm2022/testgorilla-tgo-ui-components-rating.mjs"
|
|
252
253
|
},
|
|
253
|
-
"./components/scale": {
|
|
254
|
-
"types": "./components/scale/index.d.ts",
|
|
255
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-scale.mjs"
|
|
256
|
-
},
|
|
257
254
|
"./components/scale-table": {
|
|
258
255
|
"types": "./components/scale-table/index.d.ts",
|
|
259
256
|
"default": "./fesm2022/testgorilla-tgo-ui-components-scale-table.mjs"
|
|
260
257
|
},
|
|
258
|
+
"./components/scale": {
|
|
259
|
+
"types": "./components/scale/index.d.ts",
|
|
260
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-scale.mjs"
|
|
261
|
+
},
|
|
261
262
|
"./components/segmented-bar": {
|
|
262
263
|
"types": "./components/segmented-bar/index.d.ts",
|
|
263
264
|
"default": "./fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs"
|
|
@@ -282,14 +283,14 @@
|
|
|
282
283
|
"types": "./components/skeleton/index.d.ts",
|
|
283
284
|
"default": "./fesm2022/testgorilla-tgo-ui-components-skeleton.mjs"
|
|
284
285
|
},
|
|
285
|
-
"./components/slider": {
|
|
286
|
-
"types": "./components/slider/index.d.ts",
|
|
287
|
-
"default": "./fesm2022/testgorilla-tgo-ui-components-slider.mjs"
|
|
288
|
-
},
|
|
289
286
|
"./components/snackbar": {
|
|
290
287
|
"types": "./components/snackbar/index.d.ts",
|
|
291
288
|
"default": "./fesm2022/testgorilla-tgo-ui-components-snackbar.mjs"
|
|
292
289
|
},
|
|
290
|
+
"./components/slider": {
|
|
291
|
+
"types": "./components/slider/index.d.ts",
|
|
292
|
+
"default": "./fesm2022/testgorilla-tgo-ui-components-slider.mjs"
|
|
293
|
+
},
|
|
293
294
|
"./components/spider-chart": {
|
|
294
295
|
"types": "./components/spider-chart/index.d.ts",
|
|
295
296
|
"default": "./fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs"
|