@testgorilla/tgo-ui 12.2.0 → 12.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs +19 -4
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs +11 -1
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +6 -0
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +6 -0
- package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +250 -50
- package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +4 -0
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +89 -7
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-table.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +3 -0
- package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
- package/mcp/catalog.json +1 -1
- package/package.json +1 -1
- package/types/testgorilla-tgo-ui-components-button.d.ts +32 -0
- package/types/testgorilla-tgo-ui-components-core.d.ts +1 -0
- package/types/testgorilla-tgo-ui-components-popover.d.ts +51 -5
- package/types/testgorilla-tgo-ui-components-side-navigation.d.ts +59 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-core.mjs","names":["daDk","itIt","jaJp","nbNo","plPl","ptBr","svSe","i1.LanguageService"],"sources":["../../../components/core/language.model.ts","../../../components/core/language.service.ts","../../../components/core/ellipse-text.directive.ts","../tmp-esm2022/components/core/assets/i18n/da-dk.json","../tmp-esm2022/components/core/assets/i18n/de.json","../tmp-esm2022/components/core/assets/i18n/en.json","../tmp-esm2022/components/core/assets/i18n/es.json","../tmp-esm2022/components/core/assets/i18n/fr.json","../tmp-esm2022/components/core/assets/i18n/it-it.json","../tmp-esm2022/components/core/assets/i18n/ja-jp.json","../tmp-esm2022/components/core/assets/i18n/nb-no.json","../tmp-esm2022/components/core/assets/i18n/nl.json","../tmp-esm2022/components/core/assets/i18n/pl-pl.json","../tmp-esm2022/components/core/assets/i18n/pt-br.json","../tmp-esm2022/components/core/assets/i18n/sv-se.json","../../../components/core/ui-translate.pipe.ts","../../../components/core/keyboard-events.model.ts","../../../components/core/hex-to-rgb.ts","../../../components/core/autocomplete-utils.ts","../../../components/core/digits-only.directive.ts","../../../components/core/has-validation-error.pipe.ts","../../../components/core/directives/select-text.directive.ts","../../../components/core/directives/prevent-input.directive.ts","../../../components/core/pipes/includes.pipe.ts","../../../components/core/pipes/transform-item.pipe.ts","../../../components/core/screen-breakpoints.model.ts","../../../components/core/is-mobile.ts","../../../components/core/is-large-tablet.ts","../../../components/core/colors.model.ts","../../../components/core/memoize-func.pipe.ts","../../../components/core/ui-ordinal-suffix.pipe.ts","../../../components/core/truncate.pipe.ts","../../../components/core/data-property-getter.pipe.ts","../../../components/core/dynamic-component.directive.ts","../../../components/core/color-contrast.ts","../../../components/core/alert-bars.utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention -- enum members mirror BCP-47 locale codes, which are also the serialized values and the public API */\nexport enum Language {\n en = 'en',\n es = 'es',\n nl = 'nl',\n fr = 'fr',\n de = 'de',\n 'it-it' = 'it-it',\n 'ja-jp' = 'ja-jp',\n 'pt-br' = 'pt-br',\n 'da-dk' = 'da-dk',\n 'nb-no' = 'nb-no',\n 'pl-pl' = 'pl-pl',\n 'sv-se' = 'sv-se',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Language } from './language.model';\n//This type enforces all translations are present when some translation needs to live in the frontend\nexport type TranslationMap = { [key in Language]: string };\n\n//This function retrieves all languages from the enum. It is used to initialize transloco\nexport const getAvailableLangs = () => Object.values(Language);\n\n//This type is intended for UI uses only\nexport type UILanguage = { code: Language | string; label: string };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LanguageService {\n static readonly defaultLanguage = Language.en;\n\n readonly #currentLang$ = new BehaviorSubject(LanguageService.defaultLanguage);\n\n readonly defaultLanguageList: UILanguage[] = [\n { code: Language.en, label: 'English' },\n { code: Language.es, label: 'Spanish' },\n { code: Language.de, label: 'German' },\n { code: Language.fr, label: 'French' },\n { code: Language.nl, label: 'Dutch' },\n { code: Language['it-it'], label: 'Italian' },\n { code: Language['ja-jp'], label: 'Japanese' },\n { code: Language['pt-br'], label: 'Portuguese' },\n { code: Language['da-dk'], label: 'Danish' },\n { code: Language['nb-no'], label: 'Norwegian' },\n { code: Language['pl-pl'], label: 'Polish' },\n { code: Language['sv-se'], label: 'Swedish' },\n ];\n\n setActiveLang(language: Language): void {\n this.#currentLang$.next(language);\n }\n\n getActiveLang(): Observable<Language> {\n return this.#currentLang$.asObservable();\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, startWith, Subject, combineLatest } from 'rxjs';\n\n/**\n * Checks if element ellipsis\n */\n@Directive({\n selector: '[uiEllipseText]',\n standalone: true,\n})\nexport class EllipseTextDirective implements OnInit {\n @Input() isMultiline = false;\n @Input() maxDiffPixels = 0;\n checkEllipsis$ = new Subject<void>();\n refreshEllipsis$ = new Subject<void>();\n\n @Input() set refresh(_: unknown) {\n this.refreshEllipsis$.next();\n }\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- public output; dropping on- prefix is breaking, deferred to the breaking-change MAJOR (see plan)\n @Output() onChangeTextState = new EventEmitter<boolean>();\n\n @HostListener('window:resize')\n resize(): void {\n this.checkEllipsis$.next();\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private readonly el: ElementRef) {}\n\n ngOnInit() {\n combineLatest([this.checkEllipsis$.pipe(startWith(null)), this.refreshEllipsis$.pipe(startWith(null))])\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const textElement = this.el.nativeElement as HTMLElement;\n this.onChangeTextState.emit(\n this.isMultiline\n ? textElement.clientHeight + this.maxDiffPixels < textElement.scrollHeight\n : textElement.clientWidth + this.maxDiffPixels < textElement.scrollWidth\n );\n });\n }\n}\n","","","","","","","","","","","","","import { Pipe, PipeTransform } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport * as daDk from './assets/i18n/da-dk.json';\nimport de from './assets/i18n/de.json';\nimport en from './assets/i18n/en.json';\nimport es from './assets/i18n/es.json';\nimport fr from './assets/i18n/fr.json';\nimport * as itIt from './assets/i18n/it-it.json';\nimport * as jaJp from './assets/i18n/ja-jp.json';\nimport * as nbNo from './assets/i18n/nb-no.json';\nimport nl from './assets/i18n/nl.json';\nimport * as plPl from './assets/i18n/pl-pl.json';\nimport * as ptBr from './assets/i18n/pt-br.json';\nimport * as svSe from './assets/i18n/sv-se.json';\nimport { LanguageService } from './language.service';\n\n/** A translation JSON node: a leaf string or a nested map of further nodes. */\ntype TranslationNode = string | { [key: string]: TranslationNode };\n\n/**\n * Used for translations\n */\n@Pipe({\n name: 'uiTranslate',\n standalone: true,\n})\nexport class UiTranslatePipe implements PipeTransform {\n protected readonly LANGS: { [key: string]: unknown } = {\n en,\n es,\n de,\n 'da-dk': daDk,\n fr,\n 'it-it': itIt,\n 'ja-jp': jaJp,\n 'nb-no': nbNo,\n nl,\n 'pl-pl': plPl,\n 'pt-br': ptBr,\n 'sv-se': svSe,\n };\n\n constructor(private readonly languageService: LanguageService) {}\n /**\n * Finds the translation by keys with interpolation if provided\n * @param translateKey key, can have multiple keys separated with '.' eg ('KEY', 'FIRST_LVL_KEY.SECOND_LVL_KEY')\n * @param activeLang current active language\n * @param interpolationData data that will be used to replace interpolations in translated variant\n * For example, for translate text like this\n * 'You have {{attemptsAmount}} attempts left\n * the interpolation object should be { attemptsAmount: 10 }\n */\n transform(translateKey: string, interpolationData?: Record<string, unknown>): Observable<string> {\n return this.languageService.getActiveLang().pipe(\n map(activeLang => {\n const currentLangObject = JSON.parse(JSON.stringify(this.LANGS[activeLang])) as TranslationNode;\n const enLangObject = JSON.parse(JSON.stringify(this.LANGS['en'])) as TranslationNode;\n const keys = translateKey.split('.');\n const drill = (root: TranslationNode): TranslationNode | undefined =>\n keys.reduce<TranslationNode | undefined>(\n (acc, currentKey) => (acc && typeof acc === 'object' ? acc[currentKey] : undefined),\n root\n );\n const translation = drill(currentLangObject);\n\n if (translation) {\n return this.interpolate(translation as string, interpolationData);\n }\n\n return this.interpolate(drill(enLangObject) as string, interpolationData);\n })\n );\n }\n\n /**\n * Used to find and replace interpolation in text\n * @param translation the translation text\n * @param interpolationData the interpolation object\n */\n private interpolate(translation: string, interpolationData?: Record<string, unknown>): string {\n return translation?.replace(/{{(.*?)}}/g, (match: string, group: string) => {\n const value = interpolationData?.[group.trim()] as string;\n return value ?? match;\n });\n }\n}\n","export enum IKeyboardEvent {\n ENTER = 'Enter',\n SPACE = ' ',\n ARROW_DOWN = 'ArrowDown',\n ARROW_UP = 'ArrowUp',\n ESCAPE = 'Escape',\n HOME = 'Home',\n END = 'End',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n}\n","export const hexToRgbWithAlpha = (hex: string, alpha: number = 0.3): string => {\n const normalizedHex = hex.replace(/^#/, '');\n\n const bigint = parseInt(normalizedHex, 16);\n /* eslint-disable no-bitwise -- standard RGB channel extraction from a packed 24-bit integer */\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n /* eslint-enable no-bitwise */\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n","/** A keyed autocomplete option (accessed by a runtime text/value field name). */\ntype UnknownRecord = Record<string, unknown>;\n\n/** A group of options; `filteredItems` is populated in place by `filterItems`. */\ninterface AutocompleteGroupLike {\n items: unknown[];\n filteredItems?: unknown[];\n}\n\nexport class AutocompleteUtils {\n static transformDisplayValue(value: unknown, textField: string): unknown {\n return AutocompleteUtils.isPrimitive(value) ? value : (value as UnknownRecord | null)?.[textField];\n }\n\n static filterItems<T>(items: T[], inputValue: string, textField?: string, isGroup = false): T[] {\n const query = inputValue.toLowerCase();\n if (!AutocompleteUtils.isPrimitive(items) && textField) {\n if (isGroup) {\n return items.filter(item => {\n const group = item as unknown as AutocompleteGroupLike;\n const filtered = group.items.filter(member =>\n AutocompleteUtils.toLower((member as UnknownRecord)[textField]).includes(query)\n );\n group.filteredItems = filtered;\n return filtered.length;\n });\n }\n return items.filter(item => AutocompleteUtils.toLower((item as UnknownRecord)[textField]).includes(query));\n } else {\n if (isGroup) {\n return items.filter(\n item =>\n (item as unknown as AutocompleteGroupLike).items.filter(member =>\n AutocompleteUtils.toLower(member).includes(query)\n ).length\n );\n }\n return items.filter(item => AutocompleteUtils.toLower(item).includes(query));\n }\n }\n\n static isPrimitive(value: unknown): boolean {\n if (Array.isArray(value)) {\n return value.some(item => typeof item !== 'object');\n } else {\n return typeof value !== 'object';\n }\n }\n\n static isArray(value: unknown): boolean {\n return Array.isArray(value);\n }\n\n /// NEW\n static throwInvalidSetupError(): void {\n throw new Error(\n `AutocompleteComponent textField/valueField properties are not provided!\\n\n Items list that has non primitive values requires textField & valueField to be passed.`\n );\n }\n\n static excludeSuggestions<T>(items: T[], excludeItems: T[], valueField?: string): T[] {\n if (AutocompleteUtils.isPrimitive(items)) {\n return items?.filter(item => !excludeItems.find(excludeItem => excludeItem === item)) ?? [];\n } else {\n return valueField\n ? (items?.filter(\n item =>\n !excludeItems.find(\n excludeItem => (excludeItem as UnknownRecord)[valueField] === (item as UnknownRecord)[valueField]\n )\n ) ?? [])\n : [];\n }\n }\n\n static shouldBeObject(value: unknown, textField: string, valueField: string): boolean {\n return Boolean(valueField) && Boolean(textField) && typeof value !== 'object';\n }\n\n static createValueItem(value: unknown, textField: string, valueField: string): unknown {\n return AutocompleteUtils.shouldBeObject(value, textField, valueField)\n ? { [textField]: value, [valueField]: value }\n : value;\n }\n\n static findDuplicate(value: unknown, selectedValue: unknown, lookupKey?: string): unknown {\n if (AutocompleteUtils.isArray(value)) {\n return (value as unknown[]).find(v => {\n if (!AutocompleteUtils.isPrimitive(v) && lookupKey) {\n return (v as UnknownRecord)[lookupKey] === (selectedValue as UnknownRecord)[lookupKey];\n }\n return v === selectedValue;\n });\n } else {\n return value === selectedValue;\n }\n }\n\n static countMatchingWords(words: unknown[], query: string, textField?: string, isGroup = false): number {\n const lowerCaseQuery = query.toLowerCase();\n if (isGroup) {\n return words.filter(\n word =>\n (word as AutocompleteGroupLike).items.filter(item =>\n typeof item === 'object' && textField\n ? AutocompleteUtils.toLower((item as UnknownRecord)[textField]).includes(lowerCaseQuery)\n : AutocompleteUtils.toLower(item).includes(lowerCaseQuery)\n ).length\n ).length;\n }\n const matchingWords = words.filter(word =>\n typeof word === 'object' && textField\n ? AutocompleteUtils.toLower((word as UnknownRecord)[textField]).includes(lowerCaseQuery)\n : AutocompleteUtils.toLower(word).includes(lowerCaseQuery)\n );\n return matchingWords.length;\n }\n\n /**\n * Faithful to the previous `any` behaviour: text/value fields are expected to\n * be strings, and calling `.toLowerCase()` on a non-string throws exactly as\n * it did before. Kept private so it is not part of the public API surface.\n */\n private static toLower(value: unknown): string {\n return (value as string).toLowerCase();\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nconst ARROW_DOWN_KEY_CODE = 40;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[digitsOnly]',\n standalone: true,\n})\nexport class DigitsOnlyDirective {\n constructor(private readonly el: ElementRef<HTMLInputElement>) {}\n\n @Input() allowNegative = false;\n @Input() allowDecimal = false;\n @Input() allowOnlyDigits = false;\n regex: RegExp;\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: KeyboardEvent) {\n this.validate(event, event.key);\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n const pastedText = (event as ClipboardEvent) && (event as ClipboardEvent)?.clipboardData?.getData('text/plain'); // Non-IE browsers\n this.validate(event, pastedText ?? '');\n }\n\n @HostListener('keydown', [`$event`])\n onKeydown(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- KeyboardEvent.which is deprecated in favor of .key/.code; migrating this keyboard-nav check is behaviour-sensitive and out of scope for this lint pass\n const isArrowDown = event.which === ARROW_DOWN_KEY_CODE;\n if (!this.allowNegative) {\n if (isArrowDown && target.value && Number(target.value) <= 0) {\n event.preventDefault();\n } else if (isArrowDown && target.value === '') {\n this.el.nativeElement.value = '1';\n }\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n if (!this.allowNegative && target.value && Number(target.value) < 0) {\n setTimeout(() => (this.el.nativeElement.value = '0'), 0);\n }\n }\n\n validate(event: Event, text: string) {\n if (this.allowOnlyDigits) {\n const txtInput = this.el.nativeElement;\n const newValue =\n txtInput.value.substring(0, txtInput.selectionStart ?? 0) +\n text +\n txtInput.value.substring(txtInput.selectionEnd ?? 0);\n if (!this.regex) {\n this.regex = new RegExp(\n `^${this.allowNegative ? '-?' : ''}${this.allowDecimal ? '((\\\\d+\\\\.?)|(\\\\.?))\\\\d*' : '\\\\d*'}$`,\n 'g'\n );\n }\n if (!newValue.match(this.regex)) {\n event.preventDefault();\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'hasValidationError',\n standalone: true,\n})\nexport class HasValidationErrorPipe implements PipeTransform {\n /**\n * List of the error types that are handled\n */\n private readonly errorTypes = ['maxlength', 'minlength', 'min', 'max', 'required', 'email'];\n\n /**\n * Checks if the error on the NgControl is in the list of handled error types\n * @param value\n */\n transform(value: Record<string, unknown> | null | undefined): boolean {\n return value ? Boolean(Object.keys(value).filter(key => this.errorTypes.includes(key)).length) : false;\n }\n}\n","import { Directive, ElementRef, inject, input, effect } from '@angular/core';\n\nconst escapeRegExp = (str: string): string => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[selectText]',\n standalone: true,\n})\nexport class SelectTextDirective {\n selectText = input<string | null>(null);\n\n private readonly el = inject(ElementRef);\n private highlighted = false;\n\n constructor() {\n effect(() => {\n this.highlight(this.selectText());\n });\n }\n\n private highlight(term: string | null): void {\n const el = this.el.nativeElement as HTMLElement;\n\n if (!term) {\n // Only restore if we previously replaced Angular's content with highlighted nodes.\n // Never touch the DOM on init — that destroys Angular's tracked text interpolation\n // nodes, breaking CDK virtual scroll recycling.\n if (this.highlighted) {\n el.replaceChildren(document.createTextNode(el.textContent ?? ''));\n this.highlighted = false;\n }\n return;\n }\n\n const plainText = el.textContent ?? '';\n const escaped = escapeRegExp(term);\n const regex = new RegExp(escaped, 'gi');\n const parts = plainText.split(regex);\n const matches = plainText.match(regex) ?? [];\n\n const fragment = document.createDocumentFragment();\n parts.forEach((part, i) => {\n fragment.appendChild(document.createTextNode(part));\n if (matches[i]) {\n const span = document.createElement('span');\n span.style.fontWeight = 'bold';\n span.textContent = matches[i];\n fragment.appendChild(span);\n }\n });\n\n el.replaceChildren(fragment);\n this.highlighted = true;\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\n\n@Directive({\n selector: '[uiPreventInput]',\n standalone: true,\n})\nexport class PreventInputDirective {\n uiPreventInput = input<boolean>(false);\n\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 { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'includes',\n standalone: true,\n})\nexport class IncludesPipe implements PipeTransform {\n transform(\n value: Record<string, unknown>,\n values: Record<string, unknown> | Record<string, unknown>[],\n valueField?: string\n ): boolean {\n return Array.isArray(values)\n ? Boolean(values.find(v => (valueField ? v?.[valueField] === value?.[valueField] : value === v)))\n : valueField\n ? value?.[valueField] === values?.[valueField]\n : value === values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'transformItem',\n standalone: true,\n})\nexport class TransformItemPipe implements PipeTransform {\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList: true\n ): string[];\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList?: false\n ): string;\n\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList: boolean = false\n ): string | string[] {\n if (!value) {\n return '';\n }\n\n if (getValueList) {\n return Array.isArray(value)\n ? value.map(item => (field ? ((item[field] as string) ?? '') : ''))\n : field\n ? ((value[field] as string) ?? '')\n : '';\n }\n\n if (Array.isArray(value)) {\n return field ? ((value[0]?.[field] as string) ?? '') : '';\n }\n\n return field ? ((value[field] as string) ?? '') : '';\n }\n}\n","export enum ScreenBreakpoints {\n MOBILE = 600,\n TABLET = 1023,\n LARGE_TABLET = 1280,\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map } from 'rxjs';\n\nimport { ScreenBreakpoints } from './screen-breakpoints.model';\n\nexport const IS_MOBILE_TOKEN = new InjectionToken('Is mobile', {\n factory: () => {\n const breakpointObserver = inject(BreakpointObserver);\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.MOBILE}px)`).pipe(map(v => v.matches));\n },\n});\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { map } from 'rxjs';\r\n\r\nimport { ScreenBreakpoints } from './screen-breakpoints.model';\r\n\r\nexport const IS_LARGE_TABLET_TOKEN = new InjectionToken('Is large tablet', {\r\n factory: () => {\r\n const breakpointObserver = inject(BreakpointObserver);\r\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.LARGE_TABLET}px)`).pipe(map(v => v.matches));\r\n },\r\n});\r\n","export enum Color {\n // Teal colors\n TGO_TEAL_60B = '#1C443C',\n TGO_TEAL_30B = '#31766A',\n TGO_TEAL_DEFAULT = '#46A997',\n TGO_TEAL_30W = '#7EC3B6',\n TGO_TEAL_60W = '#B5DDD5',\n TGO_TEAL_SECONDARY = '#CBD6CB',\n TGO_TEAL_90W = '#ECF6F5',\n\n // Petrol colors\n TGO_PETROL_60B = '#102930',\n TGO_PETROL_30B = '#1B4754',\n TGO_PETROL_DEFAULT = '#276678',\n TGO_PETROL_30W = '#6894A0',\n TGO_PETROL_60W = '#A9C2C9',\n TGO_PETROL_SECONDARY = '#C8D7DE',\n TGO_PETROL_90W = '#E9F0F1',\n\n // Error colors\n TGO_ERROR_60B = '#513131',\n TGO_ERROR_30B = '#8E5655',\n TGO_ERROR_60W = '#E3C3C6',\n TGO_ERROR_SECONDARY = '#F0DAD9',\n TGO_ERROR_DEFAULT = '#CB7B7A',\n\n // Warning colors\n TGO_WARNING_SECONDARY = '#F0D6BB',\n TGO_WARNING_DEFAULT = '#CCA45F',\n\n // Black colors - grayscale\n TGO_BLACK = '#000000',\n TGO_DARK = '#888888',\n TGO_MEDIUM = '#E0E0E0',\n TGO_GREY = '#EDEDED',\n TGO_LIGHT = '#F6F6F6',\n TGO_WHITE = '#FFFFFF',\n\n // Brand colors\n BRAND_60 = '#A90686',\n BRAND_50 = '#D410AA',\n BRAND_40 = '#FF54DA',\n BRAND_30 = '#FFB3EE',\n BRAND_20 = '#FFE6FA',\n BRAND_10 = '#FFF2FC',\n\n // Grayscale colors\n GRAYSCALE_50 = '#666666',\n GRAYSCALE_40 = '#919191',\n GRAYSCALE_30 = '#D3D3D3',\n GRAYSCALE_20 = '#E9E9E9',\n GRAYSCALE_10 = '#F4F4F4',\n\n // Additional colors\n BLACK = '#242424',\n\n // Accent colors\n ACCENT_20 = '#FFF5ED',\n ACCENT_10 = '#FFFAF6',\n\n // Informative colors\n INFORMATIVE_50 = '#1A47AA',\n INFORMATIVE_40 = '#0165FC',\n INFORMATIVE_30 = '#277CFD',\n INFORMATIVE_20 = '#99C1FE',\n INFORMATIVE_10 = '#D9E8FF',\n\n // Success colors\n SUCCESS_50 = '#3C9A13',\n SUCCESS_40 = '#56C71A',\n SUCCESS_30 = '#80D63E',\n SUCCESS_20 = '#AAE47A',\n SUCCESS_10 = '#D4F2C3',\n\n // Error additional colors\n ERROR_50 = '#E02800',\n ERROR_40 = '#FF3003',\n ERROR_30 = '#FF6E4F',\n ERROR_20 = '#FFAC9A',\n ERROR_10 = '#FFEAE6',\n\n // Warning additional colors\n WARNING_50 = '#D07D00',\n WARNING_40 = '#FF9A03',\n WARNING_30 = '#FFC268',\n WARNING_20 = '#FFE1B3',\n WARNING_10 = '#FFF5E6',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * USAGE:\n * {{ argument | memoizeFunc : method [: context] }}\n *\n * You could provide multiple arguments for the function like that:\n * {{ [argument1, argument2] | memoizeFunc : method [: context] }}\n *\n *\n * FUNCTION WITH CONTEXT\n * We still could have optimization in impure functions with Angular pipes. Just provide context as second parameter\n * to the memoizeFunc pipe.\n *\n * {{ argument | memoizeFunc : method : this }}\n *\n * Alternative variant use 'bind'\n *\n * {{ argument | memoizeFunc : method.bind(this) }}\n *\n * */\n@Pipe({\n name: 'memoizeFunc',\n standalone: true,\n})\nexport class MemoizeFuncPipe implements PipeTransform {\n transform<T, K>(value: T, handler: (value: T) => K, context?: unknown): K {\n if (context) {\n return handler.call(context, value);\n }\n\n return handler(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ordinalSuffix',\n standalone: true,\n})\nexport class OrdinalSuffixPipe implements PipeTransform {\n transform(value: number): string {\n const lastDigit = value % 10;\n const lastTwoDigits = value % 100;\n\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n return 'PERCENTILE_SUFFIXES.TH';\n }\n\n switch (lastDigit) {\n case 1:\n return 'PERCENTILE_SUFFIXES.ST';\n case 2:\n return 'PERCENTILE_SUFFIXES.ND';\n case 3:\n return 'PERCENTILE_SUFFIXES.RD';\n default:\n return 'PERCENTILE_SUFFIXES.TH';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: true,\n})\nexport class TruncatePipe implements PipeTransform {\n transform(input: unknown, length?: number, suffix?: string, preserve?: boolean): unknown {\n if (typeof input !== 'string') {\n return input;\n }\n\n const maxLength = length ?? input.length;\n\n if (input.length <= maxLength) {\n return input;\n }\n\n const shouldPreserve = preserve ?? false;\n const suffixStr = suffix ?? '';\n let index = maxLength;\n\n if (shouldPreserve) {\n if (!input.includes(' ', maxLength)) {\n index = input.length;\n } else {\n index = input.indexOf(' ', maxLength);\n }\n }\n\n return input.substring(0, index) + suffixStr;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dataPropertyGetter',\n standalone: true,\n})\nexport class DataPropertyGetterPipe implements PipeTransform {\n transform(obj: object, keyName: string = '') {\n return this.getDeepVal(obj, keyName);\n }\n\n private getDeepVal(obj: unknown, path: string): unknown {\n let current = obj;\n if (typeof current === 'undefined' || current === null) {\n return '';\n }\n const splittedPath = path.split(/[.[\\]\"']{1,2}/);\n for (let i = 0, l = splittedPath.length; i < l; i++) {\n if (splittedPath[i] === '') {\n continue;\n }\n current = (current as Record<string, unknown>)[splittedPath[i]];\n if (typeof current === 'undefined' || current === null) {\n return '';\n }\n }\n return current;\n }\n}\n","import { ComponentRef, Directive, EventEmitter, Input, OnDestroy, Type, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ninterface IComponentRenderer {\n component: Type<unknown>;\n inputs?: Record<string, unknown>;\n outputs?: { [key: string]: (event: unknown) => void };\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[dynamicComponent]',\n standalone: true,\n})\nexport class DynamicComponentDirective implements OnDestroy {\n private readonly subscription = new Subscription();\n private compRef: ComponentRef<unknown>;\n\n @Input() set dynamicComponent(componentRenderer: IComponentRenderer) {\n if (componentRenderer.component) {\n this.compRef = this.vcr.createComponent(componentRenderer.component);\n\n const inputs = componentRenderer.inputs;\n if (inputs) {\n // setInput supports both decorator and signal-based inputs; direct instance\n // assignment overwrites signal inputs (InputSignal functions) with raw values.\n Object.keys(inputs).forEach(inputName => this.compRef.setInput(inputName, inputs[inputName]));\n }\n\n const outputs = componentRenderer.outputs;\n if (outputs) {\n const instance = this.compRef.instance as Record<string, EventEmitter<unknown>>;\n Object.keys(outputs).forEach(output => {\n this.subscription.add(instance[output].subscribe(outputs[output]));\n });\n }\n }\n }\n\n constructor(private readonly vcr: ViewContainerRef) {}\n\n ngOnDestroy() {\n if (this.compRef) {\n this.compRef.destroy();\n }\n this.subscription.unsubscribe();\n }\n}\n","/**\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 */\ntype LightnessEvent = 'hover' | 'pressed' | 'disabled';\n\n/** Lightness band of a colour, in percent. `null` = exactly on a 30/70 boundary (no adjustment). */\nconst lightnessBand = (lightness: number): 'high' | 'low' | 'mid' | null => {\n if (lightness > 70) {\n return 'high';\n }\n if (lightness < 30) {\n return 'low';\n }\n if (lightness < 70 && lightness > 30) {\n return 'mid';\n }\n return null;\n};\n\n/** Lightness delta (in percent points) for the `new` theme. */\nconst getNewThemeDelta = (lightness: number, typeEvent: LightnessEvent): number => {\n if (typeEvent !== 'hover' && typeEvent !== 'pressed') {\n return 0;\n }\n const band = lightnessBand(lightness);\n return band === 'low' ? 10 : band ? -10 : 0;\n};\n\n/** Lightness delta (in percent points) for the `classic` theme. */\nconst getClassicThemeDelta = (lightness: number, typeEvent: LightnessEvent): number => {\n const deltasByEvent: Record<LightnessEvent, { high: number; low: number; mid: number }> = {\n hover: { high: -10, low: 10, mid: -10 },\n pressed: { high: -20, low: 30, mid: -20 },\n disabled: { high: 10, low: 50, mid: 20 },\n };\n const band = lightnessBand(lightness);\n if (!band) {\n return 0;\n }\n // typeEvent is LightnessEvent at compile time, but callers may pass an\n // out-of-range button state at runtime (matches the original no-op behaviour).\n const eventDeltas: { high: number; low: number; mid: number } | undefined = deltasByEvent[typeEvent];\n return eventDeltas ? eventDeltas[band] : 0;\n};\n\nexport const adjustLightness = (\n hexColor: string,\n typeEvent: LightnessEvent,\n theme: 'new' | 'classic' = 'new'\n): string => {\n const hexRegex = /^#(?:[0-9A-F]{3}|[0-9A-F]{6})$/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 const delta = theme === 'new' ? getNewThemeDelta(lightness, typeEvent) : getClassicThemeDelta(lightness, typeEvent);\n hslColor.l = clamp(hslColor.l + delta / 100);\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 /* eslint-disable no-bitwise -- standard RGB channel extraction from a packed 24-bit integer */\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n /* eslint-enable no-bitwise */\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 let tNorm = t;\n if (tNorm < 0) {\n tNorm += 1;\n }\n if (tNorm > 1) {\n tNorm -= 1;\n }\n if (tNorm < 1 / 6) {\n return p + (q - p) * 6 * tNorm;\n }\n if (tNorm < 1 / 2) {\n return q;\n }\n if (tNorm < 2 / 3) {\n return p + (q - p) * (2 / 3 - tNorm) * 6;\n }\n return p;\n };\n\n const qBase = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const pBase = 2 * l - qBase;\n\n const r = hueToRgb(pBase, qBase, h + 1 / 3);\n const g = hueToRgb(pBase, qBase, h);\n const b = hueToRgb(pBase, qBase, h - 1 / 3);\n\n // eslint-disable-next-line no-bitwise -- standard RGB channel packing into a 24-bit integer\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","import { AlertVariant } from './alert-bar.model';\nimport { Color } from './colors.model';\n\nexport const alertBarsUtil = {\n //Set css class and iconName according type\n setIcon: (alertType: string): string => {\n if (alertType === 'success') {\n return 'Round-check';\n }\n if (alertType === 'info') {\n return 'Info';\n }\n if (alertType === 'warning') {\n return 'Warning';\n }\n if (alertType === 'error') {\n return 'Error';\n }\n if (alertType === 'ai') {\n return 'Ai-fluent-filled';\n }\n return '';\n },\n\n // Resolves the icon color per alert type.\n setIconColor: (alertType: string): Color => {\n if (alertType === 'ai') {\n return Color.BRAND_60;\n }\n return Color.TGO_BLACK;\n },\n\n //Set cssClass for fixed or static position\n setPosition: (fixed: boolean): string => {\n if (fixed === true) {\n return 'fixed';\n } else {\n return 'static';\n }\n },\n\n //Set css class for alertbanner\n setCssClass: (fullWidth: boolean, type: string, position: string, variant: AlertVariant = 'banner'): string => {\n const isFullWidth = fullWidth ? 'full-width' : '';\n const resolvedType = variant === 'banner' ? type : type === 'success' ? 'info' : type;\n return `${resolvedType} ${position} ${isFullWidth} ${variant}`;\n },\n};\n"],"mappings":"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Cb,CAAA;;;;E,gBAEE,MAAA,M;E,kBACA,MAAA,M;E,YAIA,MAAA,M;E,sBAKA,MAAA,O;;GAEA,MAAA;GAAa,MAAA,CAAA,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AaP/B,IAAa,kBAAb,MAAa,gBAAe;CAgB1B,YAA6B,iBAAgC;EAAhC,KAAA,kBAAA;EAfV,KAAA,QAAoC;GACrD,IAAA;GACA,IAAA;GACA,IAAA;GACA,SAASA;GACT,IAAA;GACA,SAASC;GACT,SAASC;GACT,SAASC;GACT,IAAA;GACA,SAASC;GACT,SAASC;GACT,SAASC;EACV;CAE+D;CAUhE,UAAU,cAAsB,mBAA2C;EACzE,OAAO,KAAK,gBAAgB,cAAa,CAAE,CAAC,KAC1C,KAAI,eAAa;GACf,MAAM,oBAAoB,KAAK,MAAM,KAAK,UAAU,KAAK,MAAM,WAAW,CAAC;GAC3E,MAAM,eAAe,KAAK,MAAM,KAAK,UAAU,KAAK,MAAM,KAAK,CAAC;GAChE,MAAM,OAAO,aAAa,MAAM,GAAG;GACnC,MAAM,SAAS,SACb,KAAK,QACF,KAAK,eAAgB,OAAO,OAAO,QAAQ,WAAW,IAAI,cAAc,QACzE,IAAI;GAER,MAAM,cAAc,MAAM,iBAAiB;GAE3C,IAAI,aACF,OAAO,KAAK,YAAY,aAAuB,iBAAiB;GAGlE,OAAO,KAAK,YAAY,MAAM,YAAY,GAAa,iBAAiB;EAC1E,CAAC,CAAC;CAEN;CAOQ,YAAY,aAAqB,mBAA2C;EAClF,OAAO,aAAa,QAAQ,eAAe,OAAe,UAAiB;GAEzE,OADc,oBAAoB,MAAM,KAAI,MAC5B;EAClB,CAAC;CACH;CA1DW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAe,MAAA,CAAA,EAAA,OAAAC,gBAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAf;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAe,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA;EAJ3B,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;;AC1BD,IAAY;CAAZ,SAAY,gBAAc;CACxB,eAAA,WAAA;CACA,eAAA,WAAA;CACA,eAAA,gBAAA;CACA,eAAA,cAAA;CACA,eAAA,YAAA;CACA,eAAA,UAAA;CACA,eAAA,SAAA;CACA,eAAA,aAAA;CACA,eAAA,eAAA;AACF,EAAA,CAVY,mBAAA,iBAAc,CAAA,EAAA;ACA1B,MAAa,qBAAqB,KAAa,QAAgB,OAAe;CAC5E,MAAM,gBAAgB,IAAI,QAAQ,MAAM,EAAE;CAE1C,MAAM,SAAS,SAAS,eAAe,EAAE;CAOzC,OAAO,QALI,UAAU,KAAM,IAKX,IAJL,UAAU,IAAK,IAIJ,IAHZ,SAAS,IAGS,IAAK,MAAK;AACxC;ACFA,IAAa,oBAAb,MAAa,kBAAiB;CAC5B,OAAO,sBAAsB,OAAgB,WAAiB;EAC5D,OAAO,kBAAkB,YAAY,KAAK,IAAI,QAAS,QAAiC;CAC1F;CAEA,OAAO,YAAe,OAAY,YAAoB,WAAoB,UAAU,OAAK;EACvF,MAAM,QAAQ,WAAW,YAAW;EACpC,IAAI,CAAC,kBAAkB,YAAY,KAAK,KAAK,WAAW;GACtD,IAAI,SACF,OAAO,MAAM,QAAO,SAAO;IACzB,MAAM,QAAQ;IACd,MAAM,WAAW,MAAM,MAAM,QAAO,WAClC,kBAAkB,QAAS,OAAyB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC;IAEjF,MAAM,gBAAgB;IACtB,OAAO,SAAS;GAClB,CAAC;GAEH,OAAO,MAAM,QAAO,SAAQ,kBAAkB,QAAS,KAAuB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC;EAC3G,OAAO;GACL,IAAI,SACF,OAAO,MAAM,QACX,SACG,KAA0C,MAAM,QAAO,WACtD,kBAAkB,QAAQ,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,CAClD,CAAC,MAAM;GAGd,OAAO,MAAM,QAAO,SAAQ,kBAAkB,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC;EAC7E;CACF;CAEA,OAAO,YAAY,OAAc;EAC/B,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,MAAK,SAAQ,OAAO,SAAS,QAAQ;OAElD,OAAO,OAAO,UAAU;CAE5B;CAEA,OAAO,QAAQ,OAAc;EAC3B,OAAO,MAAM,QAAQ,KAAK;CAC5B;CAGA,OAAO,yBAAsB;EAC3B,MAAM,IAAI,MACR;4FACsF;CAE1F;CAEA,OAAO,mBAAsB,OAAY,cAAmB,YAAmB;EAC7E,IAAI,kBAAkB,YAAY,KAAK,GACrC,OAAO,OAAO,QAAO,SAAQ,CAAC,aAAa,MAAK,gBAAe,gBAAgB,IAAI,CAAC,KAAK,CAAA;OAEzF,OAAO,aACF,OAAO,QACN,SACE,CAAC,aAAa,MACZ,gBAAgB,YAA8B,gBAAiB,KAAuB,WAAW,CAClG,KACA,CAAA,IACL,CAAA;CAER;CAEA,OAAO,eAAe,OAAgB,WAAmB,YAAkB;EACzE,OAAO,QAAQ,UAAU,KAAK,QAAQ,SAAS,KAAK,OAAO,UAAU;CACvE;CAEA,OAAO,gBAAgB,OAAgB,WAAmB,YAAkB;EAC1E,OAAO,kBAAkB,eAAe,OAAO,WAAW,UAAU,IAChE;IAAG,YAAY;IAAQ,aAAa;EAAK,IACzC;CACN;CAEA,OAAO,cAAc,OAAgB,eAAwB,WAAkB;EAC7E,IAAI,kBAAkB,QAAQ,KAAK,GACjC,OAAQ,MAAoB,MAAK,MAAI;GACnC,IAAI,CAAC,kBAAkB,YAAY,CAAC,KAAK,WACvC,OAAQ,EAAoB,eAAgB,cAAgC;GAE9E,OAAO,MAAM;EACf,CAAC;OAED,OAAO,UAAU;CAErB;CAEA,OAAO,mBAAmB,OAAkB,OAAe,WAAoB,UAAU,OAAK;EAC5F,MAAM,iBAAiB,MAAM,YAAW;EACxC,IAAI,SACF,OAAO,MAAM,QACX,SACG,KAA+B,MAAM,QAAO,SAC3C,OAAO,SAAS,YAAY,YACxB,kBAAkB,QAAS,KAAuB,UAAU,CAAC,CAAC,SAAS,cAAc,IACrF,kBAAkB,QAAQ,IAAI,CAAC,CAAC,SAAS,cAAc,CAAC,CAC7D,CAAC,MAAM,CACX,CAAC;EAOJ,OALsB,MAAM,QAAO,SACjC,OAAO,SAAS,YAAY,YACxB,kBAAkB,QAAS,KAAuB,UAAU,CAAC,CAAC,SAAS,cAAc,IACrF,kBAAkB,QAAQ,IAAI,CAAC,CAAC,SAAS,cAAc,CAEtD,CAAA,CAAc;CACvB;CAOQ,OAAO,QAAQ,OAAc;EACnC,OAAQ,MAAiB,YAAW;CACtC;AACD;AC7HD,MAAM,sBAAsB;AAO5B,IAAa,sBAAb,MAAa,oBAAmB;CAC9B,YAA6B,IAAgC;EAAhC,KAAA,KAAA;EAEpB,KAAA,gBAAgB;EAChB,KAAA,eAAe;EACf,KAAA,kBAAkB;CAJqC;CAQhE,WAAW,OAAoB;EAC7B,KAAK,SAAS,OAAO,MAAM,GAAG;CAChC;CAGA,QAAQ,OAAY;EAClB,MAAM,aAAc,SAA6B,OAA0B,eAAe,QAAQ,YAAY;EAC9G,KAAK,SAAS,OAAO,cAAc,EAAE;CACvC;CAGA,UAAU,OAAoB;EAC5B,MAAM,SAAS,MAAM;EAErB,MAAM,cAAc,MAAM,UAAU;EACpC,IAAI,CAAC,KAAK,eAAe;GACvB,IAAI,eAAe,OAAO,SAAS,OAAO,OAAO,KAAK,KAAK,GACzD,MAAM,eAAc;QACf,IAAI,eAAe,OAAO,UAAU,IACzC,KAAK,GAAG,cAAc,QAAQ;EAElC;CACF;CAGA,QAAQ,OAAY;EAClB,MAAM,SAAS,MAAM;EACrB,IAAI,CAAC,KAAK,iBAAiB,OAAO,SAAS,OAAO,OAAO,KAAK,IAAI,GAChE,iBAAkB,KAAK,GAAG,cAAc,QAAQ,KAAM,CAAC;CAE3D;CAEA,SAAS,OAAc,MAAY;EACjC,IAAI,KAAK,iBAAiB;GACxB,MAAM,WAAW,KAAK,GAAG;GACzB,MAAM,WACJ,SAAS,MAAM,UAAU,GAAG,SAAS,kBAAkB,CAAC,IACxD,OACA,SAAS,MAAM,UAAU,SAAS,gBAAgB,CAAC;GACrD,IAAI,CAAC,KAAK,OACR,KAAK,QAAQ,IAAI,OACf,IAAI,KAAK,gBAAgB,OAAO,KAAK,KAAK,eAAe,4BAA4B,OAAM,IAC3F,GAAG;GAGP,IAAI,CAAC,SAAS,MAAM,KAAK,KAAK,GAC5B,MAAM,eAAc;EAExB;CACF;CA1DW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAmB,MAAA,CAAA,EAAA,OAAA,GAAA,WAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAnB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAmB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,eAAA;IAAA,cAAA;IAAA,iBAAA;GAAA;GAAA,MAAA,EAAA,WAAA;IAAA,YAAA;IAAA,SAAA;IAAA,WAAA;IAAA,SAAA;GAAA,EAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAAnB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAL/B,MAAA;EAAU,MAAA,CAAA;GAET,UAAU;GACV,YAAY;EACb,CAAA;;;;E,kBAIE,MAAA,M;E,iBACA,MAAA,M;E,oBACA,MAAA,M;;GAGA,MAAA;GAAa,MAAA,CAAA,YAAY,CAAC,QAAQ,CAAC;;;GAKnC,MAAA;GAAa,MAAA,CAAA,SAAS,CAAC,QAAQ,CAAC;;;GAMhC,MAAA;GAAa,MAAA,CAAA,WAAW,CAAC,QAAQ,CAAC;;;GAclC,MAAA;GAAa,MAAA,CAAA,SAAS,CAAC,QAAQ,CAAC;;;;ACpCnC,IAAa,yBAAb,MAAa,uBAAsB;CAJnC,cAAA;EAQmB,KAAA,aAAa;GAAC;GAAa;GAAa;GAAO;GAAO;GAAY;EAAO;CAS3F;CAHC,UAAU,OAAiD;EACzD,OAAO,QAAQ,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,QAAO,QAAO,KAAK,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI;CACnG;CAZW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAtB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAJlC,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACHD,MAAM,gBAAgB,QAAwB,IAAI,QAAQ,uBAAuB,MAAM;AAOvF,IAAa,sBAAb,MAAa,oBAAmB;CAM9B,cAAA;EALA,KAAA,aAAa,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAEtB,KAAA,KAAK,OAAO,UAAU;EAC/B,KAAA,cAAc;EAGpB,aAAY;GACV,KAAK,UAAU,KAAK,WAAU,CAAE;EAClC,CAAC;CACH;CAEQ,UAAU,MAAmB;EACnC,MAAM,KAAK,KAAK,GAAG;EAEnB,IAAI,CAAC,MAAM;GAIT,IAAI,KAAK,aAAa;IACpB,GAAG,gBAAgB,SAAS,eAAe,GAAG,eAAe,EAAE,CAAC;IAChE,KAAK,cAAc;GACrB;GACA;EACF;EAEA,MAAM,YAAY,GAAG,eAAe;EACpC,MAAM,UAAU,aAAa,IAAI;EACjC,MAAM,QAAQ,IAAI,OAAO,SAAS,IAAI;EACtC,MAAM,QAAQ,UAAU,MAAM,KAAK;EACnC,MAAM,UAAU,UAAU,MAAM,KAAK,KAAK,CAAA;EAE1C,MAAM,WAAW,SAAS,uBAAsB;EAChD,MAAM,SAAS,MAAM,MAAK;GACxB,SAAS,YAAY,SAAS,eAAe,IAAI,CAAC;GAClD,IAAI,QAAQ,IAAI;IACd,MAAM,OAAO,SAAS,cAAc,MAAM;IAC1C,KAAK,MAAM,aAAa;IACxB,KAAK,cAAc,QAAQ;IAC3B,SAAS,YAAY,IAAI;GAC3B;EACF,CAAC;EAED,GAAG,gBAAgB,QAAQ;EAC3B,KAAK,cAAc;CACrB;CA7CW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAmB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAnB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAmB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA,EAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAAnB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAL/B,MAAA;EAAU,MAAA,CAAA;GAET,UAAU;GACV,YAAY;EACb,CAAA;;;;;;;;;;;;ACFD,IAAa,wBAAb,MAAa,sBAAqB;CAJlC,cAAA;EAKE,KAAA,iBAAiB,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAoBvC;CAjBC,UAAU,OAAoB;EAa5B,IAAI,CAAC;GAXH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EAEG,CAAA,CAAY,SAAS,MAAM,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,MAAM,WAAW,KAAK,eAAc,GAC7F,MAAM,eAAc;CAExB;CApBW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAqB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAArB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAqB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,gBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA,EAAA;GAAA,MAAA,EAAA,WAAA,EAAA,WAAA,oBAAA,EAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAArB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EAJjC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,YAAY;EACb,CAAA;;;;;;;;;;;;GAIE,MAAA;GAAa,MAAA,CAAA,WAAW,CAAC,QAAQ,CAAC;;;;ACHrC,IAAa,eAAb,MAAa,aAAY;CACvB,UACE,OACA,QACA,YAAmB;EAEnB,OAAO,MAAM,QAAQ,MAAM,IACvB,QAAQ,OAAO,MAAK,MAAM,aAAa,IAAI,gBAAgB,QAAQ,cAAc,UAAU,CAAE,CAAC,IAC9F,aACE,QAAQ,gBAAgB,SAAS,cACjC,UAAU;CAClB;CAXW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAZ;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EAJxB,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACCD,IAAa,oBAAb,MAAa,kBAAiB;CAY5B,UACE,OACA,OACA,eAAwB,OAAK;EAE7B,IAAI,CAAC,OACH,OAAO;EAGT,IAAI,cACF,OAAO,MAAM,QAAQ,KAAK,IACtB,MAAM,KAAI,SAAS,QAAU,KAAK,UAAqB,KAAM,EAAG,IAChE,QACI,MAAM,UAAqB,KAC7B;EAGR,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,QAAU,MAAM,EAAE,GAAG,UAAqB,KAAM;EAGzD,OAAO,QAAU,MAAM,UAAqB,KAAM;CACpD;CAlCW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAjB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAJ7B,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACLD,IAAY;CAAZ,SAAY,mBAAiB;CAC3B,kBAAA,kBAAA,YAAA,OAAA;CACA,kBAAA,kBAAA,YAAA,QAAA;CACA,kBAAA,kBAAA,kBAAA,QAAA;AACF,EAAA,CAJY,sBAAA,oBAAiB,CAAA,EAAA;ACM7B,MAAa,kBAAkB,IAAI,eAAe,aAAa,EAC7D,eAAc;CAEZ,OAD2B,OAAO,kBAC3B,CAAA,CAAmB,QAAQ,eAAe,kBAAkB,OAAM,IAAK,CAAC,CAAC,KAAK,KAAI,MAAK,EAAE,OAAO,CAAC;AAC1G,EACD,CAAA;ACLD,MAAa,wBAAwB,IAAI,eAAe,mBAAmB,EACzE,eAAc;CAEZ,OAD2B,OAAO,kBAC3B,CAAA,CAAmB,QAAQ,eAAe,kBAAkB,aAAY,IAAK,CAAC,CAAC,KAAK,KAAI,MAAK,EAAE,OAAO,CAAC;AAChH,EACD,CAAA;ACXD,IAAY;CAAZ,SAAY,OAAK;CAEf,MAAA,kBAAA;CACA,MAAA,kBAAA;CACA,MAAA,sBAAA;CACA,MAAA,kBAAA;CACA,MAAA,kBAAA;CACA,MAAA,wBAAA;CACA,MAAA,kBAAA;CAGA,MAAA,oBAAA;CACA,MAAA,oBAAA;CACA,MAAA,wBAAA;CACA,MAAA,oBAAA;CACA,MAAA,oBAAA;CACA,MAAA,0BAAA;CACA,MAAA,oBAAA;CAGA,MAAA,mBAAA;CACA,MAAA,mBAAA;CACA,MAAA,mBAAA;CACA,MAAA,yBAAA;CACA,MAAA,uBAAA;CAGA,MAAA,2BAAA;CACA,MAAA,yBAAA;CAGA,MAAA,eAAA;CACA,MAAA,cAAA;CACA,MAAA,gBAAA;CACA,MAAA,cAAA;CACA,MAAA,eAAA;CACA,MAAA,eAAA;CAGA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CAGA,MAAA,kBAAA;CACA,MAAA,kBAAA;CACA,MAAA,kBAAA;CACA,MAAA,kBAAA;CACA,MAAA,kBAAA;CAGA,MAAA,WAAA;CAGA,MAAA,eAAA;CACA,MAAA,eAAA;CAGA,MAAA,oBAAA;CACA,MAAA,oBAAA;CACA,MAAA,oBAAA;CACA,MAAA,oBAAA;CACA,MAAA,oBAAA;CAGA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;CAGA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CACA,MAAA,cAAA;CAGA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;CACA,MAAA,gBAAA;AACF,EAAA,CAvFY,UAAA,QAAK,CAAA,EAAA;ACyBjB,IAAa,kBAAb,MAAa,gBAAe;CAC1B,UAAgB,OAAU,SAA0B,SAAiB;EACnE,IAAI,SACF,OAAO,QAAQ,KAAK,SAAS,KAAK;EAGpC,OAAO,QAAQ,KAAK;CACtB;CAPW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAe,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAf;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAe,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA;EAJ3B,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;AClBD,IAAa,oBAAb,MAAa,kBAAiB;CAC5B,UAAU,OAAa;EACrB,MAAM,YAAY,QAAQ;EAC1B,MAAM,gBAAgB,QAAQ;EAE9B,IAAI,iBAAiB,MAAM,iBAAiB,IAC1C,OAAO;EAGT,QAAQ,WAAR;GACE,KAAK,GACH,OAAO;GACT,KAAK,GACH,OAAO;GACT,KAAK,GACH,OAAO;GACT,SACE,OAAO;EACX;CACF;CAnBW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAjB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAJ7B,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACCD,IAAa,eAAb,MAAa,aAAY;CACvB,UAAU,OAAgB,QAAiB,QAAiB,UAAkB;EAC5E,IAAI,OAAO,UAAU,UACnB,OAAO;EAGT,MAAM,YAAY,UAAU,MAAM;EAElC,IAAI,MAAM,UAAU,WAClB,OAAO;EAGT,MAAM,iBAAiB,YAAY;EACnC,MAAM,YAAY,UAAU;EAC5B,IAAI,QAAQ;EAEZ,IAAI,gBAAgB;GAClB,IAAI,CAAC,MAAM,SAAS,KAAK,SAAS,GAChC,QAAQ,MAAM;QAEd,QAAQ,MAAM,QAAQ,KAAK,SAAS;EAExC;EAEA,OAAO,MAAM,UAAU,GAAG,KAAK,IAAI;CACrC;CAzBW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAZ;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EAJxB,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACCD,IAAa,yBAAb,MAAa,uBAAsB;CACjC,UAAU,KAAa,UAAkB,IAAE;EACzC,OAAO,KAAK,WAAW,KAAK,OAAO;CACrC;CAEQ,WAAW,KAAc,MAAY;EAC3C,IAAI,UAAU;EACd,IAAI,OAAO,YAAY,eAAe,YAAY,MAChD,OAAO;EAET,MAAM,eAAe,KAAK,MAAM,eAAe;EAC/C,KAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,IAAI,GAAG,KAAK;GACnD,IAAI,aAAa,OAAO,IACtB;GAEF,UAAW,QAAoC,aAAa;GAC5D,IAAI,OAAO,YAAY,eAAe,YAAY,MAChD,OAAO;EAEX;EACA,OAAO;CACT;CArBW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,QAAA,GAAA,gBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,MAAA;EAAA,CAAA;CAAA;;AAAtB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAJlC,MAAA;EAAK,MAAA,CAAA;GACJ,MAAM;GACN,YAAY;EACb,CAAA;;;ACSD,IAAa,4BAAb,MAAa,0BAAyB;CAIpC,IAAa,iBAAiB,mBAAqC;EACjE,IAAI,kBAAkB,WAAW;GAC/B,KAAK,UAAU,KAAK,IAAI,gBAAgB,kBAAkB,SAAS;GAEnE,MAAM,SAAS,kBAAkB;GACjC,IAAI,QAGF,OAAO,KAAK,MAAM,CAAC,CAAC,SAAQ,cAAa,KAAK,QAAQ,SAAS,WAAW,OAAO,UAAU,CAAC;GAG9F,MAAM,UAAU,kBAAkB;GAClC,IAAI,SAAS;IACX,MAAM,WAAW,KAAK,QAAQ;IAC9B,OAAO,KAAK,OAAO,CAAC,CAAC,SAAQ,WAAS;KACpC,KAAK,aAAa,IAAI,SAAS,OAAO,CAAC,UAAU,QAAQ,OAAO,CAAC;IACnE,CAAC;GACH;EACF;CACF;CAEA,YAA6B,KAAqB;EAArB,KAAA,MAAA;EAxBZ,KAAA,eAAe,IAAI,aAAY;CAwBK;CAErD,cAAW;EACT,IAAI,KAAK,SACP,KAAK,QAAQ,QAAO;EAEtB,KAAK,aAAa,YAAW;CAC/B;CAhCW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAyB,MAAA,CAAA,EAAA,OAAA,GAAA,iBAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAzB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAyB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,kBAAA,mBAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAAzB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAyB,YAAA,CAAA;EALrC,MAAA;EAAU,MAAA,CAAA;GAET,UAAU;GACV,YAAY;EACb,CAAA;;;C,uCAKE,MAAA,M;;ACNH,MAAM,iBAAiB,cAAoD;CACzE,IAAI,YAAY,IACd,OAAO;CAET,IAAI,YAAY,IACd,OAAO;CAET,IAAI,YAAY,MAAM,YAAY,IAChC,OAAO;CAET,OAAO;AACT;AAGA,MAAM,oBAAoB,WAAmB,cAAqC;CAChF,IAAI,cAAc,WAAW,cAAc,WACzC,OAAO;CAET,MAAM,OAAO,cAAc,SAAS;CACpC,OAAO,SAAS,QAAQ,KAAK,OAAO,MAAM;AAC5C;AAGA,MAAM,wBAAwB,WAAmB,cAAqC;CACpF,MAAM,gBAAoF;EACxF,OAAO;GAAE,MAAM;GAAK,KAAK;GAAI,KAAK;EAAG;EACrC,SAAS;GAAE,MAAM;GAAK,KAAK;GAAI,KAAK;EAAG;EACvC,UAAU;GAAE,MAAM;GAAI,KAAK;GAAI,KAAK;EAAE;CACvC;CACD,MAAM,OAAO,cAAc,SAAS;CACpC,IAAI,CAAC,MACH,OAAO;CAIT,MAAM,cAAsE,cAAc;CAC1F,OAAO,cAAc,YAAY,QAAQ;AAC3C;AAEA,MAAa,mBACX,UACA,WACA,QAA2B,UACjB;CAEV,IAAI,YAAY,CAAC,kCAAS,KAAK,QAAQ,GACrC,MAAM,IAAI,MAAM,0BAA0B;CAG5C,MAAM,WAAW,SAAS,QAAQ;CAClC,MAAM,YAAY,SAAS,IAAI;CAC/B,MAAM,QAAQ,UAAU,QAAQ,iBAAiB,WAAW,SAAS,IAAI,qBAAqB,WAAW,SAAS;CAClH,SAAS,IAAI,MAAM,SAAS,IAAI,QAAQ,GAAG;CAE3C,OAAO,SAAS,QAAQ;AAC1B;AAMA,MAAa,YAAY,aAAyD;CAChF,MAAM,WAAW,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE;CAE/C,MAAM,KAAM,YAAY,KAAM,OAAO;CACrC,MAAM,KAAM,YAAY,IAAK,OAAO;CACpC,MAAM,KAAK,WAAW,OAAO;CAG7B,MAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;CAC5B,MAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;CAE5B,IAAI,IAAI;CACR,IAAI;CACJ,MAAM,KAAK,MAAM,OAAO;CAExB,IAAI,QAAQ,KACV,IAAI,IAAI;MACH;EACL,MAAM,IAAI,MAAM;EAChB,IAAI,IAAI,KAAM,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM;EAE/C,QAAQ,KAAR;GACE,KAAK;IACH,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI;IAC/B;GACF,KAAK;IACH,KAAK,IAAI,KAAK,IAAI;IAClB;GACF,KAAK,GACH,KAAK,IAAI,KAAK,IAAI;EAEtB;EAEA,KAAK;CACP;CAEA,OAAO;EAAE;EAAG;EAAG;CAAC;AAClB;AAMA,MAAa,YAAY,aAAyD;CAChF,MAAM,EAAE,GAAG,GAAG,MAAM;CAEpB,MAAM,YAAY,GAAW,GAAW,MAAqB;EAC3D,IAAI,QAAQ;EACZ,IAAI,QAAQ,GACV,SAAS;EAEX,IAAI,QAAQ,GACV,SAAS;EAEX,IAAI,QAAQ,IAAI,GACd,OAAO,KAAK,IAAI,KAAK,IAAI;EAE3B,IAAI,QAAQ,IAAI,GACd,OAAO;EAET,IAAI,QAAQ,IAAI,GACd,OAAO,KAAK,IAAI,MAAM,IAAI,IAAI,SAAS;EAEzC,OAAO;CACT;CAEA,MAAM,QAAQ,IAAI,KAAM,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI;CAClD,MAAM,QAAQ,IAAI,IAAI;CAEtB,MAAM,IAAI,SAAS,OAAO,OAAO,IAAI,IAAI,CAAC;CAC1C,MAAM,IAAI,SAAS,OAAO,OAAO,CAAC;CAClC,MAAM,IAAI,SAAS,OAAO,OAAO,IAAI,IAAI,CAAC;CAK1C,OAAO,KAFW,KAAK,MAAM,IAAI,GAAG,KAAK,KAAO,KAAK,MAAM,IAAI,GAAG,KAAK,IAAK,KAAK,MAAM,IAAI,GAAG,EAEnF,CAAS,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;AAClD;AAMA,MAAM,SAAS,UAA0B,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;ACzJvE,MAAa,gBAAgB;CAE3B,UAAU,cAA6B;EACrC,IAAI,cAAc,WAChB,OAAO;EAET,IAAI,cAAc,QAChB,OAAO;EAET,IAAI,cAAc,WAChB,OAAO;EAET,IAAI,cAAc,SAChB,OAAO;EAET,IAAI,cAAc,MAChB,OAAO;EAET,OAAO;CACT;CAGA,eAAe,cAA4B;EACzC,IAAI,cAAc,MAChB,OAAO,MAAM;EAEf,OAAO,MAAM;CACf;CAGA,cAAc,UAA0B;EACtC,IAAI,UAAU,MACZ,OAAO;OAEP,OAAO;CAEX;CAGA,cAAc,WAAoB,MAAc,UAAkB,UAAwB,aAAoB;EAG5G,OAAO,GADc,YAAY,WAAW,OAAO,SAAS,YAAY,SAAS,KAC3D,GAAI,SAAQ,GAFd,YAAY,eAAe,GAEE,GAAI;CACvD;AACD"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-core.mjs","names":["daDk","itIt","jaJp","nbNo","plPl","ptBr","svSe","i1.LanguageService"],"sources":["../../../components/core/language.model.ts","../../../components/core/language.service.ts","../../../components/core/ellipse-text.directive.ts","../tmp-esm2022/components/core/assets/i18n/da-dk.json","../tmp-esm2022/components/core/assets/i18n/de.json","../tmp-esm2022/components/core/assets/i18n/en.json","../tmp-esm2022/components/core/assets/i18n/es.json","../tmp-esm2022/components/core/assets/i18n/fr.json","../tmp-esm2022/components/core/assets/i18n/it-it.json","../tmp-esm2022/components/core/assets/i18n/ja-jp.json","../tmp-esm2022/components/core/assets/i18n/nb-no.json","../tmp-esm2022/components/core/assets/i18n/nl.json","../tmp-esm2022/components/core/assets/i18n/pl-pl.json","../tmp-esm2022/components/core/assets/i18n/pt-br.json","../tmp-esm2022/components/core/assets/i18n/sv-se.json","../../../components/core/ui-translate.pipe.ts","../../../components/core/keyboard-events.model.ts","../../../components/core/hex-to-rgb.ts","../../../components/core/autocomplete-utils.ts","../../../components/core/digits-only.directive.ts","../../../components/core/has-validation-error.pipe.ts","../../../components/core/directives/select-text.directive.ts","../../../components/core/directives/prevent-input.directive.ts","../../../components/core/pipes/includes.pipe.ts","../../../components/core/pipes/transform-item.pipe.ts","../../../components/core/screen-breakpoints.model.ts","../../../components/core/is-mobile.ts","../../../components/core/is-large-tablet.ts","../../../components/core/colors.model.ts","../../../components/core/memoize-func.pipe.ts","../../../components/core/ui-ordinal-suffix.pipe.ts","../../../components/core/truncate.pipe.ts","../../../components/core/data-property-getter.pipe.ts","../../../components/core/dynamic-component.directive.ts","../../../components/core/color-contrast.ts","../../../components/core/alert-bars.utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention -- enum members mirror BCP-47 locale codes, which are also the serialized values and the public API */\nexport enum Language {\n en = 'en',\n es = 'es',\n nl = 'nl',\n fr = 'fr',\n de = 'de',\n 'it-it' = 'it-it',\n 'ja-jp' = 'ja-jp',\n 'pt-br' = 'pt-br',\n 'da-dk' = 'da-dk',\n 'nb-no' = 'nb-no',\n 'pl-pl' = 'pl-pl',\n 'sv-se' = 'sv-se',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Language } from './language.model';\n//This type enforces all translations are present when some translation needs to live in the frontend\nexport type TranslationMap = { [key in Language]: string };\n\n//This function retrieves all languages from the enum. It is used to initialize transloco\nexport const getAvailableLangs = () => Object.values(Language);\n\n//This type is intended for UI uses only\nexport type UILanguage = { code: Language | string; label: string };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LanguageService {\n static readonly defaultLanguage = Language.en;\n\n readonly #currentLang$ = new BehaviorSubject(LanguageService.defaultLanguage);\n\n readonly defaultLanguageList: UILanguage[] = [\n { code: Language.en, label: 'English' },\n { code: Language.es, label: 'Spanish' },\n { code: Language.de, label: 'German' },\n { code: Language.fr, label: 'French' },\n { code: Language.nl, label: 'Dutch' },\n { code: Language['it-it'], label: 'Italian' },\n { code: Language['ja-jp'], label: 'Japanese' },\n { code: Language['pt-br'], label: 'Portuguese' },\n { code: Language['da-dk'], label: 'Danish' },\n { code: Language['nb-no'], label: 'Norwegian' },\n { code: Language['pl-pl'], label: 'Polish' },\n { code: Language['sv-se'], label: 'Swedish' },\n ];\n\n setActiveLang(language: Language): void {\n this.#currentLang$.next(language);\n }\n\n getActiveLang(): Observable<Language> {\n return this.#currentLang$.asObservable();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, startWith, Subject, combineLatest } from 'rxjs';\n\n/**\n * Checks if element ellipsis\n */\n@Directive({\n selector: '[uiEllipseText]',\n standalone: true,\n})\nexport class EllipseTextDirective implements OnInit {\n @Input() isMultiline = false;\n @Input() maxDiffPixels = 0;\n checkEllipsis$ = new Subject<void>();\n refreshEllipsis$ = new Subject<void>();\n\n @Input() set refresh(_: unknown) {\n this.refreshEllipsis$.next();\n }\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- public output; dropping on- prefix is breaking, deferred to the breaking-change MAJOR (see plan)\n @Output() onChangeTextState = new EventEmitter<boolean>();\n\n @HostListener('window:resize')\n resize(): void {\n this.checkEllipsis$.next();\n }\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n\n constructor(private readonly el: ElementRef) {}\n\n ngOnInit() {\n combineLatest([this.checkEllipsis$.pipe(startWith(null)), this.refreshEllipsis$.pipe(startWith(null))])\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const textElement = this.el.nativeElement as HTMLElement;\n this.onChangeTextState.emit(\n this.isMultiline\n ? textElement.clientHeight + this.maxDiffPixels < textElement.scrollHeight\n : textElement.clientWidth + this.maxDiffPixels < textElement.scrollWidth\n );\n });\n\n // The element can resize without the window (an animating sidebar), and web fonts change text widths.\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => this.checkEllipsis$.next());\n observer.observe(this.el.nativeElement as HTMLElement);\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n void this.document.fonts?.ready.then(() => this.checkEllipsis$.next());\n }\n}\n","","","","","","","","","","","","","import { Pipe, PipeTransform } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport * as daDk from './assets/i18n/da-dk.json';\nimport de from './assets/i18n/de.json';\nimport en from './assets/i18n/en.json';\nimport es from './assets/i18n/es.json';\nimport fr from './assets/i18n/fr.json';\nimport * as itIt from './assets/i18n/it-it.json';\nimport * as jaJp from './assets/i18n/ja-jp.json';\nimport * as nbNo from './assets/i18n/nb-no.json';\nimport nl from './assets/i18n/nl.json';\nimport * as plPl from './assets/i18n/pl-pl.json';\nimport * as ptBr from './assets/i18n/pt-br.json';\nimport * as svSe from './assets/i18n/sv-se.json';\nimport { LanguageService } from './language.service';\n\n/** A translation JSON node: a leaf string or a nested map of further nodes. */\ntype TranslationNode = string | { [key: string]: TranslationNode };\n\n/**\n * Used for translations\n */\n@Pipe({\n name: 'uiTranslate',\n standalone: true,\n})\nexport class UiTranslatePipe implements PipeTransform {\n protected readonly LANGS: { [key: string]: unknown } = {\n en,\n es,\n de,\n 'da-dk': daDk,\n fr,\n 'it-it': itIt,\n 'ja-jp': jaJp,\n 'nb-no': nbNo,\n nl,\n 'pl-pl': plPl,\n 'pt-br': ptBr,\n 'sv-se': svSe,\n };\n\n constructor(private readonly languageService: LanguageService) {}\n /**\n * Finds the translation by keys with interpolation if provided\n * @param translateKey key, can have multiple keys separated with '.' eg ('KEY', 'FIRST_LVL_KEY.SECOND_LVL_KEY')\n * @param activeLang current active language\n * @param interpolationData data that will be used to replace interpolations in translated variant\n * For example, for translate text like this\n * 'You have {{attemptsAmount}} attempts left\n * the interpolation object should be { attemptsAmount: 10 }\n */\n transform(translateKey: string, interpolationData?: Record<string, unknown>): Observable<string> {\n return this.languageService.getActiveLang().pipe(\n map(activeLang => {\n const currentLangObject = JSON.parse(JSON.stringify(this.LANGS[activeLang])) as TranslationNode;\n const enLangObject = JSON.parse(JSON.stringify(this.LANGS['en'])) as TranslationNode;\n const keys = translateKey.split('.');\n const drill = (root: TranslationNode): TranslationNode | undefined =>\n keys.reduce<TranslationNode | undefined>(\n (acc, currentKey) => (acc && typeof acc === 'object' ? acc[currentKey] : undefined),\n root\n );\n const translation = drill(currentLangObject);\n\n if (translation) {\n return this.interpolate(translation as string, interpolationData);\n }\n\n return this.interpolate(drill(enLangObject) as string, interpolationData);\n })\n );\n }\n\n /**\n * Used to find and replace interpolation in text\n * @param translation the translation text\n * @param interpolationData the interpolation object\n */\n private interpolate(translation: string, interpolationData?: Record<string, unknown>): string {\n return translation?.replace(/{{(.*?)}}/g, (match: string, group: string) => {\n const value = interpolationData?.[group.trim()] as string;\n return value ?? match;\n });\n }\n}\n","export enum IKeyboardEvent {\n ENTER = 'Enter',\n SPACE = ' ',\n ARROW_DOWN = 'ArrowDown',\n ARROW_UP = 'ArrowUp',\n ESCAPE = 'Escape',\n HOME = 'Home',\n END = 'End',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n}\n","export const hexToRgbWithAlpha = (hex: string, alpha: number = 0.3): string => {\n const normalizedHex = hex.replace(/^#/, '');\n\n const bigint = parseInt(normalizedHex, 16);\n /* eslint-disable no-bitwise -- standard RGB channel extraction from a packed 24-bit integer */\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n /* eslint-enable no-bitwise */\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n","/** A keyed autocomplete option (accessed by a runtime text/value field name). */\ntype UnknownRecord = Record<string, unknown>;\n\n/** A group of options; `filteredItems` is populated in place by `filterItems`. */\ninterface AutocompleteGroupLike {\n items: unknown[];\n filteredItems?: unknown[];\n}\n\nexport class AutocompleteUtils {\n static transformDisplayValue(value: unknown, textField: string): unknown {\n return AutocompleteUtils.isPrimitive(value) ? value : (value as UnknownRecord | null)?.[textField];\n }\n\n static filterItems<T>(items: T[], inputValue: string, textField?: string, isGroup = false): T[] {\n const query = inputValue.toLowerCase();\n if (!AutocompleteUtils.isPrimitive(items) && textField) {\n if (isGroup) {\n return items.filter(item => {\n const group = item as unknown as AutocompleteGroupLike;\n const filtered = group.items.filter(member =>\n AutocompleteUtils.toLower((member as UnknownRecord)[textField]).includes(query)\n );\n group.filteredItems = filtered;\n return filtered.length;\n });\n }\n return items.filter(item => AutocompleteUtils.toLower((item as UnknownRecord)[textField]).includes(query));\n } else {\n if (isGroup) {\n return items.filter(\n item =>\n (item as unknown as AutocompleteGroupLike).items.filter(member =>\n AutocompleteUtils.toLower(member).includes(query)\n ).length\n );\n }\n return items.filter(item => AutocompleteUtils.toLower(item).includes(query));\n }\n }\n\n static isPrimitive(value: unknown): boolean {\n if (Array.isArray(value)) {\n return value.some(item => typeof item !== 'object');\n } else {\n return typeof value !== 'object';\n }\n }\n\n static isArray(value: unknown): boolean {\n return Array.isArray(value);\n }\n\n /// NEW\n static throwInvalidSetupError(): void {\n throw new Error(\n `AutocompleteComponent textField/valueField properties are not provided!\\n\n Items list that has non primitive values requires textField & valueField to be passed.`\n );\n }\n\n static excludeSuggestions<T>(items: T[], excludeItems: T[], valueField?: string): T[] {\n if (AutocompleteUtils.isPrimitive(items)) {\n return items?.filter(item => !excludeItems.find(excludeItem => excludeItem === item)) ?? [];\n } else {\n return valueField\n ? (items?.filter(\n item =>\n !excludeItems.find(\n excludeItem => (excludeItem as UnknownRecord)[valueField] === (item as UnknownRecord)[valueField]\n )\n ) ?? [])\n : [];\n }\n }\n\n static shouldBeObject(value: unknown, textField: string, valueField: string): boolean {\n return Boolean(valueField) && Boolean(textField) && typeof value !== 'object';\n }\n\n static createValueItem(value: unknown, textField: string, valueField: string): unknown {\n return AutocompleteUtils.shouldBeObject(value, textField, valueField)\n ? { [textField]: value, [valueField]: value }\n : value;\n }\n\n static findDuplicate(value: unknown, selectedValue: unknown, lookupKey?: string): unknown {\n if (AutocompleteUtils.isArray(value)) {\n return (value as unknown[]).find(v => {\n if (!AutocompleteUtils.isPrimitive(v) && lookupKey) {\n return (v as UnknownRecord)[lookupKey] === (selectedValue as UnknownRecord)[lookupKey];\n }\n return v === selectedValue;\n });\n } else {\n return value === selectedValue;\n }\n }\n\n static countMatchingWords(words: unknown[], query: string, textField?: string, isGroup = false): number {\n const lowerCaseQuery = query.toLowerCase();\n if (isGroup) {\n return words.filter(\n word =>\n (word as AutocompleteGroupLike).items.filter(item =>\n typeof item === 'object' && textField\n ? AutocompleteUtils.toLower((item as UnknownRecord)[textField]).includes(lowerCaseQuery)\n : AutocompleteUtils.toLower(item).includes(lowerCaseQuery)\n ).length\n ).length;\n }\n const matchingWords = words.filter(word =>\n typeof word === 'object' && textField\n ? AutocompleteUtils.toLower((word as UnknownRecord)[textField]).includes(lowerCaseQuery)\n : AutocompleteUtils.toLower(word).includes(lowerCaseQuery)\n );\n return matchingWords.length;\n }\n\n /**\n * Faithful to the previous `any` behaviour: text/value fields are expected to\n * be strings, and calling `.toLowerCase()` on a non-string throws exactly as\n * it did before. Kept private so it is not part of the public API surface.\n */\n private static toLower(value: unknown): string {\n return (value as string).toLowerCase();\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nconst ARROW_DOWN_KEY_CODE = 40;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[digitsOnly]',\n standalone: true,\n})\nexport class DigitsOnlyDirective {\n constructor(private readonly el: ElementRef<HTMLInputElement>) {}\n\n @Input() allowNegative = false;\n @Input() allowDecimal = false;\n @Input() allowOnlyDigits = false;\n regex: RegExp;\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: KeyboardEvent) {\n this.validate(event, event.key);\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n const pastedText = (event as ClipboardEvent) && (event as ClipboardEvent)?.clipboardData?.getData('text/plain'); // Non-IE browsers\n this.validate(event, pastedText ?? '');\n }\n\n @HostListener('keydown', [`$event`])\n onKeydown(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- KeyboardEvent.which is deprecated in favor of .key/.code; migrating this keyboard-nav check is behaviour-sensitive and out of scope for this lint pass\n const isArrowDown = event.which === ARROW_DOWN_KEY_CODE;\n if (!this.allowNegative) {\n if (isArrowDown && target.value && Number(target.value) <= 0) {\n event.preventDefault();\n } else if (isArrowDown && target.value === '') {\n this.el.nativeElement.value = '1';\n }\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n if (!this.allowNegative && target.value && Number(target.value) < 0) {\n setTimeout(() => (this.el.nativeElement.value = '0'), 0);\n }\n }\n\n validate(event: Event, text: string) {\n if (this.allowOnlyDigits) {\n const txtInput = this.el.nativeElement;\n const newValue =\n txtInput.value.substring(0, txtInput.selectionStart ?? 0) +\n text +\n txtInput.value.substring(txtInput.selectionEnd ?? 0);\n if (!this.regex) {\n this.regex = new RegExp(\n `^${this.allowNegative ? '-?' : ''}${this.allowDecimal ? '((\\\\d+\\\\.?)|(\\\\.?))\\\\d*' : '\\\\d*'}$`,\n 'g'\n );\n }\n if (!newValue.match(this.regex)) {\n event.preventDefault();\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'hasValidationError',\n standalone: true,\n})\nexport class HasValidationErrorPipe implements PipeTransform {\n /**\n * List of the error types that are handled\n */\n private readonly errorTypes = ['maxlength', 'minlength', 'min', 'max', 'required', 'email'];\n\n /**\n * Checks if the error on the NgControl is in the list of handled error types\n * @param value\n */\n transform(value: Record<string, unknown> | null | undefined): boolean {\n return value ? Boolean(Object.keys(value).filter(key => this.errorTypes.includes(key)).length) : false;\n }\n}\n","import { Directive, ElementRef, inject, input, effect } from '@angular/core';\n\nconst escapeRegExp = (str: string): string => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[selectText]',\n standalone: true,\n})\nexport class SelectTextDirective {\n selectText = input<string | null>(null);\n\n private readonly el = inject(ElementRef);\n private highlighted = false;\n\n constructor() {\n effect(() => {\n this.highlight(this.selectText());\n });\n }\n\n private highlight(term: string | null): void {\n const el = this.el.nativeElement as HTMLElement;\n\n if (!term) {\n // Only restore if we previously replaced Angular's content with highlighted nodes.\n // Never touch the DOM on init — that destroys Angular's tracked text interpolation\n // nodes, breaking CDK virtual scroll recycling.\n if (this.highlighted) {\n el.replaceChildren(document.createTextNode(el.textContent ?? ''));\n this.highlighted = false;\n }\n return;\n }\n\n const plainText = el.textContent ?? '';\n const escaped = escapeRegExp(term);\n const regex = new RegExp(escaped, 'gi');\n const parts = plainText.split(regex);\n const matches = plainText.match(regex) ?? [];\n\n const fragment = document.createDocumentFragment();\n parts.forEach((part, i) => {\n fragment.appendChild(document.createTextNode(part));\n if (matches[i]) {\n const span = document.createElement('span');\n span.style.fontWeight = 'bold';\n span.textContent = matches[i];\n fragment.appendChild(span);\n }\n });\n\n el.replaceChildren(fragment);\n this.highlighted = true;\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\n\n@Directive({\n selector: '[uiPreventInput]',\n standalone: true,\n})\nexport class PreventInputDirective {\n uiPreventInput = input<boolean>(false);\n\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 { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'includes',\n standalone: true,\n})\nexport class IncludesPipe implements PipeTransform {\n transform(\n value: Record<string, unknown>,\n values: Record<string, unknown> | Record<string, unknown>[],\n valueField?: string\n ): boolean {\n return Array.isArray(values)\n ? Boolean(values.find(v => (valueField ? v?.[valueField] === value?.[valueField] : value === v)))\n : valueField\n ? value?.[valueField] === values?.[valueField]\n : value === values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'transformItem',\n standalone: true,\n})\nexport class TransformItemPipe implements PipeTransform {\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList: true\n ): string[];\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList?: false\n ): string;\n\n transform(\n value: Record<string, unknown> | Record<string, unknown>[] | null | undefined,\n field: string,\n getValueList: boolean = false\n ): string | string[] {\n if (!value) {\n return '';\n }\n\n if (getValueList) {\n return Array.isArray(value)\n ? value.map(item => (field ? ((item[field] as string) ?? '') : ''))\n : field\n ? ((value[field] as string) ?? '')\n : '';\n }\n\n if (Array.isArray(value)) {\n return field ? ((value[0]?.[field] as string) ?? '') : '';\n }\n\n return field ? ((value[field] as string) ?? '') : '';\n }\n}\n","export enum ScreenBreakpoints {\n MOBILE = 600,\n TABLET = 1023,\n LARGE_TABLET = 1280,\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map } from 'rxjs';\n\nimport { ScreenBreakpoints } from './screen-breakpoints.model';\n\nexport const IS_MOBILE_TOKEN = new InjectionToken('Is mobile', {\n factory: () => {\n const breakpointObserver = inject(BreakpointObserver);\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.MOBILE}px)`).pipe(map(v => v.matches));\n },\n});\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { map } from 'rxjs';\r\n\r\nimport { ScreenBreakpoints } from './screen-breakpoints.model';\r\n\r\nexport const IS_LARGE_TABLET_TOKEN = new InjectionToken('Is large tablet', {\r\n factory: () => {\r\n const breakpointObserver = inject(BreakpointObserver);\r\n return breakpointObserver.observe(`(max-width: ${ScreenBreakpoints.LARGE_TABLET}px)`).pipe(map(v => v.matches));\r\n },\r\n});\r\n","export enum Color {\n // Teal colors\n TGO_TEAL_60B = '#1C443C',\n TGO_TEAL_30B = '#31766A',\n TGO_TEAL_DEFAULT = '#46A997',\n TGO_TEAL_30W = '#7EC3B6',\n TGO_TEAL_60W = '#B5DDD5',\n TGO_TEAL_SECONDARY = '#CBD6CB',\n TGO_TEAL_90W = '#ECF6F5',\n\n // Petrol colors\n TGO_PETROL_60B = '#102930',\n TGO_PETROL_30B = '#1B4754',\n TGO_PETROL_DEFAULT = '#276678',\n TGO_PETROL_30W = '#6894A0',\n TGO_PETROL_60W = '#A9C2C9',\n TGO_PETROL_SECONDARY = '#C8D7DE',\n TGO_PETROL_90W = '#E9F0F1',\n\n // Error colors\n TGO_ERROR_60B = '#513131',\n TGO_ERROR_30B = '#8E5655',\n TGO_ERROR_60W = '#E3C3C6',\n TGO_ERROR_SECONDARY = '#F0DAD9',\n TGO_ERROR_DEFAULT = '#CB7B7A',\n\n // Warning colors\n TGO_WARNING_SECONDARY = '#F0D6BB',\n TGO_WARNING_DEFAULT = '#CCA45F',\n\n // Black colors - grayscale\n TGO_BLACK = '#000000',\n TGO_DARK = '#888888',\n TGO_MEDIUM = '#E0E0E0',\n TGO_GREY = '#EDEDED',\n TGO_LIGHT = '#F6F6F6',\n TGO_WHITE = '#FFFFFF',\n\n // Brand colors\n BRAND_60 = '#A90686',\n BRAND_50 = '#D410AA',\n BRAND_40 = '#FF54DA',\n BRAND_30 = '#FFB3EE',\n BRAND_20 = '#FFE6FA',\n BRAND_10 = '#FFF2FC',\n\n // Grayscale colors\n GRAYSCALE_50 = '#666666',\n GRAYSCALE_40 = '#919191',\n GRAYSCALE_30 = '#D3D3D3',\n GRAYSCALE_20 = '#E9E9E9',\n GRAYSCALE_10 = '#F4F4F4',\n\n // Additional colors\n BLACK = '#242424',\n\n // Accent colors\n ACCENT_20 = '#FFF5ED',\n ACCENT_10 = '#FFFAF6',\n\n // Informative colors\n INFORMATIVE_50 = '#1A47AA',\n INFORMATIVE_40 = '#0165FC',\n INFORMATIVE_30 = '#277CFD',\n INFORMATIVE_20 = '#99C1FE',\n INFORMATIVE_10 = '#D9E8FF',\n\n // Success colors\n SUCCESS_50 = '#3C9A13',\n SUCCESS_40 = '#56C71A',\n SUCCESS_30 = '#80D63E',\n SUCCESS_20 = '#AAE47A',\n SUCCESS_10 = '#D4F2C3',\n\n // Error additional colors\n ERROR_50 = '#E02800',\n ERROR_40 = '#FF3003',\n ERROR_30 = '#FF6E4F',\n ERROR_20 = '#FFAC9A',\n ERROR_10 = '#FFEAE6',\n\n // Warning additional colors\n WARNING_50 = '#D07D00',\n WARNING_40 = '#FF9A03',\n WARNING_30 = '#FFC268',\n WARNING_20 = '#FFE1B3',\n WARNING_10 = '#FFF5E6',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * USAGE:\n * {{ argument | memoizeFunc : method [: context] }}\n *\n * You could provide multiple arguments for the function like that:\n * {{ [argument1, argument2] | memoizeFunc : method [: context] }}\n *\n *\n * FUNCTION WITH CONTEXT\n * We still could have optimization in impure functions with Angular pipes. Just provide context as second parameter\n * to the memoizeFunc pipe.\n *\n * {{ argument | memoizeFunc : method : this }}\n *\n * Alternative variant use 'bind'\n *\n * {{ argument | memoizeFunc : method.bind(this) }}\n *\n * */\n@Pipe({\n name: 'memoizeFunc',\n standalone: true,\n})\nexport class MemoizeFuncPipe implements PipeTransform {\n transform<T, K>(value: T, handler: (value: T) => K, context?: unknown): K {\n if (context) {\n return handler.call(context, value);\n }\n\n return handler(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ordinalSuffix',\n standalone: true,\n})\nexport class OrdinalSuffixPipe implements PipeTransform {\n transform(value: number): string {\n const lastDigit = value % 10;\n const lastTwoDigits = value % 100;\n\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n return 'PERCENTILE_SUFFIXES.TH';\n }\n\n switch (lastDigit) {\n case 1:\n return 'PERCENTILE_SUFFIXES.ST';\n case 2:\n return 'PERCENTILE_SUFFIXES.ND';\n case 3:\n return 'PERCENTILE_SUFFIXES.RD';\n default:\n return 'PERCENTILE_SUFFIXES.TH';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: true,\n})\nexport class TruncatePipe implements PipeTransform {\n transform(input: unknown, length?: number, suffix?: string, preserve?: boolean): unknown {\n if (typeof input !== 'string') {\n return input;\n }\n\n const maxLength = length ?? input.length;\n\n if (input.length <= maxLength) {\n return input;\n }\n\n const shouldPreserve = preserve ?? false;\n const suffixStr = suffix ?? '';\n let index = maxLength;\n\n if (shouldPreserve) {\n if (!input.includes(' ', maxLength)) {\n index = input.length;\n } else {\n index = input.indexOf(' ', maxLength);\n }\n }\n\n return input.substring(0, index) + suffixStr;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dataPropertyGetter',\n standalone: true,\n})\nexport class DataPropertyGetterPipe implements PipeTransform {\n transform(obj: object, keyName: string = '') {\n return this.getDeepVal(obj, keyName);\n }\n\n private getDeepVal(obj: unknown, path: string): unknown {\n let current = obj;\n if (typeof current === 'undefined' || current === null) {\n return '';\n }\n const splittedPath = path.split(/[.[\\]\"']{1,2}/);\n for (let i = 0, l = splittedPath.length; i < l; i++) {\n if (splittedPath[i] === '') {\n continue;\n }\n current = (current as Record<string, unknown>)[splittedPath[i]];\n if (typeof current === 'undefined' || current === null) {\n return '';\n }\n }\n return current;\n }\n}\n","import { ComponentRef, Directive, EventEmitter, Input, OnDestroy, Type, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ninterface IComponentRenderer {\n component: Type<unknown>;\n inputs?: Record<string, unknown>;\n outputs?: { [key: string]: (event: unknown) => void };\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector -- public directive selector; ui-prefix rename is breaking, deferred to the breaking-change MAJOR (see plan)\n selector: '[dynamicComponent]',\n standalone: true,\n})\nexport class DynamicComponentDirective implements OnDestroy {\n private readonly subscription = new Subscription();\n private compRef: ComponentRef<unknown>;\n\n @Input() set dynamicComponent(componentRenderer: IComponentRenderer) {\n if (componentRenderer.component) {\n this.compRef = this.vcr.createComponent(componentRenderer.component);\n\n const inputs = componentRenderer.inputs;\n if (inputs) {\n // setInput supports both decorator and signal-based inputs; direct instance\n // assignment overwrites signal inputs (InputSignal functions) with raw values.\n Object.keys(inputs).forEach(inputName => this.compRef.setInput(inputName, inputs[inputName]));\n }\n\n const outputs = componentRenderer.outputs;\n if (outputs) {\n const instance = this.compRef.instance as Record<string, EventEmitter<unknown>>;\n Object.keys(outputs).forEach(output => {\n this.subscription.add(instance[output].subscribe(outputs[output]));\n });\n }\n }\n }\n\n constructor(private readonly vcr: ViewContainerRef) {}\n\n ngOnDestroy() {\n if (this.compRef) {\n this.compRef.destroy();\n }\n this.subscription.unsubscribe();\n }\n}\n","/**\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 */\ntype LightnessEvent = 'hover' | 'pressed' | 'disabled';\n\n/** Lightness band of a colour, in percent. `null` = exactly on a 30/70 boundary (no adjustment). */\nconst lightnessBand = (lightness: number): 'high' | 'low' | 'mid' | null => {\n if (lightness > 70) {\n return 'high';\n }\n if (lightness < 30) {\n return 'low';\n }\n if (lightness < 70 && lightness > 30) {\n return 'mid';\n }\n return null;\n};\n\n/** Lightness delta (in percent points) for the `new` theme. */\nconst getNewThemeDelta = (lightness: number, typeEvent: LightnessEvent): number => {\n if (typeEvent !== 'hover' && typeEvent !== 'pressed') {\n return 0;\n }\n const band = lightnessBand(lightness);\n return band === 'low' ? 10 : band ? -10 : 0;\n};\n\n/** Lightness delta (in percent points) for the `classic` theme. */\nconst getClassicThemeDelta = (lightness: number, typeEvent: LightnessEvent): number => {\n const deltasByEvent: Record<LightnessEvent, { high: number; low: number; mid: number }> = {\n hover: { high: -10, low: 10, mid: -10 },\n pressed: { high: -20, low: 30, mid: -20 },\n disabled: { high: 10, low: 50, mid: 20 },\n };\n const band = lightnessBand(lightness);\n if (!band) {\n return 0;\n }\n // typeEvent is LightnessEvent at compile time, but callers may pass an\n // out-of-range button state at runtime (matches the original no-op behaviour).\n const eventDeltas: { high: number; low: number; mid: number } | undefined = deltasByEvent[typeEvent];\n return eventDeltas ? eventDeltas[band] : 0;\n};\n\nexport const adjustLightness = (\n hexColor: string,\n typeEvent: LightnessEvent,\n theme: 'new' | 'classic' = 'new'\n): string => {\n const hexRegex = /^#(?:[0-9A-F]{3}|[0-9A-F]{6})$/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 const delta = theme === 'new' ? getNewThemeDelta(lightness, typeEvent) : getClassicThemeDelta(lightness, typeEvent);\n hslColor.l = clamp(hslColor.l + delta / 100);\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 /* eslint-disable no-bitwise -- standard RGB channel extraction from a packed 24-bit integer */\n const r = ((rgbColor >> 16) & 255) / 255;\n const g = ((rgbColor >> 8) & 255) / 255;\n const b = (rgbColor & 255) / 255;\n /* eslint-enable no-bitwise */\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 let tNorm = t;\n if (tNorm < 0) {\n tNorm += 1;\n }\n if (tNorm > 1) {\n tNorm -= 1;\n }\n if (tNorm < 1 / 6) {\n return p + (q - p) * 6 * tNorm;\n }\n if (tNorm < 1 / 2) {\n return q;\n }\n if (tNorm < 2 / 3) {\n return p + (q - p) * (2 / 3 - tNorm) * 6;\n }\n return p;\n };\n\n const qBase = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const pBase = 2 * l - qBase;\n\n const r = hueToRgb(pBase, qBase, h + 1 / 3);\n const g = hueToRgb(pBase, qBase, h);\n const b = hueToRgb(pBase, qBase, h - 1 / 3);\n\n // eslint-disable-next-line no-bitwise -- standard RGB channel packing into a 24-bit integer\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","import { AlertVariant } from './alert-bar.model';\nimport { Color } from './colors.model';\n\nexport const alertBarsUtil = {\n //Set css class and iconName according type\n setIcon: (alertType: string): string => {\n if (alertType === 'success') {\n return 'Round-check';\n }\n if (alertType === 'info') {\n return 'Info';\n }\n if (alertType === 'warning') {\n return 'Warning';\n }\n if (alertType === 'error') {\n return 'Error';\n }\n if (alertType === 'ai') {\n return 'Ai-fluent-filled';\n }\n return '';\n },\n\n // Resolves the icon color per alert type.\n setIconColor: (alertType: string): Color => {\n if (alertType === 'ai') {\n return Color.BRAND_60;\n }\n return Color.TGO_BLACK;\n },\n\n //Set cssClass for fixed or static position\n setPosition: (fixed: boolean): string => {\n if (fixed === true) {\n return 'fixed';\n } else {\n return 'static';\n }\n },\n\n //Set css class for alertbanner\n setCssClass: (fullWidth: boolean, type: string, position: string, variant: AlertVariant = 'banner'): string => {\n const isFullWidth = fullWidth ? 'full-width' : '';\n const resolvedType = variant === 'banner' ? type : type === 'success' ? 'info' : type;\n return `${resolvedType} ${position} ${isFullWidth} ${variant}`;\n },\n};\n"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -375,12 +375,15 @@ var DialogComponent = class DialogComponent {
|
|
|
375
375
|
"ariaExpanded",
|
|
376
376
|
"ariaControls",
|
|
377
377
|
"ariaPressed",
|
|
378
|
+
"ariaHasPopup",
|
|
378
379
|
"ariaRequired",
|
|
379
380
|
"ariaLabelledby",
|
|
380
381
|
"ariaDescribedby",
|
|
381
382
|
"preventDefault",
|
|
382
383
|
"hasBackground",
|
|
383
384
|
"circular",
|
|
385
|
+
"isSingleLineLabel",
|
|
386
|
+
"iconButtonShape",
|
|
384
387
|
"tooltipPosition",
|
|
385
388
|
"role",
|
|
386
389
|
"iconFilled",
|
|
@@ -1006,12 +1009,15 @@ var DialogCustomComponent = class DialogCustomComponent {
|
|
|
1006
1009
|
"ariaExpanded",
|
|
1007
1010
|
"ariaControls",
|
|
1008
1011
|
"ariaPressed",
|
|
1012
|
+
"ariaHasPopup",
|
|
1009
1013
|
"ariaRequired",
|
|
1010
1014
|
"ariaLabelledby",
|
|
1011
1015
|
"ariaDescribedby",
|
|
1012
1016
|
"preventDefault",
|
|
1013
1017
|
"hasBackground",
|
|
1014
1018
|
"circular",
|
|
1019
|
+
"isSingleLineLabel",
|
|
1020
|
+
"iconButtonShape",
|
|
1015
1021
|
"tooltipPosition",
|
|
1016
1022
|
"role",
|
|
1017
1023
|
"iconFilled",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-dialog.mjs","names":[],"sources":["../../../components/dialog/dialog.component.ts","../../../components/dialog/dialog.component.html","../../../components/dialog/dialog.service.ts","../../../components/dialog/dialog.component.module.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.html","../../../components/dialog/confirm-dialog/confirm-dialog.component.module.ts","../../../components/dialog/dialog-custom/dialog-custom.component.ts","../../../components/dialog/dialog-custom/dialog-custom.component.html","../../../components/dialog/dialog-custom/dialog-custom.component.module.ts"],"sourcesContent":["import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n MAT_DIALOG_DATA,\n MatDialogRef,\n MatDialogState,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n} from '@angular/material/dialog';\nimport { filter } from 'rxjs';\n\nimport { ButtonComponent, ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponent } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatDialogTitle,\n TooltipComponent,\n ButtonComponent,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n @Input() testId: string | null = null;\n\n @Input() closeButtonTestId: string | null = null;\n\n @Input() closeButtonAriaLabel = '';\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Show a spinner in place of the primary button label while the action runs.\n * Also disables the button, so a second click cannot fire\n * `primaryButtonClickEvent` while the first is still in flight.\n *\n * @memberof DialogComponent\n */\n primaryButtonLoading = input(false, { transform: booleanAttribute });\n /**\n *\n * Tooltip shown when hovering the primary button. Bound to a wrapper around the\n * button so it also shows while the button is disabled (a disabled button\n * receives no pointer events), e.g. to explain why the action is unavailable.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() primaryButtonTooltip = '';\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\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 DialogComponent\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 DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n onEsc() {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n // Not a host listener: focus can sit outside <ui-dialog>, e.g. on mat-dialog-container.\n // Optional call: MatDialogRef is stubbed as {} by DialogComponentModule, the stories and many consumer specs.\n this.dialogRef\n .keydownEvents?.()\n .pipe(\n filter(event => event.key === 'Escape' && !hasModifierKey(event)),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onEsc());\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: unknown;\n\n get hasCustomHeader(): boolean {\n return Boolean(this.customHeader);\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n this.cdr.markForCheck();\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n\n // The consumer may have closed the dialog with its own result. Closing again\n // would overwrite that result with undefined, and consumers read a missing\n // result as a cancel (ASM-157).\n if (this.dialogRef.getState() === MatDialogState.OPEN) {\n this.dismiss();\n }\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\" [attr.data-testid]=\"testId\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n @if (!hasCustomHeader) {\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n @if (showCloseButton) {\n <div>\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n [testId]=\"closeButtonTestId\"\n [ariaLabel]=\"closeButtonAriaLabel || ('COMMON.CLOSE' | uiTranslate | async)!\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n }\n }\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n @if (secondaryButtonLabel !== '' || primaryButtonLabel !== '') {\n <div mat-dialog-actions [class.dialog-action-w-message]=\"!!footerMessage\">\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n\n <!-- Projected footer content, rendered to the left of the action buttons -->\n <ng-content select=\"[dialogFooter]\"></ng-content>\n\n @if (!!secondaryButtonLabel) {\n <!-- Action-button ids stay on the ui-button wrappers: five tgo-qa-automation page objects descend from them. -->\n <ui-button\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n }\n @if (!!primaryButtonLabel) {\n <!-- The tooltip wraps the button: a disabled ui-button receives no pointer\n events, so the tooltip must trigger from an enclosing element. -->\n <ui-tooltip\n class=\"primary-button-tooltip-trigger\"\n [message]=\"primaryButtonTooltip\"\n [applicationTheme]=\"applicationTheme\"\n >\n <ui-button\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [loading]=\"primaryButtonLoading()\"\n [ariaLabel]=\"primaryButtonLoading() ? primaryButtonLabel : ''\"\n [disabled]=\"disableButtons || disablePrimaryButton || primaryButtonLoading()\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n ></ui-button>\n </ui-tooltip>\n }\n </div>\n }\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n @if (modalClosed) {\n <span>{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n }\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private readonly matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, D = any, R = any>: untyped-by-default data/result types for consumer ergonomics\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig ?? {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe, DialogComponent],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, LanguageService, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\nimport { DialogComponent } from '../dialog.component';\n\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [DialogComponent, AsyncPipe, UiTranslatePipe],\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: string | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: ConfirmDialogData\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml ?? undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? (cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)!) : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\n\n@NgModule({\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n ButtonComponentModule,\n DialogComponentModule,\n UiTranslatePipe,\n ConfirmDialogComponent,\n ],\n})\nexport class ConfirmDialogComponentModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ToggleComponent } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponent } from '../dialog.component';\n\n// Shape of the MAT_DIALOG_DATA this demo dialog is opened with (see\n// dialog-demo.component's extraData; keyboardOpen is always merged in by\n// DialogService.open). The booleans are required because ui-dialog's\n// matching inputs are strict `boolean`.\ninterface DialogCustomData {\n title?: string;\n type?: 'default' | 'custom-header' | 'footer-content' | 'disabled-primary-tooltip';\n showCloseButton: boolean;\n keyboardOpen: boolean;\n footerMessage?: string;\n primaryButtonTooltip?: string;\n}\n\n@Component({\n selector: 'ui-dialog-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dialog-custom.component.html',\n styleUrls: ['./dialog-custom.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [DialogComponent, ButtonComponent, ToggleComponent],\n})\nexport class DialogCustomComponent implements OnInit {\n canClose: () => boolean;\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_DIALOG_DATA) protected data: DialogCustomData,\n private readonly cdr: ChangeDetectorRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.canClose = this.canCloseFalse.bind(this);\n setTimeout(() => {\n this.canClose = this.canCloseTrue.bind(this);\n // `canClose` is template-bound and swapped from a timer.\n this.cdr.markForCheck();\n }, 2000);\n }\n\n //canCloseFn @input demo with false value\n canCloseFalse(): boolean {\n return false;\n }\n\n //canCloseFn @input demo with true value\n canCloseTrue(): boolean {\n return true;\n }\n}\n","<ui-dialog\n [title]=\"data.title\"\n [showCloseButton]=\"data.showCloseButton\"\n [applicationTheme]=\"applicationTheme\"\n [primaryButtonLabel]=\"'OK'\"\n [secondaryButtonLabel]=\"'Cancel'\"\n [canCloseFn]=\"canClose\"\n [keyboardOpen]=\"data.keyboardOpen\"\n [footerMessage]=\"data.footerMessage\"\n [disablePrimaryButton]=\"data.type === 'disabled-primary-tooltip'\"\n [primaryButtonTooltip]=\"data.primaryButtonTooltip ?? ''\"\n>\n <!-- Custom header content -->\n @if (data.type === 'custom-header') {\n <div dialogHeader class=\"custom-header\">\n <div class=\"button-group\">\n <ui-button label=\"Action 1\" [variant]=\"'ghost'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n <ui-button label=\"Action 2\" [variant]=\"'primary'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n </div>\n </div>\n }\n\n <!-- Custom footer content projection -->\n @if (data.type === 'footer-content') {\n <ui-toggle dialogFooter label=\"Don't show this again\" [applicationTheme]=\"applicationTheme\"></ui-toggle>\n }\n\n <!-- Dialog content -->\n <div class=\"dialog-content\">\n @if (data.type === 'default') {\n <p class=\"dialog-message\">This is a default dialog example with a standard header.</p>\n }\n @if (data.type === 'custom-header') {\n <p class=\"dialog-message\">This dialog uses a custom header with content projection.</p>\n }\n @if (data.type === 'footer-content') {\n <p class=\"dialog-message\">\n This dialog projects a <code>ui-toggle</code> into the footer, to the left of the action buttons.\n </p>\n }\n @if (data.type === 'disabled-primary-tooltip') {\n <p class=\"dialog-message\">\n The primary button is disabled; hover it to see the tooltip explaining why the action is unavailable.\n </p>\n }\n <p class=\"dialog-message\">The dialog will be closeable in 2 seconds (demonstrating canCloseFn).</p>\n </div>\n</ui-dialog>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { ToggleComponentModule } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { DialogCustomComponent } from './dialog-custom.component';\n\n@NgModule({\n imports: [CommonModule, DialogComponentModule, ButtonComponentModule, ToggleComponentModule, DialogCustomComponent],\n exports: [DialogCustomComponent],\n})\nexport class DialogCustomComponentModule {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-dialog.mjs","names":[],"sources":["../../../components/dialog/dialog.component.ts","../../../components/dialog/dialog.component.html","../../../components/dialog/dialog.service.ts","../../../components/dialog/dialog.component.module.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.ts","../../../components/dialog/confirm-dialog/confirm-dialog.component.html","../../../components/dialog/confirm-dialog/confirm-dialog.component.module.ts","../../../components/dialog/dialog-custom/dialog-custom.component.ts","../../../components/dialog/dialog-custom/dialog-custom.component.html","../../../components/dialog/dialog-custom/dialog-custom.component.module.ts"],"sourcesContent":["import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n MAT_DIALOG_DATA,\n MatDialogRef,\n MatDialogState,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n} from '@angular/material/dialog';\nimport { filter } from 'rxjs';\n\nimport { ButtonComponent, ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { TooltipComponent } from '@testgorilla/tgo-ui/components/tooltip';\n\n@Component({\n selector: 'ui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatDialogTitle,\n TooltipComponent,\n ButtonComponent,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class DialogComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * Dialog title\n *\n * @memberof DialogComponent\n */\n @Input() title? = '';\n\n /**\n * Show close button\n *\n * @memberof DialogComponent\n */\n @Input() showCloseButton = true;\n\n /**\n * Fuction called before dialgo is closed\n *\n * @memberof DialogComponent\n */\n @Input() canCloseFn: () => boolean = () => true;\n\n /**\n * Secondary button label\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonLabel? = '';\n\n /**\n * Footer dialog message\n *\n * @memberof DialogComponent\n */\n @Input() footerMessage? = '';\n\n /**\n * Primary button label\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonLabel? = '';\n\n /**\n * Primary button icon name\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonIconName?: IconName | '' = '';\n\n /**\n * Secondary button type\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonType: ButtonColor = 'ghost';\n\n /**\n * Primary button type\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonType: ButtonColor = 'primary';\n\n /**\n * Primary button test id\n *\n * @memberof DialogComponent\n */\n @Input() primaryButtonDataTestId: string | null = null;\n\n @Input() testId: string | null = null;\n\n @Input() closeButtonTestId: string | null = null;\n\n @Input() closeButtonAriaLabel = '';\n\n /**\n * Secondary button test id\n *\n * @memberof DialogComponent\n */\n @Input() secondaryButtonDataTestId: string | null = null;\n\n /**\n * Color of the dialog.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @HostBinding('style.--color')\n @Input()\n companyColor: string | null = '';\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n /**\n *\n * Disable primary button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disablePrimaryButton = false;\n /**\n *\n * Show a spinner in place of the primary button label while the action runs.\n * Also disables the button, so a second click cannot fire\n * `primaryButtonClickEvent` while the first is still in flight.\n *\n * @memberof DialogComponent\n */\n primaryButtonLoading = input(false, { transform: booleanAttribute });\n /**\n *\n * Tooltip shown when hovering the primary button. Bound to a wrapper around the\n * button so it also shows while the button is disabled (a disabled button\n * receives no pointer events), e.g. to explain why the action is unavailable.\n *\n * @type {string}\n * @memberof DialogComponent\n */\n @Input() primaryButtonTooltip = '';\n /**\n *\n * Disable close button\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() disableClose = false;\n\n /**\n *\n * Disable button when canCloseFn is used\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() shouldDisableButtons = true;\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 DialogComponent\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 DialogComponent\n */\n @Input() ariaDescribedby = '';\n\n /**\n * Defines how modal was opened (with keyboard or not)\n *\n * @type {boolean}\n * @memberof DialogComponent\n */\n @Input() keyboardOpen = false;\n\n primaryButtonIconPosition = input<ButtonIconPosition>('left');\n\n @Output() closeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() secondaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() primaryButtonClickEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('closeButton') closeButton: ButtonComponent;\n\n modalClosed = false;\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n onEsc() {\n this.dismiss();\n }\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<DialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: { applicationTheme: ApplicationTheme }\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n // Not a host listener: focus can sit outside <ui-dialog>, e.g. on mat-dialog-container.\n // Optional call: MatDialogRef is stubbed as {} by DialogComponentModule, the stories and many consumer specs.\n this.dialogRef\n .keydownEvents?.()\n .pipe(\n filter(event => event.key === 'Escape' && !hasModifierKey(event)),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onEsc());\n }\n\n disableButtons = false;\n protected readonly translationContext = 'DIALOG.';\n\n @ContentChild('dialogHeader')\n customHeader?: unknown;\n\n get hasCustomHeader(): boolean {\n return Boolean(this.customHeader);\n }\n\n ngOnInit(): void {\n this.areButtonsDisabled();\n if (this.data?.applicationTheme) {\n this.applicationTheme = this.data.applicationTheme;\n }\n if (this.applicationTheme !== 'classic') {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#D410AA';\n } else {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n this.companyColor = this.companyColor || '#46A997';\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['canCloseFn']) {\n this.dialogRef.disableClose = !this.canCloseFn();\n this.areButtonsDisabled();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.keyboardOpen) {\n setTimeout(() => {\n this.closeButton.buttonElement.focus('keyboard');\n }, 100);\n }\n }\n\n //Disable primary button when canClose is false\n areButtonsDisabled() {\n this.disableButtons = !this.canCloseFn() && this.shouldDisableButtons;\n }\n\n //Close modal\n dismiss(): void {\n if (this.canCloseFn()) {\n this.dialogRef.disableClose = false;\n this.dialogRef.close();\n this.modalClosed = true;\n this.cdr.markForCheck();\n }\n }\n\n onClose(event: Event): void {\n this.closeEvent.emit(event);\n this.modalClosed = true;\n }\n\n onSecondaryButtonClick(event: Event): void {\n this.secondaryButtonClickEvent.emit(event);\n }\n\n onPrimaryButtonClick(event: Event): void {\n this.primaryButtonClickEvent.emit(event);\n\n // The consumer may have closed the dialog with its own result. Closing again\n // would overwrite that result with undefined, and consumers read a missing\n // result as a cancel (ASM-157).\n if (this.dialogRef.getState() === MatDialogState.OPEN) {\n this.dismiss();\n }\n }\n}\n","<div class=\"dialog-container\" [attr.theme]=\"applicationTheme\" [attr.data-testid]=\"testId\">\n <div\n mat-dialog-title\n class=\"dialog-title\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [attr.aria-describedby]=\"'ariaDescribedby'\"\n >\n <span [style.display]=\"'none'\" id=\"ariaDescribedby\">{{ ariaDescribedby }}</span>\n\n <!-- Default header content -->\n @if (!hasCustomHeader) {\n <h3 class=\"bold\" id=\"labelledby\">{{ title }}</h3>\n @if (showCloseButton) {\n <div>\n <ui-button\n #closeButton\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [companyColor]=\"applicationTheme === 'classic' ? '#000' : '#242424'\"\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"onClose($event)\"\n (buttonClickEvent)=\"dismiss()\"\n [testId]=\"closeButtonTestId\"\n [ariaLabel]=\"closeButtonAriaLabel || ('COMMON.CLOSE' | uiTranslate | async)!\"\n id=\"dialog-close-button\"\n ></ui-button>\n </div>\n }\n }\n\n <!-- Custom header content projection -->\n <ng-content select=\"[dialogHeader]\"></ng-content>\n </div>\n <mat-dialog-content>\n <ng-content></ng-content>\n </mat-dialog-content>\n @if (secondaryButtonLabel !== '' || primaryButtonLabel !== '') {\n <div mat-dialog-actions [class.dialog-action-w-message]=\"!!footerMessage\">\n @if (footerMessage) {\n <div class=\"actions-footer-message\">{{ footerMessage }}</div>\n }\n\n <!-- Projected footer content, rendered to the left of the action buttons -->\n <ng-content select=\"[dialogFooter]\"></ng-content>\n\n @if (!!secondaryButtonLabel) {\n <!-- Action-button ids stay on the ui-button wrappers: five tgo-qa-automation page objects descend from them. -->\n <ui-button\n [companyColor]=\"companyColor\"\n [variant]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [label]=\"secondaryButtonLabel\"\n [attr.data-testid]=\"secondaryButtonDataTestId\"\n (click)=\"onSecondaryButtonClick($event)\"\n ></ui-button>\n }\n @if (!!primaryButtonLabel) {\n <!-- The tooltip wraps the button: a disabled ui-button receives no pointer\n events, so the tooltip must trigger from an enclosing element. -->\n <ui-tooltip\n class=\"primary-button-tooltip-trigger\"\n [message]=\"primaryButtonTooltip\"\n [applicationTheme]=\"applicationTheme\"\n >\n <ui-button\n [iconPosition]=\"primaryButtonIconPosition()\"\n [iconName]=\"primaryButtonIconName ? primaryButtonIconName : undefined\"\n [variant]=\"primaryButtonType\"\n [loading]=\"primaryButtonLoading()\"\n [ariaLabel]=\"primaryButtonLoading() ? primaryButtonLabel : ''\"\n [disabled]=\"disableButtons || disablePrimaryButton || primaryButtonLoading()\"\n [applicationTheme]=\"applicationTheme\"\n (click)=\"onPrimaryButtonClick($event)\"\n [label]=\"primaryButtonLabel\"\n [companyColor]=\"companyColor\"\n [attr.data-testid]=\"primaryButtonDataTestId\"\n ></ui-button>\n </ui-tooltip>\n }\n </div>\n }\n\n <!-- This is announcement for screen reader that dialog was closed-->\n <div aria-live=\"assertive\" role=\"alert\" style=\"position: absolute; left: -9999px\">\n @if (modalClosed) {\n <span>{{ 'DIALOG.CLOSED' | uiTranslate | async }}</span>\n }\n </div>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogConfig } from './dialog.model';\n\nexport type DialogSize = 'small' | 'large' | 'x-large';\n@Injectable()\nexport class DialogService {\n constructor(\n private readonly matDialog: MatDialog,\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, D = any, R = any>: untyped-by-default data/result types for consumer ergonomics\n open<K = any, R = any, T = any>(\n dialogComponent: ComponentType<T>,\n dialogConfig?: DialogConfig<K>\n ): MatDialogRef<T, R> {\n const {\n applicationTheme = 'light',\n size = 'small',\n panelClass = '',\n extraData = {},\n backdropClass = '',\n keyboardOpen = false,\n config = {},\n } = dialogConfig ?? {};\n // Open the dialog using UI custom styles\n return this.matDialog.open(dialogComponent, {\n ...config,\n data: {\n applicationTheme: this.defaultAppTheme ?? applicationTheme,\n ...extraData,\n keyboardOpen,\n },\n backdropClass: backdropClass || '',\n panelClass:\n applicationTheme === 'classic'\n ? ['ui-dialog-wrapper', panelClass, size]\n : ['ui-dialog-wrapper', panelClass, applicationTheme, size],\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [CommonModule, MatDialogModule, ButtonComponentModule, UiTranslatePipe, DialogComponent],\n exports: [DialogComponent],\n providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: {} }, DialogService],\n})\nexport class DialogComponentModule {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonColor, ButtonIconPosition } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme, LanguageService, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\n\nimport { DialogComponent } from '../dialog.component';\n\nimport { ConfirmDialogData } from './confirm-dialog.model';\n\n@Component({\n selector: 'ui-confirm-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n imports: [DialogComponent, AsyncPipe, UiTranslatePipe],\n})\nexport class ConfirmDialogComponent {\n confirmMessage: string | undefined;\n confirmButtonText: string | undefined;\n cancelButtonText: string | undefined;\n title: string | undefined;\n lang = LanguageService.defaultLanguage;\n confirmMessageHtml: string | undefined;\n showCloseButton = false;\n showSecondaryButton = true;\n color: string | null;\n primaryButtonType: ButtonColor;\n secondaryButtonType: ButtonColor;\n primaryButtonIconName: IconName | undefined;\n primaryButtonDataTestId = 'confirm-dialog.confirm-button';\n secondaryButtonDataTestId = 'confirm-dialog.cancel-button';\n primaryButtonIconPosition: ButtonIconPosition;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) private readonly data: ConfirmDialogData\n ) {\n this.confirmMessage = data.message;\n this.confirmButtonText = data.confirmButtonText;\n this.cancelButtonText = data.cancelButtonText;\n this.title = data.title;\n this.lang = data.language ?? LanguageService.defaultLanguage;\n this.confirmMessageHtml = data.messageHtml ?? undefined;\n this.showCloseButton = data.showCloseButton ?? false;\n this.showSecondaryButton = data.showSecondaryButton ?? true;\n this.color = data.color ?? null;\n this.primaryButtonType = data.primaryButtonType ?? 'primary';\n this.secondaryButtonType = data.secondaryButtonType ?? 'ghost';\n this.primaryButtonIconName = data.primaryButtonIconName ?? undefined;\n this.primaryButtonDataTestId = data.primaryButtonDataTestId ?? 'confirm-dialog.confirm-button';\n this.secondaryButtonDataTestId = data.secondaryButtonDataTestId ?? 'confirm-dialog.cancel-button';\n this.primaryButtonIconPosition = data.primaryButtonIconPosition ?? 'left';\n\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n onConfirm(): void {\n if (this.data.onConfirm) {\n this.data.onConfirm();\n }\n this.dialogRef.close(true);\n }\n}\n","<ng-container>\n <ui-dialog\n [title]=\"title ?? ('COMMON.CONFIRM' | uiTranslate | async)!\"\n [primaryButtonLabel]=\"confirmButtonText ?? ('COMMON.YES' | uiTranslate | async)!\"\n [secondaryButtonLabel]=\"\n showSecondaryButton ? (cancelButtonText ?? ('COMMON.CANCEL' | uiTranslate | async)!) : undefined\n \"\n (primaryButtonClickEvent)=\"onConfirm()\"\n (secondaryButtonClickEvent)=\"dialogRef.close(false)\"\n (closeEvent)=\"dialogRef.close(null)\"\n [primaryButtonType]=\"primaryButtonType\"\n [primaryButtonIconName]=\"primaryButtonIconName\"\n [secondaryButtonType]=\"secondaryButtonType\"\n [applicationTheme]=\"applicationTheme\"\n [showCloseButton]=\"showCloseButton\"\n [companyColor]=\"color\"\n [primaryButtonDataTestId]=\"primaryButtonDataTestId\"\n [secondaryButtonDataTestId]=\"secondaryButtonDataTestId\"\n [primaryButtonIconPosition]=\"primaryButtonIconPosition\"\n >\n <div class=\"message\">{{ confirmMessage }}</div>\n @if (confirmMessageHtml) {\n <div class=\"message\" [innerHTML]=\"confirmMessageHtml\"></div>\n }\n </ui-dialog>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\n\n@NgModule({\n exports: [ConfirmDialogComponent],\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: {} },\n { provide: MatDialogRef, useValue: {} },\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n ButtonComponentModule,\n DialogComponentModule,\n UiTranslatePipe,\n ConfirmDialogComponent,\n ],\n})\nexport class ConfirmDialogComponentModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { ToggleComponent } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponent } from '../dialog.component';\n\n// Shape of the MAT_DIALOG_DATA this demo dialog is opened with (see\n// dialog-demo.component's extraData; keyboardOpen is always merged in by\n// DialogService.open). The booleans are required because ui-dialog's\n// matching inputs are strict `boolean`.\ninterface DialogCustomData {\n title?: string;\n type?: 'default' | 'custom-header' | 'footer-content' | 'disabled-primary-tooltip';\n showCloseButton: boolean;\n keyboardOpen: boolean;\n footerMessage?: string;\n primaryButtonTooltip?: string;\n}\n\n@Component({\n selector: 'ui-dialog-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dialog-custom.component.html',\n styleUrls: ['./dialog-custom.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [DialogComponent, ButtonComponent, ToggleComponent],\n})\nexport class DialogCustomComponent implements OnInit {\n canClose: () => boolean;\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof DialogComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n @Inject(MAT_DIALOG_DATA) protected data: DialogCustomData,\n private readonly cdr: ChangeDetectorRef\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.canClose = this.canCloseFalse.bind(this);\n setTimeout(() => {\n this.canClose = this.canCloseTrue.bind(this);\n // `canClose` is template-bound and swapped from a timer.\n this.cdr.markForCheck();\n }, 2000);\n }\n\n //canCloseFn @input demo with false value\n canCloseFalse(): boolean {\n return false;\n }\n\n //canCloseFn @input demo with true value\n canCloseTrue(): boolean {\n return true;\n }\n}\n","<ui-dialog\n [title]=\"data.title\"\n [showCloseButton]=\"data.showCloseButton\"\n [applicationTheme]=\"applicationTheme\"\n [primaryButtonLabel]=\"'OK'\"\n [secondaryButtonLabel]=\"'Cancel'\"\n [canCloseFn]=\"canClose\"\n [keyboardOpen]=\"data.keyboardOpen\"\n [footerMessage]=\"data.footerMessage\"\n [disablePrimaryButton]=\"data.type === 'disabled-primary-tooltip'\"\n [primaryButtonTooltip]=\"data.primaryButtonTooltip ?? ''\"\n>\n <!-- Custom header content -->\n @if (data.type === 'custom-header') {\n <div dialogHeader class=\"custom-header\">\n <div class=\"button-group\">\n <ui-button label=\"Action 1\" [variant]=\"'ghost'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n <ui-button label=\"Action 2\" [variant]=\"'primary'\" [applicationTheme]=\"applicationTheme\"></ui-button>\n </div>\n </div>\n }\n\n <!-- Custom footer content projection -->\n @if (data.type === 'footer-content') {\n <ui-toggle dialogFooter label=\"Don't show this again\" [applicationTheme]=\"applicationTheme\"></ui-toggle>\n }\n\n <!-- Dialog content -->\n <div class=\"dialog-content\">\n @if (data.type === 'default') {\n <p class=\"dialog-message\">This is a default dialog example with a standard header.</p>\n }\n @if (data.type === 'custom-header') {\n <p class=\"dialog-message\">This dialog uses a custom header with content projection.</p>\n }\n @if (data.type === 'footer-content') {\n <p class=\"dialog-message\">\n This dialog projects a <code>ui-toggle</code> into the footer, to the left of the action buttons.\n </p>\n }\n @if (data.type === 'disabled-primary-tooltip') {\n <p class=\"dialog-message\">\n The primary button is disabled; hover it to see the tooltip explaining why the action is unavailable.\n </p>\n }\n <p class=\"dialog-message\">The dialog will be closeable in 2 seconds (demonstrating canCloseFn).</p>\n </div>\n</ui-dialog>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { ToggleComponentModule } from '@testgorilla/tgo-ui/components/toggle';\n\nimport { DialogComponentModule } from '../dialog.component.module';\n\nimport { DialogCustomComponent } from './dialog-custom.component';\n\n@NgModule({\n imports: [CommonModule, DialogComponentModule, ButtonComponentModule, ToggleComponentModule, DialogCustomComponent],\n exports: [DialogCustomComponent],\n})\nexport class DialogCustomComponentModule {}\n"],"mappings":";;;;;;;;;;;;;AAyDA,IAAa,kBAAb,MAAa,gBAAe;CAwL1B,QAAK;EACH,KAAK,QAAO;CACd;CAEA,YAC6E,iBACpE,WACmC,MAA4C;EAFX,KAAA,kBAAA;EACpE,KAAA,YAAA;EACmC,KAAA,OAAA;EAzLnC,KAAA,QAAS;EAOT,KAAA,kBAAkB;EAOlB,KAAA,mBAAkC;EAOlC,KAAA,uBAAwB;EAOxB,KAAA,gBAAiB;EAOjB,KAAA,qBAAsB;EAOtB,KAAA,wBAAwC;EAOxC,KAAA,sBAAmC;EAOnC,KAAA,oBAAiC;EAOjC,KAAA,0BAAyC;EAEzC,KAAA,SAAwB;EAExB,KAAA,oBAAmC;EAEnC,KAAA,uBAAuB;EAOvB,KAAA,4BAA2C;EAWpD,KAAA,eAA8B;EASrB,KAAA,mBAAqC;EAQrC,KAAA,uBAAuB;EAShC,KAAA,uBAAuB,MAAM,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,uBAAA,+BAAA,CAAA;GAAI,WAAW;EAAgB,CAAA;EAUxD,KAAA,uBAAuB;EAQvB,KAAA,eAAe;EASf,KAAA,uBAAuB;EAQvB,KAAA,iBAAiB;EAQjB,KAAA,kBAAkB;EAQlB,KAAA,eAAe;EAExB,KAAA,4BAA4B,MAA0B,QAAO,GAAA,YAAA,CAAA,EAAA,WAAA,4BAAA,CAAA,+BAAA,CAAA,CAAA;EAEnD,KAAA,aAAkC,IAAI,aAAY;EAClD,KAAA,4BAAiD,IAAI,aAAY;EACjE,KAAA,0BAA+C,IAAI,aAAY;EAIzE,KAAA,cAAc;EAEG,KAAA,MAAM,OAAO,iBAAiB;EAyB/C,KAAA,iBAAiB;EACE,KAAA,qBAAqB;EAftC,IAAI,iBACF,KAAK,mBAAmB;EAI1B,KAAK,UACF,gBAAe,CAAE,CACjB,KACC,QAAO,UAAS,MAAM,QAAQ,YAAY,CAAC,eAAe,KAAK,CAAC,GAChE,mBAAkB,CAAE,CACrB,CACA,gBAAgB,KAAK,MAAK,CAAE;CACjC;CAQA,IAAI,kBAAe;EACjB,OAAO,QAAQ,KAAK,YAAY;CAClC;CAEA,WAAQ;EACN,KAAK,mBAAkB;EACvB,IAAI,KAAK,MAAM,kBACb,KAAK,mBAAmB,KAAK,KAAK;EAEpC,IAAI,KAAK,qBAAqB,WAE5B,KAAK,eAAe,KAAK,gBAAgB;OAGzC,KAAK,eAAe,KAAK,gBAAgB;CAE7C;CAEA,YAAY,SAAsB;EAChC,IAAI,QAAQ,eAAe;GACzB,KAAK,UAAU,eAAe,CAAC,KAAK,WAAU;GAC9C,KAAK,mBAAkB;EACzB;CACF;CAEA,kBAAe;EACb,IAAI,KAAK,cACP,iBAAgB;GACd,KAAK,YAAY,cAAc,MAAM,UAAU;EACjD,GAAG,GAAG;CAEV;CAGA,qBAAkB;EAChB,KAAK,iBAAiB,CAAC,KAAK,WAAU,KAAM,KAAK;CACnD;CAGA,UAAO;EACL,IAAI,KAAK,WAAU,GAAI;GACrB,KAAK,UAAU,eAAe;GAC9B,KAAK,UAAU,MAAK;GACpB,KAAK,cAAc;GACnB,KAAK,IAAI,aAAY;EACvB;CACF;CAEA,QAAQ,OAAY;EAClB,KAAK,WAAW,KAAK,KAAK;EAC1B,KAAK,cAAc;CACrB;CAEA,uBAAuB,OAAY;EACjC,KAAK,0BAA0B,KAAK,KAAK;CAC3C;CAEA,qBAAqB,OAAY;EAC/B,KAAK,wBAAwB,KAAK,KAAK;EAKvC,IAAI,KAAK,UAAU,SAAQ,MAAO,eAAe,MAC/C,KAAK,QAAO;CAEhB;CAvRW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAe,MAAA;IAAA;KAAA,OA6LJ;KAAoC,UAAA;IAAA;IAAA,EAAA,OAAA,GAAA,aAAA;IAAA,EAAA,OAEhD,gBAAe;GAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CA/Ld;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAe,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,iBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,YAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,eAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,oBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,uBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,qBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,mBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,yBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,QAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,mBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,2BAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,cAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,cAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,sBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,gBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,iBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,cAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,2BAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,YAAA;IAAA,2BAAA;IAAA,yBAAA;GAAA;GAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,oBAAA,EAAA;GAAA,SAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,cAAA;IAAA,aAAA;GAAA,CAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,aAAA;IAAA,aAAA;GAAA,CAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UCzD5B;GA2FA,QAAA,CAAA,q3JAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD5CI;KAAc,UAAA;KAAA,QAAA,CAAA,IAAA;KAAA,UAAA,CAAA,gBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAgB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,oBAAA,kBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAEf;KAAgB,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;KAAgB,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;KAAS,MAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACT;KAAe,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAGN,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA;EAjB3B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAW,iBAGJ,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IACP;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;GAAA,UAAA;GAAA,QAAA,CAAA,q3JAAA;EAAA,CAAA;;;;;G,eA+LE,MAAA,S;IAAY,MAAA;IAAO,MAAA,CAAA,oCAAoC;;;;;;;IAEvD,MAAA;IAAO,MAAA,CAAA,eAAe;;;;;E,UAzLxB,MAAA,M;E,oBAOA,MAAA,M;E,eAOA,MAAA,M;E,yBAOA,MAAA,M;E,kBAOA,MAAA,M;E,uBAOA,MAAA,M;E,0BAOA,MAAA,M;E,wBAOA,MAAA,M;E,sBAOA,MAAA,M;E,4BAOA,MAAA,M;E,WAEA,MAAA,M;E,sBAEA,MAAA,M;E,yBAEA,MAAA,M;E,8BAOA,MAAA,M;;GASA,MAAA;GAAY,MAAA,CAAA,eAAe;E,KAC3B,MAAA,M;E,qBAUA,MAAA,M;E,yBAQA,MAAA,M;;;;;;;;;E,yBAmBA,MAAA,M;E,iBAQA,MAAA,M;E,yBASA,MAAA,M;E,mBAQA,MAAA,M;E,oBAQA,MAAA,M;E,iBAQA,MAAA,M;;;;;;;;;E,eAIA,MAAA,O;E,8BACA,MAAA,O;E,4BACA,MAAA,O;;GAEA,MAAA;GAAU,MAAA,CAAA,aAAa;;;GAgCvB,MAAA;GAAa,MAAA,CAAA,cAAc;;;;AEjQ9B,IAAa,gBAAb,MAAa,cAAa;CACxB,YACmB,WAC0D,iBAAiC;EAD3F,KAAA,YAAA;EAC0D,KAAA,kBAAA;CAC1E;CAGH,KACE,iBACA,cAA8B;EAE9B,MAAM,EACJ,mBAAmB,SACnB,OAAO,SACP,aAAa,IACb,YAAY,CAAA,GACZ,gBAAgB,IAChB,eAAe,OACf,SAAS,CAAA,MACP,gBAAgB,CAAA;EAEpB,OAAO,KAAK,UAAU,KAAK,iBAAiB;GAC1C,GAAG;GACH,MAAM;IACJ,kBAAkB,KAAK,mBAAmB;IAC1C,GAAG;IACH;GACD;GACD,eAAe,iBAAiB;GAChC,YACE,qBAAqB,YACjB;IAAC;IAAqB;IAAY;GAAI,IACtC;IAAC;IAAqB;IAAY;IAAkB;GAAI;EAC/D,CAAA;CACH;CAlCW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAa,MAAA,CAAA,EAAA,OAAA,GAAA,UAAA,GAAA;IAAA,OAGF;IAAoC,UAAA;GAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAH/C;EAAA,KAAA,QAAA,GAAA,sBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;EAAa,CAAA;CAAA;;AAAb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAa,YAAA,CAAA,EADzB,MAAA,W;;;E,eAII,MAAA,S;GAAY,MAAA;GAAO,MAAA,CAAA,oCAAoC;;;;ACE5D,IAAa,wBAAb,MAAa,sBAAqB;CAArB;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAqB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAArB;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAqB,SAAA;IAJtB;IAAc;IAAiB;IAAuB;IAAiB;GAAe;GAAA,SAAA,CACtF,eAAe;EAAA,CAAA;CAAA;CAGd;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAqB,WAFrB;IAAC;KAAE,SAAS;KAAiB,UAAU,CAAA;IAAE;IAAI;KAAE,SAAS;KAAc,UAAU,CAAA;IAAE;IAAI;GAAa;GAAC,SAAA;IAFrG;IAAc;IAAiB;IAAwC;GAAe;EAAA,CAAA;CAAA;;AAIrF,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EALjC,MAAA;EAAS,MAAA,CAAA;GACR,SAAS;IAAC;IAAc;IAAiB;IAAuB;IAAiB;GAAe;GAChG,SAAS,CAAC,eAAe;GACzB,WAAW;IAAC;KAAE,SAAS;KAAiB,UAAU,CAAA;IAAE;IAAI;KAAE,SAAS;KAAc,UAAU,CAAA;IAAE;IAAI;GAAa;EAC/G,CAAA;;;ACKD,IAAa,yBAAb,MAAa,uBAAsB;CA0BjC,YAC6E,iBACpE,WACmC,MAAuB;EAFU,KAAA,kBAAA;EACpE,KAAA,YAAA;EACmC,KAAA,OAAA;EAxB5C,KAAA,OAAO,gBAAgB;EAEvB,KAAA,kBAAkB;EAClB,KAAA,sBAAsB;EAKtB,KAAA,0BAA0B;EAC1B,KAAA,4BAA4B;EAUnB,KAAA,mBAAqC;EAO5C,KAAK,iBAAiB,KAAK;EAC3B,KAAK,oBAAoB,KAAK;EAC9B,KAAK,mBAAmB,KAAK;EAC7B,KAAK,QAAQ,KAAK;EAClB,KAAK,OAAO,KAAK,YAAY,gBAAgB;EAC7C,KAAK,qBAAqB,KAAK,eAAe;EAC9C,KAAK,kBAAkB,KAAK,mBAAmB;EAC/C,KAAK,sBAAsB,KAAK,uBAAuB;EACvD,KAAK,QAAQ,KAAK,SAAS;EAC3B,KAAK,oBAAoB,KAAK,qBAAqB;EACnD,KAAK,sBAAsB,KAAK,uBAAuB;EACvD,KAAK,wBAAwB,KAAK,yBAAyB;EAC3D,KAAK,0BAA0B,KAAK,2BAA2B;EAC/D,KAAK,4BAA4B,KAAK,6BAA6B;EACnE,KAAK,4BAA4B,KAAK,6BAA6B;EAEnE,IAAI,iBACF,KAAK,mBAAmB;CAE5B;CAEA,YAAS;EACP,IAAI,KAAK,KAAK,WACZ,KAAK,KAAK,UAAS;EAErB,KAAK,UAAU,MAAM,IAAI;CAC3B;CAzDW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA;IAAA;KAAA,OA2BX;KAAoC,UAAA;IAAA;IAAA,EAAA,OAAA,GAAA,aAAA;IAAA,EAAA,OAEhD,gBAAe;GAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CA7Bd;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,kBAAA,mBAAA;GAAA,UAAA;GAAA,UCnBnC;GA0BA,QAAA,CAAA,2DAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDTY;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAS,MAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAe,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAE1C,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAPlC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAmB,iBACZ,wBAAwB;GAAM,SAGtC;IAAC;IAAiB;IAAW;GAAe;GAAC,UAAA;GAAA,QAAA,CAAA,2DAAA;EAAA,CAAA;;;;;G,eA6BnD,MAAA,S;IAAY,MAAA;IAAO,MAAA,CAAA,oCAAoC;;;;;;;IAEvD,MAAA;IAAO,MAAA,CAAA,eAAe;;;;C,uCALxB,MAAA,M;;AEjBH,IAAa,+BAAb,MAAa,6BAA4B;CAA5B;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA4B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA5B;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA4B,SAAA;IARrC;IACA;IACA;IACA;IACA;IACA;GAAsB;GAAA,SAAA,CAXd,sBAAsB;EAAA,CAAA;CAAA;CAcrB;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA4B,WAb5B,CACT;IAAE,SAAS;IAAiB,UAAU,CAAA;GAAE,GACxC;IAAE,SAAS;IAAc,UAAU,CAAA;GAAE,CACtC;GAAA,SAAA;IAEC;IACA;IACA;IACA;IAEA;GAAsB;EAAA,CAAA;CAAA;;AAGb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA4B,YAAA,CAAA;EAfxC,MAAA;EAAS,MAAA,CAAA;GACR,SAAS,CAAC,sBAAsB;GAChC,WAAW,CACT;IAAE,SAAS;IAAiB,UAAU,CAAA;GAAE,GACxC;IAAE,SAAS;IAAc,UAAU,CAAA;GAAE,CACtC;GACD,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;GACD;EACF,CAAA;;;ACcD,IAAa,wBAAb,MAAa,sBAAqB;CAWhC,YAC6E,iBACxC,MAClB,KAAsB;EAFoC,KAAA,kBAAA;EACxC,KAAA,OAAA;EAClB,KAAA,MAAA;EALV,KAAA,mBAAqC;EAO5C,IAAI,iBACF,KAAK,mBAAmB;CAE5B;CAEA,WAAQ;EACN,KAAK,WAAW,KAAK,cAAc,KAAK,IAAI;EAC5C,iBAAgB;GACd,KAAK,WAAW,KAAK,aAAa,KAAK,IAAI;GAE3C,KAAK,IAAI,aAAY;EACvB,GAAG,GAAI;CACT;CAGA,gBAAa;EACX,OAAO;CACT;CAGA,eAAY;EACV,OAAO;CACT;CAtCW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAqB,MAAA;IAAA;KAAA,OAYV;KAAoC,UAAA;IAAA;IAAA,EAAA,OAChD,gBAAe;IAAA,EAAA,OAAA,GAAA,kBAAA;GAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAbd;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAqB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,kBAAA,mBAAA;GAAA,UAAA;GAAA,UCvClC;GAgDA,QAAA,CAAA,oHAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDXY;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,oBAAA,kBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,QAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAEhD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EARjC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,iBACX,wBAAwB;GAAM,eAGhC,kBAAkB;GAAI,SAC5B;IAAC;IAAiB;IAAiB;GAAe;GAAC,UAAA;GAAA,QAAA,CAAA,oHAAA;EAAA,CAAA;;;;;G,eAczD,MAAA,S;IAAY,MAAA;IAAO,MAAA,CAAA,oCAAoC;;;;;;IACvD,MAAA;IAAO,MAAA,CAAA,eAAe;;;;;C,uCAJxB,MAAA,M;;AElCH,IAAa,8BAAb,MAAa,4BAA2B;CAA3B;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,SAAA;IAH5B;IAAc;IAAuB;IAAuB;IAAuB;GAAqB;GAAA,SAAA,CACxG,qBAAqB;EAAA,CAAA;CAAA;CAEpB;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,SAAA;IAH5B;IAAc;IAAuB;IAAuB;IAAuB;GAAqB;EAAA,CAAA;CAAA;;AAGvG,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EAJvC,MAAA;EAAS,MAAA,CAAA;GACR,SAAS;IAAC;IAAc;IAAuB;IAAuB;IAAuB;GAAqB;GAClH,SAAS,CAAC,qBAAqB;EAChC,CAAA"}
|
|
@@ -377,12 +377,15 @@ var DropdownComponent = class DropdownComponent {
|
|
|
377
377
|
"ariaExpanded",
|
|
378
378
|
"ariaControls",
|
|
379
379
|
"ariaPressed",
|
|
380
|
+
"ariaHasPopup",
|
|
380
381
|
"ariaRequired",
|
|
381
382
|
"ariaLabelledby",
|
|
382
383
|
"ariaDescribedby",
|
|
383
384
|
"preventDefault",
|
|
384
385
|
"hasBackground",
|
|
385
386
|
"circular",
|
|
387
|
+
"isSingleLineLabel",
|
|
388
|
+
"iconButtonShape",
|
|
386
389
|
"tooltipPosition",
|
|
387
390
|
"role",
|
|
388
391
|
"iconFilled",
|