@tolle_/tolle-ui 0.0.32-beta → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2022/lib/alert-dialog-dynamic.component.mjs +82 -0
  2. package/esm2022/lib/alert-dialog.component.mjs +278 -0
  3. package/esm2022/lib/alert-dialog.service.mjs +39 -0
  4. package/esm2022/lib/alert-dialog.types.mjs +10 -0
  5. package/esm2022/lib/carousel/carousel.component.mjs +199 -0
  6. package/esm2022/lib/carousel/index.mjs +2 -0
  7. package/esm2022/lib/collapsible.component.mjs +147 -0
  8. package/esm2022/lib/data-table.component.mjs +233 -173
  9. package/esm2022/lib/date-picker.component.mjs +3 -5
  10. package/esm2022/lib/hover-card.component.mjs +185 -0
  11. package/esm2022/lib/label.component.mjs +41 -0
  12. package/esm2022/lib/otp.component.mjs +12 -5
  13. package/esm2022/lib/pagination.component.mjs +4 -1
  14. package/esm2022/lib/progress.component.mjs +53 -0
  15. package/esm2022/lib/scroll-area.component.mjs +49 -0
  16. package/esm2022/lib/segment.component.mjs +19 -3
  17. package/esm2022/lib/separator.component.mjs +42 -0
  18. package/esm2022/lib/sheet-ref.mjs +36 -0
  19. package/esm2022/lib/sheet-wrapper.component.mjs +142 -0
  20. package/esm2022/lib/sheet.component.mjs +262 -0
  21. package/esm2022/lib/sheet.service.mjs +48 -0
  22. package/esm2022/lib/sheet.types.mjs +2 -0
  23. package/esm2022/lib/slider.component.mjs +234 -0
  24. package/esm2022/lib/tabs.component.mjs +176 -0
  25. package/esm2022/lib/toaster.component.mjs +50 -19
  26. package/esm2022/lib/toggle-group.component.mjs +173 -0
  27. package/esm2022/lib/toggle.component.mjs +122 -0
  28. package/esm2022/public-api.mjs +21 -1
  29. package/fesm2022/tolle-ui.mjs +2690 -354
  30. package/fesm2022/tolle-ui.mjs.map +1 -1
  31. package/lib/alert-dialog-dynamic.component.d.ts +10 -0
  32. package/lib/alert-dialog.component.d.ts +74 -0
  33. package/lib/alert-dialog.service.d.ts +9 -0
  34. package/lib/alert-dialog.types.d.ts +13 -0
  35. package/lib/carousel/carousel.component.d.ts +63 -0
  36. package/lib/carousel/index.d.ts +1 -0
  37. package/lib/collapsible.component.d.ts +31 -0
  38. package/lib/data-table.component.d.ts +5 -3
  39. package/lib/hover-card.component.d.ts +42 -0
  40. package/lib/label.component.d.ts +8 -0
  41. package/lib/otp.component.d.ts +4 -1
  42. package/lib/progress.component.d.ts +8 -0
  43. package/lib/scroll-area.component.d.ts +10 -0
  44. package/lib/segment.component.d.ts +5 -2
  45. package/lib/separator.component.d.ts +9 -0
  46. package/lib/sheet-ref.d.ts +18 -0
  47. package/lib/sheet-wrapper.component.d.ts +17 -0
  48. package/lib/sheet.component.d.ts +52 -0
  49. package/lib/sheet.service.d.ts +11 -0
  50. package/lib/sheet.types.d.ts +28 -0
  51. package/lib/slider.component.d.ts +35 -0
  52. package/lib/tabs.component.d.ts +42 -0
  53. package/lib/toaster.component.d.ts +7 -0
  54. package/lib/toggle-group.component.d.ts +41 -0
  55. package/lib/toggle.component.d.ts +30 -0
  56. package/package.json +3 -2
  57. package/public-api.d.ts +20 -0
  58. package/theme.css +142 -13
