@sbb-esta/lyne-elements-dev 4.11.0-dev.1776240805 → 4.11.0-dev.1776257860

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 (41) hide show
  1. package/custom-elements.json +465 -262
  2. package/development/autocomplete/autocomplete-base-element.d.ts +6 -0
  3. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  4. package/development/autocomplete/autocomplete-base-element.js +1 -1
  5. package/development/autocomplete/autocomplete.component.js +1 -1
  6. package/development/autocomplete-base-element-VKU7Lpr7.js +684 -0
  7. package/development/autocomplete.js +1 -1
  8. package/development/autocomplete.pure.js +1 -1
  9. package/development/datepicker/common/datepicker-button.d.ts +6 -0
  10. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  11. package/development/datepicker/common/datepicker-button.js +1 -1
  12. package/development/datepicker/common.js +1 -1
  13. package/development/datepicker/datepicker/datepicker.component.d.ts +3 -0
  14. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  15. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  16. package/development/datepicker/datepicker.js +1 -1
  17. package/development/datepicker-button-CUPeoQgH.js +169 -0
  18. package/development/datepicker.component-D2DxFng_.js +216 -0
  19. package/development/datepicker.js +2 -2
  20. package/development/datepicker.pure.js +2 -2
  21. package/development/form-field/form-field-clear/form-field-clear.component.d.ts +3 -0
  22. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  23. package/development/form-field/form-field-clear/form-field-clear.component.js +4 -1
  24. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts +3 -0
  25. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts.map +1 -1
  26. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  27. package/development/timetable-form/timetable-form-swap-button.js +1 -1
  28. package/development/{timetable-form-swap-button.component-BUKUjrpl.js → timetable-form-swap-button.component-Bh9aPmdn.js} +4 -1
  29. package/development/timetable-form.js +1 -1
  30. package/development/timetable-form.pure.js +1 -1
  31. package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -0
  32. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  33. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  34. package/development/toggle/toggle-option.js +1 -1
  35. package/development/{toggle-option.component-D-F7Fh7i.js → toggle-option.component-DRodFwFk.js} +2 -1
  36. package/development/toggle.js +1 -1
  37. package/development/toggle.pure.js +1 -1
  38. package/package.json +2 -2
  39. package/development/autocomplete-base-element-YwfObJzm.js +0 -678
  40. package/development/datepicker-button-CANzGO5m.js +0 -163
  41. package/development/datepicker.component-C8XQVo45.js +0 -213
