@radix-ng/primitives 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/avatar/src/avatar-fallback.directive.d.ts +1 -1
  2. package/avatar/src/avatar-image.directive.d.ts +3 -3
  3. package/compodoc/documentation.json +5818 -1682
  4. package/core/index.d.ts +1 -0
  5. package/core/src/id-generator.d.ts +12 -0
  6. package/esm2022/avatar/src/avatar-fallback.directive.mjs +6 -8
  7. package/esm2022/avatar/src/avatar-image.directive.mjs +4 -3
  8. package/esm2022/core/index.mjs +2 -1
  9. package/esm2022/core/src/create-inject-context/index.mjs +2 -2
  10. package/esm2022/core/src/id-generator.mjs +43 -0
  11. package/esm2022/popover/index.mjs +14 -4
  12. package/esm2022/popover/src/popover-anchor.directive.mjs +70 -0
  13. package/esm2022/popover/src/popover-anchor.token.mjs +3 -0
  14. package/esm2022/popover/src/popover-arrow.directive.mjs +12 -7
  15. package/esm2022/popover/src/popover-close.directive.mjs +16 -4
  16. package/esm2022/popover/src/popover-close.token.mjs +3 -0
  17. package/esm2022/popover/src/popover-content-attributes.component.mjs +70 -0
  18. package/esm2022/popover/src/popover-content-attributes.token.mjs +3 -0
  19. package/esm2022/popover/src/popover-content.directive.mjs +120 -84
  20. package/esm2022/popover/src/popover-root.directive.mjs +232 -64
  21. package/esm2022/popover/src/popover-root.inject.mjs +4 -4
  22. package/esm2022/popover/src/popover-trigger.directive.mjs +5 -7
  23. package/esm2022/popover/src/popover.types.mjs +18 -1
  24. package/esm2022/popover/src/popover.utils.mjs +4 -6
  25. package/esm2022/switch/src/switch-input.directive.mjs +16 -7
  26. package/esm2022/switch/src/switch-root.directive.mjs +59 -14
  27. package/esm2022/switch/src/switch-thumb.directive.mjs +3 -3
  28. package/esm2022/toggle/index.mjs +2 -2
  29. package/esm2022/toggle/src/toggle-visually-hidden-input.directive.mjs +31 -0
  30. package/esm2022/toggle/src/toggle.directive.mjs +37 -8
  31. package/fesm2022/radix-ng-primitives-avatar.mjs +8 -9
  32. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  33. package/fesm2022/radix-ng-primitives-core.mjs +44 -3
  34. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-popover.mjs +672 -303
  36. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-switch.mjs +76 -22
  38. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  39. package/fesm2022/radix-ng-primitives-toggle.mjs +45 -15
  40. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/popover/index.d.ts +5 -1
  43. package/popover/src/popover-anchor.directive.d.ts +28 -0
  44. package/popover/src/popover-anchor.token.d.ts +3 -0
  45. package/popover/src/popover-arrow.directive.d.ts +8 -5
  46. package/popover/src/popover-close.directive.d.ts +1 -1
  47. package/popover/src/popover-close.token.d.ts +3 -0
  48. package/popover/src/popover-content-attributes.component.d.ts +17 -0
  49. package/popover/src/popover-content-attributes.token.d.ts +3 -0
  50. package/popover/src/popover-content.directive.d.ts +36 -23
  51. package/popover/src/popover-root.directive.d.ts +89 -18
  52. package/popover/src/popover-root.inject.d.ts +2 -1
  53. package/popover/src/popover-trigger.directive.d.ts +3 -5
  54. package/popover/src/popover.types.d.ts +14 -3
  55. package/switch/src/switch-input.directive.d.ts +2 -0
  56. package/switch/src/switch-root.directive.d.ts +33 -5
  57. package/toggle/index.d.ts +2 -2
  58. package/toggle/src/toggle-visually-hidden-input.directive.d.ts +6 -0
  59. package/toggle/src/toggle.directive.d.ts +19 -2
  60. package/esm2022/popover/src/popover-root.token.mjs +0 -3
  61. package/esm2022/toggle/src/toggle-input.directive.mjs +0 -30
  62. package/popover/src/popover-root.token.d.ts +0 -3
  63. package/toggle/src/toggle-input.directive.d.ts +0 -6
@@ -1,27 +1,56 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { computed, contentChild, Directive, effect, forwardRef, inject, input, output, signal, untracked, ViewContainerRef } from '@angular/core';
1
+ import { afterNextRender, booleanAttribute, computed, contentChild, DestroyRef, Directive, effect, inject, input, signal, untracked, ViewContainerRef } from '@angular/core';
2
+ import { RdxPopoverAnchorToken } from './popover-anchor.token';
3
3
  import { RdxPopoverArrowToken } from './popover-arrow.token';
4
+ import { RdxPopoverCloseToken } from './popover-close.token';
5
+ import { RdxPopoverContentAttributesToken } from './popover-content-attributes.token';
4
6
  import { RdxPopoverContentDirective } from './popover-content.directive';
5
- import { RdxPopoverRootToken } from './popover-root.token';
6
7
  import { RdxPopoverTriggerDirective } from './popover-trigger.directive';
8
+ import { RdxPopoverAnimationStatus, RdxPopoverAttachDetachEvent, RdxPopoverState } from './popover.types';
7
9
  import * as i0 from "@angular/core";
8
10
  let nextId = 0;
