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

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.
@@ -1 +1 @@
1
- {"version":3,"file":"toggle.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/toggle/toggle/toggle.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,UAAU,EAIX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;;AAI1F;;;;;GAKG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,qBAEjD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,gBAAgC,IAAI,gBAAgB;IACpD,OAAuB,MAAM,EAAE,cAAc,CAAuC;IACpF,gBAAuB,MAAM;;MAElB;IAEX;;;OAGG;IACH,SAEgB,IAAI,EAAE,OAAO,CAAS;IAEtC;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF;;;OAGG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAM/B;IACD,IAAW,KAAK,IAAI,CAAC,GAAG,IAAI,CAI3B;IACD,OAAO,CAAC,cAAc,CAAkB;IAExC,4DAA4D;IAC5D,IAAW,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAIhD;;cAQkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAatE;;;OAGG;IACI,aAAa,IAAI,IAAI;IAK5B;;;OAGG;IACI,iBAAiB,IAAI,IAAI;IAIhC;;OAEG;IACI,wBAAwB,CAC7B,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,EAAE,iBAAiB,GACzB,IAAI;YAUO,aAAa;IAK3B,gBAAgB;IACT,kBAAkB,CAAC,QAAQ,UAAQ,GAAG,IAAI;IAqCjD,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,qBAAqB;cASV,MAAM,IAAI,cAAc;CAO5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"toggle.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/toggle/toggle/toggle.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,UAAU,EAIX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;;AAI1F;;;;;GAKG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,qBAEjD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,gBAAgC,IAAI,gBAAgB;IACpD,OAAuB,MAAM,EAAE,cAAc,CAAuC;IACpF,gBAAuB,MAAM;;MAElB;IAEX;;;OAGG;IACH,SAEgB,IAAI,EAAE,OAAO,CAAS;IAEtC;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF;;;OAGG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAM/B;IACD,IAAW,KAAK,IAAI,CAAC,GAAG,IAAI,CAI3B;IACD,OAAO,CAAC,cAAc,CAAkB;IAExC,4DAA4D;IAC5D,IAAW,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAIhD;;cAQkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAatE;;;OAGG;IACI,aAAa,IAAI,IAAI;IAK5B;;;OAGG;IACI,iBAAiB,IAAI,IAAI;IAIhC;;OAEG;IACI,wBAAwB,CAC7B,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,EAAE,iBAAiB,GACzB,IAAI;YAUO,aAAa;IAK3B,gBAAgB;IACT,kBAAkB,CAAC,QAAQ,UAAQ,GAAG,IAAI;IAiCjD,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,qBAAqB;cASV,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbToggleElement } from "../../toggle.component-DjLnSv3R.js";
1
+ import { t as SbbToggleElement } from "../../toggle.component-Dap1d4rK.js";
2
2
  export { SbbToggleElement };
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-option.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/toggle/toggle-option/toggle-option.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,UAAU,EAAgD,MAAM,eAAe,CAAC;;AAMzF;;;;;;GAMG;AACH,qBAAa,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,2BAEvD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAuB;IAC1E,gBAAgC,IAAI,WAAW;IAC/C,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,4CAA4C;IAC5C,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC,8BAA8B;IAC9B,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,OAAO,CAAC,OAAO,CAAiC;;IAqBhC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;cAKzB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAM3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe5E,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"toggle-option.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/toggle/toggle-option/toggle-option.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,UAAU,EAAgD,MAAM,eAAe,CAAC;;AAMzF;;;;;;GAMG;AACH,qBAAa,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,2BAEvD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAuB;IAC1E,gBAAgC,IAAI,WAAW;IAC/C,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,4CAA4C;IAC5C,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC,8BAA8B;IAC9B,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,OAAO,CAAC,OAAO,CAAiC;;IAqBhC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;cAKzB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAM3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe5E,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbToggleOptionElement } from "../../toggle-option.component-BWT4kEZo.js";
1
+ import { t as SbbToggleOptionElement } from "../../toggle-option.component-D8YWH_D5.js";
2
2
  export { SbbToggleOptionElement };
