@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1780486982 → 5.0.0-next.3-dev.1780499181
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/calendar/calendar/calendar.component.js +1 -1
- package/{calendar.component-BM4L9oyb.js → calendar.component-RVAHcJf6.js} +46 -23
- package/calendar.js +1 -1
- package/calendar.pure.js +1 -1
- package/custom-elements.json +38 -2
- package/development/calendar/calendar/calendar.component.d.ts +7 -0
- package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar.component-BmB8HoZt.js +1399 -0
- package/development/calendar.js +1 -1
- package/development/calendar.pure.js +1 -1
- package/development/header/header/header.component.d.ts +2 -0
- package/development/header/header/header.component.d.ts.map +1 -1
- package/development/header/header/header.component.js +1 -1
- package/development/header.component-FVw_5NRT.js +336 -0
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/development/map-container/map-container.component.d.ts +2 -2
- package/development/map-container/map-container.component.js +1 -1
- package/development/map-container.component-ASCfDs-R.js +176 -0
- package/development/map-container.js +1 -1
- package/development/map-container.pure.js +1 -1
- package/header/_header.global.scss +8 -1
- package/header/header/header.component.js +1 -1
- package/{header.component-DgWfgTse.js → header.component-BbdHh5fF.js} +1 -1
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/lean-off-brand-theme.css +5 -1
- package/lean-safety-theme.css +5 -1
- package/lean-theme.css +5 -1
- package/map-container/map-container.component.js +1 -1
- package/{map-container.component-bI8Gb4I8.js → map-container.component-C2_Miiv0.js} +1 -1
- package/map-container.js +1 -1
- package/map-container.pure.js +1 -1
- package/off-brand-theme.css +5 -1
- package/package.json +2 -2
- package/safety-theme.css +5 -1
- package/standard-theme.css +5 -1
- package/development/calendar.component-C_Yc2PNV.js +0 -1367
- package/development/header.component-B43X03Jg.js +0 -334
- package/development/map-container.component-N-e2oBnd.js +0 -176
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, isServer, unsafeCSS } from "lit";
|
|
3
|
-
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import { SbbElement, SbbFocusVisibleWithinController, forceType, idReference, queueDomContentLoaded } from "./core.js";
|
|
5
|
-
//#region src/elements/header/header/header.scss?inline
|
|
6
|
-
var header_default = ":host {\n --sbb-logo-height: 1rem;\n --sbb-signet-height: 1rem;\n --sbb-header-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-logo-height: 1.25rem;\n --sbb-signet-height: 1.25rem;\n }\n}\n:host {\n display: block;\n height: var(--sbb-header-height);\n line-height: var(--sbb-typo-line-height-text);\n}\n\n:host([size=s]) {\n --sbb-header-height: var(--sbb-header-height-s);\n}\n\n:host([size=m]) {\n --sbb-header-height: var(--sbb-header-height-m);\n}\n\n:host([hide-on-scroll]) {\n --sbb-header-position: absolute;\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {\n --sbb-header-position: fixed;\n --sbb-header-animation-name: hide;\n --sbb-header-transform: translate3d(0, -100%, 0);\n --sbb-header-inset-inline-end: var(--sbb-scrollbar-width, 0);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(animated),[state--animated])) {\n --sbb-header-transition-timing: cubic-bezier(0.4, 0, 1, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(visible),[state--visible])) {\n --sbb-header-animation-name: show;\n --sbb-header-transform: translate3d(0, 0, 0);\n --sbb-header-transition-timing: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(has-visible-focus-within),[state--has-visible-focus-within])) {\n --sbb-header-transition-duration: 0;\n --sbb-header-transform: translate3d(0, 0, 0);\n}\n\n.sbb-header {\n position: var(--sbb-header-position);\n inset: 0 var(--sbb-header-inset-inline-end) auto 0;\n background: var(--sbb-header-background);\n z-index: var(--sbb-header-z-index, 10);\n transform: var(--sbb-header-transform);\n transition-property: box-shadow;\n transition-duration: var(--sbb-header-transition-duration);\n transition-timing-function: var(--sbb-header-transition-timing);\n animation-name: var(--sbb-header-animation-name);\n animation-duration: var(--sbb-header-transition-duration);\n animation-timing-function: var(--sbb-header-transition-timing);\n}\n:host(:is(:is(:state(shadow),[state--shadow]), :is(:state(has-visible-focus-within),[state--has-visible-focus-within]):is(:state(fixed),[state--fixed]))) .sbb-header {\n box-shadow: var(--sbb-header-box-shadow);\n}\n@media (forced-colors: active) {\n .sbb-header {\n border-block-end: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-header__wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n height: var(--sbb-header-height);\n}\n:host(:not([expanded])) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));\n margin-inline: auto;\n width: 100%;\n}\n@media (min-width: calc(90rem)) {\n :host(:not([expanded])) .sbb-header__wrapper {\n max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));\n }\n}\n:host([expanded]) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));\n}\n\n::slotted(:is(sbb-header-button, sbb-header-link):first-child) {\n margin-inline-start: var(--sbb-header-first-item-margin-inline-start);\n}\n\n::slotted(*) {\n flex: 0 0 auto;\n}\n\n::slotted(.sbb-header-shrinkable) {\n flex-shrink: 1;\n min-width: 0;\n}\n\n::slotted(.sbb-header-spacer) {\n flex-grow: 1;\n}\n\n::slotted(.sbb-header-logo) {\n margin-inline-start: var(--sbb-spacing-responsive-s);\n}\n\n::slotted(a.sbb-header-logo) {\n display: block;\n padding-block: var(--sbb-spacing-fixed-3x);\n position: relative;\n outline: none !important;\n}\n\n::slotted(a.sbb-header-logo)::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: var(--sbb-spacing-fixed-3x) 0;\n}\n\n::slotted(a.sbb-header-logo:focus-visible)::before {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n outline-offset: var(--sbb-spacing-fixed-3x);\n border-radius: 1px;\n}\n\n@keyframes show {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes hide {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -100%, 0);\n }\n}";
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region src/elements/header/header/header.component.ts
|
|
9
|
-
var IS_MENU_OPENED_QUERY = "[aria-controls][aria-expanded='true']";
|
|
10
|
-
/**
|
|
11
|
-
* It displays a header section for the page.
|
|
12
|
-
*
|
|
13
|
-
* @slot - Use the unnamed slot to add actions, content and logo to the header.
|
|
14
|
-
* @cssprop [--sbb-header-z-index=10] - Can be used to modify the z-index of the header.
|
|
15
|
-
* @cssprop [--sbb-header-height=zero-small:var(--sbb-spacing-fixed-14x);large-ultra:var(--sbb-spacing-fixed-24x)] - Can be used to modify height of the header.
|
|
16
|
-
*/
|
|
17
|
-
var SbbHeaderElement = (() => {
|
|
18
|
-
let _classSuper = SbbElement;
|
|
19
|
-
let _expanded_decorators;
|
|
20
|
-
let _expanded_initializers = [];
|
|
21
|
-
let _expanded_extraInitializers = [];
|
|
22
|
-
let _scrollOrigin_decorators;
|
|
23
|
-
let _scrollOrigin_initializers = [];
|
|
24
|
-
let _scrollOrigin_extraInitializers = [];
|
|
25
|
-
let _hideOnScroll_decorators;
|
|
26
|
-
let _hideOnScroll_initializers = [];
|
|
27
|
-
let _hideOnScroll_extraInitializers = [];
|
|
28
|
-
let _size_decorators;
|
|
29
|
-
let _size_initializers = [];
|
|
30
|
-
let _size_extraInitializers = [];
|
|
31
|
-
let __headerOnTop_decorators;
|
|
32
|
-
let __headerOnTop_initializers = [];
|
|
33
|
-
let __headerOnTop_extraInitializers = [];
|
|
34
|
-
return class SbbHeaderElement extends _classSuper {
|
|
35
|
-
static {
|
|
36
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
37
|
-
_expanded_decorators = [forceType(), property({
|
|
38
|
-
reflect: true,
|
|
39
|
-
type: Boolean
|
|
40
|
-
})];
|
|
41
|
-
_scrollOrigin_decorators = [idReference(), property({ attribute: "scroll-origin" })];
|
|
42
|
-
_hideOnScroll_decorators = [forceType(), property({
|
|
43
|
-
attribute: "hide-on-scroll",
|
|
44
|
-
reflect: true,
|
|
45
|
-
type: Boolean
|
|
46
|
-
})];
|
|
47
|
-
_size_decorators = [property({ reflect: true })];
|
|
48
|
-
__headerOnTop_decorators = [state()];
|
|
49
|
-
__esDecorate(this, null, _expanded_decorators, {
|
|
50
|
-
kind: "accessor",
|
|
51
|
-
name: "expanded",
|
|
52
|
-
static: false,
|
|
53
|
-
private: false,
|
|
54
|
-
access: {
|
|
55
|
-
has: (obj) => "expanded" in obj,
|
|
56
|
-
get: (obj) => obj.expanded,
|
|
57
|
-
set: (obj, value) => {
|
|
58
|
-
obj.expanded = value;
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
metadata: _metadata
|
|
62
|
-
}, _expanded_initializers, _expanded_extraInitializers);
|
|
63
|
-
__esDecorate(this, null, _scrollOrigin_decorators, {
|
|
64
|
-
kind: "accessor",
|
|
65
|
-
name: "scrollOrigin",
|
|
66
|
-
static: false,
|
|
67
|
-
private: false,
|
|
68
|
-
access: {
|
|
69
|
-
has: (obj) => "scrollOrigin" in obj,
|
|
70
|
-
get: (obj) => obj.scrollOrigin,
|
|
71
|
-
set: (obj, value) => {
|
|
72
|
-
obj.scrollOrigin = value;
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
metadata: _metadata
|
|
76
|
-
}, _scrollOrigin_initializers, _scrollOrigin_extraInitializers);
|
|
77
|
-
__esDecorate(this, null, _hideOnScroll_decorators, {
|
|
78
|
-
kind: "accessor",
|
|
79
|
-
name: "hideOnScroll",
|
|
80
|
-
static: false,
|
|
81
|
-
private: false,
|
|
82
|
-
access: {
|
|
83
|
-
has: (obj) => "hideOnScroll" in obj,
|
|
84
|
-
get: (obj) => obj.hideOnScroll,
|
|
85
|
-
set: (obj, value) => {
|
|
86
|
-
obj.hideOnScroll = value;
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
metadata: _metadata
|
|
90
|
-
}, _hideOnScroll_initializers, _hideOnScroll_extraInitializers);
|
|
91
|
-
__esDecorate(this, null, _size_decorators, {
|
|
92
|
-
kind: "accessor",
|
|
93
|
-
name: "size",
|
|
94
|
-
static: false,
|
|
95
|
-
private: false,
|
|
96
|
-
access: {
|
|
97
|
-
has: (obj) => "size" in obj,
|
|
98
|
-
get: (obj) => obj.size,
|
|
99
|
-
set: (obj, value) => {
|
|
100
|
-
obj.size = value;
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
metadata: _metadata
|
|
104
|
-
}, _size_initializers, _size_extraInitializers);
|
|
105
|
-
__esDecorate(this, null, __headerOnTop_decorators, {
|
|
106
|
-
kind: "accessor",
|
|
107
|
-
name: "_headerOnTop",
|
|
108
|
-
static: false,
|
|
109
|
-
private: false,
|
|
110
|
-
access: {
|
|
111
|
-
has: (obj) => "_headerOnTop" in obj,
|
|
112
|
-
get: (obj) => obj._headerOnTop,
|
|
113
|
-
set: (obj, value) => {
|
|
114
|
-
obj._headerOnTop = value;
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
metadata: _metadata
|
|
118
|
-
}, __headerOnTop_initializers, __headerOnTop_extraInitializers);
|
|
119
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
120
|
-
enumerable: true,
|
|
121
|
-
configurable: true,
|
|
122
|
-
writable: true,
|
|
123
|
-
value: _metadata
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
static {
|
|
127
|
-
this.elementName = "sbb-header";
|
|
128
|
-
}
|
|
129
|
-
static {
|
|
130
|
-
this.styles = [unsafeCSS(header_default)];
|
|
131
|
-
}
|
|
132
|
-
static {
|
|
133
|
-
this._headerScrollOrigins = /* @__PURE__ */ new Set();
|
|
134
|
-
}
|
|
135
|
-
static {
|
|
136
|
-
this._headerElements = /* @__PURE__ */ new Set();
|
|
137
|
-
}
|
|
138
|
-
static {
|
|
139
|
-
if (!isServer) queueDomContentLoaded(() => this._initializeScrollOriginObserver());
|
|
140
|
-
}
|
|
141
|
-
#expanded_accessor_storage;
|
|
142
|
-
/**
|
|
143
|
-
* Whether to allow the header content to stretch to full width.
|
|
144
|
-
* By default, the content has the appropriate page size.
|
|
145
|
-
*/
|
|
146
|
-
get expanded() {
|
|
147
|
-
return this.#expanded_accessor_storage;
|
|
148
|
-
}
|
|
149
|
-
set expanded(value) {
|
|
150
|
-
this.#expanded_accessor_storage = value;
|
|
151
|
-
}
|
|
152
|
-
#scrollOrigin_accessor_storage;
|
|
153
|
-
/**
|
|
154
|
-
* The element's id or the element on which the scroll listener is attached.
|
|
155
|
-
*
|
|
156
|
-
* For attribute usage, provide an id reference.
|
|
157
|
-
*/
|
|
158
|
-
get scrollOrigin() {
|
|
159
|
-
return this.#scrollOrigin_accessor_storage;
|
|
160
|
-
}
|
|
161
|
-
set scrollOrigin(value) {
|
|
162
|
-
this.#scrollOrigin_accessor_storage = value;
|
|
163
|
-
}
|
|
164
|
-
#hideOnScroll_accessor_storage;
|
|
165
|
-
/** Whether the header should hide and show on scroll. */
|
|
166
|
-
get hideOnScroll() {
|
|
167
|
-
return this.#hideOnScroll_accessor_storage;
|
|
168
|
-
}
|
|
169
|
-
set hideOnScroll(value) {
|
|
170
|
-
this.#hideOnScroll_accessor_storage = value;
|
|
171
|
-
}
|
|
172
|
-
#size_accessor_storage;
|
|
173
|
-
/**
|
|
174
|
-
* Size of the header, either s (lean theme default) or m (standard theme default).
|
|
175
|
-
*/
|
|
176
|
-
get size() {
|
|
177
|
-
return this.#size_accessor_storage;
|
|
178
|
-
}
|
|
179
|
-
set size(value) {
|
|
180
|
-
this.#size_accessor_storage = value;
|
|
181
|
-
}
|
|
182
|
-
#_headerOnTop_accessor_storage;
|
|
183
|
-
get _headerOnTop() {
|
|
184
|
-
return this.#_headerOnTop_accessor_storage;
|
|
185
|
-
}
|
|
186
|
-
set _headerOnTop(value) {
|
|
187
|
-
this.#_headerOnTop_accessor_storage = value;
|
|
188
|
-
}
|
|
189
|
-
constructor() {
|
|
190
|
-
super();
|
|
191
|
-
this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
|
|
192
|
-
this.#scrollOrigin_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers, null));
|
|
193
|
-
this.#hideOnScroll_accessor_storage = (__runInitializers(this, _scrollOrigin_extraInitializers), __runInitializers(this, _hideOnScroll_initializers, false));
|
|
194
|
-
this.#size_accessor_storage = (__runInitializers(this, _hideOnScroll_extraInitializers), __runInitializers(this, _size_initializers, null));
|
|
195
|
-
this.#_headerOnTop_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, __headerOnTop_initializers, true));
|
|
196
|
-
this._scrollElement = __runInitializers(this, __headerOnTop_extraInitializers);
|
|
197
|
-
this._lastScroll = 0;
|
|
198
|
-
this._scrollOriginFromObserver = null;
|
|
199
|
-
this.addController(new SbbFocusVisibleWithinController(this));
|
|
200
|
-
}
|
|
201
|
-
static _initializeScrollOriginObserver() {
|
|
202
|
-
new MutationObserver((mutations) => {
|
|
203
|
-
for (const mutation of mutations) if (mutation.type === "attributes") this._handleScrollOriginElement(mutation.target);
|
|
204
|
-
else if (mutation.type === "childList") for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
|
|
205
|
-
this._handleScrollOriginElement(node);
|
|
206
|
-
this._findAndHandleScrollOrigins(node);
|
|
207
|
-
}
|
|
208
|
-
this._updateHeaderElements();
|
|
209
|
-
}).observe(document.documentElement, {
|
|
210
|
-
attributeFilter: ["sbb-header-scroll-origin"],
|
|
211
|
-
childList: true,
|
|
212
|
-
subtree: true
|
|
213
|
-
});
|
|
214
|
-
this._findAndHandleScrollOrigins(document.body);
|
|
215
|
-
this._updateHeaderElements();
|
|
216
|
-
}
|
|
217
|
-
static _findAndHandleScrollOrigins(root) {
|
|
218
|
-
root.querySelectorAll("[sbb-header-scroll-origin]").forEach((e) => this._handleScrollOriginElement(e));
|
|
219
|
-
}
|
|
220
|
-
static _handleScrollOriginElement(element) {
|
|
221
|
-
if (element.isConnected && element.hasAttribute("sbb-header-scroll-origin")) this._headerScrollOrigins.add(element);
|
|
222
|
-
else this._headerScrollOrigins.delete(element);
|
|
223
|
-
}
|
|
224
|
-
static _updateHeaderElements() {
|
|
225
|
-
for (const header of this._headerElements) {
|
|
226
|
-
if (this._headerScrollOrigins.size === 0) header._scrollOriginFromObserver = null;
|
|
227
|
-
else if (this._headerScrollOrigins.size === 1) header._scrollOriginFromObserver = this._headerScrollOrigins.values().next().value ?? null;
|
|
228
|
-
else header._scrollOriginFromObserver = Array.from(this._headerScrollOrigins).sort((c1, c2) => c1.compareDocumentPosition(c2) & Node.DOCUMENT_POSITION_CONTAINS).at(-1) ?? null;
|
|
229
|
-
header._updateScrollListener();
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
/** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
|
|
233
|
-
connectedCallback() {
|
|
234
|
-
super.connectedCallback();
|
|
235
|
-
SbbHeaderElement._headerElements.add(this);
|
|
236
|
-
if (this.hasUpdated) this._updateScrollListener();
|
|
237
|
-
}
|
|
238
|
-
/** Removes the scroll listener, if previously attached. */
|
|
239
|
-
disconnectedCallback() {
|
|
240
|
-
super.disconnectedCallback();
|
|
241
|
-
this._scrollElement = null;
|
|
242
|
-
this._scrollEventsController?.abort();
|
|
243
|
-
SbbHeaderElement._headerElements.delete(this);
|
|
244
|
-
}
|
|
245
|
-
requestUpdate(name, oldValue, options) {
|
|
246
|
-
super.requestUpdate(name, oldValue, options);
|
|
247
|
-
if (!isServer && (!name || name === "scrollOrigin") && this.hasUpdated) this._updateScrollListener();
|
|
248
|
-
}
|
|
249
|
-
firstUpdated(changedProperties) {
|
|
250
|
-
super.firstUpdated(changedProperties);
|
|
251
|
-
this._updateScrollListener();
|
|
252
|
-
}
|
|
253
|
-
_updateScrollListener() {
|
|
254
|
-
const scrollElement = this.scrollOrigin ?? this._scrollOriginFromObserver ?? document;
|
|
255
|
-
if (scrollElement === this._scrollElement) return;
|
|
256
|
-
this._scrollEventsController?.abort();
|
|
257
|
-
this._scrollElement = scrollElement;
|
|
258
|
-
if (!this._scrollElement) return;
|
|
259
|
-
this._scrollEventsController = new AbortController();
|
|
260
|
-
this._scrollFunction = this._getScrollFunction.bind(this);
|
|
261
|
-
this._scrollElement.addEventListener("scroll", this._scrollFunction, {
|
|
262
|
-
passive: true,
|
|
263
|
-
signal: this._scrollEventsController.signal
|
|
264
|
-
});
|
|
265
|
-
const currentScroll = this._getCurrentScrollProperty("scrollTop");
|
|
266
|
-
this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
|
|
267
|
-
}
|
|
268
|
-
/** Returns the correct function to attach on scroll. */
|
|
269
|
-
_getScrollFunction() {
|
|
270
|
-
return this.hideOnScroll ? this._scrollListener() : this._scrollShadowListener();
|
|
271
|
-
}
|
|
272
|
-
/** Returns the requested property of the scrollContext. */
|
|
273
|
-
_getCurrentScrollProperty(property) {
|
|
274
|
-
if (this._scrollElement instanceof Document) return this._scrollElement.documentElement[property] || this._scrollElement.body[property];
|
|
275
|
-
return this._scrollElement?.[property] || 0;
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Sets the correct value for `scrollTop`, then:
|
|
279
|
-
* - apply the shadow if the element/document has been scrolled down;
|
|
280
|
-
* - hides the header, remove the shadow and possibly close any open menu on the header if it is not visible anymore;
|
|
281
|
-
* - shows the header and re-apply the shadow if the element/document has been scrolled up.
|
|
282
|
-
*/
|
|
283
|
-
_scrollListener() {
|
|
284
|
-
const currentScroll = this._getCurrentScrollProperty("scrollTop");
|
|
285
|
-
if (this._getCurrentScrollProperty("scrollHeight") - window.innerHeight - currentScroll <= 0) return;
|
|
286
|
-
this.toggleState("shadow", currentScroll !== 0);
|
|
287
|
-
if (currentScroll > this.offsetHeight && currentScroll > 0 && this._lastScroll < currentScroll) this._closeOpenOverlays();
|
|
288
|
-
if (currentScroll > this.offsetHeight * 2) {
|
|
289
|
-
this._headerOnTop = false;
|
|
290
|
-
if (currentScroll > 0 && this._lastScroll < currentScroll) ["shadow", "visible"].forEach((name) => this.internals.states.delete(name));
|
|
291
|
-
else [
|
|
292
|
-
"fixed",
|
|
293
|
-
"shadow",
|
|
294
|
-
"animated",
|
|
295
|
-
"visible"
|
|
296
|
-
].forEach((name) => this.internals.states.add(name));
|
|
297
|
-
} else {
|
|
298
|
-
if (currentScroll === 0) this._headerOnTop = true;
|
|
299
|
-
if (this._headerOnTop) [
|
|
300
|
-
"shadow",
|
|
301
|
-
"animated",
|
|
302
|
-
"fixed",
|
|
303
|
-
"visible"
|
|
304
|
-
].forEach((name) => this.internals.states.delete(name));
|
|
305
|
-
}
|
|
306
|
-
this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
|
|
307
|
-
}
|
|
308
|
-
/** Apply the shadow if the element/document has been scrolled down. */
|
|
309
|
-
_scrollShadowListener() {
|
|
310
|
-
this.toggleState("shadow", this._getCurrentScrollProperty("scrollTop") !== 0);
|
|
311
|
-
}
|
|
312
|
-
_closeOpenOverlays() {
|
|
313
|
-
if (this.matches(":is(:state(has-visible-focus-within),[state--has-visible-focus-within])")) return;
|
|
314
|
-
const overlayTriggers = Array.from(this.querySelectorAll(IS_MENU_OPENED_QUERY));
|
|
315
|
-
for (const overlayTrigger of overlayTriggers) {
|
|
316
|
-
const overlay = overlayTrigger.ariaControlsElements[0];
|
|
317
|
-
if (typeof overlay?.close === "function") overlay.close();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
render() {
|
|
321
|
-
return html`
|
|
322
|
-
<header class="sbb-header">
|
|
323
|
-
<div class="sbb-header__wrapper">
|
|
324
|
-
<slot></slot>
|
|
325
|
-
</div>
|
|
326
|
-
</header>
|
|
327
|
-
`;
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
})();
|
|
331
|
-
//#endregion
|
|
332
|
-
export { SbbHeaderElement as t };
|
|
333
|
-
|
|
334
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1CNDNYMDNKZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuICAtLXNiYi1zaWduZXQtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTZ4KVxuICApO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1sb2dvLWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gICAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBTZXR0aW5nIHRoZSBoZWlnaHQgaGVyZSByZXNlcnZlcyB0aGUgc3BhY2UgZm9yIHRoZSBoZWFkZXIgd2hpY2ggd2lsbCBlbHNlIGJlIGxvc3Qgd2l0aCBmaXhlZCBwb3NpdGlvbi5cbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG5cbiAgLy8gU2V0IHRoZSBsaW5lLWhlaWdodCBmb3IgYWRqYWNlbnQgZWxlbWVudHMgaW4gb3JkZXIgdG8gcHJldmVudCBmcm9tIGluZmx1ZW5jZSBvZiBhIGNvbnN1bWVyLXNldCBsaW5lLWhlaWdodC5cbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpO1xufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0LXMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0LW0pO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogZml4ZWQ7XG4gIC0tc2JiLWhlYWRlci1hbmltYXRpb24tbmFtZTogaGlkZTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZDogdmFyKC0tc2JiLXNjcm9sbGJhci13aWR0aCwgMCk7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpOnN0YXRlKGFuaW1hdGVkKSkge1xuICAvLyBIaWRlIHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUodmlzaWJsZSkpIHtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBzaG93O1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAvLyBTaG93IHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKSkge1xuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbjogMDtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi5zYmItaGVhZGVyIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi1oZWFkZXItcG9zaXRpb24pO1xuICBpbnNldDogMCB2YXIoLS1zYmItaGVhZGVyLWluc2V0LWlubGluZS1lbmQpIGF1dG8gMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2JiLWhlYWRlci1iYWNrZ3JvdW5kKTtcbiAgei1pbmRleDogdmFyKC0tc2JiLWhlYWRlci16LWluZGV4LCAxMCk7XG4gIHRyYW5zZm9ybTogdmFyKC0tc2JiLWhlYWRlci10cmFuc2Zvcm0pO1xuICB0cmFuc2l0aW9uOiB7XG4gICAgcHJvcGVydHk6IGJveC1zaGFkb3c7XG4gICAgZHVyYXRpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nKTtcbiAgfVxuICBhbmltYXRpb246IHtcbiAgICBuYW1lOiB2YXIoLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lKTtcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzaGFkb3cpLCA6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKTpzdGF0ZShmaXhlZCkpKSAmIHtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zYmItaGVhZGVyLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBib3JkZXItYmxvY2stZW5kOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZCBDYW52YXNUZXh0O1xuICB9XG59XG5cbi5zYmItaGVhZGVyX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBoZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0KTtcblxuICA6aG9zdCg6bm90KFtleHBhbmRlZF0pKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIucGFnZS1zcGFjaW5nO1xuICB9XG5cbiAgOmhvc3QoW2V4cGFuZGVkXSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnBhZ2Utc3BhY2luZy1leHBhbmRlZDtcbiAgfVxufVxuXG4vLyBGaXggbGVmdCBvZmZzZXQgaWYgZmlyc3QgZWxlbWVudCBvZiB0aGUgaGVhZGVyIGlzIGEgc2JiLWhlYWRlci1idXR0b24vc2JiLWhlYWRlci1saW5rLlxuLy8gVGhlIHZhbHVlIG9mIHRoZSBvZmZzZXQgaXMgY2FsY3VsYXRlZCBpbnNpZGUgc2JiLWhlYWRlci1idXR0b24vc2JiLWhlYWRlci1saW5rIHN0eWxlcy5cbjo6c2xvdHRlZCg6aXMoc2JiLWhlYWRlci1idXR0b24sIHNiYi1oZWFkZXItbGluayk6Zmlyc3QtY2hpbGQpIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc2JiLWhlYWRlci1maXJzdC1pdGVtLW1hcmdpbi1pbmxpbmUtc3RhcnQpO1xufVxuXG46OnNsb3R0ZWQoKikge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuOjpzbG90dGVkKC5zYmItaGVhZGVyLXNocmlua2FibGUpIHtcbiAgZmxleC1zaHJpbms6IDE7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuOjpzbG90dGVkKC5zYmItaGVhZGVyLXNwYWNlcikge1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1sb2dvKSB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUtcyk7XG59XG5cbi8vIEFwcGx5IHBhZGRpbmcgYW5kIG91dGxpbmUgdG8gcG9zc2libGUgc2xvdHRlZCBsaW5rIGluIGxvZ28gc2xvdFxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBVc2UgIWltcG9ydGFudCBoZXJlIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBGaXJlZm94IGZvY3VzIHJpbmcgZGVmaW5pdGlvblxuICAvLyB3aGljaCBhcHBlYXJzIGluIG5vcm1hbGl6ZSBDU1Mgb2Ygc2V2ZXJhbCBmcmFtZXdvcmtzLlxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vIFRvIHNob3cgdGhlIGNvcnJlY3Qgb3V0bGluZSwgd2UgbmVlZCB0byBzcGFuIGEgaGlkZGVuIGVsZW1lbnQgZmlsbGluZyB0aGUgbGluayBidXQgd2l0aG91dCB0aGUgb3V0bGluZS1vZmZzZXQuXG46OnNsb3R0ZWQoYS5zYmItaGVhZGVyLWxvZ28pOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KSAwO1xufVxuXG46OnNsb3R0ZWQoYS5zYmItaGVhZGVyLWxvZ286Zm9jdXMtdmlzaWJsZSk6OmJlZm9yZSB7XG4gIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuXG4gIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG5cbiAgLy8gQXMgaWYgdGhlIG91dGxpbmUgaGFzIGFuIG9mZnNldCwgdGhlIGJvcmRlciByYWRpdXMgaW5jcmVhc2VzLCB3ZSBzZXQgaXQgdG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGJvcmRlci1yYWRpdXMuXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cblxuQGtleWZyYW1lcyBzaG93IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGhpZGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7XG4gIGZvcmNlVHlwZSxcbiAgaWRSZWZlcmVuY2UsXG4gIHF1ZXVlRG9tQ29udGVudExvYWRlZCxcbiAgU2JiRWxlbWVudCxcbiAgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2hlYWRlci5zY3NzP2lubGluZSc7XG5cbmNvbnN0IElTX01FTlVfT1BFTkVEX1FVRVJZID0gXCJbYXJpYS1jb250cm9sc11bYXJpYS1leHBhbmRlZD0ndHJ1ZSddXCI7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBoZWFkZXIgc2VjdGlvbiBmb3IgdGhlIHBhZ2UuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYWN0aW9ucywgY29udGVudCBhbmQgbG9nbyB0byB0aGUgaGVhZGVyLlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci16LWluZGV4PTEwXSAtIENhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgei1pbmRleCBvZiB0aGUgaGVhZGVyLlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci1oZWlnaHQ9emVyby1zbWFsbDp2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xNHgpO2xhcmdlLXVsdHJhOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTI0eCldIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGhlaWdodCBvZiB0aGUgaGVhZGVyLlxuICovXG5leHBvcnQgY2xhc3MgU2JiSGVhZGVyRWxlbWVudCBleHRlbmRzIFNiYkVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWhlYWRlcic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFt1bnNhZmVDU1Moc3R5bGUpXTtcblxuICBwcml2YXRlIHN0YXRpYyBfaGVhZGVyU2Nyb2xsT3JpZ2lucyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgc3RhdGljIF9oZWFkZXJFbGVtZW50cyA9IG5ldyBTZXQ8U2JiSGVhZGVyRWxlbWVudD4oKTtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVNjcm9sbE9yaWdpbk9ic2VydmVyKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBoZWFkZXIgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50J3MgaWQgb3IgdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHNjcm9sbCBsaXN0ZW5lciBpcyBhdHRhY2hlZC5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzY3JvbGwtb3JpZ2luJyB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2Nyb2xsT3JpZ2luOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBoZWFkZXIgc2hvdWxkIGhpZGUgYW5kIHNob3cgb24gc2Nyb2xsLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGlkZS1vbi1zY3JvbGwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRlT25TY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgaGVhZGVyLCBlaXRoZXIgcyAobGVhbiB0aGVtZSBkZWZhdWx0KSBvciBtIChzdGFuZGFyZCB0aGVtZSBkZWZhdWx0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hlYWRlck9uVG9wID0gdHJ1ZTtcblxuICBwcml2YXRlIF9zY3JvbGxFbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc2Nyb2xsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfc2Nyb2xsRnVuY3Rpb246ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfbGFzdFNjcm9sbCA9IDA7XG4gIHByaXZhdGUgX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIobmV3IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luaXRpYWxpemVTY3JvbGxPcmlnaW5PYnNlcnZlcigpOiB2b2lkIHtcbiAgICAvLyBXZSBhcmUgdXNpbmcgTXV0YXRpb25PYnNlcnZlciBkaXJlY3RseSBoZXJlLCBhcyBpdCB3aWxsIG9ubHkgYmUgY2FsbGVkIG9uIGNsaWVudCBzaWRlLFxuICAgIC8vIGFuZCB3ZSBkbyBub3QgbmVlZCB0byBkaXNjb25uZWN0IGl0LCBhcyB3ZSB3YW50IGl0IHRvIHdvcmsgZHVyaW5nIHRoZSBmdWxsIGxpZmV0aW1lXG4gICAgLy8gb2YgdGhlIHBhZ2UuXG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZVNjcm9sbE9yaWdpbkVsZW1lbnQobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBbLi4ubXV0YXRpb24uYWRkZWROb2RlcywgLi4ubXV0YXRpb24ucmVtb3ZlZE5vZGVzXS5maWx0ZXIoXG4gICAgICAgICAgICAobik6IG4gaXMgSFRNTEVsZW1lbnQgPT4gbi5ub2RlVHlwZSA9PT0gbi5FTEVNRU5UX05PREUsXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fdXBkYXRlSGVhZGVyRWxlbWVudHMoKTtcbiAgICB9KS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbiddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLl9maW5kQW5kSGFuZGxlU2Nyb2xsT3JpZ2lucyhkb2N1bWVudC5ib2R5KTtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKHJvb3Q6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgcm9vdFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luXScpXG4gICAgICAuZm9yRWFjaCgoZSkgPT4gdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChlKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItaGVhZGVyLXNjcm9sbC1vcmlnaW4nKSkge1xuICAgICAgdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5hZGQoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF91cGRhdGVIZWFkZXJFbGVtZW50cygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGhlYWRlciBvZiB0aGlzLl9oZWFkZXJFbGVtZW50cykge1xuICAgICAgaWYgKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgICBoZWFkZXIuX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlciA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICBoZWFkZXIuX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlciA9IHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlID8/IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWFkZXIuX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlciA9XG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zKVxuICAgICAgICAgICAgLnNvcnQoKGMxLCBjMikgPT4gYzEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYzIpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUylcbiAgICAgICAgICAgIC5hdCgtMSkgPz8gbnVsbDtcbiAgICAgIH1cbiAgICAgIGhlYWRlci5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogSWYgYGhpZGVPblNjcm9sbGAgaXMgc2V0LCBjaGVja3MgdGhlIGVsZW1lbnQgdG8gaG9vayB0aGUgbGlzdGVuZXIgb24sIGFuZCBwb3NzaWJseSBhZGQgaXQuKi9cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgU2JiSGVhZGVyRWxlbWVudC5faGVhZGVyRWxlbWVudHMuYWRkKHRoaXMpO1xuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbW92ZXMgdGhlIHNjcm9sbCBsaXN0ZW5lciwgaWYgcHJldmlvdXNseSBhdHRhY2hlZC4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICBTYmJIZWFkZXJFbGVtZW50Ll9oZWFkZXJFbGVtZW50cy5kZWxldGUodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICdzY3JvbGxPcmlnaW4nKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5zY3JvbGxPcmlnaW4gPz8gdGhpcy5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID8/IGRvY3VtZW50O1xuICAgIGlmIChzY3JvbGxFbGVtZW50ID09PSB0aGlzLl9zY3JvbGxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gc2Nyb2xsRWxlbWVudDtcbiAgICBpZiAoIXRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9zY3JvbGxGdW5jdGlvbiA9IHRoaXMuX2dldFNjcm9sbEZ1bmN0aW9uLmJpbmQodGhpcyk7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxGdW5jdGlvbiwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KCdzY3JvbGxUb3AnKTtcbiAgICAvLyBgY3VycmVudFNjcm9sbGAgY2FuIGJlIG5lZ2F0aXZlLCBlLmcuIG9uIG1vYmlsZTsgdGhpcyBpcyBub3QgYWxsb3dlZC5cbiAgICB0aGlzLl9sYXN0U2Nyb2xsID0gY3VycmVudFNjcm9sbCA8PSAwID8gMCA6IGN1cnJlbnRTY3JvbGw7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgY29ycmVjdCBmdW5jdGlvbiB0byBhdHRhY2ggb24gc2Nyb2xsLiAqL1xuICBwcml2YXRlIF9nZXRTY3JvbGxGdW5jdGlvbigpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5oaWRlT25TY3JvbGwgPyB0aGlzLl9zY3JvbGxMaXN0ZW5lcigpIDogdGhpcy5fc2Nyb2xsU2hhZG93TGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb2YgdGhlIHNjcm9sbENvbnRleHQuICovXG4gIHByaXZhdGUgX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eShwcm9wZXJ0eTogJ3Njcm9sbFRvcCcgfCAnc2Nyb2xsSGVpZ2h0Jyk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEVsZW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbEVsZW1lbnQuZG9jdW1lbnRFbGVtZW50W3Byb3BlcnR5XSB8fCB0aGlzLl9zY3JvbGxFbGVtZW50LmJvZHlbcHJvcGVydHldO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudD8uW3Byb3BlcnR5XSB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGBzY3JvbGxUb3BgLCB0aGVuOlxuICAgKiAtIGFwcGx5IHRoZSBzaGFkb3cgaWYgdGhlIGVsZW1lbnQvZG9jdW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQgZG93bjtcbiAgICogLSBoaWRlcyB0aGUgaGVhZGVyLCByZW1vdmUgdGhlIHNoYWRvdyBhbmQgcG9zc2libHkgY2xvc2UgYW55IG9wZW4gbWVudSBvbiB0aGUgaGVhZGVyIGlmIGl0IGlzIG5vdCB2aXNpYmxlIGFueW1vcmU7XG4gICAqIC0gc2hvd3MgdGhlIGhlYWRlciBhbmQgcmUtYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCB1cC5cbiAgICovXG4gIHByaXZhdGUgX3Njcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuXG4gICAgLy8gV2hldGhlciB0aGUgc2Nyb2xsIHZpZXcgaXMgYm91bmNpbmcgcGFzdCB0aGUgZWRnZSBvZiBjb250ZW50IGFuZCBiYWNrIGFnYWluLlxuICAgIGlmICh0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbEhlaWdodCcpIC0gd2luZG93LmlubmVySGVpZ2h0IC0gY3VycmVudFNjcm9sbCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnc2hhZG93JywgY3VycmVudFNjcm9sbCAhPT0gMCk7XG5cbiAgICAvLyBDbG9zZSBvcGVuIG92ZXJsYXlzIHdoZW4gc2Nyb2xsaW5nIGRvd24gaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQuXG4gICAgaWYgKFxuICAgICAgY3VycmVudFNjcm9sbCA+IHRoaXMub2Zmc2V0SGVpZ2h0ICYmXG4gICAgICBjdXJyZW50U2Nyb2xsID4gMCAmJlxuICAgICAgdGhpcy5fbGFzdFNjcm9sbCA8IGN1cnJlbnRTY3JvbGxcbiAgICApIHtcbiAgICAgIHRoaXMuX2Nsb3NlT3Blbk92ZXJsYXlzKCk7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIHRoZSBoZWFkZXIgaXMgc2Nyb2xsZWQgb3V0IG9mIHNpZ2h0LCBzY3JvbGwgcG9zaXRpb24gPiBoZWFkZXIgaGVpZ2h0ICogMi5cbiAgICBpZiAoY3VycmVudFNjcm9sbCA+IHRoaXMub2Zmc2V0SGVpZ2h0ICogMikge1xuICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSBmYWxzZTtcbiAgICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCAmJiB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbCkge1xuICAgICAgICAvLyBTY3JvbGxpbmcgZG93blxuICAgICAgICBbJ3NoYWRvdycsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT4gdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShuYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTY3JvbGxpbmcgdXBcbiAgICAgICAgWydmaXhlZCcsICdzaGFkb3cnLCAnYW5pbWF0ZWQnLCAndmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2hlY2sgaWYgaGVhZGVyIGluIGl0cyBvcmlnaW5hbCBwb3NpdGlvbiwgc2Nyb2xsIHBvc2l0aW9uIDwgaGVhZGVyIGhlaWdodC5cbiAgICAgIC8vIFJlc2V0IGhlYWRlciBiZWhhdmlvciB3aGVuIHNjcm9sbCBoaXRzIHRvcCBvZiB0aGUgcGFnZSwgb24gc2Nyb2xsIHBvc2l0aW9uID0gMC5cbiAgICAgIGlmIChjdXJyZW50U2Nyb2xsID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2hlYWRlck9uVG9wID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oZWFkZXJPblRvcCkge1xuICAgICAgICBbJ3NoYWRvdycsICdhbmltYXRlZCcsICdmaXhlZCcsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBgY3VycmVudFNjcm9sbGAgY2FuIGJlIG5lZ2F0aXZlLCBlLmcuIG9uIG1vYmlsZTsgdGhpcyBpcyBub3QgYWxsb3dlZC5cbiAgICB0aGlzLl9sYXN0U2Nyb2xsID0gY3VycmVudFNjcm9sbCA8PSAwID8gMCA6IGN1cnJlbnRTY3JvbGw7XG4gIH1cblxuICAvKiogQXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duLiAqL1xuICBwcml2YXRlIF9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdzaGFkb3cnLCB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpICE9PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlT3Blbk92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hdGNoZXMoJzpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcmxheVRyaWdnZXJzOiBIVE1MRWxlbWVudFtdID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbChJU19NRU5VX09QRU5FRF9RVUVSWSkgYXMgTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IG92ZXJsYXlUcmlnZ2VyIG9mIG92ZXJsYXlUcmlnZ2Vycykge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IG92ZXJsYXlUcmlnZ2VyLmFyaWFDb250cm9sc0VsZW1lbnRzIVswXSBhcyBIVE1MRWxlbWVudCAmIHtcbiAgICAgICAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiBvdmVybGF5Py5jbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvdmVybGF5LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8aGVhZGVyIGNsYXNzPVwic2JiLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWhlYWRlcl9fd3JhcHBlclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaGVhZGVyJzogU2JiSGVhZGVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQ3FCQSxJQUFNLHVCQUF1Qjs7Ozs7Ozs7SUFTaEIsMEJBQWdCO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7O2NBQXpCLHlCQUF5QixZQUFVOzs7MkJBbUI3QyxVQUFTLEdBQ1QsU0FBUztJQUFFLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDOytCQVExQyxZQUFXLEdBQ1gsU0FBUyxFQUFFLFdBQVcsZ0JBQWUsQ0FBRSxDQUFDOytCQUl4QyxVQUFTLEdBQ1QsU0FBUztJQUFFLFdBQVc7SUFBa0IsU0FBUztJQUFNLE1BQU07R0FBTyxDQUFFLENBQUM7dUJBTXZFLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOytCQUUzQixNQUFLLENBQUU7R0FyQlIsYUFBQSxNQUFBLE1BQUEsc0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxjQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVEsTUFBQSxLQUFBLFVBQUE7TUFBQSxJQUFSLFdBQVE7S0FBQTtJQUFBO0lBQUEs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
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import { SbbElement, SbbLanguageController, forceType, forwardEvent, i18nMapContainerButtonLabel, scrollbarStyles } from "./core.js";
|
|
5
|
-
import { SbbAccentButtonElement } from "./button.pure.js";
|
|
6
|
-
import { IntersectionController } from "@lit-labs/observers/intersection-controller.js";
|
|
7
|
-
//#region src/elements/map-container/map-container.scss?inline
|
|
8
|
-
var map_container_default = ":host {\n --sbb-map-container-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n --_sbb-map-container-map-height: calc(\n var(--sbb-map-container-map-height-zero) + var(--sbb-map-container-border-radius)\n );\n display: grid;\n grid-template-rows: auto auto;\n}\n@media (min-width: calc(37.5rem)) {\n :host {\n --_sbb-map-container-map-height: calc(\n var(--sbb-map-container-map-height-small) + var(--sbb-map-container-border-radius)\n );\n }\n}\n@media (min-width: calc(64rem)) {\n :host {\n grid-template-columns: max(var(--sbb-map-container-sidebar-width)) calc(100% - var(--sbb-map-container-sidebar-width));\n position: fixed;\n inset: var(--sbb-map-container-margin-start, var(--sbb-header-height)) 0 0 0;\n }\n}\n\n.sbb-map-container__sidebar-button {\n position: fixed;\n left: 50%;\n inset-block-end: var(--sbb-spacing-fixed-5x);\n visibility: hidden;\n opacity: 0;\n transform: translateX(-50%) translateY(calc(100% + var(--sbb-spacing-fixed-5x)));\n transition: opacity var(--sbb-map-container-animation-duration) var(--sbb-animation-easing), visibility var(--sbb-map-container-animation-duration) var(--sbb-animation-easing) var(--sbb-map-container-animation-duration), transform var(--sbb-map-container-animation-duration) var(--sbb-animation-easing);\n}\n:host(:is(:state(scroll-up-button-visible),[state--scroll-up-button-visible])) .sbb-map-container__sidebar-button {\n transition: visibility var(--sbb-map-container-animation-duration) var(--sbb-animation-easing), opacity var(--sbb-map-container-animation-duration) var(--sbb-animation-easing), transform var(--sbb-map-container-animation-duration) ease-out;\n visibility: visible;\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n}\n@media (min-width: calc(64rem)) {\n .sbb-map-container__sidebar-button {\n display: none;\n }\n}\n\n.sbb-map-container__sidebar {\n grid-column: 1/3;\n grid-row: 2/3;\n width: 100%;\n overflow: hidden auto;\n position: relative;\n border-start-end-radius: var(--sbb-map-container-border-radius);\n border-start-start-radius: var(--sbb-map-container-border-radius);\n margin-block-start: calc(var(--sbb-map-container-border-radius) * -1);\n background-color: var(--sbb-map-container-sidebar-background-color);\n}\n@media (min-width: calc(64rem)) {\n .sbb-map-container__sidebar {\n grid-column: 1/2;\n grid-row: 1/3;\n border-radius: 0;\n margin-block-start: 0;\n border-block-start: var(--sbb-border-width-1x) solid var(--sbb-border-color-4-inverted);\n }\n}\n\n.sbb-map-container__map {\n position: sticky;\n inset-block-start: 0;\n inset-inline: 0;\n grid-row: 1/2;\n grid-column: 1/3;\n}\n@media (max-width: calc(63.9375rem)) {\n .sbb-map-container__map {\n inset-block-start: var(--sbb-map-container-mobile-sticky-block-start, 0);\n height: var(--_sbb-map-container-map-height);\n }\n}\n@media (min-width: calc(64rem)) {\n .sbb-map-container__map {\n grid-row: 1/3;\n grid-column: 2/3;\n position: relative;\n }\n}";
|
|
9
|
-
//#endregion
|
|
10
|
-
//#region src/elements/map-container/map-container.component.ts
|
|
11
|
-
/**
|
|
12
|
-
* It can be used as a container for maps.
|
|
13
|
-
*
|
|
14
|
-
* @slot - Use the unnamed slot to add content to the sidebar.
|
|
15
|
-
* @slot map - Used for slotting the map.
|
|
16
|
-
* @cssprop [--sbb-map-container-margin-start=var(--sbb-header-height)] - The component
|
|
17
|
-
* comes along with a height calculation that subtracts the height of the header.
|
|
18
|
-
* For specific use cases, this variable can be used to modify the preset height.
|
|
19
|
-
* @cssprop [--sbb-map-container-sidebar-width=zero-large:400px;ultra:480px] - Can be used
|
|
20
|
-
* to modify the width of the left sidebar.
|
|
21
|
-
* @cssprop [--sbb-map-container-mobile-sticky-block-start=0] - If e.g. a header with a fixed height
|
|
22
|
-
* is placed before the map-container, the map should be sticky respecting
|
|
23
|
-
* this offset from the document's top. Only applied on mobile views.
|
|
24
|
-
* Most commonly it can be set to `var(--sbb-header-height)`.
|
|
25
|
-
*/
|
|
26
|
-
var SbbMapContainerElement = (() => {
|
|
27
|
-
let _classSuper = SbbElement;
|
|
28
|
-
let _hideScrollUpButton_decorators;
|
|
29
|
-
let _hideScrollUpButton_initializers = [];
|
|
30
|
-
let _hideScrollUpButton_extraInitializers = [];
|
|
31
|
-
let __scrollUpButtonVisible_decorators;
|
|
32
|
-
let __scrollUpButtonVisible_initializers = [];
|
|
33
|
-
let __scrollUpButtonVisible_extraInitializers = [];
|
|
34
|
-
return class SbbMapContainerElement extends _classSuper {
|
|
35
|
-
constructor() {
|
|
36
|
-
super(...arguments);
|
|
37
|
-
this.#hideScrollUpButton_accessor_storage = __runInitializers(this, _hideScrollUpButton_initializers, false);
|
|
38
|
-
this.#_scrollUpButtonVisible_accessor_storage = (__runInitializers(this, _hideScrollUpButton_extraInitializers), __runInitializers(this, __scrollUpButtonVisible_initializers, false));
|
|
39
|
-
this._language = (__runInitializers(this, __scrollUpButtonVisible_extraInitializers), new SbbLanguageController(this));
|
|
40
|
-
this._observer = new IntersectionController(this, {
|
|
41
|
-
target: null,
|
|
42
|
-
callback: (entries) => this._toggleButtonVisibilityOnIntersect(entries)
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
static {
|
|
46
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
47
|
-
_hideScrollUpButton_decorators = [forceType(), property({
|
|
48
|
-
attribute: "hide-scroll-up-button",
|
|
49
|
-
reflect: true,
|
|
50
|
-
type: Boolean
|
|
51
|
-
})];
|
|
52
|
-
__scrollUpButtonVisible_decorators = [state()];
|
|
53
|
-
__esDecorate(this, null, _hideScrollUpButton_decorators, {
|
|
54
|
-
kind: "accessor",
|
|
55
|
-
name: "hideScrollUpButton",
|
|
56
|
-
static: false,
|
|
57
|
-
private: false,
|
|
58
|
-
access: {
|
|
59
|
-
has: (obj) => "hideScrollUpButton" in obj,
|
|
60
|
-
get: (obj) => obj.hideScrollUpButton,
|
|
61
|
-
set: (obj, value) => {
|
|
62
|
-
obj.hideScrollUpButton = value;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
metadata: _metadata
|
|
66
|
-
}, _hideScrollUpButton_initializers, _hideScrollUpButton_extraInitializers);
|
|
67
|
-
__esDecorate(this, null, __scrollUpButtonVisible_decorators, {
|
|
68
|
-
kind: "accessor",
|
|
69
|
-
name: "_scrollUpButtonVisible",
|
|
70
|
-
static: false,
|
|
71
|
-
private: false,
|
|
72
|
-
access: {
|
|
73
|
-
has: (obj) => "_scrollUpButtonVisible" in obj,
|
|
74
|
-
get: (obj) => obj._scrollUpButtonVisible,
|
|
75
|
-
set: (obj, value) => {
|
|
76
|
-
obj._scrollUpButtonVisible = value;
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
metadata: _metadata
|
|
80
|
-
}, __scrollUpButtonVisible_initializers, __scrollUpButtonVisible_extraInitializers);
|
|
81
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
82
|
-
enumerable: true,
|
|
83
|
-
configurable: true,
|
|
84
|
-
writable: true,
|
|
85
|
-
value: _metadata
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
static {
|
|
89
|
-
this.elementName = "sbb-map-container";
|
|
90
|
-
}
|
|
91
|
-
static {
|
|
92
|
-
this.elementDependencies = [SbbAccentButtonElement];
|
|
93
|
-
}
|
|
94
|
-
static {
|
|
95
|
-
this.styles = [scrollbarStyles, unsafeCSS(map_container_default)];
|
|
96
|
-
}
|
|
97
|
-
#hideScrollUpButton_accessor_storage;
|
|
98
|
-
/** Flag to show/hide the scroll up button inside the sidebar on mobile. */
|
|
99
|
-
get hideScrollUpButton() {
|
|
100
|
-
return this.#hideScrollUpButton_accessor_storage;
|
|
101
|
-
}
|
|
102
|
-
set hideScrollUpButton(value) {
|
|
103
|
-
this.#hideScrollUpButton_accessor_storage = value;
|
|
104
|
-
}
|
|
105
|
-
#_scrollUpButtonVisible_accessor_storage;
|
|
106
|
-
get _scrollUpButtonVisible() {
|
|
107
|
-
return this.#_scrollUpButtonVisible_accessor_storage;
|
|
108
|
-
}
|
|
109
|
-
set _scrollUpButtonVisible(value) {
|
|
110
|
-
this.#_scrollUpButtonVisible_accessor_storage = value;
|
|
111
|
-
}
|
|
112
|
-
willUpdate(changedProperties) {
|
|
113
|
-
super.willUpdate(changedProperties);
|
|
114
|
-
if (changedProperties.has("hideScrollUpButton")) {
|
|
115
|
-
const intersectorElement = this._intersector();
|
|
116
|
-
if (!this.hideScrollUpButton && intersectorElement) this._observer.observe(intersectorElement);
|
|
117
|
-
else if (intersectorElement) this._observer.unobserve(intersectorElement);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
firstUpdated(changedProperties) {
|
|
121
|
-
super.firstUpdated(changedProperties);
|
|
122
|
-
if (!this.hideScrollUpButton) this._observer.observe(this._intersector());
|
|
123
|
-
}
|
|
124
|
-
_intersector() {
|
|
125
|
-
return this.shadowRoot?.querySelector("#intersector") ?? null;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Button click callback to trigger the scroll to container top
|
|
129
|
-
* @private
|
|
130
|
-
*/
|
|
131
|
-
_onScrollButtonClick() {
|
|
132
|
-
this.scrollIntoView({ behavior: "smooth" });
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Intersection callback. Toggles the visibility.
|
|
136
|
-
* @param entries
|
|
137
|
-
* @private
|
|
138
|
-
*/
|
|
139
|
-
_toggleButtonVisibilityOnIntersect(entries) {
|
|
140
|
-
entries.forEach((entry) => {
|
|
141
|
-
const mapIsHidden = !entry.isIntersecting;
|
|
142
|
-
this.toggleState("scroll-up-button-visible", mapIsHidden);
|
|
143
|
-
this._scrollUpButtonVisible = mapIsHidden;
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
render() {
|
|
147
|
-
return html`
|
|
148
|
-
<div class="sbb-map-container__map">
|
|
149
|
-
<slot name="map"></slot>
|
|
150
|
-
</div>
|
|
151
|
-
<div
|
|
152
|
-
class="sbb-map-container__sidebar sbb-scrollbar-thick-track-visible"
|
|
153
|
-
@scroll=${(e) => forwardEvent(e, document)}
|
|
154
|
-
>
|
|
155
|
-
<span id="intersector"></span>
|
|
156
|
-
|
|
157
|
-
<slot></slot>
|
|
158
|
-
|
|
159
|
-
${!this.hideScrollUpButton ? html`<sbb-accent-button
|
|
160
|
-
class="sbb-map-container__sidebar-button"
|
|
161
|
-
size="l"
|
|
162
|
-
icon-name="location-pin-map-small"
|
|
163
|
-
@click=${() => this._onScrollButtonClick()}
|
|
164
|
-
?inert=${!this._scrollUpButtonVisible}
|
|
165
|
-
>
|
|
166
|
-
${i18nMapContainerButtonLabel[this._language.current]}
|
|
167
|
-
</sbb-accent-button>` : nothing}
|
|
168
|
-
</div>
|
|
169
|
-
`;
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
})();
|
|
173
|
-
//#endregion
|
|
174
|
-
export { SbbMapContainerElement as t };
|
|
175
|
-
|
|
176
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5jb21wb25lbnQtTi1lMm9CbmQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21hcC1jb250YWluZXIvbWFwLWNvbnRhaW5lci5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9tYXAtY29udGFpbmVyL21hcC1jb250YWluZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbWFwLWNvbnRhaW5lci1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLV9zYmItbWFwLWNvbnRhaW5lci1tYXAtaGVpZ2h0OiBjYWxjKFxuICAgIHZhcigtLXNiYi1tYXAtY29udGFpbmVyLW1hcC1oZWlnaHQtemVybykgKyB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1ib3JkZXItcmFkaXVzKVxuICApO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBhdXRvO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICAtLV9zYmItbWFwLWNvbnRhaW5lci1tYXAtaGVpZ2h0OiBjYWxjKFxuICAgICAgdmFyKC0tc2JiLW1hcC1jb250YWluZXItbWFwLWhlaWdodC1zbWFsbCkgKyB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1ib3JkZXItcmFkaXVzKVxuICAgICk7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgodmFyKC0tc2JiLW1hcC1jb250YWluZXItc2lkZWJhci13aWR0aCkpIGNhbGMoXG4gICAgICAgIDEwMCUgLSB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1zaWRlYmFyLXdpZHRoKVxuICAgICAgKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IHZhcigtLXNiYi1tYXAtY29udGFpbmVyLW1hcmdpbi1zdGFydCwgdmFyKC0tc2JiLWhlYWRlci1oZWlnaHQpKSAwIDAgMDtcbiAgfVxufVxuXG4uc2JiLW1hcC1jb250YWluZXJfX3NpZGViYXItYnV0dG9uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiA1MCU7XG4gIGluc2V0LWJsb2NrLWVuZDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNXgpO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKGNhbGMoMTAwJSArIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTV4KSkpO1xuXG4gIC8vIEhpZGUgdHJhbnNpdGlvbiwgdmlzaWJpbGl0eSBzaG91bGQgYmUgZGVsYXllZFxuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgdmFyKC0tc2JiLW1hcC1jb250YWluZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyksXG4gICAgdmlzaWJpbGl0eSB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKVxuICAgICAgdmFyKC0tc2JiLW1hcC1jb250YWluZXItYW5pbWF0aW9uLWR1cmF0aW9uKSxcbiAgICB0cmFuc2Zvcm0gdmFyKC0tc2JiLW1hcC1jb250YWluZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG5cbiAgOmhvc3QoOnN0YXRlKHNjcm9sbC11cC1idXR0b24tdmlzaWJsZSkpICYge1xuICAgIC8vIFNob3cgdHJhbnNpdGlvblxuICAgIHRyYW5zaXRpb246XG4gICAgICB2aXNpYmlsaXR5IHZhcigtLXNiYi1tYXAtY29udGFpbmVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpLFxuICAgICAgb3BhY2l0eSB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKSxcbiAgICAgIHRyYW5zZm9ybSB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1hbmltYXRpb24tZHVyYXRpb24pIGVhc2Utb3V0O1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5zYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhciB7XG4gIGdyaWQtY29sdW1uOiAxIC8gMztcbiAgZ3JpZC1yb3c6IDIgLyAzO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbiBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1ib3JkZXItcmFkaXVzKTtcbiAgYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogdmFyKC0tc2JiLW1hcC1jb250YWluZXItYm9yZGVyLXJhZGl1cyk7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogY2FsYyh2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1ib3JkZXItcmFkaXVzKSAqIC0xKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLW1hcC1jb250YWluZXItc2lkZWJhci1iYWNrZ3JvdW5kLWNvbG9yKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAyO1xuICAgIGdyaWQtcm93OiAxIC8gMztcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogMDtcbiAgICBib3JkZXItYmxvY2stc3RhcnQ6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItNC1pbnZlcnRlZCk7XG4gIH1cbn1cblxuLnNiYi1tYXAtY29udGFpbmVyX19tYXAge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgaW5zZXQtaW5saW5lOiAwO1xuICBncmlkLXJvdzogMSAvIDI7XG4gIGdyaWQtY29sdW1uOiAxIC8gMztcblxuICAvLyBXZSB1c2UgXCJ0bzogbGFyZ2VcIiB0byBhdm9pZCByZXNldHRpbmcgdGhlIHN0eWxlc1xuICBAaW5jbHVkZSBzYmIubXEoJHRvOiBsYXJnZSkge1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItbWFwLWNvbnRhaW5lci1tb2JpbGUtc3RpY2t5LWJsb2NrLXN0YXJ0LCAwKTtcbiAgICBoZWlnaHQ6IHZhcigtLV9zYmItbWFwLWNvbnRhaW5lci1tYXAtaGVpZ2h0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBncmlkLXJvdzogMSAvIDM7XG4gICAgZ3JpZC1jb2x1bW46IDIgLyAzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJBY2NlbnRCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBmb3J3YXJkRXZlbnQsXG4gIGkxOG5NYXBDb250YWluZXJCdXR0b25MYWJlbCxcbiAgU2JiRWxlbWVudCxcbiAgdHlwZSBTYmJFbGVtZW50VHlwZSxcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBzY3JvbGxiYXJTdHlsZXMsXG59IGZyb20gJy4uL2NvcmUudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9tYXAtY29udGFpbmVyLnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3IgbWFwcy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBzaWRlYmFyLlxuICogQHNsb3QgbWFwIC0gVXNlZCBmb3Igc2xvdHRpbmcgdGhlIG1hcC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLW1hcmdpbi1zdGFydD12YXIoLS1zYmItaGVhZGVyLWhlaWdodCldIC0gVGhlIGNvbXBvbmVudFxuICogY29tZXMgYWxvbmcgd2l0aCBhIGhlaWdodCBjYWxjdWxhdGlvbiB0aGF0IHN1YnRyYWN0cyB0aGUgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKiBGb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCB0aGlzIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcHJlc2V0IGhlaWdodC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1tYXAtY29udGFpbmVyLXNpZGViYXItd2lkdGg9emVyby1sYXJnZTo0MDBweDt1bHRyYTo0ODBweF0gLSBDYW4gYmUgdXNlZFxuICogdG8gbW9kaWZ5IHRoZSB3aWR0aCBvZiB0aGUgbGVmdCBzaWRlYmFyLlxuICogQGNzc3Byb3AgWy0tc2JiLW1hcC1jb250YWluZXItbW9iaWxlLXN0aWNreS1ibG9jay1zdGFydD0wXSAtIElmIGUuZy4gYSBoZWFkZXIgd2l0aCBhIGZpeGVkIGhlaWdodFxuICogaXMgcGxhY2VkIGJlZm9yZSB0aGUgbWFwLWNvbnRhaW5lciwgdGhlIG1hcCBzaG91bGQgYmUgc3RpY2t5IHJlc3BlY3RpbmdcbiAqIHRoaXMgb2Zmc2V0IGZyb20gdGhlIGRvY3VtZW50J3MgdG9wLiBPbmx5IGFwcGxpZWQgb24gbW9iaWxlIHZpZXdzLlxuICogTW9zdCBjb21tb25seSBpdCBjYW4gYmUgc2V0IHRvIGB2YXIoLS1zYmItaGVhZGVyLWhlaWdodClgLlxuICovXG5leHBvcnQgY2xhc3MgU2JiTWFwQ29udGFpbmVyRWxlbWVudCBleHRlbmRzIFNiYkVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLW1hcC1jb250YWluZXInO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbU2JiQWNjZW50QnV0dG9uRWxlbWVudF07XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtzY3JvbGxiYXJTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKiBGbGFnIHRvIHNob3cvaGlkZSB0aGUgc2Nyb2xsIHVwIGJ1dHRvbiBpbnNpZGUgdGhlIHNpZGViYXIgb24gbW9iaWxlLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGlkZS1zY3JvbGwtdXAtYnV0dG9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGlkZVNjcm9sbFVwQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfc2Nyb2xsVXBCdXR0b25WaXNpYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY2FsbGJhY2s6IChlbnRyaWVzKSA9PiB0aGlzLl90b2dnbGVCdXR0b25WaXNpYmlsaXR5T25JbnRlcnNlY3QoZW50cmllcyksXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaGlkZVNjcm9sbFVwQnV0dG9uJykpIHtcbiAgICAgIGNvbnN0IGludGVyc2VjdG9yRWxlbWVudCA9IHRoaXMuX2ludGVyc2VjdG9yKCk7XG5cbiAgICAgIGlmICghdGhpcy5oaWRlU2Nyb2xsVXBCdXR0b24gJiYgaW50ZXJzZWN0b3JFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoaW50ZXJzZWN0b3JFbGVtZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0b3JFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLnVub2JzZXJ2ZShpbnRlcnNlY3RvckVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAoIXRoaXMuaGlkZVNjcm9sbFVwQnV0dG9uKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2ludGVyc2VjdG9yKCkhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbnRlcnNlY3RvcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoJyNpbnRlcnNlY3RvcicpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQnV0dG9uIGNsaWNrIGNhbGxiYWNrIHRvIHRyaWdnZXIgdGhlIHNjcm9sbCB0byBjb250YWluZXIgdG9wXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9vblNjcm9sbEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJzZWN0aW9uIGNhbGxiYWNrLiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5LlxuICAgKiBAcGFyYW0gZW50cmllc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfdG9nZ2xlQnV0dG9uVmlzaWJpbGl0eU9uSW50ZXJzZWN0KGVudHJpZXM6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlbXSk6IHZvaWQge1xuICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IG1hcElzSGlkZGVuID0gIWVudHJ5LmlzSW50ZXJzZWN0aW5nO1xuICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnc2Nyb2xsLXVwLWJ1dHRvbi12aXNpYmxlJywgbWFwSXNIaWRkZW4pO1xuICAgICAgdGhpcy5fc2Nyb2xsVXBCdXR0b25WaXNpYmxlID0gbWFwSXNIaWRkZW47XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fbWFwXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJtYXBcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhciBzYmItc2Nyb2xsYmFyLXRoaWNrLXRyYWNrLXZpc2libGVcIlxuICAgICAgICBAc2Nyb2xsPSR7KGU6IEV2ZW50KSA9PiBmb3J3YXJkRXZlbnQoZSwgZG9jdW1lbnQpfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBpZD1cImludGVyc2VjdG9yXCI+PC9zcGFuPlxuXG4gICAgICAgIDxzbG90Pjwvc2xvdD5cblxuICAgICAgICAkeyF0aGlzLmhpZGVTY3JvbGxVcEJ1dHRvblxuICAgICAgICAgID8gaHRtbGA8c2JiLWFjY2VudC1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItbWFwLWNvbnRhaW5lcl9fc2lkZWJhci1idXR0b25cIlxuICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgIGljb24tbmFtZT1cImxvY2F0aW9uLXBpbi1tYXAtc21hbGxcIlxuICAgICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9vblNjcm9sbEJ1dHRvbkNsaWNrKCl9XG4gICAgICAgICAgICAgID9pbmVydD0keyF0aGlzLl9zY3JvbGxVcEJ1dHRvblZpc2libGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICR7aTE4bk1hcENvbnRhaW5lckJ1dHRvbkxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgPC9zYmItYWNjZW50LWJ1dHRvbj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW1hcC1jb250YWluZXInOiBTYmJN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
|