@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776240735 → 5.0.0-next-dev.1776257807

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