@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776960216 → 5.0.0-next-dev.1777019159
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.component.js +1 -1
- package/alert/alert-group/alert-group.component.js +1 -1
- package/{alert-group.component-CAjj3FtE.js → alert-group.component-BCYOVicl.js} +5 -7
- package/alert.component-BQsF0R1M.js +161 -0
- package/alert.js +2 -2
- package/alert.pure.js +2 -2
- package/core/styles/core.scss +11 -1
- package/core.css +28 -8
- package/custom-elements.json +618 -618
- package/development/alert/alert/alert.component.d.ts +1 -0
- package/development/alert/alert/alert.component.d.ts.map +1 -1
- package/development/alert/alert/alert.component.js +1 -1
- package/development/alert/alert-group/alert-group.component.d.ts.map +1 -1
- package/development/alert/alert-group/alert-group.component.js +1 -1
- package/development/alert-group.component-D4KxKTd2.js +186 -0
- package/development/alert.component-Pv-Ol6XU.js +213 -0
- package/development/alert.js +2 -2
- package/development/alert.pure.js +2 -2
- package/development/dialog/dialog/dialog.component.js +1 -1
- package/development/dialog.component-BTXyWi17.js +233 -0
- package/development/dialog.js +1 -1
- package/development/dialog.pure.js +1 -1
- package/dialog/dialog/dialog.component.js +1 -1
- package/{dialog.component-DTbAHlVd.js → dialog.component-ChB9gCyY.js} +1 -1
- package/dialog.js +1 -1
- package/dialog.pure.js +1 -1
- package/off-brand-theme.css +28 -8
- package/package.json +2 -2
- package/safety-theme.css +28 -8
- package/standard-theme.css +28 -8
- package/alert.component-C42LwoGa.js +0 -163
- package/development/alert-group.component-DeI6kuwn.js +0 -188
- package/development/alert.component-Cn36k_Hf.js +0 -214
- package/development/dialog.component-B4cZfRCl.js +0 -233
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { __esDecorate as e, __runInitializers as t } from "tslib";
|
|
2
|
-
import { html as n, nothing as r, unsafeCSS as i } from "lit";
|
|
3
|
-
import { property as a } from "lit/decorators.js";
|
|
4
|
-
import { SbbDarkModeController as o, SbbLanguageController as s, SbbOpenCloseBaseElement as c, SbbReadonlyMixin as l, boxSizingStyles as u, i18nCloseAlert as d, isLean as f, isZeroAnimationDuration as p } from "./core.js";
|
|
5
|
-
import { SbbTransparentButtonElement as m } from "./button.pure.js";
|
|
6
|
-
import { SbbDividerElement as h } from "./divider.pure.js";
|
|
7
|
-
import { SbbIconNameMixin as g } from "./icon.pure.js";
|
|
8
|
-
//#region src/elements/alert/alert/alert.scss?inline
|
|
9
|
-
var _ = ":host{display:block;--sbb-alert-background-color: var(--sbb-background-color-1-inverted);--sbb-alert-border-radius: var(--sbb-border-radius-4x);--sbb-alert-color: var(--sbb-color-aluminium);--sbb-alert-color: light-dark(var(--sbb-color-aluminium), var(--sbb-color-anthracite));--sbb-alert-padding: var(--sbb-spacing-responsive-xxs) var(--sbb-spacing-responsive-xs);--sbb-alert-icon-size: 1.25rem;--sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxs);--sbb-alert-gap: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-responsive-xs);--sbb-alert-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );--sbb-alert-timing-function: ease-in;--sbb-alert-title-margin-block: 0}@media(min-width:64rem){:host{--sbb-alert-icon-size: 1.75rem}}@media(forced-colors:active){:host{outline:var(--sbb-border-width-1x) solid CanvasText;border-radius:var(--sbb-alert-border-radius)}}:host(:is(:state(state-opening),[state--state-opening]):not([animation=open],[animation=all])){--sbb-disable-animation-duration: 0s}:host(:is(:state(state-closing),[state--state-closing]):not([animation=close],[animation=all])){--sbb-disable-animation-duration: 0s}:host([size=s]){--sbb-alert-gap: var(--sbb-spacing-fixed-1x) var(--sbb-spacing-responsive-xxs);--sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxxs)}:host([size=l]){--sbb-alert-icon-size: var(--sbb-size-icon-ui-small);--sbb-alert-title-margin-block: 0 var(--sbb-spacing-fixed-1x)}@media(min-width:64rem){:host([size=l]){--sbb-alert-icon-size: 2.125rem}}:host(:not(:is(:state(dark),[state--dark]))){--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark)}.sbb-alert__transition-wrapper{display:grid;grid-template-rows:0fr;opacity:0}:host(:is(:is(:state(state-opened),[state--state-opened]),:is(:state(state-closing),[state--state-closing]))) .sbb-alert__transition-wrapper{grid-template-rows:1fr;opacity:1}:host(:is(:state(state-opening),[state--state-opening])) .sbb-alert__transition-wrapper{animation-name:open,open-opacity;animation-fill-mode:forwards;animation-duration:var(--sbb-alert-animation-duration);animation-timing-function:var(--sbb-alert-timing-function);animation-delay:0s,var(--sbb-alert-animation-duration)}:host(:is(:state(state-closing),[state--state-closing])) .sbb-alert__transition-wrapper{animation-name:close-opacity,close;animation-fill-mode:forwards;animation-duration:var(--sbb-alert-animation-duration);animation-timing-function:var(--sbb-alert-timing-function);animation-delay:0s,var(--sbb-disable-animation-duration, var(--sbb-animation-duration-2x))}.sbb-alert__transition-sub-wrapper{overflow:hidden}.sbb-alert{--sbb-text-font-size: var(--sbb-text-font-size-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-text);letter-spacing:var(--sbb-typo-letter-spacing-text);font-size:var(--sbb-text-font-size);display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--sbb-alert-gap);min-width:fit-content;padding:var(--sbb-alert-padding);overflow:hidden;color:var(--sbb-alert-color);background-color:var(--sbb-alert-background-color);border-radius:var(--sbb-alert-border-radius)}@media(min-width:37.5rem){.sbb-alert{grid-template-columns:auto 1fr auto;align-items:flex-start}}.sbb-alert__icon{display:flex;align-items:start;padding-block:var(--sbb-spacing-fixed-1x);min-width:var(--sbb-alert-icon-size);--sbb-icon-svg-width: var(--sbb-alert-icon-size);--sbb-icon-svg-height: var(--sbb-alert-icon-size)}.sbb-alert__content{color-scheme:only light;order:3;grid-column:1/3}@media(min-width:37.5rem){.sbb-alert__content{order:initial;grid-column-start:initial;grid-column-end:initial}}.sbb-alert__content-slot{display:inline;margin:0;padding:0}.sbb-alert__close-button-wrapper{color-scheme:only light;display:flex;justify-content:flex-end;align-items:center;height:100%}@media(min-width:37.5rem){.sbb-alert__close-button{margin-inline-start:var(--sbb-alert-close-icon-margin)}}.sbb-alert__close-button-divider{display:none}@media(min-width:37.5rem){.sbb-alert__close-button-divider{display:block;height:calc(100% - var(--sbb-spacing-fixed-1x) * 2)}}@keyframes open{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}@keyframes open-opacity{0%{opacity:0}to{opacity:1}}@keyframes close{0%{grid-template-rows:1fr}to{grid-template-rows:0fr}}@keyframes close-opacity{0%{opacity:1}to{opacity:0}}::slotted(sbb-title){margin-block:var(--sbb-alert-title-margin-block)}", v = (() => {
|
|
10
|
-
let v = g(l(c)), y, b = [], x = [], S, C = [], w = [];
|
|
11
|
-
return class extends v {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments), this.#e = t(this, b, f() ? "s" : "m"), this.#t = (t(this, x), t(this, C, "all")), this._language = (t(this, w), new s(this)), this._darkModeController = new o(this, () => {
|
|
14
|
-
this._syncLinks(), this._configureTitle(), this.requestUpdate();
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
static {
|
|
18
|
-
let t = typeof Symbol == "function" && Symbol.metadata ? Object.create(v[Symbol.metadata] ?? null) : void 0;
|
|
19
|
-
y = [a({ reflect: !0 })], S = [a({ reflect: !0 })], e(this, null, y, {
|
|
20
|
-
kind: "accessor",
|
|
21
|
-
name: "size",
|
|
22
|
-
static: !1,
|
|
23
|
-
private: !1,
|
|
24
|
-
access: {
|
|
25
|
-
has: (e) => "size" in e,
|
|
26
|
-
get: (e) => e.size,
|
|
27
|
-
set: (e, t) => {
|
|
28
|
-
e.size = t;
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
metadata: t
|
|
32
|
-
}, b, x), e(this, null, S, {
|
|
33
|
-
kind: "accessor",
|
|
34
|
-
name: "animation",
|
|
35
|
-
static: !1,
|
|
36
|
-
private: !1,
|
|
37
|
-
access: {
|
|
38
|
-
has: (e) => "animation" in e,
|
|
39
|
-
get: (e) => e.animation,
|
|
40
|
-
set: (e, t) => {
|
|
41
|
-
e.animation = t;
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
metadata: t
|
|
45
|
-
}, C, w), t && Object.defineProperty(this, Symbol.metadata, {
|
|
46
|
-
enumerable: !0,
|
|
47
|
-
configurable: !0,
|
|
48
|
-
writable: !0,
|
|
49
|
-
value: t
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
static {
|
|
53
|
-
this.elementName = "sbb-alert";
|
|
54
|
-
}
|
|
55
|
-
static {
|
|
56
|
-
this.elementDependencies = [m, h];
|
|
57
|
-
}
|
|
58
|
-
static {
|
|
59
|
-
this.styles = [u, i(_)];
|
|
60
|
-
}
|
|
61
|
-
static {
|
|
62
|
-
this.events = {
|
|
63
|
-
beforeopen: "beforeopen",
|
|
64
|
-
open: "open",
|
|
65
|
-
beforeclose: "beforeclose",
|
|
66
|
-
close: "close"
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
#e;
|
|
70
|
-
get size() {
|
|
71
|
-
return this.#e;
|
|
72
|
-
}
|
|
73
|
-
set size(e) {
|
|
74
|
-
this.#e = e;
|
|
75
|
-
}
|
|
76
|
-
#t;
|
|
77
|
-
get animation() {
|
|
78
|
-
return this.#t;
|
|
79
|
-
}
|
|
80
|
-
set animation(e) {
|
|
81
|
-
this.#t = e;
|
|
82
|
-
}
|
|
83
|
-
open() {
|
|
84
|
-
this.state = "opening", this.dispatchBeforeOpenEvent() && this._isZeroAnimationDuration() && this._handleOpening();
|
|
85
|
-
}
|
|
86
|
-
close() {
|
|
87
|
-
this.state === "opened" && this.dispatchBeforeCloseEvent() && (this.state = "closing", this._isZeroAnimationDuration() && this._handleClosing());
|
|
88
|
-
}
|
|
89
|
-
firstUpdated(e) {
|
|
90
|
-
super.firstUpdated(e), this.open();
|
|
91
|
-
}
|
|
92
|
-
willUpdate(e) {
|
|
93
|
-
super.willUpdate(e), e.has("size") && this._configureTitle();
|
|
94
|
-
}
|
|
95
|
-
_isZeroAnimationDuration() {
|
|
96
|
-
return p(this, "--sbb-alert-animation-duration");
|
|
97
|
-
}
|
|
98
|
-
_onAnimationEnd(e) {
|
|
99
|
-
this.state === "opening" && e.animationName === "open-opacity" ? this._handleOpening() : this.state === "closing" && e.animationName === "close" && this._handleClosing();
|
|
100
|
-
}
|
|
101
|
-
_handleOpening() {
|
|
102
|
-
this.state = "opened", this.dispatchOpenEvent();
|
|
103
|
-
}
|
|
104
|
-
_handleClosing() {
|
|
105
|
-
this.state = "closed", this.dispatchCloseEvent(), setTimeout(() => this.remove());
|
|
106
|
-
}
|
|
107
|
-
_handleSlotchange() {
|
|
108
|
-
this._syncLinks();
|
|
109
|
-
let e = Array.from(this.children).find((e) => e.localName === "sbb-title");
|
|
110
|
-
e && (e.slot = "title");
|
|
111
|
-
}
|
|
112
|
-
_syncLinks() {
|
|
113
|
-
Array.from(this.querySelectorAll?.("sbb-link") ?? []).forEach((e) => {
|
|
114
|
-
customElements.upgrade(e), e.negative = this._isLightMode();
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
_configureTitle() {
|
|
118
|
-
let e = this.querySelector?.("sbb-title");
|
|
119
|
-
e && (customElements.upgrade(e), e.negative = this._isLightMode(), e.visualLevel = this.size === "l" ? "3" : "5");
|
|
120
|
-
}
|
|
121
|
-
_isLightMode() {
|
|
122
|
-
return !this._darkModeController.matches();
|
|
123
|
-
}
|
|
124
|
-
renderIconName() {
|
|
125
|
-
return super.renderIconName() || "info";
|
|
126
|
-
}
|
|
127
|
-
render() {
|
|
128
|
-
return n`
|
|
129
|
-
<div class="sbb-alert__transition-wrapper" @animationend=${this._onAnimationEnd}>
|
|
130
|
-
<!-- sub wrapper needed to properly support fade in animation -->
|
|
131
|
-
<div class="sbb-alert__transition-sub-wrapper">
|
|
132
|
-
<div class="sbb-alert">
|
|
133
|
-
<span class="sbb-alert__icon"> ${this.renderIconSlot()} </span>
|
|
134
|
-
<span class="sbb-alert__content">
|
|
135
|
-
<slot name="title" @slotchange=${this._configureTitle}></slot>
|
|
136
|
-
<p class="sbb-alert__content-slot">
|
|
137
|
-
<slot @slotchange=${this._handleSlotchange}></slot>
|
|
138
|
-
</p>
|
|
139
|
-
</span>
|
|
140
|
-
${this.readOnly ? r : n`<span class="sbb-alert__close-button-wrapper">
|
|
141
|
-
<sbb-divider
|
|
142
|
-
orientation="vertical"
|
|
143
|
-
?negative=${this._isLightMode()}
|
|
144
|
-
class="sbb-alert__close-button-divider"
|
|
145
|
-
></sbb-divider>
|
|
146
|
-
<sbb-transparent-button
|
|
147
|
-
?negative=${this._isLightMode()}
|
|
148
|
-
size=${this.size === "l" ? "m" : this.size}
|
|
149
|
-
icon-name="cross-small"
|
|
150
|
-
@click=${() => this.close()}
|
|
151
|
-
aria-label=${d[this._language.current]}
|
|
152
|
-
class="sbb-alert__close-button"
|
|
153
|
-
></sbb-transparent-button>
|
|
154
|
-
</span>`}
|
|
155
|
-
</div>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
`;
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
})();
|
|
162
|
-
//#endregion
|
|
163
|
-
export { v as t };
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import { SbbElement, boxSizingStyles, forceType, isEventPrevented } from "./core.js";
|
|
5
|
-
import { html as html$1, unsafeStatic } from "lit/static-html.js";
|
|
6
|
-
//#region src/elements/alert/alert-group/alert-group.scss?inline
|
|
7
|
-
var alert_group_default = ":host {\n --sbb-alert-group-gap: var(--sbb-spacing-fixed-3x);\n --sbb-alert-group-border-radius: var(--sbb-border-radius-4x);\n display: block;\n}\n\n.sbb-alert-group {\n display: flex;\n flex-direction: column;\n gap: var(--sbb-alert-group-gap);\n}\n\n:host(:focus-visible:not(:is(:state(empty),[state--empty]))) {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n border-radius: var(--sbb-alert-group-border-radius);\n}\n\n.sbb-alert-group__title {\n border: 0;\n clip-path: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}";
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/elements/alert/alert-group/alert-group.component.ts
|
|
10
|
-
/**
|
|
11
|
-
* It can be used as a container for one or more `sbb-alert` component.
|
|
12
|
-
*
|
|
13
|
-
* @slot - Use the unnamed slot to add `sbb-alert` elements to the `sbb-alert-group`.
|
|
14
|
-
* @slot accessibility-title - title for this `sbb-alert-group` which is only visible for screen reader users.
|
|
15
|
-
*/
|
|
16
|
-
var SbbAlertGroupElement = (() => {
|
|
17
|
-
let _classSuper = SbbElement;
|
|
18
|
-
let _role_decorators;
|
|
19
|
-
let _role_initializers = [];
|
|
20
|
-
let _role_extraInitializers = [];
|
|
21
|
-
let _accessibilityTitle_decorators;
|
|
22
|
-
let _accessibilityTitle_initializers = [];
|
|
23
|
-
let _accessibilityTitle_extraInitializers = [];
|
|
24
|
-
let _accessibilityTitleLevel_decorators;
|
|
25
|
-
let _accessibilityTitleLevel_initializers = [];
|
|
26
|
-
let _accessibilityTitleLevel_extraInitializers = [];
|
|
27
|
-
let __hasAlerts_decorators;
|
|
28
|
-
let __hasAlerts_initializers = [];
|
|
29
|
-
let __hasAlerts_extraInitializers = [];
|
|
30
|
-
return class SbbAlertGroupElement extends _classSuper {
|
|
31
|
-
static {
|
|
32
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
33
|
-
_role_decorators = [property({ reflect: true })];
|
|
34
|
-
_accessibilityTitle_decorators = [forceType(), property({ attribute: "accessibility-title" })];
|
|
35
|
-
_accessibilityTitleLevel_decorators = [property({ attribute: "accessibility-title-level" })];
|
|
36
|
-
__hasAlerts_decorators = [state()];
|
|
37
|
-
__esDecorate(this, null, _role_decorators, {
|
|
38
|
-
kind: "accessor",
|
|
39
|
-
name: "role",
|
|
40
|
-
static: false,
|
|
41
|
-
private: false,
|
|
42
|
-
access: {
|
|
43
|
-
has: (obj) => "role" in obj,
|
|
44
|
-
get: (obj) => obj.role,
|
|
45
|
-
set: (obj, value) => {
|
|
46
|
-
obj.role = value;
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
metadata: _metadata
|
|
50
|
-
}, _role_initializers, _role_extraInitializers);
|
|
51
|
-
__esDecorate(this, null, _accessibilityTitle_decorators, {
|
|
52
|
-
kind: "accessor",
|
|
53
|
-
name: "accessibilityTitle",
|
|
54
|
-
static: false,
|
|
55
|
-
private: false,
|
|
56
|
-
access: {
|
|
57
|
-
has: (obj) => "accessibilityTitle" in obj,
|
|
58
|
-
get: (obj) => obj.accessibilityTitle,
|
|
59
|
-
set: (obj, value) => {
|
|
60
|
-
obj.accessibilityTitle = value;
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
metadata: _metadata
|
|
64
|
-
}, _accessibilityTitle_initializers, _accessibilityTitle_extraInitializers);
|
|
65
|
-
__esDecorate(this, null, _accessibilityTitleLevel_decorators, {
|
|
66
|
-
kind: "accessor",
|
|
67
|
-
name: "accessibilityTitleLevel",
|
|
68
|
-
static: false,
|
|
69
|
-
private: false,
|
|
70
|
-
access: {
|
|
71
|
-
has: (obj) => "accessibilityTitleLevel" in obj,
|
|
72
|
-
get: (obj) => obj.accessibilityTitleLevel,
|
|
73
|
-
set: (obj, value) => {
|
|
74
|
-
obj.accessibilityTitleLevel = value;
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
metadata: _metadata
|
|
78
|
-
}, _accessibilityTitleLevel_initializers, _accessibilityTitleLevel_extraInitializers);
|
|
79
|
-
__esDecorate(this, null, __hasAlerts_decorators, {
|
|
80
|
-
kind: "accessor",
|
|
81
|
-
name: "_hasAlerts",
|
|
82
|
-
static: false,
|
|
83
|
-
private: false,
|
|
84
|
-
access: {
|
|
85
|
-
has: (obj) => "_hasAlerts" in obj,
|
|
86
|
-
get: (obj) => obj._hasAlerts,
|
|
87
|
-
set: (obj, value) => {
|
|
88
|
-
obj._hasAlerts = value;
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
metadata: _metadata
|
|
92
|
-
}, __hasAlerts_initializers, __hasAlerts_extraInitializers);
|
|
93
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
94
|
-
enumerable: true,
|
|
95
|
-
configurable: true,
|
|
96
|
-
writable: true,
|
|
97
|
-
value: _metadata
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
static {
|
|
101
|
-
this.elementName = "sbb-alert-group";
|
|
102
|
-
}
|
|
103
|
-
static {
|
|
104
|
-
this.styles = [boxSizingStyles, unsafeCSS(alert_group_default)];
|
|
105
|
-
}
|
|
106
|
-
static {
|
|
107
|
-
this.events = { empty: "empty" };
|
|
108
|
-
}
|
|
109
|
-
#role_accessor_storage = __runInitializers(this, _role_initializers, "status");
|
|
110
|
-
/**
|
|
111
|
-
* The role attribute defines how to announce alerts to the user.
|
|
112
|
-
*
|
|
113
|
-
* 'status': sets aria-live to polite and aria-atomic to true.
|
|
114
|
-
* 'alert': sets aria-live to assertive and aria-atomic to true.
|
|
115
|
-
*/
|
|
116
|
-
get role() {
|
|
117
|
-
return this.#role_accessor_storage;
|
|
118
|
-
}
|
|
119
|
-
set role(value) {
|
|
120
|
-
this.#role_accessor_storage = value;
|
|
121
|
-
}
|
|
122
|
-
#accessibilityTitle_accessor_storage = (__runInitializers(this, _role_extraInitializers), __runInitializers(this, _accessibilityTitle_initializers, ""));
|
|
123
|
-
/** Title for this alert group which is only visible for screen reader users. */
|
|
124
|
-
get accessibilityTitle() {
|
|
125
|
-
return this.#accessibilityTitle_accessor_storage;
|
|
126
|
-
}
|
|
127
|
-
set accessibilityTitle(value) {
|
|
128
|
-
this.#accessibilityTitle_accessor_storage = value;
|
|
129
|
-
}
|
|
130
|
-
#accessibilityTitleLevel_accessor_storage = (__runInitializers(this, _accessibilityTitle_extraInitializers), __runInitializers(this, _accessibilityTitleLevel_initializers, "2"));
|
|
131
|
-
/** Level of the accessibility title, will be rendered as heading tag (e.g. h2). Defaults to level 2. */
|
|
132
|
-
get accessibilityTitleLevel() {
|
|
133
|
-
return this.#accessibilityTitleLevel_accessor_storage;
|
|
134
|
-
}
|
|
135
|
-
set accessibilityTitleLevel(value) {
|
|
136
|
-
this.#accessibilityTitleLevel_accessor_storage = value;
|
|
137
|
-
}
|
|
138
|
-
#_hasAlerts_accessor_storage = (__runInitializers(this, _accessibilityTitleLevel_extraInitializers), __runInitializers(this, __hasAlerts_initializers, false));
|
|
139
|
-
/** Whether the group currently has any alerts. */
|
|
140
|
-
get _hasAlerts() {
|
|
141
|
-
return this.#_hasAlerts_accessor_storage;
|
|
142
|
-
}
|
|
143
|
-
set _hasAlerts(value) {
|
|
144
|
-
this.#_hasAlerts_accessor_storage = value;
|
|
145
|
-
}
|
|
146
|
-
constructor() {
|
|
147
|
-
super();
|
|
148
|
-
__runInitializers(this, __hasAlerts_extraInitializers);
|
|
149
|
-
this.addEventListener?.("close", async (e) => {
|
|
150
|
-
if (!await isEventPrevented(e)) this._alertClosed(e);
|
|
151
|
-
}, { capture: true });
|
|
152
|
-
}
|
|
153
|
-
_alertClosed(event) {
|
|
154
|
-
const target = event.target;
|
|
155
|
-
if (document.activeElement === target) {
|
|
156
|
-
this.tabIndex = 0;
|
|
157
|
-
this.focus();
|
|
158
|
-
this.addEventListener("blur", () => this.removeAttribute("tabindex"), { once: true });
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
_slotChanged(event) {
|
|
162
|
-
const hadAlerts = this._hasAlerts;
|
|
163
|
-
this._hasAlerts = event.target.assignedElements().filter((e) => e instanceof Element && e.localName === "sbb-alert").length > 0;
|
|
164
|
-
if (!this._hasAlerts && hadAlerts)
|
|
165
|
-
/** Emits when `sbb-alert-group` becomes empty. */
|
|
166
|
-
this.dispatchEvent(new Event("empty", {
|
|
167
|
-
composed: true,
|
|
168
|
-
bubbles: true
|
|
169
|
-
}));
|
|
170
|
-
this.toggleState("empty", !this._hasAlerts);
|
|
171
|
-
}
|
|
172
|
-
render() {
|
|
173
|
-
const TITLE_TAG_NAME = `h${this.accessibilityTitleLevel}`;
|
|
174
|
-
return html$1`
|
|
175
|
-
<div class="sbb-alert-group">
|
|
176
|
-
${this._hasAlerts ? html$1`<${unsafeStatic(TITLE_TAG_NAME)} class="sbb-alert-group__title">
|
|
177
|
-
<slot name="accessibility-title">${this.accessibilityTitle}</slot>
|
|
178
|
-
</${unsafeStatic(TITLE_TAG_NAME)}>` : nothing}
|
|
179
|
-
<slot @slotchange=${(event) => this._slotChanged(event)}></slot>
|
|
180
|
-
</div>
|
|
181
|
-
`;
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
})();
|
|
185
|
-
//#endregion
|
|
186
|
-
export { SbbAlertGroupElement as t };
|
|
187
|
-
|
|
188
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZ3JvdXAuY29tcG9uZW50LURlSTZrdXduLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9hbGVydC9hbGVydC1ncm91cC9hbGVydC1ncm91cC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9hbGVydC9hbGVydC1ncm91cC9hbGVydC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi1hbGVydC1ncm91cC1nYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbiAgLS1zYmItYWxlcnQtZ3JvdXAtYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWJvcmRlci1yYWRpdXMtNHgpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uc2JiLWFsZXJ0LWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zYmItYWxlcnQtZ3JvdXAtZ2FwKTtcbn1cblxuOmhvc3QoOmZvY3VzLXZpc2libGU6bm90KDpzdGF0ZShlbXB0eSkpKSB7XG4gIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1hbGVydC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLnNiYi1hbGVydC1ncm91cF9fdGl0bGUge1xuICBAaW5jbHVkZSBzYmIuc2NyZWVuLXJlYWRlci1vbmx5O1xufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIHVuc2FmZVN0YXRpYyB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcywgZm9yY2VUeXBlLCBpc0V2ZW50UHJldmVudGVkLCBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRpdGxlTGV2ZWwgfSBmcm9tICcuLi8uLi90aXRsZS5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiQWxlcnRFbGVtZW50IH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYWxlcnQtZ3JvdXAuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSBgc2JiLWFsZXJ0YCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1hbGVydGAgZWxlbWVudHMgdG8gdGhlIGBzYmItYWxlcnQtZ3JvdXBgLlxuICogQHNsb3QgYWNjZXNzaWJpbGl0eS10aXRsZSAtIHRpdGxlIGZvciB0aGlzIGBzYmItYWxlcnQtZ3JvdXBgIHdoaWNoIGlzIG9ubHkgdmlzaWJsZSBmb3Igc2NyZWVuIHJlYWRlciB1c2Vycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkFsZXJ0R3JvdXBFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYWxlcnQtZ3JvdXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZW1wdHk6ICdlbXB0eScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGF0dHJpYnV0ZSBkZWZpbmVzIGhvdyB0byBhbm5vdW5jZSBhbGVydHMgdG8gdGhlIHVzZXIuXG4gICAqXG4gICAqICdzdGF0dXMnOiBzZXRzIGFyaWEtbGl2ZSB0byBwb2xpdGUgYW5kIGFyaWEtYXRvbWljIHRvIHRydWUuXG4gICAqICdhbGVydCc6IHNldHMgYXJpYS1saXZlIHRvIGFzc2VydGl2ZSBhbmQgYXJpYS1hdG9taWMgdG8gdHJ1ZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIHJvbGU6ICdhbGVydCcgfCAnc3RhdHVzJyB8IHN0cmluZyA9ICdzdGF0dXMnO1xuXG4gIC8qKiBUaXRsZSBmb3IgdGhpcyBhbGVydCBncm91cCB3aGljaCBpcyBvbmx5IHZpc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LXRpdGxlJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eVRpdGxlOiBzdHJpbmcgPSAnJztcblxuICAvKiogTGV2ZWwgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdGl0bGUsIHdpbGwgYmUgcmVuZGVyZWQgYXMgaGVhZGluZyB0YWcgKGUuZy4gaDIpLiBEZWZhdWx0cyB0byBsZXZlbCAyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LXRpdGxlLWxldmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eVRpdGxlTGV2ZWw6IFNiYlRpdGxlTGV2ZWwgPSAnMic7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGdyb3VwIGN1cnJlbnRseSBoYXMgYW55IGFsZXJ0cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGFzQWxlcnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAnY2xvc2UnLFxuICAgICAgYXN5bmMgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghKGF3YWl0IGlzRXZlbnRQcmV2ZW50ZWQoZSkpKSB7XG4gICAgICAgICAgdGhpcy5fYWxlcnRDbG9zZWQoZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFdlIHVzZSBjYXB0dXJlIGhlcmUsIGJlY2F1c2UgJ2Nsb3NlJyBkb2VzIG5vdCBidWJibGUuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hbGVydENsb3NlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQWxlcnRFbGVtZW50O1xuICAgIGNvbnN0IGhhc0ZvY3VzSW5zaWRlQWxlcnRHcm91cCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRhcmdldDtcblxuICAgIC8vIFJlc3RvcmUgZm9jdXNcbiAgICBpZiAoaGFzRm9jdXNJbnNpZGVBbGVydEdyb3VwKSB7XG4gICAgICAvLyBTZXQgdGFiaW5kZXggdG8gMCB0aGUgbWFrZSBpdCBmb2N1c2FibGUgYW5kIGFmdGVyd2FyZCBmb2N1cyBpdC5cbiAgICAgIC8vIFRoaXMgaXMgZG9uZSB0byBub3QgY29tcGxldGVseSBsb3NlIGZvY3VzIGFmdGVyIHJlbW92YWwgb2YgYW4gYWxlcnQuXG4gICAgICAvLyBPbmNlIHRoZSBzYmItYWxlcnQtZ3JvdXAgd2FzIGJsdXJyZWQsIG1ha2UgdGhlIGFsZXJ0IGdyb3VwIG5vdCBmb2N1c2FibGUgYWdhaW4uXG4gICAgICB0aGlzLnRhYkluZGV4ID0gMDtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpLCB7XG4gICAgICAgIG9uY2U6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zbG90Q2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBoYWRBbGVydHMgPSB0aGlzLl9oYXNBbGVydHM7XG4gICAgdGhpcy5faGFzQWxlcnRzID1cbiAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGUubG9jYWxOYW1lID09PSAnc2JiLWFsZXJ0JykubGVuZ3RoID4gMDtcbiAgICBpZiAoIXRoaXMuX2hhc0FsZXJ0cyAmJiBoYWRBbGVydHMpIHtcbiAgICAgIC8qKiBFbWl0cyB3aGVuIGBzYmItYWxlcnQtZ3JvdXBgIGJlY29tZXMgZW1wdHkuICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdlbXB0eScsIHsgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2VtcHR5JywgIXRoaXMuX2hhc0FsZXJ0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBUSVRMRV9UQUdfTkFNRSA9IGBoJHt0aGlzLmFjY2Vzc2liaWxpdHlUaXRsZUxldmVsfWA7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYWxlcnQtZ3JvdXBcIj5cbiAgICAgICAgJHt0aGlzLl9oYXNBbGVydHNcbiAgICAgICAgICA/IGh0bWxgPCR7dW5zYWZlU3RhdGljKFRJVExFX1RBR19OQU1FKX0gY2xhc3M9XCJzYmItYWxlcnQtZ3JvdXBfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY2Nlc3NpYmlsaXR5LXRpdGxlXCI+JHt0aGlzLmFjY2Vzc2liaWxpdHlUaXRsZX08L3Nsb3Q+XG4gICAgICAgICAgICA8LyR7dW5zYWZlU3RhdGljKFRJVExFX1RBR19OQU1FKX0+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9zbG90Q2hhbmdlZChldmVudCl9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1hbGVydC1ncm91cCc6IFNiYkFsZXJ0R3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztJQ2dCYSw4QkFBb0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Y0FBN0IsNkJBQTZCLFlBQVU7Ozt1QkFhakQsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7cUNBSTNCLFdBQVcsRUFDWCxTQUFTLEVBQUUsV0FBVyx1QkFBdUIsQ0FBQyxDQUFBOzBDQUk5QyxTQUFTLEVBQUUsV0FBVyw2QkFBNkIsQ0FBQyxDQUFBOzZCQUlwRCxPQUFPLENBQUE7QUFaUixnQkFBQSxNQUFBLE1BQUEsa0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxVQUFBO0tBQUEsTUFBQSxRQUFBLElBQXlCO0tBQUksTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFKLE9BQUk7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSxvQkFBQSx3QkFBQTtBQUs3QixnQkFBQSxNQUFBLE1BQUEsZ0NBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSx3QkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFrQixNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQWxCLHFCQUFrQjs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLGtDQUFBLHNDQUFBO0FBSWxDLGdCQUFBLE1BQUEsTUFBQSxxQ0FBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLDZCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQXVCLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBdkIsMEJBQXVCOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsdUNBQUEsMkNBQUE7QUFHOUIsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZ0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBaUI7S0FBVSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVYsYUFBVTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDBCQUFBLDhCQUFBOzs7Ozs7Ozs7QUF6QkosUUFBQSxjQUFzQjs7O0FBQy9CLFFBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxvQkFBTSxDQUFDOzs7QUFDNUQsUUFBQSxTQUFTLEVBQzlCLE9BQU8sU0FDQzs7RUFTVix5QkFBQSxrQkFBQSxNQUFBLG9CQUE2RCxTQUFROzs7Ozs7O0VBQXJFLElBQXlCLE9BQUk7QUFBQSxVQUFBLE1BQUE7O0VBQTdCLElBQXlCLEtBQUksT0FBQTtBQUFBLFNBQUEsd0JBQUE7O0VBSzdCLHdDQUFBLGtCQUFBLE1BQUEsd0JBQUEsRUFBQSxrQkFBQSxNQUFBLGtDQUE2QyxHQUFFOztFQUEvQyxJQUFnQixxQkFBa0I7QUFBQSxVQUFBLE1BQUE7O0VBQWxDLElBQWdCLG1CQUFrQixPQUFBO0FBQUEsU0FBQSxzQ0FBQTs7RUFJbEMsNkNBQUEsa0JBQUEsTUFBQSxzQ0FBQSxFQUFBLGtCQUFBLE1BQUEsdUNBQXlELElBQUc7O0VBQTVELElBQWdCLDBCQUF1QjtBQUFBLFVBQUEsTUFBQTs7RUFBdkMsSUFBZ0Isd0JBQXVCLE9BQUE7QUFBQSxTQUFBLDJDQUFBOztFQUc5QixnQ0FBQSxrQkFBQSxNQUFBLDJDQUFBLEVBQUEsa0JBQUEsTUFBQSwwQkFBdUMsTUFBSzs7RUFBNUMsSUFBaUIsYUFBVTtBQUFBLFVBQUEsTUFBQTs7RUFBM0IsSUFBaUIsV0FBVSxPQUFBO0FBQUEsU0FBQSw4QkFBQTs7RUFFcEMsY0FBQTtBQUNFLFVBQU87O0FBQ1AsUUFBSyxtQkFDSCxTQUNBLE9BQU8sTUFBWTtBQUNqQixRQUFJLENBQUUsTUFBTSxpQkFBaUIsRUFBRSxDQUM3QixNQUFLLGFBQWEsRUFBRTtNQUd4QixFQUVFLFNBQVMsTUFDVixDQUNGOztFQUdLLGFBQWEsT0FBWTtHQUMvQixNQUFNLFNBQVMsTUFBTTtBQUlyQixPQUhpQyxTQUFTLGtCQUFrQixRQUc5QjtBQUk1QixTQUFLLFdBQVc7QUFDaEIsU0FBSyxPQUFPO0FBQ1osU0FBSyxpQkFBaUIsY0FBYyxLQUFLLGdCQUFnQixXQUFXLEVBQUUsRUFDcEUsTUFBTSxNQUNQLENBQUM7OztFQUlFLGFBQWEsT0FBWTtHQUMvQixNQUFNLFlBQVksS0FBSztBQUN2QixRQUFLLGFBQ0YsTUFBTSxPQUNKLGtCQUFrQixDQUNsQixRQUFRLE1BQU0sYUFBYSxXQUFXLEVBQUUsY0FBYyxZQUFZLENBQUMsU0FBUztBQUNqRixPQUFJLENBQUMsS0FBSyxjQUFjOztBQUV0QixRQUFLLGNBQWMsSUFBSSxNQUFNLFNBQVM7SUFBRSxVQUFVO0lBQU0sU0FBUztJQUFNLENBQUMsQ0FBQztBQUczRSxRQUFLLFlBQVksU0FBUyxDQUFDLEtBQUssV0FBVzs7RUFHMUIsU0FBTTtHQUN2QixNQUFNLGlCQUFpQixJQUFJLEtBQUs7QUFHaEMsVUFBTyxNQUFJOztVQUVMLEtBQUssYUFDSCxNQUFJLElBQUksYUFBYSxlQUFlLENBQUE7aURBQ0MsS0FBSyxtQkFBa0I7Z0JBQ3hELGFBQWEsZUFBZSxDQUFBLEtBQ2hDLFFBQUE7NkJBQ2lCLFVBQWlCLEtBQUssYUFBYSxNQUFNLENBQUEifQ==
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import { SbbDarkModeController, SbbLanguageController, SbbOpenCloseBaseElement, SbbReadonlyMixin, boxSizingStyles, i18nCloseAlert, isLean, isZeroAnimationDuration } from "./core.js";
|
|
5
|
-
import { SbbTransparentButtonElement } from "./button.pure.js";
|
|
6
|
-
import { SbbDividerElement } from "./divider.pure.js";
|
|
7
|
-
import { SbbIconNameMixin } from "./icon.pure.js";
|
|
8
|
-
//#region src/elements/alert/alert/alert.scss?inline
|
|
9
|
-
var alert_default = ":host {\n display: block;\n --sbb-alert-background-color: var(--sbb-background-color-1-inverted);\n --sbb-alert-border-radius: var(--sbb-border-radius-4x);\n --sbb-alert-color: var(--sbb-color-aluminium);\n --sbb-alert-color: light-dark(var(--sbb-color-aluminium), var(--sbb-color-anthracite));\n --sbb-alert-padding: var(--sbb-spacing-responsive-xxs) var(--sbb-spacing-responsive-xs);\n --sbb-alert-icon-size: 1.25rem;\n --sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxs);\n --sbb-alert-gap: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-responsive-xs);\n --sbb-alert-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-alert-timing-function: ease-in;\n --sbb-alert-title-margin-block: 0;\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-alert-icon-size: 1.75rem;\n }\n}\n@media (forced-colors: active) {\n :host {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n border-radius: var(--sbb-alert-border-radius);\n }\n}\n\n:host(:is(:state(state-opening),[state--state-opening]):not([animation=open], [animation=all])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n:host(:is(:state(state-closing),[state--state-closing]):not([animation=close], [animation=all])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n:host([size=s]) {\n --sbb-alert-gap: var(--sbb-spacing-fixed-1x) var(--sbb-spacing-responsive-xxs);\n --sbb-alert-close-icon-margin: var(--sbb-spacing-responsive-xxxs);\n}\n\n:host([size=l]) {\n --sbb-alert-icon-size: var(--sbb-size-icon-ui-small);\n --sbb-alert-title-margin-block: 0 var(--sbb-spacing-fixed-1x);\n}\n@media (min-width: calc(64rem)) {\n :host([size=l]) {\n --sbb-alert-icon-size: 2.125rem;\n }\n}\n\n:host(:not(:is(:state(dark),[state--dark]))) {\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n.sbb-alert__transition-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n opacity: 0;\n}\n:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-alert__transition-wrapper {\n grid-template-rows: 1fr;\n opacity: 1;\n}\n:host(:is(:state(state-opening),[state--state-opening])) .sbb-alert__transition-wrapper {\n animation-name: open, open-opacity;\n animation-fill-mode: forwards;\n animation-duration: var(--sbb-alert-animation-duration);\n animation-timing-function: var(--sbb-alert-timing-function);\n animation-delay: 0s, var(--sbb-alert-animation-duration);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-alert__transition-wrapper {\n animation-name: close-opacity, close;\n animation-fill-mode: forwards;\n animation-duration: var(--sbb-alert-animation-duration);\n animation-timing-function: var(--sbb-alert-timing-function);\n animation-delay: 0s, var(--sbb-disable-animation-duration, var(--sbb-animation-duration-2x));\n}\n\n.sbb-alert__transition-sub-wrapper {\n overflow: hidden;\n}\n\n.sbb-alert {\n --sbb-text-font-size: var(--sbb-text-font-size-s);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n gap: var(--sbb-alert-gap);\n min-width: fit-content;\n padding: var(--sbb-alert-padding);\n overflow: hidden;\n color: var(--sbb-alert-color);\n background-color: var(--sbb-alert-background-color);\n border-radius: var(--sbb-alert-border-radius);\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-alert {\n grid-template-columns: auto 1fr auto;\n align-items: flex-start;\n }\n}\n\n.sbb-alert__icon {\n display: flex;\n align-items: start;\n padding-block: var(--sbb-spacing-fixed-1x);\n min-width: var(--sbb-alert-icon-size);\n --sbb-icon-svg-width: var(--sbb-alert-icon-size);\n --sbb-icon-svg-height: var(--sbb-alert-icon-size);\n}\n\n.sbb-alert__content {\n color-scheme: only light;\n order: 3;\n grid-column: 1/3;\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-alert__content {\n order: initial;\n grid-column-start: initial;\n grid-column-end: initial;\n }\n}\n\n.sbb-alert__content-slot {\n display: inline;\n margin: 0;\n padding: 0;\n}\n\n.sbb-alert__close-button-wrapper {\n color-scheme: only light;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 100%;\n}\n\n@media (min-width: calc(37.5rem)) {\n .sbb-alert__close-button {\n margin-inline-start: var(--sbb-alert-close-icon-margin);\n }\n}\n\n.sbb-alert__close-button-divider {\n display: none;\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-alert__close-button-divider {\n display: block;\n height: calc(100% - var(--sbb-spacing-fixed-1x) * 2);\n }\n}\n\n@keyframes open {\n from {\n grid-template-rows: 0fr;\n }\n to {\n grid-template-rows: 1fr;\n }\n}\n@keyframes open-opacity {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes close {\n from {\n grid-template-rows: 1fr;\n }\n to {\n grid-template-rows: 0fr;\n }\n}\n@keyframes close-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n::slotted(sbb-title) {\n margin-block: var(--sbb-alert-title-margin-block);\n}";
|
|
10
|
-
//#endregion
|
|
11
|
-
//#region src/elements/alert/alert/alert.component.ts
|
|
12
|
-
/**
|
|
13
|
-
* It displays messages which require user's attention.
|
|
14
|
-
*
|
|
15
|
-
* @slot - Use the unnamed slot to add content to the `sbb-alert`. At a minimum an `sbb-title` element and a descriptive text should be used.
|
|
16
|
-
* @slot icon - Should be a `sbb-icon` which is displayed next to the title. Styling is optimized for icons of type HIM-CUS.
|
|
17
|
-
* @slot title - Slot for the title. For the standard `sbb-title` element, the slot is automatically assigned when slotted in the unnamed slot.
|
|
18
|
-
*/
|
|
19
|
-
var SbbAlertElement = (() => {
|
|
20
|
-
let _classSuper = SbbIconNameMixin(SbbReadonlyMixin(SbbOpenCloseBaseElement));
|
|
21
|
-
let _size_decorators;
|
|
22
|
-
let _size_initializers = [];
|
|
23
|
-
let _size_extraInitializers = [];
|
|
24
|
-
let _animation_decorators;
|
|
25
|
-
let _animation_initializers = [];
|
|
26
|
-
let _animation_extraInitializers = [];
|
|
27
|
-
return class SbbAlertElement extends _classSuper {
|
|
28
|
-
constructor() {
|
|
29
|
-
super(...arguments);
|
|
30
|
-
this.#size_accessor_storage = __runInitializers(this, _size_initializers, isLean() ? "s" : "m");
|
|
31
|
-
this.#animation_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _animation_initializers, "all"));
|
|
32
|
-
this._language = (__runInitializers(this, _animation_extraInitializers), new SbbLanguageController(this));
|
|
33
|
-
this._darkModeController = new SbbDarkModeController(this, () => {
|
|
34
|
-
this._syncLinks();
|
|
35
|
-
this._configureTitle();
|
|
36
|
-
this.requestUpdate();
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
static {
|
|
40
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
41
|
-
_size_decorators = [property({ reflect: true })];
|
|
42
|
-
_animation_decorators = [property({ reflect: true })];
|
|
43
|
-
__esDecorate(this, null, _size_decorators, {
|
|
44
|
-
kind: "accessor",
|
|
45
|
-
name: "size",
|
|
46
|
-
static: false,
|
|
47
|
-
private: false,
|
|
48
|
-
access: {
|
|
49
|
-
has: (obj) => "size" in obj,
|
|
50
|
-
get: (obj) => obj.size,
|
|
51
|
-
set: (obj, value) => {
|
|
52
|
-
obj.size = value;
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
metadata: _metadata
|
|
56
|
-
}, _size_initializers, _size_extraInitializers);
|
|
57
|
-
__esDecorate(this, null, _animation_decorators, {
|
|
58
|
-
kind: "accessor",
|
|
59
|
-
name: "animation",
|
|
60
|
-
static: false,
|
|
61
|
-
private: false,
|
|
62
|
-
access: {
|
|
63
|
-
has: (obj) => "animation" in obj,
|
|
64
|
-
get: (obj) => obj.animation,
|
|
65
|
-
set: (obj, value) => {
|
|
66
|
-
obj.animation = value;
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
metadata: _metadata
|
|
70
|
-
}, _animation_initializers, _animation_extraInitializers);
|
|
71
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
72
|
-
enumerable: true,
|
|
73
|
-
configurable: true,
|
|
74
|
-
writable: true,
|
|
75
|
-
value: _metadata
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
static {
|
|
79
|
-
this.elementName = "sbb-alert";
|
|
80
|
-
}
|
|
81
|
-
static {
|
|
82
|
-
this.elementDependencies = [SbbTransparentButtonElement, SbbDividerElement];
|
|
83
|
-
}
|
|
84
|
-
static {
|
|
85
|
-
this.styles = [boxSizingStyles, unsafeCSS(alert_default)];
|
|
86
|
-
}
|
|
87
|
-
static {
|
|
88
|
-
this.events = {
|
|
89
|
-
beforeopen: "beforeopen",
|
|
90
|
-
open: "open",
|
|
91
|
-
beforeclose: "beforeclose",
|
|
92
|
-
close: "close"
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
#size_accessor_storage;
|
|
96
|
-
/**
|
|
97
|
-
* You can choose between `s`, `m` or `l` size.
|
|
98
|
-
* @default 'm' / 's' (lean)
|
|
99
|
-
*/
|
|
100
|
-
get size() {
|
|
101
|
-
return this.#size_accessor_storage;
|
|
102
|
-
}
|
|
103
|
-
set size(value) {
|
|
104
|
-
this.#size_accessor_storage = value;
|
|
105
|
-
}
|
|
106
|
-
#animation_accessor_storage;
|
|
107
|
-
/** The enabled animations. */
|
|
108
|
-
get animation() {
|
|
109
|
-
return this.#animation_accessor_storage;
|
|
110
|
-
}
|
|
111
|
-
set animation(value) {
|
|
112
|
-
this.#animation_accessor_storage = value;
|
|
113
|
-
}
|
|
114
|
-
/** Open the alert. */
|
|
115
|
-
open() {
|
|
116
|
-
this.state = "opening";
|
|
117
|
-
if (!this.dispatchBeforeOpenEvent()) return;
|
|
118
|
-
if (this._isZeroAnimationDuration()) this._handleOpening();
|
|
119
|
-
}
|
|
120
|
-
/** Close the alert. */
|
|
121
|
-
close() {
|
|
122
|
-
if (this.state === "opened" && this.dispatchBeforeCloseEvent()) {
|
|
123
|
-
this.state = "closing";
|
|
124
|
-
if (this._isZeroAnimationDuration()) this._handleClosing();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
firstUpdated(changedProperties) {
|
|
128
|
-
super.firstUpdated(changedProperties);
|
|
129
|
-
this.open();
|
|
130
|
-
}
|
|
131
|
-
willUpdate(changedProperties) {
|
|
132
|
-
super.willUpdate(changedProperties);
|
|
133
|
-
if (changedProperties.has("size")) this._configureTitle();
|
|
134
|
-
}
|
|
135
|
-
_isZeroAnimationDuration() {
|
|
136
|
-
return isZeroAnimationDuration(this, "--sbb-alert-animation-duration");
|
|
137
|
-
}
|
|
138
|
-
_onAnimationEnd(event) {
|
|
139
|
-
if (this.state === "opening" && event.animationName === "open-opacity") this._handleOpening();
|
|
140
|
-
else if (this.state === "closing" && event.animationName === "close") this._handleClosing();
|
|
141
|
-
}
|
|
142
|
-
_handleOpening() {
|
|
143
|
-
this.state = "opened";
|
|
144
|
-
this.dispatchOpenEvent();
|
|
145
|
-
}
|
|
146
|
-
_handleClosing() {
|
|
147
|
-
this.state = "closed";
|
|
148
|
-
this.dispatchCloseEvent();
|
|
149
|
-
setTimeout(() => this.remove());
|
|
150
|
-
}
|
|
151
|
-
_handleSlotchange() {
|
|
152
|
-
this._syncLinks();
|
|
153
|
-
const title = Array.from(this.children).find((el) => el.localName === "sbb-title");
|
|
154
|
-
if (title) title.slot = "title";
|
|
155
|
-
}
|
|
156
|
-
_syncLinks() {
|
|
157
|
-
Array.from(this.querySelectorAll?.("sbb-link") ?? []).forEach((link) => {
|
|
158
|
-
customElements.upgrade(link);
|
|
159
|
-
link.negative = this._isLightMode();
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
_configureTitle() {
|
|
163
|
-
const title = this.querySelector?.("sbb-title");
|
|
164
|
-
if (title) {
|
|
165
|
-
customElements.upgrade(title);
|
|
166
|
-
title.negative = this._isLightMode();
|
|
167
|
-
title.visualLevel = this.size === "l" ? "3" : "5";
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
_isLightMode() {
|
|
171
|
-
return !this._darkModeController.matches();
|
|
172
|
-
}
|
|
173
|
-
renderIconName() {
|
|
174
|
-
return super.renderIconName() || "info";
|
|
175
|
-
}
|
|
176
|
-
render() {
|
|
177
|
-
return html`
|
|
178
|
-
<div class="sbb-alert__transition-wrapper" @animationend=${this._onAnimationEnd}>
|
|
179
|
-
<!-- sub wrapper needed to properly support fade in animation -->
|
|
180
|
-
<div class="sbb-alert__transition-sub-wrapper">
|
|
181
|
-
<div class="sbb-alert">
|
|
182
|
-
<span class="sbb-alert__icon"> ${this.renderIconSlot()} </span>
|
|
183
|
-
<span class="sbb-alert__content">
|
|
184
|
-
<slot name="title" @slotchange=${this._configureTitle}></slot>
|
|
185
|
-
<p class="sbb-alert__content-slot">
|
|
186
|
-
<slot @slotchange=${this._handleSlotchange}></slot>
|
|
187
|
-
</p>
|
|
188
|
-
</span>
|
|
189
|
-
${!this.readOnly ? html`<span class="sbb-alert__close-button-wrapper">
|
|
190
|
-
<sbb-divider
|
|
191
|
-
orientation="vertical"
|
|
192
|
-
?negative=${this._isLightMode()}
|
|
193
|
-
class="sbb-alert__close-button-divider"
|
|
194
|
-
></sbb-divider>
|
|
195
|
-
<sbb-transparent-button
|
|
196
|
-
?negative=${this._isLightMode()}
|
|
197
|
-
size=${this.size === "l" ? "m" : this.size}
|
|
198
|
-
icon-name="cross-small"
|
|
199
|
-
@click=${() => this.close()}
|
|
200
|
-
aria-label=${i18nCloseAlert[this._language.current]}
|
|
201
|
-
class="sbb-alert__close-button"
|
|
202
|
-
></sbb-transparent-button>
|
|
203
|
-
</span>` : nothing}
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
`;
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
})();
|
|
211
|
-
//#endregion
|
|
212
|
-
export { SbbAlertElement as t };
|
|
213
|
-
|
|
214
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LUNuMzZrX0hmLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9hbGVydC9hbGVydC9hbGVydC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9hbGVydC9hbGVydC9hbGVydC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuLy8gT3Blbi9DbG9zZSBhbmltYXRpb24gdmFyc1xuJG9wZW4tYW5pbS1yb3dzLWZyb206IDBmcjtcbiRvcGVuLWFuaW0tcm93cy10bzogMWZyO1xuJG9wZW4tYW5pbS1vcGFjaXR5LWZyb206IDA7XG4kb3Blbi1hbmltLW9wYWNpdHktdG86IDE7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgLS1zYmItYWxlcnQtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMS1pbnZlcnRlZCk7XG4gIC0tc2JiLWFsZXJ0LWJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLTR4KTtcbiAgLS1zYmItYWxlcnQtY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLWFsdW1pbml1bSksIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSk7XG4gIC0tc2JiLWFsZXJ0LXBhZGRpbmc6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHhzKSB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXhzKTtcbiAgLS1zYmItYWxlcnQtaWNvbi1zaXplOiAje3NiYi5weC10by1yZW0tYnVpbGQoMjApfTtcbiAgLS1zYmItYWxlcnQtY2xvc2UtaWNvbi1tYXJnaW46IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHhzKTtcbiAgLS1zYmItYWxlcnQtZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCkgdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14cyk7XG4gIC0tc2JiLWFsZXJ0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG4gIC0tc2JiLWFsZXJ0LXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgLS1zYmItYWxlcnQtdGl0bGUtbWFyZ2luLWJsb2NrOiAwO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1hbGVydC1pY29uLXNpemU6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgyOCl9O1xuICB9XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC8vIFVzZSBvdXRsaW5lIGhlcmUgdG8gbm90IGluZmx1ZW5jZSBjb250ZW50IHBvc2l0aW9uLlxuICAgIC8vIER1ZSB0byBvdmVyZmxvdyBoaWRkZW4gb2YgaW5uZXIgZWxlbWVudHMgaXQncyBwbGFjZWQgb24gaG9zdC5cbiAgICBvdXRsaW5lOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZCBDYW52YXNUZXh0O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1hbGVydC1ib3JkZXItcmFkaXVzKTtcbiAgfVxufVxuXG4vLyBCeSBkZWZhdWx0LCB0aGUgb3BlbiBhbmltYXRpb24gaXMgZGlzYWJsZWRcbjpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuaW5nKTpub3QoW2FuaW1hdGlvbj0nb3BlbiddLCBbYW5pbWF0aW9uPSdhbGwnXSkpIHtcbiAgQGluY2x1ZGUgc2JiLmRpc2FibGUtYW5pbWF0aW9uO1xufVxuXG46aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZyk6bm90KFthbmltYXRpb249J2Nsb3NlJ10sIFthbmltYXRpb249J2FsbCddKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItYWxlcnQtZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCkgdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHMpO1xuICAtLXNiYi1hbGVydC1jbG9zZS1pY29uLW1hcmdpbjogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbn1cblxuOmhvc3QoW3NpemU9J2wnXSkge1xuICAtLXNiYi1hbGVydC1pY29uLXNpemU6IHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpO1xuICAtLXNiYi1hbGVydC10aXRsZS1tYXJnaW4tYmxvY2s6IDAgdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1hbGVydC1pY29uLXNpemU6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzNCl9O1xuICB9XG59XG5cbjpob3N0KDpub3QoOnN0YXRlKGRhcmspKSkge1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuLnNiYi1hbGVydF9fdHJhbnNpdGlvbi13cmFwcGVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy1mcm9tfTtcbiAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmluZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBvcGVuLCBvcGVuLW9wYWNpdHk7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItYWxlcnQtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYWxlcnQtdGltaW5nLWZ1bmN0aW9uKTtcbiAgICBhbmltYXRpb24tZGVsYXk6IDBzLCB2YXIoLS1zYmItYWxlcnQtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgfVxuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkgJiB7XG4gICAgYW5pbWF0aW9uOiB7XG4gICAgICBuYW1lOiBjbG9zZS1vcGFjaXR5LCBjbG9zZTtcbiAgICAgIGZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWFsZXJ0LWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbGVydC10aW1pbmctZnVuY3Rpb24pO1xuICAgICAgZGVsYXk6IDBzLCB2YXIoLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tMngpKTtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1hbGVydF9fdHJhbnNpdGlvbi1zdWItd3JhcHBlciB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zYmItYWxlcnQge1xuICBAaW5jbHVkZSBzYmIudGV4dC1zLS1yZWd1bGFyO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLWFsZXJ0LWdhcCk7XG4gIG1pbi13aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi1hbGVydC1wYWRkaW5nKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6IHZhcigtLXNiYi1hbGVydC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1hbGVydC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWFsZXJ0LWJvcmRlci1yYWRpdXMpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbn1cblxuLnNiYi1hbGVydF9faWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuICBtaW4td2lkdGg6IHZhcigtLXNiYi1hbGVydC1pY29uLXNpemUpO1xuXG4gIC0tc2JiLWljb24tc3ZnLXdpZHRoOiB2YXIoLS1zYmItYWxlcnQtaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItYWxlcnQtaWNvbi1zaXplKTtcbn1cblxuLnNiYi1hbGVydF9fY29udGVudCB7XG4gIC8vIEFzIHRoZSBiYWNrZ3JvdW5kIHR1cm5zIHdoaXRlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFsbCBjb250ZW50IGlzIGRpc3BsYXllZCBpbiBsaWdodCBtb2RlLlxuICBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7XG4gIG9yZGVyOiAzO1xuICBncmlkLWNvbHVtbjogMSAvIDM7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBzbWFsbCkge1xuICAgIG9yZGVyOiBpbml0aWFsO1xuICAgIGdyaWQtY29sdW1uLXN0YXJ0OiBpbml0aWFsO1xuICAgIGdyaWQtY29sdW1uLWVuZDogaW5pdGlhbDtcbiAgfVxufVxuXG4uc2JiLWFsZXJ0X19jb250ZW50LXNsb3Qge1xuICAvLyBSZXNldCBwYXJhZ3JhcGggc3R5bGVzXG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4uc2JiLWFsZXJ0X19jbG9zZS1idXR0b24td3JhcHBlciB7XG4gIC8vIEFzIHRoZSBiYWNrZ3JvdW5kIHR1cm5zIHdoaXRlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBidXR0b24gaXMgZGlzcGxheWVkIGluIGxpZ2h0IG1vZGUuXG4gIGNvbG9yLXNjaGVtZTogb25seSBsaWdodDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2JiLWFsZXJ0X19jbG9zZS1idXR0b24ge1xuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IHNtYWxsKSB7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc2JiLWFsZXJ0LWNsb3NlLWljb24tbWFyZ2luKTtcbiAgfVxufVxuXG4uc2JiLWFsZXJ0X19jbG9zZS1idXR0b24tZGl2aWRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBzbWFsbCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gKHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KSAqIDIpKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9wZW4ge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICB9XG5cbiAgdG8ge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgb3Blbi1vcGFjaXR5IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Uge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgfVxuXG4gIHRvIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Utb3BhY2l0eSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LXRvfTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tfTtcbiAgfVxufVxuXG46OnNsb3R0ZWQoc2JiLXRpdGxlKSB7XG4gIC8vIE92ZXJ3cml0ZSBzYmItdGl0bGUgZGVmYXVsdCBtYXJnaW5cbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zYmItYWxlcnQtdGl0bGUtbWFyZ2luLWJsb2NrKTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQgfSBmcm9tICcuLi8uLi9idXR0b24ucHVyZS50cyc7XG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIGkxOG5DbG9zZUFsZXJ0LFxuICBpc0xlYW4sXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIsXG4gIHR5cGUgU2JiRWxlbWVudFR5cGUsXG4gIFNiYkxhbmd1YWdlQ29udHJvbGxlcixcbiAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQsXG4gIFNiYlJlYWRvbmx5TWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9kaXZpZGVyLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uLy4uL2ljb24ucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkxpbmtFbGVtZW50IH0gZnJvbSAnLi4vLi4vbGluay5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiVGl0bGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vdGl0bGUucHVyZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2FsZXJ0LnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBtZXNzYWdlcyB3aGljaCByZXF1aXJlIHVzZXIncyBhdHRlbnRpb24uXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi1hbGVydGAuIEF0IGEgbWluaW11bSBhbiBgc2JiLXRpdGxlYCBlbGVtZW50IGFuZCBhIGRlc2NyaXB0aXZlIHRleHQgc2hvdWxkIGJlIHVzZWQuXG4gKiBAc2xvdCBpY29uIC0gU2hvdWxkIGJlIGEgYHNiYi1pY29uYCB3aGljaCBpcyBkaXNwbGF5ZWQgbmV4dCB0byB0aGUgdGl0bGUuIFN0eWxpbmcgaXMgb3B0aW1pemVkIGZvciBpY29ucyBvZiB0eXBlIEhJTS1DVVMuXG4gKiBAc2xvdCB0aXRsZSAtIFNsb3QgZm9yIHRoZSB0aXRsZS4gRm9yIHRoZSBzdGFuZGFyZCBgc2JiLXRpdGxlYCBlbGVtZW50LCB0aGUgc2xvdCBpcyBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHdoZW4gc2xvdHRlZCBpbiB0aGUgdW5uYW1lZCBzbG90LlxuICovXG5leHBvcnQgY2xhc3MgU2JiQWxlcnRFbGVtZW50IGV4dGVuZHMgU2JiSWNvbk5hbWVNaXhpbihTYmJSZWFkb25seU1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWFsZXJ0JztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1xuICAgIFNiYlRyYW5zcGFyZW50QnV0dG9uRWxlbWVudCxcbiAgICBTYmJEaXZpZGVyRWxlbWVudCxcbiAgXTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY2hvb3NlIGJldHdlZW4gYHNgLCBgbWAgb3IgYGxgIHNpemUuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8ICdsJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBUaGUgZW5hYmxlZCBhbmltYXRpb25zLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBhbmltYXRpb246ICdvcGVuJyB8ICdjbG9zZScgfCAnYWxsJyB8ICdub25lJyA9ICdhbGwnO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZGFya01vZGVDb250cm9sbGVyID0gbmV3IFNiYkRhcmtNb2RlQ29udHJvbGxlcih0aGlzLCAoKSA9PiB7XG4gICAgdGhpcy5fc3luY0xpbmtzKCk7XG4gICAgdGhpcy5fY29uZmlndXJlVGl0bGUoKTtcbiAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKTtcbiAgfSk7XG5cbiAgLyoqIE9wZW4gdGhlIGFsZXJ0LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuXG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSB0aGUgYWxlcnQuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgJiYgdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUaXRsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItYWxlcnQtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnICYmIGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuLW9wYWNpdHknKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2luZycgJiYgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY0xpbmtzKCk7XG5cbiAgICBjb25zdCB0aXRsZSA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbikuZmluZCgoZWwpID0+IGVsLmxvY2FsTmFtZSA9PT0gJ3NiYi10aXRsZScpO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGl0bGUuc2xvdCA9ICd0aXRsZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0xpbmtzKCk6IHZvaWQge1xuICAgIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiTGlua0VsZW1lbnQ+KCdzYmItbGluaycpID8/IFtdKS5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKGxpbmspO1xuICAgICAgbGluay5uZWdhdGl2ZSA9IHRoaXMuX2lzTGlnaHRNb2RlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVUaXRsZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMucXVlcnlTZWxlY3Rvcj8uPFNiYlRpdGxlRWxlbWVudD4oJ3NiYi10aXRsZScpO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZSh0aXRsZSk7XG4gICAgICB0aXRsZS5uZWdhdGl2ZSA9IHRoaXMuX2lzTGlnaHRNb2RlKCk7XG4gICAgICB0aXRsZS52aXN1YWxMZXZlbCA9IHRoaXMuc2l6ZSA9PT0gJ2wnID8gJzMnIDogJzUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzTGlnaHRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fZGFya01vZGVDb250cm9sbGVyLm1hdGNoZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJJY29uTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdXBlci5yZW5kZXJJY29uTmFtZSgpIHx8ICdpbmZvJztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hbGVydF9fdHJhbnNpdGlvbi13cmFwcGVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfT5cbiAgICAgICAgPCEtLSBzdWIgd3JhcHBlciBuZWVkZWQgdG8gcHJvcGVybHkgc3VwcG9ydCBmYWRlIGluIGFuaW1hdGlvbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hbGVydF9fdHJhbnNpdGlvbi1zdWItd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItYWxlcnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWFsZXJ0X19pY29uXCI+ICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1hbGVydF9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZVRpdGxlfT48L3Nsb3Q+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwic2JiLWFsZXJ0X19jb250ZW50LXNsb3RcIj5cbiAgICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2hhbmRsZVNsb3RjaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgJHshdGhpcy5yZWFkT25seVxuICAgICAgICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItYWxlcnRfX2Nsb3NlLWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c2JiLWRpdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLWFsZXJ0X19jbG9zZS1idXR0b24tZGl2aWRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9zYmItZGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICAgICAgICAgIHNpemU9JHt0aGlzLnNpemUgPT09ICdsJyA/ICdtJyA6IHRoaXMuc2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgaWNvbi1uYW1lPVwiY3Jvc3Mtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLmNsb3NlKCl9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9JHtpMThuQ2xvc2VBbGVydFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYWxlcnRfX2Nsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+PC9zYmItdHJhbnNwYXJlbnQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYWxlcnQnOiBTYmJBbGVydEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDb0NhLHlCQUFlO21CQUFTLGlCQUFpQixpQkFBaUIsd0JBQXdCLENBQUM7Ozs7Ozs7Y0FBbkYsd0JBQXdCLFlBQTJEOzs7QUFrQmpELFNBQUEsd0JBQUEsa0JBQUEsTUFBQSxvQkFBd0IsUUFBUSxHQUFHLE1BQU0sSUFBRztBQUc1QyxTQUFBLDhCQUFBLGtCQUFBLE1BQUEsd0JBQUEsRUFBQSxrQkFBQSxNQUFBLHlCQUErQyxNQUFLO0FBRXpGLFFBQUEsYUFBUyxrQkFBQSxNQUFBLDZCQUFBLEVBQUcsSUFBSSxzQkFBc0IsS0FBSztBQUMzQyxRQUFBLHNCQUFzQixJQUFJLHNCQUFzQixZQUFXO0FBQ2pFLFNBQUssWUFBWTtBQUNqQixTQUFLLGlCQUFpQjtBQUN0QixTQUFLLGVBQWU7S0FDcEI7Ozs7dUJBVkQsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7NEJBRzNCLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBO0FBSEMsZ0JBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBSixPQUFJOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsb0JBQUEsd0JBQUE7QUFHcEIsZ0JBQUEsTUFBQSxNQUFBLHVCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFTLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBVCxZQUFTOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEseUJBQUEsNkJBQUE7Ozs7Ozs7OztBQXBCdEIsUUFBQSxjQUFzQjs7O0FBQy9CLFFBQUEsc0JBQXdDLENBQzdELDZCQUNBLGtCQUNEOzs7QUFDc0IsUUFBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLGNBQU0sQ0FBQzs7O0FBQ25ELFFBQUEsU0FBUztJQUN2QyxZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixPQUFPO0lBQ0M7O0VBTW1COzs7OztFQUFBLElBQWdCLE9BQUk7QUFBQSxVQUFBLE1BQUE7O0VBQXBCLElBQWdCLEtBQUksT0FBQTtBQUFBLFNBQUEsd0JBQUE7O0VBR3BCOztFQUFBLElBQWdCLFlBQVM7QUFBQSxVQUFBLE1BQUE7O0VBQXpCLElBQWdCLFVBQVMsT0FBQTtBQUFBLFNBQUEsNkJBQUE7OztFQVUvQyxPQUFJO0FBQ1QsUUFBSyxRQUFRO0FBRWIsT0FBSSxDQUFDLEtBQUsseUJBQXlCLENBQ2pDO0FBS0YsT0FBSSxLQUFLLDBCQUEwQixDQUNqQyxNQUFLLGdCQUFnQjs7O0VBS2xCLFFBQUs7QUFDVixPQUFJLEtBQUssVUFBVSxZQUFZLEtBQUssMEJBQTBCLEVBQUU7QUFDOUQsU0FBSyxRQUFRO0FBSWIsUUFBSSxLQUFLLDBCQUEwQixDQUNqQyxNQUFLLGdCQUFnQjs7O0VBS1IsYUFBYSxtQkFBdUM7QUFDckUsU0FBTSxhQUFhLGtCQUFrQjtBQUVyQyxRQUFLLE1BQU07O0VBR00sV0FBVyxtQkFBdUM7QUFDbkUsU0FBTSxXQUFXLGtCQUFrQjtBQUVuQyxPQUFJLGtCQUFrQixJQUFJLE9BQU8sQ0FDL0IsTUFBSyxpQkFBaUI7O0VBSWxCLDJCQUF3QjtBQUM5QixVQUFPLHdCQUF3QixNQUFNLGlDQUFpQzs7RUFHaEUsZ0JBQWdCLE9BQXFCO0FBQzNDLE9BQUksS0FBSyxVQUFVLGFBQWEsTUFBTSxrQkFBa0IsZUFDdEQsTUFBSyxnQkFBZ0I7WUFDWixLQUFLLFVBQVUsYUFBYSxNQUFNLGtCQUFrQixRQUM3RCxNQUFLLGdCQUFnQjs7RUFJakIsaUJBQWM7QUFDcEIsUUFBSyxRQUFRO0FBQ2IsUUFBSyxtQkFBbUI7O0VBR2xCLGlCQUFjO0FBQ3BCLFFBQUssUUFBUTtBQUNiLFFBQUssb0JBQW9CO0FBQ3pCLG9CQUFpQixLQUFLLFFBQVEsQ0FBQzs7RUFHekIsb0JBQWlCO0FBQ3ZCLFFBQUssWUFBWTtHQUVqQixNQUFNLFFBQVEsTUFBTSxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsWUFBWTtBQUNsRixPQUFJLE1BQ0YsT0FBTSxPQUFPOztFQUlULGFBQVU7QUFDaEIsU0FBTSxLQUFLLEtBQUssbUJBQW1DLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLFNBQVE7QUFDckYsbUJBQWUsUUFBUSxLQUFLO0FBQzVCLFNBQUssV0FBVyxLQUFLLGNBQWM7S0FDbkM7O0VBR0ksa0JBQWU7R0FDckIsTUFBTSxRQUFRLEtBQUssZ0JBQWlDLFlBQVk7QUFDaEUsT0FBSSxPQUFPO0FBQ1QsbUJBQWUsUUFBUSxNQUFNO0FBQzdCLFVBQU0sV0FBVyxLQUFLLGNBQWM7QUFDcEMsVUFBTSxjQUFjLEtBQUssU0FBUyxNQUFNLE1BQU07OztFQUkxQyxlQUFZO0FBQ2xCLFVBQU8sQ0FBQyxLQUFLLG9CQUFvQixTQUFTOztFQUd6QixpQkFBYztBQUMvQixVQUFPLE1BQU0sZ0JBQWdCLElBQUk7O0VBR2hCLFNBQU07QUFDdkIsVUFBTyxJQUFJO2lFQUNrRCxLQUFLLGdCQUFlOzs7OzZDQUl4QyxLQUFLLGdCQUFnQixDQUFBOzsrQ0FFbkIsS0FBSyxnQkFBZTs7b0NBRS9CLEtBQUssa0JBQWlCOzs7Y0FHNUMsQ0FBQyxLQUFLLFdBQ0osSUFBSTs7O2dDQUdZLEtBQUssY0FBYyxDQUFBOzs7O2dDQUluQixLQUFLLGNBQWMsQ0FBQTsyQkFDeEIsS0FBSyxTQUFTLE1BQU0sTUFBTSxLQUFLLEtBQUE7O21DQUV2QixLQUFLLE9BQU8sQ0FBQTtpQ0FDZCxlQUFlLEtBQUssVUFBVSxTQUFBOzs7MkJBSS9DLFFBQUEifQ==
|