@sbb-esta/lyne-elements-dev 4.9.0-dev.1774601733 → 4.9.0-dev.1774848187

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/core/styles/core.scss +13 -65
  2. package/core.css +37 -34
  3. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  4. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  5. package/development/sidebar/sidebar-content.js +1 -1
  6. package/development/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  7. package/development/sidebar/sidebar-title.js +1 -1
  8. package/development/sidebar/sidebar.js +1 -1
  9. package/development/{sidebar-content.component-rgVbuDj-.js → sidebar-content.component-6oadojLp.js} +4 -4
  10. package/development/{sidebar-title.component-BFkOaVcL.js → sidebar-title.component-DU-ZLEU0.js} +3 -3
  11. package/development/sidebar.component-BmLRuuec.js +506 -0
  12. package/development/sidebar.js +3 -3
  13. package/development/sidebar.pure.js +3 -3
  14. package/off-brand-theme.css +37 -34
  15. package/package.json +2 -2
  16. package/safety-theme.css +37 -34
  17. package/sidebar/sidebar/sidebar.component.js +1 -1
  18. package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  19. package/sidebar/sidebar-content.js +1 -1
  20. package/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  21. package/sidebar/sidebar-title.js +1 -1
  22. package/sidebar/sidebar.js +1 -1
  23. package/{sidebar-content.component-da7RYWO6.js → sidebar-content.component-BYmmHoc5.js} +1 -1
  24. package/{sidebar-title.component-CjWUiisH.js → sidebar-title.component-lEdsEEMO.js} +1 -1
  25. package/{sidebar.component-Cde1EWDT.js → sidebar.component-BkTSnoNM.js} +2 -2
  26. package/sidebar.js +3 -3
  27. package/sidebar.pure.js +3 -3
  28. package/standard-theme.css +37 -34
  29. package/development/sidebar.component-hkvDm_fC.js +0 -506
