@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1780293128 → 5.0.0-next.3-dev.1780308310

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.
@@ -0,0 +1,302 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbElement, SbbFormAssociatedInputMixin, defaultDateAdapter, i18nDateInvalid, i18nDateMax, i18nDateMin, i18nDatePickerPlaceholder, plainDate, plainDateConverter, readConfig } from "./core.js";
5
+ //#region src/elements/date-input/date-input.scss?inline
6
+ var date_input_default = ":host {\n display: inline-flex;\n min-width: 9.375rem;\n max-width: 100%;\n cursor: text;\n align-items: center;\n font-weight: normal;\n}\n@media (forced-colors: active) {\n :host {\n color: FieldText;\n }\n}\n\n:host(:disabled) {\n cursor: var(--sbb-cursor-default);\n}\n\n:host(:focus) {\n text-overflow: initial !important;\n}\n\n:host(:empty)::after {\n content: attr(placeholder);\n color: var(--sbb-color-5);\n -webkit-text-fill-color: var(--sbb-color-5);\n opacity: 1;\n}\n@media (forced-colors: active) {\n :host(:empty)::after {\n color: GrayText;\n }\n}";
7
+ //#endregion
8
+ //#region src/elements/date-input/date-input.component.ts
9
+ Object.assign(ValidityState.prototype, { get sbbDateFilter() {
10
+ return false;
11
+ } });
12
+ /**
13
+ * Custom input for a date.
14
+ */
15
+ var SbbDateInputElement = (() => {
16
+ let _classSuper = SbbFormAssociatedInputMixin(SbbElement);
17
+ let _instanceExtraInitializers = [];
18
+ let _set_valueAsDate_decorators;
19
+ let _min_decorators;
20
+ let _min_initializers = [];
21
+ let _min_extraInitializers = [];
22
+ let _max_decorators;
23
+ let _max_initializers = [];
24
+ let _max_extraInitializers = [];
25
+ let _set_dateFilter_decorators;
26
+ let _weekdayStyle_decorators;
27
+ let _weekdayStyle_initializers = [];
28
+ let _weekdayStyle_extraInitializers = [];
29
+ return class SbbDateInputElement extends _classSuper {
30
+ static {
31
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
32
+ _set_valueAsDate_decorators = [property({ attribute: false })];
33
+ _min_decorators = [plainDate(), property({
34
+ converter: plainDateConverter,
35
+ reflect: true
36
+ })];
37
+ _max_decorators = [plainDate(), property({
38
+ converter: plainDateConverter,
39
+ reflect: true
40
+ })];
41
+ _set_dateFilter_decorators = [property({ attribute: false })];
42
+ _weekdayStyle_decorators = [property({ attribute: "weekday-style" })];
43
+ __esDecorate(this, null, _set_valueAsDate_decorators, {
44
+ kind: "setter",
45
+ name: "valueAsDate",
46
+ static: false,
47
+ private: false,
48
+ access: {
49
+ has: (obj) => "valueAsDate" in obj,
50
+ set: (obj, value) => {
51
+ obj.valueAsDate = value;
52
+ }
53
+ },
54
+ metadata: _metadata
55
+ }, null, _instanceExtraInitializers);
56
+ __esDecorate(this, null, _min_decorators, {
57
+ kind: "accessor",
58
+ name: "min",
59
+ static: false,
60
+ private: false,
61
+ access: {
62
+ has: (obj) => "min" in obj,
63
+ get: (obj) => obj.min,
64
+ set: (obj, value) => {
65
+ obj.min = value;
66
+ }
67
+ },
68
+ metadata: _metadata
69
+ }, _min_initializers, _min_extraInitializers);
70
+ __esDecorate(this, null, _max_decorators, {
71
+ kind: "accessor",
72
+ name: "max",
73
+ static: false,
74
+ private: false,
75
+ access: {
76
+ has: (obj) => "max" in obj,
77
+ get: (obj) => obj.max,
78
+ set: (obj, value) => {
79
+ obj.max = value;
80
+ }
81
+ },
82
+ metadata: _metadata
83
+ }, _max_initializers, _max_extraInitializers);
84
+ __esDecorate(this, null, _set_dateFilter_decorators, {
85
+ kind: "setter",
86
+ name: "dateFilter",
87
+ static: false,
88
+ private: false,
89
+ access: {
90
+ has: (obj) => "dateFilter" in obj,
91
+ set: (obj, value) => {
92
+ obj.dateFilter = value;
93
+ }
94
+ },
95
+ metadata: _metadata
96
+ }, null, _instanceExtraInitializers);
97
+ __esDecorate(this, null, _weekdayStyle_decorators, {
98
+ kind: "accessor",
99
+ name: "weekdayStyle",
100
+ static: false,
101
+ private: false,
102
+ access: {
103
+ has: (obj) => "weekdayStyle" in obj,
104
+ get: (obj) => obj.weekdayStyle,
105
+ set: (obj, value) => {
106
+ obj.weekdayStyle = value;
107
+ }
108
+ },
109
+ metadata: _metadata
110
+ }, _weekdayStyle_initializers, _weekdayStyle_extraInitializers);
111
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
112
+ enumerable: true,
113
+ configurable: true,
114
+ writable: true,
115
+ value: _metadata
116
+ });
117
+ }
118
+ static {
119
+ this.elementName = "sbb-date-input";
120
+ }
121
+ static {
122
+ this.styles = [unsafeCSS(date_input_default)];
123
+ }
124
+ /**
125
+ * The value of the date input. Reflects the current text value
126
+ * of this input.
127
+ * The attribute `value` Accepts ISO8601 formatted values, which will be
128
+ * formatted according to the current locale.
129
+ */
130
+ set value(value) {
131
+ this._tryParseValue(value);
132
+ if (!isServer && !this.isSelected() && this.valueAsDate !== null) value = this._formatDate();
133
+ super.value = value;
134
+ }
135
+ get value() {
136
+ return super.value ?? "";
137
+ }
138
+ /** Formats the current input's value as date. */
139
+ set valueAsDate(value) {
140
+ value = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
141
+ if (this.isSelected() && (value === null || this._dateAdapter.sameDate(value, this._dateAdapter.parse(this.value)))) {} else if (!value) {
142
+ this._valueAsDate = null;
143
+ this._valueCache = ["", null];
144
+ this.value = "";
145
+ } else if (!this._dateAdapter.isDateInstance(this._valueAsDate) || this._dateAdapter.compareDate(this._valueAsDate, value) !== 0) {
146
+ this._valueAsDate = this._dateAdapter.createDate(this._dateAdapter.getYear(value), this._dateAdapter.getMonth(value), this._dateAdapter.getDate(value));
147
+ const stringValue = this._formatDate();
148
+ this._valueCache = [stringValue, this._valueAsDate];
149
+ this.value = stringValue;
150
+ }
151
+ }
152
+ get valueAsDate() {
153
+ return this._valueAsDate ? this._dateAdapter.clone(this._valueAsDate) : null;
154
+ }
155
+ #min_accessor_storage;
156
+ /**
157
+ * The minimum valid date. Accepts a date object or null.
158
+ * Accepts an ISO8601 formatted string (e.g. 2024-12-24) as attribute.
159
+ */
160
+ get min() {
161
+ return this.#min_accessor_storage;
162
+ }
163
+ set min(value) {
164
+ this.#min_accessor_storage = value;
165
+ }
166
+ #max_accessor_storage;
167
+ /**
168
+ * The maximum valid date. Accepts a date object or null.
169
+ * Accepts an ISO8601 formatted string (e.g. 2024-12-24) as attribute.
170
+ */
171
+ get max() {
172
+ return this.#max_accessor_storage;
173
+ }
174
+ set max(value) {
175
+ this.#max_accessor_storage = value;
176
+ }
177
+ /**
178
+ * A function used to filter out dates.
179
+ * It is strongly recommended to use min and max dates alongside
180
+ * this filter.
181
+ */
182
+ set dateFilter(value) {
183
+ this._dateFilter = value;
184
+ }
185
+ get dateFilter() {
186
+ return this._dateFilter;
187
+ }
188
+ #weekdayStyle_accessor_storage;
189
+ /**
190
+ * How to format the displayed date.
191
+ * `short`: Two letter abbreviation of the week day (e.g. Fr).
192
+ * `none`: The weekday is not displayed.
193
+ */
194
+ get weekdayStyle() {
195
+ return this.#weekdayStyle_accessor_storage;
196
+ }
197
+ set weekdayStyle(value) {
198
+ this.#weekdayStyle_accessor_storage = value;
199
+ }
200
+ /**
201
+ * Gets the associated datepicker, if any.
202
+ * The sbb-date-input and the sbb-datepicker are assumed to be in the same parent container.
203
+ */
204
+ get datepicker() {
205
+ return this.parentElement.querySelector("sbb-datepicker");
206
+ }
207
+ constructor() {
208
+ super();
209
+ this._valueAsDate = __runInitializers(this, _instanceExtraInitializers);
210
+ this.#min_accessor_storage = __runInitializers(this, _min_initializers, null);
211
+ this.#max_accessor_storage = (__runInitializers(this, _min_extraInitializers), __runInitializers(this, _max_initializers, null));
212
+ this.#weekdayStyle_accessor_storage = (__runInitializers(this, _max_extraInitializers), __runInitializers(this, _weekdayStyle_initializers, "short"));
213
+ /**
214
+ * Stores the last string and parsed date object value to prevent repeated
215
+ * parsing of the string value.
216
+ */
217
+ this._valueCache = __runInitializers(this, _weekdayStyle_extraInitializers);
218
+ this._dateAdapter = readConfig().datetime?.dateAdapter ?? defaultDateAdapter;
219
+ this._placeholderMutable = false;
220
+ this._dateFilter = () => true;
221
+ this.addEventListener?.("change", () => this._updateValueDateFormat(), { capture: true });
222
+ }
223
+ /**
224
+ * Attempts to resolve the associated date input with the given element.
225
+ */
226
+ static resolveAssociation(host) {
227
+ if (host.hasAttribute("input") || host.input) return;
228
+ const input = host.closest("sbb-form-field")?.querySelector("sbb-date-input");
229
+ if (input) host.input = input;
230
+ }
231
+ connectedCallback() {
232
+ super.connectedCallback();
233
+ if (!this.placeholder) {
234
+ this._placeholderMutable = true;
235
+ this.placeholder = i18nDatePickerPlaceholder[this.language.current];
236
+ }
237
+ for (const child of Array.from(this.closest("sbb-form-field")?.children ?? [])) {
238
+ customElements.upgrade?.(child);
239
+ if (child.constructor.sbbDateInputAssociated && !child.hasAttribute("input") && !child.input) child.input = this;
240
+ }
241
+ }
242
+ requestUpdate(name, oldValue, options) {
243
+ super.requestUpdate(name, oldValue, options);
244
+ if (this.hasUpdated && !name) {
245
+ this._updateValueDateFormat();
246
+ if (this._placeholderMutable) this.placeholder = i18nDatePickerPlaceholder[this.language.current];
247
+ } else if (name === "weekdayStyle") this._updateValueDateFormat();
248
+ if (this.isConnected)
249
+ /** @internal */
250
+ this.dispatchEvent(new Event("ɵchange"));
251
+ }
252
+ updateFormValue() {
253
+ this._tryParseValue();
254
+ const formValue = this.valueAsDate !== null ? this._dateAdapter.toIso8601(this.valueAsDate) : null;
255
+ this.internals.setFormValue(formValue, this.value);
256
+ }
257
+ _tryParseValue(value = this.value) {
258
+ if (this._valueCache?.[0] !== value) {
259
+ this._valueAsDate = this._dateAdapter.parse(value);
260
+ this._valueCache = [value, this._valueAsDate];
261
+ }
262
+ }
263
+ _updateValueDateFormat() {
264
+ if (this.valueAsDate) {
265
+ const formattedDate = this._formatDate();
266
+ if (this.value !== formattedDate) super.value = formattedDate;
267
+ }
268
+ }
269
+ _formatDate() {
270
+ return this._dateAdapter.format(this.valueAsDate, { weekdayStyle: this.weekdayStyle });
271
+ }
272
+ shouldValidate(name) {
273
+ return super.shouldValidate(name) || [
274
+ "valueAsDate",
275
+ "min",
276
+ "max",
277
+ "dateFilter"
278
+ ].includes(name);
279
+ }
280
+ validate() {
281
+ super.validate();
282
+ if (!this.value) this._removeValidityErrors();
283
+ else if (!this._dateAdapter.isValid(this.valueAsDate)) this.setValidityFlag("badInput", i18nDateInvalid[this.language.current]);
284
+ else if (this._dateAdapter.isValid(this.min) && this._dateAdapter.compareDate(this.min, this.valueAsDate) > 0) this.setValidityFlag("rangeUnderflow", i18nDateMin(this._dateAdapter.format(this.min, { weekdayStyle: "none" }))[this.language.current]);
285
+ else if (this._dateAdapter.isValid(this.max) && this._dateAdapter.compareDate(this.valueAsDate, this.max) > 0) this.setValidityFlag("rangeOverflow", i18nDateMax(this._dateAdapter.format(this.max, { weekdayStyle: "none" }))[this.language.current]);
286
+ else if (this.dateFilter && !this.dateFilter(this.valueAsDate)) this.setValidityFlag("sbbDateFilter", i18nDateInvalid[this.language.current]);
287
+ else this._removeValidityErrors();
288
+ }
289
+ _removeValidityErrors() {
290
+ [
291
+ "badInput",
292
+ "rangeUnderflow",
293
+ "rangeOverflow",
294
+ "sbbDateFilter"
295
+ ].forEach((f) => this.removeValidityFlag(f));
296
+ }
297
+ };
298
+ })();
299
+ //#endregion
300
+ export { SbbDateInputElement as t };
301
+
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQtRE1OcWlaNmwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgLy8gV2l0aCBzYmItZm9ybS1maWVsZFt3aWR0aD1cImNvbGxhcHNlZFwiXSwgdGhlIGRlZmF1bHQgbWluIHdpZHRoIG9mIGFcbiAgLy8gYW4gaW5saW5lIGVsZW1lbnQgaXMgYmFzaWNhbGx5IG5vdGhpbmcgKGV4Y2VwdCBwb3RlbnRpYWxseSB0aGUgcGxhY2Vob2xkZXIpLlxuICAvLyBEdWUgdG8gdGhpcywgd2Ugc2V0IGEgbWluaW11bSB3aWR0aCBvZiB0aGUgZGF0ZSBpbnB1dCBlbGVtZW50LlxuICBtaW4td2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNTApfTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBjdXJzb3I6IHRleHQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBjb2xvcjogRmllbGRUZXh0O1xuICB9XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG59XG5cbjpob3N0KDpmb2N1cykge1xuICB0ZXh0LW92ZXJmbG93OiBpbml0aWFsICFpbXBvcnRhbnQ7XG59XG5cbjpob3N0KDplbXB0eSk6OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihwbGFjZWhvbGRlcik7XG4gIEBpbmNsdWRlIHNiYi5wbGFjZWhvbGRlcjtcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBjb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGlzU2VydmVyLCB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgdHlwZSBEYXRlQWRhcHRlcixcbiAgZGVmYXVsdERhdGVBZGFwdGVyLFxuICBpMThuRGF0ZUludmFsaWQsXG4gIGkxOG5EYXRlTWF4LFxuICBpMThuRGF0ZU1pbixcbiAgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlcixcbiAgcGxhaW5EYXRlLFxuICBwbGFpbkRhdGVDb252ZXJ0ZXIsXG4gIHJlYWRDb25maWcsXG4gIFNiYkVsZW1lbnQsXG4gIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpbixcbn0gZnJvbSAnLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5wdXJlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZS1pbnB1dC5zY3NzP2lubGluZSc7XG5cbi8vIEFzIGRvY3VtZW50ZWQgaW4gZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzLCB3ZSBleHRlbmQgdGhlIHByb3RvdHlwZSBvZlxuLy8gVmFsaWRpdHlTdGF0ZSB3aXRoIGN1c3RvbSBlcnJvciBzdGF0ZXMgZm9yIHRoZSBkYXRlIGlucHV0LlxuT2JqZWN0LmFzc2lnbihWYWxpZGl0eVN0YXRlLnByb3RvdHlwZSwge1xuICBnZXQgc2JiRGF0ZUZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG59KTtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGVsZW1lbnRzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGRhdGUgaW5wdXQuXG4gKiBJbXBsZW1lbnRpbmcgY2xhc3NlcyBtdXN0IGFsc28gaGF2ZSBhIHN0YXRpYyBwcm9wZXJ0eSBgc2JiRGF0ZUlucHV0QXNzb2NpYXRlZGAgc2V0IHRvIGB0cnVlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJEYXRlSW5wdXRBc3NvY2lhdGVkPFQ+IHtcbiAgaW5wdXQ6IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsO1xufVxuXG4vKipcbiAqIEN1c3RvbSBpbnB1dCBmb3IgYSBkYXRlLlxuICovXG5leHBvcnQgY2xhc3MgU2JiRGF0ZUlucHV0RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWRhdGUtaW5wdXQnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZGF0ZSBpbnB1dC4gUmVmbGVjdHMgdGhlIGN1cnJlbnQgdGV4dCB2YWx1ZVxuICAgKiBvZiB0aGlzIGlucHV0LlxuICAgKiBUaGUgYXR0cmlidXRlIGB2YWx1ZWAgQWNjZXB0cyBJU084NjAxIGZvcm1hdHRlZCB2YWx1ZXMsIHdoaWNoIHdpbGwgYmVcbiAgICogZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90cnlQYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAvLyBBcyBsb25nIGFzIHRoaXMgZWxlbWVudCBoYXMgZm9jdXMgd2UgZGVsYXkgYXV0b21hdGljYWxseSB1cGRhdGluZ1xuICAgIC8vIHRoZSB2YWx1ZSB3aXRoIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIG9mIHRoZSBwYXJzZWQgZGF0ZS5cbiAgICBpZiAoIWlzU2VydmVyICYmICF0aGlzLmlzU2VsZWN0ZWQoKSAmJiB0aGlzLnZhbHVlQXNEYXRlICE9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuX2Zvcm1hdERhdGUoKTtcbiAgICB9XG4gICAgc3VwZXIudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbHVlID8/ICcnO1xuICB9XG5cbiAgLyoqIEZvcm1hdHMgdGhlIGN1cnJlbnQgaW5wdXQncyB2YWx1ZSBhcyBkYXRlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgdmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmlzU2VsZWN0ZWQoKSAmJlxuICAgICAgKHZhbHVlID09PSBudWxsIHx8IHRoaXMuX2RhdGVBZGFwdGVyLnNhbWVEYXRlKHZhbHVlLCB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh0aGlzLnZhbHVlKSkpXG4gICAgKSB7XG4gICAgICAvLyBEbyBub3RoaW5nLCBhcyB0aGUgdXNlciBpcyBjdXJyZW50bHkgZWRpdGluZyB0aGUgdmFsdWUgYW5kIHRoZSBwYXJzZWRcbiAgICAgIC8vIGRhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAgICAvLyBUaGlzIGNhbiBhbHNvIGhhcHBlbiB3aXRoIEFuZ3VsYXIgRm9ybXMgU2lnbmFscywgYXMgaXQgY3VycmVudGx5XG4gICAgICAvLyBjb250aW51b3VzbHkgaW52b2tlcyB3cml0ZVZhbHVlLCB3aGljaCBhc3NpZ25zIHRvIHRoaXMgc2V0dGVyLlxuICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLl92YWx1ZUNhY2hlID0gWycnLCBudWxsXTtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMuX2RhdGVBZGFwdGVyLmlzRGF0ZUluc3RhbmNlKHRoaXMuX3ZhbHVlQXNEYXRlKSB8fFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy5fdmFsdWVBc0RhdGUhLCB2YWx1ZSEpICE9PSAwXG4gICAgKSB7XG4gICAgICAvLyBBbGlnbiB3aXRoIHRoZSBuYXRpdmUgZGF0ZSBpbnB1dCwgYXMgaXQgY29waWVzIHRoZSB2YWx1ZSBvZlxuICAgICAgLy8gdGhlIGdpdmVuIGRhdGUgd2l0aG91dCB0aGUgdGltZSBhbmQgZG9lcyBub3QgcmV0YWluIHRoZVxuICAgICAgLy8gb3JpZ2luYWwgaW5zdGFuY2UuXG4gICAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmNyZWF0ZURhdGUoXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmdldFllYXIodmFsdWUpLFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5nZXRNb250aCh2YWx1ZSksXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmdldERhdGUodmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gdGhpcy5fZm9ybWF0RGF0ZSgpO1xuICAgICAgdGhpcy5fdmFsdWVDYWNoZSA9IFtzdHJpbmdWYWx1ZSwgdGhpcy5fdmFsdWVBc0RhdGVdO1xuICAgICAgdGhpcy52YWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IFQgfCBudWxsIHtcbiAgICAvLyBXZSBzaG91bGQgbmV2ZXIgcmV0dXJuIHRoZSBpbnRlcm5hbCBkYXRlIG9iamVjdCBkaXJlY3RseSwgYXMgaXRcbiAgICAvLyBjb3VsZCBiZSBtYW5pcHVsYXRlZCBvdXRzaWRlIG9mIHRoaXMgY2xhc3MuXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNEYXRlID8gdGhpcy5fZGF0ZUFkYXB0ZXIuY2xvbmUodGhpcy5fdmFsdWVBc0RhdGUpIDogbnVsbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZUFzRGF0ZT86IFQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB2YWxpZCBkYXRlLiBBY2NlcHRzIGEgZGF0ZSBvYmplY3Qgb3IgbnVsbC5cbiAgICogQWNjZXB0cyBhbiBJU084NjAxIGZvcm1hdHRlZCBzdHJpbmcgKGUuZy4gMjAyNC0xMi0yNCkgYXMgYXR0cmlidXRlLlxuICAgKi9cbiAgQHBsYWluRGF0ZSgpXG4gIEBwcm9wZXJ0eSh7IGNvbnZlcnRlcjogcGxhaW5EYXRlQ29udmVydGVyLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtaW46IFQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdmFsaWQgZGF0ZS4gQWNjZXB0cyBhIGRhdGUgb2JqZWN0IG9yIG51bGwuXG4gICAqIEFjY2VwdHMgYW4gSVNPODYwMSBmb3JtYXR0ZWQgc3RyaW5nIChlLmcuIDIwMjQtMTItMjQpIGFzIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBwbGFpbkRhdGUoKVxuICBAcHJvcGVydHkoeyBjb252ZXJ0ZXI6IHBsYWluRGF0ZUNvbnZlcnRlciwgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbWF4OiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdXNlZCB0byBmaWx0ZXIgb3V0IGRhdGVzLlxuICAgKiBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byB1c2UgbWluIGFuZCBtYXggZGF0ZXMgYWxvbmdzaWRlXG4gICAqIHRoaXMgZmlsdGVyLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IGRhdGVGaWx0ZXIodmFsdWU6IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbikge1xuICAgIHRoaXMuX2RhdGVGaWx0ZXIgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRhdGVGaWx0ZXIoKTogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgdG8gZm9ybWF0IHRoZSBkaXNwbGF5ZWQgZGF0ZS5cbiAgICogYHNob3J0YDogVHdvIGxldHRlciBhYmJyZXZpYXRpb24gb2YgdGhlIHdlZWsgZGF5IChlLmcuIEZyKS5cbiAgICogYG5vbmVgOiBUaGUgd2Vla2RheSBpcyBub3QgZGlzcGxheWVkLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnd2Vla2RheS1zdHlsZScgfSlcbiAgcHVibGljIGFjY2Vzc29yIHdlZWtkYXlTdHlsZTogJ3Nob3J0JyB8ICdub25lJyA9ICdzaG9ydCc7XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgbGFzdCBzdHJpbmcgYW5kIHBhcnNlZCBkYXRlIG9iamVjdCB2YWx1ZSB0byBwcmV2ZW50IHJlcGVhdGVkXG4gICAqIHBhcnNpbmcgb2YgdGhlIHN0cmluZyB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgX3ZhbHVlQ2FjaGU/OiBbc3RyaW5nLCBUIHwgbnVsbF07XG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlck11dGFibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgYXNzb2NpYXRlZCBkYXRlcGlja2VyLCBpZiBhbnkuXG4gICAqIFRoZSBzYmItZGF0ZS1pbnB1dCBhbmQgdGhlIHNiYi1kYXRlcGlja2VyIGFyZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBzYW1lIHBhcmVudCBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRhdGVwaWNrZXIoKTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRFbGVtZW50IS5xdWVyeVNlbGVjdG9yPFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pignc2JiLWRhdGVwaWNrZXInKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLl91cGRhdGVWYWx1ZURhdGVGb3JtYXQoKSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIHJlc29sdmUgdGhlIGFzc29jaWF0ZWQgZGF0ZSBpbnB1dCB3aXRoIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZXNvbHZlQXNzb2NpYXRpb248VD4oaG9zdDogSFRNTEVsZW1lbnQgJiBTYmJEYXRlSW5wdXRBc3NvY2lhdGVkPFQ+KTogdm9pZCB7XG4gICAgaWYgKGhvc3QuaGFzQXR0cmlidXRlKCdpbnB1dCcpIHx8IGhvc3QuaW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9IGhvc3RcbiAgICAgIC5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpXG4gICAgICA/LnF1ZXJ5U2VsZWN0b3I8U2JiRGF0ZUlucHV0RWxlbWVudDxUPj4oJ3NiYi1kYXRlLWlucHV0Jyk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBob3N0LmlucHV0ID0gaW5wdXQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuX3BsYWNlaG9sZGVyTXV0YWJsZSA9IHRydWU7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20odGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpPy5jaGlsZHJlbiA/PyBbXSkpIHtcbiAgICAgIC8vIEVsZW1lbnRzIG11c3QgYmUgdXBncmFkZWQgaW4gb3JkZXIgZm9yIHRoZSBjb25zdHJ1Y3RvciB0byBiZSBhY2Nlc3NpYmxlLlxuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZT8uKGNoaWxkKTtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkLmNvbnN0cnVjdG9yIGFzIHsgc2JiRGF0ZUlucHV0QXNzb2NpYXRlZD86IGJvb2xlYW4gfSkuc2JiRGF0ZUlucHV0QXNzb2NpYXRlZCAmJlxuICAgICAgICAhY2hpbGQuaGFzQXR0cmlidXRlKCdpbnB1dCcpICYmXG4gICAgICAgICEoY2hpbGQgYXMgUGFydGlhbDxTYmJEYXRlSW5wdXRBc3NvY2lhdGVkPFQ+PikuaW5wdXRcbiAgICAgICkge1xuICAgICAgICAoY2hpbGQgYXMgUGFydGlhbDxTYmJEYXRlSW5wdXRBc3NvY2lhdGVkPFQ+PikuaW5wdXQgPSB0aGlzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgIW5hbWUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlRGF0ZUZvcm1hdCgpO1xuICAgICAgaWYgKHRoaXMuX3BsYWNlaG9sZGVyTXV0YWJsZSkge1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3dlZWtkYXlTdHlsZScpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlRGF0ZUZvcm1hdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgLy8gVXNlZCB0byBub3RpZnkgYXNzb2NpYXRlZCBjb21wb25lbnRzIHRvIHVwZGF0ZSBzdGF0ZVxuICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVjaGFuZ2UnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl90cnlQYXJzZVZhbHVlKCk7XG4gICAgY29uc3QgZm9ybVZhbHVlID1cbiAgICAgIHRoaXMudmFsdWVBc0RhdGUgIT09IG51bGwgPyB0aGlzLl9kYXRlQWRhcHRlci50b0lzbzg2MDEodGhpcy52YWx1ZUFzRGF0ZSkgOiBudWxsO1xuICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZShmb3JtVmFsdWUsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5UGFyc2VWYWx1ZSh2YWx1ZSA9IHRoaXMudmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFsdWVDYWNoZT8uWzBdICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSk7XG4gICAgICB0aGlzLl92YWx1ZUNhY2hlID0gW3ZhbHVlLCB0aGlzLl92YWx1ZUFzRGF0ZV07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWVEYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5fZm9ybWF0RGF0ZSgpO1xuICAgICAgaWYgKHRoaXMudmFsdWUgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgc3VwZXIudmFsdWUgPSBmb3JtYXR0ZWREYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1hdERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUsIHsgd2Vla2RheVN0eWxlOiB0aGlzLndlZWtkYXlTdHlsZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fFxuICAgICAgWyd2YWx1ZUFzRGF0ZScsICdtaW4nLCAnbWF4JywgJ2RhdGVGaWx0ZXInXS5pbmNsdWRlcyhuYW1lIGFzIHN0cmluZylcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLl9yZW1vdmVWYWxpZGl0eUVycm9ycygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQodGhpcy52YWx1ZUFzRGF0ZSkpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCdiYWRJbnB1dCcsIGkxOG5EYXRlSW52YWxpZFt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLm1pbikgJiZcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMubWluLCB0aGlzLnZhbHVlQXNEYXRlKSA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKFxuICAgICAgICAncmFuZ2VVbmRlcmZsb3cnLFxuICAgICAgICBpMThuRGF0ZU1pbih0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy5taW4sIHsgd2Vla2RheVN0eWxlOiAnbm9uZScgfSkpW1xuICAgICAgICAgIHRoaXMubGFuZ3VhZ2UuY3VycmVudFxuICAgICAgICBdLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLm1heCkgJiZcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMudmFsdWVBc0RhdGUsIHRoaXMubWF4KSA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKFxuICAgICAgICAncmFuZ2VPdmVyZmxvdycsXG4gICAgICAgIGkxOG5EYXRlTWF4KHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLm1heCwgeyB3ZWVrZGF5U3R5bGU6ICdub25lJyB9KSlbXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZS5jdXJyZW50XG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlRmlsdGVyICYmICF0aGlzLmRhdGVGaWx0ZXIodGhpcy52YWx1ZUFzRGF0ZSkpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCdzYmJEYXRlRmlsdGVyJywgaTE4bkRhdGVJbnZhbGlkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZW1vdmVWYWxpZGl0eUVycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVZhbGlkaXR5RXJyb3JzKCk6IHZvaWQge1xuICAgIChbJ2JhZElucHV0JywgJ3JhbmdlVW5kZXJmbG93JywgJ3JhbmdlT3ZlcmZsb3cnLCAnc2JiRGF0ZUZpbHRlciddIGFzIGNvbnN0KS5mb3JFYWNoKChmKSA9PlxuICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoZiksXG4gICAgKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGUtaW5wdXQnOiBTYmJEYXRlSW5wdXRFbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEN1c3RvbVZhbGlkaXR5U3RhdGUge1xuICAgIHNiYkRhdGVGaWx0ZXI6IGJvb2xlYW47XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUNzQkEsT0FBTyxPQUFPLGNBQWMsV0FBVyxFQUNyQyxJQUFJLGdCQUFhO0NBQ2YsT0FBTztBQUNULEVBQUEsQ0FDRDs7OztJQWFZLDZCQUFtQjttQkFBbUIsNEJBQTRCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Y0FBNUUsNEJBQXNDLFlBQXVDOzs7a0NBd0J2RixTQUFTLEVBQUUsV0FBVyxNQUFLLENBQUUsQ0FBQztzQkEyQzlCLFVBQVMsR0FDVCxTQUFTO0lBQUUsV0FBVztJQUFvQixTQUFTO0dBQUksQ0FBRSxDQUFDO3NCQU8xRCxVQUFTLEdBQ1QsU0FBUztJQUFFLFdBQVc7SUFBb0IsU0FBUztHQUFJLENBQUUsQ0FBQztpQ0FRMUQsU0FBUyxFQUFFLFdBQVcsTUFBSyxDQUFFLENBQUM7K0JBYTlCLFNBQVMsRUFBRSxXQUFXLGdCQUFlLENBQUUsQ0FBQztHQXhFekMsYUFBQSxNQUFBLE1BQUEsNkJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFB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
@@ -1,4 +1,4 @@
1
- import { t as SbbDateInputElement } from "./date-input.component-Cy7m1ocL.js";
1
+ import { t as SbbDateInputElement } from "./date-input.component-DMNqiZ6l.js";
2
2
  import "./date-input.pure.js";
