@sbb-esta/lyne-elements 1.5.0 → 1.6.0
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/alert/alert/alert.d.ts +22 -16
- package/alert/alert/alert.d.ts.map +1 -1
- package/alert/alert-group/alert-group.d.ts +1 -1
- package/alert/alert-group/alert-group.d.ts.map +1 -1
- package/alert/alert-group.js +31 -26
- package/alert/alert.js +45 -37
- package/clock/clock.d.ts.map +1 -1
- package/clock.js +14 -14
- package/core/testing/wait-for-event.d.ts +2 -0
- package/core/testing/wait-for-event.d.ts.map +1 -0
- package/core/testing.d.ts +1 -0
- package/core/testing.d.ts.map +1 -1
- package/core/testing.js +49 -36
- package/custom-elements.json +211 -51
- package/development/alert/alert/alert.d.ts +22 -16
- package/development/alert/alert/alert.d.ts.map +1 -1
- package/development/alert/alert-group/alert-group.d.ts +1 -1
- package/development/alert/alert-group/alert-group.d.ts.map +1 -1
- package/development/alert/alert-group.js +16 -11
- package/development/alert/alert.js +65 -24
- package/development/clock/clock.d.ts.map +1 -1
- package/development/clock.js +3 -2
- package/development/core/testing/wait-for-event.d.ts +2 -0
- package/development/core/testing/wait-for-event.d.ts.map +1 -0
- package/development/core/testing.d.ts +1 -0
- package/development/core/testing.d.ts.map +1 -1
- package/development/core/testing.js +17 -1
- package/development/icon/icon.d.ts +9 -1
- package/development/icon/icon.d.ts.map +1 -1
- package/development/icon.js +16 -2
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu.js +2 -1
- package/development/navigation/navigation/navigation.d.ts.map +1 -1
- package/development/navigation/navigation.js +2 -1
- package/development/notification/notification.d.ts +4 -4
- package/development/notification.js +1 -1
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay.js +35 -17
- package/development/toggle/toggle.js +1 -1
- package/icon/icon.d.ts +9 -1
- package/icon/icon.d.ts.map +1 -1
- package/icon.js +71 -62
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +3 -3
- package/navigation/navigation/navigation.d.ts.map +1 -1
- package/navigation/navigation.js +4 -4
- package/notification/notification.d.ts +4 -4
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay.js +33 -33
- package/package.json +1 -1
- package/toggle/toggle.js +1 -1
package/development/overlay.js
CHANGED
|
@@ -73,6 +73,7 @@ const _SbbOverlayBaseElement = class _SbbOverlayBaseElement2 extends SbbNegative
|
|
|
73
73
|
this.focusHandler.disconnect();
|
|
74
74
|
this.removeInstanceFromGlobalCollection();
|
|
75
75
|
removeInertMechanism();
|
|
76
|
+
this.scrollHandler.enableScroll();
|
|
76
77
|
}
|
|
77
78
|
attachOpenOverlayEvents() {
|
|
78
79
|
this.openOverlayController = new AbortController();
|
|
@@ -170,8 +171,6 @@ const style = css`/**
|
|
|
170
171
|
);
|
|
171
172
|
--sbb-overlay-animation-easing: ease;
|
|
172
173
|
--sbb-overlay-pointer-events: none;
|
|
173
|
-
--sbb-overlay-content-transition: transform var(--sbb-overlay-animation-duration)
|
|
174
|
-
var(--sbb-overlay-animation-easing);
|
|
175
174
|
display: block;
|
|
176
175
|
position: fixed;
|
|
177
176
|
inset: var(--sbb-overlay-inset);
|
|
@@ -202,14 +201,23 @@ const style = css`/**
|
|
|
202
201
|
.sbb-overlay__container {
|
|
203
202
|
background-color: var(--sbb-overlay-background-color);
|
|
204
203
|
pointer-events: var(--sbb-overlay-pointer-events);
|
|
205
|
-
display:
|
|
204
|
+
display: none;
|
|
206
205
|
align-items: center;
|
|
207
206
|
position: fixed;
|
|
208
207
|
inset: var(--sbb-overlay-inset);
|
|
209
208
|
}
|
|
209
|
+
:host([data-state]:not([data-state=closed])) .sbb-overlay__container {
|
|
210
|
+
display: flex;
|
|
211
|
+
animation-name: open;
|
|
212
|
+
animation-duration: var(--sbb-overlay-animation-duration);
|
|
213
|
+
animation-timing-function: var(--sbb-overlay-animation-easing);
|
|
214
|
+
}
|
|
215
|
+
:host([data-state][data-state=closing]) .sbb-overlay__container {
|
|
216
|
+
pointer-events: none;
|
|
217
|
+
animation-name: close;
|
|
218
|
+
}
|
|
210
219
|
|
|
211
220
|
.sbb-overlay {
|
|
212
|
-
display: none;
|
|
213
221
|
position: absolute;
|
|
214
222
|
inset-inline: 0;
|
|
215
223
|
margin: auto;
|
|
@@ -220,14 +228,12 @@ const style = css`/**
|
|
|
220
228
|
color: var(--sbb-overlay-color);
|
|
221
229
|
}
|
|
222
230
|
:host([data-state]:not([data-state=closed])) .sbb-overlay {
|
|
223
|
-
|
|
224
|
-
animation-name: open;
|
|
231
|
+
animation-name: open-move-in;
|
|
225
232
|
animation-duration: var(--sbb-overlay-animation-duration);
|
|
226
|
-
animation-timing-function:
|
|
233
|
+
animation-timing-function: var(--sbb-overlay-animation-easing);
|
|
227
234
|
}
|
|
228
235
|
:host([data-state][data-state=closing]) .sbb-overlay {
|
|
229
|
-
|
|
230
|
-
animation-name: close;
|
|
236
|
+
animation-name: close-move-out;
|
|
231
237
|
}
|
|
232
238
|
|
|
233
239
|
.sbb-overlay__wrapper {
|
|
@@ -309,20 +315,32 @@ const style = css`/**
|
|
|
309
315
|
@keyframes open {
|
|
310
316
|
from {
|
|
311
317
|
opacity: 0;
|
|
312
|
-
transform: translateY(var(--sbb-spacing-fixed-4x));
|
|
313
318
|
}
|
|
314
319
|
to {
|
|
315
320
|
opacity: 1;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
@keyframes open-move-in {
|
|
324
|
+
from {
|
|
325
|
+
transform: translateY(var(--sbb-spacing-fixed-4x));
|
|
326
|
+
}
|
|
327
|
+
to {
|
|
316
328
|
transform: translateY(0%);
|
|
317
329
|
}
|
|
318
330
|
}
|
|
319
331
|
@keyframes close {
|
|
320
332
|
from {
|
|
321
333
|
opacity: 1;
|
|
322
|
-
transform: translateY(0%);
|
|
323
334
|
}
|
|
324
335
|
to {
|
|
325
336
|
opacity: 0;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
@keyframes close-move-out {
|
|
340
|
+
from {
|
|
341
|
+
transform: translateY(0%);
|
|
342
|
+
}
|
|
343
|
+
to {
|
|
326
344
|
transform: translateY(var(--sbb-spacing-fixed-4x));
|
|
327
345
|
}
|
|
328
346
|
}`;
|
|
@@ -429,11 +447,11 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
|
|
|
429
447
|
></${unsafeStatic(TAG_NAME)}>
|
|
430
448
|
`;
|
|
431
449
|
return html`
|
|
432
|
-
<div
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
>
|
|
450
|
+
<div
|
|
451
|
+
class="sbb-overlay__container"
|
|
452
|
+
@animationend=${(event) => this.onOverlayAnimationEnd(event)}
|
|
453
|
+
>
|
|
454
|
+
<div class="sbb-overlay">
|
|
437
455
|
<div
|
|
438
456
|
@click=${(event) => this.closeOnSbbOverlayCloseClick(event)}
|
|
439
457
|
class="sbb-overlay__wrapper"
|
|
@@ -485,4 +503,4 @@ export {
|
|
|
485
503
|
SbbOverlayElement,
|
|
486
504
|
overlayRefs
|
|
487
505
|
};
|
|
488
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RDb250ZXh0LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGlhbG9nIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBhcHBseUluZXJ0TWVjaGFuaXNtLCByZW1vdmVJbmVydE1lY2hhbmlzbSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaWRDbG9zZTogRXZlbnRFbWl0dGVyPFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3ZlcmxheUJhc2VFbGVtZW50LmV2ZW50cy5kaWRDbG9zZSxcbiAgKTtcblxuICAvLyBUaGUgbGFzdCBlbGVtZW50IHdoaWNoIGhhZCBmb2N1cyBiZWZvcmUgdGhlIGNvbXBvbmVudCB3YXMgb3BlbmVkLlxuICBwcm90ZWN0ZWQgbGFzdEZvY3VzZWRFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q2xvc2VFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIG9wZW5PdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGZvY3VzSGFuZGxlciA9IG5ldyBTYmJGb2N1c0hhbmRsZXIoKTtcbiAgcHJvdGVjdGVkIHNjcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgcmV0dXJuVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhcmlhTGl2ZVJlZiE6IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldE92ZXJsYXlGb2N1cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KGV2ZW50RGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZiA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8U2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ+KCdzYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuXG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIHJlbW92ZUluZXJ0TWVjaGFuaXNtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gUmVtb3ZlIG92ZXJsYXkgbGFiZWwgYXMgc29vbiBhcyBpdCBpcyBub3QgbmVlZGVkIGFueSBtb3JlIHRvIHByZXZlbnQgYWNjZXNzaW5nIGl0IHdpdGggYnJvd3NlIG1vZGUuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTtcbiAgICAgICAgdGhpcy5vbktleWRvd25FdmVudChldmVudCk7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBvdmVybGF5UmVmc1tvdmVybGF5UmVmcy5sZW5ndGggLSAxXS5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIG92ZXJsYXlSZWZzLnNwbGljZShvdmVybGF5UmVmcy5pbmRleE9mKHRoaXMgYXMgU2JiT3ZlcmxheUJhc2VFbGVtZW50KSwgMSk7XG4gIH1cblxuICAvLyBDbG9zZSB0aGUgY29tcG9uZW50IG9uIGNsaWNrIG9mIGFueSBlbGVtZW50IHRoYXQgaGFzIHRoZSBgY2xvc2VBdHRyaWJ1dGVgIGF0dHJpYnV0ZS5cbiAgcHJvdGVjdGVkIGNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5Q2xvc2VFbGVtZW50ID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudClcbiAgICAgIC5maW5kKFxuICAgICAgICAodGFyZ2V0KSA9PiB0YXJnZXQuaGFzQXR0cmlidXRlKHRoaXMuY2xvc2VBdHRyaWJ1dGUpICYmICF0YXJnZXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpLFxuICAgICAgKTtcblxuICAgIGlmICghb3ZlcmxheUNsb3NlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSB0YXJnZXQgaXMgYSBzdWJtaXNzaW9uIGVsZW1lbnQgd2l0aGluIGEgZm9ybSBhbmQgcmV0dXJuIHRoZSBmb3JtLCBpZiBwcmVzZW50XG4gICAgY29uc3QgY2xvc2VzdEZvcm0gPVxuICAgICAgb3ZlcmxheUNsb3NlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCdcbiAgICAgICAgPyAoaG9zdENvbnRleHQoJ2Zvcm0nLCBvdmVybGF5Q2xvc2VFbGVtZW50KSBhcyBIVE1MRm9ybUVsZW1lbnQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIG92ZXJsYXlSZWZzW292ZXJsYXlSZWZzLmxlbmd0aCAtIDFdLmNsb3NlKGNsb3Nlc3RGb3JtLCBvdmVybGF5Q2xvc2VFbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEFyaWFMaXZlUmVmQ29udGVudChsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYXJpYUxpdmVSZWZUb2dnbGUgPSAhdGhpcy5hcmlhTGl2ZVJlZlRvZ2dsZTtcblxuICAgIC8vIElmIHRoZSB0ZXh0IGNvbnRlbnQgcmVtYWlucyB0aGUgc2FtZSwgb24gVm9pY2VPdmVyIHRoZSBhcmlhLWxpdmUgcmVnaW9uIGlzIG5vdCBhbm5vdW5jZWQgYSBzZWNvbmQgdGltZS5cbiAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHJlYWRpbmcgb24gZXZlcnkgb3BlbmluZywgd2UgdG9nZ2xlIGFuIGludmlzaWJsZSBzcGFjZS5cbiAgICB0aGlzLmFyaWFMaXZlUmVmLnRleHRDb250ZW50ID0gYCR7aTE4bkRpYWxvZ1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSR7XG4gICAgICBsYWJlbCA/IGAsICR7bGFiZWx9YCA6ICcnXG4gICAgfSR7dGhpcy5hcmlhTGl2ZVJlZlRvZ2dsZSA/ICfCoCcgOiAnJ31gO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCwgdW5zYWZlU3RhdGljIH0gZnJvbSAnbGl0L3N0YXRpYy1odG1sLmpzJztcblxuaW1wb3J0IHsgZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50LCBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzIH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2NvcmUvZXZlbnRpbmcuanMnO1xuaW1wb3J0IHsgaTE4bkNsb3NlRGlhbG9nLCBpMThuR29CYWNrIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IGFwcGx5SW5lcnRNZWNoYW5pc20sIHJlbW92ZUluZXJ0TWVjaGFuaXNtIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LmpzJztcblxuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4vb3ZlcmxheS1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3ZlcmxheS5zY3NzP2xpdCZpbmxpbmUnO1xuaW1wb3J0ICcuLi9idXR0b24vc2Vjb25kYXJ5LWJ1dHRvbi5qcyc7XG5pbXBvcnQgJy4uL2J1dHRvbi90cmFuc3BhcmVudC1idXR0b24uanMnO1xuaW1wb3J0ICcuLi9jb250YWluZXIuanMnO1xuaW1wb3J0ICcuLi9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGludGVyYWN0aXZlIG92ZXJsYXkgZWxlbWVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgYSBjb250ZW50IGZvciB0aGUgb3ZlcmxheS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHM+fSBkaWRDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIGlzIGNsb3NlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHJlcXVlc3RCYWNrQWN0aW9uIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItb3ZlcmxheS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItb3ZlcmxheScpXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheUVsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvLyBGSVhNRSB1c2luZyAuLi5zdXBlci5ldmVudHMgcmVxdWlyZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYmItZGVzaWduLXN5c3RlbXMvbHluZS1jb21wb25lbnRzL2lzc3Vlcy8yNjAwXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHdpbGxPcGVuOiAnd2lsbE9wZW4nLFxuICAgIGRpZE9wZW46ICdkaWRPcGVuJyxcbiAgICB3aWxsQ2xvc2U6ICd3aWxsQ2xvc2UnLFxuICAgIGRpZENsb3NlOiAnZGlkQ2xvc2UnLFxuICAgIGJhY2tDbGljazogJ3JlcXVlc3RCYWNrQWN0aW9uJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgb3ZlcmxheSBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBleHBhbmRlZCA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIGEgYmFjayBidXR0b24gaXMgZGlzcGxheWVkIG5leHQgdG8gdGhlIHRpdGxlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrLWJ1dHRvbicsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGJhY2tCdXR0b24gPSBmYWxzZTtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBjbG9zZSBidXR0b24gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1jbG9zZS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsOlxuICAgIHwgc3RyaW5nXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgYmFjayBidXR0b24gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1iYWNrLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUJhY2tMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1vdmVybGF5LWNsb3NlJztcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gIHByaXZhdGUgX2JhY2tDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3ZlcmxheUVsZW1lbnQuZXZlbnRzLmJhY2tDbGljayxcbiAgKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRlbnRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5fb3ZlcmxheUNvbnRlbnRFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5zYmItb3ZlcmxheV9fY29udGVudCcsXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICghdGhpcy53aWxsT3Blbi5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcblxuICAgIC8vIEFkZCB0aGlzIG92ZXJsYXkgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzIGFzIFNiYk92ZXJsYXlFbGVtZW50KTtcblxuICAgIC8vIERpc2FibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBvdmVybGF5XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIG92ZXJsYXkgdHJhbnNpdGlvbiB0byBjb21wbGV0ZS5cbiAgLy8gSW4gcmFyZSBjYXNlcywgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJvdGVjdGVkIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgICAgdGhpcy5kaWRPcGVuLmVtaXQoKTtcbiAgICAgIGFwcGx5SW5lcnRNZWNoYW5pc20odGhpcyk7XG4gICAgICB0aGlzLmF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk7XG4gICAgICB0aGlzLnNldE92ZXJsYXlGb2N1cygpO1xuICAgICAgLy8gVXNlIHRpbWVvdXQgdG8gcmVhZCBsYWJlbCBhZnRlciBmb2N1c2VkIGVsZW1lbnRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRBcmlhTGl2ZVJlZkNvbnRlbnQodGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwpKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLnRyYXAodGhpcyk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5fb3ZlcmxheUNvbnRlbnRFbGVtZW50Py5zY3JvbGxUbygwLCAwKTtcbiAgICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICAgIHJlbW92ZUluZXJ0TWVjaGFuaXNtKCk7XG4gICAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKHRoaXMubGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgICAvLyBFbmFibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBvdmVybGF5IGlmIG5vIG92ZXJsYXkgaXMgb3BlblxuICAgICAgIW92ZXJsYXlSZWZzLmxlbmd0aCAmJiB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgICB0aGlzLmRpZENsb3NlLmVtaXQoe1xuICAgICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByb3RlY3RlZCBzZXRPdmVybGF5Rm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdCEuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQsXG4gICAgICApLFxuICAgICk7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhmaXJzdEZvY3VzYWJsZSk7XG4gICAgZmlyc3RGb2N1c2FibGU/LmZvY3VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBUQUdfTkFNRSA9IHRoaXMubmVnYXRpdmUgPyAnc2JiLXRyYW5zcGFyZW50LWJ1dHRvbicgOiAnc2JiLXNlY29uZGFyeS1idXR0b24nO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG4gICAgY29uc3QgY2xvc2VCdXR0b24gPSBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX1cbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VEaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgaWNvbi1uYW1lPVwiY3Jvc3Mtc21hbGxcIlxuICAgICAgICBzYmItb3ZlcmxheS1jbG9zZVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuXG4gICAgY29uc3QgYmFja0J1dHRvbiA9IGh0bWxgXG4gICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfVxuICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19iYWNrXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUJhY2tMYWJlbCB8fCBpMThuR29CYWNrW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNoZXZyb24tc21hbGwtbGVmdC1zbWFsbFwiXG4gICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX2JhY2tDbGljay5lbWl0KCl9XG4gICAgICA+PC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9PlxuICAgIGA7XG4gICAgLyogZXNsaW50LWVuYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLm9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudCl9XG4gICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBAY2xpY2s9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLmNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudCl9XG4gICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X193cmFwcGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW92ZXJsYXlfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAke3RoaXMuYmFja0J1dHRvbiA/IGJhY2tCdXR0b24gOiBub3RoaW5nfSAke2Nsb3NlQnV0dG9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW92ZXJsYXlfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHNiYi1jb250YWluZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgP2V4cGFuZGVkPSR7dGhpcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgICBjb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgICAgPC9zYmItY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW92ZXJsYXknOiBTYmJPdmVybGF5RWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9TYmJPdmVybGF5QmFzZUVsZW1lbnQiLCJfX2RlY29yYXRlQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVPLE1BQU0sY0FBdUMsQ0FBQztBQUU5QyxNQUFlLHlCQUFmLE1BQWVBLGdDQUE4QixpQkFBaUIsdUJBQXVCLEVBQUU7QUFBQSxFQUF2RixjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFLTCxTQUFtQixXQUFzRCxJQUFJO0FBQUEsTUFDM0U7QUFBQSxNQUNBQSx3QkFBc0IsT0FBTztBQUFBLElBQUE7QUFRckIsU0FBQSxlQUFlLElBQUk7QUFDbkIsU0FBQSxnQkFBZ0IsSUFBSTtBQUU5QixTQUFVLG9CQUFvQjtBQUVwQixTQUFBLFdBQVcsSUFBSSxzQkFBc0IsSUFBSTtBQUFBLEVBQUE7QUFBQTtBQUFBLEVBTzVDLE1BQU0sUUFBYyxRQUEyQjtBQUNoRCxRQUFBLEtBQUssVUFBVSxVQUFVO0FBQzNCO0FBQUEsSUFDRjtBQUVBLFNBQUssY0FBYztBQUNuQixTQUFLLHNCQUFzQjtBQUMzQixVQUFNLFlBQXlDO0FBQUEsTUFDN0MsYUFBYSxLQUFLO0FBQUEsTUFDbEIsYUFBYSxLQUFLO0FBQUEsSUFBQTtBQUdwQixRQUFJLENBQUMsS0FBSyxVQUFVLEtBQUssU0FBUyxHQUFHO0FBQ25DO0FBQUEsSUFDRjtBQUNBLFNBQUssUUFBUTtBQUNiLFNBQUsseUJBQXlCO0FBQUEsRUFDaEM7QUFBQSxFQUVnQixvQkFBMEI7O0FBQ3hDLFVBQU0sa0JBQWtCO0FBQ3hCLGVBQUssc0JBQUwsbUJBQXdCO0FBQ25CLFNBQUEsb0JBQW9CLElBQUk7QUFFekIsUUFBQSxLQUFLLFVBQVUsVUFBVTtBQUMzQiwwQkFBb0IsSUFBSTtBQUFBLElBQzFCO0FBQUEsRUFDRjtBQUFBLEVBRW1CLGFBQWEsbUJBQStDO0FBQzdFLFNBQUssY0FDSCxLQUFLLFdBQVksY0FBMEMsd0JBQXdCO0FBRXJGLFVBQU0sYUFBYSxpQkFBaUI7QUFBQSxFQUN0QztBQUFBLEVBRWdCLHVCQUE2Qjs7QUFDM0MsVUFBTSxxQkFBcUI7QUFDM0IsZUFBSyxzQkFBTCxtQkFBd0I7QUFDeEIsZUFBSywwQkFBTCxtQkFBNEI7QUFDNUIsU0FBSyxhQUFhO0FBQ2xCLFNBQUssbUNBQW1DO0FBQ25CO0VBQ3ZCO0FBQUEsRUFFVSwwQkFBZ0M7QUFDbkMsU0FBQSx3QkFBd0IsSUFBSTtBQUUxQixXQUFBO0FBQUEsTUFDTDtBQUFBLE1BQ0EsQ0FBQyxVQUF5QjtBQUN4QixhQUFLLHlCQUF5QjtBQUM5QixhQUFLLGVBQWUsS0FBSztBQUFBLE1BQzNCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLE1BQ3JDO0FBQUEsSUFBQTtBQUVGLFdBQU8saUJBQWlCLFNBQVMsTUFBTSxLQUFLLDRCQUE0QjtBQUFBLE1BQ3RFLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxJQUFBLENBQ3BDO0FBQUEsRUFDSDtBQUFBLEVBRVUsZUFBZSxPQUE0QjtBQUMvQyxRQUFBLEtBQUssVUFBVSxVQUFVO0FBQzNCO0FBQUEsSUFDRjtBQUVJLFFBQUEsTUFBTSxRQUFRLFVBQVU7QUFDMUIsa0JBQVksWUFBWSxTQUFTLENBQUMsRUFBRSxNQUFNO0FBQzFDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUVVLHFDQUEyQztBQUNuRCxnQkFBWSxPQUFPLFlBQVksUUFBUSxJQUE2QixHQUFHLENBQUM7QUFBQSxFQUMxRTtBQUFBO0FBQUEsRUFHVSw0QkFBNEIsT0FBb0I7QUFDbEQsVUFBQSxzQkFBc0IsTUFDekIsYUFBQSxFQUNBLE9BQU8sQ0FBQyxNQUF3QixhQUFhLE9BQU8sV0FBVyxFQUMvRDtBQUFBLE1BQ0MsQ0FBQyxXQUFXLE9BQU8sYUFBYSxLQUFLLGNBQWMsS0FBSyxDQUFDLE9BQU8sYUFBYSxVQUFVO0FBQUEsSUFBQTtBQUczRixRQUFJLENBQUMscUJBQXFCO0FBQ3hCO0FBQUEsSUFDRjtBQUdNLFVBQUEsY0FDSixvQkFBb0IsYUFBYSxNQUFNLE1BQU0sV0FDeEMsWUFBWSxRQUFRLG1CQUFtQixJQUN4QztBQUNOLGdCQUFZLFlBQVksU0FBUyxDQUFDLEVBQUUsTUFBTSxhQUFhLG1CQUFtQjtBQUFBLEVBQzVFO0FBQUEsRUFFVSwyQkFBaUM7QUFDekMsU0FBSyxZQUFZLGNBQWM7QUFBQSxFQUNqQztBQUFBLEVBRVUsc0JBQXNCLE9BQXNCO0FBQy9DLFNBQUEsb0JBQW9CLENBQUMsS0FBSztBQUkvQixTQUFLLFlBQVksY0FBYyxHQUFHLFdBQVcsS0FBSyxTQUFTLE9BQU8sQ0FBQyxHQUNqRSxRQUFRLEtBQUssS0FBSyxLQUFLLEVBQ3pCLEdBQUcsS0FBSyxvQkFBb0IsTUFBTSxFQUFFO0FBQUEsRUFDdEM7QUFDRjtBQXpJeURDLGtCQUFBO0FBQUEsRUFBdEQsU0FBUyxFQUFFLFdBQVcsdUJBQXVCO0FBQUEsR0FGMUIsdUJBRW1DLFdBQUEsb0JBQUE7QUFGbEQsSUFBZSx3QkFBZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNjTSxJQUFBLG9CQUFOLGNBQWdDLHNCQUFzQjtBQUFBLEVBQXRELGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQWdCdUMsU0FBTyxXQUFXO0FBR1AsU0FBTyxhQUFhO0FBWTNFLFNBQVUsaUJBQXlCO0FBR25DLFNBQVEsYUFBZ0MsSUFBSTtBQUFBLE1BQzFDO0FBQUEsTUFDQSxrQkFBa0IsT0FBTztBQUFBLElBQUE7QUFFM0IsU0FBUSx5QkFBNkM7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUc5QyxPQUFhOztBQUNkLFFBQUEsS0FBSyxVQUFVLFVBQVU7QUFDM0I7QUFBQSxJQUNGO0FBQ0EsU0FBSyxxQkFBcUIsU0FBUztBQUU5QixTQUFBLDBCQUF5QixVQUFLLGVBQUwsbUJBQWlCO0FBQUEsTUFDN0M7QUFBQTtBQUdGLFFBQUksQ0FBQyxLQUFLLFNBQVMsUUFBUTtBQUN6QjtBQUFBLElBQ0Y7QUFDQSxTQUFLLFFBQVE7QUFHYixnQkFBWSxLQUFLLElBQXlCO0FBRzFDLFNBQUssY0FBYztFQUNyQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS1Usc0JBQXNCLE9BQTZCOztBQUMzRCxRQUFJLE1BQU0sa0JBQWtCLFVBQVUsS0FBSyxVQUFVLFdBQVc7QUFDOUQsV0FBSyxRQUFRO0FBQ2IsV0FBSyxRQUFRO0FBQ2IsMEJBQW9CLElBQUk7QUFDeEIsV0FBSyx3QkFBd0I7QUFDN0IsV0FBSyxnQkFBZ0I7QUFFckIsaUJBQVcsTUFBTSxLQUFLLHNCQUFzQixLQUFLLGtCQUFrQixDQUFDO0FBQy9ELFdBQUEsYUFBYSxLQUFLLElBQUk7QUFBQSxJQUFBLFdBQ2xCLE1BQU0sa0JBQWtCLFdBQVcsS0FBSyxVQUFVLFdBQVc7QUFDakUsaUJBQUEsMkJBQUEsbUJBQXdCLFNBQVMsR0FBRztBQUN6QyxXQUFLLFFBQVE7QUFDUTtBQUNyQiw2QkFBdUIsS0FBSyxrQkFBa0I7QUFFOUMsaUJBQUssdUJBQUwsbUJBQXlCO0FBQ3pCLGlCQUFLLDBCQUFMLG1CQUE0QjtBQUM1QixXQUFLLGFBQWE7QUFDbEIsV0FBSyxtQ0FBbUM7QUFFeEMsT0FBQyxZQUFZLFVBQVUsS0FBSyxjQUFjLGFBQWE7QUFDdkQsV0FBSyxTQUFTLEtBQUs7QUFBQSxRQUNqQixhQUFhLEtBQUs7QUFBQSxRQUNsQixhQUFhLEtBQUs7QUFBQSxNQUFBLENBQ25CO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQTtBQUFBLEVBR1Usa0JBQXdCO0FBQ2hDLFVBQU0saUJBQWlCO0FBQUEsTUFDckIsTUFBTSxLQUFLLEtBQUssV0FBWSxRQUFRLEVBQUU7QUFBQSxRQUNwQyxDQUFDLE1BQXdCLGFBQWEsT0FBTztBQUFBLE1BQy9DO0FBQUEsSUFBQTtBQUVGLDJCQUF1QixjQUFjO0FBQ3JDLHFEQUFnQjtBQUFBLEVBQ2xCO0FBQUEsRUFFbUIsU0FBeUI7QUFDcEMsVUFBQSxXQUFXLEtBQUssV0FBVywyQkFBMkI7QUFHNUQsVUFBTSxjQUFjO0FBQUEsU0FDZixhQUFhLFFBQVEsQ0FBQztBQUFBO0FBQUEscUJBRVYsS0FBSywyQkFBMkIsZ0JBQWdCLEtBQUssU0FBUyxPQUFPLENBQUM7QUFBQSxvQkFDdkUsS0FBSyxRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUt0QixhQUFhLFFBQVEsQ0FBQztBQUFBO0FBRzdCLFVBQU0sYUFBYTtBQUFBLFNBQ2QsYUFBYSxRQUFRLENBQUM7QUFBQTtBQUFBLHFCQUVWLEtBQUssMEJBQTBCLFdBQVcsS0FBSyxTQUFTLE9BQU8sQ0FBQztBQUFBLG9CQUNqRSxLQUFLLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFJaEIsTUFBTSxLQUFLLFdBQVcsTUFBTTtBQUFBLFdBQ2xDLGFBQWEsUUFBUSxDQUFDO0FBQUE7QUFJdEIsV0FBQTtBQUFBO0FBQUE7QUFBQSwwQkFHZSxDQUFDLFVBQTBCLEtBQUssc0JBQXNCLEtBQUssQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUlqRSxDQUFDLFVBQWlCLEtBQUssNEJBQTRCLEtBQUssQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUk5RCxLQUFLLGFBQWEsYUFBYSxPQUFPLElBQUksV0FBVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNEJBS3pDLEtBQUssUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXdkM7QUFDRjtBQW5LYSxrQkFDWSxTQUF5QjtBQURyQyxrQkFJcUIsU0FBUztBQUFBLEVBQ3ZDLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFBQSxFQUNULFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFDYjtBQU1tRCxnQkFBQTtBQUFBLEVBQWxELFNBQVMsRUFBRSxTQUFTLE1BQU0sTUFBTSxTQUFTO0FBQUEsR0FoQi9CLGtCQWdCd0MsV0FBQSxZQUFBLENBQUE7QUFHVyxnQkFBQTtBQUFBLEVBQTdELFNBQVMsRUFBRSxXQUFXLGVBQWUsTUFBTSxTQUFTO0FBQUEsR0FuQjFDLGtCQW1CbUQsV0FBQSxjQUFBLENBQUE7QUFHRCxnQkFBQTtBQUFBLEVBQTVELFNBQVMsRUFBRSxXQUFXLDZCQUE2QjtBQUFBLEdBdEJ6QyxrQkFzQmtELFdBQUEsMkJBQUEsQ0FBQTtBQUtELGdCQUFBO0FBQUEsRUFBM0QsU0FBUyxFQUFFLFdBQVcsNEJBQTRCO0FBQUEsR0EzQnhDLGtCQTJCaUQsV0FBQSwwQkFBQSxDQUFBO0FBM0JqRCxvQkFBTixnQkFBQTtBQUFBLEVBRE4sY0FBYyxhQUFhO0FBQUEsR0FDZixpQkFBQTsifQ==
|
|
506
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RDb250ZXh0LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGlhbG9nIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBhcHBseUluZXJ0TWVjaGFuaXNtLCByZW1vdmVJbmVydE1lY2hhbmlzbSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaWRDbG9zZTogRXZlbnRFbWl0dGVyPFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3ZlcmxheUJhc2VFbGVtZW50LmV2ZW50cy5kaWRDbG9zZSxcbiAgKTtcblxuICAvLyBUaGUgbGFzdCBlbGVtZW50IHdoaWNoIGhhZCBmb2N1cyBiZWZvcmUgdGhlIGNvbXBvbmVudCB3YXMgb3BlbmVkLlxuICBwcm90ZWN0ZWQgbGFzdEZvY3VzZWRFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q2xvc2VFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIG9wZW5PdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGZvY3VzSGFuZGxlciA9IG5ldyBTYmJGb2N1c0hhbmRsZXIoKTtcbiAgcHJvdGVjdGVkIHNjcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgcmV0dXJuVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhcmlhTGl2ZVJlZiE6IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldE92ZXJsYXlGb2N1cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KGV2ZW50RGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZiA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8U2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ+KCdzYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuXG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIHJlbW92ZUluZXJ0TWVjaGFuaXNtKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFJlbW92ZSBvdmVybGF5IGxhYmVsIGFzIHNvb24gYXMgaXQgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSB0byBwcmV2ZW50IGFjY2Vzc2luZyBpdCB3aXRoIGJyb3dzZSBtb2RlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG4gICAgICAgIHRoaXMub25LZXlkb3duRXZlbnQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmcy5zcGxpY2Uob3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCksIDEpO1xuICB9XG5cbiAgLy8gQ2xvc2UgdGhlIGNvbXBvbmVudCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgYGNsb3NlQXR0cmlidXRlYCBhdHRyaWJ1dGUuXG4gIHByb3RlY3RlZCBjbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheUNsb3NlRWxlbWVudCA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuZmluZChcbiAgICAgICAgKHRhcmdldCkgPT4gdGFyZ2V0Lmhhc0F0dHJpYnV0ZSh0aGlzLmNsb3NlQXR0cmlidXRlKSAmJiAhdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSxcbiAgICAgICk7XG5cbiAgICBpZiAoIW92ZXJsYXlDbG9zZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IGlzIGEgc3VibWlzc2lvbiBlbGVtZW50IHdpdGhpbiBhIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybSwgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID1cbiAgICAgIG92ZXJsYXlDbG9zZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnXG4gICAgICAgID8gKGhvc3RDb250ZXh0KCdmb3JtJywgb3ZlcmxheUNsb3NlRWxlbWVudCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBvdmVybGF5UmVmc1tvdmVybGF5UmVmcy5sZW5ndGggLSAxXS5jbG9zZShjbG9zZXN0Rm9ybSwgb3ZlcmxheUNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlID0gIXRoaXMuYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9IGAke2kxOG5EaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0ke1xuICAgICAgbGFiZWwgPyBgLCAke2xhYmVsfWAgOiAnJ1xuICAgIH0ke3RoaXMuYXJpYUxpdmVSZWZUb2dnbGUgPyAnwqAnIDogJyd9YDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIHVuc2FmZVN0YXRpYyB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DbG9zZURpYWxvZywgaTE4bkdvQmFjayB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBhcHBseUluZXJ0TWVjaGFuaXNtLCByZW1vdmVJbmVydE1lY2hhbmlzbSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5cbmltcG9ydCB7IG92ZXJsYXlSZWZzLCBTYmJPdmVybGF5QmFzZUVsZW1lbnQgfSBmcm9tICcuL292ZXJsYXktYmFzZS1lbGVtZW50LmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL292ZXJsYXkuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCAnLi4vYnV0dG9uL3NlY29uZGFyeS1idXR0b24uanMnO1xuaW1wb3J0ICcuLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vY29udGFpbmVyLmpzJztcbmltcG9ydCAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnRlcmFjdGl2ZSBvdmVybGF5IGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgdGhlIG92ZXJsYXkuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBpcyBjbG9zZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW92ZXJsYXknKVxuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlFbGVtZW50IGV4dGVuZHMgU2JiT3ZlcmxheUJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLy8gRklYTUUgdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB3aWxsT3BlbjogJ3dpbGxPcGVuJyxcbiAgICBkaWRPcGVuOiAnZGlkT3BlbicsXG4gICAgd2lsbENsb3NlOiAnd2lsbENsb3NlJyxcbiAgICBkaWRDbG9zZTogJ2RpZENsb3NlJyxcbiAgICBiYWNrQ2xpY2s6ICdyZXF1ZXN0QmFja0FjdGlvbicsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIG92ZXJsYXkgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBhIGJhY2sgYnV0dG9uIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGJhY2sgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItb3ZlcmxheS1jbG9zZSc7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk92ZXJsYXlFbGVtZW50LmV2ZW50cy5iYWNrQ2xpY2ssXG4gICk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3BlbnMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2JiLW92ZXJsYXlfX2NvbnRlbnQnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBvdmVybGF5IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIG92ZXJsYXlSZWZzLnB1c2godGhpcyBhcyBTYmJPdmVybGF5RWxlbWVudCk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gIH1cblxuICAvLyBXYWl0IGZvciBvdmVybGF5IHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuICAgICAgdGhpcy5zZXRPdmVybGF5Rm9jdXMoKTtcbiAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0QXJpYUxpdmVSZWZDb250ZW50KHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsKSk7XG4gICAgICB0aGlzLmZvY3VzSGFuZGxlci50cmFwKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheSBpZiBubyBvdmVybGF5IGlzIG9wZW5cbiAgICAgICFvdmVybGF5UmVmcy5sZW5ndGggJiYgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KHtcbiAgICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcm90ZWN0ZWQgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QhLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgIChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGUpO1xuICAgIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2Nsb3NlXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWwgfHwgaTE4bkNsb3NlRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW92ZXJsYXktY2xvc2VcbiAgICAgID48LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX0+XG4gICAgYDtcblxuICAgIGNvbnN0IGJhY2tCdXR0b24gPSBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX1cbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fYmFja1wiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlCYWNrTGFiZWwgfHwgaTE4bkdvQmFja1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9iYWNrQ2xpY2suZW1pdCgpfVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGFpbmVyXCJcbiAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMub25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmJhY2tCdXR0b24gPyBiYWNrQnV0dG9uIDogbm90aGluZ30gJHtjbG9zZUJ1dHRvbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxzYmItY29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgID9leHBhbmRlZD0ke3RoaXMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICAgIDwvc2JiLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vdmVybGF5JzogU2JiT3ZlcmxheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfU2JiT3ZlcmxheUJhc2VFbGVtZW50IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlTyxNQUFNLGNBQXVDLENBQUM7QUFFOUMsTUFBZSx5QkFBZixNQUFlQSxnQ0FBOEIsaUJBQWlCLHVCQUF1QixFQUFFO0FBQUEsRUFBdkYsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBS0wsU0FBbUIsV0FBc0QsSUFBSTtBQUFBLE1BQzNFO0FBQUEsTUFDQUEsd0JBQXNCLE9BQU87QUFBQSxJQUFBO0FBUXJCLFNBQUEsZUFBZSxJQUFJO0FBQ25CLFNBQUEsZ0JBQWdCLElBQUk7QUFFOUIsU0FBVSxvQkFBb0I7QUFFcEIsU0FBQSxXQUFXLElBQUksc0JBQXNCLElBQUk7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQU81QyxNQUFNLFFBQWMsUUFBMkI7QUFDaEQsUUFBQSxLQUFLLFVBQVUsVUFBVTtBQUMzQjtBQUFBLElBQ0Y7QUFFQSxTQUFLLGNBQWM7QUFDbkIsU0FBSyxzQkFBc0I7QUFDM0IsVUFBTSxZQUF5QztBQUFBLE1BQzdDLGFBQWEsS0FBSztBQUFBLE1BQ2xCLGFBQWEsS0FBSztBQUFBLElBQUE7QUFHcEIsUUFBSSxDQUFDLEtBQUssVUFBVSxL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
|
package/icon/icon.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PropertyValues } from 'lit';
|
|
1
|
+
import { PropertyValues, TemplateResult } from 'lit';
|
|
2
2
|
import { SbbIconBase } from './icon-base.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -12,9 +12,17 @@ export declare class SbbIconElement extends SbbIconBase {
|
|
|
12
12
|
*/
|
|
13
13
|
name: string;
|
|
14
14
|
private _defaultAriaLabel;
|
|
15
|
+
/**
|
|
16
|
+
* The sbb-angular library has a sbb-icon component as well. In order to provide
|
|
17
|
+
* compatibility with it (as some icons are used internally inside the other sbb-angular
|
|
18
|
+
* components) we need to check whether the attribute svgicon is used.
|
|
19
|
+
*/
|
|
20
|
+
private _sbbAngularCompatibility;
|
|
15
21
|
protected fetchSvgIcon(namespace: string, name: string): Promise<string>;
|
|
16
22
|
protected willUpdate(changedProperties: PropertyValues<this>): void;
|
|
23
|
+
attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
|
|
17
24
|
protected firstUpdated(changedProperties: PropertyValues<this>): void;
|
|
25
|
+
protected render(): TemplateResult;
|
|
18
26
|
}
|
|
19
27
|
declare global {
|
|
20
28
|
interface HTMLElementTagNameMap {
|
package/icon/icon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC7C;;;;OAIG;IACiC,IAAI,EAAG,MAAM,CAAC;IAElD,OAAO,CAAC,iBAAiB,CAAM;IAE/B;;;;OAIG;IACM,OAAO,CAAC,wBAAwB,CAAS;cAEzB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBpE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQ3D,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
|
package/icon.js
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { unsafeHTML as
|
|
4
|
-
import { until as
|
|
5
|
-
import { hostAttributes as
|
|
6
|
-
import { readConfig as
|
|
7
|
-
const
|
|
1
|
+
import { isServer as y, css as w, LitElement as N, html as c, nothing as m } from "lit";
|
|
2
|
+
import { state as b, property as h, customElement as A } from "lit/decorators.js";
|
|
3
|
+
import { unsafeHTML as C } from "lit/directives/unsafe-html.js";
|
|
4
|
+
import { until as I } from "lit/directives/until.js";
|
|
5
|
+
import { hostAttributes as $ } from "./core/decorators.js";
|
|
6
|
+
import { readConfig as S } from "./core/config.js";
|
|
7
|
+
const L = (t) => typeof t == "string", _ = (t) => {
|
|
8
8
|
if (t.nodeType === 1) {
|
|
9
9
|
if (t.nodeName.toLowerCase() === "script")
|
|
10
10
|
return !1;
|
|
11
11
|
for (let e = 0; e < t.attributes.length; e++) {
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
12
|
+
const i = t.attributes[e].name;
|
|
13
|
+
if (L(i) && i.toLowerCase().indexOf("on") === 0)
|
|
14
14
|
return !1;
|
|
15
15
|
}
|
|
16
16
|
for (let e = 0; e < t.childNodes.length; e++)
|
|
17
|
-
if (!
|
|
17
|
+
if (!_(t.childNodes[e]))
|
|
18
18
|
return !1;
|
|
19
19
|
}
|
|
20
20
|
return !0;
|
|
21
|
-
}, E = (t, e = !0,
|
|
21
|
+
}, E = (t, e = !0, i = !1) => {
|
|
22
22
|
const r = document.createElement("div");
|
|
23
23
|
r.innerHTML = t;
|
|
24
|
-
for (let
|
|
25
|
-
r.childNodes[
|
|
24
|
+
for (let o = r.childNodes.length - 1; o >= 0; o--)
|
|
25
|
+
r.childNodes[o].nodeName.toLowerCase() !== "svg" && r.removeChild(r.childNodes[o]);
|
|
26
26
|
const s = r.firstElementChild;
|
|
27
|
-
return s && s.nodeName.toLowerCase() === "svg" && (
|
|
28
|
-
},
|
|
29
|
-
var
|
|
30
|
-
const r =
|
|
27
|
+
return s && s.nodeName.toLowerCase() === "svg" && (i && !s.classList.contains("color-immutable") && s.classList.add("color-immutable"), e === !1 || _(s)) ? r.innerHTML : "";
|
|
28
|
+
}, g = "https://icons.app.sbb.ch/", P = (/* @__PURE__ */ new Map()).set("default", `${g}icons/`).set("picto", `${g}picto/`), v = /* @__PURE__ */ new Map(), O = (t, e, i) => {
|
|
29
|
+
var f;
|
|
30
|
+
const r = S().icon ?? {}, s = ((f = r.namespaces) == null ? void 0 : f.get(t)) ?? P.get(t);
|
|
31
31
|
if (s == null)
|
|
32
32
|
throw Error(
|
|
33
33
|
`Unable to find the namespace "${t}". Please register your custom namespace.`
|
|
34
34
|
);
|
|
35
|
-
const
|
|
36
|
-
let a =
|
|
35
|
+
const o = `${s}${e}.svg`;
|
|
36
|
+
let a = v.get(o);
|
|
37
37
|
if (!a)
|
|
38
38
|
if (typeof fetch < "u" && !y)
|
|
39
39
|
a = (r.interceptor ?? ((l) => l.request()))({
|
|
40
40
|
namespace: t,
|
|
41
41
|
name: e,
|
|
42
|
-
url:
|
|
43
|
-
request: () => fetch(
|
|
42
|
+
url: o,
|
|
43
|
+
request: () => fetch(o).then(async (l) => {
|
|
44
44
|
if (!l.ok)
|
|
45
45
|
throw new Error("Failed to load icon " + t + ":" + e);
|
|
46
|
-
return E(await l.text(),
|
|
46
|
+
return E(await l.text(), i);
|
|
47
47
|
}).catch((l) => {
|
|
48
48
|
throw Error(l);
|
|
49
49
|
})
|
|
50
|
-
}),
|
|
50
|
+
}), v.set(o, a);
|
|
51
51
|
else
|
|
52
52
|
return Promise.resolve("");
|
|
53
53
|
return a;
|
|
54
|
-
}, x =
|
|
55
|
-
var z = Object.defineProperty, M = Object.getOwnPropertyDescriptor,
|
|
56
|
-
for (var s = r > 1 ? void 0 : r ? M(e,
|
|
57
|
-
(a = t[
|
|
58
|
-
return r && s && z(e,
|
|
54
|
+
}, x = w`*,:before,:after{box-sizing:border-box}:host{display:inline-block;line-height:0;-webkit-tap-highlight-color:transparent}:host([data-empty]){--sbb-icon-default-dimension: 0}:host([data-empty][data-namespace=default][name$=-small]){--sbb-icon-default-dimension: var(--sbb-size-icon-ui-small)}:host([data-empty][data-namespace=default][name$=-medium]){--sbb-icon-default-dimension: var(--sbb-size-icon-ui-medium)}:host([data-empty][data-namespace=default][name$=-large]){--sbb-icon-default-dimension: var(--sbb-size-icon-ui-large)}svg{width:var(--sbb-icon-svg-width, var(--sbb-icon-default-dimension));height:var(--sbb-icon-svg-height, var(--sbb-icon-default-dimension));stroke:var(--sbb-icon-svg-stroke-color);stroke-width:var(--sbb-icon-svg-stroke-width)}svg:not(.color-immutable) [fill]:not([fill=none]){fill:currentcolor}svg:not(.color-immutable) [stroke]:not([stroke=none]){stroke:currentcolor}svg:not(.color-immutable)>:where(path,polygon,polyline):where(:not([stroke]):not([fill])),svg:not(.color-immutable) :where(:not([stroke]):not([fill])) :where(path,polygon,polyline):where(:not([stroke]):not([fill])){fill:currentcolor}`;
|
|
55
|
+
var z = Object.defineProperty, M = Object.getOwnPropertyDescriptor, d = (t, e, i, r) => {
|
|
56
|
+
for (var s = r > 1 ? void 0 : r ? M(e, i) : e, o = t.length - 1, a; o >= 0; o--)
|
|
57
|
+
(a = t[o]) && (s = (r ? a(e, i, s) : a(s)) || s);
|
|
58
|
+
return r && s && z(e, i, s), s;
|
|
59
59
|
};
|
|
60
|
-
let n = class extends
|
|
60
|
+
let n = class extends N {
|
|
61
61
|
constructor() {
|
|
62
62
|
super(...arguments), this._svgNamespace = n._defaultNamespace, this.noSanitize = !1;
|
|
63
63
|
}
|
|
64
64
|
async loadSvgIcon(t) {
|
|
65
65
|
if (!t)
|
|
66
66
|
return;
|
|
67
|
-
const [e,
|
|
67
|
+
const [e, i] = this._splitIconName(t);
|
|
68
68
|
this._svgNamespace = e, this.setAttribute("data-namespace", this._svgNamespace);
|
|
69
|
-
const r = this.fetchSvgIcon(this._svgNamespace,
|
|
70
|
-
this._svgIcon = r.then((s) =>
|
|
69
|
+
const r = this.fetchSvgIcon(this._svgNamespace, i);
|
|
70
|
+
this._svgIcon = r.then((s) => C(s));
|
|
71
71
|
try {
|
|
72
72
|
this.toggleAttribute("data-empty", !await r);
|
|
73
73
|
} catch {
|
|
@@ -95,7 +95,7 @@ let n = class extends I {
|
|
|
95
95
|
}
|
|
96
96
|
render() {
|
|
97
97
|
return c`<span class="sbb-icon-inner"
|
|
98
|
-
>${
|
|
98
|
+
>${I(
|
|
99
99
|
this._svgIcon,
|
|
100
100
|
// To reserve space, we need an empty svg to apply dimension to.
|
|
101
101
|
c`<svg width="0" height="0"></svg>`
|
|
@@ -105,29 +105,29 @@ let n = class extends I {
|
|
|
105
105
|
};
|
|
106
106
|
n.styles = x;
|
|
107
107
|
n._defaultNamespace = "default";
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
d([
|
|
109
|
+
b()
|
|
110
110
|
], n.prototype, "_svgNamespace", 2);
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
d([
|
|
112
|
+
b()
|
|
113
113
|
], n.prototype, "_svgIcon", 2);
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
d([
|
|
115
|
+
h({ attribute: "no-sanitize", type: Boolean })
|
|
116
116
|
], n.prototype, "noSanitize", 2);
|
|
117
|
-
n =
|
|
118
|
-
|
|
117
|
+
n = d([
|
|
118
|
+
$({
|
|
119
119
|
"data-namespace": n._defaultNamespace,
|
|
120
120
|
"data-empty": ""
|
|
121
121
|
})
|
|
122
122
|
], n);
|
|
123
|
-
var U = Object.defineProperty, j = Object.getOwnPropertyDescriptor,
|
|
124
|
-
for (var s = r > 1 ? void 0 : r ? j(e,
|
|
125
|
-
(a = t[
|
|
126
|
-
return r && s && U(e,
|
|
123
|
+
var U = Object.defineProperty, j = Object.getOwnPropertyDescriptor, p = (t, e, i, r) => {
|
|
124
|
+
for (var s = r > 1 ? void 0 : r ? j(e, i) : e, o = t.length - 1, a; o >= 0; o--)
|
|
125
|
+
(a = t[o]) && (s = (r ? a(e, i, s) : a(s)) || s);
|
|
126
|
+
return r && s && U(e, i, s), s;
|
|
127
127
|
};
|
|
128
|
-
let
|
|
128
|
+
let u = class extends n {
|
|
129
129
|
constructor() {
|
|
130
|
-
super(...arguments), this._defaultAriaLabel = "";
|
|
130
|
+
super(...arguments), this._defaultAriaLabel = "", this._sbbAngularCompatibility = !1;
|
|
131
131
|
}
|
|
132
132
|
async fetchSvgIcon(t, e) {
|
|
133
133
|
return this.getAttribute("aria-label") === this._defaultAriaLabel && this.removeAttribute("aria-label"), this._defaultAriaLabel = `Icon ${e.replace(/-/g, " ")}`, this.getAttribute("aria-hidden") === "false" && !this.hasAttribute("aria-label") && e && this.setAttribute("aria-label", this._defaultAriaLabel), super.fetchSvgIcon(t, e);
|
|
@@ -135,40 +135,49 @@ let d = class extends n {
|
|
|
135
135
|
willUpdate(t) {
|
|
136
136
|
super.willUpdate(t), t.has("name") && this.loadSvgIcon(this.name);
|
|
137
137
|
}
|
|
138
|
+
attributeChangedCallback(t, e, i) {
|
|
139
|
+
t === "svgicon" ? this._sbbAngularCompatibility = !!i : super.attributeChangedCallback(t, e, i);
|
|
140
|
+
}
|
|
138
141
|
firstUpdated(t) {
|
|
139
142
|
super.firstUpdated(t), this.hasAttribute("aria-hidden") || this.setAttribute("aria-hidden", "true");
|
|
140
143
|
}
|
|
144
|
+
render() {
|
|
145
|
+
return this._sbbAngularCompatibility ? c`<slot></slot>` : super.render();
|
|
146
|
+
}
|
|
141
147
|
};
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
],
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
],
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
p([
|
|
149
|
+
h({ reflect: !0 })
|
|
150
|
+
], u.prototype, "name", 2);
|
|
151
|
+
p([
|
|
152
|
+
b()
|
|
153
|
+
], u.prototype, "_sbbAngularCompatibility", 2);
|
|
154
|
+
u = p([
|
|
155
|
+
A("sbb-icon")
|
|
156
|
+
], u);
|
|
157
|
+
var k = Object.defineProperty, T = (t, e, i, r) => {
|
|
158
|
+
for (var s = void 0, o = t.length - 1, a; o >= 0; o--)
|
|
159
|
+
(a = t[o]) && (s = a(e, i, s) || s);
|
|
160
|
+
return s && k(e, i, s), s;
|
|
152
161
|
};
|
|
153
162
|
const J = (t) => {
|
|
154
163
|
class e extends t {
|
|
155
164
|
renderIconSlot(r) {
|
|
156
165
|
return c`
|
|
157
166
|
<slot name="icon">
|
|
158
|
-
${this.iconName ? c`<sbb-icon name=${this.iconName} class=${r ||
|
|
167
|
+
${this.iconName ? c`<sbb-icon name=${this.iconName} class=${r || m}></sbb-icon>` : m}
|
|
159
168
|
</slot>
|
|
160
169
|
`;
|
|
161
170
|
}
|
|
162
171
|
}
|
|
163
|
-
return
|
|
164
|
-
|
|
172
|
+
return T([
|
|
173
|
+
h({ attribute: "icon-name", reflect: !0 })
|
|
165
174
|
], e.prototype, "iconName"), e;
|
|
166
175
|
};
|
|
167
176
|
export {
|
|
168
177
|
n as SbbIconBase,
|
|
169
|
-
|
|
178
|
+
u as SbbIconElement,
|
|
170
179
|
J as SbbIconNameMixin,
|
|
171
180
|
O as getSvgContent,
|
|
172
|
-
|
|
181
|
+
_ as isValid,
|
|
173
182
|
E as validateContent
|
|
174
183
|
};
|
package/menu/menu/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../../src/elements/menu/menu/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAYtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAkB1D;;;;;;;;;;;GAWG;AACH,qBACa,cAAe,SAAQ,mBAGV;IACxB,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,mBAA4B,mBAAmB,WAAwC;IAEvF;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;;OAGG;IACyD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAE5F,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAEhD;;OAEG;IACI,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;YAsBR,eAAe;IAY7B,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;IAoBzB,oBAAoB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../../src/elements/menu/menu/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAYtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAkB1D;;;;;;;;;;;GAWG;AACH,qBACa,cAAe,SAAQ,mBAGV;IACxB,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,mBAA4B,mBAAmB,WAAwC;IAEvF;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;;OAGG;IACyD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAE5F,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAEhD;;OAEG;IACI,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;YAsBR,eAAe;IAY7B,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;IAoBzB,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,+BAA+B;IAQvC,OAAO,CAAC,oBAAoB,CAE1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAMF,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;cAyBL,MAAM,IAAI,cAAc;CAqB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
|
package/menu/menu.js
CHANGED
|
@@ -23,7 +23,7 @@ const I = 8, K = [
|
|
|
23
23
|
"SBB-LINK-BUTTON",
|
|
24
24
|
"SBB-BLOCK-LINK-BUTTON"
|
|
25
25
|
];
|
|
26
|
-
let
|
|
26
|
+
let H = 0, r = class extends N(k) {
|
|
27
27
|
constructor() {
|
|
28
28
|
super(...arguments), this.listChildLocalNames = ["sbb-menu-button", "sbb-menu-link"], this._trigger = null, this._triggerElement = null, this._isPointerDownEventOnMenu = !1, this._abort = new C(this), this._focusHandler = new f(), this._scrollHandler = new L(), this._pointerDownListener = (e) => {
|
|
29
29
|
this._isPointerDownEventOnMenu = h(this._menu, e);
|
|
@@ -95,7 +95,7 @@ let D = 0, r = class extends N(k) {
|
|
|
95
95
|
}
|
|
96
96
|
disconnectedCallback() {
|
|
97
97
|
var e, t;
|
|
98
|
-
super.disconnectedCallback(), (e = this._menuController) == null || e.abort(), (t = this._windowEventsController) == null || t.abort(), this._focusHandler.disconnect(), u();
|
|
98
|
+
super.disconnectedCallback(), (e = this._menuController) == null || e.abort(), (t = this._windowEventsController) == null || t.abort(), this._focusHandler.disconnect(), u(), this._scrollHandler.enableScroll();
|
|
99
99
|
}
|
|
100
100
|
_checkListCase(e) {
|
|
101
101
|
var t;
|
|
@@ -106,7 +106,7 @@ let D = 0, r = class extends N(k) {
|
|
|
106
106
|
// Check if the trigger is valid and attach click event listeners.
|
|
107
107
|
_configure(e) {
|
|
108
108
|
var t;
|
|
109
|
-
S(this._triggerElement), e && (this._triggerElement = O(e), this._triggerElement && (this.id = this.id || `sbb-menu-${
|
|
109
|
+
S(this._triggerElement), e && (this._triggerElement = O(e), this._triggerElement && (this.id = this.id || `sbb-menu-${H++}`, B(this._triggerElement, "menu", this.id, this.state), (t = this._menuController) == null || t.abort(), this._menuController = new AbortController(), this._triggerElement.addEventListener("click", () => this.open(), {
|
|
110
110
|
signal: this._menuController.signal
|
|
111
111
|
})));
|
|
112
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/elements/navigation/navigation/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmBtE,OAAO,oCAAoC,CAAC;;AAW5C;;;;;;;;;;;GAWG;AACH,qBAIa,oBAAqB,SAAQ,yBAAgD;IACxF,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IAC0D,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd;;OAEG;IACM,OAAO,CAAC,wBAAwB,CAA4B;IAErE,IAAW,uBAAuB,IAAI,WAAW,GAAG,IAAI,CAEvD;IAED,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,yBAAyB,CAAe;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,+BAA+B,CAAkB;IACzD,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,yBAAyB,CAAgE;IAEjG;;OAEG;IACI,IAAI,IAAI,IAAI;IAkBnB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACI,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB,CAEtB;IAIF,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAGF,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,mBAAmB;IAkBX,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/elements/navigation/navigation/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmBtE,OAAO,oCAAoC,CAAC;;AAW5C;;;;;;;;;;;GAWG;AACH,qBAIa,oBAAqB,SAAQ,yBAAgD;IACxF,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IAC0D,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd;;OAEG;IACM,OAAO,CAAC,wBAAwB,CAA4B;IAErE,IAAW,uBAAuB,IAAI,WAAW,GAAG,IAAI,CAEvD;IAED,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,yBAAyB,CAAe;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,+BAA+B,CAAkB;IACzD,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,yBAAyB,CAAgE;IAEjG;;OAEG;IACI,IAAI,IAAI,IAAI;IAkBnB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACI,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB,CAEtB;IAIF,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAGF,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,mBAAmB;IAkBX,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;cAWzB,MAAM,IAAI,cAAc;CAqC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,oBAAoB,CAAC;KACxC;CACF"}
|
package/navigation/navigation.js
CHANGED
|
@@ -12,10 +12,10 @@ import { AgnosticMutationObserver as A, AgnosticResizeObserver as N } from "../c
|
|
|
12
12
|
import { isEventOnElement as l, removeAriaOverlayTriggerAttributes as z, setAriaOverlayTriggerAttributes as T, applyInertMechanism as d, removeInertMechanism as h } from "../core/overlay.js";
|
|
13
13
|
import "../button/transparent-button.js";
|
|
14
14
|
const L = p`*,:before,:after{box-sizing:border-box}:host{--sbb-navigation-grid-column: 1 / 5;--sbb-navigation-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-3x) );--sbb-navigation-animation-easing: ease-in;--sbb-navigation-padding-inline: var(--sbb-layout-base-offset-responsive);--sbb-navigation-padding-block-start: var(--sbb-spacing-responsive-l);--sbb-navigation-padding-block-end: var(--sbb-spacing-responsive-xl);--sbb-navigation-backdrop-visibility: hidden;--sbb-navigation-backdrop-pointer-events: none;--sbb-navigation-backdrop-color: transparent;--sbb-navigation-list-margin-block-start: var(--sbb-spacing-responsive-xxl);--sbb-navigation-inline-start: 0;--sbb-navigation-expanded-width: 100%;--sbb-navigation-inset: 0 auto auto 0;--sbb-navigation-transform: translateX(-100%);--sbb-navigation-content-transform: translateX(0);--sbb-navigation-width: 100%;--sbb-navigation-height: 100vh;display:block;position:fixed;inset:var(--sbb-navigation-inset);z-index:var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index));overflow:hidden;--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark)}@supports (height: 100dvh){:host{--sbb-navigation-height: 100dvh}}@media (min-width: 52.5rem){:host{--sbb-navigation-grid-column: 1 / 9}}@media (min-width: 64rem){:host{--sbb-navigation-grid-column: 1 / 5;--sbb-navigation-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-6x) );--sbb-navigation-padding-block-start: var(--sbb-spacing-responsive-xl);--sbb-navigation-padding-inline: var(--sbb-layout-base-offset-responsive) 0;--sbb-navigation-list-margin-block-start: var(--sbb-spacing-fixed-1x);--sbb-navigation-inline-start: calc(var(--sbb-layout-base-offset-responsive) * -1);--sbb-navigation-width: calc(100% + var(--sbb-layout-base-offset-responsive))}}@media (min-width: 90rem){:host{--sbb-navigation-grid-column: 1 / 6;--sbb-navigation-padding-block-start: var(--sbb-spacing-responsive-xxl)}}:host([data-state=opened]){--sbb-navigation-animation-easing: ease-out}:host(:is([data-state=opened],[data-state=opening])){--sbb-navigation-backdrop-visibility: visible;--sbb-navigation-backdrop-pointer-events: all;--sbb-navigation-backdrop-color: var(--sbb-color-black-alpha-70)}:host(:not([data-state=closed])){--sbb-navigation-inset: 0;--sbb-navigation-transform: translateX(0)}:host([data-has-navigation-section]){--sbb-navigation-content-transform: translateX(-100%)}@media (min-width: 64rem){:host([data-has-navigation-section]){--sbb-navigation-expanded-width: 100vw;--sbb-navigation-content-transform: translateX(0%)}@supports (height: 100dvw){:host([data-has-navigation-section]){--sbb-navigation-expanded-width: 100dvw}}}:host([data-resize-disable-animation]){--sbb-disable-animation-time: .1ms;--sbb-disable-animation-zero-time: 0s}.sbb-navigation__container{display:grid;gap:var(--sbb-grid-base-gutter-responsive);grid-template-columns:repeat(var(--sbb-grid-base-columns),1fr);padding-inline:0;pointer-events:none;transform:var(--sbb-navigation-transform)}@media (min-width: 64rem){.sbb-navigation__container{padding-inline:var(--sbb-layout-base-offset-responsive)}.sbb-navigation__container:before{transition-duration:var(--sbb-navigation-animation-duration);transition-timing-function:var(--sbb-navigation-animation-easing);transition-property:background-color,visibility;content:"";visibility:var(--sbb-navigation-backdrop-visibility);pointer-events:var(--sbb-navigation-backdrop-pointer-events);position:fixed;inset:var(--sbb-navigation-inset);background-color:var(--sbb-navigation-backdrop-color)}}.sbb-navigation{transition-duration:var(--sbb-navigation-animation-duration);transition-timing-function:var(--sbb-navigation-animation-easing);transition-property:width;display:none;width:var(--sbb-navigation-width);grid-column:var(--sbb-navigation-grid-column);padding:0;margin:0;position:relative;inset-inline-start:var(--sbb-navigation-inline-start);inset-block-start:0;border:none;pointer-events:none;height:var(--sbb-navigation-height);color:var(--sbb-color-white);background-color:var(--sbb-color-midnight)}.sbb-navigation:before{transition-duration:var(--sbb-navigation-animation-duration);transition-timing-function:var(--sbb-navigation-animation-easing);transition-property:width;content:"";position:absolute;width:var(--sbb-navigation-expanded-width);height:var(--sbb-navigation-height);background:var(--sbb-color-midnight)}:host([data-state]:not([data-state=closed])) .sbb-navigation{display:block;pointer-events:all;animation-name:open;animation-duration:var(--sbb-navigation-animation-duration);animation-timing-function:var(--sbb-navigation-animation-easing)}:host([data-state][data-state=closing]) .sbb-navigation{pointer-events:none;animation-name:close}@media (forced-colors: active){.sbb-navigation{outline:var(--sbb-border-width-1x) solid CanvasText}}.sbb-navigation__wrapper{outline:none}.sbb-navigation__header{transition-duration:var(--sbb-navigation-animation-duration);transition-timing-function:var(--sbb-navigation-animation-easing);transition-property:width;display:flex;justify-content:flex-end;position:absolute;width:var(--sbb-navigation-expanded-width);pointer-events:none;padding:var(--sbb-spacing-responsive-xs);z-index:calc(var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index)) + 1)}.sbb-navigation__close{pointer-events:all}.sbb-navigation__content{transition-duration:var(--sbb-navigation-animation-duration);transition-timing-function:var(--sbb-navigation-animation-easing);transition-property:transform;--sbb-scrollbar-thumb-width: .125rem;--sbb-scrollbar-thumb-width-hover: .25rem;--sbb-scrollbar-width-firefox: thin;--sbb-scrollbar-color: var(--sbb-color-white-alpha-30);--sbb-scrollbar-color-hover: var(--sbb-color-white-alpha-60);--sbb-scrollbar-track-color: transparent;--sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);display:flex;flex-direction:column;gap:var(--sbb-spacing-responsive-xxl);position:relative;height:var(--sbb-navigation-height);padding-inline:var(--sbb-navigation-padding-inline);padding-block:var(--sbb-navigation-padding-block-start) var(--sbb-navigation-padding-block-end);overflow-y:auto;transform:var(--sbb-navigation-content-transform)}.sbb-navigation__content::-webkit-scrollbar{width:var(--sbb-scrollbar-width);height:var(--sbb-scrollbar-width);background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-navigation__content::-webkit-scrollbar-corner{background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-navigation__content::-webkit-scrollbar-thumb{background-color:var(--sbb-scrollbar-color, currentcolor);border:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;border-radius:var(--sbb-border-radius-4x);background-clip:padding-box}.sbb-navigation__content::-webkit-scrollbar-thumb:hover{background-color:var(--sbb-scrollbar-color-hover, currentcolor);border-width:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)))}.sbb-navigation__content::-webkit-scrollbar-button,.sbb-navigation__content::-webkit-scrollbar-corner{display:none}@supports not selector(::-webkit-scrollbar){.sbb-navigation__content{scrollbar-width:var(--sbb-scrollbar-width-firefox);scrollbar-color:var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent)}}::slotted(:first-child){margin-block-start:var(--sbb-navigation-list-margin-block-start)}@keyframes open{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes close{0%{transform:translate(0)}to{transform:translate(-100%)}}`;
|
|
15
|
-
var
|
|
16
|
-
for (var e = a > 1 ? void 0 : a ?
|
|
15
|
+
var H = Object.defineProperty, B = Object.getOwnPropertyDescriptor, s = (t, i, n, a) => {
|
|
16
|
+
for (var e = a > 1 ? void 0 : a ? B(i, n) : i, r = t.length - 1, b; r >= 0; r--)
|
|
17
17
|
(b = t[r]) && (e = (a ? b(i, n, e) : b(e)) || e);
|
|
18
|
-
return a && e &&
|
|
18
|
+
return a && e && H(i, n, e), e;
|
|
19
19
|
};
|
|
20
20
|
const I = {
|
|
21
21
|
subtree: !0,
|
|
@@ -150,7 +150,7 @@ let o = class extends S(w) {
|
|
|
150
150
|
}
|
|
151
151
|
disconnectedCallback() {
|
|
152
152
|
var t, i;
|
|
153
|
-
super.disconnectedCallback(), (t = this._navigationController) == null || t.abort(), (i = this._windowEventsController) == null || i.abort(), this._focusHandler.disconnect(), this._navigationObserver.disconnect(), this._navigationResizeObserver.disconnect(), h();
|
|
153
|
+
super.disconnectedCallback(), (t = this._navigationController) == null || t.abort(), (i = this._windowEventsController) == null || i.abort(), this._focusHandler.disconnect(), this._navigationObserver.disconnect(), this._navigationResizeObserver.disconnect(), h(), this._scrollHandler.enableScroll();
|
|
154
154
|
}
|
|
155
155
|
render() {
|
|
156
156
|
const t = v`
|
|
@@ -6,10 +6,10 @@ import { SbbTitleLevel } from '../title.js';
|
|
|
6
6
|
*
|
|
7
7
|
* @slot - Use the unnamed slot to add content to the notification message.
|
|
8
8
|
* @slot title - Use this to provide a notification title (optional).
|
|
9
|
-
* @event {CustomEvent<void>} willOpen - Emits
|
|
10
|
-
* @event {CustomEvent<void>} didOpen - Emits
|
|
11
|
-
* @event {CustomEvent<void>} willClose - Emits
|
|
12
|
-
* @event {CustomEvent<void>} didClose - Emits
|
|
9
|
+
* @event {CustomEvent<void>} willOpen - Emits when the opening animation starts.
|
|
10
|
+
* @event {CustomEvent<void>} didOpen - Emits when the opening animation ends.
|
|
11
|
+
* @event {CustomEvent<void>} willClose - Emits when the closing animation starts.
|
|
12
|
+
* @event {CustomEvent<void>} didClose - Emits when the closing animation ends.
|
|
13
13
|
* @cssprop [--sbb-notification-margin=0] - Can be used to modify the margin in order to get a smoother animation.
|
|
14
14
|
* See style section for more information.
|
|
15
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAe,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,eAAO,MAAM,WAAW,EAAE,qBAAqB,EAAO,CAAC;;AAEvD,8BAAsB,qBAAsB,SAAQ,0BAAyC;IAC3F,kHAAkH;IAC3D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,8CAA8C;IAC9C,UAAmB,QAAQ,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAGpE;IAGF,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAG,eAAe,CAAC;IAC9C,SAAS,CAAC,qBAAqB,EAAG,eAAe,CAAC;IAClD,SAAS,CAAC,YAAY,kBAAyB;IAC/C,SAAS,CAAC,aAAa,mBAA0B;IACjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;IAC3B,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,WAAW,EAAG,0BAA0B,CAAC;IACnD,SAAS,CAAC,QAAQ,wBAAmC;IAErD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAC1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAE1C,4BAA4B;IACrB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG;IAmBrC,iBAAiB,IAAI,IAAI;cAUtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9D,oBAAoB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAe,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,eAAO,MAAM,WAAW,EAAE,qBAAqB,EAAO,CAAC;;AAEvD,8BAAsB,qBAAsB,SAAQ,0BAAyC;IAC3F,kHAAkH;IAC3D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,8CAA8C;IAC9C,UAAmB,QAAQ,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAGpE;IAGF,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAG,eAAe,CAAC;IAC9C,SAAS,CAAC,qBAAqB,EAAG,eAAe,CAAC;IAClD,SAAS,CAAC,YAAY,kBAAyB;IAC/C,SAAS,CAAC,aAAa,mBAA0B;IACjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;IAC3B,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,WAAW,EAAG,0BAA0B,CAAC;IACnD,SAAS,CAAC,QAAQ,wBAAmC;IAErD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAC1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAE1C,4BAA4B;IACrB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG;IAmBrC,iBAAiB,IAAI,IAAI;cAUtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9D,oBAAoB,IAAI,IAAI;IAU5C,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAkBzC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWpD,SAAS,CAAC,kCAAkC,IAAI,IAAI;IAKpD,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBzD,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAStD"}
|