@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779813787 → 5.0.0-next.3-dev.1779891630
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/{block-link-common-C_rUmc2u.js → block-link-common-BZZ4NhPD.js} +1 -1
- package/core.js +24 -25
- package/custom-elements.json +1412 -281
- package/development/{block-link-common-C0XzZIvS.js → block-link-common-DCKM3jJQ.js} +2 -2
- package/development/core.d.ts +0 -1
- package/development/core.d.ts.map +1 -1
- package/development/core.js +1 -2
- package/development/icon/icon-base.js +1 -1
- package/development/icon/icon.component.js +1 -1
- package/development/icon-base-Cq6DxOUh.js +163 -0
- package/development/icon.js +1 -1
- package/development/icon.pure.js +1 -1
- package/development/link/common/block-link-common.js +1 -1
- package/development/link.js +1 -1
- package/development/link.pure.js +1 -1
- package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.d.ts +0 -1
- package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.d.ts +0 -1
- package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +1 -1
- package/development/navigation-action-common-BdJOaItd.js +1 -1
- package/development/{navigation-section.component-DhMQspKb.js → navigation-section.component-34GEIPaN.js} +2 -5
- package/development/{navigation.component-BOBqdfXo.js → navigation.component-CqQuaq7V.js} +2 -5
- package/development/navigation.js +2 -2
- package/development/navigation.pure.js +2 -2
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +3 -3
- package/development/popover/popover/popover.component.d.ts +54 -0
- package/development/popover/popover/popover.component.d.ts.map +1 -0
- package/development/popover/popover/popover.component.js +2 -0
- package/development/popover/{popover.component.d.ts → popover-base/popover-base.d.ts} +2 -59
- package/development/popover/popover-base/popover-base.d.ts.map +1 -0
- package/development/popover/popover-base/popover-base.js +2 -0
- package/development/popover/popover-close-button/popover-close-button.component.d.ts +21 -0
- package/development/popover/popover-close-button/popover-close-button.component.d.ts.map +1 -0
- package/development/popover/popover-close-button/popover-close-button.component.js +30 -0
- package/development/popover-base-BcIAVXWF.js +288 -0
- package/development/popover.component-CMR0eV2t.js +233 -0
- package/development/popover.js +6 -3
- package/development/popover.pure.d.ts +3 -1
- package/development/popover.pure.d.ts.map +1 -1
- package/development/popover.pure.js +4 -2
- package/development/tag/tag/tag.component.d.ts +1 -0
- package/development/tag/tag/tag.component.d.ts.map +1 -1
- package/development/tag/tag/tag.component.js +1 -1
- package/development/tag/tag-group/tag-group.component.d.ts +6 -1
- package/development/tag/tag-group/tag-group.component.d.ts.map +1 -1
- package/development/tag/tag-group/tag-group.component.js +1 -1
- package/development/tag-group.component-DTff1eBB.js +225 -0
- package/development/{tag.component-D6YowucW.js → tag.component-CDDb2fnV.js} +28 -8
- package/development/tag.js +2 -2
- package/development/tag.pure.js +2 -2
- package/development/toast/toast.component.d.ts.map +1 -1
- package/development/toast/toast.component.js +1 -1
- package/development/{toast.component-DowxkGr4.js → toast.component-BgGWVr4o.js} +3 -4
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/icon/icon-base.js +1 -1
- package/icon/icon.component.js +1 -1
- package/{icon-base-CK1oqnO4.js → icon-base-TSCmR5QC.js} +1 -1
- package/icon.js +1 -1
- package/icon.pure.js +1 -1
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/link/common/block-link-common.js +1 -1
- package/link.js +1 -1
- package/link.pure.js +1 -1
- package/navigation/navigation/navigation.component.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/{navigation-section.component-c4XBLFsl.js → navigation-section.component-DPgBlCf8.js} +1 -4
- package/{navigation.component-pRBja4z3.js → navigation.component-CY_9Q6dT.js} +1 -4
- package/navigation.js +2 -2
- package/navigation.pure.js +2 -2
- package/overlay/overlay-base-element.js +2 -2
- package/package.json +2 -2
- package/popover/popover/popover.component.js +2 -0
- package/popover/popover-base/popover-base.js +2 -0
- package/popover/popover-close-button/popover-close-button.component.js +20 -0
- package/popover-base-DlSa-ajc.js +181 -0
- package/popover.component-BHg4Qtqd.js +158 -0
- package/popover.js +5 -4
- package/popover.pure.js +4 -2
- package/tag/tag/tag.component.js +1 -1
- package/tag/tag-group/tag-group.component.js +1 -1
- package/{tag-group.component-ByRxy8UG.js → tag-group.component-CJwbkP70.js} +38 -23
- package/{tag.component-BrKoQeIW.js → tag.component-r8diGGP-.js} +14 -5
- package/tag.js +2 -2
- package/tag.pure.js +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-Lbh5sa_U.js → toast.component-Dlr0Koxu.js} +22 -23
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
- package/core/eventing/composed-path-has-attribute.js +0 -7
- package/development/core/eventing/composed-path-has-attribute.d.ts +0 -10
- package/development/core/eventing/composed-path-has-attribute.d.ts.map +0 -1
- package/development/core/eventing/composed-path-has-attribute.js +0 -19
- package/development/icon-base-Cz7F4MJ9.js +0 -163
- package/development/popover/popover.component.d.ts.map +0 -1
- package/development/popover/popover.component.js +0 -2
- package/development/popover.component-DtIhw37L.js +0 -578
- package/development/tag-group.component-jSgluqL-.js +0 -194
- package/popover/popover.component.js +0 -2
- package/popover.component-DrLx8J07.js +0 -385
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { html, isServer, unsafeCSS } from "lit";
|
|
3
|
+
import { property, state } from "lit/decorators.js";
|
|
4
|
+
import { SbbMediaQueryPointerCoarse, forceType, isFakeMousedownFromScreenReader, readConfig, sbbInputModalityDetector, scrollbarStyles, ɵstateController } from "./core.js";
|
|
5
|
+
import { SbbPopoverBaseElement } from "./popover/popover-base/popover-base.js";
|
|
6
|
+
//#region src/elements/popover/popover/popover.scss?inline
|
|
7
|
+
var popover_default = ":host {\n --_sbb-popover-half-padding: calc(0.5 * var(--sbb-popover-padding));\n position: relative;\n}\n\n:host(:is(:state(has-close-button),[state--has-close-button])) {\n --_sbb-popover-close-button-min-height: calc(\n var(--sbb-button-min-height-size-s) + 2 * var(--sbb-popover-padding)\n );\n --_sbb-popover-close-button-min-width: calc(\n var(--_sbb-popover-close-button-min-height) - var(--_sbb-popover-half-padding)\n );\n}\n\n.sbb-popover__content {\n padding-block: var(--_sbb-popover-half-padding);\n padding-inline: var(--_sbb-popover-half-padding) var(--_sbb-popover-close-button-min-width, var(--_sbb-popover-half-padding));\n min-height: var(--_sbb-popover-close-button-min-height);\n}\n\n.sbb-popover__scrollable-content {\n display: block;\n padding-inline: var(--_sbb-popover-half-padding);\n padding-block: var(--_sbb-popover-half-padding);\n max-height: calc(var(--_sbb-popover-max-height) - var(--sbb-spacing-fixed-1x));\n overflow: auto;\n}\n\n::slotted(sbb-popover-close-button) {\n position: absolute;\n inset: var(--sbb-popover-padding) var(--sbb-popover-padding) auto auto;\n}";
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/elements/popover/popover/popover.component.ts
|
|
10
|
+
var pointerCoarse = isServer ? false : matchMedia(SbbMediaQueryPointerCoarse).matches;
|
|
11
|
+
/**
|
|
12
|
+
* It displays contextual information within a popover.
|
|
13
|
+
*
|
|
14
|
+
* @slot - Use the unnamed slot to add the `sbb-popover-close-button` and content into the popover.
|
|
15
|
+
* @cssprop [--sbb-popover-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
|
|
16
|
+
* the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
|
|
17
|
+
* component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
|
|
18
|
+
*/
|
|
19
|
+
var SbbPopoverElement = (() => {
|
|
20
|
+
let _classSuper = SbbPopoverBaseElement;
|
|
21
|
+
let _instanceExtraInitializers = [];
|
|
22
|
+
let _hoverTrigger_decorators;
|
|
23
|
+
let _hoverTrigger_initializers = [];
|
|
24
|
+
let _hoverTrigger_extraInitializers = [];
|
|
25
|
+
let _set_openDelay_decorators;
|
|
26
|
+
let _set_closeDelay_decorators;
|
|
27
|
+
let __hoverTrigger_decorators;
|
|
28
|
+
let __hoverTrigger_initializers = [];
|
|
29
|
+
let __hoverTrigger_extraInitializers = [];
|
|
30
|
+
return class SbbPopoverElement extends _classSuper {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.#hoverTrigger_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _hoverTrigger_initializers, false));
|
|
34
|
+
this._openDelay = __runInitializers(this, _hoverTrigger_extraInitializers);
|
|
35
|
+
this.#_hoverTrigger_accessor_storage = __runInitializers(this, __hoverTrigger_initializers, false);
|
|
36
|
+
this._openTimeout = __runInitializers(this, __hoverTrigger_extraInitializers);
|
|
37
|
+
this._overlayAbortController = null;
|
|
38
|
+
this._onTriggerMouseEnter = () => {
|
|
39
|
+
if (this.state === "closed" || this.state === "closing") this._openTimeout = setTimeout(() => {
|
|
40
|
+
sbbInputModalityDetector.reset();
|
|
41
|
+
this.open();
|
|
42
|
+
}, this.openDelay);
|
|
43
|
+
else clearTimeout(this.closeTimeout);
|
|
44
|
+
};
|
|
45
|
+
this._onTriggerMouseLeave = () => {
|
|
46
|
+
if (this.state === "opened" || this.state === "opening") this.closeTimeout = setTimeout(() => this.close(), this.closeDelay);
|
|
47
|
+
else clearTimeout(this._openTimeout);
|
|
48
|
+
};
|
|
49
|
+
this._onOverlayMouseEnter = () => {
|
|
50
|
+
if (this.state !== "opening") clearTimeout(this.closeTimeout);
|
|
51
|
+
};
|
|
52
|
+
this._onOverlayMouseLeave = () => {
|
|
53
|
+
if (this.state !== "opening") this.closeTimeout = setTimeout(() => this.close(), this.closeDelay);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
static {
|
|
57
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
58
|
+
_hoverTrigger_decorators = [forceType(), property({
|
|
59
|
+
attribute: "hover-trigger",
|
|
60
|
+
type: Boolean
|
|
61
|
+
})];
|
|
62
|
+
_set_openDelay_decorators = [property({
|
|
63
|
+
attribute: "open-delay",
|
|
64
|
+
type: Number
|
|
65
|
+
})];
|
|
66
|
+
_set_closeDelay_decorators = [property({
|
|
67
|
+
attribute: "close-delay",
|
|
68
|
+
type: Number
|
|
69
|
+
})];
|
|
70
|
+
__hoverTrigger_decorators = [state()];
|
|
71
|
+
__esDecorate(this, null, _hoverTrigger_decorators, {
|
|
72
|
+
kind: "accessor",
|
|
73
|
+
name: "hoverTrigger",
|
|
74
|
+
static: false,
|
|
75
|
+
private: false,
|
|
76
|
+
access: {
|
|
77
|
+
has: (obj) => "hoverTrigger" in obj,
|
|
78
|
+
get: (obj) => obj.hoverTrigger,
|
|
79
|
+
set: (obj, value) => {
|
|
80
|
+
obj.hoverTrigger = value;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
metadata: _metadata
|
|
84
|
+
}, _hoverTrigger_initializers, _hoverTrigger_extraInitializers);
|
|
85
|
+
__esDecorate(this, null, _set_openDelay_decorators, {
|
|
86
|
+
kind: "setter",
|
|
87
|
+
name: "openDelay",
|
|
88
|
+
static: false,
|
|
89
|
+
private: false,
|
|
90
|
+
access: {
|
|
91
|
+
has: (obj) => "openDelay" in obj,
|
|
92
|
+
set: (obj, value) => {
|
|
93
|
+
obj.openDelay = value;
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
metadata: _metadata
|
|
97
|
+
}, null, _instanceExtraInitializers);
|
|
98
|
+
__esDecorate(this, null, _set_closeDelay_decorators, {
|
|
99
|
+
kind: "setter",
|
|
100
|
+
name: "closeDelay",
|
|
101
|
+
static: false,
|
|
102
|
+
private: false,
|
|
103
|
+
access: {
|
|
104
|
+
has: (obj) => "closeDelay" in obj,
|
|
105
|
+
set: (obj, value) => {
|
|
106
|
+
obj.closeDelay = value;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
metadata: _metadata
|
|
110
|
+
}, null, _instanceExtraInitializers);
|
|
111
|
+
__esDecorate(this, null, __hoverTrigger_decorators, {
|
|
112
|
+
kind: "accessor",
|
|
113
|
+
name: "_hoverTrigger",
|
|
114
|
+
static: false,
|
|
115
|
+
private: false,
|
|
116
|
+
access: {
|
|
117
|
+
has: (obj) => "_hoverTrigger" in obj,
|
|
118
|
+
get: (obj) => obj._hoverTrigger,
|
|
119
|
+
set: (obj, value) => {
|
|
120
|
+
obj._hoverTrigger = value;
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
metadata: _metadata
|
|
124
|
+
}, __hoverTrigger_initializers, __hoverTrigger_extraInitializers);
|
|
125
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
configurable: true,
|
|
128
|
+
writable: true,
|
|
129
|
+
value: _metadata
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
static {
|
|
133
|
+
this.elementName = "sbb-popover";
|
|
134
|
+
}
|
|
135
|
+
static {
|
|
136
|
+
this.styles = [scrollbarStyles, unsafeCSS(popover_default)];
|
|
137
|
+
}
|
|
138
|
+
#hoverTrigger_accessor_storage;
|
|
139
|
+
/** Whether the popover should be triggered on hover. */
|
|
140
|
+
get hoverTrigger() {
|
|
141
|
+
return this.#hoverTrigger_accessor_storage;
|
|
142
|
+
}
|
|
143
|
+
set hoverTrigger(value) {
|
|
144
|
+
this.#hoverTrigger_accessor_storage = value;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Open the popover after a given delay in milliseconds.
|
|
148
|
+
* Global configuration is used as default, if not set.
|
|
149
|
+
*
|
|
150
|
+
* @default 0
|
|
151
|
+
*/
|
|
152
|
+
set openDelay(value) {
|
|
153
|
+
this._openDelay = +value;
|
|
154
|
+
}
|
|
155
|
+
get openDelay() {
|
|
156
|
+
return this._openDelay ?? readConfig().popover?.openDelay ?? 0;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Close the popover after a given delay in milliseconds.
|
|
160
|
+
* Global configuration is used as default, if not set.
|
|
161
|
+
*
|
|
162
|
+
* @default 0
|
|
163
|
+
*/
|
|
164
|
+
set closeDelay(value) {
|
|
165
|
+
this._closeDelay = +value;
|
|
166
|
+
}
|
|
167
|
+
get closeDelay() {
|
|
168
|
+
return this._closeDelay ?? readConfig().popover?.closeDelay ?? 0;
|
|
169
|
+
}
|
|
170
|
+
#_hoverTrigger_accessor_storage;
|
|
171
|
+
get _hoverTrigger() {
|
|
172
|
+
return this.#_hoverTrigger_accessor_storage;
|
|
173
|
+
}
|
|
174
|
+
set _hoverTrigger(value) {
|
|
175
|
+
this.#_hoverTrigger_accessor_storage = value;
|
|
176
|
+
}
|
|
177
|
+
configureTrigger(oldTrigger) {
|
|
178
|
+
const hoverTrigger = this.hoverTrigger && !pointerCoarse;
|
|
179
|
+
if (this.trigger === oldTrigger && hoverTrigger === this._hoverTrigger) return;
|
|
180
|
+
if (this._hoverTrigger !== hoverTrigger) {
|
|
181
|
+
this._hoverTrigger = hoverTrigger;
|
|
182
|
+
this.toggleState("hover-trigger", this._hoverTrigger);
|
|
183
|
+
this._registerOverlayListeners();
|
|
184
|
+
}
|
|
185
|
+
super.configureTrigger(oldTrigger);
|
|
186
|
+
}
|
|
187
|
+
_registerOverlayListeners() {
|
|
188
|
+
this._overlayAbortController?.abort();
|
|
189
|
+
if (this._hoverTrigger) {
|
|
190
|
+
this._overlayAbortController = new AbortController();
|
|
191
|
+
this.overlay?.addEventListener("mouseenter", () => this._onOverlayMouseEnter(), { signal: this._overlayAbortController.signal });
|
|
192
|
+
this.overlay?.addEventListener("mouseleave", () => this._onOverlayMouseLeave(), { signal: this._overlayAbortController.signal });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
registerTriggerListeners(signal) {
|
|
196
|
+
if (this._hoverTrigger && this.trigger) {
|
|
197
|
+
this.trigger.addEventListener("mouseenter", this._onTriggerMouseEnter, { signal });
|
|
198
|
+
this.trigger.addEventListener("mouseleave", this._onTriggerMouseLeave, { signal });
|
|
199
|
+
this.trigger.addEventListener("keydown", (evt) => {
|
|
200
|
+
if (evt.code === "Space" || evt.code === "Enter") this.open();
|
|
201
|
+
}, { signal });
|
|
202
|
+
this.trigger.addEventListener("mousedown", (evt) => {
|
|
203
|
+
if (isFakeMousedownFromScreenReader(evt)) this.open();
|
|
204
|
+
}, { signal });
|
|
205
|
+
} else super.registerTriggerListeners(signal);
|
|
206
|
+
}
|
|
207
|
+
firstUpdated(changedProperties) {
|
|
208
|
+
super.firstUpdated(changedProperties);
|
|
209
|
+
this._registerOverlayListeners();
|
|
210
|
+
}
|
|
211
|
+
open() {
|
|
212
|
+
super.open();
|
|
213
|
+
if (this.hoverTrigger && this.trigger) ɵstateController(this.trigger).add("force-hover");
|
|
214
|
+
}
|
|
215
|
+
close() {
|
|
216
|
+
super.close();
|
|
217
|
+
ɵstateController(this.trigger)?.delete("force-hover");
|
|
218
|
+
}
|
|
219
|
+
renderContent() {
|
|
220
|
+
return html`
|
|
221
|
+
<span class="sbb-popover__scrollable-content sbb-scrollbar">
|
|
222
|
+
<slot
|
|
223
|
+
@slotchange=${() => this.toggleState("has-close-button", !!this.querySelector("sbb-popover-close-button"))}
|
|
224
|
+
></slot>
|
|
225
|
+
</span>
|
|
226
|
+
`;
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
})();
|
|
230
|
+
//#endregion
|
|
231
|
+
export { SbbPopoverElement as t };
|
|
232
|
+
|
|
233
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQtQ01SMGVWMnQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3BvcG92ZXIvcG9wb3Zlci9wb3BvdmVyLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3BvcG92ZXIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZzogY2FsYygwLjUgKiB2YXIoLS1zYmItcG9wb3Zlci1wYWRkaW5nKSk7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG46aG9zdCg6c3RhdGUoaGFzLWNsb3NlLWJ1dHRvbikpIHtcbiAgLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWJ1dHRvbi1taW4taGVpZ2h0LXNpemUtcykgKyAyICogdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZylcbiAgKTtcbiAgLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi13aWR0aDogY2FsYyhcbiAgICB2YXIoLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi1oZWlnaHQpIC0gdmFyKC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZylcbiAgKTtcbn1cblxuLnNiYi1wb3BvdmVyX19jb250ZW50IHtcbiAgLy8gV2UgdXNlIGhhbGYgb2YgdGhlIHBhZGRpbmcgb24gdGhlIGNvbnRhaW5lciBhbmQgaGFsZiBvbiB0aGUgc2Nyb2xsIGNvbnRleHQuXG4gIC8vIFdpdGggdGhhdCwgdGhlIGZvY3VzIG91dGxpbmUgaXMgbm90IGN1dCBhbmQgdGhlIHNjcm9sbGFibGUgY29udGV4dCBkb2Vzbid0IHRvdWNoIHRoZSBib3JkZXJzLlxuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1fc2JiLXBvcG92ZXItaGFsZi1wYWRkaW5nKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLV9zYmItcG9wb3Zlci1oYWxmLXBhZGRpbmcpXG4gICAgdmFyKC0tX3NiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbi1taW4td2lkdGgsIHZhcigtLV9zYmItcG9wb3Zlci1oYWxmLXBhZGRpbmcpKTtcbiAgbWluLWhlaWdodDogdmFyKC0tX3NiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbi1taW4taGVpZ2h0KTtcbn1cblxuLnNiYi1wb3BvdmVyX19zY3JvbGxhYmxlLWNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBXZSB1c2UgaGFsZiBvZiB0aGUgcGFkZGluZyBvbiB0aGUgY29udGFpbmVyIGFuZCBoYWxmIG9uIHRoZSBzY3JvbGwgY29udGV4dC5cbiAgLy8gV2l0aCB0aGF0LCB0aGUgZm9jdXMgb3V0bGluZSBpcyBub3QgY3V0IGFuZCB0aGUgc2Nyb2xsYWJsZSBjb250ZXh0IGRvZXNuJ3QgdG91Y2ggdGhlIGJvcmRlcnMuXG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1fc2JiLXBvcG92ZXItaGFsZi1wYWRkaW5nKTtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZyk7XG4gIG1heC1oZWlnaHQ6IGNhbGModmFyKC0tX3NiYi1wb3BvdmVyLW1heC1oZWlnaHQpIC0gdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbjo6c2xvdHRlZChzYmItcG9wb3Zlci1jbG9zZS1idXR0b24pIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZykgdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZykgYXV0byBhdXRvO1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyLFxuICByZWFkQ29uZmlnLFxuICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IsXG4gIFNiYk1lZGlhUXVlcnlQb2ludGVyQ29hcnNlLFxuICBzY3JvbGxiYXJTdHlsZXMsXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYlBvcG92ZXJCYXNlRWxlbWVudCB9IGZyb20gJy4uL3BvcG92ZXItYmFzZS9wb3BvdmVyLWJhc2UudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9wb3BvdmVyLnNjc3M/aW5saW5lJztcblxuY29uc3QgcG9pbnRlckNvYXJzZSA9IGlzU2VydmVyID8gZmFsc2UgOiBtYXRjaE1lZGlhKFNiYk1lZGlhUXVlcnlQb2ludGVyQ29hcnNlKS5tYXRjaGVzO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gd2l0aGluIGEgcG9wb3Zlci5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgYHNiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbmAgYW5kIGNvbnRlbnQgaW50byB0aGUgcG9wb3Zlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1wb3BvdmVyLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlBvcG92ZXJFbGVtZW50IGV4dGVuZHMgU2JiUG9wb3ZlckJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1wb3BvdmVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Njcm9sbGJhclN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIHRyaWdnZXJlZCBvbiBob3Zlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvdmVyLXRyaWdnZXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBob3ZlclRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3BlbiB0aGUgcG9wb3ZlciBhZnRlciBhIGdpdmVuIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdvcGVuLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgb3BlbkRlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcGVuRGVsYXkgPSArdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBvcGVuRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbkRlbGF5ID8/IHJlYWRDb25maWcoKS5wb3BvdmVyPy5vcGVuRGVsYXkgPz8gMDtcbiAgfVxuICBwcml2YXRlIF9vcGVuRGVsYXk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBwb3BvdmVyIGFmdGVyIGEgZ2l2ZW4gZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Nsb3NlLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgY2xvc2VEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9ICt2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGNsb3NlRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VEZWxheSA/PyByZWFkQ29uZmlnKCkucG9wb3Zlcj8uY2xvc2VEZWxheSA/PyAwO1xuICB9XG4gIHByaXZhdGUgX2Nsb3NlRGVsYXk/OiBudW1iZXI7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaG92ZXJUcmlnZ2VyID0gZmFsc2U7XG4gIHByaXZhdGUgX29wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX292ZXJsYXlBYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlciB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjb25maWd1cmVUcmlnZ2VyKG9sZFRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHRyaWdnZXIgY2FuIGJlIGhvdmVyZWQuIFNvbWUgZGV2aWNlcyBtaWdodCBpbnRlcnByZXQgdGhlIG1lZGlhIHF1ZXJ5IChob3ZlcjogaG92ZXIpIGRpZmZlcmVudGx5LFxuICAgIC8vIGFuZCBub3QgcmVzcGVjdCB0aGUgZmFsbGJhY2sgbWVjaGFuaXNtIG9uIHRoZSBjbGljay4gVGhlcmVmb3JlLCB0aGUgZm9sbG93aW5nIGlzIHByZWZlcnJlZCB0byBpZGVudGlmeVxuICAgIC8vIGFsbCBub24tdG91Y2hzY3JlZW4gZGV2aWNlcy5cbiAgICBjb25zdCBob3ZlclRyaWdnZXIgPSB0aGlzLmhvdmVyVHJpZ2dlciAmJiAhcG9pbnRlckNvYXJzZTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09IG9sZFRyaWdnZXIgJiYgaG92ZXJUcmlnZ2VyID09PSB0aGlzLl9ob3ZlclRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faG92ZXJUcmlnZ2VyICE9PSBob3ZlclRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2hvdmVyVHJpZ2dlciA9IGhvdmVyVHJpZ2dlcjtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hvdmVyLXRyaWdnZXInLCB0aGlzLl9ob3ZlclRyaWdnZXIpO1xuICAgICAgdGhpcy5fcmVnaXN0ZXJPdmVybGF5TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgc3VwZXIuY29uZmlndXJlVHJpZ2dlcihvbGRUcmlnZ2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyT3ZlcmxheUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgaWYgKHRoaXMuX2hvdmVyVHJpZ2dlcikge1xuICAgICAgdGhpcy5fb3ZlcmxheUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMub3ZlcmxheT8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuX29uT3ZlcmxheU1vdXNlRW50ZXIoKSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX292ZXJsYXlBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm92ZXJsYXk/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLl9vbk92ZXJsYXlNb3VzZUxlYXZlKCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vdmVybGF5QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWdpc3RlclRyaWdnZXJMaXN0ZW5lcnMoc2lnbmFsOiBBYm9ydFNpZ25hbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ob3ZlclRyaWdnZXIgJiYgdGhpcy50cmlnZ2VyKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuX29uVHJpZ2dlck1vdXNlRW50ZXIsIHsgc2lnbmFsIH0pO1xuICAgICAgdGhpcy50cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLl9vblRyaWdnZXJNb3VzZUxlYXZlLCB7IHNpZ25hbCB9KTtcbiAgICAgIHRoaXMudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgIChldnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZ0LmNvZGUgPT09ICdTcGFjZScgfHwgZXZ0LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBzaWduYWwgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ21vdXNlZG93bicsXG4gICAgICAgIChldnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2ssIE5WREEgY2FuJ3Qgb3BlbiB0aGUgcG9wb3ZlciBvbiBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICAgICAgICBpZiAoaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldnQpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgc2lnbmFsIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlci5yZWdpc3RlclRyaWdnZXJMaXN0ZW5lcnMoc2lnbmFsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9yZWdpc3Rlck92ZXJsYXlMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9wZW4oKTtcblxuICAgIGlmICh0aGlzLmhvdmVyVHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIpIHtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMudHJpZ2dlcikuYWRkKCdmb3JjZS1ob3ZlcicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjbG9zZSgpOiB2b2lkIHtcbiAgICBzdXBlci5jbG9zZSgpO1xuXG4gICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy50cmlnZ2VyKT8uZGVsZXRlKCdmb3JjZS1ob3ZlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25UcmlnZ2VyTW91c2VFbnRlciA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcgfHwgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9vcGVuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgdHJpZ2dlciBpcyBmb2N1c2VkIGJ5IGtleWJvYXJkIGFuZCBob3ZlcmVkIHdpdGggdGhlIG1vdXNlLCB0aGUgb3V0bGluZSB3b3VsZCBiZSB2aXNpYmxlLlxuICAgICAgICAvLyBTbyB3ZSByZXNldCB0aGUgaW5wdXQgbW9kYWxpdHkgdG8gaGlkZSB0aGUgb3V0bGluZS5cbiAgICAgICAgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfSwgdGhpcy5vcGVuRGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vblRyaWdnZXJNb3VzZUxlYXZlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuY2xvc2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsb3NlKCksIHRoaXMuY2xvc2VEZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9vcGVuVGltZW91dCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX29uT3ZlcmxheU1vdXNlRW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuaW5nJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2VUaW1lb3V0KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25PdmVybGF5TW91c2VMZWF2ZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLmNsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlRGVsYXkpO1xuICAgIH1cbiAgfTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyQ29udGVudCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1wb3BvdmVyX19zY3JvbGxhYmxlLWNvbnRlbnQgc2JiLXNjcm9sbGJhclwiPlxuICAgICAgICA8c2xvdFxuICAgICAgICAgIEBzbG90Y2hhbmdlPSR7KCkgPT5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1jbG9zZS1idXR0b24nLCAhIXRoaXMucXVlcnlTZWxlY3Rvcignc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uJykpfVxuICAgICAgICA+PC9zbG90PlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1wb3BvdmVyJzogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FDdUJBLElBQU0sZ0JBQWdCLFdBQVcsUUFBUSxXQUFXLDBCQUEwQixFQUFFOzs7Ozs7Ozs7SUFVbkUsMkJBQWlCO21CQUFTOzs7Ozs7Ozs7O2NBQTFCLDBCQUEwQixZQUFxQjs7O0dBTzFDLEtBQUEsa0NBUEwsa0JBQUEsTUFBQSwwQkFBQSxHQUFpQixrQkFBQSxNQUFBLDRCQU9ZLEtBQUs7R0FlckMsS0FBQSxhQUFVLGtCQUFBLE1BQUEsK0JBQUE7R0FpQlEsS0FBQSxrQ0FBQSxrQkFBQSxNQUFBLDZCQUFnQixLQUFLO0dBQ3ZDLEtBQUEsZUFBWSxrQkFBQSxNQUFBLGdDQUFBO0dBQ1osS0FBQSwwQkFBa0Q7R0FtRmxELEtBQUEsNkJBQWtDO0lBQ3hDLElBQUksS0FBSyxVQUFVLFlBQVksS0FBSyxVQUFVLFdBQzVDLEtBQUssZUFBZSxpQkFBZ0I7S0FHbEMseUJBQXlCLE1BQUs7S0FDOUIsS0FBSyxLQUFJO0lBQ1gsR0FBRyxLQUFLLFNBQVM7U0FFakIsYUFBYSxLQUFLLFlBQVk7R0FFbEM7R0FFUSxLQUFBLDZCQUFr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
|
package/development/popover.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { n as SbbPopoverCloseEvent,
|
|
1
|
+
import { n as SbbPopoverCloseEvent, t as SbbPopoverBaseElement } from "./popover-base-BcIAVXWF.js";
|
|
2
|
+
import { t as SbbPopoverElement } from "./popover.component-CMR0eV2t.js";
|
|
3
|
+
import { SbbPopoverCloseButtonElement } from "./popover/popover-close-button/popover-close-button.component.js";
|
|
2
4
|
import "./popover.pure.js";
|
|
3
5
|
//#region src/elements/popover.ts
|
|
4
6
|
/** @entrypoint */
|
|
5
7
|
SbbPopoverElement.define();
|
|
8
|
+
SbbPopoverCloseButtonElement.define();
|
|
6
9
|
//#endregion
|
|
7
|
-
export { SbbPopoverBaseElement, SbbPopoverCloseEvent, SbbPopoverElement };
|
|
10
|
+
export { SbbPopoverBaseElement, SbbPopoverCloseButtonElement, SbbPopoverCloseEvent, SbbPopoverElement };
|
|
8
11
|
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcG9wb3Zlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGVudHJ5cG9pbnQgKi9cbmltcG9ydCB7IFNiYlBvcG92ZXJDbG9zZUJ1dHRvbkVsZW1lbnQsIFNiYlBvcG92ZXJFbGVtZW50IH0gZnJvbSAnLi9wb3BvdmVyLnB1cmUudHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIucHVyZS50cyc7XG5cblNiYlBvcG92ZXJFbGVtZW50LmRlZmluZSgpO1xuU2JiUG9wb3ZlckNsb3NlQnV0dG9uRWxlbWVudC5kZWZpbmUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0Esa0JBQWtCLE9BQU07QUFDeEIsNkJBQTZCLE9BQU0ifQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/** @entrypoint */
|
|
2
|
-
export * from './popover/popover.
|
|
2
|
+
export * from './popover/popover-base/popover-base.ts';
|
|
3
|
+
export * from './popover/popover/popover.component.ts';
|
|
4
|
+
export * from './popover/popover-close-button/popover-close-button.component.ts';
|
|
3
5
|
//# sourceMappingURL=popover.pure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.pure.d.ts","sourceRoot":"","sources":["../../../src/elements/popover.pure.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"popover.pure.d.ts","sourceRoot":"","sources":["../../../src/elements/popover.pure.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kEAAkE,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { n as SbbPopoverCloseEvent,
|
|
2
|
-
|
|
1
|
+
import { n as SbbPopoverCloseEvent, t as SbbPopoverBaseElement } from "./popover-base-BcIAVXWF.js";
|
|
2
|
+
import { t as SbbPopoverElement } from "./popover.component-CMR0eV2t.js";
|
|
3
|
+
import { SbbPopoverCloseButtonElement } from "./popover/popover-close-button/popover-close-button.component.js";
|
|
4
|
+
export { SbbPopoverBaseElement, SbbPopoverCloseButtonElement, SbbPopoverCloseEvent, SbbPopoverElement };
|
|
@@ -30,6 +30,7 @@ export declare class SbbTagElement<T = string> extends SbbTagElement_base {
|
|
|
30
30
|
accessor size: 's' | 'm' | null;
|
|
31
31
|
constructor();
|
|
32
32
|
private _tagGroup;
|
|
33
|
+
private _updateAriaRole;
|
|
33
34
|
protected isDisabledExternally(): boolean;
|
|
34
35
|
/** Method triggered on button click. Inverts the checked value and emits events. */
|
|
35
36
|
private _handleClick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,wBAAwB,EAGzB,MAAM,eAAe,CAAC;;AAMvB;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAE9C;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAa;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IACnE,gBAAuB,MAAM;;;;MAIlB;IAEX,iCAAiC;IACjC,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SACgB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;;
|
|
1
|
+
{"version":3,"file":"tag.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,wBAAwB,EAGzB,MAAM,eAAe,CAAC;;AAMvB;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAE9C;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAa;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IACnE,gBAAuB,MAAM;;;;MAIlB;IAEX,iCAAiC;IACjC,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SACgB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;;IAe9C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;cAaJ,oBAAoB,IAAI,OAAO;IAIlD,oFAAoF;IACpF,OAAO,CAAC,YAAY;cAgCD,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAsB5E;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAIzC;;OAEG;IACa,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,EAAE,iBAAiB,GACzB,IAAI;cAMY,eAAe,IAAI,IAAI;cAQvB,SAAS,IAAI,gBAAgB;cAI7B,cAAc,IAAI,cAAc;CAWpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbTagElement } from "../../tag.component-
|
|
1
|
+
import { t as SbbTagElement } from "../../tag.component-CDDb2fnV.js";
|
|
2
2
|
export { SbbTagElement };
|
|
@@ -15,7 +15,7 @@ export declare class SbbTagGroupElement<T = string> extends SbbTagGroupElement_b
|
|
|
15
15
|
/**
|
|
16
16
|
* This will be forwarded as aria-label to the inner list.
|
|
17
17
|
*/
|
|
18
|
-
accessor
|
|
18
|
+
accessor accessibilityLabel: string;
|
|
19
19
|
/**
|
|
20
20
|
* If set multiple to false, the selection is exclusive and the value is a string (or null).
|
|
21
21
|
* If set multiple to true, the selection can have multiple values and therefore value is an array.
|
|
@@ -37,7 +37,12 @@ export declare class SbbTagGroupElement<T = string> extends SbbTagGroupElement_b
|
|
|
37
37
|
private _value;
|
|
38
38
|
/** The child instances of sbb-tag as an array. */
|
|
39
39
|
get tags(): SbbTagElement<T>[];
|
|
40
|
+
constructor();
|
|
40
41
|
protected willUpdate(changedProperties: PropertyValues<WithListChildren<this>>): void;
|
|
42
|
+
private _enabledTags;
|
|
43
|
+
/** In exclusive mode, only the checked tag (or the first non-disabled tag) should be focusable. */
|
|
44
|
+
protected updateExclusiveTabIndex(): void;
|
|
45
|
+
private _handleArrowKeyDown;
|
|
41
46
|
private _applyValueToTags;
|
|
42
47
|
protected render(): TemplateResult;
|
|
43
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,
|
|
1
|
+
{"version":3,"file":"tag-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAKL,UAAU,EAEV,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;;AAI7D;;;;;GAKG;AACH,qBAAa,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,uBAEnD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAmB;IACtE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE,mBAA4B,mBAAmB,WAAsB;IAErE;;OAEG;IACH,SAEgB,kBAAkB,EAAE,MAAM,CAAM;IAEhD;;;;;OAKG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;OAEG;IACH,SAA6C,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAQ;IAEhF;;;;OAIG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EAM9C;IACD,IAAW,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAM1C;IACD,OAAO,CAAC,MAAM,CAAiC;IAE/C,kDAAkD;IAClD,IAAW,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAEpC;;cAOkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAqC9F,OAAO,CAAC,YAAY;IAIpB,mGAAmG;IACnG,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAMzC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,iBAAiB;cA0BN,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbTagGroupElement } from "../../tag-group.component-
|
|
1
|
+
import { t as SbbTagGroupElement } from "../../tag-group.component-DTff1eBB.js";
|
|
2
2
|
export { SbbTagGroupElement };
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { html, isServer, unsafeCSS } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import { SbbDisabledMixin, SbbElement, SbbNamedSlotListMixin, forceType, getNextElementIndex, isArrowKeyPressed } from "./core.js";
|
|
5
|
+
//#region src/elements/tag/tag-group/tag-group.scss?inline
|
|
6
|
+
var tag_group_default = ":host {\n display: block;\n}\n\n.sbb-tag-group__list {\n display: flex;\n flex-wrap: wrap;\n gap: var(--sbb-spacing-fixed-3x);\n}\n\n.sbb-tag-group__list > :is(li, span) {\n display: flex;\n max-width: 100%;\n}";
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/elements/tag/tag-group/tag-group.component.ts
|
|
9
|
+
/**
|
|
10
|
+
* It can be used as a container for one or more `sbb-tag`.
|
|
11
|
+
*
|
|
12
|
+
* @slot - Use the unnamed slot to add one or more 'sbb-tag' elements to the `sbb-tag-group`.
|
|
13
|
+
* @overrideType value - (T = string | (string | null)[]) | null
|
|
14
|
+
*/
|
|
15
|
+
var SbbTagGroupElement = (() => {
|
|
16
|
+
let _classSuper = SbbDisabledMixin(SbbNamedSlotListMixin(SbbElement));
|
|
17
|
+
let _instanceExtraInitializers = [];
|
|
18
|
+
let _accessibilityLabel_decorators;
|
|
19
|
+
let _accessibilityLabel_initializers = [];
|
|
20
|
+
let _accessibilityLabel_extraInitializers = [];
|
|
21
|
+
let _multiple_decorators;
|
|
22
|
+
let _multiple_initializers = [];
|
|
23
|
+
let _multiple_extraInitializers = [];
|
|
24
|
+
let _size_decorators;
|
|
25
|
+
let _size_initializers = [];
|
|
26
|
+
let _size_extraInitializers = [];
|
|
27
|
+
let _set_value_decorators;
|
|
28
|
+
return class SbbTagGroupElement extends _classSuper {
|
|
29
|
+
static {
|
|
30
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
31
|
+
_accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
|
|
32
|
+
_multiple_decorators = [forceType(), property({ type: Boolean })];
|
|
33
|
+
_size_decorators = [property({ reflect: true })];
|
|
34
|
+
_set_value_decorators = [property()];
|
|
35
|
+
__esDecorate(this, null, _accessibilityLabel_decorators, {
|
|
36
|
+
kind: "accessor",
|
|
37
|
+
name: "accessibilityLabel",
|
|
38
|
+
static: false,
|
|
39
|
+
private: false,
|
|
40
|
+
access: {
|
|
41
|
+
has: (obj) => "accessibilityLabel" in obj,
|
|
42
|
+
get: (obj) => obj.accessibilityLabel,
|
|
43
|
+
set: (obj, value) => {
|
|
44
|
+
obj.accessibilityLabel = value;
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
metadata: _metadata
|
|
48
|
+
}, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
|
|
49
|
+
__esDecorate(this, null, _multiple_decorators, {
|
|
50
|
+
kind: "accessor",
|
|
51
|
+
name: "multiple",
|
|
52
|
+
static: false,
|
|
53
|
+
private: false,
|
|
54
|
+
access: {
|
|
55
|
+
has: (obj) => "multiple" in obj,
|
|
56
|
+
get: (obj) => obj.multiple,
|
|
57
|
+
set: (obj, value) => {
|
|
58
|
+
obj.multiple = value;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
metadata: _metadata
|
|
62
|
+
}, _multiple_initializers, _multiple_extraInitializers);
|
|
63
|
+
__esDecorate(this, null, _size_decorators, {
|
|
64
|
+
kind: "accessor",
|
|
65
|
+
name: "size",
|
|
66
|
+
static: false,
|
|
67
|
+
private: false,
|
|
68
|
+
access: {
|
|
69
|
+
has: (obj) => "size" in obj,
|
|
70
|
+
get: (obj) => obj.size,
|
|
71
|
+
set: (obj, value) => {
|
|
72
|
+
obj.size = value;
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
metadata: _metadata
|
|
76
|
+
}, _size_initializers, _size_extraInitializers);
|
|
77
|
+
__esDecorate(this, null, _set_value_decorators, {
|
|
78
|
+
kind: "setter",
|
|
79
|
+
name: "value",
|
|
80
|
+
static: false,
|
|
81
|
+
private: false,
|
|
82
|
+
access: {
|
|
83
|
+
has: (obj) => "value" in obj,
|
|
84
|
+
set: (obj, value) => {
|
|
85
|
+
obj.value = value;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
metadata: _metadata
|
|
89
|
+
}, null, _instanceExtraInitializers);
|
|
90
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
configurable: true,
|
|
93
|
+
writable: true,
|
|
94
|
+
value: _metadata
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static {
|
|
98
|
+
this.elementName = "sbb-tag-group";
|
|
99
|
+
}
|
|
100
|
+
static {
|
|
101
|
+
this.styles = [unsafeCSS(tag_group_default)];
|
|
102
|
+
}
|
|
103
|
+
#accessibilityLabel_accessor_storage;
|
|
104
|
+
/**
|
|
105
|
+
* This will be forwarded as aria-label to the inner list.
|
|
106
|
+
*/
|
|
107
|
+
get accessibilityLabel() {
|
|
108
|
+
return this.#accessibilityLabel_accessor_storage;
|
|
109
|
+
}
|
|
110
|
+
set accessibilityLabel(value) {
|
|
111
|
+
this.#accessibilityLabel_accessor_storage = value;
|
|
112
|
+
}
|
|
113
|
+
#multiple_accessor_storage;
|
|
114
|
+
/**
|
|
115
|
+
* If set multiple to false, the selection is exclusive and the value is a string (or null).
|
|
116
|
+
* If set multiple to true, the selection can have multiple values and therefore value is an array.
|
|
117
|
+
*
|
|
118
|
+
* Changing multiple during run time is not supported.
|
|
119
|
+
*/
|
|
120
|
+
get multiple() {
|
|
121
|
+
return this.#multiple_accessor_storage;
|
|
122
|
+
}
|
|
123
|
+
set multiple(value) {
|
|
124
|
+
this.#multiple_accessor_storage = value;
|
|
125
|
+
}
|
|
126
|
+
#size_accessor_storage;
|
|
127
|
+
/**
|
|
128
|
+
* Tag group size, either s (lean theme default) or m (standard theme default).
|
|
129
|
+
*/
|
|
130
|
+
get size() {
|
|
131
|
+
return this.#size_accessor_storage;
|
|
132
|
+
}
|
|
133
|
+
set size(value) {
|
|
134
|
+
this.#size_accessor_storage = value;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Value of the sbb-tag-group.
|
|
138
|
+
* If set multiple to false, the value is a string (or null).
|
|
139
|
+
* If set multiple to true, the value is an array.
|
|
140
|
+
*/
|
|
141
|
+
set value(value) {
|
|
142
|
+
if (isServer || !this.hasUpdated) {
|
|
143
|
+
this._value = value;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this._applyValueToTags(value);
|
|
147
|
+
}
|
|
148
|
+
get value() {
|
|
149
|
+
return isServer || !this.hasUpdated ? this._value : this.multiple ? this.tags.filter((t) => t.checked).map((t) => t.value) : this.tags.find((t) => t.checked)?.value ?? null;
|
|
150
|
+
}
|
|
151
|
+
/** The child instances of sbb-tag as an array. */
|
|
152
|
+
get tags() {
|
|
153
|
+
return Array.from(this.querySelectorAll?.("sbb-tag") ?? []);
|
|
154
|
+
}
|
|
155
|
+
constructor() {
|
|
156
|
+
super();
|
|
157
|
+
this.listChildLocalNames = (__runInitializers(this, _instanceExtraInitializers), ["sbb-tag", "div"]);
|
|
158
|
+
this.#accessibilityLabel_accessor_storage = __runInitializers(this, _accessibilityLabel_initializers, "");
|
|
159
|
+
this.#multiple_accessor_storage = (__runInitializers(this, _accessibilityLabel_extraInitializers), __runInitializers(this, _multiple_initializers, false));
|
|
160
|
+
this.#size_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _size_initializers, null));
|
|
161
|
+
this._value = (__runInitializers(this, _size_extraInitializers), null);
|
|
162
|
+
this.addEventListener?.("keydown", (e) => this._handleArrowKeyDown(e));
|
|
163
|
+
}
|
|
164
|
+
willUpdate(changedProperties) {
|
|
165
|
+
super.willUpdate(changedProperties);
|
|
166
|
+
if (changedProperties.has("value") && !this.hasUpdated && this._value) this._applyValueToTags(this.value);
|
|
167
|
+
if (changedProperties.has("disabled")) this.tags.forEach((r) => r.requestUpdate?.("disabled"));
|
|
168
|
+
if (changedProperties.has("listChildren") || changedProperties.has("multiple")) {
|
|
169
|
+
if (!this.multiple) {
|
|
170
|
+
this.tags.filter((tag) => tag.checked).slice(1).forEach((tag) => tag.checked = false);
|
|
171
|
+
this.updateExclusiveTabIndex();
|
|
172
|
+
} else if (changedProperties.has("multiple")) this._enabledTags().forEach((t) => t.tabIndex = 0);
|
|
173
|
+
}
|
|
174
|
+
if (changedProperties.has("accessibilityLabel") || changedProperties.has("multiple")) if (this.multiple) {
|
|
175
|
+
this.internals.role = this.accessibilityLabel ? null : "group";
|
|
176
|
+
this.internals.ariaLabel = null;
|
|
177
|
+
} else {
|
|
178
|
+
this.internals.role = "radiogroup";
|
|
179
|
+
this.internals.ariaLabel = this.accessibilityLabel;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
_enabledTags() {
|
|
183
|
+
return this.tags.filter((t) => !t.disabled);
|
|
184
|
+
}
|
|
185
|
+
/** In exclusive mode, only the checked tag (or the first non-disabled tag) should be focusable. */
|
|
186
|
+
updateExclusiveTabIndex() {
|
|
187
|
+
const enabledTags = this._enabledTags();
|
|
188
|
+
const focusTarget = enabledTags.find((t) => t.checked) ?? enabledTags[0];
|
|
189
|
+
enabledTags.forEach((t) => t.tabIndex = t === focusTarget ? 0 : -1);
|
|
190
|
+
}
|
|
191
|
+
_handleArrowKeyDown(evt) {
|
|
192
|
+
if (this.multiple || !isArrowKeyPressed(evt)) return;
|
|
193
|
+
evt.preventDefault();
|
|
194
|
+
const enabledTags = this._enabledTags();
|
|
195
|
+
const current = enabledTags.indexOf(evt.target);
|
|
196
|
+
if (current === -1) return;
|
|
197
|
+
const nextTag = enabledTags[getNextElementIndex(evt, current, enabledTags.length)];
|
|
198
|
+
enabledTags.forEach((t) => t.tabIndex = t === nextTag ? 0 : -1);
|
|
199
|
+
nextTag.focus();
|
|
200
|
+
}
|
|
201
|
+
_applyValueToTags(value) {
|
|
202
|
+
const tags = this.tags;
|
|
203
|
+
if (value === null) tags.forEach((t) => t.checked = false);
|
|
204
|
+
else if (this.multiple) {
|
|
205
|
+
if (!Array.isArray(value) && tags.every((t) => t.value !== value)) try {
|
|
206
|
+
value = JSON.parse(value);
|
|
207
|
+
} catch {}
|
|
208
|
+
const valueAsArray = Array.isArray(value) ? value : [value];
|
|
209
|
+
tags.forEach((t) => t.checked = valueAsArray.includes(t.value));
|
|
210
|
+
} else if (!Array.isArray(value)) tags.forEach((t) => t.checked = t.value === value);
|
|
211
|
+
}
|
|
212
|
+
render() {
|
|
213
|
+
return html`
|
|
214
|
+
${this.renderList({
|
|
215
|
+
class: "sbb-tag-group__list",
|
|
216
|
+
ariaLabel: this.multiple ? this.accessibilityLabel : void 0
|
|
217
|
+
})}
|
|
218
|
+
`;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
})();
|
|
222
|
+
//#endregion
|
|
223
|
+
export { SbbTagGroupElement as t };
|
|
224
|
+
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWdyb3VwLmNvbXBvbmVudC1EVGZmMWVCQi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFnL3RhZy1ncm91cC90YWctZ3JvdXAuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFnL3RhZy1ncm91cC90YWctZ3JvdXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5zYmItdGFnLWdyb3VwX19saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbn1cblxuLy8gVXNpbmcgLi4uIGxpIHNlbGVjdG9yLCBiZWNhdXNlIHRoZSBsaSBnZW5lcmF0aW9uXG4vLyBpcyBoYW5kbGVkIGluIHRoZSBjb21wb25lbnQgYmFzZSBjbGFzcy5cbi5zYmItdGFnLWdyb3VwX19saXN0ID4gOmlzKGxpLCBzcGFuKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRWxlbWVudCxcbiAgU2JiTmFtZWRTbG90TGlzdE1peGluLFxuICB0eXBlIFdpdGhMaXN0Q2hpbGRyZW4sXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWdFbGVtZW50IH0gZnJvbSAnLi4vdGFnL3RhZy5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90YWctZ3JvdXAuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSBgc2JiLXRhZ2AuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgb25lIG9yIG1vcmUgJ3NiYi10YWcnIGVsZW1lbnRzIHRvIHRoZSBgc2JiLXRhZy1ncm91cGAuXG4gKiBAb3ZlcnJpZGVUeXBlIHZhbHVlIC0gKFQgPSBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSkgfCBudWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUYWdHcm91cEVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJOYW1lZFNsb3RMaXN0TWl4aW48U2JiVGFnRWxlbWVudCwgdHlwZW9mIFNiYkVsZW1lbnQ+KFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdGFnLWdyb3VwJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xuICAvLyBESVYgaXMgYWRkZWQgaGVyZSBkdWUgdG8gc3BlY2lhbCByZXF1aXJlbWVudHMgZnJvbSBzYmIuY2guXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItdGFnJywgJ2RpdiddO1xuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGlubmVyIGxpc3QuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBtdWx0aXBsZSB0byBmYWxzZSwgdGhlIHNlbGVjdGlvbiBpcyBleGNsdXNpdmUgYW5kIHRoZSB2YWx1ZSBpcyBhIHN0cmluZyAob3IgbnVsbCkuXG4gICAqIElmIHNldCBtdWx0aXBsZSB0byB0cnVlLCB0aGUgc2VsZWN0aW9uIGNhbiBoYXZlIG11bHRpcGxlIHZhbHVlcyBhbmQgdGhlcmVmb3JlIHZhbHVlIGlzIGFuIGFycmF5LlxuICAgKlxuICAgKiBDaGFuZ2luZyBtdWx0aXBsZSBkdXJpbmcgcnVuIHRpbWUgaXMgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUYWcgZ3JvdXAgc2l6ZSwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCkgb3IgbSAoc3RhbmRhcmQgdGhlbWUgZGVmYXVsdCkuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJUYWdFbGVtZW50WydzaXplJ10gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgc2JiLXRhZy1ncm91cC5cbiAgICogSWYgc2V0IG11bHRpcGxlIHRvIGZhbHNlLCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgKG9yIG51bGwpLlxuICAgKiBJZiBzZXQgbXVsdGlwbGUgdG8gdHJ1ZSwgdGhlIHZhbHVlIGlzIGFuIGFycmF5LlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVCB8IChUIHwgbnVsbClbXSB8IG51bGwpIHtcbiAgICBpZiAoaXNTZXJ2ZXIgfHwgIXRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYXBwbHlWYWx1ZVRvVGFncyh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHwgKFQgfCBudWxsKVtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWRcbiAgICAgID8gdGhpcy5fdmFsdWVcbiAgICAgIDogdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IHRoaXMudGFncy5maWx0ZXIoKHQpID0+IHQuY2hlY2tlZCkubWFwKCh0KSA9PiB0LnZhbHVlKVxuICAgICAgICA6ICh0aGlzLnRhZ3MuZmluZCgodCkgPT4gdC5jaGVja2VkKT8udmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCAoVCB8IG51bGwpW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGNoaWxkIGluc3RhbmNlcyBvZiBzYmItdGFnIGFzIGFuIGFycmF5LiAqL1xuICBwdWJsaWMgZ2V0IHRhZ3MoKTogU2JiVGFnRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUYWdFbGVtZW50PFQ+Pignc2JiLXRhZycpID8/IFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUFycm93S2V5RG93bihlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8V2l0aExpc3RDaGlsZHJlbjx0aGlzPj4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykgJiYgIXRoaXMuaGFzVXBkYXRlZCAmJiB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fYXBwbHlWYWx1ZVRvVGFncyh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLnRhZ3MuZm9yRWFjaCgocikgPT4gci5yZXF1ZXN0VXBkYXRlPy4oJ2Rpc2FibGVkJykpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xpc3RDaGlsZHJlbicpIHx8IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbXVsdGlwbGUnKSkge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIC8vIEVuc3VyZSBvbmx5IG9uZSB0YWcgY2hlY2tlZFxuICAgICAgICB0aGlzLnRhZ3NcbiAgICAgICAgICAuZmlsdGVyKCh0YWcpID0+IHRhZy5jaGVja2VkKVxuICAgICAgICAgIC5zbGljZSgxKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWcpID0+ICh0YWcuY2hlY2tlZCA9IGZhbHNlKSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVFeGNsdXNpdmVUYWJJbmRleCgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgICAgLy8gSW4gbXVsdGlwbGUgbW9kZSBhbGwgZW5hYmxlZCB0YWdzIHNob3VsZCBiZSBmb2N1c2FibGVcbiAgICAgICAgdGhpcy5fZW5hYmxlZFRhZ3MoKS5mb3JFYWNoKCh0KSA9PiAodC50YWJJbmRleCA9IDApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdhY2Nlc3NpYmlsaXR5TGFiZWwnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnJvbGUgPSB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA/IG51bGwgOiAnZ3JvdXAnO1xuICAgICAgICB0aGlzLmludGVybmFscy5hcmlhTGFiZWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMucm9sZSA9ICdyYWRpb2dyb3VwJztcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUxhYmVsID0gdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZW5hYmxlZFRhZ3MoKTogU2JiVGFnRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gdGhpcy50YWdzLmZpbHRlcigodCkgPT4gIXQuZGlzYWJsZWQpO1xuICB9XG5cbiAgLyoqIEluIGV4Y2x1c2l2ZSBtb2RlLCBvbmx5IHRoZSBjaGVja2VkIHRhZyAob3IgdGhlIGZpcnN0IG5vbi1kaXNhYmxlZCB0YWcpIHNob3VsZCBiZSBmb2N1c2FibGUuICovXG4gIHByb3RlY3RlZCB1cGRhdGVFeGNsdXNpdmVUYWJJbmRleCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkVGFncyA9IHRoaXMuX2VuYWJsZWRUYWdzKCk7XG4gICAgY29uc3QgZm9jdXNUYXJnZXQgPSBlbmFibGVkVGFncy5maW5kKCh0KSA9PiB0LmNoZWNrZWQpID8/IGVuYWJsZWRUYWdzWzBdO1xuICAgIGVuYWJsZWRUYWdzLmZvckVhY2goKHQpID0+ICh0LnRhYkluZGV4ID0gdCA9PT0gZm9jdXNUYXJnZXQgPyAwIDogLTEpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUFycm93S2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSB8fCAhaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVuYWJsZWRUYWdzID0gdGhpcy5fZW5hYmxlZFRhZ3MoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gZW5hYmxlZFRhZ3MuaW5kZXhPZihldnQudGFyZ2V0IGFzIFNiYlRhZ0VsZW1lbnQ8VD4pO1xuICAgIGlmIChjdXJyZW50ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRJbmRleCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkVGFncy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRUYWcgPSBlbmFibGVkVGFnc1tuZXh0SW5kZXhdO1xuXG4gICAgLy8gT25seSBtb3ZlIGZvY3VzLCBkbyBub3Qgc2VsZWN0LiBTZWxlY3Rpb24gaGFwcGVucyB2aWEgY2xpY2sgb3IgU3BhY2UvRW50ZXIuXG4gICAgZW5hYmxlZFRhZ3MuZm9yRWFjaCgodCkgPT4gKHQudGFiSW5kZXggPSB0ID09PSBuZXh0VGFnID8gMCA6IC0xKSk7XG4gICAgbmV4dFRhZy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlWYWx1ZVRvVGFncyh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMudGFncztcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdGFncy5mb3JFYWNoKCh0KSA9PiAodC5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdGFncy5ldmVyeSgodCkgPT4gdC52YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gSWYgaXQgaXMgbXVsdGlwbGUgbW9kZSBhbmQgbm8gdGFnIG1hdGNoZXMgdGhlIHZhbHVlLCB3ZSB0cnkgdG8gcGFyc2UgdGhlIHZhbHVlIGFzIEpTT04uXG4gICAgICAgICAgLy8gVGhpcyBhbGxvd3Mgc2VydmVyIHNpZGUgcmVuZGVyaW5nIHRvIHVzZSBhcnJheSB2YWx1ZXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjbGllbnQgc2lkZS5cbiAgICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLyogZW1wdHkgKi9cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWVBc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICB0YWdzLmZvckVhY2goKHQpID0+ICh0LmNoZWNrZWQgPSB2YWx1ZUFzQXJyYXkuaW5jbHVkZXModC52YWx1ZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0YWdzLmZvckVhY2goKHQpID0+ICh0LmNoZWNrZWQgPSB0LnZhbHVlID09PSB2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybigndmFsdWUgbXVzdCBub3QgYmUgc2V0IGFzIGFuIGFycmF5IGluIHNpbmd1bGFyIG1vZGUuJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLnJlbmRlckxpc3Qoe1xuICAgICAgICBjbGFzczogJ3NiYi10YWctZ3JvdXBfX2xpc3QnLFxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMubXVsdGlwbGUgPyB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgIH0pfVxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10YWctZ3JvdXAnOiBTYmJUYWdHcm91cEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUM2QmEsNEJBQWtCO21CQUFxQixpQkFDbEQsc0JBQXdELFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7O2NBRHhELDJCQUF1QyxZQUVuRDs7O3FDQVNFLFVBQVMsR0FDVCxTQUFTLEVBQUUsV0FBVyxzQkFBcUIsQ0FBRSxDQUFDOzJCQVM5QyxVQUFTLEdBQ1QsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7dUJBTTNCLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOzRCQU8zQixTQUFRLENBQUU7R0F0QlgsYUFBQSxNQUFBLE1BQUEsZ0NBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSx3QkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFrQixNQUFBLEtBQUEsVUFBQTtNQUFBLElBQWxCLHFCQUFrQjtLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSxrQ0FBQSxxQ0FBQTtHQVVsQyxhQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQVIsV0FBUTtLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSx3QkFBQSwyQkFBQTtHQUtLLGFBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBSixPQUFJO0tBQUE7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
|