@ngrdt/button 0.0.17 → 0.0.19

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.
package/index.d.ts CHANGED
@@ -1,5 +1,120 @@
1
- export * from './lib/button/rdt-button-base';
2
- export * from './lib/button/rdt-button-constants';
3
- export * from './lib/button/rdt-button-int';
4
- export * from './lib/button/rdt-button-notification.service';
5
- export * from './lib/button-outlet/rdt-button-outlet.directive';
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal, ElementRef, Renderer2, EventEmitter, InjectionToken, Type, OnChanges } from '@angular/core';
3
+ import { Params, Router } from '@angular/router';
4
+ import { RdtInteractiveElementComponent, RdtLinkedState, RdtBooleanResult } from '@ngrdt/core';
5
+ import { Nullable, WindowOpenTargetType, AriaAttributes } from '@ngrdt/utils';
6
+ import { Observable } from 'rxjs';
7
+
8
+ interface RdtButtonBaseInputsInt<TIcon = string> {
9
+ label: Nullable<string>;
10
+ propagate: boolean;
11
+ tabIndex: Nullable<number>;
12
+ href: Nullable<string>;
13
+ ngHref: Nullable<string>;
14
+ target: WindowOpenTargetType;
15
+ stateParams: Nullable<Params>;
16
+ queryParams: Nullable<Params>;
17
+ download: Nullable<string>;
18
+ icon: Nullable<TIcon>;
19
+ dataTestId: string;
20
+ onlineEnabled$: Nullable<Observable<boolean>>;
21
+ aria: Partial<AriaAttributes>;
22
+ }
23
+ interface RdtButtonBaseInt<TIcon = string> extends RdtInteractiveElementComponent, RdtLinkedState<RdtButtonBaseInputsInt<TIcon>> {
24
+ readonly click$: Observable<MouseEvent>;
25
+ readonly anchorElement: Signal<HTMLElement | null>;
26
+ readonly focusElement: Signal<HTMLElement | null>;
27
+ readonly ariaElement: Signal<HTMLElement | null>;
28
+ focus(): void;
29
+ }
30
+
31
+ interface RdtButtonNotificationServiceInt {
32
+ error(message: string): void;
33
+ accessDenied(): void;
34
+ }
35
+
36
+ declare abstract class RdtButtonBase<TIcon = string> extends RdtInteractiveElementComponent implements RdtButtonBaseInt<TIcon> {
37
+ protected readonly elRef: ElementRef<any>;
38
+ protected readonly router: Router;
39
+ protected readonly baseHref: string;
40
+ protected readonly renderer: Renderer2;
41
+ protected readonly notificationService?: RdtButtonNotificationServiceInt;
42
+ protected internalDisabledMap: Record<symbol, boolean>;
43
+ protected internalLoadingMap: Record<symbol, boolean>;
44
+ abstract readonly focusElement: Signal<HTMLElement | null>;
45
+ abstract readonly ariaElement: Signal<HTMLElement | null>;
46
+ abstract readonly anchorElement: Signal<HTMLElement | null>;
47
+ readonly propagateInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
48
+ readonly propagate: _angular_core.WritableSignal<boolean>;
49
+ readonly tabIndexInput: _angular_core.InputSignalWithTransform<number | null, unknown>;
50
+ readonly tabIndex: _angular_core.WritableSignal<number | null>;
51
+ readonly hrefInput: _angular_core.InputSignal<Nullable<string>>;
52
+ readonly href: _angular_core.WritableSignal<Nullable<string>>;
53
+ readonly ngHrefInput: _angular_core.InputSignal<Nullable<string>>;
54
+ readonly ngHref: _angular_core.WritableSignal<Nullable<string>>;
55
+ readonly targetInput: _angular_core.InputSignal<WindowOpenTargetType>;
56
+ readonly target: _angular_core.WritableSignal<WindowOpenTargetType>;
57
+ readonly stateParamsInput: _angular_core.InputSignal<Nullable<Params>>;
58
+ readonly stateParams: _angular_core.WritableSignal<Nullable<Params>>;
59
+ readonly queryParamsInput: _angular_core.InputSignal<Nullable<Params>>;
60
+ readonly queryParams: _angular_core.WritableSignal<Nullable<Params>>;
61
+ readonly downloadInput: _angular_core.InputSignal<Nullable<string>>;
62
+ readonly download: _angular_core.WritableSignal<Nullable<string>>;
63
+ readonly iconInput: _angular_core.InputSignal<Nullable<TIcon>>;
64
+ readonly icon: _angular_core.WritableSignal<Nullable<TIcon>>;
65
+ readonly labelInput: _angular_core.InputSignal<Nullable<string>>;
66
+ readonly label: _angular_core.WritableSignal<Nullable<string>>;
67
+ readonly dataTestIdInput: _angular_core.InputSignal<undefined>;
68
+ readonly dataTestId: _angular_core.WritableSignal<string>;
69
+ readonly onlineEnabledInput$: _angular_core.InputSignal<Nullable<Observable<boolean>>>;
70
+ readonly onlineEnabled$: _angular_core.WritableSignal<Nullable<Observable<boolean>>>;
71
+ readonly ariaInput: _angular_core.InputSignal<Partial<AriaAttributes>>;
72
+ readonly aria: _angular_core.WritableSignal<Partial<AriaAttributes>>;
73
+ readonly hrefWithParams: Signal<Nullable<string>>;
74
+ protected readonly ariaRenderEffect: _angular_core.AfterRenderRef;
75
+ readonly click$: EventEmitter<MouseEvent>;
76
+ focus(): void;
77
+ canFocus(): RdtBooleanResult;
78
+ protected onClicked($event: MouseEvent): void;
79
+ private emitAndStopProp;
80
+ private onClickPermissionAllowed;
81
+ private navigateOrEmit;
82
+ private notifyAccessDenied;
83
+ private finishOnlineCheck;
84
+ private updateAriaAttributes;
85
+ protected static readonly ONLINE_ENABLED_KEY: unique symbol;
86
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtButtonBase<any>, never>;
87
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdtButtonBase<any>, never, never, { "propagateInput": { "alias": "propagate"; "required": false; "isSignal": true; }; "tabIndexInput": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "hrefInput": { "alias": "href"; "required": false; "isSignal": true; }; "ngHrefInput": { "alias": "ngHref"; "required": false; "isSignal": true; }; "targetInput": { "alias": "target"; "required": false; "isSignal": true; }; "stateParamsInput": { "alias": "stateParams"; "required": false; "isSignal": true; }; "queryParamsInput": { "alias": "queryParams"; "required": false; "isSignal": true; }; "downloadInput": { "alias": "download"; "required": false; "isSignal": true; }; "iconInput": { "alias": "icon"; "required": false; "isSignal": true; }; "labelInput": { "alias": "label"; "required": false; "isSignal": true; }; "dataTestIdInput": { "alias": "dataTestId"; "required": false; "isSignal": true; }; "onlineEnabledInput$": { "alias": "onlineEnabled"; "required": false; "isSignal": true; }; "ariaInput": { "alias": "aria"; "required": false; "isSignal": true; }; }, { "click$": "click$"; }, never, never, true, never>;
88
+ }
89
+
90
+ declare const RDT_BUTTON_SETTER_KEY: unique symbol;
91
+ declare const RDT_BUTTON_DEFAULT_PROPAGATE = false;
92
+ declare const RDT_BUTTON_DEFAULT_TARGET = "_self";
93
+ declare const RDT_BUTTON_DEFAULT_TAB_INDEX: null;
94
+ declare const RDT_BUTTON_BASE_PROVIDER: InjectionToken<Type<RdtButtonBaseInt<string>>>;
95
+
96
+ declare class RdtButtonOutletDirective<TButton extends RdtButtonBaseInt, TButtonInputs extends RdtButtonBaseInputsInt = RdtButtonBaseInputsInt> implements OnChanges {
97
+ readonly buttonClass: _angular_core.Type<RdtButtonBaseInt<string>>;
98
+ private readonly _viewContainerRef;
99
+ inputs: Partial<TButtonInputs>;
100
+ click$: EventEmitter<MouseEvent>;
101
+ get instance(): TButton | undefined;
102
+ private _componentRef?;
103
+ /**
104
+ * A helper data structure that allows us to track inputs that were part of the
105
+ * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones
106
+ * that are no longer referenced.
107
+ */
108
+ private _inputsUsed;
109
+ constructor();
110
+ /** @nodoc */
111
+ ngOnChanges(): void;
112
+ private onInputsChanged;
113
+ /** @nodoc */
114
+ private _applyInputStateDiff;
115
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdtButtonOutletDirective<any, any>, never>;
116
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdtButtonOutletDirective<any, any>, "[rdtButtonOutlet]", ["rdtButtonOutlet"], { "inputs": { "alias": "inputs"; "required": false; }; }, { "click$": "click$"; }, never, never, true, never>;
117
+ }
118
+
119
+ export { RDT_BUTTON_BASE_PROVIDER, RDT_BUTTON_DEFAULT_PROPAGATE, RDT_BUTTON_DEFAULT_TAB_INDEX, RDT_BUTTON_DEFAULT_TARGET, RDT_BUTTON_SETTER_KEY, RdtButtonBase, RdtButtonOutletDirective };
120
+ export type { RdtButtonBaseInputsInt, RdtButtonBaseInt, RdtButtonNotificationServiceInt };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@ngrdt/button",
3
- "version": "v0.0.17",
3
+ "version": "v0.0.19",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.2.0",
6
6
  "@angular/core": ">=18.2.0",
