@skyux/forms 11.30.1 → 12.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/documentation.json +1931 -1913
  2. package/fesm2022/skyux-forms.mjs +180 -179
  3. package/fesm2022/skyux-forms.mjs.map +1 -1
  4. package/package.json +15 -19
  5. package/esm2022/index.mjs +0 -44
  6. package/esm2022/lib/modules/character-counter/character-counter-indicator.component.mjs +0 -38
  7. package/esm2022/lib/modules/character-counter/character-counter-screen-reader.pipe.mjs +0 -46
  8. package/esm2022/lib/modules/character-counter/character-counter.directive.mjs +0 -96
  9. package/esm2022/lib/modules/character-counter/character-counter.module.mjs +0 -43
  10. package/esm2022/lib/modules/checkbox/checkbox-change.mjs +0 -2
  11. package/esm2022/lib/modules/checkbox/checkbox-group-heading-level.mjs +0 -2
  12. package/esm2022/lib/modules/checkbox/checkbox-group-heading-style.mjs +0 -2
  13. package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +0 -156
  14. package/esm2022/lib/modules/checkbox/checkbox-label-text-label.component.mjs +0 -29
  15. package/esm2022/lib/modules/checkbox/checkbox-label.component.mjs +0 -18
  16. package/esm2022/lib/modules/checkbox/checkbox.component.mjs +0 -397
  17. package/esm2022/lib/modules/checkbox/checkbox.module.mjs +0 -75
  18. package/esm2022/lib/modules/field-group/field-group-heading-level.mjs +0 -2
  19. package/esm2022/lib/modules/field-group/field-group-heading-style.mjs +0 -2
  20. package/esm2022/lib/modules/field-group/field-group.component.mjs +0 -75
  21. package/esm2022/lib/modules/field-group/field-group.module.mjs +0 -16
  22. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-change.mjs +0 -2
  23. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-click.mjs +0 -2
  24. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.mjs +0 -22
  25. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-label.component.mjs +0 -31
  26. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +0 -486
  27. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.module.mjs +0 -24
  28. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.service.mjs +0 -103
  29. package/esm2022/lib/modules/file-attachment/file-attachments.module.mjs +0 -20
  30. package/esm2022/lib/modules/file-attachment/file-drop/file-drop-change.mjs +0 -2
  31. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.component.mjs +0 -338
  32. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.module.mjs +0 -18
  33. package/esm2022/lib/modules/file-attachment/file-drop/file-item.component.mjs +0 -156
  34. package/esm2022/lib/modules/file-attachment/file-drop/file-link.mjs +0 -2
  35. package/esm2022/lib/modules/file-attachment/shared/file-item-error-type.mjs +0 -2
  36. package/esm2022/lib/modules/file-attachment/shared/file-item.mjs +0 -2
  37. package/esm2022/lib/modules/file-attachment/shared/file-item.service.mjs +0 -71
  38. package/esm2022/lib/modules/file-attachment/shared/file-size.pipe.mjs +0 -61
  39. package/esm2022/lib/modules/file-attachment/shared/file-validate-function.mjs +0 -2
  40. package/esm2022/lib/modules/form-error/form-error.component.mjs +0 -56
  41. package/esm2022/lib/modules/form-error/form-error.module.mjs +0 -16
  42. package/esm2022/lib/modules/form-error/form-errors-enabled-token.mjs +0 -6
  43. package/esm2022/lib/modules/form-error/form-errors.component.mjs +0 -50
  44. package/esm2022/lib/modules/form-error/form-errors.module.mjs +0 -20
  45. package/esm2022/lib/modules/input-box/input-box-adapter.service.mjs +0 -63
  46. package/esm2022/lib/modules/input-box/input-box-control.directive.mjs +0 -33
  47. package/esm2022/lib/modules/input-box/input-box-hint-text.pipe.mjs +0 -23
  48. package/esm2022/lib/modules/input-box/input-box-host.service.mjs +0 -72
  49. package/esm2022/lib/modules/input-box/input-box-populate-args.mjs +0 -2
  50. package/esm2022/lib/modules/input-box/input-box.component.mjs +0 -276
  51. package/esm2022/lib/modules/input-box/input-box.module.mjs +0 -58
  52. package/esm2022/lib/modules/radio/radio-group-id.service.mjs +0 -50
  53. package/esm2022/lib/modules/radio/radio-group.component.mjs +0 -390
  54. package/esm2022/lib/modules/radio/radio-label.component.mjs +0 -34
  55. package/esm2022/lib/modules/radio/radio.component.mjs +0 -357
  56. package/esm2022/lib/modules/radio/radio.module.mjs +0 -71
  57. package/esm2022/lib/modules/radio/types/radio-change.mjs +0 -2
  58. package/esm2022/lib/modules/radio/types/radio-group-heading-level.mjs +0 -2
  59. package/esm2022/lib/modules/radio/types/radio-group-heading-style.mjs +0 -2
  60. package/esm2022/lib/modules/radio/types/radio-type.mjs +0 -2
  61. package/esm2022/lib/modules/required-state/required-state.directive.mjs +0 -34
  62. package/esm2022/lib/modules/selection-box/selection-box-adapter.service.mjs +0 -128
  63. package/esm2022/lib/modules/selection-box/selection-box-description.component.mjs +0 -14
  64. package/esm2022/lib/modules/selection-box/selection-box-grid.component.mjs +0 -141
  65. package/esm2022/lib/modules/selection-box/selection-box-header.component.mjs +0 -14
  66. package/esm2022/lib/modules/selection-box/selection-box.component.mjs +0 -132
  67. package/esm2022/lib/modules/selection-box/selection-box.module.mjs +0 -40
  68. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items-type.mjs +0 -2
  69. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items.mjs +0 -2
  70. package/esm2022/lib/modules/shared/sky-forms-resources.module.mjs +0 -142
  71. package/esm2022/lib/modules/toggle-switch/toggle-switch-label.component.mjs +0 -25
  72. package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +0 -202
  73. package/esm2022/lib/modules/toggle-switch/toggle-switch.module.mjs +0 -36
  74. package/esm2022/lib/modules/toggle-switch/types/toggle-switch-change.mjs +0 -2
  75. package/esm2022/skyux-forms.mjs +0 -5
  76. package/esm2022/testing/legacy/checkbox-fixture.mjs +0 -92
  77. package/esm2022/testing/legacy/radio-fixture.mjs +0 -85
  78. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
  79. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +0 -53
  80. package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +0 -2
  81. package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +0 -158
  82. package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +0 -2
  83. package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +0 -196
  84. package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +0 -19
  85. package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +0 -19
  86. package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +0 -2
  87. package/esm2022/testing/modules/field-group/field-group-harness.mjs +0 -92
  88. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness-filters.mjs +0 -2
  89. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness.mjs +0 -193
  90. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +0 -2
  91. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +0 -39
  92. package/esm2022/testing/modules/file-attachment/shared/provide-file-attachment-testing.mjs +0 -14
  93. package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +0 -2
  94. package/esm2022/testing/modules/form-error/form-error-harness.mjs +0 -21
  95. package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +0 -2
  96. package/esm2022/testing/modules/form-error/form-errors-harness.mjs +0 -34
  97. package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +0 -2
  98. package/esm2022/testing/modules/input-box/input-box-harness.mjs +0 -188
  99. package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +0 -2
  100. package/esm2022/testing/modules/radio/radio-group-harness.mjs +0 -156
  101. package/esm2022/testing/modules/radio/radio-harness-filters.mjs +0 -2
  102. package/esm2022/testing/modules/radio/radio-harness.mjs +0 -147
  103. package/esm2022/testing/modules/radio/radio-label-harness.mjs +0 -19
  104. package/esm2022/testing/public-api.mjs +0 -17
  105. package/esm2022/testing/skyux-forms-testing.mjs +0 -5