@@ -0,0 +1,163 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbDisabledMixin, SbbElement, boxSizingStyles, forceType } from "./core.js";
5
+ import { SbbIconNameMixin } from "./icon.pure.js";
6
+ import { ResizeController } from "@lit-labs/observers/resize-controller.js";
7
+ //#region src/elements/toggle/toggle-option/toggle-option.scss?inline
8
+ var toggle_option_default = ":host {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: var(--sbb-toggle-option-gap);\n height: var(--sbb-toggle-height);\n padding-inline: var(--sbb-toggle-padding-inline);\n color: var(--sbb-toggle-option-color);\n cursor: var(--sbb-toggle-option-cursor, var(--sbb-cursor-pointer));\n overflow: hidden;\n font-size: var(--sbb-toggle-option-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-weight: bold;\n outline: none !important;\n}\n\n:host([checked]) {\n --sbb-toggle-option-color: var(--sbb-color-2);\n}\n\n:host([disabled]) {\n --sbb-toggle-option-cursor: unset;\n --sbb-toggle-option-color: var(--sbb-color-anthracite);\n --sbb-toggle-option-color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-cloud));\n}\n\n.sbb-toggle-option__label {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\nsbb-icon,\n::slotted(sbb-icon) {\n min-width: var(--sbb-toggle-option-icon-min-size);\n min-height: var(--sbb-toggle-option-icon-min-size);\n}";
9
+ //#endregion
10
+ //#region src/elements/toggle/toggle-option/toggle-option.component.ts
11
+ /**
12
+ * It displays a toggle option within a `sbb-toggle`.
13
+ *
14
+ * @slot - Use the unnamed slot to add content to the label of the toggle option.
15
+ * @slot icon - Slot used to render the `sbb-icon`.
16
+ * @overrideType value - (T = string) | null
17
+ */
18
+ var SbbToggleOptionElement = (() => {
19
+ let _classSuper = SbbDisabledMixin(SbbIconNameMixin(SbbElement));
20
+ let _checked_decorators;
21
+ let _checked_initializers = [];
22
+ let _checked_extraInitializers = [];
23
+ let _value_decorators;
24
+ let _value_initializers = [];
25
+ let _value_extraInitializers = [];
26
+ return class SbbToggleOptionElement extends _classSuper {
27
+ static {
28
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
29
+ _checked_decorators = [forceType(), property({
30
+ reflect: true,
31
+ type: Boolean
32
+ })];
33
+ _value_decorators = [property()];
34
+ __esDecorate(this, null, _checked_decorators, {
35
+ kind: "accessor",
36
+ name: "checked",
37
+ static: false,
38
+ private: false,
39
+ access: {
40
+ has: (obj) => "checked" in obj,
41
+ get: (obj) => obj.checked,
42
+ set: (obj, value) => {
43
+ obj.checked = value;
44
+ }
45
+ },
46
+ metadata: _metadata
47
+ }, _checked_initializers, _checked_extraInitializers);
48
+ __esDecorate(this, null, _value_decorators, {
49
+ kind: "accessor",
50
+ name: "value",
51
+ static: false,
52
+ private: false,
53
+ access: {
54
+ has: (obj) => "value" in obj,
55
+ get: (obj) => obj.value,
56
+ set: (obj, value) => {
57
+ obj.value = value;
58
+ }
59
+ },
60
+ metadata: _metadata
61
+ }, _value_initializers, _value_extraInitializers);
62
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: _metadata
67
+ });
68
+ }
69
+ static {
70
+ this.elementName = "sbb-toggle-option";
71
+ }
72
+ static {
73
+ this.role = "radio";
74
+ }
75
+ static {
76
+ this.styles = [boxSizingStyles, unsafeCSS(toggle_option_default)];
77
+ }
78
+ #checked_accessor_storage;
79
+ /** Whether the toggle-option is checked. */
80
+ get checked() {
81
+ return this.#checked_accessor_storage;
82
+ }
83
+ set checked(value) {
84
+ this.#checked_accessor_storage = value;
85
+ }
86
+ #value_accessor_storage;
87
+ /** Value of toggle-option. */
88
+ get value() {
89
+ return this.#value_accessor_storage;
90
+ }
91
+ set value(value) {
92
+ this.#value_accessor_storage = value;
93
+ }
94
+ constructor() {
95
+ super();
96
+ this.#checked_accessor_storage = __runInitializers(this, _checked_initializers, false);
97
+ this.#value_accessor_storage = (__runInitializers(this, _checked_extraInitializers), __runInitializers(this, _value_initializers, null));
98
+ this._toggle = (__runInitializers(this, _value_extraInitializers), null);
99
+ this.addEventListener?.("input", () => this._handleInput());
100
+ this.addEventListener?.("click", () => {
101
+ if (!this.disabled && !this.checked) this.dispatchEvent(new InputEvent("input", {
102
+ bubbles: true,
103
+ composed: true
104
+ }));
105
+ });
106
+ this.addController(new ResizeController(this, {
107
+ skipInitial: true,
108
+ callback: () => this._toggle?.updatePillPosition?.(true)
109
+ }));
110
+ }
111
+ connectedCallback() {
112
+ super.connectedCallback();
113
+ this._toggle = this.closest?.("sbb-toggle") ?? null;
114
+ this._verifyTabindex();
115
+ this._toggle?.updatePillPosition?.(true);
116
+ }
117
+ disconnectedCallback() {
118
+ super.disconnectedCallback();
119
+ this._toggle = null;
120
+ }
121
+ firstUpdated(changedProperties) {
122
+ super.firstUpdated(changedProperties);
123
+ this._toggle?.updatePillPosition?.(true);
124
+ }
125
+ willUpdate(changedProperties) {
126
+ super.willUpdate(changedProperties);
127
+ if (changedProperties.has("checked")) {
128
+ this.internals.ariaChecked = `${this.checked}`;
129
+ this._verifyTabindex();
130
+ if (this.checked) this._uncheckOtherOptions();
131
+ }
132
+ if (changedProperties.has("disabled")) this._handleDisabledChange();
133
+ }
134
+ _uncheckOtherOptions() {
135
+ this._toggle?.options.filter((o) => o !== this).forEach((o) => o.checked = false);
136
+ this._toggle?.statusChanged();
137
+ }
138
+ _handleDisabledChange() {
139
+ this.internals.ariaDisabled = this.disabled ? "true" : null;
140
+ this._verifyTabindex();
141
+ }
142
+ _handleInput() {
143
+ if (this.disabled) return;
144
+ this.checked = true;
145
+ this._uncheckOtherOptions();
146
+ }
147
+ _verifyTabindex() {
148
+ this.tabIndex = this.checked && !this.disabled ? 0 : -1;
149
+ }
150
+ render() {
151
+ return html`
152
+ ${this.renderIconSlot()}
153
+ <span class="sbb-toggle-option__label">
154
+ <slot></slot>
155
+ </span>
156
+ `;
157
+ }
158
+ };
159
+ })();
160
+ //#endregion
161
+ export { SbbToggleOptionElement as t };
162
+
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLW9wdGlvbi5jb21wb25lbnQtRDhZV0hfRDUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RvZ2dsZS90b2dnbGUtb3B0aW9uL3RvZ2dsZS1vcHRpb24uc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS1vcHRpb24vdG9nZ2xlLW9wdGlvbi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1nYXApO1xuICBoZWlnaHQ6IHZhcigtLXNiYi10b2dnbGUtaGVpZ2h0KTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10b2dnbGUtcGFkZGluZy1pbmxpbmUpO1xuICBjb2xvcjogdmFyKC0tc2JiLXRvZ2dsZS1vcHRpb24tY29sb3IpO1xuICBjdXJzb3I6IHZhcigtLXNiYi10b2dnbGUtb3B0aW9uLWN1cnNvciwgdmFyKC0tc2JiLWN1cnNvci1wb2ludGVyKSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRvZ2dsZS1vcHRpb24tZm9udC1zaXplKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICAvLyBVc2UgIWltcG9ydGFudCBoZXJlIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBGaXJlZm94IGZvY3VzIHJpbmcgZGVmaW5pdGlvblxuICAvLyB3aGljaCBhcHBlYXJzIGluIG5vcm1hbGl6ZSBDU1Mgb2Ygc2V2ZXJhbCBmcmFtZXdvcmtzLlxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbjpob3N0KFtjaGVja2VkXSkge1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMik7XG59XG5cbjpob3N0KFtkaXNhYmxlZF0pIHtcbiAgLS1zYmItdG9nZ2xlLW9wdGlvbi1jdXJzb3I6IHVuc2V0O1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWNsb3VkKSk7XG59XG5cbi5zYmItdG9nZ2xlLW9wdGlvbl9fbGFiZWwge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbnNiYi1pY29uLFxuOjpzbG90dGVkKHNiYi1pY29uKSB7XG4gIG1pbi13aWR0aDogdmFyKC0tc2JiLXRvZ2dsZS1vcHRpb24taWNvbi1taW4tc2l6ZSk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi10b2dnbGUtb3B0aW9uLWljb24tbWluLXNpemUpO1xufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgaHRtbCxcbiAgdW5zYWZlQ1NTLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQsIGZvcmNlVHlwZSwgU2JiRGlzYWJsZWRNaXhpbiwgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiVG9nZ2xlRWxlbWVudCB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdG9nZ2xlLW9wdGlvbi5zY3NzP2lubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSB0b2dnbGUgb3B0aW9uIHdpdGhpbiBhIGBzYmItdG9nZ2xlYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBsYWJlbCBvZiB0aGUgdG9nZ2xlIG9wdGlvbi5cbiAqIEBzbG90IGljb24gLSBTbG90IHVzZWQgdG8gcmVuZGVyIHRoZSBgc2JiLWljb25gLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nKSB8IG51bGxcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRvZ2dsZU9wdGlvbkVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJJY29uTmFtZU1peGluKFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdG9nZ2xlLW9wdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdyYWRpbyc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB0b2dnbGUtb3B0aW9uIGlzIGNoZWNrZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFZhbHVlIG9mIHRvZ2dsZS1vcHRpb24uICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciB2YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3RvZ2dsZTogU2JiVG9nZ2xlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFdlIG5lZWQgdG8gbGlzdGVuIGlucHV0IGV2ZW50IG9uIGhvc3QgYXMgd2l0aCBrZXlib2FyZCBuYXZpZ2F0aW9uXG4gICAgLy8gdGhlIElucHV0IEV2ZW50IGlzIHRyaWdnZXJlZCBmcm9tIHNiYi10b2dnbGUuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2lucHV0JywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXQoKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgICAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuX3RvZ2dsZT8udXBkYXRlUGlsbFBvc2l0aW9uPy4odHJ1ZSksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBXZSBjYW4gdXNlIGNsb3Nlc3QgaGVyZSwgYXMgd2UgZXhwZWN0IHRoZSBwYXJlbnQgc2JiLXRvZ2dsZSB0byBiZSBpbiBsaWdodCBET00uXG4gICAgdGhpcy5fdG9nZ2xlID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi10b2dnbGUnKSA/PyBudWxsO1xuICAgIHRoaXMuX3ZlcmlmeVRhYmluZGV4KCk7XG4gICAgdGhpcy5fdG9nZ2xlPy51cGRhdGVQaWxsUG9zaXRpb24/Lih0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RvZ2dsZSA9IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl90b2dnbGU/LnVwZGF0ZVBpbGxQb3NpdGlvbj8uKHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdjaGVja2VkJykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFDaGVja2VkID0gYCR7dGhpcy5jaGVja2VkfWA7XG4gICAgICB0aGlzLl92ZXJpZnlUYWJpbmRleCgpO1xuICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLl91bmNoZWNrT3RoZXJPcHRpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgIHRoaXMuX2hhbmRsZURpc2FibGVkQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdW5jaGVja090aGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLl90b2dnbGU/Lm9wdGlvbnMuZmlsdGVyKChvKSA9PiBvICE9PSB0aGlzKS5mb3JFYWNoKChvKSA9PiAoby5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB0aGlzLl90b2dnbGU/LnN0YXR1c0NoYW5nZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZURpc2FibGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsO1xuICAgIHRoaXMuX3ZlcmlmeVRhYmluZGV4KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgIHRoaXMuX3VuY2hlY2tPdGhlck9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZlcmlmeVRhYmluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmNoZWNrZWQgJiYgIXRoaXMuZGlzYWJsZWQgPyAwIDogLTE7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfVxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdG9nZ2xlLW9wdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b2dnbGUtb3B0aW9uJzogU2JiVG9nZ2xlT3B0aW9uRWxlbWVudDtcbiAgfVxufVxu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
@@ -0,0 +1,244 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbDisabledMixin, SbbElement, SbbFormAssociatedMixin, boxSizingStyles, forceType, interactivityChecker, isLean } from "./core.js";
5
+ //#region src/elements/toggle/toggle/toggle.scss?inline
6
+ var toggle_default = ":host {\n --_sbb-toggle-min-width: calc(\n var(--sbb-toggle-padding-inline) * 4 + var(--sbb-size-icon-ui-small)\n );\n --sbb-toggle-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n display: grid;\n grid-template-columns: var(--sbb-toggle-grid-template-columns);\n grid-template-areas: \"start end\";\n align-items: center;\n height: var(--sbb-toggle-height);\n width: var(--sbb-toggle-width, fit-content);\n min-width: var(--_sbb-toggle-min-width);\n max-width: 100%;\n border-radius: var(--sbb-toggle-border-radius);\n font-size: var(--sbb-toggle-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n:host::before {\n content: \"\";\n display: block;\n grid-area: start/start/end/end;\n margin-inline: var(--sbb-toggle-option-left, 0) var(--sbb-toggle-option-right, 0);\n background-color: var(--sbb-toggle-selected-option-background-color);\n border-radius: var(--sbb-toggle-border-radius);\n max-width: 100%;\n height: 100%;\n border: var(--sbb-toggle-selected-option-border-width) var(--sbb-toggle-selected-option-border-style) var(--sbb-toggle-selected-option-border-color);\n transition-duration: var(--sbb-toggle-animation-duration);\n transition-timing-function: ease;\n transition-property: margin-inline-start, margin-inline-end;\n}\n:host::after {\n content: \"\";\n grid-area: start/start/end/end;\n order: -1;\n background: var(--sbb-toggle-background-color);\n margin-inline: var(--sbb-toggle-background-inset);\n height: calc(100% - 2 * var(--sbb-toggle-background-inset));\n border-radius: var(--sbb-toggle-border-radius);\n}\n@media (forced-colors: active) {\n :host::after {\n border: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n:host([even]) {\n --sbb-toggle-width: 100%;\n --sbb-toggle-grid-template-columns: 50% 50%;\n}\n\n:host(:disabled) {\n --sbb-toggle-selected-option-border-color: var(--sbb-color-graphite);\n --sbb-toggle-selected-option-border-color: light-dark(\n var(--sbb-color-graphite),\n var(--sbb-color-smoke)\n );\n --sbb-toggle-selected-option-border-style: dashed;\n}\n@media (forced-colors: active) {\n :host(:disabled) {\n --sbb-toggle-selected-option-border-style: solid;\n --sbb-toggle-selected-option-border-color: GrayText;\n }\n}\n\n:host([size=m]) {\n --sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xs);\n --sbb-toggle-height: var(--sbb-size-element-m);\n}\n\n:host([size=s]) {\n --sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xxxs);\n --sbb-toggle-height: var(--sbb-size-element-xxs);\n}\n\n:host(:is(:not(:is(:state(initialized),[state--initialized])), :is(:state(disable-animation-on-resizing),[state--disable-animation-on-resizing]))) {\n --sbb-disable-animation-duration: 0s;\n}\n\n::slotted(sbb-toggle-option:first-of-type) {\n grid-area: start;\n}\n\n::slotted(sbb-toggle-option:last-of-type) {\n grid-area: end;\n}";
7
+ //#endregion
8
+ //#region src/elements/toggle/toggle/toggle.component.ts
9
+ /**
10
+ * It can be used as a container for two `sbb-toggle-option`, acting as a toggle button.
11
+ *
12
+ * @slot - Use the unnamed slot to add `<sbb-toggle-option>` elements to the toggle.
13
+ * @overrideType value - (T = string) | null
14
+ */
15
+ var SbbToggleElement = (() => {
16
+ let _classSuper = SbbDisabledMixin(SbbFormAssociatedMixin(SbbElement));
17
+ let _instanceExtraInitializers = [];
18
+ let _even_decorators;
19
+ let _even_initializers = [];
20
+ let _even_extraInitializers = [];
21
+ let _size_decorators;
22
+ let _size_initializers = [];
23
+ let _size_extraInitializers = [];
24
+ let _set_value_decorators;
25
+ return class SbbToggleElement extends _classSuper {
26
+ static {
27
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
28
+ _even_decorators = [forceType(), property({
29
+ reflect: true,
30
+ type: Boolean
31
+ })];
32
+ _size_decorators = [property({ reflect: true })];
33
+ _set_value_decorators = [property()];
34
+ __esDecorate(this, null, _even_decorators, {
35
+ kind: "accessor",
36
+ name: "even",
37
+ static: false,
38
+ private: false,
39
+ access: {
40
+ has: (obj) => "even" in obj,
41
+ get: (obj) => obj.even,
42
+ set: (obj, value) => {
43
+ obj.even = value;
44
+ }
45
+ },
46
+ metadata: _metadata
47
+ }, _even_initializers, _even_extraInitializers);
48
+ __esDecorate(this, null, _size_decorators, {
49
+ kind: "accessor",
50
+ name: "size",
51
+ static: false,
52
+ private: false,
53
+ access: {
54
+ has: (obj) => "size" in obj,
55
+ get: (obj) => obj.size,
56
+ set: (obj, value) => {
57
+ obj.size = value;
58
+ }
59
+ },
60
+ metadata: _metadata
61
+ }, _size_initializers, _size_extraInitializers);
62
+ __esDecorate(this, null, _set_value_decorators, {
63
+ kind: "setter",
64
+ name: "value",
65
+ static: false,
66
+ private: false,
67
+ access: {
68
+ has: (obj) => "value" in obj,
69
+ set: (obj, value) => {
70
+ obj.value = value;
71
+ }
72
+ },
73
+ metadata: _metadata
74
+ }, null, _instanceExtraInitializers);
75
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
76
+ enumerable: true,
77
+ configurable: true,
78
+ writable: true,
79
+ value: _metadata
80
+ });
81
+ }
82
+ static {
83
+ this.elementName = "sbb-toggle";
84
+ }
85
+ static {
86
+ this.role = "radiogroup";
87
+ }
88
+ static {
89
+ this.styles = [boxSizingStyles, unsafeCSS(toggle_default)];
90
+ }
91
+ static {
92
+ this.events = { change: "change" };
93
+ }
94
+ #even_accessor_storage;
95
+ /**
96
+ * If true, set the width of the component fixed; if false,
97
+ * the width is dynamic based on the label of the sbb-toggle-option.
98
+ */
99
+ get even() {
100
+ return this.#even_accessor_storage;
101
+ }
102
+ set even(value) {
103
+ this.#even_accessor_storage = value;
104
+ }
105
+ #size_accessor_storage;
106
+ /**
107
+ * Size variant, either m or s.
108
+ * @default 'm' / 's' (lean)
109
+ */
110
+ get size() {
111
+ return this.#size_accessor_storage;
112
+ }
113
+ set size(value) {
114
+ this.#size_accessor_storage = value;
115
+ }
116
+ /**
117
+ * The value of the toggle. It needs to be mutable since it is updated whenever
118
+ * a new option is selected (see the `onToggleOptionSelect()` method).
119
+ */
120
+ set value(value) {
121
+ if (isServer || !this.hasUpdated) this._fallbackValue = value;
122
+ else this._valueChanged(value);
123
+ }
124
+ get value() {
125
+ return isServer ? this._fallbackValue ?? null : this.options.find((o) => o.checked)?.value ?? this.options[0]?.value ?? null;
126
+ }
127
+ /** The child instances of sbb-toggle-option as an array. */
128
+ get options() {
129
+ return Array.from(this.querySelectorAll?.("sbb-toggle-option") ?? []);
130
+ }
131
+ constructor() {
132
+ super();
133
+ this.#even_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _even_initializers, false));
134
+ this.#size_accessor_storage = (__runInitializers(this, _even_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
135
+ this._fallbackValue = (__runInitializers(this, _size_extraInitializers), null);
136
+ this.addEventListener?.("input", () => this._handleInput(), { passive: true });
137
+ this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
138
+ }
139
+ willUpdate(changedProperties) {
140
+ super.willUpdate(changedProperties);
141
+ if (changedProperties.has("disabled") || changedProperties.has("formDisabled")) this._updateDisabled();
142
+ if (!this.hasUpdated) this._valueChanged(this._fallbackValue);
143
+ }
144
+ /**
145
+ * Called whenever the value changes, both programmatically or by user interaction.
146
+ * @internal
147
+ */
148
+ statusChanged() {
149
+ this.updateFormValue();
150
+ this.updatePillPosition();
151
+ }
152
+ /**
153
+ * Reset to the init value if present. Select the first option, otherwise.
154
+ * @internal
155
+ */
156
+ formResetCallback() {
157
+ this.value = this.hasAttribute("value") ? this.getAttribute("value") : null;
158
+ }
159
+ /**
160
+ * @internal
161
+ */
162
+ formStateRestoreCallback(state, _reason) {
163
+ if (typeof state === "string" || state == null) this.value = state ?? null;
164
+ else if (state instanceof FormData) this._readFormData(state).then((data) => {
165
+ this.value = data;
166
+ });
167
+ }
168
+ async _readFormData(formData) {
169
+ const data = formData.get(this.name);
170
+ return data instanceof Blob ? JSON.parse(await data.text()) : data;
171
+ }
172
+ /** @internal */
173
+ updatePillPosition(resizing = false) {
174
+ const options = this.options;
175
+ if (options.length < 2 || options.every((o) => !o.checked) || options.every((o) => !o.clientWidth)) return;
176
+ this.toggleState("disable-animation-on-resizing", resizing);
177
+ const firstOption = options[0];
178
+ const isFirstChecked = firstOption.checked;
179
+ const pillLeft = isFirstChecked ? "0px" : `${firstOption.clientWidth}px`;
180
+ const pillRight = isFirstChecked ? `${this.clientWidth - firstOption.clientWidth}px` : "0px";
181
+ if (pillRight === "0px" && pillLeft === "0px") return;
182
+ this.style?.setProperty("--sbb-toggle-option-left", pillLeft);
183
+ this.style?.setProperty("--sbb-toggle-option-right", pillRight);
184
+ this.offsetWidth;
185
+ this.internals.states.add("initialized");
186
+ }
187
+ _updateToggle() {
188
+ this._valueChanged(this.value);
189
+ this._updateDisabled();
190
+ }
191
+ _valueChanged(value) {
192
+ const options = this.options;
193
+ const selectedOption = options.find((o) => value === o.value) ?? options.find((o) => o.checked) ?? options[0];
194
+ if (!selectedOption) return;
195
+ selectedOption.checked = true;
196
+ this.statusChanged();
197
+ }
198
+ _updateDisabled() {
199
+ for (const toggleOption of this.options) toggleOption.disabled = this.disabled || this.formDisabled;
200
+ }
201
+ /**
202
+ * Called on user interaction (click or keyboard)
203
+ */
204
+ _handleInput() {
205
+ this.statusChanged();
206
+ /**
207
+ * The change event is fired when the user modifies the element's value.
208
+ * Unlike the input event, the change event is not necessarily fired
209
+ * for each alteration to an element's value.
210
+ */
211
+ this.dispatchEvent(new Event("change", { bubbles: true }));
212
+ }
213
+ _handleKeyDown(evt) {
214
+ if (!this.options.filter((t) => !t.disabled && interactivityChecker.isVisible(t)) || evt.target !== this && evt.target.parentElement !== this) return;
215
+ const options = this.options;
216
+ const isRtl = this.matches(":dir(rtl)");
217
+ const currentIndex = options.findIndex((option) => option.checked) ?? options[0];
218
+ const availableOptions = options.slice(currentIndex + 1).concat(options.slice(0, currentIndex)).filter((o) => !o.disabled && interactivityChecker.isVisible(o));
219
+ if (!isRtl ? evt.key === " " || evt.key === "ArrowRight" : evt.key === "ArrowLeft") {
220
+ this._selectAndFocusOption(availableOptions[0]);
221
+ evt.preventDefault();
222
+ } else if (isRtl ? evt.key === " " || evt.key === "ArrowRight" : evt.key === "ArrowLeft") {
223
+ this._selectAndFocusOption(availableOptions.at(-1));
224
+ evt.preventDefault();
225
+ }
226
+ }
227
+ _selectAndFocusOption(option) {
228
+ if (!option || option.disabled || option.checked) return;
229
+ option.checked = true;
230
+ option.focus();
231
+ option.dispatchEvent(new InputEvent("input", {
232
+ bubbles: true,
233
+ composed: true
234
+ }));
235
+ }
236
+ render() {
237
+ return html` <slot @slotchange=${this._updateToggle}></slot> `;
238
+ }
239
+ };
240
+ })();
241
+ //#endregion
242
+ export { SbbToggleElement as t };
243
+
244
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC1EYXAxZDRySy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS90b2dnbGUuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1fc2JiLXRvZ2dsZS1taW4td2lkdGg6IGNhbGMoXG4gICAgdmFyKC0tc2JiLXRvZ2dsZS1wYWRkaW5nLWlubGluZSkgKiA0ICsgdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbClcbiAgKTtcbiAgLS1zYmItdG9nZ2xlLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG5cbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zYmItdG9nZ2xlLWdyaWQtdGVtcGxhdGUtY29sdW1ucyk7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdzdGFydCBlbmQnO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IHZhcigtLXNiYi10b2dnbGUtaGVpZ2h0KTtcbiAgd2lkdGg6IHZhcigtLXNiYi10b2dnbGUtd2lkdGgsIGZpdC1jb250ZW50KTtcbiAgbWluLXdpZHRoOiB2YXIoLS1fc2JiLXRvZ2dsZS1taW4td2lkdGgpO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10b2dnbGUtYm9yZGVyLXJhZGl1cyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRvZ2dsZS1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIC8vIFdoaXRlIHBpbGwgb2Ygc2VsZWN0ZWQgdG9nZ2xlIG9wdGlvblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGdyaWQtYXJlYTogc3RhcnQgLyBzdGFydCAvIGVuZCAvIGVuZDtcbiAgICBtYXJnaW4taW5saW5lOiB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1sZWZ0LCAwKSB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1yaWdodCwgMCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRvZ2dsZS1ib3JkZXItcmFkaXVzKTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXdpZHRoKVxuICAgICAgdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXN0eWxlKSB2YXIoLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItY29sb3IpO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2dnbGUtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgICAgIHByb3BlcnR5OiBtYXJnaW4taW5saW5lLXN0YXJ0LCBtYXJnaW4taW5saW5lLWVuZDtcbiAgICB9XG4gIH1cblxuICAvLyBCYWNrZ3JvdW5kXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBncmlkLWFyZWE6IHN0YXJ0IC8gc3RhcnQgLyBlbmQgLyBlbmQ7XG4gICAgb3JkZXI6IC0xO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXNiYi10b2dnbGUtYmFja2dyb3VuZC1jb2xvcik7XG4gICAgbWFyZ2luLWlubGluZTogdmFyKC0tc2JiLXRvZ2dsZS1iYWNrZ3JvdW5kLWluc2V0KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIgKiB2YXIoLS1zYmItdG9nZ2xlLWJhY2tncm91bmQtaW5zZXQpKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItdG9nZ2xlLWJvcmRlci1yYWRpdXMpO1xuXG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgYm9yZGVyOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZCBDYW52YXNUZXh0O1xuICAgIH1cbiAgfVxufVxuXG46aG9zdChbZXZlbl0pIHtcbiAgLS1zYmItdG9nZ2xlLXdpZHRoOiAxMDAlO1xuICAtLXNiYi10b2dnbGUtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA1MCUgNTAlO1xufVxuXG46aG9zdCg6ZGlzYWJsZWQpIHtcbiAgLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItY29sb3I6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWdyYXBoaXRlKSxcbiAgICB2YXIoLS1zYmItY29sb3Itc21va2UpXG4gICk7XG4gIC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJvcmRlci1jb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cblxuOmhvc3QoW3NpemU9J20nXSkge1xuICAtLXNiYi10b2dnbGUtcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xuICAtLXNiYi10b2dnbGUtaGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LW0pO1xufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLXRvZ2dsZS1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbiAgLS1zYmItdG9nZ2xlLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14eHMpO1xufVxuXG46aG9zdCg6aXMoOm5vdCg6c3RhdGUoaW5pdGlhbGl6ZWQpKSwgOnN0YXRlKGRpc2FibGUtYW5pbWF0aW9uLW9uLXJlc2l6aW5nKSkpIHtcbiAgQGluY2x1ZGUgc2JiLmRpc2FibGUtYW5pbWF0aW9uO1xufVxuXG46OnNsb3R0ZWQoc2JiLXRvZ2dsZS1vcHRpb246Zmlyc3Qtb2YtdHlwZSkge1xuICBncmlkLWFyZWE6IHN0YXJ0O1xufVxuXG46OnNsb3R0ZWQoc2JiLXRvZ2dsZS1vcHRpb246bGFzdC1vZi10eXBlKSB7XG4gIGdyaWQtYXJlYTogZW5kO1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBpbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgU2JiRWxlbWVudCxcbiAgZm9yY2VUeXBlLFxuICBpc0xlYW4sXG4gIGJveFNpemluZ1N0eWxlcyxcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUb2dnbGVPcHRpb25FbGVtZW50IH0gZnJvbSAnLi4vdG9nZ2xlLW9wdGlvbi90b2dnbGUtb3B0aW9uLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RvZ2dsZS5zY3NzP2lubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIHR3byBgc2JiLXRvZ2dsZS1vcHRpb25gLCBhY3RpbmcgYXMgYSB0b2dnbGUgYnV0dG9uLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGA8c2JiLXRvZ2dsZS1vcHRpb24+YCBlbGVtZW50cyB0byB0aGUgdG9nZ2xlLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nKSB8IG51bGxcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRvZ2dsZUVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdG9nZ2xlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3JhZGlvZ3JvdXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgc2V0IHRoZSB3aWR0aCBvZiB0aGUgY29tcG9uZW50IGZpeGVkOyBpZiBmYWxzZSxcbiAgICogdGhlIHdpZHRoIGlzIGR5bmFtaWMgYmFzZWQgb24gdGhlIGxhYmVsIG9mIHRoZSBzYmItdG9nZ2xlLW9wdGlvbi5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBldmVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ20nID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgdG9nZ2xlLiBJdCBuZWVkcyB0byBiZSBtdXRhYmxlIHNpbmNlIGl0IGlzIHVwZGF0ZWQgd2hlbmV2ZXJcbiAgICogYSBuZXcgb3B0aW9uIGlzIHNlbGVjdGVkIChzZWUgdGhlIGBvblRvZ2dsZU9wdGlvblNlbGVjdCgpYCBtZXRob2QpLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVCB8IG51bGwpIHtcbiAgICBpZiAoaXNTZXJ2ZXIgfHwgIXRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fZmFsbGJhY2tWYWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZUNoYW5nZWQodmFsdWUpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gaXNTZXJ2ZXJcbiAgICAgID8gKHRoaXMuX2ZhbGxiYWNrVmFsdWUgPz8gbnVsbClcbiAgICAgIDogKHRoaXMub3B0aW9ucy5maW5kKChvKSA9PiBvLmNoZWNrZWQpPy52YWx1ZSA/PyB0aGlzLm9wdGlvbnNbMF0/LnZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgX2ZhbGxiYWNrVmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGNoaWxkIGluc3RhbmNlcyBvZiBzYmItdG9nZ2xlLW9wdGlvbiBhcyBhbiBhcnJheS4gKi9cbiAgcHVibGljIGdldCBvcHRpb25zKCk6IFNiYlRvZ2dsZU9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUb2dnbGVPcHRpb25FbGVtZW50PFQ+Pignc2JiLXRvZ2dsZS1vcHRpb24nKSA/PyBbXSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2lucHV0JywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXQoKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Zvcm1EaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLl91cGRhdGVEaXNhYmxlZCgpO1xuICAgIH1cblxuICAgIC8vIEJlZm9yZSB0aGUgZmlyc3QgdXBkYXRlLCBpbml0IHdpdGggdGhlIGZhbGxiYWNrIHZhbHVlLlxuICAgIC8vIFRoZSB3aWxsVXBkYXRlIGhvb2sgaXMgc2FmZXIgdGhhbiB0aGUgJ3ZhbHVlJyBzZXR0ZXIuXG4gICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZCh0aGlzLl9mYWxsYmFja1ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLCBib3RoIHByb2dyYW1tYXRpY2FsbHkgb3IgYnkgdXNlciBpbnRlcmFjdGlvbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdHVzQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZSgpO1xuICAgIHRoaXMudXBkYXRlUGlsbFBvc2l0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdG8gdGhlIGluaXQgdmFsdWUgaWYgcHJlc2VudC4gU2VsZWN0IHRoZSBmaXJzdCBvcHRpb24sIG90aGVyd2lzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICh0aGlzLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIDogbnVsbCkgYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyB8fCBzdGF0ZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gKHN0YXRlIGFzIFQpID8/IG51bGw7XG4gICAgfSBlbHNlIGlmIChzdGF0ZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGE7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgZGF0YSA9IGZvcm1EYXRhLmdldCh0aGlzLm5hbWUpO1xuICAgIHJldHVybiBkYXRhIGluc3RhbmNlb2YgQmxvYiA/IEpTT04ucGFyc2UoYXdhaXQgZGF0YS50ZXh0KCkpIDogKGRhdGEgYXMgVCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyB1cGRhdGVQaWxsUG9zaXRpb24ocmVzaXppbmcgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IDIgfHxcbiAgICAgIG9wdGlvbnMuZXZlcnkoKG8pID0+ICFvLmNoZWNrZWQpIHx8XG4gICAgICBvcHRpb25zLmV2ZXJ5KChvKSA9PiAhby5jbGllbnRXaWR0aClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlLWFuaW1hdGlvbi1vbi1yZXNpemluZycsIHJlc2l6aW5nKTtcblxuICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gb3B0aW9uc1swXTtcbiAgICBjb25zdCBpc0ZpcnN0Q2hlY2tlZCA9IGZpcnN0T3B0aW9uLmNoZWNrZWQ7XG4gICAgY29uc3QgcGlsbExlZnQgPSBpc0ZpcnN0Q2hlY2tlZCA/ICcwcHgnIDogYCR7Zmlyc3RPcHRpb24uY2xpZW50V2lkdGh9cHhgO1xuICAgIGNvbnN0IHBpbGxSaWdodCA9IGlzRmlyc3RDaGVja2VkID8gYCR7dGhpcy5jbGllbnRXaWR0aCAtIGZpcnN0T3B0aW9uLmNsaWVudFdpZHRofXB4YCA6ICcwcHgnO1xuXG4gICAgaWYgKHBpbGxSaWdodCA9PT0gJzBweCcgJiYgcGlsbExlZnQgPT09ICcwcHgnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXRvZ2dsZS1vcHRpb24tbGVmdCcsIHBpbGxMZWZ0KTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItdG9nZ2xlLW9wdGlvbi1yaWdodCcsIHBpbGxSaWdodCk7XG5cbiAgICAvLyBUcmlnZ2VycyBhIGxheW91dCByZWZsb3cgd2hpY2ggaXMgbmVlZGVkIHRvIGF2b2lkIGFuaW1hdGlvbiBnbGl0Y2hlcy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMub2Zmc2V0V2lkdGg7XG5cbiAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBhIHRyYW5zaXRpb24gZ2xpdGNoLCB3ZSBoYXZlIHRvIGtub3cgd2hlbiB0aGUgZmlyc3QgdmFsdWVzIHdlcmUgc2V0LlxuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ2luaXRpYWxpemVkJyk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVUb2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWVDaGFuZ2VkKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuX3VwZGF0ZURpc2FibGVkKCk7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZUNoYW5nZWQodmFsdWU6IFQgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID1cbiAgICAgIG9wdGlvbnMuZmluZCgobykgPT4gdmFsdWUgPT09IG8udmFsdWUpID8/IG9wdGlvbnMuZmluZCgobykgPT4gby5jaGVja2VkKSA/PyBvcHRpb25zWzBdO1xuXG4gICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgIWlzU2VydmVyKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihgc2JiLXRvZ2dsZTogTm8gYXZhaWxhYmxlIG9wdGlvbnMhICgke3RoaXMuaWQgfHwgJ05vIGlkJ30pYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlbGVjdGVkT3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xuICAgIHRoaXMuc3RhdHVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0b2dnbGVPcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICB0b2dnbGVPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gdXNlciBpbnRlcmFjdGlvbiAoY2xpY2sgb3Iga2V5Ym9hcmQpXG4gICAqL1xuICBwcml2YXRlIF9oYW5kbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c0NoYW5nZWQoKTtcbiAgICAvKipcbiAgICAgKiBUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgbW9kaWZpZXMgdGhlIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgKiBVbmxpa2UgdGhlIGlucHV0IGV2ZW50LCB0aGUgY2hhbmdlIGV2ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBmaXJlZFxuICAgICAqIGZvciBlYWNoIGFsdGVyYXRpb24gdG8gYW4gZWxlbWVudCdzIHZhbHVlLlxuICAgICAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRUb2dnbGVPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgICh0KSA9PiAhdC5kaXNhYmxlZCAmJiBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUodCksXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgICFlbmFibGVkVG9nZ2xlT3B0aW9ucyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBpc1J0bCA9IHRoaXMubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmNoZWNrZWQpID8/IG9wdGlvbnNbMF07XG4gICAgY29uc3QgYXZhaWxhYmxlT3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgIC5zbGljZShjdXJyZW50SW5kZXggKyAxKVxuICAgICAgLmNvbmNhdChvcHRpb25zLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkpXG4gICAgICAuZmlsdGVyKChvKSA9PiAhby5kaXNhYmxlZCAmJiBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUobykpO1xuICAgIGlmICghaXNSdGwgPyBldnQua2V5ID09PSAnICcgfHwgZXZ0LmtleSA9PT0gJ0Fycm93UmlnaHQnIDogZXZ0LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIHRoaXMuX3NlbGVjdEFuZEZvY3VzT3B0aW9uKGF2YWlsYWJsZU9wdGlvbnNbMF0pO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIGlmIChpc1J0bCA/IGV2dC5rZXkgPT09ICcgJyB8fCBldnQua2V5ID09PSAnQXJyb3dSaWdodCcgOiBldnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgdGhpcy5fc2VsZWN0QW5kRm9jdXNPcHRpb24oYXZhaWxhYmxlT3B0aW9ucy5hdCgtMSkpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0QW5kRm9jdXNPcHRpb24ob3B0aW9uOiBTYmJUb2dnbGVPcHRpb25FbGVtZW50PFQ+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb24gfHwgb3B0aW9uLmRpc2FibGVkIHx8IG9wdGlvbi5jaGVja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9wdGlvbi5jaGVja2VkID0gdHJ1ZTtcbiAgICBvcHRpb24uZm9jdXMoKTtcbiAgICBvcHRpb24uZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX3VwZGF0ZVRvZ2dsZX0+PC9zbG90PiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdG9nZ2xlJzogU2JiVG9nZ2xlRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQ2lDYSwwQkFBZ0I7bUJBQXFCLGlCQUNoRCx1QkFBdUIsV0FBVyxDQUNuQzs7Ozs7Ozs7O2NBRlkseUJBQXFDLFlBRWpEOzs7dUJBWUUsV0FBVyxFQUNYLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTt1QkFPMUMsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7NEJBTTNCLFVBQVUsQ0FBQTtBQVpYLGdCQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFB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
@@ -1,5 +1,5 @@
1
- import { t as SbbToggleOptionElement } from "./toggle-option.component-BWT4kEZo.js";
2
- import { t as SbbToggleElement } from "./toggle.component-DjLnSv3R.js";
1
+ import { t as SbbToggleOptionElement } from "./toggle-option.component-D8YWH_D5.js";
2
+ import { t as SbbToggleElement } from "./toggle.component-Dap1d4rK.js";
3
3
  import "./toggle.pure.js";
