@wavemaker/app-ng-runtime 11.10.0-rc.198 → 11.10.1-rc.200

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 (43) hide show
  1. package/build-task/bundles/index.umd.js +0 -1
  2. package/components/base/bundles/index.umd.js +5 -1
  3. package/components/base/esm2022/widgets/common/base/base.component.mjs +6 -1
  4. package/components/base/fesm2022/index.mjs +5 -0
  5. package/components/base/fesm2022/index.mjs.map +1 -1
  6. package/components/chart/bundles/index.umd.js +1 -1
  7. package/components/data/form/bundles/index.umd.js +4 -4
  8. package/components/data/form/esm2022/form.component.mjs +5 -5
  9. package/components/data/form/fesm2022/index.mjs +4 -4
  10. package/components/data/form/fesm2022/index.mjs.map +1 -1
  11. package/components/input/calendar/bundles/index.umd.js +1 -4
  12. package/components/input/default/bundles/index.umd.js +17 -6
  13. package/components/input/default/esm2022/base-form.component.mjs +5 -2
  14. package/components/input/default/esm2022/switch/switch.component.mjs +14 -6
  15. package/components/input/default/esm2022/switch/switch.props.mjs +2 -2
  16. package/components/input/default/fesm2022/index.mjs +18 -7
  17. package/components/input/default/fesm2022/index.mjs.map +1 -1
  18. package/components/input/default/switch/switch.component.d.ts +1 -0
  19. package/components/input/epoch/bundles/index.umd.js +14 -6
  20. package/components/input/epoch/date/date.component.d.ts +1 -0
  21. package/components/input/epoch/esm2022/date/date.component.mjs +15 -5
  22. package/components/input/epoch/fesm2022/index.mjs +14 -4
  23. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  24. package/components/navigation/menu/bundles/index.umd.js +1 -4
  25. package/core/bundles/index.umd.js +0 -17
  26. package/locales/moment-timezone/moment-timezone-with-data.js +7 -7
  27. package/npm-shrinkwrap.json +2 -2
  28. package/oAuth/bundles/index.umd.js +1 -4
  29. package/package-lock.json +2 -2
  30. package/package.json +1 -1
  31. package/runtime/base/bundles/index.umd.js +6 -5
  32. package/runtime/base/components/base-page.component.d.ts +1 -1
  33. package/runtime/base/esm2022/components/base-page.component.mjs +3 -3
  34. package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +4 -3
  35. package/runtime/base/esm2022/services/http-interceptor.services.mjs +2 -2
  36. package/runtime/base/fesm2022/index.mjs +6 -5
  37. package/runtime/base/fesm2022/index.mjs.map +1 -1
  38. package/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -2
  39. package/scripts/datatable/datatable.js +12 -0
  40. package/security/bundles/index.umd.js +1 -1
  41. package/security/esm2022/security.service.mjs +2 -2
  42. package/security/fesm2022/index.mjs +1 -1
  43. package/security/fesm2022/index.mjs.map +1 -1
@@ -57,7 +57,6 @@
57
57
  };
58
58
  const VIEW_TYPES = {
59
59
  BASIC: 'basic',
60
- AGENDA: 'agenda',
61
60
  LIST: 'list'
62
61
  };
63
62
  const BUTTON_TEXT = {
@@ -69,9 +68,7 @@
69
68
  };
70
69
  const SELECTION_MODES = {
71
70
  NONE: 'none',
72
- SINGLE: 'single',
73
- MULTIPLE: 'multiple'
74
- };
71
+ SINGLE: 'single'};
75
72
  const NEXT_DAY_THRESHOLD = {
76
73
  START: '00:00',
77
74
  END: '24:00'
@@ -240,9 +240,12 @@
240
240
  if (lodashEs.has(this.context, binddatavalue.split('.')[0]) && lodashEs.has(this.context, binddatavalue)) {
241
241
  lodashEs.set(this.context, binddatavalue, value);
242
242
  }
243
- else if (lodashEs.has(this.viewParent, binddatavalue)) {
243
+ else if (lodashEs.has(this.viewParent, binddatavalue) && this.datavaluesource.owner === "Page") {
244
244
  lodashEs.set(this.viewParent, binddatavalue, value);
245
245
  }
246
+ else if (lodashEs.has(this.viewParent?.App, binddatavalue) && this.datavaluesource.owner === "App") {
247
+ lodashEs.set(this.viewParent.App, binddatavalue, value);
248
+ }
246
249
  }
247
250
  invokeOnChange(value, $event) {
248
251
  // invoke the event callback
@@ -2484,7 +2487,7 @@
2484
2487
  ['disabled', i2.PROP_BOOLEAN],
2485
2488
  ['displayexpression', i2.PROP_STRING],
2486
2489
  ['displayfield', i2.PROP_STRING],
2487
- ['hint', i2.PROP_STRING],
2490
+ ['hint', i2.PROP_ANY],
2488
2491
  ['arialabel', i2.PROP_STRING],
2489
2492
  ['iconclass', i2.PROP_STRING],
2490
2493
  ['checkediconclass', { value: '', ...i2.PROP_STRING }],
@@ -2528,7 +2531,7 @@
2528
2531
  } if (rf & 2) {
2529
2532
  const opt_r3 = ctx.$implicit;
2530
2533
  const ctx_r4 = i0__namespace.ɵɵnextContext();
2531
- i0__namespace.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0__namespace.ɵɵpureFunction2(6, _c2$3, opt_r3.selected, ctx_r4.disabled));
2534
+ i0__namespace.ɵɵproperty("title", ctx_r4.hint ? ctx_r4.hint : opt_r3.key)("name", "wm-switch-" + opt_r3.key)("title", (ctx_r4.hint == null ? null : ctx_r4.hint[opt_r3.index - 1]) ? ctx_r4.hint[opt_r3.index - 1] : (ctx_r4.hint == null ? null : ctx_r4.hint[0]) ? ctx_r4.hint[0] : opt_r3[ctx_r4.displayfield] || opt_r3.label)("ngClass", i0__namespace.ɵɵpureFunction2(8, _c2$3, opt_r3.selected, ctx_r4.disabled));
2532
2535
  i0__namespace.ɵɵattribute("aria-pressed", opt_r3.selected ? true : false);
2533
2536
  i0__namespace.ɵɵadvance();
2534
2537
  i0__namespace.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass] && !opt_r3.selected);
@@ -2670,6 +2673,14 @@
2670
2673
  this.nativeElement.removeAttribute(key);
2671
2674
  }
2672
2675
  else {
2676
+ if (key === 'hint') {
2677
+ if (lodashEs.isUndefined(nv) || lodashEs.isNull(nv) || lodashEs.trim(nv) === '') {
2678
+ this.hint = [];
2679
+ }
2680
+ else if (!lodashEs.isArray(nv)) {
2681
+ this.hint = [nv];
2682
+ }
2683
+ }
2673
2684
  super.onPropertyChange(key, nv, ov);
2674
2685
  }
2675
2686
  }
@@ -2677,9 +2688,9 @@
2677
2688
  static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: SwitchComponent, selectors: [["", "wmSwitch", ""]], exportAs: ["wmSwitch"], features: [i0__namespace.ɵɵProvidersFeature([
2678
2689
  i2.provideAs(SwitchComponent, i2$1.NG_VALUE_ACCESSOR, true),
2679
2690
  i2.provideAsWidgetRef(SwitchComponent)
2680
- ]), i0__namespace.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2691
+ ]), i0__namespace.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "title", "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "title", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2681
2692
  i0__namespace.ɵɵelementStart(0, "div", 0);
2682
- i0__namespace.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 9, "a", 1);
2693
+ i0__namespace.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 11, "a", 1);
2683
2694
  i0__namespace.ɵɵelementEnd();
2684
2695
  i0__namespace.ɵɵtemplate(2, SwitchComponent_span_2_Template, 4, 5, "span", 2);
2685
2696
  i0__namespace.ɵɵelement(3, "input", 3);
