@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776959321 → 5.0.0-next-dev.1777014673
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 -0
- package/core.css +19 -0
- package/custom-elements.json +2163 -2163
- 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/step.component-D1Gq0VRW.js +146 -0
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +1 -1
- package/development/stepper.js +1 -1
- package/development/stepper.pure.js +1 -1
- package/off-brand-theme.css +19 -0
- package/package.json +2 -2
- package/safety-theme.css +19 -0
- package/standard-theme.css +19 -0
- package/{step.component-sQbJslHx.js → step.component-DuLOqjZk.js} +3 -5
- package/stepper/step/step.component.js +1 -1
- package/stepper.js +1 -1
- package/stepper.pure.js +1 -1
- 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/step.component-CVWxYkrv.js +0 -148
|
@@ -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==
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { html, unsafeCSS } from "lit";
|
|
2
|
-
import { SbbElement, SbbPropertyWatcherController, appendAriaElements, boxSizingStyles, removeAriaElements } from "./core.js";
|
|
3
|
-
import { ResizeController } from "@lit-labs/observers/resize-controller.js";
|
|
4
|
-
//#region src/elements/stepper/step/step.scss?inline
|
|
5
|
-
var step_default = ":host {\n --sbb-step-opacity: 0;\n --sbb-step-margin-inline-start: var(--sbb-spacing-fixed-4x);\n --sbb-step-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-2x)\n );\n display: contents;\n font-size: var(--sbb-text-font-size-m);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n}\n\n:host(:is(:state(selected),[state--selected])) {\n --sbb-step-opacity: 1;\n --sbb-step-display: block;\n --sbb-step-height: fit-content;\n --sbb-step-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n --sbb-step-animation-delay: var(--sbb-step-animation-duration);\n}\n\n:host(:is(:state(orientation-horizontal),[state--orientation-horizontal])) {\n --sbb-step-position: absolute;\n --sbb-step-inset-block-start: 0;\n}\n\n:host(:is(:state(orientation-vertical),[state--orientation-vertical])) .sbb-step--wrapper {\n margin-inline-start: var(--sbb-step-margin-inline-start);\n opacity: 0;\n height: 0;\n transition: display var(--sbb-step-animation-duration) var(--sbb-animation-easing), height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing), opacity var(--sbb-step-animation-duration) var(--sbb-animation-easing);\n transition-behavior: allow-discrete;\n}\n:host(:is(:state(selected),[state--selected]):is(:state(orientation-vertical),[state--orientation-vertical])) .sbb-step--wrapper {\n opacity: 1;\n height: var(--sbb-stepper-content-height);\n transition: display var(--sbb-step-animation-duration) var(--sbb-animation-easing), height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing), opacity var(--sbb-step-animation-duration) var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);\n transition-behavior: allow-discrete;\n}\n\n.sbb-step {\n position: var(--sbb-step-position, initial);\n width: 100%;\n inset-block-start: var(--sbb-step-inset-block-start, unset);\n opacity: var(--sbb-step-opacity);\n display: var(--sbb-step-display, none);\n height: var(--sbb-step-height, 0);\n transition-property: display, opacity;\n transition-duration: var(--sbb-step-animation-duration);\n transition-delay: var(--sbb-step-animation-delay, 0);\n transition-timing-function: var(--sbb-animation-easing);\n transition-behavior: allow-discrete;\n}\n@starting-style {\n .sbb-step {\n --sbb-step-opacity: 0;\n }\n}";
|
|
6
|
-
//#endregion
|
|
7
|
-
//#region src/elements/stepper/step/step.component.ts
|
|
8
|
-
/**
|
|
9
|
-
* Combined with a `sbb-stepper`, it displays a step's content.
|
|
10
|
-
*
|
|
11
|
-
* @slot - Use the unnamed slot to provide content.
|
|
12
|
-
*/
|
|
13
|
-
var SbbStepElement = class extends SbbElement {
|
|
14
|
-
static {
|
|
15
|
-
this.elementName = "sbb-step";
|
|
16
|
-
}
|
|
17
|
-
static {
|
|
18
|
-
this.role = "tabpanel";
|
|
19
|
-
}
|
|
20
|
-
static {
|
|
21
|
-
this.styles = [boxSizingStyles, unsafeCSS(step_default)];
|
|
22
|
-
}
|
|
23
|
-
static {
|
|
24
|
-
this.events = {
|
|
25
|
-
validate: "validate",
|
|
26
|
-
resizechange: "resizechange"
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/** The label of the step. */
|
|
30
|
-
get label() {
|
|
31
|
-
return this._label;
|
|
32
|
-
}
|
|
33
|
-
get stepper() {
|
|
34
|
-
return this.closest("sbb-stepper");
|
|
35
|
-
}
|
|
36
|
-
constructor() {
|
|
37
|
-
super();
|
|
38
|
-
this._stepResizeObserver = new ResizeController(this, {
|
|
39
|
-
target: null,
|
|
40
|
-
skipInitial: true,
|
|
41
|
-
callback: () => setTimeout(() => this._onStepElementResize())
|
|
42
|
-
});
|
|
43
|
-
this._label = null;
|
|
44
|
-
this.addEventListener?.("click", (e) => this._handleClick(e));
|
|
45
|
-
this.addController(new SbbPropertyWatcherController(this, () => this.stepper, { orientation: (s) => {
|
|
46
|
-
if (this._previousOrientation) this.internals.states.delete(`orientation-${this._previousOrientation}`);
|
|
47
|
-
this._previousOrientation = s.orientation;
|
|
48
|
-
if (this._previousOrientation) this.internals.states.add(`orientation-${this._previousOrientation}`);
|
|
49
|
-
} }));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Selects and configures the step.
|
|
53
|
-
* @internal
|
|
54
|
-
* TODO: @breaking-change: make protected
|
|
55
|
-
*/
|
|
56
|
-
select() {
|
|
57
|
-
if (!this.hasUpdated || !this.label) return;
|
|
58
|
-
this.internals.states.add("selected");
|
|
59
|
-
this.label.select();
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Deselects and configures the step.
|
|
63
|
-
* @internal
|
|
64
|
-
* TODO: @breaking-change: make protected
|
|
65
|
-
*/
|
|
66
|
-
deselect() {
|
|
67
|
-
if (!this.label) return;
|
|
68
|
-
this.internals.states.delete("selected");
|
|
69
|
-
this.label.deselect();
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Emits a validate event whenever step switch is triggered.
|
|
73
|
-
* @internal
|
|
74
|
-
* TODO: @breaking-change: make protected
|
|
75
|
-
*/
|
|
76
|
-
validate(eventData) {
|
|
77
|
-
/**
|
|
78
|
-
* @type {CustomEvent<SbbStepValidateEventDetails>}
|
|
79
|
-
* The validate event is dispatched when a step change is triggered. Can be canceled to abort the step change.
|
|
80
|
-
*/
|
|
81
|
-
return this.dispatchEvent(new CustomEvent("validate", {
|
|
82
|
-
bubbles: true,
|
|
83
|
-
composed: true,
|
|
84
|
-
cancelable: true,
|
|
85
|
-
detail: eventData
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Configures the step.
|
|
90
|
-
* @internal
|
|
91
|
-
* TODO: @breaking-change: make protected
|
|
92
|
-
*/
|
|
93
|
-
configure(stepperLoaded) {
|
|
94
|
-
if (stepperLoaded) this._assignLabel();
|
|
95
|
-
}
|
|
96
|
-
/** Watches for clicked elements with `sbb-stepper-next` or `sbb-stepper-previous` attributes. */
|
|
97
|
-
_handleClick(event) {
|
|
98
|
-
const composedPathElements = event.composedPath().filter((el) => el instanceof window.HTMLElement);
|
|
99
|
-
if (composedPathElements.some((el) => this._isGoNextElement(el))) this.stepper?.next();
|
|
100
|
-
else if (composedPathElements.some((el) => this._isGoPreviousElement(el))) this.stepper?.previous();
|
|
101
|
-
}
|
|
102
|
-
_isGoNextElement(element) {
|
|
103
|
-
return element.hasAttribute("sbb-stepper-next") && !element.hasAttribute("disabled");
|
|
104
|
-
}
|
|
105
|
-
_isGoPreviousElement(element) {
|
|
106
|
-
return element.hasAttribute("sbb-stepper-previous") && !element.hasAttribute("disabled");
|
|
107
|
-
}
|
|
108
|
-
_onStepElementResize() {
|
|
109
|
-
if (!this.matches(":is(:state(selected),[state--selected])")) return;
|
|
110
|
-
/**
|
|
111
|
-
* @internal
|
|
112
|
-
* Emits when a resize happens, used to avoid setting the height of the stepper from the step component.
|
|
113
|
-
*/
|
|
114
|
-
this.dispatchEvent(new Event("resizechange", { bubbles: true }));
|
|
115
|
-
}
|
|
116
|
-
connectedCallback() {
|
|
117
|
-
super.connectedCallback();
|
|
118
|
-
this.slot ||= "step";
|
|
119
|
-
this._assignLabel();
|
|
120
|
-
}
|
|
121
|
-
firstUpdated(changedProperties) {
|
|
122
|
-
super.firstUpdated(changedProperties);
|
|
123
|
-
this.updateComplete.then(() => {
|
|
124
|
-
this._stepResizeObserver.observe(this.shadowRoot.querySelector(".sbb-step"));
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
_assignLabel() {
|
|
128
|
-
let previousSibling = this.previousElementSibling;
|
|
129
|
-
while (previousSibling && previousSibling.localName !== "sbb-step-label") previousSibling = previousSibling.previousElementSibling;
|
|
130
|
-
const value = previousSibling;
|
|
131
|
-
this.internals.ariaLabelledByElements = removeAriaElements(this.internals.ariaLabelledByElements, this._label);
|
|
132
|
-
this._label = value instanceof Element ? value : null;
|
|
133
|
-
this.internals.ariaLabelledByElements = appendAriaElements(this.internals.ariaLabelledByElements, this._label);
|
|
134
|
-
}
|
|
135
|
-
render() {
|
|
136
|
-
return html`
|
|
137
|
-
<div class="sbb-step--wrapper">
|
|
138
|
-
<div class="sbb-step">
|
|
139
|
-
<slot></slot>
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
`;
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
//#endregion
|
|
146
|
-
export { SbbStepElement as t };
|
|
147
|
-
|
|
148
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5jb21wb25lbnQtQ1ZXeFlrcnYuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcC9zdGVwLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcC9zdGVwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXN0ZXAtb3BhY2l0eTogMDtcbiAgLS1zYmItc3RlcC1tYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gIC0tc2JiLXN0ZXAtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcblxuICBkaXNwbGF5OiBjb250ZW50cztcbiAgZm9udC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbn1cblxuOmhvc3QoOnN0YXRlKHNlbGVjdGVkKSkge1xuICAtLXNiYi1zdGVwLW9wYWNpdHk6IDE7XG4gIC0tc2JiLXN0ZXAtZGlzcGxheTogYmxvY2s7XG4gIC0tc2JiLXN0ZXAtaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgLS1zYmItc3RlcC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLXNiYi1zdGVwLWFuaW1hdGlvbi1kZWxheTogdmFyKC0tc2JiLXN0ZXAtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbn1cblxuOmhvc3QoOnN0YXRlKG9yaWVudGF0aW9uLWhvcml6b250YWwpKSB7XG4gIC0tc2JiLXN0ZXAtcG9zaXRpb246IGFic29sdXRlO1xuICAtLXNiYi1zdGVwLWluc2V0LWJsb2NrLXN0YXJ0OiAwO1xufVxuXG4uc2JiLXN0ZXAtLXdyYXBwZXIge1xuICA6aG9zdCg6c3RhdGUob3JpZW50YXRpb24tdmVydGljYWwpKSAmIHtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3RlcC1tYXJnaW4taW5saW5lLXN0YXJ0KTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGhlaWdodDogMDtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgZGlzcGxheSB2YXIoLS1zYmItc3RlcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKSxcbiAgICAgIGhlaWdodCB2YXIoLS1zYmItc3RlcHBlci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKSxcbiAgICAgIG9wYWNpdHkgdmFyKC0tc2JiLXN0ZXAtYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG5cbiAgICAvLyBFeHBlcmltZW50YWwgcHJvcGVydHksIGJ1dCBzdXBwb3J0ZWQgaW4gZXZlcnkgbWFqb3IgYnJvd3Nlci5cbiAgICB0cmFuc2l0aW9uLWJlaGF2aW9yOiBhbGxvdy1kaXNjcmV0ZTtcbiAgfVxuXG4gIDpob3N0KDpzdGF0ZShzZWxlY3RlZCk6c3RhdGUob3JpZW50YXRpb24tdmVydGljYWwpKSAmIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGhlaWdodDogdmFyKC0tc2JiLXN0ZXBwZXItY29udGVudC1oZWlnaHQpO1xuICAgIHRyYW5zaXRpb246XG4gICAgICBkaXNwbGF5IHZhcigtLXNiYi1zdGVwLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpLFxuICAgICAgaGVpZ2h0IHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpLFxuICAgICAgb3BhY2l0eSB2YXIoLS1zYmItc3RlcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbilcbiAgICAgICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuXG4gICAgLy8gRXhwZXJpbWVudGFsIHByb3BlcnR5LCBidXQgc3VwcG9ydGVkIGluIGV2ZXJ5IG1ham9yIGJyb3dzZXIuXG4gICAgdHJhbnNpdGlvbi1iZWhhdmlvcjogYWxsb3ctZGlzY3JldGU7XG4gIH1cbn1cblxuLnNiYi1zdGVwIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi1zdGVwLXBvc2l0aW9uLCBpbml0aWFsKTtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItc3RlcC1pbnNldC1ibG9jay1zdGFydCwgdW5zZXQpO1xuICBvcGFjaXR5OiB2YXIoLS1zYmItc3RlcC1vcGFjaXR5KTtcbiAgZGlzcGxheTogdmFyKC0tc2JiLXN0ZXAtZGlzcGxheSwgbm9uZSk7XG4gIGhlaWdodDogdmFyKC0tc2JiLXN0ZXAtaGVpZ2h0LCAwKTtcbiAgdHJhbnNpdGlvbjoge1xuICAgIHByb3BlcnR5OiBkaXNwbGF5LCBvcGFjaXR5O1xuICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItc3RlcC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgIGRlbGF5OiB2YXIoLS1zYmItc3RlcC1hbmltYXRpb24tZGVsYXksIDApO1xuICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICB9XG5cbiAgLy8gRXhwZXJpbWVudGFsIHByb3BlcnR5LCBidXQgc3VwcG9ydGVkIGluIGV2ZXJ5IG1ham9yIGJyb3dzZXIuXG4gIHRyYW5zaXRpb24tYmVoYXZpb3I6IGFsbG93LWRpc2NyZXRlO1xuXG4gIC8vIEV4cGVyaW1lbnRhbCBwcm9wZXJ0eSwgY3VycmVudGx5IHN1cHBvcnRlZCBpbiBldmVyeSBtYWpvciBicm93c2VyIGV4Y2VwdCBGaXJlZm94LlxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC0tc2JiLXN0ZXAtb3BhY2l0eTogMDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuXG5pbXBvcnQge1xuICBhcHBlbmRBcmlhRWxlbWVudHMsXG4gIGJveFNpemluZ1N0eWxlcyxcbiAgcmVtb3ZlQXJpYUVsZW1lbnRzLFxuICBTYmJFbGVtZW50LFxuICBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU3RlcExhYmVsRWxlbWVudCB9IGZyb20gJy4uL3N0ZXAtbGFiZWwvc3RlcC1sYWJlbC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTdGVwcGVyRWxlbWVudCB9IGZyb20gJy4uL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGVwLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMge1xuICBjdXJyZW50SW5kZXg6IG51bWJlciB8IG51bGw7XG4gIGN1cnJlbnRTdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGw7XG4gIG5leHRJbmRleDogbnVtYmVyIHwgbnVsbDtcbiAgbmV4dFN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1zdGVwcGVyYCwgaXQgZGlzcGxheXMgYSBzdGVwJ3MgY29udGVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgY29udGVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlN0ZXBFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItc3RlcCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICd0YWJwYW5lbCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB2YWxpZGF0ZTogJ3ZhbGlkYXRlJyxcbiAgICByZXNpemVjaGFuZ2U6ICdyZXNpemVjaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8vIFdlIHVzZSBhIHRpbWVvdXQgYXMgYSB3b3JrYXJvdW5kIHRvIHRoZSBcIlJlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9uc1wiIGVycm9yLlxuICAvLyBGb3IgbW9yZSBkZXRhaWxzOlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3Jlc2l6ZS1vYnNlcnZlci9pc3N1ZXMvMzgjaXNzdWVjb21tZW50LTQyMjEyNjAwNlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWdnbGUvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8xMDMjaXNzdWVjb21tZW50LTE3MTExNDgyODVcbiAgcHJpdmF0ZSBfc3RlcFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLl9vblN0ZXBFbGVtZW50UmVzaXplKCkpLFxuICB9KTtcblxuICAvKiogVGhlIGxhYmVsIG9mIHRoZSBzdGVwLiAqL1xuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IFNiYlN0ZXBMYWJlbEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gIH1cbiAgcHJpdmF0ZSBfbGFiZWw6IFNiYlN0ZXBMYWJlbEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IHN0ZXBwZXIoKTogU2JiU3RlcHBlckVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZXN0KCdzYmItc3RlcHBlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNPcmllbnRhdGlvbj86IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZSkgPT4gdGhpcy5faGFuZGxlQ2xpY2soZSkpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuc3RlcHBlciwge1xuICAgICAgICBvcmllbnRhdGlvbjogKHMpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNPcmllbnRhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgb3JpZW50YXRpb24tJHt0aGlzLl9wcmV2aW91c09yaWVudGF0aW9ufWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9wcmV2aW91c09yaWVudGF0aW9uID0gcy5vcmllbnRhdGlvbjtcbiAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNPcmllbnRhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgb3JpZW50YXRpb24tJHt0aGlzLl9wcmV2aW91c09yaWVudGF0aW9ufWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgc3RlcC5cbiAgICogQGludGVybmFsXG4gICAqIFRPRE86IEBicmVha2luZy1jaGFuZ2U6IG1ha2UgcHJvdGVjdGVkXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNVcGRhdGVkIHx8ICF0aGlzLmxhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ3NlbGVjdGVkJyk7XG4gICAgdGhpcy5sYWJlbC5zZWxlY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYW5kIGNvbmZpZ3VyZXMgdGhlIHN0ZXAuXG4gICAqIEBpbnRlcm5hbFxuICAgKiBUT0RPOiBAYnJlYWtpbmctY2hhbmdlOiBtYWtlIHByb3RlY3RlZFxuICAgKi9cbiAgcHVibGljIGRlc2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdzZWxlY3RlZCcpO1xuICAgIHRoaXMubGFiZWwuZGVzZWxlY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHZhbGlkYXRlIGV2ZW50IHdoZW5ldmVyIHN0ZXAgc3dpdGNoIGlzIHRyaWdnZXJlZC5cbiAgICogQGludGVybmFsXG4gICAqIFRPRE86IEBicmVha2luZy1jaGFuZ2U6IG1ha2UgcHJvdGVjdGVkXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUoZXZlbnREYXRhOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvLyBUT0RPOiBAYnJlYWtpbmctY2hhbmdlOiBDcmVhdGUgYSBzcGVjaWZpYyBldmVudCB0eXBlIGZvciB0aGlzIGV2ZW50LlxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtDdXN0b21FdmVudDxTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHM+fVxuICAgICAqIFRoZSB2YWxpZGF0ZSBldmVudCBpcyBkaXNwYXRjaGVkIHdoZW4gYSBzdGVwIGNoYW5nZSBpcyB0cmlnZ2VyZWQuIENhbiBiZSBjYW5jZWxlZCB0byBhYm9ydCB0aGUgc3RlcCBjaGFuZ2UuXG4gICAgICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHM+KCd2YWxpZGF0ZScsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGRldGFpbDogZXZlbnREYXRhLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHRoZSBzdGVwLlxuICAgKiBAaW50ZXJuYWxcbiAgICogVE9ETzogQGJyZWFraW5nLWNoYW5nZTogbWFrZSBwcm90ZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBjb25maWd1cmUoc3RlcHBlckxvYWRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGVwcGVyTG9hZGVkKSB7XG4gICAgICB0aGlzLl9hc3NpZ25MYWJlbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXYXRjaGVzIGZvciBjbGlja2VkIGVsZW1lbnRzIHdpdGggYHNiYi1zdGVwcGVyLW5leHRgIG9yIGBzYmItc3RlcHBlci1wcmV2aW91c2AgYXR0cmlidXRlcy4gKi9cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoRWxlbWVudHMgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpO1xuICAgIGlmIChjb21wb3NlZFBhdGhFbGVtZW50cy5zb21lKChlbCkgPT4gdGhpcy5faXNHb05leHRFbGVtZW50KGVsIGFzIEhUTUxFbGVtZW50KSkpIHtcbiAgICAgIHRoaXMuc3RlcHBlcj8ubmV4dCgpO1xuICAgIH0gZWxzZSBpZiAoY29tcG9zZWRQYXRoRWxlbWVudHMuc29tZSgoZWwpID0+IHRoaXMuX2lzR29QcmV2aW91c0VsZW1lbnQoZWwgYXMgSFRNTEVsZW1lbnQpKSkge1xuICAgICAgdGhpcy5zdGVwcGVyPy5wcmV2aW91cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzR29OZXh0RWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLXN0ZXBwZXItbmV4dCcpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzR29QcmV2aW91c0VsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1zdGVwcGVyLXByZXZpb3VzJykgJiYgIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TdGVwRWxlbWVudFJlc2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWF0Y2hlcygnOnN0YXRlKHNlbGVjdGVkKScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICogRW1pdHMgd2hlbiBhIHJlc2l6ZSBoYXBwZW5zLCB1c2VkIHRvIGF2b2lkIHNldHRpbmcgdGhlIGhlaWdodCBvZiB0aGUgc3RlcHBlciBmcm9tIHRoZSBzdGVwIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemVjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90IHx8PSAnc3RlcCc7XG4gICAgdGhpcy5fYXNzaWduTGFiZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fc3RlcFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0ZXAnKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25MYWJlbCgpOiB2b2lkIHtcbiAgICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGhpcy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIHdoaWxlIChwcmV2aW91c1NpYmxpbmcgJiYgcHJldmlvdXNTaWJsaW5nLmxvY2FsTmFtZSAhPT0gJ3NiYi1zdGVwLWxhYmVsJykge1xuICAgICAgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gcHJldmlvdXNTaWJsaW5nIGFzIFNiYlN0ZXBMYWJlbEVsZW1lbnQgfCBudWxsO1xuXG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUxhYmVsbGVkQnlFbGVtZW50cyA9IHJlbW92ZUFyaWFFbGVtZW50cyhcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMsXG4gICAgICB0aGlzLl9sYWJlbCxcbiAgICApO1xuICAgIHRoaXMuX2xhYmVsID0gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50ID8gdmFsdWUgOiBudWxsO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMgPSBhcHBlbmRBcmlhRWxlbWVudHMoXG4gICAgICB0aGlzLmludGVybmFscy5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzLFxuICAgICAgdGhpcy5fbGFiZWwsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwLS13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcFwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc3RlcCc6IFNiYlN0ZXBFbGVtZW50O1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgcmVzaXplY2hhbmdlOiBFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUNpQ0EsSUFBYSxpQkFBYixjQUFvQyxXQUFVOztBQUNaLE9BQUEsY0FBc0I7OztBQUN0QixPQUFBLE9BQU87OztBQUNoQixPQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUsYUFBTSxDQUFDOzs7QUFDNUQsT0FBQSxTQUFTO0dBQzlCLFVBQVU7R0FDVixjQUFjO0dBQ047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
|