@sbb-esta/lyne-elements-dev 4.8.1-dev.1773955183 → 4.8.1-dev.1774008620
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/custom-elements.json +83 -0
- package/development/header/header/header.component.d.ts +7 -0
- package/development/header/header/header.component.d.ts.map +1 -1
- package/development/header/header/header.component.js +1 -1
- package/development/header/header.js +1 -1
- package/development/header.component-CxLTkL_g.js +489 -0
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/header/header/header.component.js +1 -1
- package/header/header.js +1 -1
- package/{header.component-BiIWWPA0.js → header.component-BpevKe1F.js} +50 -21
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/package.json +2 -2
- package/development/header.component-DEw_zC-n.js +0 -446
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { css, html, isServer } from "lit";
|
|
3
|
+
import { property, state } from "lit/decorators.js";
|
|
4
|
+
import { SbbElement } from "./core/base-elements.js";
|
|
5
|
+
import { forceType, idReference } from "./core/decorators.js";
|
|
6
|
+
import { isLean, queueDomContentLoaded } from "./core/dom.js";
|
|
7
|
+
import { boxSizingStyles } from "./core/styles.js";
|
|
8
|
+
import { SbbFocusVisibleWithinController } from "./core/a11y.js";
|
|
9
|
+
//#region src/elements/header/header/header.scss?lit&inline
|
|
10
|
+
var header_default = css`:host {
|
|
11
|
+
--sbb-logo-height: 1rem;
|
|
12
|
+
--sbb-signet-height: 1rem;
|
|
13
|
+
--sbb-header-transition-duration: var(
|
|
14
|
+
--sbb-disable-animation-duration,
|
|
15
|
+
var(--sbb-animation-duration-6x)
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
@media (min-width: calc(64rem)) {
|
|
19
|
+
:host {
|
|
20
|
+
--sbb-logo-height: 1.25rem;
|
|
21
|
+
--sbb-signet-height: 1.25rem;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
:host {
|
|
25
|
+
display: block;
|
|
26
|
+
height: var(--sbb-header-height);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:host([size=s]) ::slotted(:is(sbb-header-button, sbb-header-link)) {
|
|
30
|
+
--sbb-header-action-min-height: var(--sbb-size-element-xs);
|
|
31
|
+
--sbb-header-action-padding-inline: var(--sbb-spacing-fixed-4x);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:host([hide-on-scroll]) {
|
|
35
|
+
--sbb-header-position: absolute;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {
|
|
39
|
+
--sbb-header-position: fixed;
|
|
40
|
+
--sbb-header-animation-name: hide;
|
|
41
|
+
--sbb-header-transform: translate3d(0, -100%, 0);
|
|
42
|
+
--sbb-header-inset-inline-end: var(--sbb-scrollbar-width, 0);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(animated),[state--animated])) {
|
|
46
|
+
--sbb-header-transition-timing: cubic-bezier(0.4, 0, 1, 1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(visible),[state--visible])) {
|
|
50
|
+
--sbb-header-animation-name: show;
|
|
51
|
+
--sbb-header-transform: translate3d(0, 0, 0);
|
|
52
|
+
--sbb-header-transition-timing: cubic-bezier(0, 0, 0.2, 1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(has-visible-focus-within),[state--has-visible-focus-within])) {
|
|
56
|
+
--sbb-header-transition-duration: 0;
|
|
57
|
+
--sbb-header-transform: translate3d(0, 0, 0);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sbb-header {
|
|
61
|
+
position: var(--sbb-header-position);
|
|
62
|
+
inset: 0 var(--sbb-header-inset-inline-end) auto 0;
|
|
63
|
+
background: var(--sbb-header-background);
|
|
64
|
+
z-index: var(--sbb-header-z-index, 10);
|
|
65
|
+
transform: var(--sbb-header-transform);
|
|
66
|
+
transition-property: box-shadow;
|
|
67
|
+
transition-duration: var(--sbb-header-transition-duration);
|
|
68
|
+
transition-timing-function: var(--sbb-header-transition-timing);
|
|
69
|
+
animation-name: var(--sbb-header-animation-name);
|
|
70
|
+
animation-duration: var(--sbb-header-transition-duration);
|
|
71
|
+
animation-timing-function: var(--sbb-header-transition-timing);
|
|
72
|
+
}
|
|
73
|
+
: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 {
|
|
74
|
+
box-shadow: var(--sbb-header-box-shadow);
|
|
75
|
+
}
|
|
76
|
+
@media (forced-colors: active) {
|
|
77
|
+
.sbb-header {
|
|
78
|
+
border-block-end: var(--sbb-border-width-1x) solid CanvasText;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.sbb-header__wrapper {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
justify-content: flex-start;
|
|
86
|
+
height: var(--sbb-header-height);
|
|
87
|
+
}
|
|
88
|
+
:host(:not([expanded])) .sbb-header__wrapper {
|
|
89
|
+
padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));
|
|
90
|
+
margin-inline: auto;
|
|
91
|
+
width: 100%;
|
|
92
|
+
}
|
|
93
|
+
@media (min-width: calc(90rem)) {
|
|
94
|
+
:host(:not([expanded])) .sbb-header__wrapper {
|
|
95
|
+
max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
:host([expanded]) .sbb-header__wrapper {
|
|
99
|
+
padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
::slotted(:is(sbb-header-button, sbb-header-link):first-child) {
|
|
103
|
+
margin-inline-start: var(--sbb-header-first-item-margin-inline-start);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
::slotted(*) {
|
|
107
|
+
flex: 0 0 auto;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
::slotted(.sbb-header-shrinkable) {
|
|
111
|
+
flex-shrink: 1;
|
|
112
|
+
min-width: 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
::slotted(.sbb-header-spacer) {
|
|
116
|
+
flex-grow: 1;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
::slotted(.sbb-header-logo) {
|
|
120
|
+
margin-inline-start: var(--sbb-spacing-responsive-s);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
::slotted(a.sbb-header-logo) {
|
|
124
|
+
display: block;
|
|
125
|
+
padding-block: var(--sbb-spacing-fixed-3x);
|
|
126
|
+
position: relative;
|
|
127
|
+
outline: none !important;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
::slotted(a.sbb-header-logo)::before {
|
|
131
|
+
content: "";
|
|
132
|
+
display: block;
|
|
133
|
+
position: absolute;
|
|
134
|
+
inset: var(--sbb-spacing-fixed-3x) 0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
::slotted(a.sbb-header-logo:focus-visible)::before {
|
|
138
|
+
outline-offset: var(--sbb-focus-outline-offset);
|
|
139
|
+
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
140
|
+
outline-offset: var(--sbb-spacing-fixed-3x);
|
|
141
|
+
border-radius: 1px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@keyframes show {
|
|
145
|
+
from {
|
|
146
|
+
transform: translate3d(0, -100%, 0);
|
|
147
|
+
}
|
|
148
|
+
to {
|
|
149
|
+
transform: translate3d(0, 0, 0);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
@keyframes hide {
|
|
153
|
+
from {
|
|
154
|
+
transform: translate3d(0, 0, 0);
|
|
155
|
+
}
|
|
156
|
+
to {
|
|
157
|
+
transform: translate3d(0, -100%, 0);
|
|
158
|
+
}
|
|
159
|
+
}`;
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/elements/header/header/header.component.ts
|
|
162
|
+
var IS_MENU_OPENED_QUERY = "[aria-controls][aria-expanded='true']";
|
|
163
|
+
/**
|
|
164
|
+
* It displays a header section for the page.
|
|
165
|
+
*
|
|
166
|
+
* @slot - Use the unnamed slot to add actions, content and logo to the header.
|
|
167
|
+
* @cssprop [--sbb-header-z-index=10] - Can be used to modify the z-index of the header.
|
|
168
|
+
* @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.
|
|
169
|
+
*/
|
|
170
|
+
var SbbHeaderElement = (() => {
|
|
171
|
+
let _classSuper = SbbElement;
|
|
172
|
+
let _expanded_decorators;
|
|
173
|
+
let _expanded_initializers = [];
|
|
174
|
+
let _expanded_extraInitializers = [];
|
|
175
|
+
let _scrollOrigin_decorators;
|
|
176
|
+
let _scrollOrigin_initializers = [];
|
|
177
|
+
let _scrollOrigin_extraInitializers = [];
|
|
178
|
+
let _hideOnScroll_decorators;
|
|
179
|
+
let _hideOnScroll_initializers = [];
|
|
180
|
+
let _hideOnScroll_extraInitializers = [];
|
|
181
|
+
let _size_decorators;
|
|
182
|
+
let _size_initializers = [];
|
|
183
|
+
let _size_extraInitializers = [];
|
|
184
|
+
let __headerOnTop_decorators;
|
|
185
|
+
let __headerOnTop_initializers = [];
|
|
186
|
+
let __headerOnTop_extraInitializers = [];
|
|
187
|
+
return class SbbHeaderElement extends _classSuper {
|
|
188
|
+
static {
|
|
189
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
190
|
+
_expanded_decorators = [forceType(), property({
|
|
191
|
+
reflect: true,
|
|
192
|
+
type: Boolean
|
|
193
|
+
})];
|
|
194
|
+
_scrollOrigin_decorators = [idReference(), property({ attribute: "scroll-origin" })];
|
|
195
|
+
_hideOnScroll_decorators = [forceType(), property({
|
|
196
|
+
attribute: "hide-on-scroll",
|
|
197
|
+
reflect: true,
|
|
198
|
+
type: Boolean
|
|
199
|
+
})];
|
|
200
|
+
_size_decorators = [property({ reflect: true })];
|
|
201
|
+
__headerOnTop_decorators = [state()];
|
|
202
|
+
__esDecorate(this, null, _expanded_decorators, {
|
|
203
|
+
kind: "accessor",
|
|
204
|
+
name: "expanded",
|
|
205
|
+
static: false,
|
|
206
|
+
private: false,
|
|
207
|
+
access: {
|
|
208
|
+
has: (obj) => "expanded" in obj,
|
|
209
|
+
get: (obj) => obj.expanded,
|
|
210
|
+
set: (obj, value) => {
|
|
211
|
+
obj.expanded = value;
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
metadata: _metadata
|
|
215
|
+
}, _expanded_initializers, _expanded_extraInitializers);
|
|
216
|
+
__esDecorate(this, null, _scrollOrigin_decorators, {
|
|
217
|
+
kind: "accessor",
|
|
218
|
+
name: "scrollOrigin",
|
|
219
|
+
static: false,
|
|
220
|
+
private: false,
|
|
221
|
+
access: {
|
|
222
|
+
has: (obj) => "scrollOrigin" in obj,
|
|
223
|
+
get: (obj) => obj.scrollOrigin,
|
|
224
|
+
set: (obj, value) => {
|
|
225
|
+
obj.scrollOrigin = value;
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
metadata: _metadata
|
|
229
|
+
}, _scrollOrigin_initializers, _scrollOrigin_extraInitializers);
|
|
230
|
+
__esDecorate(this, null, _hideOnScroll_decorators, {
|
|
231
|
+
kind: "accessor",
|
|
232
|
+
name: "hideOnScroll",
|
|
233
|
+
static: false,
|
|
234
|
+
private: false,
|
|
235
|
+
access: {
|
|
236
|
+
has: (obj) => "hideOnScroll" in obj,
|
|
237
|
+
get: (obj) => obj.hideOnScroll,
|
|
238
|
+
set: (obj, value) => {
|
|
239
|
+
obj.hideOnScroll = value;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
metadata: _metadata
|
|
243
|
+
}, _hideOnScroll_initializers, _hideOnScroll_extraInitializers);
|
|
244
|
+
__esDecorate(this, null, _size_decorators, {
|
|
245
|
+
kind: "accessor",
|
|
246
|
+
name: "size",
|
|
247
|
+
static: false,
|
|
248
|
+
private: false,
|
|
249
|
+
access: {
|
|
250
|
+
has: (obj) => "size" in obj,
|
|
251
|
+
get: (obj) => obj.size,
|
|
252
|
+
set: (obj, value) => {
|
|
253
|
+
obj.size = value;
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
metadata: _metadata
|
|
257
|
+
}, _size_initializers, _size_extraInitializers);
|
|
258
|
+
__esDecorate(this, null, __headerOnTop_decorators, {
|
|
259
|
+
kind: "accessor",
|
|
260
|
+
name: "_headerOnTop",
|
|
261
|
+
static: false,
|
|
262
|
+
private: false,
|
|
263
|
+
access: {
|
|
264
|
+
has: (obj) => "_headerOnTop" in obj,
|
|
265
|
+
get: (obj) => obj._headerOnTop,
|
|
266
|
+
set: (obj, value) => {
|
|
267
|
+
obj._headerOnTop = value;
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
metadata: _metadata
|
|
271
|
+
}, __headerOnTop_initializers, __headerOnTop_extraInitializers);
|
|
272
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
273
|
+
enumerable: true,
|
|
274
|
+
configurable: true,
|
|
275
|
+
writable: true,
|
|
276
|
+
value: _metadata
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
static {
|
|
280
|
+
this.elementName = "sbb-header";
|
|
281
|
+
}
|
|
282
|
+
static {
|
|
283
|
+
this.styles = [boxSizingStyles, header_default];
|
|
284
|
+
}
|
|
285
|
+
static {
|
|
286
|
+
this._headerScrollOrigins = /* @__PURE__ */ new Set();
|
|
287
|
+
}
|
|
288
|
+
static {
|
|
289
|
+
this._headerElements = /* @__PURE__ */ new Set();
|
|
290
|
+
}
|
|
291
|
+
static {
|
|
292
|
+
if (!isServer) queueDomContentLoaded(() => this._initializeScrollOriginObserver());
|
|
293
|
+
}
|
|
294
|
+
#expanded_accessor_storage;
|
|
295
|
+
/**
|
|
296
|
+
* Whether to allow the header content to stretch to full width.
|
|
297
|
+
* By default, the content has the appropriate page size.
|
|
298
|
+
*/
|
|
299
|
+
get expanded() {
|
|
300
|
+
return this.#expanded_accessor_storage;
|
|
301
|
+
}
|
|
302
|
+
set expanded(value) {
|
|
303
|
+
this.#expanded_accessor_storage = value;
|
|
304
|
+
}
|
|
305
|
+
#scrollOrigin_accessor_storage;
|
|
306
|
+
/**
|
|
307
|
+
* The element's id or the element on which the scroll listener is attached.
|
|
308
|
+
*
|
|
309
|
+
* For attribute usage, provide an id reference.
|
|
310
|
+
*/
|
|
311
|
+
get scrollOrigin() {
|
|
312
|
+
return this.#scrollOrigin_accessor_storage;
|
|
313
|
+
}
|
|
314
|
+
set scrollOrigin(value) {
|
|
315
|
+
this.#scrollOrigin_accessor_storage = value;
|
|
316
|
+
}
|
|
317
|
+
#hideOnScroll_accessor_storage;
|
|
318
|
+
/** Whether the header should hide and show on scroll. */
|
|
319
|
+
get hideOnScroll() {
|
|
320
|
+
return this.#hideOnScroll_accessor_storage;
|
|
321
|
+
}
|
|
322
|
+
set hideOnScroll(value) {
|
|
323
|
+
this.#hideOnScroll_accessor_storage = value;
|
|
324
|
+
}
|
|
325
|
+
#size_accessor_storage;
|
|
326
|
+
/**
|
|
327
|
+
* Size of the header, either m or s.
|
|
328
|
+
* @default 'm' / 's' (lean)
|
|
329
|
+
*/
|
|
330
|
+
get size() {
|
|
331
|
+
return this.#size_accessor_storage;
|
|
332
|
+
}
|
|
333
|
+
set size(value) {
|
|
334
|
+
this.#size_accessor_storage = value;
|
|
335
|
+
}
|
|
336
|
+
#_headerOnTop_accessor_storage;
|
|
337
|
+
get _headerOnTop() {
|
|
338
|
+
return this.#_headerOnTop_accessor_storage;
|
|
339
|
+
}
|
|
340
|
+
set _headerOnTop(value) {
|
|
341
|
+
this.#_headerOnTop_accessor_storage = value;
|
|
342
|
+
}
|
|
343
|
+
constructor() {
|
|
344
|
+
super();
|
|
345
|
+
this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
|
|
346
|
+
this.#scrollOrigin_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers, null));
|
|
347
|
+
this.#hideOnScroll_accessor_storage = (__runInitializers(this, _scrollOrigin_extraInitializers), __runInitializers(this, _hideOnScroll_initializers, false));
|
|
348
|
+
this.#size_accessor_storage = (__runInitializers(this, _hideOnScroll_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
|
|
349
|
+
this.#_headerOnTop_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, __headerOnTop_initializers, true));
|
|
350
|
+
this._scrollElement = __runInitializers(this, __headerOnTop_extraInitializers);
|
|
351
|
+
this._lastScroll = 0;
|
|
352
|
+
this._scrollOriginFromObserver = null;
|
|
353
|
+
this.addController(new SbbFocusVisibleWithinController(this));
|
|
354
|
+
}
|
|
355
|
+
static _initializeScrollOriginObserver() {
|
|
356
|
+
new MutationObserver((mutations) => {
|
|
357
|
+
for (const mutation of mutations) if (mutation.type === "attributes") this._handleScrollOriginElement(mutation.target);
|
|
358
|
+
else if (mutation.type === "childList") for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
|
|
359
|
+
this._handleScrollOriginElement(node);
|
|
360
|
+
this._findAndHandleScrollOrigins(node);
|
|
361
|
+
}
|
|
362
|
+
this._updateHeaderElements();
|
|
363
|
+
}).observe(document.documentElement, {
|
|
364
|
+
attributeFilter: ["sbb-header-scroll-origin"],
|
|
365
|
+
childList: true,
|
|
366
|
+
subtree: true
|
|
367
|
+
});
|
|
368
|
+
this._findAndHandleScrollOrigins(document.body);
|
|
369
|
+
this._updateHeaderElements();
|
|
370
|
+
}
|
|
371
|
+
static _findAndHandleScrollOrigins(root) {
|
|
372
|
+
root.querySelectorAll("[sbb-header-scroll-origin]").forEach((e) => this._handleScrollOriginElement(e));
|
|
373
|
+
}
|
|
374
|
+
static _handleScrollOriginElement(element) {
|
|
375
|
+
if (element.hasAttribute("sbb-header-scroll-origin")) this._headerScrollOrigins.add(element);
|
|
376
|
+
else this._headerScrollOrigins.delete(element);
|
|
377
|
+
}
|
|
378
|
+
static _updateHeaderElements() {
|
|
379
|
+
for (const header of this._headerElements) {
|
|
380
|
+
if (this._headerScrollOrigins.size === 0) header._scrollOriginFromObserver = null;
|
|
381
|
+
else if (this._headerScrollOrigins.size === 1) header._scrollOriginFromObserver = this._headerScrollOrigins.values().next().value ?? null;
|
|
382
|
+
else header._scrollOriginFromObserver = Array.from(this._headerScrollOrigins).sort((c1, c2) => c1.compareDocumentPosition(c2) & Node.DOCUMENT_POSITION_CONTAINS).at(-1) ?? null;
|
|
383
|
+
header._updateScrollListener();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
|
|
387
|
+
connectedCallback() {
|
|
388
|
+
super.connectedCallback();
|
|
389
|
+
SbbHeaderElement._headerElements.add(this);
|
|
390
|
+
if (this.hasUpdated) this._updateScrollListener();
|
|
391
|
+
}
|
|
392
|
+
/** Removes the scroll listener, if previously attached. */
|
|
393
|
+
disconnectedCallback() {
|
|
394
|
+
super.disconnectedCallback();
|
|
395
|
+
this._scrollElement = null;
|
|
396
|
+
this._scrollEventsController?.abort();
|
|
397
|
+
SbbHeaderElement._headerElements.delete(this);
|
|
398
|
+
}
|
|
399
|
+
requestUpdate(name, oldValue, options) {
|
|
400
|
+
super.requestUpdate(name, oldValue, options);
|
|
401
|
+
if (!isServer && (!name || name === "scrollOrigin") && this.hasUpdated) this._updateScrollListener();
|
|
402
|
+
}
|
|
403
|
+
firstUpdated(changedProperties) {
|
|
404
|
+
super.firstUpdated(changedProperties);
|
|
405
|
+
this._updateScrollListener();
|
|
406
|
+
}
|
|
407
|
+
_updateScrollListener() {
|
|
408
|
+
const scrollElement = this.scrollOrigin ?? this._scrollOriginFromObserver ?? document;
|
|
409
|
+
if (scrollElement === this._scrollElement) return;
|
|
410
|
+
this._scrollEventsController?.abort();
|
|
411
|
+
this._scrollElement = scrollElement;
|
|
412
|
+
if (!this._scrollElement) return;
|
|
413
|
+
this._scrollEventsController = new AbortController();
|
|
414
|
+
this._scrollFunction = this._getScrollFunction.bind(this);
|
|
415
|
+
this._scrollElement.addEventListener("scroll", this._scrollFunction, {
|
|
416
|
+
passive: true,
|
|
417
|
+
signal: this._scrollEventsController.signal
|
|
418
|
+
});
|
|
419
|
+
const currentScroll = this._getCurrentScrollProperty("scrollTop");
|
|
420
|
+
this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
|
|
421
|
+
}
|
|
422
|
+
/** Returns the correct function to attach on scroll. */
|
|
423
|
+
_getScrollFunction() {
|
|
424
|
+
return this.hideOnScroll ? this._scrollListener() : this._scrollShadowListener();
|
|
425
|
+
}
|
|
426
|
+
/** Returns the requested property of the scrollContext. */
|
|
427
|
+
_getCurrentScrollProperty(property) {
|
|
428
|
+
if (this._scrollElement instanceof Document) return this._scrollElement.documentElement[property] || this._scrollElement.body[property];
|
|
429
|
+
return this._scrollElement?.[property] || 0;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Sets the correct value for `scrollTop`, then:
|
|
433
|
+
* - apply the shadow if the element/document has been scrolled down;
|
|
434
|
+
* - hides the header, remove the shadow and possibly close any open menu on the header if it is not visible anymore;
|
|
435
|
+
* - shows the header and re-apply the shadow if the element/document has been scrolled up.
|
|
436
|
+
*/
|
|
437
|
+
_scrollListener() {
|
|
438
|
+
const currentScroll = this._getCurrentScrollProperty("scrollTop");
|
|
439
|
+
if (this._getCurrentScrollProperty("scrollHeight") - window.innerHeight - currentScroll <= 0) return;
|
|
440
|
+
this.toggleState("shadow", currentScroll !== 0);
|
|
441
|
+
if (currentScroll > this.offsetHeight && currentScroll > 0 && this._lastScroll < currentScroll) this._closeOpenOverlays();
|
|
442
|
+
if (currentScroll > this.offsetHeight * 2) {
|
|
443
|
+
this._headerOnTop = false;
|
|
444
|
+
if (currentScroll > 0 && this._lastScroll < currentScroll) ["shadow", "visible"].forEach((name) => this.internals.states.delete(name));
|
|
445
|
+
else [
|
|
446
|
+
"fixed",
|
|
447
|
+
"shadow",
|
|
448
|
+
"animated",
|
|
449
|
+
"visible"
|
|
450
|
+
].forEach((name) => this.internals.states.add(name));
|
|
451
|
+
} else {
|
|
452
|
+
if (currentScroll === 0) this._headerOnTop = true;
|
|
453
|
+
if (this._headerOnTop) [
|
|
454
|
+
"shadow",
|
|
455
|
+
"animated",
|
|
456
|
+
"fixed",
|
|
457
|
+
"visible"
|
|
458
|
+
].forEach((name) => this.internals.states.delete(name));
|
|
459
|
+
}
|
|
460
|
+
this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
|
|
461
|
+
}
|
|
462
|
+
/** Apply the shadow if the element/document has been scrolled down. */
|
|
463
|
+
_scrollShadowListener() {
|
|
464
|
+
this.toggleState("shadow", this._getCurrentScrollProperty("scrollTop") !== 0);
|
|
465
|
+
}
|
|
466
|
+
_closeOpenOverlays() {
|
|
467
|
+
if (this.matches(":is(:state(has-visible-focus-within),[state--has-visible-focus-within])")) return;
|
|
468
|
+
const overlayTriggers = Array.from(this.querySelectorAll(IS_MENU_OPENED_QUERY));
|
|
469
|
+
for (const overlayTrigger of overlayTriggers) {
|
|
470
|
+
const overlayId = overlayTrigger.getAttribute("aria-controls");
|
|
471
|
+
const overlay = document.getElementById(overlayId);
|
|
472
|
+
if (typeof overlay?.close === "function") overlay.close();
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
render() {
|
|
476
|
+
return html`
|
|
477
|
+
<header class="sbb-header">
|
|
478
|
+
<div class="sbb-header__wrapper">
|
|
479
|
+
<slot></slot>
|
|
480
|
+
</div>
|
|
481
|
+
</header>
|
|
482
|
+
`;
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
})();
|
|
486
|
+
//#endregion
|
|
487
|
+
export { SbbHeaderElement as t };
|
|
488
|
+
|
|
489
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1DeExUa0xfZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9saXQmaW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2hlYWRlci9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWxvZ28taGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE2KX07XG4gIC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi02eClcbiAgKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgyMCl9O1xuICAgIC0tc2JiLXNpZ25ldC1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgyMCl9O1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgLy8gU2V0dGluZyB0aGUgaGVpZ2h0IGhlcmUgcmVzZXJ2ZXMgdGhlIHNwYWNlIGZvciB0aGUgaGVhZGVyIHdoaWNoIHdpbGwgZWxzZSBiZSBsb3N0IHdpdGggZml4ZWQgcG9zaXRpb24uXG4gIGhlaWdodDogdmFyKC0tc2JiLWhlYWRlci1oZWlnaHQpO1xufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIDo6c2xvdHRlZCg6aXMoc2JiLWhlYWRlci1idXR0b24sIHNiYi1oZWFkZXItbGluaykpIHtcbiAgICAtLXNiYi1oZWFkZXItYWN0aW9uLW1pbi1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHMpO1xuICAgIC0tc2JiLWhlYWRlci1hY3Rpb24tcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgfVxufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogZml4ZWQ7XG4gIC0tc2JiLWhlYWRlci1hbmltYXRpb24tbmFtZTogaGlkZTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZDogdmFyKC0tc2JiLXNjcm9sbGJhci13aWR0aCwgMCk7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpOnN0YXRlKGFuaW1hdGVkKSkge1xuICAvLyBIaWRlIHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUodmlzaWJsZSkpIHtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBzaG93O1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAvLyBTaG93IHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKSkge1xuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbjogMDtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi5zYmItaGVhZGVyIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi1oZWFkZXItcG9zaXRpb24pO1xuICBpbnNldDogMCB2YXIoLS1zYmItaGVhZGVyLWluc2V0LWlubGluZS1lbmQpIGF1dG8gMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2JiLWhlYWRlci1iYWNrZ3JvdW5kKTtcbiAgei1pbmRleDogdmFyKC0tc2JiLWhlYWRlci16LWluZGV4LCAxMCk7XG4gIHRyYW5zZm9ybTogdmFyKC0tc2JiLWhlYWRlci10cmFuc2Zvcm0pO1xuICB0cmFuc2l0aW9uOiB7XG4gICAgcHJvcGVydHk6IGJveC1zaGFkb3c7XG4gICAgZHVyYXRpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nKTtcbiAgfVxuICBhbmltYXRpb246IHtcbiAgICBuYW1lOiB2YXIoLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lKTtcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzaGFkb3cpLCA6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKTpzdGF0ZShmaXhlZCkpKSAmIHtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zYmItaGVhZGVyLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpIHNvbGlkIENhbnZhc1RleHQ7XG4gIH1cbn1cblxuLnNiYi1oZWFkZXJfX3dyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGhlaWdodDogdmFyKC0tc2JiLWhlYWRlci1oZWlnaHQpO1xuXG4gIDpob3N0KDpub3QoW2V4cGFuZGVkXSkpICYge1xuICAgIEBpbmNsdWRlIHNiYi5wYWdlLXNwYWNpbmc7XG4gIH1cblxuICA6aG9zdChbZXhwYW5kZWRdKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIucGFnZS1zcGFjaW5nLWV4cGFuZGVkO1xuICB9XG59XG5cbi8vIEZpeCBsZWZ0IG9mZnNldCBpZiBmaXJzdCBlbGVtZW50IG9mIHRoZSBoZWFkZXIgaXMgYSBzYmItaGVhZGVyLWJ1dHRvbi9zYmItaGVhZGVyLWxpbmsuXG4vLyBUaGUgdmFsdWUgb2YgdGhlIG9mZnNldCBpcyBjYWxjdWxhdGVkIGluc2lkZSBzYmItaGVhZGVyLWJ1dHRvbi9zYmItaGVhZGVyLWxpbmsgc3R5bGVzLlxuOjpzbG90dGVkKDppcyhzYmItaGVhZGVyLWJ1dHRvbiwgc2JiLWhlYWRlci1saW5rKTpmaXJzdC1jaGlsZCkge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItaGVhZGVyLWZpcnN0LWl0ZW0tbWFyZ2luLWlubGluZS1zdGFydCk7XG59XG5cbjo6c2xvdHRlZCgqKSB7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG46OnNsb3R0ZWQoLnNiYi1oZWFkZXItc2hyaW5rYWJsZSkge1xuICBmbGV4LXNocmluazogMTtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG46OnNsb3R0ZWQoLnNiYi1oZWFkZXItc3BhY2VyKSB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuOjpzbG90dGVkKC5zYmItaGVhZGVyLWxvZ28pIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS1zKTtcbn1cblxuLy8gQXBwbHkgcGFkZGluZyBhbmQgb3V0bGluZSB0byBwb3NzaWJsZSBzbG90dGVkIGxpbmsgaW4gbG9nbyBzbG90XG46OnNsb3R0ZWQoYS5zYmItaGVhZGVyLWxvZ28pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFVzZSAhaW1wb3J0YW50IGhlcmUgdG8gbm90IGludGVyZmVyZSB3aXRoIEZpcmVmb3ggZm9jdXMgcmluZyBkZWZpbml0aW9uXG4gIC8vIHdoaWNoIGFwcGVhcnMgaW4gbm9ybWFsaXplIENTUyBvZiBzZXZlcmFsIGZyYW1ld29ya3MuXG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gVG8gc2hvdyB0aGUgY29ycmVjdCBvdXRsaW5lLCB3ZSBuZWVkIHRvIHNwYW4gYSBoaWRkZW4gZWxlbWVudCBmaWxsaW5nIHRoZSBsaW5rIGJ1dCB3aXRob3V0IHRoZSBvdXRsaW5lLW9mZnNldC5cbjo6c2xvdHRlZChhLnNiYi1oZWFkZXItbG9nbyk6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpIDA7XG59XG5cbjo6c2xvdHRlZChhLnNiYi1oZWFkZXItbG9nbzpmb2N1cy12aXNpYmxlKTo6YmVmb3JlIHtcbiAgQGluY2x1ZGUgc2JiLmZvY3VzLW91dGxpbmU7XG5cbiAgb3V0bGluZS1vZmZzZXQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcblxuICAvLyBBcyBpZiB0aGUgb3V0bGluZSBoYXMgYW4gb2Zmc2V0LCB0aGUgYm9yZGVyIHJhZGl1cyBpbmNyZWFzZXMsIHdlIHNldCBpdCB0byB0aGUgc21hbGxlc3QgcG9zc2libGUgYm9yZGVyLXJhZGl1cy5cbiAgYm9yZGVyLXJhZGl1czogMXB4O1xufVxuXG5Aa2V5ZnJhbWVzIHNob3cge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgaGlkZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIGlkUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiwgcXVldWVEb21Db250ZW50TG9hZGVkIH0gZnJvbSAnLi4vLi4vY29yZS9kb20udHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9oZWFkZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgSVNfTUVOVV9PUEVORURfUVVFUlkgPSBcIlthcmlhLWNvbnRyb2xzXVthcmlhLWV4cGFuZGVkPSd0cnVlJ11cIjtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhlYWRlciBzZWN0aW9uIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhY3Rpb25zLCBjb250ZW50IGFuZCBsb2dvIHRvIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLXotaW5kZXg9MTBdIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSB6LWluZGV4IG9mIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLWhlaWdodD16ZXJvLXNtYWxsOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTE0eCk7bGFyZ2UtdWx0cmE6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMjR4KV0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJIZWFkZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGVhZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuXG4gIHByaXZhdGUgc3RhdGljIF9oZWFkZXJTY3JvbGxPcmlnaW5zID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hlYWRlckVsZW1lbnRzID0gbmV3IFNldDxTYmJIZWFkZXJFbGVtZW50PigpO1xuXG4gIHN0YXRpYyB7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBibG9jayBleGVjdXRpb24gZm9yIGluaXRpYWxpemF0aW9uLFxuICAgICAgLy8gc28gd2UgZGVmZXIgaXQgdW50aWwgdGhlIERPTSBjb250ZW50IGlzIGxvYWRlZC5cbiAgICAgIHF1ZXVlRG9tQ29udGVudExvYWRlZCgoKSA9PiB0aGlzLl9pbml0aWFsaXplU2Nyb2xsT3JpZ2luT2JzZXJ2ZXIoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGhlYWRlciBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQncyBpZCBvciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgc2Nyb2xsIGxpc3RlbmVyIGlzIGF0dGFjaGVkLlxuICAgKlxuICAgKiBGb3IgYXR0cmlidXRlIHVzYWdlLCBwcm92aWRlIGFuIGlkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBpZFJlZmVyZW5jZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Njcm9sbC1vcmlnaW4nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzY3JvbGxPcmlnaW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGhlYWRlciBzaG91bGQgaGlkZSBhbmQgc2hvdyBvbiBzY3JvbGwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRlLW9uLXNjcm9sbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGVPblNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBoZWFkZXIsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hlYWRlck9uVG9wID0gdHJ1ZTtcblxuICBwcml2YXRlIF9zY3JvbGxFbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc2Nyb2xsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfc2Nyb2xsRnVuY3Rpb246ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfbGFzdFNjcm9sbCA9IDA7XG4gIHByaXZhdGUgX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIobmV3IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luaXRpYWxpemVTY3JvbGxPcmlnaW5PYnNlcnZlcigpOiB2b2lkIHtcbiAgICAvLyBXZSBhcmUgdXNpbmcgTXV0YXRpb25PYnNlcnZlciBkaXJlY3RseSBoZXJlLCBhcyBpdCB3aWxsIG9ubHkgYmUgY2FsbGVkIG9uIGNsaWVudCBzaWRlLFxuICAgIC8vIGFuZCB3ZSBkbyBub3QgbmVlZCB0byBkaXNjb25uZWN0IGl0LCBhcyB3ZSB3YW50IGl0IHRvIHdvcmsgZHVyaW5nIHRoZSBmdWxsIGxpZmV0aW1lXG4gICAgLy8gb2YgdGhlIHBhZ2UuXG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZVNjcm9sbE9yaWdpbkVsZW1lbnQobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBbLi4ubXV0YXRpb24uYWRkZWROb2RlcywgLi4ubXV0YXRpb24ucmVtb3ZlZE5vZGVzXS5maWx0ZXIoXG4gICAgICAgICAgICAobik6IG4gaXMgSFRNTEVsZW1lbnQgPT4gbi5ub2RlVHlwZSA9PT0gbi5FTEVNRU5UX05PREUsXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fdXBkYXRlSGVhZGVyRWxlbWVudHMoKTtcbiAgICB9KS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbiddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLl9maW5kQW5kSGFuZGxlU2Nyb2xsT3JpZ2lucyhkb2N1bWVudC5ib2R5KTtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKHJvb3Q6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgcm9vdFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luXScpXG4gICAgICAuZm9yRWFjaCgoZSkgPT4gdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChlKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luJykpIHtcbiAgICAgIHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMuYWRkKGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLmRlbGV0ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfdXBkYXRlSGVhZGVyRWxlbWVudHMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBoZWFkZXIgb2YgdGhpcy5faGVhZGVyRWxlbWVudHMpIHtcbiAgICAgIGlmICh0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLnNpemUgPT09IDApIHtcbiAgICAgICAgaGVhZGVyLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLnNpemUgPT09IDEpIHtcbiAgICAgICAgaGVhZGVyLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPSB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLnZhbHVlcygpLm5leHQoKS52YWx1ZSA/PyBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGVhZGVyLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPVxuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucylcbiAgICAgICAgICAgIC5zb3J0KChjMSwgYzIpID0+IGMxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGMyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMpXG4gICAgICAgICAgICAuYXQoLTEpID8/IG51bGw7XG4gICAgICB9XG4gICAgICBoZWFkZXIuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIElmIGBoaWRlT25TY3JvbGxgIGlzIHNldCwgY2hlY2tzIHRoZSBlbGVtZW50IHRvIGhvb2sgdGhlIGxpc3RlbmVyIG9uLCBhbmQgcG9zc2libHkgYWRkIGl0LiovXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIFNiYkhlYWRlckVsZW1lbnQuX2hlYWRlckVsZW1lbnRzLmFkZCh0aGlzKTtcbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHRoZSBzY3JvbGwgbGlzdGVuZXIsIGlmIHByZXZpb3VzbHkgYXR0YWNoZWQuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3Njcm9sbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgU2JiSGVhZGVyRWxlbWVudC5faGVhZGVyRWxlbWVudHMuZGVsZXRlKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmICghbmFtZSB8fCBuYW1lID09PSAnc2Nyb2xsT3JpZ2luJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuc2Nyb2xsT3JpZ2luID8/IHRoaXMuX3Njcm9sbE9yaWdpbkZyb21PYnNlcnZlciA/PyBkb2N1bWVudDtcbiAgICBpZiAoc2Nyb2xsRWxlbWVudCA9PT0gdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3Njcm9sbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudCA9IHNjcm9sbEVsZW1lbnQ7XG4gICAgaWYgKCF0aGlzLl9zY3JvbGxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3Njcm9sbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fc2Nyb2xsRnVuY3Rpb24gPSB0aGlzLl9nZXRTY3JvbGxGdW5jdGlvbi5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fc2Nyb2xsRnVuY3Rpb24sIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX3Njcm9sbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG4gICAgLy8gYGN1cnJlbnRTY3JvbGxgIGNhbiBiZSBuZWdhdGl2ZSwgZS5nLiBvbiBtb2JpbGU7IHRoaXMgaXMgbm90IGFsbG93ZWQuXG4gICAgdGhpcy5fbGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGwgPD0gMCA/IDAgOiBjdXJyZW50U2Nyb2xsO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGNvcnJlY3QgZnVuY3Rpb24gdG8gYXR0YWNoIG9uIHNjcm9sbC4gKi9cbiAgcHJpdmF0ZSBfZ2V0U2Nyb2xsRnVuY3Rpb24oKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuaGlkZU9uU2Nyb2xsID8gdGhpcy5fc2Nyb2xsTGlzdGVuZXIoKSA6IHRoaXMuX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgcmVxdWVzdGVkIHByb3BlcnR5IG9mIHRoZSBzY3JvbGxDb250ZXh0LiAqL1xuICBwcml2YXRlIF9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkocHJvcGVydHk6ICdzY3JvbGxUb3AnIHwgJ3Njcm9sbEhlaWdodCcpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLl9zY3JvbGxFbGVtZW50IGluc3RhbmNlb2YgRG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50LmRvY3VtZW50RWxlbWVudFtwcm9wZXJ0eV0gfHwgdGhpcy5fc2Nyb2xsRWxlbWVudC5ib2R5W3Byb3BlcnR5XTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbEVsZW1lbnQ/Lltwcm9wZXJ0eV0gfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBgc2Nyb2xsVG9wYCwgdGhlbjpcbiAgICogLSBhcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd247XG4gICAqIC0gaGlkZXMgdGhlIGhlYWRlciwgcmVtb3ZlIHRoZSBzaGFkb3cgYW5kIHBvc3NpYmx5IGNsb3NlIGFueSBvcGVuIG1lbnUgb24gdGhlIGhlYWRlciBpZiBpdCBpcyBub3QgdmlzaWJsZSBhbnltb3JlO1xuICAgKiAtIHNob3dzIHRoZSBoZWFkZXIgYW5kIHJlLWFwcGx5IHRoZSBzaGFkb3cgaWYgdGhlIGVsZW1lbnQvZG9jdW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQgdXAuXG4gICAqL1xuICBwcml2YXRlIF9zY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KCdzY3JvbGxUb3AnKTtcblxuICAgIC8vIFdoZXRoZXIgdGhlIHNjcm9sbCB2aWV3IGlzIGJvdW5jaW5nIHBhc3QgdGhlIGVkZ2Ugb2YgY29udGVudCBhbmQgYmFjayBhZ2Fpbi5cbiAgICBpZiAodGhpcy5fZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KCdzY3JvbGxIZWlnaHQnKSAtIHdpbmRvdy5pbm5lckhlaWdodCAtIGN1cnJlbnRTY3JvbGwgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NoYWRvdycsIGN1cnJlbnRTY3JvbGwgIT09IDApO1xuXG4gICAgLy8gQ2xvc2Ugb3BlbiBvdmVybGF5cyB3aGVuIHNjcm9sbGluZyBkb3duIGlmIHRoZSBoZWFkZXIgaXMgc2Nyb2xsZWQgb3V0IG9mIHNpZ2h0LlxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiB0aGlzLm9mZnNldEhlaWdodCAmJlxuICAgICAgY3VycmVudFNjcm9sbCA+IDAgJiZcbiAgICAgIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsXG4gICAgKSB7XG4gICAgICB0aGlzLl9jbG9zZU9wZW5PdmVybGF5cygpO1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodCwgc2Nyb2xsIHBvc2l0aW9uID4gaGVhZGVyIGhlaWdodCAqIDIuXG4gICAgaWYgKGN1cnJlbnRTY3JvbGwgPiB0aGlzLm9mZnNldEhlaWdodCAqIDIpIHtcbiAgICAgIHRoaXMuX2hlYWRlck9uVG9wID0gZmFsc2U7XG4gICAgICBpZiAoY3VycmVudFNjcm9sbCA+IDAgJiYgdGhpcy5fbGFzdFNjcm9sbCA8IGN1cnJlbnRTY3JvbGwpIHtcbiAgICAgICAgLy8gU2Nyb2xsaW5nIGRvd25cbiAgICAgICAgWydzaGFkb3cnLCAndmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+IHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUobmFtZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2Nyb2xsaW5nIHVwXG4gICAgICAgIFsnZml4ZWQnLCAnc2hhZG93JywgJ2FuaW1hdGVkJywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENoZWNrIGlmIGhlYWRlciBpbiBpdHMgb3JpZ2luYWwgcG9zaXRpb24sIHNjcm9sbCBwb3NpdGlvbiA8IGhlYWRlciBoZWlnaHQuXG4gICAgICAvLyBSZXNldCBoZWFkZXIgYmVoYXZpb3Igd2hlbiBzY3JvbGwgaGl0cyB0b3Agb2YgdGhlIHBhZ2UsIG9uIHNjcm9sbCBwb3NpdGlvbiA9IDAuXG4gICAgICBpZiAoY3VycmVudFNjcm9sbCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5faGVhZGVyT25Ub3ApIHtcbiAgICAgICAgWydzaGFkb3cnLCAnYW5pbWF0ZWQnLCAnZml4ZWQnLCAndmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gYGN1cnJlbnRTY3JvbGxgIGNhbiBiZSBuZWdhdGl2ZSwgZS5nLiBvbiBtb2JpbGU7IHRoaXMgaXMgbm90IGFsbG93ZWQuXG4gICAgdGhpcy5fbGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGwgPD0gMCA/IDAgOiBjdXJyZW50U2Nyb2xsO1xuICB9XG5cbiAgLyoqIEFwcGx5IHRoZSBzaGFkb3cgaWYgdGhlIGVsZW1lbnQvZG9jdW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQgZG93bi4gKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsU2hhZG93TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnc2hhZG93JywgdGhpcy5fZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KCdzY3JvbGxUb3AnKSAhPT0gMCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZU9wZW5PdmVybGF5cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXRjaGVzKCc6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG92ZXJsYXlUcmlnZ2VyczogSFRNTEVsZW1lbnRbXSA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoSVNfTUVOVV9PUEVORURfUVVFUlkpIGFzIE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+LFxuICAgICk7XG4gICAgZm9yIChjb25zdCBvdmVybGF5VHJpZ2dlciBvZiBvdmVybGF5VHJpZ2dlcnMpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXlJZDogc3RyaW5nID0gb3ZlcmxheVRyaWdnZXIuZ2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJykhO1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCkgYXMgSFRNTEVsZW1lbnQgJiB7IGNsb3NlOiAoKSA9PiB2b2lkIH07XG4gICAgICBpZiAodHlwZW9mIG92ZXJsYXk/LmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG92ZXJsYXkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzYmItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaGVhZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1oZWFkZXInOiBTYmJIZWFkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDa0JBLElBQU0sdUJBQXVCOzs7Ozs7OztJQVNoQiwwQkFBZ0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBekIseUJBQXlCLFlBQVU7OzsyQkFtQjdDLFdBQVcsRUFDWCxTQUFTO0lBQUUsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7K0JBUTFDLGFBQWEsRUFDYixTQUFTLEVBQUUsV0FBVyxpQkFBaUIsQ0FBQyxDQUFBOytCQUl4QyxXQUFXLEVBQ1gsU0FBUztJQUFF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
|
package/development/header.js
CHANGED
|
@@ -2,7 +2,7 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-B
|
|
|
2
2
|
import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
|
|
3
3
|
import { t as SbbHeaderEnvironmentElement } from "./header-environment.component-JltjpGKu.js";
|
|
4
4
|
import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
|
|
5
|
-
import { t as SbbHeaderElement } from "./header.component-
|
|
5
|
+
import { t as SbbHeaderElement } from "./header.component-CxLTkL_g.js";
|
|
6
6
|
import "./header.pure.js";
|
|
7
7
|
//#region src/elements/header.ts
|
|
8
8
|
/** @entrypoint */
|
|
@@ -2,5 +2,5 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-B
|
|
|
2
2
|
import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
|
|
3
3
|
import { t as SbbHeaderEnvironmentElement } from "./header-environment.component-JltjpGKu.js";
|
|
4
4
|
import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
|
|
5
|
-
import { t as SbbHeaderElement } from "./header.component-
|
|
5
|
+
import { t as SbbHeaderElement } from "./header.component-CxLTkL_g.js";
|
|
6
6
|
export { SbbHeaderActionCommonElementMixin, SbbHeaderButtonElement, SbbHeaderElement, SbbHeaderEnvironmentElement, SbbHeaderLinkElement };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../header.component-
|
|
1
|
+
import { t as e } from "../../header.component-BpevKe1F.js";
|
|
2
2
|
export { e as SbbHeaderElement };
|
package/header/header.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "../header.component-
|
|
1
|
+
import { t as e } from "../header.component-BpevKe1F.js";
|
|
2
2
|
e.define(), console.warn("The entrypoint '@sbb-esta/elements/header/header.js' has been deprecated.\nUse either '@sbb-esta/elements/header.js' or '@sbb-esta/elements/header.pure.js' instead.");
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as SbbHeaderElement };
|