@@ -1,163 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, unsafeCSS } from "lit";
3
- import { property } from "lit/decorators.js";
4
- import { SbbButtonBaseElement } from "./core/base-elements.js";
5
- import { idReference } from "./core/decorators.js";
6
- import { SbbNegativeMixin } from "./core/mixins.js";
7
- import { SbbLanguageController } from "./core/controllers.js";
8
- import { i18nToday } from "./core/i18n.js";
9
- import "./icon.js";
10
- import { readConfig } from "./core/config.js";
11
- import { defaultDateAdapter } from "./core/datetime.js";
12
- import { SbbDateInputElement } from "./date-input.js";
13
- //#endregion
14
- //#region src/elements/datepicker/common/datepicker-button.ts
15
- var datepickerButtonStyle = unsafeCSS(".sbb-action-base {\n margin: auto;\n -webkit-tap-highlight-color: transparent;\n}");
16
- var SbbDatepickerButtonBase = (() => {
17
- let _classSuper = SbbNegativeMixin(SbbButtonBaseElement);
18
- let _input_decorators;
19
- let _input_initializers = [];
20
- let _input_extraInitializers = [];
21
- return class SbbDatepickerButtonBase extends _classSuper {
22
- constructor() {
23
- super(...arguments);
24
- this.#input_accessor_storage = __runInitializers(this, _input_initializers, null);
25
- /** Whether the component is disabled due date-picker's input disabled. */
26
- this._inputDisabled = (__runInitializers(this, _input_extraInitializers), true);
27
- this.dateAdapter = readConfig().datetime?.dateAdapter ?? defaultDateAdapter;
28
- this.language = new SbbLanguageController(this);
29
- }
30
- static {
31
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
32
- _input_decorators = [idReference(), property()];
33
- __esDecorate(this, null, _input_decorators, {
34
- kind: "accessor",
35
- name: "input",
36
- static: false,
37
- private: false,
38
- access: {
39
- has: (obj) => "input" in obj,
40
- get: (obj) => obj.input,
41
- set: (obj, value) => {
42
- obj.input = value;
43
- }
44
- },
45
- metadata: _metadata
46
- }, _input_initializers, _input_extraInitializers);
47
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: _metadata
52
- });
53
- }
54
- static {
55
- this.sbbDateInputAssociated = true;
56
- }
57
- #input_accessor_storage;
58
- /**
59
- * The associated date input element.
60
- *
61
- * For attribute usage, provide an id reference.
62
- */
63
- get input() {
64
- return this.#input_accessor_storage;
65
- }
66
- set input(value) {
67
- this.#input_accessor_storage = value;
68
- }
69
- /** Whether this button is disabled. */
70
- get disabled() {
71
- return !!this._inputDisabled;
72
- }
73
- connectedCallback() {
74
- super.connectedCallback();
75
- this.toggleAttribute("disabled", this.disabled);
76
- const formField = this.closest?.("sbb-form-field");
77
- if (formField) {
78
- customElements.upgrade?.(formField);
79
- this.negative = formField.negative;
80
- SbbDateInputElement.resolveAssociation(this);
81
- this.slot ||= this._findSlotPosition();
82
- }
83
- }
84
- requestUpdate(name, oldValue, options) {
85
- super.requestUpdate(name, oldValue, options);
86
- if (name === "input" && this.input !== oldValue) {
87
- this._inputAbortController?.abort();
88
- this._inputDisabled = true;
89
- if (this.input) {
90
- this._inputAbortController = new AbortController();
91
- this.slot = this._findSlotPosition();
92
- customElements.upgrade?.(this.input);
93
- this._sync();
94
- this.input.addEventListener("ɵchange", () => this._sync());
95
- }
96
- if (this.hasUpdated) this.toggleAttribute("disabled", this.disabled);
97
- } else if (!name && this.hasUpdated && this.input) this._sync();
98
- }
99
- _findSlotPosition() {
100
- return !this.input || this.compareDocumentPosition(this.input) & Node.DOCUMENT_POSITION_FOLLOWING ? "prefix" : "suffix";
101
- }
102
- _sync() {
103
- this.syncDateInputState();
104
- this.toggleAttribute("disabled", this.disabled);
105
- if (this.disabled) this.removeAttribute("tabindex");
106
- else this.setAttribute("tabindex", "0");
107
- }
108
- syncDateInputState() {
109
- this._inputDisabled = this.input.disabled || this.input.readOnly;
110
- }
111
- renderTemplate() {
112
- return html`<sbb-icon name=${this.iconName}></sbb-icon>`;
113
- }
114
- };
115
- })();
116
- var SbbDatepickerButton = class extends SbbDatepickerButtonBase {
117
- get disabled() {
118
- return this._disabled || super.disabled;
119
- }
120
- constructor() {
121
- super();
122
- /** Whether the component is disabled due date equals to boundary date. */
123
- this._disabled = true;
124
- this.addEventListener?.("click", () => this._handleClick());
125
- }
126
- /** @deprecated Use `getFollowingDate(date: T)` instead. */
127
- findAvailableDate(_date) {
128
- return this.getFollowingDate(_date);
129
- }
130
- _handleClick() {
131
- if (!this.input || this.disabled) return;
132
- const startingDate = this.input.valueAsDate ?? this.dateAdapter.today();
133
- const date = this.getFollowingDate(startingDate);
134
- if (this.dateAdapter.isValid(date) && this.dateAdapter.compareDate(date, startingDate) !== 0) {
135
- this.input.valueAsDate = date;
136
- this.input.dispatchEvent(new InputEvent("input", {
137
- bubbles: true,
138
- composed: true
139
- }));
140
- this.input.dispatchEvent(new Event("change", {
141
- bubbles: true,
142
- composed: true
143
- }));
144
- this.input.dispatchEvent(new Event("blur", { composed: true }));
145
- }
146
- }
147
- syncDateInputState() {
148
- super.syncDateInputState();
149
- if (!this.dateAdapter.isValid(this.input.valueAsDate)) {
150
- this._disabled = true;
151
- this.internals.ariaLabel = this.i18nOffBoundaryDay[this.language.current];
152
- return;
153
- }
154
- const date = this.getFollowingDate(this.input.valueAsDate);
155
- this._disabled = !this.dateAdapter.isValid(date) || this.dateAdapter.compareDate(date, this.input.valueAsDate) === 0;
156
- const currentDateString = this.dateAdapter.compareDate(this.dateAdapter.today(), this.input.valueAsDate) === 0 ? i18nToday[this.language.current].toLowerCase() : this.dateAdapter.getAccessibilityFormatDate(this.input.valueAsDate);
157
- this.internals.ariaLabel = this.i18nSelectOffBoundaryDay(currentDateString)[this.language.current];
158
- }
159
- };
160
- //#endregion
161
- export { SbbDatepickerButtonBase as n, datepickerButtonStyle as r, SbbDatepickerButton as t };
162
-
163
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1idXR0b24tQ0FOekdPNW0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvY29tbW9uL2RhdGVwaWNrZXItYnV0dG9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvY29tbW9uL2RhdGVwaWNrZXItYnV0dG9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbi5zYmItYWN0aW9uLWJhc2Uge1xuICBtYXJnaW46IGF1dG87XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCJpbXBvcnQgeyBodG1sLCB1bnNhZmVDU1MsIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbiwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiQnV0dG9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLnRzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgdHlwZSBEYXRlQWRhcHRlciwgZGVmYXVsdERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRldGltZS50cyc7XG5pbXBvcnQgeyBpZFJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy50cyc7XG5pbXBvcnQgeyBpMThuVG9kYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IFNiYkRhdGVJbnB1dEVsZW1lbnQsIHR5cGUgU2JiRGF0ZUlucHV0QXNzb2NpYXRlZCB9IGZyb20gJy4uLy4uL2RhdGUtaW5wdXQudHMnO1xuXG5pbXBvcnQgZGF0ZXBpY2tlckJ1dHRvblN0eWxlU3RyaW5nIGZyb20gJy4vZGF0ZXBpY2tlci1idXR0b24uc2Nzcz9pbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24udHMnO1xuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckJ1dHRvblN0eWxlID0gdW5zYWZlQ1NTKGRhdGVwaWNrZXJCdXR0b25TdHlsZVN0cmluZyk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJEYXRlcGlja2VyQnV0dG9uQmFzZTxUID0gRGF0ZT5cbiAgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFNiYkJ1dHRvbkJhc2VFbGVtZW50KVxuICBpbXBsZW1lbnRzIFNiYkRhdGVJbnB1dEFzc29jaWF0ZWQ8VD5cbntcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzYmJEYXRlSW5wdXRBc3NvY2lhdGVkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGFzc29jaWF0ZWQgZGF0ZSBpbnB1dCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3IgYXR0cmlidXRlIHVzYWdlLCBwcm92aWRlIGFuIGlkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBpZFJlZmVyZW5jZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBpbnB1dDogU2JiRGF0ZUlucHV0RWxlbWVudDxUPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoaXMgYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2lucHV0RGlzYWJsZWQ7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkIGR1ZSBkYXRlLXBpY2tlcidzIGlucHV0IGRpc2FibGVkLiAqL1xuICBwcml2YXRlIF9pbnB1dERpc2FibGVkID0gdHJ1ZTtcblxuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcblxuICBwcm90ZWN0ZWQgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPFQ+ID0gcmVhZENvbmZpZygpLmRhdGV0aW1lPy5kYXRlQWRhcHRlciA/PyBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpY29uTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGU/Lihmb3JtRmllbGQpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5uZWdhdGl2ZTtcbiAgICAgIFNiYkRhdGVJbnB1dEVsZW1lbnQucmVzb2x2ZUFzc29jaWF0aW9uKHRoaXMpO1xuICAgICAgdGhpcy5zbG90IHx8PSB0aGlzLl9maW5kU2xvdFBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG4gICAgaWYgKG5hbWUgPT09ICdpbnB1dCcgJiYgdGhpcy5pbnB1dCAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXREaXNhYmxlZCA9IHRydWU7XG4gICAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgdGhpcy5zbG90ID0gdGhpcy5fZmluZFNsb3RQb3NpdGlvbigpO1xuICAgICAgICAvLyBUaGUgc2JiLWRhdGUtaW5wdXQgaW5zdGFuY2UgbXVzdCBiZSB1cGdyYWRlZCBpbiBvcmRlclxuICAgICAgICAvLyBmb3IgcHJvcGVydGllcyB0byBiZSBhY2Nlc3NpYmxlLlxuICAgICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlPy4odGhpcy5pbnB1dCk7XG4gICAgICAgIHRoaXMuX3N5bmMoKTtcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCfJtWNoYW5nZScsICgpID0+IHRoaXMuX3N5bmMoKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIW5hbWUgJiYgdGhpcy5oYXNVcGRhdGVkICYmIHRoaXMuaW5wdXQpIHtcbiAgICAgIC8vIElmIGxhbmd1YWdlIGNoYW5nZXMsIHdlIG5lZWQgdG8gdXBkYXRlIHJlbGF0ZWQgYXJpYSBwcm9wZXJ0aWVzLlxuICAgICAgdGhpcy5fc3luYygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRTbG90UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gIXRoaXMuaW5wdXQgfHxcbiAgICAgIHRoaXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5pbnB1dCkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lOR1xuICAgICAgPyAncHJlZml4J1xuICAgICAgOiAnc3VmZml4JztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmMoKTogdm9pZCB7XG4gICAgdGhpcy5zeW5jRGF0ZUlucHV0U3RhdGUoKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNEYXRlSW5wdXRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dERpc2FibGVkID0gdGhpcy5pbnB1dCEuZGlzYWJsZWQgfHwgdGhpcy5pbnB1dCEucmVhZE9ubHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzYmItaWNvbiBuYW1lPSR7dGhpcy5pY29uTmFtZX0+PC9zYmItaWNvbj5gO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQgPSBEYXRlPiBleHRlbmRzIFNiYkRhdGVwaWNrZXJCdXR0b25CYXNlPFQ+IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZCBkdWUgZGF0ZSBlcXVhbHMgdG8gYm91bmRhcnkgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpMThuT2ZmQm91bmRhcnlEYXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXk6IChfY3VycmVudERhdGU6IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCB8fCBzdXBlci5kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjbGljaycsICgpID0+IHRoaXMuX2hhbmRsZUNsaWNrKCkpO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0Rm9sbG93aW5nRGF0ZShkYXRlOiBUKWAgaW5zdGVhZC4gKi9cbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlKF9kYXRlOiBUKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZvbGxvd2luZ0RhdGUoX2RhdGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZvbGxvd2luZ0RhdGUoX2RhdGU6IFQpOiBUIHwgbnVsbDtcblxuICBwcml2YXRlIF9oYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXQgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFydGluZ0RhdGU6IFQgPSB0aGlzLmlucHV0LnZhbHVlQXNEYXRlID8/IHRoaXMuZGF0ZUFkYXB0ZXIudG9kYXkoKTtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5nZXRGb2xsb3dpbmdEYXRlKHN0YXJ0aW5nRGF0ZSk7XG4gICAgaWYgKHRoaXMuZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlKSAmJiB0aGlzLmRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKGRhdGUsIHN0YXJ0aW5nRGF0ZSkgIT09IDApIHtcbiAgICAgIHRoaXMuaW5wdXQudmFsdWVBc0RhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5pbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5pbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICAvLyBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICAvLyBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy5cbiAgICAgIHRoaXMuaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3luY0RhdGVJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnN5bmNEYXRlSW5wdXRTdGF0ZSgpO1xuICAgIGlmICghdGhpcy5kYXRlQWRhcHRlci5pc1ZhbGlkKHRoaXMuaW5wdXQhLnZhbHVlQXNEYXRlKSkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUxhYmVsID0gdGhpcy5pMThuT2ZmQm91bmRhcnlEYXlbdGhpcy5sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gdGhpcy5nZXRGb2xsb3dpbmdEYXRlKHRoaXMuaW5wdXQhLnZhbHVlQXNEYXRlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA9XG4gICAgICAhdGhpcy5kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGUpIHx8XG4gICAgICB0aGlzLmRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKGRhdGUsIHRoaXMuaW5wdXQhLnZhbHVlQXNEYXRlKSA9PT0gMDtcbiAgICBjb25zdCBjdXJyZW50RGF0ZVN0cmluZyA9XG4gICAgICB0aGlzLmRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMuZGF0ZUFkYXB0ZXIudG9kYXkoKSwgdGhpcy5pbnB1dCEudmFsdWVBc0RhdGUpID09PSAwXG4gICAgICAgID8gaTE4blRvZGF5W3RoaXMubGFuZ3VhZ2UuY3VycmVudF0udG9Mb3dlckNhc2UoKVxuICAgICAgICA6IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUodGhpcy5pbnB1dCEudmFsdWVBc0RhdGUpO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFMYWJlbCA9XG4gICAgICB0aGlzLmkxOG5TZWxlY3RPZmZCb3VuZGFyeURheShjdXJyZW50RGF0ZVN0cmluZylbdGhpcy5sYW5ndWFnZS5jdXJyZW50XTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQ2dCQSxJQUFhLHdCQUF3QixnR0FBc0M7SUFFckQsaUNBQXVCO21CQUNuQyxpQkFBaUIscUJBQXFCOzs7O2NBRDFCLGdDQUNaLFlBQXNDOzs7QUFZOUIsU0FBQSx5QkFBQSxrQkFBQSxNQUFBLHFCQUF1QyxLQUFJOztBQVFuRCxRQUFBLGtCQUFjLGtCQUFBLE1BQUEseUJBQUEsRUFBRztBQUlmLFFBQUEsY0FBOEIsWUFBWSxDQUFDLFVBQVUsZUFBZTtBQUNwRSxRQUFBLFdBQVcsSUFBSSxzQkFBc0IsS0FBSzs7Ozt3QkFmbkQsYUFBYSxFQUNiLFVBQVUsQ0FBQTtBQUNYLGdCQUFBLE1BQUEsTUFBQSxtQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFdBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSyxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUwsUUFBSzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHFCQUFBLHlCQUFBOzs7Ozs7Ozs7QUFURSxRQUFBLHlCQUF5Qjs7RUFTaEQ7Ozs7OztFQUFBLElBQWdCLFFBQUs7QUFBQSxVQUFBLE1BQUE7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
@@ -1,213 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, isServer, nothing, unsafeCSS } from "lit";
3
- import { property } from "lit/decorators.js";
4
- import { forceType, idReference } from "./core/decorators.js";
5
- import { SbbUpdateSchedulerMixin } from "./core/mixins.js";
6
- import { SbbLanguageController } from "./core/controllers.js";
7
- import { i18nDateChangedTo } from "./core/i18n.js";
8
- import { readConfig } from "./core/config.js";
9
- import { defaultDateAdapter } from "./core/datetime.js";
10
- import { SbbDateInputElement } from "./date-input.js";
11
- import { SbbPopoverBaseElement } from "./popover.js";
12
- import "./calendar.js";
13
- //#region src/elements/datepicker/datepicker/datepicker.scss?inline
14
- var datepicker_default = "#status-container {\n border: 0;\n clip-path: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}";
15
- //#endregion
16
- //#region src/elements/datepicker/datepicker/datepicker.component.ts
17
- var nextId = 0;
18
- /**
19
- * A datepicker component that allows users to select a date from a calendar view.
20
- * @event {CustomEvent<T>} dateselected - Event emitted on date selection.
21
- */
22
- var SbbDatepickerElement = (() => {
23
- let _classSuper = SbbUpdateSchedulerMixin(SbbPopoverBaseElement);
24
- let _wide_decorators;
25
- let _wide_initializers = [];
26
- let _wide_extraInitializers = [];
27
- let _input_decorators;
28
- let _input_initializers = [];
29
- let _input_extraInitializers = [];
30
- let _view_decorators;
31
- let _view_initializers = [];
32
- let _view_extraInitializers = [];
33
- return class SbbDatepickerElement extends _classSuper {
34
- static {
35
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
36
- _wide_decorators = [forceType(), property({ type: Boolean })];
37
- _input_decorators = [idReference(), property()];
38
- _view_decorators = [property()];
39
- __esDecorate(this, null, _wide_decorators, {
40
- kind: "accessor",
41
- name: "wide",
42
- static: false,
43
- private: false,
44
- access: {
45
- has: (obj) => "wide" in obj,
46
- get: (obj) => obj.wide,
47
- set: (obj, value) => {
48
- obj.wide = value;
49
- }
50
- },
51
- metadata: _metadata
52
- }, _wide_initializers, _wide_extraInitializers);
53
- __esDecorate(this, null, _input_decorators, {
54
- kind: "accessor",
55
- name: "input",
56
- static: false,
57
- private: false,
58
- access: {
59
- has: (obj) => "input" in obj,
60
- get: (obj) => obj.input,
61
- set: (obj, value) => {
62
- obj.input = value;
63
- }
64
- },
65
- metadata: _metadata
66
- }, _input_initializers, _input_extraInitializers);
67
- __esDecorate(this, null, _view_decorators, {
68
- kind: "accessor",
69
- name: "view",
70
- static: false,
71
- private: false,
72
- access: {
73
- has: (obj) => "view" in obj,
74
- get: (obj) => obj.view,
75
- set: (obj, value) => {
76
- obj.view = value;
77
- }
78
- },
79
- metadata: _metadata
80
- }, _view_initializers, _view_extraInitializers);
81
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
82
- enumerable: true,
83
- configurable: true,
84
- writable: true,
85
- value: _metadata
86
- });
87
- }
88
- static {
89
- this.elementName = "sbb-datepicker";
90
- }
91
- static {
92
- this.styles = [SbbPopoverBaseElement.styles, unsafeCSS(datepicker_default)];
93
- }
94
- static {
95
- this.sbbDateInputAssociated = true;
96
- }
97
- #wide_accessor_storage;
98
- /** If set to true, two months are displayed. */
99
- get wide() {
100
- return this.#wide_accessor_storage;
101
- }
102
- set wide(value) {
103
- this.#wide_accessor_storage = value;
104
- }
105
- #input_accessor_storage;
106
- /**
107
- * Reference to the sbb-date-input instance or the native input connected to the datepicker.
108
- *
109
- * For attribute usage, provide an id reference.
110
- */
111
- get input() {
112
- return this.#input_accessor_storage;
113
- }
114
- set input(value) {
115
- this.#input_accessor_storage = value;
116
- }
117
- #view_accessor_storage;
118
- /** The initial view of calendar which should be displayed on opening. */
119
- get view() {
120
- return this.#view_accessor_storage;
121
- }
122
- set view(value) {
123
- this.#view_accessor_storage = value;
124
- }
125
- constructor() {
126
- super();
127
- this.#wide_accessor_storage = __runInitializers(this, _wide_initializers, false);
128
- this.#input_accessor_storage = (__runInitializers(this, _wide_extraInitializers), __runInitializers(this, _input_initializers, null));
129
- this.#view_accessor_storage = (__runInitializers(this, _input_extraInitializers), __runInitializers(this, _view_initializers, "day"));
130
- this._inputAbortController = __runInitializers(this, _view_extraInitializers);
131
- this._dateAdapter = readConfig().datetime?.dateAdapter ?? defaultDateAdapter;
132
- this._language = new SbbLanguageController(this);
133
- this._ready = false;
134
- this.startUpdate();
135
- this.addEventListener(SbbPopoverBaseElement.events.beforeopen, () => {
136
- this.shadowRoot?.querySelector("sbb-calendar")?.resetPosition?.();
137
- });
138
- if (!isServer && this.hydrationRequired) this.hydrationComplete.then(() => this.requestUpdate());
139
- }
140
- connectedCallback() {
141
- this.id ||= `sbb-datepicker-${++nextId}`;
142
- super.connectedCallback();
143
- const formField = this.closest?.("sbb-form-field");
144
- if (formField) {
145
- SbbDateInputElement.resolveAssociation(this);
146
- const toggle = formField.querySelector("sbb-datepicker-toggle");
147
- if (toggle && !toggle.hasAttribute("datepicker")) toggle.datepicker ??= this;
148
- }
149
- }
150
- requestUpdate(name, oldValue, options) {
151
- super.requestUpdate(name, oldValue, options);
152
- if (name === "input" && this.input !== oldValue) {
153
- this._inputAbortController?.abort();
154
- if (this.input) {
155
- const { signal } = this._inputAbortController = new AbortController();
156
- this.input?.addEventListener("ɵchange", () => {
157
- super.requestUpdate();
158
- this._updateStatus();
159
- }, { signal });
160
- }
161
- }
162
- }
163
- firstUpdated(changedProperties) {
164
- super.firstUpdated(changedProperties);
165
- setTimeout(() => {
166
- this._ready = true;
167
- this.requestUpdate();
168
- this.completeUpdate();
169
- });
170
- }
171
- _updateStatus() {
172
- const status = this.shadowRoot?.getElementById("status-container");
173
- if (!status) return;
174
- const text = this._dateAdapter.isValid(this.input?.valueAsDate) ? `${i18nDateChangedTo[this._language.current]} ${this._dateAdapter.format(this.input.valueAsDate, { weekdayStyle: "long" })}` : "";
175
- if (status.textContent !== text) status.textContent = text;
176
- }
177
- renderContent() {
178
- return html`
179
- <p id="status-container" role="status"></p>
180
- <sbb-calendar
181
- .view=${this.view}
182
- .min=${this.input?.min ?? null}
183
- .max=${this.input?.max ?? null}
184
- .dateFilter=${this.input?.dateFilter ?? null}
185
- .selected=${this.input?.valueAsDate ?? null}
186
- ?wide=${this.wide}
187
- @dateselected=${(d) => {
188
- if (this.input) {
189
- this.input.valueAsDate = d.detail;
190
- this.input.dispatchEvent(new InputEvent("input", {
191
- bubbles: true,
192
- composed: true
193
- }));
194
- this.input.dispatchEvent(new Event("change", {
195
- bubbles: true,
196
- composed: true
197
- }));
198
- this.input.dispatchEvent(new Event("blur", { composed: true }));
199
- this.close();
200
- }
201
- }}
202
- ></sbb-calendar>
203
- `;
204
- }
205
- render() {
206
- return isServer || this.hydrationRequired || !this._ready ? html`${nothing}` : super.render();
207
- }
208
- };
209
- })();
210
- //#endregion
211
- export { SbbDatepickerElement as t };
212
-
213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQtQzhYUVZvNDUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG4jc3RhdHVzLWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi9jYWxlbmRhci50cyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaTE4bkRhdGVDaGFuZ2VkVG8gfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHsgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyB0eXBlIFNiYkRhdGVJbnB1dEFzc29jaWF0ZWQsIFNiYkRhdGVJbnB1dEVsZW1lbnQgfSBmcm9tICcuLi8uLi9kYXRlLWlucHV0LnRzJztcbmltcG9ydCB7IFNiYlBvcG92ZXJCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9pbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQSBkYXRlcGlja2VyIGNvbXBvbmVudCB0aGF0IGFsbG93cyB1c2VycyB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBjYWxlbmRhciB2aWV3LlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxUPn0gZGF0ZXNlbGVjdGVkIC0gRXZlbnQgZW1pdHRlZCBvbiBkYXRlIHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPlxuICBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFNiYlBvcG92ZXJCYXNlRWxlbWVudClcbiAgaW1wbGVtZW50cyBTYmJEYXRlSW5wdXRBc3NvY2lhdGVkPFQ+XG57XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZGF0ZXBpY2tlcic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtTYmJQb3BvdmVyQmFzZUVsZW1lbnQuc3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzYmJEYXRlSW5wdXRBc3NvY2lhdGVkID0gdHJ1ZTtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHdpZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBzYmItZGF0ZS1pbnB1dCBpbnN0YW5jZSBvciB0aGUgbmF0aXZlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgaW5wdXQ6IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGluaXRpYWwgdmlldyBvZiBjYWxlbmRhciB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIG9wZW5pbmcuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPFQ+ID0gcmVhZENvbmZpZygpLmRhdGV0aW1lPy5kYXRlQWRhcHRlciA/PyBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfcmVhZHkgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFNiYlBvcG92ZXJCYXNlRWxlbWVudC5ldmVudHMuYmVmb3Jlb3BlbiwgKCkgPT4ge1xuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCdzYmItY2FsZW5kYXInKT8ucmVzZXRQb3NpdGlvbj8uKCk7XG4gICAgfSk7XG4gICAgaWYgKCFpc1NlcnZlciAmJiB0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLWRhdGVwaWNrZXItJHsrK25leHRJZH1gO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICBTYmJEYXRlSW5wdXRFbGVtZW50LnJlc29sdmVBc3NvY2lhdGlvbih0aGlzKTtcbiAgICAgIGNvbnN0IHRvZ2dsZSA9XG4gICAgICAgIGZvcm1GaWVsZC5xdWVyeVNlbGVjdG9yPFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQ+Pignc2JiLWRhdGVwaWNrZXItdG9nZ2xlJyk7XG4gICAgICBpZiAodG9nZ2xlICYmICF0b2dnbGUuaGFzQXR0cmlidXRlKCdkYXRlcGlja2VyJykpIHtcbiAgICAgICAgdG9nZ2xlLmRhdGVwaWNrZXIgPz89IHRoaXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG4gICAgaWYgKG5hbWUgPT09ICdpbnB1dCcgJiYgdGhpcy5pbnB1dCAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzaWduYWwgfSA9ICh0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG4gICAgICAgIHRoaXMuaW5wdXQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ8m1Y2hhbmdlJyxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgc2lnbmFsIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCB0byBkZWxheSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjYWxlbmRhciB0byBhdm9pZCBhIHNsb3cgaW5pdGlhbCByZW5kZXIuXG4gICAgICAvLyBUaGUgc2xvdyByZW5kZXIgY2FuIGJlIGEgcHJvYmxlbSBpZiBhIGxhcmdlIGFtb3VudCBvZiBkYXRlcGlja2VycyBhcmUgcmVuZGVyZWQgYXQgb25jZS5cbiAgICAgIHRoaXMuX3JlYWR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgdGhpcy5jb21wbGV0ZVVwZGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU3RhdHVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1cy1jb250YWluZXInKTtcbiAgICBpZiAoIXN0YXR1cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHQgPSB0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKHRoaXMuaW5wdXQ/LnZhbHVlQXNEYXRlKVxuICAgICAgPyBgJHtpMThuRGF0ZUNoYW5nZWRUb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHt0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQoXG4gICAgICAgICAgdGhpcy5pbnB1dCEudmFsdWVBc0RhdGUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd2Vla2RheVN0eWxlOiAnbG9uZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgKX1gXG4gICAgICA6ICcnO1xuICAgIGlmIChzdGF0dXMudGV4dENvbnRlbnQgIT09IHRleHQpIHtcbiAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IHRleHQ7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckNvbnRlbnQoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHAgaWQ9XCJzdGF0dXMtY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiPjwvcD5cbiAgICAgIDxzYmItY2FsZW5kYXJcbiAgICAgICAgLnZpZXc9JHt0aGlzLnZpZXd9XG4gICAgICAgIC5taW49JHt0aGlzLmlucHV0Py5taW4gPz8gbnVsbH1cbiAgICAgICAgLm1heD0ke3RoaXMuaW5wdXQ/Lm1heCA/PyBudWxsfVxuICAgICAgICAuZGF0ZUZpbHRlcj0ke3RoaXMuaW5wdXQ/LmRhdGVGaWx0ZXIgPz8gbnVsbH1cbiAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5pbnB1dD8udmFsdWVBc0RhdGUgPz8gbnVsbH1cbiAgICAgICAgP3dpZGU9JHt0aGlzLndpZGV9XG4gICAgICAgIEBkYXRlc2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZUFzRGF0ZSA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICAvLyBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICAgICAgICAvLyBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy5cbiAgICAgICAgICAgIHRoaXMuaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+PC9zYmItY2FsZW5kYXI+XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBpc1NlcnZlciB8fCB0aGlzLmh5ZHJhdGlvblJlcXVpcmVkIHx8ICF0aGlzLl9yZWFkeSA/IGh0bWxgJHtub3RoaW5nfWAgOiBzdXBlci5yZW5kZXIoKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FDMkJBLElBQUksU0FBUzs7Ozs7SUFNQSw4QkFBb0I7bUJBQ3ZCLHdCQUF3QixzQkFBc0I7Ozs7Ozs7Ozs7Y0FEM0MsNkJBQ0gsWUFBOEM7Ozt1QkFRckQsV0FBVyxFQUNYLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFBO3dCQVEzQixhQUFhLEVBQ2IsVUFBVSxDQUFBO3VCQUlWLFVBQVUsQ0FBQTtBQVpYLGdCQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUosT0FBSTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLG9CQUFBLHdCQUFBO0FBU3BCLGdCQUFBLE1BQUEsTUFBQSxtQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFdBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSyxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUwsUUFBSzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHFCQUFBLHlCQUFBO0FBR1QsZ0JBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEs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