9
11
  export class RdxPopoverRootDirective {
10
12
  constructor() {
13
+ /** @ignore */
11
14
  this.uniqueId = signal(++nextId);
15
+ /** @ignore */
12
16
  this.name = computed(() => `rdx-popover-root-${this.uniqueId()}`);
13
17
  /**
14
- * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.
18
+ * @description The anchor directive that comes form outside the popover root
19
+ * @default undefined
20
+ */
21
+ this.anchor = input(void 0);
22
+ /**
23
+ * @description The open state of the popover when it is initially rendered. Use when you do not need to control its open state.
24
+ * @default false
15
25
  */
16
26
  this.defaultOpen = input(false);
17
27
  /**
18
- * The controlled open state of the popover. Must be used in conjunction with onOpenChange.
28
+ * @description The controlled state of the popover. `open` input take precedence of `defaultOpen` input.
29
+ * @default undefined
19
30
  */
20
- this.open = input();
31
+ this.open = input(void 0);
21
32
  /**
22
- * Event handler called when the open state of the popover changes.
33
+ * @description Whether to control the state of the popover from external. Use in conjunction with `open` input.
34
+ * @default undefined
23
35
  */
24
- this.onOpenChange = output();
36
+ this.externalControl = input(void 0);
37
+ /**
38
+ * @description Whether to take into account CSS opening/closing animations.
39
+ * @default false
40
+ */
41
+ this.cssAnimation = input(false, { transform: booleanAttribute });
42
+ /**
43
+ * @description Whether to take into account CSS opening animations. `cssAnimation` input must be set to 'true'
44
+ * @default false
45
+ */
46
+ this.cssOpeningAnimation = input(false, { transform: booleanAttribute });
47
+ /**
48
+ * @description Whether to take into account CSS closing animations. `cssAnimation` input must be set to 'true'
49
+ * @default false
50
+ */
51
+ this.cssClosingAnimation = input(false, { transform: booleanAttribute });
52
+ /** @ignore */
53
+ this.cssAnimationStatus = signal(null);
25
54
  /** @ignore */
26
55
  this.popoverContentDirective = contentChild.required(RdxPopoverContentDirective);
27
56
  /** @ignore */
@@ -29,119 +58,258 @@ export class RdxPopoverRootDirective {
29
58
  /** @ignore */
30
59
  this.popoverArrowDirective = contentChild(RdxPopoverArrowToken);
31
60
  /** @ignore */
61
+ this.popoverCloseDirective = contentChild(RdxPopoverCloseToken);
62
+ /** @ignore */
63
+ this.popoverContentAttributesComponent = contentChild(RdxPopoverContentAttributesToken);
64
+ /** @ignore */
65
+ this.internalPopoverAnchorDirective = contentChild(RdxPopoverAnchorToken);
66
+ /** @ignore */
32
67
  this.viewContainerRef = inject(ViewContainerRef);
33
68
  /** @ignore */
34
- this.document = inject(DOCUMENT);
69
+ this.destroyRef = inject(DestroyRef);
35
70
  /** @ignore */
36
- this.isOpen = signal(this.defaultOpen());
71
+ this.state = signal(RdxPopoverState.CLOSED);
37
72
  /** @ignore */
38
- this.state = computed(() => {
39
- const currentIsOpen = this.isOpen();
40
- if (currentIsOpen) {
41
- return 'open';
42
- }
43
- return 'closed';
44
- });
73
+ this.attachDetachEvent = signal(RdxPopoverAttachDetachEvent.DETACH);
74
+ /** @ignore */
75
+ this.isFirstDefaultOpen = signal(false);
45
76
  /** @ignore */
46
- this.isControlledExternally = computed(() => signal(this.open() !== void 0));
77
+ this.popoverAnchorDirective = computed(() => this.internalPopoverAnchorDirective() ?? this.anchor());
78
+ /** @ignore */
79
+ this.onAnchorChangeEffect = () => {
80
+ effect(() => {
81
+ const anchor = this.anchor();
82
+ untracked(() => {
83
+ if (anchor) {
84
+ anchor.setPopoverRoot(this);
85
+ }
86
+ });
87
+ });
88
+ };
89
+ this.onStateChangeEffect();
90
+ this.onCssAnimationStatusChangeChangeEffect();
47
91
  this.onOpenChangeEffect();
48
- this.onIsOpenChangeEffect();
92
+ this.onIsFirstDefaultOpenChangeEffect();
93
+ this.onAnchorChangeEffect();
94
+ this.emitOpenOrClosedEventEffect();
95
+ afterNextRender({
96
+ write: () => {
97
+ if (this.defaultOpen() && !this.open()) {
98
+ this.isFirstDefaultOpen.set(true);
99
+ }
100
+ }
101
+ });
49
102
  }
50
103
  /** @ignore */
51
- ngOnInit() {
52
- if (this.defaultOpen()) {
53
- this.handleOpen();
54
- }
104
+ getAnimationParamsSnapshot() {
105
+ return {
106
+ cssAnimation: this.cssAnimation(),
107
+ cssOpeningAnimation: this.cssOpeningAnimation(),
108
+ cssClosingAnimation: this.cssClosingAnimation(),
109
+ cssAnimationStatus: this.cssAnimationStatus(),
110
+ attachDetachEvent: this.attachDetachEvent(),
111
+ state: this.state(),
112
+ canEmitOnOpenOrOnClosed: this.canEmitOnOpenOrOnClosed()
113
+ };
55
114
  }
56
115
  /** @ignore */
57
116
  controlledExternally() {
58
- return this.isControlledExternally().asReadonly();
117
+ return this.externalControl;
118
+ }
119
+ /** @ignore */
120
+ firstDefaultOpen() {
121
+ return this.isFirstDefaultOpen();
59
122
  }
60
123
  /** @ignore */
61
124
  handleOpen() {
62
- if (this.isControlledExternally()()) {
125
+ if (this.externalControl()) {
63
126
  return;
64
127
  }
65
- this.setOpen(true);
128
+ this.setState(RdxPopoverState.OPEN);
66
129
  }
67
130
  /** @ignore */
68
131
  handleClose() {
69
- if (this.isControlledExternally()()) {
132
+ if (this.isFirstDefaultOpen()) {
133
+ this.isFirstDefaultOpen.set(false);
134
+ }
135
+ if (this.externalControl()) {
70
136
  return;
71
137
  }
72
- this.setOpen(false);
138
+ this.setState(RdxPopoverState.CLOSED);
73
139
  }
74
140
  /** @ignore */
75
141
  handleToggle() {
76
- if (this.isControlledExternally()()) {
142
+ if (this.externalControl()) {
77
143
  return;
78
144
  }
79
145
  this.isOpen() ? this.handleClose() : this.handleOpen();
80
146
  }
81
147
  /** @ignore */
82
- setOpen(open = false) {
83
- this.document.dispatchEvent(new CustomEvent(`popover.${open ? 'open' : 'close'}`, {
84
- detail: {
85
- id: this.name()
86
- }
87
- }));
88
- this.isOpen.set(open);
89
- this.onOpenChange.emit(open);
148
+ isOpen(state) {
149
+ return (state ?? this.state()) === RdxPopoverState.OPEN;
150
+ }
151
+ /** @ignore */
152
+ setState(state = RdxPopoverState.CLOSED) {
153
+ if (state === this.state()) {
154
+ return;
155
+ }
156
+ this.state.set(state);
157
+ }
158
+ /** @ignore */
159
+ openContent() {
160
+ this.popoverContentDirective().open();
161
+ if (!this.cssAnimation() || !this.cssOpeningAnimation()) {
162
+ this.cssAnimationStatus.set(null);
163
+ }
90
164
  }
91
165
  /** @ignore */
92
- show() {
93
- this.popoverContentDirective().show();
166
+ closeContent() {
167
+ this.popoverContentDirective().close();
168
+ if (!this.cssAnimation() || !this.cssClosingAnimation()) {
169
+ this.cssAnimationStatus.set(null);
170
+ }
171
+ }
172
+ /** @ignore */
173
+ emitOnOpen() {
174
+ this.popoverContentDirective().onOpen.emit();
175
+ }
176
+ /** @ignore */
177
+ emitOnClosed() {
178
+ this.popoverContentDirective().onClosed.emit();
179
+ }
180
+ /** @ignore */
181
+ ifOpenOrCloseWithoutAnimations(state) {
182
+ return (!this.popoverContentAttributesComponent() ||
183
+ !this.cssAnimation() ||
184
+ (this.cssAnimation() && !this.cssClosingAnimation() && state === RdxPopoverState.CLOSED) ||
185
+ (this.cssAnimation() && !this.cssOpeningAnimation() && state === RdxPopoverState.OPEN) ||
186
+ // !this.cssAnimationStatus() ||
187
+ (this.cssOpeningAnimation() &&
188
+ state === RdxPopoverState.OPEN &&
189
+ [RdxPopoverAnimationStatus.OPEN_STARTED].includes(this.cssAnimationStatus())) ||
190
+ (this.cssClosingAnimation() &&
191
+ state === RdxPopoverState.CLOSED &&
192
+ [RdxPopoverAnimationStatus.CLOSED_STARTED].includes(this.cssAnimationStatus())));
193
+ }
194
+ /** @ignore */
195
+ ifOpenOrCloseWithAnimations(cssAnimationStatus) {
196
+ return (this.popoverContentAttributesComponent() &&
197
+ this.cssAnimation() &&
198
+ cssAnimationStatus &&
199
+ ((this.cssOpeningAnimation() &&
200
+ this.state() === RdxPopoverState.OPEN &&
201
+ [RdxPopoverAnimationStatus.OPEN_ENDED].includes(cssAnimationStatus)) ||
202
+ (this.cssClosingAnimation() &&
203
+ this.state() === RdxPopoverState.CLOSED &&
204
+ [RdxPopoverAnimationStatus.CLOSED_ENDED].includes(cssAnimationStatus))));
205
+ }
206
+ /** @ignore */
207
+ openOrClose(state) {
208
+ const isOpen = this.isOpen(state);
209
+ isOpen ? this.openContent() : this.closeContent();
210
+ }
211
+ /** @ignore */
212
+ emitOnOpenOrOnClosed(state) {
213
+ this.isOpen(state)
214
+ ? this.attachDetachEvent() === RdxPopoverAttachDetachEvent.ATTACH && this.emitOnOpen()
215
+ : this.attachDetachEvent() === RdxPopoverAttachDetachEvent.DETACH && this.emitOnClosed();
216
+ }
217
+ /** @ignore */
218
+ canEmitOnOpenOrOnClosed() {
219
+ return (!this.cssAnimation() ||
220
+ (!this.cssOpeningAnimation() && this.state() === RdxPopoverState.OPEN) ||
221
+ (this.cssOpeningAnimation() &&
222
+ this.state() === RdxPopoverState.OPEN &&
223
+ this.cssAnimationStatus() === RdxPopoverAnimationStatus.OPEN_ENDED) ||
224
+ (!this.cssClosingAnimation() && this.state() === RdxPopoverState.CLOSED) ||
225
+ (this.cssClosingAnimation() &&
226
+ this.state() === RdxPopoverState.CLOSED &&
227
+ this.cssAnimationStatus() === RdxPopoverAnimationStatus.CLOSED_ENDED));
228
+ }
229
+ /** @ignore */
230
+ onStateChangeEffect() {
231
+ let isFirst = true;
232
+ effect(() => {
233
+ const state = this.state();
234
+ untracked(() => {
235
+ if (isFirst) {
236
+ isFirst = false;
237
+ return;
238
+ }
239
+ if (!this.ifOpenOrCloseWithoutAnimations(state)) {
240
+ return;
241
+ }
242
+ this.openOrClose(state);
243
+ });
244
+ }, {});
94
245
  }
95
246
  /** @ignore */
96
- hide() {
97
- this.popoverContentDirective().hide();
247
+ onCssAnimationStatusChangeChangeEffect() {
248
+ let isFirst = true;
249
+ effect(() => {
250
+ const cssAnimationStatus = this.cssAnimationStatus();
251
+ untracked(() => {
252
+ if (isFirst) {
253
+ isFirst = false;
254
+ return;
255
+ }
256
+ if (!this.ifOpenOrCloseWithAnimations(cssAnimationStatus)) {
257
+ return;
258
+ }
259
+ this.openOrClose(this.state());
260
+ });
261
+ });
98
262
  }
99
263
  /** @ignore */
100
- onIsOpenChangeEffect() {
264
+ emitOpenOrClosedEventEffect() {
265
+ let isFirst = true;
101
266
  effect(() => {
102
- const isOpen = this.isOpen();
267
+ this.attachDetachEvent();
268
+ this.cssAnimationStatus();
103
269
  untracked(() => {
104
- if (isOpen) {
105
- this.show();
270
+ if (isFirst) {
271
+ isFirst = false;
272
+ return;
106
273
  }
107
- else {
108
- this.hide();
274
+ const canEmitOpenClose = untracked(() => this.canEmitOnOpenOrOnClosed());
275
+ if (!canEmitOpenClose) {
276
+ return;
109
277
  }
278
+ this.emitOnOpenOrOnClosed(this.state());
110
279
  });
111
280
  });
112
281
  }
113
282
  /** @ignore */
114
283
  onOpenChangeEffect() {
115
284
  effect(() => {
116
- const currentOpen = this.open();
285
+ const open = this.open();
286
+ untracked(() => {
287
+ this.setState(open ? RdxPopoverState.OPEN : RdxPopoverState.CLOSED);
288
+ });
289
+ });
290
+ }
291
+ /** @ignore */
292
+ onIsFirstDefaultOpenChangeEffect() {
293
+ const effectRef = effect(() => {
294
+ const defaultOpen = this.defaultOpen();
117
295
  untracked(() => {
118
- this.isControlledExternally().set(currentOpen !== void 0);
119
- if (this.isControlledExternally()()) {
120
- this.setOpen(currentOpen);
296
+ if (!defaultOpen || this.open()) {
297
+ effectRef.destroy();
298
+ return;
121
299
  }
300
+ this.handleOpen();
122
301
  });
123
302
  });
124
303
  }
125
304
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.11", type: RdxPopoverRootDirective, isStandalone: true, selector: "[rdxPopoverRoot]", inputs: { defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOpenChange: "onOpenChange" }, providers: [
127
- {
128
- provide: RdxPopoverRootToken,
129
- useExisting: forwardRef(() => RdxPopoverRootDirective)
130
- }
131
- ], queries: [{ propertyName: "popoverContentDirective", first: true, predicate: RdxPopoverContentDirective, descendants: true, isSignal: true }, { propertyName: "popoverTriggerDirective", first: true, predicate: RdxPopoverTriggerDirective, descendants: true, isSignal: true }, { propertyName: "popoverArrowDirective", first: true, predicate: RdxPopoverArrowToken, descendants: true, isSignal: true }], exportAs: ["rdxPopoverRoot"], ngImport: i0 }); }
305
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.11", type: RdxPopoverRootDirective, isStandalone: true, selector: "[rdxPopoverRoot]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, externalControl: { classPropertyName: "externalControl", publicName: "externalControl", isSignal: true, isRequired: false, transformFunction: null }, cssAnimation: { classPropertyName: "cssAnimation", publicName: "cssAnimation", isSignal: true, isRequired: false, transformFunction: null }, cssOpeningAnimation: { classPropertyName: "cssOpeningAnimation", publicName: "cssOpeningAnimation", isSignal: true, isRequired: false, transformFunction: null }, cssClosingAnimation: { classPropertyName: "cssClosingAnimation", publicName: "cssClosingAnimation", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "popoverContentDirective", first: true, predicate: RdxPopoverContentDirective, descendants: true, isSignal: true }, { propertyName: "popoverTriggerDirective", first: true, predicate: RdxPopoverTriggerDirective, descendants: true, isSignal: true }, { propertyName: "popoverArrowDirective", first: true, predicate: RdxPopoverArrowToken, descendants: true, isSignal: true }, { propertyName: "popoverCloseDirective", first: true, predicate: RdxPopoverCloseToken, descendants: true, isSignal: true }, { propertyName: "popoverContentAttributesComponent", first: true, predicate: RdxPopoverContentAttributesToken, descendants: true, isSignal: true }, { propertyName: "internalPopoverAnchorDirective", first: true, predicate: RdxPopoverAnchorToken, descendants: true, isSignal: true }], exportAs: ["rdxPopoverRoot"], ngImport: i0 }); }
132
306
  }
133
307
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverRootDirective, decorators: [{
134
308
  type: Directive,
135
309
  args: [{
136
310
  selector: '[rdxPopoverRoot]',
137
311
  standalone: true,
138
- providers: [
139
- {
140
- provide: RdxPopoverRootToken,
141
- useExisting: forwardRef(() => RdxPopoverRootDirective)
142
- }
143
- ],
144
312
  exportAs: 'rdxPopoverRoot'
145
313
  }]
146
314
  }], ctorParameters: () => [] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNILFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBR3pFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQWFmLE1BQU0sT0FBTyx1QkFBdUI7SUE0Q2hDO1FBM0NTLGFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRFOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0M7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxFQUF1QixDQUFDO1FBRTdDOztXQUVHO1FBQ00saUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUUxQyxjQUFjO1FBQ0wsNEJBQXVCLEdBQUcsWUFB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QUF1QjtrQkFYbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDO3lCQUN6RDtxQkFDSjtvQkFDRCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgY29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBlZmZlY3QsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgT25Jbml0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQXJyb3dUb2tlbiB9IGZyb20gJy4vcG9wb3Zlci1hcnJvdy50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyUm9vdFRva2VuIH0gZnJvbSAnLi9wb3BvdmVyLXJvb3QudG9rZW4nO1xuaW1wb3J0IHsgUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlclN0YXRlIH0gZnJvbSAnLi9wb3BvdmVyLnR5cGVzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFBvcG92ZXJSb290XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogUmR4UG9wb3ZlclJvb3RUb2tlbixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJkeFBvcG92ZXJSb290RGlyZWN0aXZlKVxuICAgICAgICB9XG4gICAgXSxcbiAgICBleHBvcnRBczogJ3JkeFBvcG92ZXJSb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZHhQb3BvdmVyUm9vdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgdW5pcXVlSWQgPSBzaWduYWwoKytuZXh0SWQpO1xuICAgIHJlYWRvbmx5IG5hbWUgPSBjb21wdXRlZCgoKSA9PiBgcmR4LXBvcG92ZXItcm9vdC0ke3RoaXMudW5pcXVlSWQoKX1gKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcGVuIHN0YXRlIG9mIHRoZSBwb3BvdmVyIHdoZW4gaXQgaXMgaW5pdGlhbGx5IHJlbmRlcmVkLiBVc2Ugd2hlbiB5b3UgZG8gbm90IG5lZWQgdG8gY29udHJvbCBpdHMgb3BlbiBzdGF0ZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0T3BlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBUaGUgY29udHJvbGxlZCBvcGVuIHN0YXRlIG9mIHRoZSBwb3BvdmVyLiBNdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvbk9wZW5DaGFuZ2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3BlbiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBwb3BvdmVyIGNoYW5nZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgb25PcGVuQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJDb250ZW50RGlyZWN0aXZlID0gY29udGVudENoaWxkLnJlcXVpcmVkKFJkeFBvcG92ZXJDb250ZW50RGlyZWN0aXZlKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlID0gY29udGVudENoaWxkLnJlcXVpcmVkKFJkeFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJBcnJvd0RpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChSZHhQb3BvdmVyQXJyb3dUb2tlbik7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgaXNPcGVuID0gc2lnbmFsPGJvb2xlYW4+KHRoaXMuZGVmYXVsdE9wZW4oKSk7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBzdGF0ZSA9IGNvbXB1dGVkPFJkeFBvcG92ZXJTdGF0ZT4oKCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SXNPcGVuID0gdGhpcy5pc09wZW4oKTtcbiAgICAgICAgaWYgKGN1cnJlbnRJc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybiAnb3Blbic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdjbG9zZWQnO1xuICAgIH0pO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGlzQ29udHJvbGxlZEV4dGVybmFsbHkgPSBjb21wdXRlZCgoKSA9PiBzaWduYWwodGhpcy5vcGVuKCkgIT09IHZvaWQgMCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMub25PcGVuQ2hhbmdlRWZmZWN0KCk7XG4gICAgICAgIHRoaXMub25Jc09wZW5DaGFuZ2VFZmZlY3QoKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0T3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgY29udHJvbGxlZEV4dGVybmFsbHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ29udHJvbGxlZEV4dGVybmFsbHkoKS5hc1JlYWRvbmx5KCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVPcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0NvbnRyb2xsZWRFeHRlcm5hbGx5KCkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0T3Blbih0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0NvbnRyb2xsZWRFeHRlcm5hbGx5KCkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVUb2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ29udHJvbGxlZEV4dGVybmFsbHkoKSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc09wZW4oKSA/IHRoaXMuaGFuZGxlQ2xvc2UoKSA6IHRoaXMuaGFuZGxlT3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBzZXRPcGVuKG9wZW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoYHBvcG92ZXIuJHtvcGVuID8gJ29wZW4nIDogJ2Nsb3NlJ31gLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLm5hbWUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KG9wZW4pO1xuICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZS5lbWl0KG9wZW4pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBzaG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkuc2hvdygpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBoaWRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkuaGlkZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbklzT3BlbkNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMuaXNPcGVuKCk7XG5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uT3BlbkNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcGVuID0gdGhpcy5vcGVuKCk7XG5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NvbnRyb2xsZWRFeHRlcm5hbGx5KCkuc2V0KGN1cnJlbnRPcGVuICE9PSB2b2lkIDApO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ29udHJvbGxlZEV4dGVybmFsbHkoKSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0T3BlbihjdXJyZW50T3Blbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxRyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFPZixNQUFNLE9BQU8sdUJBQXVCO0lBMkVoQztRQTFFQSxjQUFjO1FBQ0wsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLGNBQWM7UUFDTCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRFOzs7V0FHRztRQUNNLFdBQU0s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ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIHNpZ25hbCxcbiAgICB1bnRyYWNrZWQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeFBvcG92ZXJBbmNob3JEaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItYW5jaG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQW5jaG9yVG9rZW4gfSBmcm9tICcuL3BvcG92ZXItYW5jaG9yLnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJBcnJvd1Rva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWFycm93LnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJDbG9zZVRva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWNsb3NlLnRva2VuJztcbmltcG9ydCB7IFJkeFBvcG92ZXJDb250ZW50QXR0cmlidXRlc1Rva2VuIH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRlbnQtYXR0cmlidXRlcy50b2tlbic7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLCBSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQsIFJkeFBvcG92ZXJTdGF0ZSB9IGZyb20gJy4vcG9wb3Zlci50eXBlcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQb3BvdmVyUm9vdF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdyZHhQb3BvdmVyUm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUge1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdW5pcXVlSWQgPSBzaWduYWwoKytuZXh0SWQpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgbmFtZSA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci1yb290LSR7dGhpcy51bmlxdWVJZCgpfWApO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbmNob3IgZGlyZWN0aXZlIHRoYXQgY29tZXMgZm9ybSBvdXRzaWRlIHRoZSBwb3BvdmVyIHJvb3RcbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBhbmNob3IgPSBpbnB1dDxSZHhQb3BvdmVyQW5jaG9yRGlyZWN0aXZlIHwgdW5kZWZpbmVkPih2b2lkIDApO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgcG9wb3ZlciB3aGVuIGl0IGlzIGluaXRpYWxseSByZW5kZXJlZC4gVXNlIHdoZW4geW91IGRvIG5vdCBuZWVkIHRvIGNvbnRyb2wgaXRzIG9wZW4gc3RhdGUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkZWZhdWx0T3BlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNvbnRyb2xsZWQgc3RhdGUgb2YgdGhlIHBvcG92ZXIuIGBvcGVuYCBpbnB1dCB0YWtlIHByZWNlZGVuY2Ugb2YgYGRlZmF1bHRPcGVuYCBpbnB1dC5cbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBvcGVuID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byBjb250cm9sIHRoZSBzdGF0ZSBvZiB0aGUgcG9wb3ZlciBmcm9tIGV4dGVybmFsLiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCBgb3BlbmAgaW5wdXQuXG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb250cm9sID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odm9pZCAwKTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZy9jbG9zaW5nIGFuaW1hdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBjc3NBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1Mgb3BlbmluZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc09wZW5pbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byB0YWtlIGludG8gYWNjb3VudCBDU1MgY2xvc2luZyBhbmltYXRpb25zLiBgY3NzQW5pbWF0aW9uYCBpbnB1dCBtdXN0IGJlIHNldCB0byAndHJ1ZSdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNzc0Nsb3NpbmdBbmltYXRpb24gPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3NzQW5pbWF0aW9uU3RhdHVzID0gc2lnbmFsPFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckNvbnRlbnREaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlckNvbnRlbnREaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgcG9wb3ZlckFycm93RGlyZWN0aXZlID0gY29udGVudENoaWxkKFJkeFBvcG92ZXJBcnJvd1Rva2VuKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJDbG9zZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChSZHhQb3BvdmVyQ2xvc2VUb2tlbik7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNDb21wb25lbnQgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckNvbnRlbnRBdHRyaWJ1dGVzVG9rZW4pO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFBvcG92ZXJBbmNob3JEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoUmR4UG9wb3ZlckFuY2hvclRva2VuKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsKFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBhdHRhY2hEZXRhY2hFdmVudCA9IHNpZ25hbChSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQuREVUQUNIKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBpc0ZpcnN0RGVmYXVsdE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyQW5jaG9yRGlyZWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnRlcm5hbFBvcG92ZXJBbmNob3JEaXJlY3RpdmUoKSA/PyB0aGlzLmFuY2hvcigpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2VFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5vbkNzc0FuaW1hdGlvblN0YXR1c0NoYW5nZUNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZUVmZmVjdCgpO1xuICAgICAgICB0aGlzLm9uSXNGaXJzdERlZmF1bHRPcGVuQ2hhbmdlRWZmZWN0KCk7XG4gICAgICAgIHRoaXMub25BbmNob3JDaGFuZ2VFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5lbWl0T3Blbk9yQ2xvc2VkRXZlbnRFZmZlY3QoKTtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKHtcbiAgICAgICAgICAgIHdyaXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdE9wZW4oKSAmJiAhdGhpcy5vcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4uc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXRBbmltYXRpb25QYXJhbXNTbmFwc2hvdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNzc0FuaW1hdGlvbjogdGhpcy5jc3NBbmltYXRpb24oKSxcbiAgICAgICAgICAgIGNzc09wZW5pbmdBbmltYXRpb246IHRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpLFxuICAgICAgICAgICAgY3NzQ2xvc2luZ0FuaW1hdGlvbjogdGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCksXG4gICAgICAgICAgICBjc3NBbmltYXRpb25TdGF0dXM6IHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCksXG4gICAgICAgICAgICBhdHRhY2hEZXRhY2hFdmVudDogdGhpcy5hdHRhY2hEZXRhY2hFdmVudCgpLFxuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUoKSxcbiAgICAgICAgICAgIGNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkOiB0aGlzLmNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGNvbnRyb2xsZWRFeHRlcm5hbGx5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbENvbnRyb2w7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBmaXJzdERlZmF1bHRPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpcnN0RGVmYXVsdE9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZU9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29udHJvbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZShSZHhQb3BvdmVyU3RhdGUuT1BFTik7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdERlZmF1bHRPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdERlZmF1bHRPcGVuLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb250cm9sKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlVG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5leHRlcm5hbENvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNPcGVuKCkgPyB0aGlzLmhhbmRsZUNsb3NlKCkgOiB0aGlzLmhhbmRsZU9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGlzT3BlbihzdGF0ZT86IFJkeFBvcG92ZXJTdGF0ZSkge1xuICAgICAgICByZXR1cm4gKHN0YXRlID8/IHRoaXMuc3RhdGUoKSkgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBzZXRTdGF0ZShzdGF0ZSA9IFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHN0YXRlID09PSB0aGlzLnN0YXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlLnNldChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9wZW5Db250ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkub3BlbigpO1xuICAgICAgICBpZiAoIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHwgIXRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cy5zZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgY2xvc2VDb250ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkuY2xvc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLmNzc0FuaW1hdGlvbigpIHx8ICF0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5jc3NBbmltYXRpb25TdGF0dXMuc2V0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGVtaXRPbk9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5vbk9wZW4uZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBlbWl0T25DbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRlbnREaXJlY3RpdmUoKS5vbkNsb3NlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGlmT3Blbk9yQ2xvc2VXaXRob3V0QW5pbWF0aW9ucyhzdGF0ZTogUmR4UG9wb3ZlclN0YXRlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5wb3BvdmVyQ29udGVudEF0dHJpYnV0ZXNDb21wb25lbnQoKSB8fFxuICAgICAgICAgICAgIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0FuaW1hdGlvbigpICYmICF0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJiBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0FuaW1hdGlvbigpICYmICF0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJiBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4pIHx8XG4gICAgICAgICAgICAvLyAhdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKSB8fFxuICAgICAgICAgICAgKHRoaXMuY3NzT3BlbmluZ0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICAgICAgc3RhdGUgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOICYmXG4gICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuT1BFTl9TVEFSVEVEXS5pbmNsdWRlcyh0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpISkpIHx8XG4gICAgICAgICAgICAodGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICBzdGF0ZSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCAmJlxuICAgICAgICAgICAgICAgIFtSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLkNMT1NFRF9TVEFSVEVEXS5pbmNsdWRlcyh0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpISkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGlmT3Blbk9yQ2xvc2VXaXRoQW5pbWF0aW9ucyhjc3NBbmltYXRpb25TdGF0dXM6IFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMgfCBudWxsKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDb250ZW50QXR0cmlidXRlc0NvbXBvbmVudCgpICYmXG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvbigpICYmXG4gICAgICAgICAgICBjc3NBbmltYXRpb25TdGF0dXMgJiZcbiAgICAgICAgICAgICgodGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlKCkgPT09IFJkeFBvcG92ZXJTdGF0ZS5PUEVOICYmXG4gICAgICAgICAgICAgICAgW1JkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuT1BFTl9FTkRFRF0uaW5jbHVkZXMoY3NzQW5pbWF0aW9uU3RhdHVzKSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5jc3NDbG9zaW5nQW5pbWF0aW9uKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuQ0xPU0VEICYmXG4gICAgICAgICAgICAgICAgICAgIFtSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLkNMT1NFRF9FTkRFRF0uaW5jbHVkZXMoY3NzQW5pbWF0aW9uU3RhdHVzKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9wZW5PckNsb3NlKHN0YXRlOiBSZHhQb3BvdmVyU3RhdGUpIHtcbiAgICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5pc09wZW4oc3RhdGUpO1xuICAgICAgICBpc09wZW4gPyB0aGlzLm9wZW5Db250ZW50KCkgOiB0aGlzLmNsb3NlQ29udGVudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBlbWl0T25PcGVuT3JPbkNsb3NlZChzdGF0ZTogUmR4UG9wb3ZlclN0YXRlKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuKHN0YXRlKVxuICAgICAgICAgICAgPyB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCkgPT09IFJkeFBvcG92ZXJBdHRhY2hEZXRhY2hFdmVudC5BVFRBQ0ggJiYgdGhpcy5lbWl0T25PcGVuKClcbiAgICAgICAgICAgIDogdGhpcy5hdHRhY2hEZXRhY2hFdmVudCgpID09PSBSZHhQb3BvdmVyQXR0YWNoRGV0YWNoRXZlbnQuREVUQUNIICYmIHRoaXMuZW1pdE9uQ2xvc2VkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuY3NzQW5pbWF0aW9uKCkgfHxcbiAgICAgICAgICAgICghdGhpcy5jc3NPcGVuaW5nQW5pbWF0aW9uKCkgJiYgdGhpcy5zdGF0ZSgpID09PSBSZHhQb3BvdmVyU3RhdGUuT1BFTikgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc09wZW5pbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLk9QRU4gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpID09PSBSZHhQb3BvdmVyQW5pbWF0aW9uU3RhdHVzLk9QRU5fRU5ERUQpIHx8XG4gICAgICAgICAgICAoIXRoaXMuY3NzQ2xvc2luZ0FuaW1hdGlvbigpICYmIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNzc0Nsb3NpbmdBbmltYXRpb24oKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUoKSA9PT0gUmR4UG9wb3ZlclN0YXRlLkNMT1NFRCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3NzQW5pbWF0aW9uU3RhdHVzKCkgPT09IFJkeFBvcG92ZXJBbmltYXRpb25TdGF0dXMuQ0xPU0VEX0VOREVEKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvblN0YXRlQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGUoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pZk9wZW5PckNsb3NlV2l0aG91dEFuaW1hdGlvbnMoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT3JDbG9zZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbkNzc0FuaW1hdGlvblN0YXR1c0NoYW5nZUNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgbGV0IGlzRmlyc3QgPSB0cnVlO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3NzQW5pbWF0aW9uU3RhdHVzID0gdGhpcy5jc3NBbmltYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pZk9wZW5PckNsb3NlV2l0aEFuaW1hdGlvbnMoY3NzQW5pbWF0aW9uU3RhdHVzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk9yQ2xvc2UodGhpcy5zdGF0ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgZW1pdE9wZW5PckNsb3NlZEV2ZW50RWZmZWN0KCkge1xuICAgICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaERldGFjaEV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNzc0FuaW1hdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuRW1pdE9wZW5DbG9zZSA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLmNhbkVtaXRPbk9wZW5Pck9uQ2xvc2VkKCkpO1xuICAgICAgICAgICAgICAgIGlmICghY2FuRW1pdE9wZW5DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uT3Blbk9yT25DbG9zZWQodGhpcy5zdGF0ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgb25PcGVuQ2hhbmdlRWZmZWN0KCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKG9wZW4gPyBSZHhQb3BvdmVyU3RhdGUuT1BFTiA6IFJkeFBvcG92ZXJTdGF0ZS5DTE9TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBvbklzRmlyc3REZWZhdWx0T3BlbkNoYW5nZUVmZmVjdCgpIHtcbiAgICAgICAgY29uc3QgZWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcGVuID0gdGhpcy5kZWZhdWx0T3BlbigpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZmF1bHRPcGVuIHx8IHRoaXMub3BlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVmZmVjdFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIG9uQW5jaG9yQ2hhbmdlRWZmZWN0ID0gKCkgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3IoKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICAgICAgICAgICAgICBhbmNob3Iuc2V0UG9wb3ZlclJvb3QodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { assertInInjectionContext, inject, isDevMode } from '@angular/core';
2
- import { RdxPopoverRootToken } from './popover-root.token';
3
- export function injectPopoverRoot() {
2
+ import { RdxPopoverRootDirective } from './popover-root.directive';
3
+ export function injectPopoverRoot(optional = false) {
4
4
  isDevMode() && assertInInjectionContext(injectPopoverRoot);
5
- return inject(RdxPopoverRootToken);
5
+ return inject(RdxPopoverRootDirective, { optional });
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmluamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmluamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxNQUFNLFVBQVUsaUJBQWlCO0lBQzdCLFNBQVMsRUFBRSxJQUFJLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsT0FBTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUgfSBmcm9tICcuL3BvcG92ZXItcm9vdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4UG9wb3ZlclJvb3RUb2tlbiB9IGZyb20gJy4vcG9wb3Zlci1yb290LnRva2VuJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvcG92ZXJSb290KCk6IFJkeFBvcG92ZXJSb290RGlyZWN0aXZlIHtcbiAgICBpc0Rldk1vZGUoKSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoaW5qZWN0UG9wb3ZlclJvb3QpO1xuICAgIHJldHVybiBpbmplY3QoUmR4UG9wb3ZlclJvb3RUb2tlbik7XG59XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yb290LmluamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci1yb290LmluamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUluRSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBUSxHQUFHLEtBQUs7SUFDOUMsU0FBUyxFQUFFLElBQUksd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzRCxPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeFBvcG92ZXJSb290RGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLXJvb3QuZGlyZWN0aXZlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvcG92ZXJSb290KG9wdGlvbmFsPzogZmFsc2UpOiBSZHhQb3BvdmVyUm9vdERpcmVjdGl2ZTtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQb3BvdmVyUm9vdChvcHRpb25hbDogdHJ1ZSk6IFJkeFBvcG92ZXJSb290RGlyZWN0aXZlIHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQb3BvdmVyUm9vdChvcHRpb25hbCA9IGZhbHNlKTogUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUgfCBudWxsIHtcbiAgICBpc0Rldk1vZGUoKSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoaW5qZWN0UG9wb3ZlclJvb3QpO1xuICAgIHJldHVybiBpbmplY3QoUmR4UG9wb3ZlclJvb3REaXJlY3RpdmUsIHsgb3B0aW9uYWwgfSk7XG59XG4iXX0=
@@ -13,15 +13,13 @@ export class RdxPopoverTriggerDirective {
13
13
  this.overlayOrigin = inject(CdkOverlayOrigin);
14
14
  /** @ignore */
15
15
  this.name = computed(() => `rdx-popover-trigger-${this.popoverRoot.uniqueId()}`);
16
- /** @ignore */
17
- this.controlsId = computed(() => `rdx-popover-trigger-controls-${this.popoverRoot.uniqueId()}`);
18
16
  }
19
17
  /** @ignore */
20
- onClick() {
18
+ click() {
21
19
  this.popoverRoot.handleToggle();
22
20
  }
23
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: RdxPopoverTriggerDirective, isStandalone: true, selector: "[rdxPopoverTrigger]", host: { attributes: { "type": "button" }, listeners: { "click": "onClick()" }, properties: { "attr.id": "name()", "attr.aria-haspopup": "\"dialog\"", "attr.aria-expanded": "popoverRoot.isOpen()", "attr.aria-controls": "controlsId()", "attr.data-state": "popoverRoot.state()" } }, hostDirectives: [{ directive: i1.CdkOverlayOrigin }], ngImport: i0 }); }
22
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: RdxPopoverTriggerDirective, isStandalone: true, selector: "[rdxPopoverTrigger]", host: { attributes: { "type": "button" }, listeners: { "click": "click()" }, properties: { "attr.id": "name()", "attr.aria-haspopup": "\"dialog\"", "attr.aria-expanded": "popoverRoot.isOpen()", "attr.aria-controls": "popoverRoot.popoverContentDirective().name()", "attr.data-state": "popoverRoot.state()" } }, hostDirectives: [{ directive: i1.CdkOverlayOrigin }], ngImport: i0 }); }
25
23
  }