3
3
  //#region src/elements/date-input.ts
4
4
  /** @entrypoint */
@@ -1,2 +1,2 @@
1
- import { t as SbbDateInputElement } from "./date-input.component-Cy7m1ocL.js";
1
+ import { t as SbbDateInputElement } from "./date-input.component-DMNqiZ6l.js";
2
2
  export { SbbDateInputElement };
@@ -14,7 +14,7 @@ export declare class SbbTimeInputElement extends SbbTimeInputElement_base {
14
14
  set value(value: string);
15
15
  get value(): string;
16
16
  /** Formats the current input's value as date. */
17
- set valueAsDate(date: Date | null);
17
+ set valueAsDate(value: Date | null);
18
18
  get valueAsDate(): Date | null;
19
19
  private _valueAsTime?;
20
20
  /**
@@ -30,6 +30,8 @@ export declare class SbbTimeInputElement extends SbbTimeInputElement_base {
30
30
  private _tryParseValue;
31
31
  /** Validate input against the defined RegExps. */
32
32
  private _parseValue;
33
+ private _toTime;
34
+ private _isSameTime;
33
35
  private _updateValueDateFormat;
34
36
  private _formatTime;
35
37
  protected preparePastedText(text: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"time-input.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/time-input/time-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,KAAK,CAAC;AAG/D,OAAO,EAKL,UAAU,EAIX,MAAM,YAAY,CAAC;;AAcpB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAuC;IAC9E,gBAAgC,WAAW,EAAE,MAAM,CAAoB;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE;;;OAGG;IACH,IAAoB,KAAK,CAAC,KAAK,EAAE,MAAM,EAYtC;IACD,IAAoB,KAAK,IAAI,MAAM,CAElC;IAED,iDAAiD;IACjD,IACW,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAcvC;IACD,IAAW,WAAW,IAAI,IAAI,GAAG,IAAI,CASpC;IACD,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAC,CAAwB;IAE5C,OAAO,CAAC,SAAS,CAAmC;;IAWpC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;cAIzB,eAAe,IAAI,IAAI;IAM1C,OAAO,CAAC,cAAc;IAOtB,kDAAkD;IAClD,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,WAAW;cAUA,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAMvC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO;cAOtD,QAAQ,IAAI,IAAI;IAanC,OAAO,CAAC,qBAAqB;IAI7B,uFAAuF;IACvF,OAAO,CAAC,YAAY;IAIpB,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,aAAa;CAItB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"time-input.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/time-input/time-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,KAAK,CAAC;AAG/D,OAAO,EAKL,UAAU,EAIX,MAAM,YAAY,CAAC;;AAcpB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAuC;IAC9E,gBAAgC,WAAW,EAAE,MAAM,CAAoB;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE;;;OAGG;IACH,IAAoB,KAAK,CAAC,KAAK,EAAE,MAAM,EAYtC;IACD,IAAoB,KAAK,IAAI,MAAM,CAElC;IAED,iDAAiD;IACjD,IACW,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAoBxC;IACD,IAAW,WAAW,IAAI,IAAI,GAAG,IAAI,CASpC;IACD,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAC,CAAwB;IAE5C,OAAO,CAAC,SAAS,CAAmC;;IAWpC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;cAIzB,eAAe,IAAI,IAAI;IAM1C,OAAO,CAAC,cAAc;IAOtB,kDAAkD;IAClD,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,WAAW;cAUA,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAMvC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO;cAOtD,QAAQ,IAAI,IAAI;IAanC,OAAO,CAAC,qBAAqB;IAI7B,uFAAuF;IACvF,OAAO,CAAC,YAAY;IAIpB,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,aAAa;CAItB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbTimeInputElement } from "../time-input.component-CGPW3RCw.js";
1
+ import { t as SbbTimeInputElement } from "../time-input.component-Cdd1dzcG.js";
2
2
  export { SbbTimeInputElement };
@@ -0,0 +1,194 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbElement, SbbFormAssociatedInputMixin, SbbLanguageController, i18nTimeInputChange, i18nTimeInvalid, i18nTimeMax, i18nTimeMaxLength, sbbLiveAnnouncer } from "./core.js";
5
+ //#region src/elements/time-input/time-input.scss?inline
6
+ var time_input_default = ":host {\n display: inline-flex;\n min-width: var(--sbb-time-input-max-width);\n max-width: var(--sbb-time-input-max-width);\n cursor: text;\n align-items: center;\n font-weight: normal;\n}\n@media (forced-colors: active) {\n :host {\n color: FieldText;\n }\n}\n\n:host(:disabled) {\n cursor: var(--sbb-cursor-default);\n}\n\n:host(:focus) {\n text-overflow: initial !important;\n}\n\n:host(:empty)::after {\n content: attr(placeholder);\n color: var(--sbb-color-5);\n -webkit-text-fill-color: var(--sbb-color-5);\n opacity: 1;\n}\n@media (forced-colors: active) {\n :host(:empty)::after {\n color: GrayText;\n }\n}";
7
+ //#endregion
8
+ //#region src/elements/time-input/time-input.component.ts
9
+ var REGEX_ALLOWED_CHARACTERS = /[0-9.:,\-;_hH]/;
10
+ var REGEX_DISALLOWED_CHARACTERS = /[^0-9.:,\-;_hH]/g;
11
+ var REGEX_GROUPS_WITHOUT_COLON = /^([0-9]{1,2})([0-9]{2})$/;
12
+ var REGEX_GROUPS_WITH_COLON = /^([0-9]{1,2})?[.:,\-;_hH]?([0-9]{1,2})?$/;
13
+ /**
14
+ * Custom input for a time.
15
+ */
16
+ var SbbTimeInputElement = (() => {
17
+ let _classSuper = SbbFormAssociatedInputMixin(SbbElement);
18
+ let _instanceExtraInitializers = [];
19
+ let _set_valueAsDate_decorators;
20
+ return class SbbTimeInputElement extends _classSuper {
21
+ static {
22
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
23
+ _set_valueAsDate_decorators = [property({ attribute: false })];
24
+ __esDecorate(this, null, _set_valueAsDate_decorators, {
25
+ kind: "setter",
26
+ name: "valueAsDate",
27
+ static: false,
28
+ private: false,
29
+ access: {
30
+ has: (obj) => "valueAsDate" in obj,
31
+ set: (obj, value) => {
32
+ obj.valueAsDate = value;
33
+ }
34
+ },
35
+ metadata: _metadata
36
+ }, null, _instanceExtraInitializers);
37
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: _metadata
42
+ });
43
+ }
44
+ static {
45
+ this.elementName = "sbb-time-input";
46
+ }
47
+ static {
48
+ this.styles = [unsafeCSS(time_input_default)];
49
+ }
50
+ /**
51
+ * The value of the time input. Reflects the current text value
52
+ * of this input.
53
+ */
54
+ set value(value) {
55
+ value = typeof value === "string" ? value.replace(REGEX_DISALLOWED_CHARACTERS, "").substring(0, 5) : "";
56
+ this._tryParseValue(value);
57
+ if (!isServer && !this.isSelected() && this.valueAsDate !== null) value = this._formatTime();
58
+ super.value = value;
59
+ }
60
+ get value() {
61
+ return super.value ?? "";
62
+ }
63
+ /** Formats the current input's value as date. */
64
+ set valueAsDate(value) {
65
+ const time = this._toTime(value);
66
+ if (this.isSelected() && (time === null || this._isSameTime(time, this._parseValue(this.value)))) {} else if (time) {
67
+ this._valueAsTime = time;
68
+ const formattedValue = this._formatTime();
69
+ if (this.value !== formattedValue) this.value = formattedValue;
70
+ } else {
71
+ this._valueAsTime = null;
72
+ this.value = "";
73
+ }
74
+ }
75
+ get valueAsDate() {
76
+ if (this._valueAsTime && this._isTimeValid(this._valueAsTime)) {
77
+ const date = /* @__PURE__ */ new Date(0);
78
+ date.setHours(this._valueAsTime.hours);
79
+ date.setMinutes(this._valueAsTime.minutes);
80
+ return date;
81
+ } else return null;
82
+ }
83
+ constructor() {
84
+ super();
85
+ this._valueAsTime = __runInitializers(this, _instanceExtraInitializers);
86
+ this._language = new SbbLanguageController(this);
87
+ this.addEventListener?.("change", () => this._updateValueDateFormat(), { capture: true });
88
+ this.addEventListener?.("change", () => sbbLiveAnnouncer.announce(i18nTimeInputChange(this.value)[this._language.current]));
89
+ this.addEventListener?.("keydown", (event) => this._preventCharInsert(event));
90
+ }
91
+ connectedCallback() {
92
+ super.connectedCallback();
93
+ this.inputMode ||= "numeric";
94
+ this.placeholder ||= "HH:MM";
95
+ }
96
+ disconnectedCallback() {
97
+ super.disconnectedCallback();
98
+ }
99
+ updateFormValue() {
100
+ this._tryParseValue();
101
+ const formValue = this.valueAsDate !== null ? this._formatTime() : null;
102
+ this.internals.setFormValue(formValue, this.value);
103
+ }
104
+ _tryParseValue(value = this.value) {
105
+ if (this._valueCache?.[0] !== value) {
106
+ this._valueAsTime = this._parseValue(value);
107
+ this._valueCache = [value, this._valueAsTime ?? null];
108
+ }
109
+ }
110
+ /** Validate input against the defined RegExps. */
111
+ _parseValue(value) {
112
+ const trimmedValue = value?.trim();
113
+ if (!trimmedValue) return null;
114
+ const match = trimmedValue.match(REGEX_GROUPS_WITHOUT_COLON) ?? trimmedValue.match(REGEX_GROUPS_WITH_COLON);
115
+ if (match) return {
116
+ hours: +match[1] || 0,
117
+ minutes: +match[2] || 0
118
+ };
119
+ return null;
120
+ }
121
+ _toTime(value) {
122
+ return value instanceof Date && !isNaN(value.valueOf()) ? {
123
+ hours: value.getHours(),
124
+ minutes: value.getMinutes()
125
+ } : null;
126
+ }
127
+ _isSameTime(time1, time2) {
128
+ return !!(time1 == time2 || time1 && time2 && time1.hours === time2.hours && time1.minutes === time2.minutes);
129
+ }
130
+ _updateValueDateFormat() {
131
+ if (this.valueAsDate) {
132
+ const formattedDate = this._formatTime();
133
+ if (this.value !== formattedDate) super.value = formattedDate;
134
+ }
135
+ }
136
+ _formatTime() {
137
+ const value = this.valueAsDate;
138
+ if (!value) return "";
139
+ return `${String(value.getHours()).padStart(2, "0")}:${String(value.getMinutes()).padStart(2, "0")}`;
140
+ }
141
+ preparePastedText(text) {
142
+ return text.replace(REGEX_DISALLOWED_CHARACTERS, "").substring(0, 5 - (this.textContent?.length ?? 0));
143
+ }
144
+ shouldValidate(name) {
145
+ return super.shouldValidate(name) || [
146
+ "valueAsDate",
147
+ "min",
148
+ "max",
149
+ "dateFilter"
150
+ ].includes(name);
151
+ }
152
+ validate() {
153
+ super.validate();
154
+ if (!this.value) this._removeValidityErrors();
155
+ else if (!this._valueAsTime) this.setValidityFlag("badInput", i18nTimeInvalid[this.language.current]);
156
+ else if (!this._isTimeValid(this._valueAsTime)) this.setValidityFlag("rangeOverflow", i18nTimeMax[this.language.current]);
157
+ else this._removeValidityErrors();
158
+ }
159
+ _removeValidityErrors() {
160
+ ["badInput", "rangeOverflow"].forEach((f) => this.removeValidityFlag(f));
161
+ }
162
+ /** Checks if values of hours and minutes are possible, to avoid non-existent times. */
163
+ _isTimeValid(time) {
164
+ return time.hours < 24 && time.minutes < 60;
165
+ }
166
+ /** Only allow typing numbers and separator keys. */
167
+ _preventCharInsert(event) {
168
+ if (event.ctrlKey || event.altKey || event.metaKey || [
169
+ "Backspace",
170
+ "Tab",
171
+ "Enter",
172
+ "ArrowUp",
173
+ "ArrowDown",
174
+ "ArrowLeft",
175
+ "ArrowRight",
176
+ "Home",
177
+ "End",
178
+ "PageUp",
179
+ "PageDown",
180
+ "Delete"
181
+ ].includes(event.key) || REGEX_ALLOWED_CHARACTERS.test(event.key) && (this.value.length < 5 || this._hasSelection())) return;
182
+ event.preventDefault();
183
+ if (this.value.length >= 5) sbbLiveAnnouncer.announce(i18nTimeMaxLength[this._language.current]);
184
+ }
185
+ _hasSelection() {
186
+ const range = window.getSelection()?.getRangeAt(0);
187
+ return !!range && range.startOffset !== range.endOffset;
188
+ }
189
+ };
190
+ })();
191
+ //#endregion
192
+ export { SbbTimeInputElement as t };
193
+
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnB1dC5jb21wb25lbnQtQ2RkMWR6Y0cuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RpbWUtaW5wdXQvdGltZS1pbnB1dC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90aW1lLWlucHV0L3RpbWUtaW5wdXQuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgLy8gV2l0aCBzYmItZm9ybS1maWVsZFt3aWR0aD1cImNvbGxhcHNlZFwiXSwgdGhlIGRlZmF1bHQgbWluIHdpZHRoIG9mIGFcbiAgLy8gYW4gaW5saW5lIGVsZW1lbnQgaXMgYmFzaWNhbGx5IG5vdGhpbmcgKGV4Y2VwdCBwb3RlbnRpYWxseSB0aGUgcGxhY2Vob2xkZXIpLlxuICAvLyBEdWUgdG8gdGhpcywgd2Ugc2V0IGEgbWluaW11bSB3aWR0aCBmb3IgdGhlIHRpbWUgaW5wdXQgZWxlbWVudC5cbiAgLy8gV2UgYWxzbyBjYW5ub3QgdXNlIHdpZHRoLCBhcyB0aGUgZm9ybSBmaWVsZCBvdmVyd3JpdGVzIHRoYXQgcHJvcGVydHkuXG4gIG1pbi13aWR0aDogdmFyKC0tc2JiLXRpbWUtaW5wdXQtbWF4LXdpZHRoKTtcblxuICAvLyBUaGUgdGltZSBpbnB1dCBhbHNvIGhhcyBhIHZlcnkgc3BlY2lmaWMgZGltZW5zaW9uLCBzbyB3ZSBhbHNvIHNldCB0aGUgbWF4aW11bSB3aWR0aC5cbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItdGltZS1pbnB1dC1tYXgtd2lkdGgpO1xuICBjdXJzb3I6IHRleHQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBjb2xvcjogRmllbGRUZXh0O1xuICB9XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG59XG5cbjpob3N0KDpmb2N1cykge1xuICB0ZXh0LW92ZXJmbG93OiBpbml0aWFsICFpbXBvcnRhbnQ7XG59XG5cbjpob3N0KDplbXB0eSk6OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihwbGFjZWhvbGRlcik7XG4gIEBpbmNsdWRlIHNiYi5wbGFjZWhvbGRlcjtcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBjb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGlzU2VydmVyLCB1bnNhZmVDU1MgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7XG4gIGkxOG5UaW1lSW5wdXRDaGFuZ2UsXG4gIGkxOG5UaW1lSW52YWxpZCxcbiAgaTE4blRpbWVNYXgsXG4gIGkxOG5UaW1lTWF4TGVuZ3RoLFxuICBTYmJFbGVtZW50LFxuICBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW4sXG4gIFNiYkxhbmd1YWdlQ29udHJvbGxlcixcbiAgc2JiTGl2ZUFubm91bmNlcixcbn0gZnJvbSAnLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RpbWUtaW5wdXQuc2Nzcz9pbmxpbmUnO1xuXG5jb25zdCBSRUdFWF9BTExPV0VEX0NIQVJBQ1RFUlMgPSAvWzAtOS46LFxcLTtfaEhdLztcbmNvbnN0IFJFR0VYX0RJU0FMTE9XRURfQ0hBUkFDVEVSUyA9IC9bXjAtOS46LFxcLTtfaEhdL2c7XG5jb25zdCBSRUdFWF9HUk9VUFNfV0lUSE9VVF9DT0xPTiA9IC9eKFswLTldezEsMn0pKFswLTldezJ9KSQvO1xuY29uc3QgUkVHRVhfR1JPVVBTX1dJVEhfQ09MT04gPSAvXihbMC05XXsxLDJ9KT9bLjosXFwtO19oSF0/KFswLTldezEsMn0pPyQvO1xuXG5pbnRlcmZhY2UgVGltZSB7XG4gIGhvdXJzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDdXN0b20gaW5wdXQgZm9yIGEgdGltZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRpbWVJbnB1dEVsZW1lbnQgZXh0ZW5kcyBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXRpbWUtaW5wdXQnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGltZSBpbnB1dC4gUmVmbGVjdHMgdGhlIGN1cnJlbnQgdGV4dCB2YWx1ZVxuICAgKiBvZiB0aGlzIGlucHV0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdmFsdWUgPVxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHZhbHVlLnJlcGxhY2UoUkVHRVhfRElTQUxMT1dFRF9DSEFSQUNURVJTLCAnJykuc3Vic3RyaW5nKDAsIDUpXG4gICAgICAgIDogJyc7XG4gICAgdGhpcy5fdHJ5UGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgLy8gQXMgbG9uZyBhcyB0aGlzIGVsZW1lbnQgaGFzIGZvY3VzIHdlIGRlbGF5IGF1dG9tYXRpY2FsbHkgdXBkYXRpbmdcbiAgICAvLyB0aGUgdmFsdWUgd2l0aCB0aGUgZm9ybWF0dGVkIHN0cmluZyBvZiB0aGUgcGFyc2VkIGRhdGUuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAhdGhpcy5pc1NlbGVjdGVkKCkgJiYgdGhpcy52YWx1ZUFzRGF0ZSAhPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLl9mb3JtYXRUaW1lKCk7XG4gICAgfVxuICAgIHN1cGVyLnZhbHVlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdXBlci52YWx1ZSA/PyAnJztcbiAgfVxuXG4gIC8qKiBGb3JtYXRzIHRoZSBjdXJyZW50IGlucHV0J3MgdmFsdWUgYXMgZGF0ZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlQXNEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLl90b1RpbWUodmFsdWUpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNTZWxlY3RlZCgpICYmXG4gICAgICAodGltZSA9PT0gbnVsbCB8fCB0aGlzLl9pc1NhbWVUaW1lKHRpbWUsIHRoaXMuX3BhcnNlVmFsdWUodGhpcy52YWx1ZSkpKVxuICAgICkge1xuICAgICAgLy8gRG8gbm90aGluZywgYXMgdGhlIHVzZXIgaXMgY3VycmVudGx5IGVkaXRpbmcgdGhlIHZhbHVlIGFuZCB0aGUgcGFyc2VkXG4gICAgICAvLyB0aW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgICAgLy8gVGhpcyBjYW4gYWxzbyBoYXBwZW4gd2l0aCBBbmd1bGFyIEZvcm1zIFNpZ25hbHMsIGFzIGl0IGN1cnJlbnRseVxuICAgICAgLy8gY29udGludW91c2x5IGludm9rZXMgd3JpdGVWYWx1ZSwgd2hpY2ggYXNzaWducyB0byB0aGlzIHNldHRlci5cbiAgICB9IGVsc2UgaWYgKHRpbWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNUaW1lID0gdGltZTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5fZm9ybWF0VGltZSgpO1xuICAgICAgaWYgKHRoaXMudmFsdWUgIT09IGZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWVBc1RpbWUgPSBudWxsO1xuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fdmFsdWVBc1RpbWUgJiYgdGhpcy5faXNUaW1lVmFsaWQodGhpcy5fdmFsdWVBc1RpbWUpKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgICBkYXRlLnNldEhvdXJzKHRoaXMuX3ZhbHVlQXNUaW1lLmhvdXJzKTtcbiAgICAgIGRhdGUuc2V0TWludXRlcyh0aGlzLl92YWx1ZUFzVGltZS5taW51dGVzKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWVBc1RpbWU/OiBUaW1lIHwgbnVsbDtcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBsYXN0IHN0cmluZyBhbmQgcGFyc2VkIGRhdGUgb2JqZWN0IHZhbHVlIHRvIHByZXZlbnQgcmVwZWF0ZWRcbiAgICogcGFyc2luZyBvZiB0aGUgc3RyaW5nIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsdWVDYWNoZT86IFtzdHJpbmcsIFRpbWUgfCBudWxsXTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NoYW5nZScsICgpID0+IHRoaXMuX3VwZGF0ZVZhbHVlRGF0ZUZvcm1hdCgpLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NoYW5nZScsICgpID0+XG4gICAgICBzYmJMaXZlQW5ub3VuY2VyLmFubm91bmNlKGkxOG5UaW1lSW5wdXRDaGFuZ2UodGhpcy52YWx1ZSlbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pLFxuICAgICk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuX3ByZXZlbnRDaGFySW5zZXJ0KGV2ZW50KSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlucHV0TW9kZSB8fD0gJ251bWVyaWMnO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgfHw9ICdISDpNTSc7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5fdHJ5UGFyc2VWYWx1ZSgpO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMudmFsdWVBc0RhdGUgIT09IG51bGwgPyB0aGlzLl9mb3JtYXRUaW1lKCkgOiBudWxsO1xuICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZShmb3JtVmFsdWUsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5UGFyc2VWYWx1ZSh2YWx1ZSA9IHRoaXMudmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFsdWVDYWNoZT8uWzBdICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWVBc1RpbWUgPSB0aGlzLl9wYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3ZhbHVlQ2FjaGUgPSBbdmFsdWUsIHRoaXMuX3ZhbHVlQXNUaW1lID8/IG51bGxdO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBWYWxpZGF0ZSBpbnB1dCBhZ2FpbnN0IHRoZSBkZWZpbmVkIFJlZ0V4cHMuICovXG4gIHByaXZhdGUgX3BhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpbWUgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB2YWx1ZT8udHJpbSgpO1xuICAgIGlmICghdHJpbW1lZFZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IHRoZSBpbnB1dCBpcyAzIG9yIDQgZGlnaXRzOyBzcGxpdCBsaWtlOiBBQj86Q0RcbiAgICBjb25zdCBtYXRjaCA9XG4gICAgICB0cmltbWVkVmFsdWUubWF0Y2goUkVHRVhfR1JPVVBTX1dJVEhPVVRfQ09MT04pID8/IHRyaW1tZWRWYWx1ZS5tYXRjaChSRUdFWF9HUk9VUFNfV0lUSF9DT0xPTik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4geyBob3VyczogK21hdGNoWzFdIHx8IDAsIG1pbnV0ZXM6ICttYXRjaFsyXSB8fCAwIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF90b1RpbWUodmFsdWU6IERhdGUgfCBudWxsKTogVGltZSB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlLnZhbHVlT2YoKSlcbiAgICAgID8geyBob3VyczogdmFsdWUuZ2V0SG91cnMoKSwgbWludXRlczogdmFsdWUuZ2V0TWludXRlcygpIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2FtZVRpbWUodGltZTE6IFRpbWUgfCBudWxsLCB0aW1lMjogVGltZSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aW1lMSA9PSB0aW1lMiB8fFxuICAgICAgKHRpbWUxICYmIHRpbWUyICYmIHRpbWUxLmhvdXJzID09PSB0aW1lMi5ob3VycyAmJiB0aW1lMS5taW51dGVzID09PSB0aW1lMi5taW51dGVzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZURhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLl9mb3JtYXRUaW1lKCk7XG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICBzdXBlci52YWx1ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0VGltZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUFzRGF0ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKHZhbHVlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbWludXRlcyA9IFN0cmluZyh2YWx1ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwcmVwYXJlUGFzdGVkVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZShSRUdFWF9ESVNBTExPV0VEX0NIQVJBQ1RFUlMsICcnKVxuICAgICAgLnN1YnN0cmluZygwLCA1IC0gKHRoaXMudGV4dENvbnRlbnQ/Lmxlbmd0aCA/PyAwKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHxcbiAgICAgIFsndmFsdWVBc0RhdGUnLCAnbWluJywgJ21heCcsICdkYXRlRmlsdGVyJ10uaW5jbHVkZXMobmFtZSBhcyBzdHJpbmcpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fcmVtb3ZlVmFsaWRpdHlFcnJvcnMoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLl92YWx1ZUFzVGltZSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ2JhZElucHV0JywgaTE4blRpbWVJbnZhbGlkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzVGltZVZhbGlkKHRoaXMuX3ZhbHVlQXNUaW1lKSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3JhbmdlT3ZlcmZsb3cnLCBpMThuVGltZU1heFt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVtb3ZlVmFsaWRpdHlFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVWYWxpZGl0eUVycm9ycygpOiB2b2lkIHtcbiAgICAoWydiYWRJbnB1dCcsICdyYW5nZU92ZXJmbG93J10gYXMgY29uc3QpLmZvckVhY2goKGYpID0+IHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKGYpKTtcbiAgfVxuXG4gIC8qKiBDaGVja3MgaWYgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGFyZSBwb3NzaWJsZSwgdG8gYXZvaWQgbm9uLWV4aXN0ZW50IHRpbWVzLiAqL1xuICBwcml2YXRlIF9pc1RpbWVWYWxpZCh0aW1lOiBUaW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRpbWUuaG91cnMgPCAyNCAmJiB0aW1lLm1pbnV0ZXMgPCA2MDtcbiAgfVxuXG4gIC8qKiAgT25seSBhbGxvdyB0eXBpbmcgbnVtYmVycyBhbmQgc2VwYXJhdG9yIGtleXMuICovXG4gIHByaXZhdGUgX3ByZXZlbnRDaGFySW5zZXJ0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgYWx3YXlzQWxsb3dlZCA9IFtcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ1RhYicsXG4gICAgICAnRW50ZXInLFxuICAgICAgJ0Fycm93VXAnLFxuICAgICAgJ0Fycm93RG93bicsXG4gICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICdIb21lJyxcbiAgICAgICdFbmQnLFxuICAgICAgJ1BhZ2VVcCcsXG4gICAgICAnUGFnZURvd24nLFxuICAgICAgJ0RlbGV0ZScsXG4gICAgXTtcblxuICAgIGlmIChcbiAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgIGV2ZW50LmFsdEtleSB8fFxuICAgICAgZXZlbnQubWV0YUtleSB8fFxuICAgICAgYWx3YXlzQWxsb3dlZC5pbmNsdWRlcyhldmVudC5rZXkpIHx8XG4gICAgICAoUkVHRVhfQUxMT1dFRF9DSEFSQUNURVJTLnRlc3QoZXZlbnQua2V5KSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPCA1IHx8IHRoaXMuX2hhc1NlbGVjdGlvbigpKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+PSA1KSB7XG4gICAgICBzYmJMaXZlQW5ub3VuY2VyLmFubm91bmNlKGkxOG5UaW1lTWF4TGVuZ3RoW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYXNTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgcmV0dXJuICEhcmFuZ2UgJiYgcmFuZ2Uuc3RhcnRPZmZzZXQgIT09IHJhbmdlLmVuZE9mZnNldDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRpbWUtaW5wdXQnOiBTYmJUaW1lSW5wdXRFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDZ0JBLElBQU0sMkJBQTJCO0FBQ2pDLElBQU0sOEJBQThCO0FBQ3BDLElBQU0sNkJBQTZCO0FBQ25DLElBQU0sMEJBQTBCOzs7O0lBVW5CLDZCQUFtQjttQkFBUyw0QkFBNEIsVUFBVTs7O2NBQWxFLDRCQUE0QixZQUF1Qzs7O2tDQTBCN0UsU0FBUyxFQUFFLFdBQVcsTUFBSyxDQUFFLENBQUM7R0FDL0IsYUFBQSxNQUFBLE1BQUEsNkJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxpQkFBQTtLQUFBLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBVyxjQUFXO0tBQUE7SUFBQTtJQUFBLFVBQUE7R0FBQSxHQUFBLE1BQUEsMEJBQUE7Ozs7Ozs7OztHQTFCVSxLQUFBLGNBQXNCO0VBQWlCOztHQUNoRCxLQUFBLFNBQXlCLENBQUMsVUFBVSxrQkFBSyxDQUFDO0VBQUU7Ozs7O0VBTW5FLElBQW9CLE1BQU0sT0FBYTtHQUNyQyxRQUNFLE9BQU8sVUFBVSxXQUNiLE1BQU0sUUFBUSw2QkFBNkIsRUFBRSxFQUFFLFVBQVUsR0FBRyxDQUFDLElBQzdEO0dBQ04sS0FBSyxlQUFlLEtBQUs7R0FHekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLFdBQVUsS0FBTSxLQUFLLGdCQUFnQixNQUMxRCxRQUFRLEtBQUssWUFBVztHQUUxQixNQUFNLFFBQVE7RUFDaEI7RUFDQSxJQUFvQixRQUFLO0dBQ3ZCLE9BQU8sTUFBTSxTQUFTO0VBQ3hCOztFQUlBLElBQVcsWUFBWSxPQUFrQjtHQUN2QyxNQUFNLE9BQU8sS0FBSyxRQUFRLEtBQUs7R0FDL0IsSUFDRSxLQUFLLFdBQVUsTUFDZCxTQUFTLFFBQVEsS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLEtBQUssS0FBSyxDQUFDLElBQ3JFLENBS0YsT0FBTyxJQUFJLE1BQU07SUFDZixLQUFLLGVBQWU7SUFDcEIsTUFBTSxpQkFBaUIsS0FBSyxZQUFXO0lBQ3ZDLElBQUksS0FBSyxVQUFVLGdCQUNqQixLQUFLLFFBQVE7R0FFakIsT0FBTztJQUNMLEtBQUssZUFBZTtJQUNwQixLQUFLLFFBQVE7R0FDZjtFQUNGO0VBQ0EsSUFBVyxjQUFXO0dBQ3BCLElBQUksS0FBSyxnQkFBZ0IsS0FBSyxhQUFhLEtBQUssWUFBWSxHQUFHO0lBQzdELE1BQU0sdUJBQU8sSUFBSSxLQUFLLENBQUM7SUFDdkIsS0FBSyxTQUFTLEtBQUssYUFBYSxLQUFLO0lBQ3JDLEtBQUssV0FBVyxLQUFLLGFBQWEsT0FBTztJQUN6QyxPQUFPO0dBQ1QsT0FDRSxPQUFPO0VBRVg7RUFXQSxjQUFBO0dBQ0UsTUFBSztHQVhDLEtBQUEsZUExREcsa0JBQUEsTUFBQSwwQkFBQTtHQWtFSCxLQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtHQUloRCxLQUFLLG1CQUFtQixnQkFBZ0IsS0FBSyx1QkFBc0IsR0FBSSxFQUFFLFNBQVMsS0FBSSxDQUFFO0dBQ3hGLEtBQUssbUJBQW1CLGdCQUN0QixpQkFBaUIsU0FBUyxvQkFBb0IsS0FBSyxLQUFLLEVBQUUsS0FBSyxVQUFVLFFBQVEsQ0FBQztHQUVwRixLQUFLLG1CQUFtQixZQUFZLFVBQVUsS0FBSyxtQkFBbUIsS0FBSyxDQUFDO0VBQzlFO0VBRWdCLG9CQUFpQjtHQUMvQixNQUFNLGtCQUFpQjtHQUN2QixLQUFLLGNBQWM7R0FDbkIsS0FBSyxnQkFBZ0I7RUFDdkI7RUFFZ0IsdUJBQW9CO0dBQ2xDLE1BQU0scUJBQW9CO0VBQzVCO0VBRW1CLGtCQUFlO0dBQ2hDLEtBQUssZUFBYztHQUNuQixNQUFNLFlBQVksS0FBSyxnQkFBZ0IsT0FBTyxLQUFLLFlBQVcsSUFBSztHQUNuRSxLQUFLLFVBQVUsYUFBYSxXQUFXLEtBQUssS0FBSztFQUNuRDtFQUVRLGVBQWUsUUFBUSxLQUFLLE9BQUs7R0FDdkMsSUFBSSxLQUFLLGNBQWMsT0FBTyxPQUFPO0lBQ25DLEtBQUssZUFBZSxLQUFLLFlBQVksS0FBSztJQUMxQyxLQUFLLGNBQWMsQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLElBQUk7R0FDdEQ7RUFDRjs7RUFHUSxZQUFZLE9BQXlCO0dBQzNDLE1BQU0sZUFBZSxPQUFPLEtBQUk7R0FDaEMsSUFBSSxDQUFDLGNBQ0gsT0FBTztHQUlULE1BQU0sUUFDSixhQUFhLE1BQU0sMEJBQTBCLEtBQUssYUFBYSxNQUFNLHVCQUF1QjtHQUM5RixJQUFJLE9BQ0YsT0FBTztJQUFFLE9BQU8sQ0FBQyxNQUFNLE1BQU07SUFBRyxTQUFTLENBQUMsTUFBTSxNQUFNO0dBQUM7R0FHekQsT0FBTztFQUNUO0VBRVEsUUFBUSxPQUFrQjtHQUNoQyxPQUFPLGlCQUFpQixRQUFRLENBQUMsTUFBTSxNQUFNLFFBQU8sQ0FBRSxJQUNsRDtJQUFFLE9BQU8sTUFBTSxTQUFRO0lBQUksU0FBUyxNQUFNLFdBQVU7R0FBRSxJQUN0RDtFQUNOO0VBRVEsWUFBWSxPQUFvQixPQUFrQjtHQUN4RCxPQUFPLENBQUMsRUFDTixTQUFTLFNBQ1IsU0FBUyxTQUFTLE1BQU0sVUFBVSxNQUFNLFNBQVMsTUFBTSxZQUFZLE1BQU07RUFFOUU7RUFFUSx5QkFBc0I7R0FDNUIsSUFBSSxLQUFLLGFBQWE7SUFDcEIsTUFBTSxnQkFBZ0IsS0FBSyxZQUFXO0lBQ3RDLElBQUksS0FBSyxVQUFVLGVBQ2pCLE1BQU0sUUFBUTtHQUVsQjtFQUNGO0VBRVEsY0FBVztHQUNqQixNQUFNLFFBQVEsS0FBSztHQUNuQixJQUFJLENBQUMsT0FDSCxPQUFPO0dBSVQsT0FBTyxHQUZPLE9BQU8sTUFBTSxTQUFRLENBQUUsRUFBRSxTQUFTLEdBQUcsR0FFekMsRUFBSyxHQURDLE9BQU8sTUFBTSxXQUFVLENBQUUsRUFBRSxTQUFTLEdBQUcsR0FDcEM7RUFDckI7RUFFbUIsa0JBQWtCLE1BQVk7R0FDL0MsT0FBTyxLQUNKLFFBQVEsNkJBQTZCLEVBQUUsRUFDdkMsVUFBVSxHQUFHLEtBQUssS0FBSyxhQUFhLFVBQVUsRUFBRTtFQUNyRDtFQUVtQixlQUFlLE1BQTZCO0dBQzdELE9BQ0UsTUFBTSxlQUFlLElBQUksS0FDekI7SUFBQztJQUFlO0lBQU87SUFBTztHQUFZLEVBQUUsU0FBUyxJQUFjO0VBRXZFO0VBRW1CLFdBQVE7R0FDekIsTUFBTSxTQUFRO0dBQ2QsSUFBSSxDQUFDLEtBQUssT0FDUixLQUFLLHNCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxjQUNmLEtBQUssZ0JBQWdCLFlBQVksZ0JBQWdCLEtBQUssU0FBUyxRQUFRO1FBQ2xFLElBQUksQ0FBQyxLQUFLLGFBQWEsS0FBSyxZQUFZLEdBQzdDLEtBQUssZ0JBQWdCLGlCQUFpQixZQUFZLEtBQUssU0FBUyxRQUFRO1FBRXhFLEtBQUssc0JBQXFCO0VBRTlCO0VBRVEsd0JBQXFCO0dBQzFCLENBQUMsWUFBWSxlQUFlLEVBQVksU0FBUyxNQUFNLEtBQUssbUJBQW1CLENBQUMsQ0FBQztFQUNwRjs7RUFHUSxhQUFhLE1BQVU7R0FDN0IsT0FBTyxLQUFLLFFBQVEsTUFBTSxLQUFLLFVBQVU7RUFDM0M7O0VBR1EsbUJBQW1CLE9BQW9CO0dBZ0I3QyxJQUNFLE1BQU0sV0FDTixNQUFNLFVBQ04sTUFBTSxXQUNOO0lBbEJBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtHQU9BLEVBQWMsU0FBUyxNQUFNLEdBQUcsS0FDL0IseUJBQXlCLEtBQUssTUFBTSxHQUFHLE1BQU0sS0FBSyxNQUFNLFNBQVMsS0FBSyxLQUFLLGNBQWEsSUFFekY7R0FHRixNQUFNLGVBQWM7R0FDcEIsSUFBSSxLQUFLLE1BQU0sVUFBVSxHQUN2QixpQkFBaUIsU0FBUyxrQkFBa0IsS0FBSyxVQUFVLFFBQVE7RUFFdkU7RUFFUSxnQkFBYTtHQUNuQixNQUFNLFFBQVEsT0FBTyxhQUFZLEdBQUksV0FBVyxDQUFDO0dBQ2pELE9BQU8sQ0FBQyxDQUFDLFNBQVMsTUFBTSxnQkFBZ0IsTUFBTTtFQUNoRCJ9
@@ -1,4 +1,4 @@
1
- import { t as SbbTimeInputElement } from "./time-input.component-CGPW3RCw.js";
1
+ import { t as SbbTimeInputElement } from "./time-input.component-Cdd1dzcG.js";
2
2
  import "./time-input.pure.js";
