@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.
- package/core/styles/core.scss +10 -4
- package/core.css +23 -5
- package/custom-elements.json +2331 -2331
- package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
- package/development/toggle/toggle/toggle.component.js +1 -1
- package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +1 -1
- package/development/toggle-option.component-D8YWH_D5.js +163 -0
- package/development/toggle.component-Dap1d4rK.js +244 -0
- package/development/toggle.js +2 -2
- package/development/toggle.pure.js +2 -2
- package/off-brand-theme.css +23 -5
- package/package.json +2 -2
- package/safety-theme.css +23 -5
- package/standard-theme.css +23 -5
- package/toggle/toggle/toggle.component.js +1 -1
- package/toggle/toggle-option/toggle-option.component.js +1 -1
- package/{toggle-option.component-BF95HWOF.js → toggle-option.component-BiyjKQB1.js} +5 -7
- package/{toggle.component-2e_7FeR4.js → toggle.component-CVbRdQDM.js} +6 -10
- package/toggle.js +2 -2
- package/toggle.pure.js +2 -2
- package/development/toggle-option.component-BWT4kEZo.js +0 -165
- package/development/toggle.component-DjLnSv3R.js +0 -249
package/standard-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;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../toggle.component-
|
|
1
|
+
import { t as e } from "../../toggle.component-CVbRdQDM.js";
|
|
2
2
|
export { e as SbbToggleElement };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../toggle-option.component-
|
|
1
|
+
import { t as e } from "../../toggle-option.component-BiyjKQB1.js";
|
|
2
2
|
export { e as SbbToggleOptionElement };
|
|
@@ -5,7 +5,7 @@ import { SbbDisabledMixin as a, SbbElement as o, boxSizingStyles as s, forceType
|
|
|
5
5
|
import { SbbIconNameMixin as l } from "./icon.pure.js";
|
|
6
6
|
import { ResizeController as u } from "@lit-labs/observers/resize-controller.js";
|
|
7
7
|
//#region src/elements/toggle/toggle-option/toggle-option.scss?inline
|
|
8
|
-
var d = ":host{--sbb-toggle-option-
|
|
8
|
+
var d = ":host{display:flex;justify-content:center;align-items:center;gap:var(--sbb-toggle-option-gap);height:var(--sbb-toggle-height);padding-inline:var(--sbb-toggle-padding-inline);color:var(--sbb-toggle-option-color);cursor:var(--sbb-toggle-option-cursor, var(--sbb-cursor-pointer));overflow:hidden;font-size:var(--sbb-toggle-option-font-size);letter-spacing:var(--sbb-typo-letter-spacing-text);font-weight:700;outline:none!important}:host([checked]){--sbb-toggle-option-color: var(--sbb-color-2)}:host([disabled]){--sbb-toggle-option-cursor: unset;--sbb-toggle-option-color: var(--sbb-color-anthracite);--sbb-toggle-option-color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-cloud))}.sbb-toggle-option__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}sbb-icon,::slotted(sbb-icon){min-width:var(--sbb-toggle-option-icon-min-size);min-height:var(--sbb-toggle-option-icon-min-size)}", f = (() => {
|
|
9
9
|
let f = a(l(o)), p, m = [], h = [], g, _ = [], v = [];
|
|
10
10
|
return class extends f {
|
|
11
11
|
static {
|
|
@@ -106,12 +106,10 @@ var d = ":host{--sbb-toggle-option-cursor: var(--sbb-cursor-pointer);--sbb-toggl
|
|
|
106
106
|
}
|
|
107
107
|
render() {
|
|
108
108
|
return n`
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
<
|
|
112
|
-
|
|
113
|
-
</span>
|
|
114
|
-
</div>
|
|
109
|
+
${this.renderIconSlot()}
|
|
110
|
+
<span class="sbb-toggle-option__label">
|
|
111
|
+
<slot></slot>
|
|
112
|
+
</span>
|
|
115
113
|
`;
|
|
116
114
|
}
|
|
117
115
|
};
|
|
@@ -3,7 +3,7 @@ import { html as n, isServer as r, unsafeCSS as i } from "lit";
|
|
|
3
3
|
import { property as a } from "lit/decorators.js";
|
|
4
4
|
import { SbbDisabledMixin as o, SbbElement as s, SbbFormAssociatedMixin as c, boxSizingStyles as l, forceType as u, interactivityChecker as d, isLean as f } from "./core.js";
|
|
5
5
|
//#region src/elements/toggle/toggle/toggle.scss?inline
|
|
6
|
-
var p = ":host{
|
|
6
|
+
var p = ":host{--_sbb-toggle-min-width: calc( var(--sbb-toggle-padding-inline) * 4 + var(--sbb-size-icon-ui-small) );--sbb-toggle-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );display:grid;grid-template-columns:var(--sbb-toggle-grid-template-columns);grid-template-areas:\"start end\";align-items:center;height:var(--sbb-toggle-height);width:var(--sbb-toggle-width, fit-content);min-width:var(--_sbb-toggle-min-width);max-width:100%;border-radius:var(--sbb-toggle-border-radius);font-size:var(--sbb-toggle-font-size);letter-spacing:var(--sbb-typo-letter-spacing-text);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host:before{content:\"\";display:block;grid-area:start/start/end/end;margin-inline:var(--sbb-toggle-option-left, 0) var(--sbb-toggle-option-right, 0);background-color:var(--sbb-toggle-selected-option-background-color);border-radius:var(--sbb-toggle-border-radius);max-width:100%;height:100%;border:var(--sbb-toggle-selected-option-border-width) var(--sbb-toggle-selected-option-border-style) var(--sbb-toggle-selected-option-border-color);transition-duration:var(--sbb-toggle-animation-duration);transition-timing-function:ease;transition-property:margin-inline-start,margin-inline-end}:host:after{content:\"\";grid-area:start/start/end/end;order:-1;background:var(--sbb-toggle-background-color);margin-inline:var(--sbb-toggle-background-inset);height:calc(100% - 2 * var(--sbb-toggle-background-inset));border-radius:var(--sbb-toggle-border-radius)}@media(forced-colors:active){:host:after{border:var(--sbb-border-width-1x) solid CanvasText}}:host([even]){--sbb-toggle-width: 100%;--sbb-toggle-grid-template-columns: 50% 50%}:host(:disabled){--sbb-toggle-selected-option-border-color: var(--sbb-color-graphite);--sbb-toggle-selected-option-border-color: light-dark( var(--sbb-color-graphite), var(--sbb-color-smoke) );--sbb-toggle-selected-option-border-style: dashed}@media(forced-colors:active){:host(:disabled){--sbb-toggle-selected-option-border-style: solid;--sbb-toggle-selected-option-border-color: GrayText}}:host([size=m]){--sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xs);--sbb-toggle-height: var(--sbb-size-element-m)}:host([size=s]){--sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xxxs);--sbb-toggle-height: var(--sbb-size-element-xxs)}:host(:is(:not(:is(:state(initialized),[state--initialized])),:is(:state(disable-animation-on-resizing),[state--disable-animation-on-resizing]))){--sbb-disable-animation-duration: 0s}::slotted(sbb-toggle-option:first-of-type){grid-area:start}::slotted(sbb-toggle-option:last-of-type){grid-area:end}", m = (() => {
|
|
7
7
|
let m = o(c(s)), h = [], g, _ = [], v = [], y, b = [], x = [], S;
|
|
8
8
|
return class extends m {
|
|
9
9
|
static {
|
|
@@ -113,11 +113,11 @@ var p = ":host{display:block;width:fit-content;border-radius:var(--sbb-toggle-bo
|
|
|
113
113
|
return t instanceof Blob ? JSON.parse(await t.text()) : t;
|
|
114
114
|
}
|
|
115
115
|
updatePillPosition(e = !1) {
|
|
116
|
-
let t = this.options
|
|
117
|
-
if (t.length < 2 ||
|
|
116
|
+
let t = this.options;
|
|
117
|
+
if (t.length < 2 || t.every((e) => !e.checked) || t.every((e) => !e.clientWidth)) return;
|
|
118
118
|
this.toggleState("disable-animation-on-resizing", e);
|
|
119
|
-
let
|
|
120
|
-
|
|
119
|
+
let n = t[0], r = n.checked, i = r ? "0px" : `${n.clientWidth}px`, a = r ? `${this.clientWidth - n.clientWidth}px` : "0px";
|
|
120
|
+
a === "0px" && i === "0px" || (this.style?.setProperty("--sbb-toggle-option-left", i), this.style?.setProperty("--sbb-toggle-option-right", a), this.offsetWidth, this.internals.states.add("initialized"));
|
|
121
121
|
}
|
|
122
122
|
_updateToggle() {
|
|
123
123
|
this._valueChanged(this.value), this._updateDisabled();
|
|
@@ -144,11 +144,7 @@ var p = ":host{display:block;width:fit-content;border-radius:var(--sbb-toggle-bo
|
|
|
144
144
|
})));
|
|
145
145
|
}
|
|
146
146
|
render() {
|
|
147
|
-
return n`
|
|
148
|
-
<div class="sbb-toggle">
|
|
149
|
-
<slot @slotchange=${this._updateToggle}></slot>
|
|
150
|
-
</div>
|
|
151
|
-
`;
|
|
147
|
+
return n` <slot @slotchange=${this._updateToggle}></slot> `;
|
|
152
148
|
}
|
|
153
149
|
};
|
|
154
150
|
})();
|
package/toggle.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "./toggle-option.component-
|
|
2
|
-
import { t } from "./toggle.component-
|
|
1
|
+
import { t as e } from "./toggle-option.component-BiyjKQB1.js";
|
|
2
|
+
import { t } from "./toggle.component-CVbRdQDM.js";
|
|
3
3
|
import "./toggle.pure.js";
|
|
4
4
|
t.define(), e.define();
|
|
5
5
|
//#endregion
|
package/toggle.pure.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as e } from "./toggle-option.component-
|
|
2
|
-
import { t } from "./toggle.component-
|
|
1
|
+
import { t as e } from "./toggle-option.component-BiyjKQB1.js";
|
|
2
|
+
import { t } from "./toggle.component-CVbRdQDM.js";
|
|
3
3
|
export { t as SbbToggleElement, e as SbbToggleOptionElement };
|
|
@@ -1,165 +0,0 @@
|
|
|
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 --sbb-toggle-option-cursor: var(--sbb-cursor-pointer);\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 --sbb-toggle-option-icon-min-size: var(--sbb-size-icon-ui-small);\n display: inline-block;\n overflow: hidden;\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 {\n --sbb-text-font-size: var(--sbb-text-font-size-xs);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n font-weight: bold;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: var(--sbb-spacing-fixed-1x);\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);\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
|
-
<div class="sbb-toggle-option">
|
|
153
|
-
${this.renderIconSlot()}
|
|
154
|
-
<span class="sbb-toggle-option__label">
|
|
155
|
-
<slot></slot>
|
|
156
|
-
</span>
|
|
157
|
-
</div>
|
|
158
|
-
`;
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
})();
|
|
162
|
-
//#endregion
|
|
163
|
-
export { SbbToggleOptionElement as t };
|
|
164
|
-
|
|
165
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLW9wdGlvbi5jb21wb25lbnQtQldUNGtFWm8uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RvZ2dsZS90b2dnbGUtb3B0aW9uL3RvZ2dsZS1vcHRpb24uc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS1vcHRpb24vdG9nZ2xlLW9wdGlvbi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWN1cnNvcjogdmFyKC0tc2JiLWN1cnNvci1wb2ludGVyKTtcbiAgLS1zYmItdG9nZ2xlLW9wdGlvbi1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItYW50aHJhY2l0ZSksIHZhcigtLXNiYi1jb2xvci1jbG91ZCkpO1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWljb24tbWluLXNpemU6IHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBVc2UgIWltcG9ydGFudCBoZXJlIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBGaXJlZm94IGZvY3VzIHJpbmcgZGVmaW5pdGlvblxuICAvLyB3aGljaCBhcHBlYXJzIGluIG5vcm1hbGl6ZSBDU1Mgb2Ygc2V2ZXJhbCBmcmFtZXdvcmtzLlxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbjpob3N0KFtjaGVja2VkXSkge1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMik7XG59XG5cbjpob3N0KFtkaXNhYmxlZF0pIHtcbiAgLS1zYmItdG9nZ2xlLW9wdGlvbi1jdXJzb3I6IHVuc2V0O1xuICAtLXNiYi10b2dnbGUtb3B0aW9uLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWNsb3VkKSk7XG59XG5cbi5zYmItdG9nZ2xlLW9wdGlvbiB7XG4gIEBpbmNsdWRlIHNiYi50ZXh0LXhzLS1ib2xkO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItdG9nZ2xlLWhlaWdodCk7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItdG9nZ2xlLXBhZGRpbmctaW5saW5lKTtcbiAgY29sb3I6IHZhcigtLXNiYi10b2dnbGUtb3B0aW9uLWNvbG9yKTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1jdXJzb3IpO1xufVxuXG4uc2JiLXRvZ2dsZS1vcHRpb25fX2xhYmVsIHtcbiAgQGluY2x1ZGUgc2JiLmVsbGlwc2lzO1xufVxuXG5zYmItaWNvbixcbjo6c2xvdHRlZChzYmItaWNvbikge1xuICBtaW4td2lkdGg6IHZhcigtLXNiYi10b2dnbGUtb3B0aW9uLWljb24tbWluLXNpemUpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1pY29uLW1pbi1zaXplKTtcbn1cbiIsImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIGh0bWwsXG4gIHVuc2FmZUNTUyxcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJFbGVtZW50LCBmb3JjZVR5cGUsIFNiYkRpc2FibGVkTWl4aW4sIGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uLy4uL2ljb24ucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RvZ2dsZS1vcHRpb24uc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdG9nZ2xlIG9wdGlvbiB3aXRoaW4gYSBgc2JiLXRvZ2dsZWAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgbGFiZWwgb2YgdGhlIHRvZ2dsZSBvcHRpb24uXG4gKiBAc2xvdCBpY29uIC0gU2xvdCB1c2VkIHRvIHJlbmRlciB0aGUgYHNiYi1pY29uYC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUb2dnbGVPcHRpb25FbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgU2JiSWNvbk5hbWVNaXhpbihTYmJFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXRvZ2dsZS1vcHRpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAncmFkaW8nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcblxuICAvKiogV2hldGhlciB0aGUgdG9nZ2xlLW9wdGlvbiBpcyBjaGVja2VkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBWYWx1ZSBvZiB0b2dnbGUtb3B0aW9uLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF90b2dnbGU6IFNiYlRvZ2dsZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBXZSBuZWVkIHRvIGxpc3RlbiBpbnB1dCBldmVudCBvbiBob3N0IGFzIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgIC8vIHRoZSBJbnB1dCBFdmVudCBpcyB0cmlnZ2VyZWQgZnJvbSBzYmItdG9nZ2xlLlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdpbnB1dCcsICgpID0+IHRoaXMuX2hhbmRsZUlucHV0KCkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjbGljaycsICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICAgICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl90b2dnbGU/LnVwZGF0ZVBpbGxQb3NpdGlvbj8uKHRydWUpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgLy8gV2UgY2FuIHVzZSBjbG9zZXN0IGhlcmUsIGFzIHdlIGV4cGVjdCB0aGUgcGFyZW50IHNiYi10b2dnbGUgdG8gYmUgaW4gbGlnaHQgRE9NLlxuICAgIHRoaXMuX3RvZ2dsZSA9IHRoaXMuY2xvc2VzdD8uKCdzYmItdG9nZ2xlJykgPz8gbnVsbDtcbiAgICB0aGlzLl92ZXJpZnlUYWJpbmRleCgpO1xuICAgIHRoaXMuX3RvZ2dsZT8udXBkYXRlUGlsbFBvc2l0aW9uPy4odHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl90b2dnbGUgPSBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fdG9nZ2xlPy51cGRhdGVQaWxsUG9zaXRpb24/Lih0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnY2hlY2tlZCcpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhQ2hlY2tlZCA9IGAke3RoaXMuY2hlY2tlZH1gO1xuICAgICAgdGhpcy5fdmVyaWZ5VGFiaW5kZXgoKTtcbiAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5fdW5jaGVja090aGVyT3B0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVEaXNhYmxlZENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VuY2hlY2tPdGhlck9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fdG9nZ2xlPy5vcHRpb25zLmZpbHRlcigobykgPT4gbyAhPT0gdGhpcykuZm9yRWFjaCgobykgPT4gKG8uY2hlY2tlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy5fdG9nZ2xlPy5zdGF0dXNDaGFuZ2VkKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVEaXNhYmxlZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkID8gJ3RydWUnIDogbnVsbDtcbiAgICB0aGlzLl92ZXJpZnlUYWJpbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICB0aGlzLl91bmNoZWNrT3RoZXJPcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIF92ZXJpZnlUYWJpbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5jaGVja2VkICYmICF0aGlzLmRpc2FibGVkID8gMCA6IC0xO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRvZ2dsZS1vcHRpb25cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckljb25TbG90KCl9XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRvZ2dsZS1vcHRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdG9nZ2xlLW9wdGlvbic6IFNiYlRvZ2dsZU9wdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN1QmEsZ0NBQXNCO21CQUFxQixpQkFDdEQsaUJBQWlCLFdBQVcsQ0FDN0I7Ozs7Ozs7Y0FGWSwrQkFBMkMsWUFFdkQ7OzswQkFNRSxXQUFXLEVBQ1gsU0FBUztJQUFFLFNBQVM7SUFBTSxNQUFNO0lBQVMsQ0FBQyxDQUFBO3dCQUkxQyxVQUFVLENBQUE7QUFIWCxnQkFBQSxNQUFBLE1BQUEscUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxhQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQU8sTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFQLFVBQU87O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSx1QkFBQSwyQkFBQTtBQUl2QixnQkFBQSxNQUFBLE1BQUEsbUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxXQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQUssTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFMLFFBQUs7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSxxQkFBQSx5QkFBQTs7Ozs7Ozs7O0FBWFcsUUFBQSxjQUFzQjs7O0FBQ3RCLFFBQUEsT0FBTzs7O0FBQ2hCLFFBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxzQkFBTSxDQUFDOztFQUtuRjs7RUFBQSxJQUFnQixVQUFPO0FBQUEsVUFBQSxNQUFBOztFQUF2QixJQUFnQixRQUFPLE9BQUE7QUFBQSxTQUFBLDJCQUFBOztFQUl2Qjs7RUFBQSxJQUFnQixRQUFLO0FBQUEsVUFBQSxNQUFBOztFQUFyQixJQUFnQixNQUFLLE9BQUE7QUFBQSxTQUFBLHlCQUFBOztFQUlyQixjQUFBO0FBQ0UsVUFBTztBQVRPLFNBQUEsMkJBQUEsa0JBQUEsTUFBQSx1QkFBbUIsTUFBSztBQUl4QixTQUFBLDBCQUFBLGtCQUFBLE1BQUEsMkJBQUEsRUFBQSxrQkFBQSxNQUFBLHFCQUFrQixLQUFJO0FBRTlCLFFBQUEsV0FBTyxrQkFBQSxNQUFBLHlCQUFBLEVBQTRCO0FBTXpDLFFBQUssbUJBQW1CLGVBQWUsS0FBSyxjQUFjLENBQUM7QUFDM0QsUUFBSyxtQkFBbUIsZUFBYztBQUNwQyxRQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsS0FBSyxRQUMxQixNQUFLLGNBQWMsSUFBSSxXQUFXLFNBQVM7S0FBRSxTQUFTO0tBQU0sVUFBVTtLQUFNLENBQUMsQ0FBQztLQUVoRjtBQUVGLFFBQUssY0FDSCxJQUFJLGlCQUFpQixNQUFNO0lBQ3pCLGFBQWE7SUFDYixnQkFBZ0IsS0FBSyxTQUFTLHFCQUFxQixLQUFBO0lBQ3BELENBQUMsQ0FDSDs7RUFHYSxvQkFBaUI7QUFDL0IsU0FBTSxtQkFBbUI7QUFHekIsUUFBSyxVQUFVLEtBQUssVUFBVSxhQUFhLElBQUk7QUFDL0MsUUFBSyxpQkFBaUI7QUFDdEIsUUFBSyxTQUFTLHFCQUFxQixLQUFLOztFQUcxQix1QkFBb0I7QUFDbEMsU0FBTSxzQkFBc0I7QUFDNUIsUUFBSyxVQUFVOztFQUdFLGFBQWEsbUJBQXVDO0FBQ3JFLFNBQU0sYUFBYSxrQkFBa0I7QUFFckMsUUFBSyxTQUFTLHFCQUFxQixLQUFLOztFQUd2QixXQUFXLG1CQUF1QztBQUNuRSxTQUFNLFdBQVcsa0JBQWtCO0FBRW5DLE9BQUksa0JBQWtCLElBQUksVUFBVSxFQUFFO0FBQ3BDLFNBQUssVUFBVSxjQUFjLEdBQUcsS0FBSztBQUNyQyxTQUFLLGlCQUFpQjtBQUN0QixRQUFJLEtBQUssUUFDUCxNQUFLLHNCQUFzQjs7QUFHL0IsT0FBSSxrQkFBa0IsSUFBSSxXQUFXLENBQ25DLE1BQUssdUJBQXVCOztFQUl4Qix1QkFBb0I7QUFDMUIsUUFBSyxTQUFTLFFBQVEsUUFBUSxNQUFNLE1BQU0sS0FBSyxDQUFDLFNBQVMsTUFBTyxFQUFFLFVBQVUsTUFBTztBQUNuRixRQUFLLFNBQVMsZUFBZTs7RUFHdkIsd0JBQXFCO0FBQzNCLFFBQUssVUFBVSxlQUFlLEtBQUssV0FBVyxTQUFTO0FBQ3ZELFFBQUssaUJBQWlCOztFQUdoQixlQUFZO0FBQ2xCLE9BQUksS0FBSyxTQUNQO0FBRUYsUUFBSyxVQUFVO0FBQ2YsUUFBSyxzQkFBc0I7O0VBR3JCLGtCQUFlO0FBQ3JCLFFBQUssV0FBVyxLQUFLLFdBQVcsQ0FBQyxLQUFLLFdBQVcsSUFBSTs7RUFHcEMsU0FBTTtBQUN2QixVQUFPLElBQUk7O1VBRUwsS0FBSyxnQkFBZ0IsQ0FBQSJ9
|
|
@@ -1,249 +0,0 @@
|
|
|
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 display: block;\n width: fit-content;\n border-radius: var(--sbb-toggle-border-radius);\n --sbb-toggle-width: fit-content;\n --sbb-toggle-min-width: calc(\n var(--sbb-toggle-padding-inline) * 4 + var(--sbb-size-icon-ui-small)\n );\n --sbb-toggle-selected-option-border-width: var(--sbb-border-width-1x);\n --sbb-toggle-selected-option-border-style: solid;\n --sbb-toggle-selected-option-border-color: var(--sbb-border-color-5);\n --sbb-toggle-selected-option-background-color: var(--sbb-background-color-1);\n --sbb-toggle-background-inset: 0.125rem;\n --sbb-toggle-padding-inline: var(--sbb-spacing-responsive-xs);\n --sbb-toggle-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-toggle-height: var(--sbb-size-element-m);\n --sbb-toggle-border-radius: var(--sbb-border-radius-infinity);\n --sbb-toggle-grid-template-columns: auto auto;\n}\n@media (forced-colors: active) {\n :host {\n --sbb-toggle-selected-option-border-color: Highlight;\n --sbb-toggle-selected-option-border-width: var(--sbb-border-width-2x);\n }\n}\n\n:host([even]) {\n width: 100%;\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=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.sbb-toggle {\n --sbb-text-font-size: var(--sbb-text-font-size-m);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n display: grid;\n grid-template-columns: var(--sbb-toggle-grid-template-columns);\n grid-template-areas: \"start end\";\n align-items: center;\n min-width: var(--sbb-toggle-min-width);\n width: var(--sbb-toggle-width);\n height: var(--sbb-toggle-height);\n max-width: 100%;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n border-radius: var(--sbb-toggle-border-radius);\n}\n.sbb-toggle::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.sbb-toggle::after {\n content: \"\";\n grid-area: start/start/end/end;\n order: -1;\n background: var(--sbb-background-color-4);\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 .sbb-toggle::after {\n border: var(--sbb-border-width-1x) solid CanvasText;\n }\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
|
-
const toggleElement = this.shadowRoot?.querySelector(".sbb-toggle");
|
|
176
|
-
if (options.length < 2 || !toggleElement || options.every((o) => !o.checked) || options.every((o) => !o.clientWidth)) return;
|
|
177
|
-
this.toggleState("disable-animation-on-resizing", resizing);
|
|
178
|
-
const firstOption = options[0];
|
|
179
|
-
const isFirstChecked = firstOption.checked;
|
|
180
|
-
const pillLeft = isFirstChecked ? "0px" : `${firstOption.clientWidth}px`;
|
|
181
|
-
const pillRight = isFirstChecked ? `${toggleElement.clientWidth - firstOption.clientWidth}px` : "0px";
|
|
182
|
-
if (pillRight === "0px" && pillLeft === "0px") return;
|
|
183
|
-
this.style?.setProperty("--sbb-toggle-option-left", pillLeft);
|
|
184
|
-
this.style?.setProperty("--sbb-toggle-option-right", pillRight);
|
|
185
|
-
this.offsetWidth;
|
|
186
|
-
this.internals.states.add("initialized");
|
|
187
|
-
}
|
|
188
|
-
_updateToggle() {
|
|
189
|
-
this._valueChanged(this.value);
|
|
190
|
-
this._updateDisabled();
|
|
191
|
-
}
|
|
192
|
-
_valueChanged(value) {
|
|
193
|
-
const options = this.options;
|
|
194
|
-
const selectedOption = options.find((o) => value === o.value) ?? options.find((o) => o.checked) ?? options[0];
|
|
195
|
-
if (!selectedOption) return;
|
|
196
|
-
selectedOption.checked = true;
|
|
197
|
-
this.statusChanged();
|
|
198
|
-
}
|
|
199
|
-
_updateDisabled() {
|
|
200
|
-
for (const toggleOption of this.options) toggleOption.disabled = this.disabled || this.formDisabled;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Called on user interaction (click or keyboard)
|
|
204
|
-
*/
|
|
205
|
-
_handleInput() {
|
|
206
|
-
this.statusChanged();
|
|
207
|
-
/**
|
|
208
|
-
* The change event is fired when the user modifies the element's value.
|
|
209
|
-
* Unlike the input event, the change event is not necessarily fired
|
|
210
|
-
* for each alteration to an element's value.
|
|
211
|
-
*/
|
|
212
|
-
this.dispatchEvent(new Event("change", { bubbles: true }));
|
|
213
|
-
}
|
|
214
|
-
_handleKeyDown(evt) {
|
|
215
|
-
if (!this.options.filter((t) => !t.disabled && interactivityChecker.isVisible(t)) || evt.target !== this && evt.target.parentElement !== this) return;
|
|
216
|
-
const options = this.options;
|
|
217
|
-
const isRtl = this.matches(":dir(rtl)");
|
|
218
|
-
const currentIndex = options.findIndex((option) => option.checked) ?? options[0];
|
|
219
|
-
const availableOptions = options.slice(currentIndex + 1).concat(options.slice(0, currentIndex)).filter((o) => !o.disabled && interactivityChecker.isVisible(o));
|
|
220
|
-
if (!isRtl ? evt.key === " " || evt.key === "ArrowRight" : evt.key === "ArrowLeft") {
|
|
221
|
-
this._selectAndFocusOption(availableOptions[0]);
|
|
222
|
-
evt.preventDefault();
|
|
223
|
-
} else if (isRtl ? evt.key === " " || evt.key === "ArrowRight" : evt.key === "ArrowLeft") {
|
|
224
|
-
this._selectAndFocusOption(availableOptions.at(-1));
|
|
225
|
-
evt.preventDefault();
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
_selectAndFocusOption(option) {
|
|
229
|
-
if (!option || option.disabled || option.checked) return;
|
|
230
|
-
option.checked = true;
|
|
231
|
-
option.focus();
|
|
232
|
-
option.dispatchEvent(new InputEvent("input", {
|
|
233
|
-
bubbles: true,
|
|
234
|
-
composed: true
|
|
235
|
-
}));
|
|
236
|
-
}
|
|
237
|
-
render() {
|
|
238
|
-
return html`
|
|
239
|
-
<div class="sbb-toggle">
|
|
240
|
-
<slot @slotchange=${this._updateToggle}></slot>
|
|
241
|
-
</div>
|
|
242
|
-
`;
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
})();
|
|
246
|
-
//#endregion
|
|
247
|
-
export { SbbToggleElement as t };
|
|
248
|
-
|
|
249
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC1EakxuU3YzUi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS90b2dnbGUuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdG9nZ2xlL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcblxuICAvLyBCb3JkZXItcmFkaXVzIGlzIHVzZWQgZm9yIHRoZSBmb2N1cyBvdXRsaW5lIHdoaWNoIGlzIHRvZ2dsZWQgaW4gY29yZS5zY3NzLlxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItdG9nZ2xlLWJvcmRlci1yYWRpdXMpO1xuXG4gIC0tc2JiLXRvZ2dsZS13aWR0aDogZml0LWNvbnRlbnQ7XG4gIC0tc2JiLXRvZ2dsZS1taW4td2lkdGg6IGNhbGMoXG4gICAgdmFyKC0tc2JiLXRvZ2dsZS1wYWRkaW5nLWlubGluZSkgKiA0ICsgdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbClcbiAgKTtcbiAgLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpO1xuICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJvcmRlci1zdHlsZTogc29saWQ7XG4gIC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTUpO1xuICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xuICAtLXNiYi10b2dnbGUtYmFja2dyb3VuZC1pbnNldDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIpfTtcbiAgLS1zYmItdG9nZ2xlLXBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXhzKTtcbiAgLS1zYmItdG9nZ2xlLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG4gIC0tc2JiLXRvZ2dsZS1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQtbSk7XG4gIC0tc2JiLXRvZ2dsZS1ib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy1pbmZpbml0eSk7XG4gIC0tc2JiLXRvZ2dsZS1ncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0bztcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItY29sb3I6IEhpZ2hsaWdodDtcbiAgICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCk7XG4gIH1cbn1cblxuOmhvc3QoW2V2ZW5dKSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC0tc2JiLXRvZ2dsZS13aWR0aDogMTAwJTtcbiAgLS1zYmItdG9nZ2xlLWdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbn1cblxuOmhvc3QoOmRpc2FibGVkKSB7XG4gIC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1ncmFwaGl0ZSksXG4gICAgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKVxuICApO1xuICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJvcmRlci1zdHlsZTogZGFzaGVkO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi10b2dnbGUtc2VsZWN0ZWQtb3B0aW9uLWJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItdG9nZ2xlLXBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xuICAtLXNiYi10b2dnbGUtaGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LXh4cyk7XG59XG5cbjpob3N0KDppcyg6bm90KDpzdGF0ZShpbml0aWFsaXplZCkpLCA6c3RhdGUoZGlzYWJsZS1hbmltYXRpb24tb24tcmVzaXppbmcpKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbi5zYmItdG9nZ2xlIHtcbiAgQGluY2x1ZGUgc2JiLnRleHQtbS0tcmVndWxhcjtcblxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNiYi10b2dnbGUtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zKTtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ3N0YXJ0IGVuZCc7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi13aWR0aDogdmFyKC0tc2JiLXRvZ2dsZS1taW4td2lkdGgpO1xuICB3aWR0aDogdmFyKC0tc2JiLXRvZ2dsZS13aWR0aCk7XG4gIGhlaWdodDogdmFyKC0tc2JiLXRvZ2dsZS1oZWlnaHQpO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItdG9nZ2xlLWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFdoaXRlIHBpbGwgb2Ygc2VsZWN0ZWQgdG9nZ2xlIG9wdGlvblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGdyaWQtYXJlYTogc3RhcnQgLyBzdGFydCAvIGVuZCAvIGVuZDtcbiAgICBtYXJnaW4taW5saW5lOiB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1sZWZ0LCAwKSB2YXIoLS1zYmItdG9nZ2xlLW9wdGlvbi1yaWdodCwgMCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRvZ2dsZS1ib3JkZXItcmFkaXVzKTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXdpZHRoKVxuICAgICAgdmFyKC0tc2JiLXRvZ2dsZS1zZWxlY3RlZC1vcHRpb24tYm9yZGVyLXN0eWxlKSB2YXIoLS1zYmItdG9nZ2xlLXNlbGVjdGVkLW9wdGlvbi1ib3JkZXItY29sb3IpO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2dnbGUtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgICAgIHByb3BlcnR5OiBtYXJnaW4taW5saW5lLXN0YXJ0LCBtYXJnaW4taW5saW5lLWVuZDtcbiAgICB9XG4gIH1cblxuICAvLyBCYWNrZ3JvdW5kXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBncmlkLWFyZWE6IHN0YXJ0IC8gc3RhcnQgLyBlbmQgLyBlbmQ7XG4gICAgb3JkZXI6IC0xO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTQpO1xuICAgIG1hcmdpbi1pbmxpbmU6IHZhcigtLXNiYi10b2dnbGUtYmFja2dyb3VuZC1pbnNldCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAyICogdmFyKC0tc2JiLXRvZ2dsZS1iYWNrZ3JvdW5kLWluc2V0KSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRvZ2dsZS1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAgIGJvcmRlcjogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgICB9XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi10b2dnbGUtb3B0aW9uOmZpcnN0LW9mLXR5cGUpIHtcbiAgZ3JpZC1hcmVhOiBzdGFydDtcbn1cblxuOjpzbG90dGVkKHNiYi10b2dnbGUtb3B0aW9uOmxhc3Qtb2YtdHlwZSkge1xuICBncmlkLWFyZWE6IGVuZDtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgaW50ZXJhY3Rpdml0eUNoZWNrZXIsXG4gIFNiYkVsZW1lbnQsXG4gIGZvcmNlVHlwZSxcbiAgaXNMZWFuLFxuICBib3hTaXppbmdTdHlsZXMsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHtcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJGb3JtQXNzb2NpYXRlZE1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiVG9nZ2xlT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL3RvZ2dsZS1vcHRpb24vdG9nZ2xlLW9wdGlvbi5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90b2dnbGUuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciB0d28gYHNiYi10b2dnbGUtb3B0aW9uYCwgYWN0aW5nIGFzIGEgdG9nZ2xlIGJ1dHRvbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgPHNiYi10b2dnbGUtb3B0aW9uPmAgZWxlbWVudHMgdG8gdGhlIHRvZ2dsZS5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUb2dnbGVFbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXRvZ2dsZSc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdyYWRpb2dyb3VwJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHNldCB0aGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudCBmaXhlZDsgaWYgZmFsc2UsXG4gICAqIHRoZSB3aWR0aCBpcyBkeW5hbWljIGJhc2VkIG9uIHRoZSBsYWJlbCBvZiB0aGUgc2JiLXRvZ2dsZS1vcHRpb24uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXZlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHRvZ2dsZS4gSXQgbmVlZHMgdG8gYmUgbXV0YWJsZSBzaW5jZSBpdCBpcyB1cGRhdGVkIHdoZW5ldmVyXG4gICAqIGEgbmV3IG9wdGlvbiBpcyBzZWxlY3RlZCAoc2VlIHRoZSBgb25Ub2dnbGVPcHRpb25TZWxlY3QoKWAgbWV0aG9kKS5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2ZhbGxiYWNrVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlzU2VydmVyXG4gICAgICA/ICh0aGlzLl9mYWxsYmFja1ZhbHVlID8/IG51bGwpXG4gICAgICA6ICh0aGlzLm9wdGlvbnMuZmluZCgobykgPT4gby5jaGVja2VkKT8udmFsdWUgPz8gdGhpcy5vcHRpb25zWzBdPy52YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIF9mYWxsYmFja1ZhbHVlOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBjaGlsZCBpbnN0YW5jZXMgb2Ygc2JiLXRvZ2dsZS1vcHRpb24gYXMgYW4gYXJyYXkuICovXG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBTYmJUb2dnbGVPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiVG9nZ2xlT3B0aW9uRWxlbWVudDxUPj4oJ3NiYi10b2dnbGUtb3B0aW9uJykgPz8gW10sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdpbnB1dCcsICgpID0+IHRoaXMuX2hhbmRsZUlucHV0KCksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdmb3JtRGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5fdXBkYXRlRGlzYWJsZWQoKTtcbiAgICB9XG5cbiAgICAvLyBCZWZvcmUgdGhlIGZpcnN0IHVwZGF0ZSwgaW5pdCB3aXRoIHRoZSBmYWxsYmFjayB2YWx1ZS5cbiAgICAvLyBUaGUgd2lsbFVwZGF0ZSBob29rIGlzIHNhZmVyIHRoYW4gdGhlICd2YWx1ZScgc2V0dGVyLlxuICAgIGlmICghdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl92YWx1ZUNoYW5nZWQodGhpcy5fZmFsbGJhY2tWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuZXZlciB0aGUgdmFsdWUgY2hhbmdlcywgYm90aCBwcm9ncmFtbWF0aWNhbGx5IG9yIGJ5IHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXR1c0NoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB0aGlzLnVwZGF0ZVBpbGxQb3NpdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRvIHRoZSBpbml0IHZhbHVlIGlmIHByZXNlbnQuIFNlbGVjdCB0aGUgZmlyc3Qgb3B0aW9uLCBvdGhlcndpc2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAodGhpcy5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPyB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA6IG51bGwpIGFzIFQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgfHwgc3RhdGUgPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IChzdGF0ZSBhcyBUKSA/PyBudWxsO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgdGhpcy5fcmVhZEZvcm1EYXRhKHN0YXRlKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRhO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVhZEZvcm1EYXRhKGZvcm1EYXRhOiBGb3JtRGF0YSk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGRhdGEgPSBmb3JtRGF0YS5nZXQodGhpcy5uYW1lKTtcbiAgICByZXR1cm4gZGF0YSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGRhdGEudGV4dCgpKSA6IChkYXRhIGFzIFQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgdXBkYXRlUGlsbFBvc2l0aW9uKHJlc2l6aW5nID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHRvZ2dsZUVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KCcuc2JiLXRvZ2dsZScpO1xuXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5sZW5ndGggPCAyIHx8XG4gICAgICAhdG9nZ2xlRWxlbWVudCB8fFxuICAgICAgb3B0aW9ucy5ldmVyeSgobykgPT4gIW8uY2hlY2tlZCkgfHxcbiAgICAgIG9wdGlvbnMuZXZlcnkoKG8pID0+ICFvLmNsaWVudFdpZHRoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2Rpc2FibGUtYW5pbWF0aW9uLW9uLXJlc2l6aW5nJywgcmVzaXppbmcpO1xuXG4gICAgY29uc3QgZmlyc3RPcHRpb24gPSBvcHRpb25zWzBdO1xuICAgIGNvbnN0IGlzRmlyc3RDaGVja2VkID0gZmlyc3RPcHRpb24uY2hlY2tlZDtcbiAgICBjb25zdCBwaWxsTGVmdCA9IGlzRmlyc3RDaGVja2VkID8gJzBweCcgOiBgJHtmaXJzdE9wdGlvbi5jbGllbnRXaWR0aH1weGA7XG4gICAgY29uc3QgcGlsbFJpZ2h0ID0gaXNGaXJzdENoZWNrZWRcbiAgICAgID8gYCR7dG9nZ2xlRWxlbWVudC5jbGllbnRXaWR0aCAtIGZpcnN0T3B0aW9uLmNsaWVudFdpZHRofXB4YFxuICAgICAgOiAnMHB4JztcblxuICAgIGlmIChwaWxsUmlnaHQgPT09ICcwcHgnICYmIHBpbGxMZWZ0ID09PSAnMHB4Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi10b2dnbGUtb3B0aW9uLWxlZnQnLCBwaWxsTGVmdCk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXRvZ2dsZS1vcHRpb24tcmlnaHQnLCBwaWxsUmlnaHQpO1xuXG4gICAgLy8gVHJpZ2dlcnMgYSBsYXlvdXQgcmVmbG93IHdoaWNoIGlzIG5lZWRlZCB0byBhdm9pZCBhbmltYXRpb24gZ2xpdGNoZXMuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICB0aGlzLm9mZnNldFdpZHRoO1xuXG4gICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgYSB0cmFuc2l0aW9uIGdsaXRjaCwgd2UgaGF2ZSB0byBrbm93IHdoZW4gdGhlIGZpcnN0IHZhbHVlcyB3ZXJlIHNldC5cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdpbml0aWFsaXplZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLl91cGRhdGVEaXNhYmxlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VkKHZhbHVlOiBUIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9XG4gICAgICBvcHRpb25zLmZpbmQoKG8pID0+IHZhbHVlID09PSBvLnZhbHVlKSA/PyBvcHRpb25zLmZpbmQoKG8pID0+IG8uY2hlY2tlZCkgPz8gb3B0aW9uc1swXTtcblxuICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmICFpc1NlcnZlcikge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNiYi10b2dnbGU6IE5vIGF2YWlsYWJsZSBvcHRpb25zISAoJHt0aGlzLmlkIHx8ICdObyBpZCd9KWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZWxlY3RlZE9wdGlvbi5jaGVja2VkID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXR1c0NoYW5nZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc2FibGVkKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdG9nZ2xlT3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgdG9nZ2xlT3B0aW9uLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIG9uIHVzZXIgaW50ZXJhY3Rpb24gKGNsaWNrIG9yIGtleWJvYXJkKVxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNDaGFuZ2VkKCk7XG4gICAgLyoqXG4gICAgICogVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG1vZGlmaWVzIHRoZSBlbGVtZW50J3MgdmFsdWUuXG4gICAgICogVW5saWtlIHRoZSBpbnB1dCBldmVudCwgdGhlIGNoYW5nZSBldmVudCBpcyBub3QgbmVjZXNzYXJpbHkgZmlyZWRcbiAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkVG9nZ2xlT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAodCkgPT4gIXQuZGlzYWJsZWQgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKHQpLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZFRvZ2dsZU9wdGlvbnMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgaXNSdGwgPSB0aGlzLm1hdGNoZXMoJzpkaXIocnRsKScpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5jaGVja2VkKSA/PyBvcHRpb25zWzBdO1xuICAgIGNvbnN0IGF2YWlsYWJsZU9wdGlvbnMgPSBvcHRpb25zXG4gICAgICAuc2xpY2UoY3VycmVudEluZGV4ICsgMSlcbiAgICAgIC5jb25jYXQob3B0aW9ucy5zbGljZSgwLCBjdXJyZW50SW5kZXgpKVxuICAgICAgLmZpbHRlcigobykgPT4gIW8uZGlzYWJsZWQgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKG8pKTtcbiAgICBpZiAoIWlzUnRsID8gZXZ0LmtleSA9PT0gJyAnIHx8IGV2dC5rZXkgPT09ICdBcnJvd1JpZ2h0JyA6IGV2dC5rZXkgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICB0aGlzLl9zZWxlY3RBbmRGb2N1c09wdGlvbihhdmFpbGFibGVPcHRpb25zWzBdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSBpZiAoaXNSdGwgPyBldnQua2V5ID09PSAnICcgfHwgZXZ0LmtleSA9PT0gJ0Fycm93UmlnaHQnIDogZXZ0LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIHRoaXMuX3NlbGVjdEFuZEZvY3VzT3B0aW9uKGF2YWlsYWJsZU9wdGlvbnMuYXQoLTEpKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdEFuZEZvY3VzT3B0aW9uKG9wdGlvbjogU2JiVG9nZ2xlT3B0aW9uRWxlbWVudDxUPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICghb3B0aW9uIHx8IG9wdGlvbi5kaXNhYmxlZCB8fCBvcHRpb24uY2hlY2tlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvcHRpb24uY2hlY2tlZCA9IHRydWU7XG4gICAgb3B0aW9uLmZvY3VzKCk7XG4gICAgb3B0aW9uLmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9nZ2xlXCI+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fdXBkYXRlVG9nZ2xlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdG9nZ2xlJzogU2JiVG9nZ2xlRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQ2lDYSwwQkFBZ0I7bUJBQXFCLGlCQUNoRCx1QkFBdUIsV0FBVyxDQUNuQzs7Ozs7Ozs7O2NBRlkseUJBQXFDLFlBRWpEOzs7dUJBWUUsV0FBVyxFQUNYLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTt1QkFPMUMsU0FB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
|