4
4
  //#region src/elements/toggle.ts
5
5
  /** @entrypoint */
@@ -1,3 +1,3 @@
1
- import { t as SbbToggleOptionElement } from "./toggle-option.component-BWT4kEZo.js";
2
- import { t as SbbToggleElement } from "./toggle.component-DjLnSv3R.js";
1
+ import { t as SbbToggleOptionElement } from "./toggle-option.component-D8YWH_D5.js";
2
+ import { t as SbbToggleElement } from "./toggle.component-Dap1d4rK.js";
3
3
  export { SbbToggleElement, SbbToggleOptionElement };
@@ -1885,6 +1885,22 @@ slot[name=error]::slotted(*) {
1885
1885
  --sbb-timetable-occupancy-font-size: var(--sbb-text-font-size-s);
1886
1886
  --sbb-timetable-occupancy-list-gap: var(--sbb-spacing-fixed-2x);
1887
1887
  --sbb-timetable-occupancy-item-gap: var(--sbb-spacing-fixed-1x);
1888
+ --sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xs);
1889
+ --sbb-toggle-height: var(--sbb-size-element-m);
1890
+ --sbb-toggle-background-color: var(--sbb-background-color-4);
1891
+ --sbb-toggle-background-inset: 0.125rem;
1892
+ --sbb-toggle-border-radius: var(--sbb-border-radius-infinity);
1893
+ --sbb-toggle-font-size: var(--sbb-text-font-size-m);
1894
+ --sbb-toggle-grid-template-columns: auto auto;
1895
+ --sbb-toggle-selected-option-border-width: var(--sbb-border-width-1x);
1896
+ --sbb-toggle-selected-option-border-style: solid;
1897
+ --sbb-toggle-selected-option-border-color: var(--sbb-border-color-5);
1898
+ --sbb-toggle-selected-option-background-color: var(--sbb-background-color-1);
1899
+ --sbb-toggle-option-color: var(--sbb-color-anthracite);
1900
+ --sbb-toggle-option-color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-cloud));
1901
+ --sbb-toggle-option-gap: var(--sbb-spacing-fixed-1x);
1902
+ --sbb-toggle-option-font-size: var(--sbb-text-font-size-xs);
1903
+ --sbb-toggle-option-icon-min-size: var(--sbb-size-icon-ui-small);
1888
1904
  --sbb-tooltip-animation-easing: ease-out;