@@ -2698,7 +2709,7 @@
2698
2709
  args: [{ selector: '[wmSwitch]', providers: [
2699
2710
  i2.provideAs(SwitchComponent, i2$1.NG_VALUE_ACCESSOR, true),
2700
2711
  i2.provideAsWidgetRef(SwitchComponent)
2701
- ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2712
+ ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [title]=\"hint?hint:opt.key\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [title]=\"hint?.[opt.index-1]?hint[opt.index-1]:(hint?.[0]?hint[0]:(opt[displayfield]||opt.label))\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2702
2713
  }], () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
2703
2714
  type: i0.Inject,
2704
2715
  args: ['EXPLICIT_CONTEXT']
@@ -37,9 +37,12 @@ export class BaseFormComponent extends StylableComponent {
37
37
  if (has(this.context, binddatavalue.split('.')[0]) && has(this.context, binddatavalue)) {
38
38
  set(this.context, binddatavalue, value);
39
39
  }
40
- else if (has(this.viewParent, binddatavalue)) {
40
+ else if (has(this.viewParent, binddatavalue) && this.datavaluesource.owner === "Page") {
41
41
  set(this.viewParent, binddatavalue, value);
42
42
  }
43
+ else if (has(this.viewParent?.App, binddatavalue) && this.datavaluesource.owner === "App") {
44
+ set(this.viewParent.App, binddatavalue, value);
45
+ }
43
46
  }
44
47
  invokeOnChange(value, $event) {
45
48
  // invoke the event callback
@@ -88,4 +91,4 @@ export class BaseFormComponent extends StylableComponent {
88
91
  }, {
89
92
  type: Optional
90
93
  }] }, { type: Promise }], null); })();
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9iYXNlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHbkMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxpQkFBaUI7SUFPN0QsWUFDYyxHQUFhLEVBQ0QsTUFBcUIsRUFDSCxlQUFvQixFQUM1RCxXQUEwQjtRQUUxQixLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFMdkMsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQU12QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLFNBQVM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsbUJBQW1CLENBQUMsS0FBSztRQUNyQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXZDLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxlQUFl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TTt1QkFBQyxZQUFZOztzQkFDbkIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtEYXRhU291cmNlfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7IElXaWRnZXRDb25maWcsIFN0eWxhYmxlQ29tcG9uZW50LCBXaWRnZXRDb25maWcgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7aGFzLCBzZXR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0e1xuXG4gICAgcHJpdmF0ZSBkYXRhdmFsO1xuICAgIHByaXZhdGUgcHJldkRhdGF2YWx1ZTtcbiAgICBwcm90ZWN0ZWQgYmluZGRhdGF2YWx1ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGF0YXZhbHVlc291cmNlOiBhbnk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbmo6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFdpZGdldENvbmZpZykgY29uZmlnOiBJV2lkZ2V0Q29uZmlnLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnksXG4gICAgICAgIGluaXRQcm9taXNlPzogUHJvbWlzZTxhbnk+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgY29uZmlnLCBleHBsaWNpdENvbnRleHQsIGluaXRQcm9taXNlKTtcbiAgICAgICAgdGhpcy5iaW5kZGF0YXZhbHVlID0gdGhpcy4kZWxlbWVudC5hdHRyKCdkYXRhdmFsdWUuYmluZCcpO1xuICAgIH1cblxuICAgIHNldCBkYXRhdmFsdWUoZGF0YXZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbCA9IGRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgdmFyaWFibGUgYm91bmQgdG8gdGhlIHdpZGdldCdzIGRhdGF2YWx1ZSBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICB1cGRhdGVCb3VuZFZhcmlhYmxlKHZhbHVlKSB7XG4gICAgICAgIGxldCBiaW5kZGF0YXZhbHVlID0gdGhpcy5iaW5kZGF0YXZhbHVlO1xuXG4gICAgICAgIC8vIHJldHVybiBpZiB0aGUgdmFyaWFibGUgYm91bmQgaXMgbm90IHN0YXRpYy5cbiAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlc291cmNlICYmIHRoaXMuZGF0YXZhbHVlc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YXZhbHVlc291cmNlICYmICF0aGlzLmRhdGF2YWx1ZXNvdXJjZS50d29XYXlCaW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGlmIHdpZGdldCBpcyBib3VuZC5cbiAgICAgICAgaWYgKCFiaW5kZGF0YXZhbHVlIHx8IGJpbmRkYXRhdmFsdWUuc3RhcnRzV2l0aCgnV2lkZ2V0cy4nKSB8fCBiaW5kZGF0YXZhbHVlLnN0YXJ0c1dpdGgoJ2l0ZW1SZWYuY3VycmVudEl0ZW1XaWRnZXRzJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJpbmRkYXRhdmFsdWUgPSBiaW5kZGF0YXZhbHVlLnJlcGxhY2UoL1xcW1xcJGlcXF0vZywgJ1swXScpO1xuXG4gICAgICAgIC8vIEluIGNhc2Ugb2YgbGlzdCB3aWRnZXQgY29udGV4dCB3aWxsIGJlIHRoZSBsaXN0SXRlbS5cbiAgICAgICAgaWYgKGhhcyh0aGlzLmNvbnRleHQsIGJpbmRkYXRhdmFsdWUuc3BsaXQoJy4nKVswXSkgJiYgaGFzKHRoaXMuY29udGV4dCwgYmluZGRhdGF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHNldCh0aGlzLmNvbnRleHQsIGJpbmRkYXRhdmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmKGhhcyh0aGlzLnZpZXdQYXJlbnQsIGJpbmRkYXRhdmFsdWUpKSB7XG4gICAgICAgICAgICBzZXQodGhpcy52aWV3UGFyZW50LCBiaW5kZGF0YXZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW52b2tlT25DaGFuZ2UodmFsdWUsICRldmVudD86IEV2ZW50KSB7XG4gICAgICAgIC8vIGludm9rZSB0aGUgZXZlbnQgY2FsbGJhY2tcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlICE9PSB0aGlzLnByZXZEYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJvdW5kVmFyaWFibGUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG9sZFZhbDogdGhpcy5wcmV2RGF0YXZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgICAgICB0aGlzLnByZXZEYXRhdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlUHJldkRhdGF2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnByZXZEYXRhdmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXRQcmV2RGF0YVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2RGF0YXZhbHVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbi8vIFtXTVMtMTg4OTJdLSBzdG9wcGluZyBldmVudCBwcm9wYWdhdGlvbiBbZm9yIEFycm93TGVmdCwgQXJyb3dVcCwgQXJyb3dSaWdodCwgQXJyb3dEb3duIGFjdGlvbnNdICB3aGVuIGZvcm0gd2lkZ2V0cyBvciBmb3JtIGlzIGluc2lkZSBsaXN0IHdpZGdldFxuICAgICAgICBsZXQgcGFyZW50RWxlbUxpc3QgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkucGFyZW50cygpO1xuICAgICAgICBpZiAocGFyZW50RWxlbUxpc3QuY2xvc2VzdCgnW3dtTGlzdF0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQua2V5ZG93bihmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IDM3IHx8ICRldmVudC5rZXlDb2RlID09PSAzOCB8fCAkZXZlbnQua2V5Q29kZSA9PT0gMzkgfHwgJGV2ZW50LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9iYXNlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFHbkMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxpQkFBaUI7SUFPN0QsWUFDYyxHQUFhLEVBQ0QsTUFBcUIsRUFDSCxlQUFvQixFQUM1RCxXQUEwQjtRQUUxQixLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFMdkMsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQU12QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLFNBQVM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsbUJBQW1CLENBQUMsS0FBSztRQUNyQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXZDLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxlQUFl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SyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDbkcsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztrSEEzRmlCLGlCQUFpQix3Q0FTdkIsWUFBWSxlQUNaLGtCQUFrQjt1RUFWWixpQkFBaUIsV0FBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBRHRDLFVBQVU7O3NCQVVGLE1BQU07dUJBQUMsWUFBWTs7c0JBQ25CLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RGF0YVNvdXJjZX0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBJV2lkZ2V0Q29uZmlnLCBTdHlsYWJsZUNvbXBvbmVudCwgV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge2hhcywgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdHtcblxuICAgIHByaXZhdGUgZGF0YXZhbDtcbiAgICBwcml2YXRlIHByZXZEYXRhdmFsdWU7XG4gICAgcHJvdGVjdGVkIGJpbmRkYXRhdmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGF2YWx1ZXNvdXJjZTogYW55O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChXaWRnZXRDb25maWcpIGNvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55LFxuICAgICAgICBpbml0UHJvbWlzZT86IFByb21pc2U8YW55PlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIGNvbmZpZywgZXhwbGljaXRDb250ZXh0LCBpbml0UHJvbWlzZSk7XG4gICAgICAgIHRoaXMuYmluZGRhdGF2YWx1ZSA9IHRoaXMuJGVsZW1lbnQuYXR0cignZGF0YXZhbHVlLmJpbmQnKTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKGRhdGF2YWx1ZSkge1xuICAgICAgICB0aGlzLmRhdGF2YWwgPSBkYXRhdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIHZhcmlhYmxlIGJvdW5kIHRvIHRoZSB3aWRnZXQncyBkYXRhdmFsdWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgdXBkYXRlQm91bmRWYXJpYWJsZSh2YWx1ZSkge1xuICAgICAgICBsZXQgYmluZGRhdGF2YWx1ZSA9IHRoaXMuYmluZGRhdGF2YWx1ZTtcblxuICAgICAgICAvLyByZXR1cm4gaWYgdGhlIHZhcmlhYmxlIGJvdW5kIGlzIG5vdCBzdGF0aWMuXG4gICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZXNvdXJjZSAmJiB0aGlzLmRhdGF2YWx1ZXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGF2YWx1ZXNvdXJjZSAmJiAhdGhpcy5kYXRhdmFsdWVzb3VyY2UudHdvV2F5QmluZGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiBpZiB3aWRnZXQgaXMgYm91bmQuXG4gICAgICAgIGlmICghYmluZGRhdGF2YWx1ZSB8fCBiaW5kZGF0YXZhbHVlLnN0YXJ0c1dpdGgoJ1dpZGdldHMuJykgfHwgYmluZGRhdGF2YWx1ZS5zdGFydHNXaXRoKCdpdGVtUmVmLmN1cnJlbnRJdGVtV2lkZ2V0cycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBiaW5kZGF0YXZhbHVlID0gYmluZGRhdGF2YWx1ZS5yZXBsYWNlKC9cXFtcXCRpXFxdL2csICdbMF0nKTtcblxuICAgICAgICAvLyBJbiBjYXNlIG9mIGxpc3Qgd2lkZ2V0IGNvbnRleHQgd2lsbCBiZSB0aGUgbGlzdEl0ZW0uXG4gICAgICAgIGlmIChoYXModGhpcy5jb250ZXh0LCBiaW5kZGF0YXZhbHVlLnNwbGl0KCcuJylbMF0pICYmIGhhcyh0aGlzLmNvbnRleHQsIGJpbmRkYXRhdmFsdWUpKSB7XG4gICAgICAgICAgICBzZXQodGhpcy5jb250ZXh0LCBiaW5kZGF0YXZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZihoYXModGhpcy52aWV3UGFyZW50LCBiaW5kZGF0YXZhbHVlKSAmJiB0aGlzLmRhdGF2YWx1ZXNvdXJjZS5vd25lciA9PT0gXCJQYWdlXCIpIHtcbiAgICAgICAgICAgIHNldCh0aGlzLnZpZXdQYXJlbnQsIGJpbmRkYXRhdmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmKGhhcyh0aGlzLnZpZXdQYXJlbnQ/LkFwcCwgYmluZGRhdGF2YWx1ZSkgJiYgdGhpcy5kYXRhdmFsdWVzb3VyY2Uub3duZXIgPT09IFwiQXBwXCIpIHtcbiAgICAgICAgICAgIHNldCh0aGlzLnZpZXdQYXJlbnQuQXBwLCBiaW5kZGF0YXZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW52b2tlT25DaGFuZ2UodmFsdWUsICRldmVudD86IEV2ZW50KSB7XG4gICAgICAgIC8vIGludm9rZSB0aGUgZXZlbnQgY2FsbGJhY2tcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlICE9PSB0aGlzLnByZXZEYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJvdW5kVmFyaWFibGUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG9sZFZhbDogdGhpcy5wcmV2RGF0YXZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgICAgICB0aGlzLnByZXZEYXRhdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlUHJldkRhdGF2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnByZXZEYXRhdmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXRQcmV2RGF0YVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2RGF0YXZhbHVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbi8vIFtXTVMtMTg4OTJdLSBzdG9wcGluZyBldmVudCBwcm9wYWdhdGlvbiBbZm9yIEFycm93TGVmdCwgQXJyb3dVcCwgQXJyb3dSaWdodCwgQXJyb3dEb3duIGFjdGlvbnNdICB3aGVuIGZvcm0gd2lkZ2V0cyBvciBmb3JtIGlzIGluc2lkZSBsaXN0IHdpZGdldFxuICAgICAgICBsZXQgcGFyZW50RWxlbUxpc3QgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkucGFyZW50cygpO1xuICAgICAgICBpZiAocGFyZW50RWxlbUxpc3QuY2xvc2VzdCgnW3dtTGlzdF0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQua2V5ZG93bihmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IDM3IHx8ICRldmVudC5rZXlDb2RlID09PSAzOCB8fCAkZXZlbnQua2V5Q29kZSA9PT0gMzkgfHwgJGV2ZW50LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -4,7 +4,7 @@ import { $appDigest, debounce, isDefined, setCSS, toBoolean } from '@wm/core';
4
4
  import { provideAs, provideAsWidgetRef, styler } from '@wm/components/base';
