@design.estate/dees-catalog 9.5.0 → 9.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_bundle/bundle.js +1307 -1448
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.d.ts +21 -2
- package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.d.ts +4 -0
- package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.js +218 -193
- package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +288 -403
- package/dist_ts_web/elements/00group-layout/dees-stepper/styles.d.ts +1 -0
- package/dist_ts_web/elements/00group-layout/dees-stepper/styles.js +41 -0
- package/package.json +1 -1
- package/readme.md +31 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.demo.ts +142 -200
- package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +216 -400
- package/ts_web/elements/00group-layout/dees-stepper/styles.ts +41 -0
|
@@ -33,15 +33,17 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
35
|
import * as plugins from '../../00plugins.js';
|
|
36
|
-
import { DeesElement, customElement, html,
|
|
36
|
+
import { DeesElement, customElement, html, cssManager, property, state, } from '@design.estate/dees-element';
|
|
37
37
|
import * as domtools from '@design.estate/dees-domtools';
|
|
38
38
|
import { stepperDemo } from './dees-stepper.demo.js';
|
|
39
39
|
import { themeDefaultStyles } from '../../00theme.js';
|
|
40
40
|
import { zIndexRegistry } from '../../00zindex.js';
|
|
41
|
-
import { DeesWindowLayer } from '../../00group-overlay/dees-windowlayer/dees-windowlayer.js';
|
|
42
41
|
import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
|
|
43
42
|
import '../../00group-feedback/dees-progressbar/dees-progressbar.js';
|
|
44
43
|
import '../dees-tile/dees-tile.js';
|
|
44
|
+
import '../../00group-button/dees-button/dees-button.js';
|
|
45
|
+
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
46
|
+
import { stepperStyles } from './styles.js';
|
|
45
47
|
let DeesStepper = (() => {
|
|
46
48
|
let _classDecorators = [customElement('dees-stepper')];
|
|
47
49
|
let _classDescriptor;
|
|
@@ -69,6 +71,15 @@ let DeesStepper = (() => {
|
|
|
69
71
|
let _activeFormValid_decorators;
|
|
70
72
|
let _activeFormValid_initializers = [];
|
|
71
73
|
let _activeFormValid_extraInitializers = [];
|
|
74
|
+
let _stepError_decorators;
|
|
75
|
+
let _stepError_initializers = [];
|
|
76
|
+
let _stepError_extraInitializers = [];
|
|
77
|
+
let _progressRunning_decorators;
|
|
78
|
+
let _progressRunning_initializers = [];
|
|
79
|
+
let _progressRunning_extraInitializers = [];
|
|
80
|
+
let _actionPending_decorators;
|
|
81
|
+
let _actionPending_initializers = [];
|
|
82
|
+
let _actionPending_extraInitializers = [];
|
|
72
83
|
var DeesStepper = class extends _classSuper {
|
|
73
84
|
static { _classThis = this; }
|
|
74
85
|
static {
|
|
@@ -90,6 +101,9 @@ let DeesStepper = (() => {
|
|
|
90
101
|
_stepperZIndex_decorators = [property({ type: Number, attribute: false })];
|
|
91
102
|
_activeForm_decorators = [property({ type: Object, attribute: false })];
|
|
92
103
|
_activeFormValid_decorators = [property({ type: Boolean, attribute: false })];
|
|
104
|
+
_stepError_decorators = [state()];
|
|
105
|
+
_progressRunning_decorators = [state()];
|
|
106
|
+
_actionPending_decorators = [state()];
|
|
93
107
|
__esDecorate(this, null, _steps_decorators, { kind: "accessor", name: "steps", static: false, private: false, access: { has: obj => "steps" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);
|
|
94
108
|
__esDecorate(this, null, _selectedStep_decorators, { kind: "accessor", name: "selectedStep", static: false, private: false, access: { has: obj => "selectedStep" in obj, get: obj => obj.selectedStep, set: (obj, value) => { obj.selectedStep = value; } }, metadata: _metadata }, _selectedStep_initializers, _selectedStep_extraInitializers);
|
|
95
109
|
__esDecorate(this, null, _overlay_decorators, { kind: "accessor", name: "overlay", static: false, private: false, access: { has: obj => "overlay" in obj, get: obj => obj.overlay, set: (obj, value) => { obj.overlay = value; } }, metadata: _metadata }, _overlay_initializers, _overlay_extraInitializers);
|
|
@@ -97,6 +111,9 @@ let DeesStepper = (() => {
|
|
|
97
111
|
__esDecorate(this, null, _stepperZIndex_decorators, { kind: "accessor", name: "stepperZIndex", static: false, private: false, access: { has: obj => "stepperZIndex" in obj, get: obj => obj.stepperZIndex, set: (obj, value) => { obj.stepperZIndex = value; } }, metadata: _metadata }, _stepperZIndex_initializers, _stepperZIndex_extraInitializers);
|
|
98
112
|
__esDecorate(this, null, _activeForm_decorators, { kind: "accessor", name: "activeForm", static: false, private: false, access: { has: obj => "activeForm" in obj, get: obj => obj.activeForm, set: (obj, value) => { obj.activeForm = value; } }, metadata: _metadata }, _activeForm_initializers, _activeForm_extraInitializers);
|
|
99
113
|
__esDecorate(this, null, _activeFormValid_decorators, { kind: "accessor", name: "activeFormValid", static: false, private: false, access: { has: obj => "activeFormValid" in obj, get: obj => obj.activeFormValid, set: (obj, value) => { obj.activeFormValid = value; } }, metadata: _metadata }, _activeFormValid_initializers, _activeFormValid_extraInitializers);
|
|
114
|
+
__esDecorate(this, null, _stepError_decorators, { kind: "accessor", name: "stepError", static: false, private: false, access: { has: obj => "stepError" in obj, get: obj => obj.stepError, set: (obj, value) => { obj.stepError = value; } }, metadata: _metadata }, _stepError_initializers, _stepError_extraInitializers);
|
|
115
|
+
__esDecorate(this, null, _progressRunning_decorators, { kind: "accessor", name: "progressRunning", static: false, private: false, access: { has: obj => "progressRunning" in obj, get: obj => obj.progressRunning, set: (obj, value) => { obj.progressRunning = value; } }, metadata: _metadata }, _progressRunning_initializers, _progressRunning_extraInitializers);
|
|
116
|
+
__esDecorate(this, null, _actionPending_decorators, { kind: "accessor", name: "actionPending", static: false, private: false, access: { has: obj => "actionPending" in obj, get: obj => obj.actionPending, set: (obj, value) => { obj.actionPending = value; } }, metadata: _metadata }, _actionPending_initializers, _actionPending_extraInitializers);
|
|
100
117
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
101
118
|
DeesStepper = _classThis = _classDescriptor.value;
|
|
102
119
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -112,12 +129,11 @@ let DeesStepper = (() => {
|
|
|
112
129
|
if (optionsArg.cancelable !== undefined) {
|
|
113
130
|
stepper.cancelable = optionsArg.cancelable;
|
|
114
131
|
}
|
|
115
|
-
stepper.windowLayer = await DeesWindowLayer.createAndShow({ blur: true });
|
|
116
|
-
body.append(stepper.windowLayer);
|
|
117
132
|
body.append(stepper);
|
|
118
|
-
//
|
|
133
|
+
// Share overlay ordering with catalog controls opened from this dialog.
|
|
119
134
|
stepper.stepperZIndex = zIndexRegistry.getNextZIndex();
|
|
120
135
|
zIndexRegistry.register(stepper, stepper.stepperZIndex);
|
|
136
|
+
await stepper.updateComplete;
|
|
121
137
|
return stepper;
|
|
122
138
|
}
|
|
123
139
|
#steps_accessor_storage = __runInitializers(this, _steps_initializers, []);
|
|
@@ -149,287 +165,52 @@ let DeesStepper = (() => {
|
|
|
149
165
|
get activeFormValid() { return this.#activeFormValid_accessor_storage; }
|
|
150
166
|
set activeFormValid(value) { this.#activeFormValid_accessor_storage = value; }
|
|
151
167
|
activeFormSubscription = __runInitializers(this, _activeFormValid_extraInitializers);
|
|
152
|
-
|
|
168
|
+
#stepError_accessor_storage = __runInitializers(this, _stepError_initializers, '');
|
|
169
|
+
get stepError() { return this.#stepError_accessor_storage; }
|
|
170
|
+
set stepError(value) { this.#stepError_accessor_storage = value; }
|
|
171
|
+
#progressRunning_accessor_storage = (__runInitializers(this, _stepError_extraInitializers), __runInitializers(this, _progressRunning_initializers, false));
|
|
172
|
+
get progressRunning() { return this.#progressRunning_accessor_storage; }
|
|
173
|
+
set progressRunning(value) { this.#progressRunning_accessor_storage = value; }
|
|
174
|
+
#actionPending_accessor_storage = (__runInitializers(this, _progressRunning_extraInitializers), __runInitializers(this, _actionPending_initializers, false));
|
|
175
|
+
get actionPending() { return this.#actionPending_accessor_storage; }
|
|
176
|
+
set actionPending(value) { this.#actionPending_accessor_storage = value; }
|
|
177
|
+
resizeObserver = __runInitializers(this, _actionPending_extraInitializers);
|
|
178
|
+
activeValidationStep;
|
|
179
|
+
actionStep;
|
|
180
|
+
destroyPromise;
|
|
181
|
+
scrollTarget;
|
|
182
|
+
scrollInFlight = false;
|
|
183
|
+
cancelRequestPending = false;
|
|
153
184
|
constructor() {
|
|
154
185
|
super();
|
|
186
|
+
this.registerStartupFunction(async (signal) => {
|
|
187
|
+
await this.updateComplete;
|
|
188
|
+
if (signal.aborted)
|
|
189
|
+
return;
|
|
190
|
+
this.destroyPromise = undefined;
|
|
191
|
+
const dialog = this.shadowRoot?.querySelector('dialog');
|
|
192
|
+
if (dialog && !dialog.open)
|
|
193
|
+
dialog.showModal();
|
|
194
|
+
this.resizeObserver = new ResizeObserver(() => this.positionSelectedStep(false));
|
|
195
|
+
this.resizeObserver.observe(this.shadowRoot.querySelector('.stepperContainer'));
|
|
196
|
+
for (const tile of this.shadowRoot.querySelectorAll('.step'))
|
|
197
|
+
this.resizeObserver.observe(tile);
|
|
198
|
+
await this.setScrollStatus();
|
|
199
|
+
});
|
|
155
200
|
}
|
|
156
|
-
static styles = [
|
|
157
|
-
themeDefaultStyles,
|
|
158
|
-
cssManager.defaultStyles,
|
|
159
|
-
css `
|
|
160
|
-
/* TODO: Migrate hardcoded values to --dees-* CSS variables */
|
|
161
|
-
:host {
|
|
162
|
-
position: absolute;
|
|
163
|
-
width: 100%;
|
|
164
|
-
height: 100%;
|
|
165
|
-
font-family: var(--dees-font-family);
|
|
166
|
-
color: var(--dees-color-text-primary);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/*
|
|
170
|
-
* In overlay mode the host is "transparent" to layout — the inner
|
|
171
|
-
* .stepperContainer.overlay is what pins to the viewport and carries the
|
|
172
|
-
* z-index. Keeping :host unpositioned avoids nesting the stacking context
|
|
173
|
-
* under an auto-z-index parent (which was trapping .stepperContainer
|
|
174
|
-
* below DeesWindowLayer's sibling layers). This mirrors how dees-modal
|
|
175
|
-
* keeps its own :host unpositioned and lets .modalContainer drive layout.
|
|
176
|
-
*/
|
|
177
|
-
:host([overlay]) {
|
|
178
|
-
position: static;
|
|
179
|
-
width: 0;
|
|
180
|
-
height: 0;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.stepperContainer {
|
|
184
|
-
position: absolute;
|
|
185
|
-
width: 100%;
|
|
186
|
-
height: 100%;
|
|
187
|
-
overflow: hidden;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.stepperContainer.overlay {
|
|
191
|
-
position: fixed;
|
|
192
|
-
top: 0;
|
|
193
|
-
left: 0;
|
|
194
|
-
width: 100vw;
|
|
195
|
-
height: 100vh;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/* Exit animation — reverse of the entry. Tiles slide DOWN + fade out,
|
|
199
|
-
mirroring the .entrance slide-up. The transition override is needed
|
|
200
|
-
because dees-tile.step has its own 0.7s transition for step selection
|
|
201
|
-
which would otherwise make the exit sluggish. */
|
|
202
|
-
.stepperContainer.predestroy dees-tile.step {
|
|
203
|
-
transform: translateY(16px);
|
|
204
|
-
filter: opacity(0);
|
|
205
|
-
transition: transform 0.25s, filter 0.2s;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
dees-tile.step {
|
|
209
|
-
position: relative;
|
|
210
|
-
pointer-events: none;
|
|
211
|
-
box-sizing: border-box;
|
|
212
|
-
width: min(500px, calc(100vw - 32px));
|
|
213
|
-
max-width: 500px;
|
|
214
|
-
max-height: calc(100vh - 64px);
|
|
215
|
-
min-height: min(300px, calc(100vh - 64px));
|
|
216
|
-
margin: auto;
|
|
217
|
-
margin-bottom: 20px;
|
|
218
|
-
filter: opacity(0.55) saturate(0.85);
|
|
219
|
-
transition: transform 0.7s cubic-bezier(0.87, 0, 0.13, 1), filter 0.7s cubic-bezier(0.87, 0, 0.13, 1);
|
|
220
|
-
user-select: none;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
dees-tile.step.selected {
|
|
224
|
-
pointer-events: all;
|
|
225
|
-
filter: opacity(1) saturate(1);
|
|
226
|
-
user-select: auto;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
dees-tile.step.hiddenStep {
|
|
230
|
-
filter: opacity(0);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
dees-tile.step.entrance {
|
|
234
|
-
transition: transform 0.35s ease, filter 0.35s ease;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
dees-tile.step.entrance.hiddenStep {
|
|
238
|
-
transform: translateY(16px);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
dees-tile.step:last-child {
|
|
242
|
-
margin-bottom: 100vh;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.stepperContainer.overlay dees-tile.step::part(outer) {
|
|
246
|
-
box-shadow:
|
|
247
|
-
0 0 0 1px color-mix(in srgb, var(--dees-color-text-primary) 3%, transparent),
|
|
248
|
-
var(--dees-shadow-lg);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
.stepperContainer:not(.overlay) dees-tile.step {
|
|
252
|
-
max-height: calc(100% - 64px);
|
|
253
|
-
min-height: min(300px, calc(100% - 64px));
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.step-header {
|
|
257
|
-
height: 36px;
|
|
258
|
-
display: flex;
|
|
259
|
-
align-items: center;
|
|
260
|
-
justify-content: space-between;
|
|
261
|
-
padding: 0 8px 0 12px;
|
|
262
|
-
gap: 12px;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.goBack-spacer {
|
|
266
|
-
width: 1px;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.step-header .goBack {
|
|
270
|
-
display: inline-flex;
|
|
271
|
-
align-items: center;
|
|
272
|
-
gap: 6px;
|
|
273
|
-
height: 24px;
|
|
274
|
-
padding: 0 8px;
|
|
275
|
-
font-size: 12px;
|
|
276
|
-
font-weight: 500;
|
|
277
|
-
line-height: 1;
|
|
278
|
-
border: none;
|
|
279
|
-
background: transparent;
|
|
280
|
-
color: var(--dees-color-text-muted);
|
|
281
|
-
border-radius: var(--dees-radius-sm);
|
|
282
|
-
cursor: pointer;
|
|
283
|
-
transition:
|
|
284
|
-
background-color var(--dees-transition-fast) var(--dees-ease-standard),
|
|
285
|
-
color var(--dees-transition-fast) var(--dees-ease-standard),
|
|
286
|
-
transform var(--dees-transition-default) var(--dees-ease-standard);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.step-header .goBack:hover {
|
|
290
|
-
background: var(--dees-color-hover);
|
|
291
|
-
color: var(--dees-color-text-secondary);
|
|
292
|
-
transform: translateX(-2px);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.step-header .goBack:active {
|
|
296
|
-
background: var(--dees-color-border-default);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.step-header .goBack span {
|
|
300
|
-
transition: transform var(--dees-transition-default) var(--dees-ease-standard);
|
|
301
|
-
display: inline-block;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.step-header .goBack:hover span {
|
|
305
|
-
transform: translateX(-2px);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
.step-header .stepCounter {
|
|
309
|
-
color: var(--dees-color-text-muted);
|
|
310
|
-
font-size: 12px;
|
|
311
|
-
font-weight: 500;
|
|
312
|
-
letter-spacing: -0.01em;
|
|
313
|
-
padding: 0 8px;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
.step-body .title {
|
|
317
|
-
text-align: center;
|
|
318
|
-
padding-top: 32px;
|
|
319
|
-
font-family: var(--dees-font-family);
|
|
320
|
-
font-size: 24px;
|
|
321
|
-
font-weight: 600;
|
|
322
|
-
letter-spacing: -0.01em;
|
|
323
|
-
color: inherit;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
.step-body .content {
|
|
327
|
-
padding: 32px;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
.step-body .content.withProgressStep {
|
|
331
|
-
padding-top: 20px;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.progressStep {
|
|
335
|
-
padding: 0 24px;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
/* --- Footer: modal-style bottom buttons --- */
|
|
339
|
-
.bottomButtons {
|
|
340
|
-
display: flex;
|
|
341
|
-
flex-direction: row;
|
|
342
|
-
justify-content: flex-end;
|
|
343
|
-
align-items: center;
|
|
344
|
-
gap: 0;
|
|
345
|
-
height: 36px;
|
|
346
|
-
width: 100%;
|
|
347
|
-
box-sizing: border-box;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
.bottomButtons .bottomButton {
|
|
351
|
-
padding: 0 16px;
|
|
352
|
-
height: 100%;
|
|
353
|
-
text-align: center;
|
|
354
|
-
font-size: 12px;
|
|
355
|
-
font-weight: 500;
|
|
356
|
-
cursor: pointer;
|
|
357
|
-
user-select: none;
|
|
358
|
-
transition:
|
|
359
|
-
background-color var(--dees-transition-fast) var(--dees-ease-standard),
|
|
360
|
-
color var(--dees-transition-fast) var(--dees-ease-standard);
|
|
361
|
-
background: transparent;
|
|
362
|
-
border: none;
|
|
363
|
-
color: var(--dees-color-text-muted);
|
|
364
|
-
white-space: nowrap;
|
|
365
|
-
display: flex;
|
|
366
|
-
align-items: center;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/* Border-left separator on every button EXCEPT the first one.
|
|
370
|
-
Uses general sibling so the stepHint (if rendered on the left) does
|
|
371
|
-
not shift which button counts as "first" and create a phantom border. */
|
|
372
|
-
.bottomButtons .bottomButton ~ .bottomButton {
|
|
373
|
-
border-left: 1px solid var(--dees-color-border-subtle);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
.bottomButtons .bottomButton:hover {
|
|
377
|
-
background: var(--dees-color-hover);
|
|
378
|
-
color: var(--dees-color-text-primary);
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
.bottomButtons .bottomButton:active {
|
|
382
|
-
background: var(--dees-color-border-subtle);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.bottomButtons .bottomButton.primary {
|
|
386
|
-
color: var(--dees-color-link);
|
|
387
|
-
font-weight: 600;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
.bottomButtons .bottomButton.primary:hover {
|
|
391
|
-
background: color-mix(in srgb, var(--dees-color-link) 8%, transparent);
|
|
392
|
-
color: color-mix(in srgb, var(--dees-color-link) 80%, var(--dees-color-text-primary));
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
.bottomButtons .bottomButton.primary:active {
|
|
396
|
-
background: color-mix(in srgb, var(--dees-color-link) 12%, transparent);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
.bottomButtons .bottomButton.disabled {
|
|
400
|
-
pointer-events: none;
|
|
401
|
-
opacity: 0.4;
|
|
402
|
-
cursor: not-allowed;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
.bottomButtons .bottomButton.disabled:hover {
|
|
406
|
-
background: transparent;
|
|
407
|
-
color: var(--dees-color-text-muted);
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
/* Hint shown on the left of the footer when the active step's form has
|
|
411
|
-
unfilled required fields. Uses margin-right: auto to push right-aligned
|
|
412
|
-
buttons to the right while keeping the hint flush-left. */
|
|
413
|
-
.bottomButtons .stepHint {
|
|
414
|
-
margin-right: auto;
|
|
415
|
-
padding: 0 16px;
|
|
416
|
-
font-size: 11px;
|
|
417
|
-
line-height: 1;
|
|
418
|
-
letter-spacing: -0.01em;
|
|
419
|
-
color: var(--dees-color-text-muted);
|
|
420
|
-
display: flex;
|
|
421
|
-
align-items: center;
|
|
422
|
-
user-select: none;
|
|
423
|
-
}
|
|
424
|
-
`,
|
|
425
|
-
];
|
|
201
|
+
static styles = [themeDefaultStyles, cssManager.defaultStyles, stepperStyles];
|
|
426
202
|
render() {
|
|
203
|
+
const label = this.selectedStep?.title ?? 'Setup';
|
|
204
|
+
return this.overlay
|
|
205
|
+
? html `<dialog class="stepperContainer overlay" aria-label=${label} aria-modal="true"
|
|
206
|
+
style=${`z-index: ${this.stepperZIndex};`} @cancel=${this.handleDialogCancel}
|
|
207
|
+
@click=${this.handleOutsideClick}>${this.renderSteps()}</dialog>`
|
|
208
|
+
: html `<div class="stepperContainer" role="region" aria-label=${label}>${this.renderSteps()}</div>`;
|
|
209
|
+
}
|
|
210
|
+
renderSteps() {
|
|
211
|
+
if (!this.steps.length)
|
|
212
|
+
return html `<div class="empty">No steps to show.</div>`;
|
|
427
213
|
return html `
|
|
428
|
-
<div
|
|
429
|
-
class="stepperContainer ${this.overlay ? 'overlay' : ''}"
|
|
430
|
-
style=${this.overlay ? `z-index: ${this.stepperZIndex};` : ''}
|
|
431
|
-
@click=${this.handleOutsideClick}
|
|
432
|
-
>
|
|
433
214
|
${this.steps.map((stepArg, stepIndex) => {
|
|
434
215
|
const isSelected = stepArg === this.selectedStep;
|
|
435
216
|
const isHidden = this.getIndexOfStep(stepArg) > this.getIndexOfStep(this.selectedStep);
|
|
@@ -437,21 +218,24 @@ let DeesStepper = (() => {
|
|
|
437
218
|
const showBackButton = !isFirst && stepArg.allowBack !== false;
|
|
438
219
|
const progressStepState = stepArg.progressStep ? this.getProgressStepState(stepArg) : null;
|
|
439
220
|
return html `<dees-tile
|
|
440
|
-
class="step ${isSelected ? 'selected' : ''} ${isHidden ? 'hiddenStep' : ''}
|
|
441
|
-
overscroll="contain"
|
|
221
|
+
class="step ${isSelected ? 'selected' : ''} ${isHidden ? 'hiddenStep' : ''}"
|
|
222
|
+
overscroll="contain" ?inert=${!isSelected} aria-hidden=${!isSelected}
|
|
442
223
|
>
|
|
443
224
|
<div slot="header" class="step-header">
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
<
|
|
450
|
-
Step ${stepIndex + 1} of ${this.steps.length}
|
|
451
|
-
</div>
|
|
225
|
+
<ol class="step-rail" aria-label="Progress">${this.steps.map((step, index) => html `
|
|
226
|
+
<li class="step-marker ${index < stepIndex ? 'complete' : index === stepIndex ? 'current' : ''}"
|
|
227
|
+
aria-label=${`${index + 1}. ${step.title}${index < stepIndex ? ', completed' : ''}`}
|
|
228
|
+
aria-current=${index === stepIndex ? 'step' : 'false'} title=${step.title}></li>
|
|
229
|
+
`)}</ol>
|
|
230
|
+
<span class="step-counter">${stepIndex + 1} of ${this.steps.length}</span>
|
|
452
231
|
</div>
|
|
453
232
|
<div class="step-body">
|
|
454
|
-
<div class="
|
|
233
|
+
<div class="heading-row">
|
|
234
|
+
<h2 class="title" tabindex="-1">${stepArg.title}</h2>
|
|
235
|
+
<span class="step-hint" aria-hidden=${!isSelected || this.activeForm === null || this.activeFormValid}
|
|
236
|
+
title="Fill in the required fields to continue.">Complete required fields</span>
|
|
237
|
+
</div>
|
|
238
|
+
${stepArg.description ? html `<p class="description">${stepArg.description}</p>` : ''}
|
|
455
239
|
${stepArg.progressStep && progressStepState ? html `
|
|
456
240
|
<div class="progressStep">
|
|
457
241
|
<dees-progressbar
|
|
@@ -466,89 +250,121 @@ let DeesStepper = (() => {
|
|
|
466
250
|
</div>
|
|
467
251
|
` : ''}
|
|
468
252
|
<div class="content ${stepArg.progressStep ? 'withProgressStep' : ''}">${stepArg.content}</div>
|
|
253
|
+
${isSelected && this.stepError ? html `<div class="step-error" role="alert">
|
|
254
|
+
<dees-icon icon="lucide:CircleAlert" iconSize="16"></dees-icon><span>${this.stepError}</span>
|
|
255
|
+
</div>` : ''}
|
|
469
256
|
</div>
|
|
470
|
-
<div slot="footer" class="
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
257
|
+
<div slot="footer" class="step-footer">
|
|
258
|
+
<div class="bottomButtons">
|
|
259
|
+
${showBackButton ? html `<dees-button class="back-action" type="ghost" text="Back"
|
|
260
|
+
icon="lucide:ChevronLeft" .disabled=${this.actionPending} @clicked=${this.goBack}></dees-button>`
|
|
261
|
+
: html `<span class="footer-spacer"></span>`}
|
|
474
262
|
${this.cancelable
|
|
475
|
-
? html `<
|
|
476
|
-
class="bottomButton"
|
|
477
|
-
@click=${() => this.handleCancelRequest()}
|
|
478
|
-
>Cancel</div>`
|
|
263
|
+
? html `<dees-button type="ghost" text="Cancel" @clicked=${this.handleCancelRequest}></dees-button>`
|
|
479
264
|
: ''}
|
|
265
|
+
${isSelected && this.stepError && stepArg.validationFunc
|
|
266
|
+
? html `<dees-button type="accent" text="Try again" icon="lucide:RotateCw" @clicked=${this.retryStep}></dees-button>` : ''}
|
|
480
267
|
${stepArg.menuOptions?.map((actionArg, actionIndex) => {
|
|
481
268
|
const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
|
|
482
|
-
const isDisabled = isPrimary && this.
|
|
483
|
-
return html
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
>${actionArg.name}</div>
|
|
488
|
-
`;
|
|
269
|
+
const isDisabled = this.actionPending || (isPrimary && (!this.activeFormValid || this.progressRunning || (!!this.stepError && !!stepArg.progressStep)));
|
|
270
|
+
return html `<dees-button class="step-action" .text=${actionArg.name}
|
|
271
|
+
.icon=${actionArg.iconName ?? ''} .type=${isPrimary ? 'accent' : 'secondary'}
|
|
272
|
+
.disabled=${isDisabled} .status=${isPrimary && this.actionPending ? 'pending' : 'normal'}
|
|
273
|
+
@clicked=${() => this.handleMenuOptionClick(actionArg, isPrimary)}></dees-button>`;
|
|
489
274
|
}) ?? ''}
|
|
275
|
+
</div>
|
|
490
276
|
</div>
|
|
491
277
|
</dees-tile>`;
|
|
492
278
|
})}
|
|
493
|
-
</div>
|
|
494
279
|
`;
|
|
495
280
|
}
|
|
496
281
|
getIndexOfStep = (stepArg) => {
|
|
497
282
|
return this.steps.findIndex((stepArg2) => stepArg === stepArg2);
|
|
498
283
|
};
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
if (
|
|
503
|
-
|
|
284
|
+
willUpdate(changed) {
|
|
285
|
+
if (changed.has('steps') && !this.steps.includes(this.selectedStep))
|
|
286
|
+
this.selectedStep = this.steps[0];
|
|
287
|
+
if (changed.has('selectedStep') || changed.has('steps')) {
|
|
288
|
+
if (this.activeValidationStep !== this.selectedStep) {
|
|
289
|
+
this.activeValidationStep?.abortController?.abort();
|
|
290
|
+
if (this.activeValidationStep)
|
|
291
|
+
this.activeValidationStep.validationFuncCalled = false;
|
|
292
|
+
this.activeValidationStep = this.selectedStep;
|
|
293
|
+
this.stepError = '';
|
|
294
|
+
this.progressRunning = false;
|
|
295
|
+
this.actionPending = false;
|
|
296
|
+
this.actionStep = undefined;
|
|
297
|
+
this.prepareStepForActivation(this.selectedStep);
|
|
298
|
+
}
|
|
504
299
|
}
|
|
505
|
-
this.prepareStepForActivation(this.steps[0]);
|
|
506
|
-
this.selectedStep = this.steps[0];
|
|
507
|
-
await this.updateComplete;
|
|
508
|
-
await this.setScrollStatus();
|
|
509
|
-
// Remove entrance class after initial animation completes
|
|
510
|
-
await this.domtools.convenience.smartdelay.delayFor(350);
|
|
511
|
-
this.shadowRoot.querySelector('.step.entrance')?.classList.remove('entrance');
|
|
512
300
|
}
|
|
513
301
|
async updated(changedProperties) {
|
|
514
|
-
if (
|
|
515
|
-
|
|
302
|
+
if (changedProperties.has('overlay')) {
|
|
303
|
+
this.scroller?.destroy();
|
|
304
|
+
this.scroller = undefined;
|
|
305
|
+
this.scrollTarget = undefined;
|
|
306
|
+
this.scrollInFlight = false;
|
|
516
307
|
}
|
|
308
|
+
const dialog = this.shadowRoot?.querySelector('dialog');
|
|
309
|
+
if (dialog && !dialog.open && this.isConnected)
|
|
310
|
+
dialog.showModal();
|
|
311
|
+
if (!changedProperties.has('selectedStep') && !changedProperties.has('steps') && !changedProperties.has('overlay'))
|
|
312
|
+
return;
|
|
517
313
|
await this.setScrollStatus();
|
|
314
|
+
if (!this.isConnected)
|
|
315
|
+
return;
|
|
316
|
+
if (changedProperties.has('steps') || changedProperties.has('overlay')) {
|
|
317
|
+
this.resizeObserver?.disconnect();
|
|
318
|
+
this.resizeObserver?.observe(this.shadowRoot.querySelector('.stepperContainer'));
|
|
319
|
+
for (const tile of this.shadowRoot.querySelectorAll('.step'))
|
|
320
|
+
this.resizeObserver?.observe(tile);
|
|
321
|
+
}
|
|
322
|
+
if (this.overlay || this.shadowRoot?.activeElement) {
|
|
323
|
+
this.shadowRoot?.querySelector('.selected .title')?.focus({ preventScroll: true });
|
|
324
|
+
}
|
|
518
325
|
}
|
|
519
326
|
scroller;
|
|
520
327
|
async setScrollStatus() {
|
|
521
|
-
const
|
|
522
|
-
const selectedStepElement = this.shadowRoot
|
|
523
|
-
if (!selectedStepElement)
|
|
328
|
+
const step = this.selectedStep;
|
|
329
|
+
const selectedStepElement = this.shadowRoot?.querySelector('.step.selected');
|
|
330
|
+
if (!selectedStepElement || !this.isConnected)
|
|
331
|
+
return;
|
|
332
|
+
const form = selectedStepElement.querySelector('dees-form');
|
|
333
|
+
await form?.updateComplete;
|
|
334
|
+
if (!this.isConnected || step !== this.selectedStep)
|
|
524
335
|
return;
|
|
525
|
-
}
|
|
526
336
|
this.scanActiveForm(selectedStepElement);
|
|
527
|
-
|
|
528
|
-
|
|
337
|
+
this.positionSelectedStep(true);
|
|
338
|
+
if (!step.validationFuncCalled && step.validationFunc) {
|
|
339
|
+
step.abortController = new AbortController();
|
|
340
|
+
step.validationFuncCalled = true;
|
|
341
|
+
void this.runStepValidation(step, selectedStepElement, step.abortController.signal);
|
|
529
342
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
343
|
+
}
|
|
344
|
+
positionSelectedStep(animate) {
|
|
345
|
+
const container = this.shadowRoot?.querySelector('.stepperContainer');
|
|
346
|
+
const selected = this.shadowRoot?.querySelector('.step.selected');
|
|
347
|
+
const first = this.shadowRoot?.querySelector('.step');
|
|
348
|
+
if (!container || !selected || !first || !this.isConnected)
|
|
349
|
+
return;
|
|
350
|
+
container.style.paddingTop = `${Math.max(24, (container.clientHeight - first.offsetHeight) / 2)}px`;
|
|
351
|
+
const position = Math.max(0, selected.offsetTop - (container.clientHeight - selected.offsetHeight) / 2);
|
|
534
352
|
if (!this.scroller) {
|
|
535
|
-
this.scroller = new domtools.plugins.SweetScroll({
|
|
536
|
-
|
|
537
|
-
horizontal: false,
|
|
538
|
-
easing: 'easeInOutExpo',
|
|
539
|
-
duration: 700,
|
|
540
|
-
}, stepperContainer);
|
|
541
|
-
}
|
|
542
|
-
if (!this.selectedStep.validationFuncCalled && this.selectedStep.validationFunc) {
|
|
543
|
-
this.selectedStep.abortController = new AbortController();
|
|
544
|
-
this.selectedStep.validationFuncCalled = true;
|
|
545
|
-
void this.runStepValidation(this.selectedStep, selectedStepElement, this.selectedStep.abortController.signal);
|
|
353
|
+
this.scroller = new domtools.plugins.SweetScroll({ vertical: true, horizontal: false, easing: 'easeOutCubic', duration: 320, cancellable: false }, container);
|
|
354
|
+
animate = false;
|
|
546
355
|
}
|
|
547
|
-
|
|
356
|
+
// Form validity can resize the footer after selection. Retarget the active
|
|
357
|
+
// scroll instead of letting ResizeObserver snap it to the destination.
|
|
358
|
+
if (this.scrollTarget !== undefined && Math.abs(this.scrollTarget - position) < 1)
|
|
359
|
+
return;
|
|
360
|
+
const duration = (animate || this.scrollInFlight) && !matchMedia('(prefers-reduced-motion: reduce)').matches ? 320 : 0;
|
|
361
|
+
this.scrollTarget = position;
|
|
362
|
+
this.scroller.to(position, { duration, complete: () => { this.scrollInFlight = false; } });
|
|
363
|
+
this.scrollInFlight = duration > 0;
|
|
548
364
|
}
|
|
549
365
|
async goBack() {
|
|
550
366
|
const currentIndex = this.steps.findIndex((stepArg) => stepArg === this.selectedStep);
|
|
551
|
-
if (currentIndex <= 0) {
|
|
367
|
+
if (currentIndex <= 0 || this.selectedStep.allowBack === false) {
|
|
552
368
|
return;
|
|
553
369
|
}
|
|
554
370
|
// Abort any active listeners on current step
|
|
@@ -561,9 +377,16 @@ let DeesStepper = (() => {
|
|
|
561
377
|
previousStep.validationFuncCalled = false;
|
|
562
378
|
this.prepareStepForActivation(previousStep);
|
|
563
379
|
this.selectedStep = previousStep;
|
|
564
|
-
await this.
|
|
565
|
-
|
|
566
|
-
|
|
380
|
+
await this.updateComplete;
|
|
381
|
+
if (this.isConnected && this.selectedStep === previousStep) {
|
|
382
|
+
try {
|
|
383
|
+
await previousStep.onReturnToStepFunc?.(this, this.shadowRoot.querySelector('.selected'));
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
if (this.selectedStep === previousStep)
|
|
387
|
+
this.stepError = error instanceof Error ? error.message : 'Could not return to this step.';
|
|
388
|
+
}
|
|
389
|
+
}
|
|
567
390
|
}
|
|
568
391
|
goNext() {
|
|
569
392
|
const currentIndex = this.steps.findIndex((stepArg) => stepArg === this.selectedStep);
|
|
@@ -651,7 +474,12 @@ let DeesStepper = (() => {
|
|
|
651
474
|
return;
|
|
652
475
|
}
|
|
653
476
|
const fields = form.getFormElements();
|
|
654
|
-
this.activeFormValid = fields.every(
|
|
477
|
+
this.activeFormValid = fields.every(field => {
|
|
478
|
+
if (!field.required || field.disabled)
|
|
479
|
+
return true;
|
|
480
|
+
const value = 'getValue' in field && field.getValue ? field.getValue() : field.value;
|
|
481
|
+
return value !== null && value !== undefined && value !== '' && value !== false && (!Array.isArray(value) || value.length > 0);
|
|
482
|
+
});
|
|
655
483
|
}
|
|
656
484
|
/**
|
|
657
485
|
* Click handler for menuOption buttons in the footer. For the primary (last)
|
|
@@ -661,25 +489,39 @@ let DeesStepper = (() => {
|
|
|
661
489
|
* completes before the click handler returns.
|
|
662
490
|
*/
|
|
663
491
|
async handleMenuOptionClick(optionArg, isPrimary) {
|
|
492
|
+
if (this.actionPending || (isPrimary && this.progressRunning))
|
|
493
|
+
return;
|
|
494
|
+
this.recomputeFormValid();
|
|
664
495
|
const form = this.activeForm;
|
|
665
|
-
if (isPrimary &&
|
|
666
|
-
|
|
496
|
+
if (isPrimary && !this.activeFormValid)
|
|
497
|
+
return;
|
|
498
|
+
const step = this.selectedStep;
|
|
499
|
+
this.actionPending = true;
|
|
500
|
+
this.actionStep = step;
|
|
501
|
+
this.stepError = '';
|
|
502
|
+
try {
|
|
503
|
+
if (isPrimary && form)
|
|
504
|
+
await form.gatherAndDispatch();
|
|
505
|
+
if (!this.isConnected || step !== this.selectedStep)
|
|
667
506
|
return;
|
|
668
|
-
await
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
507
|
+
await optionArg.action(this);
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
if (this.isConnected && step === this.selectedStep)
|
|
511
|
+
this.stepError = error instanceof Error ? error.message : 'The action could not be completed. Try again.';
|
|
512
|
+
}
|
|
513
|
+
finally {
|
|
514
|
+
if (this.actionStep === step) {
|
|
515
|
+
this.actionPending = false;
|
|
516
|
+
this.actionStep = undefined;
|
|
517
|
+
}
|
|
672
518
|
}
|
|
673
|
-
await optionArg.action(this);
|
|
674
519
|
}
|
|
675
520
|
getProgressStepState(stepArg) {
|
|
676
521
|
if (!stepArg.progressStep) {
|
|
677
522
|
return {};
|
|
678
523
|
}
|
|
679
|
-
|
|
680
|
-
stepArg.progressStepState = this.createInitialProgressStepState(stepArg);
|
|
681
|
-
}
|
|
682
|
-
return stepArg.progressStepState;
|
|
524
|
+
return stepArg.progressStepState ?? this.createInitialProgressStepState(stepArg);
|
|
683
525
|
}
|
|
684
526
|
createInitialProgressStepState(stepArg) {
|
|
685
527
|
return {
|
|
@@ -699,9 +541,10 @@ let DeesStepper = (() => {
|
|
|
699
541
|
stepArg.progressStepState = this.createInitialProgressStepState(stepArg);
|
|
700
542
|
}
|
|
701
543
|
async runStepValidation(stepArg, selectedStepElement, signal) {
|
|
544
|
+
this.progressRunning = !!stepArg.progressStep;
|
|
702
545
|
try {
|
|
703
546
|
await stepArg.validationFunc?.(this, selectedStepElement, signal);
|
|
704
|
-
if (signal.aborted) {
|
|
547
|
+
if (signal.aborted || !this.isConnected || this.selectedStep !== stepArg) {
|
|
705
548
|
return;
|
|
706
549
|
}
|
|
707
550
|
if (stepArg.progressStep && stepArg.progressStep.autoAdvance !== false && this.selectedStep === stepArg) {
|
|
@@ -709,20 +552,39 @@ let DeesStepper = (() => {
|
|
|
709
552
|
}
|
|
710
553
|
}
|
|
711
554
|
catch (error) {
|
|
712
|
-
if (signal.aborted) {
|
|
555
|
+
if (signal.aborted || !this.isConnected || this.selectedStep !== stepArg) {
|
|
713
556
|
return;
|
|
714
557
|
}
|
|
558
|
+
const errorText = error instanceof Error ? error.message : 'This step could not be completed. Try again.';
|
|
559
|
+
this.stepError = errorText;
|
|
715
560
|
if (stepArg.progressStep) {
|
|
716
|
-
const errorText = error instanceof Error ? error.message : 'Unexpected error';
|
|
717
561
|
this.appendProgressStepLine(`Error: ${errorText}`, stepArg);
|
|
718
562
|
this.updateProgressStep({
|
|
719
563
|
indeterminate: false,
|
|
720
564
|
statusText: errorText,
|
|
721
565
|
}, stepArg);
|
|
722
566
|
}
|
|
723
|
-
|
|
567
|
+
}
|
|
568
|
+
finally {
|
|
569
|
+
if (!signal.aborted && this.selectedStep === stepArg)
|
|
570
|
+
this.progressRunning = false;
|
|
724
571
|
}
|
|
725
572
|
}
|
|
573
|
+
/** Rerun the current step after a recoverable validation/provisioning failure. */
|
|
574
|
+
async retryStep() {
|
|
575
|
+
const step = this.selectedStep;
|
|
576
|
+
if (!step?.validationFunc || this.progressRunning || this.actionPending)
|
|
577
|
+
return;
|
|
578
|
+
step.abortController?.abort();
|
|
579
|
+
step.validationFuncCalled = false;
|
|
580
|
+
this.stepError = '';
|
|
581
|
+
this.prepareStepForActivation(step);
|
|
582
|
+
await this.setScrollStatus();
|
|
583
|
+
}
|
|
584
|
+
handleDialogCancel(event) {
|
|
585
|
+
event.preventDefault();
|
|
586
|
+
void this.handleCancelRequest();
|
|
587
|
+
}
|
|
726
588
|
/**
|
|
727
589
|
* Currently-open confirmation modal (if any). Prevents double-stacking when
|
|
728
590
|
* the user clicks the backdrop or the Cancel button while a confirm modal
|
|
@@ -762,60 +624,83 @@ let DeesStepper = (() => {
|
|
|
762
624
|
* fallback check.
|
|
763
625
|
*/
|
|
764
626
|
async handleCancelRequest() {
|
|
765
|
-
if (!this.cancelable)
|
|
627
|
+
if (!this.cancelable || this.cancelRequestPending || !this.isConnected)
|
|
766
628
|
return;
|
|
767
629
|
if (this.cancelConfirmModal && this.cancelConfirmModal.isConnected)
|
|
768
630
|
return;
|
|
769
631
|
this.cancelConfirmModal = undefined;
|
|
770
|
-
this.
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
632
|
+
this.cancelRequestPending = true;
|
|
633
|
+
try {
|
|
634
|
+
this.cancelConfirmModal = await DeesModal.createAndShow({
|
|
635
|
+
heading: 'Cancel setup?',
|
|
636
|
+
width: 'small',
|
|
637
|
+
content: html `
|
|
774
638
|
<p style="margin: 0;">
|
|
775
639
|
Are you sure you want to cancel? Any progress on the current step will be lost.
|
|
776
640
|
</p>
|
|
777
641
|
`,
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
642
|
+
menuOptions: [
|
|
643
|
+
{
|
|
644
|
+
name: 'Continue setup',
|
|
645
|
+
action: async (modal) => {
|
|
646
|
+
this.cancelConfirmModal = undefined;
|
|
647
|
+
await modal.destroy();
|
|
648
|
+
},
|
|
784
649
|
},
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
await domtools.convenience.smartdelay.delayFor(100);
|
|
793
|
-
await this.destroy();
|
|
650
|
+
{
|
|
651
|
+
name: 'Yes, cancel',
|
|
652
|
+
action: async (modal) => {
|
|
653
|
+
this.cancelConfirmModal = undefined;
|
|
654
|
+
await modal.destroy();
|
|
655
|
+
await this.destroy();
|
|
656
|
+
},
|
|
794
657
|
},
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
async destroy() {
|
|
800
|
-
const domtools = await this.domtoolsPromise;
|
|
801
|
-
const container = this.shadowRoot.querySelector('.stepperContainer');
|
|
802
|
-
if (this.selectedStep?.abortController) {
|
|
803
|
-
this.selectedStep.abortController.abort();
|
|
804
|
-
}
|
|
805
|
-
container?.classList.add('predestroy');
|
|
806
|
-
await domtools.convenience.smartdelay.delayFor(250);
|
|
807
|
-
if (this.parentElement) {
|
|
808
|
-
this.parentElement.removeChild(this);
|
|
658
|
+
],
|
|
659
|
+
});
|
|
660
|
+
if (!this.isConnected)
|
|
661
|
+
await this.cancelConfirmModal.destroy();
|
|
809
662
|
}
|
|
810
|
-
|
|
811
|
-
|
|
663
|
+
finally {
|
|
664
|
+
this.cancelRequestPending = false;
|
|
812
665
|
}
|
|
813
|
-
|
|
666
|
+
}
|
|
667
|
+
destroy() {
|
|
668
|
+
return this.destroyPromise ??= this.closeAndRemove();
|
|
669
|
+
}
|
|
670
|
+
async closeAndRemove() {
|
|
671
|
+
this.selectedStep?.abortController?.abort();
|
|
672
|
+
// Close nested dialogs first so the browser can restore the original opener.
|
|
673
|
+
if (this.cancelConfirmModal?.isConnected)
|
|
674
|
+
await this.cancelConfirmModal.destroy();
|
|
675
|
+
this.shadowRoot?.querySelector('.stepperContainer')?.classList.add('predestroy');
|
|
676
|
+
const tile = this.shadowRoot?.querySelector('.step.selected');
|
|
677
|
+
if (tile)
|
|
678
|
+
await Promise.allSettled(tile.getAnimations().map(animation => animation.finished));
|
|
679
|
+
this.shadowRoot?.querySelector('dialog')?.close();
|
|
680
|
+
this.remove();
|
|
681
|
+
}
|
|
682
|
+
async disconnectedCallback() {
|
|
683
|
+
this.selectedStep?.abortController?.abort();
|
|
684
|
+
if (this.selectedStep)
|
|
685
|
+
this.selectedStep.validationFuncCalled = false;
|
|
686
|
+
this.resizeObserver?.disconnect();
|
|
687
|
+
this.resizeObserver = undefined;
|
|
688
|
+
this.scroller?.destroy();
|
|
689
|
+
this.scroller = undefined;
|
|
690
|
+
this.scrollTarget = undefined;
|
|
691
|
+
this.scrollInFlight = false;
|
|
692
|
+
this.shadowRoot?.querySelector('dialog')?.close();
|
|
693
|
+
if (this.cancelConfirmModal?.isConnected)
|
|
694
|
+
void this.cancelConfirmModal.destroy();
|
|
814
695
|
this.activeFormSubscription?.unsubscribe();
|
|
815
696
|
this.activeFormSubscription = undefined;
|
|
816
697
|
this.activeForm = null;
|
|
817
|
-
|
|
698
|
+
this.actionPending = false;
|
|
699
|
+
this.actionStep = undefined;
|
|
700
|
+
this.progressRunning = false;
|
|
818
701
|
zIndexRegistry.unregister(this);
|
|
702
|
+
this.dispatchEvent(new CustomEvent('stepper-close', { bubbles: true, composed: true }));
|
|
703
|
+
await super.disconnectedCallback();
|
|
819
704
|
}
|
|
820
705
|
static {
|
|
821
706
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -824,4 +709,4 @@ let DeesStepper = (() => {
|
|
|
824
709
|
return DeesStepper = _classThis;
|
|
825
710
|
})();
|
|
826
711
|
export { DeesStepper };
|
|
827
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zdGVwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbGF5b3V0L2RlZXMtc3RlcHBlci9kZWVzLXN0ZXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxVQUFVLEVBQ1YsUUFBUSxHQUVULE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxLQUFLLFFBQVEsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFM0UsT0FBTyw2REFBNkQsQ0FBQztBQUNyRSxPQUFPLDJCQUEyQixDQUFDO0lBb0N0QixXQUFXOzRCQUR2QixhQUFhLENBQUMsY0FBYyxDQUFDOzs7O3NCQUNHLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQW5CLFNBQVEsV0FBVzs7OztpQ0E0QnpDLFFBQVEsQ0FBQztvQkFDUixJQUFJLEVBQUUsS0FBSztpQkFDWixDQUFDO3dDQUdELFFBQVEsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtpQkFDYixDQUFDO21DQUdELFFBQVEsQ0FBQztvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDO3NDQVNELFFBQVEsQ0FBQztvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDO3lDQUdELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUc1QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzsyQ0FHNUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUEvQjlDLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBZTtZQUs3Qix5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQVM7WUFNOUIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQVlsQyxtTEFBUyxVQUFVLDZCQUFWLFVBQVUsK0ZBQWlCO1lBR3BDLDRMQUFTLGFBQWEsNkJBQWIsYUFBYSxxR0FBZ0I7WUFHdEMsbUxBQVMsVUFBVSw2QkFBVixVQUFVLCtGQUF5QjtZQUc1QyxrTUFBUyxlQUFlLDZCQUFmLGVBQWUseUdBQWlCO1lBL0QzQyw2S0EyeEJDOzs7O1FBMXhCQyxTQUFTO1FBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDMUIsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2QyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUdqQztZQUNDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDakMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxVQUFVLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN4QyxPQUFPLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDN0MsQ0FBQztZQUNELE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVyQix5REFBeUQ7WUFDekQsT0FBTyxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXhELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFNRCx1RUFBMEIsRUFBRSxFQUFDO1FBSjdCLFdBQVc7UUFJWCxJQUFTLEtBQUssMkNBQWU7UUFBN0IsSUFBUyxLQUFLLGlEQUFlO1FBSzdCLGtKQUE4QjtRQUE5QixJQUFTLFlBQVksa0RBQVM7UUFBOUIsSUFBUyxZQUFZLHdEQUFTO1FBTTlCLHNJQUE0QixLQUFLLEdBQUM7UUFBbEMsSUFBUyxPQUFPLDZDQUFrQjtRQUFsQyxJQUFTLE9BQU8sbURBQWtCO1FBWWxDLHVJQUErQixJQUFJLEdBQUM7UUFWcEM7Ozs7O1dBS0c7UUFLSCxJQUFTLFVBQVUsZ0RBQWlCO1FBQXBDLElBQVMsVUFBVSxzREFBaUI7UUFHcEMsZ0pBQWlDLElBQUksR0FBQztRQUF0QyxJQUFTLGFBQWEsbURBQWdCO1FBQXRDLElBQVMsYUFBYSx5REFBZ0I7UUFHdEMsNklBQXVDLElBQUksR0FBQztRQUE1QyxJQUFTLFVBQVUsZ0RBQXlCO1FBQTVDLElBQVMsVUFBVSxzREFBeUI7UUFHNUMsb0pBQW9DLElBQUksR0FBQztRQUF6QyxJQUFTLGVBQWUscURBQWlCO1FBQXpDLElBQVMsZUFBZSwyREFBaUI7UUFFakMsc0JBQXNCLCtEQUErQjtRQUVyRCxXQUFXLENBQW1CO1FBRXRDO1lBQ0UsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDO1FBRU0sTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixrQkFBa0I7WUFDbEIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeVFGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQTs7a0NBRW1CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7aUJBQ3BELElBQUksQ0FBQyxrQkFBa0I7O1VBRTlCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakQsTUFBTSxRQUFRLEdBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxPQUFPLEdBQUcsU0FBUyxLQUFLLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUM7Z0JBQy9ELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzNGLE9BQU8sSUFBSSxDQUFBOzBCQUNLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTs7OztnQkFJbkcsY0FBYztvQkFDZCxDQUFDLENBQUMsSUFBSSxDQUFBLDhCQUE4QixJQUFJLENBQUMsTUFBTTs7eUJBRXRDO29CQUNULENBQUMsQ0FBQyxJQUFJLENBQUEsbUNBQW1DOzt1QkFFbEMsU0FBUyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07Ozs7bUNBSXpCLE9BQU8sQ0FBQyxLQUFLO2dCQUNoQyxPQUFPLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7Ozs2QkFHbkMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLO2tDQUNuQyxpQkFBaUIsQ0FBQyxVQUFVLElBQUksQ0FBQztxQ0FDOUIsaUJBQWlCLENBQUMsYUFBYSxJQUFJLEtBQUs7c0NBQ3ZDLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxJQUFJO2tDQUM1QyxpQkFBaUIsQ0FBQyxVQUFVLElBQUksRUFBRTtxQ0FDL0IsaUJBQWlCLENBQUMsYUFBYSxJQUFJLEVBQUU7a0NBQ3hDLGlCQUFpQixDQUFDLFVBQVUsSUFBSSxDQUFDOzs7ZUFHcEQsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQ0FDZ0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsT0FBTzs7O2dCQUd0RixVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtvQkFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQSx1REFBdUQ7b0JBQzdELENBQUMsQ0FBQyxFQUFFO2dCQUNKLElBQUksQ0FBQyxVQUFVO29CQUNmLENBQUMsQ0FBQyxJQUFJLENBQUE7OzZCQUVPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQ0FDN0I7b0JBQ2hCLENBQUMsQ0FBQyxFQUFFO2dCQUNKLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFO29CQUNwRCxNQUFNLFNBQVMsR0FBRyxXQUFXLEtBQUssT0FBTyxDQUFDLFdBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNsRSxNQUFNLFVBQVUsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO29CQUNsRixPQUFPLElBQUksQ0FBQTs7MENBRWUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTs2QkFDdkUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7cUJBQzlELFNBQVMsQ0FBQyxJQUFJO2lCQUNsQixDQUFDO2dCQUNKLENBQUMsQ0FBQyxJQUFJLEVBQUU7O3VCQUVDLENBQUM7WUFDaEIsQ0FBQyxDQUFDOztLQUVMLENBQUM7UUFDSixDQUFDO1FBRU0sY0FBYyxHQUFHLENBQUMsT0FBYyxFQUFVLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQztRQUVLLEtBQUssQ0FBQyxZQUFZO1lBQ3ZCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMzQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdCLDBEQUEwRDtZQUMxRCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVcsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUF5RDtZQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVNLFFBQVEsQ0FBaUQ7UUFFekQsS0FBSyxDQUFDLGVBQWU7WUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQztZQUM1RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBZ0IsQ0FBQztZQUN2RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDekIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUNsQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFlBQVksR0FBRyxDQUN6RSxJQUFJLENBQUM7WUFDUCxDQUFDO1lBQ0QsTUFBTSxjQUFjLEdBQ2xCLG1CQUFtQixDQUFDLFNBQVM7Z0JBQzdCLGdCQUFnQixDQUFDLFlBQVksR0FBRyxDQUFDO2dCQUNqQyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQzlDO29CQUNFLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxLQUFLO29CQUNqQixNQUFNLEVBQUUsZUFBZTtvQkFDdkIsUUFBUSxFQUFFLEdBQUc7aUJBQ2QsRUFDRCxnQkFBZ0IsQ0FDakIsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFDOUMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLG1CQUFtQixFQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3pDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVNLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RGLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUNELDZDQUE2QztZQUM3QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVDLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdDLFdBQVcsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsWUFBWSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztZQUMxQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDakMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBZ0IsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFFTSxNQUFNO1lBQ1gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsT0FBTztZQUNULENBQUM7WUFDRCw2Q0FBNkM7WUFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3QyxXQUFXLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQy9CLENBQUM7UUFFTSxpQkFBaUIsQ0FBQyxVQUFpQixJQUFJLENBQUMsWUFBWTtZQUN6RCxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUVELE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFTSxrQkFBa0IsQ0FDdkIsZ0JBQTZDLEVBQzdDLFVBQWlCLElBQUksQ0FBQyxZQUFZO1lBRWxDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEUsT0FBTyxDQUFDLGlCQUFpQixHQUFHO2dCQUMxQixHQUFHLG9CQUFvQjtnQkFDdkIsR0FBRyxnQkFBZ0I7Z0JBQ25CLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxhQUFhO29CQUMzQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztvQkFDckMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNwRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFTSxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsVUFBaUIsSUFBSSxDQUFDLFlBQVk7WUFDL0UsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDM0IsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQ3JCO2dCQUNFLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDO2FBQ3hFLEVBQ0QsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNLLGNBQWMsQ0FBQyxtQkFBZ0M7WUFDckQsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQztZQUMvRSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDNUIsT0FBTztZQUNULENBQUM7WUFDRCwwRUFBMEU7WUFDMUUsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSyxrQkFBa0I7WUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQ3hHLENBQUM7UUFDSixDQUFDO1FBRUQ7Ozs7OztXQU1HO1FBQ0ssS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxTQUF5RCxFQUN6RCxTQUFrQjtZQUVsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdCLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7b0JBQUUsT0FBTztnQkFDbEMsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMzQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVPLG9CQUFvQixDQUFDLE9BQWM7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUNuQyxDQUFDO1FBRU8sOEJBQThCLENBQUMsT0FBYztZQUNuRCxPQUFPO2dCQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSztnQkFDbkQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxJQUFJLENBQUM7Z0JBQ2pELGFBQWEsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsSUFBSSxLQUFLO2dCQUMzRCxjQUFjLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxjQUFjLElBQUksSUFBSTtnQkFDNUQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxJQUFJLEVBQUU7Z0JBQ2xELGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxJQUFJLENBQUM7YUFDbEQsQ0FBQztRQUNKLENBQUM7UUFFTyx3QkFBd0IsQ0FBQyxPQUFlO1lBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUM3QixPQUFjLEVBQ2QsbUJBQWdDLEVBQ2hDLE1BQW1CO1lBRW5CLElBQUksQ0FBQztnQkFDSCxNQUFNLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRWxFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNuQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUN4RyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDOUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxrQkFBa0IsQ0FDckI7d0JBQ0UsYUFBYSxFQUFFLEtBQUs7d0JBQ3BCLFVBQVUsRUFBRSxTQUFTO3FCQUN0QixFQUNELE9BQU8sQ0FDUixDQUFDO2dCQUNKLENBQUM7Z0JBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUVEOzs7Ozs7V0FNRztRQUNLLGtCQUFrQixDQUFhO1FBRXZDOzs7Ozs7V0FNRztRQUNLLGtCQUFrQixDQUFDLFFBQW9CO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPO1lBQzdCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDN0UsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBRUQ7Ozs7Ozs7Ozs7O1dBV0c7UUFDSSxLQUFLLENBQUMsbUJBQW1CO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPO1lBQzdCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXO2dCQUFFLE9BQU87WUFDM0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUN0RCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQTs7OztPQUlaO2dCQUNELFdBQVcsRUFBRTtvQkFDWDt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFOzRCQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDOzRCQUNwQyxNQUFNLEtBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQztxQkFDRjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsYUFBYTt3QkFDbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTs0QkFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQzs0QkFDcEMsS0FBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsa0RBQWtEOzRCQUNwRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUM7NEJBQzVDLE1BQU0sUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNwRCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDdkIsQ0FBQztxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTSxLQUFLLENBQUMsT0FBTztZQUNsQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVDLENBQUM7WUFDRCxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2QyxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkMsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztZQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV2QixtQ0FBbUM7WUFDbkMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDOztZQTF4QlUsdURBQVc7Ozs7O1NBQVgsV0FBVyJ9
|
|
712
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zdGVwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbGF5b3V0L2RlZXMtc3RlcHBlci9kZWVzLXN0ZXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxHQUVOLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxLQUFLLFFBQVEsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUzRSxPQUFPLDZEQUE2RCxDQUFDO0FBQ3JFLE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxpREFBaUQsQ0FBQztBQUN6RCxPQUFPLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7SUFxQy9CLFdBQVc7NEJBRHZCLGFBQWEsQ0FBQyxjQUFjLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFBbkIsU0FBUSxXQUFXOzs7O2lDQTBCekMsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxLQUFLO2lCQUNaLENBQUM7d0NBR0QsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO2lCQUNiLENBQUM7bUNBR0QsUUFBUSxDQUFDO29CQUNSLElBQUks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
|