@radix-ng/primitives 0.10.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/accordion/src/accordion-content.directive.d.ts +8 -61
  2. package/accordion/src/accordion-header.directive.d.ts +2 -18
  3. package/accordion/src/accordion-item.directive.d.ts +54 -26
  4. package/accordion/src/accordion-root.directive.d.ts +41 -20
  5. package/accordion/src/accordion-trigger.directive.d.ts +6 -22
  6. package/collapsible/src/collapsible-content.directive.d.ts +8 -2
  7. package/collapsible/src/collapsible-content.token.d.ts +3 -0
  8. package/collapsible/src/collapsible-root.directive.d.ts +7 -4
  9. package/compodoc/documentation.json +11759 -0
  10. package/dialog/README.md +1 -0
  11. package/dialog/index.d.ts +1 -0
  12. package/esm2022/accordion/src/accordion-content.directive.mjs +29 -124
  13. package/esm2022/accordion/src/accordion-header.directive.mjs +10 -31
  14. package/esm2022/accordion/src/accordion-item.directive.mjs +149 -57
  15. package/esm2022/accordion/src/accordion-root.directive.mjs +103 -63
  16. package/esm2022/accordion/src/accordion-trigger.directive.mjs +22 -41
  17. package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +3 -3
  18. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +3 -3
  19. package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +3 -3
  20. package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +3 -3
  21. package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +3 -3
  22. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +3 -3
  23. package/esm2022/avatar/src/avatar-fallback.directive.mjs +3 -3
  24. package/esm2022/avatar/src/avatar-image.directive.mjs +3 -3
  25. package/esm2022/avatar/src/avatar-root.directive.mjs +3 -3
  26. package/esm2022/checkbox/src/checkbox-button.directive.mjs +3 -3
  27. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +3 -3
  28. package/esm2022/checkbox/src/checkbox-input.directive.mjs +3 -3
  29. package/esm2022/checkbox/src/checkbox.directive.mjs +3 -3
  30. package/esm2022/collapsible/src/collapsible-content.directive.mjs +20 -7
  31. package/esm2022/collapsible/src/collapsible-content.token.mjs +3 -0
  32. package/esm2022/collapsible/src/collapsible-root.directive.mjs +17 -13
  33. package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +3 -3
  34. package/esm2022/dialog/index.mjs +2 -0
  35. package/esm2022/dialog/radix-ng-primitives-dialog.mjs +5 -0
  36. package/esm2022/dropdown-menu/src/dropdown-menu-content.directive.mjs +3 -3
  37. package/esm2022/dropdown-menu/src/dropdown-menu-item-checkbox.directive.mjs +3 -3
  38. package/esm2022/dropdown-menu/src/dropdown-menu-item-indicator.directive.mjs +3 -3
  39. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio-group.directive.mjs +3 -3
  40. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio.directive.mjs +3 -3
  41. package/esm2022/dropdown-menu/src/dropdown-menu-item-selectable.mjs +3 -3
  42. package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +3 -3
  43. package/esm2022/dropdown-menu/src/dropdown-menu-label.directive.mjs +3 -3
  44. package/esm2022/dropdown-menu/src/dropdown-menu-separator.directive.mjs +3 -3
  45. package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +3 -3
  46. package/esm2022/label/src/label.directive.mjs +10 -5
  47. package/esm2022/menu/index.mjs +4 -4
  48. package/esm2022/menu/src/menu-content.directive.mjs +3 -3
  49. package/esm2022/menu/src/menu-directive.mjs +3 -3
  50. package/esm2022/menu/src/menu-group.directive.mjs +3 -3
  51. package/esm2022/menu/src/menu-item.directive.mjs +3 -3
  52. package/esm2022/menu/src/menu-label.directive.mjs +3 -3
  53. package/esm2022/menu/src/menu-separator.directive.mjs +3 -3
  54. package/esm2022/menubar/index.mjs +4 -4
  55. package/esm2022/menubar/src/menubar-content.directive.mjs +3 -3
  56. package/esm2022/menubar/src/menubar-item-checkbox.directive.mjs +3 -3
  57. package/esm2022/menubar/src/menubar-item-indicator.directive.mjs +3 -3
  58. package/esm2022/menubar/src/menubar-item-radio.directive.mjs +3 -3
  59. package/esm2022/menubar/src/menubar-item.directive.mjs +3 -3
  60. package/esm2022/menubar/src/menubar-radio-group.directive.mjs +3 -3
  61. package/esm2022/menubar/src/menubar-root.directive.mjs +3 -3
  62. package/esm2022/menubar/src/menubar-separator.directive.mjs +3 -3
  63. package/esm2022/menubar/src/menubar-trigger.directive.mjs +3 -3
  64. package/esm2022/progress/src/progress-indicator.directive.mjs +3 -3
  65. package/esm2022/progress/src/progress-root.directive.mjs +3 -3
  66. package/esm2022/radio/src/radio-indicator.directive.mjs +10 -10
  67. package/esm2022/radio/src/radio-item.directive.mjs +29 -18
  68. package/esm2022/radio/src/radio-root.directive.mjs +110 -16
  69. package/esm2022/radio/src/radio-tokens.mjs +3 -0
  70. package/esm2022/separator/src/separator.directive.mjs +3 -3
  71. package/esm2022/switch/index.mjs +4 -4
  72. package/esm2022/switch/src/switch-input.directive.mjs +3 -3
  73. package/esm2022/switch/src/switch-root.directive.mjs +3 -3
  74. package/esm2022/switch/src/switch-thumb.directive.mjs +3 -3
  75. package/esm2022/tabs/index.mjs +4 -4
  76. package/esm2022/tabs/src/tabs-content.directive.mjs +3 -3
  77. package/esm2022/tabs/src/tabs-context.service.mjs +3 -3
  78. package/esm2022/tabs/src/tabs-list.directive.mjs +3 -3
  79. package/esm2022/tabs/src/tabs-root.directive.mjs +3 -3
  80. package/esm2022/tabs/src/tabs-trigger.directive.mjs +3 -3
  81. package/esm2022/toggle/src/toggle.directive.mjs +3 -3
  82. package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +3 -3
  83. package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +3 -3
  84. package/esm2022/toggle-group/src/toggle-group.directive.mjs +3 -3
  85. package/fesm2022/radix-ng-primitives-accordion.mjs +317 -323
  86. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  87. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +18 -18
  88. package/fesm2022/radix-ng-primitives-avatar.mjs +9 -9
  89. package/fesm2022/radix-ng-primitives-checkbox.mjs +12 -12
  90. package/fesm2022/radix-ng-primitives-collapsible.mjs +61 -44
  91. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-dialog.mjs +4 -0
  93. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -0
  94. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +30 -30
  95. package/fesm2022/radix-ng-primitives-label.mjs +9 -4
  96. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  97. package/fesm2022/radix-ng-primitives-menu.mjs +22 -22
  98. package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
  99. package/fesm2022/radix-ng-primitives-progress.mjs +6 -6
  100. package/fesm2022/radix-ng-primitives-radio.mjs +182 -77
  101. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  102. package/fesm2022/radix-ng-primitives-separator.mjs +3 -3
  103. package/fesm2022/radix-ng-primitives-switch.mjs +13 -13
  104. package/fesm2022/radix-ng-primitives-tabs.mjs +19 -19
  105. package/fesm2022/radix-ng-primitives-toggle-group.mjs +9 -9
  106. package/fesm2022/radix-ng-primitives-toggle.mjs +3 -3
  107. package/label/src/label.directive.d.ts +9 -3
  108. package/package.json +7 -1
  109. package/radio/src/radio-indicator.directive.d.ts +4 -2
  110. package/radio/src/radio-item.directive.d.ts +10 -5
  111. package/radio/src/radio-root.directive.d.ts +19 -18
  112. package/radio/src/radio-tokens.d.ts +12 -0