5
5
  import { DatasetAwareFormComponent } from '../dataset-aware-form.component';
6
6
  import { registerProps } from './switch.props';
7
- import { find, findIndex, forEach } from "lodash-es";
7
+ import { find, findIndex, forEach, isArray, isNull, isUndefined, trim } from "lodash-es";
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
10
  import * as i2 from "@wm/components/base";
@@ -36,7 +36,7 @@ function SwitchComponent_a_1_Template(rf, ctx) { if (rf & 1) {
36
36
  } if (rf & 2) {
37
37
  const opt_r3 = ctx.$implicit;
38
38
  const ctx_r4 = i0.ɵɵnextContext();
39
- i0.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0.ɵɵpureFunction2(6, _c2, opt_r3.selected, ctx_r4.disabled));
39
+ i0.ɵɵproperty("title", ctx_r4.hint ? ctx_r4.hint : opt_r3.key)("name", "wm-switch-" + opt_r3.key)("title", (ctx_r4.hint == null ? null : ctx_r4.hint[opt_r3.index - 1]) ? ctx_r4.hint[opt_r3.index - 1] : (ctx_r4.hint == null ? null : ctx_r4.hint[0]) ? ctx_r4.hint[0] : opt_r3[ctx_r4.displayfield] || opt_r3.label)("ngClass", i0.ɵɵpureFunction2(8, _c2, opt_r3.selected, ctx_r4.disabled));
40
40
  i0.ɵɵattribute("aria-pressed", opt_r3.selected ? true : false);
41
41
  i0.ɵɵadvance();
42
42
  i0.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass] && !opt_r3.selected);
@@ -178,6 +178,14 @@ export class SwitchComponent extends DatasetAwareFormComponent {
178
178
  this.nativeElement.removeAttribute(key);
179
179
  }
180
180
  else {
181
+ if (key === 'hint') {
182
+ if (isUndefined(nv) || isNull(nv) || trim(nv) === '') {
183
+ this.hint = [];
184
+ }
185
+ else if (!isArray(nv)) {
186
+ this.hint = [nv];
187
+ }
188
+ }
181
189
  super.onPropertyChange(key, nv, ov);
182
190
  }
