@firestitch/form 18.0.29 → 18.0.31

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 (40) hide show
  1. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +17 -2
  2. package/app/directives/button.directive.d.ts +9 -1
  3. package/app/directives/confirm-tabs/confirm-tabs.directive.d.ts +32 -0
  4. package/app/directives/confirm-tabs/index.d.ts +1 -0
  5. package/app/directives/form/form.directive.d.ts +89 -29
  6. package/app/directives/form-base/form-base.directive.d.ts +86 -6
  7. package/app/directives/form-container/form-container.directive.d.ts +80 -0
  8. package/app/directives/form-container/index.d.ts +1 -0
  9. package/app/directives/index.d.ts +2 -1
  10. package/app/fs-form.module.d.ts +3 -2
  11. package/app/helpers/index.d.ts +1 -0
  12. package/app/helpers/within-same-dialog.d.ts +18 -0
  13. package/app/interfaces/form-owner.d.ts +17 -0
  14. package/app/interfaces/index.d.ts +1 -0
  15. package/app/services/fsform.service.d.ts +5 -5
  16. package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +50 -17
  17. package/esm2022/app/directives/button.directive.mjs +26 -9
  18. package/esm2022/app/directives/confirm-tabs/confirm-tabs.directive.mjs +50 -0
  19. package/esm2022/app/directives/confirm-tabs/index.mjs +2 -0
  20. package/esm2022/app/directives/form/form.directive.mjs +247 -241
  21. package/esm2022/app/directives/form-base/form-base.directive.mjs +255 -8
  22. package/esm2022/app/directives/form-container/form-container.directive.mjs +164 -0
  23. package/esm2022/app/directives/form-container/index.mjs +2 -0
  24. package/esm2022/app/directives/index.mjs +3 -2
  25. package/esm2022/app/fs-form.module.mjs +11 -6
  26. package/esm2022/app/guards/form-deactivate.guard.mjs +1 -1
  27. package/esm2022/app/helpers/index.mjs +2 -1
  28. package/esm2022/app/helpers/within-same-dialog.mjs +19 -0
  29. package/esm2022/app/interfaces/form-owner.mjs +2 -0
  30. package/esm2022/app/interfaces/index.mjs +2 -1
  31. package/esm2022/app/services/fsform.service.mjs +10 -7
  32. package/esm2022/public_api.mjs +3 -2
  33. package/fesm2022/firestitch-form.mjs +811 -320
  34. package/fesm2022/firestitch-form.mjs.map +1 -1
  35. package/package.json +1 -1
  36. package/public_api.d.ts +3 -1
  37. package/app/directives/form-group/form-group.directive.d.ts +0 -15
  38. package/app/directives/form-group/index.d.ts +0 -1
  39. package/esm2022/app/directives/form-group/form-group.directive.mjs +0 -35
  40. package/esm2022/app/directives/form-group/index.mjs +0 -2
