@filip.mazev/modal 0.1.60 → 0.1.61

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":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal-global-settings.service.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, signal } from '@angular/core';\nimport { ModalLayout } from '../types/modal.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalGlobalSettingsService {\n public readonly layout = signal<ModalLayout>('center');\n public readonly animate = signal<boolean>(true);\n public readonly hasBackdrop = signal<boolean>(true);\n public readonly showCloseButton = signal<boolean>(true);\n public readonly contentWrapper = signal<boolean>(true);\n public readonly overrideFullHeight = signal<boolean>(false);\n \n public readonly disableClose = signal<boolean>(false);\n public readonly disableCloseOnBackdropClick = signal<boolean>(false);\n public readonly disableCloseOnNavigation = signal<boolean>(false);\n public readonly closeGuardOnlyOnCancel = signal<boolean>(true);\n \n public readonly disableConsoleWarnings = signal<boolean>(false);\n public readonly disableConsoleInfo = signal<boolean>(false);\n\n /**\n * Updates the global modal settings with the provided values. Only the specified settings will be updated, while others will remain unchanged.\n * @param settings An object containing the settings to be updated. Each property is optional, and only those provided will be updated.\n * Example usage:\n * this.modalGlobalSettingsService.update({\n * animate: false,\n * hasBackdrop: true,\n * disableCloseOnBackdropClick: true\n * });\n * In this example, the global settings for 'animate', 'hasBackdrop', and 'disableCloseOnBackdropClick' will be updated, while all other settings will retain their current values.\n */\n public update(settings: Partial<{\n layout: ModalLayout;\n animate: boolean;\n hasBackdrop: boolean;\n showCloseButton: boolean;\n contentWrapper: boolean;\n overrideFullHeight: boolean;\n disableCloseOnBackdropClick: boolean;\n disableCloseOnNavigation: boolean;\n closeGuardOnlyOnCancel: boolean;\n disableConsoleWarnings: boolean;\n disableConsoleInfo: boolean;\n }>) {\n if (settings.animate !== undefined) this.animate.set(settings.animate);\n if (settings.hasBackdrop !== undefined) this.hasBackdrop.set(settings.hasBackdrop);\n if (settings.disableCloseOnBackdropClick !== undefined) this.disableCloseOnBackdropClick.set(settings.disableCloseOnBackdropClick);\n }\n}","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ModalGlobalSettingsService } from './modal-global-settings.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly rendererFactory = inject(RendererFactory2);\n private readonly document = inject(DOCUMENT);\n\n private readonly renderer: Renderer2;\n\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n const resolvedConfig = this.resolveConfig(config);\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(resolvedConfig);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(resolvedConfig));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n private resolveConfig<D, R>(config: IModalConfig<D, R> | undefined): IModalConfig<D, R> {\n const resolvedStyle = {\n layout: config?.style?.layout ?? this.globalSettings.layout(),\n animate: config?.style?.animate ?? this.globalSettings.animate(),\n hasBackdrop: config?.style?.hasBackdrop ?? this.globalSettings.hasBackdrop(),\n showCloseButton: config?.style?.showCloseButton ?? this.globalSettings.showCloseButton(),\n contentWrapper: config?.style?.contentWrapper ?? this.globalSettings.contentWrapper(),\n overrideFullHeight: config?.style?.overrideFullHeight ?? this.globalSettings.overrideFullHeight(),\n breakpoints: config?.style?.breakpoints,\n mobileConfig: config?.style?.mobileConfig,\n wrapperClasses: config?.style?.wrapperClasses,\n wrapperStyles: config?.style?.wrapperStyles,\n closeDelay: config?.style?.closeDelay,\n };\n\n return {\n ...config,\n disableClose: config?.disableClose ?? this.globalSettings.disableClose(),\n disableCloseOnBackdropClick: config?.disableCloseOnBackdropClick ?? this.globalSettings.disableCloseOnBackdropClick(),\n disableCloseOnNavigation: config?.disableCloseOnNavigation ?? this.globalSettings.disableCloseOnNavigation(),\n closeGuardOnlyOnCancel: config?.closeGuardOnlyOnCancel ?? this.globalSettings.closeGuardOnlyOnCancel(),\n disableConsoleWarnings: config?.disableConsoleWarnings ?? this.globalSettings.disableConsoleWarnings(),\n disableConsoleInfo: config?.disableConsoleInfo ?? this.globalSettings.disableConsoleInfo(),\n style: resolvedStyle,\n };\n}\n\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit,\n computed\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ModalGlobalSettingsService } from '../services/modal-global-settings.service';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n private readonly modalService = inject(ModalService);\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n private readonly scrollLockService = inject(ScrollLockService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated = computed(() => this.config?.style.animate ?? this.globalSettings.animate());\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n }\n\n private initBreakpointCache(): void {\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated()\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal-global-settings.service';\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal-global-settings.service.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, signal } from '@angular/core';\nimport { ModalLayout } from '../types/modal.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalGlobalSettingsService {\n public readonly layout = signal<ModalLayout>('center');\n public readonly animate = signal<boolean>(true);\n public readonly hasBackdrop = signal<boolean>(true);\n public readonly showCloseButton = signal<boolean>(true);\n public readonly contentWrapper = signal<boolean>(true);\n public readonly overrideFullHeight = signal<boolean>(false);\n \n public readonly disableClose = signal<boolean>(false);\n public readonly disableCloseOnBackdropClick = signal<boolean>(false);\n public readonly disableCloseOnNavigation = signal<boolean>(false);\n public readonly closeGuardOnlyOnCancel = signal<boolean>(true);\n \n public readonly disableConsoleWarnings = signal<boolean>(false);\n public readonly disableConsoleInfo = signal<boolean>(false);\n\n /**\n * Updates the global modal settings with the provided values. Only the specified settings will be updated, while others will remain unchanged.\n * @param settings An object containing the settings to be updated. Each property is optional, and only those provided will be updated.\n * Example usage:\n * this.modalGlobalSettingsService.update({\n * animate: false,\n * hasBackdrop: true,\n * disableCloseOnBackdropClick: true\n * });\n * In this example, the global settings for 'animate', 'hasBackdrop', and 'disableCloseOnBackdropClick' will be updated, while all other settings will retain their current values.\n */\n public update(settings: Partial<{\n layout: ModalLayout;\n animate: boolean;\n hasBackdrop: boolean;\n showCloseButton: boolean;\n contentWrapper: boolean;\n overrideFullHeight: boolean;\n disableCloseOnBackdropClick: boolean;\n disableCloseOnNavigation: boolean;\n closeGuardOnlyOnCancel: boolean;\n disableConsoleWarnings: boolean;\n disableConsoleInfo: boolean;\n }>) {\n if (settings.animate !== undefined) this.animate.set(settings.animate);\n if (settings.hasBackdrop !== undefined) this.hasBackdrop.set(settings.hasBackdrop);\n if (settings.disableCloseOnBackdropClick !== undefined) this.disableCloseOnBackdropClick.set(settings.disableCloseOnBackdropClick);\n }\n}","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ModalGlobalSettingsService } from './modal-global-settings.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly rendererFactory = inject(RendererFactory2);\n private readonly document = inject(DOCUMENT);\n\n private readonly renderer: Renderer2;\n\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n const resolvedConfig = this.resolveConfig(config);\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(resolvedConfig);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(resolvedConfig));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n private resolveConfig<D, R>(config: IModalConfig<D, R> | undefined): IModalConfig<D, R> {\n const resolvedStyle = {\n layout: config?.style?.layout ?? this.globalSettings.layout(),\n animate: config?.style?.animate ?? this.globalSettings.animate(),\n hasBackdrop: config?.style?.hasBackdrop ?? this.globalSettings.hasBackdrop(),\n showCloseButton: config?.style?.showCloseButton ?? this.globalSettings.showCloseButton(),\n contentWrapper: config?.style?.contentWrapper ?? this.globalSettings.contentWrapper(),\n overrideFullHeight: config?.style?.overrideFullHeight ?? this.globalSettings.overrideFullHeight(),\n breakpoints: config?.style?.breakpoints,\n mobileConfig: config?.style?.mobileConfig,\n wrapperClasses: config?.style?.wrapperClasses,\n wrapperStyles: config?.style?.wrapperStyles,\n closeDelay: config?.style?.closeDelay,\n };\n\n return {\n ...config,\n disableClose: config?.disableClose ?? this.globalSettings.disableClose(),\n disableCloseOnBackdropClick: config?.disableCloseOnBackdropClick ?? this.globalSettings.disableCloseOnBackdropClick(),\n disableCloseOnNavigation: config?.disableCloseOnNavigation ?? this.globalSettings.disableCloseOnNavigation(),\n closeGuardOnlyOnCancel: config?.closeGuardOnlyOnCancel ?? this.globalSettings.closeGuardOnlyOnCancel(),\n disableConsoleWarnings: config?.disableConsoleWarnings ?? this.globalSettings.disableConsoleWarnings(),\n disableConsoleInfo: config?.disableConsoleInfo ?? this.globalSettings.disableConsoleInfo(),\n style: resolvedStyle,\n };\n }\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit,\n computed\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ModalGlobalSettingsService } from '../services/modal-global-settings.service';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n private readonly modalService = inject(ModalService);\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n private readonly scrollLockService = inject(ScrollLockService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated = computed(() => this.config?.style.animate ?? this.globalSettings.animate());\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n }\n\n private initBreakpointCache(): void {\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated()\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal-global-settings.service';\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":";;;;;;;;MAIa,gBAAgB,CAAA;AACpB,IAAA,MAAM;AACN,IAAA,WAAW;AAEX,IAAA,OAAO;AACP,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,eAAe;AAEf,IAAA,YAAY;AAEZ,IAAA,cAAc;AAEd,IAAA,cAAc;AACd,IAAA,aAAa;AAEb,IAAA,kBAAkB;AAEzB,IAAA,WAAA,CAAY,MAA0B,EAAA;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,QAAQ;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW;QAEtC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI;QACtC,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,IAAI;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU;QACpC,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,eAAe,IAAI,IAAI;QAEtD,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,EAAE;QAE9C,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,IAAI;QAEpD,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,EAAE;QAClD,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,EAAE;QAEhD,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE,kBAAkB,IAAI,KAAK;IAC/D;AACD;;MClCY,WAAW,CAAA;AACf,IAAA,IAAI;AAEJ,IAAA,UAAU;AAEV,IAAA,UAAU;AACV,IAAA,sBAAsB;AAEtB,IAAA,YAAY;AACZ,IAAA,2BAA2B;AAC3B,IAAA,wBAAwB;AAExB,IAAA,IAAI;AAEJ,IAAA,KAAK;AAEL,IAAA,UAAU;AAEV,IAAA,cAAc;AACd,IAAA,aAAa;AAEb,IAAA,sBAAsB;AACtB,IAAA,kBAAkB;AAElB,IAAA,EAAE;AAET,IAAA,WAAA,CAAY,MAA2B,EAAA;QACrC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI;AAEhC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU;AAEpC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU;QACpC,IAAI,CAAC,sBAAsB,GAAG,MAAM,EAAE,sBAAsB,IAAI,IAAI;QAEpE,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,KAAK;QACjD,IAAI,CAAC,2BAA2B,GAAG,MAAM,EAAE,2BAA2B,IAAI,KAAK;QAC/E,IAAI,CAAC,wBAAwB,GAAG,MAAM,EAAE,wBAAwB,IAAI,KAAK;QAEzE,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;QAEhD,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,EAAE;QAE1C,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,EAAE;QAClD,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,EAAE;QAEhD,IAAI,CAAC,sBAAsB,GAAG,MAAM,EAAE,sBAAsB,IAAI,KAAK;QACrE,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE,kBAAkB,IAAI,KAAK;AAE7D,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE;IACtB;AACD;;ICzDW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;ACYtB;MACa,QAAQ,CAAA;AAsBV,IAAA,aAAA;AAEC,IAAA,YAAA;;IArBF,eAAe,GAA6B,EAA8B;IAE1E,kBAAkB,GAAqC,EAAsC;IAC7F,sBAAsB,GAAgB,EAAiB;IACvD,cAAc,GAA4B,SAAS;;IAEnD,aAAa,GAAoB,EAAqB;;AAEtD,IAAA,WAAW,GAAe,UAAU,CAAC,MAAM;;IAE3C,UAAU,GAAG,IAAI,eAAe,CAAa,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9D,YAAY,GAAuB,SAAS;;AAE5C,IAAA,oBAAoB,GAAwB,IAAI,OAAO,EAAc;;AAErE,IAAA,iBAAiB,GAA8C,IAAI,OAAO,EAAoC;;IAEtH,WAAA,CACE,YAA6B,EACtB,aAA+B,EACtC,iBAAmD,EAC3C,YAA0B,EAClC,WAA+B,EAAA;QAHxB,IAAA,CAAA,aAAa,GAAb,aAAa;QAEZ,IAAA,CAAA,YAAY,GAAZ,YAAY;AAGpB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;QAC1C,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,aAAa;AAErE,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe;IAC7B;IAEA,IAAY,cAAc,CAAC,cAAwC,EAAA;AACjE,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACvC;AAEA,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO,IAAI,CAAC,kBAAkB;IAChC;IAEA,IAAY,iBAAiB,CAAC,iBAAmD,EAAA;AAC/E,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;IAC7C;AAEA,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,sBAAsB;IACpC;IAEA,IAAY,qBAAqB,CAAC,qBAAkC,EAAA;AAClE,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;IACrD;AAEA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC5B;IAEA,IAAY,aAAa,CAAC,aAAsC,EAAA;AAC9D,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;IACrC;;AAIA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;IAEA,IAAY,YAAY,CAAC,YAA6B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;IACnC;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY;IAC1B;IAEA,IAAY,WAAW,CAAC,WAA0C,EAAA;AAChE,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACjC;IAEO,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;IACjD;IAEO,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACvC;AAEA;;;AAGG;IACI,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IAC9C;;AAIO,IAAA,MAAM,IAAI,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAExC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAEjE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;QAEhD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;AAE/C,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAE3E,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAE3D,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvC;IAEO,KAAK,CAAC,QAAwB,QAAQ,EAAE,SAAwB,SAAS,EAAE,aAAsB,KAAK,EAAA;AAC3G,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;IACzE;IAEQ,SAAS,GAAA;QACf,OAAO,IAAI,CAAC,WAAW;IACzB;AAEQ,IAAA,eAAe,CAAC,KAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;AAEQ,IAAA,UAAU,CAAC,MAAwC,EAAA;AACzD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC;;;AAMQ,IAAA,WAAW,CAAC,MAAwC,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAExC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AAChC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YAC/B;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAEhC,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAEvC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAEvB,YAAA,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC;QACrC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACvD;AAED;;AC/KD;MACa,UAAU,GAAwB,IAAI,cAAc,CAAM,YAAY;;MCGtE,0BAA0B,CAAA;AACrB,IAAA,MAAM,GAAG,MAAM,CAAc,QAAQ,kDAAC;AACtC,IAAA,OAAO,GAAG,MAAM,CAAU,IAAI,mDAAC;AAC/B,IAAA,WAAW,GAAG,MAAM,CAAU,IAAI,uDAAC;AACnC,IAAA,eAAe,GAAG,MAAM,CAAU,IAAI,2DAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAU,IAAI,0DAAC;AACtC,IAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,8DAAC;AAE3C,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,wDAAC;AACrC,IAAA,2BAA2B,GAAG,MAAM,CAAU,KAAK,uEAAC;AACpD,IAAA,wBAAwB,GAAG,MAAM,CAAU,KAAK,oEAAC;AACjD,IAAA,sBAAsB,GAAG,MAAM,CAAU,IAAI,kEAAC;AAE9C,IAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,kEAAC;AAC/C,IAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,8DAAC;AAE3D;;;;;;;;;;AAUG;AACI,IAAA,MAAM,CAAC,QAYZ,EAAA;AACA,QAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtE,QAAA,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClF,QAAA,IAAI,QAAQ,CAAC,2BAA2B,KAAK,SAAS;YAAE,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACpI;uGA3CW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCaY,YAAY,CAAA;AACN,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1C,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,IAAA,QAAQ;AAER,IAAA,cAAc,GAAG,MAAM,CAAC,0BAA0B,CAAC;;AAI5D,IAAA,MAAM,GAAkB,IAAI,GAAG,EAAE;IACjC,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,MAAM,CAAC;;AAIvE,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;QAC/D,IAAI,CAAC,mBAAmB,EAAE;IAC5B;;IAIQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,MAAM,CAAC;aACT,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,EAAE;aAErB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB;AACF,QAAA,CAAC,CAAC;IACN;;;AAMA;;;;;AAKG;IACI,IAAI,CAA8C,SAA2B,EAAE,MAA2B,EAAA;AAC/G,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC5D,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,eAAe,EAAC,SAAkB,GAAE;YACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,YAAA,eAAe,EAAE;AAClB,SAAA,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;AACtC,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClE,MAAM,EAAE,UAAU,CAAC;AACpB,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE;YAC5C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,YAAA,eAAe,EAAE;AAClB,SAAA,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAEjD,QAAA,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,UAAU;QAC7C,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEjE,QAAA,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAU,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;QAE7G,IAAI,IAAI,CAAC,QAAQ,CAAO,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC5C,YAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;AACjC,YAAA,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE;QACnC;AAEA,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;YACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC3C,YAAA,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;AAC5C,QAAA,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;QAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC;AAEtD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpC,KAAK,CAAC,IAAI,EAAE;AAEZ,QAAA,OAAO,KAAK;IACd;AAEA;;;AAGG;AACI,IAAA,KAAK,CAA8C,KAAwB,EAAA;QAChF,KAAK,CAAC,KAAK,EAAE;IACf;AAEA;;;AAGG;AACI,IAAA,UAAU,CAA8C,KAAwB,EAAA;AACrF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;AAEA;;;AAGG;IACI,QAAQ,CAAC,aAAsB,KAAK,EAAA;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBACvE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;AACI,IAAA,IAAI,CAAO,aAAiC,EAAA;AACjD,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,KAAK,aAAa,EAAE;AACtD,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;;AAGG;IACI,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;IACzB;;;AAMQ,IAAA,QAAQ,CAAO,SAAkB,EAAA;AACvC,QAAA,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,aAAa,IAAI,SAAS,IAAI,OAAQ,SAA0B,CAAC,WAAW,KAAK,UAAU;IAC3J;AAEQ,IAAA,aAAa,CAAO,MAAsC,EAAA;AAChE,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC7D,YAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAChE,YAAA,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AAC5E,YAAA,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AACxF,YAAA,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AACrF,YAAA,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;AACjG,YAAA,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;AACvC,YAAA,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;AACzC,YAAA,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;AAC7C,YAAA,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;AAC3C,YAAA,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;SACtC;QAED,OAAO;AACL,YAAA,GAAG,MAAM;YACT,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YACxE,2BAA2B,EAAE,MAAM,EAAE,2BAA2B,IAAI,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE;YACrH,wBAAwB,EAAE,MAAM,EAAE,wBAAwB,IAAI,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;YAC5G,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,IAAI,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;YACtG,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,IAAI,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;YACtG,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;AAC1F,YAAA,KAAK,EAAE,aAAa;SACrB;IACH;uGA7LW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCTY,aAAa,CAAA;AACR,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;IAErB,KAAK,GAAG,MAAM,EAAc;uGAJjC,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,yXCR1B,0LAEM,EAAA,MAAA,EAAA,CAAA,sUAAA,CAAA,EAAA,CAAA;;2FDMO,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,EAAE,EAAA,QAAA,EAAA,0LAAA,EAAA,MAAA,EAAA,CAAA,sUAAA,CAAA,EAAA;;;MEKA,uBAAuB,CAAA;AAClB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiC;IAExD,KAAK,GAAG,MAAM,EAA8B;uGAHjD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,6PCTpC,ubAME,EAAA,MAAA,EAAA,CAAA,4UAAA,CAAA,EAAA,CAAA;;2FDGW,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,WACjC,EAAE,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,4UAAA,CAAA,EAAA;;;MEMA,WAAW,CAAA;AACN,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiC;IAExD,KAAK,GAAG,MAAM,EAA8B;uGAHjD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxB,wYAQM,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDM,uBAAuB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAItB,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,wYAAA,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA;;;AEP7B,MAAM,sBAAsB,GAAG;AAC/B,MAAM,8BAA8B,GAAG;;MCWjC,gBAAgB,CAAA;AACX,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,6CAAiB;AAEpC,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAC3D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAE3D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiC;AACxD,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;AAClC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAW;AACtC,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,4DAAU;IAE5C,KAAK,GAAG,MAAM,EAA8B;AAErD,IAAA,iBAAiB,GAAG,MAAM,CAAC,CAAC,6DAAC;AAC7B,IAAA,2BAA2B,GAAG,MAAM,CAAC,KAAK,uEAAC;AACxC,IAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,+DAAC;AAEiB,IAAA,mBAAmB;AAC5B,IAAA,UAAU;AAErD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE,EAAE;AACtC,YAAA,OAAO,kBAAkB;QAC3B;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzD,OAAO,CAAA,WAAA,EAAc,WAAW,CAAA,GAAA,CAAK;AACvC,IAAA,CAAC,0DAAC;IAEQ,cAAc,GAAW,CAAC;IAC1B,eAAe,GAAY,KAAK;IAElC,aAAa,GAAG,KAAK;IACrB,oBAAoB,GAAY,KAAK;IAErC,gBAAgB,GAAwB,IAAI;IAC5C,mBAAmB,GAAwB,IAAI;IAEhD,QAAQ,GAAA;QACb,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,mBAAmB,IAAI;IAC9B;;IAIQ,2BAA2B,GAAA;QACjC,IAAI,IAAI,CAAC,eAAe;YAAE;QAE1B,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,KAAK,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;AAClI,QAAA,IAAI,CAAC,QAAQ;YAAE;QAEf,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,aAAa;AACtD,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,IAAI,KAAK,GAAG,CAAC;QAEb,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,aAAa,GAAG,KAAK;AAEzB,QAAA,MAAM,WAAW,GAAG,CAAC,KAAmB,KAAI;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO;gBAAE;YAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC;AACpE,YAAA,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc;YAEzC,aAAa,GAAG,IAAI;AACpB,YAAA,MAAM,GAAG,KAAK,CAAC,OAAO;AACtB,YAAA,SAAS,GAAG,KAAK,CAAC,SAAS;AAE3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAElC,YAAA,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC3C,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,KAAmB,KAAI;AAC1C,YAAA,IAAI,CAAC,aAAa;gBAAE;AAEpB,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM;YAEvC,IAAI,KAAK,CAAC,UAAU;gBAAE,KAAK,CAAC,cAAc,EAAE;AAE5C,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,KAAmB,KAAI;AACxC,YAAA,IAAI,CAAC,aAAa;gBAAE;YAEpB,aAAa,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,YAAA,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAE7C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC;AACjD,YAAA,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ;AAEnC,YAAA,IAAI,MAAM,GAAG,KAAK,KAAK,SAAS,GAAGA,8BAA+C,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;AACjG,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvE,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvE,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/C,QAAA,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC;AAEnD,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAK;AAC3B,YAAA,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC;AACtD,YAAA,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC;AACtD,YAAA,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC;AAClD,YAAA,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC;AACxD,QAAA,CAAC;IACH;IAEQ,0BAA0B,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE;AAE3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAE5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;IAEQ,0BAA0B,GAAA;QAChC,IAAI,IAAI,CAAC,oBAAoB;YAAE;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAEhC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,YAAY;QAEzC,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,cAAc,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,GAAGC,sBAAuC;IAC1I;IAEQ,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,mBAAmB;YAAE;AAE9B,QAAA,MAAM,OAAO,GAAG,CAAC,KAAmB,KAAI;AACtC,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO;AAE7C,YAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBACzB,IAAI,CAAC,2BAA2B,EAAE;YACpC;AAAO,iBAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;AACzC,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;gBAC1B,IAAI,CAAC,0BAA0B,EAAE;YACnC;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/C,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC;IACrF;uGAnKW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,mjDAuCM,EAAA,MAAA,EAAA,CAAA,utDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BM,OAAO,oFAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIxB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,mjDAAA,EAAA,MAAA,EAAA,CAAA,utDAAA,CAAA,EAAA;;sBAqBnC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEf9B,aAAa,CAAA;AACR,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAC3D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAE3D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiC;AACxD,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,6CAAiB;AACpC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;AAClC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAW;AACtC,IAAA,wBAAwB,GAAG,KAAK,CAAC,QAAQ,mEAAW;AACpD,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,4DAAU;AAC5C,IAAA,6BAA6B,GAAG,KAAK,CAAC,QAAQ,wEAAW;AACzD,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAW;IACrC,KAAK,GAAG,MAAM,EAA8B;IAC5C,eAAe,GAAG,MAAM,EAAc;AAEf,IAAA,WAAW;AAE3C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAClC,OAAO;AACL,YAAA,gCAAgC,EAAE,IAAI;YACtC,8BAA8B,EAAE,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAExF,2BAA2B,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/D,4BAA4B,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;SAChE;AACH,IAAA,CAAC,wDAAC;uGAzBS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAeV,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BhC,qtEA6Cc,EAAA,MAAA,EAAA,CAAA,ojEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCF,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,qGAAE,uBAAuB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIhF,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,qtEAAA,EAAA,MAAA,EAAA,CAAA,ojEAAA,CAAA,EAAA;;sBAmB3F,YAAY;uBAAC,gBAAgB;;;MEfnB,SAAS,CAAA;AACJ,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAe;AAEtC,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAC3D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAE3D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiC;AACxD,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,6CAAiB;AACpC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;AAClC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAW;AACtC,IAAA,wBAAwB,GAAG,KAAK,CAAC,QAAQ,mEAAW;AACpD,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,4DAAU;AAC5C,IAAA,6BAA6B,GAAG,KAAK,CAAC,QAAQ,wEAAW;AACzD,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAW;IAErC,KAAK,GAAG,MAAM,EAA8B;AAErB,IAAA,WAAW;AAE3C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO;AAC/C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;AAEvC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE;QAE7C,OAAO;AACL,YAAA,4BAA4B,EAAE,IAAI;YAClC,0BAA0B,EAAE,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACpF,YAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI;AAC7C,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,aAAa;YAEpB,uBAAuB,EAAE,aAAa,GAAG,cAAc,GAAG,IAAI;YAC9D,wBAAwB,EAAE,aAAa,GAAG,CAAC,cAAc,GAAG;SAC7D;AACH,IAAA,CAAC,wDAAC;AAEQ,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAEzC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAE5B,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;gBAE/B,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gBAChC,CAAC,EAAE,EAAE,CAAC;YACR;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;uGAtDW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAiBN,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChChC,kwDAuCc,EAAA,MAAA,EAAA,CAAA,8zCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5BF,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,qGAAE,uBAAuB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIhF,SAAS,EAAA,UAAA,EAAA,CAAA;kBANrB,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,kwDAAA,EAAA,MAAA,EAAA,CAAA,8zCAAA,CAAA,EAAA;;sBAqB3F,YAAY;uBAAC,gBAAgB;;;AEhCzB,MAAM,2BAA2B,GAAG;AACpC,MAAM,oCAAoC,GAAG;AAE7C,MAAM,4CAA4C,GAAG;AACrD,MAAM,4CAA4C,GAAG;;MCmC/C,SAAS,CAAA;AACH,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,cAAc,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACnD,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE1D,IAAA,iBAAiB,GAAWC,2BAAqC;IAE1E,YAAY,GAAoB,EAAqB;AACrD,IAAA,MAAM;AACN,IAAA,aAAa;AACb,IAAA,oBAAoB,GAAG,IAAI,OAAO,EAAc;AAChD,IAAA,aAAa,GAA2B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AAChF,IAAA,MAAM,GAAG,MAAM,CAAU,IAAI,kDAAC;AAC9B,IAAA,eAAe,GAAG,MAAM,CAAc,QAAQ,2DAAC;AAC/C,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;AACnC,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,kDAAC;IAC/B,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAErF,IAAA,cAAc,GAAG,MAAM,CAA2B,IAAI,0DAAC;AACvD,IAAA,cAAc,GAAG,MAAM,CAA2B,IAAI,0DAAC;AACvD,IAAA,EAAE,GAAG,MAAM,CAAgB,IAAI,8CAAC;AAChC,IAAA,wBAAwB,GAAG,MAAM,CAAU,KAAK,oEAAC;IACjD,SAAS,GAAY,KAAK;IAE1B,6BAA6B,GAAY,KAAK;AAE9C,IAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU;AAEV,IAAA,cAAc;AAChC,IAAA,eAAe;AAEtB,IAAA,mBAAmB;AACf,IAAA,uBAAuB;IAEpD,uBAAuB,GAAY,KAAK;IACxC,YAAY,GAAW,MAAM,EAAE;IAE/B,kBAAkB,GAAkD,EAAE;IAEtE,WAAW,GAA4B,IAAI;AAEnD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,wBAAwB,EAAE;QAE/B,MAAM,CAAC,MAAK;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,mBAAmB,EAAE;QAE1B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE;YACtD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AACzC,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,yBAAyB,EAAE;AAC5B,SAAA,CAAC;IACJ;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,CAAC,KAAK;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE;QAC9B,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;IACxD;;AAGO,IAAA,iBAAiB,CAAC,QAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC;;AAGO,IAAA,iBAAiB,CAAC,QAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC;;IAGO,KAAK,CAAC,KAAA,GAAwB,QAAQ,EAAE,MAAA,GAAwB,SAAS,EAAE,qBAAA,GAAiC,KAAK,EAAE,UAAA,GAAsB,KAAK,EAAA;QACnJ,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/B;QACF;QAEA,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,IAAI,qBAAqB,EAAE;YAC/D;QACF;AAEA,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAEjG,IAAI,qBAAqB,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AACpD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAEtE,YAAA,MAAM,SAAS,GAAG,WAAW,YAAY,UAAU,GAAG,WAAW,GAAG,WAAW,YAAY,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAExI,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBACnC,IAAI,CAAC,2BAA2B,EAAE;YACpC;AAEA,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;gBAC7C,IAAI,QAAQ,EAAE;AACZ,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;gBACjC;AACF,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;IACjC;;AAGU,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAErC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI,EAAE;YACxF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;QACvC;IACF;IAEA,IACc,gBAAgB,CAAC,GAAiC,EAAA;AAC9D,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG;YACtB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QACxC;IACF;;IAIQ,wBAAwB,GAAA;AAC9B,QAAA,SAAS,CAAgB,QAAQ,EAAE,SAAS;AACzC,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,EACxD,kBAAkB,EAAE;aAErB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;IACN;;;IAMQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;AAEjD,QAAA,IAAI,CAAC,SAAS;YACZ,IAAI,CAAC,MAAM,KAAK,SAAS;AACzB,iBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;qBACxE,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,CAAC;AAEzH,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,KAAK,KAAK;IAClF;IAEQ,mBAAmB,GAAA;QACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW;AAE1D,QAAA,IAAI,kBAAkB,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW;YAEnE,IAAI,CAAC,kBAAkB,GAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB;AACtD,iBAAA,GAAG,CAAC,CAAC,GAAG,MAAM;AACb,gBAAA,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC9B,gBAAA,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI;AACjE,aAAA,CAAC;AACD,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACtC;IACF;AAEQ,IAAA,MAAM,WAAW,CAAC,KAAqB,EAAE,MAAqB,EAAA;AACpE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;AAE3C,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE;SAC4B;AAErC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QAClC;IACF;;;AAMQ,IAAA,YAAY,CAAC,KAAa,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,cAAc,GAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AAE1D,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACxC,YAAA,IAAI,KAAK,IAAI,EAAE,CAAC,KAAK,EAAE;AACrB,gBAAA,cAAc,GAAG,EAAE,CAAC,MAAM;gBAC1B;YACF;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE;QAChC,MAAM,UAAU,GAAG,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,OAAO;AAC1E,QAAA,MAAM,iBAAiB,GAAG,UAAU,KAAK,UAAU;QAEnD,IAAI,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;AAC9D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,cAAc,CAAC;AAErF,QAAA,MAAM,mBAAmB,GAAG,cAAc,KAAK,cAAc;AAC7D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAEzD,QAAA,IAAI,mBAAmB,IAAI,CAAC,iBAAiB,EAAE;AAC7C,YAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC;QACzC;AAAO,aAAA,IAAI,CAAC,mBAAmB,IAAI,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1C;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;IACvH;IAEQ,2BAA2B,GAAA;AACjC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC9C,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC;IACF;AAEQ,IAAA,gCAAgC,CAAC,UAAmB,EAAA;AAC1D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC9C,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC;QACzD;AACA,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1C;uGApQW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAuImB,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAvGzC,SAAS,6EACT,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxE7B,mlDA6Bc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMF,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,+BAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,8QAAE,aAAa,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIxD,SAAS,EAAA,UAAA,EAAA,CAAA;kBANrB,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mlDAAA,EAAA;;sBAiCnE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAC7C,SAAS;uBAAC,iBAAiB;;sBAE3B,YAAY;uBAAC,SAAS;;sBACtB,YAAY;uBAAC,aAAa;;sBAsG1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;MExK9C,KAAK,CAAA;AAChB;;AAEG;AACI,IAAA,IAAI,GAAG,MAAM,CAAI,UAAU,CAAC;AAEnC;;AAEG;AACI,IAAA,KAAK;AAEZ;;AAEG;AACI,IAAA,WAAW,KAAU;AAE5B;;;AAGG;AACI,IAAA,KAAK,CAAC,MAAU,EAAA;QACrB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;IACrC;uGAtBW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAL,KAAK,EAAA,CAAA;;2FAAL,KAAK,EAAA,UAAA,EAAA,CAAA;kBADjB;;;ICLW;AAAZ,CAAA,UAAY,aAAa,EAAA;;AAEvB,IAAA,aAAA,CAAA,gCAAA,CAAA,GAAA,2DAA4F;AAC5F,IAAA,aAAA,CAAA,gCAAA,CAAA,GAAA,2DAA4F;;AAE9F,CAAC,EALW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;MCQZ,oBAAoB,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QAChD;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC;QAC5D;IACF;uGAVW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,oBAAoB,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9D,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QAChD;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC;QAC5D;IACF;uGAVW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACJD;;AAEG;MACmB,eAAe,CAAA;AAKpC;;ACHD;;;;AAIG;AACG,MAAO,sBAAoE,SAAQ,eAAe,CAAA;AAE7F,IAAA,SAAA;AACA,IAAA,MAAA;IAFT,WAAA,CACS,SAA2B,EAC3B,MAA0B,EAAA;AAEjC,QAAA,KAAK,EAAE;QAHA,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;IAGf;AAEgB,IAAA,QAAQ,CAAC,YAA0B,EAAA;AACjD,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAU,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;QAEnE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAwC,KAAK,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC9G;AACD;;AC1BD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filip.mazev/modal",
3
- "version": "0.1.60",
3
+ "version": "0.1.61",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  "./_modal-theme": "./lib/styles/_modal-theme.scss",