@@ -0,0 +1,506 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { css, html, isServer } from "lit";
3
+ import { eventOptions, property } from "lit/decorators.js";
4
+ import { SbbOpenCloseBaseElement } from "./core/base-elements.js";
5
+ import { forceType, handleDistinctChange } from "./core/decorators.js";
6
+ import { isZeroAnimationDuration } from "./core/dom.js";
7
+ import { SbbAnimationCompleteMixin } from "./core/mixins.js";
8
+ import { boxSizingStyles } from "./core/styles.js";
9
+ import { SbbEscapableOverlayController } from "./core/controllers.js";
10
+ import { ResizeController } from "@lit-labs/observers/resize-controller.js";
11
+ import { SbbFocusTrapController } from "./core/a11y.js";
12
+ //#region src/elements/sidebar/sidebar/sidebar.scss?lit&inline
13
+ var sidebar_default = css`:host {
14
+ --sbb-link-text-decoration-line: none;
15
+ --sbb-sidebar-background-color: var(--sbb-background-color-1);
16
+ --sbb-sidebar-scrollbar-placeholder-width: var(--sbb-spacing-fixed-3x);
17
+ --_sbb-sidebar-margin: 0;
18
+ --_sbb-sidebar-margin-block-start: var(--sbb-sidebar-margin);
19
+ --_sbb-sidebar-translate-x: -100%;
20
+ --_sbb-sidebar-z-index: 2;
21
+ --_sbb-sidebar-padding-inline-end: var(--sbb-sidebar-padding);
22
+ --_sbb-sidebar-padding-block-start: var(--sbb-sidebar-padding);
23
+ --_sbb-sidebar-border-radius-start: var(--sbb-sidebar-border-radius);
24
+ --_sbb-sidebar-border-radius-end: 0;
25
+ --_sbb-sidebar-close-button-size: var(--sbb-size-element-xs);
26
+ --_sbb-sidebar-max-width: calc(100% - 2 * var(--_sbb-sidebar-margin));
27
+ display: block;
28
+ width: 20rem;
29
+ }
30
+ @supports (scrollbar-gutter: stable) and (not (-webkit-touch-callout: none)) {
31
+ :host {
32
+ --_sbb-sidebar-padding-inline-end: calc(
33
+ var(--sbb-sidebar-padding) - var(--sbb-sidebar-scrollbar-placeholder-width)
34
+ );
35
+ }
36
+ }
37
+
38
+ :host([color=white]) {
39
+ --sbb-sidebar-background-color: var(--sbb-background-color-1);
40
+ }
41
+
42
+ :host([color=milk]) {
43
+ --sbb-sidebar-background-color: var(--sbb-background-color-3);
44
+ }
45
+
46
+ :host(:is([mode=over], :is(:state(mode-over-forced),[state--mode-over-forced]):not(:is(:state(mode-over-forced-closing),[state--mode-over-forced-closing])))) {
47
+ --_sbb-sidebar-margin: var(--sbb-sidebar-margin);
48
+ --_sbb-sidebar-border-radius-end: var(--sbb-sidebar-border-radius);
49
+ --_sbb-sidebar-z-index: 3;
50
+ }
51
+
52
+ :host(:is(:dir(rtl), [position=end])) {
53
+ --_sbb-sidebar-translate-x: 100%;
54
+ }
55
+
56
+ :host(:dir(rtl)[position=end]) {
57
+ --_sbb-sidebar-translate-x: -100%;
58
+ }
59
+
60
+ .sbb-sidebar {
61
+ width: inherit;
62
+ max-width: var(--_sbb-sidebar-max-width);
63
+ background-color: var(--sbb-sidebar-background-color);
64
+ display: flex;
65
+ flex-direction: column;
66
+ position: absolute;
67
+ overflow: hidden;
68
+ inset-block: 0;
69
+ z-index: var(--_sbb-sidebar-z-index);
70
+ border-start-start-radius: var(--_sbb-sidebar-border-radius-start);
71
+ border-start-end-radius: var(--_sbb-sidebar-border-radius-start);
72
+ border-end-start-radius: var(--_sbb-sidebar-border-radius-end);
73
+ border-end-end-radius: var(--_sbb-sidebar-border-radius-end);
74
+ margin: var(--_sbb-sidebar-margin);
75
+ margin-block-start: var(--_sbb-sidebar-margin-block-start);
76
+ transition-duration: var(--sbb-sidebar-container-animation-duration);
77
+ transition-timing-function: var(--sbb-sidebar-container-animation-easing);
78
+ transition-property: width, translate;
79
+ translate: none;
80
+ }
81
+ :host([position=end]) .sbb-sidebar {
82
+ inset-inline-end: 0;
83
+ }
84
+ :host(:is(:state(state-closed),[state--state-closed])) .sbb-sidebar {
85
+ visibility: hidden;
86
+ }
87
+ :host(:is(:is(:state(state-closing),[state--state-closing]), :is(:state(state-closed),[state--state-closed]))) .sbb-sidebar {
88
+ translate: var(--_sbb-sidebar-translate-x) 0;
89
+ }
90
+
91
+ .sbb-sidebar-title-section {
92
+ display: flex;
93
+ width: 100%;
94
+ gap: var(--sbb-sidebar-title-gap);
95
+ background-color: var(--sbb-sidebar-background-color);
96
+ padding-inline: var(--sbb-sidebar-padding);
97
+ transition: box-shadow var(--sbb-animation-easing) var(--sbb-sidebar-container-animation-duration);
98
+ box-shadow: none;
99
+ }
100
+ :host(:is(:state(scrolled),[state--scrolled])) .sbb-sidebar-title-section {
101
+ box-shadow: var(--sbb-box-shadow-level-5-soft);
102
+ }
103
+
104
+ .sbb-sidebar-content-section {
105
+ --sbb-scrollbar-thumb-width: 0.125rem;
106
+ --sbb-scrollbar-thumb-width-hover: 0.25rem;
107
+ --sbb-scrollbar-width-firefox: thin;
108
+ --sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);
109
+ --sbb-scrollbar-color: light-dark(
110
+ color-mix(in srgb, var(--sbb-color-black) 30%, transparent),
111
+ color-mix(in srgb, var(--sbb-color-white) 30%, transparent)
112
+ );
113
+ --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-black) 60%, transparent);
114
+ --sbb-scrollbar-color-hover: light-dark(
115
+ color-mix(in srgb, var(--sbb-color-black) 60%, transparent),
116
+ color-mix(in srgb, var(--sbb-color-white) 60%, transparent)
117
+ );
118
+ --sbb-scrollbar-track-color: transparent;
119
+ --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
120
+ }
121
+ .sbb-sidebar-content-section::-webkit-scrollbar {
122
+ width: var(--sbb-scrollbar-width);
123
+ height: var(--sbb-scrollbar-width);
124
+ background-color: var(--sbb-scrollbar-track-color, transparent);
125
+ }
126
+ .sbb-sidebar-content-section::-webkit-scrollbar-corner {
127
+ background-color: var(--sbb-scrollbar-track-color, transparent);
128
+ }
129
+ .sbb-sidebar-content-section::-webkit-scrollbar-thumb {
130
+ background-color: var(--sbb-scrollbar-color, currentcolor);
131
+ border: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;
132
+ border-radius: var(--sbb-border-radius-4x);
133
+ background-clip: padding-box;
134
+ }
135
+ .sbb-sidebar-content-section::-webkit-scrollbar-thumb:hover {
136
+ background-color: var(--sbb-scrollbar-color-hover, currentcolor);
137
+ border-width: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)));
138
+ }
139
+ .sbb-sidebar-content-section::-webkit-scrollbar-button, .sbb-sidebar-content-section::-webkit-scrollbar-corner {
140
+ display: none;
141
+ }
142
+ @supports not selector(::-webkit-scrollbar) {
143
+ .sbb-sidebar-content-section {
144
+ scrollbar-width: var(--sbb-scrollbar-width-firefox);
145
+ scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
146
+ }
147
+ }
148
+ .sbb-sidebar-content-section {
149
+ padding-block-start: var(--_sbb-sidebar-padding-block-start);
150
+ padding-inline: var(--sbb-sidebar-padding) var(--_sbb-sidebar-padding-inline-end);
151
+ overflow-y: auto;
152
+ flex-grow: 1;
153
+ outline-color: var(--sbb-focus-outline-color);
154
+ }
155
+ @supports (scrollbar-gutter: stable) {
156
+ .sbb-sidebar-content-section {
157
+ scrollbar-gutter: stable;
158
+ }
159
+ }
160
+
161
+ ::slotted(sbb-sidebar-title) {
162
+ flex-grow: 1;
163
+ margin-block: var(--sbb-sidebar-title-padding-block);
164
+ }
165
+
166
+ ::slotted(sbb-sidebar-close-button) {
167
+ order: 1;
168
+ margin-inline-end: calc(-1 * (var(--sbb-sidebar-padding) - var(--sbb-sidebar-title-padding-block)));
169
+ margin-block: var(--sbb-sidebar-title-padding-block);
170
+ inset-inline-end: var(--sbb-sidebar-padding);
171
+ }`;
172
+ //#endregion
173
+ //#region src/elements/sidebar/sidebar/sidebar.component.ts
174
+ /**
175
+ * This component corresponds to a sidebar that can be opened on the sidebar container.
176
+ *
177
+ * @slot - Use the unnamed slot to slot any content into the sidebar.
178
+ * @slot title - Use the title slot to add an <sbb-title>.
179
+ */
180
+ var SbbSidebarElement = (() => {
181
+ let _classSuper = SbbAnimationCompleteMixin(SbbOpenCloseBaseElement);
182
+ let _instanceExtraInitializers = [];
183
+ let _color_decorators;
184
+ let _color_initializers = [];
185
+ let _color_extraInitializers = [];
186
+ let _mode_decorators;
187
+ let _mode_initializers = [];
188
+ let _mode_extraInitializers = [];
189
+ let _position_decorators;
190
+ let _position_initializers = [];
191
+ let _position_extraInitializers = [];
192
+ let _opened_decorators;
193
+ let _opened_initializers = [];
194
+ let _opened_extraInitializers = [];
195
+ let _focusOnOpen_decorators;
196
+ let _focusOnOpen_initializers = [];
197
+ let _focusOnOpen_extraInitializers = [];
198
+ let __detectScrolledState_decorators;
199
+ return class SbbSidebarElement extends _classSuper {
200
+ static {
201
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
202
+ _color_decorators = [property({ reflect: true })];
203
+ _mode_decorators = [forceType((v) => v === "over" ? "over" : "side"), property({ reflect: true })];
204
+ _position_decorators = [
205
+ forceType((v) => v === "end" ? "end" : "start"),
206
+ handleDistinctChange((instance, _newValue, oldValue) => instance._updateSidebarWidth(oldValue)),
207
+ property({ reflect: true })
208
+ ];
209
+ _opened_decorators = [forceType(), property({
210
+ type: Boolean,
211
+ reflect: true
212
+ })];
213
+ _focusOnOpen_decorators = [forceType(), property({
214
+ type: Boolean,
215
+ attribute: "focus-on-open"
216
+ })];
217
+ __detectScrolledState_decorators = [eventOptions({ passive: true })];
218
+ __esDecorate(this, null, _color_decorators, {
219
+ kind: "accessor",
220
+ name: "color",
221
+ static: false,
222
+ private: false,
223
+ access: {
224
+ has: (obj) => "color" in obj,
225
+ get: (obj) => obj.color,
226
+ set: (obj, value) => {
227
+ obj.color = value;
228
+ }
229
+ },
230
+ metadata: _metadata
231
+ }, _color_initializers, _color_extraInitializers);
232
+ __esDecorate(this, null, _mode_decorators, {
233
+ kind: "accessor",
234
+ name: "mode",
235
+ static: false,
236
+ private: false,
237
+ access: {
238
+ has: (obj) => "mode" in obj,
239
+ get: (obj) => obj.mode,
240
+ set: (obj, value) => {
241
+ obj.mode = value;
242
+ }
243
+ },
244
+ metadata: _metadata
245
+ }, _mode_initializers, _mode_extraInitializers);
246
+ __esDecorate(this, null, _position_decorators, {
247
+ kind: "accessor",
248
+ name: "position",
249
+ static: false,
250
+ private: false,
251
+ access: {
252
+ has: (obj) => "position" in obj,
253
+ get: (obj) => obj.position,
254
+ set: (obj, value) => {
255
+ obj.position = value;
256
+ }
257
+ },
258
+ metadata: _metadata
259
+ }, _position_initializers, _position_extraInitializers);
260
+ __esDecorate(this, null, _opened_decorators, {
261
+ kind: "accessor",
262
+ name: "opened",
263
+ static: false,
264
+ private: false,
265
+ access: {
266
+ has: (obj) => "opened" in obj,
267
+ get: (obj) => obj.opened,
268
+ set: (obj, value) => {
269
+ obj.opened = value;
270
+ }
271
+ },
272
+ metadata: _metadata
273
+ }, _opened_initializers, _opened_extraInitializers);
274
+ __esDecorate(this, null, _focusOnOpen_decorators, {
275
+ kind: "accessor",
276
+ name: "focusOnOpen",
277
+ static: false,
278
+ private: false,
279
+ access: {
280
+ has: (obj) => "focusOnOpen" in obj,
281
+ get: (obj) => obj.focusOnOpen,
282
+ set: (obj, value) => {
283
+ obj.focusOnOpen = value;
284
+ }
285
+ },
286
+ metadata: _metadata
287
+ }, _focusOnOpen_initializers, _focusOnOpen_extraInitializers);
288
+ __esDecorate(this, null, __detectScrolledState_decorators, {
289
+ kind: "method",
290
+ name: "_detectScrolledState",
291
+ static: false,
292
+ private: false,
293
+ access: {
294
+ has: (obj) => "_detectScrolledState" in obj,
295
+ get: (obj) => obj._detectScrolledState
296
+ },
297
+ metadata: _metadata
298
+ }, null, _instanceExtraInitializers);
299
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
300
+ enumerable: true,
301
+ configurable: true,
302
+ writable: true,
303
+ value: _metadata
304
+ });
305
+ }
306
+ static {
307
+ this.elementName = "sbb-sidebar";
308
+ }
309
+ static {
310
+ this.styles = [boxSizingStyles, sidebar_default];
311
+ }
312
+ #color_accessor_storage;
313
+ /** Background color of the sidebar. Either `white` or `milk`. */
314
+ get color() {
315
+ return this.#color_accessor_storage;
316
+ }
317
+ set color(value) {
318
+ this.#color_accessor_storage = value;
319
+ }
320
+ #mode_accessor_storage;
321
+ /** Mode of the sidebar; one of 'side' or 'over'. */
322
+ get mode() {
323
+ return this.#mode_accessor_storage;
324
+ }
325
+ set mode(value) {
326
+ this.#mode_accessor_storage = value;
327
+ }
328
+ #position_accessor_storage;
329
+ /** The side that the sidebar is attached to. */
330
+ get position() {
331
+ return this.#position_accessor_storage;
332
+ }
333
+ set position(value) {
334
+ this.#position_accessor_storage = value;
335
+ }
336
+ #opened_accessor_storage;
337
+ /**
338
+ * Whether the sidebar is opened or closed.
339
+ * Can be used to initially set the opened state, where
340
+ * the animation will be skipped.
341
+ */
342
+ get opened() {
343
+ return this.#opened_accessor_storage;
344
+ }
345
+ set opened(value) {
346
+ this.#opened_accessor_storage = value;
347
+ }
348
+ #focusOnOpen_accessor_storage;
349
+ /**
350
+ * Whether the sidebar should focus the first focusable element automatically when opened.
351
+ * Defaults to false in when mode is set to `side`, otherwise defaults to true.
352
+ * If explicitly enabled, focus will be moved into the sidebar in `side` mode as well.
353
+ */
354
+ get focusOnOpen() {
355
+ return this.#focusOnOpen_accessor_storage;
356
+ }
357
+ set focusOnOpen(value) {
358
+ this.#focusOnOpen_accessor_storage = value;
359
+ }
360
+ /** Returns the SbbSidebarContainerElement where this sidebar is contained. */
361
+ get container() {
362
+ return this._container;
363
+ }
364
+ constructor() {
365
+ super();
366
+ this.#color_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _color_initializers, "white"));
367
+ this.#mode_accessor_storage = (__runInitializers(this, _color_extraInitializers), __runInitializers(this, _mode_initializers, "side"));
368
+ this.#position_accessor_storage = (__runInitializers(this, _mode_extraInitializers), __runInitializers(this, _position_initializers, "start"));
369
+ this.#opened_accessor_storage = (__runInitializers(this, _position_extraInitializers), __runInitializers(this, _opened_initializers, false));
370
+ this.#focusOnOpen_accessor_storage = (__runInitializers(this, _opened_extraInitializers), __runInitializers(this, _focusOnOpen_initializers, false));
371
+ this._container = (__runInitializers(this, _focusOnOpen_extraInitializers), null);
372
+ this._lastFocusedElement = null;
373
+ this._focusTrapController = new SbbFocusTrapController(this);
374
+ this._escapableOverlayController = new SbbEscapableOverlayController(this);
375
+ this.addController(new ResizeController(this, {
376
+ skipInitial: true,
377
+ callback: () => this._updateSidebarWidth()
378
+ }));
379
+ this.addEventListener?.("click", (e) => {
380
+ if (e.target?.localName === "sbb-sidebar-close-button") this.close();
381
+ });
382
+ }
383
+ connectedCallback() {
384
+ super.connectedCallback();
385
+ this._container = this.closest?.("sbb-sidebar-container");
386
+ this._updateSidebarWidth();
387
+ if (this.isOpen && this._isModeOver()) this._takeFocus();
388
+ }
389
+ disconnectedCallback() {
390
+ super.disconnectedCallback();
391
+ this.container?.style.removeProperty(this._buildCssWidthVar());
392
+ this._container = null;
393
+ }
394
+ willUpdate(changedProperties) {
395
+ super.willUpdate(changedProperties);
396
+ if (changedProperties.has("opened")) {
397
+ if (this.opened) this.open();
398
+ else if (!this.opened) this.close();
399
+ }
400
+ if (changedProperties.has("mode")) if (this.mode === "over" && this.isOpen) this._takeFocus();
401
+ else this.cedeFocus();
402
+ }
403
+ firstUpdated(changedProperties) {
404
+ super.firstUpdated(changedProperties);
405
+ this._updateSidebarWidth();
406
+ }
407
+ /** Toggles the sidebar visibility. */
408
+ toggle() {
409
+ if (this.state === "opening" || this.state === "opened") this.close();
410
+ else this.open();
411
+ }
412
+ /** Opens the sidebar. */
413
+ open() {
414
+ if (this.state === "opening" || this.state === "opened" || !this.dispatchBeforeOpenEvent()) return;
415
+ this.startAnimation();
416
+ if (!isServer && document.activeElement?.localName !== "body") this._lastFocusedElement = document.activeElement;
417
+ this.opened = true;
418
+ this.state = "opening";
419
+ const isZeroAnimationDuration = this._isZeroAnimationDuration() || !this.isConnected;
420
+ const isDuringInitialization = !this.hasUpdated;
421
+ if (!(isDuringInitialization || isZeroAnimationDuration)) return;
422
+ this.internals.states.add("skip-animation");
423
+ if (isDuringInitialization) this.updateComplete.then(() => this._handleOpening());
424
+ else this._handleOpening();
425
+ }
426
+ _isZeroAnimationDuration() {
427
+ return isZeroAnimationDuration(this, "--sbb-sidebar-container-animation-duration");
428
+ }
429
+ _handleOpening() {
430
+ this.state = "opened";
431
+ setTimeout(() => this.internals.states.delete("skip-animation"));
432
+ this._takeFocus();
433
+ this.stopAnimation();
434
+ this.dispatchOpenEvent();
435
+ }
436
+ /** Closes the sidebar. */
437
+ close() {
438
+ if (this.state === "closing" || this.state === "closed" || !this.dispatchBeforeCloseEvent()) return;
439
+ this.startAnimation();
440
+ const isZeroAnimationDuration = this._isZeroAnimationDuration();
441
+ if (!this.hasUpdated || isZeroAnimationDuration) this.internals.states.add("skip-animation");
442
+ else this.state = "closing";
443
+ this.opened = false;
444
+ if (!this.hasUpdated || isZeroAnimationDuration) this._handleClosing();
445
+ }
446
+ _handleClosing() {
447
+ this.state = "closed";
448
+ setTimeout(() => this.internals.states.delete("skip-animation"));
449
+ this.cedeFocus();
450
+ if (!isServer && (this.contains(document.activeElement) || this._isModeOver())) if (this._lastFocusedElement) this._lastFocusedElement?.focus();
451
+ else document.activeElement.blur();
452
+ this._lastFocusedElement = null;
453
+ this.stopAnimation();
454
+ this.dispatchCloseEvent();
455
+ }
456
+ _takeFocus() {
457
+ if (!this.isConnected) return;
458
+ const isModeOver = this._isModeOver();
459
+ if (isModeOver || this.focusOnOpen) this._focusTrapController.focusInitialElement();
460
+ if (isModeOver) {
461
+ this._escapableOverlayController.connect();
462
+ this._focusTrapController.enabled = true;
463
+ }
464
+ }
465
+ cedeFocus() {
466
+ this._focusTrapController.enabled = false;
467
+ this._escapableOverlayController.disconnect();
468
+ }
469
+ _updateSidebarWidth(oldPosition) {
470
+ const container = this.container;
471
+ if (!container) return;
472
+ if (oldPosition) container.style.removeProperty(this._buildCssWidthVar(oldPosition));
473
+ const width = this.offsetWidth;
474
+ if (!width) return;
475
+ const newValue = `${width}px`;
476
+ if (container.style.getPropertyValue(this._buildCssWidthVar()) === newValue) return;
477
+ container.style.setProperty(this._buildCssWidthVar(), newValue);
478
+ }
479
+ _buildCssWidthVar(position = this.position) {
480
+ return `--_sbb-sidebar-container-${position}-width`;
481
+ }
482
+ _isModeOver() {
483
+ return this.mode === "over" || this.matches(":is(:state(mode-over-forced),[state--mode-over-forced])");
484
+ }
485
+ _onTransitionEnd(event) {
486
+ if (event.propertyName !== "translate" || event.target !== event.currentTarget) return;
487
+ if (this.state === "opening") this._handleOpening();
488
+ else if (this.state === "closing") this._handleClosing();
489
+ }
490
+ _detectScrolledState() {
491
+ this.toggleState("scrolled", (this.shadowRoot?.querySelector(".sbb-sidebar-content-section")?.scrollTop ?? 0) > 0);
492
+ }
493
+ render() {
494
+ return html`<div class="sbb-sidebar" @transitionend=${this._onTransitionEnd}>
495
+ <div class="sbb-sidebar-title-section"><slot name="title-section"></slot></div>
496
+ <div class="sbb-sidebar-content-section" @scroll=${() => this._detectScrolledState()}>
497
+ <slot></slot>
498
+ </div>
499
+ </div>`;
500
+ }
501
+ };
502
+ })();
503
+ //#endregion
504
+ export { SbbSidebarElement as t };
505
+
506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQtQm1MUnV1ZWMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3NpZGViYXIvc2lkZWJhci9zaWRlYmFyLnNjc3M/bGl0JmlubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9zaWRlYmFyL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi1saW5rLXRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAtLXNiYi1zaWRlYmFyLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xuICAtLXNiYi1zaWRlYmFyLXNjcm9sbGJhci1wbGFjZWhvbGRlci13aWR0aDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICAtLV9zYmItc2lkZWJhci1tYXJnaW46IDA7XG4gIC0tX3NiYi1zaWRlYmFyLW1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc2JiLXNpZGViYXItbWFyZ2luKTtcbiAgLS1fc2JiLXNpZGViYXItdHJhbnNsYXRlLXg6IC0xMDAlO1xuICAtLV9zYmItc2lkZWJhci16LWluZGV4OiAyO1xuICAtLV9zYmItc2lkZWJhci1wYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1zaWRlYmFyLXBhZGRpbmcpO1xuICAtLV9zYmItc2lkZWJhci1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItc2lkZWJhci1wYWRkaW5nKTtcbiAgLS1fc2JiLXNpZGViYXItYm9yZGVyLXJhZGl1cy1zdGFydDogdmFyKC0tc2JiLXNpZGViYXItYm9yZGVyLXJhZGl1cyk7XG4gIC0tX3NiYi1zaWRlYmFyLWJvcmRlci1yYWRpdXMtZW5kOiAwO1xuICAtLV9zYmItc2lkZWJhci1jbG9zZS1idXR0b24tc2l6ZTogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gIC0tX3NiYi1zaWRlYmFyLW1heC13aWR0aDogY2FsYygxMDAlIC0gMiAqIHZhcigtLV9zYmItc2lkZWJhci1tYXJnaW4pKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzMjApfTtcblxuICAvLyBTdWJ0cmFjdCB0aGUgd2lkdGggb2YgdGhlIHNjcm9sbGJhciBmcm9tIHRoZSBwYWRkaW5nIChFeGNsdWRlIGlPUyBicm93c2VycyBiZWNhdXNlIHRoZXkgdXNlIG92ZXJsYXkgc2Nyb2xsYmFycylcbiAgQHN1cHBvcnRzIChzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGUpIGFuZCAobm90ICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmUpKSB7XG4gICAgLS1fc2JiLXNpZGViYXItcGFkZGluZy1pbmxpbmUtZW5kOiBjYWxjKFxuICAgICAgdmFyKC0tc2JiLXNpZGViYXItcGFkZGluZykgLSB2YXIoLS1zYmItc2lkZWJhci1zY3JvbGxiYXItcGxhY2Vob2xkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxufVxuXG46aG9zdChbY29sb3I9J3doaXRlJ10pIHtcbiAgLS1zYmItc2lkZWJhci1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xKTtcbn1cblxuOmhvc3QoW2NvbG9yPSdtaWxrJ10pIHtcbiAgLS1zYmItc2lkZWJhci1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbn1cblxuOmhvc3QoOmlzKFttb2RlPSdvdmVyJ10sIDpzdGF0ZShtb2RlLW92ZXItZm9yY2VkKTpub3QoOnN0YXRlKG1vZGUtb3Zlci1mb3JjZWQtY2xvc2luZykpKSkge1xuICAtLV9zYmItc2lkZWJhci1tYXJnaW46IHZhcigtLXNiYi1zaWRlYmFyLW1hcmdpbik7XG4gIC0tX3NiYi1zaWRlYmFyLWJvcmRlci1yYWRpdXMtZW5kOiB2YXIoLS1zYmItc2lkZWJhci1ib3JkZXItcmFkaXVzKTtcbiAgLS1fc2JiLXNpZGViYXItei1pbmRleDogMztcbn1cblxuOmhvc3QoOmlzKDpkaXIocnRsKSwgW3Bvc2l0aW9uPSdlbmQnXSkpIHtcbiAgLS1fc2JiLXNpZGViYXItdHJhbnNsYXRlLXg6IDEwMCU7XG59XG5cbjpob3N0KDpkaXIocnRsKVtwb3NpdGlvbj0nZW5kJ10pIHtcbiAgLS1fc2JiLXNpZGViYXItdHJhbnNsYXRlLXg6IC0xMDAlO1xufVxuXG4uc2JiLXNpZGViYXIge1xuICB3aWR0aDogaW5oZXJpdDtcbiAgbWF4LXdpZHRoOiB2YXIoLS1fc2JiLXNpZGViYXItbWF4LXdpZHRoKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXNpZGViYXItYmFja2dyb3VuZC1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaW5zZXQtYmxvY2s6IDA7XG4gIHotaW5kZXg6IHZhcigtLV9zYmItc2lkZWJhci16LWluZGV4KTtcbiAgYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogdmFyKC0tX3NiYi1zaWRlYmFyLWJvcmRlci1yYWRpdXMtc3RhcnQpO1xuICBib3JkZXItc3RhcnQtZW5kLXJhZGl1czogdmFyKC0tX3NiYi1zaWRlYmFyLWJvcmRlci1yYWRpdXMtc3RhcnQpO1xuICBib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogdmFyKC0tX3NiYi1zaWRlYmFyLWJvcmRlci1yYWRpdXMtZW5kKTtcbiAgYm9yZGVyLWVuZC1lbmQtcmFkaXVzOiB2YXIoLS1fc2JiLXNpZGViYXItYm9yZGVyLXJhZGl1cy1lbmQpO1xuICBtYXJnaW46IHZhcigtLV9zYmItc2lkZWJhci1tYXJnaW4pO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLV9zYmItc2lkZWJhci1tYXJnaW4tYmxvY2stc3RhcnQpO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItc2lkZWJhci1jb250YWluZXItYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1zaWRlYmFyLWNvbnRhaW5lci1hbmltYXRpb24tZWFzaW5nKTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lkdGgsIHRyYW5zbGF0ZTtcbiAgdHJhbnNsYXRlOiBub25lO1xuXG4gIDpob3N0KFtwb3NpdGlvbj0nZW5kJ10pICYge1xuICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2VkKSkgJiB7XG4gICAgLy8gU3RvcHMgdGhlIHNpZGVuYXYgZnJvbSBwb2tpbmcgb3V0IChlLmcuIHdpdGggdGhlIGJveCBzaGFkb3cpIHdoaWxlIGl0J3Mgb2ZmLXNjcmVlbi5cbiAgICAvLyBXZSBjYW4ndCB1c2UgYGRpc3BsYXlgIGJlY2F1c2UgaXQgaW50ZXJydXB0cyB0aGUgdHJhbnNpdGlvbiBhbmQgYHRyYW5zaXRpb24tYmVoYXZpb3JgXG4gICAgLy8gaXNuJ3QgYXZhaWxhYmxlIGluIGFsbCBicm93c2Vycy5cbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICA6aG9zdCg6aXMoOnN0YXRlKHN0YXRlLWNsb3NpbmcpLCA6c3RhdGUoc3RhdGUtY2xvc2VkKSkpICYge1xuICAgIHRyYW5zbGF0ZTogdmFyKC0tX3NiYi1zaWRlYmFyLXRyYW5zbGF0ZS14KSAwO1xuICB9XG59XG5cbi5zYmItc2lkZWJhci10aXRsZS1zZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGdhcDogdmFyKC0tc2JiLXNpZGViYXItdGl0bGUtZ2FwKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXNpZGViYXItYmFja2dyb3VuZC1jb2xvcik7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc2lkZWJhci1wYWRkaW5nKTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZykgdmFyKC0tc2JiLXNpZGViYXItY29udGFpbmVyLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgOmhvc3QoOnN0YXRlKHNjcm9sbGVkKSkgJiB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2JiLWJveC1zaGFkb3ctbGV2ZWwtNS1zb2Z0KTtcbiAgfVxufVxuXG4uc2JiLXNpZGViYXItY29udGVudC1zZWN0aW9uIHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhcjtcblxuICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1fc2JiLXNpZGViYXItcGFkZGluZy1ibG9jay1zdGFydCk7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc2lkZWJhci1wYWRkaW5nKSB2YXIoLS1fc2JiLXNpZGViYXItcGFkZGluZy1pbmxpbmUtZW5kKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgZmxleC1ncm93OiAxO1xuXG4gIC8vIElmIHRoZSBlbGVtZW50IGlzIHNjcm9sbGFibGUgYW5kIGhhcyBubyBmb2N1c2FibGUgY29udGVudCwgaXQgZ2V0cyBmb2N1c2VkLlxuICAvLyBUbyBhZGFwdCB0byBseW5lIHN0eWxlcyB3ZSBjb2xvcml6ZSBpdFxuICBvdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcik7XG5cbiAgQHN1cHBvcnRzIChzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGUpIHtcbiAgICBzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGU7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1zaWRlYmFyLXRpdGxlKSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zYmItc2lkZWJhci10aXRsZS1wYWRkaW5nLWJsb2NrKTtcbn1cblxuOjpzbG90dGVkKHNiYi1zaWRlYmFyLWNsb3NlLWJ1dHRvbikge1xuICBvcmRlcjogMTtcblxuICAvLyBEdWUgdG8gZGVzaWduIG5lZWRzLCB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSB0aGUgY2xvc2UgYnV0dG9uIHRvIHRoZSByaWdodFxuICBtYXJnaW4taW5saW5lLWVuZDogY2FsYyhcbiAgICAtMSAqICh2YXIoLS1zYmItc2lkZWJhci1wYWRkaW5nKSAtIHZhcigtLXNiYi1zaWRlYmFyLXRpdGxlLXBhZGRpbmctYmxvY2spKVxuICApO1xuICBtYXJnaW4tYmxvY2s6IHZhcigtLXNiYi1zaWRlYmFyLXRpdGxlLXBhZGRpbmctYmxvY2spO1xuICBpbnNldC1pbmxpbmUtZW5kOiB2YXIoLS1zYmItc2lkZWJhci1wYWRkaW5nKTtcbn1cbiIsImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIGlzU2VydmVyLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaGFuZGxlRGlzdGluY3RDaGFuZ2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJBbmltYXRpb25Db21wbGV0ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTaWRlYmFyQ29udGFpbmVyRWxlbWVudCB9IGZyb20gJy4uL3NpZGViYXItY29udGFpbmVyL3NpZGViYXItY29udGFpbmVyLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NpZGViYXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBjb3JyZXNwb25kcyB0byBhIHNpZGViYXIgdGhhdCBjYW4gYmUgb3BlbmVkIG9uIHRoZSBzaWRlYmFyIGNvbnRhaW5lci5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHNsb3QgYW55IGNvbnRlbnQgaW50byB0aGUgc2lkZWJhci5cbiAqIEBzbG90IHRpdGxlIC0gVXNlIHRoZSB0aXRsZSBzbG90IHRvIGFkZCBhbiA8c2JiLXRpdGxlPi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNpZGViYXJFbGVtZW50IGV4dGVuZHMgU2JiQW5pbWF0aW9uQ29tcGxldGVNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXNpZGViYXInO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIHNpZGViYXIuIEVpdGhlciBgd2hpdGVgIG9yIGBtaWxrYC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY29sb3I6ICd3aGl0ZScgfCAnbWlsaycgPSAnd2hpdGUnO1xuXG4gIC8qKiBNb2RlIG9mIHRoZSBzaWRlYmFyOyBvbmUgb2YgJ3NpZGUnIG9yICdvdmVyJy4gKi9cbiAgQGZvcmNlVHlwZSgodikgPT4gKHYgPT09ICdvdmVyJyA/ICdvdmVyJyA6ICdzaWRlJykpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIG1vZGU6ICdzaWRlJyB8ICdvdmVyJyA9ICdzaWRlJztcblxuICAvKiogVGhlIHNpZGUgdGhhdCB0aGUgc2lkZWJhciBpcyBhdHRhY2hlZCB0by4gKi9cbiAgQGZvcmNlVHlwZSgodikgPT4gKHYgPT09ICdlbmQnID8gJ2VuZCcgOiAnc3RhcnQnKSlcbiAgQGhhbmRsZURpc3RpbmN0Q2hhbmdlKChpbnN0YW5jZSwgX25ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4gaW5zdGFuY2UuX3VwZGF0ZVNpZGViYXJXaWR0aChvbGRWYWx1ZSkpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIHBvc2l0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzaWRlYmFyIGlzIG9wZW5lZCBvciBjbG9zZWQuXG4gICAqIENhbiBiZSB1c2VkIHRvIGluaXRpYWxseSBzZXQgdGhlIG9wZW5lZCBzdGF0ZSwgd2hlcmVcbiAgICogdGhlIGFuaW1hdGlvbiB3aWxsIGJlIHNraXBwZWQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNpZGViYXIgc2hvdWxkIGZvY3VzIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBhdXRvbWF0aWNhbGx5IHdoZW4gb3BlbmVkLlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZSBpbiB3aGVuIG1vZGUgaXMgc2V0IHRvIGBzaWRlYCwgb3RoZXJ3aXNlIGRlZmF1bHRzIHRvIHRydWUuXG4gICAqIElmIGV4cGxpY2l0bHkgZW5hYmxlZCwgZm9jdXMgd2lsbCBiZSBtb3ZlZCBpbnRvIHRoZSBzaWRlYmFyIGluIGBzaWRlYCBtb2RlIGFzIHdlbGwuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnZm9jdXMtb24tb3BlbicgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY3VzT25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFJldHVybnMgdGhlIFNiYlNpZGViYXJDb250YWluZXJFbGVtZW50IHdoZXJlIHRoaXMgc2lkZWJhciBpcyBjb250YWluZWQuICovXG4gIHB1YmxpYyBnZXQgY29udGFpbmVyKCk6IFNiYlNpZGViYXJDb250YWluZXJFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lcjtcbiAgfVxuICBwcml2YXRlIF9jb250YWluZXI6IFNiYlNpZGViYXJDb250YWluZXJFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfbGFzdEZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9mb2N1c1RyYXBDb250cm9sbGVyID0gbmV3IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICAgICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl91cGRhdGVTaWRlYmFyV2lkdGgoKSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgaWYgKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk/LmxvY2FsTmFtZSA9PT0gJ3NiYi1zaWRlYmFyLWNsb3NlLWJ1dHRvbicpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLXNpZGViYXItY29udGFpbmVyJyk7XG4gICAgdGhpcy5fdXBkYXRlU2lkZWJhcldpZHRoKCk7XG5cbiAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5faXNNb2RlT3ZlcigpKSB7XG4gICAgICB0aGlzLl90YWtlRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmNvbnRhaW5lcj8uc3R5bGUucmVtb3ZlUHJvcGVydHkodGhpcy5fYnVpbGRDc3NXaWR0aFZhcigpKTtcbiAgICB0aGlzLl9jb250YWluZXIgPSBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcGVuZWQnKSkge1xuICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5vcGVuZWQpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ21vZGUnKSkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ292ZXInICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuX3Rha2VGb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jZWRlRm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl91cGRhdGVTaWRlYmFyV2lkdGgoKTtcbiAgfVxuXG4gIC8qKiBUb2dnbGVzIHRoZSBzaWRlYmFyIHZpc2liaWxpdHkuICovXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKiogT3BlbnMgdGhlIHNpZGViYXIuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmluZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHwgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhcnRBbmltYXRpb24oKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8ubG9jYWxOYW1lICE9PSAnYm9keScpIHtcbiAgICAgIHRoaXMuX2xhc3RGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICBjb25zdCBpc1plcm9BbmltYXRpb25EdXJhdGlvbiA9IHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkgfHwgIXRoaXMuaXNDb25uZWN0ZWQ7XG4gICAgY29uc3QgaXNEdXJpbmdJbml0aWFsaXphdGlvbiA9ICF0aGlzLmhhc1VwZGF0ZWQ7XG5cbiAgICBpZiAoIShpc0R1cmluZ0luaXRpYWxpemF0aW9uIHx8IGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdza2lwLWFuaW1hdGlvbicpO1xuXG4gICAgLy8gV2UgaGF2ZSB0byB3YWl0IGZvciB0aGUgZmlyc3QgdXBkYXRlIHRvIGJlIGNvbXBsZXRlZFxuICAgIC8vIGluIG9yZGVyIHRvIGhhdmUgdGhlIHNpemUgb2YgdGhlIHNpZGViYXIgcmVhZHkgZm9yIHRoZSBhbmltYXRpb24uXG4gICAgaWYgKGlzRHVyaW5nSW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLl9oYW5kbGVPcGVuaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItc2lkZWJhci1jb250YWluZXItYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcblxuICAgIC8vIFdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgcmVtb3ZpbmcgdGhlIGFuaW1hdGlvbiBza2lwIGluc3RydWN0aW9uIGlzIGRvbmUgYSB0aWNrIGxhdGVyLlxuICAgIC8vIE90aGVyd2lzZSwgaXQncyByZW1vdmVkIHRvbyBlYXJseSBhbmQgaXQgZG9lc24ndCBoYXZlIGFueSBlZmZlY3QuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdza2lwLWFuaW1hdGlvbicpKTtcblxuICAgIHRoaXMuX3Rha2VGb2N1cygpO1xuICAgIHRoaXMuc3RvcEFuaW1hdGlvbigpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIHNpZGViYXIuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGFydEFuaW1hdGlvbigpO1xuXG4gICAgY29uc3QgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gPSB0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpO1xuXG4gICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQgfHwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24pIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ3NraXAtYW5pbWF0aW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICghdGhpcy5oYXNVcGRhdGVkIHx8IGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgLy8gV2UgaGF2ZSB0byBlbnN1cmUgdGhhdCByZW1vdmluZyB0aGUgYW5pbWF0aW9uIHNraXAgaW5zdHJ1Y3Rpb24gaXMgZG9uZSBhIHRpY2sgbGF0ZXIuXG4gICAgLy8gT3RoZXJ3aXNlLCBpdCdzIHJlbW92ZWQgdG9vIGVhcmx5IGFuZCBpdCBkb2Vzbid0IGhhdmUgYW55IGVmZmVjdC5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ3NraXAtYW5pbWF0aW9uJykpO1xuICAgIHRoaXMuY2VkZUZvY3VzKCk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmICh0aGlzLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHx8IHRoaXMuX2lzTW9kZU92ZXIoKSkpIHtcbiAgICAgIGlmICh0aGlzLl9sYXN0Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fbGFzdEZvY3VzZWRFbGVtZW50Py5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3aGVyZSB0byBzZXQgdGhlIGZvY3VzLCBidXQgaGF2ZSB0byByZW1vdmUgaXQsIHNvIHdlIGNhbGwgYmx1clxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9sYXN0Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuXG4gICAgdGhpcy5zdG9wQW5pbWF0aW9uKCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Rha2VGb2N1cygpOiB2b2lkIHtcbiAgICAvLyBXZSBwcmV2ZW50IGNhbGxpbmcgdGhlIGZvY3VzIHN0dWZmIHdoZW4gbm90IG5lZWRlZFxuICAgIGlmICghdGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc01vZGVPdmVyID0gdGhpcy5faXNNb2RlT3ZlcigpO1xuXG4gICAgaWYgKGlzTW9kZU92ZXIgfHwgdGhpcy5mb2N1c09uT3Blbikge1xuICAgICAgdGhpcy5fZm9jdXNUcmFwQ29udHJvbGxlci5mb2N1c0luaXRpYWxFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTW9kZU92ZXIpIHtcbiAgICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcbiAgICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gSW50ZXJuYWwgbWV0aG9kIHRoYXQgd2UgdXNlIGV4dGVybmFsbHkuIGBwcm90ZWN0ZWRgIHByZXNlcnZlcyB0eXBlIGluZm9ybWF0aW9uIGZvciB0eXBlIHNhZmUgYWNjZXNzLlxuICBwcm90ZWN0ZWQgY2VkZUZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpZGViYXJXaWR0aChvbGRQb3NpdGlvbj86IHRoaXNbJ3Bvc2l0aW9uJ10pOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvbGRQb3NpdGlvbikge1xuICAgICAgY29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KHRoaXMuX2J1aWxkQ3NzV2lkdGhWYXIob2xkUG9zaXRpb24pKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aWR0aCA9IHRoaXMub2Zmc2V0V2lkdGg7XG4gICAgaWYgKCF3aWR0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1ZhbHVlID0gYCR7d2lkdGh9cHhgO1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gY29udGFpbmVyLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodGhpcy5fYnVpbGRDc3NXaWR0aFZhcigpKTtcblxuICAgIGlmIChhY3R1YWxWYWx1ZSA9PT0gbmV3VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkodGhpcy5fYnVpbGRDc3NXaWR0aFZhcigpLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZENzc1dpZHRoVmFyKHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAtLV9zYmItc2lkZWJhci1jb250YWluZXItJHtwb3NpdGlvbn0td2lkdGhgO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNNb2RlT3ZlcigpOiBib29sZWFuIHtcbiAgICAvLyBJZiB0aGUgbWluaW11bSBzcGFjZSBhdHRyaWJ1dGUgaXMgc2V0LCB0aGUgc2lkZWJhciBzaG91bGQgYmVoYXZlIGxpa2UgaW4gbW9kZSBvdmVyLlxuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdvdmVyJyB8fCB0aGlzLm1hdGNoZXMoJzpzdGF0ZShtb2RlLW92ZXItZm9yY2VkKScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25UcmFuc2l0aW9uRW5kKGV2ZW50OiBUcmFuc2l0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBXZSBlbnN1cmUgdGhhdCB3ZSByZWFjdCB0byB0aGUgZmFkZSBpbiB0cmFuc2l0aW9uIG9uIHRoZSBzYmItc2lkZWJhciBkaXZcbiAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lICE9PSAndHJhbnNsYXRlJyB8fCBldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBAZXZlbnRPcHRpb25zKHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICBwcml2YXRlIF9kZXRlY3RTY3JvbGxlZFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoXG4gICAgICAnc2Nyb2xsZWQnLFxuICAgICAgKHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignLnNiYi1zaWRlYmFyLWNvbnRlbnQtc2VjdGlvbicpPy5zY3JvbGxUb3AgPz8gMCkgPiAwLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNpZGViYXJcIiBAdHJhbnNpdGlvbmVuZD0ke3RoaXMuX29uVHJhbnNpdGlvbkVuZH0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNpZGViYXItdGl0bGUtc2VjdGlvblwiPjxzbG90IG5hbWU9XCJ0aXRsZS1zZWN0aW9uXCI+PC9zbG90PjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zaWRlYmFyLWNvbnRlbnQtc2VjdGlvblwiIEBzY3JvbGw9JHsoKSA9PiB0aGlzLl9kZXRlY3RTY3JvbGxlZFN0YXRlKCl9PlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc2lkZWJhcic6IFNiYlNpZGViYXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDcUJhLDJCQUFpQjttQkFBUywwQkFBMEIsd0JBQXdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBNUUsMEJBQTBCLFlBQWtEOzs7d0JBS3RGLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBO3VCQUkzQixXQUFXLE1BQU8sTUFBTSxTQUFTLFNBQVMsT0FBUSxFQUNsRCxTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTs7SUFJM0IsV0FBVyxNQUFPLE1BQU0sUUFBUSxRQUFRLFFBQVM7SUFDakQsc0JBQXNCLFVBQVUsV0FBVyxhQUFhLFNBQVMsb0JBQW9CLFNBQVMsQ0FBQztJQUMvRixTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUE7SUFBQzt5QkFRM0IsV0FBVyxFQUNYLFNBQVM7SUFBRSxNQUFNO0lBQVMsU0FBUztJQUFNLENBQUMsQ0FBQTs4QkFRMUMsV0FBVyxFQUNYLFNBQVM7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
@@ -1,8 +1,8 @@
1
1
  import { t as SbbSidebarCloseButtonElement } from "./sidebar-close-button.component-Ckp-_zlH.js";