@@ -0,0 +1 @@
1
+ # @radix-ng/primitives/dialog
@@ -0,0 +1 @@
1
+ export {};
@@ -1,137 +1,42 @@
1
- import { CdkAccordionItem } from '@angular/cdk/accordion';
2
- import { Directive, effect, ElementRef, inject, InjectionToken, input, signal } from '@angular/core';
3
- import { animationFrameScheduler } from 'rxjs';
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
+ import { RdxAccordionItemDirective } from './accordion-item.directive';
4
3
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/cdk/accordion";
6
- export const RdxAccordionContentToken = new InjectionToken('RdxAccordionContentToken');
7
4
  export class RdxAccordionContentDirective {
8
5
  constructor() {
9
- /**
10
- * @ignore
11
- */
12
- this.elementRef = inject(ElementRef);
13
- /**
14
- * @ignore
15
- */
16
- this.initialized = signal(false);
17
- /**
18
- * Current item state
19
- */
20
- this.state = signal('closed');
21
- /**
22
- * When true, prevents the user from interacting with the accordion and all its items.
23
- */
24
- this.disabled = input(false);
25
- /**
26
- * @ignore
27
- */
28
- this.accordionItem = inject(CdkAccordionItem);
29
- /**
30
- * @ignore
31
- */
32
- this.orientation = 'vertical';
33
- effect(() => {
34
- if (this.state()) {
35
- this.setPresence();
36
- }
37
- });
38
- }
39
- /**
40
- * @ignore
41
- */
42
- ngOnInit() {
43
- this.togglePresence();
44
- }
45
- /**
46
- * @ignore
47
- */
48
- setOpen(state) {
49
- if (this.disabled()) {
50
- return;
51
- }
52
- if (state === undefined) {
53
- this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));
54
- }
55
- else {
56
- this.state.update(() => state);
6
+ this.item = inject(RdxAccordionItemDirective);
7
+ this.nativeElement = inject(ElementRef).nativeElement;
8
+ this.hidden = false;
9
+ }
10
+ onAnimationEnd() {
11
+ this.hidden = !this.item.expanded;
12
+ const { height, width } = this.nativeElement.getBoundingClientRect();
13
+ this.nativeElement.style.setProperty('--radix-collapsible-content-height', `${height}px`);
14
+ this.nativeElement.style.setProperty('--radix-collapsible-content-width', `${width}px`);
15
+ this.nativeElement.style.setProperty('--radix-accordion-content-height', 'var(--radix-collapsible-content-height)');
16
+ this.nativeElement.style.setProperty('--radix-accordion-content-width', 'var(--radix-collapsible-content-width)');
17
+ }
18
+ onToggle() {
19
+ if (!this.item.expanded) {
20
+ this.hidden = false;
57
21
  }
58
22
  }
