ng-hub-ui-modal 21.0.1 → 22.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# ng-hub-ui-modal
|
|
2
2
|
|
|
3
|
+
[Español](./README.es.md) | **English**
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/ng-hub-ui-modal)
|
|
4
6
|
[](https://opensource.org/licenses/MIT)
|
|
5
7
|
[](https://angular.io)
|
|
@@ -11,18 +13,38 @@
|
|
|
11
13
|
|
|
12
14
|
---
|
|
13
15
|
|
|
16
|
+
## Documentation and Live Examples
|
|
17
|
+
|
|
18
|
+
This package is part of [Hub UI](https://hubui.dev/), a collection of Angular component libraries for standalone apps.
|
|
19
|
+
|
|
20
|
+
- Docs: https://hubui.dev/modal/overview/
|
|
21
|
+
- Live examples: https://hubui.dev/modal/examples/
|
|
22
|
+
- Hub UI: https://hubui.dev/
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
14
26
|
## 🧩 Library Family `ng-hub-ui`
|
|
15
27
|
|
|
16
28
|
This library is part of the **ng-hub-ui** ecosystem:
|
|
17
29
|
|
|
18
|
-
- [**ng-hub-ui-accordion**](https://www.npmjs.com/package/ng-hub-ui-accordion)
|
|
30
|
+
- [**ng-hub-ui-accordion**](https://www.npmjs.com/package/ng-hub-ui-accordion) _(deprecated — use ng-hub-ui-panels)_
|
|
31
|
+
- [**ng-hub-ui-action-sheet**](https://www.npmjs.com/package/ng-hub-ui-action-sheet)
|
|
19
32
|
- [**ng-hub-ui-avatar**](https://www.npmjs.com/package/ng-hub-ui-avatar)
|
|
20
33
|
- [**ng-hub-ui-board**](https://www.npmjs.com/package/ng-hub-ui-board)
|
|
21
34
|
- [**ng-hub-ui-breadcrumbs**](https://www.npmjs.com/package/ng-hub-ui-breadcrumbs)
|
|
22
35
|
- [**ng-hub-ui-calendar**](https://www.npmjs.com/package/ng-hub-ui-calendar)
|
|
36
|
+
- [**ng-hub-ui-dropdown**](https://www.npmjs.com/package/ng-hub-ui-dropdown)
|
|
37
|
+
- [**ng-hub-ui-ds**](https://www.npmjs.com/package/ng-hub-ui-ds)
|
|
38
|
+
- [**ng-hub-ui-forms**](https://www.npmjs.com/package/ng-hub-ui-forms)
|
|
39
|
+
- [**ng-hub-ui-history**](https://www.npmjs.com/package/ng-hub-ui-history)
|
|
40
|
+
- [**ng-hub-ui-milestones**](https://www.npmjs.com/package/ng-hub-ui-milestones)
|
|
23
41
|
- [**➡️ ng-hub-ui-modal**](https://www.npmjs.com/package/ng-hub-ui-modal) ← _you are here_
|
|
42
|
+
- [**ng-hub-ui-nav**](https://www.npmjs.com/package/ng-hub-ui-nav)
|
|
24
43
|
- [**ng-hub-ui-paginable**](https://www.npmjs.com/package/ng-hub-ui-paginable)
|
|
44
|
+
- [**ng-hub-ui-panels**](https://www.npmjs.com/package/ng-hub-ui-panels)
|
|
25
45
|
- [**ng-hub-ui-portal**](https://www.npmjs.com/package/ng-hub-ui-portal)
|
|
46
|
+
- [**ng-hub-ui-skeleton**](https://www.npmjs.com/package/ng-hub-ui-skeleton)
|
|
47
|
+
- [**ng-hub-ui-sortable**](https://www.npmjs.com/package/ng-hub-ui-sortable)
|
|
26
48
|
- [**ng-hub-ui-stepper**](https://www.npmjs.com/package/ng-hub-ui-stepper)
|
|
27
49
|
- [**ng-hub-ui-utils**](https://www.npmjs.com/package/ng-hub-ui-utils)
|
|
28
50
|
|
|
@@ -484,6 +506,7 @@ All options accepted by `HubModal.open()`.
|
|
|
484
506
|
| `keyboard` | `boolean` | `true` | Whether ESC key dismisses the modal. |
|
|
485
507
|
| `scrollable` | `boolean` | `false` | Makes the modal body scroll internally. |
|
|
486
508
|
| `size` | `'sm' \| 'lg' \| 'xl' \| string` | — | Controls the width of the modal dialog. |
|
|
509
|
+
| `variant` | `'primary' \| 'success' \| 'danger' \| 'warning' \| 'info' \| string` | — | Semantic accent for meaningful dialogs: top accent bar + accent-tinted surface, borders and title. Any custom string reads `--hub-sys-color-<variant>` from the host. |
|
|
487
510
|
| `windowClass` | `string` | — | Extra class added to the `hub-modal` host element. |
|
|
488
511
|
| `modalDialogClass` | `string` | — | Extra class added to the `hub-modal__dialog` element. |
|
|
489
512
|
| `backdropClass` | `string` | — | Extra class added to the `hub-modal__backdrop` element. |
|
|
@@ -499,7 +522,7 @@ All options accepted by `HubModal.open()`.
|
|
|
499
522
|
|
|
500
523
|
A subset of `HubModalOptions` that can be updated on an already-open modal via `HubModalRef.update()`.
|
|
501
524
|
|
|
502
|
-
`ariaLabelledBy`, `ariaDescribedBy`, `centered`, `placement`, `fullscreen`, `backdropClass`, `size`, `windowClass`, `modalDialogClass`.
|
|
525
|
+
`ariaLabelledBy`, `ariaDescribedBy`, `centered`, `placement`, `fullscreen`, `backdropClass`, `size`, `variant`, `windowClass`, `modalDialogClass`.
|
|
503
526
|
|
|
504
527
|
---
|
|
505
528
|
|
|
@@ -578,8 +601,8 @@ Full reference: [docs/css-variables-reference.md](./docs/css-variables-reference
|
|
|
578
601
|
| `--hub-modal-border-radius` | `0.5rem` | Dialog corner radius |
|
|
579
602
|
| `--hub-modal-bg` | system surface | Background color |
|
|
580
603
|
| `--hub-modal-color` | system text | Text color |
|
|
581
|
-
| `--hub-modal-
|
|
582
|
-
| `--hub-modal-
|
|
604
|
+
| `--hub-modal-padding-x` | `1rem` | Content horizontal padding|
|
|
605
|
+
| `--hub-modal-padding-y` | `1rem` | Content vertical padding |
|
|
583
606
|
| `--hub-modal-backdrop-opacity` | `0.5` | Backdrop opacity |
|
|
584
607
|
| `--hub-modal-transition` | `0.2s ease-in-out` | Animation speed |
|
|
585
608
|
|
|
@@ -594,6 +617,48 @@ hub-modal-window {
|
|
|
594
617
|
}
|
|
595
618
|
```
|
|
596
619
|
|
|
620
|
+
### Semantic Variants
|
|
621
|
+
|
|
622
|
+
Set `variant` to give a dialog a semantic accent (a destructive confirm, a success notice…). A variant recolours the whole dialog: a top accent bar, an accent-tinted background, accent-tinted borders (outer + header/footer rules) and an accent title.
|
|
623
|
+
|
|
624
|
+
```typescript
|
|
625
|
+
this.modal.open(ConfirmDialogComponent, { variant: 'danger' });
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
The built-in values (`primary` · `success` · `danger` · `warning` · `info`) map to the design-system colours, but **any string is accepted** — the modal reads `--hub-sys-color-<variant>` from the host application. The variant is also updatable via `HubModalRef.update()` / `HubActiveModal.update()`, and can be applied directly with `windowClass: 'hub-modal--<variant>'`.
|
|
629
|
+
|
|
630
|
+
These tokens drive the accent system:
|
|
631
|
+
|
|
632
|
+
| Variable | Default | Description |
|
|
633
|
+
| ------------------------------ | -------------------------------------- | --------------------------------------------------------------------- |
|
|
634
|
+
| `--hub-modal-accent` | `var(--hub-sys-color-primary)` | Base accent colour; a variant re-bases it from `--hub-sys-color-<v>`. |
|
|
635
|
+
| `--hub-modal-accent-subtle` | `color-mix(accent 8%, surface)` | Accent-tinted dialog background used under a variant. |
|
|
636
|
+
| `--hub-modal-accent-border` | `color-mix(accent 35%, surface)` | Accent-tinted border colour (outer + header/footer rules). |
|
|
637
|
+
| `--hub-modal-accent-bar-width` | `var(--hub-ref-space-1, 4px)` | Thickness of the top accent bar. |
|
|
638
|
+
| `--hub-modal-title-color` | neutral (`--hub-modal-color`) | Title colour; a variant re-points it to the accent. |
|
|
639
|
+
|
|
640
|
+
### Sass theme mixin
|
|
641
|
+
|
|
642
|
+
For full one-call theming, use the `hub-modal-theme()` mixin. Every parameter is optional and defaults to `null`, so only the ones you pass are emitted as `--hub-modal-*` overrides; the rest keep their defaults. Apply it to the class you pass as `windowClass` (or to `.hub-modal` to theme every dialog).
|
|
643
|
+
|
|
644
|
+
```scss
|
|
645
|
+
@use 'ng-hub-ui-modal/styles/mixins/modal-theme' as *;
|
|
646
|
+
|
|
647
|
+
.branded-dialog {
|
|
648
|
+
@include hub-modal-theme(
|
|
649
|
+
$accent: var(--hub-sys-color-success),
|
|
650
|
+
$bg: #f6fff9,
|
|
651
|
+
$border-color: #b7e4c7,
|
|
652
|
+
$border-radius: 0.75rem,
|
|
653
|
+
$box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, 0.2)
|
|
654
|
+
);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// this.modal.open(MyDialog, { windowClass: 'branded-dialog' });
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
It covers accent, surfaces, colour, title, borders/radius/shadow, header/body/footer padding & gaps and the backdrop — token-based, with no Bootstrap dependency.
|
|
661
|
+
|
|
597
662
|
### Bootstrap Integration (optional)
|
|
598
663
|
|
|
599
664
|
```scss
|
|
@@ -669,4 +734,4 @@ If this library saves you time, consider supporting further development:
|
|
|
669
734
|
|
|
670
735
|
☕ [Buy me a coffee](https://www.buymeacoffee.com/carlosmorcillo)
|
|
671
736
|
|
|
672
|
-
**MIT License** — © [Carlos Morcillo](https://
|
|
737
|
+
**MIT License** — © [Carlos Morcillo](https://www.carlosmorcillo.com)
|
|
@@ -55,6 +55,7 @@ class HubModalConfig {
|
|
|
55
55
|
keyboard = true;
|
|
56
56
|
scrollable;
|
|
57
57
|
size;
|
|
58
|
+
variant;
|
|
58
59
|
windowClass;
|
|
59
60
|
modalDialogClass;
|
|
60
61
|
backdropClass;
|
|
@@ -69,10 +70,10 @@ class HubModalConfig {
|
|
|
69
70
|
set animation(animation) {
|
|
70
71
|
this._animation = animation;
|
|
71
72
|
}
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
73
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalConfig, providedIn: 'root' });
|
|
74
75
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalConfig, decorators: [{
|
|
76
77
|
type: Injectable,
|
|
77
78
|
args: [{ providedIn: 'root' }]
|
|
78
79
|
}] });
|
|
@@ -87,11 +88,13 @@ class HubModalBackdrop {
|
|
|
87
88
|
/**
|
|
88
89
|
* Determines whether the backdrop should use CSS transitions during its initialization and destruction.
|
|
89
90
|
*/
|
|
90
|
-
animation = input(true,
|
|
91
|
+
animation = input(true, /* @ts-ignore */
|
|
92
|
+
...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
|
|
91
93
|
/**
|
|
92
94
|
* Allows applying a custom CSS class to the backdrop element.
|
|
93
95
|
*/
|
|
94
|
-
backdropClass = input(
|
|
96
|
+
backdropClass = input(/* @ts-ignore */
|
|
97
|
+
...(ngDevMode ? [undefined, { debugName: "backdropClass" }] : /* istanbul ignore next */ []));
|
|
95
98
|
ngOnInit() {
|
|
96
99
|
this._zone.onStable
|
|
97
100
|
.asObservable()
|
|
@@ -116,10 +119,10 @@ class HubModalBackdrop {
|
|
|
116
119
|
runningTransition: 'stop'
|
|
117
120
|
});
|
|
118
121
|
}
|
|
119
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
120
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: HubModalBackdrop, isStandalone: true, selector: "hub-modal-backdrop", inputs: { animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "\"hub-modal__backdrop\" + (backdropClass() ? \" \" + backdropClass() : \"\")", "class.show": "!animation()", "class.fade": "animation()" } }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });
|
|
121
124
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalBackdrop, decorators: [{
|
|
123
126
|
type: Component,
|
|
124
127
|
args: [{
|
|
125
128
|
selector: 'hub-modal-backdrop',
|
|
@@ -171,6 +174,7 @@ const WINDOW_ATTRIBUTES = [
|
|
|
171
174
|
'keyboard',
|
|
172
175
|
'scrollable',
|
|
173
176
|
'size',
|
|
177
|
+
'variant',
|
|
174
178
|
'windowClass',
|
|
175
179
|
'modalDialogClass'
|
|
176
180
|
];
|
|
@@ -335,7 +339,7 @@ class HubModalRef {
|
|
|
335
339
|
// hiding window
|
|
336
340
|
windowTransition$.subscribe(() => {
|
|
337
341
|
const { nativeElement } = this._windowCmptRef.location;
|
|
338
|
-
nativeElement.parentNode
|
|
342
|
+
nativeElement.parentNode?.removeChild(nativeElement);
|
|
339
343
|
this._windowCmptRef.destroy();
|
|
340
344
|
this._contentRef?.viewRef?.destroy();
|
|
341
345
|
this._windowCmptRef = null;
|
|
@@ -345,7 +349,7 @@ class HubModalRef {
|
|
|
345
349
|
backdropTransition$.subscribe(() => {
|
|
346
350
|
if (this._backdropCmptRef) {
|
|
347
351
|
const { nativeElement } = this._backdropCmptRef.location;
|
|
348
|
-
nativeElement.parentNode
|
|
352
|
+
nativeElement.parentNode?.removeChild(nativeElement);
|
|
349
353
|
this._backdropCmptRef.destroy();
|
|
350
354
|
this._backdropCmptRef = null;
|
|
351
355
|
}
|
|
@@ -376,58 +380,81 @@ class HubModalWindow {
|
|
|
376
380
|
_closed$ = new Subject();
|
|
377
381
|
_elWithFocus = null; // element that is focused prior to modal opening
|
|
378
382
|
_dialogEl = viewChild.required('dialog');
|
|
379
|
-
_headerContainerEl = viewChild('headerContainer',
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
+
_headerContainerEl = viewChild('headerContainer', /* @ts-ignore */
|
|
384
|
+
...(ngDevMode ? [{ debugName: "_headerContainerEl" }] : /* istanbul ignore next */ []));
|
|
385
|
+
_bodyContainerEl = viewChild('bodyContainer', /* @ts-ignore */
|
|
386
|
+
...(ngDevMode ? [{ debugName: "_bodyContainerEl" }] : /* istanbul ignore next */ []));
|
|
387
|
+
_footerContainerEl = viewChild('footerContainer', /* @ts-ignore */
|
|
388
|
+
...(ngDevMode ? [{ debugName: "_footerContainerEl" }] : /* istanbul ignore next */ []));
|
|
389
|
+
_closeButtonEl = viewChild('closeButton', /* @ts-ignore */
|
|
390
|
+
...(ngDevMode ? [{ debugName: "_closeButtonEl" }] : /* istanbul ignore next */ []));
|
|
383
391
|
/**
|
|
384
392
|
* Determines whether the modal window should animate its entry and exit.
|
|
385
393
|
*/
|
|
386
|
-
animation = input(true,
|
|
394
|
+
animation = input(true, /* @ts-ignore */
|
|
395
|
+
...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
|
|
387
396
|
/**
|
|
388
397
|
* Identifier to apply to the `aria-labelledby` attribute of the modal.
|
|
389
398
|
*/
|
|
390
|
-
ariaLabelledBy = input(
|
|
399
|
+
ariaLabelledBy = input(/* @ts-ignore */
|
|
400
|
+
...(ngDevMode ? [undefined, { debugName: "ariaLabelledBy" }] : /* istanbul ignore next */ []));
|
|
391
401
|
/**
|
|
392
402
|
* Identifier to apply to the `aria-describedby` attribute of the modal.
|
|
393
403
|
*/
|
|
394
|
-
ariaDescribedBy = input(
|
|
404
|
+
ariaDescribedBy = input(/* @ts-ignore */
|
|
405
|
+
...(ngDevMode ? [undefined, { debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []));
|
|
395
406
|
/**
|
|
396
407
|
* Configures the presence and behavior of the modal backdrop (`true`, `false`, or `'static'`).
|
|
397
408
|
*/
|
|
398
|
-
backdrop = input(true,
|
|
409
|
+
backdrop = input(true, /* @ts-ignore */
|
|
410
|
+
...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
|
|
399
411
|
/**
|
|
400
412
|
* If `true`, the modal dialog will be centered vertically.
|
|
401
413
|
*/
|
|
402
|
-
centered = input(
|
|
414
|
+
centered = input(/* @ts-ignore */
|
|
415
|
+
...(ngDevMode ? [undefined, { debugName: "centered" }] : /* istanbul ignore next */ []));
|
|
403
416
|
/**
|
|
404
417
|
* Specifies the modal placement inside the viewport.
|
|
405
418
|
*/
|
|
406
|
-
placement = input(HubModalPlacement.Center,
|
|
419
|
+
placement = input(HubModalPlacement.Center, /* @ts-ignore */
|
|
420
|
+
...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
407
421
|
/**
|
|
408
422
|
* Enables fullscreen mode for the modal, either always (`true`) or below specific breakpoints.
|
|
409
423
|
*/
|
|
410
|
-
fullscreen = input(
|
|
424
|
+
fullscreen = input(/* @ts-ignore */
|
|
425
|
+
...(ngDevMode ? [undefined, { debugName: "fullscreen" }] : /* istanbul ignore next */ []));
|
|
411
426
|
/**
|
|
412
427
|
* If `true`, pressing the ESC key will close the modal.
|
|
413
428
|
*/
|
|
414
|
-
keyboard = input(true,
|
|
429
|
+
keyboard = input(true, /* @ts-ignore */
|
|
430
|
+
...(ngDevMode ? [{ debugName: "keyboard" }] : /* istanbul ignore next */ []));
|
|
415
431
|
/**
|
|
416
432
|
* If `true`, the modal content will be scrollable when it exceeds the viewport height.
|
|
417
433
|
*/
|
|
418
|
-
scrollable = input(
|
|
434
|
+
scrollable = input(/* @ts-ignore */
|
|
435
|
+
...(ngDevMode ? [undefined, { debugName: "scrollable" }] : /* istanbul ignore next */ []));
|
|
419
436
|
/**
|
|
420
437
|
* Specifies the size of the modal (`'sm'`, `'lg'`, `'xl'`, etc.).
|
|
421
438
|
*/
|
|
422
|
-
size = input(
|
|
439
|
+
size = input(/* @ts-ignore */
|
|
440
|
+
...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
|
|
441
|
+
/**
|
|
442
|
+
* Semantic accent of the modal (`'primary'`, `'success'`, `'danger'`,
|
|
443
|
+
* `'warning'`, `'info'`, or any custom token name). Applies the
|
|
444
|
+
* `hub-modal--<variant>` class, which paints an accent top bar on the dialog.
|
|
445
|
+
*/
|
|
446
|
+
variant = input(/* @ts-ignore */
|
|
447
|
+
...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
423
448
|
/**
|
|
424
449
|
* A custom CSS class to append to the modal window wrapper.
|
|
425
450
|
*/
|
|
426
|
-
windowClass = input(
|
|
451
|
+
windowClass = input(/* @ts-ignore */
|
|
452
|
+
...(ngDevMode ? [undefined, { debugName: "windowClass" }] : /* istanbul ignore next */ []));
|
|
427
453
|
/**
|
|
428
454
|
* A custom CSS class to append to the inner modal dialog element.
|
|
429
455
|
*/
|
|
430
|
-
modalDialogClass = input(
|
|
456
|
+
modalDialogClass = input(/* @ts-ignore */
|
|
457
|
+
...(ngDevMode ? [undefined, { debugName: "modalDialogClass" }] : /* istanbul ignore next */ []));
|
|
431
458
|
singleContent;
|
|
432
459
|
/**
|
|
433
460
|
* Emits when the user dismisses the modal (e.g. via ESC, backdrop click, or custom close buttons).
|
|
@@ -663,8 +690,8 @@ class HubModalWindow {
|
|
|
663
690
|
}
|
|
664
691
|
});
|
|
665
692
|
}
|
|
666
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
667
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
693
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
694
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: HubModalWindow, isStandalone: true, selector: "hub-modal-window", inputs: { animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "ariaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fullscreen: { classPropertyName: "fullscreen", publicName: "fullscreen", isSignal: true, isRequired: false, transformFunction: null }, keyboard: { classPropertyName: "keyboard", publicName: "keyboard", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, windowClass: { classPropertyName: "windowClass", publicName: "windowClass", isSignal: true, isRequired: false, transformFunction: null }, modalDialogClass: { classPropertyName: "modalDialogClass", publicName: "modalDialogClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissEvent: "dismiss" }, host: { attributes: { "role": "dialog", "tabindex": "-1" }, properties: { "class": "\"hub-modal\" + hostPlacementClass + (variant() ? \" hub-modal--\" + variant() : \"\") + (windowClass() ? \" \" + windowClass() : \"\")", "class.fade": "animation()", "attr.aria-modal": "true", "attr.aria-labelledby": "ariaLabelledBy()", "attr.aria-describedby": "ariaDescribedBy()" } }, viewQueries: [{ propertyName: "_dialogEl", first: true, predicate: ["dialog"], descendants: true, isSignal: true }, { propertyName: "_headerContainerEl", first: true, predicate: ["headerContainer"], descendants: true, isSignal: true }, { propertyName: "_bodyContainerEl", first: true, predicate: ["bodyContainer"], descendants: true, isSignal: true }, { propertyName: "_footerContainerEl", first: true, predicate: ["footerContainer"], descendants: true, isSignal: true }, { propertyName: "_closeButtonEl", first: true, predicate: ["closeButton"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
668
695
|
<div
|
|
669
696
|
#dialog
|
|
670
697
|
[class]="
|
|
@@ -696,12 +723,12 @@ class HubModalWindow {
|
|
|
696
723
|
}
|
|
697
724
|
</div>
|
|
698
725
|
</div>
|
|
699
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";body.hub-modal-open{overflow:hidden}.hub-modal{--hub-modal-z-index: var(--hub-sys-zindex-modal, 1055);--hub-modal-width: auto;--hub-modal-max-width: 500px;--hub-modal-margin-y: 1.75rem;--hub-modal-margin-x: auto;--hub-modal-margin-top: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-right: var(--hub-modal-margin-x, auto);--hub-modal-margin-bottom: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-left: var(--hub-modal-margin-x, auto);--hub-modal-margin-block: calc( var(--hub-modal-margin-top, 1.75rem) + var(--hub-modal-margin-bottom, 1.75rem) );--hub-modal-margin: var(--hub-modal-margin-top) var(--hub-modal-margin-right) var(--hub-modal-margin-bottom) var(--hub-modal-margin-left);--hub-modal-placement-start-margin-top: var( --hub-modal-margin-top, 1.75rem );--hub-modal-placement-start-margin-right: auto;--hub-modal-placement-start-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-start-margin-left: 0;--hub-modal-placement-start-margin-block: calc( var(--hub-modal-placement-start-margin-top, 1.75rem) + var(--hub-modal-placement-start-margin-bottom, 1.75rem) );--hub-modal-placement-start-margin: var( --hub-modal-placement-start-margin-top ) var(--hub-modal-placement-start-margin-right) var(--hub-modal-placement-start-margin-bottom) var(--hub-modal-placement-start-margin-left);--hub-modal-placement-end-margin-top: var(--hub-modal-margin-top, 1.75rem);--hub-modal-placement-end-margin-right: 0;--hub-modal-placement-end-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-end-margin-left: auto;--hub-modal-placement-end-margin-block: calc( var(--hub-modal-placement-end-margin-top, 1.75rem) + var(--hub-modal-placement-end-margin-bottom, 1.75rem) );--hub-modal-placement-end-margin: var(--hub-modal-placement-end-margin-top) var(--hub-modal-placement-end-margin-right) var(--hub-modal-placement-end-margin-bottom) var(--hub-modal-placement-end-margin-left);--hub-modal-placement-top-margin-top: 0;--hub-modal-placement-top-margin-right: auto;--hub-modal-placement-top-margin-bottom: 0;--hub-modal-placement-top-margin-left: auto;--hub-modal-placement-top-margin-block: calc( var(--hub-modal-placement-top-margin-top, 0px) + var(--hub-modal-placement-top-margin-bottom, 0px) );--hub-modal-placement-top-margin: var(--hub-modal-placement-top-margin-top) var(--hub-modal-placement-top-margin-right) var(--hub-modal-placement-top-margin-bottom) var(--hub-modal-placement-top-margin-left);--hub-modal-placement-bottom-margin-top: 0;--hub-modal-placement-bottom-margin-right: auto;--hub-modal-placement-bottom-margin-bottom: 0;--hub-modal-placement-bottom-margin-left: auto;--hub-modal-placement-bottom-margin-block: calc( var(--hub-modal-placement-bottom-margin-top, 0px) + var(--hub-modal-placement-bottom-margin-bottom, 0px) );--hub-modal-placement-bottom-margin: var( --hub-modal-placement-bottom-margin-top ) var(--hub-modal-placement-bottom-margin-right) var(--hub-modal-placement-bottom-margin-bottom) var(--hub-modal-placement-bottom-margin-left);--hub-modal-color: var(--hub-sys-text-primary, #212529);--hub-modal-bg: var(--hub-sys-surface-page, #ffffff);--hub-modal-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-border-width: var(--hub-ref-border-width, 1px);--hub-modal-border-radius: var(--hub-ref-radius-lg, .5rem);--hub-modal-placement-start-border-radius: 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0;--hub-modal-placement-end-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-top-border-radius: 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-bottom-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0 0;--hub-modal-inner-border-radius: calc( var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var( --hub-modal-border-width, var(--hub-ref-border-width, 1px) ) );--hub-modal-box-shadow: var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175));--hub-modal-header-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-header-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-header-gap: var(--hub-ref-space-2, .5rem);--hub-modal-header-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-header-border-width: var(--hub-ref-border-width, 1px);--hub-modal-title-font-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-title-font-weight: 500;--hub-modal-title-line-height: var(--hub-ref-line-height-base, 1.5);--hub-modal-title-margin: 0;--hub-modal-body-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-body-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-footer-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-footer-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-footer-gap: var(--hub-ref-space-2, .5rem);--hub-modal-footer-bg: var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));--hub-modal-footer-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-footer-border-width: var(--hub-ref-border-width, 1px);--hub-modal-close-color: var(--hub-sys-text-primary, #212529);--hub-modal-close-size: 1.25rem;--hub-modal-close-line-height: 1;--hub-modal-close-padding: 0;--hub-modal-close-opacity: .5;--hub-modal-close-hover-opacity: .75;--hub-modal-backdrop-bg: var(--hub-ref-color-black, #000000);--hub-modal-backdrop-opacity: var(--hub-sys-opacity-50, .5);--hub-modal-backdrop-opacity-hidden: var(--hub-sys-opacity-0, 0);--hub-modal-backdrop-transition: opacity .15s linear;--hub-modal-fade-transform: translate(0, -50px);--hub-modal-show-transform: none;--hub-modal-transition: var(--hub-sys-transition-base, all .2s ease-in-out);--hub-modal-scale-transform: scale(1.02);--hub-modal-backdrop-z-index: calc(var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055)) - 1);position:fixed;inset:0;display:block;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0;pointer-events:auto;z-index:var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529))}.hub-modal--placement-top,.hub-modal--placement-bottom{display:flex;justify-content:center}.hub-modal--placement-top{align-items:flex-start}.hub-modal--placement-bottom{align-items:flex-end}.hub-modal__dialog{position:relative;width:var(--hub-modal-width, auto);max-width:var(--hub-modal-max-width, 500px);margin:var(--hub-modal-margin, 1.75rem auto);pointer-events:none}.hub-modal__dialog--sm{--hub-modal-max-width: 300px}.hub-modal__dialog--lg{--hub-modal-max-width: 800px}.hub-modal__dialog--xl{--hub-modal-max-width: 1140px}.hub-modal__dialog--centered,.hub-modal__dialog--centered-vertical{display:flex;align-items:center;min-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal__dialog--placement-start{margin:var(--hub-modal-placement-start-margin, var(--hub-modal-margin-top, 1.75rem) auto var(--hub-modal-margin-bottom, 1.75rem) 0);--hub-modal-fade-transform: translateX(-100%)}.hub-modal__dialog--placement-end{margin:var(--hub-modal-placement-end-margin, var(--hub-modal-margin-top, 1.75rem) 0 var(--hub-modal-margin-bottom, 1.75rem) auto);--hub-modal-fade-transform: translateX(100%)}.hub-modal__dialog--placement-top{margin:var(--hub-modal-placement-top-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(-100%)}.hub-modal__dialog--placement-bottom{margin:var(--hub-modal-placement-bottom-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(100%)}.hub-modal__dialog--scrollable{display:flex;max-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-top.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-top-margin-block, 0px))}.hub-modal .hub-modal__dialog--placement-bottom.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-bottom-margin-block, 0px))}.hub-modal__content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;outline:0;color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));border:var(--hub-modal-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-border-color, var(--hub-sys-border-color-default, #dee2e6));border-radius:var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));box-shadow:var(--hub-modal-box-shadow, var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175)))}.hub-modal__dialog--scrollable .hub-modal__content{max-height:100%;overflow:hidden}.hub-modal__dialog--placement-start .hub-modal__content{border-radius:var(--hub-modal-placement-start-border-radius)}.hub-modal__dialog--placement-end .hub-modal__content{border-radius:var(--hub-modal-placement-end-border-radius)}.hub-modal__dialog--placement-top .hub-modal__content{border-radius:var(--hub-modal-placement-top-border-radius)}.hub-modal__dialog--placement-bottom .hub-modal__content{border-radius:var(--hub-modal-placement-bottom-border-radius)}.hub-modal__header{display:flex;align-items:center;gap:var(--hub-modal-header-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-header-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-header-padding-x, var(--hub-ref-space-3, 1rem));border-bottom:var(--hub-modal-header-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-header-border-color, var(--hub-sys-border-color-default, #dee2e6));border-top-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-top-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__header .modal-title{font-size:var(--hub-modal-title-font-size, var(--hub-ref-font-size-lg, 1.25rem));font-weight:var(--hub-modal-title-font-weight, 500);line-height:var(--hub-modal-title-line-height, var(--hub-ref-line-height-base, 1.5));margin:var(--hub-modal-title-margin, 0)}.hub-modal__body{position:relative;flex:1 1 auto;padding:var(--hub-modal-body-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-body-padding-x, var(--hub-ref-space-3, 1rem))}.hub-modal__dialog--scrollable .hub-modal__body{overflow-y:auto}.hub-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--hub-modal-footer-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-footer-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-footer-padding-x, var(--hub-ref-space-3, 1rem));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-footer-bg, var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff)));border-top:var(--hub-modal-footer-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-footer-border-color, var(--hub-sys-border-color-default, #dee2e6));border-bottom-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-bottom-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__close{margin-left:auto;padding:var(--hub-modal-close-padding, 0);font-size:var(--hub-modal-close-size, 1.25rem);line-height:var(--hub-modal-close-line-height, 1);background:transparent;border:0;cursor:pointer;color:var(--hub-modal-close-color, var(--hub-sys-text-primary, #212529));opacity:var(--hub-modal-close-opacity, .5)}.hub-modal__close:before{content:\"\\d7\"}.hub-modal__close:hover,.hub-modal__close:focus{opacity:var(--hub-modal-close-hover-opacity, .75)}.hub-modal.fade .hub-modal__dialog{transform:var(--hub-modal-fade-transform, translate(0, -50px));transition:var(--hub-modal-transition, var(--hub-sys-transition-base, all .2s ease-in-out))}.hub-modal.show .hub-modal__dialog{transform:var(--hub-modal-show-transform, none)}.hub-modal.hub-modal--static .hub-modal__dialog{transform:var(--hub-modal-scale-transform, scale(1.02))}.hub-modal__dialog--fullscreen{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen .hub-modal__body{overflow-y:auto}@media(max-width:575.98px){.hub-modal__dialog--fullscreen-sm-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__body{overflow-y:auto}}@media(max-width:767.98px){.hub-modal__dialog--fullscreen-md-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__body{overflow-y:auto}}@media(max-width:991.98px){.hub-modal__dialog--fullscreen-lg-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__body{overflow-y:auto}}@media(max-width:1199.98px){.hub-modal__dialog--fullscreen-xl-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__body{overflow-y:auto}}@media(max-width:1399.98px){.hub-modal__dialog--fullscreen-xxl-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__body{overflow-y:auto}}.hub-modal__backdrop{position:fixed;inset:0;opacity:var(--hub-modal-backdrop-opacity-hidden, var(--hub-sys-opacity-0, 0));z-index:var(--hub-modal-backdrop-z-index, 1054);background-color:var(--hub-modal-backdrop-bg, var(--hub-ref-color-black, #000000));pointer-events:none}.hub-modal__backdrop.fade{transition:var(--hub-modal-backdrop-transition, opacity .15s linear)}.hub-modal__backdrop.show{opacity:var(--hub-modal-backdrop-opacity, var(--hub-sys-opacity-50, .5))}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
726
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";body.hub-modal-open{overflow:hidden}.hub-modal{--hub-modal-z-index: var(--hub-sys-zindex-modal, 1055);--hub-modal-accent: var(--hub-sys-color-primary, #0d6efd);--hub-modal-accent-subtle: color-mix(in srgb, var(--hub-modal-accent) 8%, var(--hub-sys-surface-page, #ffffff));--hub-modal-accent-border: color-mix(in srgb, var(--hub-modal-accent) 35%, var(--hub-sys-surface-page, #ffffff));--hub-modal-accent-bar-width: var(--hub-ref-space-1, .25rem);--hub-modal-width: auto;--hub-modal-max-width: 500px;--hub-modal-margin-y: 1.75rem;--hub-modal-margin-x: auto;--hub-modal-margin-top: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-right: var(--hub-modal-margin-x, auto);--hub-modal-margin-bottom: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-left: var(--hub-modal-margin-x, auto);--hub-modal-margin-block: calc( var(--hub-modal-margin-top, 1.75rem) + var(--hub-modal-margin-bottom, 1.75rem) );--hub-modal-margin: var(--hub-modal-margin-top) var(--hub-modal-margin-right) var(--hub-modal-margin-bottom) var(--hub-modal-margin-left);--hub-modal-placement-start-margin-top: var( --hub-modal-margin-top, 1.75rem );--hub-modal-placement-start-margin-right: auto;--hub-modal-placement-start-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-start-margin-left: 0;--hub-modal-placement-start-margin-block: calc( var(--hub-modal-placement-start-margin-top, 1.75rem) + var(--hub-modal-placement-start-margin-bottom, 1.75rem) );--hub-modal-placement-start-margin: var( --hub-modal-placement-start-margin-top ) var(--hub-modal-placement-start-margin-right) var(--hub-modal-placement-start-margin-bottom) var(--hub-modal-placement-start-margin-left);--hub-modal-placement-end-margin-top: var(--hub-modal-margin-top, 1.75rem);--hub-modal-placement-end-margin-right: 0;--hub-modal-placement-end-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-end-margin-left: auto;--hub-modal-placement-end-margin-block: calc( var(--hub-modal-placement-end-margin-top, 1.75rem) + var(--hub-modal-placement-end-margin-bottom, 1.75rem) );--hub-modal-placement-end-margin: var(--hub-modal-placement-end-margin-top) var(--hub-modal-placement-end-margin-right) var(--hub-modal-placement-end-margin-bottom) var(--hub-modal-placement-end-margin-left);--hub-modal-placement-top-margin-top: 0;--hub-modal-placement-top-margin-right: auto;--hub-modal-placement-top-margin-bottom: 0;--hub-modal-placement-top-margin-left: auto;--hub-modal-placement-top-margin-block: calc( var(--hub-modal-placement-top-margin-top, 0px) + var(--hub-modal-placement-top-margin-bottom, 0px) );--hub-modal-placement-top-margin: var(--hub-modal-placement-top-margin-top) var(--hub-modal-placement-top-margin-right) var(--hub-modal-placement-top-margin-bottom) var(--hub-modal-placement-top-margin-left);--hub-modal-placement-bottom-margin-top: 0;--hub-modal-placement-bottom-margin-right: auto;--hub-modal-placement-bottom-margin-bottom: 0;--hub-modal-placement-bottom-margin-left: auto;--hub-modal-placement-bottom-margin-block: calc( var(--hub-modal-placement-bottom-margin-top, 0px) + var(--hub-modal-placement-bottom-margin-bottom, 0px) );--hub-modal-placement-bottom-margin: var( --hub-modal-placement-bottom-margin-top ) var(--hub-modal-placement-bottom-margin-right) var(--hub-modal-placement-bottom-margin-bottom) var(--hub-modal-placement-bottom-margin-left);--hub-modal-color: var(--hub-sys-text-primary, #212529);--hub-modal-bg: var(--hub-sys-surface-page, #ffffff);--hub-modal-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-border-width: var(--hub-ref-border-width, 1px);--hub-modal-border-radius: var(--hub-ref-radius-lg, .5rem);--hub-modal-placement-start-border-radius: 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0;--hub-modal-placement-end-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-top-border-radius: 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-bottom-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0 0;--hub-modal-inner-border-radius: calc( var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var( --hub-modal-border-width, var(--hub-ref-border-width, 1px) ) );--hub-modal-box-shadow: var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175));--hub-modal-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-header-padding-x: var(--hub-modal-padding-x);--hub-modal-header-padding-y: var(--hub-modal-padding-y);--hub-modal-header-gap: var(--hub-ref-space-2, .5rem);--hub-modal-header-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-header-border-width: var(--hub-ref-border-width, 1px);--hub-modal-title-font-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-title-font-weight: var(--hub-ref-font-weight-medium, 500);--hub-modal-title-line-height: var(--hub-ref-line-height-base, 1.5);--hub-modal-title-margin-x: 0;--hub-modal-title-margin-y: 0;--hub-modal-title-color: var(--hub-modal-color, var(--hub-sys-text-primary, #212529));--hub-modal-body-padding-x: var(--hub-modal-padding-x);--hub-modal-body-padding-y: var(--hub-modal-padding-y);--hub-modal-footer-padding-x: var(--hub-modal-padding-x);--hub-modal-footer-padding-y: var(--hub-modal-padding-y);--hub-modal-footer-gap: var(--hub-ref-space-2, .5rem);--hub-modal-footer-bg: var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));--hub-modal-footer-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-footer-border-width: var(--hub-ref-border-width, 1px);--hub-modal-close-color: var(--hub-sys-text-primary, #212529);--hub-modal-close-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-close-line-height: 1;--hub-modal-close-padding-x: 0;--hub-modal-close-padding-y: 0;--hub-modal-close-opacity: .5;--hub-modal-close-hover-opacity: .75;--hub-modal-backdrop-bg: var(--hub-ref-color-black, #000000);--hub-modal-backdrop-opacity: var(--hub-sys-opacity-50, .5);--hub-modal-backdrop-opacity-hidden: var(--hub-sys-opacity-0, 0);--hub-modal-backdrop-transition: opacity .15s linear;--hub-modal-fade-transform: translate(0, -50px);--hub-modal-show-transform: none;--hub-modal-transition: var(--hub-sys-transition-base, all .2s ease-in-out);--hub-modal-scale-transform: scale(1.02);--hub-modal-backdrop-z-index: calc(var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055)) - 1);position:fixed;inset:0;display:block;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0;pointer-events:auto;z-index:var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529))}.hub-modal--placement-top,.hub-modal--placement-bottom{display:flex;justify-content:center}.hub-modal--placement-top{align-items:flex-start}.hub-modal--placement-bottom{align-items:flex-end}.hub-modal__dialog{position:relative;width:var(--hub-modal-width, auto);max-width:var(--hub-modal-max-width, 500px);margin:var(--hub-modal-margin, 1.75rem auto);pointer-events:none}.hub-modal__dialog--sm{--hub-modal-max-width: 300px}.hub-modal__dialog--lg{--hub-modal-max-width: 800px}.hub-modal__dialog--xl{--hub-modal-max-width: 1140px}.hub-modal__dialog--centered,.hub-modal__dialog--centered-vertical{display:flex;align-items:center;min-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal__dialog--placement-start{margin:var(--hub-modal-placement-start-margin, var(--hub-modal-margin-top, 1.75rem) auto var(--hub-modal-margin-bottom, 1.75rem) 0);--hub-modal-fade-transform: translateX(-100%)}.hub-modal__dialog--placement-end{margin:var(--hub-modal-placement-end-margin, var(--hub-modal-margin-top, 1.75rem) 0 var(--hub-modal-margin-bottom, 1.75rem) auto);--hub-modal-fade-transform: translateX(100%)}.hub-modal__dialog--placement-top{margin:var(--hub-modal-placement-top-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(-100%)}.hub-modal__dialog--placement-bottom{margin:var(--hub-modal-placement-bottom-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(100%)}.hub-modal__dialog--scrollable{display:flex;max-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-top.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-top-margin-block, 0px))}.hub-modal .hub-modal__dialog--placement-bottom.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-bottom-margin-block, 0px))}.hub-modal__content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;outline:0;color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));border:var(--hub-modal-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-border-color, var(--hub-sys-border-color-default, #dee2e6));border-radius:var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));box-shadow:var(--hub-modal-box-shadow, var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175)))}.hub-modal__dialog--scrollable .hub-modal__content{max-height:100%;overflow:hidden}.hub-modal__dialog--placement-start .hub-modal__content{border-radius:var(--hub-modal-placement-start-border-radius)}.hub-modal__dialog--placement-end .hub-modal__content{border-radius:var(--hub-modal-placement-end-border-radius)}.hub-modal__dialog--placement-top .hub-modal__content{border-radius:var(--hub-modal-placement-top-border-radius)}.hub-modal__dialog--placement-bottom .hub-modal__content{border-radius:var(--hub-modal-placement-bottom-border-radius)}.hub-modal--primary{--hub-modal-accent: var(--hub-sys-color-primary, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--primary .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--success{--hub-modal-accent: var(--hub-sys-color-success, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--success .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--danger{--hub-modal-accent: var(--hub-sys-color-danger, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--danger .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--warning{--hub-modal-accent: var(--hub-sys-color-warning, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--warning .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--info{--hub-modal-accent: var(--hub-sys-color-info, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--info .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal__header{display:flex;align-items:center;gap:var(--hub-modal-header-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-header-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-header-padding-x, var(--hub-ref-space-3, 1rem));border-bottom:var(--hub-modal-header-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-header-border-color, var(--hub-sys-border-color-default, #dee2e6));border-top-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-top-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__header .modal-title{color:var(--hub-modal-title-color, var(--hub-modal-color, var(--hub-sys-text-primary, #212529)));font-size:var(--hub-modal-title-font-size, var(--hub-ref-font-size-lg, 1.25rem));font-weight:var(--hub-modal-title-font-weight, var(--hub-ref-font-weight-medium, 500));line-height:var(--hub-modal-title-line-height, var(--hub-ref-line-height-base, 1.5));margin:var(--hub-modal-title-margin-y, 0) var(--hub-modal-title-margin-x, 0)}.hub-modal__body{position:relative;flex:1 1 auto;padding:var(--hub-modal-body-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-body-padding-x, var(--hub-ref-space-3, 1rem))}.hub-modal__dialog--scrollable .hub-modal__body{overflow-y:auto}.hub-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--hub-modal-footer-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-footer-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-footer-padding-x, var(--hub-ref-space-3, 1rem));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-footer-bg, var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff)));border-top:var(--hub-modal-footer-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-footer-border-color, var(--hub-sys-border-color-default, #dee2e6));border-bottom-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-bottom-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__close{margin-left:auto;padding:var(--hub-modal-close-padding-y, 0) var(--hub-modal-close-padding-x, 0);font-size:var(--hub-modal-close-size, var(--hub-ref-font-size-lg, 1.25rem));line-height:var(--hub-modal-close-line-height, 1);background:transparent;border:0;cursor:pointer;color:var(--hub-modal-close-color, var(--hub-sys-text-primary, #212529));opacity:var(--hub-modal-close-opacity, .5)}.hub-modal__close:before{content:\"\\d7\"}.hub-modal__close:hover,.hub-modal__close:focus{opacity:var(--hub-modal-close-hover-opacity, .75)}.hub-modal.fade .hub-modal__dialog{transform:var(--hub-modal-fade-transform, translate(0, -50px));transition:var(--hub-modal-transition, var(--hub-sys-transition-base, all .2s ease-in-out))}.hub-modal.show .hub-modal__dialog{transform:var(--hub-modal-show-transform, none)}.hub-modal.hub-modal--static .hub-modal__dialog{transform:var(--hub-modal-scale-transform, scale(1.02))}.hub-modal__dialog--fullscreen{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}@media(max-width:575.98px){.hub-modal__dialog--fullscreen-sm-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-sm-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:767.98px){.hub-modal__dialog--fullscreen-md-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-md-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:991.98px){.hub-modal__dialog--fullscreen-lg-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-lg-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:1199.98px){.hub-modal__dialog--fullscreen-xl-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-xl-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:1399.98px){.hub-modal__dialog--fullscreen-xxl-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}.hub-modal__backdrop{position:fixed;inset:0;opacity:var(--hub-modal-backdrop-opacity-hidden, var(--hub-sys-opacity-0, 0));z-index:var(--hub-modal-backdrop-z-index, 1054);background-color:var(--hub-modal-backdrop-bg, var(--hub-ref-color-black, #000000));pointer-events:none}.hub-modal__backdrop.fade{transition:var(--hub-modal-backdrop-transition, opacity .15s linear)}.hub-modal__backdrop.show{opacity:var(--hub-modal-backdrop-opacity, var(--hub-sys-opacity-50, .5))}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
700
727
|
}
|
|
701
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
728
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalWindow, decorators: [{
|
|
702
729
|
type: Component,
|
|
703
730
|
args: [{ selector: 'hub-modal-window', imports: [], host: {
|
|
704
|
-
'[class]': '"hub-modal" + hostPlacementClass + (windowClass() ? " " + windowClass() : "")',
|
|
731
|
+
'[class]': '"hub-modal" + hostPlacementClass + (variant() ? " hub-modal--" + variant() : "") + (windowClass() ? " " + windowClass() : "")',
|
|
705
732
|
'[class.fade]': 'animation()',
|
|
706
733
|
role: 'dialog',
|
|
707
734
|
tabindex: '-1',
|
|
@@ -740,8 +767,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
740
767
|
}
|
|
741
768
|
</div>
|
|
742
769
|
</div>
|
|
743
|
-
`, encapsulation: ViewEncapsulation.None, styles: ["@charset \"UTF-8\";body.hub-modal-open{overflow:hidden}.hub-modal{--hub-modal-z-index: var(--hub-sys-zindex-modal, 1055);--hub-modal-width: auto;--hub-modal-max-width: 500px;--hub-modal-margin-y: 1.75rem;--hub-modal-margin-x: auto;--hub-modal-margin-top: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-right: var(--hub-modal-margin-x, auto);--hub-modal-margin-bottom: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-left: var(--hub-modal-margin-x, auto);--hub-modal-margin-block: calc( var(--hub-modal-margin-top, 1.75rem) + var(--hub-modal-margin-bottom, 1.75rem) );--hub-modal-margin: var(--hub-modal-margin-top) var(--hub-modal-margin-right) var(--hub-modal-margin-bottom) var(--hub-modal-margin-left);--hub-modal-placement-start-margin-top: var( --hub-modal-margin-top, 1.75rem );--hub-modal-placement-start-margin-right: auto;--hub-modal-placement-start-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-start-margin-left: 0;--hub-modal-placement-start-margin-block: calc( var(--hub-modal-placement-start-margin-top, 1.75rem) + var(--hub-modal-placement-start-margin-bottom, 1.75rem) );--hub-modal-placement-start-margin: var( --hub-modal-placement-start-margin-top ) var(--hub-modal-placement-start-margin-right) var(--hub-modal-placement-start-margin-bottom) var(--hub-modal-placement-start-margin-left);--hub-modal-placement-end-margin-top: var(--hub-modal-margin-top, 1.75rem);--hub-modal-placement-end-margin-right: 0;--hub-modal-placement-end-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-end-margin-left: auto;--hub-modal-placement-end-margin-block: calc( var(--hub-modal-placement-end-margin-top, 1.75rem) + var(--hub-modal-placement-end-margin-bottom, 1.75rem) );--hub-modal-placement-end-margin: var(--hub-modal-placement-end-margin-top) var(--hub-modal-placement-end-margin-right) var(--hub-modal-placement-end-margin-bottom) var(--hub-modal-placement-end-margin-left);--hub-modal-placement-top-margin-top: 0;--hub-modal-placement-top-margin-right: auto;--hub-modal-placement-top-margin-bottom: 0;--hub-modal-placement-top-margin-left: auto;--hub-modal-placement-top-margin-block: calc( var(--hub-modal-placement-top-margin-top, 0px) + var(--hub-modal-placement-top-margin-bottom, 0px) );--hub-modal-placement-top-margin: var(--hub-modal-placement-top-margin-top) var(--hub-modal-placement-top-margin-right) var(--hub-modal-placement-top-margin-bottom) var(--hub-modal-placement-top-margin-left);--hub-modal-placement-bottom-margin-top: 0;--hub-modal-placement-bottom-margin-right: auto;--hub-modal-placement-bottom-margin-bottom: 0;--hub-modal-placement-bottom-margin-left: auto;--hub-modal-placement-bottom-margin-block: calc( var(--hub-modal-placement-bottom-margin-top, 0px) + var(--hub-modal-placement-bottom-margin-bottom, 0px) );--hub-modal-placement-bottom-margin: var( --hub-modal-placement-bottom-margin-top ) var(--hub-modal-placement-bottom-margin-right) var(--hub-modal-placement-bottom-margin-bottom) var(--hub-modal-placement-bottom-margin-left);--hub-modal-color: var(--hub-sys-text-primary, #212529);--hub-modal-bg: var(--hub-sys-surface-page, #ffffff);--hub-modal-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-border-width: var(--hub-ref-border-width, 1px);--hub-modal-border-radius: var(--hub-ref-radius-lg, .5rem);--hub-modal-placement-start-border-radius: 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0;--hub-modal-placement-end-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-top-border-radius: 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-bottom-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0 0;--hub-modal-inner-border-radius: calc( var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var( --hub-modal-border-width, var(--hub-ref-border-width, 1px) ) );--hub-modal-box-shadow: var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175));--hub-modal-header-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-header-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-header-gap: var(--hub-ref-space-2, .5rem);--hub-modal-header-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-header-border-width: var(--hub-ref-border-width, 1px);--hub-modal-title-font-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-title-font-weight: 500;--hub-modal-title-line-height: var(--hub-ref-line-height-base, 1.5);--hub-modal-title-margin: 0;--hub-modal-body-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-body-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-footer-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-footer-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-footer-gap: var(--hub-ref-space-2, .5rem);--hub-modal-footer-bg: var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));--hub-modal-footer-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-footer-border-width: var(--hub-ref-border-width, 1px);--hub-modal-close-color: var(--hub-sys-text-primary, #212529);--hub-modal-close-size: 1.25rem;--hub-modal-close-line-height: 1;--hub-modal-close-padding: 0;--hub-modal-close-opacity: .5;--hub-modal-close-hover-opacity: .75;--hub-modal-backdrop-bg: var(--hub-ref-color-black, #000000);--hub-modal-backdrop-opacity: var(--hub-sys-opacity-50, .5);--hub-modal-backdrop-opacity-hidden: var(--hub-sys-opacity-0, 0);--hub-modal-backdrop-transition: opacity .15s linear;--hub-modal-fade-transform: translate(0, -50px);--hub-modal-show-transform: none;--hub-modal-transition: var(--hub-sys-transition-base, all .2s ease-in-out);--hub-modal-scale-transform: scale(1.02);--hub-modal-backdrop-z-index: calc(var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055)) - 1);position:fixed;inset:0;display:block;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0;pointer-events:auto;z-index:var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529))}.hub-modal--placement-top,.hub-modal--placement-bottom{display:flex;justify-content:center}.hub-modal--placement-top{align-items:flex-start}.hub-modal--placement-bottom{align-items:flex-end}.hub-modal__dialog{position:relative;width:var(--hub-modal-width, auto);max-width:var(--hub-modal-max-width, 500px);margin:var(--hub-modal-margin, 1.75rem auto);pointer-events:none}.hub-modal__dialog--sm{--hub-modal-max-width: 300px}.hub-modal__dialog--lg{--hub-modal-max-width: 800px}.hub-modal__dialog--xl{--hub-modal-max-width: 1140px}.hub-modal__dialog--centered,.hub-modal__dialog--centered-vertical{display:flex;align-items:center;min-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal__dialog--placement-start{margin:var(--hub-modal-placement-start-margin, var(--hub-modal-margin-top, 1.75rem) auto var(--hub-modal-margin-bottom, 1.75rem) 0);--hub-modal-fade-transform: translateX(-100%)}.hub-modal__dialog--placement-end{margin:var(--hub-modal-placement-end-margin, var(--hub-modal-margin-top, 1.75rem) 0 var(--hub-modal-margin-bottom, 1.75rem) auto);--hub-modal-fade-transform: translateX(100%)}.hub-modal__dialog--placement-top{margin:var(--hub-modal-placement-top-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(-100%)}.hub-modal__dialog--placement-bottom{margin:var(--hub-modal-placement-bottom-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(100%)}.hub-modal__dialog--scrollable{display:flex;max-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-top.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-top-margin-block, 0px))}.hub-modal .hub-modal__dialog--placement-bottom.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-bottom-margin-block, 0px))}.hub-modal__content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;outline:0;color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));border:var(--hub-modal-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-border-color, var(--hub-sys-border-color-default, #dee2e6));border-radius:var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));box-shadow:var(--hub-modal-box-shadow, var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175)))}.hub-modal__dialog--scrollable .hub-modal__content{max-height:100%;overflow:hidden}.hub-modal__dialog--placement-start .hub-modal__content{border-radius:var(--hub-modal-placement-start-border-radius)}.hub-modal__dialog--placement-end .hub-modal__content{border-radius:var(--hub-modal-placement-end-border-radius)}.hub-modal__dialog--placement-top .hub-modal__content{border-radius:var(--hub-modal-placement-top-border-radius)}.hub-modal__dialog--placement-bottom .hub-modal__content{border-radius:var(--hub-modal-placement-bottom-border-radius)}.hub-modal__header{display:flex;align-items:center;gap:var(--hub-modal-header-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-header-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-header-padding-x, var(--hub-ref-space-3, 1rem));border-bottom:var(--hub-modal-header-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-header-border-color, var(--hub-sys-border-color-default, #dee2e6));border-top-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-top-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__header .modal-title{font-size:var(--hub-modal-title-font-size, var(--hub-ref-font-size-lg, 1.25rem));font-weight:var(--hub-modal-title-font-weight, 500);line-height:var(--hub-modal-title-line-height, var(--hub-ref-line-height-base, 1.5));margin:var(--hub-modal-title-margin, 0)}.hub-modal__body{position:relative;flex:1 1 auto;padding:var(--hub-modal-body-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-body-padding-x, var(--hub-ref-space-3, 1rem))}.hub-modal__dialog--scrollable .hub-modal__body{overflow-y:auto}.hub-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--hub-modal-footer-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-footer-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-footer-padding-x, var(--hub-ref-space-3, 1rem));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-footer-bg, var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff)));border-top:var(--hub-modal-footer-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-footer-border-color, var(--hub-sys-border-color-default, #dee2e6));border-bottom-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-bottom-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__close{margin-left:auto;padding:var(--hub-modal-close-padding, 0);font-size:var(--hub-modal-close-size, 1.25rem);line-height:var(--hub-modal-close-line-height, 1);background:transparent;border:0;cursor:pointer;color:var(--hub-modal-close-color, var(--hub-sys-text-primary, #212529));opacity:var(--hub-modal-close-opacity, .5)}.hub-modal__close:before{content:\"\\d7\"}.hub-modal__close:hover,.hub-modal__close:focus{opacity:var(--hub-modal-close-hover-opacity, .75)}.hub-modal.fade .hub-modal__dialog{transform:var(--hub-modal-fade-transform, translate(0, -50px));transition:var(--hub-modal-transition, var(--hub-sys-transition-base, all .2s ease-in-out))}.hub-modal.show .hub-modal__dialog{transform:var(--hub-modal-show-transform, none)}.hub-modal.hub-modal--static .hub-modal__dialog{transform:var(--hub-modal-scale-transform, scale(1.02))}.hub-modal__dialog--fullscreen{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen .hub-modal__body{overflow-y:auto}@media(max-width:575.98px){.hub-modal__dialog--fullscreen-sm-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__body{overflow-y:auto}}@media(max-width:767.98px){.hub-modal__dialog--fullscreen-md-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__body{overflow-y:auto}}@media(max-width:991.98px){.hub-modal__dialog--fullscreen-lg-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__body{overflow-y:auto}}@media(max-width:1199.98px){.hub-modal__dialog--fullscreen-xl-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__body{overflow-y:auto}}@media(max-width:1399.98px){.hub-modal__dialog--fullscreen-xxl-down{width:100%;max-width:100%;height:100%;margin:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__content{height:100%;border:0;border-radius:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__body{overflow-y:auto}}.hub-modal__backdrop{position:fixed;inset:0;opacity:var(--hub-modal-backdrop-opacity-hidden, var(--hub-sys-opacity-0, 0));z-index:var(--hub-modal-backdrop-z-index, 1054);background-color:var(--hub-modal-backdrop-bg, var(--hub-ref-color-black, #000000));pointer-events:none}.hub-modal__backdrop.fade{transition:var(--hub-modal-backdrop-transition, opacity .15s linear)}.hub-modal__backdrop.show{opacity:var(--hub-modal-backdrop-opacity, var(--hub-sys-opacity-50, .5))}\n"] }]
|
|
744
|
-
}], propDecorators: { _dialogEl: [{ type: i0.ViewChild, args: ['dialog', { isSignal: true }] }], _headerContainerEl: [{ type: i0.ViewChild, args: ['headerContainer', { isSignal: true }] }], _bodyContainerEl: [{ type: i0.ViewChild, args: ['bodyContainer', { isSignal: true }] }], _footerContainerEl: [{ type: i0.ViewChild, args: ['footerContainer', { isSignal: true }] }], _closeButtonEl: [{ type: i0.ViewChild, args: ['closeButton', { isSignal: true }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], centered: [{ type: i0.Input, args: [{ isSignal: true, alias: "centered", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fullscreen: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullscreen", required: false }] }], keyboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboard", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], windowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "windowClass", required: false }] }], modalDialogClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "modalDialogClass", required: false }] }], dismissEvent: [{ type: i0.Output, args: ["dismiss"] }] } });
|
|
770
|
+
`, encapsulation: ViewEncapsulation.None, styles: ["@charset \"UTF-8\";body.hub-modal-open{overflow:hidden}.hub-modal{--hub-modal-z-index: var(--hub-sys-zindex-modal, 1055);--hub-modal-accent: var(--hub-sys-color-primary, #0d6efd);--hub-modal-accent-subtle: color-mix(in srgb, var(--hub-modal-accent) 8%, var(--hub-sys-surface-page, #ffffff));--hub-modal-accent-border: color-mix(in srgb, var(--hub-modal-accent) 35%, var(--hub-sys-surface-page, #ffffff));--hub-modal-accent-bar-width: var(--hub-ref-space-1, .25rem);--hub-modal-width: auto;--hub-modal-max-width: 500px;--hub-modal-margin-y: 1.75rem;--hub-modal-margin-x: auto;--hub-modal-margin-top: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-right: var(--hub-modal-margin-x, auto);--hub-modal-margin-bottom: var(--hub-modal-margin-y, 1.75rem);--hub-modal-margin-left: var(--hub-modal-margin-x, auto);--hub-modal-margin-block: calc( var(--hub-modal-margin-top, 1.75rem) + var(--hub-modal-margin-bottom, 1.75rem) );--hub-modal-margin: var(--hub-modal-margin-top) var(--hub-modal-margin-right) var(--hub-modal-margin-bottom) var(--hub-modal-margin-left);--hub-modal-placement-start-margin-top: var( --hub-modal-margin-top, 1.75rem );--hub-modal-placement-start-margin-right: auto;--hub-modal-placement-start-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-start-margin-left: 0;--hub-modal-placement-start-margin-block: calc( var(--hub-modal-placement-start-margin-top, 1.75rem) + var(--hub-modal-placement-start-margin-bottom, 1.75rem) );--hub-modal-placement-start-margin: var( --hub-modal-placement-start-margin-top ) var(--hub-modal-placement-start-margin-right) var(--hub-modal-placement-start-margin-bottom) var(--hub-modal-placement-start-margin-left);--hub-modal-placement-end-margin-top: var(--hub-modal-margin-top, 1.75rem);--hub-modal-placement-end-margin-right: 0;--hub-modal-placement-end-margin-bottom: var( --hub-modal-margin-bottom, 1.75rem );--hub-modal-placement-end-margin-left: auto;--hub-modal-placement-end-margin-block: calc( var(--hub-modal-placement-end-margin-top, 1.75rem) + var(--hub-modal-placement-end-margin-bottom, 1.75rem) );--hub-modal-placement-end-margin: var(--hub-modal-placement-end-margin-top) var(--hub-modal-placement-end-margin-right) var(--hub-modal-placement-end-margin-bottom) var(--hub-modal-placement-end-margin-left);--hub-modal-placement-top-margin-top: 0;--hub-modal-placement-top-margin-right: auto;--hub-modal-placement-top-margin-bottom: 0;--hub-modal-placement-top-margin-left: auto;--hub-modal-placement-top-margin-block: calc( var(--hub-modal-placement-top-margin-top, 0px) + var(--hub-modal-placement-top-margin-bottom, 0px) );--hub-modal-placement-top-margin: var(--hub-modal-placement-top-margin-top) var(--hub-modal-placement-top-margin-right) var(--hub-modal-placement-top-margin-bottom) var(--hub-modal-placement-top-margin-left);--hub-modal-placement-bottom-margin-top: 0;--hub-modal-placement-bottom-margin-right: auto;--hub-modal-placement-bottom-margin-bottom: 0;--hub-modal-placement-bottom-margin-left: auto;--hub-modal-placement-bottom-margin-block: calc( var(--hub-modal-placement-bottom-margin-top, 0px) + var(--hub-modal-placement-bottom-margin-bottom, 0px) );--hub-modal-placement-bottom-margin: var( --hub-modal-placement-bottom-margin-top ) var(--hub-modal-placement-bottom-margin-right) var(--hub-modal-placement-bottom-margin-bottom) var(--hub-modal-placement-bottom-margin-left);--hub-modal-color: var(--hub-sys-text-primary, #212529);--hub-modal-bg: var(--hub-sys-surface-page, #ffffff);--hub-modal-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-border-width: var(--hub-ref-border-width, 1px);--hub-modal-border-radius: var(--hub-ref-radius-lg, .5rem);--hub-modal-placement-start-border-radius: 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0;--hub-modal-placement-end-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-top-border-radius: 0 0 var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));--hub-modal-placement-bottom-border-radius: var( --hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem) ) var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) 0 0;--hub-modal-inner-border-radius: calc( var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var( --hub-modal-border-width, var(--hub-ref-border-width, 1px) ) );--hub-modal-box-shadow: var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175));--hub-modal-padding-x: var(--hub-ref-space-3, 1rem);--hub-modal-padding-y: var(--hub-ref-space-3, 1rem);--hub-modal-header-padding-x: var(--hub-modal-padding-x);--hub-modal-header-padding-y: var(--hub-modal-padding-y);--hub-modal-header-gap: var(--hub-ref-space-2, .5rem);--hub-modal-header-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-header-border-width: var(--hub-ref-border-width, 1px);--hub-modal-title-font-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-title-font-weight: var(--hub-ref-font-weight-medium, 500);--hub-modal-title-line-height: var(--hub-ref-line-height-base, 1.5);--hub-modal-title-margin-x: 0;--hub-modal-title-margin-y: 0;--hub-modal-title-color: var(--hub-modal-color, var(--hub-sys-text-primary, #212529));--hub-modal-body-padding-x: var(--hub-modal-padding-x);--hub-modal-body-padding-y: var(--hub-modal-padding-y);--hub-modal-footer-padding-x: var(--hub-modal-padding-x);--hub-modal-footer-padding-y: var(--hub-modal-padding-y);--hub-modal-footer-gap: var(--hub-ref-space-2, .5rem);--hub-modal-footer-bg: var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));--hub-modal-footer-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-modal-footer-border-width: var(--hub-ref-border-width, 1px);--hub-modal-close-color: var(--hub-sys-text-primary, #212529);--hub-modal-close-size: var(--hub-ref-font-size-lg, 1.25rem);--hub-modal-close-line-height: 1;--hub-modal-close-padding-x: 0;--hub-modal-close-padding-y: 0;--hub-modal-close-opacity: .5;--hub-modal-close-hover-opacity: .75;--hub-modal-backdrop-bg: var(--hub-ref-color-black, #000000);--hub-modal-backdrop-opacity: var(--hub-sys-opacity-50, .5);--hub-modal-backdrop-opacity-hidden: var(--hub-sys-opacity-0, 0);--hub-modal-backdrop-transition: opacity .15s linear;--hub-modal-fade-transform: translate(0, -50px);--hub-modal-show-transform: none;--hub-modal-transition: var(--hub-sys-transition-base, all .2s ease-in-out);--hub-modal-scale-transform: scale(1.02);--hub-modal-backdrop-z-index: calc(var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055)) - 1);position:fixed;inset:0;display:block;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0;pointer-events:auto;z-index:var(--hub-modal-z-index, var(--hub-sys-zindex-modal, 1055));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529))}.hub-modal--placement-top,.hub-modal--placement-bottom{display:flex;justify-content:center}.hub-modal--placement-top{align-items:flex-start}.hub-modal--placement-bottom{align-items:flex-end}.hub-modal__dialog{position:relative;width:var(--hub-modal-width, auto);max-width:var(--hub-modal-max-width, 500px);margin:var(--hub-modal-margin, 1.75rem auto);pointer-events:none}.hub-modal__dialog--sm{--hub-modal-max-width: 300px}.hub-modal__dialog--lg{--hub-modal-max-width: 800px}.hub-modal__dialog--xl{--hub-modal-max-width: 1140px}.hub-modal__dialog--centered,.hub-modal__dialog--centered-vertical{display:flex;align-items:center;min-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal__dialog--placement-start{margin:var(--hub-modal-placement-start-margin, var(--hub-modal-margin-top, 1.75rem) auto var(--hub-modal-margin-bottom, 1.75rem) 0);--hub-modal-fade-transform: translateX(-100%)}.hub-modal__dialog--placement-end{margin:var(--hub-modal-placement-end-margin, var(--hub-modal-margin-top, 1.75rem) 0 var(--hub-modal-margin-bottom, 1.75rem) auto);--hub-modal-fade-transform: translateX(100%)}.hub-modal__dialog--placement-top{margin:var(--hub-modal-placement-top-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(-100%)}.hub-modal__dialog--placement-bottom{margin:var(--hub-modal-placement-bottom-margin, 0 auto 0 auto);--hub-modal-fade-transform: translateY(100%)}.hub-modal__dialog--scrollable{display:flex;max-height:calc(100% - var(--hub-modal-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--centered-vertical{min-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-start.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-start-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-end.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-end-margin-block, 3.5rem))}.hub-modal .hub-modal__dialog--placement-top.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-top-margin-block, 0px))}.hub-modal .hub-modal__dialog--placement-bottom.hub-modal__dialog--scrollable{max-height:calc(100% - var(--hub-modal-placement-bottom-margin-block, 0px))}.hub-modal__content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;outline:0;color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff));border:var(--hub-modal-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-border-color, var(--hub-sys-border-color-default, #dee2e6));border-radius:var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem));box-shadow:var(--hub-modal-box-shadow, var(--hub-sys-shadow-lg, 0 1rem 3rem rgba(0, 0, 0, .175)))}.hub-modal__dialog--scrollable .hub-modal__content{max-height:100%;overflow:hidden}.hub-modal__dialog--placement-start .hub-modal__content{border-radius:var(--hub-modal-placement-start-border-radius)}.hub-modal__dialog--placement-end .hub-modal__content{border-radius:var(--hub-modal-placement-end-border-radius)}.hub-modal__dialog--placement-top .hub-modal__content{border-radius:var(--hub-modal-placement-top-border-radius)}.hub-modal__dialog--placement-bottom .hub-modal__content{border-radius:var(--hub-modal-placement-bottom-border-radius)}.hub-modal--primary{--hub-modal-accent: var(--hub-sys-color-primary, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--primary .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--success{--hub-modal-accent: var(--hub-sys-color-success, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--success .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--danger{--hub-modal-accent: var(--hub-sys-color-danger, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--danger .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--warning{--hub-modal-accent: var(--hub-sys-color-warning, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--warning .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal--info{--hub-modal-accent: var(--hub-sys-color-info, var(--hub-modal-accent));--hub-modal-bg: var(--hub-modal-accent-subtle);--hub-modal-border-color: var(--hub-modal-accent-border);--hub-modal-header-border-color: var(--hub-modal-accent-border);--hub-modal-footer-border-color: var(--hub-modal-accent-border);--hub-modal-title-color: var(--hub-modal-accent)}.hub-modal--info .hub-modal__content{border-top:var(--hub-modal-accent-bar-width, .25rem) solid var(--hub-modal-accent)}.hub-modal__header{display:flex;align-items:center;gap:var(--hub-modal-header-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-header-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-header-padding-x, var(--hub-ref-space-3, 1rem));border-bottom:var(--hub-modal-header-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-header-border-color, var(--hub-sys-border-color-default, #dee2e6));border-top-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-top-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__header .modal-title{color:var(--hub-modal-title-color, var(--hub-modal-color, var(--hub-sys-text-primary, #212529)));font-size:var(--hub-modal-title-font-size, var(--hub-ref-font-size-lg, 1.25rem));font-weight:var(--hub-modal-title-font-weight, var(--hub-ref-font-weight-medium, 500));line-height:var(--hub-modal-title-line-height, var(--hub-ref-line-height-base, 1.5));margin:var(--hub-modal-title-margin-y, 0) var(--hub-modal-title-margin-x, 0)}.hub-modal__body{position:relative;flex:1 1 auto;padding:var(--hub-modal-body-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-body-padding-x, var(--hub-ref-space-3, 1rem))}.hub-modal__dialog--scrollable .hub-modal__body{overflow-y:auto}.hub-modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--hub-modal-footer-gap, var(--hub-ref-space-2, .5rem));padding:var(--hub-modal-footer-padding-y, var(--hub-ref-space-3, 1rem)) var(--hub-modal-footer-padding-x, var(--hub-ref-space-3, 1rem));color:var(--hub-modal-color, var(--hub-sys-text-primary, #212529));background-color:var(--hub-modal-footer-bg, var(--hub-modal-bg, var(--hub-sys-surface-page, #ffffff)));border-top:var(--hub-modal-footer-border-width, var(--hub-ref-border-width, 1px)) solid var(--hub-modal-footer-border-color, var(--hub-sys-border-color-default, #dee2e6));border-bottom-right-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))));border-bottom-left-radius:var(--hub-modal-inner-border-radius, calc(var(--hub-modal-border-radius, var(--hub-ref-radius-lg, .5rem)) - var(--hub-modal-border-width, var(--hub-ref-border-width, 1px))))}.hub-modal__close{margin-left:auto;padding:var(--hub-modal-close-padding-y, 0) var(--hub-modal-close-padding-x, 0);font-size:var(--hub-modal-close-size, var(--hub-ref-font-size-lg, 1.25rem));line-height:var(--hub-modal-close-line-height, 1);background:transparent;border:0;cursor:pointer;color:var(--hub-modal-close-color, var(--hub-sys-text-primary, #212529));opacity:var(--hub-modal-close-opacity, .5)}.hub-modal__close:before{content:\"\\d7\"}.hub-modal__close:hover,.hub-modal__close:focus{opacity:var(--hub-modal-close-hover-opacity, .75)}.hub-modal.fade .hub-modal__dialog{transform:var(--hub-modal-fade-transform, translate(0, -50px));transition:var(--hub-modal-transition, var(--hub-sys-transition-base, all .2s ease-in-out))}.hub-modal.show .hub-modal__dialog{transform:var(--hub-modal-show-transform, none)}.hub-modal.hub-modal--static .hub-modal__dialog{transform:var(--hub-modal-scale-transform, scale(1.02))}.hub-modal__dialog--fullscreen{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}@media(max-width:575.98px){.hub-modal__dialog--fullscreen-sm-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-sm-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-sm-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:767.98px){.hub-modal__dialog--fullscreen-md-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-md-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-md-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:991.98px){.hub-modal__dialog--fullscreen-lg-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-lg-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-lg-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:1199.98px){.hub-modal__dialog--fullscreen-xl-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-xl-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-xl-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}@media(max-width:1399.98px){.hub-modal__dialog--fullscreen-xxl-down{width:100%;max-width:100%;height:100%;max-height:100%;margin:0}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__content{height:100%;border:0;border-radius:0;display:flex;flex-direction:column}.hub-modal__dialog--fullscreen-xxl-down .hub-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto}}.hub-modal__backdrop{position:fixed;inset:0;opacity:var(--hub-modal-backdrop-opacity-hidden, var(--hub-sys-opacity-0, 0));z-index:var(--hub-modal-backdrop-z-index, 1054);background-color:var(--hub-modal-backdrop-bg, var(--hub-ref-color-black, #000000));pointer-events:none}.hub-modal__backdrop.fade{transition:var(--hub-modal-backdrop-transition, opacity .15s linear)}.hub-modal__backdrop.show{opacity:var(--hub-modal-backdrop-opacity, var(--hub-sys-opacity-50, .5))}\n"] }]
|
|
771
|
+
}], propDecorators: { _dialogEl: [{ type: i0.ViewChild, args: ['dialog', { isSignal: true }] }], _headerContainerEl: [{ type: i0.ViewChild, args: ['headerContainer', { isSignal: true }] }], _bodyContainerEl: [{ type: i0.ViewChild, args: ['bodyContainer', { isSignal: true }] }], _footerContainerEl: [{ type: i0.ViewChild, args: ['footerContainer', { isSignal: true }] }], _closeButtonEl: [{ type: i0.ViewChild, args: ['closeButton', { isSignal: true }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], centered: [{ type: i0.Input, args: [{ isSignal: true, alias: "centered", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fullscreen: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullscreen", required: false }] }], keyboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboard", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], windowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "windowClass", required: false }] }], modalDialogClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "modalDialogClass", required: false }] }], dismissEvent: [{ type: i0.Output, args: ["dismiss"] }] } });
|
|
745
772
|
|
|
746
773
|
/**
|
|
747
774
|
* A service that manages the stack of currently active modal windows.
|
|
@@ -1042,10 +1069,10 @@ class HubModalStack {
|
|
|
1042
1069
|
}
|
|
1043
1070
|
}
|
|
1044
1071
|
}
|
|
1045
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1046
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1072
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1073
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalStack, providedIn: 'root' });
|
|
1047
1074
|
}
|
|
1048
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1075
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalStack, decorators: [{
|
|
1049
1076
|
type: Injectable,
|
|
1050
1077
|
args: [{ providedIn: 'root' }]
|
|
1051
1078
|
}], ctorParameters: () => [] });
|
|
@@ -1121,20 +1148,20 @@ class HubModal {
|
|
|
1121
1148
|
hasOpenModals() {
|
|
1122
1149
|
return this._modalStack.hasOpenModals();
|
|
1123
1150
|
}
|
|
1124
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1125
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModal, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1152
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModal, providedIn: 'root' });
|
|
1126
1153
|
}
|
|
1127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModal, decorators: [{
|
|
1128
1155
|
type: Injectable,
|
|
1129
1156
|
args: [{ providedIn: 'root' }]
|
|
1130
1157
|
}] });
|
|
1131
1158
|
|
|
1132
1159
|
class HubModalModule {
|
|
1133
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1134
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1135
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1161
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: HubModalModule });
|
|
1162
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalModule, providers: [HubModal] });
|
|
1136
1163
|
}
|
|
1137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: HubModalModule, decorators: [{
|
|
1138
1165
|
type: NgModule,
|
|
1139
1166
|
args: [{ providers: [HubModal] }]
|
|
1140
1167
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-hub-ui-modal.mjs","sources":["../../../projects/modal/src/lib/modal-placement.ts","../../../projects/modal/src/lib/modal-config.ts","../../../projects/modal/src/lib/modal-backdrop.ts","../../../projects/modal/src/lib/modal-ref.ts","../../../projects/modal/src/lib/modal-dismiss-reasons.ts","../../../projects/modal/src/lib/modal-window.ts","../../../projects/modal/src/lib/modal-stack.ts","../../../projects/modal/src/lib/modal.ts","../../../projects/modal/src/lib/modal.module.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/ng-hub-ui-modal.ts"],"sourcesContent":["/**\n * Supported modal placements within the viewport.\n */\nexport enum HubModalPlacement {\n\t/**\n\t * Places the modal in the center of the viewport.\n\t */\n\tCenter = 'center',\n\n\t/**\n\t * Anchors the modal to the start edge of the viewport.\n\t */\n\tStart = 'start',\n\n\t/**\n\t * Anchors the modal to the end edge of the viewport.\n\t */\n\tEnd = 'end',\n\n\t/**\n\t * Anchors the modal to the top edge of the viewport.\n\t */\n\tTop = 'top',\n\n\t/**\n\t * Anchors the modal to the bottom edge of the viewport.\n\t */\n\tBottom = 'bottom'\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HubModalPlacement } from './modal-placement';\n// import { HubConfig } from '../hub-config';\n\n/**\n * Options available when opening new modal windows with `HubModal.open()` method.\n */\nexport interface HubModalOptions {\n\t/**\n\t * If `true`, modal opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the modal window.\n\t *\n\t * @since 2.2.0\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the modal window.\n\t *\n\t * @since 6.1.0\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given modal.\n\t *\n\t * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * Callback right before the modal will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the modal won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise<boolean>;\n\n\t/**\n\t * If `true`, the modal will be centered vertically.\n\t *\n\t * Default value is `false`.\n\t *\n\t * @since 1.1.0\n\t */\n\tcentered?: boolean;\n\n\t/**\n\t * Controls where the modal is placed within the viewport.\n\t *\n\t * Default value is `'center'`.\n\t */\n\tplacement?: HubModalPlacement;\n\n\t/**\n\t * A selector specifying the element all new modal windows should be appended to.\n\t * Since v5.3.0 it is also possible to pass the reference to an `HTMLElement`.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * If `true` modal will always be displayed in fullscreen mode.\n\t *\n\t * For values like `'md'` it means that modal will be displayed in fullscreen mode\n\t * only if the viewport width is below `'md'`. For custom strings (ex. when passing `'mysize'`)\n\t * it will add a `'modal-fullscreen-mysize-down'` class.\n\t *\n\t * If not specified will be `false`.\n\t *\n\t * @since 12.1.0\n\t */\n\tfullscreen?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string;\n\n\t/**\n\t * The `Injector` to use for modal content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the modal will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * Scrollable modal content (false by default).\n\t *\n\t * @since 5.0.0\n\t */\n\tscrollable?: boolean;\n\n\t/**\n\t * Size of a new modal window.\n\t */\n\tsize?: 'sm' | 'lg' | 'xl' | string;\n\n\t/**\n\t * A custom class to append to the modal window.\n\t */\n\twindowClass?: string;\n\n\t/**\n\t * A custom class to append to the modal dialog.\n\t *\n\t * @since 9.1.0\n\t */\n\tmodalDialogClass?: string;\n\n\t/**\n\t * A custom class to append to the modal backdrop.\n\t *\n\t * @since 1.1.0\n\t */\n\tbackdropClass?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the header element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the header, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired\theader element within the modal content.\n\t */\n\theaderSelector?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the footer element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the footer, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired footer element within the modal content.\n\t */\n\tfooterSelector?: string;\n\n\t/** Used to specify a custom selector for elements that can trigger the dismissal of the modal window. By providing a CSS selector\n\t * string for `dismissSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close or dismiss the modal window.\n\t */\n\tdismissSelector?: string;\n\n\t/**\n\t * Used to specify a custom selector for elements that can trigger the closing of the modal window. By providing a CSS selector\n\t * string for `closeSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close the modal window. This allows for customization of the elements that can act as close buttons for the modal.\n\t */\n\tcloseSelector?: string;\n\n\t/** Used to store any additional data that needs to be passed to the modal window when it is opened. This property allows you\n\t * to provide custom data to the modal component, which can then be accessed and utilized within the modal content or logic.\n\t * It provides flexibility for passing dynamic information to the modal window based on the specific use case or requirements.\n\t */\n\tdata?: any;\n}\n\n/**\n * Options that can be changed on an opened modal with `HubModalRef.update()` and `HubActiveModal.update()` methods.\n *\n * @since 14.2.0\n */\nexport type HubModalUpdatableOptions = Pick<\n\tHubModalOptions,\n\t| 'ariaLabelledBy'\n\t| 'ariaDescribedBy'\n\t| 'centered'\n\t| 'placement'\n\t| 'fullscreen'\n\t| 'backdropClass'\n\t| 'size'\n\t| 'windowClass'\n\t| 'modalDialogClass'\n>;\n\n/**\n * A configuration service for the [`HubModal`](#/components/modal/api#HubModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * @since 3.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalConfig implements Required<HubModalOptions> {\n\t// private _hubConfig = inject(HubConfig);\n\tprivate _animation?: boolean;\n\n\tariaLabelledBy!: string;\n\tariaDescribedBy!: string;\n\tbackdrop: boolean | 'static' = true;\n\tbeforeDismiss!: () => boolean | Promise<boolean>;\n\tcentered!: boolean;\n\tplacement: HubModalPlacement = HubModalPlacement.Center;\n\tcontainer!: string | HTMLElement;\n\tfullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false;\n\tinjector!: Injector;\n\tkeyboard = true;\n\tscrollable!: boolean;\n\tsize!: 'sm' | 'lg' | 'xl' | string;\n\twindowClass!: string;\n\tmodalDialogClass!: string;\n\tbackdropClass!: string;\n\theaderSelector!: string;\n\tfooterSelector!: string;\n\tdismissSelector: string = '[data-dismiss=\"modal\"]';\n\tcloseSelector: string = '[data-close=\"modal\"]';\n\tdata: any;\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? true /* this._hubConfig.animation */;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { Component, ElementRef, inject, input, NgZone, OnInit, ViewEncapsulation } from '@angular/core';\nimport { hubRunTransition, reflow } from 'ng-hub-ui-utils';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * Represents the backdrop element associated with an active modal window.\n * It is responsible for displaying a dark overlay and handling entry/exit animations.\n */\n@Component({\n\tselector: 'hub-modal-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]': '\"hub-modal__backdrop\" + (backdropClass() ? \" \" + backdropClass() : \"\")',\n\t\t'[class.show]': '!animation()',\n\t\t'[class.fade]': 'animation()'\n\t}\n})\nexport class HubModalBackdrop implements OnInit {\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\tprivate _zone = inject(NgZone);\n\n\t/**\n\t * Determines whether the backdrop should use CSS transitions during its initialization and destruction.\n\t */\n\treadonly animation = input<boolean>(true);\n\n\t/**\n\t * Allows applying a custom CSS class to the backdrop element.\n\t */\n\treadonly backdropClass = input<string>();\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\thubRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation(), runningTransition: 'continue' }\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\t/**\n\t * Triggers the hide transition for the backdrop element and removes the `show` CSS class.\n\t *\n\t * @returns An observable that completes once the exit transition has ended.\n\t */\n\thide(): Observable<void> {\n\t\treturn hubRunTransition(this._zone, this._nativeElement, ({ classList }) => classList.remove('show'), {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'stop'\n\t\t});\n\t}\n}\n","import { ComponentRef } from '@angular/core';\nimport { ContentRef, isDefined, isPromise } from 'ng-hub-ui-utils';\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubModalWindow } from './modal-window';\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.update()`, `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class HubActiveModal {\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {}\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubModalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\nconst WINDOW_ATTRIBUTES: string[] = [\n\t'animation',\n\t'ariaLabelledBy',\n\t'ariaDescribedBy',\n\t'backdrop',\n\t'centered',\n\t'placement',\n\t'fullscreen',\n\t'keyboard',\n\t'scrollable',\n\t'size',\n\t'windowClass',\n\t'modalDialogClass'\n];\nconst BACKDROP_ATTRIBUTES: string[] = ['animation', 'backdropClass'];\n\n/**\n * A reference to the newly opened modal returned by the `HubModal.open()` method.\n */\nexport class HubModalRef<T = any> {\n\tprivate _closed = new Subject<any>();\n\tprivate _dismissed = new Subject<any>();\n\tprivate _hidden = new Subject<void>();\n\tprivate _resolve!: (result?: any) => void;\n\tprivate _reject!: (reason?: any) => void;\n\n\tprivate _applyWindowOptions(windowComponentRef: ComponentRef<HubModalWindow>, options: HubModalOptions): void {\n\t\tWINDOW_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tconst opts: any = options as any;\n\t\t\tif (isDefined(opts[optionName])) {\n\t\t\t\twindowComponentRef.setInput(optionName, opts[optionName]);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(backdropComponentRef: ComponentRef<HubModalBackdrop>, options: HubModalOptions): void {\n\t\tBACKDROP_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tconst opts: any = options as any;\n\t\t\tif (isDefined(opts[optionName])) {\n\t\t\t\tbackdropComponentRef.setInput(optionName, opts[optionName]);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {\n\t\tthis._applyWindowOptions(this._windowCmptRef, options);\n\t\tif (this._backdropCmptRef && this._backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(this._backdropCmptRef, options);\n\t\t}\n\t}\n\n\t/**\n\t * The instance of a component used for the modal content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n\t */\n\tget componentInstance(): T | void {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n\t */\n\tresult: Promise<any>;\n\n\t/**\n\t * The observable that emits when the modal is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t *\n\t * @since 8.0.0\n\t */\n\tget closed(): Observable<any> {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t *\n\t * @since 8.0.0\n\t */\n\tget dismissed(): Observable<any> {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both modal window and backdrop are closed and animations were finished.\n\t * At this point modal and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t *\n\t * @since 8.0.0\n\t */\n\tget hidden(): Observable<void> {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when modal is fully visible and animation was finished.\n\t * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if modal is closed before open animation is finished.\n\t *\n\t * @since 8.0.0\n\t */\n\tget shown(): Observable<void> {\n\t\treturn this._windowCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _windowCmptRef: ComponentRef<HubModalWindow>,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef<HubModalBackdrop>,\n\t\tprivate _beforeDismiss?: () => boolean | Promise<boolean>\n\t) {\n\t\t_windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeModalElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeModalElements();\n\t}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss as any)) {\n\t\t\t\t\t(dismiss as Promise<boolean>).then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeModalElements() {\n\t\tconst windowTransition$ = this._windowCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n\n\t\t// hiding window\n\t\twindowTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._windowCmptRef.location;\n\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\tthis._windowCmptRef.destroy();\n\t\t\tthis._contentRef?.viewRef?.destroy();\n\n\t\t\tthis._windowCmptRef = <any>null;\n\t\t\tthis._contentRef = <any>null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = <any>null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(windowTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum ModalDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\toutput,\n\tviewChild,\n\tViewEncapsulation\n} from '@angular/core';\nimport { getFocusableBoundaryElements, hubRunTransition, isString, reflow, TransitionOptions } from 'ng-hub-ui-utils';\nimport { fromEvent, Observable, Subject, zip } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\nimport { HubModalPlacement } from './modal-placement';\n\n/**\n * The internal component representing the modal window.\n * It renders the modal dialog structure, handles ARIA attributes, encapsulates the projected content,\n * and manages interactions like keyboard dismissals and backdrop clicks.\n */\n@Component({\n\tselector: 'hub-modal-window',\n\timports: [],\n\thost: {\n\t\t'[class]': '\"hub-modal\" + hostPlacementClass + (windowClass() ? \" \" + windowClass() : \"\")',\n\t\t'[class.fade]': 'animation()',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy()',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()'\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t#dialog\n\t\t\t[class]=\"\n\t\t\t\t'hub-modal__dialog' +\n\t\t\t\t(size() ? ' hub-modal__dialog--' + size() : '') +\n\t\t\t\tplacementClass +\n\t\t\t\tcenteredClass +\n\t\t\t\tfullscreenClass +\n\t\t\t\t(scrollable() ? ' hub-modal__dialog--scrollable' : '') +\n\t\t\t\t(modalDialogClass() ? ' ' + modalDialogClass() : '')\n\t\t\t\"\n\t\t\trole=\"document\"\n\t\t>\n\t\t\t<div class=\"hub-modal__content\">\n\t\t\t\t@if (singleContent) {\n\t\t\t\t\t<div #bodyContainer class=\"hub-modal__body\"></div>\n\t\t\t\t} @else {\n\t\t\t\t\t<div #headerContainer class=\"hub-modal__header\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t#closeButton\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"hub-modal__close\"\n\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t(click)=\"dismiss(null)\"\n\t\t\t\t\t\t></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div #bodyContainer class=\"hub-modal__body\"></div>\n\t\t\t\t\t<div #footerContainer class=\"hub-modal__footer\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './modal.scss'\n})\nexport class HubModalWindow implements OnInit, OnDestroy {\n\tprivate _document = inject(DOCUMENT);\n\tprivate _elRef = inject(ElementRef<HTMLElement>);\n\tprivate _zone = inject(NgZone);\n\n\tprivate _closed$ = new Subject<void>();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to modal opening\n\n\tprivate readonly _dialogEl = viewChild.required<ElementRef<HTMLElement>>('dialog');\n\tprivate readonly _headerContainerEl = viewChild<ElementRef<HTMLElement>>('headerContainer');\n\tprivate readonly _bodyContainerEl = viewChild<ElementRef<HTMLElement>>('bodyContainer');\n\tprivate readonly _footerContainerEl = viewChild<ElementRef<HTMLElement>>('footerContainer');\n\tprivate readonly _closeButtonEl = viewChild<ElementRef<HTMLButtonElement>>('closeButton');\n\n\t/**\n\t * Determines whether the modal window should animate its entry and exit.\n\t */\n\treadonly animation = input<boolean>(true);\n\n\t/**\n\t * Identifier to apply to the `aria-labelledby` attribute of the modal.\n\t */\n\treadonly ariaLabelledBy = input<string>();\n\n\t/**\n\t * Identifier to apply to the `aria-describedby` attribute of the modal.\n\t */\n\treadonly ariaDescribedBy = input<string>();\n\n\t/**\n\t * Configures the presence and behavior of the modal backdrop (`true`, `false`, or `'static'`).\n\t */\n\treadonly backdrop = input<boolean | string>(true);\n\n\t/**\n\t * If `true`, the modal dialog will be centered vertically.\n\t */\n\treadonly centered = input<boolean>();\n\n\t/**\n\t * Specifies the modal placement inside the viewport.\n\t */\n\treadonly placement = input<HubModalPlacement>(HubModalPlacement.Center);\n\n\t/**\n\t * Enables fullscreen mode for the modal, either always (`true`) or below specific breakpoints.\n\t */\n\treadonly fullscreen = input<string | boolean>();\n\n\t/**\n\t * If `true`, pressing the ESC key will close the modal.\n\t */\n\treadonly keyboard = input(true);\n\n\t/**\n\t * If `true`, the modal content will be scrollable when it exceeds the viewport height.\n\t */\n\treadonly scrollable = input<boolean>();\n\n\t/**\n\t * Specifies the size of the modal (`'sm'`, `'lg'`, `'xl'`, etc.).\n\t */\n\treadonly size = input<string>();\n\n\t/**\n\t * A custom CSS class to append to the modal window wrapper.\n\t */\n\treadonly windowClass = input<string>();\n\n\t/**\n\t * A custom CSS class to append to the inner modal dialog element.\n\t */\n\treadonly modalDialogClass = input<string>();\n\n\tsingleContent!: boolean;\n\n\t/**\n\t * Emits when the user dismisses the modal (e.g. via ESC, backdrop click, or custom close buttons).\n\t */\n\treadonly dismissEvent = output({ alias: 'dismiss' });\n\n\t/**\n\t * Emits and completes once the modal window is fully visible and its transition has ended.\n\t */\n\tshown = new Subject<void>();\n\n\t/**\n\t * Emits and completes once the modal is fully hidden and its DOM elements are ready to be destroyed.\n\t */\n\thidden = new Subject<void>();\n\n\t/**\n\t * Computes the CSS class for fullscreen behavior based on the `fullscreen` input.\n\t */\n\tget fullscreenClass(): string {\n\t\tconst fullscreen = this.fullscreen();\n\t\treturn fullscreen === true\n\t\t\t? ' hub-modal__dialog--fullscreen'\n\t\t\t: isString(fullscreen)\n\t\t\t\t? ` hub-modal__dialog--fullscreen-${fullscreen}-down`\n\t\t\t\t: '';\n\t}\n\n\t/**\n\t * Computes the CSS class corresponding to the requested modal placement.\n\t */\n\tget placementClass(): string {\n\t\tconst placement = this.placement();\n\t\treturn placement && placement !== HubModalPlacement.Center ? ` hub-modal__dialog--placement-${placement}` : '';\n\t}\n\n\t/**\n\t * Computes the CSS class applied to the modal host to control viewport anchoring.\n\t */\n\tget hostPlacementClass(): string {\n\t\tconst placement = this.placement();\n\t\treturn placement && placement !== HubModalPlacement.Center ? ` hub-modal--placement-${placement}` : '';\n\t}\n\n\t/**\n\t * Computes the CSS class used to center the modal on the secondary axis, depending on its placement.\n\t */\n\tget centeredClass(): string {\n\t\tif (!this.centered()) {\n\t\t\treturn '';\n\t\t}\n\n\t\tswitch (this.placement()) {\n\t\t\tcase HubModalPlacement.Start:\n\t\t\tcase HubModalPlacement.End:\n\t\t\t\treturn ' hub-modal__dialog--centered-vertical';\n\t\t\tcase HubModalPlacement.Top:\n\t\t\tcase HubModalPlacement.Bottom:\n\t\t\t\treturn '';\n\t\t\tcase HubModalPlacement.Center:\n\t\t\tdefault:\n\t\t\t\treturn ' hub-modal__dialog--centered';\n\t\t}\n\t}\n\n\t/**\n\t * Dismisses the modal by emitting the `dismissEvent` with the provided reason.\n\t *\n\t * @param reason The reason the modal was dismissed (e.g. 'ESC', 'BACKDROP_CLICK', or custom data).\n\t */\n\tdismiss(reason: any): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\t/**\n\t * Attaches the projected content nodes into their respective structural containers\n\t * (header, body, and footer) within the modal dialog.\n\t *\n\t * @param contentNodes A nested array containing nodes segmented into header, body, and footer parts.\n\t */\n\tattachContent([headerNodes, bodyNodes, footerNodes]: Node[][]): void {\n\t\tconst bodyContainer = this._bodyContainerEl()?.nativeElement;\n\t\tif (!bodyContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.singleContent) {\n\t\t\tthis._appendNodes(bodyContainer, bodyNodes);\n\t\t\treturn;\n\t\t}\n\n\t\tconst headerContainer = this._headerContainerEl()?.nativeElement;\n\t\tconst footerContainer = this._footerContainerEl()?.nativeElement;\n\t\tconst closeButton = this._closeButtonEl()?.nativeElement ?? null;\n\n\t\tif (headerContainer) {\n\t\t\tthis._appendNodes(headerContainer, headerNodes, closeButton);\n\t\t}\n\t\tthis._appendNodes(bodyContainer, bodyNodes);\n\t\tif (footerContainer) {\n\t\t\tthis._appendNodes(footerContainer, footerNodes);\n\t\t}\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\t/**\n\t * Determines the focus element, blocks further interactions, configures the exit transition context,\n\t * removes 'show' CSS classes from the modal, and restores focus back to the previously focused element.\n\t *\n\t * @returns An observable that emits when the exit transition completely finishes.\n\t */\n\thide(): Observable<any> {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'stop'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tnativeElement,\n\t\t\t() => nativeElement.classList.remove('show'),\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(this._zone, this._dialogEl().nativeElement, () => {}, context);\n\n\t\tconst transitions$ = zip(windowTransition$, dialogTransition$);\n\t\ttransitions$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn transitions$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'continue'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show');\n\t\t\t},\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(this._zone, this._dialogEl().nativeElement, () => {}, context);\n\n\t\tzip(windowTransition$, dialogTransition$).subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent<KeyboardEvent>(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\tfilter((e) => e.key === 'Escape')\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard()) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (this.backdrop() === 'static') {\n\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n\t\t\t// inside the modal dialog and releasing it outside\n\t\t\tlet preventClose = false;\n\t\t\tfromEvent<MouseEvent>(this._dialogEl().nativeElement, 'mousedown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\ttap(() => (preventClose = false)),\n\t\t\t\t\tswitchMap(() => fromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))),\n\t\t\t\t\tfilter(({ target }) => nativeElement === target)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tpreventClose = true;\n\t\t\t\t});\n\n\t\t\t// We're listening to 'click' to dismiss modal on modal window click, except when:\n\t\t\t// 1. clicking on modal dialog itself\n\t\t\t// 2. closing was prevented by mousedown/up handlers\n\t\t\t// 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\t\t\tfromEvent<MouseEvent>(nativeElement, 'click')\n\t\t\t\t.pipe(takeUntil(this._closed$))\n\t\t\t\t.subscribe(({ target }) => {\n\t\t\t\t\tif (nativeElement === target) {\n\t\t\t\t\t\tconst backdrop = this.backdrop();\n\t\t\t\t\t\tif (backdrop === 'static') {\n\t\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t\t} else if (backdrop === true && !preventClose) {\n\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventClose = false;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(`[hubAutofocus]`) as HTMLElement;\n\t\t\tconst firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus = autoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus: HTMLElement;\n\t\tif (elWithFocus instanceof HTMLElement && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body as unknown as HTMLElement;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n\n\tprivate _bumpBackdrop() {\n\t\tif (this.backdrop() === 'static') {\n\t\t\thubRunTransition(\n\t\t\t\tthis._zone,\n\t\t\t\tthis._elRef.nativeElement,\n\t\t\t\t({ classList }) => {\n\t\t\t\t\tclassList.add('hub-modal--static');\n\t\t\t\t\treturn () => classList.remove('hub-modal--static');\n\t\t\t\t},\n\t\t\t\t{ animation: this.animation(), runningTransition: 'continue' }\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _appendNodes(container: HTMLElement, nodes: Node[], beforeNode?: Node | null) {\n\t\tnodes.forEach((node) => {\n\t\t\tif (beforeNode) {\n\t\t\t\tcontainer.insertBefore(node, beforeNode);\n\t\t\t} else {\n\t\t\t\tcontainer.appendChild(node);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tEventEmitter,\n\tinject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tTemplateRef,\n\tType\n} from '@angular/core';\nimport { ContentRef, hubFocusTrap, isDefined, isString, ScrollBar } from 'ng-hub-ui-utils';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubActiveModal, HubModalRef } from './modal-ref';\nimport { HubModalWindow } from './modal-window';\n\n/**\n * A service that manages the stack of currently active modal windows.\n * It is responsible for creating, attaching, and orchestrating the rendering\n * of the modal dialogue, its backdrop, and its content.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalStack {\n\tprivate _applicationRef = inject(ApplicationRef);\n\tprivate _injector = inject(Injector);\n\tprivate _environmentInjector = inject(EnvironmentInjector);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _scrollBar = inject(ScrollBar);\n\n\tprivate _activeWindowCmptHasChanged = new Subject<void>();\n\tprivate _ariaHiddenValues: Map<Element, string | null> = new Map();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _modalRefs: HubModalRef[] = [];\n\tprivate _windowCmpts: ComponentRef<HubModalWindow>[] = [];\n\tprivate _activeInstances: EventEmitter<HubModalRef[]> = new EventEmitter();\n\n\tconstructor() {\n\t\tconst ngZone = inject(NgZone);\n\n\t\t// Trap focus on active WindowCmpt\n\t\tthis._activeWindowCmptHasChanged.subscribe(() => {\n\t\t\tif (this._windowCmpts.length) {\n\t\t\t\tconst activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n\t\t\t\thubFocusTrap(ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n\t\t\t\tthis._revertAriaHidden();\n\t\t\t\tthis._setAriaHidden(activeWindowCmpt.location.nativeElement);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\t/**\n\t * Opens a new modal window configured with the provided options.\n\t *\n\t * @param contentInjector The dependency injector to be used for the modal content component.\n\t * @param content The content to display inside the modal. Can be a component class, a template reference, or a string.\n\t * @param options Configuration options that dictate how the modal is rendered and behaves.\n\t * @returns An instance of `HubModalRef` which can be used to control the modal or subscribe to its events.\n\t * @throws Error if the specified container element is not found in the DOM.\n\t */\n\topen(contentInjector: Injector, content: any, options: HubModalOptions): HubModalRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t\t? this._document.querySelector(options.container!)\n\t\t\t\t\t: this._document.body;\n\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n\t\t}\n\n\t\tthis._hideScrollBar();\n\n\t\tconst activeModal = new HubActiveModal();\n\n\t\tcontentInjector = options.injector || contentInjector;\n\t\tconst environmentInjector = contentInjector.get(EnvironmentInjector, null) || this._environmentInjector;\n\t\tconst contentRef = this._getContentRef(contentInjector, environmentInjector, content, activeModal, options);\n\n\t\tconst backdropCmptRef: ComponentRef<HubModalBackdrop> | undefined =\n\t\t\toptions.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n\t\tconst windowCmptRef: ComponentRef<HubModalWindow> = this._attachWindowComponent(containerEl, contentRef.nodes, options);\n\t\tconst hubModalRef: HubModalRef = new HubModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n\n\t\tthis._registerModalRef(hubModalRef);\n\t\tthis._registerWindowCmpt(windowCmptRef);\n\n\t\t// We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n\t\t// - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n\t\t// - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n\t\thubModalRef.hidden.pipe(take(1)).subscribe(() =>\n\t\t\tPromise.resolve(true).then(() => {\n\t\t\t\tif (!this._modalRefs.length) {\n\t\t\t\t\tthis._document.body.classList.remove('hub-modal-open');\n\t\t\t\t\tthis._restoreScrollBar();\n\t\t\t\t\tthis._revertAriaHidden();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tactiveModal.close = (result: any) => {\n\t\t\thubModalRef.close(result);\n\t\t};\n\t\tactiveModal.dismiss = (reason: any) => {\n\t\t\thubModalRef.dismiss(reason);\n\t\t};\n\n\t\tactiveModal.update = (options: HubModalUpdatableOptions) => {\n\t\t\thubModalRef.update(options);\n\t\t};\n\n\t\thubModalRef.update(options);\n\t\tif (this._modalRefs.length === 1) {\n\t\t\tthis._document.body.classList.add('hub-modal-open');\n\t\t}\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\treturn hubModalRef;\n\t}\n\n\t/**\n\t * Allows observing the array of active modal instances.\n\t *\n\t * @returns An event emitter that streams changes to the active modal references.\n\t */\n\tget activeInstances() {\n\t\treturn this._activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently open modal windows.\n\t *\n\t * @param reason Optional reason to pass to the dismissal routines of the active modals.\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalRefs.forEach((hubModalRef) => hubModalRef.dismiss(reason));\n\t}\n\n\t/**\n\t * Checks whether there are any currently open modal windows.\n\t *\n\t * @returns `true` if at least one modal is active, `false` otherwise.\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalRefs.length > 0;\n\t}\n\n\tprivate _attachBackdrop(containerEl: Element): ComponentRef<HubModalBackdrop> {\n\t\tlet backdropCmptRef = createComponent(HubModalBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(\n\t\tcontainerEl: Element,\n\t\tcontentNodes: Node[][],\n\t\toptions: HubModalOptions\n\t): ComponentRef<HubModalWindow> {\n\t\tconst singleContent = !options.headerSelector && !options.footerSelector;\n\t\tlet windowCmptRef = createComponent(HubModalWindow, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\n\t\tObject.assign(windowCmptRef.instance, { singleContent });\n\n\t\tthis._applicationRef.attachView(windowCmptRef.hostView);\n\t\tcontainerEl.appendChild(windowCmptRef.location.nativeElement);\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\twindowCmptRef.instance.attachContent(contentNodes);\n\t\treturn windowCmptRef;\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcontent: Type<any> | TemplateRef<any> | string,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeModal, options);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(contentInjector, environmentInjector, content, activeModal, options);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(\n\t\ttemplateRef: TemplateRef<any>,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeModal,\n\t\t\tclose(result: any) {\n\t\t\t\tactiveModal.close(result);\n\t\t\t},\n\t\t\tdismiss(reason: any) {\n\t\t\t\tactiveModal.dismiss(reason);\n\t\t\t}\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\n\t\tconst containerNode = document.createElement('ng-container');\n\t\tcontainerNode.append(...viewRef.rootNodes);\n\n\t\tthis._addDismissEventListener(containerNode, context as any, options);\n\t\tthis._addCloseEventListener(containerNode, context as any, options);\n\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector ? extractAndRemoveNodesBySelector(containerNode, options.headerSelector) : [],\n\t\t\t\tArray.from(containerNode.childNodes),\n\t\t\t\toptions.footerSelector ? extractAndRemoveNodesBySelector(containerNode, options.footerSelector) : []\n\t\t\t],\n\t\t\tviewRef\n\t\t);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcomponentType: Type<any>,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: HubActiveModal, useValue: context }],\n\t\t\tparent: contentInjector\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector,\n\t\t\telementInjector\n\t\t});\n\n\t\tif (options.data) {\n\t\t\tObject.assign(componentRef.instance, {\n\t\t\t\tdata: options.data\n\t\t\t});\n\t\t}\n\n\t\tconst componentNativeEl: HTMLElement = componentRef.location.nativeElement;\n\t\tif (options.scrollable) {\n\t\t\tcomponentNativeEl.classList.add('component-host-scrollable');\n\t\t}\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\n\t\tthis._addDismissEventListener(componentNativeEl, context, options);\n\t\tthis._addCloseEventListener(componentNativeEl, context as any, options);\n\n\t\t// FIXME: we should here get rid of the component nativeElement\n\t\t// and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector ? extractAndRemoveNodesBySelector(componentNativeEl, options.headerSelector) : [],\n\t\t\t\tArray.from(componentNativeEl.childNodes),\n\t\t\t\toptions.footerSelector ? extractAndRemoveNodesBySelector(componentNativeEl, options.footerSelector) : []\n\t\t\t],\n\t\t\tcomponentRef.hostView,\n\t\t\tcomponentRef\n\t\t);\n\t}\n\n\tprivate _setAriaHidden(element: Element) {\n\t\tconst parent = element.parentElement;\n\t\tif (parent && element !== this._document.body) {\n\t\t\tArray.from(parent.children).forEach((sibling) => {\n\t\t\t\tif (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n\t\t\t\t\tthis._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n\t\t\t\t\tsibling.setAttribute('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setAriaHidden(parent);\n\t\t}\n\t}\n\n\tprivate _revertAriaHidden() {\n\t\tthis._ariaHiddenValues.forEach((value, element) => {\n\t\t\tif (value) {\n\t\t\t\telement.setAttribute('aria-hidden', value);\n\t\t\t} else {\n\t\t\t\telement.removeAttribute('aria-hidden');\n\t\t\t}\n\t\t});\n\t\tthis._ariaHiddenValues.clear();\n\t}\n\n\tprivate _registerModalRef(hubModalRef: HubModalRef) {\n\t\tconst unregisterModalRef = () => {\n\t\t\tconst index = this._modalRefs.indexOf(hubModalRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._modalRefs.splice(index, 1);\n\t\t\t\tthis._activeInstances.emit(this._modalRefs);\n\t\t\t}\n\t\t};\n\t\tthis._modalRefs.push(hubModalRef);\n\t\tthis._activeInstances.emit(this._modalRefs);\n\t\thubModalRef.result.then(unregisterModalRef, unregisterModalRef);\n\t}\n\n\tprivate _registerWindowCmpt(hubWindowCmpt: ComponentRef<HubModalWindow>) {\n\t\tthis._windowCmpts.push(hubWindowCmpt);\n\t\tthis._activeWindowCmptHasChanged.next();\n\n\t\thubWindowCmpt.onDestroy(() => {\n\t\t\tconst index = this._windowCmpts.indexOf(hubWindowCmpt);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._windowCmpts.splice(index, 1);\n\t\t\t\tthis._activeWindowCmptHasChanged.next();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements within a container based on a specified dismiss selector to dismiss a modal.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addDismissEventListener` function refers to the active modal\n\t * instance that is being displayed. It is used to call the `dismiss` method on the modal instance when a dismissible element is\n\t * clicked.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `dismissSelector`, which is used to specify a CSS selector for elements that, when clicked, will\n\t * dismiss the modal by calling the `dismiss` method on the `context` object.\n\t */\n\tprivate _addDismissEventListener(container: HTMLElement, context: HubActiveModal, options: HubModalOptions) {\n\t\tif (options.dismissSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> = container.querySelectorAll(options.dismissSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\titem.addEventListener('click', () => context.dismiss());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements matching a specified selector to close a modal window.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addCloseEventListener` function is of type `HubActiveModal`.\n\t * It is used to reference the active modal instance within the function and call the `close()` method on it when a close event is\n\t * triggered.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `closeSelector`, which is used to specify the selector for elements that can trigger the modal\n\t * to close when clicked.\n\t */\n\tprivate _addCloseEventListener(container: HTMLElement, context: HubActiveModal, options: HubModalOptions) {\n\t\tif (options.closeSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> = container.querySelectorAll(options.closeSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\tconst clickEventListeners = item.addEventListener('click', () => context.close());\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Extracts child nodes matching a selector from a container element, removes those nodes from the DOM, and returns them as an array.\n *\n * @param {HTMLElement} container - The `container` parameter in the `extractAndRemoveNodesBySelector` function is an HTMLElement\n * that represents the parent element within which we want to search for nodes matching a specific selector and remove them.\n * @param {string} selector - The `selector` parameter in the `extractAndRemoveNodesBySelector` function is a string that\n * represents a CSS selector. This selector is used to query and select specific elements within the `container` HTMLElement.\n *\n * @returns An array of nodes that were extracted from the container element based on the provided selector, and then removes those\n * nodes from the DOM.\n */\nfunction extractAndRemoveNodesBySelector(container: HTMLElement, selector: string): Array<Node> {\n\tlet containerNodes = container.querySelectorAll(selector);\n\n\tconst nodes = Array.from(containerNodes).reduce((acc, c) => {\n\t\treturn [...acc, ...Array.from(c.childNodes)];\n\t}, [] as Array<Node>);\n\n\t// Selecciona los nodos dentro del contenedor que coincidan con el selector\n\tconst nodesToRemove = container.querySelectorAll<HTMLElement>(selector);\n\n\t// Convertir NodeList a array y eliminar cada nodo del DOM\n\tArray.from(nodesToRemove).forEach((node) => node.remove());\n\treturn nodes;\n}\n","import { inject, Injectable, Injector } from '@angular/core';\n\nimport { HubModalConfig, HubModalOptions } from './modal-config';\nimport { HubModalRef } from './modal-ref';\nimport { HubModalStack } from './modal-stack';\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModal {\n\tprivate _injector = inject(Injector);\n\tprivate _modalStack = inject(HubModalStack);\n\tprivate _config = inject(HubModalConfig);\n\n\t/**\n\t * Opens a new modal window with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `HubActiveModal` class. You can then\n\t * use `HubActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n\t *\n\t * Also see the [`HubModalOptions`](#/components/modal/api#HubModalOptions) for the list of supported options.\n\t */\n\topen<T = any>(content: T, options: HubModalOptions = {}): HubModalRef<T> {\n\t\tconst combinedOptions = {\n\t\t\t...this._config,\n\t\t\tanimation: this._config.animation,\n\t\t\t...options\n\t\t};\n\t\treturn this._modalStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active modal instances.\n\t */\n\tget activeInstances() {\n\t\treturn this._modalStack.activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently displayed modal windows with the supplied reason.\n\t *\n\t * @since 3.1.0\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalStack.dismissAll(reason);\n\t}\n\n\t/**\n\t * Indicates if there are currently any open modal windows in the application.\n\t *\n\t * @since 3.3.0\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalStack.hasOpenModals();\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { HubModal } from './modal';\nexport { HubModal } from './modal';\nexport { HubModalConfig } from './modal-config';\nexport type { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\nexport { HubModalPlacement } from './modal-placement';\nexport { HubActiveModal, HubModalRef } from './modal-ref';\n\n@NgModule({ providers: [HubModal] })\nexport class HubModalModule {}\n","/*\n * Public API Surface of modal\n */\nexport {\n\tModalDismissReasons,\n\tHubActiveModal,\n\tHubModal,\n\tHubModalConfig,\n\tHubModalModule,\n\tHubModalPlacement,\n\tHubModalRef\n} from './lib/modal.module';\nexport type { HubModalOptions, HubModalUpdatableOptions } from './lib/modal.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;IACS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC5B;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB;;AAEG;AACH,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AAEf;;AAEG;AACH,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX;;AAEG;AACH,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAzBW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ACmL7B;;;;;;;AAOG;MAEU,cAAc,CAAA;;AAElB,IAAA,UAAU;AAElB,IAAA,cAAc;AACd,IAAA,eAAe;IACf,QAAQ,GAAuB,IAAI;AACnC,IAAA,aAAa;AACb,IAAA,QAAQ;AACR,IAAA,SAAS,GAAsB,iBAAiB,CAAC,MAAM;AACvD,IAAA,SAAS;IACT,UAAU,GAAyD,KAAK;AACxE,IAAA,QAAQ;IACR,QAAQ,GAAG,IAAI;AACf,IAAA,UAAU;AACV,IAAA,IAAI;AACJ,IAAA,WAAW;AACX,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACb,IAAA,cAAc;AACd,IAAA,cAAc;IACd,eAAe,GAAW,wBAAwB;IAClD,aAAa,GAAW,sBAAsB;AAC9C,IAAA,IAAI;AAEJ,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;IAC/B;IACA,IAAI,SAAS,CAAC,SAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC5B;uGA9BY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACzLlC;;;AAGG;MAYU,gBAAgB,CAAA;AACpB,IAAA,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAA4B;AAChE,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAEzC;;AAEG;IACM,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAExC,QAAQ,GAAA;QACP,IAAI,CAAC,KAAK,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACf,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,cAAc,EACnB,CAAC,OAAoB,EAAE,SAAkB,KAAI;gBAC5C,IAAI,SAAS,EAAE;oBACd,MAAM,CAAC,OAAO,CAAC;gBAChB;AACA,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC9D;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACH,IAAI,GAAA;QACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACrG,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;AACnB,SAAA,CAAC;IACH;uGA3CY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,4hBAPlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAOA,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,wEAAwE;AACnF,wBAAA,cAAc,EAAE,cAAc;AAC9B,wBAAA,cAAc,EAAE;AAChB;AACD,iBAAA;;;ACXD;;;;;AAKG;MACU,cAAc,CAAA;AAC1B;;;;AAIG;IACH,MAAM,CAAC,OAAiC,EAAA,EAAS;AACjD;;;;AAIG;IACH,KAAK,CAAC,MAAY,EAAA,EAAS;AAE3B;;;;AAIG;IACH,OAAO,CAAC,MAAY,EAAA,EAAS;AAC7B;AAED,MAAM,iBAAiB,GAAa;IACnC,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,UAAU;IACV,UAAU;IACV,WAAW;IACX,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,MAAM;IACN,aAAa;IACb;CACA;AACD,MAAM,mBAAmB,GAAa,CAAC,WAAW,EAAE,eAAe,CAAC;AAEpE;;AAEG;MACU,WAAW,CAAA;AAsGd,IAAA,cAAA;AACA,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA,cAAA;AAxGD,IAAA,OAAO,GAAG,IAAI,OAAO,EAAO;AAC5B,IAAA,UAAU,GAAG,IAAI,OAAO,EAAO;AAC/B,IAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;AAC7B,IAAA,QAAQ;AACR,IAAA,OAAO;IAEP,mBAAmB,CAAC,kBAAgD,EAAE,OAAwB,EAAA;AACrG,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;YAChD,MAAM,IAAI,GAAQ,OAAc;YAChC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,qBAAqB,CAAC,oBAAoD,EAAE,OAAwB,EAAA;AAC3G,QAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;YAClD,MAAM,IAAI,GAAQ,OAAc;YAChC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D;AACD,QAAA,CAAC,CAAC;IACH;AAEA;;;;AAIG;AACH,IAAA,MAAM,CAAC,OAAiC,EAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QACtD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;QAC3D;IACD;AAEA;;;;AAIG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ;QAC9C;IACD;AAEA;;AAEG;AACH,IAAA,MAAM;AAEN;;;;;;AAMG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACnC;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;IACzD;AAEA,IAAA,WAAA,CACS,cAA4C,EAC5C,WAAuB,EACvB,gBAAiD,EACjD,cAAiD,EAAA;QAHjD,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,cAAc,GAAd,cAAc;QAEtB,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACtB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAK,EAAE,CAAC,CAAC;IACjC;AAEA;;;;AAIG;AACH,IAAA,KAAK,CAAC,MAAY,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE;QAC5B;IACD;AAEQ,IAAA,QAAQ,CAAC,MAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE;IAC5B;AAEA;;;;AAIG;AACH,IAAA,OAAO,CAAC,MAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtB;iBAAO;AACN,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAA,IAAI,SAAS,CAAC,OAAc,CAAC,EAAE;AAC7B,oBAAA,OAA4B,CAAC,IAAI,CACjC,CAAC,MAAM,KAAI;AACV,wBAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACrB,4BAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACtB;AACD,oBAAA,CAAC,EACD,MAAK,EAAE,CAAC,CACR;gBACF;AAAO,qBAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtB;YACD;QACD;IACD;IAEQ,oBAAoB,GAAA;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7D,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;;AAGzG,QAAA,iBAAiB,CAAC,SAAS,CAAC,MAAK;YAChC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACtD,YAAA,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE;AAEpC,YAAA,IAAI,CAAC,cAAc,GAAQ,IAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAQ,IAAI;AAC7B,QAAA,CAAC,CAAC;;AAGF,QAAA,mBAAmB,CAAC,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACxD,gBAAA,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC;AACnD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,GAAQ,IAAI;YAClC;AACD,QAAA,CAAC,CAAC;;QAGF,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACxB,QAAA,CAAC,CAAC;IACH;AACA;;IC1PW;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC9B,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACJ,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ACmB/B;;;;AAIG;MAiDU,cAAc,CAAA;AAClB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,EAAC,UAAuB,EAAC;AACxC,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEtB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,YAAY,GAAmB,IAAI,CAAC;AAE3B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;AACjE,IAAA,kBAAkB,GAAG,SAAS,CAA0B,iBAAiB,8DAAC;AAC1E,IAAA,gBAAgB,GAAG,SAAS,CAA0B,eAAe,4DAAC;AACtE,IAAA,kBAAkB,GAAG,SAAS,CAA0B,iBAAiB,8DAAC;AAC1E,IAAA,cAAc,GAAG,SAAS,CAAgC,aAAa,0DAAC;AAEzF;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAEzC;;AAEG;IACM,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzC;;AAEG;IACM,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE1C;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,oDAAC;AAEjD;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAEpC;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAoB,iBAAiB,CAAC,MAAM,qDAAC;AAEvE;;AAEG;IACM,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;AAE/C;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,oDAAC;AAE/B;;AAEG;IACM,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAEtC;;AAEG;IACM,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE/B;;AAEG;IACM,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEtC;;AAEG;IACM,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3C,IAAA,aAAa;AAEb;;AAEG;IACM,YAAY,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAEpD;;AAEG;AACH,IAAA,KAAK,GAAG,IAAI,OAAO,EAAQ;AAE3B;;AAEG;AACH,IAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;AAE5B;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,UAAU,KAAK;AACrB,cAAE;AACF,cAAE,QAAQ,CAAC,UAAU;kBAClB,CAAA,+BAAA,EAAkC,UAAU,CAAA,KAAA;kBAC5C,EAAE;IACP;AAEA;;AAEG;AACH,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,SAAS,IAAI,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAG,iCAAiC,SAAS,CAAA,CAAE,GAAG,EAAE;IAC/G;AAEA;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,SAAS,IAAI,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAG,yBAAyB,SAAS,CAAA,CAAE,GAAG,EAAE;IACvG;AAEA;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACrB,YAAA,OAAO,EAAE;QACV;AAEA,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;YACvB,KAAK,iBAAiB,CAAC,KAAK;YAC5B,KAAK,iBAAiB,CAAC,GAAG;AACzB,gBAAA,OAAO,uCAAuC;YAC/C,KAAK,iBAAiB,CAAC,GAAG;YAC1B,KAAK,iBAAiB,CAAC,MAAM;AAC5B,gBAAA,OAAO,EAAE;YACV,KAAK,iBAAiB,CAAC,MAAM;AAC7B,YAAA;AACC,gBAAA,OAAO,8BAA8B;;IAExC;AAEA;;;;AAIG;AACH,IAAA,OAAO,CAAC,MAAW,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEA;;;;;AAKG;AACH,IAAA,aAAa,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAW,EAAA;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa;QAC5D,IAAI,CAAC,aAAa,EAAE;YACnB;QACD;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;YAC3C;QACD;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,IAAI,IAAI;QAEhE,IAAI,eAAe,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;QAC3C,IAAI,eAAe,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC;QAChD;IACD;IAEA,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;QAChD,IAAI,CAAC,KAAK,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,KAAK,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE;IAC7B;AAEA;;;;;AAKG;IACH,IAAI,GAAA;AACH,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AACrC,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;SACnB;QAED,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,aAAa,EACb,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAC5C,OAAO,CACP;QACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,QAAO,CAAC,EAAE,OAAO,CAAC;QAEzG,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAC9D,QAAA,YAAY,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,OAAO,YAAY;IACpB;IAEQ,KAAK,GAAA;AACZ,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;SACnB;AAED,QAAA,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,OAAoB,EAAE,SAAkB,KAAI;YAC5C,IAAI,SAAS,EAAE;gBACd,MAAM,CAAC,OAAO,CAAC;YAChB;AACA,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,CAAC,EACD,OAAO,CACP;QACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,QAAO,CAAC,EAAE,OAAO,CAAC;QAEzG,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACtB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,SAAS,EAAE;IACjB;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,SAAS,CAAgB,aAAa,EAAE,SAAS;iBAC/C,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;AAEjC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACpB,qBAAqB,CAAC,MAAK;AAC1B,wBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AAC5B,4BAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;wBAC5D;AACD,oBAAA,CAAC,CAAC;gBACH;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;oBACxC,IAAI,CAAC,aAAa,EAAE;gBACrB;AACD,YAAA,CAAC,CAAC;;;YAIH,IAAI,YAAY,GAAG,KAAK;YACxB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,WAAW;AAC/D,iBAAA,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,OAAO,YAAY,GAAG,KAAK,CAAC,CAAC,EACjC,SAAS,CAAC,MAAM,SAAS,CAAa,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACxG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,aAAa,KAAK,MAAM,CAAC;iBAEhD,SAAS,CAAC,MAAK;gBACf,YAAY,GAAG,IAAI;AACpB,YAAA,CAAC,CAAC;;;;;AAMH,YAAA,SAAS,CAAa,aAAa,EAAE,OAAO;AAC1C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;AACzB,gBAAA,IAAI,aAAa,KAAK,MAAM,EAAE;AAC7B,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,oBAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;wBAC1B,IAAI,CAAC,aAAa,EAAE;oBACrB;AAAO,yBAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AAC9C,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;oBACvE;gBACD;gBAEA,YAAY,GAAG,KAAK;AACrB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACH;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;IAEQ,SAAS,GAAA;AAChB,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;QACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACpD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA,cAAA,CAAgB,CAAgB;YAClF,MAAM,cAAc,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAErE,YAAA,MAAM,cAAc,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa;YACvE,cAAc,CAAC,KAAK,EAAE;QACvB;IACD;IAEQ,aAAa,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;AAErC,QAAA,IAAI,cAA2B;QAC/B,IAAI,WAAW,YAAY,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrE,cAAc,GAAG,WAAW;QAC7B;aAAO;YACN,cAAc,GAAG,IAA8B;QAChD;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YACjC,UAAU,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA,CAAC,CAAC;IACH;IAEQ,aAAa,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AACjC,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,EAAE,SAAS,EAAE,KAAI;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAClC,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACnD,YAAA,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC9D;QACF;IACD;AAEQ,IAAA,YAAY,CAAC,SAAsB,EAAE,KAAa,EAAE,UAAwB,EAAA;AACnF,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACtB,IAAI,UAAU,EAAE;AACf,gBAAA,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;YACzC;iBAAO;AACN,gBAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5B;AACD,QAAA,CAAC,CAAC;IACH;uGA1WY,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,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qFAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+4dAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAIW,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhD1B,SAAS;+BACC,kBAAkB,EAAA,OAAA,EACnB,EAAE,EAAA,IAAA,EACL;AACL,wBAAA,SAAS,EAAE,+EAA+E;AAC1F,wBAAA,cAAc,EAAE,aAAa;AAC7B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,yBAAyB,EAAE;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCT,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,+4dAAA,CAAA,EAAA;AAWoC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,QAAQ,4EACR,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACnB,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACb,iBAAiB,wEACf,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9DzF;;;;AAIG;MAEU,aAAa,CAAA;AACjB,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAE9B,IAAA,2BAA2B,GAAG,IAAI,OAAO,EAAQ;AACjD,IAAA,iBAAiB,GAAgC,IAAI,GAAG,EAAE;IAC1D,mBAAmB,GAAwB,IAAI;IAC/C,UAAU,GAAkB,EAAE;IAC9B,YAAY,GAAmC,EAAE;AACjD,IAAA,gBAAgB,GAAgC,IAAI,YAAY,EAAE;AAE1E,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;AAG7B,QAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAK;AAC/C,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7B,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACxE,gBAAA,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC;gBAC/F,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7D;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,iBAAiB,GAAA;AACxB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;QACnD,IAAI,kBAAkB,EAAE;AACvB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,YAAA,kBAAkB,EAAE;QACrB;IACD;IAEQ,cAAc,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAClD;IACD;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAC,eAAyB,EAAE,OAAY,EAAE,OAAwB,EAAA;AACrE,QAAA,MAAM,WAAW,GAChB,OAAO,CAAC,SAAS,YAAY;cAC1B,OAAO,CAAC;AACV,cAAE,SAAS,CAAC,OAAO,CAAC,SAAS;kBAC1B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAU;AACjD,kBAAE,IAAI,CAAC,SAAS,CAAC,IAAI;QAExB,IAAI,CAAC,WAAW,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAA,2BAAA,CAA6B,CAAC;QAC5G;QAEA,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE;AAExC,QAAA,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe;AACrD,QAAA,MAAM,mBAAmB,GAAG,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB;AACvG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QAE3G,MAAM,eAAe,GACpB,OAAO,CAAC,QAAQ,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,SAAS;AAC3E,QAAA,MAAM,aAAa,GAAiC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;AACvH,QAAA,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;AAEnH,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;;;;QAKvC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACtD,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;YACzB;QACD,CAAC,CAAC,CACF;AAED,QAAA,WAAW,CAAC,KAAK,GAAG,CAAC,MAAW,KAAI;AACnC,YAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC;AACD,QAAA,WAAW,CAAC,OAAO,GAAG,CAAC,MAAW,KAAI;AACrC,YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,MAAM,GAAG,CAAC,OAAiC,KAAI;AAC1D,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD;AAEA,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE;AAChD,YAAA,eAAe,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAClD;AACA,QAAA,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC/C,QAAA,OAAO,WAAW;IACnB;AAEA;;;;AAIG;AACH,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB;IAC7B;AAEA;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE;AAEA;;;;AAIG;IACH,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;IAClC;AAEQ,IAAA,eAAe,CAAC,WAAoB,EAAA;AAC3C,QAAA,IAAI,eAAe,GAAG,eAAe,CAAC,gBAAgB,EAAE;AACvD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC;QACzD,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC/D,QAAA,OAAO,eAAe;IACvB;AAEQ,IAAA,sBAAsB,CAC7B,WAAoB,EACpB,YAAsB,EACtB,OAAwB,EAAA;QAExB,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc;AACxE,QAAA,IAAI,aAAa,GAAG,eAAe,CAAC,cAAc,EAAE;AACnD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC;QAExD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;QACvD,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7D,QAAA,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC/C,QAAA,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;AAClD,QAAA,OAAO,aAAa;IACrB;IAEQ,cAAc,CACrB,eAAyB,EACzB,mBAAwC,EACxC,OAA8C,EAC9C,WAA2B,EAC3B,OAAwB,EAAA;QAExB,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;QAC1B;AAAO,aAAA,IAAI,OAAO,YAAY,WAAW,EAAE;YAC1C,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QAClE;AAAO,aAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACvC;aAAO;AACN,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QACtG;IACD;AAEQ,IAAA,sBAAsB,CAC7B,WAA6B,EAC7B,WAA2B,EAC3B,OAAwB,EAAA;AAExB,QAAA,MAAM,OAAO,GAAG;AACf,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,KAAK,CAAC,MAAW,EAAA;AAChB,gBAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,CAAC;AACD,YAAA,OAAO,CAAC,MAAW,EAAA;AAClB,gBAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B;SACA;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC;QAExC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;QAC5D,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAE1C,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC;QACrE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC;QAEnE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;AACpG,YAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACpC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;SAClG,EACD,OAAO,CACP;IACF;AAEQ,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC;QAC7D,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC;IAEQ,oBAAoB,CAC3B,eAAyB,EACzB,mBAAwC,EACxC,aAAwB,EACxB,OAAuB,EACvB,OAAwB,EAAA;AAExB,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3D,YAAA,MAAM,EAAE;AACR,SAAA,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE;YACnD,mBAAmB;YACnB;AACA,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACpC,IAAI,EAAE,OAAO,CAAC;AACd,aAAA,CAAC;QACH;AAEA,QAAA,MAAM,iBAAiB,GAAgB,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC1E,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC7D;QACA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;QAEtD,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC;QAClE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,OAAc,EAAE,OAAO,CAAC;;;QAIvE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;AACxG,YAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACxC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;AACtG,SAAA,EACD,YAAY,CAAC,QAAQ,EACrB,YAAY,CACZ;IACF;AAEQ,IAAA,cAAc,CAAC,OAAgB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;QACpC,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9C,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC/C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACxE,oBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC5C;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5B;IACD;IAEQ,iBAAiB,GAAA;QACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,KAAI;YACjD,IAAI,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;YAC3C;iBAAO;AACN,gBAAA,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC;YACvC;AACD,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAC/B;AAEQ,IAAA,iBAAiB,CAAC,WAAwB,EAAA;QACjD,MAAM,kBAAkB,GAAG,MAAK;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AAClD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C;AACD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChE;AAEQ,IAAA,mBAAmB,CAAC,aAA2C,EAAA;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;AAEvC,QAAA,aAAa,CAAC,SAAS,CAAC,MAAK;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;YACxC;AACD,QAAA,CAAC,CAAC;IACH;AAEA;;;;;;;;;;;AAWG;AACK,IAAA,wBAAwB,CAAC,SAAsB,EAAE,OAAuB,EAAE,OAAwB,EAAA;AACzG,QAAA,IAAI,OAAO,CAAC,eAAe,EAAE;YAC5B,MAAM,YAAY,GAAwB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC;YAC7F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxD;QACD;IACD;AAEA;;;;;;;;;;;AAWG;AACK,IAAA,sBAAsB,CAAC,SAAsB,EAAE,OAAuB,EAAE,OAAwB,EAAA;AACvG,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;YAC1B,MAAM,YAAY,GAAwB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAClF;QACD;IACD;uGA3WY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA+WlC;;;;;;;;;;AAUG;AACH,SAAS,+BAA+B,CAAC,SAAsB,EAAE,QAAgB,EAAA;IAChF,IAAI,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAEzD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC1D,QAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC,EAAE,EAAiB,CAAC;;IAGrB,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAc,QAAQ,CAAC;;AAGvE,IAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1D,IAAA,OAAO,KAAK;AACb;;AC5ZA;;;;;AAKG;MAEU,QAAQ,CAAA;AACZ,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAU,OAAU,EAAE,OAAA,GAA2B,EAAE,EAAA;AACtD,QAAA,MAAM,eAAe,GAAG;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACjC,YAAA,GAAG;SACH;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC;IACvE;AAEA;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe;IACxC;AAEA;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;IACpC;AAEA;;;;AAIG;IACH,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;IACxC;uGA9CY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cADK,MAAM,EAAA,CAAA;;2FACnB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCFrB,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAd,cAAc,EAAA,CAAA;wGAAd,cAAc,EAAA,SAAA,EADJ,CAAC,QAAQ,CAAC,EAAA,CAAA;;2FACpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;;;ACTnC;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-hub-ui-modal.mjs","sources":["../../../projects/modal/src/lib/modal-placement.ts","../../../projects/modal/src/lib/modal-config.ts","../../../projects/modal/src/lib/modal-backdrop.ts","../../../projects/modal/src/lib/modal-ref.ts","../../../projects/modal/src/lib/modal-dismiss-reasons.ts","../../../projects/modal/src/lib/modal-window.ts","../../../projects/modal/src/lib/modal-stack.ts","../../../projects/modal/src/lib/modal.ts","../../../projects/modal/src/lib/modal.module.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/ng-hub-ui-modal.ts"],"sourcesContent":["/**\n * Supported modal placements within the viewport.\n */\nexport enum HubModalPlacement {\n\t/**\n\t * Places the modal in the center of the viewport.\n\t */\n\tCenter = 'center',\n\n\t/**\n\t * Anchors the modal to the start edge of the viewport.\n\t */\n\tStart = 'start',\n\n\t/**\n\t * Anchors the modal to the end edge of the viewport.\n\t */\n\tEnd = 'end',\n\n\t/**\n\t * Anchors the modal to the top edge of the viewport.\n\t */\n\tTop = 'top',\n\n\t/**\n\t * Anchors the modal to the bottom edge of the viewport.\n\t */\n\tBottom = 'bottom'\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HubModalPlacement } from './modal-placement';\n// import { HubConfig } from '../hub-config';\n\n/**\n * Options available when opening new modal windows with `HubModal.open()` method.\n */\nexport interface HubModalOptions {\n\t/**\n\t * If `true`, modal opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the modal window.\n\t *\n\t * @since 2.2.0\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the modal window.\n\t *\n\t * @since 6.1.0\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given modal.\n\t *\n\t * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * Callback right before the modal will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the modal won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise<boolean>;\n\n\t/**\n\t * If `true`, the modal will be centered vertically.\n\t *\n\t * Default value is `false`.\n\t *\n\t * @since 1.1.0\n\t */\n\tcentered?: boolean;\n\n\t/**\n\t * Controls where the modal is placed within the viewport.\n\t *\n\t * Default value is `'center'`.\n\t */\n\tplacement?: HubModalPlacement;\n\n\t/**\n\t * A selector specifying the element all new modal windows should be appended to.\n\t * Since v5.3.0 it is also possible to pass the reference to an `HTMLElement`.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * If `true` modal will always be displayed in fullscreen mode.\n\t *\n\t * For values like `'md'` it means that modal will be displayed in fullscreen mode\n\t * only if the viewport width is below `'md'`. For custom strings (ex. when passing `'mysize'`)\n\t * it will add a `'modal-fullscreen-mysize-down'` class.\n\t *\n\t * If not specified will be `false`.\n\t *\n\t * @since 12.1.0\n\t */\n\tfullscreen?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string;\n\n\t/**\n\t * The `Injector` to use for modal content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the modal will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * Scrollable modal content (false by default).\n\t *\n\t * @since 5.0.0\n\t */\n\tscrollable?: boolean;\n\n\t/**\n\t * Size of a new modal window.\n\t */\n\tsize?: 'sm' | 'lg' | 'xl' | string;\n\n\t/**\n\t * Semantic accent of the modal, for meaningful dialogs (a destructive\n\t * confirmation, a success notice…). Adds a coloured top bar to the dialog by\n\t * applying the `hub-modal--<variant>` class to the window.\n\t *\n\t * The built-in values (`'primary'` · `'success'` · `'danger'` · `'warning'`\n\t * · `'info'`) map to the design-system colours, but **any string is accepted**\n\t * — the modal reads `--hub-sys-color-<variant>` from the host application.\n\t *\n\t * If not specified, the modal is rendered neutral (no accent bar).\n\t */\n\tvariant?: 'primary' | 'success' | 'danger' | 'warning' | 'info' | (string & {});\n\n\t/**\n\t * A custom class to append to the modal window.\n\t */\n\twindowClass?: string;\n\n\t/**\n\t * A custom class to append to the modal dialog.\n\t *\n\t * @since 9.1.0\n\t */\n\tmodalDialogClass?: string;\n\n\t/**\n\t * A custom class to append to the modal backdrop.\n\t *\n\t * @since 1.1.0\n\t */\n\tbackdropClass?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the header element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the header, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired\theader element within the modal content.\n\t */\n\theaderSelector?: string;\n\n\t/**\n\t * Allows to specify a custom selector for the footer element of the modal window. This can be useful if you want to target\n\t * a specific element within the modal to act as the footer, for example, to apply custom styling or functionality to it. By\n\t * providing a CSS selector string, you can target the desired footer element within the modal content.\n\t */\n\tfooterSelector?: string;\n\n\t/** Used to specify a custom selector for elements that can trigger the dismissal of the modal window. By providing a CSS selector\n\t * string for `dismissSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close or dismiss the modal window.\n\t */\n\tdismissSelector?: string;\n\n\t/**\n\t * Used to specify a custom selector for elements that can trigger the closing of the modal window. By providing a CSS selector\n\t * string for `closeSelector`, you can target specific elements within the modal content that, when interacted with (e.g., clicked),\n\t * will close the modal window. This allows for customization of the elements that can act as close buttons for the modal.\n\t */\n\tcloseSelector?: string;\n\n\t/** Used to store any additional data that needs to be passed to the modal window when it is opened. This property allows you\n\t * to provide custom data to the modal component, which can then be accessed and utilized within the modal content or logic.\n\t * It provides flexibility for passing dynamic information to the modal window based on the specific use case or requirements.\n\t */\n\tdata?: any;\n}\n\n/**\n * Options that can be changed on an opened modal with `HubModalRef.update()` and `HubActiveModal.update()` methods.\n *\n * @since 14.2.0\n */\nexport type HubModalUpdatableOptions = Pick<\n\tHubModalOptions,\n\t| 'ariaLabelledBy'\n\t| 'ariaDescribedBy'\n\t| 'centered'\n\t| 'placement'\n\t| 'fullscreen'\n\t| 'backdropClass'\n\t| 'size'\n\t| 'variant'\n\t| 'windowClass'\n\t| 'modalDialogClass'\n>;\n\n/**\n * A configuration service for the [`HubModal`](#/components/modal/api#HubModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * @since 3.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalConfig implements Required<HubModalOptions> {\n\t// private _hubConfig = inject(HubConfig);\n\tprivate _animation?: boolean;\n\n\tariaLabelledBy!: string;\n\tariaDescribedBy!: string;\n\tbackdrop: boolean | 'static' = true;\n\tbeforeDismiss!: () => boolean | Promise<boolean>;\n\tcentered!: boolean;\n\tplacement: HubModalPlacement = HubModalPlacement.Center;\n\tcontainer!: string | HTMLElement;\n\tfullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false;\n\tinjector!: Injector;\n\tkeyboard = true;\n\tscrollable!: boolean;\n\tsize!: 'sm' | 'lg' | 'xl' | string;\n\tvariant!: 'primary' | 'success' | 'danger' | 'warning' | 'info' | (string & {});\n\twindowClass!: string;\n\tmodalDialogClass!: string;\n\tbackdropClass!: string;\n\theaderSelector!: string;\n\tfooterSelector!: string;\n\tdismissSelector: string = '[data-dismiss=\"modal\"]';\n\tcloseSelector: string = '[data-close=\"modal\"]';\n\tdata: any;\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? true /* this._hubConfig.animation */;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { Component, ElementRef, inject, input, NgZone, OnInit, ViewEncapsulation } from '@angular/core';\nimport { hubRunTransition, reflow } from 'ng-hub-ui-utils';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * Represents the backdrop element associated with an active modal window.\n * It is responsible for displaying a dark overlay and handling entry/exit animations.\n */\n@Component({\n\tselector: 'hub-modal-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]': '\"hub-modal__backdrop\" + (backdropClass() ? \" \" + backdropClass() : \"\")',\n\t\t'[class.show]': '!animation()',\n\t\t'[class.fade]': 'animation()'\n\t}\n})\nexport class HubModalBackdrop implements OnInit {\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\tprivate _zone = inject(NgZone);\n\n\t/**\n\t * Determines whether the backdrop should use CSS transitions during its initialization and destruction.\n\t */\n\treadonly animation = input<boolean>(true);\n\n\t/**\n\t * Allows applying a custom CSS class to the backdrop element.\n\t */\n\treadonly backdropClass = input<string>();\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\thubRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation(), runningTransition: 'continue' }\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\t/**\n\t * Triggers the hide transition for the backdrop element and removes the `show` CSS class.\n\t *\n\t * @returns An observable that completes once the exit transition has ended.\n\t */\n\thide(): Observable<void> {\n\t\treturn hubRunTransition(this._zone, this._nativeElement, ({ classList }) => classList.remove('show'), {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'stop'\n\t\t});\n\t}\n}\n","import { ComponentRef } from '@angular/core';\nimport { ContentRef, isDefined, isPromise } from 'ng-hub-ui-utils';\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubModalWindow } from './modal-window';\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.update()`, `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class HubActiveModal {\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {}\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubModalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\nconst WINDOW_ATTRIBUTES: string[] = [\n\t'animation',\n\t'ariaLabelledBy',\n\t'ariaDescribedBy',\n\t'backdrop',\n\t'centered',\n\t'placement',\n\t'fullscreen',\n\t'keyboard',\n\t'scrollable',\n\t'size',\n\t'variant',\n\t'windowClass',\n\t'modalDialogClass'\n];\nconst BACKDROP_ATTRIBUTES: string[] = ['animation', 'backdropClass'];\n\n/**\n * A reference to the newly opened modal returned by the `HubModal.open()` method.\n */\nexport class HubModalRef<T = any> {\n\tprivate _closed = new Subject<any>();\n\tprivate _dismissed = new Subject<any>();\n\tprivate _hidden = new Subject<void>();\n\tprivate _resolve!: (result?: any) => void;\n\tprivate _reject!: (reason?: any) => void;\n\n\tprivate _applyWindowOptions(windowComponentRef: ComponentRef<HubModalWindow>, options: HubModalOptions): void {\n\t\tWINDOW_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tconst opts: any = options as any;\n\t\t\tif (isDefined(opts[optionName])) {\n\t\t\t\twindowComponentRef.setInput(optionName, opts[optionName]);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(backdropComponentRef: ComponentRef<HubModalBackdrop>, options: HubModalOptions): void {\n\t\tBACKDROP_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tconst opts: any = options as any;\n\t\t\tif (isDefined(opts[optionName])) {\n\t\t\t\tbackdropComponentRef.setInput(optionName, opts[optionName]);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: HubModalUpdatableOptions): void {\n\t\tthis._applyWindowOptions(this._windowCmptRef, options);\n\t\tif (this._backdropCmptRef && this._backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(this._backdropCmptRef, options);\n\t\t}\n\t}\n\n\t/**\n\t * The instance of a component used for the modal content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n\t */\n\tget componentInstance(): T | void {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n\t */\n\tresult: Promise<any>;\n\n\t/**\n\t * The observable that emits when the modal is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t *\n\t * @since 8.0.0\n\t */\n\tget closed(): Observable<any> {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t *\n\t * @since 8.0.0\n\t */\n\tget dismissed(): Observable<any> {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both modal window and backdrop are closed and animations were finished.\n\t * At this point modal and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t *\n\t * @since 8.0.0\n\t */\n\tget hidden(): Observable<void> {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when modal is fully visible and animation was finished.\n\t * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if modal is closed before open animation is finished.\n\t *\n\t * @since 8.0.0\n\t */\n\tget shown(): Observable<void> {\n\t\treturn this._windowCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _windowCmptRef: ComponentRef<HubModalWindow>,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef<HubModalBackdrop>,\n\t\tprivate _beforeDismiss?: () => boolean | Promise<boolean>\n\t) {\n\t\t_windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `HubMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeModalElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeModalElements();\n\t}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `HubModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss as any)) {\n\t\t\t\t\t(dismiss as Promise<boolean>).then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeModalElements() {\n\t\tconst windowTransition$ = this._windowCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n\n\t\t// hiding window\n\t\twindowTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._windowCmptRef.location;\n\t\t\tnativeElement.parentNode?.removeChild(nativeElement);\n\t\t\tthis._windowCmptRef.destroy();\n\t\t\tthis._contentRef?.viewRef?.destroy();\n\n\t\t\tthis._windowCmptRef = <any>null;\n\t\t\tthis._contentRef = <any>null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode?.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = <any>null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(windowTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum ModalDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tinject,\n\tinput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\toutput,\n\tviewChild,\n\tViewEncapsulation\n} from '@angular/core';\nimport { getFocusableBoundaryElements, hubRunTransition, isString, reflow, TransitionOptions } from 'ng-hub-ui-utils';\nimport { fromEvent, Observable, Subject, zip } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\nimport { HubModalPlacement } from './modal-placement';\n\n/**\n * The internal component representing the modal window.\n * It renders the modal dialog structure, handles ARIA attributes, encapsulates the projected content,\n * and manages interactions like keyboard dismissals and backdrop clicks.\n */\n@Component({\n\tselector: 'hub-modal-window',\n\timports: [],\n\thost: {\n\t\t'[class]':\n\t\t\t'\"hub-modal\" + hostPlacementClass + (variant() ? \" hub-modal--\" + variant() : \"\") + (windowClass() ? \" \" + windowClass() : \"\")',\n\t\t'[class.fade]': 'animation()',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy()',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()'\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t#dialog\n\t\t\t[class]=\"\n\t\t\t\t'hub-modal__dialog' +\n\t\t\t\t(size() ? ' hub-modal__dialog--' + size() : '') +\n\t\t\t\tplacementClass +\n\t\t\t\tcenteredClass +\n\t\t\t\tfullscreenClass +\n\t\t\t\t(scrollable() ? ' hub-modal__dialog--scrollable' : '') +\n\t\t\t\t(modalDialogClass() ? ' ' + modalDialogClass() : '')\n\t\t\t\"\n\t\t\trole=\"document\"\n\t\t>\n\t\t\t<div class=\"hub-modal__content\">\n\t\t\t\t@if (singleContent) {\n\t\t\t\t\t<div #bodyContainer class=\"hub-modal__body\"></div>\n\t\t\t\t} @else {\n\t\t\t\t\t<div #headerContainer class=\"hub-modal__header\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t#closeButton\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"hub-modal__close\"\n\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t(click)=\"dismiss(null)\"\n\t\t\t\t\t\t></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div #bodyContainer class=\"hub-modal__body\"></div>\n\t\t\t\t\t<div #footerContainer class=\"hub-modal__footer\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './modal.scss'\n})\nexport class HubModalWindow implements OnInit, OnDestroy {\n\tprivate _document = inject(DOCUMENT);\n\tprivate _elRef = inject(ElementRef<HTMLElement>);\n\tprivate _zone = inject(NgZone);\n\n\tprivate _closed$ = new Subject<void>();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to modal opening\n\n\tprivate readonly _dialogEl = viewChild.required<ElementRef<HTMLElement>>('dialog');\n\tprivate readonly _headerContainerEl = viewChild<ElementRef<HTMLElement>>('headerContainer');\n\tprivate readonly _bodyContainerEl = viewChild<ElementRef<HTMLElement>>('bodyContainer');\n\tprivate readonly _footerContainerEl = viewChild<ElementRef<HTMLElement>>('footerContainer');\n\tprivate readonly _closeButtonEl = viewChild<ElementRef<HTMLButtonElement>>('closeButton');\n\n\t/**\n\t * Determines whether the modal window should animate its entry and exit.\n\t */\n\treadonly animation = input<boolean>(true);\n\n\t/**\n\t * Identifier to apply to the `aria-labelledby` attribute of the modal.\n\t */\n\treadonly ariaLabelledBy = input<string>();\n\n\t/**\n\t * Identifier to apply to the `aria-describedby` attribute of the modal.\n\t */\n\treadonly ariaDescribedBy = input<string>();\n\n\t/**\n\t * Configures the presence and behavior of the modal backdrop (`true`, `false`, or `'static'`).\n\t */\n\treadonly backdrop = input<boolean | string>(true);\n\n\t/**\n\t * If `true`, the modal dialog will be centered vertically.\n\t */\n\treadonly centered = input<boolean>();\n\n\t/**\n\t * Specifies the modal placement inside the viewport.\n\t */\n\treadonly placement = input<HubModalPlacement>(HubModalPlacement.Center);\n\n\t/**\n\t * Enables fullscreen mode for the modal, either always (`true`) or below specific breakpoints.\n\t */\n\treadonly fullscreen = input<string | boolean>();\n\n\t/**\n\t * If `true`, pressing the ESC key will close the modal.\n\t */\n\treadonly keyboard = input(true);\n\n\t/**\n\t * If `true`, the modal content will be scrollable when it exceeds the viewport height.\n\t */\n\treadonly scrollable = input<boolean>();\n\n\t/**\n\t * Specifies the size of the modal (`'sm'`, `'lg'`, `'xl'`, etc.).\n\t */\n\treadonly size = input<string>();\n\n\t/**\n\t * Semantic accent of the modal (`'primary'`, `'success'`, `'danger'`,\n\t * `'warning'`, `'info'`, or any custom token name). Applies the\n\t * `hub-modal--<variant>` class, which paints an accent top bar on the dialog.\n\t */\n\treadonly variant = input<string>();\n\n\t/**\n\t * A custom CSS class to append to the modal window wrapper.\n\t */\n\treadonly windowClass = input<string>();\n\n\t/**\n\t * A custom CSS class to append to the inner modal dialog element.\n\t */\n\treadonly modalDialogClass = input<string>();\n\n\tsingleContent!: boolean;\n\n\t/**\n\t * Emits when the user dismisses the modal (e.g. via ESC, backdrop click, or custom close buttons).\n\t */\n\treadonly dismissEvent = output({ alias: 'dismiss' });\n\n\t/**\n\t * Emits and completes once the modal window is fully visible and its transition has ended.\n\t */\n\tshown = new Subject<void>();\n\n\t/**\n\t * Emits and completes once the modal is fully hidden and its DOM elements are ready to be destroyed.\n\t */\n\thidden = new Subject<void>();\n\n\t/**\n\t * Computes the CSS class for fullscreen behavior based on the `fullscreen` input.\n\t */\n\tget fullscreenClass(): string {\n\t\tconst fullscreen = this.fullscreen();\n\t\treturn fullscreen === true\n\t\t\t? ' hub-modal__dialog--fullscreen'\n\t\t\t: isString(fullscreen)\n\t\t\t\t? ` hub-modal__dialog--fullscreen-${fullscreen}-down`\n\t\t\t\t: '';\n\t}\n\n\t/**\n\t * Computes the CSS class corresponding to the requested modal placement.\n\t */\n\tget placementClass(): string {\n\t\tconst placement = this.placement();\n\t\treturn placement && placement !== HubModalPlacement.Center ? ` hub-modal__dialog--placement-${placement}` : '';\n\t}\n\n\t/**\n\t * Computes the CSS class applied to the modal host to control viewport anchoring.\n\t */\n\tget hostPlacementClass(): string {\n\t\tconst placement = this.placement();\n\t\treturn placement && placement !== HubModalPlacement.Center ? ` hub-modal--placement-${placement}` : '';\n\t}\n\n\t/**\n\t * Computes the CSS class used to center the modal on the secondary axis, depending on its placement.\n\t */\n\tget centeredClass(): string {\n\t\tif (!this.centered()) {\n\t\t\treturn '';\n\t\t}\n\n\t\tswitch (this.placement()) {\n\t\t\tcase HubModalPlacement.Start:\n\t\t\tcase HubModalPlacement.End:\n\t\t\t\treturn ' hub-modal__dialog--centered-vertical';\n\t\t\tcase HubModalPlacement.Top:\n\t\t\tcase HubModalPlacement.Bottom:\n\t\t\t\treturn '';\n\t\t\tcase HubModalPlacement.Center:\n\t\t\tdefault:\n\t\t\t\treturn ' hub-modal__dialog--centered';\n\t\t}\n\t}\n\n\t/**\n\t * Dismisses the modal by emitting the `dismissEvent` with the provided reason.\n\t *\n\t * @param reason The reason the modal was dismissed (e.g. 'ESC', 'BACKDROP_CLICK', or custom data).\n\t */\n\tdismiss(reason: any): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\t/**\n\t * Attaches the projected content nodes into their respective structural containers\n\t * (header, body, and footer) within the modal dialog.\n\t *\n\t * @param contentNodes A nested array containing nodes segmented into header, body, and footer parts.\n\t */\n\tattachContent([headerNodes, bodyNodes, footerNodes]: Node[][]): void {\n\t\tconst bodyContainer = this._bodyContainerEl()?.nativeElement;\n\t\tif (!bodyContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.singleContent) {\n\t\t\tthis._appendNodes(bodyContainer, bodyNodes);\n\t\t\treturn;\n\t\t}\n\n\t\tconst headerContainer = this._headerContainerEl()?.nativeElement;\n\t\tconst footerContainer = this._footerContainerEl()?.nativeElement;\n\t\tconst closeButton = this._closeButtonEl()?.nativeElement ?? null;\n\n\t\tif (headerContainer) {\n\t\t\tthis._appendNodes(headerContainer, headerNodes, closeButton);\n\t\t}\n\t\tthis._appendNodes(bodyContainer, bodyNodes);\n\t\tif (footerContainer) {\n\t\t\tthis._appendNodes(footerContainer, footerNodes);\n\t\t}\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\t/**\n\t * Determines the focus element, blocks further interactions, configures the exit transition context,\n\t * removes 'show' CSS classes from the modal, and restores focus back to the previously focused element.\n\t *\n\t * @returns An observable that emits when the exit transition completely finishes.\n\t */\n\thide(): Observable<any> {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'stop'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tnativeElement,\n\t\t\t() => nativeElement.classList.remove('show'),\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(this._zone, this._dialogEl().nativeElement, () => {}, context);\n\n\t\tconst transitions$ = zip(windowTransition$, dialogTransition$);\n\t\ttransitions$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn transitions$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: TransitionOptions<any> = {\n\t\t\tanimation: this.animation(),\n\t\t\trunningTransition: 'continue'\n\t\t};\n\n\t\tconst windowTransition$ = hubRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show');\n\t\t\t},\n\t\t\tcontext\n\t\t);\n\t\tconst dialogTransition$ = hubRunTransition(this._zone, this._dialogEl().nativeElement, () => {}, context);\n\n\t\tzip(windowTransition$, dialogTransition$).subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent<KeyboardEvent>(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\tfilter((e) => e.key === 'Escape')\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard()) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (this.backdrop() === 'static') {\n\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n\t\t\t// inside the modal dialog and releasing it outside\n\t\t\tlet preventClose = false;\n\t\t\tfromEvent<MouseEvent>(this._dialogEl().nativeElement, 'mousedown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\ttap(() => (preventClose = false)),\n\t\t\t\t\tswitchMap(() => fromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))),\n\t\t\t\t\tfilter(({ target }) => nativeElement === target)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tpreventClose = true;\n\t\t\t\t});\n\n\t\t\t// We're listening to 'click' to dismiss modal on modal window click, except when:\n\t\t\t// 1. clicking on modal dialog itself\n\t\t\t// 2. closing was prevented by mousedown/up handlers\n\t\t\t// 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\t\t\tfromEvent<MouseEvent>(nativeElement, 'click')\n\t\t\t\t.pipe(takeUntil(this._closed$))\n\t\t\t\t.subscribe(({ target }) => {\n\t\t\t\t\tif (nativeElement === target) {\n\t\t\t\t\t\tconst backdrop = this.backdrop();\n\t\t\t\t\t\tif (backdrop === 'static') {\n\t\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t\t} else if (backdrop === true && !preventClose) {\n\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventClose = false;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(`[hubAutofocus]`) as HTMLElement;\n\t\t\tconst firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus = autoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus: HTMLElement;\n\t\tif (elWithFocus instanceof HTMLElement && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body as unknown as HTMLElement;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n\n\tprivate _bumpBackdrop() {\n\t\tif (this.backdrop() === 'static') {\n\t\t\thubRunTransition(\n\t\t\t\tthis._zone,\n\t\t\t\tthis._elRef.nativeElement,\n\t\t\t\t({ classList }) => {\n\t\t\t\t\tclassList.add('hub-modal--static');\n\t\t\t\t\treturn () => classList.remove('hub-modal--static');\n\t\t\t\t},\n\t\t\t\t{ animation: this.animation(), runningTransition: 'continue' }\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _appendNodes(container: HTMLElement, nodes: Node[], beforeNode?: Node | null) {\n\t\tnodes.forEach((node) => {\n\t\t\tif (beforeNode) {\n\t\t\t\tcontainer.insertBefore(node, beforeNode);\n\t\t\t} else {\n\t\t\t\tcontainer.appendChild(node);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tEventEmitter,\n\tinject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tTemplateRef,\n\tType\n} from '@angular/core';\nimport { ContentRef, hubFocusTrap, isDefined, isString, ScrollBar } from 'ng-hub-ui-utils';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { HubModalBackdrop } from './modal-backdrop';\nimport { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nimport { HubActiveModal, HubModalRef } from './modal-ref';\nimport { HubModalWindow } from './modal-window';\n\n/**\n * A service that manages the stack of currently active modal windows.\n * It is responsible for creating, attaching, and orchestrating the rendering\n * of the modal dialogue, its backdrop, and its content.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModalStack {\n\tprivate _applicationRef = inject(ApplicationRef);\n\tprivate _injector = inject(Injector);\n\tprivate _environmentInjector = inject(EnvironmentInjector);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _scrollBar = inject(ScrollBar);\n\n\tprivate _activeWindowCmptHasChanged = new Subject<void>();\n\tprivate _ariaHiddenValues: Map<Element, string | null> = new Map();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _modalRefs: HubModalRef[] = [];\n\tprivate _windowCmpts: ComponentRef<HubModalWindow>[] = [];\n\tprivate _activeInstances: EventEmitter<HubModalRef[]> = new EventEmitter();\n\n\tconstructor() {\n\t\tconst ngZone = inject(NgZone);\n\n\t\t// Trap focus on active WindowCmpt\n\t\tthis._activeWindowCmptHasChanged.subscribe(() => {\n\t\t\tif (this._windowCmpts.length) {\n\t\t\t\tconst activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n\t\t\t\thubFocusTrap(ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n\t\t\t\tthis._revertAriaHidden();\n\t\t\t\tthis._setAriaHidden(activeWindowCmpt.location.nativeElement);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\t/**\n\t * Opens a new modal window configured with the provided options.\n\t *\n\t * @param contentInjector The dependency injector to be used for the modal content component.\n\t * @param content The content to display inside the modal. Can be a component class, a template reference, or a string.\n\t * @param options Configuration options that dictate how the modal is rendered and behaves.\n\t * @returns An instance of `HubModalRef` which can be used to control the modal or subscribe to its events.\n\t * @throws Error if the specified container element is not found in the DOM.\n\t */\n\topen(contentInjector: Injector, content: any, options: HubModalOptions): HubModalRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t\t? this._document.querySelector(options.container!)\n\t\t\t\t\t: this._document.body;\n\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n\t\t}\n\n\t\tthis._hideScrollBar();\n\n\t\tconst activeModal = new HubActiveModal();\n\n\t\tcontentInjector = options.injector || contentInjector;\n\t\tconst environmentInjector = contentInjector.get(EnvironmentInjector, null) || this._environmentInjector;\n\t\tconst contentRef = this._getContentRef(contentInjector, environmentInjector, content, activeModal, options);\n\n\t\tconst backdropCmptRef: ComponentRef<HubModalBackdrop> | undefined =\n\t\t\toptions.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n\t\tconst windowCmptRef: ComponentRef<HubModalWindow> = this._attachWindowComponent(containerEl, contentRef.nodes, options);\n\t\tconst hubModalRef: HubModalRef = new HubModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n\n\t\tthis._registerModalRef(hubModalRef);\n\t\tthis._registerWindowCmpt(windowCmptRef);\n\n\t\t// We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n\t\t// - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n\t\t// - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n\t\thubModalRef.hidden.pipe(take(1)).subscribe(() =>\n\t\t\tPromise.resolve(true).then(() => {\n\t\t\t\tif (!this._modalRefs.length) {\n\t\t\t\t\tthis._document.body.classList.remove('hub-modal-open');\n\t\t\t\t\tthis._restoreScrollBar();\n\t\t\t\t\tthis._revertAriaHidden();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tactiveModal.close = (result: any) => {\n\t\t\thubModalRef.close(result);\n\t\t};\n\t\tactiveModal.dismiss = (reason: any) => {\n\t\t\thubModalRef.dismiss(reason);\n\t\t};\n\n\t\tactiveModal.update = (options: HubModalUpdatableOptions) => {\n\t\t\thubModalRef.update(options);\n\t\t};\n\n\t\thubModalRef.update(options);\n\t\tif (this._modalRefs.length === 1) {\n\t\t\tthis._document.body.classList.add('hub-modal-open');\n\t\t}\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\treturn hubModalRef;\n\t}\n\n\t/**\n\t * Allows observing the array of active modal instances.\n\t *\n\t * @returns An event emitter that streams changes to the active modal references.\n\t */\n\tget activeInstances() {\n\t\treturn this._activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently open modal windows.\n\t *\n\t * @param reason Optional reason to pass to the dismissal routines of the active modals.\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalRefs.forEach((hubModalRef) => hubModalRef.dismiss(reason));\n\t}\n\n\t/**\n\t * Checks whether there are any currently open modal windows.\n\t *\n\t * @returns `true` if at least one modal is active, `false` otherwise.\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalRefs.length > 0;\n\t}\n\n\tprivate _attachBackdrop(containerEl: Element): ComponentRef<HubModalBackdrop> {\n\t\tlet backdropCmptRef = createComponent(HubModalBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(\n\t\tcontainerEl: Element,\n\t\tcontentNodes: Node[][],\n\t\toptions: HubModalOptions\n\t): ComponentRef<HubModalWindow> {\n\t\tconst singleContent = !options.headerSelector && !options.footerSelector;\n\t\tlet windowCmptRef = createComponent(HubModalWindow, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector\n\t\t});\n\n\t\tObject.assign(windowCmptRef.instance, { singleContent });\n\n\t\tthis._applicationRef.attachView(windowCmptRef.hostView);\n\t\tcontainerEl.appendChild(windowCmptRef.location.nativeElement);\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\twindowCmptRef.instance.attachContent(contentNodes);\n\t\treturn windowCmptRef;\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcontent: Type<any> | TemplateRef<any> | string,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeModal, options);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(contentInjector, environmentInjector, content, activeModal, options);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(\n\t\ttemplateRef: TemplateRef<any>,\n\t\tactiveModal: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeModal,\n\t\t\tclose(result: any) {\n\t\t\t\tactiveModal.close(result);\n\t\t\t},\n\t\t\tdismiss(reason: any) {\n\t\t\t\tactiveModal.dismiss(reason);\n\t\t\t}\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\n\t\tconst containerNode = document.createElement('ng-container');\n\t\tcontainerNode.append(...viewRef.rootNodes);\n\n\t\tthis._addDismissEventListener(containerNode, context as any, options);\n\t\tthis._addCloseEventListener(containerNode, context as any, options);\n\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector ? extractAndRemoveNodesBySelector(containerNode, options.headerSelector) : [],\n\t\t\t\tArray.from(containerNode.childNodes),\n\t\t\t\toptions.footerSelector ? extractAndRemoveNodesBySelector(containerNode, options.footerSelector) : []\n\t\t\t],\n\t\t\tviewRef\n\t\t);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcomponentType: Type<any>,\n\t\tcontext: HubActiveModal,\n\t\toptions: HubModalOptions\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: HubActiveModal, useValue: context }],\n\t\t\tparent: contentInjector\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector,\n\t\t\telementInjector\n\t\t});\n\n\t\tif (options.data) {\n\t\t\tObject.assign(componentRef.instance, {\n\t\t\t\tdata: options.data\n\t\t\t});\n\t\t}\n\n\t\tconst componentNativeEl: HTMLElement = componentRef.location.nativeElement;\n\t\tif (options.scrollable) {\n\t\t\tcomponentNativeEl.classList.add('component-host-scrollable');\n\t\t}\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\n\t\tthis._addDismissEventListener(componentNativeEl, context, options);\n\t\tthis._addCloseEventListener(componentNativeEl, context as any, options);\n\n\t\t// FIXME: we should here get rid of the component nativeElement\n\t\t// and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\t\treturn new ContentRef(\n\t\t\t[\n\t\t\t\toptions.headerSelector ? extractAndRemoveNodesBySelector(componentNativeEl, options.headerSelector) : [],\n\t\t\t\tArray.from(componentNativeEl.childNodes),\n\t\t\t\toptions.footerSelector ? extractAndRemoveNodesBySelector(componentNativeEl, options.footerSelector) : []\n\t\t\t],\n\t\t\tcomponentRef.hostView,\n\t\t\tcomponentRef\n\t\t);\n\t}\n\n\tprivate _setAriaHidden(element: Element) {\n\t\tconst parent = element.parentElement;\n\t\tif (parent && element !== this._document.body) {\n\t\t\tArray.from(parent.children).forEach((sibling) => {\n\t\t\t\tif (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n\t\t\t\t\tthis._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n\t\t\t\t\tsibling.setAttribute('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setAriaHidden(parent);\n\t\t}\n\t}\n\n\tprivate _revertAriaHidden() {\n\t\tthis._ariaHiddenValues.forEach((value, element) => {\n\t\t\tif (value) {\n\t\t\t\telement.setAttribute('aria-hidden', value);\n\t\t\t} else {\n\t\t\t\telement.removeAttribute('aria-hidden');\n\t\t\t}\n\t\t});\n\t\tthis._ariaHiddenValues.clear();\n\t}\n\n\tprivate _registerModalRef(hubModalRef: HubModalRef) {\n\t\tconst unregisterModalRef = () => {\n\t\t\tconst index = this._modalRefs.indexOf(hubModalRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._modalRefs.splice(index, 1);\n\t\t\t\tthis._activeInstances.emit(this._modalRefs);\n\t\t\t}\n\t\t};\n\t\tthis._modalRefs.push(hubModalRef);\n\t\tthis._activeInstances.emit(this._modalRefs);\n\t\thubModalRef.result.then(unregisterModalRef, unregisterModalRef);\n\t}\n\n\tprivate _registerWindowCmpt(hubWindowCmpt: ComponentRef<HubModalWindow>) {\n\t\tthis._windowCmpts.push(hubWindowCmpt);\n\t\tthis._activeWindowCmptHasChanged.next();\n\n\t\thubWindowCmpt.onDestroy(() => {\n\t\t\tconst index = this._windowCmpts.indexOf(hubWindowCmpt);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._windowCmpts.splice(index, 1);\n\t\t\t\tthis._activeWindowCmptHasChanged.next();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements within a container based on a specified dismiss selector to dismiss a modal.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addDismissEventListener` function refers to the active modal\n\t * instance that is being displayed. It is used to call the `dismiss` method on the modal instance when a dismissible element is\n\t * clicked.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `dismissSelector`, which is used to specify a CSS selector for elements that, when clicked, will\n\t * dismiss the modal by calling the `dismiss` method on the `context` object.\n\t */\n\tprivate _addDismissEventListener(container: HTMLElement, context: HubActiveModal, options: HubModalOptions) {\n\t\tif (options.dismissSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> = container.querySelectorAll(options.dismissSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\titem.addEventListener('click', () => context.dismiss());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Attaches click event listeners to elements matching a specified selector to close a modal window.\n\t *\n\t * @param {HTMLElement} container - The `container` parameter is an HTMLElement that represents the DOM element which contains the\n\t * modal content.\n\t * @param {HubActiveModal} context - The `context` parameter in the `_addCloseEventListener` function is of type `HubActiveModal`.\n\t * It is used to reference the active modal instance within the function and call the `close()` method on it when a close event is\n\t * triggered.\n\t * @param {HubModalOptions} options - The `options` parameter is an object that contains configuration options for the modal. It\n\t * may include properties such as `closeSelector`, which is used to specify the selector for elements that can trigger the modal\n\t * to close when clicked.\n\t */\n\tprivate _addCloseEventListener(container: HTMLElement, context: HubActiveModal, options: HubModalOptions) {\n\t\tif (options.closeSelector) {\n\t\t\tconst dismissaable: NodeListOf<Element> = container.querySelectorAll(options.closeSelector);\n\t\t\tfor (const item of Array.from(dismissaable)) {\n\t\t\t\tconst clickEventListeners = item.addEventListener('click', () => context.close());\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Extracts child nodes matching a selector from a container element, removes those nodes from the DOM, and returns them as an array.\n *\n * @param {HTMLElement} container - The `container` parameter in the `extractAndRemoveNodesBySelector` function is an HTMLElement\n * that represents the parent element within which we want to search for nodes matching a specific selector and remove them.\n * @param {string} selector - The `selector` parameter in the `extractAndRemoveNodesBySelector` function is a string that\n * represents a CSS selector. This selector is used to query and select specific elements within the `container` HTMLElement.\n *\n * @returns An array of nodes that were extracted from the container element based on the provided selector, and then removes those\n * nodes from the DOM.\n */\nfunction extractAndRemoveNodesBySelector(container: HTMLElement, selector: string): Array<Node> {\n\tlet containerNodes = container.querySelectorAll(selector);\n\n\tconst nodes = Array.from(containerNodes).reduce((acc, c) => {\n\t\treturn [...acc, ...Array.from(c.childNodes)];\n\t}, [] as Array<Node>);\n\n\t// Selecciona los nodos dentro del contenedor que coincidan con el selector\n\tconst nodesToRemove = container.querySelectorAll<HTMLElement>(selector);\n\n\t// Convertir NodeList a array y eliminar cada nodo del DOM\n\tArray.from(nodesToRemove).forEach((node) => node.remove());\n\treturn nodes;\n}\n","import { inject, Injectable, Injector } from '@angular/core';\n\nimport { HubModalConfig, HubModalOptions } from './modal-config';\nimport { HubModalRef } from './modal-ref';\nimport { HubModalStack } from './modal-stack';\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\n@Injectable({ providedIn: 'root' })\nexport class HubModal {\n\tprivate _injector = inject(Injector);\n\tprivate _modalStack = inject(HubModalStack);\n\tprivate _config = inject(HubModalConfig);\n\n\t/**\n\t * Opens a new modal window with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `HubActiveModal` class. You can then\n\t * use `HubActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n\t *\n\t * Also see the [`HubModalOptions`](#/components/modal/api#HubModalOptions) for the list of supported options.\n\t */\n\topen<T = any>(content: T, options: HubModalOptions = {}): HubModalRef<T> {\n\t\tconst combinedOptions = {\n\t\t\t...this._config,\n\t\t\tanimation: this._config.animation,\n\t\t\t...options\n\t\t};\n\t\treturn this._modalStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active modal instances.\n\t */\n\tget activeInstances() {\n\t\treturn this._modalStack.activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently displayed modal windows with the supplied reason.\n\t *\n\t * @since 3.1.0\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalStack.dismissAll(reason);\n\t}\n\n\t/**\n\t * Indicates if there are currently any open modal windows in the application.\n\t *\n\t * @since 3.3.0\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalStack.hasOpenModals();\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { HubModal } from './modal';\nexport { HubModal } from './modal';\nexport { HubModalConfig } from './modal-config';\nexport type { HubModalOptions, HubModalUpdatableOptions } from './modal-config';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\nexport { HubModalPlacement } from './modal-placement';\nexport { HubActiveModal, HubModalRef } from './modal-ref';\n\n@NgModule({ providers: [HubModal] })\nexport class HubModalModule {}\n","/*\n * Public API Surface of modal\n */\nexport {\n\tModalDismissReasons,\n\tHubActiveModal,\n\tHubModal,\n\tHubModalConfig,\n\tHubModalModule,\n\tHubModalPlacement,\n\tHubModalRef\n} from './lib/modal.module';\nexport type { HubModalOptions, HubModalUpdatableOptions } from './lib/modal.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;IACS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC5B;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB;;AAEG;AACH,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AAEf;;AAEG;AACH,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX;;AAEG;AACH,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAzBW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ACiM7B;;;;;;;AAOG;MAEU,cAAc,CAAA;;AAElB,IAAA,UAAU;AAElB,IAAA,cAAc;AACd,IAAA,eAAe;IACf,QAAQ,GAAuB,IAAI;AACnC,IAAA,aAAa;AACb,IAAA,QAAQ;AACR,IAAA,SAAS,GAAsB,iBAAiB,CAAC,MAAM;AACvD,IAAA,SAAS;IACT,UAAU,GAAyD,KAAK;AACxE,IAAA,QAAQ;IACR,QAAQ,GAAG,IAAI;AACf,IAAA,UAAU;AACV,IAAA,IAAI;AACJ,IAAA,OAAO;AACP,IAAA,WAAW;AACX,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACb,IAAA,cAAc;AACd,IAAA,cAAc;IACd,eAAe,GAAW,wBAAwB;IAClD,aAAa,GAAW,sBAAsB;AAC9C,IAAA,IAAI;AAEJ,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;IAC/B;IACA,IAAI,SAAS,CAAC,SAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC5B;uGA/BY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACvMlC;;;AAGG;MAYU,gBAAgB,CAAA;AACpB,IAAA,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAA4B;AAChE,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B;;AAEG;IACM,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;AAEzC;;AAEG;AACM,IAAA,aAAa,GAAG,KAAK;iGAAU;IAExC,QAAQ,GAAA;QACP,IAAI,CAAC,KAAK,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACf,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,cAAc,EACnB,CAAC,OAAoB,EAAE,SAAkB,KAAI;gBAC5C,IAAI,SAAS,EAAE;oBACd,MAAM,CAAC,OAAO,CAAC;gBAChB;AACA,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC9D;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACH,IAAI,GAAA;QACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACrG,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;AACnB,SAAA,CAAC;IACH;uGA3CY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,4hBAPlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAOA,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,wEAAwE;AACnF,wBAAA,cAAc,EAAE,cAAc;AAC9B,wBAAA,cAAc,EAAE;AAChB;AACD,iBAAA;;;ACXD;;;;;AAKG;MACU,cAAc,CAAA;AAC1B;;;;AAIG;IACH,MAAM,CAAC,OAAiC,EAAA,EAAS;AACjD;;;;AAIG;IACH,KAAK,CAAC,MAAY,EAAA,EAAS;AAE3B;;;;AAIG;IACH,OAAO,CAAC,MAAY,EAAA,EAAS;AAC7B;AAED,MAAM,iBAAiB,GAAa;IACnC,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,UAAU;IACV,UAAU;IACV,WAAW;IACX,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,MAAM;IACN,SAAS;IACT,aAAa;IACb;CACA;AACD,MAAM,mBAAmB,GAAa,CAAC,WAAW,EAAE,eAAe,CAAC;AAEpE;;AAEG;MACU,WAAW,CAAA;AAsGd,IAAA,cAAA;AACA,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA,cAAA;AAxGD,IAAA,OAAO,GAAG,IAAI,OAAO,EAAO;AAC5B,IAAA,UAAU,GAAG,IAAI,OAAO,EAAO;AAC/B,IAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;AAC7B,IAAA,QAAQ;AACR,IAAA,OAAO;IAEP,mBAAmB,CAAC,kBAAgD,EAAE,OAAwB,EAAA;AACrG,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;YAChD,MAAM,IAAI,GAAQ,OAAc;YAChC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,qBAAqB,CAAC,oBAAoD,EAAE,OAAwB,EAAA;AAC3G,QAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAI;YAClD,MAAM,IAAI,GAAQ,OAAc;YAChC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D;AACD,QAAA,CAAC,CAAC;IACH;AAEA;;;;AAIG;AACH,IAAA,MAAM,CAAC,OAAiC,EAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QACtD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;QAC3D;IACD;AAEA;;;;AAIG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ;QAC9C;IACD;AAEA;;AAEG;AACH,IAAA,MAAM;AAEN;;;;;;AAMG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACnC;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;IACzD;AAEA,IAAA,WAAA,CACS,cAA4C,EAC5C,WAAuB,EACvB,gBAAiD,EACjD,cAAiD,EAAA;QAHjD,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,cAAc,GAAd,cAAc;QAEtB,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACtB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAK,EAAE,CAAC,CAAC;IACjC;AAEA;;;;AAIG;AACH,IAAA,KAAK,CAAC,MAAY,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE;QAC5B;IACD;AAEQ,IAAA,QAAQ,CAAC,MAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE;IAC5B;AAEA;;;;AAIG;AACH,IAAA,OAAO,CAAC,MAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtB;iBAAO;AACN,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAA,IAAI,SAAS,CAAC,OAAc,CAAC,EAAE;AAC7B,oBAAA,OAA4B,CAAC,IAAI,CACjC,CAAC,MAAM,KAAI;AACV,wBAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACrB,4BAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACtB;AACD,oBAAA,CAAC,EACD,MAAK,EAAE,CAAC,CACR;gBACF;AAAO,qBAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtB;YACD;QACD;IACD;IAEQ,oBAAoB,GAAA;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7D,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;;AAGzG,QAAA,iBAAiB,CAAC,SAAS,CAAC,MAAK;YAChC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;AACtD,YAAA,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE;AAEpC,YAAA,IAAI,CAAC,cAAc,GAAQ,IAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAQ,IAAI;AAC7B,QAAA,CAAC,CAAC;;AAGF,QAAA,mBAAmB,CAAC,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACxD,gBAAA,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC;AACpD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,GAAQ,IAAI;YAClC;AACD,QAAA,CAAC,CAAC;;QAGF,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACxB,QAAA,CAAC,CAAC;IACH;AACA;;IC3PW;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC9B,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACJ,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ACmB/B;;;;AAIG;MAkDU,cAAc,CAAA;AAClB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,EAAC,UAAuB,EAAC;AACxC,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEtB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,YAAY,GAAmB,IAAI,CAAC;AAE3B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;IACjE,kBAAkB,GAAG,SAAS,CAA0B,iBAAiB;2FAAC;IAC1E,gBAAgB,GAAG,SAAS,CAA0B,eAAe;yFAAC;IACtE,kBAAkB,GAAG,SAAS,CAA0B,iBAAiB;2FAAC;IAC1E,cAAc,GAAG,SAAS,CAAgC,aAAa;uFAAC;AAEzF;;AAEG;IACM,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;AAEzC;;AAEG;AACM,IAAA,cAAc,GAAG,KAAK;kGAAU;AAEzC;;AAEG;AACM,IAAA,eAAe,GAAG,KAAK;mGAAU;AAE1C;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAmB,IAAI;iFAAC;AAEjD;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK;4FAAW;AAEpC;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAoB,iBAAiB,CAAC,MAAM;kFAAC;AAEvE;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK;8FAAoB;AAE/C;;AAEG;IACM,QAAQ,GAAG,KAAK,CAAC,IAAI;iFAAC;AAE/B;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK;8FAAW;AAEtC;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK;wFAAU;AAE/B;;;;AAIG;AACM,IAAA,OAAO,GAAG,KAAK;2FAAU;AAElC;;AAEG;AACM,IAAA,WAAW,GAAG,KAAK;+FAAU;AAEtC;;AAEG;AACM,IAAA,gBAAgB,GAAG,KAAK;oGAAU;AAE3C,IAAA,aAAa;AAEb;;AAEG;IACM,YAAY,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAEpD;;AAEG;AACH,IAAA,KAAK,GAAG,IAAI,OAAO,EAAQ;AAE3B;;AAEG;AACH,IAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;AAE5B;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,UAAU,KAAK;AACrB,cAAE;AACF,cAAE,QAAQ,CAAC,UAAU;kBAClB,CAAA,+BAAA,EAAkC,UAAU,CAAA,KAAA;kBAC5C,EAAE;IACP;AAEA;;AAEG;AACH,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,SAAS,IAAI,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAG,iCAAiC,SAAS,CAAA,CAAE,GAAG,EAAE;IAC/G;AAEA;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,SAAS,IAAI,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAG,yBAAyB,SAAS,CAAA,CAAE,GAAG,EAAE;IACvG;AAEA;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACrB,YAAA,OAAO,EAAE;QACV;AAEA,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;YACvB,KAAK,iBAAiB,CAAC,KAAK;YAC5B,KAAK,iBAAiB,CAAC,GAAG;AACzB,gBAAA,OAAO,uCAAuC;YAC/C,KAAK,iBAAiB,CAAC,GAAG;YAC1B,KAAK,iBAAiB,CAAC,MAAM;AAC5B,gBAAA,OAAO,EAAE;YACV,KAAK,iBAAiB,CAAC,MAAM;AAC7B,YAAA;AACC,gBAAA,OAAO,8BAA8B;;IAExC;AAEA;;;;AAIG;AACH,IAAA,OAAO,CAAC,MAAW,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEA;;;;;AAKG;AACH,IAAA,aAAa,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAW,EAAA;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa;QAC5D,IAAI,CAAC,aAAa,EAAE;YACnB;QACD;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;YAC3C;QACD;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,IAAI,IAAI;QAEhE,IAAI,eAAe,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;QAC3C,IAAI,eAAe,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC;QAChD;IACD;IAEA,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;QAChD,IAAI,CAAC,KAAK,CAAC;AACT,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,KAAK,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE;IAC7B;AAEA;;;;;AAKG;IACH,IAAI,GAAA;AACH,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AACrC,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;SACnB;QAED,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,aAAa,EACb,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAC5C,OAAO,CACP;QACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,QAAO,CAAC,EAAE,OAAO,CAAC;QAEzG,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AAC9D,QAAA,YAAY,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,OAAO,YAAY;IACpB;IAEQ,KAAK,GAAA;AACZ,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,iBAAiB,EAAE;SACnB;AAED,QAAA,MAAM,iBAAiB,GAAG,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,OAAoB,EAAE,SAAkB,KAAI;YAC5C,IAAI,SAAS,EAAE;gBACd,MAAM,CAAC,OAAO,CAAC;YAChB;AACA,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,CAAC,EACD,OAAO,CACP;QACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,QAAO,CAAC,EAAE,OAAO,CAAC;QAEzG,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACtB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,SAAS,EAAE;IACjB;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,SAAS,CAAgB,aAAa,EAAE,SAAS;iBAC/C,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;AAEjC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACpB,qBAAqB,CAAC,MAAK;AAC1B,wBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AAC5B,4BAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;wBAC5D;AACD,oBAAA,CAAC,CAAC;gBACH;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;oBACxC,IAAI,CAAC,aAAa,EAAE;gBACrB;AACD,YAAA,CAAC,CAAC;;;YAIH,IAAI,YAAY,GAAG,KAAK;YACxB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,WAAW;AAC/D,iBAAA,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,OAAO,YAAY,GAAG,KAAK,CAAC,CAAC,EACjC,SAAS,CAAC,MAAM,SAAS,CAAa,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EACxG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,aAAa,KAAK,MAAM,CAAC;iBAEhD,SAAS,CAAC,MAAK;gBACf,YAAY,GAAG,IAAI;AACpB,YAAA,CAAC,CAAC;;;;;AAMH,YAAA,SAAS,CAAa,aAAa,EAAE,OAAO;AAC1C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;AACzB,gBAAA,IAAI,aAAa,KAAK,MAAM,EAAE;AAC7B,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,oBAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;wBAC1B,IAAI,CAAC,aAAa,EAAE;oBACrB;AAAO,yBAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AAC9C,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;oBACvE;gBACD;gBAEA,YAAY,GAAG,KAAK;AACrB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACH;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;IAEQ,SAAS,GAAA;AAChB,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;QACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACpD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA,cAAA,CAAgB,CAAgB;YAClF,MAAM,cAAc,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAErE,YAAA,MAAM,cAAc,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa;YACvE,cAAc,CAAC,KAAK,EAAE;QACvB;IACD;IAEQ,aAAa,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;AAErC,QAAA,IAAI,cAA2B;QAC/B,IAAI,WAAW,YAAY,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrE,cAAc,GAAG,WAAW;QAC7B;aAAO;YACN,cAAc,GAAG,IAA8B;QAChD;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YACjC,UAAU,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA,CAAC,CAAC;IACH;IAEQ,aAAa,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AACjC,YAAA,gBAAgB,CACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,CAAC,EAAE,SAAS,EAAE,KAAI;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAClC,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACnD,YAAA,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAC9D;QACF;IACD;AAEQ,IAAA,YAAY,CAAC,SAAsB,EAAE,KAAa,EAAE,UAAwB,EAAA;AACnF,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACtB,IAAI,UAAU,EAAE;AACf,gBAAA,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;YACzC;iBAAO;AACN,gBAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5B;AACD,QAAA,CAAC,CAAC;IACH;uGAjXY,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,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,yIAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wolBAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAIW,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjD1B,SAAS;+BACC,kBAAkB,EAAA,OAAA,EACnB,EAAE,EAAA,IAAA,EACL;AACL,wBAAA,SAAS,EACR,+HAA+H;AAChI,wBAAA,cAAc,EAAE,aAAa;AAC7B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,yBAAyB,EAAE;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCT,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,wolBAAA,CAAA,EAAA;AAWoC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,QAAQ,4EACR,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACnB,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACb,iBAAiB,wEACf,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/DzF;;;;AAIG;MAEU,aAAa,CAAA;AACjB,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAE9B,IAAA,2BAA2B,GAAG,IAAI,OAAO,EAAQ;AACjD,IAAA,iBAAiB,GAAgC,IAAI,GAAG,EAAE;IAC1D,mBAAmB,GAAwB,IAAI;IAC/C,UAAU,GAAkB,EAAE;IAC9B,YAAY,GAAmC,EAAE;AACjD,IAAA,gBAAgB,GAAgC,IAAI,YAAY,EAAE;AAE1E,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;AAG7B,QAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAK;AAC/C,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7B,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACxE,gBAAA,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC;gBAC/F,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7D;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,iBAAiB,GAAA;AACxB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;QACnD,IAAI,kBAAkB,EAAE;AACvB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,YAAA,kBAAkB,EAAE;QACrB;IACD;IAEQ,cAAc,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAClD;IACD;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAC,eAAyB,EAAE,OAAY,EAAE,OAAwB,EAAA;AACrE,QAAA,MAAM,WAAW,GAChB,OAAO,CAAC,SAAS,YAAY;cAC1B,OAAO,CAAC;AACV,cAAE,SAAS,CAAC,OAAO,CAAC,SAAS;kBAC1B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAU;AACjD,kBAAE,IAAI,CAAC,SAAS,CAAC,IAAI;QAExB,IAAI,CAAC,WAAW,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAA,2BAAA,CAA6B,CAAC;QAC5G;QAEA,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE;AAExC,QAAA,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe;AACrD,QAAA,MAAM,mBAAmB,GAAG,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB;AACvG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QAE3G,MAAM,eAAe,GACpB,OAAO,CAAC,QAAQ,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,SAAS;AAC3E,QAAA,MAAM,aAAa,GAAiC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;AACvH,QAAA,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;AAEnH,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;;;;QAKvC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACtD,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;YACzB;QACD,CAAC,CAAC,CACF;AAED,QAAA,WAAW,CAAC,KAAK,GAAG,CAAC,MAAW,KAAI;AACnC,YAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC;AACD,QAAA,WAAW,CAAC,OAAO,GAAG,CAAC,MAAW,KAAI;AACrC,YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,MAAM,GAAG,CAAC,OAAiC,KAAI;AAC1D,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD;AAEA,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE;AAChD,YAAA,eAAe,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAClD;AACA,QAAA,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC/C,QAAA,OAAO,WAAW;IACnB;AAEA;;;;AAIG;AACH,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB;IAC7B;AAEA;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE;AAEA;;;;AAIG;IACH,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;IAClC;AAEQ,IAAA,eAAe,CAAC,WAAoB,EAAA;AAC3C,QAAA,IAAI,eAAe,GAAG,eAAe,CAAC,gBAAgB,EAAE;AACvD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC;QACzD,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC/D,QAAA,OAAO,eAAe;IACvB;AAEQ,IAAA,sBAAsB,CAC7B,WAAoB,EACpB,YAAsB,EACtB,OAAwB,EAAA;QAExB,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc;AACxE,QAAA,IAAI,aAAa,GAAG,eAAe,CAAC,cAAc,EAAE;AACnD,YAAA,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC;QAExD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;QACvD,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7D,QAAA,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC/C,QAAA,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;AAClD,QAAA,OAAO,aAAa;IACrB;IAEQ,cAAc,CACrB,eAAyB,EACzB,mBAAwC,EACxC,OAA8C,EAC9C,WAA2B,EAC3B,OAAwB,EAAA;QAExB,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;QAC1B;AAAO,aAAA,IAAI,OAAO,YAAY,WAAW,EAAE;YAC1C,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QAClE;AAAO,aAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACvC;aAAO;AACN,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;QACtG;IACD;AAEQ,IAAA,sBAAsB,CAC7B,WAA6B,EAC7B,WAA2B,EAC3B,OAAwB,EAAA;AAExB,QAAA,MAAM,OAAO,GAAG;AACf,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,KAAK,CAAC,MAAW,EAAA;AAChB,gBAAA,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,CAAC;AACD,YAAA,OAAO,CAAC,MAAW,EAAA;AAClB,gBAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B;SACA;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC;QAExC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;QAC5D,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAE1C,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC;QACrE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAc,EAAE,OAAO,CAAC;QAEnE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;AACpG,YAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACpC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;SAClG,EACD,OAAO,CACP;IACF;AAEQ,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC;QAC7D,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC;IAEQ,oBAAoB,CAC3B,eAAyB,EACzB,mBAAwC,EACxC,aAAwB,EACxB,OAAuB,EACvB,OAAwB,EAAA;AAExB,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3D,YAAA,MAAM,EAAE;AACR,SAAA,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE;YACnD,mBAAmB;YACnB;AACA,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACpC,IAAI,EAAE,OAAO,CAAC;AACd,aAAA,CAAC;QACH;AAEA,QAAA,MAAM,iBAAiB,GAAgB,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC1E,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC7D;QACA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;QAEtD,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC;QAClE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,OAAc,EAAE,OAAO,CAAC;;;QAIvE,OAAO,IAAI,UAAU,CACpB;AACC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;AACxG,YAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACxC,YAAA,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;AACtG,SAAA,EACD,YAAY,CAAC,QAAQ,EACrB,YAAY,CACZ;IACF;AAEQ,IAAA,cAAc,CAAC,OAAgB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa;QACpC,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9C,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC/C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACxE,oBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC5C;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5B;IACD;IAEQ,iBAAiB,GAAA;QACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,KAAI;YACjD,IAAI,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;YAC3C;iBAAO;AACN,gBAAA,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC;YACvC;AACD,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAC/B;AAEQ,IAAA,iBAAiB,CAAC,WAAwB,EAAA;QACjD,MAAM,kBAAkB,GAAG,MAAK;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AAClD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C;AACD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChE;AAEQ,IAAA,mBAAmB,CAAC,aAA2C,EAAA;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;AAEvC,QAAA,aAAa,CAAC,SAAS,CAAC,MAAK;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;YACxC;AACD,QAAA,CAAC,CAAC;IACH;AAEA;;;;;;;;;;;AAWG;AACK,IAAA,wBAAwB,CAAC,SAAsB,EAAE,OAAuB,EAAE,OAAwB,EAAA;AACzG,QAAA,IAAI,OAAO,CAAC,eAAe,EAAE;YAC5B,MAAM,YAAY,GAAwB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC;YAC7F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxD;QACD;IACD;AAEA;;;;;;;;;;;AAWG;AACK,IAAA,sBAAsB,CAAC,SAAsB,EAAE,OAAuB,EAAE,OAAwB,EAAA;AACvG,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;YAC1B,MAAM,YAAY,GAAwB,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC5C,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAClF;QACD;IACD;uGA3WY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA+WlC;;;;;;;;;;AAUG;AACH,SAAS,+BAA+B,CAAC,SAAsB,EAAE,QAAgB,EAAA;IAChF,IAAI,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAEzD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC1D,QAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC,EAAE,EAAiB,CAAC;;IAGrB,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAc,QAAQ,CAAC;;AAGvE,IAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1D,IAAA,OAAO,KAAK;AACb;;AC5ZA;;;;;AAKG;MAEU,QAAQ,CAAA;AACZ,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAU,OAAU,EAAE,OAAA,GAA2B,EAAE,EAAA;AACtD,QAAA,MAAM,eAAe,GAAG;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACjC,YAAA,GAAG;SACH;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC;IACvE;AAEA;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe;IACxC;AAEA;;;;AAIG;AACH,IAAA,UAAU,CAAC,MAAY,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;IACpC;AAEA;;;;AAIG;IACH,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;IACxC;uGA9CY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cADK,MAAM,EAAA,CAAA;;2FACnB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCFrB,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAd,cAAc,EAAA,CAAA;wGAAd,cAAc,EAAA,SAAA,EADJ,CAAC,QAAQ,CAAC,EAAA,CAAA;;2FACpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;;;ACTnC;;AAEG;;ACFH;;AAEG;;;;"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-hub-ui-modal",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.1.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=16.0.0",
|
|
6
6
|
"@angular/core": ">=16.0.0",
|
|
@@ -24,16 +24,17 @@
|
|
|
24
24
|
"decoupled",
|
|
25
25
|
"independent"
|
|
26
26
|
],
|
|
27
|
-
"description": "Standalone
|
|
27
|
+
"description": "Standalone, signal-based modal/dialog service and components for Angular (ng-hub-ui family).",
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|
|
30
30
|
"url": "git+https://github.com/carlos-morcillo/ng-hub-ui-modal.git"
|
|
31
31
|
},
|
|
32
|
-
"author": "Carlos Morcillo <carlos.morcillo@me.com>",
|
|
32
|
+
"author": "Carlos Morcillo <carlos.morcillo@me.com> (https://www.carlosmorcillo.com)",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"bugs": {
|
|
35
35
|
"url": "https://github.com/carlos-morcillo/ng-hub-ui-modal/issues"
|
|
36
36
|
},
|
|
37
|
+
"homepage": "https://hubui.dev/",
|
|
37
38
|
"module": "fesm2022/ng-hub-ui-modal.mjs",
|
|
38
39
|
"typings": "types/ng-hub-ui-modal.d.ts",
|
|
39
40
|
"exports": {
|
|
@@ -44,5 +45,6 @@
|
|
|
44
45
|
"types": "./types/ng-hub-ui-modal.d.ts",
|
|
45
46
|
"default": "./fesm2022/ng-hub-ui-modal.mjs"
|
|
46
47
|
}
|
|
47
|
-
}
|
|
48
|
+
},
|
|
49
|
+
"type": "module"
|
|
48
50
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// hub-modal-theme — one-call theming for `<hub-modal>` dialogs
|
|
3
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// Override any of the `--hub-modal-*` design tokens in a single include. Every
|
|
6
|
+
// parameter is OPTIONAL and defaults to `null`: only the parameters you pass
|
|
7
|
+
// are emitted, so the rest keep the component's defaults. Token-based and
|
|
8
|
+
// self-contained (no Bootstrap dependencies).
|
|
9
|
+
//
|
|
10
|
+
// Because modals are opened through the `HubModal` service, theme them on the
|
|
11
|
+
// class you pass as `windowClass` (or on `.hub-modal` to theme them all):
|
|
12
|
+
//
|
|
13
|
+
// @example
|
|
14
|
+
//
|
|
15
|
+
// @use 'ng-hub-ui-modal/styles/mixins/modal-theme' as *;
|
|
16
|
+
//
|
|
17
|
+
// .branded-dialog {
|
|
18
|
+
// @include hub-modal-theme(
|
|
19
|
+
// $accent: var(--hub-sys-color-success),
|
|
20
|
+
// $bg: #f6fff9,
|
|
21
|
+
// $border-color: #b7e4c7,
|
|
22
|
+
// $border-radius: 0.75rem,
|
|
23
|
+
// $box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, 0.2)
|
|
24
|
+
// );
|
|
25
|
+
// }
|
|
26
|
+
//
|
|
27
|
+
// // this.modal.open(MyDialog, { windowClass: 'branded-dialog' });
|
|
28
|
+
//
|
|
29
|
+
// scss-docs-start hub-modal-theme
|
|
30
|
+
@mixin hub-modal-theme(
|
|
31
|
+
// ── Semantic accent (top bar + tinted bg/border/title under a variant) ──
|
|
32
|
+
$accent: null,
|
|
33
|
+
$accent-subtle: null,
|
|
34
|
+
$accent-border: null,
|
|
35
|
+
$accent-bar-width: null,
|
|
36
|
+
// ── Dialog surface ──
|
|
37
|
+
$bg: null,
|
|
38
|
+
$color: null,
|
|
39
|
+
$title-color: null,
|
|
40
|
+
$border-color: null,
|
|
41
|
+
$border-width: null,
|
|
42
|
+
$border-radius: null,
|
|
43
|
+
$box-shadow: null,
|
|
44
|
+
$max-width: null,
|
|
45
|
+
// ── Header ──
|
|
46
|
+
$header-padding-x: null,
|
|
47
|
+
$header-padding-y: null,
|
|
48
|
+
$header-gap: null,
|
|
49
|
+
$header-border-color: null,
|
|
50
|
+
// ── Body ──
|
|
51
|
+
$body-padding-x: null,
|
|
52
|
+
$body-padding-y: null,
|
|
53
|
+
// ── Footer ──
|
|
54
|
+
$footer-padding-x: null,
|
|
55
|
+
$footer-padding-y: null,
|
|
56
|
+
$footer-gap: null,
|
|
57
|
+
$footer-border-color: null,
|
|
58
|
+
// ── Backdrop ──
|
|
59
|
+
$backdrop-bg: null
|
|
60
|
+
) {
|
|
61
|
+
// Semantic accent
|
|
62
|
+
@if $accent != null {
|
|
63
|
+
--hub-modal-accent: #{$accent};
|
|
64
|
+
}
|
|
65
|
+
@if $accent-subtle != null {
|
|
66
|
+
--hub-modal-accent-subtle: #{$accent-subtle};
|
|
67
|
+
}
|
|
68
|
+
@if $accent-border != null {
|
|
69
|
+
--hub-modal-accent-border: #{$accent-border};
|
|
70
|
+
}
|
|
71
|
+
@if $accent-bar-width != null {
|
|
72
|
+
--hub-modal-accent-bar-width: #{$accent-bar-width};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Dialog surface
|
|
76
|
+
@if $bg != null {
|
|
77
|
+
--hub-modal-bg: #{$bg};
|
|
78
|
+
}
|
|
79
|
+
@if $color != null {
|
|
80
|
+
--hub-modal-color: #{$color};
|
|
81
|
+
}
|
|
82
|
+
@if $title-color != null {
|
|
83
|
+
--hub-modal-title-color: #{$title-color};
|
|
84
|
+
}
|
|
85
|
+
@if $border-color != null {
|
|
86
|
+
--hub-modal-border-color: #{$border-color};
|
|
87
|
+
}
|
|
88
|
+
@if $border-width != null {
|
|
89
|
+
--hub-modal-border-width: #{$border-width};
|
|
90
|
+
}
|
|
91
|
+
@if $border-radius != null {
|
|
92
|
+
--hub-modal-border-radius: #{$border-radius};
|
|
93
|
+
}
|
|
94
|
+
@if $box-shadow != null {
|
|
95
|
+
--hub-modal-box-shadow: #{$box-shadow};
|
|
96
|
+
}
|
|
97
|
+
@if $max-width != null {
|
|
98
|
+
--hub-modal-max-width: #{$max-width};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Header
|
|
102
|
+
@if $header-padding-x != null {
|
|
103
|
+
--hub-modal-header-padding-x: #{$header-padding-x};
|
|
104
|
+
}
|
|
105
|
+
@if $header-padding-y != null {
|
|
106
|
+
--hub-modal-header-padding-y: #{$header-padding-y};
|
|
107
|
+
}
|
|
108
|
+
@if $header-gap != null {
|
|
109
|
+
--hub-modal-header-gap: #{$header-gap};
|
|
110
|
+
}
|
|
111
|
+
@if $header-border-color != null {
|
|
112
|
+
--hub-modal-header-border-color: #{$header-border-color};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Body
|
|
116
|
+
@if $body-padding-x != null {
|
|
117
|
+
--hub-modal-body-padding-x: #{$body-padding-x};
|
|
118
|
+
}
|
|
119
|
+
@if $body-padding-y != null {
|
|
120
|
+
--hub-modal-body-padding-y: #{$body-padding-y};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Footer
|
|
124
|
+
@if $footer-padding-x != null {
|
|
125
|
+
--hub-modal-footer-padding-x: #{$footer-padding-x};
|
|
126
|
+
}
|
|
127
|
+
@if $footer-padding-y != null {
|
|
128
|
+
--hub-modal-footer-padding-y: #{$footer-padding-y};
|
|
129
|
+
}
|
|
130
|
+
@if $footer-gap != null {
|
|
131
|
+
--hub-modal-footer-gap: #{$footer-gap};
|
|
132
|
+
}
|
|
133
|
+
@if $footer-border-color != null {
|
|
134
|
+
--hub-modal-footer-border-color: #{$footer-border-color};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Backdrop
|
|
138
|
+
@if $backdrop-bg != null {
|
|
139
|
+
--hub-modal-backdrop-bg: #{$backdrop-bg};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// scss-docs-end hub-modal-theme
|
|
@@ -123,6 +123,18 @@ interface HubModalOptions {
|
|
|
123
123
|
* Size of a new modal window.
|
|
124
124
|
*/
|
|
125
125
|
size?: 'sm' | 'lg' | 'xl' | string;
|
|
126
|
+
/**
|
|
127
|
+
* Semantic accent of the modal, for meaningful dialogs (a destructive
|
|
128
|
+
* confirmation, a success notice…). Adds a coloured top bar to the dialog by
|
|
129
|
+
* applying the `hub-modal--<variant>` class to the window.
|
|
130
|
+
*
|
|
131
|
+
* The built-in values (`'primary'` · `'success'` · `'danger'` · `'warning'`
|
|
132
|
+
* · `'info'`) map to the design-system colours, but **any string is accepted**
|
|
133
|
+
* — the modal reads `--hub-sys-color-<variant>` from the host application.
|
|
134
|
+
*
|
|
135
|
+
* If not specified, the modal is rendered neutral (no accent bar).
|
|
136
|
+
*/
|
|
137
|
+
variant?: 'primary' | 'success' | 'danger' | 'warning' | 'info' | (string & {});
|
|
126
138
|
/**
|
|
127
139
|
* A custom class to append to the modal window.
|
|
128
140
|
*/
|
|
@@ -173,7 +185,7 @@ interface HubModalOptions {
|
|
|
173
185
|
*
|
|
174
186
|
* @since 14.2.0
|
|
175
187
|
*/
|
|
176
|
-
type HubModalUpdatableOptions = Pick<HubModalOptions, 'ariaLabelledBy' | 'ariaDescribedBy' | 'centered' | 'placement' | 'fullscreen' | 'backdropClass' | 'size' | 'windowClass' | 'modalDialogClass'>;
|
|
188
|
+
type HubModalUpdatableOptions = Pick<HubModalOptions, 'ariaLabelledBy' | 'ariaDescribedBy' | 'centered' | 'placement' | 'fullscreen' | 'backdropClass' | 'size' | 'variant' | 'windowClass' | 'modalDialogClass'>;
|
|
177
189
|
/**
|
|
178
190
|
* A configuration service for the [`HubModal`](#/components/modal/api#HubModal) service.
|
|
179
191
|
*
|
|
@@ -196,6 +208,7 @@ declare class HubModalConfig implements Required<HubModalOptions> {
|
|
|
196
208
|
keyboard: boolean;
|
|
197
209
|
scrollable: boolean;
|
|
198
210
|
size: 'sm' | 'lg' | 'xl' | string;
|
|
211
|
+
variant: 'primary' | 'success' | 'danger' | 'warning' | 'info' | (string & {});
|
|
199
212
|
windowClass: string;
|
|
200
213
|
modalDialogClass: string;
|
|
201
214
|
backdropClass: string;
|
|
@@ -292,6 +305,12 @@ declare class HubModalWindow implements OnInit, OnDestroy {
|
|
|
292
305
|
* Specifies the size of the modal (`'sm'`, `'lg'`, `'xl'`, etc.).
|
|
293
306
|
*/
|
|
294
307
|
readonly size: _angular_core.InputSignal<string | undefined>;
|
|
308
|
+
/**
|
|
309
|
+
* Semantic accent of the modal (`'primary'`, `'success'`, `'danger'`,
|
|
310
|
+
* `'warning'`, `'info'`, or any custom token name). Applies the
|
|
311
|
+
* `hub-modal--<variant>` class, which paints an accent top bar on the dialog.
|
|
312
|
+
*/
|
|
313
|
+
readonly variant: _angular_core.InputSignal<string | undefined>;
|
|
295
314
|
/**
|
|
296
315
|
* A custom CSS class to append to the modal window wrapper.
|
|
297
316
|
*/
|
|
@@ -359,7 +378,7 @@ declare class HubModalWindow implements OnInit, OnDestroy {
|
|
|
359
378
|
private _bumpBackdrop;
|
|
360
379
|
private _appendNodes;
|
|
361
380
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubModalWindow, never>;
|
|
362
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HubModalWindow, "hub-modal-window", never, { "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "centered": { "alias": "centered"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "keyboard": { "alias": "keyboard"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "windowClass": { "alias": "windowClass"; "required": false; "isSignal": true; }; "modalDialogClass": { "alias": "modalDialogClass"; "required": false; "isSignal": true; }; }, { "dismissEvent": "dismiss"; }, never, never, true, never>;
|
|
381
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HubModalWindow, "hub-modal-window", never, { "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "centered": { "alias": "centered"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "keyboard": { "alias": "keyboard"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "windowClass": { "alias": "windowClass"; "required": false; "isSignal": true; }; "modalDialogClass": { "alias": "modalDialogClass"; "required": false; "isSignal": true; }; }, { "dismissEvent": "dismiss"; }, never, never, true, never>;
|
|
363
382
|
}
|
|
364
383
|
|
|
365
384
|
/**
|