@filip.mazev/modal 0.1.24 → 0.1.25
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,6 +1,6 @@
|
|
|
1
1
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, Injectable, InjectionToken, Injector, input, output, Component, ViewChild,
|
|
3
|
+
import { inject, Injectable, InjectionToken, Injector, input, output, Component, ViewChild, computed, ViewChildren, signal, effect, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
|
|
4
4
|
import { BehaviorSubject, Subject, takeUntil, filter, skip, map, take, fromEvent } from 'rxjs';
|
|
5
5
|
import { Router, NavigationEnd } from '@angular/router';
|
|
6
6
|
import { uuidv4, WindowDimensionsService, ScrollLockService, DeviceTypeService } from '@filip.mazev/blocks-core';
|
|
@@ -284,19 +284,14 @@ class GenericModalService {
|
|
|
284
284
|
modalsSubject = new BehaviorSubject(this.modals);
|
|
285
285
|
viewContainer;
|
|
286
286
|
renderer;
|
|
287
|
-
unsubscribe$ = new Subject();
|
|
288
287
|
//#endregion
|
|
289
288
|
constructor() {
|
|
290
289
|
this.createSubscriptions();
|
|
291
290
|
}
|
|
292
|
-
ngOnDestroy() {
|
|
293
|
-
this.unsubscribe$.next();
|
|
294
|
-
this.unsubscribe$.complete();
|
|
295
|
-
}
|
|
296
291
|
//#region Private Methods
|
|
297
292
|
createSubscriptions() {
|
|
298
293
|
this.router.events
|
|
299
|
-
.pipe(filter((event) => event instanceof NavigationEnd), skip(1),
|
|
294
|
+
.pipe(filter((event) => event instanceof NavigationEnd), skip(1), takeUntilDestroyed())
|
|
300
295
|
.subscribe(() => {
|
|
301
296
|
if (this.modalsCount() > 0) {
|
|
302
297
|
this.closeAll(true);
|
|
@@ -598,16 +593,16 @@ class ModalCentered {
|
|
|
598
593
|
close = output();
|
|
599
594
|
onBackdropClick = output();
|
|
600
595
|
swipeableComponents;
|
|
601
|
-
|
|
596
|
+
modalClasses = computed(() => {
|
|
602
597
|
return {
|
|
603
598
|
'centered-modal-content-wrapper': true,
|
|
604
599
|
'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),
|
|
605
600
|
'centered-modal-animate-in': this.isAnimated() && this.isOpen(),
|
|
606
601
|
'centered-modal-animate-out': this.isAnimated() && !this.isOpen(),
|
|
607
602
|
};
|
|
608
|
-
}
|
|
603
|
+
}, ...(ngDevMode ? [{ debugName: "modalClasses" }] : []));
|
|
609
604
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalCentered, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
610
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalCentered, isStandalone: true, selector: "modal-centered", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: true, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: true, transformFunction: null }, isAnimated: { classPropertyName: "isAnimated", publicName: "isAnimated", isSignal: true, isRequired: true, transformFunction: null }, isSwipeableModalActive: { classPropertyName: "isSwipeableModalActive", publicName: "isSwipeableModalActive", isSignal: true, isRequired: true, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: true, transformFunction: null }, hasDefaultContentWrapperClass: { classPropertyName: "hasDefaultContentWrapperClass", publicName: "hasDefaultContentWrapperClass", isSignal: true, isRequired: true, transformFunction: null }, hasBanner: { classPropertyName: "hasBanner", publicName: "hasBanner", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close", onBackdropClick: "onBackdropClick" }, viewQueries: [{ propertyName: "swipeableComponents", predicate: ModalSwipeable, descendants: true }], ngImport: i0, template: "@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".modal-overlay-wrapper{display:flex;position:absolute;z-index:3;justify-content:center;align-items:center;width:100%;height:100%}.modal-overlay{position:absolute;inset:0;z-index:2}.modal-backdrop{position:absolute;inset:0;z-index:3;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#00000040;backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;transform-origin:center}.centered-modal-content-wrapper{display:flex;flex-direction:column;max-width:90vw;max-width:90dvw;max-height:95vh;max-height:95dvh;overflow:hidden}.centered-modal-default-style{border-radius:.75rem;box-shadow:0 8px 20px #0000001f;color:var(--modal-text, #000000);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid transparent;background-color:var(--modal-bg, #ffffff)}.centered-modal-default-content-container{padding:1rem 1.5rem;max-height:85vh;max-height:85dvh;overflow-y:auto}.centered-modal-inner-content-container{display:flex;flex-direction:column;height:100%;padding:1rem 1.5rem;gap:1.5rem;box-sizing:border-box}.centered-modal-top-group{display:flex;flex-direction:column;gap:1rem;flex-grow:1;min-height:0}.centered-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0}.centered-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem}.centered-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:center;gap:.5rem}.centered-modal-animate-in{scale:0;animation:centered-modal-animate-in .15s ease-in-out forwards}.centered-modal-animate-out{animation:centered-modal-animate-out .15s ease-in-out forwards}@keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-webkit-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-moz-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-webkit-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-moz-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ModalSwipeable, selector: "modal-swipeable", inputs: ["headerTemplate", "footerTemplate", "config", "isOpen", "isAnimated", "animationDuration"], outputs: ["close"] }, { kind: "component", type: ModalBanner, selector: "modal-banner", inputs: ["config"], outputs: ["close"] }, { kind: "component", type: ModalDefaultCloseButton, selector: "modal-default-close-button", inputs: ["config"], outputs: ["close"] }] });
|
|
605
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalCentered, isStandalone: true, selector: "modal-centered", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: true, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: true, transformFunction: null }, isAnimated: { classPropertyName: "isAnimated", publicName: "isAnimated", isSignal: true, isRequired: true, transformFunction: null }, isSwipeableModalActive: { classPropertyName: "isSwipeableModalActive", publicName: "isSwipeableModalActive", isSignal: true, isRequired: true, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: true, transformFunction: null }, hasDefaultContentWrapperClass: { classPropertyName: "hasDefaultContentWrapperClass", publicName: "hasDefaultContentWrapperClass", isSignal: true, isRequired: true, transformFunction: null }, hasBanner: { classPropertyName: "hasBanner", publicName: "hasBanner", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close", onBackdropClick: "onBackdropClick" }, viewQueries: [{ propertyName: "swipeableComponents", predicate: ModalSwipeable, descendants: true }], ngImport: i0, template: "@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".modal-overlay-wrapper{display:flex;position:absolute;z-index:3;justify-content:center;align-items:center;width:100%;height:100%}.modal-overlay{position:absolute;inset:0;z-index:2}.modal-backdrop{position:absolute;inset:0;z-index:3;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#00000040;backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;transform-origin:center}.centered-modal-content-wrapper{display:flex;flex-direction:column;max-width:90vw;max-width:90dvw;max-height:95vh;max-height:95dvh;overflow:hidden}.centered-modal-default-style{border-radius:.75rem;box-shadow:0 8px 20px #0000001f;color:var(--modal-text, #000000);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid transparent;background-color:var(--modal-bg, #ffffff)}.centered-modal-default-content-container{padding:1rem 1.5rem;max-height:85vh;max-height:85dvh;overflow-y:auto}.centered-modal-inner-content-container{display:flex;flex-direction:column;height:100%;padding:1rem 1.5rem;gap:1.5rem;box-sizing:border-box}.centered-modal-top-group{display:flex;flex-direction:column;gap:1rem;flex-grow:1;min-height:0}.centered-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0}.centered-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem}.centered-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:center;gap:.5rem}.centered-modal-animate-in{scale:0;animation:centered-modal-animate-in .15s ease-in-out forwards}.centered-modal-animate-out{animation:centered-modal-animate-out .15s ease-in-out forwards}@keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-webkit-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-moz-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-webkit-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-moz-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ModalSwipeable, selector: "modal-swipeable", inputs: ["headerTemplate", "footerTemplate", "config", "isOpen", "isAnimated", "animationDuration"], outputs: ["close"] }, { kind: "component", type: ModalBanner, selector: "modal-banner", inputs: ["config"], outputs: ["close"] }, { kind: "component", type: ModalDefaultCloseButton, selector: "modal-default-close-button", inputs: ["config"], outputs: ["close"] }] });
|
|
611
606
|
}
|
|
612
607
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalCentered, decorators: [{
|
|
613
608
|
type: Component,
|
|
@@ -617,23 +612,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
617
612
|
ModalSwipeable,
|
|
618
613
|
ModalBanner,
|
|
619
614
|
ModalDefaultCloseButton
|
|
620
|
-
], template: "@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".modal-overlay-wrapper{display:flex;position:absolute;z-index:3;justify-content:center;align-items:center;width:100%;height:100%}.modal-overlay{position:absolute;inset:0;z-index:2}.modal-backdrop{position:absolute;inset:0;z-index:3;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#00000040;backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;transform-origin:center}.centered-modal-content-wrapper{display:flex;flex-direction:column;max-width:90vw;max-width:90dvw;max-height:95vh;max-height:95dvh;overflow:hidden}.centered-modal-default-style{border-radius:.75rem;box-shadow:0 8px 20px #0000001f;color:var(--modal-text, #000000);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid transparent;background-color:var(--modal-bg, #ffffff)}.centered-modal-default-content-container{padding:1rem 1.5rem;max-height:85vh;max-height:85dvh;overflow-y:auto}.centered-modal-inner-content-container{display:flex;flex-direction:column;height:100%;padding:1rem 1.5rem;gap:1.5rem;box-sizing:border-box}.centered-modal-top-group{display:flex;flex-direction:column;gap:1rem;flex-grow:1;min-height:0}.centered-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0}.centered-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem}.centered-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:center;gap:.5rem}.centered-modal-animate-in{scale:0;animation:centered-modal-animate-in .15s ease-in-out forwards}.centered-modal-animate-out{animation:centered-modal-animate-out .15s ease-in-out forwards}@keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-webkit-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-moz-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-webkit-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-moz-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}\n"] }]
|
|
615
|
+
], template: "@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".modal-overlay-wrapper{display:flex;position:absolute;z-index:3;justify-content:center;align-items:center;width:100%;height:100%}.modal-overlay{position:absolute;inset:0;z-index:2}.modal-backdrop{position:absolute;inset:0;z-index:3;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#00000040;backface-visibility:hidden;-webkit-font-smoothing:subpixel-antialiased;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;transform-origin:center}.centered-modal-content-wrapper{display:flex;flex-direction:column;max-width:90vw;max-width:90dvw;max-height:95vh;max-height:95dvh;overflow:hidden}.centered-modal-default-style{border-radius:.75rem;box-shadow:0 8px 20px #0000001f;color:var(--modal-text, #000000);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid transparent;background-color:var(--modal-bg, #ffffff)}.centered-modal-default-content-container{padding:1rem 1.5rem;max-height:85vh;max-height:85dvh;overflow-y:auto}.centered-modal-inner-content-container{display:flex;flex-direction:column;height:100%;padding:1rem 1.5rem;gap:1.5rem;box-sizing:border-box}.centered-modal-top-group{display:flex;flex-direction:column;gap:1rem;flex-grow:1;min-height:0}.centered-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0}.centered-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem}.centered-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:center;gap:.5rem}.centered-modal-animate-in{scale:0;animation:centered-modal-animate-in .15s ease-in-out forwards}.centered-modal-animate-out{animation:centered-modal-animate-out .15s ease-in-out forwards}@keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-webkit-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@-moz-keyframes centered-modal-animate-in{0%{scale:0}to{scale:1}}@keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-webkit-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}@-moz-keyframes centered-modal-animate-out{0%{scale:1}to{scale:0}}\n"] }]
|
|
621
616
|
}], propDecorators: { headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: true }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerTemplate", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: true }] }], isAnimated: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAnimated", required: true }] }], isSwipeableModalActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSwipeableModalActive", required: true }] }], animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: true }] }], hasDefaultContentWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasDefaultContentWrapperClass", required: true }] }], hasBanner: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBanner", required: true }] }], close: [{ type: i0.Output, args: ["close"] }], onBackdropClick: [{ type: i0.Output, args: ["onBackdropClick"] }], swipeableComponents: [{
|
|
622
617
|
type: ViewChildren,
|
|
623
618
|
args: [ModalSwipeable]
|
|
624
619
|
}] } });
|
|
625
620
|
|
|
626
|
-
const GENERIC_MODAL_DEFAULT_ANIM_DURATION = 175;
|
|
627
|
-
const GENERIC_MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;
|
|
628
|
-
const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;
|
|
629
|
-
const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;
|
|
630
|
-
|
|
631
621
|
class ModalSide {
|
|
632
622
|
headerTemplate = input.required(...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
|
|
633
623
|
footerTemplate = input.required(...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
|
|
634
624
|
config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
635
625
|
isOpen = input.required(...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
636
|
-
renderOpenClass = false;
|
|
637
626
|
isAnimated = input.required(...(ngDevMode ? [{ debugName: "isAnimated" }] : []));
|
|
638
627
|
isSwipeableModalActive = input.required(...(ngDevMode ? [{ debugName: "isSwipeableModalActive" }] : []));
|
|
639
628
|
animationDuration = input.required(...(ngDevMode ? [{ debugName: "animationDuration" }] : []));
|
|
@@ -641,37 +630,39 @@ class ModalSide {
|
|
|
641
630
|
hasBanner = input.required(...(ngDevMode ? [{ debugName: "hasBanner" }] : []));
|
|
642
631
|
close = output();
|
|
643
632
|
swipeableComponents;
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
const isOpen = this.isOpen();
|
|
647
|
-
if (isOpen) {
|
|
648
|
-
this.renderOpenClass = false;
|
|
649
|
-
setTimeout(() => {
|
|
650
|
-
this.renderOpenClass = true;
|
|
651
|
-
}, GENERIC_MODAL_DEFAULT_ANIM_DURATION);
|
|
652
|
-
}
|
|
653
|
-
else {
|
|
654
|
-
this.renderOpenClass = false;
|
|
655
|
-
}
|
|
656
|
-
});
|
|
657
|
-
}
|
|
658
|
-
get modalClasses() {
|
|
633
|
+
renderOpenClass = signal(false, ...(ngDevMode ? [{ debugName: "renderOpenClass" }] : []));
|
|
634
|
+
modalClasses = computed(() => {
|
|
659
635
|
const config = this.config();
|
|
660
636
|
const positionLeft = config?.style?.position === 'left';
|
|
661
637
|
const positionRight = config?.style?.position === 'right';
|
|
662
638
|
const shouldAnimate = this.isAnimated();
|
|
639
|
+
const isRenderedOpen = this.renderOpenClass();
|
|
663
640
|
return {
|
|
664
641
|
'side-modal-content-wrapper': true,
|
|
665
642
|
'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),
|
|
666
643
|
'with-footer': this.footerTemplate() !== null,
|
|
667
644
|
'left': positionLeft,
|
|
668
645
|
'right': positionRight,
|
|
669
|
-
'side-modal-animate-in': shouldAnimate ?
|
|
670
|
-
'side-modal-animate-out': shouldAnimate ? !
|
|
646
|
+
'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,
|
|
647
|
+
'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false,
|
|
671
648
|
};
|
|
649
|
+
}, ...(ngDevMode ? [{ debugName: "modalClasses" }] : []));
|
|
650
|
+
constructor() {
|
|
651
|
+
effect(() => {
|
|
652
|
+
const isOpen = this.isOpen();
|
|
653
|
+
if (isOpen) {
|
|
654
|
+
this.renderOpenClass.set(false);
|
|
655
|
+
setTimeout(() => {
|
|
656
|
+
this.renderOpenClass.set(true);
|
|
657
|
+
}, 50);
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
this.renderOpenClass.set(false);
|
|
661
|
+
}
|
|
662
|
+
});
|
|
672
663
|
}
|
|
673
664
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalSide, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
674
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalSide, isStandalone: true, selector: "modal-side", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: true, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: true, transformFunction: null }, isAnimated: { classPropertyName: "isAnimated", publicName: "isAnimated", isSignal: true, isRequired: true, transformFunction: null }, isSwipeableModalActive: { classPropertyName: "isSwipeableModalActive", publicName: "isSwipeableModalActive", isSignal: true, isRequired: true, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: true, transformFunction: null }, hasDefaultContentWrapperClass: { classPropertyName: "hasDefaultContentWrapperClass", publicName: "hasDefaultContentWrapperClass", isSignal: true, isRequired: true, transformFunction: null }, hasBanner: { classPropertyName: "hasBanner", publicName: "hasBanner", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close" }, viewQueries: [{ propertyName: "swipeableComponents", predicate: ModalSwipeable, descendants: true }], ngImport: i0, template: "@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses\" (click)=\"$event.stopPropagation()\">\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".side-modal-content-wrapper{position:fixed;top:0;height:100vh;height:100dvh;z-index:3;display:flex;flex-direction:column;padding:1rem;gap:1rem;box-sizing:border-box;overflow:hidden;transition:transform 175ms ease-in-out}.side-modal-content-wrapper.left{left:0
|
|
665
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalSide, isStandalone: true, selector: "modal-side", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: true, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: true, transformFunction: null }, isAnimated: { classPropertyName: "isAnimated", publicName: "isAnimated", isSignal: true, isRequired: true, transformFunction: null }, isSwipeableModalActive: { classPropertyName: "isSwipeableModalActive", publicName: "isSwipeableModalActive", isSignal: true, isRequired: true, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: true, transformFunction: null }, hasDefaultContentWrapperClass: { classPropertyName: "hasDefaultContentWrapperClass", publicName: "hasDefaultContentWrapperClass", isSignal: true, isRequired: true, transformFunction: null }, hasBanner: { classPropertyName: "hasBanner", publicName: "hasBanner", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close" }, viewQueries: [{ propertyName: "swipeableComponents", predicate: ModalSwipeable, descendants: true }], ngImport: i0, template: "@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\"\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".side-modal-content-wrapper{position:fixed;top:0;height:100vh;height:100dvh;z-index:3;display:flex;flex-direction:column;padding:1rem;gap:1rem;box-sizing:border-box;overflow:hidden;transition:transform var(--anim-duration, 175ms) ease-in-out}.side-modal-content-wrapper.left{left:0}.side-modal-content-wrapper.right{right:0}.side-modal-content-wrapper.side-modal-animate-in{transform:translate(0)!important}.side-modal-content-wrapper.side-modal-animate-out.left{transform:translate(-100%)}.side-modal-content-wrapper.side-modal-animate-out.right{transform:translate(100%)}.side-modal-content-wrapper.with-footer{justify-content:space-between}.side-modal-content-wrapper .side-modal-inner-content-container{flex-grow:1;display:flex;flex-direction:column;gap:1rem;min-height:0}@media(max-width:768px){.side-modal-content-wrapper{max-width:90vw;max-width:95dvw}}.side-modal-default-style{background:var(--modal-bg, #ffffff);box-shadow:0 0 15px #0000004d;max-width:85vw;max-width:85dvw}.side-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0;max-height:none}.side-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem;padding-top:.75rem}.side-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:flex-end;gap:.5rem;padding-bottom:.75rem}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalSwipeable, selector: "modal-swipeable", inputs: ["headerTemplate", "footerTemplate", "config", "isOpen", "isAnimated", "animationDuration"], outputs: ["close"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ModalBanner, selector: "modal-banner", inputs: ["config"], outputs: ["close"] }, { kind: "component", type: ModalDefaultCloseButton, selector: "modal-default-close-button", inputs: ["config"], outputs: ["close"] }] });
|
|
675
666
|
}
|
|
676
667
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalSide, decorators: [{
|
|
677
668
|
type: Component,
|
|
@@ -681,12 +672,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
681
672
|
NgClass,
|
|
682
673
|
ModalBanner,
|
|
683
674
|
ModalDefaultCloseButton
|
|
684
|
-
], template: "@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses\" (click)=\"$event.stopPropagation()\">\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".side-modal-content-wrapper{position:fixed;top:0;height:100vh;height:100dvh;z-index:3;display:flex;flex-direction:column;padding:1rem;gap:1rem;box-sizing:border-box;overflow:hidden;transition:transform 175ms ease-in-out}.side-modal-content-wrapper.left{left:0
|
|
675
|
+
], template: "@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\"\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>", styles: [".side-modal-content-wrapper{position:fixed;top:0;height:100vh;height:100dvh;z-index:3;display:flex;flex-direction:column;padding:1rem;gap:1rem;box-sizing:border-box;overflow:hidden;transition:transform var(--anim-duration, 175ms) ease-in-out}.side-modal-content-wrapper.left{left:0}.side-modal-content-wrapper.right{right:0}.side-modal-content-wrapper.side-modal-animate-in{transform:translate(0)!important}.side-modal-content-wrapper.side-modal-animate-out.left{transform:translate(-100%)}.side-modal-content-wrapper.side-modal-animate-out.right{transform:translate(100%)}.side-modal-content-wrapper.with-footer{justify-content:space-between}.side-modal-content-wrapper .side-modal-inner-content-container{flex-grow:1;display:flex;flex-direction:column;gap:1rem;min-height:0}@media(max-width:768px){.side-modal-content-wrapper{max-width:90vw;max-width:95dvw}}.side-modal-default-style{background:var(--modal-bg, #ffffff);box-shadow:0 0 15px #0000004d;max-width:85vw;max-width:85dvw}.side-modal-main-content-container{flex-grow:1;overflow-y:auto;min-height:0;max-height:none}.side-modal-header{flex-shrink:0;width:100%;display:flex;justify-content:space-between;gap:.5rem;padding-top:.75rem}.side-modal-footer{flex-shrink:0;width:100%;display:flex;justify-content:flex-end;gap:.5rem;padding-bottom:.75rem}\n"] }]
|
|
685
676
|
}], ctorParameters: () => [], propDecorators: { headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: true }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerTemplate", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: true }] }], isAnimated: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAnimated", required: true }] }], isSwipeableModalActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSwipeableModalActive", required: true }] }], animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: true }] }], hasDefaultContentWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasDefaultContentWrapperClass", required: true }] }], hasBanner: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBanner", required: true }] }], close: [{ type: i0.Output, args: ["close"] }], swipeableComponents: [{
|
|
686
677
|
type: ViewChildren,
|
|
687
678
|
args: [ModalSwipeable]
|
|
688
679
|
}] } });
|
|
689
680
|
|
|
681
|
+
const GENERIC_MODAL_DEFAULT_ANIM_DURATION = 175;
|
|
682
|
+
const GENERIC_MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;
|
|
683
|
+
const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;
|
|
684
|
+
const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;
|
|
685
|
+
|
|
690
686
|
class GenericModalComponent {
|
|
691
687
|
modalService = inject(GenericModalService);
|
|
692
688
|
windowDimensionService = inject(WindowDimensionsService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/constants/generic-modal-common.constants.ts","../../../projects/modal/src/lib/enums/generic-modal-warnings.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-style.config.ts","../../../projects/modal/src/lib/classes/generic-modal-config.ts","../../../projects/modal/src/lib/enums/generic-modal-state.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-ref.ts","../../../projects/modal/src/lib/classes/generic-modal.ts","../../../projects/modal/src/lib/enums/generic-modal-errors.enum.ts","../../../projects/modal/src/lib/tokens/generic-modal-data.token.ts","../../../projects/modal/src/lib/services/generic-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/generic-modal-swipe.constants.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.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/constants/generic-modal-animation.constants.ts","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/components/generic-modal.ts","../../../projects/modal/src/lib/components/generic-modal.html","../../../projects/modal/src/lib/constants/generic-modal-text.constants.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["export const EMPTY_STRING = '';","export enum GenericModalWarnings {\n //#region Multi-level modals\n NO_PARENT_PROVIDED = \"No parent modal provided for multilevel modal. Please provide a parent modal or set openAsMultilevel to false.\",\n MULTILEVEL_INLINE_NOT_SUPPORTED = \"As of this version, opening a multi-level modal from inline HTML is not possible. Please set openAsMultilevel to false or open your modal through the GenericModalService! Opening modal as normal modal.\",\n MULTILEVEL_NO_PARENT = \"Cannot open a multilevel modal with only one modal open. Please open another modal before opening a multilevel modal or set openAsMultilevel to false.\",\n PARENT_MODAL_NOT_SET = \"Error setting parent modal. Opening modal as normal modal\",\n //#endregion\n\n //#region Confirm close\n CONFIRM_MODAL_NESTING_NOT_SUPPORTED = \"Cannot open a confirm modal from within a confirm modal. If you want to allow this behaviour, set bypassSelfCheck to true in the confirmCloseConfig.\",\n //#endregion\n\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalFooter] Directive used outside of a GenericModalComponent.\",\n HEADER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalHeader] Directive used outside of a GenericModalComponent.\",\n //#endregion\n}","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { IGenericSwipeableModalConfig } from \"../interfaces/igeneric-swipeable-modal-config\";\nimport { ModalPoistion } from \"../types/modal.types\";\n\nexport class GenericModalStyleConfig implements IGenericModalStyleConfig {\n position: ModalPoistion;\n handleMobile: boolean;\n\n animate: boolean;\n hasBackdrop: boolean;\n closeDelay?: number;\n showCloseButton?: boolean;\n\n mobileConfig: IGenericSwipeableModalConfig;\n\n contentWrapper: boolean;\n\n wrapperClasses: string;\n wrapperStyles: string;\n\n overrideFullHeight: boolean;\n\n constructor(config?: IGenericModalStyleConfig) {\n this.position = config?.position ?? \"center\";\n this.handleMobile = config?.handleMobile ?? true;\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 ?? EMPTY_STRING;\n this.wrapperStyles = config?.wrapperStyles ?? EMPTY_STRING;\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericConfirmCloseConfig } from \"../interfaces/igeneric-confirm-close.interface\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { GenericModal } from \"./generic-modal\";\nimport { GenericModalStyleConfig } from \"./generic-modal-style.config\";\nimport { uuidv4 } from \"@filip.mazev/blocks-core\";\n\nexport class GenericModalConfig<\n D = unknown,\n ConfirmComponentData = any,\n ConfirmComponent extends GenericModal<ConfirmComponentData, undefined> = GenericModal<ConfirmComponentData, undefined>> {\n public open: boolean;\n\n public afterClose?: Function;\n public confirmCloseConfig?: IGenericConfirmCloseConfig<ConfirmComponentData, ConfirmComponent>;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\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?: IGenericModalConfig<D, ConfirmComponentData, ConfirmComponent>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.confirmCloseConfig = config?.confirmCloseConfig;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n\n this.contentClasses = config?.contentClasses ?? EMPTY_STRING;\n this.contentStyles = config?.contentStyles ?? EMPTY_STRING;\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id ?? uuidv4();\n }\n}\n","export enum GenericModalState {\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 { GenericModalConfig } from \"./generic-modal-config\";\nimport { GenericModalComponent } from \"../components/generic-modal\";\nimport { GenericModalState } from \"../enums/generic-modal-state.enum\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { IGenericModalRef } from \"../interfaces/igeneric-modal-ref.interface\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { GenericModal } from \"./generic-modal\";\n\nexport class GenericModalRef<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>> implements IGenericModalRef<D, R, C> {\n\n //#region Modal Container\n\n private _modalContainer: Type<GenericModalComponent<D, R, C>> = {} as Type<GenericModalComponent<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<GenericModalComponent<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<GenericModalComponent<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>> = {} as ComponentRef<GenericModalComponent<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<GenericModalComponent<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private _parentElement: HTMLElement | undefined = undefined;\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n //#endregion\n\n //#region Component\n\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n //#endregion\n\n //#region Self\n\n private _modalState: GenericModalState = GenericModalState.CLOSED;\n\n private modalState = new BehaviorSubject<GenericModalState>(this.getStatus());\n\n public modalState$(): Observable<GenericModalState> {\n return this.modalState.asObservable();\n }\n\n private getStatus(): GenericModalState {\n return this._modalState;\n }\n\n private _selfIdentifier: { constructor: Function } = {} as {\n constructor: Function;\n };\n\n private set selfIdentifier(selfIdentifier: { constructor: Function }) {\n this._selfIdentifier = selfIdentifier;\n }\n\n public get selfIdentifier(): { constructor: Function } {\n return this._selfIdentifier;\n }\n\n private _modalConfig?: GenericModalConfig<D> = undefined;\n\n private set modalConfig(modalConfig: GenericModalConfig<D> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public get modalConfig(): GenericModalConfig<D> | undefined {\n return this._modalConfig;\n }\n //#endregion\n\n //#region Observables\n\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterCloseSubject: Subject<IGenericCloseResult<R>> = new Subject<IGenericCloseResult<R>>();\n\n public afterClosed(): Observable<IGenericCloseResult<R>> {\n return this.afterCloseSubject.asObservable();\n }\n\n private afterClose(result: IGenericCloseResult<R>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n constructor(\n componentRef: ComponentRef<C>,\n selfIdentifier: { constructor: Function },\n modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>,\n private modalService: GenericModalService,\n modalConfig?: GenericModalConfig<D>,\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n this.selfIdentifier = selfIdentifier;\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = GenericModalState.OPENING;\n this.modalState.next(GenericModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new GenericModalConfig(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 = GenericModalState.OPEN;\n this.modalState.next(GenericModalState.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 //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IGenericCloseResult<R>): void {\n this._modalState = GenericModalState.CLOSING;\n this.modalState.next(GenericModalState.CLOSING);\n\n setTimeout(\n () => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = GenericModalState.CLOSED;\n this.modalState.next(GenericModalState.CLOSED);\n\n this.afterClose(result);\n this.modalService?.close(this.selfIdentifier, true);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { Injectable, OnDestroy, inject } from \"@angular/core\";\nimport { GenericModalRef } from \"./generic-modal-ref\";\nimport { Subject, takeUntil } from \"rxjs\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\n\n@Injectable()\nexport abstract class GenericModal<D, R> implements OnDestroy {\n protected genericModalService = inject(GenericModalService);\n\n modal?: GenericModalRef<D, R>;\n\n protected modalGetSubscription$ = new Subject<void>();\n\n constructor() {\n this.createModalSubscription();\n }\n\n ngOnDestroy(): void {\n this.onDestroy();\n this.unsubscribeModalGet();\n }\n\n protected createModalSubscription() {\n this.modalGetSubscription$ = new Subject<void>();\n\n this.genericModalService\n .getSubscribe<D, R>(this.constructor)\n .pipe(takeUntil(this.modalGetSubscription$))\n .subscribe((modal) => {\n if (modal instanceof GenericModalRef) {\n this.modal = modal;\n this.afterModalGet();\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n });\n }\n\n protected unsubscribeModalGet() {\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n\n abstract afterModalGet(): void;\n abstract onDestroy(): void;\n\n public close() {\n this.modal?.close();\n }\n}\n","export enum GenericModalErrors {\n //#region General\n MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES = \"The modal doesn't match the requested types.\",\n GENERIC_MODAL_SERVICE_RENDERER_NOT_SET = \"ViewContainer and Renderer not set, please set the view container in the constructor of app.module.ts / app.ts (by calling register), before opening a modal\",\n //#endregion\n\n //#region Multi-level modals\n PARENT_MODAL_CANT_BE_THE_SAME_AS_CHILD = \"Parent modal cannot be the same as the child modal\",\n PARENT_MODAL_NOT_FOUND = \"Parent modal does not exist\",\n PARENT_MODAL_NOT_PROVIDED = \"No parent modal provided for multilevel modal\",\n //#endregion\n}","import { InjectionToken } from \"@angular/core\";\n\nexport const GENERIC_MODAL_DATA: InjectionToken<any> = new InjectionToken<any>(\"GENERIC_MODAL_DATA\");\n","import { Injectable, inject, Injector, ViewContainerRef, Renderer2 } from \"@angular/core\";\nimport { Router, NavigationEnd } from \"@angular/router\";\nimport { BehaviorSubject, Subject, filter, takeUntil, Observable, map, skip } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { GenericModalRef } from \"../classes/generic-modal-ref\";\nimport { GenericModalComponent } from \"../components/generic-modal\";\nimport { GenericModalErrors } from \"../enums/generic-modal-errors.enum\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalService } from \"../interfaces/igeneric-modal-service.interface\";\nimport { GENERIC_MODAL_DATA } from \"../tokens/generic-modal-data.token\";\nimport { ComponentType } from \"@angular/cdk/portal\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class GenericModalService implements IGenericModalService {\n private router = inject(Router);\n protected injector = inject(Injector);\n\n //#region Properties\n\n private modals: Map<{ constructor: Function }, GenericModalRef | GenericModalComponent> = new Map();\n private modalsSubject = new BehaviorSubject<Map<{ constructor: Function }, GenericModalRef | GenericModalComponent>>(this.modals);\n\n public viewContainer?: ViewContainerRef;\n public renderer?: Renderer2;\n\n private unsubscribe$ = new Subject<void>();\n\n //#endregion\n\n constructor() {\n this.createSubscriptions();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n //#region Private Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1), \n takeUntil(this.unsubscribe$)\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 public register(viewContainer: ViewContainerRef, renderer: Renderer2): void {\n this.viewContainer = viewContainer;\n this.renderer = renderer;\n }\n\n public open<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(component: ComponentType<C>, config?: IGenericModalConfig<D>): GenericModalRef<D, R, C> {\n if (!this.viewContainer || !this.renderer) {\n throw new Error(GenericModalErrors.GENERIC_MODAL_SERVICE_RENDERER_NOT_SET);\n }\n\n const dataInjector = Injector.create({\n providers: [{ provide: GENERIC_MODAL_DATA, useValue: config?.data }],\n parent: this.injector,\n });\n\n const wrapperRef = this.viewContainer.createComponent(GenericModalComponent<D, R, C>, {\n injector: dataInjector,\n });\n\n const contentInjector = Injector.create({\n providers: [\n { provide: GenericModalComponent, useValue: wrapperRef.instance }\n ],\n parent: wrapperRef.injector,\n });\n\n const contentRef = this.viewContainer.createComponent(component, {\n injector: contentInjector,\n });\n\n const modal = new GenericModalRef<D, R, C>(\n contentRef,\n component,\n wrapperRef,\n this,\n new GenericModalConfig(config),\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.set(modal.selfIdentifier, modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n public close(self: { constructor: Function }, fromCloseFunction: boolean | undefined = false): void {\n if (this.modals.has(self)) {\n if (fromCloseFunction !== true) {\n\n const modal = this.modals.get(self);\n if (modal && modal instanceof GenericModalRef) {\n modal.close();\n }\n }\n this.modals.delete(self);\n this.modalsSubject.next(this.modals);\n }\n }\n\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal instanceof GenericModalRef) {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close(\"cancel\", undefined, true);\n }\n }\n });\n\n this.modals.clear();\n this.modalsSubject.next(this.modals);\n }\n\n public get<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined {\n const modal = this.modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined;\n }\n\n public getSubscribe<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): Observable<GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined> {\n return this.modalsSubject.asObservable().pipe(map((modals) => {\n const modal = modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined;\n }));\n }\n\n public modalsCount(): number {\n return this.modals.size;\n }\n\n public find(self: { constructor: Function }): boolean {\n return this.modals.has(self);\n }\n\n //#endregion\n\n //#region Helper Methods\n\n public modalRequestedTypeCheck(modal: GenericModalRef | GenericModalComponent | undefined): boolean {\n if (modal) {\n if (modal instanceof GenericModalRef) {\n if (!(modal.componentRef.instance instanceof GenericModal)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n } else if (!(modal instanceof GenericModalComponent)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n }\n\n return true;\n }\n\n //#endregion\n}\n","import { Component, input, output } from \"@angular/core\";\n\n@Component({\n selector: 'modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n readonly isAnimated = input(false);\n readonly isOpen = input(false);\n \n readonly click = output<MouseEvent>();\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 { GenericModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 { GenericModalConfig } from \"../../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../../types/modal.types\";\nimport { ModalDefaultCloseButton } from \"../default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_UP_SWIPE_LIMIT = 1;\nexport const GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output } from '@angular/core';\nimport { Subject, take } from 'rxjs';\nimport { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as swipeConst from '../../../constants/generic-modal-swipe.constants';\n\n@Component({\n selector: 'modal-swipeable',\n imports: [\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: './modal-swipeable.html',\n styleUrl: './modal-swipeable.scss',\n})\nexport class ModalSwipeable implements OnInit, OnDestroy {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<any> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY: number = 0;\n public isSwipingVerticallyFinished: boolean = false;\n\n protected isSwipingVertically: boolean = false;\n\n protected downSwipeLimit: number = 0;\n protected upSwipeLimit: number = 0;\n\n protected windowInnerHeight: number = window.innerHeight;\n\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private swipeableModalInitiated: boolean = false;\n private globalPointerListenerAdded = false;\n\n private touchDetectionUnsubscribe$ = new Subject<void>();\n\n @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\n @ViewChild(\"modalContent\", { static: true }) modalContent?: ElementRef;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0;\n if (!hasTouch) return;\n\n this.initSwipeableModalParams();\n\n this.touchDetectionUnsubscribe$ = new Subject<void>();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n const limit = document.body.offsetHeight / this.downSwipeLimit;\n\n let startY = 0;\n let currentY = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n isPointerDown = true;\n startY = event.clientY;\n this.isSwipingVertically = true;\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n currentY = event.clientY - startY;\n\n event.preventDefault();\n this.currentTranslateY = currentY;\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n this.isSwipingVertically = false;\n\n const deltaY = event.clientY - startY;\n const velocityY = (event.clientY - startY) / (event.timeStamp - (event as any).startTime || 1);\n\n if (Math.abs(deltaY) > limit || velocityY > swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY = 0;\n }\n };\n\n target.addEventListener('pointerdown', pointerDown);\n target.addEventListener('pointermove', pointerMove);\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.touchDetectionUnsubscribe$.pipe(take(1)).subscribe(() => {\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 this.touchDetectionUnsubscribe$.next();\n this.touchDetectionUnsubscribe$.complete();\n }\n\n private initSwipeableModalParams(): void {\n if (!this.swipeableModalInitiated) {\n this.swipeableModalInitiated = true;\n\n const config = this.config();\n this.downSwipeLimit = config?.style.mobileConfig?.downSwipeLimit\n ? config.style.mobileConfig.downSwipeLimit > 0\n ? config.style.mobileConfig.downSwipeLimit\n : 1\n : swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT;\n\n const configValue = this.config();\n this.upSwipeLimit = configValue?.style.mobileConfig?.upSwipeLimit\n ? configValue.style.mobileConfig.upSwipeLimit > 0\n ? configValue.style.mobileConfig.upSwipeLimit\n : swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT\n : window.innerHeight;\n }\n }\n\n private monitorInputType(): void {\n if (this.globalPointerListenerAdded) return;\n this.globalPointerListenerAdded = true;\n\n window.addEventListener('pointerdown', (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\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" [id]=\"config()?.id ?? ''\"\n [class]=\"config()?.style?.wrapperClasses !== undefined ? config()!.style.wrapperClasses! : ''\"\n [style]=\"config()?.style?.wrapperStyles !== undefined ? config()!.style.wrapperStyles! : ''\"\n [style.max-height]=\"config() && config()?.style?.mobileConfig && config()?.style?.mobileConfig?.customHeight ? config()?.style?.mobileConfig?.customHeight : ''\"\n [style.transform]=\"!isSwipingVerticallyFinished\n ? 'translateY(' + (currentTranslateY * -1 > windowInnerHeight / upSwipeLimit ? (windowInnerHeight / upSwipeLimit) * -1 : currentTranslateY) + 'px)'\n : 'translateY(100%)'\"\n [style.transition]=\"isAnimated() && !isSwipingVertically ? '300ms ease-in-out' : ''\" [ngClass]=\"{\n 'opened-swipeable-modal': isAnimated()\n }\" data-horizontal-swipe-target=\"swipeable-modal\" class=\"swipeable-modal-style\">\n \n <div #verticalSwipeTarget class=\"touch-hitbox\" class=\"swipeable-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"swipeable-modal-inner-content-container\">\n <div class=\"swipeable-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"swipeable-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"swipeable-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-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 } from \"@angular/core\";\nimport { GenericModalConfig } from \"../../../classes/generic-modal-config\";\nimport { IGenericModalView } from \"../../../interfaces/igeneric-modal-view.interface\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\nimport { ModalBanner } from \"../../shared/ui/banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\nimport { ModalDefaultCloseButton } from \"../../shared/ui/default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n\n public get modalClasses(): { [key: string]: boolean } {\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}","@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const GENERIC_MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const GENERIC_MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output } from '@angular/core';\nimport { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { IGenericModalView } from '../../../interfaces/igeneric-modal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\nimport * as animConst from '../../../constants/generic-modal-animation.constants';\n\n@Component({\n selector: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalSwipeable,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n\n protected renderOpenClass = false;\n\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n \n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n \n if (isOpen) {\n this.renderOpenClass = false;\n\n setTimeout(() => {\n this.renderOpenClass = true; \n }, animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION); \n\n } else {\n this.renderOpenClass = false;\n }\n });\n }\n\n public get modalClasses(): { [key: string]: boolean } {\n const config = this.config();\n const positionLeft = config?.style?.position === 'left';\n const positionRight = config?.style?.position === 'right';\n\n const shouldAnimate = this.isAnimated();\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\n 'left': positionLeft,\n 'right': positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? this.renderOpenClass : true, \n \n 'side-modal-animate-out': shouldAnimate ? !this.renderOpenClass : false,\n };\n }\n}","@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses\" (click)=\"$event.stopPropagation()\">\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, inject, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal, effect } from \"@angular/core\";\nimport { Subject, Observable, fromEvent, filter, take } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { GenericModalWarnings } from \"../enums/generic-modal-warnings.enum\";\nimport { IGenericModalComponenet } from \"../interfaces/igeneric-modal-component.interface\";\nimport { GenericModalService } from \"../services/generic-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 { ModalSwipeable } from \"./views/swipeable/modal-swipeable\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { DeviceTypeService, ScrollLockService, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport * as animConst from \"../constants/generic-modal-animation.constants\";\n\n@Component({\n selector: \"generic-modal\",\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: \"./generic-modal.html\",\n styleUrl: \"./generic-modal.scss\",\n})\nexport class GenericModalComponent<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>>\n implements IGenericModalComponenet<D, R, C> {\n\n private modalService = inject(GenericModalService);\n private windowDimensionService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n\n readonly afterClose = output<void>();\n\n readonly animationDuration: number = animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: GenericModalConfig<D>;\n public closeFunction?: Function;\n\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n public isOpen = signal<boolean>(true);\n public isSwipeableModalActive = signal<boolean>(false);\n\n protected headerTemplate = signal<TemplateRef<any> | null>(null);\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n public isAnimated: boolean = false;\n public isCentered: boolean = false;\n public isSide: boolean = false;\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n private isConfirmCloseModalOpen: boolean = false;\n private isSpecialMobileOverflowHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n protected windowDimensions = this.windowDimensionService.dimensions;\n\n @ViewChild(\"modalContainer\", { static: true }) modalContainer?: ElementRef;\n\n @ViewChildren(ModalSide) sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) centeredModalComponents?: QueryList<ModalCentered>;\n\n @ViewChild(\"contentTemplate\") contentTemplate?: TemplateRef<HTMLElement>;\n @ViewChild(\"dynamicContainer\", { read: ViewContainerRef }) dynamicContainer?: ViewContainerRef;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleWindowDimensionChange(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n\n if (this.config?.style.handleMobile !== false && this.windowDimensionService.isMobile()) {\n this.isSwipeableModalActive.set(true);\n } else {\n this.isSwipeableModalActive.set(false);\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\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 private handleWindowDimensionChange(width: number): void {\n if (this.config?.style.handleMobile === false) return;\n\n const smBreakpoint = this.windowDimensionService.breakpoints.sm;\n const currentSwipeState = this.isSwipeableModalActive(); \n\n if (width < smBreakpoint && !currentSwipeState) {\n this.isSwipeableModalActive.set(true);\n\n if (this.isOpen() && this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.disableScroll({\n mainContainer: this.modalContainer?.nativeElement,\n handleExtremeOverflow: this.config?.enableExtremeOverflowHandling ?? false,\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true,\n });\n\n this.isScrollDisabled = true;\n }\n }\n\n if (width >= smBreakpoint && currentSwipeState) {\n this.isSwipeableModalActive.set(false);\n\n if (this.isOpen() && this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.isSpecialMobileOverflowHandlingEnabled = (this.deviceTypeService.getDeviceState().isAppleDevice || this.config?.webkitOnlyOverflowMobileHandling === false);\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 this.isAnimated = this.config?.style.animate === true;\n this.isCentered = this.config?.style.position === \"center\";\n this.isSide = this.config?.style.position === \"left\" || this.config?.style.position === \"right\";\n }\n\n //#endregion\n\n //#region Public Template Methods\n\n public setHeaderTemplate(template: TemplateRef<any>) {\n this.headerTemplate.set(template);\n }\n\n public setFooterTemplate(template: TemplateRef<any>) {\n this.footerTemplate.set(template);\n }\n\n //#endregion\n\n //#region Closing Methods\n\n public close(state: ModalCloseMode = \"cancel\", result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (this.isConfirmCloseModalOpen) return;\n\n if (this.isScrollDisabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n }\n\n if ((this.config && this.config?.disableClose !== true) || !fromInsideInteraction || forceClose) {\n if (this.config?.confirmCloseConfig && this.shouldOpenConfirmCloseModal(forceClose, state)) {\n if (this.shouldOpenConfirmCloseModalSelfCheck()) {\n const modal = this.modalService.open<IGenericCloseResult, any>(this.config.confirmCloseConfig.confirmModalComponent, {\n style: this.config.confirmCloseConfig.style ?? {\n handleMobile: false,\n },\n disableClose: true,\n bannerText: this.config.confirmCloseConfig.bannerText ?? EMPTY_STRING,\n data: this.config.confirmCloseConfig.data ?? null,\n });\n\n this.isConfirmCloseModalOpen = true;\n\n if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n\n modal.afterClosed()\n .pipe(take(1))\n .subscribe((_result: IGenericCloseResult) => {\n this.isConfirmCloseModalOpen = false;\n if (_result.state === 'confirm') {\n this.handleClose(state, result);\n }\n });\n } else {\n if (this.config?.disableConsoleWarnings !== true) {\n console.warn(GenericModalWarnings.CONFIRM_MODAL_NESTING_NOT_SUPPORTED);\n }\n\n this.handleClose(state, result);\n }\n } else {\n this.handleClose(state, result);\n }\n } else if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setSwipeableModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state,\n } as IGenericCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n protected onBackdropClick(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close(\"cancel\", undefined, true);\n }\n }\n\n //#endregion\n\n //#region Logical Assertions\n\n private shouldOpenConfirmCloseModal(forceClose: boolean, state: ModalCloseMode): boolean {\n if (this.config?.confirmCloseConfig) {\n const closeNotCalledWithForceClose = !forceClose;\n\n if (closeNotCalledWithForceClose) {\n const configuredForConfirmClose = this.config.confirmCloseConfig.confirmClose === true;\n const closeCalledWithCancelState = state === \"cancel\";\n const configuredForConfirmCloseOnSubmit = this.config.confirmCloseConfig.confirmOnSubmit === true;\n\n return configuredForConfirmClose && (closeCalledWithCancelState || configuredForConfirmCloseOnSubmit);\n }\n }\n\n return false;\n }\n\n private shouldOpenConfirmCloseModalSelfCheck(): boolean {\n if (this.config?.confirmCloseConfig) {\n const hasSelfIdentifier = this.componentRef && this.componentRef.instance && this.componentRef.instance.modal && this.componentRef.instance.modal.selfIdentifier !== EMPTY_STRING;\n const bypassSelfCheck = this.config.confirmCloseConfig.bypassSelfCheck === true;\n\n return hasSelfIdentifier || bypassSelfCheck;\n }\n\n return false;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private getSwipeableModal(): ModalSwipeable | undefined {\n return this.sideModalComponents?.first?.swipeableComponents?.first\n ?? this.centeredModalComponents?.first?.swipeableComponents?.first\n }\n\n private resetSwipeableModalPosition(): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.currentTranslateY = 0;\n }\n }\n\n private setSwipeableModalFinishedState(isFinished: boolean): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.isSwipingVerticallyFinished = isFinished;\n }\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide || isSwipeableModalActive())) {\n<modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide) {\n <modal-side [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-side>\n } \n @case (isCentered) {\n <modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","export const LOWEST_CHARACTER_CAP = 23;\nexport const LOWER_CHARACTER_CAP = 33;\nexport const MID_CHARACTER_CAP = 49;\nexport const UPPER_CHARACTER_CAP = 60;","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { GenericModalComponent } from '../components/generic-modal';\nimport { GenericModalWarnings } from '../enums/generic-modal-warnings.enum';\n\n@Directive({\n selector: '[modalFooter]', \n standalone: true\n})\nexport class ModalFooterDirective {\n private templateRef = inject(TemplateRef);\n private modal = inject(GenericModalComponent, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(GenericModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/generic-modal';\nexport * from './lib/components/views/swipeable/modal-swipeable';\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/generic-modal.service';\n\nexport * from './lib/classes/generic-modal';\nexport * from './lib/classes/generic-modal-config';\nexport * from './lib/classes/generic-modal-ref';\nexport * from './lib/classes/generic-modal-style.config';\n\nexport * from './lib/interfaces/igeneric-close-result.interface';\nexport * from './lib/interfaces/igeneric-confirm-close.interface';\nexport * from './lib/interfaces/igeneric-modal-component.interface';\nexport * from './lib/interfaces/igeneric-modal-config.interface';\nexport * from './lib/interfaces/igeneric-modal-ref.interface';\nexport * from './lib/interfaces/igeneric-modal-service.interface';\nexport * from './lib/interfaces/igeneric-modal-style-config.interface';\nexport * from './lib/interfaces/igeneric-modal-view.interface';\nexport * from './lib/interfaces/igeneric-swipeable-modal-config';\n\nexport * from './lib/constants/generic-modal-animation.constants';\nexport * from './lib/constants/generic-modal-common.constants';\nexport * from './lib/constants/generic-modal-swipe.constants';\nexport * from './lib/constants/generic-modal-text.constants';\n\nexport * from './lib/enums/generic-modal-errors.enum';\nexport * from './lib/enums/generic-modal-warnings.enum';\nexport * from './lib/enums/generic-modal-state.enum';\n\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/generic-modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD","swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT","swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT","animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION"],"mappings":";;;;;;;;AAAO,MAAM,YAAY,GAAG;;ICAhB;AAAZ,CAAA,UAAY,oBAAoB,EAAA;;AAE5B,IAAA,oBAAA,CAAA,oBAAA,CAAA,GAAA,gHAAqI;AACrI,IAAA,oBAAA,CAAA,iCAAA,CAAA,GAAA,2MAA6O;AAC7O,IAAA,oBAAA,CAAA,sBAAA,CAAA,GAAA,wJAA+K;AAC/K,IAAA,oBAAA,CAAA,sBAAA,CAAA,GAAA,2DAAkF;;;AAIlF,IAAA,oBAAA,CAAA,qCAAA,CAAA,GAAA,sJAA4L;;;AAI5L,IAAA,oBAAA,CAAA,gCAAA,CAAA,GAAA,kEAAmG;AACnG,IAAA,oBAAA,CAAA,gCAAA,CAAA,GAAA,kEAAmG;;AAEvG,CAAC,EAhBW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;;MCKnB,uBAAuB,CAAA;AAChC,IAAA,QAAQ;AACR,IAAA,YAAY;AAEZ,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;AAElB,IAAA,WAAA,CAAY,MAAiC,EAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,QAAQ;QAC5C,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,IAAI;QAEhD,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,YAAY;QAC5D,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,YAAY;QAE1D,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE,kBAAkB,IAAI,KAAK;IACjE;AACH;;MCjCY,kBAAkB,CAAA;AAIpB,IAAA,IAAI;AAEJ,IAAA,UAAU;AACV,IAAA,kBAAkB;AAElB,IAAA,YAAY;AACZ,IAAA,2BAA2B;AAC3B,IAAA,wBAAwB;AAExB,IAAA,6BAA6B;AAC7B,IAAA,gCAAgC;AAEhC,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,MAAuE,EAAA;QAC/E,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI;AAEhC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU;AAEpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE,kBAAkB;QAEpD,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,6BAA6B,GAAG,MAAM,EAAE,6BAA6B,IAAI,KAAK;QACnF,IAAI,CAAC,gCAAgC,GAAG,MAAM,EAAE,gCAAgC,IAAI,IAAI;QAExF,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC;QAEvD,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,YAAY;QAEpD,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,YAAY;QAC5D,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,YAAY;QAE1D,IAAI,CAAC,sBAAsB,GAAG,MAAM,EAAE,sBAAsB,IAAI,KAAK;QACrE,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE,kBAAkB,IAAI,KAAK;QAE7D,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE;IACpC;AACH;;ICjEW;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;MCWhB,eAAe,CAAA;AAgIZ,IAAA,YAAA;;IAzHJ,eAAe,GAAyC,EAA0C;IAE1G,IAAY,cAAc,CAAC,cAAoD,EAAA;AAC3E,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACzC;AAEA,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe;IAC/B;IAEQ,kBAAkB,GAAiD,EAAkD;IAE7H,IAAY,iBAAiB,CAAC,iBAA+D,EAAA;AACzF,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;IAC/C;AAEA,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB;IAClC;IAEQ,sBAAsB,GAAgB,EAAiB;IAE/D,IAAY,qBAAqB,CAAC,qBAAkC,EAAA;AAChE,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;IACvD;AAEA,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB;IACtC;IAEQ,cAAc,GAA4B,SAAS;IAE3D,IAAY,aAAa,CAAC,aAAsC,EAAA;AAC5D,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;IACvC;AAEA,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;;;IAMQ,aAAa,GAAoB,EAAqB;IAE9D,IAAY,YAAY,CAAC,YAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;IACrC;AAEA,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;;;AAMQ,IAAA,WAAW,GAAsB,iBAAiB,CAAC,MAAM;IAEzD,UAAU,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC,SAAS,EAAE,CAAC;IAEtE,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACzC;IAEQ,SAAS,GAAA;QACb,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEQ,eAAe,GAA8B,EAEpD;IAED,IAAY,cAAc,CAAC,cAAyC,EAAA;AAChE,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACzC;AAEA,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe;IAC/B;IAEQ,YAAY,GAA2B,SAAS;IAExD,IAAY,WAAW,CAAC,WAA8C,EAAA;AAClE,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACnC;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY;IAC5B;;;AAKQ,IAAA,oBAAoB,GAAwB,IAAI,OAAO,EAAc;IAEtE,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;IACnD;AAEQ,IAAA,eAAe,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IACzC;AAEQ,IAAA,iBAAiB,GAAoC,IAAI,OAAO,EAA0B;IAE3F,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IAChD;AAEQ,IAAA,UAAU,CAAC,MAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;IACvC;;IAIA,WAAA,CACI,YAA6B,EAC7B,cAAyC,EACzC,iBAA+D,EACvD,YAAiC,EACzC,WAAmC,EAAA;QAD3B,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;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;IACxC;;AAIO,IAAA,MAAM,IAAI,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,OAAO;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAE/C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QAEjE,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;QAEvD,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;AAC9D,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChD;IAEO,KAAK,CAAC,QAAwB,QAAQ,EAAE,SAAwB,SAAS,EAAE,aAAsB,KAAK,EAAA;AACzG,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;IAC3E;;;AAMQ,IAAA,WAAW,CAAC,MAA8B,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,OAAO;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAE/C,UAAU,CACN,MAAK;AACD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YACjC;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAEhC,YAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,MAAM;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAE9C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;QACvD,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7D;AAEH;;MCpMqB,YAAY,CAAA;AACpB,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE3D,IAAA,KAAK;AAEK,IAAA,qBAAqB,GAAG,IAAI,OAAO,EAAQ;AAErD,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,uBAAuB,EAAE;IAClC;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEU,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,EAAQ;AAEhD,QAAA,IAAI,CAAC;AACA,aAAA,YAAY,CAAO,IAAI,CAAC,WAAW;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC1C,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;AAClC,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;gBAClB,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACjC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;YACzC;AACJ,QAAA,CAAC,CAAC;IACV;IAEU,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;IACzC;IAKO,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;IACvB;uGA1CkB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ICLW;AAAZ,CAAA,UAAY,kBAAkB,EAAA;;AAE1B,IAAA,kBAAA,CAAA,wCAAA,CAAA,GAAA,8CAAuF;AACvF,IAAA,kBAAA,CAAA,wCAAA,CAAA,GAAA,8JAAuM;;;AAIvM,IAAA,kBAAA,CAAA,wCAAA,CAAA,GAAA,oDAA6F;AAC7F,IAAA,kBAAA,CAAA,wBAAA,CAAA,GAAA,6BAAsD;AACtD,IAAA,kBAAA,CAAA,2BAAA,CAAA,GAAA,+CAA2E;;AAE/E,CAAC,EAXW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;MCEjB,kBAAkB,GAAwB,IAAI,cAAc,CAAM,oBAAoB;;MCctF,mBAAmB,CAAA;AACpB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAI7B,IAAA,MAAM,GAA4E,IAAI,GAAG,EAAE;IAC3F,aAAa,GAAG,IAAI,eAAe,CAA0E,IAAI,CAAC,MAAM,CAAC;AAE1H,IAAA,aAAa;AACb,IAAA,QAAQ;AAEP,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;;AAI1C,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAChC;;IAIQ,mBAAmB,GAAA;QACvB,IAAI,CAAC,MAAM,CAAC;aACP,IAAI,CACD,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE/B,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB;AACJ,QAAA,CAAC,CAAC;IACV;;;IAMO,QAAQ,CAAC,aAA+B,EAAE,QAAmB,EAAA;AAChE,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;IAEO,IAAI,CAA0D,SAA2B,EAAE,MAA+B,EAAA;QAC7H,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;QAC9E;AAEA,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACpE,MAAM,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAC,qBAA8B,GAAE;AAClF,YAAA,QAAQ,EAAE,YAAY;AACzB,SAAA,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAClE,aAAA;YACD,MAAM,EAAE,UAAU,CAAC,QAAQ;AAC9B,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE;AAC7D,YAAA,QAAQ,EAAE,eAAe;AAC5B,SAAA,CAAC;AAEF,QAAA,MAAM,KAAK,GAAG,IAAI,eAAe,CAC7B,UAAU,EACV,SAAS,EACT,UAAU,EACV,IAAI,EACJ,IAAI,kBAAkB,CAAC,MAAM,CAAC,CACjC;QAED,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;QAEtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpC,KAAK,CAAC,IAAI,EAAE;AAEZ,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,KAAK,CAAC,IAA+B,EAAE,iBAAA,GAAyC,KAAK,EAAA;QACxF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,IAAI,iBAAiB,KAAK,IAAI,EAAE;gBAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,KAAK,IAAI,KAAK,YAAY,eAAe,EAAE;oBAC3C,KAAK,CAAC,KAAK,EAAE;gBACjB;YACJ;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACxC;IACJ;IAEO,QAAQ,CAAC,aAAsB,KAAK,EAAA;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;gBAClC,IAAI,KAAK,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;oBACrE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;gBAC1C;YACJ;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC;AAEO,IAAA,GAAG,CAA0D,IAA+B,EAAA;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,QAAA,OAAO,KAA8E;IACzF;AAEO,IAAA,YAAY,CAA0D,IAA+B,EAAA;AACxG,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,YAAA,OAAO,KAA8E;QACzF,CAAC,CAAC,CAAC;IACP;IAEO,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;IAC3B;AAEO,IAAA,IAAI,CAAC,IAA+B,EAAA;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;;;AAMO,IAAA,uBAAuB,CAAC,KAA0D,EAAA;QACrF,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;gBAClC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,YAAY,YAAY,CAAC,EAAE;AACxD,oBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;gBAC9E;YACJ;AAAO,iBAAA,IAAI,EAAE,KAAK,YAAY,qBAAqB,CAAC,EAAE;AAClD,gBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;YAC9E;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;uGAlKS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCPY,aAAa,CAAA;AACb,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;IAErB,KAAK,GAAG,MAAM,EAAc;uGAJ5B,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,qXCR1B,0LAEM,EAAA,MAAA,EAAA,CAAA,yUAAA,CAAA,EAAA,CAAA;;2FDMO,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,QAAA,EAAA,0LAAA,EAAA,MAAA,EAAA,CAAA,yUAAA,CAAA,EAAA;;;MEKF,uBAAuB,CAAA;AACzB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqC;IAE5D,KAAK,GAAG,MAAM,EAA8B;uGAH1C,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,yPCTpC,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,4BAA4B,WAC7B,EAAE,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,4UAAA,CAAA,EAAA;;;MEQA,WAAW,CAAA;AACb,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqC;IAE5D,KAAK,GAAG,MAAM,EAA8B;uGAH1C,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,ECbxB,8kBAcM,EAAA,MAAA,EAAA,CAAA,8qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNF,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKd,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,8kBAAA,EAAA,MAAA,EAAA,CAAA,8qBAAA,CAAA,EAAA;;;AETI,MAAM,8BAA8B,GAAG;AACvC,MAAM,4BAA4B,GAAG;AACrC,MAAM,sCAAsC,GAAG;;MCczC,cAAc,CAAA;AAChB,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAC1D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAE1D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAuC;AAC9D,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;IAE9C,iBAAiB,GAAW,CAAC;IAC7B,2BAA2B,GAAY,KAAK;IAEzC,mBAAmB,GAAY,KAAK;IAEpC,cAAc,GAAW,CAAC;IAC1B,YAAY,GAAW,CAAC;AAExB,IAAA,iBAAiB,GAAW,MAAM,CAAC,WAAW;IAE9C,eAAe,GAAY,KAAK;IAElC,aAAa,GAAG,KAAK;IACrB,uBAAuB,GAAY,KAAK;IACxC,0BAA0B,GAAG,KAAK;AAElC,IAAA,0BAA0B,GAAG,IAAI,OAAO,EAAQ;AAEJ,IAAA,mBAAmB;AAC1B,IAAA,YAAY;IAElD,QAAQ,GAAA;QACb,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,0BAA0B,EAAE;IACnC;;IAIQ,2BAA2B,GAAA;QACjC,IAAI,IAAI,CAAC,eAAe;YAAE;AAE1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;AAC/F,QAAA,IAAI,CAAC,QAAQ;YAAE;QAEf,IAAI,CAAC,wBAAwB,EAAE;AAE/B,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,OAAO,EAAQ;AACrD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,aAAa;AACtD,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;QAE9D,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,QAAQ,GAAG,CAAC;QAChB,IAAI,aAAa,GAAG,KAAK;AAEzB,QAAA,MAAM,WAAW,GAAG,CAAC,KAAmB,KAAI;YAC1C,aAAa,GAAG,IAAI;AACpB,YAAA,MAAM,GAAG,KAAK,CAAC,OAAO;AACtB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACjC,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,KAAmB,KAAI;AAC1C,YAAA,IAAI,CAAC,aAAa;gBAAE;AACpB,YAAA,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM;YAEjC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;AACnC,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,KAAmB,KAAI;AACxC,YAAA,IAAI,CAAC,aAAa;gBAAE;YACpB,aAAa,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAEhC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM;YACrC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,SAAS,GAAI,KAAa,CAAC,SAAS,IAAI,CAAC,CAAC;AAE9F,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,SAAS,GAAGA,sCAAiD,EAAE;AAC7F,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;YAC5B;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC;AACnD,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC;AACnD,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/C,QAAA,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC;AAEnD,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3D,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,CAAC;IACJ;IAEQ,0BAA0B,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE;AAE3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAE5B,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;IAC5C;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AAEnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE;kBAC9C,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,GAAG;AAC3C,sBAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAC5B,sBAAE;AACJ,kBAAEC,8BAAyC;AAE7C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE;kBACjD,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG;AAC9C,sBAAE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;sBAC/BC;AACJ,kBAAE,MAAM,CAAC,WAAW;QACxB;IACF;IAEQ,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,0BAA0B;YAAE;AACrC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;QAEtC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAmB,KAAI;AAC7D,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,CAAC;IACJ;uGArJW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,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,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB3B,49DAoCM,EAAA,MAAA,EAAA,CAAA,irDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BF,OAAO,oFACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,49DAAA,EAAA,MAAA,EAAA,CAAA,irDAAA,CAAA,EAAA;;sBAiCA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEzBhC,aAAa,CAAA;AACb,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAC1D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAE1D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqC;AAC5D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;AAClC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAW;AACtC,IAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,iEAAW;AAClD,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;IAC5C,eAAe,GAAG,MAAM,EAAc;AAEjB,IAAA,mBAAmB;AAEjD,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO;AACH,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,EAAE;SACpE;IACL;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,gBAAA,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,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,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,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,qBAAA,EAAA,SAAA,EAeR,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpChC,ypEA4Cc,EAAA,MAAA,EAAA,CAAA,ujEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCN,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,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,EACd,WAAW,iGACX,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKlB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB;wBACL,gBAAgB;wBAChB,OAAO;wBACP,cAAc;wBACd,WAAW;wBACX;AACH,qBAAA,EAAA,QAAA,EAAA,ypEAAA,EAAA,MAAA,EAAA,CAAA,ujEAAA,CAAA,EAAA;;sBAmBA,YAAY;uBAAC,cAAc;;;AEpCzB,MAAM,mCAAmC,GAAG;AAC5C,MAAM,4CAA4C,GAAG;AAErD,MAAM,oDAAoD,GAAG;AAC7D,MAAM,oDAAoD,GAAG;;MCkBvD,SAAS,CAAA;AACX,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAC1D,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA2B;AAE1D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAqC;AAC5D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;IAEjC,eAAe,GAAG,KAAK;AAExB,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAW;AACtC,IAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,iEAAW;AAClD,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;AAEvB,IAAA,mBAAmB;AAEjD,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,GAAG,KAAK;gBAE5B,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC7B,gBAAA,CAAC,EAAEC,mCAA6C,CAAC;YAEnD;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,YAAY,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM;QACvD,MAAM,aAAa,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO;AAEzD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;QAEvC,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;AAE7C,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,OAAO,EAAE,aAAa;YAEtB,uBAAuB,EAAE,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;AAEpE,YAAA,wBAAwB,EAAE,aAAa,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK;SACxE;IACH;uGAvDW,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,YAAA,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,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,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,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,qBAAA,EAAA,SAAA,EAiBN,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC9B,wnDAoCc,EAAA,MAAA,EAAA,CAAA,4zCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvBV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,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,EACd,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,WAAW,iGACX,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKd,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EACb;wBACP,gBAAgB;wBAChB,cAAc;wBACd,OAAO;wBACP,WAAW;wBACX;AACD,qBAAA,EAAA,QAAA,EAAA,wnDAAA,EAAA,MAAA,EAAA,CAAA,4zCAAA,CAAA,EAAA;;sBAqBA,YAAY;uBAAC,cAAc;;;METjB,qBAAqB,CAAA;AAMtB,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,IAAA,sBAAsB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACxD,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE5C,UAAU,GAAG,MAAM,EAAQ;AAE3B,IAAA,iBAAiB,GAAWA,mCAA6C;IAE3E,YAAY,GAAoB,EAAqB;AACrD,IAAA,MAAM;AACN,IAAA,aAAa;AAEb,IAAA,oBAAoB,GAAG,IAAI,OAAO,EAAc;AAChD,IAAA,aAAa,GAA2B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AAEhF,IAAA,MAAM,GAAG,MAAM,CAAU,IAAI,kDAAC;AAC9B,IAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,kEAAC;AAE5C,IAAA,cAAc,GAAG,MAAM,CAA0B,IAAI,0DAAC;AACtD,IAAA,cAAc,GAAG,MAAM,CAA0B,IAAI,0DAAC;IAEzD,UAAU,GAAY,KAAK;IAC3B,UAAU,GAAY,KAAK;IAC3B,MAAM,GAAY,KAAK;IACpB,SAAS,GAAY,KAAK;IAC1B,6BAA6B,GAAY,KAAK;IAEhD,uBAAuB,GAAY,KAAK;IACxC,sCAAsC,GAAY,KAAK;IACvD,gBAAgB,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU;AAEpB,IAAA,cAAc;AAEpC,IAAA,mBAAmB;AACf,IAAA,uBAAuB;AAEtB,IAAA,eAAe;AACc,IAAA,gBAAgB;AAE3E,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,wBAAwB,EAAE;QAE/B,MAAM,CAAC,MAAK;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK;AAC3C,YAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAC3C,QAAA,CAAC,CAAC;IACN;IAEO,QAAQ,GAAA;QACX,IAAI,CAAC,oBAAoB,EAAE;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,EAAE;AACrF,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;QACzC;aAAO;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1C;IACJ;IAEO,eAAe,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7D;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE;IAClC;;IAIQ,wBAAwB,GAAA;AAC5B,QAAA,SAAS,CAAgB,QAAQ,EAAE,SAAS;AACvC,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,EACxD,kBAAkB,EAAE;aAEvB,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;YACzC;AACJ,QAAA,CAAC,CAAC;IACV;AAEQ,IAAA,2BAA2B,CAAC,KAAa,EAAA;QAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK;YAAE;QAE/C,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE;AAC/D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAEvD,QAAA,IAAI,KAAK,GAAG,YAAY,IAAI,CAAC,iBAAiB,EAAE;AAC5C,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;YAErC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,sCAAsC,EAAE;AAC9D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;AACjC,oBAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa;AACjD,oBAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,6BAA6B,IAAI,KAAK;oBAC1E,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AACzC,oBAAA,gBAAgB,EAAE,IAAI;AACtB,oBAAA,yBAAyB,EAAE,IAAI;AAClC,iBAAA,CAAC;AAEF,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAChC;QACJ;AAEA,QAAA,IAAI,KAAK,IAAI,YAAY,IAAI,iBAAiB,EAAE;AAC5C,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;YAEtC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,sCAAsC,EAAE;AAC9D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,6BAA6B,IAAI,KAAK,CAAC;AACxF,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YACjC;QACJ;IACJ;;;IAMQ,oBAAoB,GAAA;QACxB,IAAI,CAAC,sCAAsC,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,gCAAgC,KAAK,KAAK,CAAC;AAEhK,QAAA,IAAI,CAAC,SAAS;YACV,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;qBACtE,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;AAE7H,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,KAAK,KAAK;AAEhF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;AACrD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO;IACnG;;;AAMO,IAAA,iBAAiB,CAAC,QAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;AAEO,IAAA,iBAAiB,CAAC,QAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;;;IAMO,KAAK,CAAC,KAAA,GAAwB,QAAQ,EAAE,MAAA,GAAwB,SAAS,EAAE,qBAAA,GAAiC,KAAK,EAAE,UAAA,GAAsB,KAAK,EAAA;QACjJ,IAAI,IAAI,CAAC,uBAAuB;YAAE;AAElC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,6BAA6B,IAAI,KAAK,CAAC;QAC5F;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAK,CAAC,qBAAqB,IAAI,UAAU,EAAE;AAC7F,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;AACxF,gBAAA,IAAI,IAAI,CAAC,oCAAoC,EAAE,EAAE;AAC7C,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAA2B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;wBACjH,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,IAAI;AAC3C,4BAAA,YAAY,EAAE,KAAK;AACtB,yBAAA;AACD,wBAAA,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,IAAI,YAAY;wBACrE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,IAAI,IAAI;AACpD,qBAAA,CAAC;AAEF,oBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AAEnC,oBAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;wBAC/B,IAAI,CAAC,2BAA2B,EAAE;oBACtC;oBAEA,KAAK,CAAC,WAAW;AACZ,yBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,yBAAA,SAAS,CAAC,CAAC,OAA4B,KAAI;AACxC,wBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,wBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AAC7B,4BAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;wBACnC;AACJ,oBAAA,CAAC,CAAC;gBACV;qBAAO;oBACH,IAAI,IAAI,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,EAAE;AAC9C,wBAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC;oBAC1E;AAEA,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;gBACnC;YACJ;iBAAO;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACtC,IAAI,CAAC,2BAA2B,EAAE;QACtC;IACJ;AAEQ,IAAA,MAAM,WAAW,CAAC,KAAqB,EAAE,MAAqB,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC;AAEzC,QAAA,MAAM,YAAY,GAAG;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,KAAK;SACuB;AAEvC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QACpC;IACJ;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI,EAAE;YACtF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;QACzC;IACJ;;;IAMQ,2BAA2B,CAAC,UAAmB,EAAE,KAAqB,EAAA;AAC1E,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE;AACjC,YAAA,MAAM,4BAA4B,GAAG,CAAC,UAAU;YAEhD,IAAI,4BAA4B,EAAE;gBAC9B,MAAM,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,KAAK,IAAI;AACtF,gBAAA,MAAM,0BAA0B,GAAG,KAAK,KAAK,QAAQ;gBACrD,MAAM,iCAAiC,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,KAAK,IAAI;AAEjG,gBAAA,OAAO,yBAAyB,KAAK,0BAA0B,IAAI,iCAAiC,CAAC;YACzG;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEQ,oCAAoC,GAAA;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE;AACjC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,KAAK,YAAY;YACjL,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,KAAK,IAAI;YAE/E,OAAO,iBAAiB,IAAI,eAAe;QAC/C;AAEA,QAAA,OAAO,KAAK;IAChB;;;IAMQ,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;eACtD,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK;IAC1E;IAEQ,2BAA2B,GAAA;AAC/B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAC/C,IAAI,cAAc,EAAE;AAChB,YAAA,cAAc,CAAC,iBAAiB,GAAG,CAAC;QACxC;IACJ;AAEQ,IAAA,8BAA8B,CAAC,UAAmB,EAAA;AACtD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAC/C,IAAI,cAAc,EAAE;AAChB,YAAA,cAAc,CAAC,2BAA2B,GAAG,UAAU;QAC3D;IACJ;uGAxRS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,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,EA8CS,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAJzC,SAAS,6EACT,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzE/B,8+CA6Bc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPN,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,+BAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,SAAS,wPACT,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB;wBACL,gBAAgB;wBAChB,aAAa;wBACb,SAAS;wBACT;AACH,qBAAA,EAAA,QAAA,EAAA,8+CAAA,EAAA;;sBA4CA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAE5C,YAAY;uBAAC,SAAS;;sBACtB,YAAY;uBAAC,aAAa;;sBAE1B,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;AE5EtD,MAAM,oBAAoB,GAAG;AAC7B,MAAM,mBAAmB,GAAG;AAC5B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,mBAAmB,GAAG;;MCKtB,oBAAoB,CAAA;AACvB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,KAAK,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEjE,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,oBAAoB,CAAC,8BAA8B,CAAC;QACnE;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,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/constants/generic-modal-common.constants.ts","../../../projects/modal/src/lib/enums/generic-modal-warnings.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-style.config.ts","../../../projects/modal/src/lib/classes/generic-modal-config.ts","../../../projects/modal/src/lib/enums/generic-modal-state.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-ref.ts","../../../projects/modal/src/lib/classes/generic-modal.ts","../../../projects/modal/src/lib/enums/generic-modal-errors.enum.ts","../../../projects/modal/src/lib/tokens/generic-modal-data.token.ts","../../../projects/modal/src/lib/services/generic-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/generic-modal-swipe.constants.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.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/generic-modal-animation.constants.ts","../../../projects/modal/src/lib/components/generic-modal.ts","../../../projects/modal/src/lib/components/generic-modal.html","../../../projects/modal/src/lib/constants/generic-modal-text.constants.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["export const EMPTY_STRING = '';","export enum GenericModalWarnings {\n //#region Multi-level modals\n NO_PARENT_PROVIDED = \"No parent modal provided for multilevel modal. Please provide a parent modal or set openAsMultilevel to false.\",\n MULTILEVEL_INLINE_NOT_SUPPORTED = \"As of this version, opening a multi-level modal from inline HTML is not possible. Please set openAsMultilevel to false or open your modal through the GenericModalService! Opening modal as normal modal.\",\n MULTILEVEL_NO_PARENT = \"Cannot open a multilevel modal with only one modal open. Please open another modal before opening a multilevel modal or set openAsMultilevel to false.\",\n PARENT_MODAL_NOT_SET = \"Error setting parent modal. Opening modal as normal modal\",\n //#endregion\n\n //#region Confirm close\n CONFIRM_MODAL_NESTING_NOT_SUPPORTED = \"Cannot open a confirm modal from within a confirm modal. If you want to allow this behaviour, set bypassSelfCheck to true in the confirmCloseConfig.\",\n //#endregion\n\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalFooter] Directive used outside of a GenericModalComponent.\",\n HEADER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalHeader] Directive used outside of a GenericModalComponent.\",\n //#endregion\n}","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { IGenericSwipeableModalConfig } from \"../interfaces/igeneric-swipeable-modal-config\";\nimport { ModalPoistion } from \"../types/modal.types\";\n\nexport class GenericModalStyleConfig implements IGenericModalStyleConfig {\n position: ModalPoistion;\n handleMobile: boolean;\n\n animate: boolean;\n hasBackdrop: boolean;\n closeDelay?: number;\n showCloseButton?: boolean;\n\n mobileConfig: IGenericSwipeableModalConfig;\n\n contentWrapper: boolean;\n\n wrapperClasses: string;\n wrapperStyles: string;\n\n overrideFullHeight: boolean;\n\n constructor(config?: IGenericModalStyleConfig) {\n this.position = config?.position ?? \"center\";\n this.handleMobile = config?.handleMobile ?? true;\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 ?? EMPTY_STRING;\n this.wrapperStyles = config?.wrapperStyles ?? EMPTY_STRING;\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericConfirmCloseConfig } from \"../interfaces/igeneric-confirm-close.interface\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { GenericModal } from \"./generic-modal\";\nimport { GenericModalStyleConfig } from \"./generic-modal-style.config\";\nimport { uuidv4 } from \"@filip.mazev/blocks-core\";\n\nexport class GenericModalConfig<\n D = unknown,\n ConfirmComponentData = any,\n ConfirmComponent extends GenericModal<ConfirmComponentData, undefined> = GenericModal<ConfirmComponentData, undefined>> {\n public open: boolean;\n\n public afterClose?: Function;\n public confirmCloseConfig?: IGenericConfirmCloseConfig<ConfirmComponentData, ConfirmComponent>;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\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?: IGenericModalConfig<D, ConfirmComponentData, ConfirmComponent>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.confirmCloseConfig = config?.confirmCloseConfig;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n\n this.contentClasses = config?.contentClasses ?? EMPTY_STRING;\n this.contentStyles = config?.contentStyles ?? EMPTY_STRING;\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id ?? uuidv4();\n }\n}\n","export enum GenericModalState {\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 { GenericModalConfig } from \"./generic-modal-config\";\nimport { GenericModalComponent } from \"../components/generic-modal\";\nimport { GenericModalState } from \"../enums/generic-modal-state.enum\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { IGenericModalRef } from \"../interfaces/igeneric-modal-ref.interface\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { GenericModal } from \"./generic-modal\";\n\nexport class GenericModalRef<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>> implements IGenericModalRef<D, R, C> {\n\n //#region Modal Container\n\n private _modalContainer: Type<GenericModalComponent<D, R, C>> = {} as Type<GenericModalComponent<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<GenericModalComponent<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<GenericModalComponent<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>> = {} as ComponentRef<GenericModalComponent<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<GenericModalComponent<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private _parentElement: HTMLElement | undefined = undefined;\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n //#endregion\n\n //#region Component\n\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n //#endregion\n\n //#region Self\n\n private _modalState: GenericModalState = GenericModalState.CLOSED;\n\n private modalState = new BehaviorSubject<GenericModalState>(this.getStatus());\n\n public modalState$(): Observable<GenericModalState> {\n return this.modalState.asObservable();\n }\n\n private getStatus(): GenericModalState {\n return this._modalState;\n }\n\n private _selfIdentifier: { constructor: Function } = {} as {\n constructor: Function;\n };\n\n private set selfIdentifier(selfIdentifier: { constructor: Function }) {\n this._selfIdentifier = selfIdentifier;\n }\n\n public get selfIdentifier(): { constructor: Function } {\n return this._selfIdentifier;\n }\n\n private _modalConfig?: GenericModalConfig<D> = undefined;\n\n private set modalConfig(modalConfig: GenericModalConfig<D> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public get modalConfig(): GenericModalConfig<D> | undefined {\n return this._modalConfig;\n }\n //#endregion\n\n //#region Observables\n\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterCloseSubject: Subject<IGenericCloseResult<R>> = new Subject<IGenericCloseResult<R>>();\n\n public afterClosed(): Observable<IGenericCloseResult<R>> {\n return this.afterCloseSubject.asObservable();\n }\n\n private afterClose(result: IGenericCloseResult<R>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n constructor(\n componentRef: ComponentRef<C>,\n selfIdentifier: { constructor: Function },\n modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>,\n private modalService: GenericModalService,\n modalConfig?: GenericModalConfig<D>,\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n this.selfIdentifier = selfIdentifier;\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = GenericModalState.OPENING;\n this.modalState.next(GenericModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new GenericModalConfig(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 = GenericModalState.OPEN;\n this.modalState.next(GenericModalState.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 //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IGenericCloseResult<R>): void {\n this._modalState = GenericModalState.CLOSING;\n this.modalState.next(GenericModalState.CLOSING);\n\n setTimeout(\n () => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = GenericModalState.CLOSED;\n this.modalState.next(GenericModalState.CLOSED);\n\n this.afterClose(result);\n this.modalService?.close(this.selfIdentifier, true);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { Injectable, OnDestroy, inject } from \"@angular/core\";\nimport { GenericModalRef } from \"./generic-modal-ref\";\nimport { Subject, takeUntil } from \"rxjs\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\n\n@Injectable()\nexport abstract class GenericModal<D, R> implements OnDestroy {\n protected genericModalService = inject(GenericModalService);\n\n modal?: GenericModalRef<D, R>;\n\n protected modalGetSubscription$ = new Subject<void>();\n\n constructor() {\n this.createModalSubscription();\n }\n\n ngOnDestroy(): void {\n this.onDestroy();\n this.unsubscribeModalGet();\n }\n\n protected createModalSubscription() {\n this.modalGetSubscription$ = new Subject<void>();\n\n this.genericModalService\n .getSubscribe<D, R>(this.constructor)\n .pipe(takeUntil(this.modalGetSubscription$))\n .subscribe((modal) => {\n if (modal instanceof GenericModalRef) {\n this.modal = modal;\n this.afterModalGet();\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n });\n }\n\n protected unsubscribeModalGet() {\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n\n abstract afterModalGet(): void;\n abstract onDestroy(): void;\n\n public close() {\n this.modal?.close();\n }\n}\n","export enum GenericModalErrors {\n //#region General\n MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES = \"The modal doesn't match the requested types.\",\n GENERIC_MODAL_SERVICE_RENDERER_NOT_SET = \"ViewContainer and Renderer not set, please set the view container in the constructor of app.module.ts / app.ts (by calling register), before opening a modal\",\n //#endregion\n\n //#region Multi-level modals\n PARENT_MODAL_CANT_BE_THE_SAME_AS_CHILD = \"Parent modal cannot be the same as the child modal\",\n PARENT_MODAL_NOT_FOUND = \"Parent modal does not exist\",\n PARENT_MODAL_NOT_PROVIDED = \"No parent modal provided for multilevel modal\",\n //#endregion\n}","import { InjectionToken } from \"@angular/core\";\n\nexport const GENERIC_MODAL_DATA: InjectionToken<any> = new InjectionToken<any>(\"GENERIC_MODAL_DATA\");\n","import { Injectable, inject, Injector, ViewContainerRef, Renderer2 } from \"@angular/core\";\nimport { Router, NavigationEnd } from \"@angular/router\";\nimport { BehaviorSubject, Subject, filter, takeUntil, Observable, map, skip } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { GenericModalRef } from \"../classes/generic-modal-ref\";\nimport { GenericModalComponent } from \"../components/generic-modal\";\nimport { GenericModalErrors } from \"../enums/generic-modal-errors.enum\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalService } from \"../interfaces/igeneric-modal-service.interface\";\nimport { GENERIC_MODAL_DATA } from \"../tokens/generic-modal-data.token\";\nimport { ComponentType } from \"@angular/cdk/portal\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class GenericModalService implements IGenericModalService {\n private router = inject(Router);\n protected injector = inject(Injector);\n\n //#region Properties\n\n private modals: Map<{ constructor: Function }, GenericModalRef | GenericModalComponent> = new Map();\n private modalsSubject = new BehaviorSubject<Map<{ constructor: Function }, GenericModalRef | GenericModalComponent>>(this.modals);\n\n public viewContainer?: ViewContainerRef;\n public renderer?: Renderer2;\n\n //#endregion\n\n constructor() {\n this.createSubscriptions();\n }\n\n //#region Private 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 public register(viewContainer: ViewContainerRef, renderer: Renderer2): void {\n this.viewContainer = viewContainer;\n this.renderer = renderer;\n }\n\n public open<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(component: ComponentType<C>, config?: IGenericModalConfig<D>): GenericModalRef<D, R, C> {\n if (!this.viewContainer || !this.renderer) {\n throw new Error(GenericModalErrors.GENERIC_MODAL_SERVICE_RENDERER_NOT_SET);\n }\n\n const dataInjector = Injector.create({\n providers: [{ provide: GENERIC_MODAL_DATA, useValue: config?.data }],\n parent: this.injector,\n });\n\n const wrapperRef = this.viewContainer.createComponent(GenericModalComponent<D, R, C>, {\n injector: dataInjector,\n });\n\n const contentInjector = Injector.create({\n providers: [\n { provide: GenericModalComponent, useValue: wrapperRef.instance }\n ],\n parent: wrapperRef.injector,\n });\n\n const contentRef = this.viewContainer.createComponent(component, {\n injector: contentInjector,\n });\n\n const modal = new GenericModalRef<D, R, C>(\n contentRef,\n component,\n wrapperRef,\n this,\n new GenericModalConfig(config),\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.set(modal.selfIdentifier, modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n public close(self: { constructor: Function }, fromCloseFunction: boolean | undefined = false): void {\n if (this.modals.has(self)) {\n if (fromCloseFunction !== true) {\n\n const modal = this.modals.get(self);\n if (modal && modal instanceof GenericModalRef) {\n modal.close();\n }\n }\n this.modals.delete(self);\n this.modalsSubject.next(this.modals);\n }\n }\n\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal instanceof GenericModalRef) {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close(\"cancel\", undefined, true);\n }\n }\n });\n\n this.modals.clear();\n this.modalsSubject.next(this.modals);\n }\n\n public get<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined {\n const modal = this.modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined;\n }\n\n public getSubscribe<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): Observable<GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined> {\n return this.modalsSubject.asObservable().pipe(map((modals) => {\n const modal = modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<D, R, C> | undefined;\n }));\n }\n\n public modalsCount(): number {\n return this.modals.size;\n }\n\n public find(self: { constructor: Function }): boolean {\n return this.modals.has(self);\n }\n\n //#endregion\n\n //#region Helper Methods\n\n public modalRequestedTypeCheck(modal: GenericModalRef | GenericModalComponent | undefined): boolean {\n if (modal) {\n if (modal instanceof GenericModalRef) {\n if (!(modal.componentRef.instance instanceof GenericModal)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n } else if (!(modal instanceof GenericModalComponent)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n }\n\n return true;\n }\n\n //#endregion\n}\n","import { Component, input, output } from \"@angular/core\";\n\n@Component({\n selector: 'modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n readonly isAnimated = input(false);\n readonly isOpen = input(false);\n \n readonly click = output<MouseEvent>();\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 { GenericModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 { GenericModalConfig } from \"../../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../../types/modal.types\";\nimport { ModalDefaultCloseButton } from \"../default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_UP_SWIPE_LIMIT = 1;\nexport const GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output } from '@angular/core';\nimport { Subject, take } from 'rxjs';\nimport { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as swipeConst from '../../../constants/generic-modal-swipe.constants';\n\n@Component({\n selector: 'modal-swipeable',\n imports: [\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: './modal-swipeable.html',\n styleUrl: './modal-swipeable.scss',\n})\nexport class ModalSwipeable implements OnInit, OnDestroy {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<any> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY: number = 0;\n public isSwipingVerticallyFinished: boolean = false;\n\n protected isSwipingVertically: boolean = false;\n\n protected downSwipeLimit: number = 0;\n protected upSwipeLimit: number = 0;\n\n protected windowInnerHeight: number = window.innerHeight;\n\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private swipeableModalInitiated: boolean = false;\n private globalPointerListenerAdded = false;\n\n private touchDetectionUnsubscribe$ = new Subject<void>();\n\n @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\n @ViewChild(\"modalContent\", { static: true }) modalContent?: ElementRef;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0;\n if (!hasTouch) return;\n\n this.initSwipeableModalParams();\n\n this.touchDetectionUnsubscribe$ = new Subject<void>();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n const limit = document.body.offsetHeight / this.downSwipeLimit;\n\n let startY = 0;\n let currentY = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n isPointerDown = true;\n startY = event.clientY;\n this.isSwipingVertically = true;\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n currentY = event.clientY - startY;\n\n event.preventDefault();\n this.currentTranslateY = currentY;\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n this.isSwipingVertically = false;\n\n const deltaY = event.clientY - startY;\n const velocityY = (event.clientY - startY) / (event.timeStamp - (event as any).startTime || 1);\n\n if (Math.abs(deltaY) > limit || velocityY > swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY = 0;\n }\n };\n\n target.addEventListener('pointerdown', pointerDown);\n target.addEventListener('pointermove', pointerMove);\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.touchDetectionUnsubscribe$.pipe(take(1)).subscribe(() => {\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 this.touchDetectionUnsubscribe$.next();\n this.touchDetectionUnsubscribe$.complete();\n }\n\n private initSwipeableModalParams(): void {\n if (!this.swipeableModalInitiated) {\n this.swipeableModalInitiated = true;\n\n const config = this.config();\n this.downSwipeLimit = config?.style.mobileConfig?.downSwipeLimit\n ? config.style.mobileConfig.downSwipeLimit > 0\n ? config.style.mobileConfig.downSwipeLimit\n : 1\n : swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT;\n\n const configValue = this.config();\n this.upSwipeLimit = configValue?.style.mobileConfig?.upSwipeLimit\n ? configValue.style.mobileConfig.upSwipeLimit > 0\n ? configValue.style.mobileConfig.upSwipeLimit\n : swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT\n : window.innerHeight;\n }\n }\n\n private monitorInputType(): void {\n if (this.globalPointerListenerAdded) return;\n this.globalPointerListenerAdded = true;\n\n window.addEventListener('pointerdown', (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\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" [id]=\"config()?.id ?? ''\"\n [class]=\"config()?.style?.wrapperClasses !== undefined ? config()!.style.wrapperClasses! : ''\"\n [style]=\"config()?.style?.wrapperStyles !== undefined ? config()!.style.wrapperStyles! : ''\"\n [style.max-height]=\"config() && config()?.style?.mobileConfig && config()?.style?.mobileConfig?.customHeight ? config()?.style?.mobileConfig?.customHeight : ''\"\n [style.transform]=\"!isSwipingVerticallyFinished\n ? 'translateY(' + (currentTranslateY * -1 > windowInnerHeight / upSwipeLimit ? (windowInnerHeight / upSwipeLimit) * -1 : currentTranslateY) + 'px)'\n : 'translateY(100%)'\"\n [style.transition]=\"isAnimated() && !isSwipingVertically ? '300ms ease-in-out' : ''\" [ngClass]=\"{\n 'opened-swipeable-modal': isAnimated()\n }\" data-horizontal-swipe-target=\"swipeable-modal\" class=\"swipeable-modal-style\">\n \n <div #verticalSwipeTarget class=\"touch-hitbox\" class=\"swipeable-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"swipeable-modal-inner-content-container\">\n <div class=\"swipeable-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"swipeable-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"swipeable-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-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 { GenericModalConfig } from \"../../../classes/generic-modal-config\";\nimport { IGenericModalView } from \"../../../interfaces/igeneric-modal-view.interface\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\nimport { ModalBanner } from \"../../shared/ui/banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\nimport { ModalDefaultCloseButton } from \"../../shared/ui/default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\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}","@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\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 { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { IGenericModalView } from '../../../interfaces/igeneric-modal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\nimport * as animConst from '../../../constants/generic-modal-animation.constants';\n\n@Component({\n selector: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalSwipeable,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n\n protected renderOpenClass = signal(false);\n\n public modalClasses = computed(() => {\n const config = this.config();\n const positionLeft = config?.style?.position === 'left';\n const positionRight = config?.style?.position === '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 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\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}","@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\"\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const GENERIC_MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const GENERIC_MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, inject, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal, effect } from \"@angular/core\";\nimport { Subject, Observable, fromEvent, filter, take } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { GenericModalWarnings } from \"../enums/generic-modal-warnings.enum\";\nimport { IGenericModalComponenet } from \"../interfaces/igeneric-modal-component.interface\";\nimport { GenericModalService } from \"../services/generic-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 { ModalSwipeable } from \"./views/swipeable/modal-swipeable\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { DeviceTypeService, ScrollLockService, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport * as animConst from \"../constants/generic-modal-animation.constants\";\n\n@Component({\n selector: \"generic-modal\",\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: \"./generic-modal.html\",\n styleUrl: \"./generic-modal.scss\",\n})\nexport class GenericModalComponent<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>>\n implements IGenericModalComponenet<D, R, C> {\n\n private modalService = inject(GenericModalService);\n private windowDimensionService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n\n readonly afterClose = output<void>();\n\n readonly animationDuration: number = animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: GenericModalConfig<D>;\n public closeFunction?: Function;\n\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n public isOpen = signal<boolean>(true);\n public isSwipeableModalActive = signal<boolean>(false);\n\n protected headerTemplate = signal<TemplateRef<any> | null>(null);\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n public isAnimated: boolean = false;\n public isCentered: boolean = false;\n public isSide: boolean = false;\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n private isConfirmCloseModalOpen: boolean = false;\n private isSpecialMobileOverflowHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n protected windowDimensions = this.windowDimensionService.dimensions;\n\n @ViewChild(\"modalContainer\", { static: true }) modalContainer?: ElementRef;\n\n @ViewChildren(ModalSide) sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) centeredModalComponents?: QueryList<ModalCentered>;\n\n @ViewChild(\"contentTemplate\") contentTemplate?: TemplateRef<HTMLElement>;\n @ViewChild(\"dynamicContainer\", { read: ViewContainerRef }) dynamicContainer?: ViewContainerRef;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleWindowDimensionChange(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n\n if (this.config?.style.handleMobile !== false && this.windowDimensionService.isMobile()) {\n this.isSwipeableModalActive.set(true);\n } else {\n this.isSwipeableModalActive.set(false);\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\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 private handleWindowDimensionChange(width: number): void {\n if (this.config?.style.handleMobile === false) return;\n\n const smBreakpoint = this.windowDimensionService.breakpoints.sm;\n const currentSwipeState = this.isSwipeableModalActive(); \n\n if (width < smBreakpoint && !currentSwipeState) {\n this.isSwipeableModalActive.set(true);\n\n if (this.isOpen() && this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.disableScroll({\n mainContainer: this.modalContainer?.nativeElement,\n handleExtremeOverflow: this.config?.enableExtremeOverflowHandling ?? false,\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true,\n });\n\n this.isScrollDisabled = true;\n }\n }\n\n if (width >= smBreakpoint && currentSwipeState) {\n this.isSwipeableModalActive.set(false);\n\n if (this.isOpen() && this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.isSpecialMobileOverflowHandlingEnabled = (this.deviceTypeService.getDeviceState().isAppleDevice || this.config?.webkitOnlyOverflowMobileHandling === false);\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 this.isAnimated = this.config?.style.animate === true;\n this.isCentered = this.config?.style.position === \"center\";\n this.isSide = this.config?.style.position === \"left\" || this.config?.style.position === \"right\";\n }\n\n //#endregion\n\n //#region Public Template Methods\n\n public setHeaderTemplate(template: TemplateRef<any>) {\n this.headerTemplate.set(template);\n }\n\n public setFooterTemplate(template: TemplateRef<any>) {\n this.footerTemplate.set(template);\n }\n\n //#endregion\n\n //#region Closing Methods\n\n public close(state: ModalCloseMode = \"cancel\", result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (this.isConfirmCloseModalOpen) return;\n\n if (this.isScrollDisabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n }\n\n if ((this.config && this.config?.disableClose !== true) || !fromInsideInteraction || forceClose) {\n if (this.config?.confirmCloseConfig && this.shouldOpenConfirmCloseModal(forceClose, state)) {\n if (this.shouldOpenConfirmCloseModalSelfCheck()) {\n const modal = this.modalService.open<IGenericCloseResult, any>(this.config.confirmCloseConfig.confirmModalComponent, {\n style: this.config.confirmCloseConfig.style ?? {\n handleMobile: false,\n },\n disableClose: true,\n bannerText: this.config.confirmCloseConfig.bannerText ?? EMPTY_STRING,\n data: this.config.confirmCloseConfig.data ?? null,\n });\n\n this.isConfirmCloseModalOpen = true;\n\n if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n\n modal.afterClosed()\n .pipe(take(1))\n .subscribe((_result: IGenericCloseResult) => {\n this.isConfirmCloseModalOpen = false;\n if (_result.state === 'confirm') {\n this.handleClose(state, result);\n }\n });\n } else {\n if (this.config?.disableConsoleWarnings !== true) {\n console.warn(GenericModalWarnings.CONFIRM_MODAL_NESTING_NOT_SUPPORTED);\n }\n\n this.handleClose(state, result);\n }\n } else {\n this.handleClose(state, result);\n }\n } else if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setSwipeableModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state,\n } as IGenericCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n protected onBackdropClick(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close(\"cancel\", undefined, true);\n }\n }\n\n //#endregion\n\n //#region Logical Assertions\n\n private shouldOpenConfirmCloseModal(forceClose: boolean, state: ModalCloseMode): boolean {\n if (this.config?.confirmCloseConfig) {\n const closeNotCalledWithForceClose = !forceClose;\n\n if (closeNotCalledWithForceClose) {\n const configuredForConfirmClose = this.config.confirmCloseConfig.confirmClose === true;\n const closeCalledWithCancelState = state === \"cancel\";\n const configuredForConfirmCloseOnSubmit = this.config.confirmCloseConfig.confirmOnSubmit === true;\n\n return configuredForConfirmClose && (closeCalledWithCancelState || configuredForConfirmCloseOnSubmit);\n }\n }\n\n return false;\n }\n\n private shouldOpenConfirmCloseModalSelfCheck(): boolean {\n if (this.config?.confirmCloseConfig) {\n const hasSelfIdentifier = this.componentRef && this.componentRef.instance && this.componentRef.instance.modal && this.componentRef.instance.modal.selfIdentifier !== EMPTY_STRING;\n const bypassSelfCheck = this.config.confirmCloseConfig.bypassSelfCheck === true;\n\n return hasSelfIdentifier || bypassSelfCheck;\n }\n\n return false;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private getSwipeableModal(): ModalSwipeable | undefined {\n return this.sideModalComponents?.first?.swipeableComponents?.first\n ?? this.centeredModalComponents?.first?.swipeableComponents?.first\n }\n\n private resetSwipeableModalPosition(): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.currentTranslateY = 0;\n }\n }\n\n private setSwipeableModalFinishedState(isFinished: boolean): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.isSwipingVerticallyFinished = isFinished;\n }\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide || isSwipeableModalActive())) {\n<modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide) {\n <modal-side [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-side>\n } \n @case (isCentered) {\n <modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","export const LOWEST_CHARACTER_CAP = 23;\nexport const LOWER_CHARACTER_CAP = 33;\nexport const MID_CHARACTER_CAP = 49;\nexport const UPPER_CHARACTER_CAP = 60;","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { GenericModalComponent } from '../components/generic-modal';\nimport { GenericModalWarnings } from '../enums/generic-modal-warnings.enum';\n\n@Directive({\n selector: '[modalFooter]', \n standalone: true\n})\nexport class ModalFooterDirective {\n private templateRef = inject(TemplateRef);\n private modal = inject(GenericModalComponent, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(GenericModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/generic-modal';\nexport * from './lib/components/views/swipeable/modal-swipeable';\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/generic-modal.service';\n\nexport * from './lib/classes/generic-modal';\nexport * from './lib/classes/generic-modal-config';\nexport * from './lib/classes/generic-modal-ref';\nexport * from './lib/classes/generic-modal-style.config';\n\nexport * from './lib/interfaces/igeneric-close-result.interface';\nexport * from './lib/interfaces/igeneric-confirm-close.interface';\nexport * from './lib/interfaces/igeneric-modal-component.interface';\nexport * from './lib/interfaces/igeneric-modal-config.interface';\nexport * from './lib/interfaces/igeneric-modal-ref.interface';\nexport * from './lib/interfaces/igeneric-modal-service.interface';\nexport * from './lib/interfaces/igeneric-modal-style-config.interface';\nexport * from './lib/interfaces/igeneric-modal-view.interface';\nexport * from './lib/interfaces/igeneric-swipeable-modal-config';\n\nexport * from './lib/constants/generic-modal-animation.constants';\nexport * from './lib/constants/generic-modal-common.constants';\nexport * from './lib/constants/generic-modal-swipe.constants';\nexport * from './lib/constants/generic-modal-text.constants';\n\nexport * from './lib/enums/generic-modal-errors.enum';\nexport * from './lib/enums/generic-modal-warnings.enum';\nexport * from './lib/enums/generic-modal-state.enum';\n\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/generic-modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD","swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT","swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT","animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _filip_mazev_blocks_core from '@filip.mazev/blocks-core';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { Type, ComponentRef,
|
|
3
|
+
import { Type, ComponentRef, ViewContainerRef, Renderer2, Injector, OnDestroy, OnInit, Signal, TemplateRef, ElementRef, InputSignal, OutputEmitterRef, QueryList, InjectionToken } from '@angular/core';
|
|
4
4
|
import { Observable, Subject } from 'rxjs';
|
|
5
5
|
import { ComponentType } from '@angular/cdk/portal';
|
|
6
6
|
import * as _filip_mazev_modal from '@filip.mazev/modal';
|
|
@@ -149,7 +149,7 @@ interface IGenericModalRef<D = any, R = any, C extends GenericModal<D, R> = Gene
|
|
|
149
149
|
} | undefined) => void;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
interface IGenericModalService
|
|
152
|
+
interface IGenericModalService {
|
|
153
153
|
viewContainer?: ViewContainerRef;
|
|
154
154
|
register: (viewContainer: ViewContainerRef, renderer: Renderer2) => void;
|
|
155
155
|
open: (component: ComponentType<any>, config?: IGenericModalConfig<any>) => GenericModalRef<any, any, any>;
|
|
@@ -173,9 +173,7 @@ declare class GenericModalService implements IGenericModalService {
|
|
|
173
173
|
private modalsSubject;
|
|
174
174
|
viewContainer?: ViewContainerRef;
|
|
175
175
|
renderer?: Renderer2;
|
|
176
|
-
private unsubscribe$;
|
|
177
176
|
constructor();
|
|
178
|
-
ngOnDestroy(): void;
|
|
179
177
|
private createSubscriptions;
|
|
180
178
|
register(viewContainer: ViewContainerRef, renderer: Renderer2): void;
|
|
181
179
|
open<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(component: ComponentType<C>, config?: IGenericModalConfig<D>): GenericModalRef<D, R, C>;
|
|
@@ -327,9 +325,9 @@ interface IGenericModalView<D = unknown> {
|
|
|
327
325
|
hasBanner: InputSignal<boolean>;
|
|
328
326
|
close: OutputEmitterRef<ModalCloseMode | undefined>;
|
|
329
327
|
swipeableComponents: QueryList<ModalSwipeable>;
|
|
330
|
-
|
|
328
|
+
modalClasses: Signal<{
|
|
331
329
|
[key: string]: boolean;
|
|
332
|
-
}
|
|
330
|
+
}>;
|
|
333
331
|
}
|
|
334
332
|
|
|
335
333
|
declare class ModalCentered<D = unknown> implements IGenericModalView<D> {
|
|
@@ -345,9 +343,12 @@ declare class ModalCentered<D = unknown> implements IGenericModalView<D> {
|
|
|
345
343
|
readonly close: _angular_core.OutputEmitterRef<ModalCloseMode | undefined>;
|
|
346
344
|
readonly onBackdropClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
347
345
|
swipeableComponents: QueryList<ModalSwipeable>;
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
346
|
+
modalClasses: _angular_core.Signal<{
|
|
347
|
+
'centered-modal-content-wrapper': boolean;
|
|
348
|
+
'centered-modal-default-style': boolean;
|
|
349
|
+
'centered-modal-animate-in': boolean;
|
|
350
|
+
'centered-modal-animate-out': boolean;
|
|
351
|
+
}>;
|
|
351
352
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalCentered<any>, never>;
|
|
352
353
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalCentered<any>, "modal-centered", never, { "headerTemplate": { "alias": "headerTemplate"; "required": true; "isSignal": true; }; "footerTemplate": { "alias": "footerTemplate"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "isAnimated": { "alias": "isAnimated"; "required": true; "isSignal": true; }; "isSwipeableModalActive": { "alias": "isSwipeableModalActive"; "required": true; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": true; "isSignal": true; }; "hasDefaultContentWrapperClass": { "alias": "hasDefaultContentWrapperClass"; "required": true; "isSignal": true; }; "hasBanner": { "alias": "hasBanner"; "required": true; "isSignal": true; }; }, { "close": "close"; "onBackdropClick": "onBackdropClick"; }, never, ["*"], true, never>;
|
|
353
354
|
}
|
|
@@ -357,7 +358,6 @@ declare class ModalSide<D = unknown> implements IGenericModalView<D> {
|
|
|
357
358
|
readonly footerTemplate: _angular_core.InputSignal<TemplateRef<any> | null>;
|
|
358
359
|
readonly config: _angular_core.InputSignal<GenericModalConfig<D, any, _filip_mazev_modal.GenericModal<any, undefined>> | undefined>;
|
|
359
360
|
readonly isOpen: _angular_core.InputSignal<boolean>;
|
|
360
|
-
protected renderOpenClass: boolean;
|
|
361
361
|
readonly isAnimated: _angular_core.InputSignal<boolean>;
|
|
362
362
|
readonly isSwipeableModalActive: _angular_core.InputSignal<boolean>;
|
|
363
363
|
readonly animationDuration: _angular_core.InputSignal<number>;
|
|
@@ -365,10 +365,17 @@ declare class ModalSide<D = unknown> implements IGenericModalView<D> {
|
|
|
365
365
|
readonly hasBanner: _angular_core.InputSignal<boolean>;
|
|
366
366
|
readonly close: _angular_core.OutputEmitterRef<ModalCloseMode | undefined>;
|
|
367
367
|
swipeableComponents: QueryList<ModalSwipeable>;
|
|
368
|
+
protected renderOpenClass: _angular_core.WritableSignal<boolean>;
|
|
369
|
+
modalClasses: _angular_core.Signal<{
|
|
370
|
+
'side-modal-content-wrapper': boolean;
|
|
371
|
+
'side-modal-default-style': boolean;
|
|
372
|
+
'with-footer': boolean;
|
|
373
|
+
left: boolean;
|
|
374
|
+
right: boolean;
|
|
375
|
+
'side-modal-animate-in': boolean;
|
|
376
|
+
'side-modal-animate-out': boolean;
|
|
377
|
+
}>;
|
|
368
378
|
constructor();
|
|
369
|
-
get modalClasses(): {
|
|
370
|
-
[key: string]: boolean;
|
|
371
|
-
};
|
|
372
379
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalSide<any>, never>;
|
|
373
380
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalSide<any>, "modal-side", never, { "headerTemplate": { "alias": "headerTemplate"; "required": true; "isSignal": true; }; "footerTemplate": { "alias": "footerTemplate"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "isAnimated": { "alias": "isAnimated"; "required": true; "isSignal": true; }; "isSwipeableModalActive": { "alias": "isSwipeableModalActive"; "required": true; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": true; "isSignal": true; }; "hasDefaultContentWrapperClass": { "alias": "hasDefaultContentWrapperClass"; "required": true; "isSignal": true; }; "hasBanner": { "alias": "hasBanner"; "required": true; "isSignal": true; }; }, { "close": "close"; }, never, ["*"], true, never>;
|
|
374
381
|
}
|