59
- /**
60
- * @ignore
61
- */
62
- initialize() {
63
- if (!this.initialized()) {
64
- this.togglePresence();
65
- animationFrameScheduler.schedule(() => {
66
- this.elementRef.nativeElement.getAnimations().forEach((animation) => animation.cancel());
67
- this.initialized.set(true);
68
- });
69
- }
70
- }
71
- /**
72
- * @ignore
73
- */
74
- setPresence() {
75
- if (!this.initialized()) {
76
- this.initialize();
77
- return;
78
- }
79
- animationFrameScheduler.schedule(() => {
80
- const animations = this.elementRef.nativeElement.getAnimations();
81
- const hidden = this.elementRef.nativeElement.hasAttribute('hidden');
82
- if (hidden) {
83
- this.show();
84
- const rect = this.elementRef.nativeElement.getBoundingClientRect();
85
- const height = `${this.elementRef.nativeElement.scrollHeight /*rect.height*/}px`;
86
- const width = `${rect.width}px`;
87
- this.elementRef.nativeElement.style.setProperty('--radix-accordion-content-height', height);
88
- this.elementRef.nativeElement.style.setProperty('--radix-accordion-content-width', width);
89
- this.hide();
90
- }
91
- Promise.all(animations.map((animation) => animation.finished)).then(() => {
92
- this.togglePresence();
93
- });
94
- });
95
- }
96
- /**
97
- * @ignore
98
- */
99
- togglePresence() {
100
- if (this.state() === 'open') {
101
- this.show();
102
- }
103
- else {
104
- this.hide();
105
- }
106
- }
107
- /**
108
- * @ignore
109
- */
110
- show() {
111
- this.elementRef.nativeElement.removeAttribute('hidden');
112
- }
113
- /**
114
- * @ignore
115
- */
116
- hide() {
117
- this.elementRef.nativeElement.setAttribute('hidden', '');
118
- }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
120
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: RdxAccordionContentDirective, isStandalone: true, selector: "[rdxAccordionContent]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-orientation": "orientation" } }, providers: [{ provide: RdxAccordionContentToken, useExisting: RdxAccordionContentDirective }], exportAs: ["rdxAccordionContent"], hostDirectives: [{ directive: i1.CdkAccordionItem }], ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: RdxAccordionContentDirective, isStandalone: true, selector: "[rdxAccordionContent]", host: { listeners: { "animationend": "onAnimationEnd()" }, properties: { "attr.role": "\"region\"", "style.display": "hidden ? \"none\" : \"\"", "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, exportAs: ["rdxAccordionContent"], ngImport: i0 }); }
121
25
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionContentDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionContentDirective, decorators: [{
123
27
  type: Directive,
124
28
  args: [{
125
29
  selector: '[rdxAccordionContent]',
126
30
  standalone: true,
127
31
  exportAs: 'rdxAccordionContent',
128
- providers: [{ provide: RdxAccordionContentToken, useExisting: RdxAccordionContentDirective }],
129
32
  host: {
130
- '[attr.data-state]': 'state()',
131
- '[attr.data-disabled]': 'disabled() ? "" : undefined',
132
- '[attr.data-orientation]': 'orientation'
133
- },
134
- hostDirectives: [CdkAccordionItem]
33
+ '[attr.role]': '"region"',
34
+ '[style.display]': 'hidden ? "none" : ""',
35
+ '[attr.data-state]': 'item.dataState',
36
+ '[attr.data-disabled]': 'item.disabled',
37
+ '[attr.data-orientation]': 'item.orientation',
38
+ '(animationend)': 'onAnimationEnd()'
39
+ }
135
40
  }]
136
- }], ctorParameters: () => [] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUErQiwwQkFBMEIsQ0FBQyxDQUFDO0FBY3JILE1BQU0sT0FBTyw0QkFBNEI7SUEwQnJDO1FBekJBOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUU7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQzs7V0FFRztRQUNILFVBQUssR0FBRyxNQUFNLENBQXdCLFFBQVEsQ0FBQyxDQUFDO1FBQ2hEOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4Qjs7V0FFRztRQUNILGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekM7O1dBRUc7UUFDSCxnQkFBVyxHQUE0QixVQUFVLENBQUM7UUFHOUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDLENBQUMs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LElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLElBQUk7UUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssSUFBSTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0FqSVEsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsd1dBUjFCLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLENBQUM7OzJGQVFwRiw0QkFBNEI7a0JBWnhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsOEJBQThCLEVBQUUsQ0FBQztvQkFDN0YsSUFBSSxFQUFFO3dCQUNGLG1CQUFtQixFQUFFLFNBQVM7d0JBQzlCLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQseUJBQXlCLEVBQUUsYUFBYTtxQkFDM0M7b0JBQ0QsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQWNjb3JkaW9uSXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hY2NvcmRpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIGlucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJkeEFjY29yZGlvbkl0ZW1TdGF0ZSB9IGZyb20gJy4vYWNjb3JkaW9uLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkeEFjY29yZGlvbk9yaWVudGF0aW9uIH0gZnJvbSAnLi9hY2NvcmRpb24tcm9vdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgUmR4QWNjb3JkaW9uQ29udGVudFRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeEFjY29yZGlvbkNvbnRlbnREaXJlY3RpdmU+KCdSZHhBY2NvcmRpb25Db250ZW50VG9rZW4nKTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4QWNjb3JkaW9uQ29udGVudF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhBY2NvcmRpb25Db250ZW50JyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJkeEFjY29yZGlvbkNvbnRlbnRUb2tlbiwgdXNlRXhpc3Rpbmc6IFJkeEFjY29yZGlvbkNvbnRlbnREaXJlY3RpdmUgfV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnc3RhdGUoKScsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdvcmllbnRhdGlvbidcbiAgICB9LFxuICAgIGhvc3REaXJlY3RpdmVzOiBbQ2RrQWNjb3JkaW9uSXRlbV1cbn0pXG5leHBvcnQgY2xhc3MgUmR4QWNjb3JkaW9uQ29udGVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgaXRlbSBzdGF0ZVxuICAgICAqL1xuICAgIHN0YXRlID0gc2lnbmFsPFJkeEFjY29yZGlvbkl0ZW1TdGF0ZT4oJ2Nsb3NlZCcpO1xuICAgIC8qKlxuICAgICAqIFdoZW4gdHJ1ZSwgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBhY2NvcmRpb24gYW5kIGFsbCBpdHMgaXRlbXMuXG4gICAgICovXG4gICAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGFjY29yZGlvbkl0ZW0gPSBpbmplY3QoQ2RrQWNjb3JkaW9uSXRlbSk7XG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIG9yaWVudGF0aW9uOiBSZHhBY2NvcmRpb25PcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFByZXNlbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGVQcmVzZW5jZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzZXRPcGVuKHN0YXRlPzogUmR4QWNjb3JkaW9uSXRlbVN0YXRlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoKSA9PiAodGhpcy5zdGF0ZSgpID09PSAnb3BlbicgPyAnY2xvc2VkJyA6ICdvcGVuJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUoKCkgPT4gc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJlc2VuY2UoKTtcblxuICAgICAgICAgICAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEFuaW1hdGlvbnMoKS5mb3JFYWNoKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5jYW5jZWwoKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkLnNldCh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0UHJlc2VuY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5pbWF0aW9ucyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEFuaW1hdGlvbnMoKTtcblxuICAgICAgICAgICAgY29uc3QgaGlkZGVuID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdoaWRkZW4nKTtcblxuICAgICAgICAgICAgaWYgKGhpZGRlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAvKnJlY3QuaGVpZ2h0Ki99cHhgO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gYCR7cmVjdC53aWR0aH1weGA7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1hY2NvcmRpb24tY29udGVudC1oZWlnaHQnLCBoZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtYWNjb3JkaW9uLWNvbnRlbnQtd2lkdGgnLCB3aWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoYW5pbWF0aW9ucy5tYXAoKGFuaW1hdGlvbikgPT4gYW5pbWF0aW9uLmZpbmlzaGVkKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVQcmVzZW5jZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvZ2dsZVByZXNlbmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSgpID09PSAnb3BlbicpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIGhpZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuICAgIH1cbn1cbiJdfQ==
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBZXZFLE1BQU0sT0FBTyw0QkFBNEI7SUFiekM7UUFjdUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUUxRCxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBeUI1QjtJQXZCYSxjQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUVsQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUVyRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUNoQyxrQ0FBa0MsRUFDbEMseUNBQXlDLENBQzVDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQ2hDLGlDQUFpQyxFQUNqQyx3Q0FBd0MsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7OEdBNUJRLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQWJ4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixJQUFJLEVBQUU7d0JBQ0YsYUFBYSxFQUFFLFVBQVU7d0JBQ3pCLGlCQUFpQixFQUFFLHNCQUFzQjt3QkFDekMsbUJBQW1CLEVBQUUsZ0JBQWdCO3dCQUNyQyxzQkFBc0IsRUFBRSxlQUFlO3dCQUN2Qyx5QkFBeUIsRUFBRSxrQkFBa0I7d0JBQzdDLGdCQUFnQixFQUFFLGtCQUFrQjtxQkFDdkM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4QWNjb3JkaW9uSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vYWNjb3JkaW9uLWl0ZW0uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4QWNjb3JkaW9uQ29udGVudF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhBY2NvcmRpb25Db250ZW50JyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5yb2xlXSc6ICdcInJlZ2lvblwiJyxcbiAgICAgICAgJ1tzdHlsZS5kaXNwbGF5XSc6ICdoaWRkZW4gPyBcIm5vbmVcIiA6IFwiXCInLFxuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnaXRlbS5kYXRhU3RhdGUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXRlbS5kaXNhYmxlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdpdGVtLm9yaWVudGF0aW9uJyxcbiAgICAgICAgJyhhbmltYXRpb25lbmQpJzogJ29uQW5pbWF0aW9uRW5kKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhBY2NvcmRpb25Db250ZW50RGlyZWN0aXZlIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbSA9IGluamVjdChSZHhBY2NvcmRpb25JdGVtRGlyZWN0aXZlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmF0aXZlRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIGhpZGRlbiA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIG9uQW5pbWF0aW9uRW5kKCkge1xuICAgICAgICB0aGlzLmhpZGRlbiA9ICF0aGlzLml0ZW0uZXhwYW5kZWQ7XG5cbiAgICAgICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoJywgYCR7d2lkdGh9cHhgKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAnLS1yYWRpeC1hY2NvcmRpb24tY29udGVudC1oZWlnaHQnLFxuICAgICAgICAgICAgJ3ZhcigtLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJy0tcmFkaXgtYWNjb3JkaW9uLWNvbnRlbnQtd2lkdGgnLFxuICAgICAgICAgICAgJ3ZhcigtLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgpJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,44 +1,23 @@
1
- import { Directive } from '@angular/core';
2
- import { injectAccordionItem } from './accordion-item.directive';
1
+ import { Directive, inject } from '@angular/core';
2
+ import { RdxAccordionItemDirective } from './accordion-item.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class RdxAccordionHeaderDirective {
5
5
  constructor() {
6
- /**
7
- * @ignore
8
- */
9
- this.accordionItem = injectAccordionItem();
6
+ this.item = inject(RdxAccordionItemDirective);
10
7
  }
11
- /**
12
- * @ignore
13
- */
14
- getState() {
15
- return this.accordionItem.state();
16
- }
17
- /**
18
- * @ignore
19
- */
20
- getDisabled() {
21
- return this.accordionItem.disabled() ? '' : undefined;
22
- }
23
- /**
24
- * @ignore
25
- */
26
- getOrientation() {
27
- return this.accordionItem.orientation;
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: RdxAccordionHeaderDirective, isStandalone: true, selector: "[rdxAccordionHeader]", host: { properties: { "attr.data-state": "getState()", "attr.data-disabled": "getDisabled()", "attr.data-orientation": "getOrientation()" } }, ngImport: i0 }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: RdxAccordionHeaderDirective, isStandalone: true, selector: "[rdxAccordionHeader]", host: { properties: { "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, ngImport: i0 }); }
31
10
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionHeaderDirective, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionHeaderDirective, decorators: [{
33
12
  type: Directive,
34
13
  args: [{
35
14
  selector: '[rdxAccordionHeader]',
36
15
  standalone: true,
37
16
  host: {
38
- '[attr.data-state]': 'getState()',
39
- '[attr.data-disabled]': 'getDisabled()',
40
- '[attr.data-orientation]': 'getOrientation()'
17
+ '[attr.data-state]': 'item.dataState',
18
+ '[attr.data-disabled]': 'item.disabled',
19
+ '[attr.data-orientation]': 'item.orientation'
41
20
  }
42
21
  }]
43
22
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2FjY29yZGlvbi9zcmMvYWNjb3JkaW9uLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sNEJBQTRCLENBQUM7O0FBWXhGLE1BQU0sT0FBTywyQkFBMkI7SUFUeEM7UUFVSTs7V0FFRztRQUNjLGtCQUFhLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztLQXNCMUQ7SUFwQkc7O09BRUc7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7OEdBekJRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQVR2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0YsbUJBQW1CLEVBQUUsWUFBWTt3QkFDakMsc0JBQXNCLEVBQUUsZUFBZTt3QkFDdkMseUJBQXlCLEVBQUUsa0JBQWtCO3FCQUNoRDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QWNjb3JkaW9uSXRlbSwgUmR4QWNjb3JkaW9uSXRlbVN0YXRlIH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4QWNjb3JkaW9uT3JpZW50YXRpb24gfSBmcm9tICcuL2FjY29yZGlvbi1yb290LmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeEFjY29yZGlvbkhlYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnZ2V0U3RhdGUoKScsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdnZXREaXNhYmxlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ2dldE9yaWVudGF0aW9uKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhBY2NvcmRpb25IZWFkZXJEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY29yZGlvbkl0ZW0gPSBpbmplY3RBY2NvcmRpb25JdGVtKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgZ2V0U3RhdGUoKTogUmR4QWNjb3JkaW9uSXRlbVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjb3JkaW9uSXRlbS5zdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBnZXREaXNhYmxlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NvcmRpb25JdGVtLmRpc2FibGVkKCkgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgZ2V0T3JpZW50YXRpb24oKTogUmR4QWNjb3JkaW9uT3JpZW50YXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NvcmRpb25JdGVtLm9yaWVudGF0aW9uO1xuICAgIH1cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2FjY29yZGlvbi9zcmMvYWNjb3JkaW9uLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBV3ZFLE1BQU0sT0FBTywyQkFBMkI7SUFUeEM7UUFVdUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQy9EOzhHQUZZLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQVR2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0YsbUJBQW1CLEVBQUUsZ0JBQWdCO3dCQUNyQyxzQkFBc0IsRUFBRSxlQUFlO3dCQUN2Qyx5QkFBeUIsRUFBRSxrQkFBa0I7cUJBQ2hEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeEFjY29yZGlvbkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2FjY29yZGlvbi1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeEFjY29yZGlvbkhlYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnaXRlbS5kYXRhU3RhdGUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXRlbS5kaXNhYmxlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdpdGVtLm9yaWVudGF0aW9uJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4QWNjb3JkaW9uSGVhZGVyRGlyZWN0aXZlIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbSA9IGluamVjdChSZHhBY2NvcmRpb25JdGVtRGlyZWN0aXZlKTtcbn1cbiJdfQ==
@@ -1,83 +1,175 @@
1
- import { CdkAccordion } from '@angular/cdk/accordion';
2
- import { contentChild, Directive, inject, InjectionToken, Input, input, signal } from '@angular/core';
3
- import { RdxAccordionContentToken } from './accordion-content.directive';
1
+ import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
2
+ import { booleanAttribute, ChangeDetectorRef, ContentChild, Directive, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';
3
+ import { Subscription } from 'rxjs';
4
+ import { RdxAccordionContentDirective } from './accordion-content.directive';
5
+ import { RdxAccordionRootToken } from './accordion-root.directive';
6
+ import { RdxAccordionTriggerDirective } from './accordion-trigger.directive';
4
7
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/cdk/accordion";
6
- export const RdxAccordionItemToken = new InjectionToken('RdxAccordionItemToken');
7
- export function injectAccordionItem() {
8
- return inject(RdxAccordionItemDirective);
9
- }
8
+ let nextId = 0;
10
9
  export class RdxAccordionItemDirective {
10
+ get dataState() {
11
+ return this.expanded ? 'open' : 'closed';
12
+ }
13
+ get orientation() {
14
+ return this.accordion.orientation;
15
+ }
16
+ /** Whether the AccordionItem is expanded. */
17
+ set expanded(expanded) {
18
+ // Only emit events and update the internal value if the value changes.
19
+ if (this._expanded !== expanded) {
20
+ this._expanded = expanded;
21
+ this.expandedChange.emit(expanded);
22
+ if (expanded) {
23
+ this.opened.emit();
24
+ /**
25
+ * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,
26
+ * the name value is the id of the accordion.
27
+ */
28
+ const accordionId = this.accordion ? this.accordion.id : this.value;
29
+ this.expansionDispatcher.notify(this.value, accordionId);
30
+ }
31
+ else {
32
+ this.closed.emit();
33
+ }
34
+ // Ensures that the animation will run when the value is set outside of an `@Input`.
35
+ // This includes cases like the open, close and toggle methods.
36
+ this.changeDetectorRef.markForCheck();
37
+ }
38
+ }
39
+ get expanded() {
40
+ return this._expanded;
41
+ }
42
+ set value(value) {
43
+ this._value = value;
44
+ }
45
+ get value() {
46
+ return this._value || this.id;
47
+ }
48
+ /** Whether the AccordionItem is disabled. */
49
+ set disabled(value) {
50
+ this._disabled = value;
51
+ }
52
+ get disabled() {
53
+ return this.accordion.disabled ?? this._disabled;
54
+ }
11
55
  constructor() {
56
+ this.accordion = inject(RdxAccordionRootToken, { skipSelf: true });
57
+ this.changeDetectorRef = inject(ChangeDetectorRef);
58
+ this.expansionDispatcher = inject(UniqueSelectionDispatcher);
12
59
  /**
60
+ * The unique AccordionItem id.
13
61
  * @ignore
14
62
  */
15
- this.accordionContent = contentChild.required(RdxAccordionContentToken);
16
- /**
17
- * Current item state
18
- */
19
- this.state = signal('closed');
63
+ this.id = `rdx-accordion-item-${nextId++}`;
64
+ this._expanded = false;
65
+ this._disabled = false;
66
+ /** Event emitted every time the AccordionItem is closed. */
67
+ this.closed = new EventEmitter();
68
+ /** Event emitted every time the AccordionItem is opened. */
69
+ this.opened = new EventEmitter();
70
+ /** Event emitted when the AccordionItem is destroyed. */
71
+ this.destroyed = new EventEmitter();
20
72
  /**
21
- * When true, prevents the user from interacting with the item.
73
+ * Emits whenever the expanded state of the accordion changes.
74
+ * Primarily used to facilitate two-way binding.
75
+ * @docs-private
22
76
  */
23
- this.disabled = input(false);
24
- /**
25
- * @ignore
26
- */
27
- this.orientation = 'vertical';
28
- }
29
- /**
30
- * Changes current item state
31
- */
32
- setOpen(state) {
33
- if (this.disabled()) {
34
- return;
77
+ this.expandedChange = new EventEmitter();
78
+ /** Subscription to openAll/closeAll events. */
79
+ this.openCloseAllSubscription = Subscription.EMPTY;
80
+ this.removeUniqueSelectionListener = this.expansionDispatcher.listen((id, accordionId) => {
81
+ if (this.accordion.isMultiple) {
82
+ if (this.accordion.id === accordionId && id.includes(this.value)) {
83
+ this.expanded = true;
84
+ }
85
+ }
86
+ else {
87
+ this.expanded = this.accordion.id === accordionId && id.includes(this.value);
88
+ }
89
+ });
90
+ // When an accordion item is hosted in an accordion, subscribe to open/close events.
91
+ if (this.accordion) {
92
+ this.openCloseAllSubscription = this.subscribeToOpenCloseAllActions();
35
93
  }
36
- if (state === undefined) {
37
- this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));
94
+ }
95
+ /** Emits an event for the accordion item being destroyed. */
96
+ ngOnDestroy() {
97
+ this.opened.complete();
98
+ this.closed.complete();
99
+ this.destroyed.emit();
100
+ this.destroyed.complete();
101
+ this.removeUniqueSelectionListener();
102
+ this.openCloseAllSubscription.unsubscribe();
103
+ }
104
+ focus() {
105
+ this.trigger.focus();
106
+ }
107
+ /** Toggles the expanded state of the accordion item. */
108
+ toggle() {
109
+ if (!this.disabled) {
110
+ this.content.onToggle();
111
+ this.expanded = !this.expanded;
38
112
  }
39
- else {
40
- this.state.update(() => state);
113
+ }
114
+ /** Sets the expanded state of the accordion item to false. */
115
+ close() {
116
+ if (!this.disabled) {
117
+ this.expanded = false;
41
118
  }
42
- this.accordionContent().setOpen(this.state());
43
119
  }
44
- /**
45
- * @ignore
46
- */
47
- setOrientation(orientation) {
48
- this.orientation = orientation;
49
- this.accordionContent().orientation = orientation;
120
+ /** Sets the expanded state of the accordion item to true. */
121
+ open() {
122
+ if (!this.disabled) {
123
+ this.expanded = true;
124
+ }
50
125
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.1.2", type: RdxAccordionItemDirective, isStandalone: true, selector: "[rdxAccordionItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-orientation": "orientation" } }, providers: [
53
- {
54
- provide: RdxAccordionItemToken,
55
- useExisting: RdxAccordionItemDirective,
56
- multi: true
126
+ subscribeToOpenCloseAllActions() {
127
+ return this.accordion.openCloseAllActions.subscribe((expanded) => {
128
+ // Only change expanded state if item is enabled
129
+ if (!this.disabled) {
130
+ this.expanded = expanded;
57
131
  }
58
- ], queries: [{ propertyName: "accordionContent", first: true, predicate: RdxAccordionContentToken, descendants: true, isSignal: true }], exportAs: ["rdxAccordionItem"], hostDirectives: [{ directive: i1.CdkAccordion }], ngImport: i0 }); }
132
+ });
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.1", type: RdxAccordionItemDirective, isStandalone: true, selector: "[rdxAccordionItem]", inputs: { expanded: ["expanded", "expanded", booleanAttribute], value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { closed: "closed", opened: "opened", expandedChange: "expandedChange" }, host: { properties: { "attr.data-state": "dataState", "attr.data-disabled": "disabled", "attr.data-orientation": "orientation" } }, providers: [
136
+ { provide: RdxAccordionRootToken, useValue: undefined }
137
+ ], queries: [{ propertyName: "trigger", first: true, predicate: RdxAccordionTriggerDirective, descendants: true }, { propertyName: "content", first: true, predicate: i0.forwardRef(() => RdxAccordionContentDirective), descendants: true }], exportAs: ["rdxAccordionItem"], ngImport: i0 }); }
59
138
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: RdxAccordionItemDirective, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: RdxAccordionItemDirective, decorators: [{
61
140
  type: Directive,
62
141
  args: [{
63
142
  selector: '[rdxAccordionItem]',
64
143
  standalone: true,
65
144
  exportAs: 'rdxAccordionItem',
66
- providers: [
67
- {
68
- provide: RdxAccordionItemToken,
69
- useExisting: RdxAccordionItemDirective,
70
- multi: true
71
- }
72
- ],
73
145
  host: {
74
- '[attr.data-state]': 'state()',
75
- '[attr.data-disabled]': 'disabled() ? "" : undefined',
146
+ '[attr.data-state]': 'dataState',
147
+ '[attr.data-disabled]': 'disabled',
76
148
  '[attr.data-orientation]': 'orientation'
77
149
  },
78
- hostDirectives: [CdkAccordion]
150
+ providers: [
151
+ { provide: RdxAccordionRootToken, useValue: undefined }
152
+ ]
79
153
  }]
80
- }], propDecorators: { value: [{
154
+ }], ctorParameters: () => [], propDecorators: { trigger: [{
155
+ type: ContentChild,
156
+ args: [RdxAccordionTriggerDirective, { descendants: true }]
157
+ }], content: [{
158
+ type: ContentChild,
159
+ args: [forwardRef(() => RdxAccordionContentDirective), { descendants: true }]
160
+ }], expanded: [{
161
+ type: Input,
162
+ args: [{ transform: booleanAttribute }]
163
+ }], value: [{
81
164
  type: Input
165
+ }], disabled: [{
166
+ type: Input,
167
+ args: [{ transform: booleanAttribute }]
168
+ }], closed: [{
169
+ type: Output
170
+ }], opened: [{
171
+ type: Output
172
+ }], expandedChange: [{
173
+ type: Output
82
174
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBS3pFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUE0Qix1QkFBdUIsQ0FBQyxDQUFDO0FBRTVHLE1BQU0sVUFBVSxtQkFBbUI7SUFDL0IsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBb0JELE1BQU0sT0FBTyx5QkFBeUI7SUFsQnRDO1FBbUJJOztXQUVHO1FBQ0sscUJBQWdCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzNFOztXQUVHO1FBQ0gsVUFBSyxHQUFHLE1BQU0sQ0FBd0IsUUFBUSxDQUFDLENBQUM7UUFDaEQ7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCOztXQUVHO1FBQ0gsZ0JBQVcsR0FBNEIsVUFBVSxDQUFDO0tBNkJyRDtJQXpCRzs7T0FFRztJQUNILE9BQU8sQ0FBQyxLQUE2QjtRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxXQUFvQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3RELENBQUM7OEdBNUNRLHlCQUF5QjtrR0FBekIseUJBQXlCLDhkQWR2QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSix3RUFZZ0Qsd0JBQXdCOzsyRkFKaEUseUJBQXlCO2tCQWxCckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcsMkJBQTJCOzRCQUN0QyxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsbUJBQW1CLEVBQUUsU0FBUzt3QkFDOUIsc0JBQXNCLEVBQUUsNkJBQTZCO3dCQUNyRCx5QkFBeUIsRUFBRSxhQUFhO3FCQUMzQztvQkFDRCxjQUFjLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ2pDOzhCQW1CWSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtBY2NvcmRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYWNjb3JkaW9uJztcbmltcG9ydCB7IGNvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4QWNjb3JkaW9uQ29udGVudFRva2VuIH0gZnJvbSAnLi9hY2NvcmRpb24tY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4QWNjb3JkaW9uT3JpZW50YXRpb24gfSBmcm9tICcuL2FjY29yZGlvbi1yb290LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCB0eXBlIFJkeEFjY29yZGlvbkl0ZW1TdGF0ZSA9ICdvcGVuJyB8ICdjbG9zZWQnO1xuXG5leHBvcnQgY29uc3QgUmR4QWNjb3JkaW9uSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeEFjY29yZGlvbkl0ZW1EaXJlY3RpdmU+KCdSZHhBY2NvcmRpb25JdGVtVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFjY29yZGlvbkl0ZW0oKTogUmR4QWNjb3JkaW9uSXRlbURpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChSZHhBY2NvcmRpb25JdGVtRGlyZWN0aXZlKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4QWNjb3JkaW9uSXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhBY2NvcmRpb25JdGVtJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogUmR4QWNjb3JkaW9uSXRlbVRva2VuLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFJkeEFjY29yZGlvbkl0ZW1EaXJlY3RpdmUsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdzdGF0ZSgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCkgPyBcIlwiIDogdW5kZWZpbmVkJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ29yaWVudGF0aW9uJ1xuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtDZGtBY2NvcmRpb25dXG59KVxuZXhwb3J0IGNsYXNzIFJkeEFjY29yZGlvbkl0ZW1EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIGFjY29yZGlvbkNvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4QWNjb3JkaW9uQ29udGVudFRva2VuKTtcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGl0ZW0gc3RhdGVcbiAgICAgKi9cbiAgICBzdGF0ZSA9IHNpZ25hbDxSZHhBY2NvcmRpb25JdGVtU3RhdGU+KCdjbG9zZWQnKTtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRydWUsIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaXRlbS5cbiAgICAgKi9cbiAgICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgb3JpZW50YXRpb246IFJkeEFjY29yZGlvbk9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJztcblxuICAgIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyBjdXJyZW50IGl0ZW0gc3RhdGVcbiAgICAgKi9cbiAgICBzZXRPcGVuKHN0YXRlPzogUmR4QWNjb3JkaW9uSXRlbVN0YXRlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoKSA9PiAodGhpcy5zdGF0ZSgpID09PSAnb3BlbicgPyAnY2xvc2VkJyA6ICdvcGVuJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUoKCkgPT4gc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY2NvcmRpb25Db250ZW50KCkuc2V0T3Blbih0aGlzLnN0YXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzZXRPcmllbnRhdGlvbihvcmllbnRhdGlvbjogUmR4QWNjb3JkaW9uT3JpZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uO1xuXG4gICAgICAgIHRoaXMuYWNjb3JkaW9uQ29udGVudCgpLm9yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gICAgfVxufVxuIl19
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9hY2NvcmRpb24vc3JjL2FjY29yZGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RSxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBSTdFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQWNmLE1BQU0sT0FBTyx5QkFBeUI7SUFTbEMsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDO0lBUUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLElBQ0ksUUFBUSxDQUFDLFFBQWlCO1FBQzFCLHVFQUF1RTtRQUN2RSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMs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QUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBWW5CLE1BQU07c0JBQXhCLE1BQU07Z0JBRVksTUFBTTtzQkFBeEIsTUFBTTtnQkFVWSxjQUFjO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgVW5pcXVlU2VsZWN0aW9uRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmR4QWNjb3JkaW9uQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vYWNjb3JkaW9uLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkeEFjY29yZGlvbk9yaWVudGF0aW9uLCBSZHhBY2NvcmRpb25Sb290VG9rZW4gfSBmcm9tICcuL2FjY29yZGlvbi1yb290LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhBY2NvcmRpb25UcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9hY2NvcmRpb24tdHJpZ2dlci5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSBSZHhBY2NvcmRpb25JdGVtU3RhdGUgPSAnb3BlbicgfCAnY2xvc2VkJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeEFjY29yZGlvbkl0ZW1dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGV4cG9ydEFzOiAncmR4QWNjb3JkaW9uSXRlbScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnZGF0YVN0YXRlJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ29yaWVudGF0aW9uJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogUmR4QWNjb3JkaW9uUm9vdFRva2VuLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH1dXG59KVxuZXhwb3J0IGNsYXNzIFJkeEFjY29yZGlvbkl0ZW1EaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjY29yZGlvbiA9IGluamVjdChSZHhBY2NvcmRpb25Sb290VG9rZW4sIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5zaW9uRGlzcGF0Y2hlciA9IGluamVjdChVbmlxdWVTZWxlY3Rpb25EaXNwYXRjaGVyKTtcblxuICAgIEBDb250ZW50Q2hpbGQoUmR4QWNjb3JkaW9uVHJpZ2dlckRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSB0cmlnZ2VyOiBSZHhBY2NvcmRpb25UcmlnZ2VyRGlyZWN0aXZlO1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBSZHhBY2NvcmRpb25Db250ZW50RGlyZWN0aXZlKSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIGNvbnRlbnQ6IFJkeEFjY29yZGlvbkNvbnRlbnREaXJlY3RpdmU7XG5cbiAgICBnZXQgZGF0YVN0YXRlKCk6IFJkeEFjY29yZGlvbkl0ZW1TdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkID8gJ29wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHVuaXF1ZSBBY2NvcmRpb25JdGVtIGlkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWFkb25seSBpZDogc3RyaW5nID0gYHJkeC1hY2NvcmRpb24taXRlbS0ke25leHRJZCsrfWA7XG5cbiAgICBnZXQgb3JpZW50YXRpb24oKTogUmR4QWNjb3JkaW9uT3JpZW50YXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NvcmRpb24ub3JpZW50YXRpb247XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIEFjY29yZGlvbkl0ZW0gaXMgZXhwYW5kZWQuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGV4cGFuZGVkKGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIE9ubHkgZW1pdCBldmVudHMgYW5kIHVwZGF0ZSB0aGUgaW50ZXJuYWwgdmFsdWUgaWYgdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAgICAgIGlmICh0aGlzLl9leHBhbmRlZCAhPT0gZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQoZXhwYW5kZWQpO1xuXG4gICAgICAgICAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogSW4gdGhlIHVuaXF1ZSBzZWxlY3Rpb24gZGlzcGF0Y2hlciwgdGhlIGlkIHBhcmFtZXRlciBpcyB0aGUgaWQgb2YgdGhlIENka0FjY29yZGlvbkl0ZW0sXG4gICAgICAgICAgICAgICAgICogdGhlIG5hbWUgdmFsdWUgaXMgdGhlIGlkIG9mIHRoZSBhY2NvcmRpb24uXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgYWNjb3JkaW9uSWQgPSB0aGlzLmFjY29yZGlvbiA/IHRoaXMuYWNjb3JkaW9uLmlkIDogdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuc2lvbkRpc3BhdGNoZXIubm90aWZ5KHRoaXMudmFsdWUsIGFjY29yZGlvbklkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIGFuaW1hdGlvbiB3aWxsIHJ1biB3aGVuIHRoZSB2YWx1ZSBpcyBzZXQgb3V0c2lkZSBvZiBhbiBgQElucHV0YC5cbiAgICAgICAgICAgIC8vIFRoaXMgaW5jbHVkZXMgY2FzZXMgbGlrZSB0aGUgb3BlbiwgY2xvc2UgYW5kIHRvZ2dsZSBtZXRob2RzLlxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2V4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSB8fCB0aGlzLmlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbHVlPzogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIEFjY29yZGlvbkl0ZW0gaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NvcmRpb24uZGlzYWJsZWQgPz8gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIGV2ZXJ5IHRpbWUgdGhlIEFjY29yZGlvbkl0ZW0gaXMgY2xvc2VkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvKiogRXZlbnQgZW1pdHRlZCBldmVyeSB0aW1lIHRoZSBBY2NvcmRpb25JdGVtIGlzIG9wZW5lZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBBY2NvcmRpb25JdGVtIGlzIGRlc3Ryb3llZC4gKi9cbiAgICByZWFkb25seSBkZXN0cm95ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW5ldmVyIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgYWNjb3JkaW9uIGNoYW5nZXMuXG4gICAgICogUHJpbWFyaWx5IHVzZWQgdG8gZmFjaWxpdGF0ZSB0d28td2F5IGJpbmRpbmcuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIFVucmVnaXN0ZXIgZnVuY3Rpb24gZm9yIGV4cGFuc2lvbkRpc3BhdGNoZXIuICovXG4gICAgcHJpdmF0ZSByZW1vdmVVbmlxdWVTZWxlY3Rpb25MaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBTdWJzY3JpcHRpb24gdG8gb3BlbkFsbC9jbG9zZUFsbCBldmVudHMuICovXG4gICAgcHJpdmF0ZSBvcGVuQ2xvc2VBbGxTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVVbmlxdWVTZWxlY3Rpb25MaXN0ZW5lciA9IHRoaXMuZXhwYW5zaW9uRGlzcGF0Y2hlci5saXN0ZW4oKGlkOiBzdHJpbmcsIGFjY29yZGlvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjY29yZGlvbi5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uLmlkID09PSBhY2NvcmRpb25JZCAmJiBpZC5pbmNsdWRlcyh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0aGlzLmFjY29yZGlvbi5pZCA9PT0gYWNjb3JkaW9uSWQgJiYgaWQuaW5jbHVkZXModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdoZW4gYW4gYWNjb3JkaW9uIGl0ZW0gaXMgaG9zdGVkIGluIGFuIGFjY29yZGlvbiwgc3Vic2NyaWJlIHRvIG9wZW4vY2xvc2UgZXZlbnRzLlxuICAgICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkNsb3NlQWxsU3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpYmVUb09wZW5DbG9zZUFsbEFjdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBFbWl0cyBhbiBldmVudCBmb3IgdGhlIGFjY29yZGlvbiBpdGVtIGJlaW5nIGRlc3Ryb3llZC4gKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuZW1pdCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnJlbW92ZVVuaXF1ZVNlbGVjdGlvbkxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMub3BlbkNsb3NlQWxsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgYWNjb3JkaW9uIGl0ZW0uICovXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5vblRvZ2dsZSgpO1xuXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0cyB0aGUgZXhwYW5kZWQgc3RhdGUgb2YgdGhlIGFjY29yZGlvbiBpdGVtIHRvIGZhbHNlLiAqL1xuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXRzIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiB0aGUgYWNjb3JkaW9uIGl0ZW0gdG8gdHJ1ZS4gKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb09wZW5DbG9zZUFsbEFjdGlvbnMoKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjb3JkaW9uLm9wZW5DbG9zZUFsbEFjdGlvbnMuc3Vic2NyaWJlKChleHBhbmRlZCkgPT4ge1xuICAgICAgICAgICAgLy8gT25seSBjaGFuZ2UgZXhwYW5kZWQgc3RhdGUgaWYgaXRlbSBpcyBlbmFibGVkXG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==