@sbb-esta/lyne-elements 1.11.3 → 1.12.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/_index.scss +1 -1
- package/core/i18n/i18n.d.ts +5 -0
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n.js +85 -55
- package/core/styles/lists.scss +4 -0
- package/core/styles/mixins/lists.scss +128 -76
- package/custom-elements.json +774 -76
- package/development/core/i18n/i18n.d.ts +5 -0
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n.js +36 -1
- package/development/paginator/index.d.ts +2 -0
- package/development/paginator/index.d.ts.map +1 -0
- package/development/paginator/paginator.d.ts +91 -0
- package/development/paginator/paginator.d.ts.map +1 -0
- package/development/paginator.d.ts +2 -0
- package/development/paginator.d.ts.map +1 -0
- package/development/paginator.js +526 -0
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +16 -12
- package/development/select/select.d.ts +6 -0
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +22 -2
- package/development/slider/slider.d.ts +35 -16
- package/development/slider/slider.d.ts.map +1 -1
- package/development/slider.js +102 -81
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/lists.css +102 -36
- package/package.json +6 -1
- package/paginator/index.d.ts +2 -0
- package/paginator/index.d.ts.map +1 -0
- package/paginator/paginator.d.ts +91 -0
- package/paginator/paginator.d.ts.map +1 -0
- package/paginator.d.ts +2 -0
- package/paginator.d.ts.map +1 -0
- package/paginator.js +263 -0
- package/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +11 -7
- package/select/select.d.ts +6 -0
- package/select/select.d.ts.map +1 -1
- package/select.js +40 -24
- package/slider/slider.d.ts +35 -16
- package/slider/slider.d.ts.map +1 -1
- package/slider.js +111 -78
- package/standard-theme.css +102 -36
package/development/slider.js
CHANGED
|
@@ -4,9 +4,8 @@ import { ref } from "lit/directives/ref.js";
|
|
|
4
4
|
import { styleMap } from "lit/directives/style-map.js";
|
|
5
5
|
import { SbbConnectedAbortController } from "./core/controllers.js";
|
|
6
6
|
import { hostAttributes } from "./core/decorators.js";
|
|
7
|
-
import { setOrRemoveAttribute } from "./core/dom.js";
|
|
8
7
|
import { EventEmitter, forwardEventToHost } from "./core/eventing.js";
|
|
9
|
-
import { SbbDisabledMixin } from "./core/mixins.js";
|
|
8
|
+
import { SbbDisabledMixin, SbbFormAssociatedMixin } from "./core/mixins.js";
|
|
10
9
|
import "./icon.js";
|
|
11
10
|
const style = css`@charset "UTF-8";
|
|
12
11
|
/** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
|
|
@@ -48,7 +47,7 @@ const style = css`@charset "UTF-8";
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
:host(
|
|
50
|
+
:host(:disabled) {
|
|
52
51
|
--sbb-slider-icon-color: var(--sbb-color-graphite);
|
|
53
52
|
--sbb-slider-knob-border-color: var(--sbb-color-smoke);
|
|
54
53
|
--sbb-slider-knob-border-size: var(--sbb-border-width-2x);
|
|
@@ -60,13 +59,13 @@ const style = css`@charset "UTF-8";
|
|
|
60
59
|
--sbb-slider-knob-border-color: var(--sbb-slider-selected-line-disabled-color);
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
:host(
|
|
62
|
+
:host(:disabled),
|
|
64
63
|
:host([readonly]) {
|
|
65
64
|
--sbb-slider-line-color: var(--sbb-slider-line-disabled-color);
|
|
66
65
|
--sbb-slider-selected-line-color: var(--sbb-slider-selected-line-disabled-color);
|
|
67
66
|
}
|
|
68
67
|
@media (forced-colors: active) {
|
|
69
|
-
:host(
|
|
68
|
+
:host(:disabled),
|
|
70
69
|
:host([readonly]) {
|
|
71
70
|
--sbb-slider-icon-color: GrayText;
|
|
72
71
|
--sbb-slider-selected-line-disabled-color: GrayText;
|
|
@@ -146,7 +145,7 @@ const style = css`@charset "UTF-8";
|
|
|
146
145
|
outline: var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width);
|
|
147
146
|
--sbb-slider-knob-size: var(--sbb-slider-knob-size-active);
|
|
148
147
|
}
|
|
149
|
-
:host(:not(:is(
|
|
148
|
+
:host(:not(:is(:disabled, [readonly]))) .sbb-slider__range-input:active ~ .sbb-slider__knob {
|
|
150
149
|
--sbb-slider-knob-size: var(--sbb-slider-knob-size-active);
|
|
151
150
|
}`;
|
|
152
151
|
var __defProp = Object.defineProperty;
|
|
@@ -159,13 +158,11 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
159
158
|
if (kind && result) __defProp(target, key, result);
|
|
160
159
|
return result;
|
|
161
160
|
};
|
|
162
|
-
let SbbSliderElement = class extends SbbDisabledMixin(LitElement) {
|
|
161
|
+
let SbbSliderElement = class extends SbbDisabledMixin(SbbFormAssociatedMixin(LitElement)) {
|
|
163
162
|
constructor() {
|
|
164
|
-
super(
|
|
165
|
-
this.
|
|
166
|
-
this.
|
|
167
|
-
this.min = "0";
|
|
168
|
-
this.max = "100";
|
|
163
|
+
super();
|
|
164
|
+
this._min = "0";
|
|
165
|
+
this._max = "100";
|
|
169
166
|
this.readonly = false;
|
|
170
167
|
this._valueFraction = 0;
|
|
171
168
|
this._didChange = new EventEmitter(this, SbbSliderElement.events.didChange, {
|
|
@@ -173,96 +170,128 @@ let SbbSliderElement = class extends SbbDisabledMixin(LitElement) {
|
|
|
173
170
|
cancelable: true
|
|
174
171
|
});
|
|
175
172
|
this._abort = new SbbConnectedAbortController(this);
|
|
173
|
+
this.internals.role = "slider";
|
|
174
|
+
}
|
|
175
|
+
set value(value) {
|
|
176
|
+
if (this._isValidNumber(value)) {
|
|
177
|
+
super.value = this._boundBetweenMinMax(value);
|
|
178
|
+
} else {
|
|
179
|
+
super.value = this._getDefaultValue();
|
|
180
|
+
}
|
|
181
|
+
this.internals.ariaValueNow = this.value;
|
|
182
|
+
this._calculateValueFraction();
|
|
183
|
+
}
|
|
184
|
+
get value() {
|
|
185
|
+
return super.value;
|
|
186
|
+
}
|
|
187
|
+
set valueAsNumber(value) {
|
|
188
|
+
this.value = value == null ? void 0 : value.toString();
|
|
189
|
+
}
|
|
190
|
+
get valueAsNumber() {
|
|
191
|
+
return Number(this.value);
|
|
192
|
+
}
|
|
193
|
+
set min(value) {
|
|
194
|
+
if (!this._isValidNumber(value)) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
this._min = value;
|
|
198
|
+
this.value = this._boundBetweenMinMax(this.value);
|
|
199
|
+
}
|
|
200
|
+
get min() {
|
|
201
|
+
return this._min;
|
|
202
|
+
}
|
|
203
|
+
set max(value) {
|
|
204
|
+
if (!this._isValidNumber(value)) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
this._max = value;
|
|
208
|
+
this.value = this._boundBetweenMinMax(this.value);
|
|
209
|
+
}
|
|
210
|
+
get max() {
|
|
211
|
+
return this._max;
|
|
176
212
|
}
|
|
177
213
|
connectedCallback() {
|
|
178
214
|
super.connectedCallback();
|
|
179
215
|
const signal = this._abort.signal;
|
|
180
216
|
this.addEventListener("keydown", (e) => this._handleKeydown(e), { signal });
|
|
181
|
-
this.
|
|
217
|
+
if (!this.value) {
|
|
218
|
+
this.value = this._getDefaultValue();
|
|
219
|
+
}
|
|
182
220
|
}
|
|
183
221
|
willUpdate(changedProperties) {
|
|
184
222
|
super.willUpdate(changedProperties);
|
|
185
|
-
if (changedProperties.has("value")) {
|
|
186
|
-
this._handleChange(Number(this.value));
|
|
187
|
-
} else if (changedProperties.has("valueAsNumber")) {
|
|
188
|
-
this._handleChange(Number(this.valueAsNumber));
|
|
189
|
-
}
|
|
190
223
|
if (changedProperties.has("min")) {
|
|
191
|
-
|
|
224
|
+
this.internals.ariaValueMin = this.min;
|
|
192
225
|
}
|
|
193
226
|
if (changedProperties.has("max")) {
|
|
194
|
-
|
|
227
|
+
this.internals.ariaValueMax = this.max;
|
|
195
228
|
}
|
|
196
229
|
if (changedProperties.has("readonly")) {
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
if (changedProperties.has("disabled")) {
|
|
200
|
-
if (this.disabled) {
|
|
201
|
-
this.setAttribute("aria-disabled", "true");
|
|
202
|
-
this.removeAttribute("tabindex");
|
|
203
|
-
} else {
|
|
204
|
-
this.removeAttribute("aria-disabled");
|
|
205
|
-
this.setAttribute("tabindex", "0");
|
|
206
|
-
}
|
|
230
|
+
this.internals.ariaReadOnly = Boolean(this.readonly).toString();
|
|
207
231
|
}
|
|
208
232
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
this.value = newValue.toString();
|
|
216
|
-
this.valueAsNumber = newValue;
|
|
217
|
-
setOrRemoveAttribute(this, "aria-valuenow", this.value || null);
|
|
233
|
+
/**
|
|
234
|
+
* The reset value is the attribute value (the setup value). If not present, calculates the default.
|
|
235
|
+
* @internal
|
|
236
|
+
*/
|
|
237
|
+
formResetCallback() {
|
|
238
|
+
this.value = this.getAttribute("value") ?? this._getDefaultValue();
|
|
218
239
|
}
|
|
219
240
|
/**
|
|
220
|
-
*
|
|
221
|
-
* The first calculation happens in connectedCallback(...), so since `_rangeInput` is not yet available,
|
|
222
|
-
* the `min` and `max` values are used; if `value` is not provided, the default value is halfway between min and max
|
|
223
|
-
* (see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#value).
|
|
241
|
+
* @internal
|
|
224
242
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
243
|
+
formStateRestoreCallback(state2, _reason) {
|
|
244
|
+
this.value = state2;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* If no value is provided, default is the middle point between min and max
|
|
248
|
+
* (see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#value)
|
|
249
|
+
*/
|
|
250
|
+
_getDefaultValue() {
|
|
251
|
+
return (+this.min + (+this.max - +this.min) / 2).toString();
|
|
252
|
+
}
|
|
253
|
+
_isValidNumber(value) {
|
|
254
|
+
return !!value && !isNaN(Number(value));
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Restrains the value between the min and max
|
|
258
|
+
*/
|
|
259
|
+
_boundBetweenMinMax(value) {
|
|
260
|
+
return Math.max(+this.min, Math.min(+this.max, +value)).toString();
|
|
261
|
+
}
|
|
262
|
+
_calculateValueFraction() {
|
|
263
|
+
const value = this.valueAsNumber;
|
|
264
|
+
const min = +this.min;
|
|
265
|
+
const max = +this.max;
|
|
235
266
|
const mathFraction = (value - min) / (max - min);
|
|
236
|
-
this._valueFraction = isNaN(mathFraction)
|
|
237
|
-
this._syncValues(value);
|
|
267
|
+
this._valueFraction = isNaN(mathFraction) ? 0 : Math.max(0, Math.min(1, mathFraction));
|
|
238
268
|
}
|
|
239
269
|
async _handleKeydown(event) {
|
|
240
270
|
if (event.key !== "Tab") {
|
|
241
271
|
event.preventDefault();
|
|
242
272
|
}
|
|
243
|
-
if (this.
|
|
273
|
+
if (this.readonly) {
|
|
244
274
|
return;
|
|
245
275
|
}
|
|
246
276
|
if (event.key === "Home") {
|
|
247
|
-
this._rangeInput.value = this.
|
|
277
|
+
this._rangeInput.value = this.min;
|
|
248
278
|
} else if (event.key === "End") {
|
|
249
|
-
this._rangeInput.value = this.
|
|
279
|
+
this._rangeInput.value = this.max;
|
|
250
280
|
} else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
|
|
251
281
|
this._rangeInput.stepDown();
|
|
252
282
|
} else if (event.key === "ArrowRight" || event.key === "ArrowUp") {
|
|
253
283
|
this._rangeInput.stepUp();
|
|
254
284
|
} else if (event.key === "PageDown") {
|
|
255
|
-
this._rangeInput.stepDown((+this.
|
|
285
|
+
this._rangeInput.stepDown((+this.max - +this.min) / 10);
|
|
256
286
|
} else if (event.key === "PageUp") {
|
|
257
|
-
this._rangeInput.stepUp((+this.
|
|
287
|
+
this._rangeInput.stepUp((+this.max - +this.min) / 10);
|
|
258
288
|
} else {
|
|
259
289
|
return;
|
|
260
290
|
}
|
|
261
|
-
this.
|
|
262
|
-
this.dispatchEvent(
|
|
291
|
+
this._rangeInput.dispatchEvent(
|
|
263
292
|
new InputEvent("input", { bubbles: true, cancelable: true, composed: true })
|
|
264
293
|
);
|
|
265
|
-
this.
|
|
294
|
+
this._rangeInput.dispatchEvent(new Event("change", { bubbles: true }));
|
|
266
295
|
}
|
|
267
296
|
/** Emits the change event. */
|
|
268
297
|
_emitChange(event) {
|
|
@@ -282,16 +311,14 @@ let SbbSliderElement = class extends SbbDisabledMixin(LitElement) {
|
|
|
282
311
|
>
|
|
283
312
|
<input
|
|
284
313
|
tabindex="-1"
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
?disabled=${this.disabled || this.readonly || nothing}
|
|
289
|
-
.valueAsNumber=${this.valueAsNumber || nothing}
|
|
314
|
+
min=${this.min}
|
|
315
|
+
max=${this.max}
|
|
316
|
+
?disabled=${this.disabled || this.formDisabled || this.readonly}
|
|
290
317
|
value=${this.value || nothing}
|
|
291
318
|
class="sbb-slider__range-input"
|
|
292
319
|
type="range"
|
|
293
320
|
@change=${(event) => this._emitChange(event)}
|
|
294
|
-
@input=${() => this.
|
|
321
|
+
@input=${() => this.value = this._rangeInput.value}
|
|
295
322
|
${ref((input) => this._rangeInput = input)}
|
|
296
323
|
/>
|
|
297
324
|
<div class="sbb-slider__line">
|
|
@@ -313,22 +340,16 @@ SbbSliderElement.events = {
|
|
|
313
340
|
};
|
|
314
341
|
__decorateClass([
|
|
315
342
|
property()
|
|
316
|
-
], SbbSliderElement.prototype, "value",
|
|
343
|
+
], SbbSliderElement.prototype, "value", 1);
|
|
317
344
|
__decorateClass([
|
|
318
345
|
property({ attribute: "value-as-number", type: Number })
|
|
319
|
-
], SbbSliderElement.prototype, "valueAsNumber",
|
|
320
|
-
__decorateClass([
|
|
321
|
-
property({ reflect: true })
|
|
322
|
-
], SbbSliderElement.prototype, "name", 2);
|
|
323
|
-
__decorateClass([
|
|
324
|
-
property()
|
|
325
|
-
], SbbSliderElement.prototype, "form", 2);
|
|
346
|
+
], SbbSliderElement.prototype, "valueAsNumber", 1);
|
|
326
347
|
__decorateClass([
|
|
327
348
|
property()
|
|
328
|
-
], SbbSliderElement.prototype, "min",
|
|
349
|
+
], SbbSliderElement.prototype, "min", 1);
|
|
329
350
|
__decorateClass([
|
|
330
351
|
property()
|
|
331
|
-
], SbbSliderElement.prototype, "max",
|
|
352
|
+
], SbbSliderElement.prototype, "max", 1);
|
|
332
353
|
__decorateClass([
|
|
333
354
|
property({ type: Boolean })
|
|
334
355
|
], SbbSliderElement.prototype, "readonly", 2);
|
|
@@ -344,10 +365,10 @@ __decorateClass([
|
|
|
344
365
|
SbbSliderElement = __decorateClass([
|
|
345
366
|
customElement("sbb-slider"),
|
|
346
367
|
hostAttributes({
|
|
347
|
-
|
|
368
|
+
tabindex: "0"
|
|
348
369
|
})
|
|
349
370
|
], SbbSliderElement);
|
|
350
371
|
export {
|
|
351
372
|
SbbSliderElement
|
|
352
373
|
};
|
|
353
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvc2xpZGVyL3NsaWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBmb3J3YXJkRXZlbnRUb0hvc3QgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NsaWRlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uL2ljb24uanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGlucHV0IGtub2IgdGhhdCBjYW4gYmUgbW92ZWQgaW4gYSByYW5nZS5cbiAqXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRDaGFuZ2UgLSBEZXByZWNhdGVkLiB1c2VkIGZvciBSZWFjdC4gV2lsbCBwcm9iYWJseSBiZSByZW1vdmVkIG9uY2UgUmVhY3QgMTkgaXMgYXZhaWxhYmxlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXNsaWRlcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnc2xpZGVyJyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiU2xpZGVyRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZGlkQ2hhbmdlOiAnZGlkQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVmFsdWUgZm9yIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdmFsdWU/OiBzdHJpbmcgPSAnJztcblxuICAvKiogTnVtZXJpYyB2YWx1ZSBmb3IgdGhlIGlubmVyIEhUTUxJbnB1dEVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ZhbHVlLWFzLW51bWJlcicsIHR5cGU6IE51bWJlciB9KSBwdWJsaWMgdmFsdWVBc051bWJlcj86IG51bWJlcjtcblxuICAvKiogTmFtZSBvZiB0aGUgaW5uZXIgSFRNTElucHV0RWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgbmFtZT86IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUaGUgPGZvcm0+IGVsZW1lbnQgdG8gYXNzb2NpYXRlIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50IHdpdGguICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBmb3JtPzogc3RyaW5nO1xuXG4gIC8qKiBNaW5pbXVtIGFjY2VwdGFibGUgdmFsdWUgZm9yIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgbWluPzogc3RyaW5nID0gJzAnO1xuXG4gIC8qKiBNYXhpbXVtIGFjY2VwdGFibGUgdmFsdWUgZm9yIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgbWF4Pzogc3RyaW5nID0gJzEwMCc7XG5cbiAgLyoqXG4gICAqIFJlYWRvbmx5IHN0YXRlIGZvciB0aGUgaW5uZXIgSFRNTElucHV0RWxlbWVudC5cbiAgICogU2luY2UgdGhlIGlucHV0IHJhbmdlIGRvZXMgbm90IGFsbG93IHRoaXMgYXR0cmlidXRlLCBpdCB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBgZGlzYWJsZWRgIG9uZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBpY29uIGF0IGNvbXBvbmVudCdzIHN0YXJ0LCB3aGljaCB3aWxsIGJlIGZvcndhcmQgdG8gdGhlIG5lc3RlZCBgc2JiLWljb25gLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzdGFydC1pY29uJyB9KSBwdWJsaWMgc3RhcnRJY29uPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBpY29uIGF0IGNvbXBvbmVudCdzIGVuZCwgd2hpY2ggd2lsbCBiZSBmb3J3YXJkIHRvIHRoZSBuZXN0ZWQgYHNiYi1pY29uYC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZW5kLWljb24nIH0pIHB1YmxpYyBlbmRJY29uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmF0aW8gYmV0d2VlbiB0aGUgYWJzb2x1dGUgdmFsdWUgYW5kIHRoZSB2YWxpZGl0eSBpbnRlcnZhbC5cbiAgICogRS5nLiBnaXZlbiBgbWluPTBgLCBgbWF4PTEwMGAgYW5kIGB2YWx1ZT01MGAsIHRoZW4gYF92YWx1ZUZyYWN0aW9uPTAuNWBcbiAgICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3ZhbHVlRnJhY3Rpb24gPSAwO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBvbmx5IHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gICAqL1xuICBwcml2YXRlIF9kaWRDaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiU2xpZGVyRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICB9KTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50IHdpdGggdHlwZT0ncmFuZ2UnLiAqL1xuICBwcml2YXRlIF9yYW5nZUlucHV0ITogSFRNTElucHV0RWxlbWVudDtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlkb3duKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLl9oYW5kbGVDaGFuZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWUnKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlKE51bWJlcih0aGlzLnZhbHVlKSk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlQXNOdW1iZXInKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlKE51bWJlcih0aGlzLnZhbHVlQXNOdW1iZXIpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdtaW4nKSkge1xuICAgICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcywgJ2FyaWEtdmFsdWVtaW4nLCB0aGlzLm1pbiA/PyBudWxsKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbWF4JykpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdhcmlhLXZhbHVlbWF4JywgdGhpcy5tYXggPz8gbnVsbCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3JlYWRvbmx5JykpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdhcmlhLXJlYWRvbmx5JywgdGhpcy5yZWFkb25seSA/ICd0cnVlJyA6IG51bGwpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWYWx1ZXMobmV3VmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChuZXdWYWx1ZSAmJiB0eXBlb2YgbmV3VmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICBuZXdWYWx1ZSA9ICtuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWUudG9TdHJpbmcoKTtcbiAgICB0aGlzLnZhbHVlQXNOdW1iZXIgPSBuZXdWYWx1ZSBhcyBudW1iZXI7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcywgJ2FyaWEtdmFsdWVub3cnLCB0aGlzLnZhbHVlIHx8IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlcyB0aGUgYF92YWx1ZUZyYWN0aW9uYCBvbiBjaGFuZ2UgdG8gY29ycmVjdGx5IGRpc3BsYXkgdGhlIHNsaWRlciBrbm9iIGFuZCBsaW5lcy5cbiAgICogVGhlIGZpcnN0IGNhbGN1bGF0aW9uIGhhcHBlbnMgaW4gY29ubmVjdGVkQ2FsbGJhY2soLi4uKSwgc28gc2luY2UgYF9yYW5nZUlucHV0YCBpcyBub3QgeWV0IGF2YWlsYWJsZSxcbiAgICogdGhlIGBtaW5gIGFuZCBgbWF4YCB2YWx1ZXMgYXJlIHVzZWQ7IGlmIGB2YWx1ZWAgaXMgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBoYWxmd2F5IGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvcmFuZ2UjdmFsdWUpLlxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlQ2hhbmdlKHZhbHVlOiBudW1iZXIgPSB0aGlzLl9yYW5nZUlucHV0Py52YWx1ZUFzTnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcjtcbiAgICBpZiAodGhpcy5fcmFuZ2VJbnB1dCkge1xuICAgICAgbWluID0gK3RoaXMuX3JhbmdlSW5wdXQubWluO1xuICAgICAgbWF4ID0gK3RoaXMuX3JhbmdlSW5wdXQubWF4O1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW4gPSArKHRoaXMubWluIGFzIHN0cmluZyk7XG4gICAgICBtYXggPSArKHRoaXMubWF4IGFzIHN0cmluZyk7XG4gICAgICB2YWx1ZSA9XG4gICAgICAgIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPT0gJydcbiAgICAgICAgICA/ICt0aGlzLnZhbHVlXG4gICAgICAgICAgOiB0aGlzLnZhbHVlQXNOdW1iZXJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZUFzTnVtYmVyXG4gICAgICAgICAgICA6ICsodGhpcy5taW4gYXMgc3RyaW5nKSArICgrKHRoaXMubWF4IGFzIHN0cmluZykgLSArKHRoaXMubWluIGFzIHN0cmluZykpIC8gMjtcbiAgICB9XG4gICAgY29uc3QgbWF0aEZyYWN0aW9uOiBudW1iZXIgPSAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgdGhpcy5fdmFsdWVGcmFjdGlvbiA9XG4gICAgICBpc05hTihtYXRoRnJhY3Rpb24pIHx8IG1hdGhGcmFjdGlvbiA8IDAgPyAwIDogbWF0aEZyYWN0aW9uID4gMSA/IDEgOiBtYXRoRnJhY3Rpb247XG4gICAgdGhpcy5fc3luY1ZhbHVlcyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC52YWx1ZSA9IHRoaXMuX3JhbmdlSW5wdXQubWluO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW5kJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC52YWx1ZSA9IHRoaXMuX3JhbmdlSW5wdXQubWF4O1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICB0aGlzLl9yYW5nZUlucHV0LnN0ZXBEb3duKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC5zdGVwVXAoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC5zdGVwRG93bigoK3RoaXMuX3JhbmdlSW5wdXQubWF4IC0gK3RoaXMuX3JhbmdlSW5wdXQubWluKSAvIDEwKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ1BhZ2VVcCcpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQuc3RlcFVwKCgrdGhpcy5fcmFuZ2VJbnB1dC5tYXggLSArdGhpcy5fcmFuZ2VJbnB1dC5taW4pIC8gMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlQ2hhbmdlKCk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSxcbiAgICApO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyB0aGUgY2hhbmdlIGV2ZW50LiAqL1xuICBwcml2YXRlIF9lbWl0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGZvcndhcmRFdmVudFRvSG9zdChldmVudCwgdGhpcyk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX2hlaWdodC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlZml4XCI+XG4gICAgICAgICAgICAke3RoaXMuc3RhcnRJY29uID8gaHRtbGA8c2JiLWljb24gbmFtZT1cIiR7dGhpcy5zdGFydEljb259XCI+PC9zYmItaWNvbj5gIDogbm90aGluZ31cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzYmItc2xpZGVyX19jb250YWluZXJcIlxuICAgICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7ICctLXNiYi1zbGlkZXItdmFsdWUtZnJhY3Rpb24nOiB0aGlzLl92YWx1ZUZyYWN0aW9uLnRvU3RyaW5nKCkgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBuYW1lPSR7dGhpcy5uYW1lIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgIG1pbj0ke3RoaXMubWluIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgIG1heD0ke3RoaXMubWF4IHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCBub3RoaW5nfVxuICAgICAgICAgICAgICAudmFsdWVBc051bWJlcj0ke3RoaXMudmFsdWVBc051bWJlciB8fCBub3RoaW5nfVxuICAgICAgICAgICAgICB2YWx1ZT0ke3RoaXMudmFsdWUgfHwgbm90aGluZ31cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc2xpZGVyX19yYW5nZS1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgIEBjaGFuZ2U9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9lbWl0Q2hhbmdlKGV2ZW50KX1cbiAgICAgICAgICAgICAgQGlucHV0PSR7KCkgPT4gdGhpcy5faGFuZGxlQ2hhbmdlKCl9XG4gICAgICAgICAgICAgICR7cmVmKChpbnB1dD86IEVsZW1lbnQpID0+ICh0aGlzLl9yYW5nZUlucHV0ID0gaW5wdXQgYXMgSFRNTElucHV0RWxlbWVudCkpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19saW5lXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19zZWxlY3RlZC1saW5lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19rbm9iXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiPlxuICAgICAgICAgICAgJHt0aGlzLmVuZEljb24gPyBodG1sYDxzYmItaWNvbiBuYW1lPVwiJHt0aGlzLmVuZEljb259XCI+PC9zYmItaWNvbj5gIDogbm90aGluZ31cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNsaWRlcic6IFNiYlNsaWRlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCTyxJQUFNLG1CQUFOLGNBQStCLGlCQUFpQixVQUFVLEVBQUU7QUFBQSxFQUE1RCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFPTyxTQUFPLFFBQWlCO0FBTVAsU0FBTyxPQUFnQjtBQU14QyxTQUFPLE1BQWU7QUFHdEIsU0FBTyxNQUFlO0FBTUwsU0FBTyxXQUFxQjtBQVloRCxTQUFRLGlCQUFpQjtBQUtsQyxTQUFRLGFBQTJCLElBQUksYUFBYSxNQUFNLGlCQUFpQixPQUFPLFdBQVc7QUFBQSxNQUMzRixTQUFTO0FBQUEsTUFDVCxZQUFZO0FBQUEsSUFBQSxDQUNiO0FBS08sU0FBQSxTQUFTLElBQUksNEJBQTRCLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFFckMsb0JBQTBCO0FBQ3hDLFVBQU0sa0JBQWtCO0FBQ2xCLFVBQUEsU0FBUyxLQUFLLE9BQU87QUFDdEIsU0FBQSxpQkFBaUIsV0FBVyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsR0FBRyxFQUFFLE9BQUEsQ0FBUTtBQUMxRSxTQUFLLGNBQWM7QUFBQSxFQUNyQjtBQUFBLEVBRW1CLFdBQVcsbUJBQStDO0FBQzNFLFVBQU0sV0FBVyxpQkFBaUI7QUFFOUIsUUFBQSxrQkFBa0IsSUFBSSxPQUFPLEdBQUc7QUFDbEMsV0FB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
|
|
374
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvc2xpZGVyL3NsaWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgZm9yd2FyZEV2ZW50VG9Ib3N0IH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG59IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2xpZGVyLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vaWNvbi5qcyc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW5wdXQga25vYiB0aGF0IGNhbiBiZSBtb3ZlZCBpbiBhIHJhbmdlLlxuICpcbiAqIEBzbG90IHByZWZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBzdWZmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENoYW5nZSAtIERlcHJlY2F0ZWQuIHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItc2xpZGVyJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHRhYmluZGV4OiAnMCcsXG59KVxuZXhwb3J0IGNsYXNzIFNiYlNsaWRlckVsZW1lbnQgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGRpZENoYW5nZTogJ2RpZENoYW5nZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBkZWZhdWx0IGlzIHRoZSBtaWRkbGUgcG9pbnQgYmV0d2VlbiBtaW4gYW5kIG1heC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5faXNWYWxpZE51bWJlcih2YWx1ZSkpIHtcbiAgICAgIHN1cGVyLnZhbHVlID0gdGhpcy5fYm91bmRCZXR3ZWVuTWluTWF4KHZhbHVlISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnZhbHVlID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFWYWx1ZU5vdyA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5fY2FsY3VsYXRlVmFsdWVGcmFjdGlvbigpO1xuICB9XG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3VwZXIudmFsdWUhO1xuICB9XG5cbiAgLyoqIE51bWVyaWMgdmFsdWUgZm9yIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd2YWx1ZS1hcy1udW1iZXInLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCB2YWx1ZUFzTnVtYmVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU/LnRvU3RyaW5nKCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZUFzTnVtYmVyKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiBOdW1iZXIodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKiogTWluaW11bSBhY2NlcHRhYmxlIHZhbHVlIGZvciB0aGUgaW5uZXIgSFRNTElucHV0RWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBtaW4odmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5faXNWYWxpZE51bWJlcih2YWx1ZSEpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuX2JvdW5kQmV0d2Vlbk1pbk1heCh0aGlzLnZhbHVlKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG1pbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9taW47XG4gIH1cbiAgcHJpdmF0ZSBfbWluOiBzdHJpbmcgPSAnMCc7XG5cbiAgLyoqIE1heGltdW0gYWNjZXB0YWJsZSB2YWx1ZSBmb3IgdGhlIGlubmVyIEhUTUxJbnB1dEVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbWF4KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWROdW1iZXIodmFsdWUhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLl9ib3VuZEJldHdlZW5NaW5NYXgodGhpcy52YWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCBtYXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG4gIHByaXZhdGUgX21heDogc3RyaW5nID0gJzEwMCc7XG5cbiAgLyoqXG4gICAqIFJlYWRvbmx5IHN0YXRlIGZvciB0aGUgaW5uZXIgSFRNTElucHV0RWxlbWVudC5cbiAgICogU2luY2UgdGhlIGlucHV0IHJhbmdlIGRvZXMgbm90IGFsbG93IHRoaXMgYXR0cmlidXRlLCBpdCB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBgZGlzYWJsZWRgIG9uZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBpY29uIGF0IGNvbXBvbmVudCdzIHN0YXJ0LCB3aGljaCB3aWxsIGJlIGZvcndhcmQgdG8gdGhlIG5lc3RlZCBgc2JiLWljb25gLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzdGFydC1pY29uJyB9KSBwdWJsaWMgc3RhcnRJY29uPzogc3RyaW5nO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBpY29uIGF0IGNvbXBvbmVudCdzIGVuZCwgd2hpY2ggd2lsbCBiZSBmb3J3YXJkIHRvIHRoZSBuZXN0ZWQgYHNiYi1pY29uYC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZW5kLWljb24nIH0pIHB1YmxpYyBlbmRJY29uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmF0aW8gYmV0d2VlbiB0aGUgYWJzb2x1dGUgdmFsdWUgYW5kIHRoZSB2YWxpZGl0eSBpbnRlcnZhbC5cbiAgICogRS5nLiBnaXZlbiBgbWluPTBgLCBgbWF4PTEwMGAgYW5kIGB2YWx1ZT01MGAsIHRoZW4gYF92YWx1ZUZyYWN0aW9uPTAuNWBcbiAgICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3ZhbHVlRnJhY3Rpb24gPSAwO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBvbmx5IHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gICAqL1xuICBwcml2YXRlIF9kaWRDaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiU2xpZGVyRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICB9KTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50IHdpdGggdHlwZT0ncmFuZ2UnLiAqL1xuICBwcml2YXRlIF9yYW5nZUlucHV0ITogSFRNTElucHV0RWxlbWVudDtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuaW50ZXJuYWxzLnJvbGUgPSAnc2xpZGVyJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuX2Fib3J0LnNpZ25hbDtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlS2V5ZG93bihlKSwgeyBzaWduYWwgfSk7XG5cbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ21pbicpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhVmFsdWVNaW4gPSB0aGlzLm1pbjtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbWF4JykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFWYWx1ZU1heCA9IHRoaXMubWF4O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZWFkb25seScpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhUmVhZE9ubHkgPSBCb29sZWFuKHRoaXMucmVhZG9ubHkpLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZXNldCB2YWx1ZSBpcyB0aGUgYXR0cmlidXRlIHZhbHVlICh0aGUgc2V0dXAgdmFsdWUpLiBJZiBub3QgcHJlc2VudCwgY2FsY3VsYXRlcyB0aGUgZGVmYXVsdC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpID8/IHRoaXMuX2dldERlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBzdGF0ZSBhcyBzdHJpbmcgfCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqICBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgZGVmYXVsdCBpcyB0aGUgbWlkZGxlIHBvaW50IGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICogIChzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L3JhbmdlI3ZhbHVlKVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0RGVmYXVsdFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgrdGhpcy5taW4gKyAoK3RoaXMubWF4IC0gK3RoaXMubWluKSAvIDIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIF9pc1ZhbGlkTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdmFsdWUgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RyYWlucyB0aGUgdmFsdWUgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXhcbiAgICovXG4gIHByaXZhdGUgX2JvdW5kQmV0d2Vlbk1pbk1heCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoK3RoaXMubWluLCBNYXRoLm1pbigrdGhpcy5tYXgsICt2YWx1ZSkpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVWYWx1ZUZyYWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUFzTnVtYmVyITtcbiAgICBjb25zdCBtaW4gPSArdGhpcy5taW47XG4gICAgY29uc3QgbWF4ID0gK3RoaXMubWF4O1xuXG4gICAgY29uc3QgbWF0aEZyYWN0aW9uOiBudW1iZXIgPSAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgdGhpcy5fdmFsdWVGcmFjdGlvbiA9IGlzTmFOKG1hdGhGcmFjdGlvbikgPyAwIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgbWF0aEZyYWN0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnSG9tZScpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VuZCcpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQudmFsdWUgPSB0aGlzLm1heDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC5zdGVwRG93bigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQuc3RlcFVwKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdQYWdlRG93bicpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQuc3RlcERvd24oKCt0aGlzLm1heCAtICt0aGlzLm1pbikgLyAxMCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSB7XG4gICAgICB0aGlzLl9yYW5nZUlucHV0LnN0ZXBVcCgoK3RoaXMubWF4IC0gK3RoaXMubWluKSAvIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIGhhdmUgdG8gbWFudWFsbHkgZmlyZSBldmVudHMgYmVjYXVzZSBwcm9ncmFtbWF0aWMgY2hhbmdlcyBkb24ndCB0cmlnZ2VyIHRoZW1cbiAgICB0aGlzLl9yYW5nZUlucHV0LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pLFxuICAgICk7XG4gICAgdGhpcy5fcmFuZ2VJbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyB0aGUgY2hhbmdlIGV2ZW50LiAqL1xuICBwcml2YXRlIF9lbWl0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGZvcndhcmRFdmVudFRvSG9zdChldmVudCwgdGhpcyk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX2hlaWdodC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlZml4XCI+XG4gICAgICAgICAgICAke3RoaXMuc3RhcnRJY29uID8gaHRtbGA8c2JiLWljb24gbmFtZT1cIiR7dGhpcy5zdGFydEljb259XCI+PC9zYmItaWNvbj5gIDogbm90aGluZ31cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzYmItc2xpZGVyX19jb250YWluZXJcIlxuICAgICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7ICctLXNiYi1zbGlkZXItdmFsdWUtZnJhY3Rpb24nOiB0aGlzLl92YWx1ZUZyYWN0aW9uLnRvU3RyaW5nKCkgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBtaW49JHt0aGlzLm1pbn1cbiAgICAgICAgICAgICAgbWF4PSR7dGhpcy5tYXh9XG4gICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seX1cbiAgICAgICAgICAgICAgdmFsdWU9JHt0aGlzLnZhbHVlIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXNsaWRlcl9fcmFuZ2UtaW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICBAY2hhbmdlPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5fZW1pdENoYW5nZShldmVudCl9XG4gICAgICAgICAgICAgIEBpbnB1dD0keygpID0+ICh0aGlzLnZhbHVlID0gdGhpcy5fcmFuZ2VJbnB1dC52YWx1ZSl9XG4gICAgICAgICAgICAgICR7cmVmKChpbnB1dD86IEVsZW1lbnQpID0+ICh0aGlzLl9yYW5nZUlucHV0ID0gaW5wdXQgYXMgSFRNTElucHV0RWxlbWVudCkpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19saW5lXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19zZWxlY3RlZC1saW5lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19rbm9iXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiPlxuICAgICAgICAgICAgJHt0aGlzLmVuZEljb24gPyBodG1sYDxzYmItaWNvbiBuYW1lPVwiJHt0aGlzLmVuZEljb259XCI+PC9zYmItaWNvbj5gIDogbm90aGluZ31cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNsaWRlcic6IFNiYlNsaWRlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCTyxJQUFNLG1CQUFOLGNBQStCLGlCQUFpQix1QkFBdUIsVUFBVSxDQUFDLEVBQUU7QUFBQSxFQThGbEYsY0FBYztBQUNiO0FBakRSLFNBQVEsT0FBZTtBQWV2QixTQUFRLE9BQWU7QUFNTSxTQUFPLFdBQXFCO0FBWWhELFNBQVEsaUJBQWlCO0FBS2xDLFNBQVEsYUFBMkIsSUFBSSxhQUFhLE1BQU0saUJBQWlCLE9BQU8sV0FBVztBQUFBLE1BQzNGLFNBQVM7QUFBQSxNQUNULFlBQVk7QUFBQSxJQUFBLENBQ2I7QUFLTyxTQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUtuRCxTQUFLLFVBQVUsT0FBTztBQUFBLEVBQ3hCO0FBQUEsRUF2RkEsSUFBb0IsTUFBTSxPQUFzQjtBQUMxQyxRQUFBLEtBQUssZUFBZSxLQUFLLEdBQUc7QUFDeEIsWUFBQSxRQUFRLEtBQUssb0JBQW9CLEtBQU07QUFBQSxJQUFB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
|
package/index.d.ts
CHANGED
|
@@ -89,6 +89,7 @@ import { SbbNotificationElement } from "./notification.js";
|
|
|
89
89
|
import { SbbOptGroupElement } from "./option/optgroup.js";
|
|
90
90
|
import { SbbOptionElement } from "./option/option.js";
|
|
91
91
|
import { SbbOverlayElement } from "./overlay.js";
|
|
92
|
+
import { SbbPaginatorElement } from "./paginator.js";
|
|
92
93
|
import { SbbPopoverElement } from "./popover/popover.js";
|
|
93
94
|
import { SbbPopoverTriggerElement } from "./popover/popover-trigger.js";
|
|
94
95
|
import { SbbRadioButtonElement } from "./radio-button/radio-button.js";
|
|
@@ -220,6 +221,7 @@ declare global {
|
|
|
220
221
|
var SbbOptGroupElement: SbbOptGroupElement;
|
|
221
222
|
var SbbOptionElement: SbbOptionElement;
|
|
222
223
|
var SbbOverlayElement: SbbOverlayElement;
|
|
224
|
+
var SbbPaginatorElement: SbbPaginatorElement;
|
|
223
225
|
var SbbPopoverElement: SbbPopoverElement;
|
|
224
226
|
var SbbPopoverTriggerElement: SbbPopoverTriggerElement;
|
|
225
227
|
var SbbRadioButtonElement: SbbRadioButtonElement;
|
package/index.js
CHANGED
|
@@ -89,6 +89,7 @@ import { SbbNotificationElement } from "./notification.js";
|
|
|
89
89
|
import { SbbOptGroupElement } from "./option/optgroup.js";
|
|
90
90
|
import { SbbOptionElement } from "./option/option.js";
|
|
91
91
|
import { SbbOverlayElement } from "./overlay.js";
|
|
92
|
+
import { SbbPaginatorElement } from "./paginator.js";
|
|
92
93
|
import { SbbPopoverElement } from "./popover/popover.js";
|
|
93
94
|
import { SbbPopoverTriggerElement } from "./popover/popover-trigger.js";
|
|
94
95
|
import { SbbRadioButtonElement } from "./radio-button/radio-button.js";
|
|
@@ -219,6 +220,7 @@ globalThis.SbbNotificationElement = SbbNotificationElement;
|
|
|
219
220
|
globalThis.SbbOptGroupElement = SbbOptGroupElement;
|
|
220
221
|
globalThis.SbbOptionElement = SbbOptionElement;
|
|
221
222
|
globalThis.SbbOverlayElement = SbbOverlayElement;
|
|
223
|
+
globalThis.SbbPaginatorElement = SbbPaginatorElement;
|
|
222
224
|
globalThis.SbbPopoverElement = SbbPopoverElement;
|
|
223
225
|
globalThis.SbbPopoverTriggerElement = SbbPopoverTriggerElement;
|
|
224
226
|
globalThis.SbbRadioButtonElement = SbbRadioButtonElement;
|
package/lists.css
CHANGED
|
@@ -66,24 +66,56 @@
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
.sbb-step-list {
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
/* stylelint-disable-next-line no-descending-specificity */
|
|
70
|
+
}
|
|
71
|
+
.sbb-step-list {
|
|
72
|
+
--sbb-step-list-dimensions: 2.125rem;
|
|
71
73
|
--sbb-step-list-padding-inline: var(--sbb-spacing-responsive-xxs);
|
|
72
|
-
--sbb-step-list-
|
|
73
|
-
--sbb-step-list-
|
|
74
|
-
--sbb-step-list-text-to-marker-block-offset: calc(
|
|
75
|
-
0.5 *
|
|
76
|
-
(
|
|
77
|
-
var(--sbb-step-list-marker-dimensions) - var(--sbb-typo-line-height-body-text) *
|
|
78
|
-
var(--sbb-text-font-size)
|
|
79
|
-
)
|
|
80
|
-
);
|
|
81
|
-
--sbb-step-list-vertical-gap: var(--sbb-spacing-fixed-1x);
|
|
74
|
+
--sbb-step-list-to-text-gap: var(--sbb-spacing-responsive-xxxs);
|
|
75
|
+
--sbb-step-list-text-to-marker-block-offset: calc(0.5 * (var(--sbb-step-list-dimensions) - var(--sbb-typo-line-height-body-text) * var(--sbb-text-font-size)));
|
|
82
76
|
list-style: none;
|
|
83
77
|
margin: 0;
|
|
84
78
|
padding: 0;
|
|
79
|
+
}
|
|
80
|
+
@media (min-width: calc(52.5rem)) {
|
|
81
|
+
.sbb-step-list:where(.sbb-text-xl) {
|
|
82
|
+
--sbb-step-list-dimensions: 2.5625rem;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
.sbb-step-list > li {
|
|
86
|
+
position: relative;
|
|
87
|
+
padding-inline: calc(var(--sbb-step-list-padding-inline) + var(--sbb-step-list-dimensions) + var(--sbb-step-list-to-text-gap)) var(--sbb-step-list-padding-inline);
|
|
88
|
+
min-height: var(--sbb-step-list-dimensions);
|
|
89
|
+
}
|
|
90
|
+
.sbb-step-list > li::before {
|
|
91
|
+
--sbb-text-font-size: var(--sbb-font-size-text-xxs);
|
|
92
|
+
font-family: var(--sbb-typo-font-family);
|
|
93
|
+
font-weight: normal;
|
|
94
|
+
line-height: var(--sbb-typo-line-height-body-text);
|
|
95
|
+
letter-spacing: var(--sbb-typo-letter-spacing-body-text);
|
|
96
|
+
font-size: var(--sbb-text-font-size);
|
|
97
|
+
font-weight: bold;
|
|
98
|
+
position: absolute;
|
|
99
|
+
height: var(--sbb-step-list-dimensions);
|
|
100
|
+
width: var(--sbb-step-list-dimensions);
|
|
101
|
+
margin-block-start: calc(-1 * var(--sbb-step-list-text-to-marker-block-offset));
|
|
102
|
+
inset-inline-start: var(--sbb-step-list-padding-inline);
|
|
103
|
+
border-radius: 50%;
|
|
104
|
+
}
|
|
105
|
+
.sbb-step-list > li + li {
|
|
106
|
+
margin-block-start: var(--sbb-step-list-vertical-gap);
|
|
107
|
+
}
|
|
108
|
+
.sbb-step-list > li p {
|
|
109
|
+
margin-block: 0;
|
|
110
|
+
}
|
|
111
|
+
.sbb-step-list > li > * + p {
|
|
112
|
+
margin-block-start: var(--sbb-spacing-responsive-xxxs);
|
|
113
|
+
}
|
|
114
|
+
.sbb-step-list {
|
|
115
|
+
--sbb-step-list-padding-block: var(--sbb-spacing-fixed-3x);
|
|
116
|
+
--sbb-step-list-vertical-gap: var(--sbb-spacing-fixed-1x);
|
|
117
|
+
--sbb-step-list-border-radius: var(--sbb-border-radius-4x);
|
|
85
118
|
counter-reset: steps;
|
|
86
|
-
/* stylelint-disable-next-line no-descending-specificity */
|
|
87
119
|
}
|
|
88
120
|
.sbb-step-list:where(.sbb-text-s) {
|
|
89
121
|
--sbb-step-list-padding-block: var(--sbb-spacing-fixed-4x);
|
|
@@ -91,18 +123,20 @@
|
|
|
91
123
|
.sbb-step-list:where(.sbb-text-m, .sbb-text-l, .sbb-text-xl) {
|
|
92
124
|
--sbb-step-list-padding-block: var(--sbb-spacing-fixed-5x);
|
|
93
125
|
}
|
|
94
|
-
@media (min-width: calc(52.5rem)) {
|
|
95
|
-
.sbb-step-list:where(.sbb-text-xl) {
|
|
96
|
-
--sbb-step-list-marker-dimensions: 2.5625rem;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
126
|
.sbb-step-list > li {
|
|
100
|
-
position: relative;
|
|
101
127
|
counter-increment: steps;
|
|
102
128
|
background-color: var(--sbb-color-milk);
|
|
103
129
|
padding-block: calc(var(--sbb-step-list-padding-block) + var(--sbb-step-list-text-to-marker-block-offset)) var(--sbb-step-list-padding-block);
|
|
104
|
-
padding-inline: calc(var(--sbb-step-list-padding-inline) + var(--sbb-step-list-
|
|
105
|
-
min-height: calc(var(--sbb-step-list-
|
|
130
|
+
padding-inline: calc(var(--sbb-step-list-padding-inline) + var(--sbb-step-list-dimensions) + var(--sbb-step-list-to-text-gap)) var(--sbb-step-list-padding-inline);
|
|
131
|
+
min-height: calc(var(--sbb-step-list-dimensions) + 2 * var(--sbb-step-list-padding-block));
|
|
132
|
+
}
|
|
133
|
+
.sbb-step-list > li::before {
|
|
134
|
+
content: counter(steps);
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
justify-content: center;
|
|
138
|
+
border: var(--sbb-border-width-1x) solid var(--sbb-color-cement);
|
|
139
|
+
color: var(--sbb-color-charcoal);
|
|
106
140
|
}
|
|
107
141
|
.sbb-step-list > li:first-of-type {
|
|
108
142
|
border-start-start-radius: var(--sbb-step-list-border-radius);
|
|
@@ -112,7 +146,30 @@
|
|
|
112
146
|
border-end-start-radius: var(--sbb-step-list-border-radius);
|
|
113
147
|
border-end-end-radius: var(--sbb-step-list-border-radius);
|
|
114
148
|
}
|
|
115
|
-
|
|
149
|
+
|
|
150
|
+
.sbb-icon-list {
|
|
151
|
+
/* stylelint-disable-next-line no-descending-specificity */
|
|
152
|
+
}
|
|
153
|
+
.sbb-icon-list {
|
|
154
|
+
--sbb-icon-list-dimensions: 2.125rem;
|
|
155
|
+
--sbb-icon-list-padding-inline: var(--sbb-spacing-responsive-xxs);
|
|
156
|
+
--sbb-icon-list-to-text-gap: var(--sbb-spacing-responsive-xxxs);
|
|
157
|
+
--sbb-icon-list-text-to-marker-block-offset: calc(0.5 * (var(--sbb-icon-list-dimensions) - var(--sbb-typo-line-height-body-text) * var(--sbb-text-font-size)));
|
|
158
|
+
list-style: none;
|
|
159
|
+
margin: 0;
|
|
160
|
+
padding: 0;
|
|
161
|
+
}
|
|
162
|
+
@media (min-width: calc(52.5rem)) {
|
|
163
|
+
.sbb-icon-list:where(.sbb-text-xl) {
|
|
164
|
+
--sbb-icon-list-dimensions: 2.5625rem;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
.sbb-icon-list > li {
|
|
168
|
+
position: relative;
|
|
169
|
+
padding-inline: calc(var(--sbb-icon-list-padding-inline) + var(--sbb-icon-list-dimensions) + var(--sbb-icon-list-to-text-gap)) var(--sbb-icon-list-padding-inline);
|
|
170
|
+
min-height: var(--sbb-icon-list-dimensions);
|
|
171
|
+
}
|
|
172
|
+
.sbb-icon-list > li::before {
|
|
116
173
|
--sbb-text-font-size: var(--sbb-font-size-text-xxs);
|
|
117
174
|
font-family: var(--sbb-typo-font-family);
|
|
118
175
|
font-weight: normal;
|
|
@@ -120,25 +177,34 @@
|
|
|
120
177
|
letter-spacing: var(--sbb-typo-letter-spacing-body-text);
|
|
121
178
|
font-size: var(--sbb-text-font-size);
|
|
122
179
|
font-weight: bold;
|
|
123
|
-
content: counter(steps);
|
|
124
180
|
position: absolute;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
width: var(--sbb-step-list-marker-dimensions);
|
|
130
|
-
margin-block-start: calc(-1 * var(--sbb-step-list-text-to-marker-block-offset));
|
|
131
|
-
inset-inline-start: var(--sbb-step-list-padding-inline);
|
|
132
|
-
border: var(--sbb-border-width-1x) solid var(--sbb-color-cement);
|
|
181
|
+
height: var(--sbb-icon-list-dimensions);
|
|
182
|
+
width: var(--sbb-icon-list-dimensions);
|
|
183
|
+
margin-block-start: calc(-1 * var(--sbb-icon-list-text-to-marker-block-offset));
|
|
184
|
+
inset-inline-start: var(--sbb-icon-list-padding-inline);
|
|
133
185
|
border-radius: 50%;
|
|
134
|
-
color: var(--sbb-color-charcoal);
|
|
135
186
|
}
|
|
136
|
-
.sbb-
|
|
137
|
-
margin-block-start: var(--sbb-
|
|
187
|
+
.sbb-icon-list > li + li {
|
|
188
|
+
margin-block-start: var(--sbb-icon-list-vertical-gap);
|
|
138
189
|
}
|
|
139
|
-
.sbb-
|
|
190
|
+
.sbb-icon-list > li p {
|
|
140
191
|
margin-block: 0;
|
|
141
192
|
}
|
|
142
|
-
.sbb-
|
|
193
|
+
.sbb-icon-list > li > * + p {
|
|
143
194
|
margin-block-start: var(--sbb-spacing-responsive-xxxs);
|
|
195
|
+
}
|
|
196
|
+
.sbb-icon-list {
|
|
197
|
+
--sbb-icon-list-marker-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="%23000" fill-rule="evenodd" d="M3 12a9 9 0 0 1 9-9 9 9 0 0 1 9 9 9 9 0 0 1-9 9 9 9 0 0 1-9-9m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m-1.104 13.305 5-6.5-.792-.61-4.69 6.096-2.102-1.681-.624.78 2.5 2 .398.319z" clip-rule="evenodd"></path></svg>');
|
|
198
|
+
--sbb-icon-list-marker-icon-color: currentcolor;
|
|
199
|
+
--sbb-icon-list-vertical-gap: var(--sbb-spacing-fixed-2x);
|
|
200
|
+
--sbb-icon-list-dimensions: var(--sbb-size-icon-ui-small);
|
|
201
|
+
--sbb-icon-list-to-text-gap: var(--sbb-spacing-fixed-2x);
|
|
202
|
+
}
|
|
203
|
+
.sbb-icon-list > li::before {
|
|
204
|
+
content: "";
|
|
205
|
+
background-color: var(--sbb-icon-list-marker-icon-color);
|
|
206
|
+
mask-image: var(--sbb-icon-list-marker-icon);
|
|
207
|
+
mask-repeat: no-repeat;
|
|
208
|
+
mask-position: center;
|
|
209
|
+
mask-size: 100%;
|
|
144
210
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
@@ -735,6 +735,11 @@
|
|
|
735
735
|
"development": "./development/overlay.js",
|
|
736
736
|
"default": "./overlay.js"
|
|
737
737
|
},
|
|
738
|
+
"./paginator.js": {
|
|
739
|
+
"types": "./development/paginator.d.ts",
|
|
740
|
+
"development": "./development/paginator.js",
|
|
741
|
+
"default": "./paginator.js"
|
|
742
|
+
},
|
|
738
743
|
"./popover.js": {
|
|
739
744
|
"types": "./development/popover.d.ts",
|
|
740
745
|
"development": "./development/popover.js",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/paginator/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|