ng-primitives 0.7.0 → 0.7.2

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 (39) hide show
  1. package/dialog/config/dialog.config.d.ts +43 -0
  2. package/dialog/dialog/dialog-ref.d.ts +40 -0
  3. package/dialog/dialog/dialog.directive.d.ts +29 -21
  4. package/dialog/dialog/dialog.service.d.ts +66 -0
  5. package/dialog/dialog-description/dialog-description.directive.d.ts +19 -0
  6. package/dialog/dialog-description/dialog-description.token.d.ts +14 -0
  7. package/dialog/dialog-overlay/dialog-overlay.directive.d.ts +8 -0
  8. package/dialog/{dialog-panel/dialog-panel.token.d.ts → dialog-overlay/dialog-overlay.token.d.ts} +4 -4
  9. package/dialog/dialog-title/dialog-title.directive.d.ts +14 -4
  10. package/dialog/dialog-trigger/dialog-trigger.directive.d.ts +24 -0
  11. package/dialog/dialog-trigger/dialog-trigger.token.d.ts +14 -0
  12. package/dialog/index.d.ts +8 -3
  13. package/esm2022/date-picker/date-picker-row-render/date-picker-row-render.directive.mjs +1 -2
  14. package/esm2022/dialog/config/dialog.config.mjs +28 -0
  15. package/esm2022/dialog/dialog/dialog-ref.mjs +44 -0
  16. package/esm2022/dialog/dialog/dialog.directive.mjs +59 -27
  17. package/esm2022/dialog/dialog/dialog.service.mjs +202 -0
  18. package/esm2022/dialog/dialog-description/dialog-description.directive.mjs +46 -0
  19. package/esm2022/dialog/dialog-description/dialog-description.token.mjs +16 -0
  20. package/esm2022/dialog/dialog-overlay/dialog-overlay.directive.mjs +35 -0
  21. package/esm2022/dialog/dialog-overlay/dialog-overlay.token.mjs +16 -0
  22. package/esm2022/dialog/dialog-title/dialog-title.directive.mjs +22 -7
  23. package/esm2022/dialog/dialog-trigger/dialog-trigger.directive.mjs +61 -0
  24. package/esm2022/dialog/dialog-trigger/dialog-trigger.token.mjs +16 -0
  25. package/esm2022/dialog/index.mjs +8 -3
  26. package/esm2022/internal/disabled/disabled.mjs +2 -2
  27. package/esm2022/utils/signals/async.mjs +3 -1
  28. package/fesm2022/ng-primitives-date-picker.mjs +0 -1
  29. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  30. package/fesm2022/ng-primitives-dialog.mjs +495 -46
  31. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  32. package/fesm2022/ng-primitives-internal.mjs +1 -1
  33. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  34. package/fesm2022/ng-primitives-utils.mjs +2 -0
  35. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  36. package/package.json +7 -7
  37. package/dialog/dialog-panel/dialog-panel.directive.d.ts +0 -5
  38. package/esm2022/dialog/dialog-panel/dialog-panel.directive.mjs +0 -24
  39. package/esm2022/dialog/dialog-panel/dialog-panel.token.mjs +0 -16
@@ -1,34 +1,61 @@
1
- import { booleanAttribute, contentChild, Directive, input } from '@angular/core';
1
+ import { booleanAttribute, Directive, HostListener, input, signal } from '@angular/core';
2
+ import { NgpFocusTrap } from 'ng-primitives/focus-trap';
2
3
  import { uniqueId } from 'ng-primitives/utils';
3
- import { NgpDialogTitleToken } from '../dialog-title/dialog-title.token';
4
+ import { injectDialogConfig } from '../config/dialog.config';
5
+ import { injectDialogRef } from './dialog-ref';
4
6
  import { NgpDialogToken } from './dialog.token';
5
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "ng-primitives/focus-trap";
6
9
  export class NgpDialog {
7
10
  constructor() {
8
- /**
9
- * Define the id of the dialog.
10
- */
11
+ this.config = injectDialogConfig();
12
+ /** Access the dialog ref */
13
+ this.dialogRef = injectDialogRef();
14
+ /** The id of the dialog */
11
15
  this.id = input(uniqueId('ngp-dialog'));
12
- /**
13
- * The open state of the dialog.
14
- */
15
- this.open = input(false, {
16
- alias: 'ngpDialogOpen',
17
- transform: booleanAttribute,
18
- });
19
- /**
20
- * The type of the dialog.
21
- */
22
- this.type = input('dialog', {
16
+ /** The dialog role. */
17
+ this.role = input(this.config.role, {
23
18
  alias: 'ngpDialogRole',
24
19
  });
25
- /**
26
- * Access the title of the dialog.
27
- */
28
- this.title = contentChild(NgpDialogTitleToken, { descendants: true });
20
+ /** Whether the dialog is a modal. */
21
+ this.modal = input(this.config.modal ?? false, {
22
+ alias: 'ngpDialogModal',
23
+ transform: booleanAttribute,
24
+ });
25
+ /** The labelledby ids */
26
+ this.labelledBy = signal([]);
27
+ /** The describedby ids */
28
+ this.describedBy = signal([]);
29
+ }
30
+ ngOnDestroy() {
31
+ this.close();
32
+ }
33
+ /** Close the dialog. */
34
+ close() {
35
+ this.dialogRef.close();
36
+ }
37
+ /** Stop click events from propagating to the overlay */
38
+ onClick(event) {
39
+ event.stopPropagation();
40
+ }
41
+ /** @internal register a labelledby id */
42
+ setLabelledBy(id) {
43
+ this.labelledBy.update(ids => [...ids, id]);
44
+ }
45
+ /** @internal register a describedby id */
46
+ setDescribedBy(id) {
47
+ this.describedBy.update(ids => [...ids, id]);
48
+ }
49
+ /** @internal remove a labelledby id */
50
+ removeLabelledBy(id) {
51
+ this.labelledBy.update(ids => ids.filter(i => i !== id));
52
+ }
53
+ /** @internal remove a describedby id */
54
+ removeDescribedBy(id) {
55
+ this.describedBy.update(ids => ids.filter(i => i !== id));
29
56
  }
30
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialog, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.1.1", type: NgpDialog, isStandalone: true, selector: "[ngpDialog]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "ngpDialogOpen", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "ngpDialogRole", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "dialog" }, properties: { "id": "id()", "attr.tabindex": "-1", "attr.data-open": "open()", "attr.aria-labelledby": "title() ?? null" } }, providers: [{ provide: NgpDialogToken, useExisting: NgpDialog }], queries: [{ propertyName: "title", first: true, predicate: NgpDialogTitleToken, descendants: true, isSignal: true }], exportAs: ["ngpDialog"], ngImport: i0 }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpDialog, isStandalone: true, selector: "[ngpDialog]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "ngpDialogRole", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "ngpDialogModal", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "-1" }, listeners: { "click": "onClick($event)" }, properties: { "id": "id()", "attr.role": "role()", "attr.aria-modal": "modal()", "attr.aria-labelledby": "labelledBy().join(\" \")", "attr.aria-describedby": "describedBy().join(\" \")" } }, providers: [{ provide: NgpDialogToken, useExisting: NgpDialog }], exportAs: ["ngpDialog"], hostDirectives: [{ directive: i1.NgpFocusTrap }], ngImport: i0 }); }
32
59
  }