26
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverTriggerDirective, decorators: [{
27
25
  type: Directive,
@@ -34,10 +32,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
34
32
  '[attr.id]': 'name()',
35
33
  '[attr.aria-haspopup]': '"dialog"',
36
34
  '[attr.aria-expanded]': 'popoverRoot.isOpen()',
37
- '[attr.aria-controls]': 'controlsId()',
35
+ '[attr.aria-controls]': 'popoverRoot.popoverContentDirective().name()',
38
36
  '[attr.data-state]': 'popoverRoot.state()',
39
- '(click)': 'onClick()'
37
+ '(click)': 'click()'
40
38
  }
41
39
  }]
42
40
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFnQjFELE1BQU0sT0FBTywwQkFBMEI7SUFkdkM7UUFlSSxjQUFjO1FBQ0wsZ0JBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNDLGNBQWM7UUFDTCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLGNBQWM7UUFDTCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDTCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRixjQUFjO1FBQ0wsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FNdkc7SUFKRyxjQUFjO0lBQ2QsT0FBTztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQzsrR0FoQlEsMEJBQTBCO21HQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBZHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNsQyxJQUFJLEVBQUU7d0JBQ0YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLFFBQVE7d0JBQ3JCLHNCQUFzQixFQUFFLFVBQVU7d0JBQ2xDLHNCQUFzQixFQUFFLHNCQUFzQjt3QkFDOUMsc0JBQXNCLEVBQUUsY0FBYzt3QkFDdEMsbUJBQW1CLEVBQUUscUJBQXFCO3dCQUMxQyxTQUFTLEVBQUUsV0FBVztxQkFDekI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RQb3BvdmVyUm9vdCB9IGZyb20gJy4vcG9wb3Zlci1yb290LmluamVjdCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFBvcG92ZXJUcmlnZ2VyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0RGlyZWN0aXZlczogW0Nka092ZXJsYXlPcmlnaW5dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnbmFtZSgpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtaGFzcG9wdXBdJzogJ1wiZGlhbG9nXCInLFxuICAgICAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncG9wb3ZlclJvb3QuaXNPcGVuKCknLFxuICAgICAgICAnW2F0dHIuYXJpYS1jb250cm9sc10nOiAnY29udHJvbHNJZCgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3BvcG92ZXJSb290LnN0YXRlKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBwb3BvdmVyUm9vdCA9IGluamVjdFBvcG92ZXJSb290KCk7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgb3ZlcmxheU9yaWdpbiA9IGluamVjdChDZGtPdmVybGF5T3JpZ2luKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgbmFtZSA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci10cmlnZ2VyLSR7dGhpcy5wb3BvdmVyUm9vdC51bmlxdWVJZCgpfWApO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY29udHJvbHNJZCA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci10cmlnZ2VyLWNvbnRyb2xzLSR7dGhpcy5wb3BvdmVyUm9vdC51bmlxdWVJZCgpfWApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcG92ZXJSb290LmhhbmRsZVRvZ2dsZSgpO1xuICAgIH1cbn1cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFnQjFELE1BQU0sT0FBTywwQkFBMEI7SUFkdkM7UUFlSSxjQUFjO1FBQ0ssZ0JBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JELGNBQWM7UUFDTCxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUNsRSxjQUFjO1FBQ0wsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ0wsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FNeEY7SUFKRyxjQUFjO0lBQ2QsS0FBSztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQzsrR0FkUSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFkdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2xDLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsUUFBUTt3QkFDckIsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsc0JBQXNCLEVBQUUsc0JBQXNCO3dCQUM5QyxzQkFBc0IsRUFBRSw4Q0FBOEM7d0JBQ3RFLG1CQUFtQixFQUFFLHFCQUFxQjt3QkFDMUMsU0FBUyxFQUFFLFNBQVM7cUJBQ3ZCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0UG9wb3ZlclJvb3QgfSBmcm9tICcuL3BvcG92ZXItcm9vdC5pbmplY3QnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQb3BvdmVyVHJpZ2dlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtDZGtPdmVybGF5T3JpZ2luXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ25hbWUoKScsXG4gICAgICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImRpYWxvZ1wiJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ3BvcG92ZXJSb290LmlzT3BlbigpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY29udHJvbHNdJzogJ3BvcG92ZXJSb290LnBvcG92ZXJDb250ZW50RGlyZWN0aXZlKCkubmFtZSgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3BvcG92ZXJSb290LnN0YXRlKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdjbGljaygpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUge1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvcG92ZXJSb290ID0gaW5qZWN0UG9wb3ZlclJvb3QoKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgb3ZlcmxheU9yaWdpbiA9IGluamVjdChDZGtPdmVybGF5T3JpZ2luKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgbmFtZSA9IGNvbXB1dGVkKCgpID0+IGByZHgtcG9wb3Zlci10cmlnZ2VyLSR7dGhpcy5wb3BvdmVyUm9vdC51bmlxdWVJZCgpfWApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyUm9vdC5oYW5kbGVUb2dnbGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -11,4 +11,21 @@ export var RdxPopoverAlign;
11
11
  RdxPopoverAlign["Center"] = "center";
