@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/README.md CHANGED
@@ -1,7 +1,7 @@
1
- # @ngrdt/button
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test @ngrdt/button` to execute the unit tests.
1
+ # @ngrdt/button
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test @ngrdt/button` to execute the unit tests.
@@ -1,9 +1,10 @@
1
+ import { PlatformLocation } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, ChangeDetectorRef, Renderer2, EventEmitter, booleanAttribute, numberAttribute, Directive, Input, Output, ViewContainerRef } from '@angular/core';
3
+ import { InjectionToken, inject, ElementRef, Renderer2, input, booleanAttribute, linkedSignal, numberAttribute, computed, afterRenderEffect, EventEmitter, Output, Directive, ViewContainerRef, Input } from '@angular/core';
3
4
  import { Router } from '@angular/router';
5
+ import { RdtInteractiveElementComponent } from '@ngrdt/core';
4
6
  import { RdtStringUtils } from '@ngrdt/utils';
5
7
  import { take } from 'rxjs';
6
- import { PlatformLocation } from '@angular/common';
7
8
 
8
9
  const RDT_BUTTON_SETTER_KEY = Symbol();
9
10
  const RDT_BUTTON_DEFAULT_PROPAGATE = false;
@@ -11,159 +12,95 @@ const RDT_BUTTON_DEFAULT_TARGET = '_self';
11
12
  const RDT_BUTTON_DEFAULT_TAB_INDEX = null;
12
13
  const RDT_BUTTON_BASE_PROVIDER = new InjectionToken('RdtButton');
13
14
 