1889
1905
  --sbb-tooltip-animation-translate: 0 var(--sbb-spacing-fixed-2x);
1890
1906
  --sbb-tooltip-background-color: var(--sbb-background-color-1-inverted);
@@ -1961,6 +1977,8 @@ slot[name=error]::slotted(*) {
1961
1977
  --sbb-tag-text-color: ButtonText;
1962
1978
  --sbb-tag-border-color: CanvasText;
1963
1979
  --sbb-tag-border-width: var(--sbb-border-width-2x);
1980
+ --sbb-toggle-selected-option-border-width: var(--sbb-border-width-2x);
1981
+ --sbb-toggle-selected-option-border-color: Highlight;
1964
1982
  }
1965
1983
  }
1966
1984
  :root {
@@ -2456,6 +2474,11 @@ sbb-tab-nav-bar .sbb-tab-amount {
2456
2474
  place-self: stretch;
2457
2475
  }
2458
2476
 
2477
+ sbb-toggle:has(:focus-visible) {
2478
+ outline-offset: var(--sbb-focus-outline-offset);
2479
+ outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
2480
+ }
2481
+
2459
2482
  .sbb-dark {
2460
2483
  color-scheme: dark;
2461
2484
  }
@@ -2631,11 +2654,6 @@ sbb-form-field .sbb-select-trigger {
2631
2654
  top: 0;
2632
2655
  }
2633
2656
 
2634
- sbb-toggle:has(:focus-visible) {
2635
- outline-offset: var(--sbb-focus-outline-offset);
2636
- outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
2637
- }
2638
-
2639
2657
  .sbb-overlay-outlet {
2640
2658
  position: fixed;
2641
2659
  inset: 0;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sbb-esta/lyne-elements-dev",
3
- "version": "5.0.0-next-dev.1776118170",
3
+ "version": "5.0.0-next-dev.1776240735",
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/1744a8b10de90f014a85a93213d5b51e013c0374"
9
+ "https://github.com/sbb-design-systems/lyne-components/commit/1a58a6c9fcde044d2f6a7afb8d55a6768b2f4a12"
10
10
  ],
11
11
  "type": "module",
12
12
  "exports": {
package/safety-theme.css CHANGED
@@ -1885,6 +1885,22 @@ slot[name=error]::slotted(*) {
1885
1885
  --sbb-timetable-occupancy-font-size: var(--sbb-text-font-size-s);
1886
1886
  --sbb-timetable-occupancy-list-gap: var(--sbb-spacing-fixed-2x);
1887
1887
  --sbb-timetable-occupancy-item-gap: var(--sbb-spacing-fixed-1x);
1888
+ --sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xs);
1889
+ --sbb-toggle-height: var(--sbb-size-element-m);
1890
+ --sbb-toggle-background-color: var(--sbb-background-color-4);
1891
+ --sbb-toggle-background-inset: 0.125rem;
1892
+ --sbb-toggle-border-radius: var(--sbb-border-radius-infinity);
1893
+ --sbb-toggle-font-size: var(--sbb-text-font-size-m);
1894
+ --sbb-toggle-grid-template-columns: auto auto;
1895
+ --sbb-toggle-selected-option-border-width: var(--sbb-border-width-1x);
1896
+ --sbb-toggle-selected-option-border-style: solid;
1897
+ --sbb-toggle-selected-option-border-color: var(--sbb-border-color-5);
1898
+ --sbb-toggle-selected-option-background-color: var(--sbb-background-color-1);
1899
+ --sbb-toggle-option-color: var(--sbb-color-anthracite);
1900
+ --sbb-toggle-option-color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-cloud));
1901
+ --sbb-toggle-option-gap: var(--sbb-spacing-fixed-1x);
1902
+ --sbb-toggle-option-font-size: var(--sbb-text-font-size-xs);
1903
+ --sbb-toggle-option-icon-min-size: var(--sbb-size-icon-ui-small);
1888
1904
  --sbb-tooltip-animation-easing: ease-out;