@@ -1,357 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, booleanAttribute, forwardRef, inject, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { SkyIdService, SkyLogService } from '@skyux/core';
4
- import { SkyThemeComponentClassDirective } from '@skyux/theme';
5
- import { Subject } from 'rxjs';
6
- import { SkyRadioGroupIdService } from './radio-group-id.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@skyux/theme";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@skyux/help-inline";
11
- import * as i4 from "@skyux/icon";
12
- import * as i5 from "@skyux/core";
13
- /**
14
- * Provider Expression that allows sky-radio to register as a ControlValueAccessor.
15
- * This allows it to support [(ngModel)].
16
- */
17
- const SKY_RADIO_CONTROL_VALUE_ACCESSOR = {
18
- provide: NG_VALUE_ACCESSOR,
19
- useExisting: forwardRef(() => SkyRadioComponent),
20
- multi: true,
21
- };
22
- /**
23
- * Renders a SKY UX-themed replacement for an HTML `input` element
24
- * with `type="radio"`. When users select a radio button, its value is driven through an
25
- * `ngModel` attribute that you specify on the `sky-radio` element or the parent `sky-radio-group` element.
26
- */
27
- export class SkyRadioComponent {
28
- /**
29
- * Whether the radio button is selected.
30
- * @default false
31
- */
32
- set checked(value) {
33
- const newCheckedState = !!value;
34
- if (this.#_checked !== newCheckedState) {
35
- this.#_checked = newCheckedState;
36
- this.checkedChange.next(newCheckedState);
37
- if (newCheckedState) {
38
- this.selectedValue = this.value;
39
- }
40
- }
41
- this.#changeDetector.markForCheck();
42
- }
43
- get checked() {
44
- return this.#_checked;
45
- }
46
- /**
47
- * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.
48
- * To set the disabled state on reactive forms, use the `FormControl` instead.
49
- * @default false
50
- */
51
- set disabled(value) {
52
- if (value !== this.disabled) {
53
- this.#_disabled = value;
54
- this.disabledChange.next(value);
55
- this.#changeDetector.markForCheck();
56
- }
57
- }
58
- get disabled() {
59
- return this.#_disabled;
60
- }
61
- /**
62
- * The ID for the radio button.
63
- * If a value is not provided, an autogenerated ID is used.
64
- */
65
- set id(value) {
66
- if (value) {
67
- this.inputId = `sky-radio-${value}-input`;
68
- }
69
- else {
70
- this.inputId = `sky-radio-${this.#defaultId}-input`;
71
- }
72
- this.#radioGroupIdSvc?.register(this.#defaultId, this.inputId);
73
- }
74
- /**
75
- * The ARIA label for the radio button. This sets the radio button's `aria-label`
76
- * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
77
- * when the radio button does not include a visible label. You must set this property for icon
78
- * radio buttons. If the radio button includes a visible label, use `labelledBy` instead.
79
- * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).
80
- * @deprecated Use `labelText` instead.
81
- */
82
- set label(value) {
83
- this.#_label = value;
84
- if (value) {
85
- this.#logger.deprecated('SkyRadioComponent.label', {
86
- deprecationMajorVersion: 10,
87
- replacementRecommendation: 'Use the `labelText` input instead.',
88
- });
89
- }
90
- }
91
- get label() {
92
- return this.#_label;
93
- }
94
- /**
95
- * The HTML element ID of the element that labels
96
- * the radio button. This sets the radio button's `aria-labelledby` attribute to provide a text equivalent for screen readers
97
- * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).
98
- * If the radio button does not include a visible label, use `label` instead.
99
- * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).
100
- * @deprecated Use `labelText` instead.
101
- */
102
- set labelledBy(value) {
103
- this.#_labelledBy = value;
104
- if (value) {
105
- this.#logger.deprecated('SkyRadioComponent.labelledBy', {
106
- deprecationMajorVersion: 10,
107
- replacementRecommendation: 'Use the `labelText` input instead.',
108
- });
109
- }
110
- }
111
- get labelledBy() {
112
- return this.#_labelledBy;
113
- }
114
- /**
115
- * This property is deprecated in favor of the `name` property on the `sky-radio-group element`.
116
- * We recommend using the `sky-radio-group` element with all radio buttons, but if you opt not to,
117
- * then this property specifies a name for a group of radio buttons.
118
- * @deprecated
119
- */
120
- set name(value) {
121
- this.#_name = value;
122
- this.#changeDetector.markForCheck();
123
- }
124
- get name() {
125
- return this.#_name;
126
- }
127
- /**
128
- * This property is deprecated in favor of
129
- * the `tabIndex` property on the `sky-radio-group` element. It specifies an index for the radio
130
- * button. If the index is not defined, it is set to the position of the radio button on load.
131
- * @deprecated
132
- */
133
- set tabindex(value) {
134
- console.warn('The sky-radio `tabindex` property is deprecated. Please use the `tabindex` property on the sky-radio-group component.');
135
- if (value) {
136
- this.#_tabindex = value;
137
- }
138
- else {
139
- this.#_tabindex = 0;
140
- }
141
- this.#changeDetector.markForCheck();
142
- }
143
- get tabindex() {
144
- return this.#_tabindex;
145
- }
146
- // For setting the tabindex from the radio group
147
- set groupTabIndex(value) {
148
- if (value) {
149
- this.#_tabindex = value;
150
- }
151
- else {
152
- this.#_tabindex = 0;
153
- }
154
- this.#changeDetector.markForCheck();
155
- }
156
- /**
157
- * The value bound to the radio button's `value` property. The value usually
158
- * corresponds to the radio button's label, which you specify with the `sky-radio-label`
159
- * component.
160
- * @required
161
- */
162
- set value(value) {
163
- /* istanbul ignore else */
164
- if (this.#_value !== value) {
165
- if (this.selectedValue && this.selectedValue === this.#_value) {
166
- this.selectedValue = value;
167
- this.#onChangeCallback(this.selectedValue);
168
- this.#onTouchedCallback();
169
- }
170
- this.#_value = value;
171
- }
172
- this.#changeDetector.markForCheck();
173
- }
174
- get value() {
175
- return this.#_value;
176
- }
177
- /**
178
- * The background color type after users select an icon radio button.
179
- * The valid options correspond
180
- * [the label component's](https://developer.blackbaud.com/skyux/components/label)
181
- * label types. `danger` creates a red background, `info` creates a blue background,
182
- * `success` creates a green background, and `warning` creates an orange background.
183
- * @default "info"
184
- * @deprecated radioType is no longer supported
185
- */
186
- get radioType() {
187
- return this.#_radioType;
188
- }
189
- set radioType(value) {
190
- if (value) {
191
- this.#logger.deprecated('SkyRadioComponent.radioType', {
192
- deprecationMajorVersion: 7,
193
- });
194
- }
195
- this.#_radioType = value ?? 'info';
196
- }
197
- set selectedValue(value) {
198
- if (value !== this.#_selectedValue) {
199
- this.#_selectedValue = value;
200
- }
201
- }
202
- get selectedValue() {
203
- return this.#_selectedValue;
204
- }
205
- #_checked;
206
- #_disabled;
207
- #_name;
208
- #_radioType;
209
- #_selectedValue;
210
- #_tabindex;
211
- #_value;
212
- #_label;
213
- #_labelledBy;
214
- #changeDetector;
215
- #defaultId;
216
- #radioGroupIdSvc;
217
- #logger;
218
- constructor() {
219
- /**
220
- * Fires when users focus off a radio button.
221
- */
222
- this.blur = new Subject();
223
- /**
224
- * Indicates whether to hide the `labelText`.
225
- */
226
- this.labelHidden = false;
227
- /**
228
- * Fires when users select a radio button.
229
- */
230
- this.change = new EventEmitter();
231
- /**
232
- * Fires when the selected value changes.
233
- */
234
- this.checkedChange = new EventEmitter();
235
- /**
236
- * Fires when the selected value changes.
237
- */
238
- this.disabledChange = new EventEmitter();
239
- this.radioGroupDisabled = false;
240
- this.inputId = '';
241
- this.#_checked = false;
242
- this.#_disabled = false;
243
- this.#_radioType = 'info';
244
- this.#_tabindex = 0;
245
- this.#changeDetector = inject(ChangeDetectorRef);
246
- this.#defaultId = inject(SkyIdService).generateId();
247
- this.#radioGroupIdSvc = inject(SkyRadioGroupIdService, { optional: true });
248
- this.#logger = inject(SkyLogService);
249
- // eslint-disable-next-line @typescript-eslint/no-empty-function
250
- this.#removeUniqueSelectionListener = () => { };
251
- // eslint-disable-next-line @typescript-eslint/no-empty-function
252
- this.#onChangeCallback = (value) => { };
253
- // eslint-disable-next-line @typescript-eslint/no-empty-function
254
- this.#onTouchedCallback = () => { };
255
- this.id = this.#defaultId;
256
- }
257
- ngOnDestroy() {
258
- this.#radioGroupIdSvc?.unregister(this.#defaultId);
259
- this.#removeUniqueSelectionListener();
260
- this.change.complete();
261
- this.checkedChange.complete();
262
- this.disabledChange.complete();
263
- }
264
- writeValue(value) {
265
- if (value === undefined) {
266
- return;
267
- }
268
- this.selectedValue = value;
269
- this.checked = this.value === this.selectedValue;
270
- this.#changeDetector.markForCheck();
271
- }
272
- /**
273
- * @internal
274
- * Whether to disable the control. Implemented as a part of ControlValueAccessor.
275
- */
276
- setDisabledState(isDisabled) {
277
- this.disabled = isDisabled;
278
- }
279
- setGroupDisabledState(isDisabled) {
280
- this.radioGroupDisabled = isDisabled;
281
- this.#changeDetector.markForCheck();
282
- }
283
- registerOnChange(fn) {
284
- this.#onChangeCallback = fn;
285
- }
286
- registerOnTouched(fn) {
287
- this.#onTouchedCallback = fn;
288
- }
289
- onInputChange(event) {
290
- event.stopPropagation();
291
- if (!this.disabled) {
292
- this.checked = true;
293
- this.change.next({
294
- value: this.value,
295
- });
296
- this.onInputFocusChange();
297
- this.#onChangeCallback(this.value);
298
- }
299
- }
300
- onInputFocusChange() {
301
- this.#onTouchedCallback();
302
- this.blur.next();
303
- }
304
- // eslint-disable-next-line @typescript-eslint/no-empty-function
305
- #removeUniqueSelectionListener;
306
- // eslint-disable-next-line @typescript-eslint/no-empty-function
307
- #onChangeCallback;
308
- // eslint-disable-next-line @typescript-eslint/no-empty-function
309
- #onTouchedCallback;
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
311
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyRadioComponent, selector: "sky-radio", inputs: { checked: "checked", disabled: ["disabled", "disabled", booleanAttribute], id: "id", label: "label", labelledBy: "labelledBy", name: "name", tabindex: "tabindex", value: "value", helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", icon: "icon", radioType: "radioType", labelText: "labelText", labelHidden: ["labelHidden", "labelHidden", booleanAttribute], hintText: "hintText", helpKey: "helpKey" }, outputs: { change: "change", checkedChange: "checkedChange", disabledChange: "disabledChange" }, providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR], hostDirectives: [{ directive: i1.SkyThemeComponentClassDirective }], ngImport: i0, template: "<span class=\"sky-radio-outer-wrapper\">\n <label\n class=\"sky-radio-wrapper sky-switch\"\n [ngClass]=\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\"\n >\n <input\n class=\"sky-radio-input sky-switch-input\"\n type=\"radio\"\n [attr.aria-label]=\"labelText || label\"\n [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [checked]=\"checked\"\n [disabled]=\"disabled || radioGroupDisabled\"\n [id]=\"inputId\"\n [name]=\"name\"\n [tabIndex]=\"tabindex\"\n [value]=\"value\"\n (blur)=\"onInputFocusChange()\"\n (change)=\"onInputChange($event)\"\n />\n <span\n class=\"sky-switch-control\"\n [ngClass]=\"{\n 'sky-switch-control-icon': icon,\n 'sky-rounded-corners': icon,\n 'sky-rounded-circle': !icon,\n 'sky-switch-control-info': icon && radioType === 'info',\n 'sky-switch-control-success': icon && radioType === 'success',\n 'sky-switch-control-warning': icon && radioType === 'warning',\n 'sky-switch-control-danger': icon && radioType === 'danger'\n }\"\n >\n @if (icon) {\n <sky-icon [fixedWidth]=\"true\" [icon]=\"icon\" />\n }\n </span>\n @if (labelText) {\n <span\n class=\"sky-switch-label sky-radio-label-text\"\n [class.sky-screen-reader-only]=\"labelHidden\"\n >{{ labelText }}</span\n >\n } @else {\n <ng-content select=\"sky-radio-label\" />\n }\n </label>\n @if ((helpPopoverContent || helpKey) && labelText) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n class=\"sky-radio-help-inline\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n</span>\n<div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-radio-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n</div>\n", styles: [".sky-radio-outer-wrapper:not(.sky-theme-modern *){--sky-override-radio-icon-border-radius: 50%;--sky-override-radio-icon-color-disabled: #000000;--sky-override-radio-icon-color-selected: #000000;--sky-override-radio-icon-size: 10px;--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host.sky-cmp-theme-default{--sky-override-radio-group-radio-bottom-margin: var(--sky-margin-stacked-sm);--sky-override-radio-hint-text-inset: var(--sky-margin-stacked-xs) 0 0 calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host-context(.sky-theme-modern:not(.sky-theme-brand-blackbaud)) .sky-radio-outer-wrapper{--sky-override-radio-icon-color-selected: var(--sky-color-icon-action);--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host:has(.sky-switch-control-icon){display:inline-block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)){display:block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)):not(:last-child){margin-bottom:var(--sky-override-radio-group-radio-bottom-margin, var(--sky-space-gap-form-s))}.sky-radio-outer-wrapper{display:flex}.sky-radio-help-inline{display:inline-flex}.sky-switch:not(:has(~.sky-control-help-container)) .sky-switch-label{margin-right:var(--sky-override-radio-label-margin-right, 0)}.sky-switch-input:checked+.sky-switch-control:not(.sky-switch-control-icon):after{content:\"\";display:inline-block;width:var(--sky-override-radio-icon-size, var(--sky-size-icon-xs));height:var(--sky-override-radio-icon-size, var(--sky-size-icon-xs));background:var(--sky-override-radio-icon-color-selected, var(--sky-color-icon-inverse));border-radius:var(--sky-override-radio-icon-border-radius, var(--sky-border-radius-round))}.sky-radio-input:disabled+.sky-switch-control:not(.sky-switch-control-icon):after{background-color:var(--sky-override-radio-icon-color-disabled, var(--sky-color-text-deemphasized))}.sky-radio-hint-text{margin:var(--sky-override-radio-hint-text-inset, var(--sky-space-gap-stacked_supplemental-s) 0 0 var(--sky-space-inset-switch))}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "component", type: i4.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i5.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "directive", type: i1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
312
- }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioComponent, decorators: [{
314
- type: Component,
315
- args: [{ selector: 'sky-radio', providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [SkyThemeComponentClassDirective], template: "<span class=\"sky-radio-outer-wrapper\">\n <label\n class=\"sky-radio-wrapper sky-switch\"\n [ngClass]=\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\"\n >\n <input\n class=\"sky-radio-input sky-switch-input\"\n type=\"radio\"\n [attr.aria-label]=\"labelText || label\"\n [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [checked]=\"checked\"\n [disabled]=\"disabled || radioGroupDisabled\"\n [id]=\"inputId\"\n [name]=\"name\"\n [tabIndex]=\"tabindex\"\n [value]=\"value\"\n (blur)=\"onInputFocusChange()\"\n (change)=\"onInputChange($event)\"\n />\n <span\n class=\"sky-switch-control\"\n [ngClass]=\"{\n 'sky-switch-control-icon': icon,\n 'sky-rounded-corners': icon,\n 'sky-rounded-circle': !icon,\n 'sky-switch-control-info': icon && radioType === 'info',\n 'sky-switch-control-success': icon && radioType === 'success',\n 'sky-switch-control-warning': icon && radioType === 'warning',\n 'sky-switch-control-danger': icon && radioType === 'danger'\n }\"\n >\n @if (icon) {\n <sky-icon [fixedWidth]=\"true\" [icon]=\"icon\" />\n }\n </span>\n @if (labelText) {\n <span\n class=\"sky-switch-label sky-radio-label-text\"\n [class.sky-screen-reader-only]=\"labelHidden\"\n >{{ labelText }}</span\n >\n } @else {\n <ng-content select=\"sky-radio-label\" />\n }\n </label>\n @if ((helpPopoverContent || helpKey) && labelText) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n class=\"sky-radio-help-inline\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n</span>\n<div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-radio-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n</div>\n", styles: [".sky-radio-outer-wrapper:not(.sky-theme-modern *){--sky-override-radio-icon-border-radius: 50%;--sky-override-radio-icon-color-disabled: #000000;--sky-override-radio-icon-color-selected: #000000;--sky-override-radio-icon-size: 10px;--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host.sky-cmp-theme-default{--sky-override-radio-group-radio-bottom-margin: var(--sky-margin-stacked-sm);--sky-override-radio-hint-text-inset: var(--sky-margin-stacked-xs) 0 0 calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host-context(.sky-theme-modern:not(.sky-theme-brand-blackbaud)) .sky-radio-outer-wrapper{--sky-override-radio-icon-color-selected: var(--sky-color-icon-action);--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host:has(.sky-switch-control-icon){display:inline-block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)){display:block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)):not(:last-child){margin-bottom:var(--sky-override-radio-group-radio-bottom-margin, var(--sky-space-gap-form-s))}.sky-radio-outer-wrapper{display:flex}.sky-radio-help-inline{display:inline-flex}.sky-switch:not(:has(~.sky-control-help-container)) .sky-switch-label{margin-right:var(--sky-override-radio-label-margin-right, 0)}.sky-switch-input:checked+.sky-switch-control:not(.sky-switch-control-icon):after{content:\"\";display:inline-block;width:var(--sky-override-radio-icon-size, var(--sky-size-icon-xs));height:var(--sky-override-radio-icon-size, var(--sky-size-icon-xs));background:var(--sky-override-radio-icon-color-selected, var(--sky-color-icon-inverse));border-radius:var(--sky-override-radio-icon-border-radius, var(--sky-border-radius-round))}.sky-radio-input:disabled+.sky-switch-control:not(.sky-switch-control-icon):after{background-color:var(--sky-override-radio-icon-color-disabled, var(--sky-color-text-deemphasized))}.sky-radio-hint-text{margin:var(--sky-override-radio-hint-text-inset, var(--sky-space-gap-stacked_supplemental-s) 0 0 var(--sky-space-inset-switch))}\n"] }]
316
- }], ctorParameters: () => [], propDecorators: { checked: [{
317
- type: Input
318
- }], disabled: [{
319
- type: Input,
320
- args: [{ transform: booleanAttribute }]
321
- }], id: [{
322
- type: Input
323
- }], label: [{
324
- type: Input
325
- }], labelledBy: [{
326
- type: Input
327
- }], name: [{
328
- type: Input
329
- }], tabindex: [{
330
- type: Input
331
- }], value: [{
332
- type: Input
333
- }], helpPopoverContent: [{
334
- type: Input
335
- }], helpPopoverTitle: [{
336
- type: Input
337
- }], icon: [{
338
- type: Input
339
- }], radioType: [{
340
- type: Input
341
- }], labelText: [{
342
- type: Input
343
- }], labelHidden: [{
344
- type: Input,
345
- args: [{ transform: booleanAttribute }]
346
- }], hintText: [{
347
- type: Input
348
- }], helpKey: [{
349
- type: Input
350
- }], change: [{
351
- type: Output
352
- }], checkedChange: [{
353
- type: Output
354
- }], disabledChange: [{
355
- type: Output
356
- }] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFJbEU7OztHQUdHO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBYTtJQUNqRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUY7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyxpQkFBaUI7SUFNNUI7OztPQUdHO0lBQ0gsSUFDVyxPQUFPLENBQUMsS0FBMEI7UUFDM0MsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoQyxJQUFJ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YW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBQcm92aWRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UsIFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZUNvbXBvbmVudENsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lSYWRpb0dyb3VwSWRTZXJ2aWNlIH0gZnJvbSAnLi9yYWRpby1ncm91cC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVJhZGlvQ2hhbmdlIH0gZnJvbSAnLi90eXBlcy9yYWRpby1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9UeXBlIH0gZnJvbSAnLi90eXBlcy9yYWRpby10eXBlJztcblxuLyoqXG4gKiBQcm92aWRlciBFeHByZXNzaW9uIHRoYXQgYWxsb3dzIHNreS1yYWRpbyB0byByZWdpc3RlciBhcyBhIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICogVGhpcyBhbGxvd3MgaXQgdG8gc3VwcG9ydCBbKG5nTW9kZWwpXS5cbiAqL1xuY29uc3QgU0tZX1JBRElPX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5UmFkaW9Db21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogUmVuZGVycyBhIFNLWSBVWC10aGVtZWQgcmVwbGFjZW1lbnQgZm9yIGFuIEhUTUwgYGlucHV0YCBlbGVtZW50XG4gKiB3aXRoIGB0eXBlPVwicmFkaW9cImAuIFdoZW4gdXNlcnMgc2VsZWN0IGEgcmFkaW8gYnV0dG9uLCBpdHMgdmFsdWUgaXMgZHJpdmVuIHRocm91Z2ggYW5cbiAqIGBuZ01vZGVsYCBhdHRyaWJ1dGUgdGhhdCB5b3Ugc3BlY2lmeSBvbiB0aGUgYHNreS1yYWRpb2AgZWxlbWVudCBvciB0aGUgcGFyZW50IGBza3ktcmFkaW8tZ3JvdXBgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yYWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NLWV9SQURJT19DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3REaXJlY3RpdmVzOiBbU2t5VGhlbWVDb21wb25lbnRDbGFzc0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGZvY3VzIG9mZiBhIHJhZGlvIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBibHVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbmV3Q2hlY2tlZFN0YXRlID0gISF2YWx1ZTtcblxuICAgIGlmICh0aGlzLiNfY2hlY2tlZCAhPT0gbmV3Q2hlY2tlZFN0YXRlKSB7XG4gICAgICB0aGlzLiNfY2hlY2tlZCA9IG5ld0NoZWNrZWRTdGF0ZTtcbiAgICAgIHRoaXMuY2hlY2tlZENoYW5nZS5uZXh0KG5ld0NoZWNrZWRTdGF0ZSk7XG5cbiAgICAgIGlmIChuZXdDaGVja2VkU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2NoZWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBpbnB1dCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBmb3IgdGhlIHJhZGlvIGJ1dHRvbi5cbiAgICogSWYgYSB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGFuIGF1dG9nZW5lcmF0ZWQgSUQgaXMgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dElkID0gYHNreS1yYWRpby0ke3ZhbHVlfS1pbnB1dGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IGBza3ktcmFkaW8tJHt0aGlzLiNkZWZhdWx0SWR9LWlucHV0YDtcbiAgICB9XG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjPy5yZWdpc3Rlcih0aGlzLiNkZWZhdWx0SWQsIHRoaXMuaW5wdXRJZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSByYWRpbyBidXR0b24uIFRoaXMgc2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYGFyaWEtbGFiZWxgXG4gICAqIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIHdoZW4gdGhlIHJhZGlvIGJ1dHRvbiBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbC4gWW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgZm9yIGljb25cbiAgICogcmFkaW8gYnV0dG9ucy4gSWYgdGhlIHJhZGlvIGJ1dHRvbiBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbGFiZWxUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0NvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSByYWRpbyBidXR0b24uIFRoaXMgc2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSByYWRpbyBidXR0b24gZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBsYWJlbFRleHRgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsbGVkQnkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19sYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0NvbXBvbmVudC5sYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogMTAsXG4gICAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxsZWRCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWxsZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBuYW1lYCBwcm9wZXJ0eSBvbiB0aGUgYHNreS1yYWRpby1ncm91cCBlbGVtZW50YC5cbiAgICogV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBgc2t5LXJhZGlvLWdyb3VwYCBlbGVtZW50IHdpdGggYWxsIHJhZGlvIGJ1dHRvbnMsIGJ1dCBpZiB5b3Ugb3B0IG5vdCB0byxcbiAgICogdGhlbiB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyBhIG5hbWUgZm9yIGEgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2ZcbiAgICogdGhlIGB0YWJJbmRleGAgcHJvcGVydHkgb24gdGhlIGBza3ktcmFkaW8tZ3JvdXBgIGVsZW1lbnQuIEl0IHNwZWNpZmllcyBhbiBpbmRleCBmb3IgdGhlIHJhZGlvXG4gICAqIGJ1dHRvbi4gSWYgdGhlIGluZGV4IGlzIG5vdCBkZWZpbmVkLCBpdCBpcyBzZXQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSByYWRpbyBidXR0b24gb24gbG9hZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdUaGUgc2t5LXJhZGlvIGB0YWJpbmRleGAgcHJvcGVydHkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgYHRhYmluZGV4YCBwcm9wZXJ0eSBvbiB0aGUgc2t5LXJhZGlvLWdyb3VwIGNvbXBvbmVudC4nLFxuICAgICk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGFiaW5kZXggPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3RhYmluZGV4ID0gMDtcbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHVibGljIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfdGFiaW5kZXg7XG4gIH1cblxuICAvLyBGb3Igc2V0dGluZyB0aGUgdGFiaW5kZXggZnJvbSB0aGUgcmFkaW8gZ3JvdXBcbiAgcHVibGljIHNldCBncm91cFRhYkluZGV4KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI190YWJpbmRleCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfdGFiaW5kZXggPSAwO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBib3VuZCB0byB0aGUgcmFkaW8gYnV0dG9uJ3MgYHZhbHVlYCBwcm9wZXJ0eS4gVGhlIHZhbHVlIHVzdWFsbHlcbiAgICogY29ycmVzcG9uZHMgdG8gdGhlIHJhZGlvIGJ1dHRvbidzIGxhYmVsLCB3aGljaCB5b3Ugc3BlY2lmeSB3aXRoIHRoZSBgc2t5LXJhZGlvLWxhYmVsYFxuICAgKiBjb21wb25lbnQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgPT09IHRoaXMuI192YWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy4jb25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB0aGlzLiNvblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byByYWRpbyBidXR0b24uIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheSBpbiBwbGFjZSBvZiB0aGUgcmFkaW8gYnV0dG9uLiBUbyBncm91cCByYWRpbyBidXR0b25zIGxpa2UgaW5cbiAgICogdGhlIGRlbW8gYWJvdmUsIHBsYWNlIHRoZSBgc2t5LXN3aXRjaC1pY29uLWdyb3VwYCBjbGFzcyBvbiB0aGUgZGlyZWN0IHBhcmVudCBlbGVtZW50IG9mIHRoZVxuICAgKiByYWRpbyBidXR0b25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGJhY2tncm91bmQgY29sb3IgdHlwZSBhZnRlciB1c2VycyBzZWxlY3QgYW4gaWNvbiByYWRpbyBidXR0b24uXG4gICAqIFRoZSB2YWxpZCBvcHRpb25zIGNvcnJlc3BvbmRcbiAgICogW3RoZSBsYWJlbCBjb21wb25lbnQnc10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2xhYmVsKVxuICAgKiBsYWJlbCB0eXBlcy4gYGRhbmdlcmAgY3JlYXRlcyBhIHJlZCBiYWNrZ3JvdW5kLCBgaW5mb2AgY3JlYXRlcyBhIGJsdWUgYmFja2dyb3VuZCxcbiAgICogYHN1Y2Nlc3NgIGNyZWF0ZXMgYSBncmVlbiBiYWNrZ3JvdW5kLCBhbmQgYHdhcm5pbmdgIGNyZWF0ZXMgYW4gb3JhbmdlIGJhY2tncm91bmQuXG4gICAqIEBkZWZhdWx0IFwiaW5mb1wiXG4gICAqIEBkZXByZWNhdGVkIHJhZGlvVHlwZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJhZGlvVHlwZSgpOiBTa3lSYWRpb1R5cGUge1xuICAgIHJldHVybiB0aGlzLiNfcmFkaW9UeXBlO1xuICB9XG4gIHB1YmxpYyBzZXQgcmFkaW9UeXBlKHZhbHVlOiBTa3lSYWRpb1R5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0NvbXBvbmVudC5yYWRpb1R5cGUnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA3LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4jX3JhZGlvVHlwZSA9IHZhbHVlID8/ICdpbmZvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSByYWRpbyBidXR0b24ncyBsYWJlbC4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0aGUgYHNreS1yYWRpby1sYWJlbGAgd2hlbiB0aGUgbGFiZWwgaXMgdGV4dC1vbmx5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBoaWRlIHRoZSBgbGFiZWxUZXh0YC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSByYWRpbyBidXR0b24gbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCBhIHJhZGlvIGJ1dHRvbi5cbiAgICovXG4gIEBPdXRwdXQoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgcHVibGljIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UmFkaW9DaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGRpc2FibGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLiNfc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZFZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWxlY3RlZFZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJhZGlvR3JvdXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBpbnB1dElkID0gJyc7XG5cbiAgI19jaGVja2VkID0gZmFsc2U7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19uYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfcmFkaW9UeXBlOiBTa3lSYWRpb1R5cGUgPSAnaW5mbyc7XG4gICNfc2VsZWN0ZWRWYWx1ZTogdW5rbm93bjtcbiAgI190YWJpbmRleCA9IDA7XG4gICNfdmFsdWU6IGFueTtcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX2xhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAjZGVmYXVsdElkID0gaW5qZWN0KFNreUlkU2VydmljZSkuZ2VuZXJhdGVJZCgpO1xuICAjcmFkaW9Hcm91cElkU3ZjID0gaW5qZWN0KFNreVJhZGlvR3JvdXBJZFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuI2RlZmF1bHRJZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyYWRpb0dyb3VwSWRTdmM/LnVucmVnaXN0ZXIodGhpcy4jZGVmYXVsdElkKTtcbiAgICB0aGlzLiNyZW1vdmVVbmlxdWVTZWxlY3Rpb25MaXN0ZW5lcigpO1xuICAgIHRoaXMuY2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kaXNhYmxlZENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRHcm91cERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmFkaW9Hcm91cERpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNvbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlLm5leHQoe1xuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZSgpO1xuICAgICAgdGhpcy4jb25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dEZvY3VzQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5ibHVyLm5leHQoKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI3JlbW92ZVVuaXF1ZVNlbGVjdGlvbkxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uQ2hhbmdlQ2FsbGJhY2sgPSAodmFsdWU6IGFueSk6IHZvaWQgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uVG91Y2hlZENhbGxiYWNrID0gKCk6IHZvaWQgPT4ge307XG59XG4iLCI8c3BhbiBjbGFzcz1cInNreS1yYWRpby1vdXRlci13cmFwcGVyXCI+XG4gIDxsYWJlbFxuICAgIGNsYXNzPVwic2t5LXJhZGlvLXdyYXBwZXIgc2t5LXN3aXRjaFwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LXN3aXRjaC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHJhZGlvR3JvdXBEaXNhYmxlZCB9XCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJza3ktcmFkaW8taW5wdXQgc2t5LXN3aXRjaC1pbnB1dFwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFRleHQgfHwgbGFiZWxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsVGV4dCA/IHVuZGVmaW5lZCA6IGxhYmVsbGVkQnlcIlxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmFkaW9Hcm91cERpc2FibGVkXCJcbiAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgW3RhYkluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAoYmx1cik9XCJvbklucHV0Rm9jdXNDaGFuZ2UoKVwiXG4gICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJza3ktc3dpdGNoLWNvbnRyb2xcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LXN3aXRjaC1jb250cm9sLWljb24nOiBpY29uLFxuICAgICAgICAnc2t5LXJvdW5kZWQtY29ybmVycyc6IGljb24sXG4gICAgICAgICdza3ktcm91bmRlZC1jaXJjbGUnOiAhaWNvbixcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC1pbmZvJzogaWNvbiAmJiByYWRpb1R5cGUgPT09ICdpbmZvJyxcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC1zdWNjZXNzJzogaWNvbiAmJiByYWRpb1R5cGUgPT09ICdzdWNjZXNzJyxcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC13YXJuaW5nJzogaWNvbiAmJiByYWRpb1R5cGUgPT09ICd3YXJuaW5nJyxcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC1kYW5nZXInOiBpY29uICYmIHJhZGlvVHlwZSA9PT0gJ2RhbmdlcidcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICA8c2t5LWljb24gW2ZpeGVkV2lkdGhdPVwidHJ1ZVwiIFtpY29uXT1cImljb25cIiAvPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgICBAaWYgKGxhYmVsVGV4dCkge1xuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJza3ktc3dpdGNoLWxhYmVsIHNreS1yYWRpby1sYWJlbC10ZXh0XCJcbiAgICAgICAgW2NsYXNzLnNreS1zY3JlZW4tcmVhZGVyLW9ubHldPVwibGFiZWxIaWRkZW5cIlxuICAgICAgICA+e3sgbGFiZWxUZXh0IH19PC9zcGFuXG4gICAgICA+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktcmFkaW8tbGFiZWxcIiAvPlxuICAgIH1cbiAgPC9sYWJlbD5cbiAgQGlmICgoaGVscFBvcG92ZXJDb250ZW50IHx8IGhlbHBLZXkpICYmIGxhYmVsVGV4dCkge1xuICAgIDxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIj5cbiAgICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICAgY2xhc3M9XCJza3ktcmFkaW8taGVscC1pbmxpbmVcIlxuICAgICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgICBbcG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgIC8+XG4gICAgPC9zcGFuPlxuICB9XG48L3NwYW4+XG48ZGl2ICNoaW50VGV4dEVsPVwic2t5SWRcIiBza3lJZD5cbiAgQGlmIChoaW50VGV4dCkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LXJhZGlvLWhpbnQtdGV4dFwiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZm9udC1oaW50LXRleHQtcyc6ICdtb2Rlcm4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICB7eyBoaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { SkyIdModule, SkyTrimModule } from '@skyux/core';
5
- import { SkyHelpInlineModule } from '@skyux/help-inline';
6
- import { SkyIconModule } from '@skyux/icon';
7
- import { SkyThemeModule } from '@skyux/theme';
8
- import { SkyFormErrorModule } from '../form-error/form-error.module';
9
- import { SkyFormErrorsModule } from '../form-error/form-errors.module';
10
- import { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';
11
- import { SkyRadioGroupComponent } from './radio-group.component';
12
- import { SkyRadioLabelComponent } from './radio-label.component';
13
- import { SkyRadioComponent } from './radio.component';
14
- import * as i0 from "@angular/core";
15
- export class SkyRadioModule {
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioModule, declarations: [SkyRadioComponent,
18
- SkyRadioGroupComponent,
19
- SkyRadioLabelComponent], imports: [CommonModule,
20
- FormsModule,
21
- SkyFormErrorModule,
22
- SkyFormErrorsModule,
23
- SkyHelpInlineModule,
24
- SkyIconModule,
25
- SkyIdModule,
26
- SkyFormsResourcesModule,
27
- SkyTrimModule,
28
- SkyThemeModule], exports: [SkyFormErrorModule,
29
- SkyRadioComponent,
30
- SkyRadioGroupComponent,
31
- SkyRadioLabelComponent] }); }
32
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioModule, imports: [CommonModule,
33
- FormsModule,
34
- SkyFormErrorModule,
35
- SkyFormErrorsModule,
36
- SkyHelpInlineModule,
37
- SkyIconModule,
38
- SkyIdModule,
39
- SkyFormsResourcesModule,
40
- SkyTrimModule,
41
- SkyThemeModule, SkyFormErrorModule] }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRadioModule, decorators: [{
44
- type: NgModule,
45
- args: [{
46
- declarations: [
47
- SkyRadioComponent,
48
- SkyRadioGroupComponent,
49
- SkyRadioLabelComponent,
50
- ],
51
- imports: [
52
- CommonModule,
53
- FormsModule,
54
- SkyFormErrorModule,
55
- SkyFormErrorsModule,
56
- SkyHelpInlineModule,
57
- SkyIconModule,
58
- SkyIdModule,
59
- SkyFormsResourcesModule,
60
- SkyTrimModule,
61
- SkyThemeModule,
62
- ],
63
- exports: [
64
- SkyFormErrorModule,
65
- SkyRadioComponent,
66
- SkyRadioGroupComponent,
67
- SkyRadioLabelComponent,
68
- ],
69
- }]
70
- }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUEyQnRELE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkF2QnZCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsc0JBQXNCLGFBR3RCLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFdBQVc7WUFDWCx1QkFBdUI7WUFDdkIsYUFBYTtZQUNiLGNBQWMsYUFHZCxrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLHNCQUFzQjtZQUN0QixzQkFBc0I7Z0hBR2IsY0FBYyxZQWxCdkIsWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsV0FBVztZQUNYLHVCQUF1QjtZQUN2QixhQUFhO1lBQ2IsY0FBYyxFQUdkLGtCQUFrQjs7NEZBTVQsY0FBYztrQkF6QjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlkTW9kdWxlLCBTa3lUcmltTW9kdWxlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZSc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IubW9kdWxlJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZm9ybXMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVJhZGlvQ29tcG9uZW50LFxuICAgIFNreVJhZGlvR3JvdXBDb21wb25lbnQsXG4gICAgU2t5UmFkaW9MYWJlbENvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VHJpbU1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreUZvcm1FcnJvck1vZHVsZSxcbiAgICBTa3lSYWRpb0NvbXBvbmVudCxcbiAgICBTa3lSYWRpb0dyb3VwQ29tcG9uZW50LFxuICAgIFNreVJhZGlvTGFiZWxDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby90eXBlcy9yYWRpby1jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgYSByYWRpbyBidXR0b24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2t5UmFkaW9DaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIHZhbHVlIGZyb20gdGhlIHJhZGlvIGNvbXBvbmVudC5cbiAgICovXG4gIHZhbHVlOiBhbnk7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGVhZGluZy1sZXZlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvcmFkaW8vdHlwZXMvcmFkaW8tZ3JvdXAtaGVhZGluZy1sZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCA9IDMgfCA0IHwgNTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGVhZGluZy1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvcmFkaW8vdHlwZXMvcmFkaW8tZ3JvdXAtaGVhZGluZy1zdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZSA9IDMgfCA0IHwgNTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvcmFkaW8vdHlwZXMvcmFkaW8tdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZCByYWRpb1R5cGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFxuICovXG5leHBvcnQgdHlwZSBTa3lSYWRpb1R5cGUgPSAnZGFuZ2VyJyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJztcbiJdfQ==
@@ -1,34 +0,0 @@
1
- import { Directive, Input, booleanAttribute, inject } from '@angular/core';
2
- import { NgControl, Validators } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * A host directive used to capture the "required" state of the host's form control.
6
- * @internal
7
- */
8
- export class SkyRequiredStateDirective {
9
- constructor() {
10
- this.required = false;
11
- this.#ngControl = inject(NgControl, { optional: true, self: true });
12
- }
13
- /**
14
- * Whether the `required` attribute is set to `true`, or the control includes
15
- * the `Validators.required` validator.
16
- */
17
- isRequired() {
18
- return (this.required ||
19
- !!this.#ngControl?.control?.hasValidator(Validators.required));
20
- }
21
- #ngControl;
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRequiredStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
23
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: SkyRequiredStateDirective, isStandalone: true, inputs: { required: ["required", "required", booleanAttribute] }, ngImport: i0 }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyRequiredStateDirective, decorators: [{
26
- type: Directive,
27
- args: [{
28
- standalone: true,
29
- }]
30
- }], propDecorators: { required: [{
31
- type: Input,
32
- args: [{ transform: booleanAttribute }]
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yZXF1aXJlZC1zdGF0ZS9yZXF1aXJlZC1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXZEOzs7R0FHRztBQUlILE1BQU0sT0FBTyx5QkFBeUI7SUFIdEM7UUFLUyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBYWYsZUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3pFO0lBWkM7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVRLFVBQVUsQ0FBcUQ7K0dBZjdELHlCQUF5QjttR0FBekIseUJBQXlCLG1FQUNoQixnQkFBZ0I7OzRGQUR6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUdRLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEEgaG9zdCBkaXJlY3RpdmUgdXNlZCB0byBjYXB0dXJlIHRoZSBcInJlcXVpcmVkXCIgc3RhdGUgb2YgdGhlIGhvc3QncyBmb3JtIGNvbnRyb2wuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlIGlzIHNldCB0byBgdHJ1ZWAsIG9yIHRoZSBjb250cm9sIGluY2x1ZGVzXG4gICAqIHRoZSBgVmFsaWRhdG9ycy5yZXF1aXJlZGAgdmFsaWRhdG9yLlxuICAgKi9cbiAgcHVibGljIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucmVxdWlyZWQgfHxcbiAgICAgICEhdGhpcy4jbmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgI25nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG59XG4iXX0=