@ngxsmk/cdk 3.1.0 → 3.3.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.
Files changed (42) hide show
  1. package/README.md +1 -1
  2. package/esm2022/input-group/input-group-engine.mjs +53 -28
  3. package/esm2022/public-api.mjs +2 -1
  4. package/esm2022/state-machine/create-machine.mjs +38 -0
  5. package/esm2022/state-machine/create-presence.mjs +70 -0
  6. package/esm2022/state-machine/index.mjs +3 -0
  7. package/esm2022/state-machine/ngxsmk-cdk-state-machine.mjs +5 -0
  8. package/fesm2022/ngxsmk-cdk-autofocus.mjs.map +1 -1
  9. package/fesm2022/ngxsmk-cdk-click-outside.mjs.map +1 -1
  10. package/fesm2022/ngxsmk-cdk-cva-base.mjs.map +1 -1
  11. package/fesm2022/ngxsmk-cdk-focus-trap.mjs.map +1 -1
  12. package/fesm2022/ngxsmk-cdk-focusable.mjs.map +1 -1
  13. package/fesm2022/ngxsmk-cdk-input-group.mjs +52 -27
  14. package/fesm2022/ngxsmk-cdk-input-group.mjs.map +1 -1
  15. package/fesm2022/ngxsmk-cdk-intersection-observer.mjs.map +1 -1
  16. package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs.map +1 -1
  17. package/fesm2022/ngxsmk-cdk-live-announcer.mjs.map +1 -1
  18. package/fesm2022/ngxsmk-cdk-media-query.mjs.map +1 -1
  19. package/fesm2022/ngxsmk-cdk-resize-observer.mjs.map +1 -1
  20. package/fesm2022/ngxsmk-cdk-roving-focus.mjs.map +1 -1
  21. package/fesm2022/ngxsmk-cdk-scheduler.mjs.map +1 -1
  22. package/fesm2022/ngxsmk-cdk-scroll-lock.mjs.map +1 -1
  23. package/fesm2022/ngxsmk-cdk-skip-link.mjs.map +1 -1
  24. package/fesm2022/ngxsmk-cdk-spreadsheet.mjs.map +1 -1
  25. package/fesm2022/ngxsmk-cdk-state-machine.mjs +113 -0
  26. package/fesm2022/ngxsmk-cdk-state-machine.mjs.map +1 -0
  27. package/fesm2022/ngxsmk-cdk-testing.mjs.map +1 -1
  28. package/fesm2022/ngxsmk-cdk-visually-hidden.mjs.map +1 -1
  29. package/fesm2022/ngxsmk-cdk.mjs +1 -0
  30. package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
  31. package/input-group/input-group-engine.d.ts +3 -0
  32. package/input-group/input-group-engine.d.ts.map +1 -1
  33. package/package.json +44 -32
  34. package/public-api.d.ts +1 -0
  35. package/public-api.d.ts.map +1 -1
  36. package/state-machine/create-machine.d.ts +37 -0
  37. package/state-machine/create-machine.d.ts.map +1 -0
  38. package/state-machine/create-presence.d.ts +29 -0
  39. package/state-machine/create-presence.d.ts.map +1 -0
  40. package/state-machine/index.d.ts +3 -0
  41. package/state-machine/index.d.ts.map +1 -0
  42. package/state-machine/ngxsmk-cdk-state-machine.d.ts.map +1 -0
package/README.md CHANGED
@@ -81,6 +81,6 @@ Hides content visually while keeping it available to screen readers.
81
81
 
82
82
  ## Entry points
83
83
 
84
- `click-outside`, `focusable`, `focus-trap`, `live-announcer`, `media-query`, `scroll-lock`, `visually-hidden`, `intersection-observer`, `resize-observer`, `autofocus`, `testing`.
84
+ `click-outside`, `focusable`, `focus-trap`, `live-announcer`, `media-query`, `scroll-lock`, `visually-hidden`, `intersection-observer`, `resize-observer`, `autofocus`, `state-machine`, `testing`.
85
85
 
86
86
  Prefer deep imports (e.g. `@ngxsmk/cdk/click-outside`) so the bundler tree-shakes unused behaviors.