2
2
  import { t as SbbSidebarContainerElement } from "./sidebar-container.component-D4yIuari.js";
3
- import { t as SbbSidebarContentElement } from "./sidebar-content.component-rgVbuDj-.js";
4
- import { t as SbbSidebarTitleElement } from "./sidebar-title.component-BFkOaVcL.js";
5
- import { t as SbbSidebarElement } from "./sidebar.component-hkvDm_fC.js";
3
+ import { t as SbbSidebarContentElement } from "./sidebar-content.component-6oadojLp.js";
4
+ import { t as SbbSidebarTitleElement } from "./sidebar-title.component-DU-ZLEU0.js";
5
+ import { t as SbbSidebarElement } from "./sidebar.component-BmLRuuec.js";
6
6
  import "./sidebar.pure.js";
7
7
  //#region src/elements/sidebar.ts
8
8
  /** @entrypoint */
@@ -1,6 +1,6 @@
1
1
  import { t as SbbSidebarCloseButtonElement } from "./sidebar-close-button.component-Ckp-_zlH.js";
2
2
  import { t as SbbSidebarContainerElement } from "./sidebar-container.component-D4yIuari.js";
3
- import { t as SbbSidebarContentElement } from "./sidebar-content.component-rgVbuDj-.js";
4
- import { t as SbbSidebarTitleElement } from "./sidebar-title.component-BFkOaVcL.js";
5
- import { t as SbbSidebarElement } from "./sidebar.component-hkvDm_fC.js";
3
+ import { t as SbbSidebarContentElement } from "./sidebar-content.component-6oadojLp.js";
4
+ import { t as SbbSidebarTitleElement } from "./sidebar-title.component-DU-ZLEU0.js";
5
+ import { t as SbbSidebarElement } from "./sidebar.component-BmLRuuec.js";
6
6
  export { SbbSidebarCloseButtonElement, SbbSidebarContainerElement, SbbSidebarContentElement, SbbSidebarElement, SbbSidebarTitleElement };