@@ -0,0 +1,82 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { AlertDialogComponent, AlertDialogContentComponent, AlertDialogHeaderComponent, AlertDialogTitleComponent, AlertDialogDescriptionComponent, AlertDialogFooterComponent, AlertDialogCancelComponent, AlertDialogActionComponent } from './alert-dialog.component';
4
+ import { ButtonComponent } from './button.component';
5
+ import * as i0 from "@angular/core";
6
+ export class AlertDialogDynamicComponent {
7
+ config;
8
+ dialogRef;
9
+ onOpenChange(open) {
10
+ if (!open) {
11
+ this.close(false);
12
+ }
13
+ }
14
+ close(result) {
15
+ this.dialogRef.close(result);
16
+ }
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogDynamicComponent, isStandalone: true, selector: "tolle-alert-dialog-dynamic", ngImport: i0, template: `
19
+ <tolle-alert-dialog [open]="true" (openChange)="onOpenChange($event)">
20
+ <tolle-alert-dialog-content>
21
+ <tolle-alert-dialog-header>
22
+ <tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
23
+ <tolle-alert-dialog-description>
24
+ {{ config.description }}
25
+ </tolle-alert-dialog-description>
26
+ </tolle-alert-dialog-header>
27
+ <tolle-alert-dialog-footer>
28
+ <tolle-alert-dialog-cancel (click)="close(false)">
29
+ <tolle-button variant="outline">{{ config.cancelText || 'Cancel' }}</tolle-button>
30
+ </tolle-alert-dialog-cancel>
31
+ <tolle-alert-dialog-action (click)="close(true)">
32
+ <tolle-button [variant]="config.variant === 'destructive' ? 'destructive' : 'default'">
33
+ {{ config.actionText || 'Continue' }}
34
+ </tolle-button>
35
+ </tolle-alert-dialog-action>
36
+ </tolle-alert-dialog-footer>
37
+ </tolle-alert-dialog-content>
38
+ </tolle-alert-dialog>
39
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AlertDialogComponent, selector: "tolle-alert-dialog", inputs: ["open"], outputs: ["openChange"] }, { kind: "component", type: AlertDialogContentComponent, selector: "tolle-alert-dialog-content", inputs: ["class"] }, { kind: "component", type: AlertDialogHeaderComponent, selector: "tolle-alert-dialog-header", inputs: ["class"] }, { kind: "component", type: AlertDialogTitleComponent, selector: "tolle-alert-dialog-title", inputs: ["class"] }, { kind: "component", type: AlertDialogDescriptionComponent, selector: "tolle-alert-dialog-description", inputs: ["class"] }, { kind: "component", type: AlertDialogFooterComponent, selector: "tolle-alert-dialog-footer", inputs: ["class"] }, { kind: "component", type: AlertDialogCancelComponent, selector: "tolle-alert-dialog-cancel" }, { kind: "component", type: AlertDialogActionComponent, selector: "tolle-alert-dialog-action" }, { kind: "component", type: ButtonComponent, selector: "tolle-button", inputs: ["class", "variant", "size", "disabled", "busy"] }] });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDynamicComponent, decorators: [{
42
+ type: Component,
43
+ args: [{
44
+ selector: 'tolle-alert-dialog-dynamic',
45
+ standalone: true,
46
+ imports: [
47
+ CommonModule,
48
+ AlertDialogComponent,
49
+ AlertDialogContentComponent,
50
+ AlertDialogHeaderComponent,
51
+ AlertDialogTitleComponent,
52
+ AlertDialogDescriptionComponent,
53
+ AlertDialogFooterComponent,
54
+ AlertDialogCancelComponent,
55
+ AlertDialogActionComponent,
56
+ ButtonComponent
57
+ ],
58
+ template: `
59
+ <tolle-alert-dialog [open]="true" (openChange)="onOpenChange($event)">
60
+ <tolle-alert-dialog-content>
61
+ <tolle-alert-dialog-header>
62
+ <tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
63
+ <tolle-alert-dialog-description>
64
+ {{ config.description }}
65
+ </tolle-alert-dialog-description>
66
+ </tolle-alert-dialog-header>
67
+ <tolle-alert-dialog-footer>
68
+ <tolle-alert-dialog-cancel (click)="close(false)">
69
+ <tolle-button variant="outline">{{ config.cancelText || 'Cancel' }}</tolle-button>
70
+ </tolle-alert-dialog-cancel>
71
+ <tolle-alert-dialog-action (click)="close(true)">
72
+ <tolle-button [variant]="config.variant === 'destructive' ? 'destructive' : 'default'">
73
+ {{ config.actionText || 'Continue' }}
74
+ </tolle-button>
75
+ </tolle-alert-dialog-action>
76
+ </tolle-alert-dialog-footer>
77
+ </tolle-alert-dialog-content>
78
+ </tolle-alert-dialog>
79
+ `
80
+ }]
81
+ }] });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXlDckQsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxNQUFNLENBQXFCO0lBQzNCLFNBQVMsQ0FBa0I7SUFFM0IsWUFBWSxDQUFDLElBQWE7UUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFlO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBWlEsMkJBQTJCOzRGQUEzQiwyQkFBMkIsc0ZBdkIxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJYLDJEQWhDSyxZQUFZLCtCQUNaLG9CQUFvQiwwR0FDcEIsMkJBQTJCLDBGQUMzQiwwQkFBMEIseUZBQzFCLHlCQUF5Qix3RkFDekIsK0JBQStCLDhGQUMvQiwwQkFBMEIseUZBQzFCLDBCQUEwQixzRUFDMUIsMEJBQTBCLHNFQUMxQixlQUFlOzs0RkF5QlYsMkJBQTJCO2tCQXRDdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QiwrQkFBK0I7d0JBQy9CLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLGVBQWU7cUJBQ2xCO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBbGVydERpYWxvZ0NvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0NvbnRlbnRDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nQ2FuY2VsQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nQWN0aW9uQ29tcG9uZW50XG59IGZyb20gJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb25maWcsIEFsZXJ0RGlhbG9nUmVmIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1keW5hbWljJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbGVydERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dDb250ZW50Q29tcG9uZW50LFxuICAgICAgICBBbGVydERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQWxlcnREaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEFsZXJ0RGlhbG9nQ2FuY2VsQ29tcG9uZW50LFxuICAgICAgICBBbGVydERpYWxvZ0FjdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDx0b2xsZS1hbGVydC1kaWFsb2cgW29wZW5dPVwidHJ1ZVwiIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctY29udGVudD5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+e3sgY29uZmlnLnRpdGxlIH19PC90b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICB7eyBjb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctY2FuY2VsIChjbGljayk9XCJjbG9zZShmYWxzZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiPnt7IGNvbmZpZy5jYW5jZWxUZXh0IHx8ICdDYW5jZWwnIH19PC90b2xsZS1idXR0b24+XG4gICAgICAgICAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZy1jYW5jZWw+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWFjdGlvbiAoY2xpY2spPVwiY2xvc2UodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiBbdmFyaWFudF09XCJjb25maWcudmFyaWFudCA9PT0gJ2Rlc3RydWN0aXZlJyA/ICdkZXN0cnVjdGl2ZScgOiAnZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICB7eyBjb25maWcuYWN0aW9uVGV4dCB8fCAnQ29udGludWUnIH19XG4gICAgICAgICAgICAgIDwvdG9sbGUtYnV0dG9uPlxuICAgICAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctYWN0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctY29udGVudD5cbiAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZz5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0R5bmFtaWNDb21wb25lbnQge1xuICAgIGNvbmZpZyE6IEFsZXJ0RGlhbG9nQ29uZmlnO1xuICAgIGRpYWxvZ1JlZiE6IEFsZXJ0RGlhbG9nUmVmO1xuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKHJlc3VsdDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,278 @@
1
+ import { Component, Input, Output, EventEmitter, Injectable, inject, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
4
+ import { TemplatePortal } from '@angular/cdk/portal';
5
+ import { cn } from './utils/cn';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ class AlertDialogInternalService {
9
+ openSubject = new BehaviorSubject(false);
10
+ open$ = this.openSubject.asObservable();
11
+ setOpen(value) {
12
+ this.openSubject.next(value);
13
+ }
14
+ getOpen() {
15
+ return this.openSubject.getValue();
16
+ }
17
+ toggle() {
18
+ this.setOpen(!this.getOpen());
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogInternalService, decorators: [{
24
+ type: Injectable
25
+ }] });
26
+ export class AlertDialogComponent {
27
+ set open(val) {
28
+ this.alertDialogService.setOpen(val);
29
+ }
30
+ openChange = new EventEmitter();
31
+ alertDialogService = inject(AlertDialogInternalService);
32
+ constructor() {
33
+ this.alertDialogService.open$.subscribe(val => {
34
+ this.openChange.emit(val);
35
+ });
36
+ }
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogComponent, isStandalone: true, selector: "tolle-alert-dialog", inputs: { open: "open" }, outputs: { openChange: "openChange" }, providers: [AlertDialogInternalService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogComponent, decorators: [{
41
+ type: Component,
42
+ args: [{
43
+ selector: 'tolle-alert-dialog',
44
+ standalone: true,
45
+ imports: [CommonModule],
46
+ providers: [AlertDialogInternalService],
47
+ template: `<ng-content></ng-content>`
48
+ }]
49
+ }], ctorParameters: () => [], propDecorators: { open: [{
50
+ type: Input
51
+ }], openChange: [{
52
+ type: Output
53
+ }] } });
54
+ export class AlertDialogTriggerComponent {
55
+ alertDialogService = inject(AlertDialogInternalService);
56
+ onOpen() {
57
+ this.alertDialogService.setOpen(true);
58
+ }
59
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogTriggerComponent, isStandalone: true, selector: "tolle-alert-dialog-trigger", host: { listeners: { "click": "onOpen()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTriggerComponent, decorators: [{
63
+ type: Component,
64
+ args: [{
65
+ selector: 'tolle-alert-dialog-trigger',
66
+ standalone: true,
67
+ imports: [CommonModule],
68
+ template: `<ng-content></ng-content>`,
69
+ host: {
70
+ '(click)': 'onOpen()'
71
+ }
72
+ }]
73
+ }] });
74
+ export class AlertDialogPortalComponent {
75
+ portalContent;
76
+ alertDialogService = inject(AlertDialogInternalService);
77
+ overlay = inject(Overlay);
78
+ viewContainerRef = inject(ViewContainerRef);
79
+ overlayRef;
80
+ ngOnInit() {
81
+ this.alertDialogService.open$.subscribe(open => {
82
+ if (open) {
83
+ this.show();
84
+ }
85
+ else {
86
+ this.hide();
87
+ }
88
+ });
89
+ }
90
+ show() {
91
+ if (this.overlayRef)
92
+ return;
93
+ const config = new OverlayConfig({
94
+ hasBackdrop: true,
95
+ backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm', 'data-[state=open]:animate-in', 'data-[state=closed]:animate-out', 'data-[state=closed]:fade-out-0', 'data-[state=open]:fade-in-0'],
96
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
97
+ scrollStrategy: this.overlay.scrollStrategies.block()
98
+ });
99
+ this.overlayRef = this.overlay.create(config);
100
+ this.overlayRef.backdropClick().subscribe(() => this.alertDialogService.setOpen(false));
101
+ const portal = new TemplatePortal(this.portalContent, this.viewContainerRef);
102
+ this.overlayRef.attach(portal);
103
+ }
104
+ hide() {
105
+ if (this.overlayRef) {
106
+ this.overlayRef.detach();
107
+ this.overlayRef.dispose();
108
+ this.overlayRef = undefined;
109
+ }
110
+ }
111
+ ngOnDestroy() {
112
+ this.hide();
113
+ }
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogPortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogPortalComponent, isStandalone: true, selector: "tolle-alert-dialog-portal", viewQueries: [{ propertyName: "portalContent", first: true, predicate: ["portalContent"], descendants: true, static: true }], ngImport: i0, template: `
116
+ <ng-template #portalContent>
117
+ <ng-content></ng-content>
118
+ </ng-template>
119
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogPortalComponent, decorators: [{
122
+ type: Component,
123
+ args: [{
124
+ selector: 'tolle-alert-dialog-portal',
125
+ standalone: true,
126
+ imports: [CommonModule],
127
+ template: `
128
+ <ng-template #portalContent>
129
+ <ng-content></ng-content>
130
+ </ng-template>
131
+ `
132
+ }]
133
+ }], propDecorators: { portalContent: [{
134
+ type: ViewChild,
135
+ args: ['portalContent', { static: true }]
136
+ }] } });
137
+ export class AlertDialogContentComponent {
138
+ class = '';
139
+ alertDialogService = inject(AlertDialogInternalService);
140
+ isOpen = false;
141
+ constructor() {
142
+ this.alertDialogService.open$.subscribe(val => {
143
+ this.isOpen = val;
144
+ });
145
+ }
146
+ get computedClass() {
147
+ return cn("fixed left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] rounded-lg", this.class);
148
+ }
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
150
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogContentComponent, isStandalone: true, selector: "tolle-alert-dialog-content", inputs: { class: "class" }, host: { properties: { "class": "\"contents\"" } }, ngImport: i0, template: `<div [class]="computedClass" [attr.data-state]="isOpen ? 'open' : 'closed'"><ng-content></ng-content></div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogContentComponent, decorators: [{
153
+ type: Component,
154
+ args: [{
155
+ selector: 'tolle-alert-dialog-content',
156
+ standalone: true,
157
+ imports: [CommonModule],
158
+ template: `<div [class]="computedClass" [attr.data-state]="isOpen ? 'open' : 'closed'"><ng-content></ng-content></div>`,
159
+ host: {
160
+ '[class]': '"contents"'
161
+ }
162
+ }]
163
+ }], ctorParameters: () => [], propDecorators: { class: [{
164
+ type: Input
165
+ }] } });
166
+ export class AlertDialogHeaderComponent {
167
+ class = '';
168
+ get computedClass() { return cn("flex flex-col space-y-2 text-center sm:text-left", this.class); }
169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogHeaderComponent, isStandalone: true, selector: "tolle-alert-dialog-header", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
171
+ }
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogHeaderComponent, decorators: [{
173
+ type: Component,
174
+ args: [{
175
+ selector: 'tolle-alert-dialog-header',
176
+ standalone: true,
177
+ imports: [CommonModule],
178
+ template: `<ng-content></ng-content>`,
179
+ host: { '[class]': 'computedClass' }
180
+ }]
181
+ }], propDecorators: { class: [{
182
+ type: Input
183
+ }] } });
184
+ export class AlertDialogFooterComponent {
185
+ class = '';
186
+ get computedClass() { return cn("flex flex-row justify-end space-x-2", this.class); }
187
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
188
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogFooterComponent, isStandalone: true, selector: "tolle-alert-dialog-footer", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogFooterComponent, decorators: [{
191
+ type: Component,
192
+ args: [{
193
+ selector: 'tolle-alert-dialog-footer',
194
+ standalone: true,
195
+ imports: [CommonModule],
196
+ template: `<ng-content></ng-content>`,
197
+ host: { '[class]': 'computedClass' }
198
+ }]
199
+ }], propDecorators: { class: [{
200
+ type: Input
201
+ }] } });
202
+ export class AlertDialogTitleComponent {
203
+ class = '';
204
+ get computedClass() { return cn("text-lg font-semibold", this.class); }
205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogTitleComponent, isStandalone: true, selector: "tolle-alert-dialog-title", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
207
+ }
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogTitleComponent, decorators: [{
209
+ type: Component,
210
+ args: [{
211
+ selector: 'tolle-alert-dialog-title',
212
+ standalone: true,
213
+ imports: [CommonModule],
214
+ template: `<ng-content></ng-content>`,
215
+ host: { '[class]': 'computedClass' }
216
+ }]
217
+ }], propDecorators: { class: [{
218
+ type: Input
219
+ }] } });
220
+ export class AlertDialogDescriptionComponent {
221
+ class = '';
222
+ get computedClass() { return cn("text-sm text-muted-foreground", this.class); }
223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogDescriptionComponent, isStandalone: true, selector: "tolle-alert-dialog-description", inputs: { class: "class" }, host: { properties: { "class": "computedClass" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
225
+ }
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDescriptionComponent, decorators: [{
227
+ type: Component,
228
+ args: [{
229
+ selector: 'tolle-alert-dialog-description',
230
+ standalone: true,
231
+ imports: [CommonModule],
232
+ template: `<ng-content></ng-content>`,
233
+ host: { '[class]': 'computedClass' }
234
+ }]
235
+ }], propDecorators: { class: [{
236
+ type: Input
237
+ }] } });
238
+ export class AlertDialogActionComponent {
239
+ alertDialogService = inject(AlertDialogInternalService);
240
+ onAction() {
241
+ this.alertDialogService.setOpen(false);
242
+ }
243
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
244
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogActionComponent, isStandalone: true, selector: "tolle-alert-dialog-action", host: { listeners: { "click": "onAction()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
245
+ }
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogActionComponent, decorators: [{
247
+ type: Component,
248
+ args: [{
249
+ selector: 'tolle-alert-dialog-action',
250
+ standalone: true,
251
+ imports: [CommonModule],
252
+ template: `<ng-content></ng-content>`,
253
+ host: {
254
+ '(click)': 'onAction()'
255
+ }
256
+ }]
257
+ }] });
258
+ export class AlertDialogCancelComponent {
259
+ alertDialogService = inject(AlertDialogInternalService);
260
+ onCancel() {
261
+ this.alertDialogService.setOpen(false);
262
+ }
263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogCancelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogCancelComponent, isStandalone: true, selector: "tolle-alert-dialog-cancel", host: { listeners: { "click": "onCancel()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
265
+ }
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogCancelComponent, decorators: [{
267
+ type: Component,
268
+ args: [{
269
+ selector: 'tolle-alert-dialog-cancel',
270
+ standalone: true,
271
+ imports: [CommonModule],
272
+ template: `<ng-content></ng-content>`,
273
+ host: {
274
+ '(click)': 'onCancel()'
275
+ }
276
+ }]
277
+ }] });
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4SixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkMsTUFDTSwwQkFBMEI7SUFDcEIsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxLQUFjO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBZEMsMEJBQTBCOzRHQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRC9CLFVBQVU7O0FBeUJYLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsSUFBYSxJQUFJLENBQUMsR0FBWTtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDUyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUUzQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVoRTtRQUNJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FaUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixrSUFIbEIsQ0FBQywwQkFBMEIsQ0FBQywwQkFDN0IsMkJBQTJCLDJEQUYzQixZQUFZOzs0RkFJYixvQkFBb0I7a0JBUGhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3ZDLFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3hDO3dEQUVnQixJQUFJO3NCQUFoQixLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU07O0FBb0JYLE1BQU0sT0FBTywyQkFBMkI7SUFDNUIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFaEUsTUFBTTtRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FMUSwyQkFBMkI7NEZBQTNCLDJCQUEyQixvSUFMMUIsMkJBQTJCLDJEQUQzQixZQUFZOzs0RkFNYiwyQkFBMkI7a0JBVHZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLFNBQVMsRUFBRSxVQUFVO3FCQUN4QjtpQkFDSjs7QUFtQkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNXLGFBQWEsQ0FBb0I7SUFDdkUsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDeEQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxVQUFVLENBQWM7SUFFaEMsUUFBUTtRQUNKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLElBQUk7UUFDUixJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUM3QixXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsaUNBQWlDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLENBQUM7WUFDOU0sZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFO1lBQzFGLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtTQUN4RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4RixNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO3dHQTVDUSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtTkFOekI7Ozs7R0FJWCwyREFMVyxZQUFZOzs0RkFPYiwwQkFBMEI7a0JBVnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7O0dBSVg7aUJBQ0Y7OEJBRWlELGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUF1RGhELE1BQU0sT0FBTywyQkFBMkI7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUVwQixrQkFBa0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNoRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWY7UUFDSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLEVBQUUsQ0FDTCxvVUFBb1UsRUFDcFUsSUFBSSxDQUFDLEtBQUssQ0FDYixDQUFDO0lBQ04sQ0FBQzt3R0FqQlEsMkJBQTJCOzRGQUEzQiwyQkFBMkIscUtBTDFCLDZHQUE2RywyREFEN0csWUFBWTs7NEZBTWIsMkJBQTJCO2tCQVR2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSw2R0FBNkc7b0JBQ3ZILElBQUksRUFBRTt3QkFDRixTQUFTLEVBQUUsWUFBWTtxQkFDMUI7aUJBQ0o7d0RBRVksS0FBSztzQkFBYixLQUFLOztBQTBCVixNQUFNLE9BQU8sMEJBQTBCO0lBQzFCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUMsa0RBQWtELEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3R0FGekYsMEJBQTBCOzRGQUExQiwwQkFBMEIscUtBSHpCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBSWIsMEJBQTBCO2tCQVB0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7aUJBQ3ZDOzhCQUVZLEtBQUs7c0JBQWIsS0FBSzs7QUFXVixNQUFNLE9BQU8sMEJBQTBCO0lBQzFCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3R0FGNUUsMEJBQTBCOzRGQUExQiwwQkFBMEIscUtBSHpCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBSWIsMEJBQTBCO2tCQVB0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7aUJBQ3ZDOzhCQUVZLEtBQUs7c0JBQWIsS0FBSzs7QUFXVixNQUFNLE9BQU8seUJBQXlCO0lBQ3pCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3R0FGOUQseUJBQXlCOzRGQUF6Qix5QkFBeUIsb0tBSHhCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBSWIseUJBQXlCO2tCQVByQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7aUJBQ3ZDOzhCQUVZLEtBQUs7c0JBQWIsS0FBSzs7QUFXVixNQUFNLE9BQU8sK0JBQStCO0lBQy9CLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3R0FGdEUsK0JBQStCOzRGQUEvQiwrQkFBK0IsMEtBSDlCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBSWIsK0JBQStCO2tCQVAzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7aUJBQ3ZDOzhCQUVZLEtBQUs7c0JBQWIsS0FBSzs7QUFhVixNQUFNLE9BQU8sMEJBQTBCO0lBQzNCLGtCQUFrQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2hFLFFBQVE7UUFDSixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7d0dBSlEsMEJBQTBCOzRGQUExQiwwQkFBMEIscUlBTHpCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBTWIsMEJBQTBCO2tCQVR0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixTQUFTLEVBQUUsWUFBWTtxQkFDMUI7aUJBQ0o7O0FBaUJELE1BQU0sT0FBTywwQkFBMEI7SUFDM0Isa0JBQWtCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDaEUsUUFBUTtRQUNKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzt3R0FKUSwwQkFBMEI7NEZBQTFCLDBCQUEwQixxSUFMekIsMkJBQTJCLDJEQUQzQixZQUFZOzs0RkFNYiwwQkFBMEI7a0JBVHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLFNBQVMsRUFBRSxZQUFZO3FCQUMxQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuY2xhc3MgQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2Uge1xuICAgIHByaXZhdGUgb3BlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBvcGVuJCA9IHRoaXMub3BlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBzZXRPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMub3BlblN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0T3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlblN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuc2V0T3BlbighdGhpcy5nZXRPcGVuKCkpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2cnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2VdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHNldCBvcGVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5zZXRPcGVuKHZhbCk7XG4gICAgfVxuICAgIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBhbGVydERpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLm9wZW4kLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodmFsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy10cmlnZ2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdvbk9wZW4oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nVHJpZ2dlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBhbGVydERpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQWxlcnREaWFsb2dJbnRlcm5hbFNlcnZpY2UpO1xuXG4gICAgb25PcGVuKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5zZXRPcGVuKHRydWUpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctcG9ydGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNwb3J0YWxDb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dQb3J0YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgncG9ydGFsQ29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHBvcnRhbENvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uub3BlbiQuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogWydjZGstb3ZlcmxheS1iYWNrZHJvcCcsICdiZy1ibGFjay84MCcsICdiYWNrZHJvcC1ibHVyLXNtJywgJ2RhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4nLCAnZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCcsICdkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAnLCAnZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJ10sXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLnNldE9wZW4oZmFsc2UpKTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3J0YWxDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctY29udGVudCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIiBbYXR0ci5kYXRhLXN0YXRlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzXSc6ICdcImNvbnRlbnRzXCInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0NvbnRlbnRDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGNuKFxuICAgICAgICAgICAgXCJmaXhlZCBsZWZ0LVs1MCVdIHRvcC1bNTAlXSB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgZ2FwLTQgYm9yZGVyIGJnLWJhY2tncm91bmQgcC02IHNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWxlZnQtMS8yIGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLXRvcC1bNDglXSByb3VuZGVkLWxnXCIsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dIZWFkZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0XCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWZvb3RlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHsgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcycgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0Zvb3RlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIGdldCBjb21wdXRlZENsYXNzKCkgeyByZXR1cm4gY24oXCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHNwYWNlLXgtMlwiLCB0aGlzLmNsYXNzKTsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy10aXRsZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHsgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcycgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1RpdGxlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7IHJldHVybiBjbihcInRleHQtbGcgZm9udC1zZW1pYm9sZFwiLCB0aGlzLmNsYXNzKTsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHsgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcycgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7IHJldHVybiBjbihcInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWFjdGlvbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnb25BY3Rpb24oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQWN0aW9uQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIGFsZXJ0RGlhbG9nU2VydmljZSA9IGluamVjdChBbGVydERpYWxvZ0ludGVybmFsU2VydmljZSk7XG4gICAgb25BY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctY2FuY2VsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdvbkNhbmNlbCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDYW5jZWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { Injectable, inject, Injector } from '@angular/core';
2
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
+ import { ComponentPortal } from '@angular/cdk/portal';
4
+ import { AlertDialogRef } from './alert-dialog.types';
5
+ import { AlertDialogDynamicComponent } from './alert-dialog-dynamic.component';
6
+ import * as i0 from "@angular/core";
7
+ export class AlertDialogService {
8
+ overlay = inject(Overlay);
9
+ injector = inject(Injector);
10
+ open(config) {
11
+ const overlayConfig = new OverlayConfig({
12
+ hasBackdrop: true,
13
+ backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm'],
14
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
15
+ scrollStrategy: this.overlay.scrollStrategies.block()
16
+ });
17
+ const overlayRef = this.overlay.create(overlayConfig);
18
+ const dialogRef = new AlertDialogRef();
19
+ const portal = new ComponentPortal(AlertDialogDynamicComponent, null, this.injector);
20
+ const componentRef = overlayRef.attach(portal);
21
+ componentRef.instance.config = config;
22
+ componentRef.instance.dialogRef = dialogRef;
23
+ dialogRef.afterClosed$.subscribe(() => {
24
+ overlayRef.detach();
25
+ overlayRef.dispose();
26
+ });
27
+ overlayRef.backdropClick().subscribe(() => dialogRef.close(false));
28
+ return dialogRef;
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogService, providedIn: 'root' });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root'
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2FsZXJ0LWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFvQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFLL0UsTUFBTSxPQUFPLGtCQUFrQjtJQUNuQixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFDLE1BQXlCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3BDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxDQUFDLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztZQUMxRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUYsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFFdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN0QyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFNUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRSxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO3dHQTdCUSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZmLE1BQU07OzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIFZpZXdDb250YWluZXJSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbmZpZywgQWxlcnREaWFsb2dSZWYgfSBmcm9tICcuL2FsZXJ0LWRpYWxvZy50eXBlcyc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0R5bmFtaWNDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0LWRpYWxvZy1keW5hbWljLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dTZXJ2aWNlIHtcbiAgICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBvcGVuKGNvbmZpZzogQWxlcnREaWFsb2dDb25maWcpOiBBbGVydERpYWxvZ1JlZiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktYmFja2Ryb3AnLCAnYmctYmxhY2svODAnLCAnYmFja2Ryb3AtYmx1ci1zbSddLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBBbGVydERpYWxvZ1JlZigpO1xuXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQWxlcnREaWFsb2dEeW5hbWljQ29tcG9uZW50LCBudWxsLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29uZmlnID0gY29uZmlnO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlhbG9nUmVmID0gZGlhbG9nUmVmO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICBvdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IGRpYWxvZ1JlZi5jbG9zZShmYWxzZSkpO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { Subject } from 'rxjs';
2
+ export class AlertDialogRef {
3
+ _afterClosed = new Subject();
4
+ afterClosed$ = this._afterClosed.asObservable();
5
+ close(result = false) {
6
+ this._afterClosed.next(result);
7
+ this._afterClosed.complete();
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC1kaWFsb2cudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQVUzQyxNQUFNLE9BQU8sY0FBYztJQUNOLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQ3ZELFlBQVksR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyRSxLQUFLLENBQUMsU0FBa0IsS0FBSztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGVydERpYWxvZ0NvbmZpZyB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG4gICAgYWN0aW9uVGV4dD86IHN0cmluZztcbiAgICB2YXJpYW50PzogJ2RlZmF1bHQnIHwgJ2Rlc3RydWN0aXZlJztcbn1cblxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nUmVmIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlckNsb3NlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgYWZ0ZXJDbG9zZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fYWZ0ZXJDbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjbG9zZShyZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZnRlckNsb3NlZC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19