3
3
  //#region src/elements/time-input.ts
4
4
  /** @entrypoint */
@@ -1,2 +1,2 @@
1
- import { t as SbbTimeInputElement } from "./time-input.component-CGPW3RCw.js";
1
+ import { t as SbbTimeInputElement } from "./time-input.component-Cdd1dzcG.js";
2
2
  export { SbbTimeInputElement };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sbb-esta/lyne-elements-dev",
3
- "version": "5.0.0-next.3-dev.1780293128",
3
+ "version": "5.0.0-next.3-dev.1780308310",
4
4
  "description": "Lyne Design System",
5
5
  "keywords": [
6
6
  "design system",
7
7
  "web components",
8
8
  "lit",
9
- "https://github.com/sbb-design-systems/lyne-components/commit/3c261cb2488cbbf23e11a0ed60594fc7624520ca"
9
+ "https://github.com/sbb-design-systems/lyne-components/commit/91a12a1b6938ede80e293d4805eb1543ddd7fe3c"
10
10
  ],
11
11
  "type": "module",
12
12
  "exports": {
@@ -1,2 +1,2 @@
1
- import { t as e } from "../time-input.component-DTMCclRN.js";
1
+ import { t as e } from "../time-input.component-j2vUlNKx.js";
2
2
  export { e as SbbTimeInputElement };