183
191
  }
@@ -185,9 +193,9 @@ export class SwitchComponent extends DatasetAwareFormComponent {
185
193
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [["", "wmSwitch", ""]], exportAs: ["wmSwitch"], features: [i0.ɵɵProvidersFeature([
186
194
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
187
195
  provideAsWidgetRef(SwitchComponent)
188
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
196
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "title", "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "title", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
189
197
  i0.ɵɵelementStart(0, "div", 0);
190
- i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 9, "a", 1);
198
+ i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 11, "a", 1);
191
199
  i0.ɵɵelementEnd();
192
200
  i0.ɵɵtemplate(2, SwitchComponent_span_2_Template, 4, 5, "span", 2);
193
201
  i0.ɵɵelement(3, "input", 3);
@@ -206,7 +214,7 @@ export class SwitchComponent extends DatasetAwareFormComponent {
206
214
  args: [{ selector: '[wmSwitch]', providers: [
207
215
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
208
216
  provideAsWidgetRef(SwitchComponent)
209
- ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
217
+ ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [title]=\"hint?hint:opt.key\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [title]=\"hint?.[opt.index-1]?hint[opt.index-1]:(hint?.[0]?hint[0]:(opt[displayfield]||opt.label))\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
210
218
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
211
219
  type: Inject,
212
220
  args: ['EXPLICIT_CONTEXT']
@@ -214,4 +222,4 @@ export class SwitchComponent extends DatasetAwareFormComponent {
214
222
  type: Optional
215
223
  }] }], null); })();