14
- class RdtButtonBase {
15
+ class RdtButtonBase extends RdtInteractiveElementComponent {
15
16
  elRef = inject(ElementRef);
16
- cd = inject(ChangeDetectorRef);
17
17
  router = inject(Router);
18
18
  baseHref = inject(PlatformLocation).getBaseHrefFromDOM();
19
19
  renderer = inject(Renderer2);
20
20
  notificationService;
21
21
  internalDisabledMap = {};
22
22
  internalLoadingMap = {};
23
- hrefWithParams;
24
- get focusElement() {
25
- return this.elRef?.nativeElement ?? null;
26
- }
27
- get ariaElement() {
28
- return this.elRef?.nativeElement ?? null;
29
- }
30
- get anchorElement() {
31
- return this.elRef?.nativeElement ?? null;
32
- }
33
- set disabled(value) {
34
- this.setDisabled(RDT_BUTTON_SETTER_KEY, value);
35
- }
36
- get disabled() {
37
- return this._disabled;
38
- }
39
- _disabled = false;
40
- set loading(value) {
41
- this.setLoading(RDT_BUTTON_SETTER_KEY, value);
42
- }
43
- get loading() {
44
- return this._loading;
45
- }
46
- _loading = false;
47
- propagate = false;
48
- set tabIndex(value) {
49
- this._tabIndex = value;
50
- this.updateTabIndexValue();
51
- }
52
- get tabIndex() {
53
- return this._tabIndex;
54
- }
55
- _tabIndex = RDT_BUTTON_DEFAULT_TAB_INDEX;
56
- set href(value) {
57
- this._href = value;
58
- this.updateHrefWithQueryParams();
59
- }
60
- get href() {
61
- return this._href;
62
- }
63
- _href;
64
- set ngHref(value) {
65
- this._ngHref = value;
66
- this.cd.markForCheck();
67
- }
68
- get ngHref() {
69
- return this._ngHref;
70
- }
71
- _ngHref;
72
- set target(value) {
73
- this._target = value;
74
- this.cd.markForCheck();
75
- }
76
- get target() {
77
- return this._target;
78
- }
79
- _target = RDT_BUTTON_DEFAULT_TARGET;
80
- set stateParams(value) {
81
- this._stateParams = value;
82
- this.cd.markForCheck();
83
- }
84
- get stateParams() {
85
- return this._stateParams;
86
- }
87
- _stateParams;
88
- set queryParams(value) {
89
- this._queryParams = value;
90
- this.updateHrefWithQueryParams();
91
- }
92
- get queryParams() {
93
- return this._queryParams;
94
- }
95
- _queryParams;
96
- set download(value) {
97
- this._download = value;
98
- this.cd.markForCheck();
99
- }
100
- get download() {
101
- return this._download ?? undefined;
102
- }
103
- _download;
104
- set icon(value) {
105
- this._icon = value;
106
- this.cd.markForCheck();
107
- }
108
- get icon() {
109
- return this._icon;
110
- }
111
- _icon;
112
- set label(value) {
113
- this._label = value;
114
- this.cd.markForCheck();
115
- }
116
- get label() {
117
- return this._label;
118
- }
119
- _label;
120
- set dataTestId(value) {
121
- this._dataTestId = value;
122
- this.cd.markForCheck();
123
- }
124
- get dataTestId() {
125
- return this._dataTestId;
126
- }
127
- _dataTestId = '';
128
- set onlineEnabled$(value) {
129
- this._onlineEnabled$ = value;
130
- this.cd.markForCheck();
131
- }
132
- get onlineEnabled$() {
133
- return this._onlineEnabled$;
134
- }
135
- _onlineEnabled$;
136
- set aria(value) {
137
- this._aria = value;
138
- this.updateAriaAttributes();
139
- }
140
- get aria() {
141
- return this._aria;
142
- }
143
- _aria = {};
23
+ // Inputs
24
+ propagateInput = input(false, ...(ngDevMode ? [{ debugName: "propagateInput", transform: booleanAttribute,
25
+ alias: 'propagate' }] : [{
26
+ transform: booleanAttribute,
27
+ alias: 'propagate',
28
+ }]));
29
+ propagate = linkedSignal(() => this.propagateInput());
30
+ tabIndexInput = input(RDT_BUTTON_DEFAULT_TAB_INDEX, ...(ngDevMode ? [{ debugName: "tabIndexInput", transform: numberAttribute,
31
+ alias: 'tabIndex' }] : [{
32
+ transform: numberAttribute,
33
+ alias: 'tabIndex',
34
+ }]));
35
+ tabIndex = linkedSignal(() => this.tabIndexInput());
36
+ hrefInput = input(undefined, ...(ngDevMode ? [{ debugName: "hrefInput", alias: 'href' }] : [{
37
+ alias: 'href',
38
+ }]));
39
+ href = linkedSignal(() => this.hrefInput());
40
+ ngHrefInput = input(undefined, ...(ngDevMode ? [{ debugName: "ngHrefInput", alias: 'ngHref' }] : [{
41
+ alias: 'ngHref',
42
+ }]));
43
+ ngHref = linkedSignal(() => this.ngHrefInput());
44
+ targetInput = input(RDT_BUTTON_DEFAULT_TARGET, ...(ngDevMode ? [{ debugName: "targetInput", alias: 'target' }] : [{ alias: 'target' }]));
45
+ target = linkedSignal(() => this.targetInput());
46
+ stateParamsInput = input(undefined, ...(ngDevMode ? [{ debugName: "stateParamsInput", alias: 'stateParams' }] : [{
47
+ alias: 'stateParams',
48
+ }]));
49
+ stateParams = linkedSignal(() => this.stateParamsInput());
50
+ queryParamsInput = input(undefined, ...(ngDevMode ? [{ debugName: "queryParamsInput", alias: 'queryParams' }] : [{
51
+ alias: 'queryParams',
52
+ }]));
53
+ queryParams = linkedSignal(() => this.queryParamsInput());
54
+ downloadInput = input(undefined, ...(ngDevMode ? [{ debugName: "downloadInput", alias: 'download' }] : [{
55
+ alias: 'download',
56
+ }]));
57
+ download = linkedSignal(() => this.downloadInput());
58
+ iconInput = input(null, ...(ngDevMode ? [{ debugName: "iconInput", alias: 'icon' }] : [{
59
+ alias: 'icon',
60
+ }]));
61
+ icon = linkedSignal(() => this.iconInput());
62
+ labelInput = input(undefined, ...(ngDevMode ? [{ debugName: "labelInput", alias: 'label' }] : [{
63
+ alias: 'label',
64
+ }]));
65
+ label = linkedSignal(() => this.labelInput());
66
+ dataTestIdInput = input(undefined, ...(ngDevMode ? [{ debugName: "dataTestIdInput", alias: 'dataTestId' }] : [{ alias: 'dataTestId' }]));
67
+ dataTestId = linkedSignal(() => this.dataTestIdInput() ?? this.label() ?? '');
68
+ onlineEnabledInput$ = input(null, ...(ngDevMode ? [{ debugName: "onlineEnabledInput$", alias: 'onlineEnabled' }] : [{
69
+ alias: 'onlineEnabled',
70
+ }]));
71
+ onlineEnabled$ = linkedSignal(() => this.onlineEnabledInput$());
72
+ ariaInput = input({}, ...(ngDevMode ? [{ debugName: "ariaInput", alias: 'aria' }] : [{ alias: 'aria' }]));
73
+ aria = linkedSignal(() => this.ariaInput());
74
+ hrefWithParams = computed(() => {
75
+ const href = this.href();
76
+ const queryParams = this.queryParams();
77
+ if (href && queryParams) {
78
+ return RdtStringUtils.appendQueryParams(href, queryParams);
79
+ }
80
+ else {
81
+ return href;
82
+ }
83
+ }, ...(ngDevMode ? [{ debugName: "hrefWithParams" }] : []));
84
+ ariaRenderEffect = afterRenderEffect({
85
+ write: () => this.updateAriaAttributes(this.aria()),
86
+ });
144
87
  click$ = new EventEmitter();
145
- ngAfterViewInit() {
146
- this.updateAriaAttributes();
147
- }
148
- setDisabled(key, disabled) {
149
- this.internalDisabledMap[key] = disabled;
150
- this.updateDisabledValue();
151
- }
152
- setLoading(key, disabled) {
153
- this.internalLoadingMap[key] = disabled;
154
- this.updateLoadingValue();
155
- }
156
88
  focus() {
157
- this.focusElement?.focus();
89
+ this.focusElement()?.focus();
90
+ }
91
+ canFocus() {
92
+ return !this.disabled() && !!this.focusElement();
158
93
  }
159
94
  onClicked($event) {
160
- if (this._onlineEnabled$) {
161
- if (this._disabled) {
95
+ const onlineEnabled$ = this.onlineEnabled$();
96
+ const disabled = this.disabled();
97
+ if (onlineEnabled$) {
98
+ if (disabled) {
162
99
  return;
163
100
  }
164
101
  $event.stopPropagation();
165
- this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, true);
166
- this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, true);
102
+ this.setDisabledState(true, RdtButtonBase.ONLINE_ENABLED_KEY);
103
+ this.setLoadingState(true, RdtButtonBase.ONLINE_ENABLED_KEY);
167
104
  const observer = {
168
105
  next: () => {
169
106
  this.onClickPermissionAllowed($event);
@@ -175,46 +112,57 @@ class RdtButtonBase {
175
112
  },
176
113
  complete: () => this.finishOnlineCheck(),
177
114
  };
178
- this._onlineEnabled$.pipe(take(1)).subscribe(observer);
115
+ onlineEnabled$.pipe(take(1)).subscribe(observer);
179
116
  }
180
117
  else {
181
118
  this.emitAndStopProp($event);
182
119
  }
183
120
  }
184
121
  emitAndStopProp($event) {
122
+ const ngHref = this.ngHref();
123
+ const href = this.href();
124
+ const propagate = this.propagate();
125
+ const disabled = this.disabled();
185
126
  // stopPropagation prevents routerLinks from working
186
- if (!this.propagate && !this._ngHref && !this._href) {
127
+ if (!propagate && !ngHref && !href) {
187
128
  $event.stopPropagation();
188
129
  }
189
- if (!this._disabled && !this._ngHref && !this._href) {
130
+ if (!disabled && !ngHref && !href) {
190
131
  this.click$.emit($event);
191
132
  }
192
133
  }
193
134
  onClickPermissionAllowed($event) {
194
- if (!this.propagate) {
135
+ const propagate = this.propagate();
136
+ const disabled = this.disabled();
137
+ if (!propagate) {
195
138
  $event.stopPropagation();
196
139
  }
197
- if (!this._disabled) {
140
+ if (!disabled) {
198
141
  this.navigateOrEmit($event);
199
142
  }
200
143
  }
201
144
  navigateOrEmit(event) {
202
- if (this._ngHref) {
203
- if (this._target !== '_self') {
204
- const absolutePath = RdtStringUtils.createAbsoluteUrl(this._ngHref, this.baseHref);
205
- const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, this.queryParams);
206
- window.open(pathWithParams, this._target);
145
+ const ngHref = this.ngHref();
146
+ const href = this.href();
147
+ const target = this.target();
148
+ const queryParams = this.queryParams();
149
+ const stateParams = this.stateParams();
150
+ if (ngHref) {
151
+ if (target !== '_self') {
152
+ const absolutePath = RdtStringUtils.createAbsoluteUrl(ngHref, this.baseHref);
153
+ const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);
154
+ window.open(pathWithParams, target);
207
155
  }
208
156
  else {
209
- this.router.navigate([this._ngHref], {
210
- queryParams: this._queryParams,
211
- state: this._stateParams ?? undefined,
157
+ this.router.navigate([ngHref], {
158
+ queryParams: queryParams,
159
+ state: stateParams ?? undefined,
212
160
  });
213
161
  }
214
162
  }
215
- else if (this._href) {
216
- const pathWithParams = RdtStringUtils.appendQueryParams(this._href, this.queryParams);
217
- window.open(pathWithParams, this._target);
163
+ else if (href) {
164
+ const pathWithParams = RdtStringUtils.appendQueryParams(href, queryParams);
165
+ window.open(pathWithParams, target);
218
166
  }
219
167
  else {
220
168
  this.click$.emit(event);
@@ -231,33 +179,13 @@ class RdtButtonBase {
231
179
  }
232
180
  }
233
181
  finishOnlineCheck() {
234
- this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, false);
235
- this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, false);
236
- }
237
- updateDisabledValue() {
238
- this._disabled = Object.values(this.internalDisabledMap).some((value) => value);
239
- this.cd.markForCheck();
240
- }
241
- updateLoadingValue() {
242
- this._loading = Object.values(this.internalLoadingMap).some((value) => value);
243
- this.cd.markForCheck();
182
+ this.setDisabledState(false, RdtButtonBase.ONLINE_ENABLED_KEY);
183
+ this.setLoadingState(false, RdtButtonBase.ONLINE_ENABLED_KEY);
244
184
  }
245
- updateHrefWithQueryParams() {
246
- if (this._href && this._queryParams) {
247
- this.hrefWithParams = RdtStringUtils.appendQueryParams(this._href, this._queryParams);
248
- }
249
- else {
250
- this.hrefWithParams = this._href;
251
- }
252
- this.cd.markForCheck();
253
- }
254
- updateTabIndexValue() {
255
- this.cd.markForCheck();
256
- }
257
- updateAriaAttributes() {
258
- const el = this.ariaElement;
259
- if (this.ariaElement) {
260
- Object.entries(this._aria).forEach(([key, value]) => {
185
+ updateAriaAttributes(aria) {
186
+ const el = this.ariaElement();
187
+ if (el) {
188
+ Object.entries(aria).forEach(([key, value]) => {
261
189
  if (value === null || value === undefined) {
262
190
  this.renderer.removeAttribute(el, key);
263
191
  }
@@ -268,46 +196,12 @@ class RdtButtonBase {
268
196
  }
269
197
  }
270
198
  static ONLINE_ENABLED_KEY = Symbol();
271
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
272
- 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 });
199
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtButtonBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
200
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: RdtButtonBase, isStandalone: true, inputs: { propagateInput: { classPropertyName: "propagateInput", publicName: "propagate", isSignal: true, isRequired: false, transformFunction: null }, tabIndexInput: { classPropertyName: "tabIndexInput", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, hrefInput: { classPropertyName: "hrefInput", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, ngHrefInput: { classPropertyName: "ngHrefInput", publicName: "ngHref", isSignal: true, isRequired: false, transformFunction: null }, targetInput: { classPropertyName: "targetInput", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, stateParamsInput: { classPropertyName: "stateParamsInput", publicName: "stateParams", isSignal: true, isRequired: false, transformFunction: null }, queryParamsInput: { classPropertyName: "queryParamsInput", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, downloadInput: { classPropertyName: "downloadInput", publicName: "download", isSignal: true, isRequired: false, transformFunction: null }, iconInput: { classPropertyName: "iconInput", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, labelInput: { classPropertyName: "labelInput", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, dataTestIdInput: { classPropertyName: "dataTestIdInput", publicName: "dataTestId", isSignal: true, isRequired: false, transformFunction: null }, onlineEnabledInput$: { classPropertyName: "onlineEnabledInput$", publicName: "onlineEnabled", isSignal: true, isRequired: false, transformFunction: null }, ariaInput: { classPropertyName: "ariaInput", publicName: "aria", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click$: "click$" }, usesInheritance: true, ngImport: i0 });
273
201
  }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonBase, decorators: [{
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtButtonBase, decorators: [{
275
203
  type: Directive
276
- }], propDecorators: { disabled: [{
277
- type: Input,
278
- args: [{ transform: booleanAttribute }]
279
- }], loading: [{
280
- type: Input,
281
- args: [{ transform: booleanAttribute }]
282
- }], propagate: [{
283
- type: Input,
284
- args: [{ transform: booleanAttribute }]
285
- }], tabIndex: [{
286
- type: Input,
287
- args: [{ transform: numberAttribute }]
288
- }], href: [{
289
- type: Input
290
- }], ngHref: [{
291
- type: Input
292
- }], target: [{
293
- type: Input
294
- }], stateParams: [{
295
- type: Input
296
- }], queryParams: [{
297
- type: Input
298
- }], download: [{
299
- type: Input
300
- }], icon: [{
301
- type: Input
302
- }], label: [{
303
- type: Input
304
- }], dataTestId: [{
305
- type: Input
306
- }], onlineEnabled$: [{
307
- type: Input
308
- }], aria: [{
309
- type: Input
310
- }], click$: [{
204
+ }], propDecorators: { click$: [{
311
205
  type: Output
312
206
  }] } });
313
207
 
@@ -361,10 +255,10 @@ class RdtButtonOutletDirective {
361
255
  }
362
256
  }
363
257
  }
364
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
365
- 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 });
258
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtButtonOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
259
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.7", type: RdtButtonOutletDirective, isStandalone: true, selector: "[rdtButtonOutlet]", inputs: { inputs: "inputs" }, outputs: { click$: "click$" }, exportAs: ["rdtButtonOutlet"], usesOnChanges: true, ngImport: i0 });
366
260
  }
367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtButtonOutletDirective, decorators: [{
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtButtonOutletDirective, decorators: [{
368
262
  type: Directive,
369
263
  args: [{
370
264
  selector: '[rdtButtonOutlet]',
@@ -1 +1 @@
1
- {"version":3,"file":"ngrdt-button.mjs","sources":["../../../../@ngrdt/button/src/lib/button/rdt-button-constants.ts","../../../../@ngrdt/button/src/lib/button/rdt-button-base.ts","../../../../@ngrdt/button/src/lib/button-outlet/rdt-button-outlet.directive.ts","../../../../@ngrdt/button/src/ngrdt-button.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\r\nimport { RdtButtonBaseInt } from './rdt-button-int';\r\n\r\nexport const RDT_BUTTON_SETTER_KEY = Symbol();\r\n\r\nexport const RDT_BUTTON_DEFAULT_PROPAGATE = false;\r\nexport const RDT_BUTTON_DEFAULT_TARGET = '_self';\r\nexport const RDT_BUTTON_DEFAULT_TAB_INDEX = null;\r\n\r\nexport const RDT_BUTTON_BASE_PROVIDER = new InjectionToken<\r\n Type<RdtButtonBaseInt>\r\n>('RdtButton');\r\n","import {\r\n AfterViewInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n numberAttribute,\r\n Output,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { RdtButtonBaseInt } from './rdt-button-int';\r\nimport { Params, Router } from '@angular/router';\r\nimport {\r\n Nullable,\r\n WindowOpenTargetType,\r\n RdtStringUtils,\r\n AriaAttributes,\r\n} from '@ngrdt/utils';\r\nimport { Observable, take } from 'rxjs';\r\nimport {\r\n RDT_BUTTON_DEFAULT_TAB_INDEX,\r\n RDT_BUTTON_DEFAULT_TARGET,\r\n RDT_BUTTON_SETTER_KEY,\r\n} from './rdt-button-constants';\r\nimport { RdtButtonNotificationServiceInt } from './rdt-button-notification.service';\r\nimport { PlatformLocation } from '@angular/common';\r\n\r\n@Directive()\r\nexport abstract class RdtButtonBase<TIcon = string>\r\n implements RdtButtonBaseInt<TIcon>, AfterViewInit\r\n{\r\n protected readonly elRef = inject(ElementRef);\r\n protected readonly cd = inject(ChangeDetectorRef);\r\n protected readonly router = inject(Router);\r\n protected readonly baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\r\n protected readonly renderer = inject(Renderer2);\r\n\r\n protected readonly notificationService?: RdtButtonNotificationServiceInt;\r\n\r\n protected internalDisabledMap: Record<symbol, boolean> = {};\r\n protected internalLoadingMap: Record<symbol, boolean> = {};\r\n protected hrefWithParams: Nullable<string>;\r\n\r\n get focusElement(): HTMLElement | null {\r\n return this.elRef?.nativeElement ?? null;\r\n }\r\n\r\n get ariaElement(): HTMLElement | null {\r\n return this.elRef?.nativeElement ?? null;\r\n }\r\n\r\n get anchorElement(): HTMLElement | null {\r\n return this.elRef?.nativeElement ?? null;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n set disabled(value: boolean) {\r\n this.setDisabled(RDT_BUTTON_SETTER_KEY, value);\r\n }\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n private _disabled = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n set loading(value: boolean) {\r\n this.setLoading(RDT_BUTTON_SETTER_KEY, value);\r\n }\r\n get loading(): boolean {\r\n return this._loading;\r\n }\r\n private _loading = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n propagate = false;\r\n\r\n @Input({ transform: numberAttribute })\r\n set tabIndex(value: Nullable<number>) {\r\n this._tabIndex = value;\r\n this.updateTabIndexValue();\r\n }\r\n get tabIndex() {\r\n return this._tabIndex;\r\n }\r\n private _tabIndex: Nullable<number> = RDT_BUTTON_DEFAULT_TAB_INDEX;\r\n\r\n @Input()\r\n set href(value: Nullable<string>) {\r\n this._href = value;\r\n this.updateHrefWithQueryParams();\r\n }\r\n get href() {\r\n return this._href;\r\n }\r\n private _href: Nullable<string>;\r\n\r\n @Input()\r\n set ngHref(value: Nullable<string>) {\r\n this._ngHref = value;\r\n this.cd.markForCheck();\r\n }\r\n get ngHref() {\r\n return this._ngHref;\r\n }\r\n private _ngHref: Nullable<string>;\r\n\r\n @Input()\r\n set target(value: WindowOpenTargetType) {\r\n this._target = value;\r\n this.cd.markForCheck();\r\n }\r\n get target() {\r\n return this._target;\r\n }\r\n private _target: WindowOpenTargetType = RDT_BUTTON_DEFAULT_TARGET;\r\n\r\n @Input()\r\n set stateParams(value: Nullable<Params>) {\r\n this._stateParams = value;\r\n this.cd.markForCheck();\r\n }\r\n get stateParams() {\r\n return this._stateParams;\r\n }\r\n private _stateParams: Nullable<Params>;\r\n\r\n @Input()\r\n set queryParams(value: Nullable<Params>) {\r\n this._queryParams = value;\r\n this.updateHrefWithQueryParams();\r\n }\r\n get queryParams() {\r\n return this._queryParams;\r\n }\r\n private _queryParams: Nullable<Params>;\r\n\r\n @Input()\r\n set download(value: Nullable<string>) {\r\n this._download = value;\r\n this.cd.markForCheck();\r\n }\r\n get download() {\r\n return this._download ?? undefined;\r\n }\r\n private _download: Nullable<string>;\r\n\r\n @Input()\r\n set icon(value: Nullable<TIcon>) {\r\n this._icon = value;\r\n this.cd.markForCheck();\r\n }\r\n get icon() {\r\n return this._icon;\r\n }\r\n private _icon: Nullable<TIcon>;\r\n\r\n @Input()\r\n set label(value: Nullable<string>) {\r\n this._label = value;\r\n this.cd.markForCheck();\r\n }\r\n get label() {\r\n return this._label;\r\n }\r\n private _label: Nullable<string>;\r\n\r\n @Input()\r\n set dataTestId(value: string) {\r\n this._dataTestId = value;\r\n this.cd.markForCheck();\r\n }\r\n get dataTestId() {\r\n return this._dataTestId;\r\n }\r\n private _dataTestId = '';\r\n\r\n @Input()\r\n set onlineEnabled$(value: Nullable<Observable<boolean>>) {\r\n this._onlineEnabled$ = value;\r\n this.cd.markForCheck();\r\n }\r\n get onlineEnabled$() {\r\n return this._onlineEnabled$;\r\n }\r\n private _onlineEnabled$: Nullable<Observable<boolean>>;\r\n\r\n @Input()\r\n set aria(value: Partial<AriaAttributes>) {\r\n this._aria = value;\r\n this.updateAriaAttributes();\r\n }\r\n get aria() {\r\n return this._aria;\r\n }\r\n private _aria: Partial<AriaAttributes> = {};\r\n\r\n @Output()\r\n readonly click$ = new EventEmitter<MouseEvent>();\r\n\r\n ngAfterViewInit(): void {\r\n this.updateAriaAttributes();\r\n }\r\n\r\n setDisabled(key: symbol, disabled: boolean): void {\r\n this.internalDisabledMap[key] = disabled;\r\n this.updateDisabledValue();\r\n }\r\n\r\n setLoading(key: symbol, disabled: boolean): void {\r\n this.internalLoadingMap[key] = disabled;\r\n this.updateLoadingValue();\r\n }\r\n\r\n focus(): void {\r\n this.focusElement?.focus();\r\n }\r\n\r\n protected onClicked($event: MouseEvent) {\r\n if (this._onlineEnabled$) {\r\n if (this._disabled) {\r\n return;\r\n }\r\n\r\n $event.stopPropagation();\r\n this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, true);\r\n this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, true);\r\n const observer = {\r\n next: () => {\r\n this.onClickPermissionAllowed($event);\r\n this.finishOnlineCheck();\r\n },\r\n error: (error: any) => {\r\n this.notifyAccessDenied(error);\r\n this.finishOnlineCheck();\r\n },\r\n complete: () => this.finishOnlineCheck(),\r\n };\r\n this._onlineEnabled$.pipe(take(1)).subscribe(observer);\r\n } else {\r\n this.emitAndStopProp($event);\r\n }\r\n }\r\n\r\n private emitAndStopProp($event: MouseEvent) {\r\n // stopPropagation prevents routerLinks from working\r\n if (!this.propagate && !this._ngHref && !this._href) {\r\n $event.stopPropagation();\r\n }\r\n if (!this._disabled && !this._ngHref && !this._href) {\r\n this.click$.emit($event);\r\n }\r\n }\r\n\r\n private onClickPermissionAllowed($event: MouseEvent) {\r\n if (!this.propagate) {\r\n $event.stopPropagation();\r\n }\r\n if (!this._disabled) {\r\n this.navigateOrEmit($event);\r\n }\r\n }\r\n\r\n private navigateOrEmit(event: MouseEvent) {\r\n if (this._ngHref) {\r\n if (this._target !== '_self') {\r\n const absolutePath = RdtStringUtils.createAbsoluteUrl(\r\n this._ngHref,\r\n this.baseHref\r\n );\r\n const pathWithParams = RdtStringUtils.appendQueryParams(\r\n absolutePath,\r\n this.queryParams\r\n );\r\n window.open(pathWithParams, this._target);\r\n } else {\r\n this.router.navigate([this._ngHref], {\r\n queryParams: this._queryParams,\r\n state: this._stateParams ?? undefined,\r\n });\r\n }\r\n } else if (this._href) {\r\n const pathWithParams = RdtStringUtils.appendQueryParams(\r\n this._href,\r\n this.queryParams\r\n );\r\n window.open(pathWithParams, this._target);\r\n } else {\r\n this.click$.emit(event);\r\n }\r\n }\r\n\r\n private notifyAccessDenied(error?: unknown) {\r\n if (this.notificationService) {\r\n if (typeof error === 'string') {\r\n this.notificationService.error(error);\r\n } else {\r\n this.notificationService.accessDenied();\r\n }\r\n }\r\n }\r\n\r\n private finishOnlineCheck() {\r\n this.setDisabled(RdtButtonBase.ONLINE_ENABLED_KEY, false);\r\n this.setLoading(RdtButtonBase.ONLINE_ENABLED_KEY, false);\r\n }\r\n\r\n private updateDisabledValue() {\r\n this._disabled = Object.values(this.internalDisabledMap).some(\r\n (value) => value\r\n );\r\n this.cd.markForCheck();\r\n }\r\n\r\n private updateLoadingValue() {\r\n this._loading = Object.values(this.internalLoadingMap).some(\r\n (value) => value\r\n );\r\n this.cd.markForCheck();\r\n }\r\n\r\n private updateHrefWithQueryParams() {\r\n if (this._href && this._queryParams) {\r\n this.hrefWithParams = RdtStringUtils.appendQueryParams(\r\n this._href,\r\n this._queryParams\r\n );\r\n } else {\r\n this.hrefWithParams = this._href;\r\n }\r\n this.cd.markForCheck();\r\n }\r\n\r\n protected updateTabIndexValue() {\r\n this.cd.markForCheck();\r\n }\r\n\r\n private updateAriaAttributes() {\r\n const el = this.ariaElement;\r\n if (this.ariaElement) {\r\n Object.entries(this._aria).forEach(([key, value]) => {\r\n if (value === null || value === undefined) {\r\n this.renderer.removeAttribute(el, key);\r\n } else {\r\n this.renderer.setAttribute(el, key, String(value));\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected static readonly ONLINE_ENABLED_KEY = Symbol();\r\n}\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n Output,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { RDT_BUTTON_BASE_PROVIDER } from '../button/rdt-button-constants';\r\nimport {\r\n RdtButtonBaseInputsInt,\r\n RdtButtonBaseInt,\r\n} from '../button/rdt-button-int';\r\n\r\n@Directive({\r\n selector: '[rdtButtonOutlet]',\r\n standalone: true,\r\n exportAs: 'rdtButtonOutlet',\r\n})\r\nexport class RdtButtonOutletDirective<\r\n TButton extends RdtButtonBaseInt,\r\n TButtonInputs extends RdtButtonBaseInputsInt = RdtButtonBaseInputsInt\r\n> implements OnChanges\r\n{\r\n readonly buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\r\n\r\n private readonly _viewContainerRef = inject(ViewContainerRef);\r\n\r\n @Input()\r\n inputs: Partial<TButtonInputs> = {};\r\n\r\n @Output()\r\n click$ = new EventEmitter<MouseEvent>();\r\n\r\n get instance() {\r\n return this._componentRef?.instance;\r\n }\r\n private _componentRef?: ComponentRef<TButton>;\r\n\r\n /**\r\n * A helper data structure that allows us to track inputs that were part of the\r\n * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones\r\n * that are no longer referenced.\r\n */\r\n private _inputsUsed = new Map<string, boolean>();\r\n\r\n constructor() {\r\n const injector = this._viewContainerRef.injector;\r\n this._componentRef = this._viewContainerRef.createComponent(\r\n this.buttonClass,\r\n {\r\n injector,\r\n }\r\n ) as ComponentRef<TButton>;\r\n this.onInputsChanged();\r\n this._componentRef.instance.click$.subscribe(this.click$);\r\n }\r\n\r\n /** @nodoc */\r\n ngOnChanges() {\r\n this.onInputsChanged();\r\n }\r\n\r\n private onInputsChanged() {\r\n for (const inputName of Object.keys(this.inputs)) {\r\n this._inputsUsed.set(inputName, true);\r\n }\r\n if (this._componentRef) {\r\n this._applyInputStateDiff(this._componentRef);\r\n }\r\n }\r\n\r\n /** @nodoc */\r\n private _applyInputStateDiff(componentRef: ComponentRef<unknown>) {\r\n for (const [inputName, touched] of this._inputsUsed) {\r\n if (!touched) {\r\n // The input that was previously active no longer exists and needs to be set to undefined.\r\n componentRef.setInput(inputName, undefined);\r\n this._inputsUsed.delete(inputName);\r\n } else {\r\n // Since touched is true, it can be asserted that the inputs object is not empty.\r\n componentRef.setInput(\r\n inputName,\r\n this.inputs[inputName as keyof TButtonInputs]\r\n );\r\n this._inputsUsed.set(inputName, false);\r\n }\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngrdt-button.mjs","sources":["../tmp-esm2022/lib/button/rdt-button-constants.js","../tmp-esm2022/lib/button/rdt-button-base.js","../tmp-esm2022/lib/button-outlet/rdt-button-outlet.directive.js","../tmp-esm2022/ngrdt-button.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const RDT_BUTTON_SETTER_KEY = Symbol();\nexport const RDT_BUTTON_DEFAULT_PROPAGATE = false;\nexport const RDT_BUTTON_DEFAULT_TARGET = '_self';\nexport const RDT_BUTTON_DEFAULT_TAB_INDEX = null;\nexport const RDT_BUTTON_BASE_PROVIDER = new InjectionToken('RdtButton');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvYnV0dG9uL3NyYy9saWIvYnV0dG9uL3JkdC1idXR0b24tY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBRXhELFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0QnV0dG9uQmFzZUludCB9IGZyb20gJy4vcmR0LWJ1dHRvbi1pbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fU0VUVEVSX0tFWSA9IFN5bWJvbCgpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fREVGQVVMVF9QUk9QQUdBVEUgPSBmYWxzZTtcclxuZXhwb3J0IGNvbnN0IFJEVF9CVVRUT05fREVGQVVMVF9UQVJHRVQgPSAnX3NlbGYnO1xyXG5leHBvcnQgY29uc3QgUkRUX0JVVFRPTl9ERUZBVUxUX1RBQl9JTkRFWCA9IG51bGw7XHJcblxyXG5leHBvcnQgY29uc3QgUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxyXG4gIFR5cGU8UmR0QnV0dG9uQmFzZUludD5cclxuPignUmR0QnV0dG9uJyk7XHJcbiJdfQ==","import { PlatformLocation } from '@angular/common';\nimport { afterRenderEffect, booleanAttribute, computed, Directive, ElementRef, EventEmitter, inject, input, linkedSignal, numberAttribute, Output, Renderer2, } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RdtInteractiveElementComponent } from '@ngrdt/core';\nimport { RdtStringUtils, } from '@ngrdt/utils';\nimport { take } from 'rxjs';\nimport { RDT_BUTTON_DEFAULT_TAB_INDEX, RDT_BUTTON_DEFAULT_TARGET, } from './rdt-button-constants';\nimport * as i0 from \"@angular/core\";\nexport class RdtButtonBase extends RdtInteractiveElementComponent {\n elRef = inject(ElementRef);\n router = inject(Router);\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n renderer = inject(Renderer2);\n notificationService;\n internalDisabledMap = {};\n internalLoadingMap = {};\n // Inputs\n propagateInput = input(false, ...(ngDevMode ? [{ debugName: \"propagateInput\", transform: booleanAttribute,\n alias: 'propagate' }] : [{\n transform: booleanAttribute,\n alias: 'propagate',\n }]));\n propagate = linkedSignal(() => this.propagateInput());\n tabIndexInput = input(RDT_BUTTON_DEFAULT_TAB_INDEX, ...(ngDevMode ? [{ debugName: \"tabIndexInput\", transform: numberAttribute,\n alias: 'tabIndex' }] : [{\n transform: numberAttribute,\n alias: 'tabIndex',\n }]));\n tabIndex = linkedSignal(() => this.tabIndexInput());\n hrefInput = input(undefined, ...(ngDevMode ? [{ debugName: \"hrefInput\", alias: 'href' }] : [{\n alias: 'href',\n }]));\n href = linkedSignal(() => this.hrefInput());\n ngHrefInput = input(undefined, ...(ngDevMode ? [{ debugName: \"ngHrefInput\", alias: 'ngHref' }] : [{\n alias: 'ngHref',\n }]));\n ngHref = linkedSignal(() => this.ngHrefInput());\n targetInput = input(RDT_BUTTON_DEFAULT_TARGET, ...(ngDevMode ? [{ debugName: \"targetInput\", alias: 'target' }] : [{ alias: 'target' }]));\n target = linkedSignal(() => this.targetInput());\n stateParamsInput = input(undefined, ...(ngDevMode ? [{ debugName: \"stateParamsInput\", alias: 'stateParams' }] : [{\n alias: 'stateParams',\n }]));\n stateParams = linkedSignal(() => this.stateParamsInput());\n queryParamsInput = input(undefined, ...(ngDevMode ? [{ debugName: \"queryParamsInput\", alias: 'queryParams' }] : [{\n alias: 'queryParams',\n }]));\n queryParams = linkedSignal(() => this.queryParamsInput());\n downloadInput = input(undefined, ...(ngDevMode ? [{ debugName: \"downloadInput\", alias: 'download' }] : [{\n alias: 'download',\n }]));\n download = linkedSignal(() => this.downloadInput());\n iconInput = input(null, ...(ngDevMode ? [{ debugName: \"iconInput\", alias: 'icon' }] : [{\n alias: 'icon',\n }]));\n icon = linkedSignal(() => this.iconInput());\n labelInput = input(undefined, ...(ngDevMode ? [{ debugName: \"labelInput\", alias: 'label' }] : [{\n alias: 'label',\n }]));\n label = linkedSignal(() => this.labelInput());\n dataTestIdInput = input(undefined, ...(ngDevMode ? [{ debugName: \"dataTestIdInput\", alias: 'dataTestId' }] : [{ alias: 'dataTestId' }]));\n dataTestId = linkedSignal(() => this.dataTestIdInput() ?? this.label() ?? '');\n onlineEnabledInput$ = input(null, ...(ngDevMode ? [{ debugName: \"onlineEnabledInput$\", alias: 'onlineEnabled' }] : [{\n alias: 'onlineEnabled',\n }]));\n onlineEnabled$ = linkedSignal(() => this.onlineEnabledInput$());\n ariaInput = input({}, ...(ngDevMode ? [{ debugName: \"ariaInput\", alias: 'aria' }] : [{ alias: 'aria' }]));\n aria = linkedSignal(() => this.ariaInput());\n hrefWithParams = computed(() => {\n const href = this.href();\n const queryParams = this.queryParams();\n if (href && queryParams) {\n return RdtStringUtils.appendQueryParams(href, queryParams);\n }\n else {\n return href;\n }\n }, ...(ngDevMode ? [{ debugName: \"hrefWithParams\" }] : []));\n ariaRenderEffect = afterRenderEffect({\n write: () => this.updateAriaAttributes(this.aria()),\n });\n click$ = new EventEmitter();\n focus() {\n this.focusElement()?.focus();\n }\n canFocus() {\n return !this.disabled() && !!this.focusElement();\n }\n onClicked($event) {\n const onlineEnabled$ = this.onlineEnabled$();\n const disabled = this.disabled();\n if (onlineEnabled$) {\n if (disabled) {\n return;\n }\n $event.stopPropagation();\n this.setDisabledState(true, RdtButtonBase.ONLINE_ENABLED_KEY);\n this.setLoadingState(true, RdtButtonBase.ONLINE_ENABLED_KEY);\n const observer = {\n next: () => {\n this.onClickPermissionAllowed($event);\n this.finishOnlineCheck();\n },\n error: (error) => {\n this.notifyAccessDenied(error);\n this.finishOnlineCheck();\n },\n complete: () => this.finishOnlineCheck(),\n };\n onlineEnabled$.pipe(take(1)).subscribe(observer);\n }\n else {\n this.emitAndStopProp($event);\n }\n }\n emitAndStopProp($event) {\n const ngHref = this.ngHref();\n const href = this.href();\n const propagate = this.propagate();\n const disabled = this.disabled();\n // stopPropagation prevents routerLinks from working\n if (!propagate && !ngHref && !href) {\n $event.stopPropagation();\n }\n if (!disabled && !ngHref && !href) {\n this.click$.emit($event);\n }\n }\n onClickPermissionAllowed($event) {\n const propagate = this.propagate();\n const disabled = this.disabled();\n if (!propagate) {\n $event.stopPropagation();\n }\n if (!disabled) {\n this.navigateOrEmit($event);\n }\n }\n navigateOrEmit(event) {\n const ngHref = this.ngHref();\n const href = this.href();\n const target = this.target();\n const queryParams = this.queryParams();\n const stateParams = this.stateParams();\n if (ngHref) {\n if (target !== '_self') {\n const absolutePath = RdtStringUtils.createAbsoluteUrl(ngHref, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n window.open(pathWithParams, target);\n }\n else {\n this.router.navigate([ngHref], {\n queryParams: queryParams,\n state: stateParams ?? undefined,\n });\n }\n }\n else if (href) {\n const pathWithParams = RdtStringUtils.appendQueryParams(href, queryParams);\n window.open(pathWithParams, target);\n }\n else {\n this.click$.emit(event);\n }\n }\n notifyAccessDenied(error) {\n if (this.notificationService) {\n if (typeof error === 'string') {\n this.notificationService.error(error);\n }\n else {\n this.notificationService.accessDenied();\n }\n }\n }\n finishOnlineCheck() {\n this.setDisabledState(false, RdtButtonBase.ONLINE_ENABLED_KEY);\n this.setLoadingState(false, RdtButtonBase.ONLINE_ENABLED_KEY);\n }\n updateAriaAttributes(aria) {\n const el = this.ariaElement();\n if (el) {\n Object.entries(aria).forEach(([key, value]) => {\n if (value === null || value === undefined) {\n this.renderer.removeAttribute(el, key);\n }\n else {\n this.renderer.setAttribute(el, key, String(value));\n }\n });\n }\n }\n static ONLINE_ENABLED_KEY = Symbol();\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtButtonBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: RdtButtonBase, isStandalone: true, inputs: { propagateInput: { classPropertyName: \"propagateInput\", publicName: \"propagate\", isSignal: true, isRequired: false, transformFunction: null }, tabIndexInput: { classPropertyName: \"tabIndexInput\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null }, hrefInput: { classPropertyName: \"hrefInput\", publicName: \"href\", isSignal: true, isRequired: false, transformFunction: null }, ngHrefInput: { classPropertyName: \"ngHrefInput\", publicName: \"ngHref\", isSignal: true, isRequired: false, transformFunction: null }, targetInput: { classPropertyName: \"targetInput\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, stateParamsInput: { classPropertyName: \"stateParamsInput\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, queryParamsInput: { classPropertyName: \"queryParamsInput\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, downloadInput: { classPropertyName: \"downloadInput\", publicName: \"download\", isSignal: true, isRequired: false, transformFunction: null }, iconInput: { classPropertyName: \"iconInput\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, labelInput: { classPropertyName: \"labelInput\", publicName: \"label\", isSignal: true, isRequired: false, transformFunction: null }, dataTestIdInput: { classPropertyName: \"dataTestIdInput\", publicName: \"dataTestId\", isSignal: true, isRequired: false, transformFunction: null }, onlineEnabledInput$: { classPropertyName: \"onlineEnabledInput$\", publicName: \"onlineEnabled\", isSignal: true, isRequired: false, transformFunction: null }, ariaInput: { classPropertyName: \"ariaInput\", publicName: \"aria\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click$: \"click$\" }, usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtButtonBase, decorators: [{\n type: Directive\n }], propDecorators: { click$: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbGliL2J1dHRvbi9yZHQtYnV0dG9uLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQW9CLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFHTCxjQUFjLEdBRWYsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHlCQUF5QixHQUMxQixNQUFNLHdCQUF3QixDQUFDOztBQUtoQyxNQUFNLE9BQWdCLGFBQ3BCLFNBQVEsOEJBQThCO0lBR25CLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN6RCxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTdCLG1CQUFtQixDQUFtQztJQUUvRCxtQkFBbUIsR0FBNEIsRUFBRSxDQUFDO0lBQ2xELGtCQUFrQixHQUE0QixFQUFFLENBQUM7SUFNM0QsU0FBUztJQUNB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R0FsT3BDLGFBQWE7MkZBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEbEMsU0FBUzs4QkFxR0MsTUFBTTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgYWZ0ZXJSZW5kZXJFZmZlY3QsXHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxuICBjb21wdXRlZCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIGxpbmtlZFNpZ25hbCxcclxuICBudW1iZXJBdHRyaWJ1dGUsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Qm9vbGVhblJlc3VsdCwgUmR0SW50ZXJhY3RpdmVFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnQG5ncmR0L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFyaWFBdHRyaWJ1dGVzLFxyXG4gIE51bGxhYmxlLFxyXG4gIFJkdFN0cmluZ1V0aWxzLFxyXG4gIFdpbmRvd09wZW5UYXJnZXRUeXBlLFxyXG59IGZyb20gJ0BuZ3JkdC91dGlscyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBSRFRfQlVUVE9OX0RFRkFVTFRfVEFCX0lOREVYLFxyXG4gIFJEVF9CVVRUT05fREVGQVVMVF9UQVJHRVQsXHJcbn0gZnJvbSAnLi9yZHQtYnV0dG9uLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJkdEJ1dHRvbkJhc2VJbnQgfSBmcm9tICcuL3JkdC1idXR0b24taW50JztcclxuaW1wb3J0IHsgUmR0QnV0dG9uTm90aWZpY2F0aW9uU2VydmljZUludCB9IGZyb20gJy4vcmR0LWJ1dHRvbi1ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJkdEJ1dHRvbkJhc2U8VEljb24gPSBzdHJpbmc+XHJcbiAgZXh0ZW5kcyBSZHRJbnRlcmFjdGl2ZUVsZW1lbnRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIFJkdEJ1dHRvbkJhc2VJbnQ8VEljb24+XHJcbntcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBiYXNlSHJlZiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKS5nZXRCYXNlSHJlZkZyb21ET00oKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U/OiBSZHRCdXR0b25Ob3RpZmljYXRpb25TZXJ2aWNlSW50O1xyXG5cclxuICBwcm90ZWN0ZWQgaW50ZXJuYWxEaXNhYmxlZE1hcDogUmVjb3JkPHN5bWJvbCwgYm9vbGVhbj4gPSB7fTtcclxuICBwcm90ZWN0ZWQgaW50ZXJuYWxMb2FkaW5nTWFwOiBSZWNvcmQ8c3ltYm9sLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBhYnN0cmFjdCByZWFkb25seSBmb2N1c0VsZW1lbnQ6IFNpZ25hbDxIVE1MRWxlbWVudCB8IG51bGw+O1xyXG4gIGFic3RyYWN0IHJlYWRvbmx5IGFyaWFFbGVtZW50OiBTaWduYWw8SFRNTEVsZW1lbnQgfCBudWxsPjtcclxuICBhYnN0cmFjdCByZWFkb25seSBhbmNob3JFbGVtZW50OiBTaWduYWw8SFRNTEVsZW1lbnQgfCBudWxsPjtcclxuXHJcbiAgLy8gSW5wdXRzXHJcbiAgcmVhZG9ubHkgcHJvcGFnYXRlSW5wdXQgPSBpbnB1dChmYWxzZSwge1xyXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxyXG4gICAgYWxpYXM6ICdwcm9wYWdhdGUnLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHByb3BhZ2F0ZSA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnByb3BhZ2F0ZUlucHV0KCkpO1xyXG5cclxuICByZWFkb25seSB0YWJJbmRleElucHV0ID0gaW5wdXQoUkRUX0JVVFRPTl9ERUZBVUxUX1RBQl9JTkRFWCwge1xyXG4gICAgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUsXHJcbiAgICBhbGlhczogJ3RhYkluZGV4JyxcclxuICB9KTtcclxuICByZWFkb25seSB0YWJJbmRleCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnRhYkluZGV4SW5wdXQoKSk7XHJcblxyXG4gIHJlYWRvbmx5IGhyZWZJbnB1dCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCwge1xyXG4gICAgYWxpYXM6ICdocmVmJyxcclxuICB9KTtcclxuICByZWFkb25seSBocmVmID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMuaHJlZklucHV0KCkpO1xyXG5cclxuICByZWFkb25seSBuZ0hyZWZJbnB1dCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCwge1xyXG4gICAgYWxpYXM6ICduZ0hyZWYnLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IG5nSHJlZiA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLm5nSHJlZklucHV0KCkpO1xyXG5cclxuICByZWFkb25seSB0YXJnZXRJbnB1dCA9IGlucHV0PFdpbmRvd09wZW5UYXJnZXRUeXBlPihcclxuICAgIFJEVF9CVVRUT05fREVGQVVMVF9UQVJHRVQsXHJcbiAgICB7IGFsaWFzOiAndGFyZ2V0JyB9XHJcbiAgKTtcclxuICByZWFkb25seSB0YXJnZXQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy50YXJnZXRJbnB1dCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgc3RhdGVQYXJhbXNJbnB1dCA9IGlucHV0PE51bGxhYmxlPFBhcmFtcz4+KHVuZGVmaW5lZCwge1xyXG4gICAgYWxpYXM6ICdzdGF0ZVBhcmFtcycsXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgc3RhdGVQYXJhbXMgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5zdGF0ZVBhcmFtc0lucHV0KCkpO1xyXG5cclxuICByZWFkb25seSBxdWVyeVBhcmFtc0lucHV0ID0gaW5wdXQ8TnVsbGFibGU8UGFyYW1zPj4odW5kZWZpbmVkLCB7XHJcbiAgICBhbGlhczogJ3F1ZXJ5UGFyYW1zJyxcclxuICB9KTtcclxuICByZWFkb25seSBxdWVyeVBhcmFtcyA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnF1ZXJ5UGFyYW1zSW5wdXQoKSk7XHJcblxyXG4gIHJlYWRvbmx5IGRvd25sb2FkSW5wdXQgPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQsIHtcclxuICAgIGFsaWFzOiAnZG93bmxvYWQnLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGRvd25sb2FkID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMuZG93bmxvYWRJbnB1dCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgaWNvbklucHV0ID0gaW5wdXQ8TnVsbGFibGU8VEljb24+PihudWxsLCB7XHJcbiAgICBhbGlhczogJ2ljb24nLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGljb24gPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5pY29uSW5wdXQoKSk7XHJcblxyXG4gIHJlYWRvbmx5IGxhYmVsSW5wdXQgPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQsIHtcclxuICAgIGFsaWFzOiAnbGFiZWwnLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGxhYmVsID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMubGFiZWxJbnB1dCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgZGF0YVRlc3RJZElucHV0ID0gaW5wdXQodW5kZWZpbmVkLCB7IGFsaWFzOiAnZGF0YVRlc3RJZCcgfSk7XHJcbiAgcmVhZG9ubHkgZGF0YVRlc3RJZCA9IGxpbmtlZFNpZ25hbChcclxuICAgICgpID0+IHRoaXMuZGF0YVRlc3RJZElucHV0KCkgPz8gdGhpcy5sYWJlbCgpID8/ICcnXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgb25saW5lRW5hYmxlZElucHV0JCA9IGlucHV0PE51bGxhYmxlPE9ic2VydmFibGU8Ym9vbGVhbj4+PihudWxsLCB7XHJcbiAgICBhbGlhczogJ29ubGluZUVuYWJsZWQnLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IG9ubGluZUVuYWJsZWQkID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMub25saW5lRW5hYmxlZElucHV0JCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgYXJpYUlucHV0ID0gaW5wdXQ8UGFydGlhbDxBcmlhQXR0cmlidXRlcz4+KHt9LCB7IGFsaWFzOiAnYXJpYScgfSk7XHJcbiAgcmVhZG9ubHkgYXJpYSA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmFyaWFJbnB1dCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgaHJlZldpdGhQYXJhbXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBocmVmID0gdGhpcy5ocmVmKCk7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXMoKTtcclxuICAgIGlmIChocmVmICYmIHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcyhocmVmLCBxdWVyeVBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaHJlZjtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFSZW5kZXJFZmZlY3QgPSBhZnRlclJlbmRlckVmZmVjdCh7XHJcbiAgICB3cml0ZTogKCkgPT4gdGhpcy51cGRhdGVBcmlhQXR0cmlidXRlcyh0aGlzLmFyaWEoKSksXHJcbiAgfSk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IGNsaWNrJCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzRWxlbWVudCgpPy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgY2FuRm9jdXMoKTogUmR0Qm9vbGVhblJlc3VsdCB7XHJcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQoKSAmJiAhIXRoaXMuZm9jdXNFbGVtZW50KCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DbGlja2VkKCRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3Qgb25saW5lRW5hYmxlZCQgPSB0aGlzLm9ubGluZUVuYWJsZWQkKCk7XHJcbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQoKTtcclxuICAgIGlmIChvbmxpbmVFbmFibGVkJCkge1xyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRydWUsIFJkdEJ1dHRvbkJhc2UuT05MSU5FX0VOQUJMRURfS0VZKTtcclxuICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUodHJ1ZSwgUmR0QnV0dG9uQmFzZS5PTkxJTkVfRU5BQkxFRF9LRVkpO1xyXG4gICAgICBjb25zdCBvYnNlcnZlciA9IHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2xpY2tQZXJtaXNzaW9uQWxsb3dlZCgkZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5maW5pc2hPbmxpbmVDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeUFjY2Vzc0RlbmllZChlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmZpbmlzaE9ubGluZUNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5maW5pc2hPbmxpbmVDaGVjaygpLFxyXG4gICAgICB9O1xyXG4gICAgICBvbmxpbmVFbmFibGVkJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvYnNlcnZlcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVtaXRBbmRTdG9wUHJvcCgkZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0QW5kU3RvcFByb3AoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLm5nSHJlZigpO1xyXG4gICAgY29uc3QgaHJlZiA9IHRoaXMuaHJlZigpO1xyXG4gICAgY29uc3QgcHJvcGFnYXRlID0gdGhpcy5wcm9wYWdhdGUoKTtcclxuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpO1xyXG4gICAgLy8gc3RvcFByb3BhZ2F0aW9uIHByZXZlbnRzIHJvdXRlckxpbmtzIGZyb20gd29ya2luZ1xyXG4gICAgaWYgKCFwcm9wYWdhdGUgJiYgIW5nSHJlZiAmJiAhaHJlZikge1xyXG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWRpc2FibGVkICYmICFuZ0hyZWYgJiYgIWhyZWYpIHtcclxuICAgICAgdGhpcy5jbGljayQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNsaWNrUGVybWlzc2lvbkFsbG93ZWQoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCBwcm9wYWdhdGUgPSB0aGlzLnByb3BhZ2F0ZSgpO1xyXG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCk7XHJcbiAgICBpZiAoIXByb3BhZ2F0ZSkge1xyXG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVPckVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVPckVtaXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IG5nSHJlZiA9IHRoaXMubmdIcmVmKCk7XHJcbiAgICBjb25zdCBocmVmID0gdGhpcy5ocmVmKCk7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBjb25zdCBzdGF0ZVBhcmFtcyA9IHRoaXMuc3RhdGVQYXJhbXMoKTtcclxuXHJcbiAgICBpZiAobmdIcmVmKSB7XHJcbiAgICAgIGlmICh0YXJnZXQgIT09ICdfc2VsZicpIHtcclxuICAgICAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBSZHRTdHJpbmdVdGlscy5jcmVhdGVBYnNvbHV0ZVVybChcclxuICAgICAgICAgIG5nSHJlZixcclxuICAgICAgICAgIHRoaXMuYmFzZUhyZWZcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHBhdGhXaXRoUGFyYW1zID0gUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoXHJcbiAgICAgICAgICBhYnNvbHV0ZVBhdGgsXHJcbiAgICAgICAgICBxdWVyeVBhcmFtc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgd2luZG93Lm9wZW4ocGF0aFdpdGhQYXJhbXMsIHRhcmdldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25nSHJlZl0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICAgIHN0YXRlOiBzdGF0ZVBhcmFtcyA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaHJlZikge1xyXG4gICAgICBjb25zdCBwYXRoV2l0aFBhcmFtcyA9IFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKFxyXG4gICAgICAgIGhyZWYsXHJcbiAgICAgICAgcXVlcnlQYXJhbXNcclxuICAgICAgKTtcclxuICAgICAgd2luZG93Lm9wZW4ocGF0aFdpdGhQYXJhbXMsIHRhcmdldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsaWNrJC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm90aWZ5QWNjZXNzRGVuaWVkKGVycm9yPzogdW5rbm93bikge1xyXG4gICAgaWYgKHRoaXMubm90aWZpY2F0aW9uU2VydmljZSkge1xyXG4gICAgICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFjY2Vzc0RlbmllZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaE9ubGluZUNoZWNrKCkge1xyXG4gICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBSZHRCdXR0b25CYXNlLk9OTElORV9FTkFCTEVEX0tFWSk7XHJcbiAgICB0aGlzLnNldExvYWRpbmdTdGF0ZShmYWxzZSwgUmR0QnV0dG9uQmFzZS5PTkxJTkVfRU5BQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBcmlhQXR0cmlidXRlcyhhcmlhOiBQYXJ0aWFsPEFyaWFBdHRyaWJ1dGVzPikge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmFyaWFFbGVtZW50KCk7XHJcbiAgICBpZiAoZWwpIHtcclxuICAgICAgT2JqZWN0LmVudHJpZXMoYXJpYSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGVsLCBrZXkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwga2V5LCBTdHJpbmcodmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBPTkxJTkVfRU5BQkxFRF9LRVkgPSBTeW1ib2woKTtcclxufVxyXG4iXX0=","import { Directive, EventEmitter, inject, Input, Output, ViewContainerRef, } from '@angular/core';\nimport { RDT_BUTTON_BASE_PROVIDER } from '../button/rdt-button-constants';\nimport * as i0 from \"@angular/core\";\nexport class RdtButtonOutletDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n _viewContainerRef = inject(ViewContainerRef);\n inputs = {};\n click$ = new EventEmitter();\n get instance() {\n return this._componentRef?.instance;\n }\n _componentRef;\n /**\n * A helper data structure that allows us to track inputs that were part of the\n * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones\n * that are no longer referenced.\n */\n _inputsUsed = new Map();\n constructor() {\n const injector = this._viewContainerRef.injector;\n this._componentRef = this._viewContainerRef.createComponent(this.buttonClass, {\n injector,\n });\n this.onInputsChanged();\n this._componentRef.instance.click$.subscribe(this.click$);\n }\n /** @nodoc */\n ngOnChanges() {\n this.onInputsChanged();\n }\n onInputsChanged() {\n for (const inputName of Object.keys(this.inputs)) {\n this._inputsUsed.set(inputName, true);\n }\n if (this._componentRef) {\n this._applyInputStateDiff(this._componentRef);\n }\n }\n /** @nodoc */\n _applyInputStateDiff(componentRef) {\n for (const [inputName, touched] of this._inputsUsed) {\n if (!touched) {\n // The input that was previously active no longer exists and needs to be set to undefined.\n componentRef.setInput(inputName, undefined);\n this._inputsUsed.delete(inputName);\n }\n else {\n // Since touched is true, it can be asserted that the inputs object is not empty.\n componentRef.setInput(inputName, this.inputs[inputName]);\n this._inputsUsed.set(inputName, false);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtButtonOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: RdtButtonOutletDirective, isStandalone: true, selector: \"[rdtButtonOutlet]\", inputs: { inputs: \"inputs\" }, outputs: { click$: \"click$\" }, exportAs: [\"rdtButtonOutlet\"], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtButtonOutletDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtButtonOutlet]',\n standalone: true,\n exportAs: 'rdtButtonOutlet',\n }]\n }], ctorParameters: () => [], propDecorators: { inputs: [{\n type: Input\n }], click$: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJ1dHRvbi1vdXRsZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbGliL2J1dHRvbi1vdXRsZXQvcmR0LWJ1dHRvbi1vdXRsZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFXMUUsTUFBTSxPQUFPLHdCQUF3QjtJQUsxQixXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFdkMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFHOUQsTUFBTSxHQUEyQixFQUFFLENBQUM7SUFHcEMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFeEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBQ08sYUFBYSxDQUF5QjtJQUU5Qzs7OztPQUlHO0lBQ0ssV0FBVyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRWpEO1FBQ0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3pELElBQUksQ0FBQyxXQUFXLEVBQ2hCO1lBQ0UsUUFBUTtTQUNULENBQ3VCLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxhQUFhO0lBQ2IsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUNMLG9CQUFvQixDQUFDLFlBQW1DO1FBQzlELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLDBGQUEwRjtnQkFDMUYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixpRkFBaUY7Z0JBQ2pGLFlBQVksQ0FBQyxRQUFRLENBQ25CLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQWdDLENBQUMsQ0FDOUMsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3VHQXJFVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7d0RBV0MsTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSIH0gZnJvbSAnLi4vYnV0dG9uL3JkdC1idXR0b24tY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBSZHRCdXR0b25CYXNlSW5wdXRzSW50LFxyXG4gIFJkdEJ1dHRvbkJhc2VJbnQsXHJcbn0gZnJvbSAnLi4vYnV0dG9uL3JkdC1idXR0b24taW50JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3JkdEJ1dHRvbk91dGxldF0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgZXhwb3J0QXM6ICdyZHRCdXR0b25PdXRsZXQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0QnV0dG9uT3V0bGV0RGlyZWN0aXZlPFxyXG4gIFRCdXR0b24gZXh0ZW5kcyBSZHRCdXR0b25CYXNlSW50LFxyXG4gIFRCdXR0b25JbnB1dHMgZXh0ZW5kcyBSZHRCdXR0b25CYXNlSW5wdXRzSW50ID0gUmR0QnV0dG9uQmFzZUlucHV0c0ludFxyXG4+IGltcGxlbWVudHMgT25DaGFuZ2VzXHJcbntcclxuICByZWFkb25seSBidXR0b25DbGFzcyA9IGluamVjdChSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlucHV0czogUGFydGlhbDxUQnV0dG9uSW5wdXRzPiA9IHt9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGljayQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIGdldCBpbnN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8VEJ1dHRvbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgaGVscGVyIGRhdGEgc3RydWN0dXJlIHRoYXQgYWxsb3dzIHVzIHRvIHRyYWNrIGlucHV0cyB0aGF0IHdlcmUgcGFydCBvZiB0aGVcclxuICAgKiBuZ0NvbXBvbmVudE91dGxldElucHV0cyBleHByZXNzaW9uLiBUcmFja2luZyBpbnB1dHMgaXMgbmVjZXNzYXJ5IGZvciBwcm9wZXIgcmVtb3ZhbCBvZiBvbmVzXHJcbiAgICogdGhhdCBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaW5wdXRzVXNlZCA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLmJ1dHRvbkNsYXNzLFxyXG4gICAgICB7XHJcbiAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgIH1cclxuICAgICkgYXMgQ29tcG9uZW50UmVmPFRCdXR0b24+O1xyXG4gICAgdGhpcy5vbklucHV0c0NoYW5nZWQoKTtcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGljayQuc3Vic2NyaWJlKHRoaXMuY2xpY2skKTtcclxuICB9XHJcblxyXG4gIC8qKiBAbm9kb2MgKi9cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMub25JbnB1dHNDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uSW5wdXRzQ2hhbmdlZCgpIHtcclxuICAgIGZvciAoY29uc3QgaW5wdXROYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKSkge1xyXG4gICAgICB0aGlzLl9pbnB1dHNVc2VkLnNldChpbnB1dE5hbWUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLl9hcHBseUlucHV0U3RhdGVEaWZmKHRoaXMuX2NvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQG5vZG9jICovXHJcbiAgcHJpdmF0ZSBfYXBwbHlJbnB1dFN0YXRlRGlmZihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjx1bmtub3duPikge1xyXG4gICAgZm9yIChjb25zdCBbaW5wdXROYW1lLCB0b3VjaGVkXSBvZiB0aGlzLl9pbnB1dHNVc2VkKSB7XHJcbiAgICAgIGlmICghdG91Y2hlZCkge1xyXG4gICAgICAgIC8vIFRoZSBpbnB1dCB0aGF0IHdhcyBwcmV2aW91c2x5IGFjdGl2ZSBubyBsb25nZXIgZXhpc3RzIGFuZCBuZWVkcyB0byBiZSBzZXQgdG8gdW5kZWZpbmVkLlxyXG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChpbnB1dE5hbWUsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5faW5wdXRzVXNlZC5kZWxldGUoaW5wdXROYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBTaW5jZSB0b3VjaGVkIGlzIHRydWUsIGl0IGNhbiBiZSBhc3NlcnRlZCB0aGF0IHRoZSBpbnB1dHMgb2JqZWN0IGlzIG5vdCBlbXB0eS5cclxuICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoXHJcbiAgICAgICAgICBpbnB1dE5hbWUsXHJcbiAgICAgICAgICB0aGlzLmlucHV0c1tpbnB1dE5hbWUgYXMga2V5b2YgVEJ1dHRvbklucHV0c11cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2lucHV0c1VzZWQuc2V0KGlucHV0TmFtZSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L2J1dHRvbi9zcmMvbmdyZHQtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}