@sbb-esta/lyne-elements 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/base-elements/open-close-base-element.d.ts +2 -0
- package/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/core/base-elements/open-close-base-element.js +4 -0
- package/core/controllers/escapable-overlay-controller.js +3 -3
- package/core/controllers/inert-controller.d.ts +8 -1
- package/core/controllers/inert-controller.d.ts.map +1 -1
- package/core/controllers/inert-controller.js +25 -13
- package/core/overlay/position.d.ts +20 -0
- package/core/overlay/position.d.ts.map +1 -1
- package/core/overlay/position.js +34 -23
- package/core/overlay.js +11 -10
- package/core/styles/core.scss +7 -0
- package/core.css +6 -0
- package/custom-elements.json +612 -138
- package/development/core/base-elements/open-close-base-element.d.ts +2 -0
- package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/development/core/base-elements/open-close-base-element.js +5 -1
- package/development/core/controllers/escapable-overlay-controller.js +2 -2
- package/development/core/controllers/inert-controller.d.ts +8 -1
- package/development/core/controllers/inert-controller.d.ts.map +1 -1
- package/development/core/controllers/inert-controller.js +49 -30
- package/development/core/overlay/position.d.ts +20 -0
- package/development/core/overlay/position.d.ts.map +1 -1
- package/development/core/overlay/position.js +41 -1
- package/development/core/overlay.js +2 -1
- package/development/menu/common/menu-action-common.d.ts.map +1 -1
- package/development/menu/common/menu-action-common.js +20 -3
- package/development/menu/menu/menu.component.d.ts +21 -10
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +203 -61
- package/development/option/option/option.component.js +4 -2
- package/development/tabs/tab/tab.component.d.ts +10 -4
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +15 -16
- package/development/tabs/tab-group/tab-group.component.d.ts +15 -14
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +46 -175
- package/development/tabs/tab-label/tab-label.component.d.ts +21 -2
- package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/development/tabs/tab-label/tab-label.component.js +91 -6
- package/development/tooltip/tooltip.component.d.ts +6 -6
- package/development/tooltip/tooltip.component.d.ts.map +1 -1
- package/development/tooltip/tooltip.component.js +14 -7
- package/menu/common/menu-action-common.d.ts.map +1 -1
- package/menu/common/menu-action-common.js +15 -12
- package/menu/menu/menu.component.d.ts +21 -10
- package/menu/menu/menu.component.d.ts.map +1 -1
- package/menu/menu/menu.component.js +144 -80
- package/off-brand-theme.css +6 -0
- package/option/option/option.component.js +1 -1
- package/package.json +1 -1
- package/safety-theme.css +6 -0
- package/standard-theme.css +6 -0
- package/tabs/tab/tab.component.d.ts +10 -4
- package/tabs/tab/tab.component.d.ts.map +1 -1
- package/tabs/tab/tab.component.js +22 -24
- package/tabs/tab-group/tab-group.component.d.ts +15 -14
- package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/tabs/tab-group/tab-group.component.js +68 -122
- package/tabs/tab-label/tab-label.component.d.ts +21 -2
- package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/tabs/tab-label/tab-label.component.js +88 -46
- package/tooltip/tooltip.component.d.ts +6 -6
- package/tooltip/tooltip.component.d.ts.map +1 -1
- package/tooltip/tooltip.component.js +59 -54
|
@@ -6,7 +6,6 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
|
|
|
6
6
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
7
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
8
8
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
9
|
-
import { MutationController } from "@lit-labs/observers/mutation-controller.js";
|
|
10
9
|
import { ResizeController } from "@lit-labs/observers/resize-controller.js";
|
|
11
10
|
import { css, LitElement, html } from "lit";
|
|
12
11
|
import { customElement, property } from "lit/decorators.js";
|
|
@@ -16,7 +15,6 @@ import { forceType } from "../../core/decorators.js";
|
|
|
16
15
|
import { isLean } from "../../core/dom.js";
|
|
17
16
|
import { throttle } from "../../core/eventing.js";
|
|
18
17
|
import { SbbHydrationMixin } from "../../core/mixins.js";
|
|
19
|
-
import { SbbTabElement } from "../tab.js";
|
|
20
18
|
const style = css`*,
|
|
21
19
|
::before,
|
|
22
20
|
::after {
|
|
@@ -31,22 +29,22 @@ const style = css`*,
|
|
|
31
29
|
display: block;
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
.tab-group {
|
|
32
|
+
.sbb-tab-group {
|
|
35
33
|
display: flex;
|
|
36
34
|
flex-wrap: wrap;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
.tab-content {
|
|
37
|
+
.sbb-tab-group-content {
|
|
40
38
|
margin-block-start: var(--sbb-spacing-responsive-m);
|
|
41
39
|
transition: height var(--sbb-tab-group-animation-duration) var(--sbb-animation-easing);
|
|
42
40
|
}
|
|
43
|
-
.tab-content ::slotted(sbb-tab) {
|
|
41
|
+
.sbb-tab-group-content ::slotted(sbb-tab) {
|
|
44
42
|
visibility: hidden;
|
|
45
43
|
opacity: 0;
|
|
46
44
|
height: 0;
|
|
47
45
|
overflow: hidden;
|
|
48
46
|
}
|
|
49
|
-
.tab-content ::slotted(sbb-tab[active]) {
|
|
47
|
+
.sbb-tab-group-content ::slotted(sbb-tab[data-active]) {
|
|
50
48
|
visibility: visible;
|
|
51
49
|
opacity: 1;
|
|
52
50
|
height: fit-content;
|
|
@@ -56,14 +54,10 @@ const style = css`*,
|
|
|
56
54
|
transition-timing-function: var(--sbb-animation-easing);
|
|
57
55
|
transition-property: opacity, visibility;
|
|
58
56
|
}
|
|
59
|
-
.tab-content ::slotted(sbb-tab:focus-visible) {
|
|
57
|
+
.sbb-tab-group-content ::slotted(sbb-tab:focus-visible) {
|
|
60
58
|
outline-offset: var(--sbb-focus-outline-offset);
|
|
61
59
|
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
62
60
|
}`;
|
|
63
|
-
const tabObserverConfig = {
|
|
64
|
-
attributeFilter: ["active", "disabled"]
|
|
65
|
-
};
|
|
66
|
-
let nextId = 0;
|
|
67
61
|
let SbbTabGroupElement = (() => {
|
|
68
62
|
var _initialSelectedIndex_accessor_storage, _a;
|
|
69
63
|
let _classDecorators = [customElement("sbb-tab-group")];
|
|
@@ -80,12 +74,7 @@ let SbbTabGroupElement = (() => {
|
|
|
80
74
|
constructor() {
|
|
81
75
|
super();
|
|
82
76
|
__privateAdd(this, _initialSelectedIndex_accessor_storage);
|
|
83
|
-
this.
|
|
84
|
-
this._tabAttributeObserver = new MutationController(this, {
|
|
85
|
-
target: null,
|
|
86
|
-
config: tabObserverConfig,
|
|
87
|
-
callback: (mutationsList) => this._onTabAttributesChange(mutationsList)
|
|
88
|
-
});
|
|
77
|
+
this._tabGroupElement = __runInitializers(this, _instanceExtraInitializers);
|
|
89
78
|
this._tabGroupResizeObserver = new ResizeController(this, {
|
|
90
79
|
target: null,
|
|
91
80
|
skipInitial: true,
|
|
@@ -99,24 +88,12 @@ let SbbTabGroupElement = (() => {
|
|
|
99
88
|
this._size = isLean() ? "s" : "l";
|
|
100
89
|
__privateSet(this, _initialSelectedIndex_accessor_storage, __runInitializers(this, _initialSelectedIndex_initializers, 0));
|
|
101
90
|
this._onContentSlotChange = (__runInitializers(this, _initialSelectedIndex_extraInitializers), () => {
|
|
102
|
-
this.
|
|
103
|
-
|
|
104
|
-
if (loadedTabs.length) {
|
|
105
|
-
loadedTabs.forEach((tab) => this._configure(tab));
|
|
106
|
-
this._tabs = this._tabs.concat(loadedTabs);
|
|
107
|
-
loadedTabs.find((tab) => tab.active)?.tabGroupActions?.select();
|
|
108
|
-
}
|
|
91
|
+
this.labels.forEach((tabLabel) => tabLabel["linkToTab"]());
|
|
92
|
+
this.labels.find((tabLabel) => tabLabel.active)?.activate();
|
|
109
93
|
});
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const removedTabs = this._tabs.filter((tab) => !tabs.includes(tab));
|
|
114
|
-
removedTabs.forEach((removedTab) => {
|
|
115
|
-
removedTab.tab?.remove();
|
|
116
|
-
});
|
|
117
|
-
this._tabs = tabs;
|
|
118
|
-
}
|
|
119
|
-
this._tabs.forEach((tab) => tab.setAttribute("data-size", this.size));
|
|
94
|
+
this._onLabelSlotChange = () => {
|
|
95
|
+
this._updateSize();
|
|
96
|
+
this.labels.forEach((tabLabel) => tabLabel["linkToTab"]());
|
|
120
97
|
};
|
|
121
98
|
this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
|
|
122
99
|
}
|
|
@@ -141,82 +118,67 @@ let SbbTabGroupElement = (() => {
|
|
|
141
118
|
set initialSelectedIndex(value) {
|
|
142
119
|
__privateSet(this, _initialSelectedIndex_accessor_storage, value);
|
|
143
120
|
}
|
|
121
|
+
/** Gets the slotted `sbb-tab-label`s. */
|
|
122
|
+
get labels() {
|
|
123
|
+
return Array.from(this.children ?? []).filter((child) => /^sbb-tab-label$/u.test(child.localName));
|
|
124
|
+
}
|
|
144
125
|
firstUpdated(changedProperties) {
|
|
145
126
|
super.firstUpdated(changedProperties);
|
|
146
|
-
this.
|
|
147
|
-
this._tabs.forEach((tab) => this._configure(tab));
|
|
127
|
+
this.labels.forEach((tabLabel) => tabLabel["linkToTab"]());
|
|
148
128
|
this._initSelection();
|
|
149
129
|
this._tabGroupResizeObserver.observe(this._tabGroupElement);
|
|
130
|
+
this._tabContentResizeObserver.observe(this._tabContentElement);
|
|
150
131
|
}
|
|
151
132
|
/**
|
|
152
133
|
* Disables a tab by index.
|
|
153
134
|
* @param tabIndex The index of the tab you want to disable.
|
|
154
135
|
*/
|
|
155
136
|
disableTab(tabIndex) {
|
|
156
|
-
this.
|
|
137
|
+
if (this.labels[tabIndex]) {
|
|
138
|
+
this.labels[tabIndex].disabled = true;
|
|
139
|
+
}
|
|
157
140
|
}
|
|
158
141
|
/**
|
|
159
142
|
* Enables a tab by index.
|
|
160
143
|
* @param tabIndex The index of the tab you want to enable.
|
|
161
144
|
*/
|
|
162
145
|
enableTab(tabIndex) {
|
|
163
|
-
this.
|
|
146
|
+
if (this.labels[tabIndex]) {
|
|
147
|
+
this.labels[tabIndex].disabled = false;
|
|
148
|
+
}
|
|
164
149
|
}
|
|
165
150
|
/**
|
|
166
151
|
* Activates a tab by index.
|
|
167
152
|
* @param tabIndex The index of the tab you want to activate.
|
|
168
153
|
*/
|
|
169
154
|
activateTab(tabIndex) {
|
|
170
|
-
this.
|
|
171
|
-
}
|
|
172
|
-
_getTabs() {
|
|
173
|
-
return Array.from(this.children ?? []).filter((child) => /^sbb-tab-label$/u.test(child.localName));
|
|
155
|
+
this.labels[tabIndex]?.activate();
|
|
174
156
|
}
|
|
175
157
|
_enabledTabs() {
|
|
176
|
-
return this.
|
|
158
|
+
return this.labels.filter((t) => {
|
|
159
|
+
customElements.upgrade(t);
|
|
160
|
+
return !t.disabled;
|
|
161
|
+
});
|
|
177
162
|
}
|
|
178
163
|
_updateSize() {
|
|
179
|
-
|
|
180
|
-
tab.setAttribute("data-size", this.size);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
_assignId() {
|
|
184
|
-
return `sbb-tab-panel-${++nextId}`;
|
|
164
|
+
this.labels.forEach((tabLabel) => tabLabel.setAttribute("data-size", this.size));
|
|
185
165
|
}
|
|
186
166
|
_initSelection() {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
this.
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
_onTabAttributesChange(mutationsList) {
|
|
194
|
-
for (const mutation of mutationsList) {
|
|
195
|
-
if (mutation.type !== "attributes") {
|
|
167
|
+
const selectedTabLabel = this.labels[this.initialSelectedIndex];
|
|
168
|
+
if (selectedTabLabel) {
|
|
169
|
+
customElements.upgrade(selectedTabLabel);
|
|
170
|
+
if (this.initialSelectedIndex >= 0 && this.initialSelectedIndex < this.labels.length && !selectedTabLabel.disabled) {
|
|
171
|
+
selectedTabLabel.activate();
|
|
196
172
|
return;
|
|
197
173
|
}
|
|
198
|
-
const tab = mutation.target;
|
|
199
|
-
if (mutation.attributeName === "disabled") {
|
|
200
|
-
if (tab.hasAttribute("disabled") && tab !== this._selectedTab) {
|
|
201
|
-
tab.tabGroupActions?.disable();
|
|
202
|
-
} else if (tab.disabled) {
|
|
203
|
-
tab.tabGroupActions?.enable();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (mutation.attributeName === "active") {
|
|
207
|
-
if (tab.hasAttribute("active") && !tab.disabled) {
|
|
208
|
-
tab.tabGroupActions?.select();
|
|
209
|
-
} else if (tab === this._selectedTab) {
|
|
210
|
-
tab.toggleAttribute("active", true);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
174
|
}
|
|
175
|
+
this._enabledTabs()[0]?.activate();
|
|
214
176
|
}
|
|
215
177
|
_onTabGroupElementResize(entries) {
|
|
216
178
|
for (const entry of entries) {
|
|
217
|
-
const
|
|
218
|
-
for (const
|
|
219
|
-
|
|
179
|
+
const labelElements = entry.target.firstElementChild.assignedElements();
|
|
180
|
+
for (const tabLabel of labelElements) {
|
|
181
|
+
tabLabel.toggleAttribute("data-has-divider", tabLabel === labelElements[0] || tabLabel.offsetLeft === labelElements[0].offsetLeft);
|
|
220
182
|
this.style.setProperty("--sbb-tab-group-width", `${this._tabGroupElement.clientWidth}px`);
|
|
221
183
|
}
|
|
222
184
|
}
|
|
@@ -230,99 +192,6 @@ let SbbTabGroupElement = (() => {
|
|
|
230
192
|
this._tabContentElement.style.height = `${contentHeight}px`;
|
|
231
193
|
}
|
|
232
194
|
}
|
|
233
|
-
_configure(tabLabel) {
|
|
234
|
-
tabLabel.tabGroupActions = {
|
|
235
|
-
activate: () => {
|
|
236
|
-
tabLabel.toggleAttribute("active", true);
|
|
237
|
-
tabLabel.active = true;
|
|
238
|
-
tabLabel.tabIndex = 0;
|
|
239
|
-
tabLabel.setAttribute("aria-selected", "true");
|
|
240
|
-
tabLabel.tab?.toggleAttribute("active", true);
|
|
241
|
-
},
|
|
242
|
-
deactivate: () => {
|
|
243
|
-
tabLabel.removeAttribute("active");
|
|
244
|
-
tabLabel.active = false;
|
|
245
|
-
tabLabel.tabIndex = -1;
|
|
246
|
-
tabLabel.setAttribute("aria-selected", "false");
|
|
247
|
-
tabLabel.tab?.removeAttribute("active");
|
|
248
|
-
},
|
|
249
|
-
disable: () => {
|
|
250
|
-
if (tabLabel.disabled) {
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
if (!tabLabel.hasAttribute("disabled")) {
|
|
254
|
-
tabLabel.toggleAttribute("disabled", true);
|
|
255
|
-
}
|
|
256
|
-
tabLabel.disabled = true;
|
|
257
|
-
tabLabel.tabIndex = -1;
|
|
258
|
-
tabLabel.setAttribute("aria-selected", "false");
|
|
259
|
-
tabLabel.tab?.removeAttribute("active");
|
|
260
|
-
if (tabLabel.active) {
|
|
261
|
-
tabLabel.removeAttribute("active");
|
|
262
|
-
tabLabel.active = false;
|
|
263
|
-
this._enabledTabs()[0]?.tabGroupActions?.select();
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
enable: () => {
|
|
267
|
-
if (tabLabel.disabled) {
|
|
268
|
-
tabLabel.removeAttribute("disabled");
|
|
269
|
-
tabLabel.disabled = false;
|
|
270
|
-
}
|
|
271
|
-
},
|
|
272
|
-
select: () => {
|
|
273
|
-
if (tabLabel !== this._selectedTab && !tabLabel.disabled) {
|
|
274
|
-
const prevTab = this._selectedTab;
|
|
275
|
-
if (prevTab) {
|
|
276
|
-
prevTab.tabGroupActions?.deactivate();
|
|
277
|
-
this._tabContentResizeObserver.unobserve(prevTab.tab);
|
|
278
|
-
}
|
|
279
|
-
tabLabel.tabGroupActions?.activate();
|
|
280
|
-
this._selectedTab = tabLabel;
|
|
281
|
-
this._tabContentResizeObserver.observe(tabLabel.tab);
|
|
282
|
-
const tabs = this._tabs;
|
|
283
|
-
this.dispatchEvent(new CustomEvent("tabchange", {
|
|
284
|
-
bubbles: true,
|
|
285
|
-
composed: true,
|
|
286
|
-
detail: {
|
|
287
|
-
activeIndex: tabs.findIndex((e) => e === tabLabel),
|
|
288
|
-
activeTabLabel: tabLabel,
|
|
289
|
-
activeTab: tabLabel.tab,
|
|
290
|
-
previousIndex: tabs.findIndex((e) => e === prevTab),
|
|
291
|
-
previousTabLabel: prevTab,
|
|
292
|
-
previousTab: prevTab?.tab
|
|
293
|
-
}
|
|
294
|
-
}));
|
|
295
|
-
} else if (tabLabel.disabled) {
|
|
296
|
-
console.warn("You cannot activate a disabled tab");
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
if (tabLabel.nextElementSibling?.localName === "sbb-tab") {
|
|
301
|
-
tabLabel.tab = tabLabel.nextElementSibling;
|
|
302
|
-
tabLabel.tab.id = this._assignId();
|
|
303
|
-
if (tabLabel.tab instanceof SbbTabElement) {
|
|
304
|
-
tabLabel.tab.tabIndex = 0;
|
|
305
|
-
tabLabel.tab.configure();
|
|
306
|
-
}
|
|
307
|
-
} else {
|
|
308
|
-
tabLabel.insertAdjacentHTML("afterend", "<sbb-tab>No content.</sbb-tab>");
|
|
309
|
-
tabLabel.tab = tabLabel.nextElementSibling;
|
|
310
|
-
console.warn(`Missing content: you should provide a related content for the tab ${tabLabel.outerHTML}.`);
|
|
311
|
-
}
|
|
312
|
-
tabLabel.tabIndex = -1;
|
|
313
|
-
tabLabel.disabled = tabLabel.hasAttribute("disabled");
|
|
314
|
-
tabLabel.active = tabLabel.hasAttribute("active") && !tabLabel.disabled;
|
|
315
|
-
tabLabel.setAttribute("aria-selected", String(tabLabel.active));
|
|
316
|
-
tabLabel.addEventListener("click", () => {
|
|
317
|
-
tabLabel.tabGroupActions?.select();
|
|
318
|
-
});
|
|
319
|
-
if (tabLabel.tab) {
|
|
320
|
-
tabLabel.setAttribute("aria-controls", tabLabel.tab.id);
|
|
321
|
-
tabLabel.tab.toggleAttribute("active", tabLabel.active);
|
|
322
|
-
}
|
|
323
|
-
this._tabAttributeObserver.observe(tabLabel);
|
|
324
|
-
tabLabel.slot = "tab-bar";
|
|
325
|
-
}
|
|
326
195
|
_handleKeyDown(evt) {
|
|
327
196
|
const enabledTabs = this._enabledTabs();
|
|
328
197
|
if (!enabledTabs || // don't trap nested handling
|
|
@@ -332,7 +201,7 @@ let SbbTabGroupElement = (() => {
|
|
|
332
201
|
if (isArrowKeyPressed(evt)) {
|
|
333
202
|
const current = enabledTabs.findIndex((t) => t.active);
|
|
334
203
|
const nextIndex = getNextElementIndex(evt, current, enabledTabs.length);
|
|
335
|
-
enabledTabs[nextIndex]?.
|
|
204
|
+
enabledTabs[nextIndex]?.activate();
|
|
336
205
|
enabledTabs[nextIndex]?.focus();
|
|
337
206
|
evt.preventDefault();
|
|
338
207
|
}
|
|
@@ -340,14 +209,16 @@ let SbbTabGroupElement = (() => {
|
|
|
340
209
|
render() {
|
|
341
210
|
return html`
|
|
342
211
|
<div
|
|
343
|
-
class="tab-group"
|
|
212
|
+
class="sbb-tab-group"
|
|
344
213
|
role="tablist"
|
|
345
214
|
${ref((el) => this._tabGroupElement = el)}
|
|
346
215
|
>
|
|
347
|
-
<slot name="tab-bar" @slotchange=${this.
|
|
216
|
+
<slot name="tab-bar" @slotchange=${this._onLabelSlotChange}></slot>
|
|
348
217
|
</div>
|
|
349
|
-
|
|
350
|
-
|
|
218
|
+
<div
|
|
219
|
+
class="sbb-tab-group-content"
|
|
220
|
+
${ref((el) => this._tabContentElement = el)}
|
|
221
|
+
>
|
|
351
222
|
<slot @slotchange=${throttle(this._onContentSlotChange, 150)}></slot>
|
|
352
223
|
</div>
|
|
353
224
|
`;
|
|
@@ -373,4 +244,4 @@ let SbbTabGroupElement = (() => {
|
|
|
373
244
|
export {
|
|
374
245
|
SbbTabGroupElement
|
|
375
246
|
};
|
|
376
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXV0YXRpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9tdXRhdGlvbi1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiTGFiZWxFbGVtZW50IH0gZnJvbSAnLi4vdGFiLWxhYmVsLmpzJztcbmltcG9ydCB7IFNiYlRhYkVsZW1lbnQgfSBmcm9tICcuLi90YWIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90YWItZ3JvdXAuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IHR5cGUgU2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscyA9IHtcbiAgYWN0aXZlSW5kZXg6IG51bWJlcjtcbiAgYWN0aXZlVGFiTGFiZWw6IFNiYlRhYkxhYmVsRWxlbWVudDtcbiAgYWN0aXZlVGFiOiBTYmJUYWJFbGVtZW50O1xuICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gIHByZXZpb3VzVGFiTGFiZWw6IFNiYlRhYkxhYmVsRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgcHJldmlvdXNUYWI6IFNiYlRhYkVsZW1lbnQgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVNiYlRhYkdyb3VwQWN0aW9ucyB7XG4gIGFjdGl2YXRlKCk6IHZvaWQ7XG4gIGRlYWN0aXZhdGUoKTogdm9pZDtcbiAgZW5hYmxlKCk6IHZvaWQ7XG4gIGRpc2FibGUoKTogdm9pZDtcbiAgc2VsZWN0KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIgZXh0ZW5kcyBTYmJUYWJMYWJlbEVsZW1lbnQge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0YWI/OiBTYmJUYWJFbGVtZW50O1xuICBpbmRleD86IG51bWJlcjtcbiAgdGFiR3JvdXBBY3Rpb25zPzogSW50ZXJmYWNlU2JiVGFiR3JvdXBBY3Rpb25zO1xuICBzaXplOiAncycgfCAnbCcgfCAneGwnO1xufVxuXG5jb25zdCB0YWJPYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGF0dHJpYnV0ZUZpbHRlcjogWydhY3RpdmUnLCAnZGlzYWJsZWQnXSxcbn07XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIG9uZSBvciBtb3JlIHRhYnMsIGVhY2ggb25lIHdpdGggYSBsYWJlbCBhbmQgYSBjb250ZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIGBzYmItdGFiLWdyb3VwYCB2aWFcbiAqIGBzYmItdGFiLWxhYmVsYCBhbmQgYHNiYi10YWJgIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYi1ncm91cCcpXG5jbGFzcyBTYmJUYWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB0YWJjaGFuZ2U6ICd0YWJjaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX3RhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI/OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYjtcbiAgcHJpdmF0ZSBfdGFiR3JvdXBFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RhYkNvbnRlbnRFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RhYkF0dHJpYnV0ZU9ic2VydmVyID0gbmV3IE11dGF0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIGNvbmZpZzogdGFiT2JzZXJ2ZXJDb25maWcsXG4gICAgY2FsbGJhY2s6IChtdXRhdGlvbnNMaXN0KSA9PiB0aGlzLl9vblRhYkF0dHJpYnV0ZXNDaGFuZ2UobXV0YXRpb25zTGlzdCksXG4gIH0pO1xuICBwcml2YXRlIF90YWJHcm91cFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX29uVGFiR3JvdXBFbGVtZW50UmVzaXplKGVudHJpZXMpLFxuICB9KTtcbiAgcHJpdmF0ZSBfdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX29uVGFiQ29udGVudEVsZW1lbnRSZXNpemUoZW50cmllcyksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzLCBsIG9yIHhsLlxuICAgKiBAZGVmYXVsdCAnbCcgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHNpemUodmFsdWU6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10pIHtcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlU2l6ZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYlsnc2l6ZSddIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgfVxuICBwcml2YXRlIF9zaXplOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYlsnc2l6ZSddID0gaXNMZWFuKCkgPyAncycgOiAnbCc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgdGFiLiBJZiBpdCBtYXRjaGVzIGEgZGlzYWJsZWQgdGFiIG9yIGV4Y2VlZHMgdGhlIGxlbmd0aCBvZlxuICAgKiB0aGUgdGFiIGdyb3VwLCB0aGUgZmlyc3QgZW5hYmxlZCB0YWIgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbml0aWFsLXNlbGVjdGVkLWluZGV4JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbml0aWFsU2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3RhYnMgPSB0aGlzLl9nZXRUYWJzKCk7XG4gICAgdGhpcy5fdGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5fdGFiR3JvdXBSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhYkdyb3VwRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBkaXNhYmxlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gZW5hYmxlLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uZW5hYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gYWN0aXZhdGUuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5maWx0ZXIoKGNoaWxkKSA9PlxuICAgICAgL15zYmItdGFiLWxhYmVsJC91LnRlc3QoY2hpbGQubG9jYWxOYW1lKSxcbiAgICApIGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW107XG4gIH1cblxuICBwcml2YXRlIF9lbmFibGVkVGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGFicy5maWx0ZXIoKHQpID0+ICF0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTaXplKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdGFiIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl90YWJDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignZGl2LnRhYi1jb250ZW50JykhO1xuICAgIGNvbnN0IGxvYWRlZFRhYnMgPSB0aGlzLl9nZXRUYWJzKCkuZmlsdGVyKCh0YWIpID0+ICF0aGlzLl90YWJzLmluY2x1ZGVzKHRhYikpO1xuXG4gICAgLy8gaWYgYSBuZXcgdGFiL2NvbnRlbnQgaXMgYWRkZWQgdG8gdGhlIHRhYiBncm91cFxuICAgIGlmIChsb2FkZWRUYWJzLmxlbmd0aCkge1xuICAgICAgbG9hZGVkVGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0aGlzLl90YWJzLmNvbmNhdChsb2FkZWRUYWJzKTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRhYiBpbiB0aGUgbmV3IGJhdGNoLCBpdCBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0ZWRcbiAgICAgIGxvYWRlZFRhYnMuZmluZCgodGFiKSA9PiB0YWIuYWN0aXZlKT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25UYWJzU2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy5fZ2V0VGFicygpO1xuXG4gICAgLy8gaWYgYSB0YWIgaXMgcmVtb3ZlZCBmcm9tIHRoZSB0YWIgZ3JvdXBcbiAgICBpZiAodGFicy5sZW5ndGggPCB0aGlzLl90YWJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVtb3ZlZFRhYnMgPSB0aGlzLl90YWJzLmZpbHRlcigodGFiKSA9PiAhdGFicy5pbmNsdWRlcyh0YWIpKTtcblxuICAgICAgcmVtb3ZlZFRhYnMuZm9yRWFjaCgocmVtb3ZlZFRhYikgPT4ge1xuICAgICAgICByZW1vdmVkVGFiLnRhYj8ucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0YWJzO1xuICAgIH1cbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYjogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpID0+IHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSkpO1xuICB9O1xuXG4gIHByaXZhdGUgX2Fzc2lnbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzYmItdGFiLXBhbmVsLSR7KytuZXh0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleCA+PSAwICYmXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4IDwgdGhpcy5fdGFicy5sZW5ndGggJiZcbiAgICAgICF0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLmRpc2FibGVkXG4gICAgKSB7XG4gICAgICB0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuYWJsZWRUYWJzKClbMF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJBdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChtdXRhdGlvbi50eXBlICE9PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFiID0gbXV0YXRpb24udGFyZ2V0IGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiO1xuXG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgICBpZiAodGFiLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiB0YWIgIT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRhYkdyb3VwQWN0aW9ucz8uZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi50YWJHcm91cEFjdGlvbnM/LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgaWYgKHRhYi5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWIudGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWIgPT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkdyb3VwRWxlbWVudFJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHRhYlRpdGxlcyA9IChcbiAgICAgICAgZW50cnkudGFyZ2V0LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxTbG90RWxlbWVudFxuICAgICAgKS5hc3NpZ25lZEVsZW1lbnRzKCkgYXMgU2JiVGFiTGFiZWxFbGVtZW50W107XG5cbiAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYlRpdGxlcykge1xuICAgICAgICB0YWIudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAgICdkYXRhLWhhcy1kaXZpZGVyJyxcbiAgICAgICAgICB0YWIgPT09IHRhYlRpdGxlc1swXSB8fCB0YWIub2Zmc2V0TGVmdCA9PT0gdGFiVGl0bGVzWzBdLm9mZnNldExlZnQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRhYi1ncm91cC13aWR0aCcsIGAke3RoaXMuX3RhYkdyb3VwRWxlbWVudC5jbGllbnRXaWR0aH1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uVGFiQ29udGVudEVsZW1lbnRSZXNpemUoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90YWJDb250ZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCk7XG5cbiAgICAgIHRoaXMuX3RhYkNvbnRlbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRIZWlnaHR9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSh0YWJMYWJlbDogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpOiB2b2lkIHtcbiAgICB0YWJMYWJlbC50YWJHcm91cEFjdGlvbnMgPSB7XG4gICAgICBhY3RpdmF0ZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0YWJMYWJlbC50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRydWUpO1xuICAgICAgICB0YWJMYWJlbC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8udG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBkZWFjdGl2YXRlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgIHRhYkxhYmVsLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy5yZW1vdmVBdHRyaWJ1dGUoJ2FjdGl2ZScpO1xuICAgICAgfSxcbiAgICAgIGRpc2FibGU6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFiTGFiZWwuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgdGFiTGFiZWwudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRhYkxhYmVsLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8ucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmFjdGl2ZSkge1xuICAgICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgdGFiTGFiZWwuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fZW5hYmxlZFRhYnMoKVswXT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVuYWJsZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWJMYWJlbC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgdGFiTGFiZWwuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwgIT09IHRoaXMuX3NlbGVjdGVkVGFiICYmICF0YWJMYWJlbC5kaXNhYmxlZCkge1xuICAgICAgICAgIGNvbnN0IHByZXZUYWIgPSB0aGlzLl9zZWxlY3RlZFRhYjtcblxuICAgICAgICAgIGlmIChwcmV2VGFiKSB7XG4gICAgICAgICAgICBwcmV2VGFiLnRhYkdyb3VwQWN0aW9ucz8uZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShwcmV2VGFiLnRhYiEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucz8uYWN0aXZhdGUoKTtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYiA9IHRhYkxhYmVsO1xuXG4gICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFiTGFiZWwudGFiISk7XG4gICAgICAgICAgY29uc3QgdGFicyA9IHRoaXMuX3RhYnM7XG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscz59XG4gICAgICAgICAgICogVGhlIHRhYmNoYW5nZSBldmVudCBpcyBkaXNwYXRjaGVkIHdoZW4gYSB0YWIgaXMgc2VsZWN0ZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50PFNiYlRhYkNoYW5nZWRFdmVudERldGFpbHM+KCd0YWJjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogdGFicy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRhYkxhYmVsKSxcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWJMYWJlbDogdGFiTGFiZWwsXG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiOiB0YWJMYWJlbC50YWIgYXMgU2JiVGFiRWxlbWVudCxcbiAgICAgICAgICAgICAgICBwcmV2aW91c0luZGV4OiB0YWJzLmZpbmRJbmRleCgoZSkgPT4gZSA9PT0gcHJldlRhYiksXG4gICAgICAgICAgICAgICAgcHJldmlvdXNUYWJMYWJlbDogcHJldlRhYixcbiAgICAgICAgICAgICAgICBwcmV2aW91c1RhYjogcHJldlRhYj8udGFiIGFzIFNiYlRhYkVsZW1lbnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgdGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW5ub3QgYWN0aXZhdGUgYSBkaXNhYmxlZCB0YWInKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZz8ubG9jYWxOYW1lID09PSAnc2JiLXRhYicpIHtcbiAgICAgIHRhYkxhYmVsLnRhYiA9IHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50O1xuICAgICAgdGFiTGFiZWwudGFiLmlkID0gdGhpcy5fYXNzaWduSWQoKTtcbiAgICAgIGlmICh0YWJMYWJlbC50YWIgaW5zdGFuY2VvZiBTYmJUYWJFbGVtZW50KSB7XG4gICAgICAgIHRhYkxhYmVsLnRhYi50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnRhYi5jb25maWd1cmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgIHRhYkxhYmVsLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCAnPHNiYi10YWI+Tm8gY29udGVudC48L3NiYi10YWI+Jyk7XG4gICAgICB0YWJMYWJlbC50YWIgPSB0YWJMYWJlbC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgU2JiVGFiRWxlbWVudDtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgY29udGVudDogeW91IHNob3VsZCBwcm92aWRlIGEgcmVsYXRlZCBjb250ZW50IGZvciB0aGUgdGFiICR7dGFiTGFiZWwub3V0ZXJIVE1MfS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICB0YWJMYWJlbC5kaXNhYmxlZCA9IHRhYkxhYmVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICB0YWJMYWJlbC5hY3RpdmUgPSB0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWJMYWJlbC5kaXNhYmxlZDtcbiAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBTdHJpbmcodGFiTGFiZWwuYWN0aXZlKSk7XG4gICAgdGFiTGFiZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0YWJMYWJlbC50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgIH0pO1xuICAgIGlmICh0YWJMYWJlbC50YWIpIHtcbiAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIHRhYkxhYmVsLnRhYi5pZCk7XG4gICAgICB0YWJMYWJlbC50YWIudG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0YWJMYWJlbC5hY3RpdmUpO1xuICAgIH1cblxuICAgIHRoaXMuX3RhYkF0dHJpYnV0ZU9ic2VydmVyLm9ic2VydmUodGFiTGFiZWwpO1xuICAgIHRhYkxhYmVsLnNsb3QgPSAndGFiLWJhcic7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRUYWJzOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdID0gdGhpcy5fZW5hYmxlZFRhYnMoKTtcblxuICAgIGlmIChcbiAgICAgICFlbmFibGVkVGFicyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRUYWJzLmZpbmRJbmRleCgodDogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpID0+IHQuYWN0aXZlKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRUYWJzLmxlbmd0aCk7XG4gICAgICBlbmFibGVkVGFic1tuZXh0SW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgICAgZW5hYmxlZFRhYnNbbmV4dEluZGV4XT8uZm9jdXMoKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhYi1ncm91cFwiXG4gICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RhYkdyb3VwRWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0YWItYmFyXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblRhYnNTbG90Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhyb3R0bGUodGhpcy5fb25Db250ZW50U2xvdENoYW5nZSwgMTUwKX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRhYi1ncm91cCc6IFNiYlRhYkdyb3VwRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkNBLE1BQU0sb0JBQTBDO0FBQUEsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxVQUFVOztBQUd4QyxJQUFJLFNBQVM7SUFVUCxzQkFBa0IsTUFBQTs7MEJBRHZCLGNBQWMsZUFBZSxDQUFDOzs7O29CQUNFLGtCQUFrQixVQUFVOzs7Ozs7QUFBcEMsRUFBQSxtQkFBUSxZQUE2QjtBQUFBLElBZ0Q1RCxjQUFBO0FBQ0UsWUFBQTtBQUhGO0FBeENRLFdBQUEsU0FOSixrQkFBQSxNQUFBLDBCQUFBLEdBTXVDLENBQUE7QUFJbkMsV0FBQSx3QkFBd0IsSUFBSSxtQkFBbUIsTUFBTTtBQUFBLFFBQzNELFFBQVE7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFVBQVUsQ0FBQyxrQkFBa0IsS0FBSyx1QkFBdUIsYUFBYTtBQUFBLE1BQUEsQ0FDdkU7QUFDTyxXQUFBLDBCQUEwQixJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDM0QsUUFBUTtBQUFBLFFBQ1IsYUFBYTtBQUFBLFFBQ2IsVUFBVSxDQUFDLFlBQVksS0FBSyx5QkFBeUIsT0FBTztBQUFBLE1BQUEsQ0FDN0Q7QUFDTyxXQUFBLDRCQUE0QixJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDN0QsUUFBUTtBQUFBLFFBQ1IsYUFBYTtB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
|
|
247
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4LCBpc0Fycm93S2V5UHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgdGhyb3R0bGUgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWJMYWJlbEVsZW1lbnQgfSBmcm9tICcuLi90YWItbGFiZWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWJFbGVtZW50IH0gZnJvbSAnLi4vdGFiLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGFiLWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCB0eXBlIFNiYlRhYkNoYW5nZWRFdmVudERldGFpbHMgPSB7XG4gIGFjdGl2ZUluZGV4OiBudW1iZXI7XG4gIGFjdGl2ZVRhYkxhYmVsOiBTYmJUYWJMYWJlbEVsZW1lbnQ7XG4gIGFjdGl2ZVRhYjogU2JiVGFiRWxlbWVudDtcbiAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICBwcmV2aW91c1RhYkxhYmVsOiBTYmJUYWJMYWJlbEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByZXZpb3VzVGFiOiBTYmJUYWJFbGVtZW50IHwgdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVNiYlRhYkdyb3VwQWN0aW9ucyB7XG4gIGFjdGl2YXRlKCk6IHZvaWQ7XG4gIGRlYWN0aXZhdGUoKTogdm9pZDtcbiAgZW5hYmxlKCk6IHZvaWQ7XG4gIGRpc2FibGUoKTogdm9pZDtcbiAgc2VsZWN0KCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYiBleHRlbmRzIFNiYlRhYkxhYmVsRWxlbWVudCB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRhYjogU2JiVGFiRWxlbWVudCB8IG51bGw7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0YWJHcm91cEFjdGlvbnM/OiBJbnRlcmZhY2VTYmJUYWJHcm91cEFjdGlvbnM7XG4gIHNpemU6ICdzJyB8ICdsJyB8ICd4bCc7XG59XG5cbi8qKlxuICogSXQgZGlzcGxheXMgb25lIG9yIG1vcmUgdGFicywgZWFjaCBvbmUgd2l0aCBhIGxhYmVsIGFuZCBzb21lIGNvbnRlbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi10YWItZ3JvdXBgIHZpYSBgc2JiLXRhYi1sYWJlbGAgYW5kIGBzYmItdGFiYCBpbnN0YW5jZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYlRhYkNoYW5nZWRFdmVudERldGFpbHM+fSB0YWJjaGFuZ2UgLSBUaGUgdGFiY2hhbmdlIGV2ZW50IGlzIGRpc3BhdGNoZWQgd2hlbiBhIHRhYiBpcyBzZWxlY3RlZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYi1ncm91cCcpXG5jbGFzcyBTYmJUYWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB0YWJjaGFuZ2U6ICd0YWJjaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX3RhYkdyb3VwRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90YWJDb250ZW50RWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90YWJHcm91cFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX29uVGFiR3JvdXBFbGVtZW50UmVzaXplKGVudHJpZXMpLFxuICB9KTtcbiAgcHJpdmF0ZSBfdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHRoaXMuX29uVGFiQ29udGVudEVsZW1lbnRSZXNpemUoZW50cmllcyksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzLCBsIG9yIHhsLlxuICAgKiBAZGVmYXVsdCAnbCcgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHNpemUodmFsdWU6ICdzJyB8ICdsJyB8ICd4bCcpIHtcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlU2l6ZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiAncycgfCAnbCcgfCAneGwnIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgfVxuICBwcml2YXRlIF9zaXplOiAncycgfCAnbCcgfCAneGwnID0gaXNMZWFuKCkgPyAncycgOiAnbCc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgdGFiLiBJZiBpdCBtYXRjaGVzIGEgZGlzYWJsZWQgdGFiIG9yIGV4Y2VlZHMgdGhlIGxlbmd0aCBvZlxuICAgKiB0aGUgdGFiIGdyb3VwLCB0aGUgZmlyc3QgZW5hYmxlZCB0YWIgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbml0aWFsLXNlbGVjdGVkLWluZGV4JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbml0aWFsU2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogR2V0cyB0aGUgc2xvdHRlZCBgc2JiLXRhYi1sYWJlbGBzLiAqL1xuICBwdWJsaWMgZ2V0IGxhYmVscygpOiBTYmJUYWJMYWJlbEVsZW1lbnRbXSB7XG4gICAgLyoqXG4gICAgICogVGhlIHF1ZXJ5U2VsZWN0b3IgQVBJIGlzIG5vdCB1c2VkIGJlY2F1c2Ugd2hlbiBuZXN0ZWQgdGFicyBhcmUgdXNlZCxcbiAgICAgKiB0aGUgcmV0dXJuZWQgYXJyYXkgY29udGFpbnMgdGhlIGlubmVyIHRhYnMgdG9vLCBhbmQgdGhpcyBicmVha3MgdGhlIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAgICovXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSkuZmlsdGVyKChjaGlsZCkgPT5cbiAgICAgIC9ec2JiLXRhYi1sYWJlbCQvdS50ZXN0KGNoaWxkLmxvY2FsTmFtZSksXG4gICAgKSBhcyBTYmJUYWJMYWJlbEVsZW1lbnRbXTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5sYWJlbHMuZm9yRWFjaCgodGFiTGFiZWwpID0+IHRhYkxhYmVsWydsaW5rVG9UYWInXSgpKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5fdGFiR3JvdXBSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhYkdyb3VwRWxlbWVudCk7XG4gICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fdGFiQ29udGVudEVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gZGlzYWJsZS5cbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlVGFiKHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYWJlbHNbdGFiSW5kZXhdKSB7XG4gICAgICB0aGlzLmxhYmVsc1t0YWJJbmRleF0uZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gZW5hYmxlLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGFiZWxzW3RhYkluZGV4XSkge1xuICAgICAgdGhpcy5sYWJlbHNbdGFiSW5kZXhdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBhIHRhYiBieSBpbmRleC5cbiAgICogQHBhcmFtIHRhYkluZGV4IFRoZSBpbmRleCBvZiB0aGUgdGFiIHlvdSB3YW50IHRvIGFjdGl2YXRlLlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlVGFiKHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsc1t0YWJJbmRleF0/LmFjdGl2YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbmFibGVkVGFicygpOiBTYmJUYWJMYWJlbEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmZpbHRlcigodCkgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZSh0KTtcbiAgICAgIHJldHVybiAhdC5kaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbHMuZm9yRWFjaCgodGFiTGFiZWw6IFNiYlRhYkxhYmVsRWxlbWVudCkgPT5cbiAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmxhYmVscy5mb3JFYWNoKCh0YWJMYWJlbCkgPT4gdGFiTGFiZWxbJ2xpbmtUb1RhYiddKCkpO1xuICAgIHRoaXMubGFiZWxzLmZpbmQoKHRhYkxhYmVsKSA9PiB0YWJMYWJlbC5hY3RpdmUpPy5hY3RpdmF0ZSgpO1xuICB9O1xuXG4gIHByaXZhdGUgX29uTGFiZWxTbG90Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3VwZGF0ZVNpemUoKTtcbiAgICB0aGlzLmxhYmVscy5mb3JFYWNoKCh0YWJMYWJlbCkgPT4gdGFiTGFiZWxbJ2xpbmtUb1RhYiddKCkpO1xuICB9O1xuXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYWJMYWJlbCA9IHRoaXMubGFiZWxzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdO1xuICAgIGlmIChzZWxlY3RlZFRhYkxhYmVsKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHNlbGVjdGVkVGFiTGFiZWwpO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4ID49IDAgJiZcbiAgICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleCA8IHRoaXMubGFiZWxzLmxlbmd0aCAmJlxuICAgICAgICAhc2VsZWN0ZWRUYWJMYWJlbC5kaXNhYmxlZFxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdGVkVGFiTGFiZWwuYWN0aXZhdGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9lbmFibGVkVGFicygpWzBdPy5hY3RpdmF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJHcm91cEVsZW1lbnRSZXNpemUoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBjb25zdCBsYWJlbEVsZW1lbnRzID0gKFxuICAgICAgICBlbnRyeS50YXJnZXQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFNsb3RFbGVtZW50XG4gICAgICApLmFzc2lnbmVkRWxlbWVudHMoKSBhcyBTYmJUYWJMYWJlbEVsZW1lbnRbXTtcblxuICAgICAgZm9yIChjb25zdCB0YWJMYWJlbCBvZiBsYWJlbEVsZW1lbnRzKSB7XG4gICAgICAgIHRhYkxhYmVsLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICAgICAnZGF0YS1oYXMtZGl2aWRlcicsXG4gICAgICAgICAgdGFiTGFiZWwgPT09IGxhYmVsRWxlbWVudHNbMF0gfHwgdGFiTGFiZWwub2Zmc2V0TGVmdCA9PT0gbGFiZWxFbGVtZW50c1swXS5vZmZzZXRMZWZ0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi10YWItZ3JvdXAtd2lkdGgnLCBgJHt0aGlzLl90YWJHcm91cEVsZW1lbnQuY2xpZW50V2lkdGh9cHhgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkNvbnRlbnRFbGVtZW50UmVzaXplKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGFiQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gTWF0aC5mbG9vcihlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQpO1xuXG4gICAgICB0aGlzLl90YWJDb250ZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtjb250ZW50SGVpZ2h0fXB4YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRUYWJzOiBTYmJUYWJMYWJlbEVsZW1lbnRbXSA9IHRoaXMuX2VuYWJsZWRUYWJzKCk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZFRhYnMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkVGFicy5maW5kSW5kZXgoKHQpID0+IHQuYWN0aXZlKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRUYWJzLmxlbmd0aCk7XG4gICAgICBlbmFibGVkVGFic1tuZXh0SW5kZXhdPy5hY3RpdmF0ZSgpO1xuICAgICAgZW5hYmxlZFRhYnNbbmV4dEluZGV4XT8uZm9jdXMoKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNiYi10YWItZ3JvdXBcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90YWJHcm91cEVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFiLWJhclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25MYWJlbFNsb3RDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNiYi10YWItZ3JvdXAtY29udGVudFwiXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90YWJDb250ZW50RWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhyb3R0bGUodGhpcy5fb25Db250ZW50U2xvdENoYW5nZSwgMTUwKX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRhYi1ncm91cCc6IFNiYlRhYkdyb3VwRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXdETSxzQkFBa0IsTUFBQTs7MEJBRHZCLGNBQWMsZUFBZSxDQUFDOzs7O29CQUNFLGtCQUFrQixVQUFVOzs7Ozs7QUFBcEMsRUFBQSxtQkFBUSxZQUE2QjtBQUFBLElBb0Q1RCxjQUFBO0FBQ0UsWUFBQTtBQWRGO0FBakNRLFdBQUEsbUJBTko7QUFRSSxXQUFBLDBCQUEwQixJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDM0QsUUFBUTtBQUFBLFFBQ1IsYUFBYTtBQUFBLFFBQ2IsVUFBVSxDQUFDLFlBQVksS0FBSyx5QkFBeUIsT0FBTztBQUFBLE1BQUEsQ0FDN0Q7QUFDTyxXQUFBLDRCQUE0QixJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDN0QsUUFBUTtBQUFBLFFBQ1IsYUFBYTtBQUFBLFFBQ2IsVUFBVSxDQUFDLFlBQVksS0FBSywyQkFBMkIsT0FBTztBQUFBLE1BQUEsQ0FDL0Q7QUFjTyxXQUFBLFFBQTBCLE9BQUEsSUFBVyxNQUFNO0FBUW5DLHlCQUFBLHdDQUFBLGtCQUFBLE1BQUEsb0NBQStCLENBQUM7QUFvRXhDLFdBQUEsd0JBQW9CLGtCQUFBLE1BQUEsdUNBQUEsR0FBRyxNQUFXO0FBQ3hDLGFBQUssT0FBTyxRQUFRLENBQUMsYUFBYSxTQUFTLFdBQVcsR0FBRztBQUN6RCxhQUFLLE9BQU8sS0FB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
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
|
|
1
|
+
import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
|
|
2
2
|
import { SbbTitleLevel } from '../../title.js';
|
|
3
|
+
import { SbbTabElement } from '../tab/tab.component.js';
|
|
4
|
+
import { SbbTabGroupElement } from '../tab-group.js';
|
|
3
5
|
declare const SbbTabLabelElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbElementInternalsMixinType> & typeof LitElement & import('../../core/mixins.js').SbbElementInternalsConstructor;
|
|
4
6
|
/**
|
|
5
7
|
* Combined with a `sbb-tab-group`, it displays a tab's title.
|
|
@@ -11,15 +13,32 @@ declare const SbbTabLabelElement_base: import('../../core/mixins.js').AbstractCo
|
|
|
11
13
|
export declare class SbbTabLabelElement extends SbbTabLabelElement_base {
|
|
12
14
|
static role: string;
|
|
13
15
|
static styles: CSSResultGroup;
|
|
16
|
+
/** Whether the tab is selected. */
|
|
17
|
+
private _selected;
|
|
14
18
|
/**
|
|
15
19
|
* The level will correspond to the heading tag generated in the title.
|
|
16
20
|
* Use this property to generate the appropriate header tag, taking SEO into consideration.
|
|
17
21
|
*/
|
|
18
22
|
accessor level: SbbTitleLevel;
|
|
19
|
-
/** Active tab state */
|
|
23
|
+
/** Active tab state. */
|
|
20
24
|
accessor active: boolean;
|
|
21
25
|
/** Amount displayed inside the tab. */
|
|
22
26
|
accessor amount: string;
|
|
27
|
+
/** Get the `sbb-tab` related to the `sbb-tab-label`. */
|
|
28
|
+
get tab(): SbbTabElement | null;
|
|
29
|
+
/** Get the parent `sbb-tab-group`. */
|
|
30
|
+
get group(): SbbTabGroupElement | null;
|
|
31
|
+
constructor();
|
|
32
|
+
connectedCallback(): void;
|
|
33
|
+
protected willUpdate(changedProperties: PropertyValues<this>): void;
|
|
34
|
+
/** Deactivate the tab. */
|
|
35
|
+
deactivate(): void;
|
|
36
|
+
/** Select the tab, deactivating the current selected one, and dispatch the tabchange event. */
|
|
37
|
+
activate(): void;
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
protected linkToTab(): void;
|
|
23
42
|
protected render(): TemplateResult;
|
|
24
43
|
}
|
|
25
44
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-label.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-label/tab-label.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tab-label.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-label/tab-label.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAOjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAA6B,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAIrF;;;;;;GAMG;AACH,qBAGM,kBAAmB,SAAQ,uBAEhC;IACC,OAAuB,IAAI,SAAS;IACpC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAkB;IAEnC;;;OAGG;IACH,SAA4B,KAAK,EAAE,aAAa,CAAO;IAEvD,wBAAwB;IACxB,SAEgB,MAAM,EAAE,OAAO,CAAS;IAExC,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,wDAAwD;IACxD,IAAW,GAAG,IAAI,aAAa,GAAG,IAAI,CAIrC;IAED,sCAAsC;IACtC,IAAW,KAAK,IAAI,kBAAkB,GAAG,IAAI,CAE5C;;IAQe,iBAAiB,IAAI,IAAI;cAMtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAuB5E,0BAA0B;IACnB,UAAU,IAAI,IAAI;IAMzB,+FAA+F;IACxF,QAAQ,IAAI,IAAI;IAiCvB;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,IAAI;cAYR,MAAM,IAAI,cAAc;CAoB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
|