216
224
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SwitchComponent, { className: "SwitchComponent", filePath: "switch/switch.component.ts", lineNumber: 25 }); })();
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7OztJQ0czQyx1QkFBa0s7Ozs7SUFBdkUsMkdBQWtFOzs7SUFDN0osdUJBQWtHOzs7SUFBbkMsNkVBQThCOzs7O0lBWGpHLDRCQVNDO0lBREUsMFBBQVMsMkNBQThCLEtBQUM7SUFHdkMsQUFEQSxnRUFBOEosbURBQ2hFO0lBQzlGLDBCQUE0RTtJQUNoRixpQkFBSTs7OztJQVBELEFBRkEsZ0RBQStCLHlFQUU2Qjs7SUFJdkQsY0FBa0U7SUFBbEUsbUdBQWtFO0lBQ2xFLGNBQXNDO0lBQXRDLGlFQUFzQztJQUNwQixjQUE4QztJQUE5Qyx5RUFBOEM7OztJQUc1RSwrQkFDaUY7SUFDN0UsdUJBQXNDO0lBQ3RDLGdDQUFzQjtJQUFBLFlBQWtEO0lBQzVFLEFBRDRFLGlCQUFPLEVBQzVFOzs7SUFKRCwyRkFBd0Q7SUFFdkQsY0FBOEI7SUFBOUIsNkVBQThCO0lBQ1gsZUFBa0Q7SUFBbEQseUZBQWtEOztBRFA1RSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVd4RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSx5QkFBeUI7YUFDbkQsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFhekMsWUFBWSxHQUFhLEVBQTBDLGVBQW9CO1FBQ25GLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBWi9DLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFhVCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixzRUFBc0U7WUFDdEUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDTixVQUFVLEVBQUUsQ0FBQztZQUNqQixDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRVIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUN4QyxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRUQseUdBQXlHO0lBQ2pHLGdCQUFnQjtRQUNwQixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQzlELE9BQU87UUFDWCxDQUFDO1FBRUQsMkdBQTJHO1FBQzNHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLHNGQUFzRjtJQUM5RSxtQkFBbUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFnQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFFRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELHdFQUF3RTtJQUNoRSxpQkFBaUIsQ0FBQyxhQUFjO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLEVBQ0osS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEcsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDWixJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUc7YUFDbkIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBTTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsZ0ZBQWdGO0lBQ2hGLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDNUIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN6RSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNyQyxJQUFHLElBQUksQ0FBQyxRQUFRO29CQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7YUFDSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNqQyxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELFVBQVUsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUc7UUFDekIsSUFBSSxHQUFHLEtBQUssVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztnSEFuSlEsZUFBZSwwREFjVyxrQkFBa0I7b0VBZDVDLGVBQWUsOEZBTmI7Z0JBQ1AsU0FBUyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUM7Z0JBQ25ELGtCQUFrQixDQUFDLGVBQWUsQ0FBQzthQUN0QztZQ3JCTCw4QkFBK0Y7WUFDM0YsNERBU0M7WUFLTCxpQkFBTTtZQUNOLGtFQUNpRjtZQUlqRiwyQkFBc0k7O1lBckI5RSxrRUFBc0M7WUFDdkUsY0FBaUI7WUFBakIsMENBQWlCO1lBZ0J3QixjQUFlO1lBQWYsb0NBQWU7WUFJeEUsY0FBYTtZQUF5RSxBQUFyQixBQUF0QixBQUEzQywrQkFBYSwwQkFBbUQseUJBQXFCLDBCQUFzQjs7O2lGREdyRyxlQUFlO2NBVDNCLFNBQVM7MkJBQ0ksWUFBWSxhQUVYO29CQUNQLFNBQVMsa0JBQWtCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDbkQsa0JBQWtCLGlCQUFpQjtpQkFDdEMsWUFDUyxVQUFVOztzQkFnQlEsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7O2tGQWR2RCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyRhcHBEaWdlc3QsIGRlYm91bmNlLCBpc0RlZmluZWQsIHNldENTUywgdG9Cb29sZWFufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBEYXRhU2V0SXRlbSwgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgRGF0YXNldEF3YXJlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9zd2l0Y2gucHJvcHMnO1xuaW1wb3J0IHtmaW5kLCBmaW5kSW5kZXgsIGZvckVhY2h9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtc3dpdGNoJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXN3aXRjaCcsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVN3aXRjaF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXMoU3dpdGNoQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihTd2l0Y2hDb21wb25lbnQpXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtU3dpdGNoJ1xufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIG9wdGlvbnMgPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW06IERhdGFTZXRJdGVtO1xuICAgIGljb25jbGFzcztcbiAgICBjaGVja2VkaWNvbmNsYXNzO1xuICAgIG11bHRpcGxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgYnRud2lkdGg7XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kZWJvdW5jZVNldFNlbGVjdGVkVmFsdWU6IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICB0aGlzLm11bHRpcGxlID0gdGhpcy5nZXRBdHRyKFwibXVsdGlwbGVcIikgPT09IFwidHJ1ZVwiO1xuICAgICAgICB0aGlzLmNoZWNrZWRpY29uY2xhc3MgPSB0aGlzLmdldEF0dHIoXCJjaGVja2VkaWNvbmNsYXNzXCIpO1xuXG4gICAgICAgIHRoaXMuX2RlYm91bmNlU2V0U2VsZWN0ZWRWYWx1ZSA9IGRlYm91bmNlKCh2YWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVIaWdobGlnaHRlcih2YWwpO1xuICAgICAgICAgICAgLy8gb25seSBmb3IgZGVmYXVsdCB2YWx1ZSB0cmlnZ2VyIGFwcCBkaWdlc3QgdG8gYXBwbHkgdGhlIHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjAwKTtcblxuICAgICAgICBjb25zdCBkYXRhc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhc2V0JC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTd2l0Y2hPcHRpb25zKCkpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICBjb25zdCBkYXRhdmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGF2YWx1ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlU2V0U2VsZWN0ZWRWYWx1ZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIG9uU3R5bGVDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdoZWlnaHQnKSB7XG4gICAgICAgICAgICBzZXRDU1ModGhpcy5uYXRpdmVFbGVtZW50LCAnb3ZlcmZsb3cnLCBudiA/ICdhdXRvJyA6ICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uU3R5bGVDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBzZWxlY3RlZEl0ZW0gYnkgZWl0aGVyIHVzaW5nIGNvbXBhcmVieSBmaWVsZHMgb3Igc2VsZWN0ZWQgZmxhZyBvbiBkYXRhc2V0SXRlbXMuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZFZhbHVlKCkge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMuZGF0YXZhbHVlKSB8fCBpc0RlZmluZWQodGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCB7c2VsZWN0ZWQ6IHRydWV9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBzZXQgZmlyc3QgdmFsdWUgYXMgZGVmYXVsdCBpZiBvcHRpb25zIGFyZSBhdmFpbGFibGUgZWxzZSBzZXQgLTEgaWUgbm8gc2VsZWN0aW9uXG4gICAgICAgIHRoaXMuc2VsZWN0T3B0QXRJbmRleCgwKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgdGhlIGNzcyBmb3Igc3dpdGNoIG92ZXJsYXkgZWxlbWVudC5cbiAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIGluZGV4IGZyb20gdGhlIGRhdGFzZXRJdGVtcyBhbmQgaGlnaGxpZ2h0IHRoZSBkYXRhdmFsdWUgb24gc3dpdGNoLlxuICAgIHByaXZhdGUgdXBkYXRlU3dpdGNoT3B0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5idG53aWR0aCA9ICgxMDAgLyB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgpO1xuICAgICAgICAgICAgc2V0Q1NTKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYXBwLXN3aXRjaC1vdmVybGF5JykgYXMgSFRNTEVsZW1lbnQsICd3aWR0aCcsIHRoaXMuYnRud2lkdGggKyAnJScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGVib3VuY2VTZXRTZWxlY3RlZFZhbHVlKHRydWUpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYW5pbWF0ZXMgdGhlIGhpZ2hsaWdodGVkIHNwYW4gb24gdG8gdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgIHByaXZhdGUgdXBkYXRlSGlnaGxpZ2h0ZXIoc2tpcEFuaW1hdGlvbj8pIHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCdzcGFuLmFwcC1zd2l0Y2gtb3ZlcmxheScpO1xuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSgpO1xuXG4gICAgICAgIGxldCBsZWZ0LFxuICAgICAgICAgICAgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbSA/IGZpbmRJbmRleCh0aGlzLmRhdGFzZXRJdGVtcywge2tleTogdGhpcy5zZWxlY3RlZEl0ZW0ua2V5fSkgOiAtMTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ID0gaW5kZXggKiB0aGlzLmJ0bndpZHRoO1xuICAgICAgICBpZiAoc2tpcEFuaW1hdGlvbikge1xuICAgICAgICAgICAgaGFuZGxlci5jc3MoJ2xlZnQnLCBsZWZ0ICsgJyUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhhbmRsZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCArICclJ1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdE9wdEF0SW5kZXgoJGluZGV4KSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5kYXRhc2V0SXRlbXNbJGluZGV4XTtcbiAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gb3B0LnZhbHVlO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXJlZCBvbiBzZWxlY3RlZCB0aGUgb3B0aW9uIGZyb20gdGhlIHN3aXRjaC5cbiAgICAvLyBzZXQgdGhlIGluZGV4IGFuZCBoaWdobGlnaHQgdGhlIGRlZmF1bHQgdmFsdWUuIEludm9rZSBvbmNoYW5nZSBldmVudCBoYW5kbGVyLlxuICAgIHNlbGVjdE9wdCgkZXZlbnQsICRpbmRleCwgb3B0aW9uKSB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJdGVtc1skaW5kZXhdLnNlbGVjdGVkID0gIXRoaXMuZGF0YXNldEl0ZW1zWyRpbmRleF0uc2VsZWN0ZWQ7XG4gICAgICAgICAgICBmb3JFYWNoKHRoaXMuZGF0YXNldEl0ZW1zLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoaXRlbS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGl0ZW0ua2V5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0ga2V5cztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZmluZCh0aGlzLmRhdGFzZXRJdGVtcywge3NlbGVjdGVkOiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsQnlLZXkgPSBvcHRpb24ua2V5O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWRJdGVtICYmICRpbmRleCA9PT0gZmluZEluZGV4KHRoaXMuZGF0YXNldEl0ZW1zLCB7a2V5OiB0aGlzLnNlbGVjdGVkSXRlbS5rZXl9KSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgJGluZGV4ID0gJGluZGV4ID09PSAxID8gMCA6IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5kYXRhc2V0SXRlbXNbJGluZGV4XTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGlnaGxpZ2h0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30sIHRydWUpO1xuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2Rpc2FibGVkJyAmJiAhdG9Cb29sZWFuKG52KSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IHJvbGU9XCJncm91cFwiIGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1qdXN0aWZpZWRcIiBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdCc6IG11bHRpcGxlfVwiPlxuICAgIDxhICpuZ0Zvcj1cImxldCBvcHQgb2YgZGF0YXNldEl0ZW1zOyBsZXQgJGluZGV4ID0gaW5kZXg7XCJcbiAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgIFtuYW1lXT1cIid3bS1zd2l0Y2gtJyArIG9wdC5rZXlcIlxuICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBvcHQuc2VsZWN0ZWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiXG4gICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cIm9wdC5zZWxlY3RlZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdCgkZXZlbnQsICRpbmRleCwgb3B0KVwiXG4gICAgPlxuICAgICAgICA8aSAqbmdJZj1cIm9wdC5kYXRhT2JqZWN0ICYmIG9wdC5kYXRhT2JqZWN0W2ljb25jbGFzc10gJiYgIW9wdC5zZWxlY3RlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ0NsYXNzXT1cIlsnYXBwLWljb24nLCBvcHQuZGF0YU9iamVjdFtpY29uY2xhc3NdIHx8IG9wdFsnaWNvbiddXVwiPjwvaT5cbiAgICAgICAgPGkgKm5nSWY9XCJvcHQuc2VsZWN0ZWQgJiYgY2hlY2tlZGljb25jbGFzc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ0NsYXNzXT1cIltjaGVja2VkaWNvbmNsYXNzXVwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCIgW3RleHRDb250ZW50XT1cIm9wdFtkaXNwbGF5ZmllbGRdIHx8IG9wdC5sYWJlbFwiPjwvc3Bhbj5cbiAgICA8L2E+XG48L2Rpdj5cbjxzcGFuIFt0aXRsZV09XCJzZWxlY3RlZEl0ZW0gPyBzZWxlY3RlZEl0ZW0ubGFiZWwgOiBtb2RlbEJ5S2V5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGFwcC1zd2l0Y2gtb3ZlcmxheSBzd2l0Y2gtaGFuZGxlXCIgKm5nSWY9XCIhbXVsdGlwbGVcIj5cbiAgICA8aSBbbmdDbGFzc109XCJbY2hlY2tlZGljb25jbGFzc11cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCI+e3tzZWxlY3RlZEl0ZW0gPyBzZWxlY3RlZEl0ZW0ubGFiZWwgOiBtb2RlbEJ5S2V5fX08L3NwYW4+XG48L3NwYW4+XG48aW5wdXQgW25hbWVdPVwibmFtZVwiIGNsYXNzPVwibW9kZWwtaG9sZGVyIG5nLWhpZGVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdmFsdWVdPVwibW9kZWxCeUtleVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuIl19
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7SUNLL0UsdUJBQWtLOzs7O0lBQXZFLDJHQUFrRTs7O0lBQzdKLHVCQUFrRzs7O0lBQW5DLDZFQUE4Qjs7OztJQWJqRyw0QkFXQztJQURFLDBQQUFTLDJDQUE4QixLQUFDO0lBR3ZDLEFBREEsZ0VBQThKLG1EQUNoRTtJQUM5RiwwQkFBNEU7SUFDaEYsaUJBQUk7Ozs7SUFQRCxBQURB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a0JBQWtCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDbkQsa0JBQWtCLGlCQUFpQjtpQkFDdEMsWUFDUyxVQUFVOztzQkFpQlEsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7O2tGQWZ2RCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyRhcHBEaWdlc3QsIGRlYm91bmNlLCBpc0RlZmluZWQsIHNldENTUywgdG9Cb29sZWFufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBEYXRhU2V0SXRlbSwgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgRGF0YXNldEF3YXJlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9zd2l0Y2gucHJvcHMnO1xuaW1wb3J0IHtmaW5kLCBmaW5kSW5kZXgsIGZvckVhY2gsIGlzQXJyYXksIGlzTnVsbCwgaXNVbmRlZmluZWQsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtc3dpdGNoJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXN3aXRjaCcsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVN3aXRjaF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXMoU3dpdGNoQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihTd2l0Y2hDb21wb25lbnQpXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtU3dpdGNoJ1xufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIG9wdGlvbnMgPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW06IERhdGFTZXRJdGVtO1xuICAgIGljb25jbGFzcztcbiAgICBjaGVja2VkaWNvbmNsYXNzO1xuICAgIG11bHRpcGxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgYnRud2lkdGg7XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kZWJvdW5jZVNldFNlbGVjdGVkVmFsdWU6IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGhpbnQ6YW55O1xuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5tdWx0aXBsZSA9IHRoaXMuZ2V0QXR0cihcIm11bHRpcGxlXCIpID09PSBcInRydWVcIjtcbiAgICAgICAgdGhpcy5jaGVja2VkaWNvbmNsYXNzID0gdGhpcy5nZXRBdHRyKFwiY2hlY2tlZGljb25jbGFzc1wiKTtcblxuICAgICAgICB0aGlzLl9kZWJvdW5jZVNldFNlbGVjdGVkVmFsdWUgPSBkZWJvdW5jZSgodmFsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGlnaGxpZ2h0ZXIodmFsKTtcbiAgICAgICAgICAgIC8vIG9ubHkgZm9yIGRlZmF1bHQgdmFsdWUgdHJpZ2dlciBhcHAgZGlnZXN0IHRvIGFwcGx5IHRoZSBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMCk7XG5cbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YXNldCQuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3dpdGNoT3B0aW9ucygpKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgY29uc3QgZGF0YXZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhdmFsdWUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kZWJvdW5jZVNldFNlbGVjdGVkVmFsdWUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGF2YWx1ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICB9XG5cbiAgICBvblN0eWxlQ2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnaGVpZ2h0Jykge1xuICAgICAgICAgICAgc2V0Q1NTKHRoaXMubmF0aXZlRWxlbWVudCwgJ292ZXJmbG93JywgbnYgPyAnYXV0bycgOiAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc2VsZWN0ZWRJdGVtIGJ5IGVpdGhlciB1c2luZyBjb21wYXJlYnkgZmllbGRzIG9yIHNlbGVjdGVkIGZsYWcgb24gZGF0YXNldEl0ZW1zLlxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWRWYWx1ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLmRhdGF2YWx1ZSkgfHwgaXNEZWZpbmVkKHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZmluZCh0aGlzLmRhdGFzZXRJdGVtcywge3NlbGVjdGVkOiB0cnVlfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgc2V0IGZpcnN0IHZhbHVlIGFzIGRlZmF1bHQgaWYgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGVsc2Ugc2V0IC0xIGllIG5vIHNlbGVjdGlvblxuICAgICAgICB0aGlzLnNlbGVjdE9wdEF0SW5kZXgoMCk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHRoZSBjc3MgZm9yIHN3aXRjaCBvdmVybGF5IGVsZW1lbnQuXG4gICAgLy8gc2V0IHRoZSBzZWxlY3RlZCBpbmRleCBmcm9tIHRoZSBkYXRhc2V0SXRlbXMgYW5kIGhpZ2hsaWdodCB0aGUgZGF0YXZhbHVlIG9uIHN3aXRjaC5cbiAgICBwcml2YXRlIHVwZGF0ZVN3aXRjaE9wdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuYnRud2lkdGggPSAoMTAwIC8gdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgIHNldENTUyh0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFwcC1zd2l0Y2gtb3ZlcmxheScpIGFzIEhUTUxFbGVtZW50LCAnd2lkdGgnLCB0aGlzLmJ0bndpZHRoICsgJyUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RlYm91bmNlU2V0U2VsZWN0ZWRWYWx1ZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFuaW1hdGVzIHRoZSBoaWdobGlnaHRlZCBzcGFuIG9uIHRvIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICBwcml2YXRlIHVwZGF0ZUhpZ2hsaWdodGVyKHNraXBBbmltYXRpb24/KSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnc3Bhbi5hcHAtc3dpdGNoLW92ZXJsYXknKTtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoKTtcblxuICAgICAgICBsZXQgbGVmdCxcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW0gPyBmaW5kSW5kZXgodGhpcy5kYXRhc2V0SXRlbXMsIHtrZXk6IHRoaXMuc2VsZWN0ZWRJdGVtLmtleX0pIDogLTE7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgbGVmdCA9IGluZGV4ICogdGhpcy5idG53aWR0aDtcbiAgICAgICAgaWYgKHNraXBBbmltYXRpb24pIHtcbiAgICAgICAgICAgIGhhbmRsZXIuY3NzKCdsZWZ0JywgbGVmdCArICclJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQgKyAnJSdcbiAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RPcHRBdEluZGV4KCRpbmRleCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IHRoaXMuZGF0YXNldEl0ZW1zWyRpbmRleF07XG4gICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IG9wdC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyZWQgb24gc2VsZWN0ZWQgdGhlIG9wdGlvbiBmcm9tIHRoZSBzd2l0Y2guXG4gICAgLy8gc2V0IHRoZSBpbmRleCBhbmQgaGlnaGxpZ2h0IHRoZSBkZWZhdWx0IHZhbHVlLiBJbnZva2Ugb25jaGFuZ2UgZXZlbnQgaGFuZGxlci5cbiAgICBzZWxlY3RPcHQoJGV2ZW50LCAkaW5kZXgsIG9wdGlvbikge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXNbJGluZGV4XS5zZWxlY3RlZCA9ICF0aGlzLmRhdGFzZXRJdGVtc1skaW5kZXhdLnNlbGVjdGVkO1xuICAgICAgICAgICAgZm9yRWFjaCh0aGlzLmRhdGFzZXRJdGVtcywgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGl0ZW0uc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChpdGVtLmtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZWxCeUtleSA9IGtleXM7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIHtzZWxlY3RlZDogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0gb3B0aW9uLmtleTtcbiAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkSXRlbSAmJiAkaW5kZXggPT09IGZpbmRJbmRleCh0aGlzLmRhdGFzZXRJdGVtcywge2tleTogdGhpcy5zZWxlY3RlZEl0ZW0ua2V5fSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICRpbmRleCA9ICRpbmRleCA9PT0gMSA/IDAgOiAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZGF0YXNldEl0ZW1zWyRpbmRleF07XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhpZ2hsaWdodGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgJGV2ZW50IHx8IHt9LCB0cnVlKTtcbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3Y/KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdkaXNhYmxlZCcgJiYgIXRvQm9vbGVhbihudikpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmKGtleT09PSdoaW50JylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQobnYpIHx8IGlzTnVsbChudikgfHwgdHJpbShudikgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGludD1bXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSAgaWYgKCFpc0FycmF5KG52KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpbnQ9IFtudl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IHJvbGU9XCJncm91cFwiIGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1qdXN0aWZpZWRcIiBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdCc6IG11bHRpcGxlfVwiPlxuICAgIDxhICpuZ0Zvcj1cImxldCBvcHQgb2YgZGF0YXNldEl0ZW1zOyBsZXQgJGluZGV4ID0gaW5kZXg7XCJcbiAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgIFt0aXRsZV09XCJoaW50P2hpbnQ6b3B0LmtleVwiXG4gICAgICAgW25hbWVdPVwiJ3dtLXN3aXRjaC0nICsgb3B0LmtleVwiXG4gICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgW3RpdGxlXT1cImhpbnQ/LltvcHQuaW5kZXgtMV0/aGludFtvcHQuaW5kZXgtMV06KGhpbnQ/LlswXT9oaW50WzBdOihvcHRbZGlzcGxheWZpZWxkXXx8b3B0LmxhYmVsKSlcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBvcHQuc2VsZWN0ZWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiXG4gICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cIm9wdC5zZWxlY3RlZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdCgkZXZlbnQsICRpbmRleCwgb3B0KVwiXG4gICAgPlxuICAgICAgICA8aSAqbmdJZj1cIm9wdC5kYXRhT2JqZWN0ICYmIG9wdC5kYXRhT2JqZWN0W2ljb25jbGFzc10gJiYgIW9wdC5zZWxlY3RlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ0NsYXNzXT1cIlsnYXBwLWljb24nLCBvcHQuZGF0YU9iamVjdFtpY29uY2xhc3NdIHx8IG9wdFsnaWNvbiddXVwiPjwvaT5cbiAgICAgICAgPGkgKm5nSWY9XCJvcHQuc2VsZWN0ZWQgJiYgY2hlY2tlZGljb25jbGFzc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ0NsYXNzXT1cIltjaGVja2VkaWNvbmNsYXNzXVwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCIgW3RleHRDb250ZW50XT1cIm9wdFtkaXNwbGF5ZmllbGRdIHx8IG9wdC5sYWJlbFwiPjwvc3Bhbj5cbiAgICA8L2E+XG48L2Rpdj5cbjxzcGFuIFt0aXRsZV09XCJzZWxlY3RlZEl0ZW0gPyBzZWxlY3RlZEl0ZW0ubGFiZWwgOiBtb2RlbEJ5S2V5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGFwcC1zd2l0Y2gtb3ZlcmxheSBzd2l0Y2gtaGFuZGxlXCIgKm5nSWY9XCIhbXVsdGlwbGVcIj5cbiAgICA8aSBbbmdDbGFzc109XCJbY2hlY2tlZGljb25jbGFzc11cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCI+e3tzZWxlY3RlZEl0ZW0gPyBzZWxlY3RlZEl0ZW0ubGFiZWwgOiBtb2RlbEJ5S2V5fX08L3NwYW4+XG48L3NwYW4+XG48aW5wdXQgW25hbWVdPVwibmFtZVwiIGNsYXNzPVwibW9kZWwtaG9sZGVyIG5nLWhpZGVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdmFsdWVdPVwibW9kZWxCeUtleVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuIl19
@@ -10,7 +10,7 @@ export const switchProps = new Map([
10
10
  ['disabled', PROP_BOOLEAN],
11
11
  ['displayexpression', PROP_STRING],
12
12
  ['displayfield', PROP_STRING],
13
- ['hint', PROP_STRING],
13
+ ['hint', PROP_ANY],
14
14
  ['arialabel', PROP_STRING],
15
15
  ['iconclass', PROP_STRING],
16
16
  ['checkediconclass', { value: '', ...PROP_STRING }],
@@ -25,4 +25,4 @@ export const registerProps = () => {
25
25
  registerFormWidget(FormWidgetType.SWITCH, new Map(switchProps));
26
26
  registerFormWidget(FormWidgetType.TOGGLE, new Map(switchProps));
27
27
  };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLnByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2RlZmF1bHQvc3JjL3N3aXRjaC9zd2l0Y2gucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FDOUI7SUFDSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7SUFDdEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFFBQVEsRUFBQyxDQUFDO0lBQ25ELENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO0lBQzdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUM7SUFDbEMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO0lBQzdCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNyQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDakQsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztJQUN4QixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7SUFDeEMsQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7Q0FDM0MsQ0FDSixDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osV0FBVyxFQUNYLFdBQVcsQ0FDZCxDQUFDO0lBQ0Ysa0JBQWtCLENBQ2QsY0FBYyxDQUFDLE1BQU0sRUFDckIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUM7SUFDRixrQkFBa0IsQ0FDZCxjQUFjLENBQUMsTUFBTSxFQUNyQixJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FDdkIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UFJPUF9BTlksIFBST1BfQk9PTEVBTiwgUFJPUF9OVU1CRVIsIFBST1BfU1RSSU5HLCByZWdpc3RlciwgcmVnaXN0ZXJGb3JtV2lkZ2V0fSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7Rm9ybVdpZGdldFR5cGV9IGZyb20gJ0B3bS9jb3JlJztcblxuZXhwb3J0IGNvbnN0IHN3aXRjaFByb3BzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnY29tcGFyZWJ5JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2RhdGFmaWVsZCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkYXRhc2V0Jywge3ZhbHVlOiAneWVzLCBubywgbWF5YmUnLCAuLi5QUk9QX0FOWX1dLFxuICAgICAgICBbJ2RhdGF2YWx1ZXNvdXJjZScsIFBST1BfQU5ZXSxcbiAgICAgICAgWydkYXRhdmFsdWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ2Rpc3BsYXlleHByZXNzaW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2Rpc3BsYXlmaWVsZCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydoaW50JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2FyaWFsYWJlbCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydpY29uY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnY2hlY2tlZGljb25jbGFzcycsIHt2YWx1ZTogJycsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgIFsnbmFtZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydvcmRlcmJ5JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ3JlcXVpcmVkJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgWydzaG93Jywge3ZhbHVlOiB0cnVlLCAuLi5QUk9QX0JPT0xFQU59XSxcbiAgICAgICAgWyd0YWJpbmRleCcsIHt2YWx1ZTogMCwgLi4uUFJPUF9OVU1CRVJ9XVxuICAgIF1cbik7XG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUHJvcHMgPSAoKSA9PiB7XG4gICAgcmVnaXN0ZXIoXG4gICAgICAgICd3bS1zd2l0Y2gnLFxuICAgICAgICBzd2l0Y2hQcm9wc1xuICAgICk7XG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0KFxuICAgICAgICBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0gsXG4gICAgICAgIG5ldyBNYXAoc3dpdGNoUHJvcHMpXG4gICAgKTtcbiAgICByZWdpc3RlckZvcm1XaWRnZXQoXG4gICAgICAgIEZvcm1XaWRnZXRUeXBlLlRPR0dMRSxcbiAgICAgICAgbmV3IE1hcChzd2l0Y2hQcm9wcylcbiAgICApO1xufTtcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLnByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2RlZmF1bHQvc3JjL3N3aXRjaC9zd2l0Y2gucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FDOUI7SUFDSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7SUFDdEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFFBQVEsRUFBQyxDQUFDO0lBQ25ELENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO0lBQzdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUM7SUFDbEMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO0lBQzdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztJQUNsQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDakQsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztJQUN4QixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7SUFDeEMsQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7Q0FDM0MsQ0FDSixDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osV0FBVyxFQUNYLFdBQVcsQ0FDZCxDQUFDO0lBQ0Ysa0JBQWtCLENBQ2QsY0FBYyxDQUFDLE1BQU0sRUFDckIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUM7SUFDRixrQkFBa0IsQ0FDZCxjQUFjLENBQUMsTUFBTSxFQUNyQixJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FDdkIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UFJPUF9BTlksIFBST1BfQk9PTEVBTiwgUFJPUF9OVU1CRVIsIFBST1BfU1RSSU5HLCByZWdpc3RlciwgcmVnaXN0ZXJGb3JtV2lkZ2V0fSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7Rm9ybVdpZGdldFR5cGV9IGZyb20gJ0B3bS9jb3JlJztcblxuZXhwb3J0IGNvbnN0IHN3aXRjaFByb3BzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnY29tcGFyZWJ5JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2RhdGFmaWVsZCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkYXRhc2V0Jywge3ZhbHVlOiAneWVzLCBubywgbWF5YmUnLCAuLi5QUk9QX0FOWX1dLFxuICAgICAgICBbJ2RhdGF2YWx1ZXNvdXJjZScsIFBST1BfQU5ZXSxcbiAgICAgICAgWydkYXRhdmFsdWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ2Rpc3BsYXlleHByZXNzaW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2Rpc3BsYXlmaWVsZCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydoaW50JywgUFJPUF9BTlldLFxuICAgICAgICBbJ2FyaWFsYWJlbCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydpY29uY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnY2hlY2tlZGljb25jbGFzcycsIHt2YWx1ZTogJycsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgIFsnbmFtZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydvcmRlcmJ5JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ3JlcXVpcmVkJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgWydzaG93Jywge3ZhbHVlOiB0cnVlLCAuLi5QUk9QX0JPT0xFQU59XSxcbiAgICAgICAgWyd0YWJpbmRleCcsIHt2YWx1ZTogMCwgLi4uUFJPUF9OVU1CRVJ9XVxuICAgIF1cbik7XG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUHJvcHMgPSAoKSA9PiB7XG4gICAgcmVnaXN0ZXIoXG4gICAgICAgICd3bS1zd2l0Y2gnLFxuICAgICAgICBzd2l0Y2hQcm9wc1xuICAgICk7XG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0KFxuICAgICAgICBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0gsXG4gICAgICAgIG5ldyBNYXAoc3dpdGNoUHJvcHMpXG4gICAgKTtcbiAgICByZWdpc3RlckZvcm1XaWRnZXQoXG4gICAgICAgIEZvcm1XaWRnZXRUeXBlLlRPR0dMRSxcbiAgICAgICAgbmV3IE1hcChzd2l0Y2hQcm9wcylcbiAgICApO1xufTtcbiJdfQ==
@@ -10,7 +10,7 @@ import * as i2 from '@wm/components/base';
10
10
  import { register, PROP_STRING, PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, DISPLAY_TYPE, StylableComponent, styler, provideAsWidgetRef, APPLY_STYLES_TYPE, WidgetConfig, registerFormWidget, provideAs, extractDataAsArray, ToDatePipe, ALLFIELDS, getOrderedDataset, convertDataToObject, transformDataWithKeys, transformFormData, getUniqObjsByDataField, groupData, handleHeaderClick, toggleAllHeaders, WidgetRef, INPUTMODE, TrailingZeroDecimalPipe, WmComponentsModule } from '@wm/components/base';
11
11
  import * as i1$1 from '@wm/core';
12
12
  import { DataSource, FormWidgetType, isDefined, toggleClass, AppDefaults, debounce as debounce$1, $appDigest, noop, isEqualWithFields, toBoolean, setListClass, switchClass, addForIdAttributes, addClass, AbstractI18nService, isIos, isSafari, setAttr, removeAttr, setCSS } from '@wm/core';
13
- import { has, set, debounce, isArray, find, toString, isNull, isObject, isEqual, isEmpty, forEach, includes, isString, get, isUndefined, round, intersection, toArray, findIndex } from 'lodash-es';
13
+ import { has, set, debounce, isArray, find, toString, isNull, isObject, isEqual, isEmpty, forEach, includes, isString, get, isUndefined, round, intersection, toArray, findIndex, trim } from 'lodash-es';
14
14
  import { Subject } from 'rxjs';
15
15
  import { __decorate, __param, __metadata } from 'tslib';
16
16
 
@@ -226,9 +226,12 @@ class BaseFormComponent extends StylableComponent {
226
226
  if (has(this.context, binddatavalue.split('.')[0]) && has(this.context, binddatavalue)) {
227
227
  set(this.context, binddatavalue, value);
228
228
  }
229
- else if (has(this.viewParent, binddatavalue)) {
229
+ else if (has(this.viewParent, binddatavalue) && this.datavaluesource.owner === "Page") {
230
230
  set(this.viewParent, binddatavalue, value);
231
231
  }
232
+ else if (has(this.viewParent?.App, binddatavalue) && this.datavaluesource.owner === "App") {
233
+ set(this.viewParent.App, binddatavalue, value);
234
+ }
232
235
  }
233
236
  invokeOnChange(value, $event) {
234
237
  // invoke the event callback
@@ -2470,7 +2473,7 @@ const switchProps = new Map([
2470
2473
  ['disabled', PROP_BOOLEAN],
2471
2474
  ['displayexpression', PROP_STRING],
2472
2475
  ['displayfield', PROP_STRING],
2473
- ['hint', PROP_STRING],
2476
+ ['hint', PROP_ANY],
2474
2477
  ['arialabel', PROP_STRING],
2475
2478
  ['iconclass', PROP_STRING],
2476
2479
  ['checkediconclass', { value: '', ...PROP_STRING }],
@@ -2514,7 +2517,7 @@ function SwitchComponent_a_1_Template(rf, ctx) { if (rf & 1) {
2514
2517
  } if (rf & 2) {
2515
2518
  const opt_r3 = ctx.$implicit;
2516
2519
  const ctx_r4 = i0.ɵɵnextContext();
2517
- i0.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0.ɵɵpureFunction2(6, _c2$3, opt_r3.selected, ctx_r4.disabled));
2520
+ i0.ɵɵproperty("title", ctx_r4.hint ? ctx_r4.hint : opt_r3.key)("name", "wm-switch-" + opt_r3.key)("title", (ctx_r4.hint == null ? null : ctx_r4.hint[opt_r3.index - 1]) ? ctx_r4.hint[opt_r3.index - 1] : (ctx_r4.hint == null ? null : ctx_r4.hint[0]) ? ctx_r4.hint[0] : opt_r3[ctx_r4.displayfield] || opt_r3.label)("ngClass", i0.ɵɵpureFunction2(8, _c2$3, opt_r3.selected, ctx_r4.disabled));
2518
2521
  i0.ɵɵattribute("aria-pressed", opt_r3.selected ? true : false);
2519
2522
  i0.ɵɵadvance();
2520
2523
  i0.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass] && !opt_r3.selected);
@@ -2656,6 +2659,14 @@ class SwitchComponent extends DatasetAwareFormComponent {
2656
2659
  this.nativeElement.removeAttribute(key);
2657
2660
  }
2658
2661
  else {
2662
+ if (key === 'hint') {
2663
+ if (isUndefined(nv) || isNull(nv) || trim(nv) === '') {
2664
+ this.hint = [];
2665
+ }
2666
+ else if (!isArray(nv)) {
2667
+ this.hint = [nv];
2668
+ }
2669
+ }
2659
2670
  super.onPropertyChange(key, nv, ov);
2660
2671
  }
2661
2672
  }
@@ -2663,9 +2674,9 @@ class SwitchComponent extends DatasetAwareFormComponent {
2663
2674
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [["", "wmSwitch", ""]], exportAs: ["wmSwitch"], features: [i0.ɵɵProvidersFeature([
2664
2675
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2665
2676
  provideAsWidgetRef(SwitchComponent)
2666
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2677
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "title", "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "title", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2667
2678
  i0.ɵɵelementStart(0, "div", 0);
2668
- i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 9, "a", 1);
2679
+ i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 11, "a", 1);
2669
2680
  i0.ɵɵelementEnd();
2670
2681
  i0.ɵɵtemplate(2, SwitchComponent_span_2_Template, 4, 5, "span", 2);
2671
2682
  i0.ɵɵelement(3, "input", 3);
@@ -2684,7 +2695,7 @@ class SwitchComponent extends DatasetAwareFormComponent {
2684
2695
  args: [{ selector: '[wmSwitch]', providers: [
2685
2696
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2686
2697
  provideAsWidgetRef(SwitchComponent)
2687
- ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2698
+ ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [title]=\"hint?hint:opt.key\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [title]=\"hint?.[opt.index-1]?hint[opt.index-1]:(hint?.[0]?hint[0]:(opt[displayfield]||opt.label))\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected && checkediconclass\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2688
2699
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2689
2700
  type: Inject,
2690
2701
  args: ['EXPLICIT_CONTEXT']