@@ -1,38 +1,67 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { delay, filter, takeUntil } from 'rxjs/operators';
4
- import { FsFormDirective } from '../../directives/form/form.directive';
5
1
  import { NgClass, NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
6
3
  import { MatButton } from '@angular/material/button';
4
+ import { MatDialogClose, MatDialogRef } from '@angular/material/dialog';
5
+ import { Subject } from 'rxjs';
6
+ import { delay, takeUntil } from 'rxjs/operators';
7
+ import { withinSameDialog } from '../../helpers/within-same-dialog';
7
8
  import { FsButtonDirective } from '../../directives/button.directive';
8
- import { MatDialogClose } from '@angular/material/dialog';
9
+ import { FsFormContainerDirective } from '../../directives/form-container';
9
10
  import { FsFormDialogCloseDirective } from '../../directives/form-dialog-close.directive';
11
+ import { FsFormDirective } from '../../directives/form/form.directive';
10
12
  import * as i0 from "@angular/core";
11
13
  export class FsFormDialogActionsComponent {
12
- _form = inject(FsFormDirective, { optional: true });
13
- _cdRef = inject(ChangeDetectorRef);
14
- save = true;
14
+ /** Leave unset inside an `fsFormContainer` to follow whether it has anything to save. */
15
+ save;
15
16
  create = false;
16
17
  close = false;
17
- done = false;
18
+ /** Leave unset inside an `fsFormContainer` to fill in whenever Save does not apply. */
19
+ done;
18
20
  closeData = null;
19
21
  name;
20
22
  dirty = false;
21
23
  _destroy$ = new Subject();
24
+ _dialogRef = inject(MatDialogRef, { optional: true });
25
+ // A dialog opened with `viewContainerRef` resolves through to whatever opened
26
+ // it, so an owner from another dialog is discarded - these actions belong to
27
+ // their own dialog's form set and no one else's.
28
+ _container = this._ownDialogOnly(inject(FsFormContainerDirective, { optional: true }));
29
+ _form = this._ownDialogOnly(inject(FsFormDirective, { optional: true }));
30
+ _cdRef = inject(ChangeDetectorRef);
31
+ /**
32
+ * Inside a container these default to whether anything mounted can actually
33
+ * save, so a footer left as a bare `<fs-form-dialog-actions>` swaps Save for
34
+ * Done as tabs change without the dialog listing which tabs are savable. An
35
+ * explicit binding always wins, and outside a container Save stays on as it
36
+ * always did.
37
+ */
38
+ get showSave() {
39
+ return this.save ?? (this._container ? this._container.submits : true);
40
+ }
41
+ get showDone() {
42
+ return this.done ?? (this._container ? !this._container.submits && !this.create : false);
43
+ }
22
44
  ngOnInit() {
23
- if (this._form) {
24
- this._form.ngForm.valueChanges
25
- .pipe(filter(() => (!this.dirty)), takeUntil(this._destroy$))
45
+ const owner = this._container || this._form?.rootForm;
46
+ if (owner) {
47
+ // Track the whole set, not one form's own controls: with a form scoped to a
48
+ // tab's fields, the actions sit outside it in the dialog footer and that
49
+ // form's NgForm holds nothing of its own. Recomputed on every emission
50
+ // rather than latched, so a switch to a pristine tab clears it too.
51
+ owner.dirtyChange$
52
+ .pipe(takeUntil(this._destroy$))
26
53
  .subscribe(() => {
27
- this.dirty = this._form.ngForm.dirty;
54
+ this.dirty = owner.dirtyLinked;
28
55
  this._cdRef.markForCheck();
29
56
  });
30
- this._form.submitted
57
+ owner.submitted$
31
58
  .pipe(delay(50), takeUntil(this._destroy$))
32
59
  .subscribe(() => {
33
60
  this.dirty = false;
34
61
  this._cdRef.markForCheck();
35
62
  });
63
+ }
64
+ if (this._form) {
36
65
  this._form.reseted
37
66
  .pipe(takeUntil(this._destroy$))
38
67
  .subscribe(() => {
@@ -45,8 +74,12 @@ export class FsFormDialogActionsComponent {
45
74
  this._destroy$.next(null);
46
75
  this._destroy$.complete();
47
76
  }
77
+ /** Keeps a DI-resolved owner only when it belongs to these actions' dialog. */
78
+ _ownDialogOnly(owner) {
79
+ return withinSameDialog(owner, this._dialogRef) ? owner : null;
80
+ }
48
81
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, ngImport: i0, template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': save || create }\">\n @if (save || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (done) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (save || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(save || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "submitDisabled"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, ngImport: i0, template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': showSave || create }\">\n @if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "submitDisabled"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
83
  }
51
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, decorators: [{
52
85
  type: Component,
@@ -57,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
57
90
  MatDialogClose,
58
91
  NgTemplateOutlet,
59
92
  FsFormDialogCloseDirective,
60
- ], template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': save || create }\">\n @if (save || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (done) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (save || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(save || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"] }]
93
+ ], template: "<div\n class=\"form-buttons\"\n [ngClass]=\"{ 'save-create': showSave || create }\">\n @if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n }\n @if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n @if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n }\n @if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.form-buttons.save-create .close-button{float:right}\n"] }]
61
94
  }], propDecorators: { save: [{
62
95
  type: Input
63
96
  }], create: [{
@@ -71,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
71
104
  }], name: [{
72
105
  type: Input
73
106
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFrQjFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDL0IsS0FBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFHM0IsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNaLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsSUFBSSxDQUFTO0lBRXRCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFYixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVqQyxRQUFRO1FBQ2IsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZO2lCQUMzQixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVMLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDakIsSUFBSSxDQUNILEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDVCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2lCQUNmLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt1R0FwRFUsNEJBQTRCOzJGQUE1Qiw0QkFBNEIsa01DN0J6Qyx5bkNBaURjLGlJRDVCTixPQUFPLG9GQUNQLFNBQVMsaUxBQ1QsaUJBQWlCLHVLQUNqQixjQUFjLHFMQUNkLGdCQUFnQixvSkFDaEIsMEJBQTBCOzsyRkFHckIsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsT0FBTzt3QkFDUCxTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjtxQkFDN0I7OEJBT2EsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLWZvcm0tZGlhbG9nLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE1hdEJ1dHRvbixcbiAgICAgICAgRnNCdXR0b25EaXJlY3RpdmUsXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSxcbiAgICBdLFxufSlcclxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNhdmUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjcmVhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2UgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZG9uZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZURhdGEgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBkaXJ0eSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcclxuICAgICAgdGhpcy5fZm9ybS5uZ0Zvcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoICBcclxuICAgICAgICAgIGZpbHRlcigoKSA9PiAoIXRoaXMuZGlydHkpKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRoaXMuX2Zvcm0ubmdGb3JtLmRpcnR5O1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLl9mb3JtLnN1Ym1pdHRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZGVsYXkoNTApLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2Zvcm0ucmVzZXRlZFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XG4gIGNsYXNzPVwiZm9ybS1idXR0b25zXCJcbiAgW25nQ2xhc3NdPVwieyAnc2F2ZS1jcmVhdGUnOiBzYXZlIHx8IGNyZWF0ZSB9XCI+XG4gIEBpZiAoc2F2ZSB8fCBjcmVhdGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbbmFtZV09XCJuYW1lXCI+XG4gICAgICB7eyBjcmVhdGUgPyAnQ3JlYXRlJyA6ICdTYXZlJyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjbG9zZSAmJiAhZGlydHkgJiYgIWNyZWF0ZVwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKGRvbmUpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICBEb25lXG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGlmIChzYXZlIHx8IGNyZWF0ZSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuICBAaWYgKGNsb3NlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXG4gICAgICBmc0Zvcm1EaWFsb2dDbG9zZVxuICAgICAgW2Nsb3NlRGF0YV09XCJjbG9zZURhdGFcIlxuICAgICAgW2NvbG9yXT1cImRpcnR5ID8gJ2Jhc2ljJyA6ICdwcmltYXJ5J1wiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCEoc2F2ZSB8fCBjcmVhdGUpKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFrQnZFLE1BQU0sT0FBTyw0QkFBNEI7SUFFdkMseUZBQXlGO0lBQ3pFLElBQUksQ0FBVTtJQUNkLE1B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QVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLGNBQWMsQ0FBZ0MsS0FBUTtRQUM1RCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7dUdBckZVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLGtNQ2pDekMsK29DQWtEQSxpSUR6QkksT0FBTyxvRkFDUCxTQUFTLGlMQUNULGlCQUFpQix1S0FDakIsY0FBYyxxTEFDZCxnQkFBZ0Isb0pBQ2hCLDBCQUEwQjs7MkZBR2pCLDRCQUE0QjtrQkFmeEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCOzhCQUtlLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyB3aXRoaW5TYW1lRGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycy93aXRoaW4tc2FtZS1kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2J1dHRvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGc0Zvcm1CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWJhc2UnO1xyXG5pbXBvcnQgeyBGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvcm0tY29udGFpbmVyJztcclxuaW1wb3J0IHsgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvcm0tZGlhbG9nLWNsb3NlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmcy1mb3JtLWRpYWxvZy1hY3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEJ1dHRvbixcclxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxyXG4gICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBMZWF2ZSB1bnNldCBpbnNpZGUgYW4gYGZzRm9ybUNvbnRhaW5lcmAgdG8gZm9sbG93IHdoZXRoZXIgaXQgaGFzIGFueXRoaW5nIHRvIHNhdmUuICovXHJcbiAgQElucHV0KCkgcHVibGljIHNhdmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIGNyZWF0ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZSA9IGZhbHNlO1xyXG4gIC8qKiBMZWF2ZSB1bnNldCBpbnNpZGUgYW4gYGZzRm9ybUNvbnRhaW5lcmAgdG8gZmlsbCBpbiB3aGVuZXZlciBTYXZlIGRvZXMgbm90IGFwcGx5LiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkb25lOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZURhdGEgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBkaXJ0eSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxhbnk+PihNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgLy8gQSBkaWFsb2cgb3BlbmVkIHdpdGggYHZpZXdDb250YWluZXJSZWZgIHJlc29sdmVzIHRocm91Z2ggdG8gd2hhdGV2ZXIgb3BlbmVkXHJcbiAgLy8gaXQsIHNvIGFuIG93bmVyIGZyb20gYW5vdGhlciBkaWFsb2cgaXMgZGlzY2FyZGVkIC0gdGhlc2UgYWN0aW9ucyBiZWxvbmcgdG9cclxuICAvLyB0aGVpciBvd24gZGlhbG9nJ3MgZm9ybSBzZXQgYW5kIG5vIG9uZSBlbHNlJ3MuXHJcbiAgcHJpdmF0ZSBfY29udGFpbmVyID0gdGhpcy5fb3duRGlhbG9nT25seShpbmplY3QoRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pKTtcclxuICBwcml2YXRlIF9mb3JtID0gdGhpcy5fb3duRGlhbG9nT25seShpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pKTtcclxuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2lkZSBhIGNvbnRhaW5lciB0aGVzZSBkZWZhdWx0IHRvIHdoZXRoZXIgYW55dGhpbmcgbW91bnRlZCBjYW4gYWN0dWFsbHlcclxuICAgKiBzYXZlLCBzbyBhIGZvb3RlciBsZWZ0IGFzIGEgYmFyZSBgPGZzLWZvcm0tZGlhbG9nLWFjdGlvbnM+YCBzd2FwcyBTYXZlIGZvclxyXG4gICAqIERvbmUgYXMgdGFicyBjaGFuZ2Ugd2l0aG91dCB0aGUgZGlhbG9nIGxpc3Rpbmcgd2hpY2ggdGFicyBhcmUgc2F2YWJsZS4gQW5cclxuICAgKiBleHBsaWNpdCBiaW5kaW5nIGFsd2F5cyB3aW5zLCBhbmQgb3V0c2lkZSBhIGNvbnRhaW5lciBTYXZlIHN0YXlzIG9uIGFzIGl0XHJcbiAgICogYWx3YXlzIGRpZC5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHNob3dTYXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2F2ZSA/PyAodGhpcy5fY29udGFpbmVyID8gdGhpcy5fY29udGFpbmVyLnN1Ym1pdHMgOiB0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd0RvbmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kb25lID8/ICh0aGlzLl9jb250YWluZXIgPyAhdGhpcy5fY29udGFpbmVyLnN1Ym1pdHMgJiYgIXRoaXMuY3JlYXRlIDogZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3duZXIgPSB0aGlzLl9jb250YWluZXIgfHwgdGhpcy5fZm9ybT8ucm9vdEZvcm07XHJcblxyXG4gICAgaWYob3duZXIpIHtcclxuICAgICAgLy8gVHJhY2sgdGhlIHdob2xlIHNldCwgbm90IG9uZSBmb3JtJ3Mgb3duIGNvbnRyb2xzOiB3aXRoIGEgZm9ybSBzY29wZWQgdG8gYVxyXG4gICAgICAvLyB0YWIncyBmaWVsZHMsIHRoZSBhY3Rpb25zIHNpdCBvdXRzaWRlIGl0IGluIHRoZSBkaWFsb2cgZm9vdGVyIGFuZCB0aGF0XHJcbiAgICAgIC8vIGZvcm0ncyBOZ0Zvcm0gaG9sZHMgbm90aGluZyBvZiBpdHMgb3duLiBSZWNvbXB1dGVkIG9uIGV2ZXJ5IGVtaXNzaW9uXHJcbiAgICAgIC8vIHJhdGhlciB0aGFuIGxhdGNoZWQsIHNvIGEgc3dpdGNoIHRvIGEgcHJpc3RpbmUgdGFiIGNsZWFycyBpdCB0b28uXHJcbiAgICAgIG93bmVyLmRpcnR5Q2hhbmdlJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gb3duZXIuZGlydHlMaW5rZWQ7XHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIG93bmVyLnN1Ym1pdHRlZCRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlbGF5KDUwKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5fZm9ybSkge1xyXG4gICAgICB0aGlzLl9mb3JtLnJlc2V0ZWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBLZWVwcyBhIERJLXJlc29sdmVkIG93bmVyIG9ubHkgd2hlbiBpdCBiZWxvbmdzIHRvIHRoZXNlIGFjdGlvbnMnIGRpYWxvZy4gKi9cclxuICBwcml2YXRlIF9vd25EaWFsb2dPbmx5PFQgZXh0ZW5kcyBGc0Zvcm1CYXNlRGlyZWN0aXZlPihvd25lcjogVCk6IFQge1xyXG4gICAgcmV0dXJuIHdpdGhpblNhbWVEaWFsb2cob3duZXIsIHRoaXMuX2RpYWxvZ1JlZikgPyBvd25lciA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcbiAgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIlxuICBbbmdDbGFzc109XCJ7ICdzYXZlLWNyZWF0ZSc6IHNob3dTYXZlIHx8IGNyZWF0ZSB9XCI+XG4gIEBpZiAoc2hvd1NhdmUgfHwgY3JlYXRlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW25hbWVdPVwibmFtZVwiPlxuICAgICAge3sgY3JlYXRlID8gJ0NyZWF0ZScgOiAnU2F2ZScgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiY2xvc2UgJiYgIWRpcnR5ICYmICFjcmVhdGVcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGlmIChzaG93RG9uZSkge1xuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICAgIERvbmVcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKHNob3dTYXZlIHx8IGNyZWF0ZSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuICBAaWYgKGNsb3NlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXG4gICAgICBmc0Zvcm1EaWFsb2dDbG9zZVxuICAgICAgW2Nsb3NlRGF0YV09XCJjbG9zZURhdGFcIlxuICAgICAgW2NvbG9yXT1cImRpcnR5ID8gJ2Jhc2ljJyA6ICdwcmltYXJ5J1wiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCEoc2hvd1NhdmUgfHwgY3JlYXRlKSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgfVxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,9 +1,11 @@
1
1
  import { ChangeDetectorRef, Directive, ElementRef, HostBinding, inject, Input, } from '@angular/core';
2
2
  import { MatButton } from '@angular/material/button';
3
+ import { MatDialogRef } from '@angular/material/dialog';
3
4
  import { fromEvent, Subject } from 'rxjs';
4
5
  import { takeUntil } from 'rxjs/operators';
6
+ import { withinSameDialog } from '../helpers/within-same-dialog';
5
7
  import { FsFormDirective } from './form';
6
- import { FsFormGroupDirective } from './form-group';
8
+ import { FsFormContainerDirective } from './form-container';
7
9
  import * as i0 from "@angular/core";
8
10
  export class FsButtonDirective {
9
11
  name;
@@ -21,20 +23,26 @@ export class FsButtonDirective {
21
23
  _formDisabled = false;
22
24
  _previousDisabled = false;
23
25
  _destroy$ = new Subject();
24
- _formGroup = inject(FsFormGroupDirective, { optional: true });
25
- _form = inject(FsFormDirective, { optional: true });
26
+ _dialogRef = inject(MatDialogRef, { optional: true });
27
+ _container = this._ownDialogOnly(inject(FsFormContainerDirective, { optional: true }));
28
+ _form = this._ownDialogOnly(inject(FsFormDirective, { optional: true }));
26
29
  _matButton = inject(MatButton, { optional: true, host: true });
27
30
  _elementRef = inject(ElementRef);
28
31
  _cdRef = inject(ChangeDetectorRef);
29
32
  _formBase;
30
33
  ngOnInit() {
31
34
  this.submit = this._elementRef.nativeElement.getAttribute('type') === 'submit';
32
- // Prefer the enclosing form group over the form: the form's own button
35
+ // Prefer the enclosing container over the form: the form's own button
33
36
  // management (dirty-submit tracking, activeSubmitButton, reset) resolves its
34
- // registry via `_formGroup || this`, so buttons must register with the same
35
- // owner. Registering with the form while the form reads the group leaves the
36
- // group's button list empty and the submit button never gets dirty-disabled.
37
- this._formBase = this._formGroup || this._form;
37
+ // registry the same way, so buttons must register with the same owner.
38
+ // Registering with the form while the form reads the container leaves the
39
+ // container's button list empty and the submit button never gets
40
+ // dirty-disabled.
41
+ //
42
+ // Note this resolves the ROOT of the linked set, not the nearest form: the
43
+ // button that saves a tab's form typically sits outside it, down in the
44
+ // dialog footer, and drives the whole linked set from there.
45
+ this._formBase = this._container || this._form?.rootForm;
38
46
  if (this._formBase) {
39
47
  this._formBase.addButton(this);
40
48
  if (this.submit) {
@@ -113,6 +121,15 @@ export class FsButtonDirective {
113
121
  this._destroy$.complete();
114
122
  this._formBase?.removeButton(this);
115
123
  }
124
+ /**
125
+ * Keeps a DI-resolved owner only when it belongs to this button's dialog. A
126
+ * dialog opened with `viewContainerRef` resolves through to whatever opened
127
+ * it, so without this the inner dialog's Save would register with - and
128
+ * submit - the outer dialog's form set.
129
+ */
130
+ _ownDialogOnly(owner) {
131
+ return withinSameDialog(owner, this._dialogRef) ? owner : null;
132
+ }
116
133
  // Effective disabled combines the consumer-controlled submitDisabled input with
117
134
  // the form's submit-lifecycle state, so form enable/disable never clobbers an
118
135
  // explicit [submitDisabled] and the two channels stay independent.
@@ -170,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
170
187
  type: HostBinding,
171
188
  args: ['style.transition']
172
189
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixJQUFJLENBQUM7SUFHTCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRTFCLElBQ1csY0FBYyxDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFHTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXZCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZCxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFCLFVBQVUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFR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QUNoZSxDQUFDO0lBQ0gsQ0FBQzt1R0F2TFUsaUJBQWlCOzJGQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlFQUF5RTtvQkFDbkYsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUlRLElBQUk7c0JBRFYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBV0MsZUFBZTtzQkFEckIsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZzRm9ybUJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1ncm91cCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hdC1yYWlzZWQtYnV0dG9uXSxbbWF0LWJ1dHRvbl0sW21hdC1mbGF0LWJ1dHRvbl0sW21hdC1zdHJva2VkLWJ1dHRvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGc0J1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlydHlTdWJtaXQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VibWl0RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdWJtaXREaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuX2FwcGx5RGlzYWJsZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N1Ym1pdERpc2FibGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50cmFuc2l0aW9uJylcbiAgcHVibGljIHRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG5cbiAgcHVibGljIHN1Ym1pdCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3N1Ym1pdERpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Zvcm1EaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9wcmV2aW91c0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9mb3JtR3JvdXAgPSBpbmplY3QoRnNGb3JtR3JvdXBEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9tYXRCdXR0b24gPSBpbmplY3QoTWF0QnV0dG9uLCB7IG9wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlIH0pO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX2Zvcm1CYXNlOiBGc0Zvcm1CYXNlRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCc7XG4gICAgLy8gUHJlZmVyIHRoZSBlbmNsb3NpbmcgZm9ybSBncm91cCBvdmVyIHRoZSBmb3JtOiB0aGUgZm9ybSdzIG93biBidXR0b25cbiAgICAvLyBtYW5hZ2VtZW50IChkaXJ0eS1zdWJtaXQgdHJhY2tpbmcsIGFjdGl2ZVN1Ym1pdEJ1dHRvbiwgcmVzZXQpIHJlc29sdmVzIGl0c1xuICAgIC8vIHJlZ2lzdHJ5IHZpYSBgX2Zvcm1Hcm91cCB8fCB0aGlzYCwgc28gYnV0dG9ucyBtdXN0IHJlZ2lzdGVyIHdpdGggdGhlIHNhbWVcbiAgICAvLyBvd25lci4gUmVnaXN0ZXJpbmcgd2l0aCB0aGUgZm9ybSB3aGlsZSB0aGUgZm9ybSByZWFkcyB0aGUgZ3JvdXAgbGVhdmVzIHRoZVxuICAgIC8vIGdyb3VwJ3MgYnV0dG9uIGxpc3QgZW1wdHkgYW5kIHRoZSBzdWJtaXQgYnV0dG9uIG5ldmVyIGdldHMgZGlydHktZGlzYWJsZWQuXG4gICAgdGhpcy5fZm9ybUJhc2UgPSB0aGlzLl9mb3JtR3JvdXAgfHwgdGhpcy5fZm9ybTtcblxuICAgIGlmICh0aGlzLl9mb3JtQmFzZSkge1xuICAgICAgdGhpcy5fZm9ybUJhc2UuYWRkQnV0dG9uKHRoaXMpO1xuXG4gICAgICBpZih0aGlzLnN1Ym1pdCkge1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCAnY2xpY2snKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS5hY3RpdmVTdWJtaXRCdXR0b24gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5fZm9ybUJhc2UudHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gJ25vbmUnO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdHlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbiAmJiAhdGhpcy5fZm9ybUJhc2UuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c0Rpc2FibGVkID0gdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVkO1xuICAgICAgdGhpcy5fZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2FwcGx5RGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX2Zvcm1EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ3Byb2Nlc3MnKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Y2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnc3VjY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVycm9yKCkge1xuICAgIHRoaXMuc2V0Q2xhc3MoJ2Vycm9yJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xhc3MoY2xzKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5fZ2V0U3ZnKGNscyk7XG4gICAgdGhpcy5fcmVzZXRDbGFzcygpO1xuICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBmcy1mb3JtLXN1Ym1pdC1idXR0b24tJHtjbHN9YCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZChzdmcpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wcmV2aW91c0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3ZnLWljb24nKVxuICAgICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9yZXNldENsYXNzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1CYXNlPy5yZW1vdmVCdXR0b24odGhpcyk7XG4gIH1cblxuICAvLyBFZmZlY3RpdmUgZGlzYWJsZWQgY29tYmluZXMgdGhlIGNvbnN1bWVyLWNvbnRyb2xsZWQgc3VibWl0RGlzYWJsZWQgaW5wdXQgd2l0aFxuICAvLyB0aGUgZm9ybSdzIHN1Ym1pdC1saWZlY3ljbGUgc3RhdGUsIHNvIGZvcm0gZW5hYmxlL2Rpc2FibGUgbmV2ZXIgY2xvYmJlcnMgYW5cbiAgLy8gZXhwbGljaXQgW3N1Ym1pdERpc2FibGVkXSBhbmQgdGhlIHR3byBjaGFubmVscyBzdGF5IGluZGVwZW5kZW50LlxuICBwcml2YXRlIF9hcHBseURpc2FibGVkKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuX3N1Ym1pdERpc2FibGVkIHx8IHRoaXMuX2Zvcm1EaXNhYmxlZDtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q2xhc3MoKSB7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdFxuICAgICAgLnJlbW92ZShcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1zdWNjZXNzJywgXG4gICAgICAgICdmcy1mb3JtLXN1Ym1pdC1idXR0b24tZXJyb3InLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1wcm9jZXNzJyxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdmcodHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tc3VjY2Vzc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiPlxuICAgICAgPGc+XG4gICAgICAgIDxnIGNsYXNzPVwiY2hlY2tcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjkuNiwxMS45Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBMMTYuMywyMy40bC02LjEtNi4xYy0wLjUtMC41LTEuMy0wLjUtMS44LDBzLTAuNSwxLjMsMCwxLjhsNyw3YzAuMywwLjMsMC42LDAuNCwwLjksMC40czAuNy0wLjEsMC45LTAuNGwxMi40LTEyLjRDMzAuMSwxMy4yLDMwLjEsMTIuNCwyOS42LDExLjl6XCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPC9zdmc+YCwgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByb2Nlc3NcIiB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPGcgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9XCIuNVwiIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjE4XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDE4IDE4XCIgdG89XCIzNjAgMTggMThcIiBkdXI9XCIuN3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzhweFwiIGhlaWdodD1cIjM4cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PGc+PHBhdGggZD1cIk04IDFjMy45IDAgNyAzLjEgNyA3cy0zLjEgNy03IDctNy0zLjEtNy03IDMuMS03IDctN3pNOCAwYy00LjQgMC04IDMuNi04IDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh2MHpcIiBkYXRhLW9yaWdpbmFsPVwiIzQ0NDQ0NFwiIGRhdGEtb2xkX2NvbG9yPVwiIzQ0NDQ0NFwiLz48cGF0aCBkPVwiTTEyLjIgMTAuOGwtMi44LTIuOCAyLjgtMi44LTEuNC0xLjQtMi44IDIuOC0yLjgtMi44LTEuNCAxLjQgMi44IDIuOC0yLjggMi44IDEuNCAxLjQgMi44LTIuOCAyLjggMi44elwiLz48L2c+IDwvc3ZnPicsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG59XG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPNUQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixJQUFJLENBQUM7SUFHTCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRTFCLElBQ1csY0FBYyxDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFHTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXZCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZCxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsaUJBQWlCLEdBQUcsS0FB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LEVBQzdCLCtCQUErQixDQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7Ozs7Ozs7O2FBUWhDLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDOzs7Ozs7YUFNaEMsRUFBRSxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsOFpBQThaLEVBQUUsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2hlLENBQUM7SUFDSCxDQUFDO3VHQXZNVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUVBQXlFO29CQUNuRixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSVEsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssY0FBYztzQkFEeEIsS0FBSztnQkFXQyxlQUFlO3NCQURyQixXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgd2l0aGluU2FtZURpYWxvZyB9IGZyb20gJy4uL2hlbHBlcnMvd2l0aGluLXNhbWUtZGlhbG9nJztcblxuaW1wb3J0IHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZzRm9ybUJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tY29udGFpbmVyJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0LXJhaXNlZC1idXR0b25dLFttYXQtYnV0dG9uXSxbbWF0LWZsYXQtYnV0dG9uXSxbbWF0LXN0cm9rZWQtYnV0dG9uXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZzQnV0dG9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuYW1lO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXJ0eVN1Ym1pdCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdWJtaXREaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3N1Ym1pdERpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5fYXBwbHlEaXNhYmxlZCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdWJtaXREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3VibWl0RGlzYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRyYW5zaXRpb24nKVxuICBwdWJsaWMgdHJhbnNpdGlvblN0eWxlID0gbnVsbDtcblxuICBwdWJsaWMgc3VibWl0ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc3VibWl0RGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZm9ybURpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3ByZXZpb3VzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8YW55Pj4oTWF0RGlhbG9nUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9jb250YWluZXIgPSB0aGlzLl9vd25EaWFsb2dPbmx5KGluamVjdChGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSkpO1xuICBwcml2YXRlIF9mb3JtID0gdGhpcy5fb3duRGlhbG9nT25seShpbmplY3QoRnNGb3JtRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pKTtcbiAgcHJpdmF0ZSBfbWF0QnV0dG9uID0gaW5qZWN0KE1hdEJ1dHRvbiwgeyBvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9mb3JtQmFzZTogRnNGb3JtQmFzZURpcmVjdGl2ZTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJtaXQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnO1xuICAgIC8vIFByZWZlciB0aGUgZW5jbG9zaW5nIGNvbnRhaW5lciBvdmVyIHRoZSBmb3JtOiB0aGUgZm9ybSdzIG93biBidXR0b25cbiAgICAvLyBtYW5hZ2VtZW50IChkaXJ0eS1zdWJtaXQgdHJhY2tpbmcsIGFjdGl2ZVN1Ym1pdEJ1dHRvbiwgcmVzZXQpIHJlc29sdmVzIGl0c1xuICAgIC8vIHJlZ2lzdHJ5IHRoZSBzYW1lIHdheSwgc28gYnV0dG9ucyBtdXN0IHJlZ2lzdGVyIHdpdGggdGhlIHNhbWUgb3duZXIuXG4gICAgLy8gUmVnaXN0ZXJpbmcgd2l0aCB0aGUgZm9ybSB3aGlsZSB0aGUgZm9ybSByZWFkcyB0aGUgY29udGFpbmVyIGxlYXZlcyB0aGVcbiAgICAvLyBjb250YWluZXIncyBidXR0b24gbGlzdCBlbXB0eSBhbmQgdGhlIHN1Ym1pdCBidXR0b24gbmV2ZXIgZ2V0c1xuICAgIC8vIGRpcnR5LWRpc2FibGVkLlxuICAgIC8vXG4gICAgLy8gTm90ZSB0aGlzIHJlc29sdmVzIHRoZSBST09UIG9mIHRoZSBsaW5rZWQgc2V0LCBub3QgdGhlIG5lYXJlc3QgZm9ybTogdGhlXG4gICAgLy8gYnV0dG9uIHRoYXQgc2F2ZXMgYSB0YWIncyBmb3JtIHR5cGljYWxseSBzaXRzIG91dHNpZGUgaXQsIGRvd24gaW4gdGhlXG4gICAgLy8gZGlhbG9nIGZvb3RlciwgYW5kIGRyaXZlcyB0aGUgd2hvbGUgbGlua2VkIHNldCBmcm9tIHRoZXJlLlxuICAgIHRoaXMuX2Zvcm1CYXNlID0gdGhpcy5fY29udGFpbmVyIHx8IHRoaXMuX2Zvcm0/LnJvb3RGb3JtO1xuXG4gICAgaWYgKHRoaXMuX2Zvcm1CYXNlKSB7XG4gICAgICB0aGlzLl9mb3JtQmFzZS5hZGRCdXR0b24odGhpcyk7XG5cbiAgICAgIGlmKHRoaXMuc3VibWl0KSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1CYXNlLmFjdGl2ZVN1Ym1pdEJ1dHRvbiA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQmFzZS50cmlnZ2VyU3VibWl0KCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50cmFuc2l0aW9uU3R5bGUgPSAnbm9uZSc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblN0eWxlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpIHtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uICYmICF0aGlzLl9mb3JtQmFzZS5hY3RpdmVTdWJtaXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzRGlzYWJsZWQgPSB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZWQ7XG4gICAgICB0aGlzLl9mb3JtRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmFibGUoKSB7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fZm9ybURpc2FibGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IHRydWU7XG4gICAgICB0aGlzLl9hcHBseURpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2Nlc3MoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygncHJvY2VzcycpO1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VjY2VzcygpIHtcbiAgICB0aGlzLnNldENsYXNzKCdzdWNjZXNzJyk7XG4gICAgaWYgKHRoaXMuX21hdEJ1dHRvbikge1xuICAgICAgdGhpcy5fbWF0QnV0dG9uLmRpc2FibGVSaXBwbGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZXJyb3IoKSB7XG4gICAgdGhpcy5zZXRDbGFzcygnZXJyb3InKTtcbiAgICBpZiAodGhpcy5fbWF0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9tYXRCdXR0b24uZGlzYWJsZVJpcHBsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDbGFzcyhjbHMpIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLl9nZXRTdmcoY2xzKTtcbiAgICB0aGlzLl9yZXNldENsYXNzKCk7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYGZzLWZvcm0tc3VibWl0LWJ1dHRvbi0ke2Nsc31gKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN2Zyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICBpZiAoIXRoaXMuX3ByZXZpb3VzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdmctaWNvbicpXG4gICAgICAuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgZWwucmVtb3ZlKCk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX3Jlc2V0Q2xhc3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUJhc2U/LnJlbW92ZUJ1dHRvbih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZWVwcyBhIERJLXJlc29sdmVkIG93bmVyIG9ubHkgd2hlbiBpdCBiZWxvbmdzIHRvIHRoaXMgYnV0dG9uJ3MgZGlhbG9nLiBBXG4gICAqIGRpYWxvZyBvcGVuZWQgd2l0aCBgdmlld0NvbnRhaW5lclJlZmAgcmVzb2x2ZXMgdGhyb3VnaCB0byB3aGF0ZXZlciBvcGVuZWRcbiAgICogaXQsIHNvIHdpdGhvdXQgdGhpcyB0aGUgaW5uZXIgZGlhbG9nJ3MgU2F2ZSB3b3VsZCByZWdpc3RlciB3aXRoIC0gYW5kXG4gICAqIHN1Ym1pdCAtIHRoZSBvdXRlciBkaWFsb2cncyBmb3JtIHNldC5cbiAgICovXG4gIHByaXZhdGUgX293bkRpYWxvZ09ubHk8VCBleHRlbmRzIEZzRm9ybUJhc2VEaXJlY3RpdmU+KG93bmVyOiBUKTogVCB7XG4gICAgcmV0dXJuIHdpdGhpblNhbWVEaWFsb2cob3duZXIsIHRoaXMuX2RpYWxvZ1JlZikgPyBvd25lciA6IG51bGw7XG4gIH1cblxuICAvLyBFZmZlY3RpdmUgZGlzYWJsZWQgY29tYmluZXMgdGhlIGNvbnN1bWVyLWNvbnRyb2xsZWQgc3VibWl0RGlzYWJsZWQgaW5wdXQgd2l0aFxuICAvLyB0aGUgZm9ybSdzIHN1Ym1pdC1saWZlY3ljbGUgc3RhdGUsIHNvIGZvcm0gZW5hYmxlL2Rpc2FibGUgbmV2ZXIgY2xvYmJlcnMgYW5cbiAgLy8gZXhwbGljaXQgW3N1Ym1pdERpc2FibGVkXSBhbmQgdGhlIHR3byBjaGFubmVscyBzdGF5IGluZGVwZW5kZW50LlxuICBwcml2YXRlIF9hcHBseURpc2FibGVkKCkge1xuICAgIGlmICh0aGlzLl9tYXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX21hdEJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuX3N1Ym1pdERpc2FibGVkIHx8IHRoaXMuX2Zvcm1EaXNhYmxlZDtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q2xhc3MoKSB7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdFxuICAgICAgLnJlbW92ZShcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1zdWNjZXNzJywgXG4gICAgICAgICdmcy1mb3JtLXN1Ym1pdC1idXR0b24tZXJyb3InLCBcbiAgICAgICAgJ2ZzLWZvcm0tc3VibWl0LWJ1dHRvbi1wcm9jZXNzJyxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdmcodHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8c3ZnIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tc3VjY2Vzc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2ZXJzaW9uPVwiMS4xXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM4IDM4O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgd2lkdGg9XCIzOHB4XCIgaGVpZ2h0PVwiMzhweFwiPlxuICAgICAgPGc+XG4gICAgICAgIDxnIGNsYXNzPVwiY2hlY2tcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjkuNiwxMS45Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBMMTYuMywyMy40bC02LjEtNi4xYy0wLjUtMC41LTEuMy0wLjUtMS44LDBzLTAuNSwxLjMsMCwxLjhsNyw3YzAuMywwLjMsMC42LDAuNCwwLjksMC40czAuNy0wLjEsMC45LTAuNGwxMi40LTEyLjRDMzAuMSwxMy4yLDMwLjEsMTIuNCwyOS42LDExLjl6XCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPC9zdmc+YCwgJ3RleHQveG1sJykuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByb2Nlc3NcIiB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPGcgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9XCIuNVwiIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjE4XCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMThcIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDE4IDE4XCIgdG89XCIzNjAgMTggMThcIiBkdXI9XCIuN3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8L3N2Zz5gLCAndGV4dC94bWwnKS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygnPHN2ZyBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzhweFwiIGhlaWdodD1cIjM4cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PGc+PHBhdGggZD1cIk04IDFjMy45IDAgNyAzLjEgNyA3cy0zLjEgNy03IDctNy0zLjEtNy03IDMuMS03IDctN3pNOCAwYy00LjQgMC04IDMuNi04IDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh2MHpcIiBkYXRhLW9yaWdpbmFsPVwiIzQ0NDQ0NFwiIGRhdGEtb2xkX2NvbG9yPVwiIzQ0NDQ0NFwiLz48cGF0aCBkPVwiTTEyLjIgMTAuOGwtMi44LTIuOCAyLjgtMi44LTEuNC0xLjQtMi44IDIuOC0yLjgtMi44LTEuNCAxLjQgMi44IDIuOC0yLjggMi44IDEuNCAxLjQgMi44LTIuOCAyLjggMi44elwiLz48L2c+IDwvc3ZnPicsICd0ZXh0L3htbCcpLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { MatDialogRef } from '@angular/material/dialog';
3
+ import { MatTabGroup } from '@angular/material/tabs';
4
+ import { withinSameDialog } from '../../helpers/within-same-dialog';
5
+ import { FsFormContainerDirective } from '../form-container';
6
+ import { FsFormDirective } from '../form';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Brings a tab group into the enclosing form set's unsaved-changes confirm.
10
+ *
11
+ * An owner picks up tab groups with `@ContentChildren(MatTabGroup)`, which reaches
12
+ * through its own projected content - including lazily mounted tab bodies - but
13
+ * stops at a child component's view. So a tab group declared inside a child
14
+ * component's own template is invisible to the dialog that contains it, and
15
+ * switching between those tabs never prompts even though switching the outer ones
16
+ * does. That is not a shape worth avoiding: a dialog whose Profile tab is its own
17
+ * component, with its own tabs inside, is the normal way to keep a large dialog
18
+ * readable.
19
+ *
20
+ * DI does cross the boundary a content query cannot, so put this on the nested
21
+ * group and it registers itself with the owner above it:
22
+ *
23
+ * <mat-tab-group fsFormConfirmTabs [(selected)]="tab">
24
+ *
25
+ * Confirming stays gated on the owner's `confirm` and `confirmTabs` inputs, so
26
+ * this only opts the group in - it never forces a prompt on.
27
+ */
28
+ export class FsFormConfirmTabsDirective {
29
+ _tabGroup = inject(MatTabGroup, { self: true });
30
+ _dialogRef = inject(MatDialogRef, { optional: true });
31
+ _container = this._ownDialogOnly(inject(FsFormContainerDirective, { optional: true }));
32
+ _form = this._ownDialogOnly(inject(FsFormDirective, { optional: true }));
33
+ ngOnInit() {
34
+ const owner = this._container || this._form?.rootForm;
35
+ owner?.registerTabGroup(this._tabGroup);
36
+ }
37
+ _ownDialogOnly(owner) {
38
+ return withinSameDialog(owner, this._dialogRef) ? owner : null;
39
+ }
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormConfirmTabsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
41
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsFormConfirmTabsDirective, isStandalone: true, selector: "mat-tab-group[fsFormConfirmTabs]", ngImport: i0 });
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormConfirmTabsDirective, decorators: [{
44
+ type: Directive,
45
+ args: [{
46
+ selector: 'mat-tab-group[fsFormConfirmTabs]',
47
+ standalone: true,
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS10YWJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9jb25maXJtLXRhYnMvY29uZmlybS10YWJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRzFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQUU3QixTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxNQUFNLENBQW9CLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkYsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUUsUUFBUTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7UUFFdEQsS0FBSyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sY0FBYyxDQUFnQyxLQUFRO1FBQzVELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQzt1R0FmVSwwQkFBMEI7MkZBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyB3aXRoaW5TYW1lRGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycy93aXRoaW4tc2FtZS1kaWFsb2cnO1xuaW1wb3J0IHsgRnNGb3JtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtJztcblxuXG4vKipcbiAqIEJyaW5ncyBhIHRhYiBncm91cCBpbnRvIHRoZSBlbmNsb3NpbmcgZm9ybSBzZXQncyB1bnNhdmVkLWNoYW5nZXMgY29uZmlybS5cbiAqXG4gKiBBbiBvd25lciBwaWNrcyB1cCB0YWIgZ3JvdXBzIHdpdGggYEBDb250ZW50Q2hpbGRyZW4oTWF0VGFiR3JvdXApYCwgd2hpY2ggcmVhY2hlc1xuICogdGhyb3VnaCBpdHMgb3duIHByb2plY3RlZCBjb250ZW50IC0gaW5jbHVkaW5nIGxhemlseSBtb3VudGVkIHRhYiBib2RpZXMgLSBidXRcbiAqIHN0b3BzIGF0IGEgY2hpbGQgY29tcG9uZW50J3Mgdmlldy4gU28gYSB0YWIgZ3JvdXAgZGVjbGFyZWQgaW5zaWRlIGEgY2hpbGRcbiAqIGNvbXBvbmVudCdzIG93biB0ZW1wbGF0ZSBpcyBpbnZpc2libGUgdG8gdGhlIGRpYWxvZyB0aGF0IGNvbnRhaW5zIGl0LCBhbmRcbiAqIHN3aXRjaGluZyBiZXR3ZWVuIHRob3NlIHRhYnMgbmV2ZXIgcHJvbXB0cyBldmVuIHRob3VnaCBzd2l0Y2hpbmcgdGhlIG91dGVyIG9uZXNcbiAqIGRvZXMuIFRoYXQgaXMgbm90IGEgc2hhcGUgd29ydGggYXZvaWRpbmc6IGEgZGlhbG9nIHdob3NlIFByb2ZpbGUgdGFiIGlzIGl0cyBvd25cbiAqIGNvbXBvbmVudCwgd2l0aCBpdHMgb3duIHRhYnMgaW5zaWRlLCBpcyB0aGUgbm9ybWFsIHdheSB0byBrZWVwIGEgbGFyZ2UgZGlhbG9nXG4gKiByZWFkYWJsZS5cbiAqXG4gKiBESSBkb2VzIGNyb3NzIHRoZSBib3VuZGFyeSBhIGNvbnRlbnQgcXVlcnkgY2Fubm90LCBzbyBwdXQgdGhpcyBvbiB0aGUgbmVzdGVkXG4gKiBncm91cCBhbmQgaXQgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBvd25lciBhYm92ZSBpdDpcbiAqXG4gKiAgIDxtYXQtdGFiLWdyb3VwIGZzRm9ybUNvbmZpcm1UYWJzIFsoc2VsZWN0ZWQpXT1cInRhYlwiPlxuICpcbiAqIENvbmZpcm1pbmcgc3RheXMgZ2F0ZWQgb24gdGhlIG93bmVyJ3MgYGNvbmZpcm1gIGFuZCBgY29uZmlybVRhYnNgIGlucHV0cywgc29cbiAqIHRoaXMgb25seSBvcHRzIHRoZSBncm91cCBpbiAtIGl0IG5ldmVyIGZvcmNlcyBhIHByb21wdCBvbi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWF0LXRhYi1ncm91cFtmc0Zvcm1Db25maXJtVGFic10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1Db25maXJtVGFic0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBfdGFiR3JvdXAgPSBpbmplY3QoTWF0VGFiR3JvdXAsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxhbnk+PihNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2NvbnRhaW5lciA9IHRoaXMuX293bkRpYWxvZ09ubHkoaW5qZWN0KEZzRm9ybUNvbnRhaW5lckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KSk7XG4gIHByaXZhdGUgX2Zvcm0gPSB0aGlzLl9vd25EaWFsb2dPbmx5KGluamVjdChGc0Zvcm1EaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSkpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBvd25lciA9IHRoaXMuX2NvbnRhaW5lciB8fCB0aGlzLl9mb3JtPy5yb290Rm9ybTtcblxuICAgIG93bmVyPy5yZWdpc3RlclRhYkdyb3VwKHRoaXMuX3RhYkdyb3VwKTtcbiAgfVxuXG4gIHByaXZhdGUgX293bkRpYWxvZ09ubHk8VCBleHRlbmRzIEZzRm9ybUJhc2VEaXJlY3RpdmU+KG93bmVyOiBUKTogVCB7XG4gICAgcmV0dXJuIHdpdGhpblNhbWVEaWFsb2cob3duZXIsIHRoaXMuX2RpYWxvZ1JlZikgPyBvd25lciA6IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './confirm-tabs.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvY29uZmlybS10YWJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpcm0tdGFicy5kaXJlY3RpdmUnO1xuIl19