@@ -1752,6 +1752,12 @@ slot[name=error]::slotted(*) {
1752
1752
  --sbb-selection-panel-input-padding-block-m
1753
1753
  );
1754
1754
  --sbb-selection-expansion-panel-content-padding-inline: var(--sbb-selection-panel-input-padding-inline-m);
1755
+ --sbb-sidebar-background-color: var(--sbb-background-color-1);
1756
+ --sbb-sidebar-title-padding-block: var(--sbb-spacing-fixed-3x);
1757
+ --sbb-sidebar-padding: var(--sbb-spacing-responsive-xs);
1758
+ --sbb-sidebar-border-radius: var(--sbb-border-radius-8x);
1759
+ --sbb-sidebar-margin: var(--sbb-spacing-fixed-3x);
1760
+ --sbb-sidebar-title-gap: var(--sbb-spacing-fixed-2x);
1755
1761
  --sbb-signet-background-color: var(--sbb-color-brand);
1756
1762
  --sbb-signet-panel-color: var(--sbb-color-brand);
1757
1763
  --sbb-signet-icon-color: var(--sbb-color-white);
@@ -2272,6 +2278,37 @@ sbb-message > [slot=image] :is(sbb-image, img):not(.sbb-figure-overlap-image) {
2272
2278
  --sbb-option-hint-padding-block-end: var(--sbb-spacing-fixed-1x);
2273
2279
  }
