@sbb-esta/lyne-elements 2.0.3 → 2.1.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 (195) hide show
  1. package/accordion/accordion.d.ts.map +1 -1
  2. package/accordion.js +6 -6
  3. package/alert/alert.js +8 -8
  4. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid-button.js +4 -4
  6. package/autocomplete-grid/autocomplete-grid-optgroup.js +4 -4
  7. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
  8. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  9. package/autocomplete-grid/autocomplete-grid-option.js +10 -10
  10. package/autocomplete-grid/autocomplete-grid-row.js +4 -4
  11. package/autocomplete.js +92 -89
  12. package/breadcrumb/breadcrumb-group.js +4 -4
  13. package/button/accent-button-link.js +9 -9
  14. package/button/accent-button-static.js +6 -6
  15. package/button/accent-button.js +6 -6
  16. package/button/button-link.js +7 -7
  17. package/button/button-static.js +7 -7
  18. package/button/button.js +8 -8
  19. package/button/common.js +1 -1
  20. package/button/mini-button-group.js +8 -8
  21. package/button/secondary-button-link.js +7 -7
  22. package/button/secondary-button-static.js +7 -7
  23. package/button/secondary-button.js +3 -3
  24. package/button/transparent-button-link.js +6 -6
  25. package/button/transparent-button-static.js +5 -5
  26. package/button/transparent-button.js +6 -6
  27. package/card/card-badge.js +9 -9
  28. package/card/card-button.js +5 -5
  29. package/card/card-link.js +7 -7
  30. package/checkbox/checkbox-panel.js +16 -16
  31. package/checkbox/checkbox.js +15 -15
  32. package/checkbox/common.js +3 -3
  33. package/clock.js +8 -8
  34. package/container/container/container.d.ts +1 -1
  35. package/container/container/container.d.ts.map +1 -1
  36. package/container/container.js +21 -21
  37. package/container/sticky-bar/sticky-bar.d.ts +1 -1
  38. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  39. package/container/sticky-bar.js +4 -4
  40. package/core/base-elements.js +8 -8
  41. package/core/controllers.js +4 -4
  42. package/core/datetime/date-adapter.d.ts +1 -1
  43. package/core/datetime/date-adapter.d.ts.map +1 -1
  44. package/core/datetime/native-date-adapter.d.ts +1 -1
  45. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  46. package/core/datetime.js +6 -6
  47. package/core/dom/scroll.d.ts +1 -1
  48. package/core/dom/scroll.d.ts.map +1 -1
  49. package/core/dom.js +39 -39
  50. package/core/eventing.js +4 -4
  51. package/core/mixins.js +18 -18
  52. package/core/styles/core.scss +21 -2
  53. package/core/testing.js +14 -14
  54. package/core.css +18 -2
  55. package/custom-elements.json +364 -428
  56. package/datepicker/common/datepicker-association-controllers.d.ts +21 -0
  57. package/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
  58. package/datepicker/common/datepicker-button.d.ts +17 -9
  59. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  60. package/datepicker/common.d.ts +1 -0
  61. package/datepicker/common.d.ts.map +1 -1
  62. package/datepicker/common.js +130 -92
  63. package/datepicker/datepicker/datepicker.d.ts +19 -4
  64. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  65. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
  66. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  67. package/datepicker/datepicker-toggle.js +108 -112
  68. package/datepicker/datepicker.js +95 -80
  69. package/development/accordion/accordion.d.ts.map +1 -1
  70. package/development/accordion.js +1 -1
  71. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  72. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
  73. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  74. package/development/autocomplete-grid/autocomplete-grid-option.js +3 -3
  75. package/development/autocomplete.js +24 -8
  76. package/development/button/common.js +4 -2
  77. package/development/calendar.js +1 -1
  78. package/development/container/container/container.d.ts +1 -1
  79. package/development/container/container/container.d.ts.map +1 -1
  80. package/development/container/container.js +17 -1
  81. package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
  82. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  83. package/development/container/sticky-bar.js +9 -1
  84. package/development/core/datetime/date-adapter.d.ts +1 -1
  85. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  86. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  87. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  88. package/development/core/datetime.js +1 -1
  89. package/development/core/dom/scroll.d.ts +1 -1
  90. package/development/core/dom/scroll.d.ts.map +1 -1
  91. package/development/core/dom.js +4 -4
  92. package/development/core/mixins.js +1 -1
  93. package/development/datepicker/common/datepicker-association-controllers.d.ts +21 -0
  94. package/development/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
  95. package/development/datepicker/common/datepicker-button.d.ts +17 -9
  96. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  97. package/development/datepicker/common.d.ts +1 -0
  98. package/development/datepicker/common.d.ts.map +1 -1
  99. package/development/datepicker/common.js +139 -90
  100. package/development/datepicker/datepicker/datepicker.d.ts +19 -4
  101. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  102. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
  103. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  104. package/development/datepicker/datepicker-toggle.js +65 -69
  105. package/development/datepicker/datepicker.js +54 -36
  106. package/development/dialog/dialog/dialog.d.ts +2 -0
  107. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  108. package/development/dialog/dialog.js +37 -11
  109. package/development/menu/menu/menu.d.ts.map +1 -1
  110. package/development/menu/menu.js +35 -12
  111. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  112. package/development/navigation/navigation.js +15 -8
  113. package/development/option/option/option-base-element.d.ts +3 -2
  114. package/development/option/option/option-base-element.d.ts.map +1 -1
  115. package/development/option/option.js +15 -8
  116. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  117. package/development/overlay/overlay.d.ts.map +1 -1
  118. package/development/overlay.js +29 -13
  119. package/development/popover/popover/popover.d.ts.map +1 -1
  120. package/development/popover/popover.js +16 -13
  121. package/development/select/select.d.ts +11 -0
  122. package/development/select/select.d.ts.map +1 -1
  123. package/development/select.js +60 -9
  124. package/development/toast/toast.d.ts.map +1 -1
  125. package/development/toast.js +14 -8
  126. package/development/toggle/toggle.js +1 -1
  127. package/development/train/train-wagon.js +1 -1
  128. package/dialog/dialog/dialog.d.ts +2 -0
  129. package/dialog/dialog/dialog.d.ts.map +1 -1
  130. package/dialog/dialog-content.js +3 -3
  131. package/dialog/dialog-title.js +8 -8
  132. package/dialog/dialog.js +59 -49
  133. package/divider.js +12 -12
  134. package/file-selector/file-selector-dropzone.js +5 -5
  135. package/file-selector/file-selector.js +6 -6
  136. package/flip-card/flip-card-details.js +4 -4
  137. package/flip-card/flip-card-summary.js +9 -9
  138. package/header/header-button.js +5 -5
  139. package/header/header-link.js +5 -5
  140. package/icon.js +36 -36
  141. package/link/block-link-button.js +4 -4
  142. package/link/block-link-static.js +9 -9
  143. package/link/block-link.js +4 -4
  144. package/link/common.js +16 -16
  145. package/link/link-button.js +7 -7
  146. package/link/link-static.js +7 -7
  147. package/link/link.js +4 -4
  148. package/link-list/common.js +12 -12
  149. package/loading-indicator-circle.js +11 -11
  150. package/map-container.js +4 -4
  151. package/menu/common.js +7 -7
  152. package/menu/menu/menu.d.ts.map +1 -1
  153. package/menu/menu-button.js +8 -8
  154. package/menu/menu-link.js +6 -6
  155. package/menu/menu.js +64 -42
  156. package/navigation/navigation/navigation.d.ts.map +1 -1
  157. package/navigation/navigation-button.js +4 -4
  158. package/navigation/navigation-link.js +7 -7
  159. package/navigation/navigation-list.js +4 -4
  160. package/navigation/navigation-marker.js +3 -3
  161. package/navigation/navigation.js +21 -20
  162. package/notification.js +17 -17
  163. package/option/optgroup.js +11 -11
  164. package/option/option/option-base-element.d.ts +3 -2
  165. package/option/option/option-base-element.d.ts.map +1 -1
  166. package/option/option.js +113 -101
  167. package/overlay/overlay-base-element.d.ts.map +1 -1
  168. package/overlay/overlay.d.ts.map +1 -1
  169. package/overlay.js +87 -84
  170. package/package.json +1 -1
  171. package/paginator/common.js +6 -6
  172. package/popover/popover/popover.d.ts.map +1 -1
  173. package/popover/popover.js +73 -73
  174. package/radio-button/radio-button-panel.js +5 -5
  175. package/screen-reader-only.js +5 -5
  176. package/select/select.d.ts +11 -0
  177. package/select/select.d.ts.map +1 -1
  178. package/select.js +111 -83
  179. package/slider.js +8 -8
  180. package/standard-theme.css +18 -2
  181. package/status.js +3 -3
  182. package/stepper/step-label.js +4 -4
  183. package/table/table-wrapper.js +4 -4
  184. package/tabs/tab-group.js +24 -24
  185. package/tabs/tab.js +3 -3
  186. package/tag/tag-group.js +7 -7
  187. package/teaser-product/common.js +5 -5
  188. package/teaser-product/teaser-product-static.js +2 -2
  189. package/timetable-occupancy-icon.js +3 -3
  190. package/timetable-occupancy.js +6 -6
  191. package/toast/toast.d.ts.map +1 -1
  192. package/toast.js +58 -54
  193. package/toggle/toggle-option.js +11 -11
  194. package/toggle-check.js +5 -5
  195. package/train/train.js +28 -28