33
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialog, decorators: [{
34
61
  type: Directive,
@@ -37,13 +64,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
37
64
  selector: '[ngpDialog]',
38
65
  exportAs: 'ngpDialog',
39
66
  providers: [{ provide: NgpDialogToken, useExisting: NgpDialog }],
67
+ hostDirectives: [NgpFocusTrap],
40
68
  host: {
41
- role: 'dialog',
69
+ tabindex: '-1',
42
70
  '[id]': 'id()',
43
- '[attr.tabindex]': '-1',
44
- '[attr.data-open]': 'open()',
45
- '[attr.aria-labelledby]': 'title() ?? null',
71
+ '[attr.role]': 'role()',
72
+ '[attr.aria-modal]': 'modal()',
73
+ '[attr.aria-labelledby]': 'labelledBy().join(" ")',
74
+ '[attr.aria-describedby]': 'describedBy().join(" ")',
46
75
  },
47
76
  }]
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2cvZGlhbG9nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFlaEQsTUFBTSxPQUFPLFNBQVM7SUFidEI7UUFjRTs7V0FFRztRQUNNLE9BQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFNUM7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUF3QixLQUFLLEVBQUU7WUFDbEQsS0FBSyxFQUFFLGVBQWU7WUFDdEIsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQWdCLFFBQVEsRUFBRTtZQUM3QyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNnQixVQUFLLEdBQUcsWUFBWSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FDckY7OEdBekJZLFNBQVM7a0dBQVQsU0FBUyx5bEJBVFQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLDZEQWlDeEIsbUJBQW1COzsyRkF4QmhELFNBQVM7a0JBYnJCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUUsV0FBVztvQkFDckIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsV0FBVyxFQUFFLENBQUM7b0JBQ2hFLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxNQUFNLEVBQUUsTUFBTTt3QkFDZCxpQkFBaUIsRUFBRSxJQUFJO3dCQUN2QixrQkFBa0IsRUFBRSxRQUFRO3dCQUM1Qix3QkFBd0IsRUFBRSxpQkFBaUI7cUJBQzVDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgY29udGVudENoaWxkLCBEaXJlY3RpdmUsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgTmdwRGlhbG9nVGl0bGVUb2tlbiB9IGZyb20gJy4uL2RpYWxvZy10aXRsZS9kaWFsb2ctdGl0bGUudG9rZW4nO1xuaW1wb3J0IHsgTmdwRGlhbG9nVG9rZW4gfSBmcm9tICcuL2RpYWxvZy50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BEaWFsb2ddJyxcbiAgZXhwb3J0QXM6ICduZ3BEaWFsb2cnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncERpYWxvZ1Rva2VuLCB1c2VFeGlzdGluZzogTmdwRGlhbG9nIH1dLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ2RpYWxvZycsXG4gICAgJ1tpZF0nOiAnaWQoKScsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICctMScsXG4gICAgJ1thdHRyLmRhdGEtb3Blbl0nOiAnb3BlbigpJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICd0aXRsZSgpID8/IG51bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BEaWFsb2cge1xuICAvKipcbiAgICogRGVmaW5lIHRoZSBpZCBvZiB0aGUgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQgPSBpbnB1dCh1bmlxdWVJZCgnbmdwLWRpYWxvZycpKTtcblxuICAvKipcbiAgICogVGhlIG9wZW4gc3RhdGUgb2YgdGhlIGRpYWxvZy5cbiAgICovXG4gIHJlYWRvbmx5IG9wZW4gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7XG4gICAgYWxpYXM6ICduZ3BEaWFsb2dPcGVuJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgZGlhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PE5ncERpYWxvZ1JvbGU+KCdkaWFsb2cnLCB7XG4gICAgYWxpYXM6ICduZ3BEaWFsb2dSb2xlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgdGl0bGUgb2YgdGhlIGRpYWxvZy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB0aXRsZSA9IGNvbnRlbnRDaGlsZChOZ3BEaWFsb2dUaXRsZVRva2VuLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cuXG4gKi9cbmV4cG9ydCB0eXBlIE5ncERpYWxvZ1JvbGUgPSAnZGlhbG9nJyB8ICdhbGVydGRpYWxvZyc7XG4iXX0=
77
+ }], propDecorators: { onClick: [{
78
+ type: HostListener,
79
+ args: ['click', ['$event']]
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2cvZGlhbG9nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWlCaEQsTUFBTSxPQUFPLFNBQVM7SUFmdEI7UUFnQm1CLFdBQU0sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBRS9DLDRCQUE0QjtRQUNYLGNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUUvQywyQkFBMkI7UUFDbEIsT0FBRSxHQUFHLEtBQUssQ0FBUyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUVwRCx1QkFBdUI7UUFDZCxTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3RDLEtBQUssRUFBRSxlQUFlO1NBQ3ZCLENBQUMsQ0FBQztRQUVILHFDQUFxQztRQUM1QixVQUFLLEdBQUcsS0FBSyxDQUF3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDeEUsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixTQUFTLEVBQUUsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUNOLGVBQVUsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFckQsMEJBQTBCO1FBQ1AsZ0JBQVcsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7S0FvQ3ZEO0lBbENDLFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3REFBd0Q7SUFFOUMsT0FBTyxDQUFDLEtBQVk7UUFDNUIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsYUFBYSxDQUFDLEVBQVU7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxjQUFjLENBQUMsRUFBVTtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLGdCQUFnQixDQUFDLEVBQVU7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxpQkFBaUIsQ0FBQyxFQUFVO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBM0RVLFNBQVM7a0dBQVQsU0FBUyx3c0JBWFQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDOzsyRkFXckQsU0FBUztrQkFmckIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxXQUFXLEVBQUUsQ0FBQztvQkFDaEUsY0FBYyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUM5QixJQUFJLEVBQUU7d0JBQ0osUUFBUSxFQUFFLElBQUk7d0JBQ2QsTUFBTSxFQUFFLE1BQU07d0JBQ2QsYUFBYSxFQUFFLFFBQVE7d0JBQ3ZCLG1CQUFtQixFQUFFLFNBQVM7d0JBQzlCLHdCQUF3QixFQUFFLHdCQUF3Qjt3QkFDbEQseUJBQXlCLEVBQUUseUJBQXlCO3FCQUNyRDtpQkFDRjs4QkFzQ1csT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5wdXQsIE9uRGVzdHJveSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3BGb2N1c1RyYXAgfSBmcm9tICduZy1wcmltaXRpdmVzL2ZvY3VzLXRyYXAnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IGluamVjdERpYWxvZ0NvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9kaWFsb2cuY29uZmlnJztcbmltcG9ydCB7IGluamVjdERpYWxvZ1JlZiB9IGZyb20gJy4vZGlhbG9nLXJlZic7XG5pbXBvcnQgeyBOZ3BEaWFsb2dUb2tlbiB9IGZyb20gJy4vZGlhbG9nLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncERpYWxvZ10nLFxuICBleHBvcnRBczogJ25ncERpYWxvZycsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGlhbG9nVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BEaWFsb2cgfV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbTmdwRm9jdXNUcmFwXSxcbiAgaG9zdDoge1xuICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICdbaWRdJzogJ2lkKCknLFxuICAgICdbYXR0ci5yb2xlXSc6ICdyb2xlKCknLFxuICAgICdbYXR0ci5hcmlhLW1vZGFsXSc6ICdtb2RhbCgpJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdsYWJlbGxlZEJ5KCkuam9pbihcIiBcIiknLFxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdkZXNjcmliZWRCeSgpLmpvaW4oXCIgXCIpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwRGlhbG9nIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3REaWFsb2dDb25maWcoKTtcblxuICAvKiogQWNjZXNzIHRoZSBkaWFsb2cgcmVmICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmID0gaW5qZWN0RGlhbG9nUmVmKCk7XG5cbiAgLyoqIFRoZSBpZCBvZiB0aGUgZGlhbG9nICovXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nPih1bmlxdWVJZCgnbmdwLWRpYWxvZycpKTtcblxuICAvKiogVGhlIGRpYWxvZyByb2xlLiAqL1xuICByZWFkb25seSByb2xlID0gaW5wdXQodGhpcy5jb25maWcucm9sZSwge1xuICAgIGFsaWFzOiAnbmdwRGlhbG9nUm9sZScsXG4gIH0pO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBkaWFsb2cgaXMgYSBtb2RhbC4gKi9cbiAgcmVhZG9ubHkgbW9kYWwgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KHRoaXMuY29uZmlnLm1vZGFsID8/IGZhbHNlLCB7XG4gICAgYWxpYXM6ICduZ3BEaWFsb2dNb2RhbCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKiogVGhlIGxhYmVsbGVkYnkgaWRzICovXG4gIHByb3RlY3RlZCByZWFkb25seSBsYWJlbGxlZEJ5ID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG5cbiAgLyoqIFRoZSBkZXNjcmliZWRieSBpZHMgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc2NyaWJlZEJ5ID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqIENsb3NlIHRoZSBkaWFsb2cuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICAvKiogU3RvcCBjbGljayBldmVudHMgZnJvbSBwcm9wYWdhdGluZyB0byB0aGUgb3ZlcmxheSAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCByZWdpc3RlciBhIGxhYmVsbGVkYnkgaWQgKi9cbiAgc2V0TGFiZWxsZWRCeShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbGxlZEJ5LnVwZGF0ZShpZHMgPT4gWy4uLmlkcywgaWRdKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgcmVnaXN0ZXIgYSBkZXNjcmliZWRieSBpZCAqL1xuICBzZXREZXNjcmliZWRCeShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZXNjcmliZWRCeS51cGRhdGUoaWRzID0+IFsuLi5pZHMsIGlkXSk7XG4gIH1cblxuICAvKiogQGludGVybmFsIHJlbW92ZSBhIGxhYmVsbGVkYnkgaWQgKi9cbiAgcmVtb3ZlTGFiZWxsZWRCeShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbGxlZEJ5LnVwZGF0ZShpZHMgPT4gaWRzLmZpbHRlcihpID0+IGkgIT09IGlkKSk7XG4gIH1cblxuICAvKiogQGludGVybmFsIHJlbW92ZSBhIGRlc2NyaWJlZGJ5IGlkICovXG4gIHJlbW92ZURlc2NyaWJlZEJ5KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2NyaWJlZEJ5LnVwZGF0ZShpZHMgPT4gaWRzLmZpbHRlcihpID0+IGkgIT09IGlkKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Overlay, OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';
9
+ import { TemplatePortal } from '@angular/cdk/portal';
10
+ import { Injectable, Injector, inject, isDevMode, } from '@angular/core';
11
+ import { uniqueId } from 'ng-primitives/utils';
12
+ import { Subject, defer } from 'rxjs';
13
+ import { startWith } from 'rxjs/operators';
14
+ import { injectDialogConfig } from '../config/dialog.config';
15
+ import { NgpDialogRef } from './dialog-ref';
16
+ import * as i0 from "@angular/core";
17
+ /**
18
+ * This is based on the Angular CDK Dialog service.
19
+ * https://github.com/angular/components/blob/main/src/cdk/dialog/dialog.ts
20
+ */
21
+ export class NgpDialogManager {
22
+ constructor() {
23
+ this.overlay = inject(Overlay);
24
+ this.defaultOptions = injectDialogConfig();
25
+ this.parentDialogManager = inject(NgpDialogManager, {
26
+ optional: true,
27
+ skipSelf: true,
28
+ });
29
+ this.overlayContainer = inject(OverlayContainer);
30
+ this.scrollStrategy = this.defaultOptions.scrollStrategy ?? this.overlay.scrollStrategies.block();
31
+ this.openDialogsAtThisLevel = [];
32
+ this.afterAllClosedAtThisLevel = new Subject();
33
+ this.afterOpenedAtThisLevel = new Subject();
34
+ this.ariaHiddenElements = new Map();
35
+ /**
36
+ * Stream that emits when all open dialog have finished closing.
37
+ * Will emit on subscribe if there are no open dialogs to begin with.
38
+ */
39
+ this.afterAllClosed = defer(() => this.openDialogs.length
40
+ ? this.getAfterAllClosed()
41
+ : this.getAfterAllClosed().pipe(startWith(undefined)));
42
+ }
43
+ /** Keeps track of the currently-open dialogs. */
44
+ get openDialogs() {
45
+ return this.parentDialogManager
46
+ ? this.parentDialogManager.openDialogs
47
+ : this.openDialogsAtThisLevel;
48
+ }
49
+ /** Stream that emits when a dialog has been opened. */
50
+ get afterOpened() {
51
+ return this.parentDialogManager
52
+ ? this.parentDialogManager.afterOpened
53
+ : this.afterOpenedAtThisLevel;
54
+ }
55
+ /**
56
+ * Opens a modal dialog containing the given template.
57
+ */
58
+ open(templateRef, config) {
59
+ const defaults = this.defaultOptions;
60
+ config = { ...defaults, ...config };
61
+ config.id = config.id ?? uniqueId('ngp-dialog');
62
+ if (config.id && this.getDialogById(config.id) && isDevMode()) {
63
+ throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
64
+ }
65
+ const overlayConfig = this.getOverlayConfig(config);
66
+ const overlayRef = this.overlay.create(overlayConfig);
67
+ const dialogRef = new NgpDialogRef(overlayRef, config);
68
+ const injector = this.createInjector(config, dialogRef, undefined);
69
+ const context = {
70
+ $implicit: dialogRef,
71
+ close: dialogRef.close.bind(dialogRef),
72
+ };
73
+ overlayRef.attach(new TemplatePortal(templateRef, config.viewContainerRef, context, injector));
74
+ // If this is the first dialog that we're opening, hide all the non-overlay content.
75
+ if (!this.openDialogs.length) {
76
+ this.hideNonDialogContentFromAssistiveTechnology();
77
+ }
78
+ this.openDialogs.push(dialogRef);
79
+ dialogRef.closed.subscribe(() => this.removeOpenDialog(dialogRef, true));
80
+ this.afterOpened.next(dialogRef);
81
+ return dialogRef;
82
+ }
83
+ /**
84
+ * Closes all of the currently-open dialogs.
85
+ */
86
+ closeAll() {
87
+ reverseForEach(this.openDialogs, dialog => dialog.close());
88
+ }
89
+ /**
90
+ * Finds an open dialog by its id.
91
+ * @param id ID to use when looking up the dialog.
92
+ */
93
+ getDialogById(id) {
94
+ return this.openDialogs.find(dialog => dialog.id === id);
95
+ }
96
+ ngOnDestroy() {
97
+ // Make one pass over all the dialogs that need to be untracked, but should not be closed. We
98
+ // want to stop tracking the open dialog even if it hasn't been closed, because the tracking
99
+ // determines when `aria-hidden` is removed from elements outside the dialog.
100
+ reverseForEach(this.openDialogsAtThisLevel, dialog => {
101
+ // Check for `false` specifically since we want `undefined` to be interpreted as `true`.
102
+ this.removeOpenDialog(dialog, false);
103
+ });
104
+ // Make a second pass and close the remaining dialogs. We do this second pass in order to
105
+ // correctly dispatch the `afterAllClosed` event in case we have a mixed array of dialogs
106
+ // that should be closed and dialogs that should not.
107
+ reverseForEach(this.openDialogsAtThisLevel, dialog => dialog.close());
108
+ this.afterAllClosedAtThisLevel.complete();
109
+ this.afterOpenedAtThisLevel.complete();
110
+ this.openDialogsAtThisLevel = [];
111
+ }
112
+ /**
113
+ * Creates an overlay config from a dialog config.
114
+ */
115
+ getOverlayConfig(config) {
116
+ const state = new OverlayConfig({
117
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
118
+ scrollStrategy: config.scrollStrategy || this.scrollStrategy,
119
+ hasBackdrop: false,
120
+ disposeOnNavigation: config.closeOnNavigation,
121
+ });
122
+ return state;
123
+ }
124
+ /**
125
+ * Creates a custom injector to be used inside the dialog. This allows a component loaded inside
126
+ * of a dialog to close itself and, optionally, to return a value.
127
+ */
128
+ createInjector(config, dialogRef, fallbackInjector) {
129
+ const userInjector = config.injector || config.viewContainerRef?.injector;
130
+ const providers = [{ provide: NgpDialogRef, useValue: dialogRef }];
131
+ return Injector.create({ parent: userInjector || fallbackInjector, providers });
132
+ }
133
+ /**
134
+ * Removes a dialog from the array of open dialogs.
135
+ */
136
+ removeOpenDialog(dialogRef, emitEvent) {
137
+ const index = this.openDialogs.indexOf(dialogRef);
138
+ if (index > -1) {
139
+ this.openDialogs.splice(index, 1);
140
+ // If all the dialogs were closed, remove/restore the `aria-hidden`
141
+ // to a the siblings and emit to the `afterAllClosed` stream.
142
+ if (!this.openDialogs.length) {
143
+ this.ariaHiddenElements.forEach((previousValue, element) => {
144
+ if (previousValue) {
145
+ element.setAttribute('aria-hidden', previousValue);
146
+ }
147
+ else {
148
+ element.removeAttribute('aria-hidden');
149
+ }
150
+ });
151
+ this.ariaHiddenElements.clear();
152
+ if (emitEvent) {
153
+ this.getAfterAllClosed().next();
154
+ }
155
+ }
156
+ }
157
+ }
158
+ /** Hides all of the content that isn't an overlay from assistive technology. */
159
+ hideNonDialogContentFromAssistiveTechnology() {
160
+ const overlayContainer = this.overlayContainer.getContainerElement();
161
+ // Ensure that the overlay container is attached to the DOM.
162
+ if (overlayContainer.parentElement) {
163
+ const siblings = overlayContainer.parentElement.children;
164
+ for (let i = siblings.length - 1; i > -1; i--) {
165
+ const sibling = siblings[i];
166
+ if (sibling !== overlayContainer &&
167
+ sibling.nodeName !== 'SCRIPT' &&
168
+ sibling.nodeName !== 'STYLE' &&
169
+ !sibling.hasAttribute('aria-live')) {
170
+ this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));
171
+ sibling.setAttribute('aria-hidden', 'true');
172
+ }
173
+ }
174
+ }
175
+ }
176
+ getAfterAllClosed() {
177
+ const parent = this.parentDialogManager;
178
+ return parent ? parent.getAfterAllClosed() : this.afterAllClosedAtThisLevel;
179
+ }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
181
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogManager, providedIn: 'root' }); }
182
+ }
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogManager, decorators: [{
184
+ type: Injectable,
185
+ args: [{
186
+ providedIn: 'root',
187
+ }]
188
+ }] });
189
+ /**
190
+ * Executes a callback against all elements in an array while iterating in reverse.
191
+ * Useful if the array is being modified as it is being iterated.
192
+ */
193
+ function reverseForEach(items, callback) {
194
+ let i = items.length;
195
+ while (i--) {
196
+ callback(items[i]);
197
+ }
198
+ }
199
+ export function injectDialogManager() {
200
+ return inject(NgpDialogManager);
201
+ }
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2RpYWxvZy9zcmMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFJUixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTVDOzs7R0FHRztBQUtILE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJbUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDdEMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1lBQzlELFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFDYyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxJQUFJLENB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MUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQzlFLENBQUM7OEdBbE1VLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFzTUQ7OztHQUdHO0FBQ0gsU0FBUyxjQUFjLENBQUksS0FBeUIsRUFBRSxRQUE4QjtJQUNsRixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRXJCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNYLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQU9ELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5Q29udGFpbmVyLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBTdGF0aWNQcm92aWRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIGluamVjdCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnbmctcHJpbWl0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTmdwRGlhbG9nQ29uZmlnLCBpbmplY3REaWFsb2dDb25maWcgfSBmcm9tICcuLi9jb25maWcvZGlhbG9nLmNvbmZpZyc7XG5pbXBvcnQgeyBOZ3BEaWFsb2dSZWYgfSBmcm9tICcuL2RpYWxvZy1yZWYnO1xuXG4vKipcbiAqIFRoaXMgaXMgYmFzZWQgb24gdGhlIEFuZ3VsYXIgQ0RLIERpYWxvZyBzZXJ2aWNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL2Nkay9kaWFsb2cvZGlhbG9nLnRzXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5ncERpYWxvZ01hbmFnZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE9wdGlvbnMgPSBpbmplY3REaWFsb2dDb25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnREaWFsb2dNYW5hZ2VyID0gaW5qZWN0KE5ncERpYWxvZ01hbmFnZXIsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBza2lwU2VsZjogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheUNvbnRhaW5lciA9IGluamVjdChPdmVybGF5Q29udGFpbmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3kgPVxuICAgIHRoaXMuZGVmYXVsdE9wdGlvbnMuc2Nyb2xsU3RyYXRlZ3kgPz8gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKTtcblxuICBwcml2YXRlIG9wZW5EaWFsb2dzQXRUaGlzTGV2ZWw6IE5ncERpYWxvZ1JlZltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PE5ncERpYWxvZ1JlZj4oKTtcbiAgcHJpdmF0ZSBhcmlhSGlkZGVuRWxlbWVudHMgPSBuZXcgTWFwPEVsZW1lbnQsIHN0cmluZyB8IG51bGw+KCk7XG5cbiAgLyoqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50bHktb3BlbiBkaWFsb2dzLiAqL1xuICBnZXQgb3BlbkRpYWxvZ3MoKTogcmVhZG9ubHkgTmdwRGlhbG9nUmVmW10ge1xuICAgIHJldHVybiB0aGlzLnBhcmVudERpYWxvZ01hbmFnZXJcbiAgICAgID8gdGhpcy5wYXJlbnREaWFsb2dNYW5hZ2VyLm9wZW5EaWFsb2dzXG4gICAgICA6IHRoaXMub3BlbkRpYWxvZ3NBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGEgZGlhbG9nIGhhcyBiZWVuIG9wZW5lZC4gKi9cbiAgZ2V0IGFmdGVyT3BlbmVkKCk6IFN1YmplY3Q8TmdwRGlhbG9nUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50RGlhbG9nTWFuYWdlclxuICAgICAgPyB0aGlzLnBhcmVudERpYWxvZ01hbmFnZXIuYWZ0ZXJPcGVuZWRcbiAgICAgIDogdGhpcy5hZnRlck9wZW5lZEF0VGhpc0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYWxsIG9wZW4gZGlhbG9nIGhhdmUgZmluaXNoZWQgY2xvc2luZy5cbiAgICogV2lsbCBlbWl0IG9uIHN1YnNjcmliZSBpZiB0aGVyZSBhcmUgbm8gb3BlbiBkaWFsb2dzIHRvIGJlZ2luIHdpdGguXG4gICAqL1xuICByZWFkb25seSBhZnRlckFsbENsb3NlZDogT2JzZXJ2YWJsZTx2b2lkPiA9IGRlZmVyKCgpID0+XG4gICAgdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGhcbiAgICAgID8gdGhpcy5nZXRBZnRlckFsbENsb3NlZCgpXG4gICAgICA6IHRoaXMuZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKSxcbiAgKTtcblxuICAvKipcbiAgICogT3BlbnMgYSBtb2RhbCBkaWFsb2cgY29udGFpbmluZyB0aGUgZ2l2ZW4gdGVtcGxhdGUuXG4gICAqL1xuICBvcGVuKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ3BEaWFsb2dDb250ZXh0PiwgY29uZmlnPzogTmdwRGlhbG9nQ29uZmlnKTogTmdwRGlhbG9nUmVmIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuZGVmYXVsdE9wdGlvbnM7XG4gICAgY29uZmlnID0geyAuLi5kZWZhdWx0cywgLi4uY29uZmlnIH07XG4gICAgY29uZmlnLmlkID0gY29uZmlnLmlkID8/IHVuaXF1ZUlkKCduZ3AtZGlhbG9nJyk7XG5cbiAgICBpZiAoY29uZmlnLmlkICYmIHRoaXMuZ2V0RGlhbG9nQnlJZChjb25maWcuaWQpICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgXCIke2NvbmZpZy5pZH1cIiBleGlzdHMgYWxyZWFkeS4gVGhlIGRpYWxvZyBpZCBtdXN0IGJlIHVuaXF1ZS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gbmV3IE5ncERpYWxvZ1JlZihvdmVybGF5UmVmLCBjb25maWcpO1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3Rvcihjb25maWcsIGRpYWxvZ1JlZiwgdW5kZWZpbmVkKTtcbiAgICBjb25zdCBjb250ZXh0OiBOZ3BEaWFsb2dDb250ZXh0ID0ge1xuICAgICAgJGltcGxpY2l0OiBkaWFsb2dSZWYsXG4gICAgICBjbG9zZTogZGlhbG9nUmVmLmNsb3NlLmJpbmQoZGlhbG9nUmVmKSxcbiAgICB9O1xuXG4gICAgb3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlUmVmLCBjb25maWcudmlld0NvbnRhaW5lclJlZiEsIGNvbnRleHQsIGluamVjdG9yKSk7XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBkaWFsb2cgdGhhdCB3ZSdyZSBvcGVuaW5nLCBoaWRlIGFsbCB0aGUgbm9uLW92ZXJsYXkgY29udGVudC5cbiAgICBpZiAoIXRoaXMub3BlbkRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLmhpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKTtcbiAgICB9XG5cbiAgICAodGhpcy5vcGVuRGlhbG9ncyBhcyBOZ3BEaWFsb2dSZWZbXSkucHVzaChkaWFsb2dSZWYpO1xuICAgIGRpYWxvZ1JlZi5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVtb3ZlT3BlbkRpYWxvZyhkaWFsb2dSZWYsIHRydWUpKTtcbiAgICB0aGlzLmFmdGVyT3BlbmVkLm5leHQoZGlhbG9nUmVmKTtcblxuICAgIHJldHVybiBkaWFsb2dSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFsbCBvZiB0aGUgY3VycmVudGx5LW9wZW4gZGlhbG9ncy5cbiAgICovXG4gIGNsb3NlQWxsKCk6IHZvaWQge1xuICAgIHJldmVyc2VGb3JFYWNoKHRoaXMub3BlbkRpYWxvZ3MsIGRpYWxvZyA9PiBkaWFsb2cuY2xvc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW4gb3BlbiBkaWFsb2cgYnkgaXRzIGlkLlxuICAgKiBAcGFyYW0gaWQgSUQgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgZGlhbG9nLlxuICAgKi9cbiAgZ2V0RGlhbG9nQnlJZChpZDogc3RyaW5nKTogTmdwRGlhbG9nUmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5maW5kKGRpYWxvZyA9PiBkaWFsb2cuaWQgPT09IGlkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIE1ha2Ugb25lIHBhc3Mgb3ZlciBhbGwgdGhlIGRpYWxvZ3MgdGhhdCBuZWVkIHRvIGJlIHVudHJhY2tlZCwgYnV0IHNob3VsZCBub3QgYmUgY2xvc2VkLiBXZVxuICAgIC8vIHdhbnQgdG8gc3RvcCB0cmFja2luZyB0aGUgb3BlbiBkaWFsb2cgZXZlbiBpZiBpdCBoYXNuJ3QgYmVlbiBjbG9zZWQsIGJlY2F1c2UgdGhlIHRyYWNraW5nXG4gICAgLy8gZGV0ZXJtaW5lcyB3aGVuIGBhcmlhLWhpZGRlbmAgaXMgcmVtb3ZlZCBmcm9tIGVsZW1lbnRzIG91dHNpZGUgdGhlIGRpYWxvZy5cbiAgICByZXZlcnNlRm9yRWFjaCh0aGlzLm9wZW5EaWFsb2dzQXRUaGlzTGV2ZWwsIGRpYWxvZyA9PiB7XG4gICAgICAvLyBDaGVjayBmb3IgYGZhbHNlYCBzcGVjaWZpY2FsbHkgc2luY2Ugd2Ugd2FudCBgdW5kZWZpbmVkYCB0byBiZSBpbnRlcnByZXRlZCBhcyBgdHJ1ZWAuXG4gICAgICB0aGlzLnJlbW92ZU9wZW5EaWFsb2coZGlhbG9nLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBNYWtlIGEgc2Vjb25kIHBhc3MgYW5kIGNsb3NlIHRoZSByZW1haW5pbmcgZGlhbG9ncy4gV2UgZG8gdGhpcyBzZWNvbmQgcGFzcyBpbiBvcmRlciB0b1xuICAgIC8vIGNvcnJlY3RseSBkaXNwYXRjaCB0aGUgYGFmdGVyQWxsQ2xvc2VkYCBldmVudCBpbiBjYXNlIHdlIGhhdmUgYSBtaXhlZCBhcnJheSBvZiBkaWFsb2dzXG4gICAgLy8gdGhhdCBzaG91bGQgYmUgY2xvc2VkIGFuZCBkaWFsb2dzIHRoYXQgc2hvdWxkIG5vdC5cbiAgICByZXZlcnNlRm9yRWFjaCh0aGlzLm9wZW5EaWFsb2dzQXRUaGlzTGV2ZWwsIGRpYWxvZyA9PiBkaWFsb2cuY2xvc2UoKSk7XG5cbiAgICB0aGlzLmFmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWwuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmdGVyT3BlbmVkQXRUaGlzTGV2ZWwuY29tcGxldGUoKTtcbiAgICB0aGlzLm9wZW5EaWFsb2dzQXRUaGlzTGV2ZWwgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgY29uZmlnIGZyb20gYSBkaWFsb2cgY29uZmlnLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGNvbmZpZzogTmdwRGlhbG9nQ29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogY29uZmlnLnNjcm9sbFN0cmF0ZWd5IHx8IHRoaXMuc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiBjb25maWcuY2xvc2VPbk5hdmlnYXRpb24sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSBpbmplY3RvciB0byBiZSB1c2VkIGluc2lkZSB0aGUgZGlhbG9nLiBUaGlzIGFsbG93cyBhIGNvbXBvbmVudCBsb2FkZWQgaW5zaWRlXG4gICAqIG9mIGEgZGlhbG9nIHRvIGNsb3NlIGl0c2VsZiBhbmQsIG9wdGlvbmFsbHksIHRvIHJldHVybiBhIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbmplY3RvcihcbiAgICBjb25maWc6IE5ncERpYWxvZ0NvbmZpZyxcbiAgICBkaWFsb2dSZWY6IE5ncERpYWxvZ1JlZixcbiAgICBmYWxsYmFja0luamVjdG9yOiBJbmplY3RvciB8IHVuZGVmaW5lZCxcbiAgKTogSW5qZWN0b3Ige1xuICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZy5pbmplY3RvciB8fCBjb25maWcudmlld0NvbnRhaW5lclJlZj8uaW5qZWN0b3I7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW3sgcHJvdmlkZTogTmdwRGlhbG9nUmVmLCB1c2VWYWx1ZTogZGlhbG9nUmVmIH1dO1xuXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHBhcmVudDogdXNlckluamVjdG9yIHx8IGZhbGxiYWNrSW5qZWN0b3IsIHByb3ZpZGVycyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgZGlhbG9nIGZyb20gdGhlIGFycmF5IG9mIG9wZW4gZGlhbG9ncy5cbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlT3BlbkRpYWxvZyhkaWFsb2dSZWY6IE5ncERpYWxvZ1JlZiwgZW1pdEV2ZW50OiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5EaWFsb2dzLmluZGV4T2YoZGlhbG9nUmVmKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAodGhpcy5vcGVuRGlhbG9ncyBhcyBOZ3BEaWFsb2dSZWZbXSkuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgLy8gSWYgYWxsIHRoZSBkaWFsb2dzIHdlcmUgY2xvc2VkLCByZW1vdmUvcmVzdG9yZSB0aGUgYGFyaWEtaGlkZGVuYFxuICAgICAgLy8gdG8gYSB0aGUgc2libGluZ3MgYW5kIGVtaXQgdG8gdGhlIGBhZnRlckFsbENsb3NlZGAgc3RyZWFtLlxuICAgICAgaWYgKCF0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKChwcmV2aW91c1ZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHByZXZpb3VzVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYXJpYUhpZGRlbkVsZW1lbnRzLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgIHRoaXMuZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogSGlkZXMgYWxsIG9mIHRoZSBjb250ZW50IHRoYXQgaXNuJ3QgYW4gb3ZlcmxheSBmcm9tIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiAqL1xuICBwcml2YXRlIGhpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbnRhaW5lciA9IHRoaXMub3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCk7XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgb3ZlcmxheSBjb250YWluZXIgaXMgYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICBpZiAob3ZlcmxheUNvbnRhaW5lci5wYXJlbnRFbGVtZW50KSB7XG4gICAgICBjb25zdCBzaWJsaW5ncyA9IG92ZXJsYXlDb250YWluZXIucGFyZW50RWxlbWVudC5jaGlsZHJlbjtcblxuICAgICAgZm9yIChsZXQgaSA9IHNpYmxpbmdzLmxlbmd0aCAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgc2libGluZyAhPT0gb3ZlcmxheUNvbnRhaW5lciAmJlxuICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTQ1JJUFQnICYmXG4gICAgICAgICAgc2libGluZy5ub2RlTmFtZSAhPT0gJ1NUWUxFJyAmJlxuICAgICAgICAgICFzaWJsaW5nLmhhc0F0dHJpYnV0ZSgnYXJpYS1saXZlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hcmlhSGlkZGVuRWxlbWVudHMuc2V0KHNpYmxpbmcsIHNpYmxpbmcuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKTtcbiAgICAgICAgICBzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZnRlckFsbENsb3NlZCgpOiBTdWJqZWN0PHZvaWQ+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudERpYWxvZ01hbmFnZXI7XG4gICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5nZXRBZnRlckFsbENsb3NlZCgpIDogdGhpcy5hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsO1xuICB9XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjYWxsYmFjayBhZ2FpbnN0IGFsbCBlbGVtZW50cyBpbiBhbiBhcnJheSB3aGlsZSBpdGVyYXRpbmcgaW4gcmV2ZXJzZS5cbiAqIFVzZWZ1bCBpZiB0aGUgYXJyYXkgaXMgYmVpbmcgbW9kaWZpZWQgYXMgaXQgaXMgYmVpbmcgaXRlcmF0ZWQuXG4gKi9cbmZ1bmN0aW9uIHJldmVyc2VGb3JFYWNoPFQ+KGl0ZW1zOiBUW10gfCByZWFkb25seSBUW10sIGNhbGxiYWNrOiAoY3VycmVudDogVCkgPT4gdm9pZCkge1xuICBsZXQgaSA9IGl0ZW1zLmxlbmd0aDtcblxuICB3aGlsZSAoaS0tKSB7XG4gICAgY2FsbGJhY2soaXRlbXNbaV0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdwRGlhbG9nQ29udGV4dCB7XG4gICRpbXBsaWNpdDogTmdwRGlhbG9nUmVmO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERpYWxvZ01hbmFnZXIoKTogTmdwRGlhbG9nTWFuYWdlciB7XG4gIHJldHVybiBpbmplY3QoTmdwRGlhbG9nTWFuYWdlcik7XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Directive, input } from '@angular/core';
9
+ import { onChange, uniqueId } from 'ng-primitives/utils';
10
+ import { injectDialog } from '../dialog/dialog.token';
11
+ import { NgpDialogDescriptionToken } from './dialog-description.token';
12
+ import * as i0 from "@angular/core";
13
+ export class NgpDialogDescription {
14
+ constructor() {
15
+ /** Access the dialog */
16
+ this.dialog = injectDialog();
17
+ /** The id of the descriptions. */
18
+ this.id = input(uniqueId('ngp-dialog-description'));
19
+ onChange(this.id, (id, prevId) => {
20
+ if (prevId) {
21
+ this.dialog.removeDescribedBy(prevId);
22
+ }
23
+ if (id) {
24
+ this.dialog.setDescribedBy(id);
25
+ }
26
+ });
27
+ }
28
+ ngOnDestroy() {
29
+ this.dialog.removeDescribedBy(this.id());
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpDialogDescription, isStandalone: true, selector: "[ngpDialogDescription]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "id()" } }, providers: [{ provide: NgpDialogDescriptionToken, useExisting: NgpDialogDescription }], exportAs: ["ngpDialogDescription"], ngImport: i0 }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogDescription, decorators: [{
35
+ type: Directive,
36
+ args: [{
37
+ standalone: true,
38
+ selector: '[ngpDialogDescription]',
39
+ exportAs: 'ngpDialogDescription',
40
+ providers: [{ provide: NgpDialogDescriptionToken, useExisting: NgpDialogDescription }],
41
+ host: {
42
+ '[id]': 'id()',
43
+ },
44
+ }]
45
+ }], ctorParameters: () => [] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRlc2NyaXB0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2ctZGVzY3JpcHRpb24vZGlhbG9nLWRlc2NyaXB0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFXdkUsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQjtRQU5BLHdCQUF3QjtRQUNQLFdBQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUV6QyxrQ0FBa0M7UUFDekIsT0FBRSxHQUFHLEtBQUssQ0FBUyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBRzlELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQy9CLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FyQlUsb0JBQW9CO2tHQUFwQixvQkFBb0Isd09BTHBCLENBQUMsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLENBQUM7OzJGQUszRSxvQkFBb0I7a0JBVGhDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFdBQVcsc0JBQXNCLEVBQUUsQ0FBQztvQkFDdEYsSUFBSSxFQUFFO3dCQUNKLE1BQU0sRUFBRSxNQUFNO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9uQ2hhbmdlLCB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0RGlhbG9nIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy50b2tlbic7XG5pbXBvcnQgeyBOZ3BEaWFsb2dEZXNjcmlwdGlvblRva2VuIH0gZnJvbSAnLi9kaWFsb2ctZGVzY3JpcHRpb24udG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwRGlhbG9nRGVzY3JpcHRpb25dJyxcbiAgZXhwb3J0QXM6ICduZ3BEaWFsb2dEZXNjcmlwdGlvbicsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGlhbG9nRGVzY3JpcHRpb25Ub2tlbiwgdXNlRXhpc3Rpbmc6IE5ncERpYWxvZ0Rlc2NyaXB0aW9uIH1dLFxuICBob3N0OiB7XG4gICAgJ1tpZF0nOiAnaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncERpYWxvZ0Rlc2NyaXB0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIEFjY2VzcyB0aGUgZGlhbG9nICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0RGlhbG9nKCk7XG5cbiAgLyoqIFRoZSBpZCBvZiB0aGUgZGVzY3JpcHRpb25zLiAqL1xuICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4odW5pcXVlSWQoJ25ncC1kaWFsb2ctZGVzY3JpcHRpb24nKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgb25DaGFuZ2UodGhpcy5pZCwgKGlkLCBwcmV2SWQpID0+IHtcbiAgICAgIGlmIChwcmV2SWQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cucmVtb3ZlRGVzY3JpYmVkQnkocHJldklkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLnNldERlc2NyaWJlZEJ5KGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLnJlbW92ZURlc2NyaWJlZEJ5KHRoaXMuaWQoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken, inject } from '@angular/core';
9
+ export const NgpDialogDescriptionToken = new InjectionToken('NgpDialogDescriptionToken');
10
+ /**
11
+ * Inject the DialogDescription directive instance
12
+ */
13
+ export function injectDialogDescription() {
14
+ return inject(NgpDialogDescriptionToken);
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRlc2NyaXB0aW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9kaWFsb2cvc3JjL2RpYWxvZy1kZXNjcmlwdGlvbi9kaWFsb2ctZGVzY3JpcHRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQ3pELDJCQUEyQixDQUM1QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BEaWFsb2dEZXNjcmlwdGlvbiB9IGZyb20gJy4vZGlhbG9nLWRlc2NyaXB0aW9uLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BEaWFsb2dEZXNjcmlwdGlvblRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncERpYWxvZ0Rlc2NyaXB0aW9uPihcbiAgJ05ncERpYWxvZ0Rlc2NyaXB0aW9uVG9rZW4nLFxuKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIERpYWxvZ0Rlc2NyaXB0aW9uIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGlhbG9nRGVzY3JpcHRpb24oKTogTmdwRGlhbG9nRGVzY3JpcHRpb24ge1xuICByZXR1cm4gaW5qZWN0KE5ncERpYWxvZ0Rlc2NyaXB0aW9uVG9rZW4pO1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Directive, HostListener } from '@angular/core';
9
+ import { injectDialogRef } from '../dialog/dialog-ref';
10
+ import { NgpDialogOverlayToken } from './dialog-overlay.token';
11
+ import * as i0 from "@angular/core";
12
+ export class NgpDialogOverlay {
13
+ constructor() {
14
+ /** Access the dialog ref. */
15
+ this.dialogRef = injectDialogRef();
16
+ }
17
+ close() {
18
+ this.dialogRef.close();
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpDialogOverlay, isStandalone: true, selector: "[ngpDialogOverlay]", host: { listeners: { "click": "close()" } }, providers: [{ provide: NgpDialogOverlayToken, useExisting: NgpDialogOverlay }], exportAs: ["ngpDialogOverlay"], ngImport: i0 }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogOverlay, decorators: [{
24
+ type: Directive,
25
+ args: [{
26
+ standalone: true,
27
+ selector: '[ngpDialogOverlay]',
28
+ exportAs: 'ngpDialogOverlay',
29
+ providers: [{ provide: NgpDialogOverlayToken, useExisting: NgpDialogOverlay }],
30
+ }]
31
+ }], propDecorators: { close: [{
32
+ type: HostListener,
33
+ args: ['click']
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLW92ZXJsYXkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9kaWFsb2cvc3JjL2RpYWxvZy1vdmVybGF5L2RpYWxvZy1vdmVybGF5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBUS9ELE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7UUFPRSw2QkFBNkI7UUFDWixjQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7S0FNaEQ7SUFIVyxLQUFLO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQVBVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDhHQUZoQixDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDOzsyRkFFbkUsZ0JBQWdCO2tCQU41QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUM7aUJBQy9FOzhCQU1XLEtBQUs7c0JBRGQsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGlhbG9nUmVmIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy1yZWYnO1xuaW1wb3J0IHsgTmdwRGlhbG9nT3ZlcmxheVRva2VuIH0gZnJvbSAnLi9kaWFsb2ctb3ZlcmxheS50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BEaWFsb2dPdmVybGF5XScsXG4gIGV4cG9ydEFzOiAnbmdwRGlhbG9nT3ZlcmxheScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGlhbG9nT3ZlcmxheVRva2VuLCB1c2VFeGlzdGluZzogTmdwRGlhbG9nT3ZlcmxheSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwRGlhbG9nT3ZlcmxheSB7XG4gIC8qKiBBY2Nlc3MgdGhlIGRpYWxvZyByZWYuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmID0gaW5qZWN0RGlhbG9nUmVmKCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken, inject } from '@angular/core';
9
+ export const NgpDialogOverlayToken = new InjectionToken('NgpDialogOverlayToken');
10
+ /**
11
+ * Inject the DialogOverlay directive instance
12
+ */
13
+ export function injectDialogOverlay() {
14
+ return inject(NgpDialogOverlayToken);
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLW92ZXJsYXkudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2RpYWxvZy9zcmMvZGlhbG9nLW92ZXJsYXkvZGlhbG9nLW92ZXJsYXkudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQW1CLHVCQUF1QixDQUFDLENBQUM7QUFFbkc7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BEaWFsb2dPdmVybGF5IH0gZnJvbSAnLi9kaWFsb2ctb3ZlcmxheS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgTmdwRGlhbG9nT3ZlcmxheVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncERpYWxvZ092ZXJsYXk+KCdOZ3BEaWFsb2dPdmVybGF5VG9rZW4nKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIERpYWxvZ092ZXJsYXkgZGlyZWN0aXZlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REaWFsb2dPdmVybGF5KCk6IE5ncERpYWxvZ092ZXJsYXkge1xuICByZXR1cm4gaW5qZWN0KE5ncERpYWxvZ092ZXJsYXlUb2tlbik7XG59XG4iXX0=
@@ -6,18 +6,30 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import { Directive, input } from '@angular/core';
9
- import { uniqueId } from 'ng-primitives/utils';
9
+ import { onChange, uniqueId } from 'ng-primitives/utils';
10
+ import { injectDialog } from '../dialog/dialog.token';
10
11
  import { NgpDialogTitleToken } from './dialog-title.token';
11
12
  import * as i0 from "@angular/core";
12
13
  export class NgpDialogTitle {
13
14
  constructor() {
14
- /**
15
- * The id of the dialog title.
16
- */
15
+ /** Access the dialog. */
16
+ this.dialog = injectDialog();
17
+ /** The id of the title. */
17
18
  this.id = input(uniqueId('ngp-dialog-title'));
19
+ onChange(this.id, (id, prevId) => {
20
+ if (prevId) {
21
+ this.dialog.removeLabelledBy(prevId);
22
+ }
23
+ if (id) {
24
+ this.dialog.setLabelledBy(id);
25
+ }
26
+ });
27
+ }
28
+ ngOnDestroy() {
29
+ this.dialog.removeLabelledBy(this.id());
18
30
  }
19
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpDialogTitle, isStandalone: true, selector: "[ngpDialogTitle]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: NgpDialogTitleToken, useExisting: NgpDialogTitle }], exportAs: ["ngpDialogTitle"], ngImport: i0 }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpDialogTitle, isStandalone: true, selector: "[ngpDialogTitle]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "id()" } }, providers: [{ provide: NgpDialogTitleToken, useExisting: NgpDialogTitle }], exportAs: ["ngpDialogTitle"], ngImport: i0 }); }
21
33
  }