12
12
  RdxPopoverAlign["End"] = "end";
13
13
  })(RdxPopoverAlign || (RdxPopoverAlign = {}));
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLDZCQUFXLENBQUE7SUFDWCxpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuZXhwb3J0IGVudW0gUmR4UG9wb3ZlclNpZGUge1xuICAgIFRvcCA9ICd0b3AnLFxuICAgIFJpZ2h0ID0gJ3JpZ2h0JyxcbiAgICBCb3R0b20gPSAnYm90dG9tJyxcbiAgICBMZWZ0ID0gJ2xlZnQnXG59XG5cbmV4cG9ydCBlbnVtIFJkeFBvcG92ZXJBbGlnbiB7XG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIENlbnRlciA9ICdjZW50ZXInLFxuICAgIEVuZCA9ICdlbmQnXG59XG5cbmV4cG9ydCB0eXBlIFJkeFBvcG92ZXJTdGF0ZSA9ICdvcGVuJyB8ICdjbG9zZWQnO1xuXG5leHBvcnQgdHlwZSBSZHhTaWRlQW5kQWxpZ24gPSB7IHNpZGU6IFJkeFBvcG92ZXJTaWRlOyBhbGlnbjogUmR4UG9wb3ZlckFsaWduIH07XG5leHBvcnQgdHlwZSBSZHhTaWRlQW5kQWxpZ25PZmZzZXRzID0geyBzaWRlT2Zmc2V0OiBudW1iZXI7IGFsaWduT2Zmc2V0OiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgUmR4UG9wb3ZlclBvc2l0aW9ucyA9IHtcbiAgICBba2V5IGluIFJkeFBvcG92ZXJTaWRlXToge1xuICAgICAgICBba2V5IGluIFJkeFBvcG92ZXJBbGlnbl06IENvbm5lY3Rpb25Qb3NpdGlvblBhaXI7XG4gICAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJkeEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zID0gUmVhZG9ubHlNYXA8XG4gICAgYCR7UmR4UG9wb3ZlclNpZGV9fCR7UmR4UG9wb3ZlckFsaWdufWAsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpclxuPjtcblxuZXhwb3J0IHR5cGUgUmR4QXJyb3dQb3NpdGlvblBhcmFtcyA9IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICBib3R0b206IHN0cmluZztcbiAgICBsZWZ0OiBzdHJpbmc7XG4gICAgcmlnaHQ6IHN0cmluZztcbiAgICB0cmFuc2Zvcm06IHN0cmluZztcbn07XG4iXX0=
14
+ export var RdxPopoverState;
15
+ (function (RdxPopoverState) {
16
+ RdxPopoverState["OPEN"] = "open";
17
+ RdxPopoverState["CLOSED"] = "closed";
18
+ })(RdxPopoverState || (RdxPopoverState = {}));
19
+ export var RdxPopoverAttachDetachEvent;
20
+ (function (RdxPopoverAttachDetachEvent) {
21
+ RdxPopoverAttachDetachEvent["ATTACH"] = "attach";
22
+ RdxPopoverAttachDetachEvent["DETACH"] = "detach";
23
+ })(RdxPopoverAttachDetachEvent || (RdxPopoverAttachDetachEvent = {}));
24
+ export var RdxPopoverAnimationStatus;
25
+ (function (RdxPopoverAnimationStatus) {
26
+ RdxPopoverAnimationStatus["OPEN_STARTED"] = "open_started";
27
+ RdxPopoverAnimationStatus["OPEN_ENDED"] = "open_ended";
28
+ RdxPopoverAnimationStatus["CLOSED_STARTED"] = "closed_started";
29
+ RdxPopoverAnimationStatus["CLOSED_ENDED"] = "closed_ended";
30
+ })(RdxPopoverAnimationStatus || (RdxPopoverAnimationStatus = {}));
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLDZCQUFXLENBQUE7SUFDWCxpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN2QixnQ0FBYSxDQUFBO0lBQ2Isb0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCO0FBRUQsTUFBTSxDQUFOLElBQVksMkJBR1g7QUFIRCxXQUFZLDJCQUEyQjtJQUNuQyxnREFBaUIsQ0FBQTtJQUNqQixnREFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUd0QztBQUVELE1BQU0sQ0FBTixJQUFZLHlCQUtYO0FBTEQsV0FBWSx5QkFBeUI7SUFDakMsMERBQTZCLENBQUE7SUFDN0Isc0RBQXlCLENBQUE7SUFDekIsOERBQWlDLENBQUE7SUFDakMsMERBQTZCLENBQUE7QUFDakMsQ0FBQyxFQUxXLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFLcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5leHBvcnQgZW51bSBSZHhQb3BvdmVyU2lkZSB7XG4gICAgVG9wID0gJ3RvcCcsXG4gICAgUmlnaHQgPSAncmlnaHQnLFxuICAgIEJvdHRvbSA9ICdib3R0b20nLFxuICAgIExlZnQgPSAnbGVmdCdcbn1cblxuZXhwb3J0IGVudW0gUmR4UG9wb3ZlckFsaWduIHtcbiAgICBTdGFydCA9ICdzdGFydCcsXG4gICAgQ2VudGVyID0gJ2NlbnRlcicsXG4gICAgRW5kID0gJ2VuZCdcbn1cblxuZXhwb3J0IGVudW0gUmR4UG9wb3ZlclN0YXRlIHtcbiAgICBPUEVOID0gJ29wZW4nLFxuICAgIENMT1NFRCA9ICdjbG9zZWQnXG59XG5cbmV4cG9ydCBlbnVtIFJkeFBvcG92ZXJBdHRhY2hEZXRhY2hFdmVudCB7XG4gICAgQVRUQUNIID0gJ2F0dGFjaCcsXG4gICAgREVUQUNIID0gJ2RldGFjaCdcbn1cblxuZXhwb3J0IGVudW0gUmR4UG9wb3ZlckFuaW1hdGlvblN0YXR1cyB7XG4gICAgT1BFTl9TVEFSVEVEID0gJ29wZW5fc3RhcnRlZCcsXG4gICAgT1BFTl9FTkRFRCA9ICdvcGVuX2VuZGVkJyxcbiAgICBDTE9TRURfU1RBUlRFRCA9ICdjbG9zZWRfc3RhcnRlZCcsXG4gICAgQ0xPU0VEX0VOREVEID0gJ2Nsb3NlZF9lbmRlZCdcbn1cblxuZXhwb3J0IHR5cGUgUmR4U2lkZUFuZEFsaWduID0geyBzaWRlOiBSZHhQb3BvdmVyU2lkZTsgYWxpZ246IFJkeFBvcG92ZXJBbGlnbiB9O1xuZXhwb3J0IHR5cGUgUmR4U2lkZUFuZEFsaWduT2Zmc2V0cyA9IHsgc2lkZU9mZnNldDogbnVtYmVyOyBhbGlnbk9mZnNldDogbnVtYmVyIH07XG5cbmV4cG9ydCB0eXBlIFJkeFBvcG92ZXJQb3NpdGlvbnMgPSB7XG4gICAgW2tleSBpbiBSZHhQb3BvdmVyU2lkZV06IHtcbiAgICAgICAgW2tleSBpbiBSZHhQb3BvdmVyQWxpZ25dOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyO1xuICAgIH07XG59O1xuXG5leHBvcnQgdHlwZSBSZHhBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyA9IFJlYWRvbmx5TWFwPFxuICAgIGAke1JkeFBvcG92ZXJTaWRlfXwke1JkeFBvcG92ZXJBbGlnbn1gLFxuICAgIENvbm5lY3Rpb25Qb3NpdGlvblBhaXJcbj47XG5cbmV4cG9ydCB0eXBlIFJkeEFycm93UG9zaXRpb25QYXJhbXMgPSB7XG4gICAgdG9wOiBzdHJpbmc7XG4gICAgbGVmdDogc3RyaW5nO1xuICAgIHRyYW5zZm9ybTogc3RyaW5nO1xufTtcbiJdfQ==