@yuuvis/material 2.17.0 → 2.18.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.
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-material.mjs","sources":["../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-icon-registry.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-datepicker-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-date-adapter.service.ts","../../../../../libs/yuuvis/material/src/lib/services/device.interface.ts","../../../../../libs/yuuvis/material/src/lib/services/device.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-paginator-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/providers/material.providers.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.html","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker-toggle.component.ts","../../../../../libs/yuuvis/material/src/yuuvis-material.ts"],"sourcesContent":["import { ErrorHandler, Inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YmtMatIconRegistryService extends MatIconRegistry {\n #ymtFontSetClassNames = ['material-symbols-sharp'];\n\n constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, @Inject(DOCUMENT) document: any, _errorHandler: ErrorHandler) {\n super(_httpClient, _sanitizer, document, _errorHandler);\n this.setDefaultFontSetClass();\n }\n\n override setDefaultFontSetClass(...classnames: string[]) {\n const merged = [...new Set([...classnames, ...this.#ymtFontSetClassNames])];\n super.setDefaultFontSetClass(...merged);\n return this;\n }\n\n static isFontIcon(input: string | null) {\n if (typeof input === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, 'image/svg+xml');\n return coerceBooleanProperty(doc.querySelector('parsererror'));\n }\n return false;\n }\n}\n","import { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({ providedIn: 'root' })\nexport class YmtDatepickerIntlService extends MatDatepickerIntl {\n #translate = inject(TranslateService);\n \n constructor() {\n super();\n \n this.translateLabels();\n this.#translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.translateLabels();\n });\n }\n \n translateLabels() {\n this.openCalendarLabel = this.#translate.instant('ymt.datepicker.openCalendarLabel');\n this.closeCalendarLabel = this.#translate.instant('ymt.datepicker.closeCalendarLabel');\n this.calendarLabel = this.#translate.instant('ymt.datepicker.calendarLabel');\n this.comparisonDateLabel = this.#translate.instant('ymt.datepicker.comparisonDateLabel');\n this.prevMonthLabel = this.#translate.instant('ymt.datepicker.prevMonthLabel');\n this.nextMonthLabel = this.#translate.instant('ymt.datepicker.nextMonthLabel');\n this.prevYearLabel = this.#translate.instant('ymt.datepicker.prevYearLabel');\n this.nextYearLabel = this.#translate.instant('ymt.datepicker.nextYearLabel');\n this.prevMultiYearLabel = this.#translate.instant('ymt.datepicker.prevMultiYearLabel');\n this.nextMultiYearLabel = this.#translate.instant('ymt.datepicker.nextMultiYearLabel');\n this.switchToMonthViewLabel = this.#translate.instant('ymt.datepicker.switchToMonthViewLabel');\n this.switchToMultiYearViewLabel = this.#translate.instant('ymt.datepicker.switchToMultiYearViewLabel');\n this.startDateLabel = this.#translate.instant('ymt.datepicker.startDateLabel');\n this.endDateLabel = this.#translate.instant('ymt.datepicker.endDateLabel');\n this.changes.next();\n }\n \n override formatYearRange(start: string, end: string): string {\n return super.formatYearRange(start, end);\n }\n \n override formatYearRangeLabel(start: string, end: string): string {\n return super.formatYearRangeLabel(start, end);\n }\n}\n","import { inject, Injectable, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * @deprecated Use `YMT_DATE_FORMATS` instead.\n * @see YMT_DATE_FORMATS\n * fixes typo in the name\n */\nexport const YMT_DATE_FROMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport const YMT_DATE_FORMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport function provideYmtDateAdapter(formats: MatDateFormats = YMT_DATE_FORMATS): Provider[] {\n return [\n { provide: DateAdapter, useClass: YmtDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: formats }\n ];\n}\n\ninterface IParseFormats {\n separator: '.' | '/' | '-' | string;\n order: 'mdy' | 'dmy' | 'ymd';\n}\n\n@Injectable()\nexport class YmtDateAdapterService extends NativeDateAdapter {\n #translateService = inject(TranslateService);\n\n override locale = this.#translateService.currentLang;\n\n constructor() {\n super();\n }\n\n override parse(value: any, parseFormat: any = ''): Date | null {\n // categories: { separators: ['.','/','-'], order: ['mdy','dmy','ymd'] }\n let date: Date | null = null;\n if (typeof value === 'string') {\n switch (this.locale) {\n case 'en':\n date = this.parseDateString(value, { separator: '/', order: 'mdy' });\n break;\n case 'de':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n case 'fi':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n }\n }\n return super.parse(date, parseFormat);\n }\n\n parseDateString(value: string, config: IParseFormats): Date {\n const { separator, order } = config;\n const dateStrArr = value.split(separator); // DD.MM.YYYY => { separator: '.', order: 'dmy' }\n const day = Number(dateStrArr[order.indexOf('d')]);\n const month = Number(dateStrArr[order.indexOf('m')]) - 1;\n const year = Number(dateStrArr[order.indexOf('y')]);\n const date = new Date(year, month, day);\n const debugObject = {\n config: { separator, order },\n dateStrArr,\n day,\n month,\n year,\n date\n };\n\n return date;\n }\n}\n","export enum DeviceScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape'\n}\n\n\nexport interface DeviceScreen {\n size: ScreenSize;\n orientation: DeviceScreenOrientation\n width: number;\n height: number;\n}\n\nexport interface DeviceScreenBounds {\n width: number;\n height: number;\n}\n\nexport type ScreenSize = 's' | 'm' | 'l' | 'xl';\n\n\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DeviceDetectorService, DeviceInfo } from 'ngx-device-detector';\nimport { debounceTime, fromEvent, Observable, ReplaySubject } from 'rxjs';\nimport { DeviceScreen, DeviceScreenBounds, DeviceScreenOrientation, ScreenSize } from './device.interface';\n/**\n * This service is used to adapt styles and designs of the client to\n * different devices and screen sizes.\n *\n * Using `screenChange$` observable you are able to monitor changes to\n * the screen size and act upon it.\n *\n * This service will also adds attributes to the body tag that reflect the\n * current screen/device state. This way you can apply secific styles in your\n * css files for different screen resolutions and orientations.\n *\n * Attributes applied to the body tag are:\n *\n * - `data-screen` - [s, m, l, xl] - for different screen sizes\n * (s: for mobile phone like screen sizes, m: for tablet like screen\n * sizes, 'l': for desktop like screen sizes, 'xl': for screen sizes exceeding\n * the desktop screen size).\n *\n * - `data-orientation` - [portrait, landscape] - for the current screen orientation\n *\n * - `data-touch-enabled` - [true] - if the device has touch capabilities (won't be added if the device doesn't have touch capabilities)\n *\n * ```html\n * <body data-screen-size=\"s\" data-screen-orientation=\"portrait\" data-touch-enabled=\"true\">\n * ...\n * </body>\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceService {\n #deviceDetectorService = inject(DeviceDetectorService);\n\n #upperScreenBoundary = {\n small: 600,\n mediumPortrait: 900,\n mediumLandscape: 1200,\n large: 1800\n };\n\n #resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));\n #screen?: DeviceScreen;\n #screenSource = new ReplaySubject<DeviceScreen>(1);\n screenChange$: Observable<DeviceScreen> = this.#screenSource.asObservable();\n\n /**\n * Signal to indicate if the screen size is small (e.g. mobile phone).\n * This will only be triggered if `supportsSmallScreens` is set to true.\n * Major components will use this metric to adapt to 'small screen behavior' and so can you\n */\n smallScreenLayout = signal<boolean>(false);\n #supportsSmallScreens = signal<boolean>(false);\n\n /**\n * if the device is a mobile device (android / iPhone / windows-phone etc)\n */\n isMobile: boolean = this.#deviceDetectorService.isMobile();\n /**\n * if the device us a tablet (iPad etc)\n */\n isTablet: boolean = this.#deviceDetectorService.isTablet();\n /**\n * if the app is running on a Desktop browser\n */\n isDesktop: boolean = this.#deviceDetectorService.isDesktop();\n info?: DeviceInfo = this.#deviceDetectorService.getDeviceInfo();\n isTouchEnabled = this.#isTouchEnabled();\n\n constructor() {\n this.#resize$.subscribe((e: Event) => {\n this.#setScreen();\n });\n }\n\n init(supportsSmallScreens: boolean = false): void {\n this.#supportsSmallScreens.set(supportsSmallScreens);\n this.#setScreen();\n }\n\n #isTouchEnabled() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n #setScreen(): void {\n const bounds: DeviceScreenBounds = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n let orientation: DeviceScreenOrientation = bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;\n\n if (this.isMobile && window.screen['orientation']) {\n const screenOrientation = window.screen['orientation'].type;\n if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {\n orientation = DeviceScreenOrientation.LANDSCAPE;\n } else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {\n orientation = DeviceScreenOrientation.PORTRAIT;\n }\n }\n this.#screen = {\n size: this.#getScreenSize(bounds, orientation),\n orientation,\n width: bounds.width,\n height: bounds.height\n };\n this.#screenSource.next(this.#screen);\n this.smallScreenLayout.set(this.#supportsSmallScreens() && this.#screen.size === 's' && this.#screen.orientation === 'portrait');\n this.#setupDOM(this.#screen);\n // force change detection because resize will not be recognized by Angular in some cases\n // TODO: check: causes recursive ticks in some cases ...\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setTimeout(() => {}, 0);\n }\n\n #setupDOM(screen: DeviceScreen) {\n const body: HTMLBodyElement = document.querySelector('body') as HTMLBodyElement;\n body.setAttribute('data-screen-size', screen.size);\n body.setAttribute('data-screen-orientation', screen.orientation);\n if (this.isTouchEnabled) body.setAttribute('data-touch-enabled', 'true');\n else body.removeAttribute('data-touch-enabled');\n }\n\n #getScreenSize(bounds: DeviceScreenBounds, orientation: DeviceScreenOrientation): ScreenSize {\n if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {\n return 's';\n } else if (this.#isBelow(orientation === 'landscape' ? this.#upperScreenBoundary.mediumLandscape : this.#upperScreenBoundary.mediumPortrait, bounds)) {\n return 'm';\n } else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {\n return 'l';\n } else {\n return 'xl';\n }\n }\n\n #isBelow(size: number, bounds: DeviceScreenBounds): boolean {\n const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;\n return (landscape && bounds.height < size) || (!landscape && bounds.width < size);\n }\n\n #getDebounceTime() {\n // on mobile devices resize only happens when rotating the device or when\n // keyboard appears, so we dont't need to debounce\n return this.isMobile ? 0 : 500;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { TranslateService } from '@ngx-translate/core';\n\n/* Draft */\n@Injectable()\nexport class YmtMatPaginatorIntlService extends MatPaginatorIntl {\n #translate = inject(TranslateService);\n rangeLabelSeparator: string = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n \n override getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ) => {\n if (length === 0 || pageSize === 0) {\n return `0 ${this.rangeLabelSeparator} ${length}`;\n }\n \n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return `${startIndex + 1} - ${endIndex} ${this.rangeLabelSeparator} ${length}`;\n };\n \n //=== Proposal =========================================================\n \n injectTranslateService(translate: TranslateService) {\n this.#translate = translate;\n \n this.#translate.onLangChange.subscribe(() => {\n this.translateLabels();\n });\n \n this.translateLabels();\n }\n \n translateLabels() {\n this.itemsPerPageLabel = this.#translate.instant('ymt.paginator.itemsPerPageLabel');\n this.nextPageLabel = this.#translate.instant('ymt.paginator.nextPageLabel');\n this.previousPageLabel = this.#translate.instant('ymt.paginator.previousPageLabel');\n this.firstPageLabel = this.#translate.instant('ymt.paginator.firstPageLabel');\n this.lastPageLabel = this.#translate.instant('ymt.paginator.lastPageLabel');\n this.rangeLabelSeparator = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n this.changes.next();\n }\n \n //=== Proposal END =====================================================\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions } from '@angular/material/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldDefaultOptions } from '@angular/material/form-field';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MAT_TABS_CONFIG, MatTabsConfig } from '@angular/material/tabs';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\nimport { YMT_DATE_FORMATS } from '../services';\nimport { YmtMatIconRegistryService } from '../services/ymt-mat-icon-registry.service';\nimport { YmtMatPaginatorIntlService } from '../services/ymt-mat-paginator-intl.service';\n\nexport const provideYmtMaterial = (customTheme?: any[]): EnvironmentProviders => {\n const providers: Provider[] = [\n /**\n * Material Date Locale Default\n */\n { provide: MAT_DATE_LOCALE, useFactory: (translate: TranslateService) => translate.defaultLang, deps: [TranslateService] },\n { provide: MAT_DATE_FORMATS, useValue: YMT_DATE_FORMATS },\n\n /**\n * Material Datepicker Internationalization Service Override\n */\n /*{\n provide: MatDatepickerIntl,\n useClass: YmtDatepickerIntlService,\n deps: [TranslateService],\n },*/\n /*{\n provide: MatDatepickerIntl,\n deps: [[new Optional(), new SkipSelf(), MatDatepickerIntl]],\n useFactory: (parentIntl: MatDatepickerIntl)=> {\n return parentIntl || new YmtDatepickerIntlService();\n },\n },*/\n\n /**\n * Material Date Adapter\n */\n // provideYmtDateAdapter(),\n\n /**\n * Material Icon Registry Service Override\n */\n { provide: MatIconRegistry, useClass: YmtMatIconRegistryService },\n\n /**\n * Material Ripple Config\n */\n { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } as RippleGlobalOptions },\n\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: {\n ...new MatDialogConfig(),\n closeOnNavigation: false\n }\n },\n\n /**\n * Material Paginator Internationalization Service Override\n */\n {\n provide: MatPaginatorIntl,\n useFactory: (translate: TranslateService) => {\n const service = new YmtMatPaginatorIntlService();\n service.injectTranslateService(translate);\n return service;\n },\n deps: [TranslateService]\n },\n\n /**\n * Material Tooltip Config\n */\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n showDelay: 500,\n positionAtOrigin: true,\n disableTooltipInteractivity: true\n } as MatTooltipDefaultOptions\n },\n\n /**\n * Material Form Field Config\n */\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: 'outline',\n floatLabel: 'always',\n subscriptSizing: 'dynamic'\n } as MatFormFieldDefaultOptions\n },\n\n /**\n * Material Tab Config\n */\n {\n provide: MAT_TABS_CONFIG,\n useValue: {\n animationDuration: '0',\n stretchTabs: false,\n alignTabs: 'start'\n } as MatTabsConfig\n }\n ];\n return makeEnvironmentProviders(providers);\n};\n","export enum YMT_ICON_BUTTON_SIZE {\n extraSmall = 'extra-small',\n small = 'small',\n medium = 'medium'\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { YMT_ICON_BUTTON_SIZE } from './ymt-icon-button.model';\n\n@Directive({\n selector: 'button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]',\n standalone: true,\n host: {\n 'mat-icon-button': ''\n }\n})\nexport class YmtIconButtonDirective implements AfterViewInit {\n disabled = input(false, { transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { transform: booleanAttribute, alias: 'aria-disabled' });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'extra-small' | 'small' | 'medium' | YMT_ICON_BUTTON_SIZE>(\n YMT_ICON_BUTTON_SIZE.medium,\n { alias: 'icon-button-size' }\n );\n\n #elRef = inject(ElementRef);\n #host = this.#elRef.nativeElement;\n #injector = inject(EnvironmentInjector);\n #appRef = inject(ApplicationRef);\n #MatIconButtonComponentRef: ComponentRef<MatIconButton> | null = null;\n #materialIconButtonInputs = [\n { name: 'disabled', signal: this.disabled },\n { name: 'disableRipple', signal: this.disableRipple },\n { name: 'aria-disabled', signal: this.ariaDisabled },\n { name: 'disabledInteractive', signal: this.disabledInteractive }\n ];\n\n constructor() {\n effect(() => this.#applySizeClass());\n effect(() => this.#setMaterialInputs());\n }\n\n ngAfterViewInit() {\n this.#MatIconButtonComponentRef = this.#createComponent();\n this.#setMaterialInputs();\n }\n\n #applySizeClass() {\n const size = this.size();\n const host = this.#host.classList;\n host.toggle('ymt-icon-button--size-xs', size === YMT_ICON_BUTTON_SIZE.extraSmall);\n host.toggle('ymt-icon-button--size-s', size === YMT_ICON_BUTTON_SIZE.small);\n host.toggle('ymt-icon-button--size-m', size === YMT_ICON_BUTTON_SIZE.medium);\n }\n\n #setMaterialInputs() {\n const inputs = this.#materialIconButtonInputs.map(({ name, signal }) => ({ name, value: signal() }));\n if (this.#MatIconButtonComponentRef) {\n inputs.forEach(({ name, value }) => this.#MatIconButtonComponentRef!.setInput(name, value));\n }\n }\n\n #createComponent() {\n const matIcon = this.#host.querySelector('mat-icon'); //todo support also upcoming yuv-icon\n const environmentInjector = this.#injector;\n const hostElement = this.#host;\n const componentRef = createComponent(MatIconButton, { hostElement, projectableNodes: [[matIcon]], environmentInjector });\n this.#appRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n}\n","export enum YMT_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n ApplicationRef,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n input,\n OnInit,\n AfterViewInit,\n inject,\n effect,\n ComponentRef,\n booleanAttribute\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { YMT_BUTTON_SIZE } from './ymt-button.model';\n\ntype ButtonType = keyof typeof MatButtonAttributeEnum;\nenum MatButtonAttributeEnum {\n primary = 'mat-flat-button',\n secondary = 'mat-stroked-button',\n tertiary = 'mat-button'\n}\n\n@Directive({\n selector: 'button[ymtButton], a[ymtButton]',\n standalone: true\n})\nexport class YmtButtonDirective implements OnInit, AfterViewInit {\n ymtButton = input<ButtonType>('primary');\n disabled = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { alias: 'aria-disabled', transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_BUTTON_SIZE>(YMT_BUTTON_SIZE.medium, { alias: 'button-size' });\n // Todo: Add input \"isBusy\" as \"busy inactive state\": not clickable and with mat-spinner in button\n\n #environmentInjector = inject(EnvironmentInjector);\n #applicationRef = inject(ApplicationRef);\n #hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n #matButtonComponentRef: ComponentRef<MatButton> | null = null;\n\n #iconPrefix: Element[] = [];\n #noneIconNodes: Node[] = [];\n #iconSuffix: Element[] = [];\n\n #matButtonAttribute = MatButtonAttributeEnum;\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const ariaDisabled = this.ariaDisabled();\n const disableRipple = this.disableRipple();\n const disabledInteractive = this.disabledInteractive();\n this.#updateInputs(disabled, ariaDisabled, disableRipple, disabledInteractive);\n });\n\n effect(() => {\n this.#applySizeClass();\n });\n }\n\n ngOnInit() {\n this.#iconPrefix = this.#getIconPrefixElements();\n this.#noneIconNodes = this.#getNoneIconNodes();\n this.#iconSuffix = this.#getIconSuffixElements();\n this.#matButtonComponentRef = this.#createMatButtonComponent();\n }\n\n ngAfterViewInit() {\n this.#updateInputs();\n }\n\n #updateInputs(\n disabled: boolean = this.disabled(),\n ariaDisabled: boolean = this.ariaDisabled(),\n disableRipple: boolean = this.disableRipple(),\n disabledInteractive: boolean = this.disabledInteractive()\n ) {\n this.#matButtonComponentRef?.setInput('disabled', disabled);\n this.#matButtonComponentRef?.setInput('aria-disabled', ariaDisabled);\n this.#matButtonComponentRef?.setInput('disableRipple', disableRipple);\n this.#matButtonComponentRef?.setInput('disabledInteractive', disabledInteractive);\n }\n\n #createMatButtonComponent(\n hostElement: HTMLElement = this.#hostElement,\n environmentInjector: EnvironmentInjector = this.#environmentInjector,\n iconPrefix: Element[] = this.#iconPrefix,\n noneIconNodes: Node[] = this.#noneIconNodes,\n iconSuffix: Element[] = this.#iconSuffix\n ) {\n this.#setInitialAttributesToHost();\n const componentRef = createComponent(MatButton, {\n environmentInjector,\n hostElement,\n projectableNodes: [[...iconPrefix], [...noneIconNodes], [...iconSuffix]]\n });\n this.#applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n\n #setInitialAttributesToHost() {\n this.#hostElement.setAttribute(this.#matButtonAttribute[this.ymtButton()], '');\n }\n\n #getIconPrefixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon:not([iconPositionEnd])'));\n }\n\n #getIconSuffixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon[iconPositionEnd]'));\n }\n\n #getNoneIconNodes() {\n const iter = document.createNodeIterator(this.#hostElement, NodeFilter.SHOW_ALL, (node) => {\n return node.nodeName.toLowerCase() !== 'mat-icon' && node.parentElement === this.#hostElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n });\n let currentNode: Node | null;\n const filteredNodes: Node[] = [];\n while ((currentNode = iter.nextNode())) {\n filteredNodes.push(currentNode);\n }\n return filteredNodes;\n }\n\n #applySizeClass() {\n this.size() === YMT_BUTTON_SIZE.small ? this.#hostElement.classList.add(`ymt-button--size-s`) : this.#hostElement.classList.remove(`ymt-button--size-s`);\n this.size() === YMT_BUTTON_SIZE.medium ? this.#hostElement.classList.add(`ymt-button--size-m`) : this.#hostElement.classList.remove(`ymt-button--size-m`);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n HostBinding,\n HostListener,\n inject,\n Input,\n input,\n OnDestroy,\n Renderer2,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatInput } from '@angular/material/input';\nimport { AbstractControlDirective, ControlValueAccessor, FormControlStatus, FormGroup, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerIntl,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate\n} from '@angular/material/datepicker';\nimport { MatTimepicker, MatTimepickerInput } from '@angular/material/timepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateModule } from '@angular/material/core';\nimport { YmtDatepickerIntlService } from '../../services/ymt-datepicker-intl.service';\nimport { provideYmtDateAdapter, YMT_DATE_FORMATS } from '../../services';\n\ntype DatepickerValue = DatetimeValue;\ntype DatetimeValue = Date | string | null;\ntype MultiDateValue = Set<Date> | null; // not implemented yet!\ntype DateRangeValue = IRangeValue<DatetimeValue> | null; // not implemented yet!\nexport type DatepickerMode = keyof typeof EnumDatepickerMode;\nenum EnumDatepickerMode {\n DATE = 'DATE',\n // MULTI_DATE = 'MULTI_DATE', // not implemented yet!\n DATE_RANGE = 'DATE_RANGE',\n TIME = 'TIME'\n}\ninterface IRangeValue<T = unknown> {\n start: T;\n end: T;\n}\nexport interface DateRangePlaceholder {\n startDate: string;\n endDate: string;\n}\n/**\n * @deprecated\n */\n@Component({\n selector: 'ymt-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatTimepicker,\n MatTimepickerInput,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate,\n NativeDateModule\n ],\n providers: [\n { provide: MatFormFieldControl, useExisting: DatepickerComponent },\n /*{\n provide: MAT_DATE_FORMATS,\n useValue: {\n ...MAT_NATIVE_DATE_FORMATS,\n display: {\n ...MAT_NATIVE_DATE_FORMATS.display,\n dateInput: {\n ...MAT_NATIVE_DATE_FORMATS.display.dateInput,\n day: 'numeric' as Intl.DateTimeFormatOptions['day'] // has effect\n }\n }\n } as MatDateFormats,\n },*/\n { provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService },\n provideYmtDateAdapter()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerComponent implements MatFormFieldControl<DatepickerValue>, ControlValueAccessor, AfterViewInit, OnDestroy {\n // Todo: Refactoring: Write BaseMatFormFieldControlComponent class for further custom controls in @yuuvis/material\n // Done: Internationalization\n // Done: Implement Datepicker features and options:\n // // [X] max\n // // [X] min\n // Done: MatFormFieldControl implementation:\n // // [x]handling errorState: https://material.angular.dev/components/input/overview#changing-when-error-messages-are-shown\n // // [x]handling focus\n // // [x]handling setDescribedByIds(ids: string[]): void\n // // [x] set aria-labeledby\n // // [x] set disabled\n // Todo: Refactoring: Better solution for handling value changes from input-element to model (kill ngModelOptions on inputs)\n // Todo: Better solution for DATE_RANGE-mode: content projection for input[matStartDate/matEndDate]\n // Done: Check aria-describedby logic of MatFormField to implement the correct setting\n // Done: Trigger\"stateChanges\" in effect function\n // Done: set errorState when input value is invalid\n // Done: Check how to destroy the component and complete stateChanges Observable\n // Done: Check how to get the ngControl instance of this component (optionally set)\n\n #translate = inject(TranslateService);\n #dateAdapter = inject(DateAdapter);\n #locale = signal(inject<unknown>(MAT_DATE_LOCALE));\n #injectNgControl = (ngC = inject(NgControl, { self: true, optional: true })) => (ngC ? (ngC.valueAccessor = this) && ngC : null);\n #destroyRef = inject(DestroyRef);\n #formField = inject(MatFormField, { optional: true });\n\n // implemented as part of MatFormFieldControl interface\n ngControl: NgControl | AbstractControlDirective | null = this.#injectNgControl();\n stateChanges = new Subject<void>();\n\n @HostListener('focusin') onFocusIn() {\n this.focused = true;\n }\n @HostListener('focusout') onFocusout() {\n this.focused = false;\n this.propagateTouched();\n }\n\n #value = signal<DatepickerValue>(null);\n @Input()\n set value(v: DatepickerValue) {\n let _value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n const _previousValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(this.ngControl?.value));\n if (_value && _previousValue) {\n if (this.mode === EnumDatepickerMode.TIME) {\n _value = new Date(_previousValue.setHours(_value.getHours(), _value.getMinutes()));\n } else if (this.mode === EnumDatepickerMode.DATE) {\n _value = new Date(_value.setHours(_previousValue.getHours(), _previousValue.getMinutes()));\n }\n } else {\n _value = v;\n }\n this.#value.set(_value);\n this.#empty.set(!_value);\n this.propagateChange(this.value);\n }\n get value(): DatepickerValue {\n return this.#value();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n this.timepickerInput()?.setDisabledState(this.#disabled());\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #id = signal<string>('');\n @Input()\n set id(v: string) {\n this.#id.set(v);\n }\n get id(): string {\n return this.#id();\n }\n\n #placeholder = signal<string>('');\n @Input()\n set placeholder(v: string) {\n this.#placeholder.set(v);\n }\n get placeholder(): string {\n return this.#placeholder();\n }\n\n #required = signal<boolean>(false);\n @Input()\n set required(v: BooleanInput) {\n this.#required.set(coerceBooleanProperty(v));\n }\n get required(): boolean {\n return this.#required();\n }\n\n #userAriaDescribedBy = signal<string>('');\n @Input()\n set userAriaDescribedBy(v: string) {\n this.#userAriaDescribedBy.set(v);\n }\n get userAriaDescribedBy(): string {\n return this.#userAriaDescribedBy();\n }\n\n #empty = signal<boolean>(false);\n set empty(v: boolean) {\n this.#empty.set(v);\n }\n get empty() {\n return this.#empty();\n }\n\n #errorState = signal<boolean>(false);\n set errorState(v: boolean) {\n this.#errorState.set(v);\n }\n get errorState() {\n return this.#errorState();\n }\n\n #focused = signal<boolean>(false);\n set focused(v: boolean) {\n this.#focused.set(v);\n }\n get focused() {\n return this.#focused();\n }\n\n // implemented as part of MatFormFieldControl interface\n @HostBinding('class.floating')\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n readonly autofilled?: boolean;\n readonly controlType: string = 'datepicker';\n readonly disableAutomaticLabeling: boolean = false;\n\n protected readonly datepickerMode = EnumDatepickerMode;\n protected readonly datepicker = viewChild('datepicker', { read: MatDatepicker<never> });\n protected readonly rangepicker = viewChild<MatDateRangePicker<never>>('rangepicker');\n protected readonly timepicker = viewChild('timepicker', { read: MatTimepicker<never> });\n protected readonly datepickerInput = viewChild<MatFormFieldControl<never>>('datepickerInput');\n protected readonly timepickerInput = viewChild<MatTimepickerInput<never>>('timepickerInput');\n\n #mode = signal<DatepickerMode>(EnumDatepickerMode.DATE);\n @Input()\n set mode(v: DatepickerMode) {\n this.#mode.set(v);\n }\n get mode(): DatepickerMode {\n return this.#mode();\n }\n\n #min = signal<DatepickerValue>(null);\n @Input()\n set min(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n\n if (!this.#dateAdapter.sameDate(validValue, this.#min())) {\n this.#min.set(validValue);\n }\n }\n get min() {\n return this.#min();\n }\n\n #max = signal<DatepickerValue>(null);\n @Input()\n set max(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n\n if (!this.#dateAdapter.sameDate(validValue, this.#max())) {\n this.#max.set(validValue);\n }\n }\n get max() {\n return this.#max();\n }\n\n #rangePlaceholder = signal<DateRangePlaceholder>({ startDate: 'Start Date', endDate: 'End Date' });\n @Input()\n set rangePlaceholder(v: DateRangePlaceholder) {\n this.#rangePlaceholder.set(v);\n }\n get rangePlaceholder(): DateRangePlaceholder {\n return this.#rangePlaceholder();\n }\n\n rangeValue = { start: '', end: '' };\n\n startDateFormControlName = input<string>('');\n endDateFormControlName = input<string>('');\n formGroup = input<FormGroup>();\n\n constructor() {\n // triggers state changes for the MatFormFieldControl\n effect(() => {\n this.#value();\n this.#placeholder();\n this.#rangePlaceholder(); // Todo: Check if it needs to trigger \"stateChanges\"!\n this.#disabled();\n this.#id();\n this.#focused();\n this.#empty();\n this.#required();\n this.#errorState();\n this.#locale();\n this.#mode();\n this.#min();\n this.#max();\n untracked(() => this.stateChanges.next());\n });\n\n // handle language change\n this.#translate.onLangChange.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((event) => {\n this.#locale.set(event.lang);\n this.#dateAdapter.setLocale(this.#locale());\n });\n // effect(() => {\n // this.#value();\n // untracked(() => console.log('DatepickerComponent.value: ', this.value));\n // });\n }\n\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange: (_: any) => void = () => {};\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateTouched: () => void = () => {};\n\n // implemented as part of ControlValueAccessor interface\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n // implemented as part of ControlValueAccessor interface\n registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n // implemented as part of ControlValueAccessor interface\n writeValue(date: DatepickerValue): void {\n this.value = date;\n }\n\n // implemented as part of ControlValueAccessor interface\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // implemented as part of MatFormFieldControl interface\n onContainerClick(event: MouseEvent): void {\n const focusableInput = this.datepickerInput();\n if (focusableInput && !this.focused && !this.disabled) {\n // sets focus to MatFormFieldControls\n focusableInput.onContainerClick(event);\n this.focused = true;\n }\n }\n\n // implemented as part of MatFormFieldControl interface\n setDescribedByIds(ids: string[]): void {\n this.datepickerInput()?.setDescribedByIds(ids);\n }\n\n ngAfterViewInit(): void {\n const _datepickerInput = this.datepickerInput();\n const _formField = this.#formField;\n\n if (_datepickerInput) {\n // set MatFormFieldControl.id for auto labeling within a MatFormField\n this.id = _datepickerInput.id || this.id;\n // track datepicker input state changes as they are MatFormFieldControl inputs\n _datepickerInput.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n // set errorState\n this.errorState = _datepickerInput.errorState;\n // set disabled state\n this.disabled = _datepickerInput.disabled;\n });\n }\n\n // set the input's aria-describedby attribute to the parent MatFormField._hintLabelIds (=\"label-1 label-2 ...\")\n if (_formField) {\n this.setDescribedByIds([..._formField._hintLabelId.split(' ')]);\n }\n\n // set errorState for Range-Mode\n this.formGroup()\n ?.statusChanges.pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((v: FormControlStatus) => {\n this.errorState = v === 'INVALID';\n });\n\n this.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {\n // get the previous value of the associated formFieldControl\n if (!this.value && value) this.value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(value));\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* Custom Datepicker Functions */\n\n open(): void {\n this.datepicker()?.open();\n this.rangepicker()?.open();\n this.timepicker()?.open();\n }\n}\n","@switch (mode) {\n @case (datepickerMode.DATE) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matDatepicker]=\"datepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n }\n @case (datepickerMode.DATE_RANGE) {\n @let formGroup = this.formGroup();\n @let startDate = this.startDateFormControlName();\n @let endDate = this.endDateFormControlName();\n @if (formGroup && startDate && endDate) {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [formGroup]=\"formGroup\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" [formControlName]=\"startDate\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" [formControlName]=\"endDate\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n } @else {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" (dateChange)=\"rangeValue.start = $event.value\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" (dateChange)=\"rangeValue.end = $event.value\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n }\n }\n @case (datepickerMode.TIME) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matTimepicker]=\"timepicker\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n #timepickerInput=\"matTimepickerInput\"\n >\n <mat-timepicker #timepicker/>\n }\n @default {\n <input\n type=\"datetime-locale\"\n [placeholder]=\"placeholder\"\n matInput\n [(ngModel)]=\"value\"\n #datepickerInput=\"matInput\"\n />\n }\n}\n\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { DatepickerComponent } from '../datepicker';\nimport { YmtDatepickerIntlService } from '../../services';\nimport { YmtIconButtonDirective } from '../../directives';\nimport { MatIcon } from '@angular/material/icon';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ymt-datepicker-toggle',\n template: `\n <button type=\"button\" ymtIconButton [attr.aria-label]=\"ariaLabel\" [aria-disabled]=\"disabled\" [disabled]=\"disabled\">\n <ng-content select=\"mat-icon\"></ng-content>\n </button>\n `,\n imports: [YmtIconButtonDirective],\n providers: [{ provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService }],\n host: {\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)'\n },\n exportAs: 'matDatepickerToggle',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerToggleComponent implements OnInit, OnDestroy {\n #intl = inject(MatDatepickerIntl);\n #destroyRef = inject(DestroyRef);\n\n #datepicker = signal<DatepickerComponent | null>(null);\n @Input({ alias: 'for', required: true })\n set datepicker(v: DatepickerComponent | null) {\n this.#datepicker.set(v);\n }\n get datepicker() {\n return this.#datepicker();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #ariaLabel = signal(this.#intl.openCalendarLabel);\n @Input()\n set ariaLabel(v: string) {\n this.#ariaLabel.set(v);\n }\n get ariaLabel() {\n return this.#ariaLabel();\n }\n\n stateChanges = new Subject<void>();\n\n constructor() {\n effect(() => {\n this.#datepicker();\n this.#disabled();\n this.#ariaLabel();\n this.stateChanges.next();\n });\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n ngOnInit(): void {\n const datepicker = this.datepicker;\n if (datepicker) {\n datepicker.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.ariaLabel = this.#intl.openCalendarLabel;\n if (this.disabled !== datepicker.disabled) {\n this.disabled = datepicker.disabled;\n }\n });\n } else {\n throw new Error(`DatepickerComponent is missing on DatepickerToggleComponent's \"for\"-attribute!`);\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAUM,MAAO,yBAA0B,SAAQ,eAAe,CAAA;AAC5D,IAAA,qBAAqB,GAAG,CAAC,wBAAwB,CAAC;AAElD,IAAA,WAAA,CAAY,WAAuB,EAAE,UAAwB,EAAoB,QAAa,EAAE,aAA2B,EAAA;QACzH,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC;QACvD,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAES,sBAAsB,CAAC,GAAG,UAAoB,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC3E,QAAA,KAAK,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,UAAU,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC;YAC1D,OAAO,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAChE;AACA,QAAA,OAAO,KAAK;IACd;AArBW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,wEAGmC,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAHpE,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA;;4FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAIiE,MAAM;2BAAC,QAAQ;;;ACP3E,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;AAC7D,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YACrE,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,kCAAkC,CAAC;QACpF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC;QACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC;QAC5E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oCAAoC,CAAC;QACxF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC;QAC9E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC;QAC9E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC;QAC5E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC;QACtF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC;QACtF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uCAAuC,CAAC;QAC9F,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,2CAA2C,CAAC;QACtG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,CAAC;AAC1E,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;IAES,eAAe,CAAC,KAAa,EAAE,GAAW,EAAA;QACjD,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC;IAC1C;IAES,oBAAoB,CAAC,KAAa,EAAE,GAAW,EAAA;QACtD,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC;IAC/C;wGApCW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACAlC;;;;AAIG;AACI,MAAM,gBAAgB,GAAmB;AAC9C,IAAA,GAAG,uBAAuB;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE;AACZ;;AAGI,MAAM,gBAAgB,GAAmB;AAC9C,IAAA,GAAG,uBAAuB;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,SAAS,EAAE;AACZ;;AAGG,SAAU,qBAAqB,CAAC,OAAA,GAA0B,gBAAgB,EAAA;IAC9E,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,EAAE;AACzD,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;KAC/C;AACH;AAQM,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAC1D,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnC,IAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAEpD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAES,IAAA,KAAK,CAAC,KAAU,EAAE,WAAA,GAAmB,EAAE,EAAA;;QAE9C,IAAI,IAAI,GAAgB,IAAI;AAC5B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,QAAQ,IAAI,CAAC,MAAM;AACjB,gBAAA,KAAK,IAAI;AACP,oBAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBACpE;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBACpE;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBACpE;;QAEN;QACA,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;IACvC;IAEA,eAAe,CAAC,KAAa,EAAE,MAAqB,EAAA;AAClD,QAAA,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC5B,UAAU;YACV,GAAG;YACH,KAAK;YACL,IAAI;YACJ;SACD;AAED,QAAA,OAAO,IAAI;IACb;wGA7CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAArB,qBAAqB,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ICtCW;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,uBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AAC3B,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;;ACInC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAIU,aAAa,CAAA;AACxB,IAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAEtD,IAAA,oBAAoB,GAAG;AACrB,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,cAAc,EAAE,GAAG;AACnB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,KAAK,EAAE;KACR;AAED,IAAA,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAClF,IAAA,OAAO;AACP,IAAA,aAAa,GAAG,IAAI,aAAa,CAAe,CAAC,CAAC;AAClD,IAAA,aAAa,GAA6B,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAE3E;;;;AAIG;AACH,IAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC1C,IAAA,qBAAqB,GAAG,MAAM,CAAU,KAAK,CAAC;AAE9C;;AAEG;AACH,IAAA,QAAQ,GAAY,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;AAC1D;;AAEG;AACH,IAAA,QAAQ,GAAY,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;AAC1D;;AAEG;AACH,IAAA,SAAS,GAAY,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE;AAC5D,IAAA,IAAI,GAAgB,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;AAC/D,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE;AAEvC,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;YACnC,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,CAAC,uBAAgC,KAAK,EAAA;AACxC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,eAAe,GAAA;QACb,OAAO,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;IACjE;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,MAAM,GAAuB;YACjC,KAAK,EAAE,MAAM,CAAC,UAAU;YACxB,MAAM,EAAE,MAAM,CAAC;SAChB;QACD,IAAI,WAAW,GAA4B,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,uBAAuB,CAAC,SAAS,GAAG,uBAAuB,CAAC,QAAQ;QAE/I,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;YACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI;YAC3D,IAAI,iBAAiB,KAAK,mBAAmB,IAAI,iBAAiB,KAAK,qBAAqB,EAAE;AAC5F,gBAAA,WAAW,GAAG,uBAAuB,CAAC,SAAS;YACjD;iBAAO,IAAI,iBAAiB,KAAK,kBAAkB,IAAI,iBAAiB,KAAK,oBAAoB,EAAE;AACjG,gBAAA,WAAW,GAAG,uBAAuB,CAAC,QAAQ;YAChD;QACF;QACA,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;YAC9C,WAAW;YACX,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AAChI,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;;;QAK5B,UAAU,CAAC,MAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB;AAEA,IAAA,SAAS,CAAC,MAAoB,EAAA;QAC5B,MAAM,IAAI,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAoB;QAC/E,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,MAAM,CAAC,WAAW,CAAC;QAChE,IAAI,IAAI,CAAC,cAAc;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC;;AACnE,YAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;IACjD;IAEA,cAAc,CAAC,MAA0B,EAAE,WAAoC,EAAA;AAC7E,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AAC1D,YAAA,OAAO,GAAG;QACZ;aAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE;AACpJ,YAAA,OAAO,GAAG;QACZ;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACjE,YAAA,OAAO,GAAG;QACZ;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEA,QAAQ,CAAC,IAAY,EAAE,MAA0B,EAAA;QAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK;QACxG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACnF;IAEA,gBAAgB,GAAA;;;QAGd,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG;IAChC;wGAjHW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC9BD;AAEM,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;AAC9D,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,mBAAmB,GAAW,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC;IAEjF,aAAa,GAAG,CACvB,IAAY,EACZ,QAAgB,EAChB,MAAc,KACZ;QACF,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClC,YAAA,OAAO,KAAK,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,MAAM,EAAE;QAClD;QAEA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ;;AAElC,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM;YAClC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC;YACvC,UAAU,GAAG,QAAQ;AACvB,QAAA,OAAO,CAAA,EAAG,UAAU,GAAG,CAAC,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,MAAM,EAAE;AAChF,IAAA,CAAC;;AAID,IAAA,sBAAsB,CAAC,SAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC1C,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iCAAiC,CAAC;QACnF,IAAI,CAAC,aAAa,GAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAC/E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iCAAiC,CAAC;QACnF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC;QAC7E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAC3E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACvF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;wGA1CW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACQM,MAAM,kBAAkB,GAAG,CAAC,WAAmB,KAA0B;AAC9E,IAAA,MAAM,SAAS,GAAe;AAC5B;;AAEG;QACH,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,SAA2B,KAAK,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;AAC1H,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AAEzD;;AAEG;AACH;;;;AAII;AACJ;;;;;;AAMI;AAEJ;;AAEG;;AAGH;;AAEG;AACH,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,yBAAyB,EAAE;AAEjE;;AAEG;QACH,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAyB,EAAE;AAE3F,QAAA;AACE,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,QAAQ,EAAE;gBACR,GAAG,IAAI,eAAe,EAAE;AACxB,gBAAA,iBAAiB,EAAE;AACpB;AACF,SAAA;AAED;;AAEG;AACH,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,UAAU,EAAE,CAAC,SAA2B,KAAI;AAC1C,gBAAA,MAAM,OAAO,GAAG,IAAI,0BAA0B,EAAE;AAChD,gBAAA,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC;AACzC,gBAAA,OAAO,OAAO;YAChB,CAAC;YACD,IAAI,EAAE,CAAC,gBAAgB;AACxB,SAAA;AAED;;AAEG;AACH,QAAA;AACE,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,2BAA2B,EAAE;AACF;AAC9B,SAAA;AAED;;AAEG;AACH,QAAA;AACE,YAAA,OAAO,EAAE,8BAA8B;AACvC,YAAA,QAAQ,EAAE;AACR,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,eAAe,EAAE;AACY;AAChC,SAAA;AAED;;AAEG;AACH,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE;AACR,gBAAA,iBAAiB,EAAE,GAAG;AACtB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,SAAS,EAAE;AACK;AACnB;KACF;AACD,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC5C;;IC9GY;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;;MCuBnB,sBAAsB,CAAA;IACjC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACxD,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC7D,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpF,mBAAmB,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACnE,IAAA,IAAI,GAAG,KAAK,CACV,oBAAoB,CAAC,MAAM,EAC3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAC9B;AAED,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;AACjC,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACvC,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;IAChC,0BAA0B,GAAuC,IAAI;AACrE,IAAA,yBAAyB,GAAG;QAC1B,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;QACrD,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;QACpD,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB;KAChE;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACzD,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;QACjC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,KAAK,oBAAoB,CAAC,UAAU,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,IAAI,KAAK,oBAAoB,CAAC,KAAK,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,IAAI,KAAK,oBAAoB,CAAC,MAAM,CAAC;IAC9E;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACpG,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,0BAA2B,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7F;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS;AAC1C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK;QAC9B,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC;QACxH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9C,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,QAAA,OAAO,YAAY;IACrB;wGAvDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mFAAmF;AAC7F,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;ICtBW;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACkB3B,IAAK,sBAIJ;AAJD,CAAA,UAAK,sBAAsB,EAAA;AACzB,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,iBAA2B;AAC3B,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,oBAAgC;AAChC,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,YAAuB;AACzB,CAAC,EAJI,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;MAUd,kBAAkB,CAAA;AAC7B,IAAA,SAAS,GAAG,KAAK,CAAa,SAAS,CAAC;IACxC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACxD,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACpF,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7D,mBAAmB,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACnE,IAAA,IAAI,GAAG,KAAK,CAAuC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;AAGpG,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,IAAA,YAAY,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;IAExE,sBAAsB,GAAmC,IAAI;IAE7D,WAAW,GAAc,EAAE;IAC3B,cAAc,GAAW,EAAE;IAC3B,WAAW,GAAc,EAAE;IAE3B,mBAAmB,GAAG,sBAAsB;AAE5C,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,CAAC;AAChF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IAChE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,aAAa,CACX,WAAoB,IAAI,CAAC,QAAQ,EAAE,EACnC,YAAA,GAAwB,IAAI,CAAC,YAAY,EAAE,EAC3C,aAAA,GAAyB,IAAI,CAAC,aAAa,EAAE,EAC7C,mBAAA,GAA+B,IAAI,CAAC,mBAAmB,EAAE,EAAA;QAEzD,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC3D,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;QACpE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;QACrE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;IACnF;IAEA,yBAAyB,CACvB,WAAA,GAA2B,IAAI,CAAC,YAAY,EAC5C,mBAAA,GAA2C,IAAI,CAAC,oBAAoB,EACpE,UAAA,GAAwB,IAAI,CAAC,WAAW,EACxC,aAAA,GAAwB,IAAI,CAAC,cAAc,EAC3C,UAAA,GAAwB,IAAI,CAAC,WAAW,EAAA;QAExC,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE;YAC9C,mBAAmB;YACnB,WAAW;AACX,YAAA,gBAAgB,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AACxE,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACtD,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,QAAA,OAAO,YAAY;IACrB;IAEA,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;IAChF;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;IAC1F;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;IACpF;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAI;AACxF,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa;AACrJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,WAAwB;QAC5B,MAAM,aAAa,GAAW,EAAE;QAChC,QAAQ,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG;AACtC,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC;AACA,QAAA,OAAO,aAAa;IACtB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,kBAAA,CAAoB,CAAC;AACxJ,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,kBAAA,CAAoB,CAAC;IAC3J;wGAvGW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACiBD,IAAK,kBAKJ;AALD,CAAA,UAAK,kBAAkB,EAAA;AACrB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;;AAEb,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EALI,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;AAcvB;;AAEG;MAyCU,mBAAmB,CAAA;;;;;;;;;;;;;;;;;;;AAoB9B,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IAClC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAU,eAAe,CAAC,CAAC;AAClD,IAAA,gBAAgB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC;AAChI,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGrD,IAAA,SAAS,GAAgD,IAAI,CAAC,gBAAgB,EAAE;AAChF,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;IAET,SAAS,GAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;IAC0B,UAAU,GAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,MAAM,GAAG,MAAM,CAAkB,IAAI,CAAC;IACtC,IACI,KAAK,CAAC,CAAkB,EAAA;AAC1B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACjH,QAAA,IAAI,MAAM,IAAI,cAAc,EAAE;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;AACzC,gBAAA,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACpF;iBAAO,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;AAChD,gBAAA,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5F;QACF;aAAO;YACL,MAAM,GAAG,CAAC;QACZ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AACA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACtB;AAEA,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;IAClC,IACI,QAAQ,CAAC,CAAe,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5D;AACA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACzB;AAEA,IAAA,GAAG,GAAG,MAAM,CAAS,EAAE,CAAC;IACxB,IACI,EAAE,CAAC,CAAS,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB;AACA,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE;IACnB;AAEA,IAAA,YAAY,GAAG,MAAM,CAAS,EAAE,CAAC;IACjC,IACI,WAAW,CAAC,CAAS,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B;AACA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC5B;AAEA,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;IAClC,IACI,QAAQ,CAAC,CAAe,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC9C;AACA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACzB;AAEA,IAAA,oBAAoB,GAAG,MAAM,CAAS,EAAE,CAAC;IACzC,IACI,mBAAmB,CAAC,CAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC;AACA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE;IACpC;AAEA,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;IAC/B,IAAI,KAAK,CAAC,CAAU,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB;AACA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACtB;AAEA,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC;IACpC,IAAI,UAAU,CAAC,CAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;AACA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;AAEA,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;IACjC,IAAI,OAAO,CAAC,CAAU,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB;AACA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB;;AAGA,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;IACpC;AACS,IAAA,UAAU;IACV,WAAW,GAAW,YAAY;IAClC,wBAAwB,GAAY,KAAK;IAE/B,cAAc,GAAG,kBAAkB;AACnC,IAAA,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,GAAE,aAAoB,CAAA,EAAE,CAAC;AACpE,IAAA,WAAW,GAAG,SAAS,CAA4B,aAAa,CAAC;AACjE,IAAA,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,GAAE,aAAoB,CAAA,EAAE,CAAC;AACpE,IAAA,eAAe,GAAG,SAAS,CAA6B,iBAAiB,CAAC;AAC1E,IAAA,eAAe,GAAG,SAAS,CAA4B,iBAAiB,CAAC;AAE5F,IAAA,KAAK,GAAG,MAAM,CAAiB,kBAAkB,CAAC,IAAI,CAAC;IACvD,IACI,IAAI,CAAC,CAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB;AACA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;IACrB;AAEA,IAAA,IAAI,GAAG,MAAM,CAAkB,IAAI,CAAC;IACpC,IACI,GAAG,CAAC,CAAkB,EAAA;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QAC3B;IACF;AACA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,IAAI,GAAG,MAAM,CAAkB,IAAI,CAAC;IACpC,IACI,GAAG,CAAC,CAAkB,EAAA;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QAC3B;IACF;AACA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,iBAAiB,GAAG,MAAM,CAAuB,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAClG,IACI,gBAAgB,CAAC,CAAuB,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B;AACA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;IACjC;IAEA,UAAU,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;AAEnC,IAAA,wBAAwB,GAAG,KAAK,CAAS,EAAE,CAAC;AAC5C,IAAA,sBAAsB,GAAG,KAAK,CAAS,EAAE,CAAC;IAC1C,SAAS,GAAG,KAAK,EAAa;AAE9B,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,EAAE;YACX,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3C,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7C,QAAA,CAAC,CAAC;;;;;IAKJ;;;AAIA,IAAA,eAAe,GAAqB,MAAK,EAAE,CAAC;;;AAG5C,IAAA,gBAAgB,GAAe,MAAK,EAAE,CAAC;;AAGvC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;;AAGA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;;AAGA,IAAA,UAAU,CAAC,IAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACnB;;AAGA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;;AAGA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE;AAC7C,QAAA,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAErD,YAAA,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;IACF;;AAGA,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC;IAChD;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;QAElC,IAAI,gBAAgB,EAAE;;YAEpB,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;;AAExC,YAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;AAEtF,gBAAA,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU;;AAE7C,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ;AAC3C,YAAA,CAAC,CAAC;QACJ;;QAGA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE;;QAGA,IAAI,CAAC,SAAS;cACV,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACxD,aAAA,SAAS,CAAC,CAAC,CAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,SAAS;AACnC,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;;AAE3F,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnH,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;;IAIA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;AACzB,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;IAC3B;wGAzTW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EApBnB;AACT,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAClE;;;;;;;;;;;;AAYI;AACJ,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;AAClE,YAAA,qBAAqB;AACtB,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgJ+D,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEb,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpP/E,uvEAoEA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,iBAAiB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,UAAU,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,YAAY,qGACZ,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsBP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxC/B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EAGd,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,QAAQ;wBACR,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB,kBAAkB;wBAClB,UAAU;wBACV,YAAY;wBACZ;qBACD,EAAA,SAAA,EACU;AACT,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,qBAAqB,EAAE;AAClE;;;;;;;;;;;;AAYI;AACJ,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;AAClE,wBAAA,qBAAqB;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uvEAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA;wDAiCtB,SAAS,EAAA,CAAA;sBAAjC,YAAY;uBAAC,SAAS;gBAGG,UAAU,EAAA,CAAA;sBAAnC,YAAY;uBAAC,UAAU;gBAOpB,KAAK,EAAA,CAAA;sBADR;gBAuBG,QAAQ,EAAA,CAAA;sBADX;gBAWG,EAAE,EAAA,CAAA;sBADL;gBAUG,WAAW,EAAA,CAAA;sBADd;gBAUG,QAAQ,EAAA,CAAA;sBADX;gBAUG,mBAAmB,EAAA,CAAA;sBADtB;gBAkCG,gBAAgB,EAAA,CAAA;sBADnB,WAAW;uBAAC,gBAAgB;gBAiBzB,IAAI,EAAA,CAAA;sBADP;gBAUG,GAAG,EAAA,CAAA;sBADN;gBAcG,GAAG,EAAA,CAAA;sBADN;gBAcG,gBAAgB,EAAA,CAAA;sBADnB;;;MEhQU,yBAAyB,CAAA;AACpC,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,IAAA,WAAW,GAAG,MAAM,CAA6B,IAAI,CAAC;IACtD,IACI,UAAU,CAAC,CAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB;AACA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;AAEA,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;IAClC,IACI,QAAQ,CAAC,CAAe,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC9C;AACA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACzB;IAEA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACjD,IACI,SAAS,CAAC,CAAS,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;AACA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC1B;AAEA,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,KAAK,CAAC,KAAY,EAAA;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;QAClC,IAAI,UAAU,EAAE;AACd,YAAA,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC7C,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE;AACzC,oBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;gBACrC;AACF,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8EAAA,CAAgF,CAAC;QACnG;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;wGAjEW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,KAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAVzB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANrE;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWrB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC;AAC/E,oBAAA,IAAI,EAAE;;;;AAIJ,wBAAA,SAAS,EAAE;AACZ,qBAAA;AACD,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,eAAe,EAAE,uBAAuB,CAAC;AAC1C,iBAAA;wDAOK,UAAU,EAAA,CAAA;sBADb,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAUnC,QAAQ,EAAA,CAAA;sBADX;gBAUG,SAAS,EAAA,CAAA;sBADZ;;;ACnDH;;AAEG;;;;"}
1
+ {"version":3,"file":"yuuvis-material.mjs","sources":["../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-icon-registry.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-datepicker-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-date-adapter.service.ts","../../../../../libs/yuuvis/material/src/lib/services/device.interface.ts","../../../../../libs/yuuvis/material/src/lib/services/device.service.ts","../../../../../libs/yuuvis/material/src/lib/services/ymt-mat-paginator-intl.service.ts","../../../../../libs/yuuvis/material/src/lib/providers/material.providers.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/icon-button/ymt-icon-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.model.ts","../../../../../libs/yuuvis/material/src/lib/directives/button/ymt-button.directive.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.ts","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker.component.html","../../../../../libs/yuuvis/material/src/lib/components/datepicker/datepicker-toggle.component.ts","../../../../../libs/yuuvis/material/src/yuuvis-material.ts"],"sourcesContent":["import { ErrorHandler, Inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YmtMatIconRegistryService extends MatIconRegistry {\n #ymtFontSetClassNames = ['material-symbols-sharp'];\n\n constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, @Inject(DOCUMENT) document: any, _errorHandler: ErrorHandler) {\n super(_httpClient, _sanitizer, document, _errorHandler);\n this.setDefaultFontSetClass();\n }\n\n override setDefaultFontSetClass(...classnames: string[]) {\n const merged = [...new Set([...classnames, ...this.#ymtFontSetClassNames])];\n super.setDefaultFontSetClass(...merged);\n return this;\n }\n\n static isFontIcon(input: string | null) {\n if (typeof input === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, 'image/svg+xml');\n return coerceBooleanProperty(doc.querySelector('parsererror'));\n }\n return false;\n }\n}\n","import { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({ providedIn: 'root' })\nexport class YmtDatepickerIntlService extends MatDatepickerIntl {\n #translate = inject(TranslateService);\n \n constructor() {\n super();\n \n this.translateLabels();\n this.#translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.translateLabels();\n });\n }\n \n translateLabels() {\n this.openCalendarLabel = this.#translate.instant('ymt.datepicker.openCalendarLabel');\n this.closeCalendarLabel = this.#translate.instant('ymt.datepicker.closeCalendarLabel');\n this.calendarLabel = this.#translate.instant('ymt.datepicker.calendarLabel');\n this.comparisonDateLabel = this.#translate.instant('ymt.datepicker.comparisonDateLabel');\n this.prevMonthLabel = this.#translate.instant('ymt.datepicker.prevMonthLabel');\n this.nextMonthLabel = this.#translate.instant('ymt.datepicker.nextMonthLabel');\n this.prevYearLabel = this.#translate.instant('ymt.datepicker.prevYearLabel');\n this.nextYearLabel = this.#translate.instant('ymt.datepicker.nextYearLabel');\n this.prevMultiYearLabel = this.#translate.instant('ymt.datepicker.prevMultiYearLabel');\n this.nextMultiYearLabel = this.#translate.instant('ymt.datepicker.nextMultiYearLabel');\n this.switchToMonthViewLabel = this.#translate.instant('ymt.datepicker.switchToMonthViewLabel');\n this.switchToMultiYearViewLabel = this.#translate.instant('ymt.datepicker.switchToMultiYearViewLabel');\n this.startDateLabel = this.#translate.instant('ymt.datepicker.startDateLabel');\n this.endDateLabel = this.#translate.instant('ymt.datepicker.endDateLabel');\n this.changes.next();\n }\n \n override formatYearRange(start: string, end: string): string {\n return super.formatYearRange(start, end);\n }\n \n override formatYearRangeLabel(start: string, end: string): string {\n return super.formatYearRangeLabel(start, end);\n }\n}\n","import { inject, Injectable, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateAdapter } from '@angular/material/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * @deprecated Use `YMT_DATE_FORMATS` instead.\n * @see YMT_DATE_FORMATS\n * fixes typo in the name\n */\nexport const YMT_DATE_FROMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport const YMT_DATE_FORMATS: MatDateFormats = {\n ...MAT_NATIVE_DATE_FORMATS,\n parse: {\n dateInput: null,\n timeInput: null\n }\n};\n\nexport function provideYmtDateAdapter(formats: MatDateFormats = YMT_DATE_FORMATS): Provider[] {\n return [\n { provide: DateAdapter, useClass: YmtDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: formats }\n ];\n}\n\ninterface IParseFormats {\n separator: '.' | '/' | '-' | string;\n order: 'mdy' | 'dmy' | 'ymd';\n}\n\n@Injectable()\nexport class YmtDateAdapterService extends NativeDateAdapter {\n #translateService = inject(TranslateService);\n\n override locale = this.#translateService.currentLang;\n\n constructor() {\n super();\n }\n\n override parse(value: any, parseFormat: any = ''): Date | null {\n // categories: { separators: ['.','/','-'], order: ['mdy','dmy','ymd'] }\n let date: Date | null = null;\n if (typeof value === 'string') {\n switch (this.locale) {\n case 'en':\n date = this.parseDateString(value, { separator: '/', order: 'mdy' });\n break;\n case 'de':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n case 'fi':\n date = this.parseDateString(value, { separator: '.', order: 'dmy' });\n break;\n }\n }\n return super.parse(date, parseFormat);\n }\n\n parseDateString(value: string, config: IParseFormats): Date {\n const { separator, order } = config;\n const dateStrArr = value.split(separator); // DD.MM.YYYY => { separator: '.', order: 'dmy' }\n const day = Number(dateStrArr[order.indexOf('d')]);\n const month = Number(dateStrArr[order.indexOf('m')]) - 1;\n const year = Number(dateStrArr[order.indexOf('y')]);\n const date = new Date(year, month, day);\n const debugObject = {\n config: { separator, order },\n dateStrArr,\n day,\n month,\n year,\n date\n };\n\n return date;\n }\n}\n","export enum DeviceScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape'\n}\n\n\nexport interface DeviceScreen {\n size: ScreenSize;\n orientation: DeviceScreenOrientation\n width: number;\n height: number;\n}\n\nexport interface DeviceScreenBounds {\n width: number;\n height: number;\n}\n\nexport type ScreenSize = 's' | 'm' | 'l' | 'xl';\n\n\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DeviceDetectorService, DeviceInfo } from 'ngx-device-detector';\nimport { BehaviorSubject, debounceTime, fromEvent, Observable, ReplaySubject } from 'rxjs';\nimport { DeviceScreen, DeviceScreenBounds, DeviceScreenOrientation, ScreenSize } from './device.interface';\n\n/**\n * Service that adapts the application layout and behavior to different devices,\n * screen sizes, orientations, and browser zoom levels.\n *\n * This service operates globally as a singleton, listening to window resize events\n * and maintaining reactive state about the current screen and zoom conditions.\n * It also writes attributes to the `<body>` element so that CSS rules can respond\n * to screen state without requiring Angular bindings.\n *\n * **Key Features:**\n * - Screen size classification (s / m / l / xl) based on viewport dimensions\n * - Orientation detection (portrait / landscape), with native API fallback on mobile\n * - Small-screen layout signal for toggling compact UI modes\n * - Browser zoom level tracking via `pageZoomPercentage$`\n * - Automatic `<body>` attribute management for CSS-driven responsive styles\n *\n * **Usage:**\n * 1. `DeviceService` is initialized automatically by `provideYmtMaterial()` in `app.config.ts`\n * 2. Pass `{ supportsSmallScreens: true }` to `provideYmtMaterial()` if the app has a dedicated compact layout\n * 3. Inject `DeviceService` wherever needed — it is already initialized\n * 4. Subscribe to `screenChange$` or `pageZoomPercentage$` to react to changes\n *\n * **Body attributes written by this service:**\n * - `data-screen-size` — current size bucket: `s` | `m` | `l` | `xl`\n * - `data-screen-orientation` — `portrait` | `landscape`\n * - `data-touch-enabled` — present only when the device supports touch input\n *\n * ```html\n * <body data-screen-size=\"l\" data-screen-orientation=\"landscape\">\n * ...\n * </body>\n * ```\n *\n * **Screen size boundaries:**\n *\n * | Size | Range | Device |\n * |------|----------------------------|-----------------------------------|\n * | `s` | < 600px | mobile phone |\n * | `m` | 600px – 900/1200px | tablet (upper bound by orientation) |\n * | `l` | 900/1200px – 1800px | desktop |\n * | `xl` | ≥ 1800px | wide / large desktop |\n *\n * @see {@link DeviceScreen} for the screen state shape emitted by `screenChange$`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceService {\n //#region Dependencies\n\n #deviceDetectorService = inject(DeviceDetectorService);\n\n //#endregion\n\n //#region Properties\n\n #upperScreenBoundary = {\n small: 600,\n mediumPortrait: 900,\n mediumLandscape: 1200,\n large: 1800\n };\n\n #resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));\n #screen?: DeviceScreen;\n #screenSource = new ReplaySubject<DeviceScreen>(1);\n\n /**\n * Emits the current {@link DeviceScreen} state whenever the window is resized.\n *\n * The emitted value includes the size bucket (`s` | `m` | `l` | `xl`), orientation,\n * and the raw viewport dimensions in pixels. Use this stream to reactively adapt\n * layout or behavior whenever the screen state changes.\n *\n * Replay buffer of 1 — late subscribers always receive the most recent value\n * without waiting for the next resize event.\n *\n * @example\n * ```ts\n * deviceService.screenChange$.subscribe(screen => {\n * console.log(screen.size); // 'l'\n * console.log(screen.orientation); // 'landscape'\n * console.log(screen.width); // 1440\n * });\n * ```\n */\n screenChange$: Observable<DeviceScreen> = this.#screenSource.asObservable();\n\n /**\n * Signal that indicates whether the app should render in a compact small-screen layout.\n *\n * This is `true` only when all three conditions are met:\n * 1. `supportsSmallScreens` was passed as `true` to {@link init}\n * 2. The current screen size bucket is `s` (< 600px viewport width)\n * 3. The current orientation is `portrait`\n *\n * Components that have a dedicated compact mode should read this signal\n * and switch their layout accordingly.\n *\n * @default false\n */\n smallScreenLayout = signal<boolean>(false);\n\n #supportsSmallScreens = signal<boolean>(false);\n\n /**\n * `true` if the current device is a mobile phone (Android, iPhone, Windows Phone, etc.).\n * Populated once at service creation from `ngx-device-detector`.\n */\n isMobile: boolean = this.#deviceDetectorService.isMobile();\n\n /**\n * `true` if the current device is a tablet (e.g. iPad).\n * Populated once at service creation from `ngx-device-detector`.\n */\n isTablet: boolean = this.#deviceDetectorService.isTablet();\n\n /**\n * `true` if the app is running in a desktop browser.\n * Populated once at service creation from `ngx-device-detector`.\n */\n isDesktop: boolean = this.#deviceDetectorService.isDesktop();\n\n /**\n * Detailed device and browser information provided by `ngx-device-detector`.\n * Includes OS, browser name and version, device type, and user agent.\n */\n info?: DeviceInfo = this.#deviceDetectorService.getDeviceInfo();\n\n /**\n * `true` if the device supports touch input.\n * Detected via `ontouchstart` presence or `navigator.maxTouchPoints > 0`.\n */\n isTouchEnabled = this.#isTouchEnabled();\n\n #pageZoom$ = new BehaviorSubject<number>(0);\n\n /**\n * Emits the current browser zoom level as a percentage whenever it changes.\n *\n * The value is derived from `window.outerWidth / window.innerWidth * 100`.\n * At 100% zoom the value is `100`, at 150% it is `150`, and so on.\n *\n * Emits only when the value actually changes (no duplicate emissions).\n * Updates are driven by the window `resize` event, which all major browsers\n * fire when the user changes the zoom level via Ctrl+/- or Ctrl+scroll.\n * On desktop there is a 500ms debounce; on mobile, no debounce is applied.\n *\n * @example\n * ```ts\n * deviceService.pageZoomPercentage$.subscribe(zoom => {\n * console.log(`Current zoom: ${zoom}%`); // e.g. \"Current zoom: 150%\"\n * });\n * ```\n */\n pageZoomPercentage$ = this.#pageZoom$.asObservable();\n\n //#endregion\n\n //#region Public APIs\n\n /**\n * Initializes the service and performs the first screen state evaluation.\n *\n * Called automatically by `provideYmtMaterial()` during application startup.\n *\n * Immediately evaluates the current viewport dimensions, classifies the screen size\n * and orientation, writes the result to the `<body>` attributes, and emits the initial\n * value on `screenChange$`. Subsequent updates are handled automatically via the\n * internal resize listener.\n *\n * @param supportsSmallScreens - Set to `true` if the application has a dedicated compact\n * layout for small portrait screens. When `true`, the {@link smallScreenLayout} signal\n * will be set to `true` whenever the screen bucket is `s` and orientation is `portrait`.\n * Defaults to `false`.\n */\n init(supportsSmallScreens = false): void {\n this.#supportsSmallScreens.set(supportsSmallScreens);\n this.#setScreen();\n this.#setPageZoom();\n this.#handleScreenResize();\n }\n\n //#endregion\n\n //#region Utilities\n\n #getPageZoom(): number {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n return (window.outerWidth / window.innerWidth) * 100;\n }\n\n #setPageZoom(): void {\n const zoom = this.#getPageZoom();\n if (zoom !== this.#pageZoom$.value) {\n this.#pageZoom$.next(zoom);\n }\n }\n\n #handleScreenResize(): void {\n this.#resize$.subscribe(() => {\n this.#setScreen();\n this.#setPageZoom();\n });\n }\n\n #isTouchEnabled(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n #setScreen(): void {\n const bounds: DeviceScreenBounds = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n let orientation: DeviceScreenOrientation =\n bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.isMobile && window.screen['orientation']) {\n const screenOrientation = window.screen['orientation'].type;\n if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {\n orientation = DeviceScreenOrientation.LANDSCAPE;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {\n orientation = DeviceScreenOrientation.PORTRAIT;\n }\n }\n this.#screen = {\n size: this.#getScreenSize(bounds, orientation),\n orientation,\n width: bounds.width,\n height: bounds.height\n };\n this.#screenSource.next(this.#screen);\n this.smallScreenLayout.set(\n this.#supportsSmallScreens() && this.#screen.size === 's' && this.#screen.orientation === 'portrait'\n );\n this.#setupDOM(this.#screen);\n // force change detection because resize will not be recognized by Angular in some cases\n // TODO: check: causes recursive ticks in some cases ...\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setTimeout(() => {}, 0);\n }\n\n #setupDOM(screen: DeviceScreen): void {\n const body: HTMLBodyElement = document.querySelector('body') as HTMLBodyElement;\n body.setAttribute('data-screen-size', screen.size);\n body.setAttribute('data-screen-orientation', screen.orientation);\n if (this.isTouchEnabled) body.setAttribute('data-touch-enabled', 'true');\n else body.removeAttribute('data-touch-enabled');\n }\n\n #getScreenSize(bounds: DeviceScreenBounds, orientation: DeviceScreenOrientation): ScreenSize {\n if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {\n return 's';\n } else if (\n this.#isBelow(\n orientation === 'landscape'\n ? this.#upperScreenBoundary.mediumLandscape\n : this.#upperScreenBoundary.mediumPortrait,\n bounds\n )\n ) {\n return 'm';\n } else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {\n return 'l';\n } else {\n return 'xl';\n }\n }\n\n #isBelow(size: number, bounds: DeviceScreenBounds): boolean {\n const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;\n return (landscape && bounds.height < size) || (!landscape && bounds.width < size);\n }\n\n #getDebounceTime(): number {\n // on mobile devices resize only happens when rotating the device or when\n // keyboard appears, so we don't need to debounce\n return this.isMobile ? 0 : 500;\n }\n\n //#endregion\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { TranslateService } from '@ngx-translate/core';\n\n/* Draft */\n@Injectable()\nexport class YmtMatPaginatorIntlService extends MatPaginatorIntl {\n #translate = inject(TranslateService);\n rangeLabelSeparator: string = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n \n override getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ) => {\n if (length === 0 || pageSize === 0) {\n return `0 ${this.rangeLabelSeparator} ${length}`;\n }\n \n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return `${startIndex + 1} - ${endIndex} ${this.rangeLabelSeparator} ${length}`;\n };\n \n //=== Proposal =========================================================\n \n injectTranslateService(translate: TranslateService) {\n this.#translate = translate;\n \n this.#translate.onLangChange.subscribe(() => {\n this.translateLabels();\n });\n \n this.translateLabels();\n }\n \n translateLabels() {\n this.itemsPerPageLabel = this.#translate.instant('ymt.paginator.itemsPerPageLabel');\n this.nextPageLabel = this.#translate.instant('ymt.paginator.nextPageLabel');\n this.previousPageLabel = this.#translate.instant('ymt.paginator.previousPageLabel');\n this.firstPageLabel = this.#translate.instant('ymt.paginator.firstPageLabel');\n this.lastPageLabel = this.#translate.instant('ymt.paginator.lastPageLabel');\n this.rangeLabelSeparator = this.#translate.instant('ymt.paginator.rangeLabelSeparator');\n this.changes.next();\n }\n \n //=== Proposal END =====================================================\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n Provider\n} from '@angular/core';\nimport {\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n RippleGlobalOptions\n} from '@angular/material/core';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldDefaultOptions } from '@angular/material/form-field';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MAT_TABS_CONFIG, MatTabsConfig } from '@angular/material/tabs';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceService, YMT_DATE_FORMATS } from '../services';\nimport { YmtMatIconRegistryService } from '../services/ymt-mat-icon-registry.service';\nimport { YmtMatPaginatorIntlService } from '../services/ymt-mat-paginator-intl.service';\n\nexport const provideYmtMaterial = (\n customTheme?: any[],\n options?: { supportsSmallScreens: boolean }\n): EnvironmentProviders => {\n const providers: Provider[] = [\n /**\n * Material Date Locale Default\n */\n {\n provide: MAT_DATE_LOCALE,\n useFactory: (translate: TranslateService) => translate.defaultLang,\n deps: [TranslateService]\n },\n { provide: MAT_DATE_FORMATS, useValue: YMT_DATE_FORMATS },\n\n /**\n * Material Datepicker Internationalization Service Override\n */\n /*{\n provide: MatDatepickerIntl,\n useClass: YmtDatepickerIntlService,\n deps: [TranslateService],\n },*/\n /*{\n provide: MatDatepickerIntl,\n deps: [[new Optional(), new SkipSelf(), MatDatepickerIntl]],\n useFactory: (parentIntl: MatDatepickerIntl)=> {\n return parentIntl || new YmtDatepickerIntlService();\n },\n },*/\n\n /**\n * Material Date Adapter\n */\n // provideYmtDateAdapter(),\n\n /**\n * Material Icon Registry Service Override\n */\n { provide: MatIconRegistry, useClass: YmtMatIconRegistryService },\n\n /**\n * Material Ripple Config\n */\n { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } as RippleGlobalOptions },\n\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: {\n ...new MatDialogConfig(),\n closeOnNavigation: false\n }\n },\n\n /**\n * Material Paginator Internationalization Service Override\n */\n {\n provide: MatPaginatorIntl,\n useFactory: (translate: TranslateService) => {\n const service = new YmtMatPaginatorIntlService();\n service.injectTranslateService(translate);\n return service;\n },\n deps: [TranslateService]\n },\n\n /**\n * Material Tooltip Config\n */\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n showDelay: 500,\n positionAtOrigin: true,\n disableTooltipInteractivity: true\n } as MatTooltipDefaultOptions\n },\n\n /**\n * Material Form Field Config\n */\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: 'outline',\n floatLabel: 'always',\n subscriptSizing: 'dynamic'\n } as MatFormFieldDefaultOptions\n },\n\n /**\n * Material Tab Config\n */\n {\n provide: MAT_TABS_CONFIG,\n useValue: {\n animationDuration: '0',\n stretchTabs: false,\n alignTabs: 'start'\n } as MatTabsConfig\n }\n ];\n return makeEnvironmentProviders([\n ...providers,\n provideEnvironmentInitializer(() => {\n inject(DeviceService).init(options?.supportsSmallScreens);\n })\n ]);\n};\n","export enum YMT_ICON_BUTTON_SIZE {\n extraSmall = 'extra-small',\n small = 'small',\n medium = 'medium'\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { YMT_ICON_BUTTON_SIZE } from './ymt-icon-button.model';\n\n@Directive({\n selector: 'button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]',\n standalone: true,\n host: {\n 'mat-icon-button': ''\n }\n})\nexport class YmtIconButtonDirective implements AfterViewInit {\n disabled = input(false, { transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { transform: booleanAttribute, alias: 'aria-disabled' });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'extra-small' | 'small' | 'medium' | YMT_ICON_BUTTON_SIZE>(\n YMT_ICON_BUTTON_SIZE.medium,\n { alias: 'icon-button-size' }\n );\n\n #elRef = inject(ElementRef);\n #host = this.#elRef.nativeElement;\n #injector = inject(EnvironmentInjector);\n #appRef = inject(ApplicationRef);\n #MatIconButtonComponentRef: ComponentRef<MatIconButton> | null = null;\n #materialIconButtonInputs = [\n { name: 'disabled', signal: this.disabled },\n { name: 'disableRipple', signal: this.disableRipple },\n { name: 'aria-disabled', signal: this.ariaDisabled },\n { name: 'disabledInteractive', signal: this.disabledInteractive }\n ];\n\n constructor() {\n effect(() => this.#applySizeClass());\n effect(() => this.#setMaterialInputs());\n }\n\n ngAfterViewInit() {\n this.#MatIconButtonComponentRef = this.#createComponent();\n this.#setMaterialInputs();\n }\n\n #applySizeClass() {\n const size = this.size();\n const host = this.#host.classList;\n host.toggle('ymt-icon-button--size-xs', size === YMT_ICON_BUTTON_SIZE.extraSmall);\n host.toggle('ymt-icon-button--size-s', size === YMT_ICON_BUTTON_SIZE.small);\n host.toggle('ymt-icon-button--size-m', size === YMT_ICON_BUTTON_SIZE.medium);\n }\n\n #setMaterialInputs() {\n const inputs = this.#materialIconButtonInputs.map(({ name, signal }) => ({ name, value: signal() }));\n if (this.#MatIconButtonComponentRef) {\n inputs.forEach(({ name, value }) => this.#MatIconButtonComponentRef!.setInput(name, value));\n }\n }\n\n #createComponent() {\n const matIcon = this.#host.querySelector('mat-icon'); //todo support also upcoming yuv-icon\n const environmentInjector = this.#injector;\n const hostElement = this.#host;\n const componentRef = createComponent(MatIconButton, { hostElement, projectableNodes: [[matIcon]], environmentInjector });\n this.#appRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n}\n","export enum YMT_BUTTON_SIZE {\n small = 'small',\n medium = 'medium'\n}\n","import {\n ApplicationRef,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n input,\n OnInit,\n AfterViewInit,\n inject,\n effect,\n ComponentRef,\n booleanAttribute\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { YMT_BUTTON_SIZE } from './ymt-button.model';\n\ntype ButtonType = 'primary' | 'secondary' | 'tertiary' | 'danger';\nconst MatButtonAttributeMap: Record<ButtonType, string> = {\n primary: 'mat-flat-button',\n secondary: 'mat-stroked-button',\n tertiary: 'mat-button',\n danger: 'mat-flat-button'\n};\n\n@Directive({\n selector: 'button[ymtButton], a[ymtButton]',\n standalone: true\n})\nexport class YmtButtonDirective implements OnInit, AfterViewInit {\n ymtButton = input<ButtonType>('primary');\n disabled = input(false, { transform: booleanAttribute });\n ariaDisabled = input(false, { alias: 'aria-disabled', transform: booleanAttribute });\n disableRipple = input(false, { transform: booleanAttribute });\n disabledInteractive = input(false, { transform: booleanAttribute });\n size = input<'small' | 'medium' | YMT_BUTTON_SIZE>(YMT_BUTTON_SIZE.medium, { alias: 'button-size' });\n // Todo: Add input \"isBusy\" as \"busy inactive state\": not clickable and with mat-spinner in button\n\n #environmentInjector = inject(EnvironmentInjector);\n #applicationRef = inject(ApplicationRef);\n #hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n #matButtonComponentRef: ComponentRef<MatButton> | null = null;\n\n #iconPrefix: Element[] = [];\n #noneIconNodes: Node[] = [];\n #iconSuffix: Element[] = [];\n\n #matButtonAttribute = MatButtonAttributeMap;\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const ariaDisabled = this.ariaDisabled();\n const disableRipple = this.disableRipple();\n const disabledInteractive = this.disabledInteractive();\n this.#updateInputs(disabled, ariaDisabled, disableRipple, disabledInteractive);\n });\n\n effect(() => {\n this.#applySizeClass();\n });\n }\n\n ngOnInit() {\n this.#iconPrefix = this.#getIconPrefixElements();\n this.#noneIconNodes = this.#getNoneIconNodes();\n this.#iconSuffix = this.#getIconSuffixElements();\n this.#matButtonComponentRef = this.#createMatButtonComponent();\n }\n\n ngAfterViewInit() {\n this.#updateInputs();\n }\n\n #updateInputs(\n disabled: boolean = this.disabled(),\n ariaDisabled: boolean = this.ariaDisabled(),\n disableRipple: boolean = this.disableRipple(),\n disabledInteractive: boolean = this.disabledInteractive()\n ) {\n this.#matButtonComponentRef?.setInput('disabled', disabled);\n this.#matButtonComponentRef?.setInput('aria-disabled', ariaDisabled);\n this.#matButtonComponentRef?.setInput('disableRipple', disableRipple);\n this.#matButtonComponentRef?.setInput('disabledInteractive', disabledInteractive);\n }\n\n #createMatButtonComponent(\n hostElement: HTMLElement = this.#hostElement,\n environmentInjector: EnvironmentInjector = this.#environmentInjector,\n iconPrefix: Element[] = this.#iconPrefix,\n noneIconNodes: Node[] = this.#noneIconNodes,\n iconSuffix: Element[] = this.#iconSuffix\n ) {\n this.#setInitialAttributesToHost();\n const componentRef = createComponent(MatButton, {\n environmentInjector,\n hostElement,\n projectableNodes: [[...iconPrefix], [...noneIconNodes], [...iconSuffix]]\n });\n this.#applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n\n #setInitialAttributesToHost() {\n this.#hostElement.setAttribute(this.#matButtonAttribute[this.ymtButton()], '');\n if (this.ymtButton() === 'danger') {\n this.#hostElement.classList.add('ymt-button--danger');\n }\n }\n\n #getIconPrefixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon:not([iconPositionEnd])'));\n }\n\n #getIconSuffixElements() {\n return Array.from(this.#hostElement.querySelectorAll('mat-icon[iconPositionEnd]'));\n }\n\n #getNoneIconNodes() {\n const iter = document.createNodeIterator(this.#hostElement, NodeFilter.SHOW_ALL, (node) => {\n return node.nodeName.toLowerCase() !== 'mat-icon' && node.parentElement === this.#hostElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n });\n let currentNode: Node | null;\n const filteredNodes: Node[] = [];\n while ((currentNode = iter.nextNode())) {\n filteredNodes.push(currentNode);\n }\n return filteredNodes;\n }\n\n #applySizeClass() {\n this.size() === YMT_BUTTON_SIZE.small ? this.#hostElement.classList.add(`ymt-button--size-s`) : this.#hostElement.classList.remove(`ymt-button--size-s`);\n this.size() === YMT_BUTTON_SIZE.medium ? this.#hostElement.classList.add(`ymt-button--size-m`) : this.#hostElement.classList.remove(`ymt-button--size-m`);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n HostBinding,\n HostListener,\n inject,\n Input,\n input,\n OnDestroy,\n Renderer2,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatInput } from '@angular/material/input';\nimport { AbstractControlDirective, ControlValueAccessor, FormControlStatus, FormGroup, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerIntl,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate\n} from '@angular/material/datepicker';\nimport { MatTimepicker, MatTimepickerInput } from '@angular/material/timepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_NATIVE_DATE_FORMATS, MatDateFormats, NativeDateModule } from '@angular/material/core';\nimport { YmtDatepickerIntlService } from '../../services/ymt-datepicker-intl.service';\nimport { provideYmtDateAdapter, YMT_DATE_FORMATS } from '../../services';\n\ntype DatepickerValue = DatetimeValue;\ntype DatetimeValue = Date | string | null;\ntype MultiDateValue = Set<Date> | null; // not implemented yet!\ntype DateRangeValue = IRangeValue<DatetimeValue> | null; // not implemented yet!\nexport type DatepickerMode = keyof typeof EnumDatepickerMode;\nenum EnumDatepickerMode {\n DATE = 'DATE',\n // MULTI_DATE = 'MULTI_DATE', // not implemented yet!\n DATE_RANGE = 'DATE_RANGE',\n TIME = 'TIME'\n}\ninterface IRangeValue<T = unknown> {\n start: T;\n end: T;\n}\nexport interface DateRangePlaceholder {\n startDate: string;\n endDate: string;\n}\n/**\n * @deprecated\n */\n@Component({\n selector: 'ymt-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n MatDatepicker,\n MatDatepickerInput,\n MatTimepicker,\n MatTimepickerInput,\n MatDateRangeInput,\n MatDateRangePicker,\n MatEndDate,\n MatStartDate,\n NativeDateModule\n ],\n providers: [\n { provide: MatFormFieldControl, useExisting: DatepickerComponent },\n /*{\n provide: MAT_DATE_FORMATS,\n useValue: {\n ...MAT_NATIVE_DATE_FORMATS,\n display: {\n ...MAT_NATIVE_DATE_FORMATS.display,\n dateInput: {\n ...MAT_NATIVE_DATE_FORMATS.display.dateInput,\n day: 'numeric' as Intl.DateTimeFormatOptions['day'] // has effect\n }\n }\n } as MatDateFormats,\n },*/\n { provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService },\n provideYmtDateAdapter()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerComponent implements MatFormFieldControl<DatepickerValue>, ControlValueAccessor, AfterViewInit, OnDestroy {\n // Todo: Refactoring: Write BaseMatFormFieldControlComponent class for further custom controls in @yuuvis/material\n // Done: Internationalization\n // Done: Implement Datepicker features and options:\n // // [X] max\n // // [X] min\n // Done: MatFormFieldControl implementation:\n // // [x]handling errorState: https://material.angular.dev/components/input/overview#changing-when-error-messages-are-shown\n // // [x]handling focus\n // // [x]handling setDescribedByIds(ids: string[]): void\n // // [x] set aria-labeledby\n // // [x] set disabled\n // Todo: Refactoring: Better solution for handling value changes from input-element to model (kill ngModelOptions on inputs)\n // Todo: Better solution for DATE_RANGE-mode: content projection for input[matStartDate/matEndDate]\n // Done: Check aria-describedby logic of MatFormField to implement the correct setting\n // Done: Trigger\"stateChanges\" in effect function\n // Done: set errorState when input value is invalid\n // Done: Check how to destroy the component and complete stateChanges Observable\n // Done: Check how to get the ngControl instance of this component (optionally set)\n\n #translate = inject(TranslateService);\n #dateAdapter = inject(DateAdapter);\n #locale = signal(inject<unknown>(MAT_DATE_LOCALE));\n #injectNgControl = (ngC = inject(NgControl, { self: true, optional: true })) => (ngC ? (ngC.valueAccessor = this) && ngC : null);\n #destroyRef = inject(DestroyRef);\n #formField = inject(MatFormField, { optional: true });\n\n // implemented as part of MatFormFieldControl interface\n ngControl: NgControl | AbstractControlDirective | null = this.#injectNgControl();\n stateChanges = new Subject<void>();\n\n @HostListener('focusin') onFocusIn() {\n this.focused = true;\n }\n @HostListener('focusout') onFocusout() {\n this.focused = false;\n this.propagateTouched();\n }\n\n #value = signal<DatepickerValue>(null);\n @Input()\n set value(v: DatepickerValue) {\n let _value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n const _previousValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(this.ngControl?.value));\n if (_value && _previousValue) {\n if (this.mode === EnumDatepickerMode.TIME) {\n _value = new Date(_previousValue.setHours(_value.getHours(), _value.getMinutes()));\n } else if (this.mode === EnumDatepickerMode.DATE) {\n _value = new Date(_value.setHours(_previousValue.getHours(), _previousValue.getMinutes()));\n }\n } else {\n _value = v;\n }\n this.#value.set(_value);\n this.#empty.set(!_value);\n this.propagateChange(this.value);\n }\n get value(): DatepickerValue {\n return this.#value();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n this.timepickerInput()?.setDisabledState(this.#disabled());\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #id = signal<string>('');\n @Input()\n set id(v: string) {\n this.#id.set(v);\n }\n get id(): string {\n return this.#id();\n }\n\n #placeholder = signal<string>('');\n @Input()\n set placeholder(v: string) {\n this.#placeholder.set(v);\n }\n get placeholder(): string {\n return this.#placeholder();\n }\n\n #required = signal<boolean>(false);\n @Input()\n set required(v: BooleanInput) {\n this.#required.set(coerceBooleanProperty(v));\n }\n get required(): boolean {\n return this.#required();\n }\n\n #userAriaDescribedBy = signal<string>('');\n @Input()\n set userAriaDescribedBy(v: string) {\n this.#userAriaDescribedBy.set(v);\n }\n get userAriaDescribedBy(): string {\n return this.#userAriaDescribedBy();\n }\n\n #empty = signal<boolean>(false);\n set empty(v: boolean) {\n this.#empty.set(v);\n }\n get empty() {\n return this.#empty();\n }\n\n #errorState = signal<boolean>(false);\n set errorState(v: boolean) {\n this.#errorState.set(v);\n }\n get errorState() {\n return this.#errorState();\n }\n\n #focused = signal<boolean>(false);\n set focused(v: boolean) {\n this.#focused.set(v);\n }\n get focused() {\n return this.#focused();\n }\n\n // implemented as part of MatFormFieldControl interface\n @HostBinding('class.floating')\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n readonly autofilled?: boolean;\n readonly controlType: string = 'datepicker';\n readonly disableAutomaticLabeling: boolean = false;\n\n protected readonly datepickerMode = EnumDatepickerMode;\n protected readonly datepicker = viewChild('datepicker', { read: MatDatepicker<never> });\n protected readonly rangepicker = viewChild<MatDateRangePicker<never>>('rangepicker');\n protected readonly timepicker = viewChild('timepicker', { read: MatTimepicker<never> });\n protected readonly datepickerInput = viewChild<MatFormFieldControl<never>>('datepickerInput');\n protected readonly timepickerInput = viewChild<MatTimepickerInput<never>>('timepickerInput');\n\n #mode = signal<DatepickerMode>(EnumDatepickerMode.DATE);\n @Input()\n set mode(v: DatepickerMode) {\n this.#mode.set(v);\n }\n get mode(): DatepickerMode {\n return this.#mode();\n }\n\n #min = signal<DatepickerValue>(null);\n @Input()\n set min(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n\n if (!this.#dateAdapter.sameDate(validValue, this.#min())) {\n this.#min.set(validValue);\n }\n }\n get min() {\n return this.#min();\n }\n\n #max = signal<DatepickerValue>(null);\n @Input()\n set max(v: DatepickerValue) {\n const validValue = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(v));\n\n if (!this.#dateAdapter.sameDate(validValue, this.#max())) {\n this.#max.set(validValue);\n }\n }\n get max() {\n return this.#max();\n }\n\n #rangePlaceholder = signal<DateRangePlaceholder>({ startDate: 'Start Date', endDate: 'End Date' });\n @Input()\n set rangePlaceholder(v: DateRangePlaceholder) {\n this.#rangePlaceholder.set(v);\n }\n get rangePlaceholder(): DateRangePlaceholder {\n return this.#rangePlaceholder();\n }\n\n rangeValue = { start: '', end: '' };\n\n startDateFormControlName = input<string>('');\n endDateFormControlName = input<string>('');\n formGroup = input<FormGroup>();\n\n constructor() {\n // triggers state changes for the MatFormFieldControl\n effect(() => {\n this.#value();\n this.#placeholder();\n this.#rangePlaceholder(); // Todo: Check if it needs to trigger \"stateChanges\"!\n this.#disabled();\n this.#id();\n this.#focused();\n this.#empty();\n this.#required();\n this.#errorState();\n this.#locale();\n this.#mode();\n this.#min();\n this.#max();\n untracked(() => this.stateChanges.next());\n });\n\n // handle language change\n this.#translate.onLangChange.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((event) => {\n this.#locale.set(event.lang);\n this.#dateAdapter.setLocale(this.#locale());\n });\n // effect(() => {\n // this.#value();\n // untracked(() => console.log('DatepickerComponent.value: ', this.value));\n // });\n }\n\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange: (_: any) => void = () => {};\n // implemented as part of ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateTouched: () => void = () => {};\n\n // implemented as part of ControlValueAccessor interface\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n // implemented as part of ControlValueAccessor interface\n registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n // implemented as part of ControlValueAccessor interface\n writeValue(date: DatepickerValue): void {\n this.value = date;\n }\n\n // implemented as part of ControlValueAccessor interface\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // implemented as part of MatFormFieldControl interface\n onContainerClick(event: MouseEvent): void {\n const focusableInput = this.datepickerInput();\n if (focusableInput && !this.focused && !this.disabled) {\n // sets focus to MatFormFieldControls\n focusableInput.onContainerClick(event);\n this.focused = true;\n }\n }\n\n // implemented as part of MatFormFieldControl interface\n setDescribedByIds(ids: string[]): void {\n this.datepickerInput()?.setDescribedByIds(ids);\n }\n\n ngAfterViewInit(): void {\n const _datepickerInput = this.datepickerInput();\n const _formField = this.#formField;\n\n if (_datepickerInput) {\n // set MatFormFieldControl.id for auto labeling within a MatFormField\n this.id = _datepickerInput.id || this.id;\n // track datepicker input state changes as they are MatFormFieldControl inputs\n _datepickerInput.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n // set errorState\n this.errorState = _datepickerInput.errorState;\n // set disabled state\n this.disabled = _datepickerInput.disabled;\n });\n }\n\n // set the input's aria-describedby attribute to the parent MatFormField._hintLabelIds (=\"label-1 label-2 ...\")\n if (_formField) {\n this.setDescribedByIds([..._formField._hintLabelId.split(' ')]);\n }\n\n // set errorState for Range-Mode\n this.formGroup()\n ?.statusChanges.pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((v: FormControlStatus) => {\n this.errorState = v === 'INVALID';\n });\n\n this.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {\n // get the previous value of the associated formFieldControl\n if (!this.value && value) this.value = this.#dateAdapter.getValidDateOrNull(this.#dateAdapter.deserialize(value));\n });\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n /* Custom Datepicker Functions */\n\n open(): void {\n this.datepicker()?.open();\n this.rangepicker()?.open();\n this.timepicker()?.open();\n }\n}\n","@switch (mode) {\n @case (datepickerMode.DATE) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matDatepicker]=\"datepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n }\n @case (datepickerMode.DATE_RANGE) {\n @let formGroup = this.formGroup();\n @let startDate = this.startDateFormControlName();\n @let endDate = this.endDateFormControlName();\n @if (formGroup && startDate && endDate) {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n [formGroup]=\"formGroup\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" [formControlName]=\"startDate\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" [formControlName]=\"endDate\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n } @else {\n <mat-date-range-input\n [rangePicker]=\"rangepicker\"\n [min]=\"min\"\n [max]=\"max\"\n #datepickerInput=\"matDateRangeInput\"\n >\n <input matStartDate [placeholder]=\"rangePlaceholder.startDate\" (dateChange)=\"rangeValue.start = $event.value\"/>\n <input matEndDate [placeholder]=\"rangePlaceholder.endDate\" (dateChange)=\"rangeValue.end = $event.value\"/>\n </mat-date-range-input>\n <mat-date-range-picker #rangepicker></mat-date-range-picker>\n }\n }\n @case (datepickerMode.TIME) {\n <input\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled\"\n matInput\n [matTimepicker]=\"timepicker\"\n [(ngModel)]=\"value\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n #datepickerInput=\"matInput\"\n #timepickerInput=\"matTimepickerInput\"\n >\n <mat-timepicker #timepicker/>\n }\n @default {\n <input\n type=\"datetime-locale\"\n [placeholder]=\"placeholder\"\n matInput\n [(ngModel)]=\"value\"\n #datepickerInput=\"matInput\"\n />\n }\n}\n\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { MatDatepickerIntl } from '@angular/material/datepicker';\nimport { DatepickerComponent } from '../datepicker';\nimport { YmtDatepickerIntlService } from '../../services';\nimport { YmtIconButtonDirective } from '../../directives';\nimport { MatIcon } from '@angular/material/icon';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ymt-datepicker-toggle',\n template: `\n <button type=\"button\" ymtIconButton [attr.aria-label]=\"ariaLabel\" [aria-disabled]=\"disabled\" [disabled]=\"disabled\">\n <ng-content select=\"mat-icon\"></ng-content>\n </button>\n `,\n imports: [YmtIconButtonDirective],\n providers: [{ provide: MatDatepickerIntl, useClass: YmtDatepickerIntlService }],\n host: {\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)'\n },\n exportAs: 'matDatepickerToggle',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerToggleComponent implements OnInit, OnDestroy {\n #intl = inject(MatDatepickerIntl);\n #destroyRef = inject(DestroyRef);\n\n #datepicker = signal<DatepickerComponent | null>(null);\n @Input({ alias: 'for', required: true })\n set datepicker(v: DatepickerComponent | null) {\n this.#datepicker.set(v);\n }\n get datepicker() {\n return this.#datepicker();\n }\n\n #disabled = signal<boolean>(false);\n @Input()\n set disabled(v: BooleanInput) {\n this.#disabled.set(coerceBooleanProperty(v));\n }\n get disabled(): boolean {\n return this.#disabled();\n }\n\n #ariaLabel = signal(this.#intl.openCalendarLabel);\n @Input()\n set ariaLabel(v: string) {\n this.#ariaLabel.set(v);\n }\n get ariaLabel() {\n return this.#ariaLabel();\n }\n\n stateChanges = new Subject<void>();\n\n constructor() {\n effect(() => {\n this.#datepicker();\n this.#disabled();\n this.#ariaLabel();\n this.stateChanges.next();\n });\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n ngOnInit(): void {\n const datepicker = this.datepicker;\n if (datepicker) {\n datepicker.stateChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.ariaLabel = this.#intl.openCalendarLabel;\n if (this.disabled !== datepicker.disabled) {\n this.disabled = datepicker.disabled;\n }\n });\n } else {\n throw new Error(`DatepickerComponent is missing on DatepickerToggleComponent's \"for\"-attribute!`);\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -6,8 +6,8 @@ import { LayoutOutputData, LayoutSettings, MasterDetailsPaneLayoutOptions } from
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class MasterDetailsLayoutComponent {
8
8
  #private;
9
- masterPaneRef: import("@angular/core").Signal<YmtPaneComponent | undefined>;
10
- detailsPaneRef: import("@angular/core").Signal<YmtPaneComponent | undefined>;
9
+ masterPaneRef: import("@angular/core").Signal<YmtPaneComponent>;
10
+ detailsPaneRef: import("@angular/core").Signal<YmtPaneComponent>;
11
11
  isDragging: import("@angular/core").WritableSignal<boolean>;
12
12
  panes: import("@angular/core").Signal<readonly YmtLayoutPaneDirective[]>;
13
13
  _panes: import("@angular/core").Signal<{
@@ -1,9 +1,10 @@
1
1
  import { OnInit, AfterViewInit } from '@angular/core';
2
2
  import { YMT_BUTTON_SIZE } from './ymt-button.model';
3
3
  import * as i0 from "@angular/core";
4
+ type ButtonType = 'primary' | 'secondary' | 'tertiary' | 'danger';
4
5
  export declare class YmtButtonDirective implements OnInit, AfterViewInit {
5
6
  #private;
6
- ymtButton: import("@angular/core").InputSignal<"primary" | "secondary" | "tertiary">;
7
+ ymtButton: import("@angular/core").InputSignal<ButtonType>;
7
8
  disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
8
9
  ariaDisabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
10
  disableRipple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
@@ -15,3 +16,4 @@ export declare class YmtButtonDirective implements OnInit, AfterViewInit {
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<YmtButtonDirective, never>;
16
17
  static ɵdir: i0.ɵɵDirectiveDeclaration<YmtButtonDirective, "button[ymtButton], a[ymtButton]", never, { "ymtButton": { "alias": "ymtButton"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; "isSignal": true; }; "size": { "alias": "button-size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17
18
  }
19
+ export {};
@@ -1,2 +1,4 @@
1
1
  import { EnvironmentProviders } from '@angular/core';
2
- export declare const provideYmtMaterial: (customTheme?: any[]) => EnvironmentProviders;
2
+ export declare const provideYmtMaterial: (customTheme?: any[], options?: {
3
+ supportsSmallScreens: boolean;
4
+ }) => EnvironmentProviders;