22
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpDialogTitle, decorators: [{
23
35
  type: Directive,
@@ -26,6 +38,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
26
38
  selector: '[ngpDialogTitle]',
27
39
  exportAs: 'ngpDialogTitle',
28
40
  providers: [{ provide: NgpDialogTitleToken, useExisting: NgpDialogTitle }],
41
+ host: {
42
+ '[id]': 'id()',
43
+ },
29
44
  }]
30
- }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRpdGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2ctdGl0bGUvZGlhbG9nLXRpdGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBUTNELE1BQU0sT0FBTyxjQUFjO0lBTjNCO1FBT0U7O1dBRUc7UUFDTSxPQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7S0FDbkQ7OEdBTFksY0FBYztrR0FBZCxjQUFjLDBMQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDOzsyRkFFL0QsY0FBYztrQkFOMUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxnQkFBZ0IsRUFBRSxDQUFDO2lCQUMzRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IE5ncERpYWxvZ1RpdGxlVG9rZW4gfSBmcm9tICcuL2RpYWxvZy10aXRsZS50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BEaWFsb2dUaXRsZV0nLFxuICBleHBvcnRBczogJ25ncERpYWxvZ1RpdGxlJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3BEaWFsb2dUaXRsZVRva2VuLCB1c2VFeGlzdGluZzogTmdwRGlhbG9nVGl0bGUgfV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncERpYWxvZ1RpdGxlIHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgZGlhbG9nIHRpdGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQgPSBpbnB1dCh1bmlxdWVJZCgnbmdwLWRpYWxvZy10aXRsZScpKTtcbn1cbiJdfQ==
45
+ }], ctorParameters: () => [] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRpdGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2ctdGl0bGUvZGlhbG9nLXRpdGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFXM0QsTUFBTSxPQUFPLGNBQWM7SUFPekI7UUFOQSx5QkFBeUI7UUFDUixXQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFFekMsMkJBQTJCO1FBQ2xCLE9BQUUsR0FBRyxLQUFLLENBQVMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUd4RCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUVELElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBckJVLGNBQWM7a0dBQWQsY0FBYyxrT0FMZCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQzs7MkZBSy9ELGNBQWM7a0JBVDFCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDMUUsSUFBSSxFQUFFO3dCQUNKLE1BQU0sRUFBRSxNQUFNO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9uQ2hhbmdlLCB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0RGlhbG9nIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy50b2tlbic7XG5pbXBvcnQgeyBOZ3BEaWFsb2dUaXRsZVRva2VuIH0gZnJvbSAnLi9kaWFsb2ctdGl0bGUudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwRGlhbG9nVGl0bGVdJyxcbiAgZXhwb3J0QXM6ICduZ3BEaWFsb2dUaXRsZScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGlhbG9nVGl0bGVUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncERpYWxvZ1RpdGxlIH1dLFxuICBob3N0OiB7XG4gICAgJ1tpZF0nOiAnaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncERpYWxvZ1RpdGxlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIEFjY2VzcyB0aGUgZGlhbG9nLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZyA9IGluamVjdERpYWxvZygpO1xuXG4gIC8qKiBUaGUgaWQgb2YgdGhlIHRpdGxlLiAqL1xuICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4odW5pcXVlSWQoJ25ncC1kaWFsb2ctdGl0bGUnKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgb25DaGFuZ2UodGhpcy5pZCwgKGlkLCBwcmV2SWQpID0+IHtcbiAgICAgIGlmIChwcmV2SWQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cucmVtb3ZlTGFiZWxsZWRCeShwcmV2SWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuc2V0TGFiZWxsZWRCeShpZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5yZW1vdmVMYWJlbGxlZEJ5KHRoaXMuaWQoKSk7XG4gIH1cbn1cbiJdfQ==