@developer-partners/ngx-modal-dialog
Version:
1. Install the libary
1 lines • 21.9 kB
Source Map (JSON)
{"version":3,"file":"developer-partners-ngx-modal-dialog.mjs","sources":["../../../projects/ngx-modal-dialog/src/lib/modal-reference.ts","../../../projects/ngx-modal-dialog/src/lib/modal-config.ts","../../../projects/ngx-modal-dialog/src/lib/modal.component.ts","../../../projects/ngx-modal-dialog/src/lib/modal.component.html","../../../projects/ngx-modal-dialog/src/lib/modal.service.ts","../../../projects/ngx-modal-dialog/src/lib/modal.module.ts","../../../projects/ngx-modal-dialog/src/public-api.ts","../../../projects/ngx-modal-dialog/src/developer-partners-ngx-modal-dialog.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nimport { Subject } from 'rxjs';\r\nimport { ModalConfig } from './modal-config';\r\n\r\nexport class ModalReference<TConfig, TResult = TConfig> {\r\n private _event: Subject<TResult>;\r\n private _cancelEvent: Subject<void>;\r\n\r\n public config: ModalConfig<TConfig>;\r\n\r\n constructor(config: ModalConfig<TConfig>) {\r\n this.config = config;\r\n this._event = new Subject<TResult>();\r\n this._cancelEvent = new Subject();\r\n }\r\n\r\n public result(): Observable<TResult> {\r\n return this._event.asObservable()\r\n }\r\n\r\n public cancelResult(): Observable<void> {\r\n return this._cancelEvent.asObservable();\r\n }\r\n\r\n public closeSuccess(model?: TResult): void {\r\n this._event.next(model);\r\n this._event.complete();\r\n }\r\n\r\n public cancel(): void {\r\n // Just comlete the event transmission.\r\n this._event.complete();\r\n\r\n this._cancelEvent.next();\r\n this._cancelEvent.complete();\r\n }\r\n}","import { ViewContainerRef } from \"@angular/core\";\r\n\r\nexport interface ModalConfig<T> {\r\n title: string;\r\n size?: ModalSize;\r\n model?: T;\r\n type?: 'default' | 'error' | 'warning' | 'success',\r\n mode?: 'default' | 'disableFullScreen' | 'fullScreen';\r\n position?: 'center' | 'top' | 'bottom' | 'left' | 'right';\r\n viewContainerRef?: ViewContainerRef;\r\n}\r\n\r\nexport enum ModalSize {\r\n default,\r\n large,\r\n extraLarge,\r\n medium\r\n}\r\n","import { Component, ComponentRef, ViewChild, ViewContainerRef, AfterViewInit, Type, ChangeDetectorRef, ElementRef, OnDestroy, ViewEncapsulation, EnvironmentInjector, Injector, Input } from \"@angular/core\";\r\nimport { ModalReference } from './modal-reference';\r\nimport { ModalSize } from './modal-config';\r\n\r\n@Component({\r\n selector: 'dp-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrls: [\r\n './modal.component.scss'\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ModalComponent implements AfterViewInit, OnDestroy {\r\n private _changeDetectorRef: ChangeDetectorRef;\r\n\r\n private _mouseDownPressed: boolean;\r\n\r\n public modalReference: ModalReference<any>;\r\n public componentRef: ComponentRef<any>;\r\n public contentComponentType: Type<any>;\r\n public modalSize = ModalSize;\r\n public classConfig: any;\r\n\r\n public envInjector?: EnvironmentInjector;\r\n public elementInjector?: Injector;\r\n\r\n @ViewChild('contentContainer', { read: ViewContainerRef })\r\n public contentContainer: ViewContainerRef;\r\n\r\n @ViewChild('bodyElement')\r\n public bodyElement: ElementRef<HTMLElement>;\r\n\r\n constructor(\r\n changeDetectorRef: ChangeDetectorRef,\r\n modalRefernce: ModalReference<any, any>\r\n ) {\r\n this._changeDetectorRef = changeDetectorRef;\r\n this.modalReference = modalRefernce;\r\n }\r\n\r\n private createModalContent(componentType: Type<any>): ComponentRef<any> {\r\n this.contentContainer.clear();\r\n\r\n return this.contentContainer.createComponent(componentType, {\r\n injector: this.elementInjector ?? this.contentContainer.injector,\r\n environmentInjector: this.envInjector ?? this.contentContainer.injector.get(EnvironmentInjector)\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.componentRef = this.createModalContent(this.contentComponentType);\r\n\r\n // To update the view.\r\n this._changeDetectorRef.detectChanges();\r\n\r\n // To take focus from a button clicked behind the modal;\r\n this.bodyElement.nativeElement.focus();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n private isBackdropElement(target: EventTarget): boolean {\r\n let targetElement = <HTMLElement>target;\r\n\r\n if (targetElement.classList.contains('dp-backdrop')) {\r\n return true;\r\n }\r\n if (targetElement.classList.contains('dp-close-modal')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public mouseDownEvent(event: MouseEvent, backdropCliecked: boolean): void {\r\n // The backdropCliecked will be false if the event is just bubbled up from a child element.\r\n if (backdropCliecked && !this.isBackdropElement(event.target)) {\r\n return\r\n }\r\n\r\n // Mark the mouse button pressed to check on the mouseUp event.\r\n this._mouseDownPressed = !this._mouseDownPressed;\r\n }\r\n\r\n public mouseUpEvent(event: MouseEvent): void {\r\n // Check if the mouse was clicked on the backdrop.\r\n if (this._mouseDownPressed) {\r\n // Check if the mouse button was released on the backdrop\r\n if (this.isBackdropElement(event.target)) {\r\n // If mouse button was released on the backdrop, close the modal.\r\n event.stopPropagation();\r\n this.modalReference.cancel();\r\n }\r\n }\r\n }\r\n\r\n public keyUpEvent(event: KeyboardEvent): void {\r\n // Close on the Esc key press.\r\n if (event.which === 27) {\r\n this.modalReference.cancel();\r\n }\r\n }\r\n\r\n public maximize(): void {\r\n this.modalReference.config.mode = 'fullScreen';\r\n }\r\n\r\n public restoreWindow(): void {\r\n this.modalReference.config.mode = 'default';\r\n }\r\n\r\n public close() {\r\n this.modalReference.cancel();\r\n }\r\n}\r\n","<div class=\"dp-backdrop dp-modal-backdrop\"\r\n (mousedown)=\"mouseDownEvent($event, true)\"\r\n (mouseup)=\"mouseUpEvent($event)\"\r\n (keyup)=\"keyUpEvent($event)\">\r\n <div class=\"dp-modal\"\r\n [class.dp-large]=\"modalReference.config?.size === modalSize.large\"\r\n [class.dp-extra-large]=\"modalReference.config?.size === modalSize.extraLarge\"\r\n [class.dp-medium]=\"modalReference.config?.size === modalSize.medium\"\r\n [class.dp-full-screen-modal]=\"modalReference.config?.mode === 'fullScreen'\"\r\n [class.dp-disable-full-screen]=\"modalReference.config?.mode === 'disableFullScreen'\"\r\n [class.dp-modal-position-top]=\"modalReference.config?.position === 'top'\"\r\n [class.dp-modal-position-bottom]=\"modalReference.config?.position === 'bottom'\"\r\n [class.dp-modal-position-left]=\"modalReference.config?.position === 'left'\"\r\n [class.dp-modal-position-right]=\"modalReference.config?.position === 'right'\">\r\n\r\n <div class=\"dp-modal-header\"\r\n [class.dp-warning]=\"modalReference.config?.type === 'warning'\"\r\n [class.dp-error]=\"modalReference.config?.type === 'error'\"\r\n [class.dp-success]=\"modalReference.config?.type === 'success'\">\r\n <h2 class=\"dp-title\">\r\n {{modalReference.config?.title}}\r\n </h2>\r\n\r\n <ng-container *ngIf=\"modalReference.config?.mode != 'disableFullScreen'\">\r\n <button *ngIf=\"modalReference.config?.mode != 'fullScreen'\"\r\n (click)=\"maximize()\"\r\n title=\"Maximize\"\r\n aria-label=\"Maximize\">\r\n <span class=\"material-icons\">\r\n fullscreen\r\n </span>\r\n </button>\r\n\r\n <button *ngIf=\"modalReference.config?.mode == 'fullScreen'\"\r\n (click)=\"restoreWindow()\"\r\n title=\"Restore Window Size\"\r\n aria-label=\"Restore Window Size\">\r\n <span class=\"material-icons\">\r\n fullscreen_exit\r\n </span>\r\n </button>\r\n </ng-container>\r\n <button class=\"dp-close-modal\"\r\n (click)=\"close()\"\r\n title=\"Close\"\r\n aria-label=\"Close\">\r\n <span class=\"material-icons\">\r\n close\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <div #bodyElement class=\"dp-modal-body\" tabindex=\"-1\">\r\n <ng-template #contentContainer></ng-template>\r\n </div>\r\n </div>\r\n</div>","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, ComponentRef, InjectionToken, AbstractType, InjectFlags, EmbeddedViewRef, ViewContainerRef, createComponent, EnvironmentInjector } from \"@angular/core\";\r\nimport { ModalConfig } from \"./modal-config\";\r\nimport { ModalReference } from \"./modal-reference\";\r\nimport { ModalComponent } from \"./modal.component\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModalService {\r\n private _applicaionRef: ApplicationRef;\r\n private _injector: Injector;\r\n private _envInjector: EnvironmentInjector;\r\n\r\n constructor(\r\n applicaionRef: ApplicationRef,\r\n injector: Injector,\r\n envInjector: EnvironmentInjector\r\n ) {\r\n this._applicaionRef = applicaionRef;\r\n this._injector = injector;\r\n this._envInjector = envInjector;\r\n }\r\n\r\n private createModalComponent(dependecies: WeakMap<any, any>, config: ModalConfig<any>): ComponentRef<ModalComponent> {\r\n const envInjector =\r\n config.viewContainerRef?.injector.get(EnvironmentInjector, null) ??\r\n this._envInjector;\r\n\r\n const injector = new ModalInjector(\r\n config.viewContainerRef?.injector ?? this._injector,\r\n dependecies\r\n );\r\n\r\n const component = createComponent(ModalComponent, {\r\n environmentInjector: envInjector,\r\n elementInjector: injector\r\n });\r\n\r\n component.instance.envInjector = envInjector;\r\n component.instance.elementInjector = injector;\r\n\r\n return component;\r\n }\r\n\r\n private createModalRefernce<TConfig, TResult>(map: WeakMap<any, any>, config: ModalConfig<TConfig>): InternalModalRef<TConfig, TResult> {\r\n let modalReference = new InternalModalRef<TConfig, TResult>(config);\r\n\r\n // Create with internal implementation, but inject the public version.\r\n map.set(ModalReference, modalReference);\r\n\r\n modalReference.componentRef = this.createModalComponent(map, config);\r\n\r\n modalReference\r\n .result()\r\n .subscribe({\r\n complete: () => this.removeModal(modalReference)\r\n });\r\n\r\n return modalReference;\r\n }\r\n\r\n public show<TConfig, TResult = TConfig>(componentType: Type<any>, config: ModalConfig<TConfig>): ModalReference<TConfig, TResult> {\r\n let map = new WeakMap<any, any>();\r\n let modalReference = this.createModalRefernce<TConfig, TResult>(map, config);\r\n\r\n modalReference.componentRef.instance.contentComponentType = componentType;\r\n\r\n this._applicaionRef.attachView(modalReference.componentRef.hostView);\r\n document.body.appendChild(modalReference.getHtmlElement());\r\n\r\n // To trigger the animation effect. The modal is added to document at this point, but it's invisible.\r\n // We animate the showing part.\r\n window.setTimeout(() => {\r\n modalReference.getHtmlElement().firstElementChild.classList.add('dp-visible');\r\n });\r\n\r\n modalReference.componentRef.changeDetectorRef.detectChanges();\r\n\r\n return modalReference;\r\n }\r\n\r\n private removeModal<TConfig, TResult>(modalReference: InternalModalRef<TConfig, TResult>): void {\r\n modalReference.getHtmlElement().firstElementChild.classList.remove('dp-visible');\r\n\r\n // Wait until the closing animation is done, then remove the component.\r\n window.setTimeout(() => {\r\n this._applicaionRef.detachView(modalReference.componentRef.hostView);\r\n modalReference.componentRef.destroy();\r\n }, 400);\r\n }\r\n}\r\n\r\nclass ModalInjector implements Injector {\r\n private _injector: Injector;\r\n private _extraDependecnies: WeakMap<any, any>;\r\n\r\n constructor(\r\n injector: Injector,\r\n extraDependencies: WeakMap<any, any>\r\n ) {\r\n this._injector = injector;\r\n this._extraDependecnies = extraDependencies;\r\n }\r\n\r\n public get<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n public get(token: any, notFoundValue?: any);\r\n public get(token: any, notFoundValue?: any, flags?: any) {\r\n let resolved = this._extraDependecnies.get(token);\r\n\r\n if (resolved) {\r\n return resolved;\r\n }\r\n\r\n return this._injector.get(token, notFoundValue, flags);\r\n }\r\n}\r\n\r\nclass InternalModalRef<TConfig, TResult> extends ModalReference<TConfig, TResult> {\r\n public componentRef: ComponentRef<ModalComponent>;\r\n\r\n constructor(config: ModalConfig<TConfig>) {\r\n super(config);\r\n }\r\n\r\n public getHtmlElement(): HTMLElement {\r\n let viewRef = this.componentRef.hostView as EmbeddedViewRef<ModalComponent>;\r\n return viewRef.rootNodes[0];\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ModalComponent } from './modal.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ModalComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ModalComponent\r\n ]\r\n})\r\nexport class ModalModule { }\r\n","/*\r\n * Public API Surface of ngx-modal-dialog\r\n */\r\n\r\nexport * from './lib/modal.service';\r\nexport * from './lib/modal.component';\r\nexport * from './lib/modal.module';\r\nexport * from './lib/modal-config';\r\nexport * from './lib/modal-reference';\r\nexport * from './lib/modal.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModalReference"],"mappings":";;;;;;MAIa,cAAc,CAAA;AAMzB,IAAA,WAAA,CAAY,MAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAW,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;KACnC;IAEM,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;KAClC;IAEM,YAAY,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;AAEM,IAAA,YAAY,CAAC,KAAe,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;IAEM,MAAM,GAAA;;AAEX,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;AACF;;ICxBW,UAKX;AALD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACR,CAAC,EALW,SAAS,KAAT,SAAS,GAKpB,EAAA,CAAA,CAAA;;MCLY,cAAc,CAAA;IAoBzB,WACE,CAAA,iBAAoC,EACpC,aAAuC,EAAA;QAdlC,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AAgB3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;KACrC;AAEO,IAAA,kBAAkB,CAAC,aAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAE9B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,aAAa,EAAE;YAC1D,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AAChE,YAAA,mBAAmB,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACjG,SAAA,CAAC,CAAC;KACJ;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;;AAGvE,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;;AAGxC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACxC;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC7B,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,MAAmB,EAAA;QAC3C,IAAI,aAAa,GAAgB,MAAM,CAAC;QAExC,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACnD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,cAAc,CAAC,KAAiB,EAAE,gBAAyB,EAAA;;QAEhE,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC7D,OAAM;AACP,SAAA;;AAGD,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAClD;AAEM,IAAA,YAAY,CAAC,KAAiB,EAAA;;QAEnC,IAAI,IAAI,CAAC,iBAAiB,EAAE;;YAE1B,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;gBAExC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;AAEM,IAAA,UAAU,CAAC,KAAoB,EAAA;;AAEpC,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC9B,SAAA;KACF;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;KAChD;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;KAC7C;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;KAC9B;;2GAzGU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAcc,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BzD,igFAwDM,EAAA,MAAA,EAAA,CAAA,mnGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FD5CO,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,UAAU,EAAA,aAAA,EAKL,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,igFAAA,EAAA,MAAA,EAAA,CAAA,mnGAAA,CAAA,EAAA,CAAA;kIAiB9B,gBAAgB,EAAA,CAAA;sBADtB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAIlD,WAAW,EAAA,CAAA;sBADjB,SAAS;uBAAC,aAAa,CAAA;;;MErBb,YAAY,CAAA;AAKvB,IAAA,WAAA,CACE,aAA6B,EAC7B,QAAkB,EAClB,WAAgC,EAAA;AAEhC,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACjC;IAEO,oBAAoB,CAAC,WAA8B,EAAE,MAAwB,EAAA;AACnF,QAAA,MAAM,WAAW,GACf,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC;AAEpB,QAAA,MAAM,QAAQ,GAAG,IAAI,aAAa,CAChC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,IAAI,IAAI,CAAC,SAAS,EACnD,WAAW,CACZ,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,EAAE;AAChD,YAAA,mBAAmB,EAAE,WAAW;AAChC,YAAA,eAAe,EAAE,QAAQ;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;AAC7C,QAAA,SAAS,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC;AAE9C,QAAA,OAAO,SAAS,CAAC;KAClB;IAEO,mBAAmB,CAAmB,GAAsB,EAAE,MAA4B,EAAA;AAChG,QAAA,IAAI,cAAc,GAAG,IAAI,gBAAgB,CAAmB,MAAM,CAAC,CAAC;;AAGpE,QAAA,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAErE,cAAc;AACX,aAAA,MAAM,EAAE;AACR,aAAA,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;AACjD,SAAA,CAAC,CAAC;AAEL,QAAA,OAAO,cAAc,CAAC;KACvB;IAEM,IAAI,CAA6B,aAAwB,EAAE,MAA4B,EAAA;AAC5F,QAAA,IAAI,GAAG,GAAG,IAAI,OAAO,EAAY,CAAC;QAClC,IAAI,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAmB,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7E,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAE1E,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;;;AAI3D,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;AACrB,YAAA,cAAc,CAAC,cAAc,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChF,SAAC,CAAC,CAAC;AAEH,QAAA,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAE9D,QAAA,OAAO,cAAc,CAAC;KACvB;AAEO,IAAA,WAAW,CAAmB,cAAkD,EAAA;AACtF,QAAA,cAAc,CAAC,cAAc,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;;AAGjF,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;YACrB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAA,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SACvC,EAAE,GAAG,CAAC,CAAC;KACT;;yGAjFU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,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,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAqFD,MAAM,aAAa,CAAA;IAIjB,WACE,CAAA,QAAkB,EAClB,iBAAoC,EAAA;AAEpC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;KAC7C;AAIM,IAAA,GAAG,CAAC,KAAU,EAAE,aAAmB,EAAE,KAAW,EAAA;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAElD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;KACxD;AACF,CAAA;AAED,MAAM,gBAAmC,SAAQ,cAAgC,CAAA;AAG/E,IAAA,WAAA,CAAY,MAA4B,EAAA;QACtC,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAA2C,CAAC;AAC5E,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC7B;AACF;;MChHY,WAAW,CAAA;;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EATpB,YAAA,EAAA,CAAA,cAAc,CAGd,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,cAAc,CAAA,EAAA,CAAA,CAAA;AAGL,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YANpB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAMH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;ACfD;;AAEG;;ACFH;;AAEG;;;;"}