igniteui-angular 17.2.5 → 17.2.7

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 (61) hide show
  1. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +9 -1
  2. package/esm2022/lib/core/density.mjs +2 -1
  3. package/esm2022/lib/directives/for-of/for_of.directive.mjs +13 -2
  4. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -1
  5. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -2
  6. package/esm2022/lib/grids/common/events.mjs +1 -1
  7. package/esm2022/lib/grids/common/grid.interface.mjs +1 -1
  8. package/esm2022/lib/grids/common/strategy.mjs +2 -2
  9. package/esm2022/lib/grids/common/types.mjs +1 -1
  10. package/esm2022/lib/grids/grid-base.directive.mjs +45 -45
  11. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +2 -2
  12. package/esm2022/lib/grids/selection/selection.service.mjs +12 -16
  13. package/esm2022/lib/simple-combo/simple-combo.component.mjs +7 -6
  14. package/esm2022/lib/slider/slider.component.mjs +10 -8
  15. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +6 -2
  16. package/fesm2022/igniteui-angular.mjs +104 -75
  17. package/fesm2022/igniteui-angular.mjs.map +1 -1
  18. package/lib/core/density.d.ts +1 -0
  19. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +24 -12
  20. package/lib/core/styles/components/button/_button-theme.scss +9 -3
  21. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +20 -0
  22. package/lib/core/styles/components/overlay/_overlay-theme.scss +6 -0
  23. package/lib/directives/for-of/for_of.directive.d.ts +5 -0
  24. package/lib/grids/common/events.d.ts +30 -30
  25. package/lib/grids/common/grid.interface.d.ts +48 -48
  26. package/lib/grids/common/strategy.d.ts +1 -1
  27. package/lib/grids/common/types.d.ts +2 -2
  28. package/lib/grids/grid-base.directive.d.ts +2 -1
  29. package/lib/slider/slider.component.d.ts +1 -1
  30. package/lib/slider/thumb/thumb-slider.component.d.ts +2 -1
  31. package/migrations/migration-collection.json +5 -0
  32. package/migrations/update-17_2_6/changes/theme-changes.json +11 -0
  33. package/migrations/update-17_2_6/index.d.ts +3 -0
  34. package/migrations/update-17_2_6/index.js +31 -0
  35. package/package.json +1 -1
  36. package/styles/igniteui-angular-dark.css +1 -1
  37. package/styles/igniteui-angular.css +1 -1
  38. package/styles/igniteui-bootstrap-dark.css +1 -1
  39. package/styles/igniteui-bootstrap-light.css +1 -1
  40. package/styles/igniteui-dark-green.css +1 -1
  41. package/styles/igniteui-fluent-dark-excel.css +1 -1
  42. package/styles/igniteui-fluent-dark-word.css +1 -1
  43. package/styles/igniteui-fluent-dark.css +1 -1
  44. package/styles/igniteui-fluent-light-excel.css +1 -1
  45. package/styles/igniteui-fluent-light-word.css +1 -1
  46. package/styles/igniteui-fluent-light.css +1 -1
  47. package/styles/igniteui-indigo-dark.css +1 -1
  48. package/styles/igniteui-indigo-light.css +1 -1
  49. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  50. package/styles/maps/igniteui-angular.css.map +1 -1
  51. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  52. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  53. package/styles/maps/igniteui-dark-green.css.map +1 -1
  54. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  55. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  56. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  57. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  59. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  60. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  61. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -55,6 +55,7 @@ export class IgxSliderThumbComponent {
55
55
  this._dir = _dir;
56
56
  this.thumbValueChange = new EventEmitter();
57
57
  this.thumbChange = new EventEmitter();
58
+ this.thumbBlur = new EventEmitter();
58
59
  this.hoverChange = new EventEmitter();
59
60
  this.tabindex = 0;
60
61
  this.zIndex = 0;
@@ -97,6 +98,7 @@ export class IgxSliderThumbComponent {
97
98
  this.isActive = false;
98
99
  this.zIndex = 0;
99
100
  this.focused = false;
101
+ this.thumbBlur.emit();
100
102
  }
101
103
  onFocusListener() {
102
104
  this.isActive = true;
@@ -159,7 +161,7 @@ export class IgxSliderThumbComponent {
159
161
  }
160
162
  }
161
163
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderThumbComponent, deps: [{ token: i0.ElementRef }, { token: i1.IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderThumbComponent, isStandalone: true, selector: "igx-thumb", inputs: { value: "value", continuous: ["continuous", "continuous", booleanAttribute], thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", disabled: ["disabled", "disabled", booleanAttribute], onPan: "onPan", stepDistance: "stepDistance", step: "step", templateRef: "templateRef", context: "context", type: "type", deactiveState: ["deactiveState", "deactiveState", booleanAttribute] }, outputs: { thumbValueChange: "thumbValueChange", thumbChange: "thumbChange", hoverChange: "hoverChange" }, host: { listeners: { "pointerenter": "onPointerEnter()", "pointerleave": "onPointerLeave()", "keyup": "onKeyUp($event)", "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocusListener()" }, properties: { "attr.tabindex": "this.tabindex", "attr.z-index": "this.zIndex", "class.igx-slider-thumb-to--focused": "this.focused", "class.igx-slider-thumb-from": "this.thumbFromClass", "class.igx-slider-thumb-to": "this.thumbToClass", "class.igx-slider-thumb-from--active": "this.thumbFromActiveClass", "class.igx-slider-thumb-to--active": "this.thumbToActiveClass", "class.igx-slider-thumb-from--disabled": "this.thumbFromDisabledClass", "class.igx-slider-thumb-to--disabled": "this.thumbToDisabledClass", "class.igx-slider-thumb-from--pressed": "this.thumbFromPressedClass", "class.igx-slider-thumb-to--pressed": "this.thumbToPressedClass" } }, ngImport: i0, template: "<div [ngClass]=\"getDotClass\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderThumbComponent, isStandalone: true, selector: "igx-thumb", inputs: { value: "value", continuous: ["continuous", "continuous", booleanAttribute], thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", disabled: ["disabled", "disabled", booleanAttribute], onPan: "onPan", stepDistance: "stepDistance", step: "step", templateRef: "templateRef", context: "context", type: "type", deactiveState: ["deactiveState", "deactiveState", booleanAttribute] }, outputs: { thumbValueChange: "thumbValueChange", thumbChange: "thumbChange", thumbBlur: "thumbBlur", hoverChange: "hoverChange" }, host: { listeners: { "pointerenter": "onPointerEnter()", "pointerleave": "onPointerLeave()", "keyup": "onKeyUp($event)", "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocusListener()" }, properties: { "attr.tabindex": "this.tabindex", "attr.z-index": "this.zIndex", "class.igx-slider-thumb-to--focused": "this.focused", "class.igx-slider-thumb-from": "this.thumbFromClass", "class.igx-slider-thumb-to": "this.thumbToClass", "class.igx-slider-thumb-from--active": "this.thumbFromActiveClass", "class.igx-slider-thumb-to--active": "this.thumbToActiveClass", "class.igx-slider-thumb-from--disabled": "this.thumbFromDisabledClass", "class.igx-slider-thumb-to--disabled": "this.thumbToDisabledClass", "class.igx-slider-thumb-from--pressed": "this.thumbFromPressedClass", "class.igx-slider-thumb-to--pressed": "this.thumbToPressedClass" } }, ngImport: i0, template: "<div [ngClass]=\"getDotClass\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
163
165
  }
164
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderThumbComponent, decorators: [{
165
167
  type: Component,
@@ -193,6 +195,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
193
195
  type: Output
194
196
  }], thumbChange: [{
195
197
  type: Output
198
+ }], thumbBlur: [{
199
+ type: Output
196
200
  }], hoverChange: [{
197
201
  type: Output
198
202
  }], tabindex: [{
@@ -247,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
247
251
  type: HostListener,
248
252
  args: ['focus']
249
253
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bWItc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zbGlkZXIvdGh1bWIvdGh1bWItc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zbGlkZXIvdGh1bWIvdGh1bWItc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixXQUFXLEVBQ1gsTUFBTSxFQUNOLFlBQVksRUFJWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRTFDOztHQUVHO0FBT0gsTUFBTSxPQUFPLHVCQUF1QjtJQW9EaEMsSUFDVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUNXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQ1csb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQ1csa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQ1csc0JBQXNCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQ1csb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQ1cscUJBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFDVyxtQkFBbUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzdFLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTztZQUNILDRCQUE0QixFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUk7WUFDN0QsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsRUFBRTtTQUM1RCxDQUFDO0lBQ04sQ0FBQztJQUlELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQU1ELElBQVksY0FBYztRQUN0QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkUsT0FBTyxlQUFlLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBb0IsV0FBdUIsRUFBVSxJQUF1QjtRQUF4RCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBcEZyRSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRzlDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUd0QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHMUMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUdiLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFHWCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBaURoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVWhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQVFxQyxDQUFDO0lBRzFFLGNBQWM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdNLGNBQWM7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUdNLE9BQU8sQ0FBQyxLQUFvQjtRQUMvQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUdNLFNBQVMsQ0FBQyxLQUFvQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2RSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVCLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNILE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR00sTUFBTTtRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFHTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLENBQUMsS0FBSzthQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQ2hDLENBQUM7SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDdEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQjtRQUN0QixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFakQscUVBQXFFO1FBQ3JFLCtCQUErQjtRQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksY0FBYyxHQUFHLGtCQUFrQixFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBZ0I7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDMUI7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQzVCO0lBRUwsQ0FBQzs4R0E5T1EsdUJBQXVCO2tHQUF2Qix1QkFBdUIsZ0hBSVosZ0JBQWdCLG9HQU1oQixnQkFBZ0IsK0tBcUJoQixnQkFBZ0IsODlCQzNEeEMseUNBQ0EsNENEeUJjLE9BQU87OzJGQUVSLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxXQUFXLGNBRVQsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDOytHQUlYLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUkvQiw0QkFBNEI7c0JBRGxDLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUkvQixLQUFLO3NCQURYLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSS9CLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFJQSxXQUFXO3NCQURqQixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBSXJCLE1BQU07c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQUlwQixPQUFPO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUl0QyxjQUFjO3NCQUR4QixXQUFXO3VCQUFDLDZCQUE2QjtnQkFNL0IsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBTTdCLG9CQUFvQjtzQkFEOUIsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTXZDLGtCQUFrQjtzQkFENUIsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBTXJDLHNCQUFzQjtzQkFEaEMsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBTXpDLG9CQUFvQjtzQkFEOUIsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTXZDLHFCQUFxQjtzQkFEL0IsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBTXhDLG1CQUFtQjtzQkFEN0IsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBbUMxQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLGNBQWM7Z0JBT3JCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsY0FBYztnQkFNckIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQjVCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVFiLGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2xpZGVySGFuZGxlIH0gZnJvbSAnLi4vc2xpZGVyLmNvbW1vbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hEaXJlY3Rpb25hbGl0eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpcmVjdGlvbi9kaXJlY3Rpb25hbGl0eSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXRodW1iJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RodW1iLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgSWd4U2xpZGVyVGh1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBjb250aW51b3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGh1bWJMYWJlbFZpc2liaWxpdHlEdXJhdGlvbjogbnVtYmVyO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb25QYW46IFN1YmplY3Q8bnVtYmVyPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXBEaXN0YW5jZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0eXBlOiBTbGlkZXJIYW5kbGU7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZGVhY3RpdmVTdGF0ZTogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0aHVtYlZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdGh1bWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBob3ZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci56LWluZGV4JylcbiAgICBwdWJsaWMgekluZGV4ID0gMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi10by0tZm9jdXNlZCcpXG4gICAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi1mcm9tJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iRnJvbUNsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuRlJPTTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zbGlkZXItdGh1bWItdG8nKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJUb0NsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuVE87XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLWZyb20tLWFjdGl2ZScpXG4gICAgcHVibGljIGdldCB0aHVtYkZyb21BY3RpdmVDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLkZST00gJiYgdGhpcy5faXNBY3RpdmU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLXRvLS1hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJUb0FjdGl2ZUNsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuVE8gJiYgdGhpcy5faXNBY3RpdmU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLWZyb20tLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iRnJvbURpc2FibGVkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5GUk9NICYmIHRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLXRvLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCB0aHVtYlRvRGlzYWJsZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPICYmIHRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLWZyb20tLXByZXNzZWQnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJGcm9tUHJlc3NlZENsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuRlJPTSAmJiB0aGlzLmlzQWN0aXZlICYmIHRoaXMuX2lzUHJlc3NlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zbGlkZXItdGh1bWItdG8tLXByZXNzZWQnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJUb1ByZXNzZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPICYmIHRoaXMuaXNBY3RpdmUgJiYgdGhpcy5faXNQcmVzc2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0RG90Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWd4LXNsaWRlci10aHVtYi1mcm9tX19kb3QnOiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5GUk9NLFxuICAgICAgICAgICAgJ2lneC1zbGlkZXItdGh1bWItdG9fX2RvdCc6IHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXN0cm95KCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1ByZXNzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGdldCB0aHVtYlBvc2l0aW9uWCgpIHtcbiAgICAgICAgY29uc3QgdGh1bWJCb3VuZGVyaWVzID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0aHVtYkNlbnRlciA9ICh0aHVtYkJvdW5kZXJpZXMucmlnaHQgLSB0aHVtYkJvdW5kZXJpZXMubGVmdCkgLyAyO1xuICAgICAgICByZXR1cm4gdGh1bWJCb3VuZGVyaWVzLmxlZnQgKyB0aHVtYkNlbnRlcjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9kaXI6IElneERpcmVjdGlvbmFsaXR5KSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJlbnRlcicpXG4gICAgcHVibGljIG9uUG9pbnRlckVudGVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ob3ZlckNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScpXG4gICAgcHVibGljIG9uUG9pbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5jcmVtZW50ID0gMDtcbiAgICAgICAgY29uc3Qgc3RlcFdpdGhEaXIgPSAocnRsOiBib29sZWFuKSA9PiBydGwgPyB0aGlzLnN0ZXAgKiAtMSA6IHRoaXMuc3RlcDtcbiAgICAgICAgaWYgKGV2ZW50LmtleS5lbmRzV2l0aCgnTGVmdCcpKSB7XG4gICAgICAgICAgICBpbmNyZW1lbnQgPSBzdGVwV2l0aERpcighdGhpcy5fZGlyLnJ0bCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5LmVuZHNXaXRoKCdSaWdodCcpKSB7XG4gICAgICAgICAgICBpbmNyZW1lbnQgPSBzdGVwV2l0aERpcih0aGlzLl9kaXIucnRsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGh1bWJDaGFuZ2UuZW1pdCgpO1xuICAgICAgICB0aGlzLnRodW1iVmFsdWVDaGFuZ2UuZW1pdChpbmNyZW1lbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy56SW5kZXggPSAwO1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIG9uRm9jdXNMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm9uUGFuXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtb3VzZVggPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRodW1iVmFsdWUobW91c2VYKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGh1bWIgbGFiZWwgYW5kIHJpcHBsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1RodW1iSW5kaWNhdG9ycygpIHtcbiAgICAgICAgdGhpcy50b2dnbGVUaHVtYkluZGljYXRvcnModHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0aHVtYiBsYWJlbCBhbmQgcmlwcGxlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVGh1bWJJbmRpY2F0b3JzKCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVRodW1iSW5kaWNhdG9ycyhmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUaHVtYlZhbHVlKG1vdXNlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVZhbHVlID0gdGhpcy5jYWxjdWxhdGVUcmFja1VwZGF0ZShtb3VzZVgpO1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSAmJiB1cGRhdGVWYWx1ZSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy50aHVtYlZhbHVlQ2hhbmdlLmVtaXQodXBkYXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVUcmFja1VwZGF0ZShtb3VzZVg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNjYWxlWCA9IHRoaXMuX2Rpci5ydGwgPyB0aGlzLnRodW1iUG9zaXRpb25YIC0gbW91c2VYIDogbW91c2VYIC0gdGhpcy50aHVtYlBvc2l0aW9uWDtcbiAgICAgICAgY29uc3Qgc3RlcERpc3RhbmNlQ2VudGVyID0gdGhpcy5zdGVwRGlzdGFuY2UgLyAyO1xuXG4gICAgICAgIC8vIElmIHRoZSB0aHVtYiBzY2FsZSByYW5nZSAoc2xpZGVyIHVwZGF0ZSkgaXMgbGVzcyB0aMOgbiBhIGhhbGYgc3RlcCxcbiAgICAgICAgLy8gdGhlIHBvc2l0aW9uIHN0YXlzIHRoZSBzYW1lLlxuICAgICAgICBjb25zdCBzY2FsZVhQb3NpdGl2ZSA9IE1hdGguYWJzKHNjYWxlWCk7XG4gICAgICAgIGlmIChzY2FsZVhQb3NpdGl2ZSA8IHN0ZXBEaXN0YW5jZUNlbnRlcikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwVG9Qcm9jZWVkKHNjYWxlWCwgdGhpcy5zdGVwRGlzdGFuY2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RlcFRvUHJvY2VlZChzY2FsZVgsIHN0ZXBEaXN0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHNjYWxlWCAvIHN0ZXBEaXN0KSAqIHRoaXMuc3RlcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVRodW1iSW5kaWNhdG9ycyh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzUHJlc3NlZCA9IHZpc2libGU7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGludW91cyB8fCB0aGlzLmRlYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pc0FjdGl2ZSA9IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiZ2V0RG90Q2xhc3NcIj48L2Rpdj5cbiJdfQ==
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bWItc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zbGlkZXIvdGh1bWIvdGh1bWItc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zbGlkZXIvdGh1bWIvdGh1bWItc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixXQUFXLEVBQ1gsTUFBTSxFQUNOLFlBQVksRUFJWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRTFDOztHQUVHO0FBT0gsTUFBTSxPQUFPLHVCQUF1QjtJQXVEaEMsSUFDVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUNXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQ1csb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQ1csa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZ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c0JBRGpCLE1BQU07Z0JBSUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBSXJCLE1BQU07c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQUlwQixPQUFPO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUl0QyxjQUFjO3NCQUR4QixXQUFXO3VCQUFDLDZCQUE2QjtnQkFNL0IsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBTTdCLG9CQUFvQjtzQkFEOUIsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTXZDLGtCQUFrQjtzQkFENUIsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBTXJDLHNCQUFzQjtzQkFEaEMsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBTXpDLG9CQUFvQjtzQkFEOUIsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTXZDLHFCQUFxQjtzQkFEL0IsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBTXhDLG1CQUFtQjtzQkFEN0IsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBbUMxQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLGNBQWM7Z0JBT3JCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsY0FBYztnQkFNckIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQjVCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVNiLGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2xpZGVySGFuZGxlIH0gZnJvbSAnLi4vc2xpZGVyLmNvbW1vbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hEaXJlY3Rpb25hbGl0eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpcmVjdGlvbi9kaXJlY3Rpb25hbGl0eSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXRodW1iJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RodW1iLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgSWd4U2xpZGVyVGh1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBjb250aW51b3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGh1bWJMYWJlbFZpc2liaWxpdHlEdXJhdGlvbjogbnVtYmVyO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb25QYW46IFN1YmplY3Q8bnVtYmVyPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXBEaXN0YW5jZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0eXBlOiBTbGlkZXJIYW5kbGU7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZGVhY3RpdmVTdGF0ZTogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0aHVtYlZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdGh1bWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0aHVtYkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaG92ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuei1pbmRleCcpXG4gICAgcHVibGljIHpJbmRleCA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zbGlkZXItdGh1bWItdG8tLWZvY3VzZWQnKVxuICAgIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zbGlkZXItdGh1bWItZnJvbScpXG4gICAgcHVibGljIGdldCB0aHVtYkZyb21DbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLkZST007XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLXRvJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iVG9DbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi1mcm9tLS1hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJGcm9tQWN0aXZlQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5GUk9NICYmIHRoaXMuX2lzQWN0aXZlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi10by0tYWN0aXZlJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iVG9BY3RpdmVDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLlRPICYmIHRoaXMuX2lzQWN0aXZlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi1mcm9tLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCB0aHVtYkZyb21EaXNhYmxlZENsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuRlJPTSAmJiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi10by0tZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgdGh1bWJUb0Rpc2FibGVkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5UTyAmJiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNsaWRlci10aHVtYi1mcm9tLS1wcmVzc2VkJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iRnJvbVByZXNzZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2xpZGVySGFuZGxlLkZST00gJiYgdGhpcy5pc0FjdGl2ZSAmJiB0aGlzLl9pc1ByZXNzZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc2xpZGVyLXRodW1iLXRvLS1wcmVzc2VkJylcbiAgICBwdWJsaWMgZ2V0IHRodW1iVG9QcmVzc2VkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5UTyAmJiB0aGlzLmlzQWN0aXZlICYmIHRoaXMuX2lzUHJlc3NlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGdldERvdENsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2lneC1zbGlkZXItdGh1bWItZnJvbV9fZG90JzogdGhpcy50eXBlID09PSBTbGlkZXJIYW5kbGUuRlJPTSxcbiAgICAgICAgICAgICdpZ3gtc2xpZGVyLXRodW1iLXRvX19kb3QnOiB0aGlzLnR5cGUgPT09IFNsaWRlckhhbmRsZS5UT1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVzdHJveSgpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNQcmVzc2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBnZXQgdGh1bWJQb3NpdGlvblgoKSB7XG4gICAgICAgIGNvbnN0IHRodW1iQm91bmRlcmllcyA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGh1bWJDZW50ZXIgPSAodGh1bWJCb3VuZGVyaWVzLnJpZ2h0IC0gdGh1bWJCb3VuZGVyaWVzLmxlZnQpIC8gMjtcbiAgICAgICAgcmV0dXJuIHRodW1iQm91bmRlcmllcy5sZWZ0ICsgdGh1bWJDZW50ZXI7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfZGlyOiBJZ3hEaXJlY3Rpb25hbGl0eSkgeyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVyZW50ZXInKVxuICAgIHB1YmxpYyBvblBvaW50ZXJFbnRlcigpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaG92ZXJDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVybGVhdmUnKVxuICAgIHB1YmxpYyBvblBvaW50ZXJMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5ob3ZlckNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluY3JlbWVudCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBXaXRoRGlyID0gKHJ0bDogYm9vbGVhbikgPT4gcnRsID8gdGhpcy5zdGVwICogLTEgOiB0aGlzLnN0ZXA7XG4gICAgICAgIGlmIChldmVudC5rZXkuZW5kc1dpdGgoJ0xlZnQnKSkge1xuICAgICAgICAgICAgaW5jcmVtZW50ID0gc3RlcFdpdGhEaXIoIXRoaXMuX2Rpci5ydGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleS5lbmRzV2l0aCgnUmlnaHQnKSkge1xuICAgICAgICAgICAgaW5jcmVtZW50ID0gc3RlcFdpdGhEaXIodGhpcy5fZGlyLnJ0bCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRodW1iQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgdGhpcy50aHVtYlZhbHVlQ2hhbmdlLmVtaXQoaW5jcmVtZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuekluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGh1bWJCbHVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIG9uRm9jdXNMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm9uUGFuXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtb3VzZVggPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRodW1iVmFsdWUobW91c2VYKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGh1bWIgbGFiZWwgYW5kIHJpcHBsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1RodW1iSW5kaWNhdG9ycygpIHtcbiAgICAgICAgdGhpcy50b2dnbGVUaHVtYkluZGljYXRvcnModHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0aHVtYiBsYWJlbCBhbmQgcmlwcGxlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVGh1bWJJbmRpY2F0b3JzKCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVRodW1iSW5kaWNhdG9ycyhmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUaHVtYlZhbHVlKG1vdXNlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVZhbHVlID0gdGhpcy5jYWxjdWxhdGVUcmFja1VwZGF0ZShtb3VzZVgpO1xuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSAmJiB1cGRhdGVWYWx1ZSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy50aHVtYlZhbHVlQ2hhbmdlLmVtaXQodXBkYXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVUcmFja1VwZGF0ZShtb3VzZVg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNjYWxlWCA9IHRoaXMuX2Rpci5ydGwgPyB0aGlzLnRodW1iUG9zaXRpb25YIC0gbW91c2VYIDogbW91c2VYIC0gdGhpcy50aHVtYlBvc2l0aW9uWDtcbiAgICAgICAgY29uc3Qgc3RlcERpc3RhbmNlQ2VudGVyID0gdGhpcy5zdGVwRGlzdGFuY2UgLyAyO1xuXG4gICAgICAgIC8vIElmIHRoZSB0aHVtYiBzY2FsZSByYW5nZSAoc2xpZGVyIHVwZGF0ZSkgaXMgbGVzcyB0aMOgbiBhIGhhbGYgc3RlcCxcbiAgICAgICAgLy8gdGhlIHBvc2l0aW9uIHN0YXlzIHRoZSBzYW1lLlxuICAgICAgICBjb25zdCBzY2FsZVhQb3NpdGl2ZSA9IE1hdGguYWJzKHNjYWxlWCk7XG4gICAgICAgIGlmIChzY2FsZVhQb3NpdGl2ZSA8IHN0ZXBEaXN0YW5jZUNlbnRlcikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwVG9Qcm9jZWVkKHNjYWxlWCwgdGhpcy5zdGVwRGlzdGFuY2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RlcFRvUHJvY2VlZChzY2FsZVgsIHN0ZXBEaXN0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHNjYWxlWCAvIHN0ZXBEaXN0KSAqIHRoaXMuc3RlcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVRodW1iSW5kaWNhdG9ycyh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzUHJlc3NlZCA9IHZpc2libGU7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGludW91cyB8fCB0aGlzLmRlYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pc0FjdGl2ZSA9IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiZ2V0RG90Q2xhc3NcIj48L2Rpdj5cbiJdfQ==
@@ -1052,7 +1052,7 @@ class NoopSortingStrategy {
1052
1052
  }
1053
1053
  /**
1054
1054
  * Represents a class extending the IgxSorting class
1055
- * Provids custom data record sorting.
1055
+ * Provides custom data record sorting.
1056
1056
  */
1057
1057
  class IgxDataRecordSorting extends IgxSorting {
1058
1058
  /**
@@ -7260,6 +7260,7 @@ class DisplayDensityBase {
7260
7260
  }
7261
7261
  /**
7262
7262
  * Sets the `--component-size` CSS variable based on the value of Display Density
7263
+ * @hidden @internal
7263
7264
  */
7264
7265
  getComponentSizeStyles() {
7265
7266
  switch (this._displayDensity || this.oldDisplayDensityOptions.displayDensity) {
@@ -12780,6 +12781,11 @@ class IgxForOfSyncService {
12780
12781
  */
12781
12782
  setMaster(directive, forced = false) {
12782
12783
  const orientation = directive.igxForScrollOrientation;
12784
+ // in case master is not in dom, set a new master
12785
+ const isMasterInDom = this._master.get(orientation)?.dc?.instance?._viewContainer.element.nativeElement.isConnected;
12786
+ if (!isMasterInDom) {
12787
+ forced = true;
12788
+ }
12783
12789
  if (orientation && (forced || !this._master.has(orientation))) {
12784
12790
  this._master.set(orientation, directive);
12785
12791
  }
@@ -13534,6 +13540,17 @@ class IgxForOfDirective extends IgxForOfToken {
13534
13540
  this.chunkLoad.emit(this.state);
13535
13541
  }
13536
13542
  }
13543
+ /**
13544
+ * @hidden
13545
+ * @internal
13546
+ */
13547
+ updateScroll() {
13548
+ if (this.igxForScrollOrientation === "horizontal") {
13549
+ const scrollAmount = this.scrollComponent.nativeElement["scrollLeft"];
13550
+ this.scrollComponent.scrollAmount = scrollAmount;
13551
+ this._updateScrollOffset();
13552
+ }
13553
+ }
13537
13554
  updateSizes() {
13538
13555
  if (!this.scrollComponent.nativeElement.isConnected)
13539
13556
  return;
@@ -14190,7 +14207,7 @@ class IgxGridForOfDirective extends IgxForOfDirective {
14190
14207
  }
14191
14208
  if (this.igxForScrollOrientation === 'horizontal') {
14192
14209
  // in case collection has changes, reset sync service
14193
- this.syncService.setMaster(this, true);
14210
+ this.syncService.setMaster(this, this.igxGridForOfUniqueSizeCache);
14194
14211
  }
14195
14212
  }
14196
14213
  const defaultItemSize = 'igxForItemSize';
@@ -18111,7 +18128,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
18111
18128
  * @hidden
18112
18129
  */
18113
18130
  set target(target) {
18114
- if (target !== null && target !== '') {
18131
+ if (target instanceof IgxTooltipDirective) {
18115
18132
  this._target = target;
18116
18133
  }
18117
18134
  }
@@ -25143,20 +25160,17 @@ class IgxGridSelectionService {
25143
25160
  return keys.some(k => this.isPivotRowSelected(k));
25144
25161
  });
25145
25162
  }
25146
- if (this.rowSelection.size && this.grid.totalItemCount || this.grid.pagingMode === GridPagingMode.Remote) {
25147
- if (!this.grid.primaryKey) {
25148
- return Array.from(this.rowSelection);
25149
- }
25150
- const selection = [];
25151
- this.rowSelection.forEach(rID => {
25152
- const rData = this.grid.gridAPI.get_all_data(true).find(row => this.getRecordKey(row) === rID);
25153
- const partialRowData = {};
25154
- partialRowData[this.grid.primaryKey] = rID;
25155
- selection.push(rData ? rData : partialRowData);
25156
- });
25157
- return selection;
25158
- }
25159
- return this.rowSelection.size ? this.grid.gridAPI.get_all_data(true).filter(row => this.rowSelection.has(this.getRecordKey(row))) : [];
25163
+ if (!this.grid.primaryKey) {
25164
+ return Array.from(this.rowSelection);
25165
+ }
25166
+ const selection = [];
25167
+ this.rowSelection.forEach(rID => {
25168
+ const rData = this.grid.gridAPI.get_all_data(true).find(row => this.getRecordKey(row) === rID);
25169
+ const partialRowData = {};
25170
+ partialRowData[this.grid.primaryKey] = rID;
25171
+ selection.push(rData ? rData : partialRowData);
25172
+ });
25173
+ return selection;
25160
25174
  }
25161
25175
  /** Returns array of the selected row id's. */
25162
25176
  getSelectedRows() {
@@ -31691,6 +31705,10 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
31691
31705
  if (this.isDecadeView) {
31692
31706
  this.viewDate = CalendarDay.from(this.viewDate).add('year', -15).native;
31693
31707
  }
31708
+ this.viewDateChanged.emit({
31709
+ previousValue: this.previousViewDate,
31710
+ currentValue: this.viewDate,
31711
+ });
31694
31712
  }
31695
31713
  /**
31696
31714
  * @hidden
@@ -31704,6 +31722,10 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
31704
31722
  if (this.isDecadeView) {
31705
31723
  this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;
31706
31724
  }
31725
+ this.viewDateChanged.emit({
31726
+ previousValue: this.previousViewDate,
31727
+ currentValue: this.viewDate,
31728
+ });
31707
31729
  }
31708
31730
  /**
31709
31731
  * @hidden
@@ -37717,7 +37739,6 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
37717
37739
  if (event !== undefined) {
37718
37740
  this.filterValue = this.searchValue = typeof event === 'string' ? event : event.target.value;
37719
37741
  }
37720
- this._onChangeCallback(this.searchValue);
37721
37742
  if (this.collapsed && this.comboInput.focused) {
37722
37743
  this.open();
37723
37744
  }
@@ -37751,10 +37772,12 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
37751
37772
  if (filtered === null || filtered === undefined) {
37752
37773
  return;
37753
37774
  }
37754
- this.select(this.dropdown.focusedItem.itemID);
37755
- event.preventDefault();
37756
- event.stopPropagation();
37757
- this.close();
37775
+ if (!this.dropdown.collapsed) {
37776
+ this.select(this.dropdown.focusedItem.itemID);
37777
+ event.preventDefault();
37778
+ event.stopPropagation();
37779
+ this.close();
37780
+ }
37758
37781
  // manually trigger text selection as it will not be triggered during editing
37759
37782
  this.textSelection.trigger();
37760
37783
  return;
@@ -61448,6 +61471,12 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61448
61471
  get pagingState() {
61449
61472
  return this._pagingState;
61450
61473
  }
61474
+ /**
61475
+ * Represents the last search information.
61476
+ */
61477
+ get lastSearchInfo() {
61478
+ return this._lastSearchInfo;
61479
+ }
61451
61480
  /** @hidden @internal */
61452
61481
  get paginator() {
61453
61482
  return this.paginationComponents?.first;
@@ -62312,18 +62341,6 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62312
62341
  * @hidden @internal
62313
62342
  */
62314
62343
  this.disableTransitions = false;
62315
- /**
62316
- * Represents the last search information.
62317
- */
62318
- this.lastSearchInfo = {
62319
- searchText: '',
62320
- caseSensitive: false,
62321
- exactMatch: false,
62322
- activeMatchIndex: 0,
62323
- matchInfoCache: [],
62324
- matchCount: 0,
62325
- content: ''
62326
- };
62327
62344
  /**
62328
62345
  * @hidden @internal
62329
62346
  */
@@ -62437,6 +62454,15 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62437
62454
  this._filterStrategy = new FilteringStrategy();
62438
62455
  this._autoGeneratedCols = [];
62439
62456
  this._dataView = [];
62457
+ this._lastSearchInfo = {
62458
+ searchText: '',
62459
+ caseSensitive: false,
62460
+ exactMatch: false,
62461
+ activeMatchIndex: 0,
62462
+ matchInfoCache: [],
62463
+ matchCount: 0,
62464
+ content: ''
62465
+ };
62440
62466
  this._rowEditable = false;
62441
62467
  this._filteredSortedData = null;
62442
62468
  this._filteredData = null;
@@ -62768,6 +62794,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62768
62794
  // the vert. scrollbar showing/hiding
62769
62795
  this.notifyChanges(true);
62770
62796
  this.cdr.detectChanges();
62797
+ Promise.resolve().then(() => this.headerContainer.updateScroll());
62771
62798
  });
62772
62799
  this.headerContainer?.scrollbarVisibilityChanged.pipe(filter(() => !this._init), destructor).subscribe(() => {
62773
62800
  // the horizontal scrollbar showing/hiding
@@ -64102,20 +64129,20 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64102
64129
  * @param updateActiveInfo
64103
64130
  */
64104
64131
  refreshSearch(updateActiveInfo, endEdit = true) {
64105
- if (this.lastSearchInfo.searchText) {
64132
+ if (this._lastSearchInfo.searchText) {
64106
64133
  this.rebuildMatchCache();
64107
64134
  if (updateActiveInfo) {
64108
64135
  const activeInfo = this.textHighlightService.highlightGroupsMap.get(this.id);
64109
- this.lastSearchInfo.matchInfoCache.forEach((match, i) => {
64136
+ this._lastSearchInfo.matchInfoCache.forEach((match, i) => {
64110
64137
  if (match.column === activeInfo.column &&
64111
64138
  match.row === activeInfo.row &&
64112
64139
  match.index === activeInfo.index &&
64113
64140
  compareMaps(match.metadata, activeInfo.metadata)) {
64114
- this.lastSearchInfo.activeMatchIndex = i;
64141
+ this._lastSearchInfo.activeMatchIndex = i;
64115
64142
  }
64116
64143
  });
64117
64144
  }
64118
- return this.find(this.lastSearchInfo.searchText, 0, this.lastSearchInfo.caseSensitive, this.lastSearchInfo.exactMatch, false, endEdit);
64145
+ return this.find(this._lastSearchInfo.searchText, 0, this._lastSearchInfo.caseSensitive, this._lastSearchInfo.exactMatch, false, endEdit);
64119
64146
  }
64120
64147
  else {
64121
64148
  return 0;
@@ -64130,7 +64157,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64130
64157
  * ```
64131
64158
  */
64132
64159
  clearSearch() {
64133
- this.lastSearchInfo = {
64160
+ this._lastSearchInfo = {
64134
64161
  searchText: '',
64135
64162
  caseSensitive: false,
64136
64163
  exactMatch: false,
@@ -65192,12 +65219,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65192
65219
  // in case state is no longer valid - update it.
65193
65220
  const rowForOf = row.virtDirRow;
65194
65221
  const gridScrLeft = rowForOf.getScroll().scrollLeft;
65195
- const left = -parseInt(rowForOf.dc.instance._viewContainer.element.nativeElement.style.left, 10);
65196
- const actualScrollLeft = left + rowForOf.getColumnScrollLeft(rowForOf.state.startIndex);
65197
- if (gridScrLeft !== actualScrollLeft) {
65198
- rowForOf.onHScroll(gridScrLeft);
65199
- rowForOf.cdr.detectChanges();
65200
- }
65222
+ rowForOf.onHScroll(gridScrLeft);
65223
+ rowForOf.cdr.detectChanges();
65201
65224
  }
65202
65225
  changeRowEditingOverlayStateOnScroll(row) {
65203
65226
  if (!this.rowEditable || !this.rowEditingOverlay || this.rowEditingOverlay.collapsed) {
@@ -65696,7 +65719,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65696
65719
  let res = !parentElement ||
65697
65720
  parentElement.clientHeight === 0 ||
65698
65721
  parentElement.clientHeight === renderedHeight;
65699
- if ((!this.platform.isChromium && !this.platform.isFirefox) || this._autoSize) {
65722
+ if (parentElement && (res || this._autoSize)) {
65700
65723
  // If grid causes the parent container to extend (for example when container is flex)
65701
65724
  // we should always auto-size since the actual size of the container will continuously change as the grid renders elements.
65702
65725
  this._autoSize = false;
@@ -66310,10 +66333,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66310
66333
  const caseSensitiveResolved = caseSensitive ? true : false;
66311
66334
  const exactMatchResolved = exactMatch ? true : false;
66312
66335
  let rebuildCache = false;
66313
- if (this.lastSearchInfo.searchText !== text ||
66314
- this.lastSearchInfo.caseSensitive !== caseSensitiveResolved ||
66315
- this.lastSearchInfo.exactMatch !== exactMatchResolved) {
66316
- this.lastSearchInfo = {
66336
+ if (this._lastSearchInfo.searchText !== text ||
66337
+ this._lastSearchInfo.caseSensitive !== caseSensitiveResolved ||
66338
+ this._lastSearchInfo.exactMatch !== exactMatchResolved) {
66339
+ this._lastSearchInfo = {
66317
66340
  searchText: text,
66318
66341
  activeMatchIndex: 0,
66319
66342
  caseSensitive: caseSensitiveResolved,
@@ -66325,7 +66348,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66325
66348
  rebuildCache = true;
66326
66349
  }
66327
66350
  else {
66328
- this.lastSearchInfo.activeMatchIndex += increment;
66351
+ this._lastSearchInfo.activeMatchIndex += increment;
66329
66352
  }
66330
66353
  if (rebuildCache) {
66331
66354
  this.rowList.forEach((row) => {
@@ -66337,15 +66360,15 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66337
66360
  });
66338
66361
  this.rebuildMatchCache();
66339
66362
  }
66340
- if (this.lastSearchInfo.activeMatchIndex >= this.lastSearchInfo.matchCount) {
66341
- this.lastSearchInfo.activeMatchIndex = 0;
66363
+ if (this._lastSearchInfo.activeMatchIndex >= this._lastSearchInfo.matchCount) {
66364
+ this._lastSearchInfo.activeMatchIndex = 0;
66342
66365
  }
66343
- else if (this.lastSearchInfo.activeMatchIndex < 0) {
66344
- this.lastSearchInfo.activeMatchIndex = this.lastSearchInfo.matchCount - 1;
66366
+ else if (this._lastSearchInfo.activeMatchIndex < 0) {
66367
+ this._lastSearchInfo.activeMatchIndex = this._lastSearchInfo.matchCount - 1;
66345
66368
  }
66346
- if (this.lastSearchInfo.matchCount > 0) {
66347
- const matchInfo = this.lastSearchInfo.matchInfoCache[this.lastSearchInfo.activeMatchIndex];
66348
- this.lastSearchInfo = { ...this.lastSearchInfo };
66369
+ if (this._lastSearchInfo.matchCount > 0) {
66370
+ const matchInfo = this._lastSearchInfo.matchInfoCache[this._lastSearchInfo.activeMatchIndex];
66371
+ this._lastSearchInfo = { ...this._lastSearchInfo };
66349
66372
  if (scroll !== false) {
66350
66373
  this.scrollTo(matchInfo.row, matchInfo.column);
66351
66374
  }
@@ -66359,13 +66382,13 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66359
66382
  else {
66360
66383
  this.textHighlightService.clearActiveHighlight(this.id);
66361
66384
  }
66362
- return this.lastSearchInfo.matchCount;
66385
+ return this._lastSearchInfo.matchCount;
66363
66386
  }
66364
66387
  rebuildMatchCache() {
66365
- this.lastSearchInfo.matchInfoCache = [];
66366
- const caseSensitive = this.lastSearchInfo.caseSensitive;
66367
- const exactMatch = this.lastSearchInfo.exactMatch;
66368
- const searchText = caseSensitive ? this.lastSearchInfo.searchText : this.lastSearchInfo.searchText.toLowerCase();
66388
+ this._lastSearchInfo.matchInfoCache = [];
66389
+ const caseSensitive = this._lastSearchInfo.caseSensitive;
66390
+ const exactMatch = this._lastSearchInfo.exactMatch;
66391
+ const searchText = caseSensitive ? this._lastSearchInfo.searchText : this._lastSearchInfo.searchText.toLowerCase();
66369
66392
  const data = this.filteredSortedData;
66370
66393
  const columnItems = this.visibleColumns.filter((c) => !c.columnGroup).sort((c1, c2) => c1.visibleIndex - c2.visibleIndex);
66371
66394
  data.forEach((dataRow, rowIndex) => {
@@ -66386,7 +66409,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66386
66409
  index: 0,
66387
66410
  metadata: new Map([['pinned', this.isRecordPinnedByIndex(rowIndex)]])
66388
66411
  };
66389
- this.lastSearchInfo.matchInfoCache.push(mic);
66412
+ this._lastSearchInfo.matchInfoCache.push(mic);
66390
66413
  }
66391
66414
  }
66392
66415
  else {
@@ -66399,7 +66422,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66399
66422
  index: occurrenceIndex++,
66400
66423
  metadata: new Map([['pinned', this.isRecordPinnedByIndex(rowIndex)]])
66401
66424
  };
66402
- this.lastSearchInfo.matchInfoCache.push(mic);
66425
+ this._lastSearchInfo.matchInfoCache.push(mic);
66403
66426
  searchValue = searchValue.substring(searchIndex + searchText.length);
66404
66427
  searchIndex = searchValue.indexOf(searchText);
66405
66428
  }
@@ -66407,7 +66430,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
66407
66430
  }
66408
66431
  });
66409
66432
  });
66410
- this.lastSearchInfo.matchCount = this.lastSearchInfo.matchInfoCache.length;
66433
+ this._lastSearchInfo.matchCount = this._lastSearchInfo.matchInfoCache.length;
66411
66434
  }
66412
66435
  // TODO: About to Move to CRUD
66413
66436
  configureRowEditingOverlay(rowID, useOuter = false) {
@@ -81974,7 +81997,7 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
81974
81997
  const colLength = this.columns.length;
81975
81998
  const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);
81976
81999
  if (topCols.length > 0) {
81977
- this.updateColumns(topCols);
82000
+ this.initColumns(topCols, (col) => this.columnInit.emit(col));
81978
82001
  if (recalcColSizes && this.columns.length !== colLength) {
81979
82002
  this.calculateGridSizes(false);
81980
82003
  }
@@ -83477,6 +83500,7 @@ class IgxSliderThumbComponent {
83477
83500
  this._dir = _dir;
83478
83501
  this.thumbValueChange = new EventEmitter();
83479
83502
  this.thumbChange = new EventEmitter();
83503
+ this.thumbBlur = new EventEmitter();
83480
83504
  this.hoverChange = new EventEmitter();
83481
83505
  this.tabindex = 0;
83482
83506
  this.zIndex = 0;
@@ -83519,6 +83543,7 @@ class IgxSliderThumbComponent {
83519
83543
  this.isActive = false;
83520
83544
  this.zIndex = 0;
83521
83545
  this.focused = false;
83546
+ this.thumbBlur.emit();
83522
83547
  }
83523
83548
  onFocusListener() {
83524
83549
  this.isActive = true;
@@ -83581,7 +83606,7 @@ class IgxSliderThumbComponent {
83581
83606
  }
83582
83607
  }
83583
83608
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderThumbComponent, deps: [{ token: i0.ElementRef }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
83584
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderThumbComponent, isStandalone: true, selector: "igx-thumb", inputs: { value: "value", continuous: ["continuous", "continuous", booleanAttribute], thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", disabled: ["disabled", "disabled", booleanAttribute], onPan: "onPan", stepDistance: "stepDistance", step: "step", templateRef: "templateRef", context: "context", type: "type", deactiveState: ["deactiveState", "deactiveState", booleanAttribute] }, outputs: { thumbValueChange: "thumbValueChange", thumbChange: "thumbChange", hoverChange: "hoverChange" }, host: { listeners: { "pointerenter": "onPointerEnter()", "pointerleave": "onPointerLeave()", "keyup": "onKeyUp($event)", "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocusListener()" }, properties: { "attr.tabindex": "this.tabindex", "attr.z-index": "this.zIndex", "class.igx-slider-thumb-to--focused": "this.focused", "class.igx-slider-thumb-from": "this.thumbFromClass", "class.igx-slider-thumb-to": "this.thumbToClass", "class.igx-slider-thumb-from--active": "this.thumbFromActiveClass", "class.igx-slider-thumb-to--active": "this.thumbToActiveClass", "class.igx-slider-thumb-from--disabled": "this.thumbFromDisabledClass", "class.igx-slider-thumb-to--disabled": "this.thumbToDisabledClass", "class.igx-slider-thumb-from--pressed": "this.thumbFromPressedClass", "class.igx-slider-thumb-to--pressed": "this.thumbToPressedClass" } }, ngImport: i0, template: "<div [ngClass]=\"getDotClass\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
83609
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderThumbComponent, isStandalone: true, selector: "igx-thumb", inputs: { value: "value", continuous: ["continuous", "continuous", booleanAttribute], thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", disabled: ["disabled", "disabled", booleanAttribute], onPan: "onPan", stepDistance: "stepDistance", step: "step", templateRef: "templateRef", context: "context", type: "type", deactiveState: ["deactiveState", "deactiveState", booleanAttribute] }, outputs: { thumbValueChange: "thumbValueChange", thumbChange: "thumbChange", thumbBlur: "thumbBlur", hoverChange: "hoverChange" }, host: { listeners: { "pointerenter": "onPointerEnter()", "pointerleave": "onPointerLeave()", "keyup": "onKeyUp($event)", "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocusListener()" }, properties: { "attr.tabindex": "this.tabindex", "attr.z-index": "this.zIndex", "class.igx-slider-thumb-to--focused": "this.focused", "class.igx-slider-thumb-from": "this.thumbFromClass", "class.igx-slider-thumb-to": "this.thumbToClass", "class.igx-slider-thumb-from--active": "this.thumbFromActiveClass", "class.igx-slider-thumb-to--active": "this.thumbToActiveClass", "class.igx-slider-thumb-from--disabled": "this.thumbFromDisabledClass", "class.igx-slider-thumb-to--disabled": "this.thumbToDisabledClass", "class.igx-slider-thumb-from--pressed": "this.thumbFromPressedClass", "class.igx-slider-thumb-to--pressed": "this.thumbToPressedClass" } }, ngImport: i0, template: "<div [ngClass]=\"getDotClass\"></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
83585
83610
  }
83586
83611
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderThumbComponent, decorators: [{
83587
83612
  type: Component,
@@ -83615,6 +83640,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
83615
83640
  type: Output
83616
83641
  }], thumbChange: [{
83617
83642
  type: Output
83643
+ }], thumbBlur: [{
83644
+ type: Output
83618
83645
  }], hoverChange: [{
83619
83646
  type: Output
83620
83647
  }], tabindex: [{
@@ -84622,12 +84649,12 @@ class IgxSliderComponent {
84622
84649
  this.positionHandlersAndUpdateTrack();
84623
84650
  this.setTickInterval();
84624
84651
  this.changeThumbFocusableState(this.disabled);
84625
- this.subscribeTo(this.thumbFrom, this.thumbChanged.bind(this));
84626
- this.subscribeTo(this.thumbTo, this.thumbChanged.bind(this));
84652
+ this.subscribeToEvents(this.thumbFrom);
84653
+ this.subscribeToEvents(this.thumbTo);
84627
84654
  this.thumbs.changes.pipe(takeUntil(this._destroyer$)).subscribe(change => {
84628
84655
  const thumbFrom = change.find((thumb) => thumb.type === SliderHandle.FROM);
84629
84656
  this.positionHandler(thumbFrom, null, this.lowerValue);
84630
- this.subscribeTo(thumbFrom, this.thumbChanged.bind(this));
84657
+ this.subscribeToEvents(thumbFrom);
84631
84658
  this.changeThumbFocusableState(this.disabled);
84632
84659
  });
84633
84660
  this.labelRefs.changes.pipe(takeUntil(this._destroyer$)).subscribe(() => {
@@ -84692,7 +84719,6 @@ class IgxSliderComponent {
84692
84719
  // Finally do positionHandlersAndUpdateTrack the DOM
84693
84720
  // based on data values
84694
84721
  this.positionHandlersAndUpdateTrack();
84695
- this._onTouchedCallback();
84696
84722
  }
84697
84723
  /**
84698
84724
  * @hidden
@@ -84973,13 +84999,16 @@ class IgxSliderComponent {
84973
84999
  this.renderer.setStyle(this.trackRef.nativeElement, 'transform', `scaleX(${toPosition})`);
84974
85000
  }
84975
85001
  }
84976
- subscribeTo(thumb, callback) {
85002
+ subscribeToEvents(thumb) {
84977
85003
  if (!thumb) {
84978
85004
  return;
84979
85005
  }
84980
85006
  thumb.thumbValueChange
84981
85007
  .pipe(takeUntil(this.unsubscriber(thumb)))
84982
- .subscribe(value => callback(value, thumb.type));
85008
+ .subscribe(value => this.thumbChanged(value, thumb.type));
85009
+ thumb.thumbBlur
85010
+ .pipe(takeUntil(this.unsubscriber(thumb)))
85011
+ .subscribe(() => this._onTouchedCallback());
84983
85012
  }
84984
85013
  unsubscriber(thumb) {
84985
85014
  return merge(this._destroyer$, thumb.destroy);
@@ -84995,7 +85024,7 @@ class IgxSliderComponent {
84995
85024
  this.valueChange.emit({ oldValue, value: this.value });
84996
85025
  }
84997
85026
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
84998
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderComponent, isStandalone: true, selector: "igx-slider", inputs: { id: "id", thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", type: "type", labels: "labels", step: "step", disabled: ["disabled", "disabled", booleanAttribute], continuous: ["continuous", "continuous", booleanAttribute], minValue: "minValue", maxValue: "maxValue", lowerBound: "lowerBound", upperBound: "upperBound", value: "value", primaryTicks: "primaryTicks", secondaryTicks: "secondaryTicks", showTicks: ["showTicks", "showTicks", booleanAttribute], primaryTickLabels: ["primaryTickLabels", "primaryTickLabels", booleanAttribute], secondaryTickLabels: ["secondaryTickLabels", "secondaryTickLabels", booleanAttribute], ticksOrientation: "ticksOrientation", tickLabelsOrientation: "tickLabelsOrientation", lowerValue: "lowerValue", upperValue: "upperValue" }, outputs: { valueChange: "valueChange", lowerValueChange: "lowerValueChange", upperValueChange: "upperValueChange", dragFinished: "dragFinished" }, host: { listeners: { "focus": "onFocus()", "pointerdown": "onPointerDown($event)", "pointerup": "onPointerUp($event)" }, properties: { "attr.role": "this.role", "class.igx-slider": "this.slierClass", "attr.id": "this.id", "attr.aria-valuemin": "this.valuemin", "attr.aria-valuemax": "this.valuemax", "attr.aria-readonly": "this.readonly", "class.igx-slider--disabled": "this.disabledClass" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSliderComponent, multi: true }], queries: [{ propertyName: "thumbFromTemplateRef", first: true, predicate: IgxThumbFromTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "thumbToTemplateRef", first: true, predicate: IgxThumbToTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "tickLabelTemplateRef", first: true, predicate: IgxTickLabelTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "trackRef", first: true, predicate: ["track"], descendants: true, static: true }, { propertyName: "ticks", first: true, predicate: ["ticks"], descendants: true, static: true }, { propertyName: "thumbs", predicate: IgxSliderThumbComponent, descendants: true }, { propertyName: "labelRefs", predicate: IgxThumbLabelComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<igx-ticks\n *ngIf=\"showTicks && showTopTicks\"\n ticksOrientation=\"top\"\n [primaryTicks]=\"primaryTicks\"\n [secondaryTicks]=\"secondaryTicks\"\n [primaryTickLabels]=\"primaryTickLabels\"\n [secondaryTickLabels]=\"secondaryTickLabels\"\n [tickLabelsOrientation]=\"tickLabelsOrientation\"\n [labelsViewEnabled]=\"labelsViewEnabled\"\n [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\">\n</igx-ticks>\n<div class=\"igx-slider__track\">\n <div class=\"igx-slider__track-inactive\"></div>\n <div #track class=\"igx-slider__track-fill\"></div>\n <div class=\"igx-slider__track-steps\">\n <svg width=\"100%\" height=\"100%\">\n <line #ticks x1=\"0\" y1=\"2\" x2=\"100%\" y2=\"2\"></line>\n </svg>\n </div>\n</div>\n<div class=\"igx-slider__thumbs\">\n <igx-thumb-label\n *ngIf=\"isRange\"\n type=\"from\"\n [value]=\"lowerLabel\"\n [templateRef]=\"thumbFromTemplateRef\"\n [continuous]=\"continuous\"\n [context]=\"context\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumb]=\"thumbFrom\"></igx-thumb-label>\n\n <igx-thumb\n *ngIf=\"isRange\"\n #thumbFrom\n type=\"from\"\n [value]=\"lowerLabel\"\n [disabled]=\"disabled\"\n [continuous]=\"continuous\"\n [onPan]=\"onPan\"\n [stepDistance]=\"stepDistance\"\n [step]=\"step\"\n [templateRef]=\"thumbFromTemplateRef\"\n [context]=\"context\"\n (thumbChange)=\"onThumbChange()\"\n (hoverChange)=\"onHoverChange($event)\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n\n <igx-thumb-label\n [value]=\"upperLabel\"\n type=\"to\"\n [templateRef]=\"thumbToTemplateRef\"\n [continuous]=\"continuous\"\n [context]=\"context\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumb]=\"thumbTo\"></igx-thumb-label>\n\n <igx-thumb\n #thumbTo\n type=\"to\"\n [value]=\"upperLabel\"\n [disabled]=\"disabled\"\n [continuous]=\"continuous\"\n [onPan]=\"onPan\"\n [stepDistance]=\"stepDistance\"\n [step]=\"step\"\n [templateRef]=\"thumbToTemplateRef\"\n [context]=\"context\"\n (thumbChange)=\"onThumbChange()\"\n (hoverChange)=\"onHoverChange($event)\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n</div>\n<igx-ticks\n *ngIf=\"showTicks && showBottomTicks\"\n ticksOrientation=\"bottom\"\n [primaryTicks]=\"primaryTicks\"\n [secondaryTicks]=\"secondaryTicks\"\n [primaryTickLabels]=\"primaryTickLabels\"\n [secondaryTickLabels]=\"secondaryTickLabels\"\n [tickLabelsOrientation]=\"tickLabelsOrientation\"\n [labelsViewEnabled]=\"labelsViewEnabled\"\n [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\">\n</igx-ticks>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxTicksComponent, selector: "igx-ticks", inputs: ["primaryTicks", "secondaryTicks", "primaryTickLabels", "secondaryTickLabels", "ticksOrientation", "tickLabelsOrientation", "maxValue", "minValue", "labelsViewEnabled", "labels", "tickLabelTemplateRef"] }, { kind: "component", type: IgxThumbLabelComponent, selector: "igx-thumb-label", inputs: ["value", "templateRef", "context", "type", "continuous", "deactiveState", "thumb"] }, { kind: "component", type: IgxSliderThumbComponent, selector: "igx-thumb", inputs: ["value", "continuous", "thumbLabelVisibilityDuration", "disabled", "onPan", "stepDistance", "step", "templateRef", "context", "type", "deactiveState"], outputs: ["thumbValueChange", "thumbChange", "hoverChange"] }, { kind: "pipe", type: IgxTickLabelsPipe, name: "spreadTickLabels" }] }); }
85027
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxSliderComponent, isStandalone: true, selector: "igx-slider", inputs: { id: "id", thumbLabelVisibilityDuration: "thumbLabelVisibilityDuration", type: "type", labels: "labels", step: "step", disabled: ["disabled", "disabled", booleanAttribute], continuous: ["continuous", "continuous", booleanAttribute], minValue: "minValue", maxValue: "maxValue", lowerBound: "lowerBound", upperBound: "upperBound", value: "value", primaryTicks: "primaryTicks", secondaryTicks: "secondaryTicks", showTicks: ["showTicks", "showTicks", booleanAttribute], primaryTickLabels: ["primaryTickLabels", "primaryTickLabels", booleanAttribute], secondaryTickLabels: ["secondaryTickLabels", "secondaryTickLabels", booleanAttribute], ticksOrientation: "ticksOrientation", tickLabelsOrientation: "tickLabelsOrientation", lowerValue: "lowerValue", upperValue: "upperValue" }, outputs: { valueChange: "valueChange", lowerValueChange: "lowerValueChange", upperValueChange: "upperValueChange", dragFinished: "dragFinished" }, host: { listeners: { "focus": "onFocus()", "pointerdown": "onPointerDown($event)", "pointerup": "onPointerUp($event)" }, properties: { "attr.role": "this.role", "class.igx-slider": "this.slierClass", "attr.id": "this.id", "attr.aria-valuemin": "this.valuemin", "attr.aria-valuemax": "this.valuemax", "attr.aria-readonly": "this.readonly", "class.igx-slider--disabled": "this.disabledClass" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSliderComponent, multi: true }], queries: [{ propertyName: "thumbFromTemplateRef", first: true, predicate: IgxThumbFromTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "thumbToTemplateRef", first: true, predicate: IgxThumbToTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "tickLabelTemplateRef", first: true, predicate: IgxTickLabelTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "trackRef", first: true, predicate: ["track"], descendants: true, static: true }, { propertyName: "ticks", first: true, predicate: ["ticks"], descendants: true, static: true }, { propertyName: "thumbs", predicate: IgxSliderThumbComponent, descendants: true }, { propertyName: "labelRefs", predicate: IgxThumbLabelComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<igx-ticks\n *ngIf=\"showTicks && showTopTicks\"\n ticksOrientation=\"top\"\n [primaryTicks]=\"primaryTicks\"\n [secondaryTicks]=\"secondaryTicks\"\n [primaryTickLabels]=\"primaryTickLabels\"\n [secondaryTickLabels]=\"secondaryTickLabels\"\n [tickLabelsOrientation]=\"tickLabelsOrientation\"\n [labelsViewEnabled]=\"labelsViewEnabled\"\n [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\">\n</igx-ticks>\n<div class=\"igx-slider__track\">\n <div class=\"igx-slider__track-inactive\"></div>\n <div #track class=\"igx-slider__track-fill\"></div>\n <div class=\"igx-slider__track-steps\">\n <svg width=\"100%\" height=\"100%\">\n <line #ticks x1=\"0\" y1=\"2\" x2=\"100%\" y2=\"2\"></line>\n </svg>\n </div>\n</div>\n<div class=\"igx-slider__thumbs\">\n <igx-thumb-label\n *ngIf=\"isRange\"\n type=\"from\"\n [value]=\"lowerLabel\"\n [templateRef]=\"thumbFromTemplateRef\"\n [continuous]=\"continuous\"\n [context]=\"context\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumb]=\"thumbFrom\"></igx-thumb-label>\n\n <igx-thumb\n *ngIf=\"isRange\"\n #thumbFrom\n type=\"from\"\n [value]=\"lowerLabel\"\n [disabled]=\"disabled\"\n [continuous]=\"continuous\"\n [onPan]=\"onPan\"\n [stepDistance]=\"stepDistance\"\n [step]=\"step\"\n [templateRef]=\"thumbFromTemplateRef\"\n [context]=\"context\"\n (thumbChange)=\"onThumbChange()\"\n (hoverChange)=\"onHoverChange($event)\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n\n <igx-thumb-label\n [value]=\"upperLabel\"\n type=\"to\"\n [templateRef]=\"thumbToTemplateRef\"\n [continuous]=\"continuous\"\n [context]=\"context\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumb]=\"thumbTo\"></igx-thumb-label>\n\n <igx-thumb\n #thumbTo\n type=\"to\"\n [value]=\"upperLabel\"\n [disabled]=\"disabled\"\n [continuous]=\"continuous\"\n [onPan]=\"onPan\"\n [stepDistance]=\"stepDistance\"\n [step]=\"step\"\n [templateRef]=\"thumbToTemplateRef\"\n [context]=\"context\"\n (thumbChange)=\"onThumbChange()\"\n (hoverChange)=\"onHoverChange($event)\"\n [deactiveState]=\"deactivateThumbLabel\"\n [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n</div>\n<igx-ticks\n *ngIf=\"showTicks && showBottomTicks\"\n ticksOrientation=\"bottom\"\n [primaryTicks]=\"primaryTicks\"\n [secondaryTicks]=\"secondaryTicks\"\n [primaryTickLabels]=\"primaryTickLabels\"\n [secondaryTickLabels]=\"secondaryTickLabels\"\n [tickLabelsOrientation]=\"tickLabelsOrientation\"\n [labelsViewEnabled]=\"labelsViewEnabled\"\n [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\">\n</igx-ticks>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxTicksComponent, selector: "igx-ticks", inputs: ["primaryTicks", "secondaryTicks", "primaryTickLabels", "secondaryTickLabels", "ticksOrientation", "tickLabelsOrientation", "maxValue", "minValue", "labelsViewEnabled", "labels", "tickLabelTemplateRef"] }, { kind: "component", type: IgxThumbLabelComponent, selector: "igx-thumb-label", inputs: ["value", "templateRef", "context", "type", "continuous", "deactiveState", "thumb"] }, { kind: "component", type: IgxSliderThumbComponent, selector: "igx-thumb", inputs: ["value", "continuous", "thumbLabelVisibilityDuration", "disabled", "onPan", "stepDistance", "step", "templateRef", "context", "type", "deactiveState"], outputs: ["thumbValueChange", "thumbChange", "thumbBlur", "hoverChange"] }, { kind: "pipe", type: IgxTickLabelsPipe, name: "spreadTickLabels" }] }); }
84999
85028
  }
85000
85029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxSliderComponent, decorators: [{
85001
85030
  type: Component,