@@ -15,6 +15,7 @@ import { forceType } from "../core/decorators.js";
15
15
  import { findInput, findReferencedElement } from "../core/dom.js";
16
16
  import { EventEmitter, forwardEvent } from "../core/eventing.js";
17
17
  import { i18nDatePickerPlaceholder, i18nDateChangedTo } from "../core/i18n.js";
18
+ import { SbbDatepickerAssociationHostController } from "./common.js";
18
19
  const style = css`:host {
19
20
  border: 0;
20
21
  clip: rect(0 0 0 0);
@@ -37,6 +38,7 @@ const datepickerControlRegisteredEventFactory = () => new CustomEvent("datepicke
37
38
  bubbles: false,
38
39
  composed: true
39
40
  });
41
+ let nextId = 0;
40
42
  let SbbDatepickerElement = (() => {
41
43
  var _wide_accessor_storage, _dateFilter_accessor_storage, _input_accessor_storage, __inputElement_accessor_storage, _a;
42
44
  let _classDecorators = [customElement("sbb-datepicker")];
@@ -61,7 +63,7 @@ let SbbDatepickerElement = (() => {
61
63
  let __inputElement_extraInitializers = [];
62
64
  var SbbDatepickerElement2 = (_a = class extends _classSuper {
63
65
  constructor() {
64
- var _a2, _b;
66
+ var _a2;
65
67
  super();
66
68
  __privateAdd(this, _wide_accessor_storage);
67
69
  __privateAdd(this, _dateFilter_accessor_storage);
@@ -71,36 +73,38 @@ let SbbDatepickerElement = (() => {
71
73
  __privateSet(this, _dateFilter_accessor_storage, (__runInitializers(this, _wide_extraInitializers), __runInitializers(this, _dateFilter_initializers, () => true)));
72
74
  __privateSet(this, _input_accessor_storage, (__runInitializers(this, _dateFilter_extraInitializers), __runInitializers(this, _input_initializers, null)));
73
75
  this._now = __runInitializers(this, _input_extraInitializers);
74
- this._change = new EventEmitter(this, SbbDatepickerElement2.events.change, {
76
+ __privateSet(this, __inputElement_accessor_storage, __runInitializers(this, __inputElement_initializers, null));
77
+ this._change = (__runInitializers(this, __inputElement_extraInitializers), new EventEmitter(this, SbbDatepickerElement2.events.change, {
75
78
  bubbles: true
76
- });
79
+ }));
77
80
  this._inputUpdated = new EventEmitter(this, SbbDatepickerElement2.events.inputUpdated, { bubbles: true, cancelable: true });
78
81
  this._datePickerUpdated = new EventEmitter(this, SbbDatepickerElement2.events.datePickerUpdated, {
79
82
  bubbles: true,
80
83
  cancelable: true
81
84
  });
82
85
  this._validationChange = new EventEmitter(this, SbbDatepickerElement2.events.validationChange);
83
- __privateSet(this, __inputElement_accessor_storage, __runInitializers(this, __inputElement_initializers, null));
84
- this._inputElementPlaceholderMutable = (__runInitializers(this, __inputElement_extraInitializers), false);
86
+ this._inputElementPlaceholderMutable = false;
85
87
  this._inputObserver = !isServer ? new MutationObserver((mutationsList) => {
88
+ var _a3;
86
89
  this._emitInputUpdated();
87
- if (this._inputElement && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
88
- const value = this._inputElement.getAttribute("value");
90
+ (_a3 = this._associationController) == null ? void 0 : _a3.updateControls();
91
+ if (this.inputElement && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
92
+ const value = this.inputElement.getAttribute("value");
89
93
  this.valueAsDate = this._dateAdapter.parse(value, this.now) ?? value;
90
94
  }
91
95
  }) : null;
92
96
  this._dateAdapter = ((_a2 = readConfig().datetime) == null ? void 0 : _a2.dateAdapter) ?? defaultDateAdapter;
93
97
  this._language = new SbbLanguageController(this).withHandler(() => {
94
- if (this._inputElement) {
98
+ if (this.inputElement) {
95
99
  if (this._inputElementPlaceholderMutable) {
96
- this._inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
100
+ this.inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
97
101
  }
98
102
  if (this.valueAsDate) {
99
- this._inputElement.value = this._dateAdapter.format(this.valueAsDate);
103
+ this.inputElement.value = this._dateAdapter.format(this.valueAsDate);
100
104
  }
101
105
  }
102
106
  });
103
- (_b = this.addEventListener) == null ? void 0 : _b.call(this, "datepickerControlRegistered", () => this._emitInputUpdated());
107
+ this._associationController = new SbbDatepickerAssociationHostController(this);
104
108
  }
105
109
  /** If set to true, two months are displayed. */
106
110
  get wide() {
@@ -116,14 +120,22 @@ let SbbDatepickerElement = (() => {
116
120
  set dateFilter(value) {
117
121
  __privateSet(this, _dateFilter_accessor_storage, value);
118
122
  }
119
- /** Reference of the native input connected to the datepicker. */
123
+ /**
124
+ * Reference of the native input connected to the datepicker.
125
+ * If given a string, it will be treated as an id reference and an attempt is
126
+ * made to be resolved for the containing document fragment.
127
+ * If given a HTMLElement instance, it will be used as is.
128
+ */
120
129
  get input() {
121
130
  return __privateGet(this, _input_accessor_storage);
122
131
  }
123
132
  set input(value) {
124
133
  __privateSet(this, _input_accessor_storage, value);
125
134
  }
126
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
135
+ /**
136
+ * A configured date which acts as the current date instead of the real current date.
137
+ * Recommended for testing purposes.
138
+ */
127
139
  set now(value) {
128
140
  this._now = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
129
141
  }
@@ -134,12 +146,16 @@ let SbbDatepickerElement = (() => {
134
146
  set valueAsDate(value) {
135
147
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
136
148
  if (this._tryApplyFormatToInput()) {
137
- this._inputElement.dispatchEvent(new Event("blur", { composed: true }));
149
+ this.inputElement.dispatchEvent(new Event("blur", { composed: true }));
138
150
  }
139
151
  }
140
152
  get valueAsDate() {
141
153
  return this._valueAsDate ?? null;
142
154
  }
155
+ /** The resolved associated input element, as defined by `input`. */
156
+ get inputElement() {
157
+ return this._inputElement;
158
+ }
143
159
  get _inputElement() {
144
160
  return __privateGet(this, __inputElement_accessor_storage);
145
161
  }
@@ -147,11 +163,9 @@ let SbbDatepickerElement = (() => {
147
163
  __privateSet(this, __inputElement_accessor_storage, value);
148
164
  }
149
165
  connectedCallback() {
166
+ this.id || (this.id = `sbb-datepicker-${++nextId}`);
150
167
  super.connectedCallback();
151
168
  this._attachInput();
152
- if (this._inputElement) {
153
- this._emitInputUpdated();
154
- }
155
169
  }
156
170
  willUpdate(changedProperties) {
157
171
  super.willUpdate(changedProperties);
@@ -183,11 +197,11 @@ let SbbDatepickerElement = (() => {
183
197
  return !!this._now;
184
198
  }
185
199
  _attachInput() {
186
- var _a2, _b, _c;
200
+ var _a2, _b, _c, _d;
187
201
  const input = findInput(this, this.input);
188
- if (this._inputElement === input) {
202
+ if (this.inputElement === input) {
189
203
  return;
190
- } else if (this._inputElement) {
204
+ } else if (this.inputElement) {
191
205
  (_a2 = this._datePickerController) == null ? void 0 : _a2.abort();
192
206
  (_b = this._inputObserver) == null ? void 0 : _b.disconnect();
193
207
  }
@@ -211,47 +225,51 @@ let SbbDatepickerElement = (() => {
211
225
  this._parseInput(true);
212
226
  this._tryApplyFormatToInput();
213
227
  this._validateDate();
228
+ this._emitInputUpdated();
229
+ (_d = this._associationController) == null ? void 0 : _d.updateControls();
214
230
  }
215
231
  }
216
232
  _emitInputUpdated() {
217
- const { disabled, readOnly: readonly, min, max } = this._inputElement ?? {};
233
+ const { disabled, readOnly: readonly, min, max } = this.inputElement ?? {};
218
234
  this._inputUpdated.emit({ disabled, readonly, min, max });
219
235
  }
220
236
  _handleInputChange() {
237
+ var _a2;
221
238
  if (this._tryApplyFormatToInput()) {
222
239
  return;
223
240
  }
224
241
  this._validateDate();
225
242
  this._setAriaLiveMessage();
226
243
  this._change.emit();
244
+ (_a2 = this._associationController) == null ? void 0 : _a2.updateControls();
227
245
  }
228
246
  _tryApplyFormatToInput() {
229
- if (!this._inputElement) {
247
+ if (!this.inputElement) {
230
248
  return false;
231
249
  }
232
250
  const formattedDate = this.valueAsDate ? this._dateAdapter.format(this.valueAsDate) : "";
233
- if (formattedDate && this._inputElement.value !== formattedDate) {
251
+ if (formattedDate && this.inputElement.value !== formattedDate) {
234
252
  const setValue = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value").set;
235
- setValue.call(this._inputElement, formattedDate);
236
- this._inputElement.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
237
- this._inputElement.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
253
+ setValue.call(this.inputElement, formattedDate);
254
+ this.inputElement.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
255
+ this.inputElement.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
238
256
  return true;
239
257
  }
240
258
  return false;
241
259
  }
242
260
  _validateDate() {
243
- if (!this._inputElement) {
261
+ if (!this.inputElement) {
244
262
  return;
245
263
  }
246
- const isEmptyOrValid = !this._inputElement.value || this._isDateAvailable();
247
- const wasValid = !this._inputElement.hasAttribute("data-sbb-invalid");
248
- this._inputElement.toggleAttribute("data-sbb-invalid", !isEmptyOrValid);
264
+ const isEmptyOrValid = !this.inputElement.value || this._isDateAvailable();
265
+ const wasValid = !this.inputElement.hasAttribute("data-sbb-invalid");
266
+ this.inputElement.toggleAttribute("data-sbb-invalid", !isEmptyOrValid);
249
267
  if (wasValid !== isEmptyOrValid) {
250
268
  this._validationChange.emit({ valid: isEmptyOrValid });
251
269
  }
252
270
  }
253
271
  _parseInput(deserializeAsFallback = false) {
254
- const value = this._inputElement.value;
272
+ const value = this.inputElement.value;
255
273
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.parse(value, this.now));
256
274
  if (deserializeAsFallback && !this._valueAsDate) {
257
275
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
@@ -280,7 +298,7 @@ let SbbDatepickerElement = (() => {
280
298
  findPreviousAvailableDate(date) {
281
299
  var _a2;
282
300
  const previousDate = this._findAvailableDate(date, -1);
283
- const dateMin = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.min);
301
+ const dateMin = this._dateAdapter.deserialize((_a2 = this.inputElement) == null ? void 0 : _a2.min);
284
302
  if (!dateMin || this._dateAdapter.isValid(dateMin) && this._dateAdapter.compareDate(previousDate, dateMin) >= 0) {
285
303
  return previousDate;
286
304
  }
@@ -294,7 +312,7 @@ let SbbDatepickerElement = (() => {
294
312
  findNextAvailableDate(date) {
295
313
  var _a2;
296
314
  const nextDate = this._findAvailableDate(date, 1);
297
- const dateMax = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.max);
315
+ const dateMax = this._dateAdapter.deserialize((_a2 = this.inputElement) == null ? void 0 : _a2.max);
298
316
  if (!dateMax || this._dateAdapter.isValid(dateMax) && this._dateAdapter.compareDate(nextDate, dateMax) <= 0) {
299
317
  return nextDate;
300
318
  }
@@ -323,8 +341,8 @@ let SbbDatepickerElement = (() => {
323
341
  if (!this.valueAsDate) {
324
342
  return false;
325
343
  }
326
- const dateMin = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.min);
327
- const dateMax = this._dateAdapter.deserialize((_b = this._inputElement) == null ? void 0 : _b.max);
344
+ const dateMin = this._dateAdapter.deserialize((_a2 = this.inputElement) == null ? void 0 : _a2.min);
345
+ const dateMax = this._dateAdapter.deserialize((_b = this.inputElement) == null ? void 0 : _b.max);
328
346
  if (this._dateAdapter.isValid(dateMin) && this._dateAdapter.compareDate(this.valueAsDate, dateMin) < 0 || this._dateAdapter.isValid(dateMax) && this._dateAdapter.compareDate(this.valueAsDate, dateMax) > 0) {
329
347
  return false;
330
348
  }
@@ -372,4 +390,4 @@ export {
372
390
  datepickerControlRegisteredEventFactory,
373
391
  getDatePicker
374
392
  };
375
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBmaW5kSW5wdXQsIGZpbmRSZWZlcmVuY2VkRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgZm9yd2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcjxUID0gRGF0ZT4oXG4gIGVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJCdXR0b248VD4gfCBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUPixcbiAgdHJpZ2dlcj86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgIC5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJylcbiAgICAgID8ucXVlcnlTZWxlY3RvcjxTYmJEYXRlcGlja2VyRWxlbWVudDxUPj4oJ3NiYi1kYXRlcGlja2VyJyk7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pih0cmlnZ2VyKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSA9ICgpOiBDdXN0b21FdmVudCA9PlxuICBuZXcgQ3VzdG9tRXZlbnQoJ2RhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZCcsIHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjb21wb3NlZDogdHJ1ZSxcbiAgfSk7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgdGhlIGlucHV0J3MgdmFsdWUgYXMgYSBmb3JtYXR0ZWQgZGF0ZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBmaXJlZCB0aGUgaW5wdXQgZXZlbnQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHdpZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciBvdXQgZGF0ZXMuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSkgcHVibGljIGFjY2Vzc29yIGRhdGVGaWx0ZXI6IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbiA9ICgpID0+XG4gICAgdHJ1ZTtcblxuICAvKiogUmVmZXJlbmNlIG9mIHRoZSBuYXRpdmUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgaW5wdXQ6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS4gUmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbm93KHZhbHVlOiBTYmJEYXRlTGlrZTxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9ub3cgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5vdygpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fbm93ID8/IHRoaXMuX2RhdGVBZGFwdGVyLnRvZGF5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfbm93PzogVCB8IG51bGw7XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSBhcyBhIERhdGUgb3IgY3VzdG9tIGRhdGUgcHJvdmlkZXIgaW5zdGFuY2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCB2YWx1ZUFzRGF0ZSh2YWx1ZTogU2JiRGF0ZUxpa2U8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIC8qIEVtaXQgYmx1ciBldmVudCB3aGVuIHZhbHVlIGlzIGNoYW5nZWQgcHJvZ3JhbW1hdGljYWxseSB0byBub3RpZnlcbiAgICAgIGZyYW1ld29ya3MgdGhhdCByZWx5IG9uIHRoYXQgZXZlbnQgdG8gdXBkYXRlIGZvcm0gc3RhdHVzLiAqL1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50IS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVBc0RhdGUgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZUFzRGF0ZT86IFQgfCBudWxsO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBAc3RhdGUoKVxuICBwcml2YXRlIGFjY2Vzc29yIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgICAgICAvLyBUT0RPOiBEZWNpZGUgd2hldGhlciB0byByZW1vdmUgdGhpcyBsb2dpYyBieSBhZGRpbmcgYSB2YWx1ZSBwcm9wZXJ0eSB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCAmJiBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgICAgIHRoaXMudmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpID8/IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9kYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4gPSByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcykud2l0aEhhbmRsZXIoKCkgPT4ge1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCAoKSA9PiB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnB1dCcpKSB7XG4gICAgICB0aGlzLl9hdHRhY2hJbnB1dCgpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3dpZGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlRmlsdGVyJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JylcbiAgICApIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJVcGRhdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWVBc0RhdGUnKSkge1xuICAgICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIG5vdyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGhhc0N1c3RvbU5vdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub3c7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGZpbmRJbnB1dCh0aGlzLCB0aGlzLmlucHV0KTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ID09PSBpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8ub2JzZXJ2ZShpbnB1dCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAnbWluJywgJ21heCcsICd2YWx1ZSddLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSA9ICFpbnB1dC5wbGFjZWhvbGRlcjtcbiAgICAgIGlucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIGlucHV0LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH07XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXQnLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIGZvcndhcmRFdmVudChlLCB0aGlzKTtcbiAgICAgICAgICB0aGlzLl9wYXJzZUlucHV0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXRDaGFuZ2UoKSwgb3B0aW9ucyk7XG4gICAgICB0aGlzLl9wYXJzZUlucHV0KHRydWUpO1xuICAgICAgdGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk7XG4gICAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRVcGRhdGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkb25seSwgbWluLCBtYXggfSA9IHRoaXMuX2lucHV0RWxlbWVudCA/PyB7fTtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7IGRpc2FibGVkLCByZWFkb25seSwgbWluLCBtYXggfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgdGhpcy5fY2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLnZhbHVlQXNEYXRlID8gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUhKSA6ICcnO1xuICAgIGlmIChmb3JtYXR0ZWREYXRlICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy5faW5wdXRFbGVtZW50LCBmb3JtYXR0ZWREYXRlKTtcblxuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbXB0eU9yVmFsaWQgPSAhdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlIHx8IHRoaXMuX2lzRGF0ZUF2YWlsYWJsZSgpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJywgIWlzRW1wdHlPclZhbGlkKTtcbiAgICBpZiAod2FzVmFsaWQgIT09IGlzRW1wdHlPclZhbGlkKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VJbnB1dChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZTtcbiAgICAvLyBXZSBhcmUgYXNzaWduaW5nIGRpcmVjdGx5IHRvIHRoZSBwcml2YXRlIGJhY2tpbmcgcHJvcGVydHkgb2YgdmFsdWVBc0RhdGVcbiAgICAvLyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBibHVyIGV2ZW50IGR1cmluZyB0aGlzIHRpbWUuXG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpLFxuICAgICk7XG4gICAgaWYgKGRlc2VyaWFsaXplQXNGYWxsYmFjayAmJiAhdGhpcy5fdmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEFyaWFMaXZlTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlLCB7IHdlZWtkYXlTdHlsZTogJ2xvbmcnIH0pO1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSBgJHtpMThuRGF0ZUNoYW5nZWRUb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkYXRlfWA7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHAgaWQ9XCJzdGF0dXMtY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiPjwvcD5gO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICAgKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWluYCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgcHJldmlvdXNEYXRlID0gdGhpcy5fZmluZEF2YWlsYWJsZURhdGUoZGF0ZSwgLTEpO1xuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1pbik7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1pbiB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1heGAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmROZXh0QXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgbmV4dERhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAxKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5faW5wdXRFbGVtZW50Py5tYXgpO1xuXG4gICAgaWYgKFxuICAgICAgIWRhdGVNYXggfHxcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNYXgpICYmIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKG5leHREYXRlLCBkYXRlTWF4KSA8PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5leHREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgb3IgYWZ0ZXIgYSBnaXZlbiBvbmUsIGNvbnNpZGVyaW5nIHRoZSBgZGF0ZUZpbHRlcmAgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQsIGRlbHRhOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgYXZhaWxhYmxlRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgICBpZiAodGhpcy5kYXRlRmlsdGVyKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuZGF0ZUZpbHRlcihhdmFpbGFibGVEYXRlKSkge1xuICAgICAgICBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGF2YWlsYWJsZURhdGUsIGRlbHRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmFsdWVBc0RhdGUgaXMgdmFsaWQsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAgICogYW5kIGBtaW5gIGFuZCBgbWF4YCBwYXJhbWV0ZXJzIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGVzKS5cbiAgICovXG4gIHByaXZhdGUgX2lzRGF0ZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5faW5wdXRFbGVtZW50Py5taW4pO1xuICAgIGNvbnN0IGRhdGVNYXggPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1heCEpID4gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlRmlsdGVyID8gdGhpcy5kYXRlRmlsdGVyKHRoaXMudmFsdWVBc0RhdGUpIDogdHJ1ZTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJEYXRl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
393
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBmaW5kSW5wdXQsIGZpbmRSZWZlcmVuY2VkRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgZm9yd2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckFzc29jaWF0aW9uSG9zdENvbnRyb2xsZXIsIHR5cGUgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci10b2dnbGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiSW5wdXRVcGRhdGVFdmVudCB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBtaW4/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1heD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQsIGEgU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50IG9yIGEgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgY29tcG9uZW50LFxuICogaXQgcmV0dXJucyB0aGUgcmVsYXRlZCBTYmJEYXRlcGlja2VyRWxlbWVudCByZWZlcmVuY2UsIGlmIGV4aXN0cy5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHBvdGVudGlhbGx5IGNvbm5lY3RlZCB0byB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gdHJpZ2dlciBUaGUgaWQgb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgU2JiRGF0ZVBpY2tlci5cbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBpbiB1c2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlUGlja2VyPFQgPSBEYXRlPihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQ+LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm4gZWxlbWVudFxuICAgICAgLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKVxuICAgICAgPy5xdWVyeVNlbGVjdG9yPFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pignc2JiLWRhdGVwaWNrZXInKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8U2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4+KHRyaWdnZXIpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBpbiB1c2UuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkgPSAoKTogQ3VzdG9tRXZlbnQgPT5cbiAgbmV3IEN1c3RvbUV2ZW50KCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY29tcG9zZWQ6IHRydWUsXG4gIH0pO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGNoYW5nZSAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGlucHV0IC0gTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGZpcmVkIHRoZSBpbnB1dCBldmVudC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD59IGlucHV0VXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkYXRlUGlja2VyVXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+fSB2YWxpZGF0aW9uQ2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXInKVxuY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGlucHV0VXBkYXRlZDogJ2lucHV0VXBkYXRlZCcsXG4gICAgZGF0ZVBpY2tlclVwZGF0ZWQ6ICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgdmFsaWRhdGlvbkNoYW5nZTogJ3ZhbGlkYXRpb25DaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdHdvIG1vbnRocyBhcmUgZGlzcGxheWVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igd2lkZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgYWNjZXNzb3IgZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT5cbiAgICB0cnVlO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIGdpdmVuIGEgc3RyaW5nLCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gaWQgcmVmZXJlbmNlIGFuZCBhbiBhdHRlbXB0IGlzXG4gICAqIG1hZGUgdG8gYmUgcmVzb2x2ZWQgZm9yIHRoZSBjb250YWluaW5nIGRvY3VtZW50IGZyYWdtZW50LlxuICAgKiBJZiBnaXZlbiBhIEhUTUxFbGVtZW50IGluc3RhbmNlLCBpdCB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgaW5wdXQ6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS5cbiAgICogUmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2U8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fbm93ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyB0aGlzLl9kYXRlQWRhcHRlci50b2RheSgpO1xuICB9XG4gIHByaXZhdGUgX25vdz86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgYXMgYSBEYXRlIG9yIGN1c3RvbSBkYXRlIHByb3ZpZGVyIGluc3RhbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50IS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVBc0RhdGUgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZUFzRGF0ZT86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IGBpbnB1dGAuICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50O1xuICB9XG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9pbnB1dE9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgICAgICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIHRoaXMgbG9naWMgYnkgYWRkaW5nIGEgdmFsdWUgcHJvcGVydHkgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCAmJiBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgICAgdGhpcy52YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLm5vdykgPz8gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHByaXZhdGUgX2Fzc29jaWF0aW9uQ29udHJvbGxlciA9IG5ldyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Ib3N0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLWRhdGVwaWNrZXItJHsrK25leHRJZH1gO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaW5wdXQnKSkge1xuICAgICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3aWRlJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGF0ZUZpbHRlcicpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpXG4gICAgKSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyVXBkYXRlZC5lbWl0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlQXNEYXRlJykpIHtcbiAgICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoSW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50ID09PSBpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0RWxlbWVudCA9IGlucHV0O1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5vYnNlcnZlKGlucHV0LCB7XG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seScsICdtaW4nLCAnbWF4JywgJ3ZhbHVlJ10sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gIWlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgaW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgaW5wdXQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dCcsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgZm9yd2FyZEV2ZW50KGUsIHRoaXMpO1xuICAgICAgICAgIHRoaXMuX3BhcnNlSW5wdXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLl9oYW5kbGVJbnB1dENoYW5nZSgpLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuX3BhcnNlSW5wdXQodHJ1ZSk7XG4gICAgICB0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKTtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRJbnB1dFVwZGF0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRvbmx5LCBtaW4sIG1heCB9ID0gdGhpcy5pbnB1dEVsZW1lbnQgPz8ge307XG4gICAgdGhpcy5faW5wdXRVcGRhdGVkLmVtaXQoeyBkaXNhYmxlZCwgcmVhZG9ubHksIG1pbiwgbWF4IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy52YWx1ZUFzRGF0ZSA/IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlISkgOiAnJztcbiAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy5pbnB1dEVsZW1lbnQsIGZvcm1hdHRlZERhdGUpO1xuXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSB8fCB0aGlzLl9pc0RhdGVBdmFpbGFibGUoKTtcbiAgICBjb25zdCB3YXNWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgIGlmICh3YXNWYWxpZCAhPT0gaXNFbXB0eU9yVmFsaWQpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25DaGFuZ2UuZW1pdCh7IHZhbGlkOiBpc0VtcHR5T3JWYWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUlucHV0KGRlc2VyaWFsaXplQXNGYWxsYmFjayA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudCEudmFsdWU7XG4gICAgLy8gV2UgYXJlIGFzc2lnbmluZyBkaXJlY3RseSB0byB0aGUgcHJpdmF0ZSBiYWNraW5nIHByb3BlcnR5IG9mIHZhbHVlQXNEYXRlXG4gICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgYmx1ciBldmVudCBkdXJpbmcgdGhpcyB0aW1lLlxuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSxcbiAgICApO1xuICAgIGlmIChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgJiYgIXRoaXMuX3ZhbHVlQXNEYXRlKSB7XG4gICAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudDogSFRNTFBhcmFncmFwaEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3Rvcj8uPEhUTUxQYXJhZ3JhcGhFbGVtZW50PignI3N0YXR1cy1jb250YWluZXInKTtcblxuICAgIGlmICghY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSwgeyB3ZWVrZGF5U3R5bGU6ICdsb25nJyB9KTtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gYCR7aTE4bkRhdGVDaGFuZ2VkVG9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGF0ZX1gO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGUoZGF0ZTogVCk6IFQge1xuICAgIGNvbnN0IHByZXZpb3VzRGF0ZSA9IHRoaXMuX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGUsIC0xKTtcbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1pbik7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1pbiB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1heGAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmROZXh0QXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgbmV4dERhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAxKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1heCB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dERhdGU7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuIG9uZSwgY29uc2lkZXJpbmcgdGhlIGBkYXRlRmlsdGVyYCBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAgICogQHBhcmFtIGRlbHRhIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQvc3VidHJhY3QgZnJvbSB0aGUgc3RhcnRpbmcgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZEF2YWlsYWJsZURhdGUoZGF0ZTogVCwgZGVsdGE6IG51bWJlcik6IFQge1xuICAgIGxldCBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIGRlbHRhKTtcblxuICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcbiAgICAgIHdoaWxlICghdGhpcy5kYXRlRmlsdGVyKGF2YWlsYWJsZURhdGUpKSB7XG4gICAgICAgIGF2YWlsYWJsZURhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhdmFpbGFibGVEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2YWx1ZUFzRGF0ZSBpcyB2YWxpZCwgY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eVxuICAgKiBhbmQgYG1pbmAgYW5kIGBtYXhgIHBhcmFtZXRlcnMgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNEYXRlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWluKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1heCEpID4gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlRmlsdGVyID8gdGhpcy5kYXRlRmlsdGVyKHRoaXMudmFsdWVBc0RhdGUpIDogdHJ1ZTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJEYXRlcGlja2VyRWxlbWVudCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDZ0IsU0FBQSxjQUNkLFNBQ0EsU0FBOEI7O0FBRTlCLE1BQUksQ0FBQyxTQUFTO0FBQ1osWUFBTyxtQkFDSixZQURJLGlDQUNNLHNCQUROLG1CQUVILGNBQXVDO0FBQUEsRUFBZ0I7QUFHN0QsU0FBTyxzQkFBK0MsT0FBTztBQUMvRDtBQUtPLE1BQU0sMENBQTBDLE1BQ3JELElB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
@@ -16,6 +16,8 @@ export declare class SbbDialogElement extends SbbOverlayBaseElement {
16
16
  static styles: CSSResultGroup;
17
17
  /** Backdrop click action. */
18
18
  accessor backdropAction: 'close' | 'none';
19
+ /** Backdrop density. */
20
+ accessor backdrop: 'opaque' | 'translucent';
19
21
  private _dialogContentResizeObserver;
20
22
  private _dialogTitleElement;
21
23
  private _dialogTitleHeight?;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAMV,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;;IAStD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAiCnB,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IAwB/B,OAAO,CAAC,cAAc;cAeH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAS5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAEV,wBAAwB;IACxB,SAAoE,QAAQ,EACxE,QAAQ,GACR,aAAa,CAAY;IAM7B,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;;IAStD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAmCnB,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IA0B/B,OAAO,CAAC,cAAc;cAeH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAS5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}