2274
2280
 
2281
+ sbb-sidebar:has(sbb-sidebar-title) {
2282
+ --_sbb-sidebar-padding-block-start: 0;
2283
+ }
2284
+
2285
+ sbb-sidebar:not(:has(sbb-sidebar-title)) sbb-sidebar-close-button {
2286
+ position: absolute;
2287
+ }
2288
+
2289
+ sbb-sidebar-container:has(> sbb-sidebar:is(:state(skip-animation),[state--skip-animation])) {
2290
+ --sbb-sidebar-container-animation-duration: 0s;
2291
+ }
2292
+ sbb-sidebar-container:has(> sbb-sidebar:is([mode=over], :is(:state(mode-over-forced),[state--mode-over-forced])):is(:is(:state(state-opening),[state--state-opening]),
2293
+ :is(:state(state-opened),[state--state-opened]))) {
2294
+ --sbb-sidebar-container__backdrop-visibility: visible;
2295
+ --sbb-sidebar-container-backdrop-opacity: 0.4;
2296
+ }
2297
+ sbb-sidebar-container:is(:has(> sbb-sidebar[position=end]:is(:is(:state(state-closing),[state--state-closing]),
2298
+ :is(:state(state-closed),[state--state-closed]),
2299
+ [mode=over],
2300
+ :is(:state(mode-over-forced),[state--mode-over-forced]))),
2301
+ :not(:has(> sbb-sidebar[position=end]))) > sbb-sidebar-content {
2302
+ --_sbb-sidebar-content-margin-inline-end: 0;
2303
+ }
2304
+ sbb-sidebar-container:is(:has(> sbb-sidebar:not([position=end]):is(:is(:state(state-closing),[state--state-closing]),
2305
+ :is(:state(state-closed),[state--state-closed]),
2306
+ [mode=over],
2307
+ :is(:state(mode-over-forced),[state--mode-over-forced]))),
2308
+ :not(:has(> sbb-sidebar:not([position=end])))) > sbb-sidebar-content {
2309
+ --_sbb-sidebar-content-margin-inline-start: 0;
2310
+ }
2311
+
2275
2312
  sbb-tab-nav-bar .sbb-tab-amount {
2276
2313
  margin: 0;
2277
2314
  color: var(--sbb-tab-label-amount-color);
@@ -2455,40 +2492,6 @@ sbb-train-formation[view=top] sbb-train-wagon {
2455
2492
  --sbb-train-wagon-wagon-end-right-shape: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40' viewBox='0 0 80 40' fill='none'%3E%3Cpath d='M8.5,0.5 h51.5 a19.5,19.5 0 0 1 19.5,19.5 v0 a19.5,19.5 0 0 1 -19.5,19.5 h-51.5 a8,8 0 0 1 -8,-8 v-23 a8,8 0 0 1 8,-8 z' stroke='%23000000' stroke-width='1'/%3E%3C/svg%3E");
2456
2493
  }
2457
2494
 
2458
- sbb-sidebar-container:has(> sbb-sidebar:is(:state(skip-animation),[state--skip-animation])) {
2459
- --sbb-sidebar-container-animation-duration: 0s;
2460
- }
2461
-
2462
- sbb-sidebar-container:is(:has(> sbb-sidebar:not([position=end]):is(:is(:state(state-closing),[state--state-closing]),
2463
- :is(:state(state-closed),[state--state-closed]),
2464
- [mode=over],
2465
- :is(:state(mode-over-forced),[state--mode-over-forced]))),
2466
- :not(:has(> sbb-sidebar:not([position=end])))) > sbb-sidebar-content {
2467
- --sbb-sidebar-content__margin-inline-start: 0;
2468
- }
2469
-
2470
- sbb-sidebar-container:is(:has(> sbb-sidebar[position=end]:is(:is(:state(state-closing),[state--state-closing]),
2471
- :is(:state(state-closed),[state--state-closed]),
2472
- [mode=over],
2473
- :is(:state(mode-over-forced),[state--mode-over-forced]))),
2474
- :not(:has(> sbb-sidebar[position=end]))) > sbb-sidebar-content {
2475
- --sbb-sidebar-content__margin-inline-end: 0;
2476
- }
2477
-
2478
- sbb-sidebar-container:has(> sbb-sidebar:is([mode=over], :is(:state(mode-over-forced),[state--mode-over-forced])):is(:is(:state(state-opening),[state--state-opening]),
2479
- :is(:state(state-opened),[state--state-opened]))) {
2480
- --sbb-sidebar-container__backdrop-visibility: visible;
2481
- --sbb-sidebar-container-backdrop-opacity: 0.4;
2482
- }
2483
-
2484
- sbb-sidebar:not(:has(sbb-sidebar-title)) sbb-sidebar-close-button {
2485
- position: absolute;
2486
- }
2487
-
2488
- sbb-sidebar:has(sbb-sidebar-title) {
2489
- --sbb-sidebar__padding-block-start: 0;
2490
- }
2491
-
2492
2495
  .sbb-select-trigger {
2493
2496
  width: 100%;
2494
2497
  height: var(--sbb-size-element-xs);