7
7
  "@angular/router": ">=18.2.0",
8
8
  "rxjs": ">=7.0.0",
9
- "@ngrdt/utils": ">=0.0.8"
9
+ "@ngrdt/utils": ">=0.0.18",
10
+ "@ngrdt/core": ">=0.0.18"
10
11
  },
11
12
  "sideEffects": false,
12
13
  "module": "fesm2022/ngrdt-button.mjs",
@@ -17,8 +18,6 @@
17
18
  },
18
19
  ".": {
19
20
  "types": "./index.d.ts",
20
- "esm2022": "./esm2022/ngrdt-button.mjs",
21
- "esm": "./esm2022/ngrdt-button.mjs",
22
21
  "default": "./fesm2022/ngrdt-button.mjs"
23
22
  }
24
23
  },
package/esm2022/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- export * from './lib/button/rdt-button-base';
2
- export * from './lib/button/rdt-button-constants';
3
- export * from './lib/button/rdt-button-int';
4
- export * from './lib/button/rdt-button-notification.service';
5
- export * from './lib/button-outlet/rdt-button-outlet.directive';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9AbmdyZHQvYnV0dG9uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELGNBQWMsaURBQWlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vcmR0LWJ1dHRvbi1iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL3JkdC1idXR0b24tY29uc3RhbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL3JkdC1idXR0b24taW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL3JkdC1idXR0b24tbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLW91dGxldC9yZHQtYnV0dG9uLW91dGxldC5kaXJlY3RpdmUnO1xyXG4iXX0=
@@ -1,307 +0,0 @@
1
- import { booleanAttribute, ChangeDetectorRef, Directive, ElementRef, EventEmitter, inject, Input, numberAttribute, Output, Renderer2, } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { RdtStringUtils, } from '@ngrdt/utils';
4
- import { take } from 'rxjs';
5
- import { RDT_BUTTON_DEFAULT_TAB_INDEX, RDT_BUTTON_DEFAULT_TARGET, RDT_BUTTON_SETTER_KEY, } from './rdt-button-constants';
6
- import { PlatformLocation } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- export class RdtButtonBase {
9
- elRef = inject(ElementRef);
10
- cd = inject(ChangeDetectorRef);
11
- router = inject(Router);
12
- baseHref = inject(PlatformLocation).getBaseHrefFromDOM();
13
- renderer = inject(Renderer2);
14
- notificationService;
15
- internalDisabledMap = {};
16
- internalLoadingMap = {};
17
- hrefWithParams;
18
- get focusElement() {
19
- return this.elRef?.nativeElement ?? null;
20
- }
21
- get ariaElement() {
22
- return this.elRef?.nativeElement ?? null;
23
- }
24
- get anchorElement() {
25
- return this.elRef?.nativeElement ?? null;
26
- }
27
- set disabled(value) {
28
- this.setDisabled(RDT_BUTTON_SETTER_KEY, value);
29
- }
30
- get disabled() {
31
- return this._disabled;
32
- }
33
- _disabled = false;
34
- set loading(value) {
35
- this.setLoading(RDT_BUTTON_SETTER_KEY, value);
36
- }
37
- get loading() {
38
- return this._loading;
39
- }
40
- _loading = false;
41
- propagate = false;
42
- set tabIndex(value) {
43
- this._tabIndex = value;
44
- this.updateTabIndexValue();
45
- }
46
- get tabIndex() {
47
- return this._tabIndex;
48
- }
49
- _tabIndex = RDT_BUTTON_DEFAULT_TAB_INDEX;
50
- set href(value) {
51
- this._href = value;
52
- this.updateHrefWithQueryParams();
53
- }
54
- get href() {
55
- return this._href;
56
- }
57
- _href;
58
- set ngHref(value) {
59
- this._ngHref = value;
60
- this.cd.markForCheck();
61
- }
62
- get ngHref() {
63
- return this._ngHref;
64
- }
65
- _ngHref;
66
- set target(value) {
67
- this._target = value;
68
- this.cd.markForCheck();
69
- }
70
- get target() {
71
- return this._target;
72
- }
73
- _target = RDT_BUTTON_DEFAULT_TARGET;
74
- set stateParams(value) {
75
- this._stateParams = value;
76
- this.cd.markForCheck();
77
- }
78
- get stateParams() {
79
- return this._stateParams;
80
- }
81
- _stateParams;
82
- set queryParams(value) {
83
- this._queryParams = value;
84
- this.updateHrefWithQueryParams();
85
- }
86
- get queryParams() {
87
- return this._queryParams;
88
- }
89
- _queryParams;
90
- set download(value) {
91
- this._download = value;
92
- this.cd.markForCheck();
93
- }
94
- get download() {
95
- return this._download ?? undefined;
96
- }
97
- _download;
98
- set icon(value) {
99
- this._icon = value;
100
- this.cd.markForCheck();
101
- }
102
- get icon() {
103
- return this._icon;
104
- }
105
- _icon;
106
- set label(value) {
107
- this._label = value;
108
- this.cd.markForCheck();
109
- }
110
- get label() {
111
- return this._label;
112
- }
113
- _label;
114
- set dataTestId(value) {
115
- this._dataTestId = value;
116
- this.cd.markForCheck();
117
- }
118
- get dataTestId() {
119
- return this._dataTestId;
120
- }
121
- _dataTestId = '';
122
- set onlineEnabled$(value) {
123
- this._onlineEnabled$ = value;
124
- this.cd.markForCheck();
125
- }
126
- get onlineEnabled$() {
127
- return this._onlineEnabled$;
128
- }
129
- _onlineEnabled$;
130
- set aria(value) {
131
- this._aria = value;
132
- this.updateAriaAttributes();
133
- }
134
- get aria() {
135
- return this._aria;
136
- }
137
- _aria = {};
138
- click$ = new EventEmitter();
139
- ngAfterViewInit() {
140
- this.updateAriaAttributes();
141
- }
142
- setDisabled(key, disabled) {
143
- this.internalDisabledMap[key] = disabled;
144
- this.updateDisabledValue();
145
- }
146
- setLoading(key, disabled) {
147
- this.internalLoadingMap[key] = disabled;
148
- this.updateLoadingValue();
149
- }
150
- focus() {
151
- this.focusElement?.focus();
152
- }
153
- onClicked($event) {
154
- if (this._onlineEnabled$) {
155
- if (this._disabled) {
156
- return;
157
- }
158
- $event.stopPropagation();
159
- this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, true);
160
- this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, true);
161
- const observer = {
162
- next: () => {
163
- this.onClickPermissionAllowed($event);
164
- this.finishOnlineCheck();
165
- },
166
- error: (error) => {
167
- this.notifyAccessDenied(error);
168
- this.finishOnlineCheck();
169
- },
170
- complete: () => this.finishOnlineCheck(),
171
- };
172
- this._onlineEnabled$.pipe(take(1)).subscribe(observer);
173
- }
174
- else {
175
- this.emitAndStopProp($event);
176
- }
177
- }
178
- emitAndStopProp($event) {
179
- // stopPropagation prevents routerLinks from working
180
- if (!this.propagate && !this._ngHref && !this._href) {
181
- $event.stopPropagation();
182
- }
183
- if (!this._disabled && !this._ngHref && !this._href) {
184
- this.click$.emit($event);
185
- }
186
- }
187
- onClickPermissionAllowed($event) {
188
- if (!this.propagate) {
189
- $event.stopPropagation();
190
- }
191
- if (!this._disabled) {
192
- this.navigateOrEmit($event);
193
- }
194
- }
195
- navigateOrEmit(event) {
196
- if (this._ngHref) {
197
- if (this._target !== '_self') {
198
- const absolutePath = RdtStringUtils.createAbsoluteUrl(this._ngHref, this.baseHref);
199
- const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, this.queryParams);
200
- window.open(pathWithParams, this._target);
201
- }
202
- else {
203
- this.router.navigate([this._ngHref], {
204
- queryParams: this._queryParams,
205
- state: this._stateParams ?? undefined,
206
- });
207
- }
208
- }
209
- else if (this._href) {
210
- const pathWithParams = RdtStringUtils.appendQueryParams(this._href, this.queryParams);
211
- window.open(pathWithParams, this._target);
212
- }
213
- else {
214
- this.click$.emit(event);
215
- }
216
- }
217
- notifyAccessDenied(error) {
218
- if (this.notificationService) {
219
- if (typeof error === 'string') {
220
- this.notificationService.error(error);
221
- }
222
- else {
223
- this.notificationService.accessDenied();
224
- }
225
- }
226
- }
227
- finishOnlineCheck() {
228
- this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, false);
229
- this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, false);
230
- }
231
- updateDisabledValue() {
232
- this._disabled = Object.values(this.internalDisabledMap).some((value) => value);
233
- this.cd.markForCheck();
234
- }
235
- updateLoadingValue() {
236
- this._loading = Object.values(this.internalLoadingMap).some((value) => value);
237
- this.cd.markForCheck();
238
- }
239
- updateHrefWithQueryParams() {
240
- if (this._href && this._queryParams) {
241
- this.hrefWithParams = RdtStringUtils.appendQueryParams(this._href, this._queryParams);
242
- }
243
- else {
244
- this.hrefWithParams = this._href;
245
- }
246
- this.cd.markForCheck();
247
- }
248
- updateTabIndexValue() {
249
- this.cd.markForCheck();
250
- }
251
- updateAriaAttributes() {
252
- const el = this.ariaElement;
253
- if (this.ariaElement) {
254
- Object.entries(this._aria).forEach(([key, value]) => {
255
- if (value === null || value === undefined) {
256
- this.renderer.removeAttribute(el, key);
257
- }
258
- else {
259
- this.renderer.setAttribute(el, key, String(value));
260
- }
261
- });
262
- }
263
- }
264
- static ONLINE_ENABLED_KEY = Symbol();
265
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
266
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.7", type: RdtButtonBase, inputs: { disabled: ["disabled", "disabled", booleanAttribute], loading: ["loading", "loading", booleanAttribute], propagate: ["propagate", "propagate", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute], href: "href", ngHref: "ngHref", target: "target", stateParams: "stateParams", queryParams: "queryParams", download: "download", icon: "icon", label: "label", dataTestId: "dataTestId", onlineEnabled$: "onlineEnabled$", aria: "aria" }, outputs: { click$: "click$" }, ngImport: i0 });
267
- }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonBase, decorators: [{
269
- type: Directive
270
- }], propDecorators: { disabled: [{
271
- type: Input,
272
- args: [{ transform: booleanAttribute }]
273
- }], loading: [{
274
- type: Input,
275
- args: [{ transform: booleanAttribute }]
276
- }], propagate: [{
277
- type: Input,
278
- args: [{ transform: booleanAttribute }]
279
- }], tabIndex: [{
280
- type: Input,
281
- args: [{ transform: numberAttribute }]
282
- }], href: [{
283
- type: Input
284
- }], ngHref: [{
285
- type: Input
286
- }], target: [{
287
- type: Input
288
- }], stateParams: [{
289
- type: Input
290
- }], queryParams: [{
291
- type: Input
292
- }], download: [{
293
- type: Input
294
- }], icon: [{
295
- type: Input
296
- }], label: [{
297
- type: Input
298
- }], dataTestId: [{
299
- type: Input
300
- }], onlineEnabled$: [{
301
- type: Input
302
- }], aria: [{
303
- type: Input
304
- }], click$: [{
305
- type: Output
306
- }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbGliL2J1dHRvbi9yZHQtYnV0dG9uLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUdMLGNBQWMsR0FFZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUduRCxNQUFNLE9BQWdCLGFBQWE7SUFHZCxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLEVBQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3pELFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0IsbUJBQW1CLENBQW1DO0lBRS9ELG1CQUFtQixHQUE0QixFQUFFLENBQUM7SUFDbEQsa0JBQWtCLEdBQTRCLEVBQUUsQ0FBQztJQUNqRCxjQUFjLENBQW1CO0lBRTNDLElBQUksWUFBWTtRQUNk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QUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBVXRDLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFXakMsSUFBSTtzQkFEUCxLQUFLO2dCQVdGLE1BQU07c0JBRFQsS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsV0FBVztzQkFEZCxLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBV0YsSUFBSTtzQkFEUCxLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSztnQkFXRixVQUFVO3NCQURiLEtBQUs7Z0JBV0YsY0FBYztzQkFEakIsS0FBSztnQkFXRixJQUFJO3NCQURQLEtBQUs7Z0JBV0csTUFBTTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBudW1iZXJBdHRyaWJ1dGUsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0QnV0dG9uQmFzZUludCB9IGZyb20gJy4vcmR0LWJ1dHRvbi1pbnQnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgTnVsbGFibGUsXHJcbiAgV2luZG93T3BlblRhcmdldFR5cGUsXHJcbiAgUmR0U3RyaW5nVXRpbHMsXHJcbiAgQXJpYUF0dHJpYnV0ZXMsXHJcbn0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIFJEVF9CVVRUT05fREVGQVVMVF9UQUJfSU5ERVgsXHJcbiAgUkRUX0JVVFRPTl9ERUZBVUxUX1RBUkdFVCxcclxuICBSRFRfQlVUVE9OX1NFVFRFUl9LRVksXHJcbn0gZnJvbSAnLi9yZHQtYnV0dG9uLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJkdEJ1dHRvbk5vdGlmaWNhdGlvblNlcnZpY2VJbnQgfSBmcm9tICcuL3JkdC1idXR0b24tbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0QnV0dG9uQmFzZTxUSWNvbiA9IHN0cmluZz5cclxuICBpbXBsZW1lbnRzIFJkdEJ1dHRvbkJhc2VJbnQ8VEljb24+LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhc2VIcmVmID0gaW5qZWN0KFBsYXRmb3JtTG9jYXRpb24pLmdldEJhc2VIcmVmRnJvbURPTSgpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZT86IFJkdEJ1dHRvbk5vdGlmaWNhdGlvblNlcnZpY2VJbnQ7XHJcblxyXG4gIHByb3RlY3RlZCBpbnRlcm5hbERpc2FibGVkTWFwOiBSZWNvcmQ8c3ltYm9sLCBib29sZWFuPiA9IHt9O1xyXG4gIHByb3RlY3RlZCBpbnRlcm5hbExvYWRpbmdNYXA6IFJlY29yZDxzeW1ib2wsIGJvb2xlYW4+ID0ge307XHJcbiAgcHJvdGVjdGVkIGhyZWZXaXRoUGFyYW1zOiBOdWxsYWJsZTxzdHJpbmc+O1xyXG5cclxuICBnZXQgZm9jdXNFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudCA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFyaWFFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudCA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFuY2hvckVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmVsUmVmPy5uYXRpdmVFbGVtZW50ID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0RGlzYWJsZWQoUkRUX0JVVFRPTl9TRVRURVJfS0VZLCB2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0TG9hZGluZyhSRFRfQlVUVE9OX1NFVFRFUl9LRVksIHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICB9XHJcbiAgcHJpdmF0ZSBfbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcclxuICBwcm9wYWdhdGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcclxuICBzZXQgdGFiSW5kZXgodmFsdWU6IE51bGxhYmxlPG51bWJlcj4pIHtcclxuICAgIHRoaXMuX3RhYkluZGV4ID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4VmFsdWUoKTtcclxuICB9XHJcbiAgZ2V0IHRhYkluZGV4KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYkluZGV4O1xyXG4gIH1cclxuICBwcml2YXRlIF90YWJJbmRleDogTnVsbGFibGU8bnVtYmVyPiA9IFJEVF9CVVRUT05fREVGQVVMVF9UQUJfSU5ERVg7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGhyZWYodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcclxuICAgIHRoaXMuX2hyZWYgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlSHJlZldpdGhRdWVyeVBhcmFtcygpO1xyXG4gIH1cclxuICBnZXQgaHJlZigpIHtcclxuICAgIHJldHVybiB0aGlzLl9ocmVmO1xyXG4gIH1cclxuICBwcml2YXRlIF9ocmVmOiBOdWxsYWJsZTxzdHJpbmc+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBuZ0hyZWYodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcclxuICAgIHRoaXMuX25nSHJlZiA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgZ2V0IG5nSHJlZigpIHtcclxuICAgIHJldHVybiB0aGlzLl9uZ0hyZWY7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25nSHJlZjogTnVsbGFibGU8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGFyZ2V0KHZhbHVlOiBXaW5kb3dPcGVuVGFyZ2V0VHlwZSkge1xyXG4gICAgdGhpcy5fdGFyZ2V0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBnZXQgdGFyZ2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdGFyZ2V0OiBXaW5kb3dPcGVuVGFyZ2V0VHlwZSA9IFJEVF9CVVRUT05fREVGQVVMVF9UQVJHRVQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0YXRlUGFyYW1zKHZhbHVlOiBOdWxsYWJsZTxQYXJhbXM+KSB7XHJcbiAgICB0aGlzLl9zdGF0ZVBhcmFtcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgZ2V0IHN0YXRlUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlUGFyYW1zO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdGF0ZVBhcmFtczogTnVsbGFibGU8UGFyYW1zPjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcXVlcnlQYXJhbXModmFsdWU6IE51bGxhYmxlPFBhcmFtcz4pIHtcclxuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUhyZWZXaXRoUXVlcnlQYXJhbXMoKTtcclxuICB9XHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuICBwcml2YXRlIF9xdWVyeVBhcmFtczogTnVsbGFibGU8UGFyYW1zPjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZG93bmxvYWQodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcclxuICAgIHRoaXMuX2Rvd25sb2FkID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBnZXQgZG93bmxvYWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZG93bmxvYWQgPz8gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBwcml2YXRlIF9kb3dubG9hZDogTnVsbGFibGU8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaWNvbih2YWx1ZTogTnVsbGFibGU8VEljb24+KSB7XHJcbiAgICB0aGlzLl9pY29uID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBnZXQgaWNvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9pY29uO1xyXG4gIH1cclxuICBwcml2YXRlIF9pY29uOiBOdWxsYWJsZTxUSWNvbj47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxhYmVsKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLl9sYWJlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgZ2V0IGxhYmVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xyXG4gIH1cclxuICBwcml2YXRlIF9sYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0YVRlc3RJZCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kYXRhVGVzdElkID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBnZXQgZGF0YVRlc3RJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhVGVzdElkO1xyXG4gIH1cclxuICBwcml2YXRlIF9kYXRhVGVzdElkID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG9ubGluZUVuYWJsZWQkKHZhbHVlOiBOdWxsYWJsZTxPYnNlcnZhYmxlPGJvb2xlYW4+Pikge1xyXG4gICAgdGhpcy5fb25saW5lRW5hYmxlZCQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIGdldCBvbmxpbmVFbmFibGVkJCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9vbmxpbmVFbmFibGVkJDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb25saW5lRW5hYmxlZCQ6IE51bGxhYmxlPE9ic2VydmFibGU8Ym9vbGVhbj4+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhcmlhKHZhbHVlOiBQYXJ0aWFsPEFyaWFBdHRyaWJ1dGVzPikge1xyXG4gICAgdGhpcy5fYXJpYSA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVBcmlhQXR0cmlidXRlcygpO1xyXG4gIH1cclxuICBnZXQgYXJpYSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmlhO1xyXG4gIH1cclxuICBwcml2YXRlIF9hcmlhOiBQYXJ0aWFsPEFyaWFBdHRyaWJ1dGVzPiA9IHt9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICByZWFkb25seSBjbGljayQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQXJpYUF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkKGtleTogc3ltYm9sLCBkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pbnRlcm5hbERpc2FibGVkTWFwW2tleV0gPSBkaXNhYmxlZDtcclxuICAgIHRoaXMudXBkYXRlRGlzYWJsZWRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhrZXk6IHN5bWJvbCwgZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW50ZXJuYWxMb2FkaW5nTWFwW2tleV0gPSBkaXNhYmxlZDtcclxuICAgIHRoaXMudXBkYXRlTG9hZGluZ1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXNFbGVtZW50Py5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLl9vbmxpbmVFbmFibGVkJCkge1xyXG4gICAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5zZXREaXNhYmxlZChSZHRCdXR0b25CYXNlLk9OTElORV9FTkFCTEVEX0tFWSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2V0TG9hZGluZyhSZHRCdXR0b25CYXNlLk9OTElORV9FTkFCTEVEX0tFWSwgdHJ1ZSk7XHJcbiAgICAgIGNvbnN0IG9ic2VydmVyID0ge1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25DbGlja1Blcm1pc3Npb25BbGxvd2VkKCRldmVudCk7XHJcbiAgICAgICAgICB0aGlzLmZpbmlzaE9ubGluZUNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZ5QWNjZXNzRGVuaWVkKGVycm9yKTtcclxuICAgICAgICAgIHRoaXMuZmluaXNoT25saW5lQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLmZpbmlzaE9ubGluZUNoZWNrKCksXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuX29ubGluZUVuYWJsZWQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW1pdEFuZFN0b3BQcm9wKCRldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRBbmRTdG9wUHJvcCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIC8vIHN0b3BQcm9wYWdhdGlvbiBwcmV2ZW50cyByb3V0ZXJMaW5rcyBmcm9tIHdvcmtpbmdcclxuICAgIGlmICghdGhpcy5wcm9wYWdhdGUgJiYgIXRoaXMuX25nSHJlZiAmJiAhdGhpcy5faHJlZikge1xyXG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2Rpc2FibGVkICYmICF0aGlzLl9uZ0hyZWYgJiYgIXRoaXMuX2hyZWYpIHtcclxuICAgICAgdGhpcy5jbGljayQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNsaWNrUGVybWlzc2lvbkFsbG93ZWQoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMucHJvcGFnYXRlKSB7XHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0ZU9yRW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZU9yRW1pdChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuX25nSHJlZikge1xyXG4gICAgICBpZiAodGhpcy5fdGFyZ2V0ICE9PSAnX3NlbGYnKSB7XHJcbiAgICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gUmR0U3RyaW5nVXRpbHMuY3JlYXRlQWJzb2x1dGVVcmwoXHJcbiAgICAgICAgICB0aGlzLl9uZ0hyZWYsXHJcbiAgICAgICAgICB0aGlzLmJhc2VIcmVmXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBwYXRoV2l0aFBhcmFtcyA9IFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKFxyXG4gICAgICAgICAgYWJzb2x1dGVQYXRoLFxyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgd2luZG93Lm9wZW4ocGF0aFdpdGhQYXJhbXMsIHRoaXMuX3RhcmdldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX25nSHJlZl0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLl9xdWVyeVBhcmFtcyxcclxuICAgICAgICAgIHN0YXRlOiB0aGlzLl9zdGF0ZVBhcmFtcyA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5faHJlZikge1xyXG4gICAgICBjb25zdCBwYXRoV2l0aFBhcmFtcyA9IFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKFxyXG4gICAgICAgIHRoaXMuX2hyZWYsXHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1xyXG4gICAgICApO1xyXG4gICAgICB3aW5kb3cub3BlbihwYXRoV2l0aFBhcmFtcywgdGhpcy5fdGFyZ2V0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpY2skLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3RpZnlBY2Nlc3NEZW5pZWQoZXJyb3I/OiB1bmtub3duKSB7XHJcbiAgICBpZiAodGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWNjZXNzRGVuaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluaXNoT25saW5lQ2hlY2soKSB7XHJcbiAgICB0aGlzLnNldERpc2FibGVkKFJkdEJ1dHRvbkJhc2UuT05MSU5FX0VOQUJMRURfS0VZLCBmYWxzZSk7XHJcbiAgICB0aGlzLnNldExvYWRpbmcoUmR0QnV0dG9uQmFzZS5PTkxJTkVfRU5BQkxFRF9LRVksIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGlzYWJsZWRWYWx1ZSgpIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gT2JqZWN0LnZhbHVlcyh0aGlzLmludGVybmFsRGlzYWJsZWRNYXApLnNvbWUoXHJcbiAgICAgICh2YWx1ZSkgPT4gdmFsdWVcclxuICAgICk7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMb2FkaW5nVmFsdWUoKSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gT2JqZWN0LnZhbHVlcyh0aGlzLmludGVybmFsTG9hZGluZ01hcCkuc29tZShcclxuICAgICAgKHZhbHVlKSA9PiB2YWx1ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUhyZWZXaXRoUXVlcnlQYXJhbXMoKSB7XHJcbiAgICBpZiAodGhpcy5faHJlZiAmJiB0aGlzLl9xdWVyeVBhcmFtcykge1xyXG4gICAgICB0aGlzLmhyZWZXaXRoUGFyYW1zID0gUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoXHJcbiAgICAgICAgdGhpcy5faHJlZixcclxuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtc1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ocmVmV2l0aFBhcmFtcyA9IHRoaXMuX2hyZWY7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZVRhYkluZGV4VmFsdWUoKSB7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBcmlhQXR0cmlidXRlcygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5hcmlhRWxlbWVudDtcclxuICAgIGlmICh0aGlzLmFyaWFFbGVtZW50KSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2FyaWEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShlbCwga2V5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsIGtleSwgU3RyaW5nKHZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgT05MSU5FX0VOQUJMRURfS0VZID0gU3ltYm9sKCk7XHJcbn1cclxuIl19
@@ -1,7 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const RDT_BUTTON_SETTER_KEY = Symbol();
3
- export const RDT_BUTTON_DEFAULT_PROPAGATE = false;
4
- export const RDT_BUTTON_DEFAULT_TARGET = '_self';
5
- export const RDT_BUTTON_DEFAULT_TAB_INDEX = null;
6
- export const RDT_BUTTON_BASE_PROVIDER = new InjectionToken('RdtButton');
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvYnV0dG9uL3NyYy9saWIvYnV0dG9uL3JkdC1idXR0b24tY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBRXhELFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0QnV0dG9uQmFzZUludCB9IGZyb20gJy4vcmR0LWJ1dHRvbi1pbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fU0VUVEVSX0tFWSA9IFN5bWJvbCgpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fREVGQVVMVF9QUk9QQUdBVEUgPSBmYWxzZTtcclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fREVGQVVMVF9UQVJHRVQgPSAnX3NlbGYnO1xyXG5leHBvcnQgY29uc3QgUkRUX0JVVFRPTl9ERUZBVUxUX1RBQl9JTkRFWCA9IG51bGw7XHJcblxyXG5leHBvcnQgY29uc3QgUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxyXG4gIFR5cGU8UmR0QnV0dG9uQmFzZUludD5cclxuPignUmR0QnV0dG9uJyk7XHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvYnV0dG9uL3NyYy9saWIvYnV0dG9uL3JkdC1idXR0b24taW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBcmlhQXR0cmlidXRlcywgTnVsbGFibGUsIFdpbmRvd09wZW5UYXJnZXRUeXBlIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHRCdXR0b25CYXNlSW5wdXRzSW50PFRJY29uID0gc3RyaW5nPiB7XHJcbiAgbGFiZWw6IE51bGxhYmxlPHN0cmluZz47XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcm9wYWdhdGU6IGJvb2xlYW47XHJcbiAgdGFiSW5kZXg6IE51bGxhYmxlPG51bWJlcj47XHJcbiAgaHJlZjogTnVsbGFibGU8c3RyaW5nPjtcclxuICBuZ0hyZWY6IE51bGxhYmxlPHN0cmluZz47XHJcbiAgdGFyZ2V0OiBXaW5kb3dPcGVuVGFyZ2V0VHlwZTtcclxuICBzdGF0ZVBhcmFtczogTnVsbGFibGU8UGFyYW1zPjtcclxuICBxdWVyeVBhcmFtczogTnVsbGFibGU8UGFyYW1zPjtcclxuICBkb3dubG9hZDogTnVsbGFibGU8c3RyaW5nPjtcclxuICBpY29uOiBOdWxsYWJsZTxUSWNvbj47XHJcbiAgZGF0YVRlc3RJZDogc3RyaW5nO1xyXG4gIG9ubGluZUVuYWJsZWQkOiBOdWxsYWJsZTxPYnNlcnZhYmxlPGJvb2xlYW4+PjtcclxuICBhcmlhOiBQYXJ0aWFsPEFyaWFBdHRyaWJ1dGVzPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHRCdXR0b25CYXNlSW50PFRJY29uID0gc3RyaW5nPlxyXG4gIGV4dGVuZHMgUmR0QnV0dG9uQmFzZUlucHV0c0ludDxUSWNvbj4ge1xyXG4gIHJlYWRvbmx5IGNsaWNrJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcclxuXHJcbiAgcmVhZG9ubHkgYW5jaG9yRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gIHJlYWRvbmx5IGZvY3VzRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gIHJlYWRvbmx5IGFyaWFFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGw7XHJcblxyXG4gIHNldERpc2FibGVkKGtleTogc3ltYm9sLCBkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XHJcbiAgc2V0TG9hZGluZyhrZXk6IHN5bWJvbCwgZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkO1xyXG4gIGZvY3VzKCk6IHZvaWQ7XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1ub3RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9idXR0b24vc3JjL2xpYi9idXR0b24vcmR0LWJ1dHRvbi1ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZHRCdXR0b25Ob3RpZmljYXRpb25TZXJ2aWNlSW50IHtcclxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xyXG4gIGFjY2Vzc0RlbmllZCgpOiB2b2lkO1xyXG59XHJcbiJdfQ==
@@ -1,69 +0,0 @@
1
- import { Directive, EventEmitter, inject, Input, Output, ViewContainerRef, } from '@angular/core';
2
- import { RDT_BUTTON_BASE_PROVIDER } from '../button/rdt-button-constants';
3
- import * as i0 from "@angular/core";
4
- export class RdtButtonOutletDirective {
5
- buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);
6
- _viewContainerRef = inject(ViewContainerRef);
7
- inputs = {};
8
- click$ = new EventEmitter();
9
- get instance() {
10
- return this._componentRef?.instance;
11
- }
12
- _componentRef;
13
- /**
14
- * A helper data structure that allows us to track inputs that were part of the
15
- * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones
16
- * that are no longer referenced.
17
- */
18
- _inputsUsed = new Map();
19
- constructor() {
20
- const injector = this._viewContainerRef.injector;
21
- this._componentRef = this._viewContainerRef.createComponent(this.buttonClass, {
22
- injector,
23
- });
24
- this.onInputsChanged();
25
- this._componentRef.instance.click$.subscribe(this.click$);
26
- }
27
- /** @nodoc */
28
- ngOnChanges() {
29
- this.onInputsChanged();
30
- }
31
- onInputsChanged() {
32
- for (const inputName of Object.keys(this.inputs)) {
33
- this._inputsUsed.set(inputName, true);
34
- }
35
- if (this._componentRef) {
36
- this._applyInputStateDiff(this._componentRef);
37
- }
38
- }
39
- /** @nodoc */
40
- _applyInputStateDiff(componentRef) {
41
- for (const [inputName, touched] of this._inputsUsed) {
42
- if (!touched) {
43
- // The input that was previously active no longer exists and needs to be set to undefined.
44
- componentRef.setInput(inputName, undefined);
45
- this._inputsUsed.delete(inputName);
46
- }
47
- else {
48
- // Since touched is true, it can be asserted that the inputs object is not empty.
49
- componentRef.setInput(inputName, this.inputs[inputName]);
50
- this._inputsUsed.set(inputName, false);
51
- }
52
- }
53
- }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: RdtButtonOutletDirective, isStandalone: true, selector: "[rdtButtonOutlet]", inputs: { inputs: "inputs" }, outputs: { click$: "click$" }, exportAs: ["rdtButtonOutlet"], usesOnChanges: true, ngImport: i0 });
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonOutletDirective, decorators: [{
58
- type: Directive,
59
- args: [{
60
- selector: '[rdtButtonOutlet]',
61
- standalone: true,
62
- exportAs: 'rdtButtonOutlet',
63
- }]
64
- }], ctorParameters: () => [], propDecorators: { inputs: [{
65
- type: Input
66
- }], click$: [{
67
- type: Output
68
- }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1vdXRsZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbGliL2J1dHRvbi1vdXRsZXQvcmR0LWJ1dHRvbi1vdXRsZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFXMUUsTUFBTSxPQUFPLHdCQUF3QjtJQUsxQixXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFdkMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFHOUQsTUFBTSxHQUEyQixFQUFFLENBQUM7SUFHcEMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFeEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBQ08sYUFBYSxDQUF5QjtJQUU5Qzs7OztPQUlHO0lBQ0ssV0FBVyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRWpEO1FBQ0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3pELElBQUksQ0FBQyxXQUFXLEVBQ2hCO1lBQ0UsUUFBUTtTQUNULENBQ3VCLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxhQUFhO0lBQ2IsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUNMLG9CQUFvQixDQUFDLFlBQW1DO1FBQzlELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLDBGQUEwRjtnQkFDMUYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixpRkFBaUY7Z0JBQ2pGLFlBQVksQ0FBQyxRQUFRLENBQ25CLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQWdDLENBQUMsQ0FDOUMsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3VHQXJFVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7d0RBV0MsTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSIH0gZnJvbSAnLi4vYnV0dG9uL3JkdC1idXR0b24tY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBSZHRCdXR0b25CYXNlSW5wdXRzSW50LFxyXG4gIFJkdEJ1dHRvbkJhc2VJbnQsXHJcbn0gZnJvbSAnLi4vYnV0dG9uL3JkdC1idXR0b24taW50JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3JkdEJ1dHRvbk91dGxldF0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgZXhwb3J0QXM6ICdyZHRCdXR0b25PdXRsZXQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0QnV0dG9uT3V0bGV0RGlyZWN0aXZlPFxyXG4gIFRCdXR0b24gZXh0ZW5kcyBSZHRCdXR0b25CYXNlSW50LFxyXG4gIFRCdXR0b25JbnB1dHMgZXh0ZW5kcyBSZHRCdXR0b25CYXNlSW5wdXRzSW50ID0gUmR0QnV0dG9uQmFzZUlucHV0c0ludFxyXG4+IGltcGxlbWVudHMgT25DaGFuZ2VzXHJcbntcclxuICByZWFkb25seSBidXR0b25DbGFzcyA9IGluamVjdChSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlucHV0czogUGFydGlhbDxUQnV0dG9uSW5wdXRzPiA9IHt9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGljayQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIGdldCBpbnN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8VEJ1dHRvbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgaGVscGVyIGRhdGEgc3RydWN0dXJlIHRoYXQgYWxsb3dzIHVzIHRvIHRyYWNrIGlucHV0cyB0aGF0IHdlcmUgcGFydCBvZiB0aGVcclxuICAgKiBuZ0NvbXBvbmVudE91dGxldElucHV0cyBleHByZXNzaW9uLiBUcmFja2luZyBpbnB1dHMgaXMgbmVjZXNzYXJ5IGZvciBwcm9wZXIgcmVtb3ZhbCBvZiBvbmVzXHJcbiAgICogdGhhdCBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaW5wdXRzVXNlZCA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLmJ1dHRvbkNsYXNzLFxyXG4gICAgICB7XHJcbiAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgIH1cclxuICAgICkgYXMgQ29tcG9uZW50UmVmPFRCdXR0b24+O1xyXG4gICAgdGhpcy5vbklucHV0c0NoYW5nZWQoKTtcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGljayQuc3Vic2NyaWJlKHRoaXMuY2xpY2skKTtcclxuICB9XHJcblxyXG4gIC8qKiBAbm9kb2MgKi9cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMub25JbnB1dHNDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uSW5wdXRzQ2hhbmdlZCgpIHtcclxuICAgIGZvciAoY29uc3QgaW5wdXROYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKSkge1xyXG4gICAgICB0aGlzLl9pbnB1dHNVc2VkLnNldChpbnB1dE5hbWUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLl9hcHBseUlucHV0U3RhdGVEaWZmKHRoaXMuX2NvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQG5vZG9jICovXHJcbiAgcHJpdmF0ZSBfYXBwbHlJbnB1dFN0YXRlRGlmZihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjx1bmtub3duPikge1xyXG4gICAgZm9yIChjb25zdCBbaW5wdXROYW1lLCB0b3VjaGVkXSBvZiB0aGlzLl9pbnB1dHNVc2VkKSB7XHJcbiAgICAgIGlmICghdG91Y2hlZCkge1xyXG4gICAgICAgIC8vIFRoZSBpbnB1dCB0aGF0IHdhcyBwcmV2aW91c2x5IGFjdGl2ZSBubyBsb25nZXIgZXhpc3RzIGFuZCBuZWVkcyB0byBiZSBzZXQgdG8gdW5kZWZpbmVkLlxyXG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChpbnB1dE5hbWUsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5faW5wdXRzVXNlZC5kZWxldGUoaW5wdXROYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBTaW5jZSB0b3VjaGVkIGlzIHRydWUsIGl0IGNhbiBiZSBhc3NlcnRlZCB0aGF0IHRoZSBpbnB1dHMgb2JqZWN0IGlzIG5vdCBlbXB0eS5cclxuICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoXHJcbiAgICAgICAgICBpbnB1dE5hbWUsXHJcbiAgICAgICAgICB0aGlzLmlucHV0c1tpbnB1dE5hbWUgYXMga2V5b2YgVEJ1dHRvbklucHV0c11cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2lucHV0c1VzZWQuc2V0KGlucHV0TmFtZSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbmdyZHQtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19