1889
1905
  --sbb-tooltip-animation-translate: 0 var(--sbb-spacing-fixed-2x);
1890
1906
  --sbb-tooltip-background-color: var(--sbb-background-color-1-inverted);
@@ -1961,6 +1977,8 @@ slot[name=error]::slotted(*) {
1961
1977
  --sbb-tag-text-color: ButtonText;
1962
1978
  --sbb-tag-border-color: CanvasText;
1963
1979
  --sbb-tag-border-width: var(--sbb-border-width-2x);
1980
+ --sbb-toggle-selected-option-border-width: var(--sbb-border-width-2x);
1981
+ --sbb-toggle-selected-option-border-color: Highlight;
1964
1982
  }
1965
1983
  }
1966
1984
  :root {
@@ -2456,6 +2474,11 @@ sbb-tab-nav-bar .sbb-tab-amount {
2456
2474
  place-self: stretch;
2457
2475
  }
2458
2476
 
2477
+ sbb-toggle:has(:focus-visible) {
2478
+ outline-offset: var(--sbb-focus-outline-offset);
2479
+ outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
2480
+ }
2481
+
2459
2482
  .sbb-dark {
2460
2483
  color-scheme: dark;
2461
2484
  }
@@ -2631,11 +2654,6 @@ sbb-form-field .sbb-select-trigger {
2631
2654
  top: 0;
2632
2655
  }
2633
2656
 
2634
- sbb-toggle:has(:focus-visible) {
2635
- outline-offset: var(--sbb-focus-outline-offset);
2636
- outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
2637
- }
2638
-
2639
2657
  .sbb-overlay-outlet {
2640
2658
  position: fixed;
2641
2659
  inset: 0;