@@ -27,6 +27,7 @@ export class InputGroupEngine {
27
27
  this.fullWidth = signal(true);
28
28
  this.floatingLabel = signal(false);
29
29
  this._asyncTimer = null;
30
+ this._validationGeneration = 0;
30
31
  this._config = config;
31
32
  // Initialize config signals
32
33
  this.value = signal(config.initialValue ?? '');
@@ -151,55 +152,75 @@ export class InputGroupEngine {
151
152
  this.message.set(message);
152
153
  this.onValidationChange()(status, message);
153
154
  }
155
+ _clearAsyncTimer() {
156
+ if (this._asyncTimer) {
157
+ clearTimeout(this._asyncTimer);
158
+ this._asyncTimer = null;
159
+ }
160
+ }
154
161
  _runValidation(value) {
162
+ this._clearAsyncTimer();
163
+ const gen = (this._validationGeneration += 1);
155
164
  const validator = this._config.validator;
156
165
  if (validator) {
157
166
  const result = validator(value);
158
167
  this.status.set(result.status);
159
168
  this.message.set(result.message);
160
169
  this.onValidationChange()(result.status, result.message);
161
- return;
162
- }
163
- // Built-in validations
164
- if (this.required() && !value) {
165
- this.status.set('error');
166
- this.message.set('This field is required');
167
- this.onValidationChange()('error', 'This field is required');
168
- return;
169
- }
170
- if (this.isOverLength()) {
171
- this.status.set('error');
172
- this.message.set(`Maximum ${this.maxLength()} characters`);
173
- this.onValidationChange()('error', `Maximum ${this.maxLength()} characters`);
174
- return;
170
+ if (result.status === 'error') {
171
+ return;
172
+ }
175
173
  }
176
- if (this.isUnderLength()) {
177
- this.status.set('error');
178
- this.message.set(`Minimum ${this.minLength()} characters`);
179
- this.onValidationChange()('error', `Minimum ${this.minLength()} characters`);
180
- return;
174
+ else {
175
+ if (this.required() && !value) {
176
+ this.setStatus('error', 'This field is required');
177
+ return;
178
+ }
179
+ if (this.isOverLength()) {
180
+ this.setStatus('error', `Maximum ${this.maxLength()} characters`);
181
+ return;
182
+ }
183
+ if (this.isUnderLength()) {
184
+ this.setStatus('error', `Minimum ${this.minLength()} characters`);
185
+ return;
186
+ }
181
187
  }
182
- this.status.set('none');
183
- this.message.set('');
184
- this.onValidationChange()('none', '');
185
- // Async validation
186
188
  const asyncValidator = this._config.asyncValidator;
187
189
  if (asyncValidator && value) {
188
- if (this._asyncTimer)
189
- clearTimeout(this._asyncTimer);
190
190
  this.status.set('pending');
191
191
  this.message.set('');
192
+ this.onValidationChange()('pending', '');
192
193
  this._asyncTimer = setTimeout(async () => {
193
- const result = await asyncValidator(value);
194
- if (this.value() === value) {
194
+ try {
195
+ const result = await asyncValidator(value);
196
+ if (gen !== this._validationGeneration || this.value() !== value) {
197
+ return;
198
+ }
195
199
  this.status.set(result);
196
200
  this.onValidationChange()(result, '');
197
201
  }
202
+ catch {
203
+ if (gen !== this._validationGeneration || this.value() !== value) {
204
+ return;
205
+ }
206
+ this.setStatus('error', 'Validation failed');
207
+ }
208
+ finally {
209
+ if (this._asyncTimer) {
210
+ this._asyncTimer = null;
211
+ }
212
+ }
198
213
  }, this._config.asyncDebounce ?? 300);
214
+ return;
215
+ }
216
+ if (!validator) {
217
+ this.setStatus('none', '');
199
218
  }
200
219
  }
201
220
  // ── Reset ──
202
221
  reset() {
222
+ this._validationGeneration += 1;
223
+ this._clearAsyncTimer();
203
224
  this.value.set(this._config.initialValue ?? '');
204
225
  this.focused.set(false);
205
226
  this.touched.set(false);
@@ -208,6 +229,10 @@ export class InputGroupEngine {
208
229
  this.message.set('');
209
230
  this.passwordVisible.set(false);
210
231
  }
232
+ destroy() {
233
+ this._validationGeneration += 1;
234
+ this._clearAsyncTimer();
235
+ }
211
236
  // ── Enable/Disable ──
212
237
  enable() {
213
238
  this.disabled.set(false);
@@ -216,4 +241,4 @@ export class InputGroupEngine {
216
241
  this.disabled.set(true);
217
242
  }
218
243
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAtZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLWVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUF1Qm5GOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUE0RDNCLFlBQVksU0FBaUMsRUFBRTtRQXpEdEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFdBQU0sR0FBRyxNQUFNLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBUXZDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQTRCL0IsZ0JBQVcsR0FBeUMsSUFBSSxDQUFDO1FBRy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRXRCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUM7UUFFdEQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDekIsVUFBVTtRQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3hCLFVBQVU7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUMxQixVQUFVO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDekIsVUFBVTtRQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDcEMsVUFBVTtRQUNaLENBQUMsQ0FBQyxDQUFDO1FBRUgsaUJBQWlCO1FBRWpCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0IsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFaEcsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0RSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTNGLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU3RixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDdEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlCQUF5QjtJQUV6QixRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQseUJBQXlCO0lBRXpCLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGlCQUFpQjtJQUVqQix3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGdCQUFnQjtJQUVoQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO0lBRWhCLFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXLENBQUMsRUFBVTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxtQkFBbUI7SUFFbkIsU0FBUyxDQUFDLE1BQXdCLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYTtRQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTztRQUNULENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQzdELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3RSxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFdEMsbUJBQW1CO1FBQ25CLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELElBQUksY0FBYyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFdBQVc7Z0JBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUVkLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsdUJBQXVCO0lBRXZCLE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBzaWduYWwsIHR5cGUgV3JpdGFibGVTaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIElucHV0R3JvdXBDb25maWcsXG4gIElucHV0R3JvdXBBZGRvbixcbiAgSW5wdXRHcm91cElucHV0VHlwZSxcbiAgSW5wdXRHcm91cFZhcmlhbnQsXG4gIElucHV0R3JvdXBTaXplLFxuICBJbnB1dEdyb3VwUmFkaXVzLFxuICBJbnB1dEdyb3VwRGVuc2l0eSxcbiAgVmFsaWRhdGlvblN0YXR1cyxcbn0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0R3JvdXBFbmdpbmVDb25maWcgZXh0ZW5kcyBJbnB1dEdyb3VwQ29uZmlnIHtcbiAgLyoqIEluaXRpYWwgdmFsdWUuICovXG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbiAgLyoqIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbi4gKi9cbiAgYXN5bmNWYWxpZGF0b3I/OiAodmFsdWU6IHN0cmluZykgPT4gUHJvbWlzZTxWYWxpZGF0aW9uU3RhdHVzPjtcbiAgLyoqIFN5bmMgdmFsaWRhdG9yIGZ1bmN0aW9uLiAqL1xuICB2YWxpZGF0b3I/OiAodmFsdWU6IHN0cmluZykgPT4geyBzdGF0dXM6IFZhbGlkYXRpb25TdGF0dXM7IG1lc3NhZ2U6IHN0cmluZyB9O1xuICAvKiogRGVib3VuY2UgZm9yIGFzeW5jIHZhbGlkYXRpb24gaW4gbXMuICovXG4gIGFzeW5jRGVib3VuY2U/OiBudW1iZXI7XG59XG5cbi8qKlxuICogSW5wdXRHcm91cEVuZ2luZSDigJQgaGVhZGxlc3MsIHNpZ25hbC1iYXNlZCBzdGF0ZSBtYWNoaW5lIGZvciBpbnB1dCBncm91cCBiZWhhdmlvdXIuXG4gKiBaZXJvIERPTSwgemVybyBBbmd1bGFyIHRlbXBsYXRlIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBFbmdpbmUge1xuICAvLyDilIDilIAgQ29yZSBTdGF0ZSDilIDilIBcbiAgcmVhZG9ubHkgdmFsdWU6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIHJlYWRvbmx5IGZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBob3ZlcmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdG91Y2hlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRpcnR5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RhdHVzID0gc2lnbmFsPFZhbGlkYXRpb25TdGF0dXM+KCdub25lJyk7XG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcGFzc3dvcmRWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZG9ucyA9IHNpZ25hbDxJbnB1dEdyb3VwQWRkb25bXT4oW10pO1xuXG4gIC8vIOKUgOKUgCBDb25maWcg4pSA4pSAXG4gIHJlYWRvbmx5IHR5cGU6IFdyaXRhYmxlU2lnbmFsPElucHV0R3JvdXBJbnB1dFR5cGU+O1xuICByZWFkb25seSB2YXJpYW50OiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwVmFyaWFudD47XG4gIHJlYWRvbmx5IHNpemU6IFdyaXRhYmxlU2lnbmFsPElucHV0R3JvdXBTaXplPjtcbiAgcmVhZG9ubHkgcmFkaXVzOiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwUmFkaXVzPjtcbiAgcmVhZG9ubHkgZGVuc2l0eTogV3JpdGFibGVTaWduYWw8SW5wdXRHcm91cERlbnNpdHk+O1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IGxhYmVsID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgaGludCA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlcXVpcmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWluTGVuZ3RoID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd0NsZWFyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0NvdW50ZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBmdWxsV2lkdGggPSBzaWduYWwodHJ1ZSk7XG4gIHJlYWRvbmx5IGZsb2F0aW5nTGFiZWwgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIOKUgOKUgCBDb21wdXRlZCDilIDilIBcbiAgcmVhZG9ubHkgY2hhckNvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcmVhZG9ubHkgaGFzQ29udGVudDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpc0FjdGl2ZTogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpc092ZXJMZW5ndGg6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNVbmRlckxlbmd0aDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFcnJvcjogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNTdWNjZXNzOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc1dhcm5pbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNJbnZhbGlkOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHNob3dQbGFjZWhvbGRlcjogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBzaG91bGRGbG9hdDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBsZWFkaW5nQWRkb25zOiBTaWduYWw8SW5wdXRHcm91cEFkZG9uW10+O1xuICByZWFkb25seSB0cmFpbGluZ0FkZG9uczogU2lnbmFsPElucHV0R3JvdXBBZGRvbltdPjtcbiAgcmVhZG9ubHkgaGFzTGVhZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNUcmFpbGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpbnB1dFR5cGU6IFNpZ25hbDxJbnB1dEdyb3VwSW5wdXRUeXBlPjtcblxuICAvLyDilIDilIAgTGlmZWN5Y2xlIEhvb2tzIOKUgOKUgFxuICByZWFkb25seSBvbkZvY3VzOiBXcml0YWJsZVNpZ25hbDwoKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25CbHVyOiBXcml0YWJsZVNpZ25hbDwoKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25DaGFuZ2U6IFdyaXRhYmxlU2lnbmFsPCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25DbGVhcjogV3JpdGFibGVTaWduYWw8KCkgPT4gdm9pZD47XG4gIHJlYWRvbmx5IG9uVmFsaWRhdGlvbkNoYW5nZTogV3JpdGFibGVTaWduYWw8KHN0YXR1czogVmFsaWRhdGlvblN0YXR1cywgbWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkPjtcblxuICBwcml2YXRlIF9jb25maWc6IElucHV0R3JvdXBFbmdpbmVDb25maWc7XG4gIHByaXZhdGUgX2FzeW5jVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJbnB1dEdyb3VwRW5naW5lQ29uZmlnID0ge30pIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbmZpZyBzaWduYWxzXG4gICAgdGhpcy52YWx1ZSA9IHNpZ25hbChjb25maWcuaW5pdGlhbFZhbHVlID8/ICcnKTtcbiAgICB0aGlzLnR5cGUgPSBzaWduYWwoY29uZmlnLnR5cGUgPz8gJ3RleHQnKTtcbiAgICB0aGlzLnZhcmlhbnQgPSBzaWduYWwoY29uZmlnLnZhcmlhbnQgPz8gJ291dGxpbmVkJyk7XG4gICAgdGhpcy5zaXplID0gc2lnbmFsKGNvbmZpZy5zaXplID8/ICdtZCcpO1xuICAgIHRoaXMucmFkaXVzID0gc2lnbmFsKGNvbmZpZy5yYWRpdXMgPz8gJ21kJyk7XG4gICAgdGhpcy5kZW5zaXR5ID0gc2lnbmFsKGNvbmZpZy5kZW5zaXR5ID8/ICdjb21mb3J0YWJsZScpO1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5yZWFkb25seS5zZXQoY29uZmlnLnJlYWRvbmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyLnNldChjb25maWcucGxhY2Vob2xkZXIgPz8gJycpO1xuICAgIHRoaXMubGFiZWwuc2V0KGNvbmZpZy5sYWJlbCA/PyAnJyk7XG4gICAgdGhpcy5oaW50LnNldChjb25maWcuaGludCA/PyAnJyk7XG4gICAgdGhpcy5yZXF1aXJlZC5zZXQoY29uZmlnLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICB0aGlzLm1heExlbmd0aC5zZXQoY29uZmlnLm1heExlbmd0aCk7XG4gICAgdGhpcy5taW5MZW5ndGguc2V0KGNvbmZpZy5taW5MZW5ndGgpO1xuICAgIHRoaXMuc2hvd0NsZWFyLnNldChjb25maWcuc2hvd0NsZWFyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNob3dDb3VudGVyLnNldChjb25maWcuc2hvd0NvdW50ZXIgPz8gZmFsc2UpO1xuICAgIHRoaXMuZnVsbFdpZHRoLnNldChjb25maWcuZnVsbFdpZHRoID8/IHRydWUpO1xuICAgIHRoaXMuZmxvYXRpbmdMYWJlbC5zZXQoY29uZmlnLmZsb2F0aW5nTGFiZWwgPz8gZmFsc2UpO1xuXG4gICAgaWYgKGNvbmZpZy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMuZGlydHkuc2V0KHRydWUpO1xuICAgICAgdGhpcy50b3VjaGVkLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgaG9va3NcbiAgICB0aGlzLm9uRm9jdXMgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25CbHVyID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2xlYXIgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcblxuICAgIC8vIOKUgOKUgCBDb21wdXRlZCDilIDilIBcblxuICAgIHRoaXMuY2hhckNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpLmxlbmd0aCk7XG5cbiAgICB0aGlzLmhhc0NvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMCk7XG5cbiAgICB0aGlzLmlzQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb2N1c2VkKCkgfHwgdGhpcy5oYXNDb250ZW50KCkpO1xuXG4gICAgdGhpcy5pc092ZXJMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBtYXggPSB0aGlzLm1heExlbmd0aCgpO1xuICAgICAgcmV0dXJuIG1heCAhPSBudWxsID8gdGhpcy52YWx1ZSgpLmxlbmd0aCA+IG1heCA6IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc1VuZGVyTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbWluID0gdGhpcy5taW5MZW5ndGgoKTtcbiAgICAgIHJldHVybiBtaW4gIT0gbnVsbCAmJiB0aGlzLnRvdWNoZWQoKSA/IHRoaXMudmFsdWUoKS5sZW5ndGggPCBtaW4gOiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnZXJyb3InKTtcbiAgICB0aGlzLmhhc1N1Y2Nlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnc3VjY2VzcycpO1xuICAgIHRoaXMuaGFzV2FybmluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdHVzKCkgPT09ICd3YXJuaW5nJyk7XG4gICAgdGhpcy5pc0ludmFsaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhhc0Vycm9yKCkgfHwgdGhpcy5pc092ZXJMZW5ndGgoKSB8fCB0aGlzLmlzVW5kZXJMZW5ndGgoKSk7XG5cbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5oYXNDb250ZW50KCkgJiYgIXRoaXMuZm9jdXNlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zaG91bGRGbG9hdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZsb2F0aW5nTGFiZWwoKSkgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKSB8fCB0aGlzLmhhc0NvbnRlbnQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVhZGluZ0FkZG9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWRkb25zKCkuZmlsdGVyKChhKSA9PiBhLnBvc2l0aW9uID09PSAnbGVhZGluZycpKTtcblxuICAgIHRoaXMudHJhaWxpbmdBZGRvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFkZG9ucygpLmZpbHRlcigoYSkgPT4gYS5wb3NpdGlvbiA9PT0gJ3RyYWlsaW5nJykpO1xuXG4gICAgdGhpcy5oYXNMZWFkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sZWFkaW5nQWRkb25zKCkubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5oYXNUcmFpbGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhaWxpbmdBZGRvbnMoKS5sZW5ndGggPiAwKTtcblxuICAgIHRoaXMuaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJsZSgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBWYWx1ZSBPcGVyYXRpb25zIOKUgOKUgFxuXG4gIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5kaXJ0eS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSgpKHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMub25DbGVhcigpKCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlKCk7XG4gIH1cblxuICAvLyDilIDilIAgRm9jdXMgT3BlcmF0aW9ucyDilIDilIBcblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQuc2V0KHRydWUpO1xuICAgIHRoaXMub25Gb2N1cygpKCk7XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMudG91Y2hlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih0aGlzLnZhbHVlKCkpO1xuICAgIHRoaXMub25CbHVyKCkoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQYXNzd29yZCDilIDilIBcblxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5wYXNzd29yZFZpc2libGUudXBkYXRlKCh2KSA9PiAhdik7XG4gIH1cblxuICAvLyDilIDilIAgTG9hZGluZyDilIDilIBcblxuICBzaG93TG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICB9XG5cbiAgaGlkZUxvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvLyDilIDilIAgQWRkLW9ucyDilIDilIBcblxuICBhZGRBZGRvbihhZGRvbjogSW5wdXRHcm91cEFkZG9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRvbnMudXBkYXRlKChsaXN0KSA9PiBbLi4ubGlzdCwgYWRkb25dKTtcbiAgfVxuXG4gIHJlbW92ZUFkZG9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFkZG9ucy51cGRhdGUoKGxpc3QpID0+IGxpc3QuZmlsdGVyKChhKSA9PiBhLmlkICE9PSBpZCkpO1xuICB9XG5cbiAgLy8g4pSA4pSAIFZhbGlkYXRpb24g4pSA4pSAXG5cbiAgc2V0U3RhdHVzKHN0YXR1czogVmFsaWRhdGlvblN0YXR1cywgbWVzc2FnZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5tZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHN0YXR1cywgbWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIF9ydW5WYWxpZGF0aW9uKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLl9jb25maWcudmFsaWRhdG9yO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICB0aGlzLnN0YXR1cy5zZXQocmVzdWx0LnN0YXR1cyk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc2V0KHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkocmVzdWx0LnN0YXR1cywgcmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEJ1aWx0LWluIHZhbGlkYXRpb25zXG4gICAgaWYgKHRoaXMucmVxdWlyZWQoKSAmJiAhdmFsdWUpIHtcbiAgICAgIHRoaXMuc3RhdHVzLnNldCgnZXJyb3InKTtcbiAgICAgIHRoaXMubWVzc2FnZS5zZXQoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkoJ2Vycm9yJywgJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc092ZXJMZW5ndGgoKSkge1xuICAgICAgdGhpcy5zdGF0dXMuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5tZXNzYWdlLnNldChgTWF4aW11bSAke3RoaXMubWF4TGVuZ3RoKCl9IGNoYXJhY3RlcnNgKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkoJ2Vycm9yJywgYE1heGltdW0gJHt0aGlzLm1heExlbmd0aCgpfSBjaGFyYWN0ZXJzYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVbmRlckxlbmd0aCgpKSB7XG4gICAgICB0aGlzLnN0YXR1cy5zZXQoJ2Vycm9yJyk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc2V0KGBNaW5pbXVtICR7dGhpcy5taW5MZW5ndGgoKX0gY2hhcmFjdGVyc2ApO1xuICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKSgnZXJyb3InLCBgTWluaW11bSAke3RoaXMubWluTGVuZ3RoKCl9IGNoYXJhY3RlcnNgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXR1cy5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLm1lc3NhZ2Uuc2V0KCcnKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKCdub25lJywgJycpO1xuXG4gICAgLy8gQXN5bmMgdmFsaWRhdGlvblxuICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yID0gdGhpcy5fY29uZmlnLmFzeW5jVmFsaWRhdG9yO1xuICAgIGlmIChhc3luY1ZhbGlkYXRvciAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX2FzeW5jVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLl9hc3luY1RpbWVyKTtcbiAgICAgIHRoaXMuc3RhdHVzLnNldCgncGVuZGluZycpO1xuICAgICAgdGhpcy5tZXNzYWdlLnNldCgnJyk7XG4gICAgICB0aGlzLl9hc3luY1RpbWVyID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFzeW5jVmFsaWRhdG9yKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUoKSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cy5zZXQocmVzdWx0KTtcbiAgICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHJlc3VsdCwgJycpO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzLl9jb25maWcuYXN5bmNEZWJvdW5jZSA/PyAzMDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBSZXNldCDilIDilIBcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLl9jb25maWcuaW5pdGlhbFZhbHVlID8/ICcnKTtcbiAgICB0aGlzLmZvY3VzZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnRvdWNoZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmRpcnR5LnNldChmYWxzZSk7XG4gICAgdGhpcy5zdGF0dXMuc2V0KCdub25lJyk7XG4gICAgdGhpcy5tZXNzYWdlLnNldCgnJyk7XG4gICAgdGhpcy5wYXNzd29yZFZpc2libGUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBFbmFibGUvRGlzYWJsZSDilIDilIBcblxuICBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldCh0cnVlKTtcbiAgfVxufVxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAtZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLWVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUF1Qm5GOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUE2RDNCLFlBQVksU0FBaUMsRUFBRTtRQTFEdEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFdBQU0sR0FBRyxNQUFNLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBUXZDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGNBQVMs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QWM7SUFFZCxLQUFLO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELHVCQUF1QjtJQUV2QixNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsLCB0eXBlIFdyaXRhYmxlU2lnbmFsLCB0eXBlIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBJbnB1dEdyb3VwQ29uZmlnLFxuICBJbnB1dEdyb3VwQWRkb24sXG4gIElucHV0R3JvdXBJbnB1dFR5cGUsXG4gIElucHV0R3JvdXBWYXJpYW50LFxuICBJbnB1dEdyb3VwU2l6ZSxcbiAgSW5wdXRHcm91cFJhZGl1cyxcbiAgSW5wdXRHcm91cERlbnNpdHksXG4gIFZhbGlkYXRpb25TdGF0dXMsXG59IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEdyb3VwRW5naW5lQ29uZmlnIGV4dGVuZHMgSW5wdXRHcm91cENvbmZpZyB7XG4gIC8qKiBJbml0aWFsIHZhbHVlLiAqL1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG4gIC8qKiBBc3luYyB2YWxpZGF0b3IgZnVuY3Rpb24uICovXG4gIGFzeW5jVmFsaWRhdG9yPzogKHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8VmFsaWRhdGlvblN0YXR1cz47XG4gIC8qKiBTeW5jIHZhbGlkYXRvciBmdW5jdGlvbi4gKi9cbiAgdmFsaWRhdG9yPzogKHZhbHVlOiBzdHJpbmcpID0+IHsgc3RhdHVzOiBWYWxpZGF0aW9uU3RhdHVzOyBtZXNzYWdlOiBzdHJpbmcgfTtcbiAgLyoqIERlYm91bmNlIGZvciBhc3luYyB2YWxpZGF0aW9uIGluIG1zLiAqL1xuICBhc3luY0RlYm91bmNlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIElucHV0R3JvdXBFbmdpbmUg4oCUIGhlYWRsZXNzLCBzaWduYWwtYmFzZWQgc3RhdGUgbWFjaGluZSBmb3IgaW5wdXQgZ3JvdXAgYmVoYXZpb3VyLlxuICogWmVybyBET00sIHplcm8gQW5ndWxhciB0ZW1wbGF0ZSBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnB1dEdyb3VwRW5naW5lIHtcbiAgLy8g4pSA4pSAIENvcmUgU3RhdGUg4pSA4pSAXG4gIHJlYWRvbmx5IHZhbHVlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBmb2N1c2VkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaG92ZXJlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRvdWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBkaXJ0eSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHN0YXR1cyA9IHNpZ25hbDxWYWxpZGF0aW9uU3RhdHVzPignbm9uZScpO1xuICByZWFkb25seSBtZXNzYWdlID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZWFkb25seSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHBhc3N3b3JkVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBhZGRvbnMgPSBzaWduYWw8SW5wdXRHcm91cEFkZG9uW10+KFtdKTtcblxuICAvLyDilIDilIAgQ29uZmlnIOKUgOKUgFxuICByZWFkb25seSB0eXBlOiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwSW5wdXRUeXBlPjtcbiAgcmVhZG9ubHkgdmFyaWFudDogV3JpdGFibGVTaWduYWw8SW5wdXRHcm91cFZhcmlhbnQ+O1xuICByZWFkb25seSBzaXplOiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwU2l6ZT47XG4gIHJlYWRvbmx5IHJhZGl1czogV3JpdGFibGVTaWduYWw8SW5wdXRHcm91cFJhZGl1cz47XG4gIHJlYWRvbmx5IGRlbnNpdHk6IFdyaXRhYmxlU2lnbmFsPElucHV0R3JvdXBEZW5zaXR5PjtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBsYWJlbCA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IGhpbnQgPSBzaWduYWwoJycpO1xuICByZWFkb25seSByZXF1aXJlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1heExlbmd0aCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1pbkxlbmd0aCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNob3dDbGVhciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3dDb3VudGVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZnVsbFdpZHRoID0gc2lnbmFsKHRydWUpO1xuICByZWFkb25seSBmbG9hdGluZ0xhYmVsID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyDilIDilIAgQ29tcHV0ZWQg4pSA4pSAXG4gIHJlYWRvbmx5IGNoYXJDb3VudDogU2lnbmFsPG51bWJlcj47XG4gIHJlYWRvbmx5IGhhc0NvbnRlbnQ6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNPdmVyTGVuZ3RoOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGlzVW5kZXJMZW5ndGg6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaGFzRXJyb3I6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaGFzU3VjY2VzczogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNXYXJuaW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGlzSW52YWxpZDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBzaG93UGxhY2Vob2xkZXI6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgc2hvdWxkRmxvYXQ6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgbGVhZGluZ0FkZG9uczogU2lnbmFsPElucHV0R3JvdXBBZGRvbltdPjtcbiAgcmVhZG9ubHkgdHJhaWxpbmdBZGRvbnM6IFNpZ25hbDxJbnB1dEdyb3VwQWRkb25bXT47XG4gIHJlYWRvbmx5IGhhc0xlYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaGFzVHJhaWxpbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaW5wdXRUeXBlOiBTaWduYWw8SW5wdXRHcm91cElucHV0VHlwZT47XG5cbiAgLy8g4pSA4pSAIExpZmVjeWNsZSBIb29rcyDilIDilIBcbiAgcmVhZG9ubHkgb25Gb2N1czogV3JpdGFibGVTaWduYWw8KCkgPT4gdm9pZD47XG4gIHJlYWRvbmx5IG9uQmx1cjogV3JpdGFibGVTaWduYWw8KCkgPT4gdm9pZD47XG4gIHJlYWRvbmx5IG9uQ2hhbmdlOiBXcml0YWJsZVNpZ25hbDwodmFsdWU6IHN0cmluZykgPT4gdm9pZD47XG4gIHJlYWRvbmx5IG9uQ2xlYXI6IFdyaXRhYmxlU2lnbmFsPCgpID0+IHZvaWQ+O1xuICByZWFkb25seSBvblZhbGlkYXRpb25DaGFuZ2U6IFdyaXRhYmxlU2lnbmFsPChzdGF0dXM6IFZhbGlkYXRpb25TdGF0dXMsIG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZD47XG5cbiAgcHJpdmF0ZSBfY29uZmlnOiBJbnB1dEdyb3VwRW5naW5lQ29uZmlnO1xuICBwcml2YXRlIF9hc3luY1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF92YWxpZGF0aW9uR2VuZXJhdGlvbiA9IDA7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJbnB1dEdyb3VwRW5naW5lQ29uZmlnID0ge30pIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbmZpZyBzaWduYWxzXG4gICAgdGhpcy52YWx1ZSA9IHNpZ25hbChjb25maWcuaW5pdGlhbFZhbHVlID8/ICcnKTtcbiAgICB0aGlzLnR5cGUgPSBzaWduYWwoY29uZmlnLnR5cGUgPz8gJ3RleHQnKTtcbiAgICB0aGlzLnZhcmlhbnQgPSBzaWduYWwoY29uZmlnLnZhcmlhbnQgPz8gJ291dGxpbmVkJyk7XG4gICAgdGhpcy5zaXplID0gc2lnbmFsKGNvbmZpZy5zaXplID8/ICdtZCcpO1xuICAgIHRoaXMucmFkaXVzID0gc2lnbmFsKGNvbmZpZy5yYWRpdXMgPz8gJ21kJyk7XG4gICAgdGhpcy5kZW5zaXR5ID0gc2lnbmFsKGNvbmZpZy5kZW5zaXR5ID8/ICdjb21mb3J0YWJsZScpO1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5yZWFkb25seS5zZXQoY29uZmlnLnJlYWRvbmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyLnNldChjb25maWcucGxhY2Vob2xkZXIgPz8gJycpO1xuICAgIHRoaXMubGFiZWwuc2V0KGNvbmZpZy5sYWJlbCA/PyAnJyk7XG4gICAgdGhpcy5oaW50LnNldChjb25maWcuaGludCA/PyAnJyk7XG4gICAgdGhpcy5yZXF1aXJlZC5zZXQoY29uZmlnLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICB0aGlzLm1heExlbmd0aC5zZXQoY29uZmlnLm1heExlbmd0aCk7XG4gICAgdGhpcy5taW5MZW5ndGguc2V0KGNvbmZpZy5taW5MZW5ndGgpO1xuICAgIHRoaXMuc2hvd0NsZWFyLnNldChjb25maWcuc2hvd0NsZWFyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNob3dDb3VudGVyLnNldChjb25maWcuc2hvd0NvdW50ZXIgPz8gZmFsc2UpO1xuICAgIHRoaXMuZnVsbFdpZHRoLnNldChjb25maWcuZnVsbFdpZHRoID8/IHRydWUpO1xuICAgIHRoaXMuZmxvYXRpbmdMYWJlbC5zZXQoY29uZmlnLmZsb2F0aW5nTGFiZWwgPz8gZmFsc2UpO1xuXG4gICAgaWYgKGNvbmZpZy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMuZGlydHkuc2V0KHRydWUpO1xuICAgICAgdGhpcy50b3VjaGVkLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgaG9va3NcbiAgICB0aGlzLm9uRm9jdXMgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25CbHVyID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2xlYXIgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcblxuICAgIC8vIOKUgOKUgCBDb21wdXRlZCDilIDilIBcblxuICAgIHRoaXMuY2hhckNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpLmxlbmd0aCk7XG5cbiAgICB0aGlzLmhhc0NvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMCk7XG5cbiAgICB0aGlzLmlzQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb2N1c2VkKCkgfHwgdGhpcy5oYXNDb250ZW50KCkpO1xuXG4gICAgdGhpcy5pc092ZXJMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBtYXggPSB0aGlzLm1heExlbmd0aCgpO1xuICAgICAgcmV0dXJuIG1heCAhPSBudWxsID8gdGhpcy52YWx1ZSgpLmxlbmd0aCA+IG1heCA6IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc1VuZGVyTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbWluID0gdGhpcy5taW5MZW5ndGgoKTtcbiAgICAgIHJldHVybiBtaW4gIT0gbnVsbCAmJiB0aGlzLnRvdWNoZWQoKSA/IHRoaXMudmFsdWUoKS5sZW5ndGggPCBtaW4gOiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnZXJyb3InKTtcbiAgICB0aGlzLmhhc1N1Y2Nlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnc3VjY2VzcycpO1xuICAgIHRoaXMuaGFzV2FybmluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdHVzKCkgPT09ICd3YXJuaW5nJyk7XG4gICAgdGhpcy5pc0ludmFsaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhhc0Vycm9yKCkgfHwgdGhpcy5pc092ZXJMZW5ndGgoKSB8fCB0aGlzLmlzVW5kZXJMZW5ndGgoKSk7XG5cbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5oYXNDb250ZW50KCkgJiYgIXRoaXMuZm9jdXNlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zaG91bGRGbG9hdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZsb2F0aW5nTGFiZWwoKSkgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKSB8fCB0aGlzLmhhc0NvbnRlbnQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVhZGluZ0FkZG9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWRkb25zKCkuZmlsdGVyKChhKSA9PiBhLnBvc2l0aW9uID09PSAnbGVhZGluZycpKTtcblxuICAgIHRoaXMudHJhaWxpbmdBZGRvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFkZG9ucygpLmZpbHRlcigoYSkgPT4gYS5wb3NpdGlvbiA9PT0gJ3RyYWlsaW5nJykpO1xuXG4gICAgdGhpcy5oYXNMZWFkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sZWFkaW5nQWRkb25zKCkubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5oYXNUcmFpbGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhaWxpbmdBZGRvbnMoKS5sZW5ndGggPiAwKTtcblxuICAgIHRoaXMuaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJsZSgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBWYWx1ZSBPcGVyYXRpb25zIOKUgOKUgFxuXG4gIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5kaXJ0eS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSgpKHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMub25DbGVhcigpKCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlKCk7XG4gIH1cblxuICAvLyDilIDilIAgRm9jdXMgT3BlcmF0aW9ucyDilIDilIBcblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQuc2V0KHRydWUpO1xuICAgIHRoaXMub25Gb2N1cygpKCk7XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMudG91Y2hlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih0aGlzLnZhbHVlKCkpO1xuICAgIHRoaXMub25CbHVyKCkoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQYXNzd29yZCDilIDilIBcblxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5wYXNzd29yZFZpc2libGUudXBkYXRlKCh2KSA9PiAhdik7XG4gIH1cblxuICAvLyDilIDilIAgTG9hZGluZyDilIDilIBcblxuICBzaG93TG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICB9XG5cbiAgaGlkZUxvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvLyDilIDilIAgQWRkLW9ucyDilIDilIBcblxuICBhZGRBZGRvbihhZGRvbjogSW5wdXRHcm91cEFkZG9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRvbnMudXBkYXRlKChsaXN0KSA9PiBbLi4ubGlzdCwgYWRkb25dKTtcbiAgfVxuXG4gIHJlbW92ZUFkZG9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFkZG9ucy51cGRhdGUoKGxpc3QpID0+IGxpc3QuZmlsdGVyKChhKSA9PiBhLmlkICE9PSBpZCkpO1xuICB9XG5cbiAgLy8g4pSA4pSAIFZhbGlkYXRpb24g4pSA4pSAXG5cbiAgc2V0U3RhdHVzKHN0YXR1czogVmFsaWRhdGlvblN0YXR1cywgbWVzc2FnZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5tZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHN0YXR1cywgbWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckFzeW5jVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FzeW5jVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9hc3luY1RpbWVyKTtcbiAgICAgIHRoaXMuX2FzeW5jVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1blZhbGlkYXRpb24odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFyQXN5bmNUaW1lcigpO1xuICAgIGNvbnN0IGdlbiA9ICh0aGlzLl92YWxpZGF0aW9uR2VuZXJhdGlvbiArPSAxKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvciA9IHRoaXMuX2NvbmZpZy52YWxpZGF0b3I7XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICAgIHRoaXMuc3RhdHVzLnNldChyZXN1bHQuc3RhdHVzKTtcbiAgICAgIHRoaXMubWVzc2FnZS5zZXQocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKShyZXN1bHQuc3RhdHVzLCByZXN1bHQubWVzc2FnZSk7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKCkgJiYgIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdHVzKCdlcnJvcicsICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNPdmVyTGVuZ3RoKCkpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0dXMoJ2Vycm9yJywgYE1heGltdW0gJHt0aGlzLm1heExlbmd0aCgpfSBjaGFyYWN0ZXJzYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNVbmRlckxlbmd0aCgpKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdHVzKCdlcnJvcicsIGBNaW5pbXVtICR7dGhpcy5taW5MZW5ndGgoKX0gY2hhcmFjdGVyc2ApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3IgPSB0aGlzLl9jb25maWcuYXN5bmNWYWxpZGF0b3I7XG4gICAgaWYgKGFzeW5jVmFsaWRhdG9yICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLnN0YXR1cy5zZXQoJ3BlbmRpbmcnKTtcbiAgICAgIHRoaXMubWVzc2FnZS5zZXQoJycpO1xuICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKSgncGVuZGluZycsICcnKTtcbiAgICAgIHRoaXMuX2FzeW5jVGltZXIgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhc3luY1ZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICAgICAgaWYgKGdlbiAhPT0gdGhpcy5fdmFsaWRhdGlvbkdlbmVyYXRpb24gfHwgdGhpcy52YWx1ZSgpICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0YXR1cy5zZXQocmVzdWx0KTtcbiAgICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHJlc3VsdCwgJycpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBpZiAoZ2VuICE9PSB0aGlzLl92YWxpZGF0aW9uR2VuZXJhdGlvbiB8fCB0aGlzLnZhbHVlKCkgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKCdlcnJvcicsICdWYWxpZGF0aW9uIGZhaWxlZCcpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmICh0aGlzLl9hc3luY1RpbWVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hc3luY1RpbWVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMuX2NvbmZpZy5hc3luY0RlYm91bmNlID8/IDMwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICAgIHRoaXMuc2V0U3RhdHVzKCdub25lJywgJycpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBSZXNldCDilIDilIBcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0aW9uR2VuZXJhdGlvbiArPSAxO1xuICAgIHRoaXMuX2NsZWFyQXN5bmNUaW1lcigpO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuX2NvbmZpZy5pbml0aWFsVmFsdWUgPz8gJycpO1xuICAgIHRoaXMuZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMudG91Y2hlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZGlydHkuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnN0YXR1cy5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLm1lc3NhZ2Uuc2V0KCcnKTtcbiAgICB0aGlzLnBhc3N3b3JkVmlzaWJsZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0aW9uR2VuZXJhdGlvbiArPSAxO1xuICAgIHRoaXMuX2NsZWFyQXN5bmNUaW1lcigpO1xuICB9XG5cbiAgLy8g4pSA4pSAIEVuYWJsZS9EaXNhYmxlIOKUgOKUgFxuXG4gIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChmYWxzZSk7XG4gIH1cblxuICBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KHRydWUpO1xuICB9XG59XG4iXX0=
@@ -13,6 +13,7 @@ export * from '@ngxsmk/cdk/resize-observer';
13
13
  export * from '@ngxsmk/cdk/autofocus';
14
14
  export * from '@ngxsmk/cdk/cva-base';
15
15
  export * from '@ngxsmk/cdk/listbox-keyboard';
16
+ export * from '@ngxsmk/cdk/state-machine';
16
17
  export * from '@ngxsmk/cdk/scheduler';
17
18
  // Spreadsheet — selective re-exports to avoid name collisions with scheduler
18
19
  export { SpreadsheetEngine, } from '@ngxsmk/cdk/spreadsheet';
@@ -24,4 +25,4 @@ export * from '@ngxsmk/cdk/input-group';
24
25
  // axe-core (a CommonJS dependency) which would otherwise leak into every runtime
25
26
  // bundle that imports the main '@ngxsmk/cdk' barrel. Import test helpers directly
26
27
  // from the dedicated entry point instead: `import { ... } from '@ngxsmk/cdk/testing'`.
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUV0Qyw2RUFBNkU7QUFDN0UsT0FBTyxFQUNMLGlCQUFpQixHQUlsQixNQUFNLHlCQUF5QixDQUFDO0FBNEJqQyxPQUFPLEVBQ0wsVUFBVSxJQUFJLHFCQUFxQixFQUNuQyxVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsSUFBSSwwQkFBMEIsRUFDN0MsYUFBYSxFQUNiLGVBQWUsRUFDZixVQUFVLEVBQ1YsZ0JBQWdCLEdBRWpCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLGFBQWEsRUFDYixRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0seUJBQXlCLENBQUM7QUFFakMsMkRBQTJEO0FBQzNELGNBQWMseUJBQXlCLENBQUM7QUFFeEMsaUZBQWlGO0FBQ2pGLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsdUZBQXVGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAbmd4c21rL2Nka1xuICovXG5cbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2NsaWNrLW91dHNpZGUnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ZvY3VzLXRyYXAnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbGl2ZS1hbm5vdW5jZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbWVkaWEtcXVlcnknO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvc2Nyb2xsLWxvY2snO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvdmlzdWFsbHktaGlkZGVuJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9yZXNpemUtb2JzZXJ2ZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvYXV0b2ZvY3VzJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2N2YS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2xpc3Rib3gta2V5Ym9hcmQnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvc2NoZWR1bGVyJztcblxuLy8gU3ByZWFkc2hlZXQg4oCUIHNlbGVjdGl2ZSByZS1leHBvcnRzIHRvIGF2b2lkIG5hbWUgY29sbGlzaW9ucyB3aXRoIHNjaGVkdWxlclxuZXhwb3J0IHtcbiAgU3ByZWFkc2hlZXRFbmdpbmUsXG4gIHR5cGUgU3ByZWFkc2hlZXRDb25maWcsXG4gIHR5cGUgU3ByZWFkc2hlZXREZW5zaXR5LFxuICB0eXBlIFNwcmVhZHNoZWV0TGlmZWN5Y2xlSG9va3MsXG59IGZyb20gJ0BuZ3hzbWsvY2RrL3NwcmVhZHNoZWV0JztcbmV4cG9ydCB0eXBlIHtcbiAgQ2VsbCxcbiAgQ2VsbFZhbHVlLFxuICBDZWxsVHlwZSxcbiAgQ2VsbE1ldGEsXG4gIENlbGxFZGl0U3RhdGUsXG4gIENlbGxBZGRyZXNzLFxuICBDZWxsUmFuZ2UsXG4gIENvbHVtbkRlZixcbiAgQ29sdW1uU3RhdGUsXG4gIFNvcnREaXJlY3Rpb24sXG4gIENvbHVtbldpZHRoUHJlc2V0LFxuICBSb3dEZWYsXG4gIFJvd0RhdGEsXG4gIFN1bW1hcnlSb3csXG4gIFNlbGVjdGlvblN0YXRlIGFzIFNwcmVhZHNoZWV0U2VsZWN0aW9uU3RhdGUsXG4gIFNlbGVjdGlvbk1vZGUsXG4gIFNvcnRDcml0ZXJpb24sXG4gIFNvcnRTdGF0ZSxcbiAgRmlsdGVyQ3JpdGVyaW9uLFxuICBGaWx0ZXJPcGVyYXRvcixcbiAgRmlsdGVyU3RhdGUsXG4gIEZvcm11bGFOb2RlLFxuICBGb3JtdWxhUmVzdWx0LFxuICBGb3JtdWxhRGVwZW5kZW5jeSxcbiAgRm9ybXVsYUZ1bmN0aW9uLFxufSBmcm9tICdAbmd4c21rL2Nkay9zcHJlYWRzaGVldCc7XG5leHBvcnQge1xuICBQbHVnaW5Ib3N0IGFzIFNwcmVhZHNoZWV0UGx1Z2luSG9zdCxcbiAgU29ydFBsdWdpbixcbiAgRmlsdGVyUGx1Z2luLFxuICBTZWxlY3Rpb25QbHVnaW4gYXMgU3ByZWFkc2hlZXRTZWxlY3Rpb25QbHVnaW4sXG4gIEZvcm11bGFQbHVnaW4sXG4gIENsaXBib2FyZFBsdWdpbixcbiAgVW5kb1BsdWdpbixcbiAgVmFsaWRhdGlvblBsdWdpbixcbiAgdHlwZSBTcHJlYWRzaGVldFBsdWdpbixcbn0gZnJvbSAnQG5neHNtay9jZGsvc3ByZWFkc2hlZXQnO1xuZXhwb3J0IHtcbiAgY29sSW5kZXhUb0xldHRlcixcbiAgY29sTGV0dGVyVG9JbmRleCxcbiAgY2VsbFJlZixcbiAgcGFyc2VDZWxsUmVmLFxuICBub3JtYWxpemVSYW5nZSxcbiAgaXNDZWxsSW5SYW5nZSxcbiAgY2VsbHNJblJhbmdlLFxuICBmb3JtYXRDZWxsVmFsdWUsXG4gIGNyZWF0ZUVtcHR5Um93LFxuICBnZW5lcmF0ZVJvd0lkLFxuICBjbG9uZVJvdyxcbiAgcGlubmVkV2lkdGgsXG59IGZyb20gJ0BuZ3hzbWsvY2RrL3NwcmVhZHNoZWV0JztcblxuLy8gSW5wdXQgR3JvdXAg4oCUIG5vIG5hbWluZyBjb2xsaXNpb25zLCByZS1leHBvcnQgZXZlcnl0aGluZ1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvaW5wdXQtZ3JvdXAnO1xuXG4vLyBOT1RFOiAnQG5neHNtay9jZGsvdGVzdGluZycgaXMgaW50ZW50aW9uYWxseSBOT1QgcmUtZXhwb3J0ZWQgaGVyZS4gSXQgcHVsbHMgaW5cbi8vIGF4ZS1jb3JlIChhIENvbW1vbkpTIGRlcGVuZGVuY3kpIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBsZWFrIGludG8gZXZlcnkgcnVudGltZVxuLy8gYnVuZGxlIHRoYXQgaW1wb3J0cyB0aGUgbWFpbiAnQG5neHNtay9jZGsnIGJhcnJlbC4gSW1wb3J0IHRlc3QgaGVscGVycyBkaXJlY3RseVxuLy8gZnJvbSB0aGUgZGVkaWNhdGVkIGVudHJ5IHBvaW50IGluc3RlYWQ6IGBpbXBvcnQgeyAuLi4gfSBmcm9tICdAbmd4c21rL2Nkay90ZXN0aW5nJ2AuXG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsaUJBQWlCLEdBSWxCLE1BQU0seUJBQXlCLENBQUM7QUE0QmpDLE9BQU8sRUFDTCxVQUFVLElBQUkscUJBQXFCLEVBQ25DLFVBQVUsRUFDVixZQUFZLEVBQ1osZUFBZSxJQUFJLDBCQUEwQixFQUM3QyxhQUFhLEVBQ2IsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsR0FFakIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixjQUFjLEVBQ2QsYUFBYSxFQUNiLFFBQVEsRUFDUixXQUFXLEdBQ1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQywyREFBMkQ7QUFDM0QsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxpRkFBaUY7QUFDakYsaUZBQWlGO0FBQ2pGLGtGQUFrRjtBQUNsRix1RkFBdUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBuZ3hzbWsvY2RrXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvY2xpY2stb3V0c2lkZSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9mb2N1c2FibGUnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvZm9jdXMtdHJhcCc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9saXZlLWFubm91bmNlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9tZWRpYS1xdWVyeSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9zY3JvbGwtbG9jayc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay92aXN1YWxseS1oaWRkZW4nO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Jlc2l6ZS1vYnNlcnZlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9hdXRvZm9jdXMnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvY3ZhLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbGlzdGJveC1rZXlib2FyZCc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9zdGF0ZS1tYWNoaW5lJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3NjaGVkdWxlcic7XG5cbi8vIFNwcmVhZHNoZWV0IOKAlCBzZWxlY3RpdmUgcmUtZXhwb3J0cyB0byBhdm9pZCBuYW1lIGNvbGxpc2lvbnMgd2l0aCBzY2hlZHVsZXJcbmV4cG9ydCB7XG4gIFNwcmVhZHNoZWV0RW5naW5lLFxuICB0eXBlIFNwcmVhZHNoZWV0Q29uZmlnLFxuICB0eXBlIFNwcmVhZHNoZWV0RGVuc2l0eSxcbiAgdHlwZSBTcHJlYWRzaGVldExpZmVjeWNsZUhvb2tzLFxufSBmcm9tICdAbmd4c21rL2Nkay9zcHJlYWRzaGVldCc7XG5leHBvcnQgdHlwZSB7XG4gIENlbGwsXG4gIENlbGxWYWx1ZSxcbiAgQ2VsbFR5cGUsXG4gIENlbGxNZXRhLFxuICBDZWxsRWRpdFN0YXRlLFxuICBDZWxsQWRkcmVzcyxcbiAgQ2VsbFJhbmdlLFxuICBDb2x1bW5EZWYsXG4gIENvbHVtblN0YXRlLFxuICBTb3J0RGlyZWN0aW9uLFxuICBDb2x1bW5XaWR0aFByZXNldCxcbiAgUm93RGVmLFxuICBSb3dEYXRhLFxuICBTdW1tYXJ5Um93LFxuICBTZWxlY3Rpb25TdGF0ZSBhcyBTcHJlYWRzaGVldFNlbGVjdGlvblN0YXRlLFxuICBTZWxlY3Rpb25Nb2RlLFxuICBTb3J0Q3JpdGVyaW9uLFxuICBTb3J0U3RhdGUsXG4gIEZpbHRlckNyaXRlcmlvbixcbiAgRmlsdGVyT3BlcmF0b3IsXG4gIEZpbHRlclN0YXRlLFxuICBGb3JtdWxhTm9kZSxcbiAgRm9ybXVsYVJlc3VsdCxcbiAgRm9ybXVsYURlcGVuZGVuY3ksXG4gIEZvcm11bGFGdW5jdGlvbixcbn0gZnJvbSAnQG5neHNtay9jZGsvc3ByZWFkc2hlZXQnO1xuZXhwb3J0IHtcbiAgUGx1Z2luSG9zdCBhcyBTcHJlYWRzaGVldFBsdWdpbkhvc3QsXG4gIFNvcnRQbHVnaW4sXG4gIEZpbHRlclBsdWdpbixcbiAgU2VsZWN0aW9uUGx1Z2luIGFzIFNwcmVhZHNoZWV0U2VsZWN0aW9uUGx1Z2luLFxuICBGb3JtdWxhUGx1Z2luLFxuICBDbGlwYm9hcmRQbHVnaW4sXG4gIFVuZG9QbHVnaW4sXG4gIFZhbGlkYXRpb25QbHVnaW4sXG4gIHR5cGUgU3ByZWFkc2hlZXRQbHVnaW4sXG59IGZyb20gJ0BuZ3hzbWsvY2RrL3NwcmVhZHNoZWV0JztcbmV4cG9ydCB7XG4gIGNvbEluZGV4VG9MZXR0ZXIsXG4gIGNvbExldHRlclRvSW5kZXgsXG4gIGNlbGxSZWYsXG4gIHBhcnNlQ2VsbFJlZixcbiAgbm9ybWFsaXplUmFuZ2UsXG4gIGlzQ2VsbEluUmFuZ2UsXG4gIGNlbGxzSW5SYW5nZSxcbiAgZm9ybWF0Q2VsbFZhbHVlLFxuICBjcmVhdGVFbXB0eVJvdyxcbiAgZ2VuZXJhdGVSb3dJZCxcbiAgY2xvbmVSb3csXG4gIHBpbm5lZFdpZHRoLFxufSBmcm9tICdAbmd4c21rL2Nkay9zcHJlYWRzaGVldCc7XG5cbi8vIElucHV0IEdyb3VwIOKAlCBubyBuYW1pbmcgY29sbGlzaW9ucywgcmUtZXhwb3J0IGV2ZXJ5dGhpbmdcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2lucHV0LWdyb3VwJztcblxuLy8gTk9URTogJ0BuZ3hzbWsvY2RrL3Rlc3RpbmcnIGlzIGludGVudGlvbmFsbHkgTk9UIHJlLWV4cG9ydGVkIGhlcmUuIEl0IHB1bGxzIGluXG4vLyBheGUtY29yZSAoYSBDb21tb25KUyBkZXBlbmRlbmN5KSB3aGljaCB3b3VsZCBvdGhlcndpc2UgbGVhayBpbnRvIGV2ZXJ5IHJ1bnRpbWVcbi8vIGJ1bmRsZSB0aGF0IGltcG9ydHMgdGhlIG1haW4gJ0BuZ3hzbWsvY2RrJyBiYXJyZWwuIEltcG9ydCB0ZXN0IGhlbHBlcnMgZGlyZWN0bHlcbi8vIGZyb20gdGhlIGRlZGljYXRlZCBlbnRyeSBwb2ludCBpbnN0ZWFkOiBgaW1wb3J0IHsgLi4uIH0gZnJvbSAnQG5neHNtay9jZGsvdGVzdGluZydgLlxuIl19
@@ -0,0 +1,38 @@
1
+ import { signal } from '@angular/core';
2
+ /**
3
+ * Signal-backed finite state machine for mutually exclusive UI lifecycles.
4
+ * Prefer over parallel booleans. For animated overlays, use {@link createPresence}.
5
+ *
6
+ * ```ts
7
+ * const m = createMachine({
8
+ * initial: 'idle',
9
+ * states: {
10
+ * idle: { START: 'loading' },
11
+ * loading: { SUCCESS: 'success', FAIL: 'error' },
12
+ * success: { RESET: 'idle' },
13
+ * error: { RESET: 'idle' },
14
+ * },
15
+ * });
16
+ * m.send('START');
17
+ * ```
18
+ */
19
+ export function createMachine(config) {
20
+ const current = signal(config.initial);
21
+ const send = (event) => {
22
+ const from = current();
23
+ const next = config.states[from]?.[event];
24
+ if (next === undefined) {
25
+ return false;
26
+ }
27
+ current.set(next);
28
+ return true;
29
+ };
30
+ return {
31
+ state: current.asReadonly(),
32
+ send,
33
+ matches: (...states) => states.includes(current()),
34
+ can: (event) => config.states[current()]?.[event] !== undefined,
35
+ snapshot: () => current(),
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc3RhdGUtbWFjaGluZS9jcmVhdGUtbWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBb0JwRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQWlDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFRLEVBQVcsRUFBRTtRQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUMzQixJQUFJO1FBQ0osT0FBTyxFQUFFLENBQUMsR0FBRyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkQsR0FBRyxFQUFFLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTO1FBQ2xFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBUcmFuc2l0aW9uIHRhYmxlOiBmcm9tIGVhY2ggc3RhdGUsIHdoaWNoIGV2ZW50cyBsZWFkIHdoZXJlLiAqL1xuZXhwb3J0IHR5cGUgTWFjaGluZVRyYW5zaXRpb25zPFMgZXh0ZW5kcyBzdHJpbmcsIEUgZXh0ZW5kcyBzdHJpbmc+ID0gUGFydGlhbDxcbiAgUmVjb3JkPFMsIFBhcnRpYWw8UmVjb3JkPEUsIFM+Pj5cbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTWFjaGluZUNvbmZpZzxTIGV4dGVuZHMgc3RyaW5nLCBFIGV4dGVuZHMgc3RyaW5nPiB7XG4gIHJlYWRvbmx5IGluaXRpYWw6IFM7XG4gIHJlYWRvbmx5IHN0YXRlczogTWFjaGluZVRyYW5zaXRpb25zPFMsIEU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hY2hpbmU8UyBleHRlbmRzIHN0cmluZywgRSBleHRlbmRzIHN0cmluZz4ge1xuICByZWFkb25seSBzdGF0ZTogU2lnbmFsPFM+O1xuICBzZW5kKGV2ZW50OiBFKTogYm9vbGVhbjtcbiAgbWF0Y2hlcyguLi5zdGF0ZXM6IFNbXSk6IGJvb2xlYW47XG4gIGNhbihldmVudDogRSk6IGJvb2xlYW47XG4gIHNuYXBzaG90KCk6IFM7XG59XG5cbi8qKlxuICogU2lnbmFsLWJhY2tlZCBmaW5pdGUgc3RhdGUgbWFjaGluZSBmb3IgbXV0dWFsbHkgZXhjbHVzaXZlIFVJIGxpZmVjeWNsZXMuXG4gKiBQcmVmZXIgb3ZlciBwYXJhbGxlbCBib29sZWFucy4gRm9yIGFuaW1hdGVkIG92ZXJsYXlzLCB1c2Uge0BsaW5rIGNyZWF0ZVByZXNlbmNlfS5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgbSA9IGNyZWF0ZU1hY2hpbmUoe1xuICogICBpbml0aWFsOiAnaWRsZScsXG4gKiAgIHN0YXRlczoge1xuICogICAgIGlkbGU6IHsgU1RBUlQ6ICdsb2FkaW5nJyB9LFxuICogICAgIGxvYWRpbmc6IHsgU1VDQ0VTUzogJ3N1Y2Nlc3MnLCBGQUlMOiAnZXJyb3InIH0sXG4gKiAgICAgc3VjY2VzczogeyBSRVNFVDogJ2lkbGUnIH0sXG4gKiAgICAgZXJyb3I6IHsgUkVTRVQ6ICdpZGxlJyB9LFxuICogICB9LFxuICogfSk7XG4gKiBtLnNlbmQoJ1NUQVJUJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hY2hpbmU8UyBleHRlbmRzIHN0cmluZywgRSBleHRlbmRzIHN0cmluZz4oXG4gIGNvbmZpZzogQ3JlYXRlTWFjaGluZUNvbmZpZzxTLCBFPixcbik6IE1hY2hpbmU8UywgRT4ge1xuICBjb25zdCBjdXJyZW50ID0gc2lnbmFsKGNvbmZpZy5pbml0aWFsKTtcblxuICBjb25zdCBzZW5kID0gKGV2ZW50OiBFKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZnJvbSA9IGN1cnJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gY29uZmlnLnN0YXRlc1tmcm9tXT8uW2V2ZW50XTtcbiAgICBpZiAobmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGN1cnJlbnQuc2V0KG5leHQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IGN1cnJlbnQuYXNSZWFkb25seSgpLFxuICAgIHNlbmQsXG4gICAgbWF0Y2hlczogKC4uLnN0YXRlczogU1tdKSA9PiBzdGF0ZXMuaW5jbHVkZXMoY3VycmVudCgpKSxcbiAgICBjYW46IChldmVudDogRSkgPT4gY29uZmlnLnN0YXRlc1tjdXJyZW50KCldPy5bZXZlbnRdICE9PSB1bmRlZmluZWQsXG4gICAgc25hcHNob3Q6ICgpID0+IGN1cnJlbnQoKSxcbiAgfTtcbn1cblxuLyoqIFNoYXJlZCBhc3luYyBVSSBzdGF0dXMg4oCUIHByZWZlciBvdmVyIHBhcmFsbGVsIGlzTG9hZGluZy9pc0Vycm9yIGZsYWdzLiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNTdGF0dXMgPSAnaWRsZScgfCAnbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuXG4vKiogU2hhcmVkIEFJIC8gdG9vbC1ydW4gc3RhdHVzLiAqL1xuZXhwb3J0IHR5cGUgQWlSdW5TdGF0dXMgPSAncGVuZGluZycgfCAncnVubmluZycgfCAnY29tcGxldGVkJyB8ICdlcnJvcicgfCAnY2FuY2VsbGVkJztcbiJdfQ==
@@ -0,0 +1,70 @@
1
+ import { computed } from '@angular/core';
2
+ import { createMachine } from './create-machine';
3
+ /**
4
+ * Animated presence: `closed → open → closing → closed`.
5
+ * Re-open during exit cancels the pending settle (no phantom close).
6
+ *
7
+ * ```ts
8
+ * const presence = createPresence();
9
+ * presence.open();
10
+ * await presence.close(() => playExit(el, motion));
11
+ * ```
12
+ */
13
+ export function createPresence() {
14
+ const machine = createMachine({
15
+ initial: 'closed',
16
+ states: {
17
+ closed: { OPEN: 'open' },
18
+ open: { CLOSE: 'closing', OPEN: 'open' },
19
+ closing: { OPEN: 'open', CLOSE: 'closing', CLOSED: 'closed' },
20
+ },
21
+ });
22
+ let generation = 0;
23
+ const open = () => {
24
+ generation += 1;
25
+ machine.send('OPEN');
26
+ };
27
+ const close = async (playExit) => {
28
+ if (machine.matches('closed')) {
29
+ return true;
30
+ }
31
+ if (machine.matches('closing')) {
32
+ return false;
33
+ }
34
+ if (!machine.send('CLOSE')) {
35
+ return false;
36
+ }
37
+ const gen = (generation += 1);
38
+ try {
39
+ await playExit();
40
+ }
41
+ catch {
42
+ /* animation abort */
43
+ }
44
+ if (gen !== generation) {
45
+ return false;
46
+ }
47
+ machine.send('CLOSED');
48
+ return machine.matches('closed');
49
+ };
50
+ const forceClose = () => {
51
+ generation += 1;
52
+ if (machine.matches('closed')) {
53
+ return;
54
+ }
55
+ if (machine.matches('open')) {
56
+ machine.send('CLOSE');
57
+ }
58
+ machine.send('CLOSED');
59
+ };
60
+ return {
61
+ state: machine.state,
62
+ mounted: computed(() => machine.matches('open', 'closing')),
63
+ isClosing: computed(() => machine.matches('closing')),
64
+ isOpen: computed(() => machine.matches('open')),
65
+ open,
66
+ close,
67
+ forceClose,
68
+ };
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByZXNlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3N0YXRlLW1hY2hpbmUvY3JlYXRlLXByZXNlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBcUJqRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQStCO1FBQzFELE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO1NBQzlEO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE1BQU0sSUFBSSxHQUFHLEdBQVMsRUFBRTtRQUN0QixVQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLFFBQTZCLEVBQW9CLEVBQUU7UUFDdEUsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxxQkFBcUI7UUFDdkIsQ0FBQztRQUNELElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLEdBQVMsRUFBRTtRQUM1QixVQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJO1FBQ0osS0FBSztRQUNMLFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCB0eXBlIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlTWFjaGluZSB9IGZyb20gJy4vY3JlYXRlLW1hY2hpbmUnO1xuXG5leHBvcnQgdHlwZSBQcmVzZW5jZVN0YXRlID0gJ2Nsb3NlZCcgfCAnb3BlbicgfCAnY2xvc2luZyc7XG5cbmV4cG9ydCB0eXBlIFByZXNlbmNlRXZlbnQgPSAnT1BFTicgfCAnQ0xPU0UnIHwgJ0NMT1NFRCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VuY2VDb250cm9sbGVyIHtcbiAgcmVhZG9ubHkgc3RhdGU6IFNpZ25hbDxQcmVzZW5jZVN0YXRlPjtcbiAgcmVhZG9ubHkgbW91bnRlZDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpc0Nsb3Npbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNPcGVuOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKiBPcGVucyBhbmQgY2FuY2VscyBhbnkgaW4tZmxpZ2h0IGV4aXQuICovXG4gIG9wZW4oKTogdm9pZDtcbiAgLyoqXG4gICAqIFBsYXlzIGV4aXQsIHRoZW4gc2V0dGxlcyB0byBgY2xvc2VkYCBvbmx5IGlmIHRoaXMgY2xvc2Ugd2FzIG5vdCBzdXBlcnNlZGVkLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGlzIGdlbmVyYXRpb24gc2V0dGxlZCB0byBjbG9zZWRcbiAgICovXG4gIGNsb3NlKHBsYXlFeGl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPjtcbiAgZm9yY2VDbG9zZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuaW1hdGVkIHByZXNlbmNlOiBgY2xvc2VkIOKGkiBvcGVuIOKGkiBjbG9zaW5nIOKGkiBjbG9zZWRgLlxuICogUmUtb3BlbiBkdXJpbmcgZXhpdCBjYW5jZWxzIHRoZSBwZW5kaW5nIHNldHRsZSAobm8gcGhhbnRvbSBjbG9zZSkuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHByZXNlbmNlID0gY3JlYXRlUHJlc2VuY2UoKTtcbiAqIHByZXNlbmNlLm9wZW4oKTtcbiAqIGF3YWl0IHByZXNlbmNlLmNsb3NlKCgpID0+IHBsYXlFeGl0KGVsLCBtb3Rpb24pKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJlc2VuY2UoKTogUHJlc2VuY2VDb250cm9sbGVyIHtcbiAgY29uc3QgbWFjaGluZSA9IGNyZWF0ZU1hY2hpbmU8UHJlc2VuY2VTdGF0ZSwgUHJlc2VuY2VFdmVudD4oe1xuICAgIGluaXRpYWw6ICdjbG9zZWQnLFxuICAgIHN0YXRlczoge1xuICAgICAgY2xvc2VkOiB7IE9QRU46ICdvcGVuJyB9LFxuICAgICAgb3BlbjogeyBDTE9TRTogJ2Nsb3NpbmcnLCBPUEVOOiAnb3BlbicgfSxcbiAgICAgIGNsb3Npbmc6IHsgT1BFTjogJ29wZW4nLCBDTE9TRTogJ2Nsb3NpbmcnLCBDTE9TRUQ6ICdjbG9zZWQnIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgbGV0IGdlbmVyYXRpb24gPSAwO1xuXG4gIGNvbnN0IG9wZW4gPSAoKTogdm9pZCA9PiB7XG4gICAgZ2VuZXJhdGlvbiArPSAxO1xuICAgIG1hY2hpbmUuc2VuZCgnT1BFTicpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gYXN5bmMgKHBsYXlFeGl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgaWYgKG1hY2hpbmUubWF0Y2hlcygnY2xvc2VkJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobWFjaGluZS5tYXRjaGVzKCdjbG9zaW5nJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFtYWNoaW5lLnNlbmQoJ0NMT1NFJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZ2VuID0gKGdlbmVyYXRpb24gKz0gMSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBsYXlFeGl0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBhbmltYXRpb24gYWJvcnQgKi9cbiAgICB9XG4gICAgaWYgKGdlbiAhPT0gZ2VuZXJhdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBtYWNoaW5lLnNlbmQoJ0NMT1NFRCcpO1xuICAgIHJldHVybiBtYWNoaW5lLm1hdGNoZXMoJ2Nsb3NlZCcpO1xuICB9O1xuXG4gIGNvbnN0IGZvcmNlQ2xvc2UgPSAoKTogdm9pZCA9PiB7XG4gICAgZ2VuZXJhdGlvbiArPSAxO1xuICAgIGlmIChtYWNoaW5lLm1hdGNoZXMoJ2Nsb3NlZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtYWNoaW5lLm1hdGNoZXMoJ29wZW4nKSkge1xuICAgICAgbWFjaGluZS5zZW5kKCdDTE9TRScpO1xuICAgIH1cbiAgICBtYWNoaW5lLnNlbmQoJ0NMT1NFRCcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IG1hY2hpbmUuc3RhdGUsXG4gICAgbW91bnRlZDogY29tcHV0ZWQoKCkgPT4gbWFjaGluZS5tYXRjaGVzKCdvcGVuJywgJ2Nsb3NpbmcnKSksXG4gICAgaXNDbG9zaW5nOiBjb21wdXRlZCgoKSA9PiBtYWNoaW5lLm1hdGNoZXMoJ2Nsb3NpbmcnKSksXG4gICAgaXNPcGVuOiBjb21wdXRlZCgoKSA9PiBtYWNoaW5lLm1hdGNoZXMoJ29wZW4nKSksXG4gICAgb3BlbixcbiAgICBjbG9zZSxcbiAgICBmb3JjZUNsb3NlLFxuICB9O1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { createMachine, } from './create-machine';
2
+ export { createPresence, } from './create-presence';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc3RhdGUtbWFjaGluZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxHQU1kLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLGNBQWMsR0FJZixNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgY3JlYXRlTWFjaGluZSxcbiAgdHlwZSBBaVJ1blN0YXR1cyxcbiAgdHlwZSBBc3luY1N0YXR1cyxcbiAgdHlwZSBDcmVhdGVNYWNoaW5lQ29uZmlnLFxuICB0eXBlIE1hY2hpbmUsXG4gIHR5cGUgTWFjaGluZVRyYW5zaXRpb25zLFxufSBmcm9tICcuL2NyZWF0ZS1tYWNoaW5lJztcbmV4cG9ydCB7XG4gIGNyZWF0ZVByZXNlbmNlLFxuICB0eXBlIFByZXNlbmNlQ29udHJvbGxlcixcbiAgdHlwZSBQcmVzZW5jZUV2ZW50LFxuICB0eXBlIFByZXNlbmNlU3RhdGUsXG59IGZyb20gJy4vY3JlYXRlLXByZXNlbmNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1zdGF0ZS1tYWNoaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3N0YXRlLW1hY2hpbmUvbmd4c21rLWNkay1zdGF0ZS1tYWNoaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-autofocus.mjs","sources":["../../../../packages/cdk/autofocus/autofocus.ts","../../../../packages/cdk/autofocus/ngxsmk-cdk-autofocus.ts"],"sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\n\n/**\n * Automatically focuses the host element on render.\n *\n * ```html\n * <input ngxsmkAutofocus />\n * <button [ngxsmkAutofocus]=\"shouldFocus\" [autofocusDelay]=\"150\">Confirm</button>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkAutofocus]',\n})\nexport class NgxsmkAutofocus {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngxsmkAutofocus = input(true, { transform: booleanAttribute });\n readonly autofocusDelay = input<number>(0);\n\n constructor() {\n afterNextRender(() => {\n if (this.ngxsmkAutofocus()) {\n const delay = this.autofocusDelay();\n if (delay > 0) {\n setTimeout(() => this.focusElement(), delay);\n } else {\n this.focusElement();\n }\n }\n });\n }\n\n private focusElement(): void {\n const el = this.elementRef.nativeElement;\n if (el && typeof el.focus === 'function') {\n el.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AASA;;;;;;;AAOG;MAKU,eAAe,CAAA;AAM1B,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAEhE,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,CAAC,CAAC;QAGxC,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC;gBAC9C;qBAAO;oBACL,IAAI,CAAC,YAAY,EAAE;gBACrB;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QACxC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE;YACxC,EAAE,CAAC,KAAK,EAAE;QACZ;IACF;8GAxBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;;ACpBD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngxsmk-cdk-autofocus.mjs","sources":["../../../../packages/cdk/autofocus/autofocus.ts","../../../../packages/cdk/autofocus/ngxsmk-cdk-autofocus.ts"],"sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\n\n/**\n * Automatically focuses the host element on render.\n *\n * ```html\n * <input ngxsmkAutofocus />\n * <button [ngxsmkAutofocus]=\"shouldFocus\" [autofocusDelay]=\"150\">Confirm</button>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkAutofocus]',\n})\nexport class NgxsmkAutofocus {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngxsmkAutofocus = input(true, { transform: booleanAttribute });\n readonly autofocusDelay = input<number>(0);\n\n constructor() {\n afterNextRender(() => {\n if (this.ngxsmkAutofocus()) {\n const delay = this.autofocusDelay();\n if (delay > 0) {\n setTimeout(() => this.focusElement(), delay);\n } else {\n this.focusElement();\n }\n }\n });\n }\n\n private focusElement(): void {\n const el = this.elementRef.nativeElement;\n if (el && typeof el.focus === 'function') {\n el.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AASA;;;;;;;AAOG;MAKU,eAAe,CAAA;AAM1B,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAEhE,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,CAAC,CAAC;QAGxC,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC;gBAC9C;qBAAO;oBACL,IAAI,CAAC,YAAY,EAAE;gBACrB;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QACxC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE;YACxC,EAAE,CAAC,KAAK,EAAE;QACZ;IACF;8GAxBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;;ACpBD;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-click-outside.mjs","sources":["../../../../packages/cdk/click-outside/click-outside.ts","../../../../packages/cdk/click-outside/ngxsmk-cdk-click-outside.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\n\n/**\n * Emits when a pointer press lands outside the host element.\n *\n * ```html\n * <div class=\"menu\" (ngxsmkClickOutside)=\"close()\">…</div>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkClickOutside]',\n})\nexport class NgxsmkClickOutside {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngxsmkClickOutside = output<Event>();\n\n constructor() {\n const document = inject(DOCUMENT);\n const destroyRef = inject(DestroyRef);\n\n const onPointerDown = (event: Event) => {\n const target = event.target as Node | null;\n if (target && !this.host.nativeElement.contains(target)) {\n this.ngxsmkClickOutside.emit(event);\n }\n };\n\n // Capture phase so stopped propagation inside other widgets can't\n // swallow the outside press.\n document.addEventListener('pointerdown', onPointerDown, true);\n destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;;;;AAMG;MAKU,kBAAkB,CAAA;AAK7B,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;QAE1D,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAS;AAG3C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAY,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC;AACF,QAAA,CAAC;;;QAID,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;AAC7D,QAAA,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9F;8GApBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;;;ACbD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngxsmk-cdk-click-outside.mjs","sources":["../../../../packages/cdk/click-outside/click-outside.ts","../../../../packages/cdk/click-outside/ngxsmk-cdk-click-outside.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\n\n/**\n * Emits when a pointer press lands outside the host element.\n *\n * ```html\n * <div class=\"menu\" (ngxsmkClickOutside)=\"close()\">…</div>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkClickOutside]',\n})\nexport class NgxsmkClickOutside {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngxsmkClickOutside = output<Event>();\n\n constructor() {\n const document = inject(DOCUMENT);\n const destroyRef = inject(DestroyRef);\n\n const onPointerDown = (event: Event) => {\n const target = event.target as Node | null;\n if (target && !this.host.nativeElement.contains(target)) {\n this.ngxsmkClickOutside.emit(event);\n }\n };\n\n // Capture phase so stopped propagation inside other widgets can't\n // swallow the outside press.\n document.addEventListener('pointerdown', onPointerDown, true);\n destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;;;;AAMG;MAKU,kBAAkB,CAAA;AAK7B,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;QAE1D,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAS;AAG3C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAY,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC;AACF,QAAA,CAAC;;;QAID,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;AAC7D,QAAA,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9F;8GApBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;;;ACbD;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-cva-base.mjs","sources":["../../../../packages/cdk/cva-base/cva-base.ts","../../../../packages/cdk/cva-base/ngxsmk-cdk-cva-base.ts"],"sourcesContent":["import { computed, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Abstract base providing the CVA plumbing shared by every form component:\n * `onChange` / `onTouched` storage, `formDisabled` signal, and the composite\n * `isDisabled` computed. Sub-classes implement only `inputDisabled()` (the\n * component's own `input()` signal value) and `writeValue()` (type-specific\n * coercion).\n *\n * ```ts\n * export class NgxsmkCheckbox extends CvaBase<boolean> {\n * readonly disabled = input(false, { transform: booleanAttribute });\n * protected inputDisabled() { return this.disabled(); }\n * writeValue(value: unknown) { this.checked.set(!!value); }\n * }\n * ```\n */\nexport abstract class CvaBase<T = unknown> implements ControlValueAccessor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: T) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onTouched: () => void = () => {};\n\n private readonly _formDisabled = signal(false);\n\n /** Composite disabled state: component's own input OR form-driven disable. */\n readonly isDisabled = computed(() => this.inputDisabled() || this._formDisabled());\n\n /** Return the component's own `disabled` input signal value. */\n protected abstract inputDisabled(): boolean;\n\n abstract writeValue(value: unknown): void;\n\n registerOnChange(fn: (value: T) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /** Fire the registered onChange callback. */\n protected emitChange(value: T): void {\n this._onChange(value);\n }\n\n /** Fire the registered onTouched callback. */\n protected emitTouched(): void {\n this._onTouched();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAGA;;;;;;;;;;;;;;AAcG;MACmB,OAAO,CAAA;AAA7B,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,SAAS,GAAuB,MAAK,EAAE,CAAC;;AAExC,QAAA,IAAA,CAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAExB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGrC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IA4BpF;AArBE,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;;AAGU,IAAA,UAAU,CAAC,KAAQ,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;;IAGU,WAAW,GAAA;QACnB,IAAI,CAAC,UAAU,EAAE;IACnB;AACD;;ACvDD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngxsmk-cdk-cva-base.mjs","sources":["../../../../packages/cdk/cva-base/cva-base.ts","../../../../packages/cdk/cva-base/ngxsmk-cdk-cva-base.ts"],"sourcesContent":["import { computed, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Abstract base providing the CVA plumbing shared by every form component:\n * `onChange` / `onTouched` storage, `formDisabled` signal, and the composite\n * `isDisabled` computed. Sub-classes implement only `inputDisabled()` (the\n * component's own `input()` signal value) and `writeValue()` (type-specific\n * coercion).\n *\n * ```ts\n * export class NgxsmkCheckbox extends CvaBase<boolean> {\n * readonly disabled = input(false, { transform: booleanAttribute });\n * protected inputDisabled() { return this.disabled(); }\n * writeValue(value: unknown) { this.checked.set(!!value); }\n * }\n * ```\n */\nexport abstract class CvaBase<T = unknown> implements ControlValueAccessor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: T) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onTouched: () => void = () => {};\n\n private readonly _formDisabled = signal(false);\n\n /** Composite disabled state: component's own input OR form-driven disable. */\n readonly isDisabled = computed(() => this.inputDisabled() || this._formDisabled());\n\n /** Return the component's own `disabled` input signal value. */\n protected abstract inputDisabled(): boolean;\n\n abstract writeValue(value: unknown): void;\n\n registerOnChange(fn: (value: T) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /** Fire the registered onChange callback. */\n protected emitChange(value: T): void {\n this._onChange(value);\n }\n\n /** Fire the registered onTouched callback. */\n protected emitTouched(): void {\n this._onTouched();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAGA;;;;;;;;;;;;;;AAcG;MACmB,OAAO,CAAA;AAA7B,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,SAAS,GAAuB,MAAK,EAAE,CAAC;;AAExC,QAAA,IAAA,CAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAExB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGrC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IA4BpF;AArBE,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;;AAGU,IAAA,UAAU,CAAC,KAAQ,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;;IAGU,WAAW,GAAA;QACnB,IAAI,CAAC,UAAU,EAAE;IACnB;AACD;;ACvDD;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-focusable.mjs","sources":["../../../../packages/cdk/focusable/focusable.ts","../../../../packages/cdk/focusable/ngxsmk-cdk-focusable.ts"],"sourcesContent":["/** Selector matching elements that can receive keyboard focus. */\nexport const FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(', ');\n\n/** All keyboard-focusable elements inside `container`, in DOM order. */\nexport function getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => el.offsetParent !== null || el === el.ownerDocument.activeElement,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AACO,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,wBAAwB;IACxB,4CAA4C;IAC5C,wBAAwB;IACxB,0BAA0B;IAC1B,iCAAiC;IACjC,0BAA0B;AAC3B,CAAA,CAAC,IAAI,CAAC,IAAI;AAEX;AACM,SAAU,YAAY,CAAC,SAAsB,EAAA;AACjD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAc,kBAAkB,CAAC,CAAC,CAAC,MAAM,CACnF,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,aAAa,CAC1E;AACH;;AChBA;;AAEG;;;;"}
1
+ {"version":3,"file":"ngxsmk-cdk-focusable.mjs","sources":["../../../../packages/cdk/focusable/focusable.ts","../../../../packages/cdk/focusable/ngxsmk-cdk-focusable.ts"],"sourcesContent":["/** Selector matching elements that can receive keyboard focus. */\nexport const FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(', ');\n\n/** All keyboard-focusable elements inside `container`, in DOM order. */\nexport function getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => el.offsetParent !== null || el === el.ownerDocument.activeElement,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AACO,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,wBAAwB;IACxB,4CAA4C;IAC5C,wBAAwB;IACxB,0BAA0B;IAC1B,iCAAiC;IACjC,0BAA0B;AAC3B,CAAA,CAAC,IAAI,CAAC,IAAI;AAEX;AACM,SAAU,YAAY,CAAC,SAAsB,EAAA;AACjD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAc,kBAAkB,CAAC,CAAC,CAAC,MAAM,CACnF,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,aAAa,CAC1E;AACH;;AChBA;;AAEG;;"}