@energycap/components 0.32.24 → 0.32.25

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.
@@ -4,9 +4,10 @@ import { delay, switchMap, takeUntil } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./../tooltip/tooltip.service";
6
6
  export class TooltipDirective {
7
- constructor(tooltipService, element) {
7
+ constructor(tooltipService, element, renderer2) {
8
8
  this.tooltipService = tooltipService;
9
9
  this.element = element;
10
+ this.renderer2 = renderer2;
10
11
  //TooltipConfig: receives all the tooltip options to overwrite the
11
12
  //default configuration of the tooltip
12
13
  this.tooltipConfig = undefined;
@@ -26,6 +27,10 @@ export class TooltipDirective {
26
27
  //Object with the tooltip options builded with the Input parameters
27
28
  //and use it in tooltipService - show()
28
29
  this.tooltipOptions = {};
30
+ /**Set when we show a tooltip, to allow us to unsubscribe to mouse move when hide fires.
31
+ * if we never showed the tooltip this will remain null and we won't have an event to unsubscribe to
32
+ */
33
+ this.mouseMoveUnsubscribe = null;
29
34
  }
30
35
  ngOnInit() {
31
36
  //checkInputsValue(): if there is an error it will prevent to execute
@@ -46,7 +51,9 @@ export class TooltipDirective {
46
51
  console.error('There are too many parameters or none parameter to config the tooltip options');
47
52
  }
48
53
  }
49
- //Detects where the mouse is to trigger the leave/hide process
54
+ /**Detects where the mouse is to trigger the leave/hide process
55
+ * This is a backstop protection against us missing the mouseleave event and leaving a hanging chad.
56
+ * On some browsers, and on some actions (especially scroll) the mouseLeave seems to never fire */
50
57
  onMouseMove(event) {
51
58
  let callCallback = false;
52
59
  if (this.contentRect) {
@@ -114,6 +121,7 @@ export class TooltipDirective {
114
121
  //tooltipPosition is never undefined, default value = "top-center"
115
122
  if (!this.tooltip) {
116
123
  this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
124
+ this.mouseMoveUnsubscribe = this.renderer2.listen(document, 'mousemove', this.onMouseMove.bind(this));
117
125
  }
118
126
  }
119
127
  hide() {
@@ -124,6 +132,9 @@ export class TooltipDirective {
124
132
  //Call the hide() from the tooltip component
125
133
  this.tooltip.hide();
126
134
  this.tooltip = undefined;
135
+ if (this.mouseMoveUnsubscribe) {
136
+ this.mouseMoveUnsubscribe();
137
+ }
127
138
  }
128
139
  //Interrupt the flow of mouseover with a delay and triggers the
129
140
  //flow to hide the tooltip with a delay
@@ -137,14 +148,14 @@ export class TooltipDirective {
137
148
  this.interrupt.next();
138
149
  }
139
150
  }
140
- TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, deps: [{ token: i1.TooltipService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
141
- TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
151
+ TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, deps: [{ token: i1.TooltipService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
152
+ TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
142
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, decorators: [{
143
154
  type: Directive,
144
155
  args: [{
145
156
  selector: '[ecTooltip]'
146
157
  }]
147
- }], ctorParameters: function () { return [{ type: i1.TooltipService }, { type: i0.ElementRef }]; }, propDecorators: { tooltipConfig: [{
158
+ }], ctorParameters: function () { return [{ type: i1.TooltipService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipConfig: [{
148
159
  type: Input
149
160
  }], tooltipText: [{
150
161
  type: Input
@@ -152,9 +163,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
152
163
  type: Input
153
164
  }], tooltipPosition: [{
154
165
  type: Input
155
- }], onMouseMove: [{
156
- type: HostListener,
157
- args: ['document:mousemove', ['$event']]
158
166
  }], onMouseOver: [{
159
167
  type: HostListener,
160
168
  args: ['mouseover']
@@ -162,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
162
170
  type: HostListener,
163
171
  args: ['mouseleave']
164
172
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwLWRpcmVjdGl2ZS90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBRy9GLE9BQU8sRUFBRSxPQUFPLEVBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLGdCQUFnQjtJQXVDM0IsWUFDVSxjQUE4QixFQUM5QixPQUFtQjtRQURuQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQXZDN0Isa0VBQWtFO1FBQ2xFLHNDQUFzQztRQUN0QixrQkFBYSxHQUFvQixTQUFTLENBQUE7UUFFMUQsb0VBQW9FO1FBQ3BELGdCQUFXLEdBQVksU0FBUyxDQUFDO1FBRWpELGdFQUFnRTtRQUNoRSwwQkFBMEI7UUFDVix5QkFBb0IsR0FBc0IsU0FBUyxDQUFDO1FBR3BFLHFFQUFxRTtRQUNyRSxrQ0FBa0M7UUFDbEIsb0JBQWUsR0FBb0IsWUFBWSxDQUFDO1FBSWhFLGdFQUFnRTtRQUVoRSxnQkFBZ0I7UUFDUixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNsQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFRdEMsbUVBQW1FO1FBQ25FLHVDQUF1QztRQUMvQixtQkFBYyxHQUFtQixFQUFFLENBQUE7SUFPeEMsQ0FBQztJQUVKLFFBQVE7UUFDTixxRUFBcUU7UUFD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Q0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0Qix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHlDQUF5QztJQUN6QyxXQUFXO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs2R0EvS1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7OEhBTWlCLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsV0FBVztzQkFBMUIsS0FBSztnQkFJVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkErREMsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnZDLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVztnQkFRbEIsT0FBTztzQkFEYixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50LCBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcFNlcnZpY2UgfSBmcm9tICcuLy4uL3Rvb2x0aXAvdG9vbHRpcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCxvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tlY1Rvb2x0aXBdJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvL1Rvb2x0aXBDb25maWc6IHJlY2VpdmVzIGFsbCB0aGUgdG9vbHRpcCBvcHRpb25zIHRvIG92ZXJ3cml0ZSB0aGVcclxuICAvL2RlZmF1bHQgY29uZmlndXJhdGlvbiBvZiB0aGUgdG9vbHRpcFxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwQ29uZmlnPzogVG9vbHRpcE9wdGlvbnMgPSB1bmRlZmluZWRcclxuXHJcbiAgLy9Ub29sdGlwVGV4dDogcmVjZWl2ZXMgcGxhaW4gdGV4dCB0byBkaXNwbGF5IGluIHRoZSBkZWZhdWx0IHRvb2x0aXBcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFRleHQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7IFxyXG5cclxuICAvL1Rvb2x0aXBDdXN0b21Db250ZW50OiByZWNlaXZlcyBhIHRlbXBsYXRlIHJlZmVyZW5jZSB0byBkaXNwbGF5XHJcbiAgLy9pbnRvIHRoZSB0b29sdGlwIGNvbnRlbnRcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcEN1c3RvbUNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gdW5kZWZpbmVkO1xyXG4gIFxyXG4gIFxyXG4gIC8vVGhpcyBJbnB1dCB3aWxsIHJlbWFpbiBhcyBJbnB1dCBiZWNhdXNlIHRvb2x0aXBQb3NpdGlvbiBpcyBub3QgcGFydFxyXG4gIC8vb2YgVG9vbHRpcE9wdGlvbnMgdHlwZSBvZiBvYmplY3RcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSBcInRvcC1jZW50ZXJcIjtcclxuXHJcblxyXG5cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gIC8vRXZlbnRzIHJlbGF0ZWRcclxuICBwcml2YXRlIG1vdXNlT3ZlciA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwcml2YXRlIGludGVycnVwdCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBoaWRlQ29tcGxldGVkID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIGNvbnRlbnRSZWN0OiBET01SZWN0IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gIC8vUmVmZXJlbmNlIHRvIFRvb2x0aXBDb21wb25lbnQsIHdpbGwgYmUgZGVmaW5lZCBiZWxvdyBpbiB0aGlzLnNob3coKVxyXG4gIHByaXZhdGUgdG9vbHRpcD86IFRvb2x0aXBDb21wb25lbnQ7XHJcblxyXG4gIC8vT2JqZWN0IHdpdGggdGhlIHRvb2x0aXAgb3B0aW9ucyBidWlsZGVkIHdpdGggdGhlIElucHV0IHBhcmFtZXRlcnNcclxuICAvL2FuZCB1c2UgaXQgaW4gdG9vbHRpcFNlcnZpY2UgLSBzaG93KClcclxuICBwcml2YXRlIHRvb2x0aXBPcHRpb25zPzpUb29sdGlwT3B0aW9ucyA9IHt9XHJcbiAgXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9vbHRpcFNlcnZpY2U6IFRvb2x0aXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy9jaGVja0lucHV0c1ZhbHVlKCk6IGlmIHRoZXJlIGlzIGFuIGVycm9yIGl0IHdpbGwgcHJldmVudCB0byBleGVjdXRlXHJcbiAgICAvL2FueSBjb2RlIHJlbGF0ZWQgd2l0aCB0aGUgdG9vbHRpcCBzZXR1cFxyXG4gICAgaWYodGhpcy5jaGVja0lucHV0c1ZhbHVlKCkpIHtcclxuICAgICAgLy9DcmVhdGUgdGhlIG9iamVjdCB3aXRoIHRoZSB0b29sdGlwIG9wdGlvbnMgcHJvdmlkZWQgYXMgQElucHV0c1xyXG4gICAgICB0aGlzLmNyZWF0ZVRvb2x0aXBPcHRpb25zKCk7XHJcblxyXG4gICAgICAvL01vdXNlT3ZlciBmbG93OiBzdGFydCB0aGUgcHJvY2VzcyBvZiBzaG93aW5nIHRoZSB0b29sdGlwXHJcbiAgICAgIC8vdW50aWwgdGhlIG1vdXNlIGxlYXZlcyB0aGUgYW5jaG9yIGVsZW1lbnQgd2l0aCB0aGlzLmludGVycnVwdFxyXG4gICAgICB0aGlzLm1vdXNlT3ZlclxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAodiA9PlxyXG4gICAgICAgICAgb2YodikucGlwZShcclxuICAgICAgICAgICAgZGVsYXkoMzAwKSwgLy9kZWxheXMgdGhlIHRpbWUgcHJldmlvdXMgb2Ygc2hvd2luZyB0aGUgdG9vbHRpcFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5pbnRlcnJ1cHQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93KCkpOyAvL0NhbGxzIHRoZSBmdW5jdGlvbiByZXNwb25zYWJsZSBvZiB1c2luZyB0aGUgdG9vbHRpcFNlcnZpY2VcclxuICBcclxuICAgICAgLy9Nb3VzZSBsZWF2ZSBmbG93OiBzdGFydCB0aGUgcHJvY2VzcyBvZiByZW1vdmluZyB0aGUgdG9vbHRpcCB3aGVuIHRoZSBtb3VzZSBpcyBhd2F5IG9mIHRoZSBhbmNob3IgZWxlbWVudFxyXG4gICAgICB0aGlzLmludGVycnVwdC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+IFxyXG4gICAgICAgICAgb2YodikucGlwZShcclxuICAgICAgICAgICAgZGVsYXkoNTApLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5oaWRlQ29tcGxldGVkKVxyXG4gICAgICAgICAgKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpOyAvL2hpZGUgdGhlIHRvb2x0aXAgYW5kIHRyaWdnZXJzIHRoZSBjb21wbGV0ZWQgY3ljbGUgZmxhZyB0aGlzLmhpZGVDb21wbGV0ZWRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIGFyZSB0b28gbWFueSBwYXJhbWV0ZXJzIG9yIG5vbmUgcGFyYW1ldGVyIHRvIGNvbmZpZyB0aGUgdG9vbHRpcCBvcHRpb25zJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0RldGVjdHMgd2hlcmUgdGhlIG1vdXNlIGlzIHRvIHRyaWdnZXIgdGhlIGxlYXZlL2hpZGUgcHJvY2Vzc1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pIFxyXG4gIHB1YmxpYyBvbk1vdXNlTW92ZShldmVudDpNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgY2FsbENhbGxiYWNrID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIGNhbGxDYWxsYmFjayA9IHRoaXMudG9vbHRpcFNlcnZpY2Uub25Nb3ZlKGV2ZW50LCB0aGlzLmNvbnRlbnRSZWN0ISk7XHJcbiAgICAgIGlmKGNhbGxDYWxsYmFjaykge1xyXG4gICAgICAgIC8vdHJpZ2dlciBvbiBoaWRlIHByb2Nlc3NcclxuICAgICAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7IFxyXG4gICAgICAgIC8vcmVzZXQgdGhlIGNvbnRlbnRSZWMgZm9yIGEgbmV3IHRvb2x0aXBcclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vVHJpZ2dlciB0aGUgcHJvY2VzcyB0byBzaG93IHRoZSB0b29sdGlwXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdmVyJylcclxuICBwdWJsaWMgb25Nb3VzZU92ZXIoKSB7XHJcbiAgICB0aGlzLm1vdXNlT3Zlci5uZXh0KCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8vVHJpZ2dlciB0aGUgcHJvY2VzcyB0byBoaWRlIGFuZCBsYXRlciB0aGUgcHJvY2Vzc1xyXG4gIC8vdG8gbWFyayBhcyBjb21wbGV0ZSB0aGUgY3ljbGUgb2Ygc2hvdyBhbmQgaGlkZSB0aGUgdG9vbHRpcFxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxyXG4gIHB1YmxpYyBvbkxlYXZlKCkge1xyXG4gICAgdGhpcy5pbnRlcnJ1cHQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0lucHV0c1ZhbHVlKCk6Ym9vbGVhbiB7XHJcbiAgICBsZXQgcGFyYW1ldGVyc1dpdGhWYWx1ZSA9IDA7XHJcbiAgICBpZih0aGlzLnRvb2x0aXBUZXh0KSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfSBcclxuICAgIGlmKHRoaXMudG9vbHRpcEN1c3RvbUNvbnRlbnQpIHtcclxuICAgICAgcGFyYW1ldGVyc1dpdGhWYWx1ZSA9IHBhcmFtZXRlcnNXaXRoVmFsdWUgKyAxXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnRvb2x0aXBDb25maWcpIHtcclxuICAgICAgcGFyYW1ldGVyc1dpdGhWYWx1ZSA9IHBhcmFtZXRlcnNXaXRoVmFsdWUgKyAxXHJcbiAgICB9XHJcbiAgICBpZihwYXJhbWV0ZXJzV2l0aFZhbHVlID09PSAxKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBjcmVhdGVUb29sdGlwT3B0aW9uc1xyXG4gICAqIHdpbGwgb25seSBiZSBleGVjdXRlZCBhZnRlciBtYW5hZ2VFcnJvcigpIHZlcmlmaWVzIFxyXG4gICAqIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBub3Qgb3ZlcmxhcHBpbmcgZWFjaCBvdGhlclxyXG4gICAqIGFuZCBpdCB3aWxsIGJ1aWxkIHRoZSB0b29sdGlwT3B0aW9ucyBvYmplY3RcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZVRvb2x0aXBPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IHtcclxuICAgICAgaWQ6IGB0b29sdGlwXyR7dGhpcy50b29sdGlwQ29uZmlnPy5pZD8gdGhpcy50b29sdGlwQ29uZmlnPy5pZDogJyd9YCxcclxuICAgICAgdGV4dDogdGhpcy50b29sdGlwQ29uZmlnPy50ZXh0IHx8IHRoaXMudG9vbHRpcFRleHQsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnRvb2x0aXBDb25maWc/LnRpdGxlLFxyXG4gICAgICBzdWJ0aXRsZTogdGhpcy50b29sdGlwQ29uZmlnPy5zdWJ0aXRsZSxcclxuICAgICAgY3VzdG9tQ29udGVudDogdGhpcy50b29sdGlwQ29uZmlnPy5jdXN0b21Db250ZW50IHx8IHRoaXMudG9vbHRpcEN1c3RvbUNvbnRlbnQsXHJcbiAgICAgIGRpc21pc3NpYmxlOiB0aGlzLnRvb2x0aXBDb25maWc/LmRpc21pc3NpYmxlIHx8IGZhbHNlLFxyXG4gICAgICBtYXhXaWR0aDogdGhpcy50b29sdGlwQ29uZmlnPy5tYXhXaWR0aCxcclxuICAgICAgd2lkdGg6IHRoaXMudG9vbHRpcENvbmZpZz8ud2lkdGgsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy50b29sdGlwQ29uZmlnPy5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgc2hvdygpOnZvaWQge1xyXG4gICAgLy9SZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgd2hlcmUgdG8gdG9vbHRpcCBpcyBhdHRhY2hlZFxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgLy9jb250ZW50UmVjdCB3aWxsIGJlIGFzc2luZyBvbmx5IGFmdGVyIHNob3dpbmcgYSB0b29sdGlwL3BvcG92ZXIgYW5kIGl0IHdpbGwgYmVcclxuICAgIC8vcmVzZXQgYWZ0ZXIgaGlkZSB0aGUgc2FtZSB0b29sdGlwL3BvcG92ZXJcclxuICAgIHRoaXMuY29udGVudFJlY3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIC8vdG9vbHRpcFBvc2l0aW9uIGlzIG5ldmVyIHVuZGVmaW5lZCwgZGVmYXVsdCB2YWx1ZSA9IFwidG9wLWNlbnRlclwiXHJcbiAgICBpZighdGhpcy50b29sdGlwKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMudG9vbHRpcFNlcnZpY2Uuc2hvdyhlbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzLnRvb2x0aXBQb3NpdGlvbiwgdGhpcy50b29sdGlwT3B0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZSgpOnZvaWQge1xyXG4gICAgLy9UaGVyZSBpcyBhIHRpbWluZyBpc3N1ZSBiZXR3ZWVuIHRoZSBzaG93IC0gaGlkZSB3aXRoIFxyXG4gICAgLy9saW5lciB0b29sdGlwIGVsZW1lbnRzLCBzbyB0aGUgYmVsb3cgbGluZVxyXG4gICAgLy9tYWtlcyBzdXJlIHRoZSBhcHAgZG9lc24ndCBicmVha1xyXG4gICAgaWYodGhpcy50b29sdGlwKSB7XHJcbiAgICAgIC8vQ2FsbCB0aGUgaGlkZSgpIGZyb20gdGhlIHRvb2x0aXAgY29tcG9uZW50XHJcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgICAgLy9JbnRlcnJ1cHQgdGhlIGZsb3cgb2YgbW91c2VvdmVyIHdpdGggYSBkZWxheSBhbmQgdHJpZ2dlcnMgdGhlIFxyXG4gICAgICAvL2Zsb3cgdG8gaGlkZSB0aGUgdG9vbHRpcCB3aXRoIGEgZGVsYXkgXHJcbiAgICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICAgICAgLy9Xb3JrIGFzIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGUgZmxvdyBvZiBzaG93IGFuZCBoaWRlIGhhcyBiZWVuIGNvbXBsZXRlZFxyXG4gICAgICB0aGlzLmhpZGVDb21wbGV0ZWQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLy9XaGVuIHRoZSBlbGVtZW50IHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkIGRpc2FwcGVhcnNcclxuICAvL3RoZSB0b29sdGlwIHNob3VsZCBiZSBkZXN0cm95IGFzIHdlbGwgIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICB0aGlzLmludGVycnVwdC5uZXh0KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwLWRpcmVjdGl2ZS90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRzFHLE9BQU8sRUFBRSxPQUFPLEVBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxjQUE4QixFQUM5QixPQUFtQixFQUNuQixTQUFvQjtRQUZwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUM5QixrRUFBa0U7UUFDbEUsc0NBQXNDO1FBQ3RCLGtCQUFhLEdBQW9CLFNBQVMsQ0FBQTtRQUUxRCxvRUFBb0U7UUFDcEQsZ0JBQVcsR0FBWSxTQUFTLENBQUM7UUFFakQsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUNWLHlCQUFvQixHQUFzQixTQUFTLENBQUM7UUFHcEUscUVBQXFFO1FBQ3JFLGtDQUFrQztRQUNsQixvQkFBZSxHQUFvQixZQUFZLENBQUM7UUFJaEUsZ0VBQWdFO1FBRWhFLGdCQUFnQjtRQUNSLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVF0QyxtRUFBbUU7UUFDbkUsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQW1CLEVBQUUsQ0FB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Vix1REFBdUQ7UUFDdkQsMkNBQTJDO1FBQzNDLGtDQUFrQztRQUNsQyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZiw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUV6QixJQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBQztnQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7U0FDRjtRQUVELGdFQUFnRTtRQUNoRSx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0Qix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHlDQUF5QztJQUN6QyxXQUFXO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs2R0EzTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7c0pBTWlCLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsV0FBVztzQkFBMUIsS0FBSztnQkFJVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkFvRkMsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXO2dCQVFsQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgVG9vbHRpcE9wdGlvbnMsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4vLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3Qsb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUb29sdGlwXSdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLy9Ub29sdGlwQ29uZmlnOiByZWNlaXZlcyBhbGwgdGhlIHRvb2x0aXAgb3B0aW9ucyB0byBvdmVyd3JpdGUgdGhlXHJcbiAgLy9kZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRvb2x0aXBcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcENvbmZpZz86IFRvb2x0aXBPcHRpb25zID0gdW5kZWZpbmVkXHJcblxyXG4gIC8vVG9vbHRpcFRleHQ6IHJlY2VpdmVzIHBsYWluIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgZGVmYXVsdCB0b29sdGlwXHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBUZXh0Pzogc3RyaW5nID0gdW5kZWZpbmVkOyBcclxuXHJcbiAgLy9Ub29sdGlwQ3VzdG9tQ29udGVudDogcmVjZWl2ZXMgYSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gZGlzcGxheVxyXG4gIC8vaW50byB0aGUgdG9vbHRpcCBjb250ZW50XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBDdXN0b21Db250ZW50PzogVGVtcGxhdGVSZWY8YW55PiA9IHVuZGVmaW5lZDtcclxuICBcclxuICBcclxuICAvL1RoaXMgSW5wdXQgd2lsbCByZW1haW4gYXMgSW5wdXQgYmVjYXVzZSB0b29sdGlwUG9zaXRpb24gaXMgbm90IHBhcnRcclxuICAvL29mIFRvb2x0aXBPcHRpb25zIHR5cGUgb2Ygb2JqZWN0XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gXCJ0b3AtY2VudGVyXCI7XHJcblxyXG5cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuICAvL0V2ZW50cyByZWxhdGVkXHJcbiAgcHJpdmF0ZSBtb3VzZU92ZXIgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSBpbnRlcnJ1cHQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgaGlkZUNvbXBsZXRlZCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBjb250ZW50UmVjdDogRE9NUmVjdCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuICAvL1JlZmVyZW5jZSB0byBUb29sdGlwQ29tcG9uZW50LCB3aWxsIGJlIGRlZmluZWQgYmVsb3cgaW4gdGhpcy5zaG93KClcclxuICBwcml2YXRlIHRvb2x0aXA/OiBUb29sdGlwQ29tcG9uZW50O1xyXG5cclxuICAvL09iamVjdCB3aXRoIHRoZSB0b29sdGlwIG9wdGlvbnMgYnVpbGRlZCB3aXRoIHRoZSBJbnB1dCBwYXJhbWV0ZXJzXHJcbiAgLy9hbmQgdXNlIGl0IGluIHRvb2x0aXBTZXJ2aWNlIC0gc2hvdygpXHJcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucz86VG9vbHRpcE9wdGlvbnMgPSB7fVxyXG4gIFxyXG5cclxuICAvKipTZXQgd2hlbiB3ZSBzaG93IGEgdG9vbHRpcCwgdG8gYWxsb3cgdXMgdG8gdW5zdWJzY3JpYmUgdG8gbW91c2UgbW92ZSB3aGVuIGhpZGUgZmlyZXMuXHJcbiAgICogaWYgd2UgbmV2ZXIgc2hvd2VkIHRoZSB0b29sdGlwIHRoaXMgd2lsbCByZW1haW4gbnVsbCBhbmQgd2Ugd29uJ3QgaGF2ZSBhbiBldmVudCB0byB1bnN1YnNjcmliZSB0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbW91c2VNb3ZlVW5zdWJzY3JpYmU6ICgoKT0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b29sdGlwU2VydmljZTogVG9vbHRpcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL2NoZWNrSW5wdXRzVmFsdWUoKTogaWYgdGhlcmUgaXMgYW4gZXJyb3IgaXQgd2lsbCBwcmV2ZW50IHRvIGV4ZWN1dGVcclxuICAgIC8vYW55IGNvZGUgcmVsYXRlZCB3aXRoIHRoZSB0b29sdGlwIHNldHVwXHJcbiAgICBpZih0aGlzLmNoZWNrSW5wdXRzVmFsdWUoKSkge1xyXG4gICAgICAvL0NyZWF0ZSB0aGUgb2JqZWN0IHdpdGggdGhlIHRvb2x0aXAgb3B0aW9ucyBwcm92aWRlZCBhcyBASW5wdXRzXHJcbiAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcE9wdGlvbnMoKTtcclxuXHJcbiAgICAgIC8vTW91c2VPdmVyIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHNob3dpbmcgdGhlIHRvb2x0aXBcclxuICAgICAgLy91bnRpbCB0aGUgbW91c2UgbGVhdmVzIHRoZSBhbmNob3IgZWxlbWVudCB3aXRoIHRoaXMuaW50ZXJydXB0XHJcbiAgICAgIHRoaXMubW91c2VPdmVyXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+XHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSgzMDApLCAvL2RlbGF5cyB0aGUgdGltZSBwcmV2aW91cyBvZiBzaG93aW5nIHRoZSB0b29sdGlwXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmludGVycnVwdClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3coKSk7IC8vQ2FsbHMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNhYmxlIG9mIHVzaW5nIHRoZSB0b29sdGlwU2VydmljZVxyXG4gIFxyXG4gICAgICAvL01vdXNlIGxlYXZlIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIHRoZSB0b29sdGlwIHdoZW4gdGhlIG1vdXNlIGlzIGF3YXkgb2YgdGhlIGFuY2hvciBlbGVtZW50XHJcbiAgICAgIHRoaXMuaW50ZXJydXB0LnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKHYgPT4gXHJcbiAgICAgICAgICBvZih2KS5waXBlKFxyXG4gICAgICAgICAgICBkZWxheSg1MCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmhpZGVDb21wbGV0ZWQpXHJcbiAgICAgICAgICApKVxyXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7IC8vaGlkZSB0aGUgdG9vbHRpcCBhbmQgdHJpZ2dlcnMgdGhlIGNvbXBsZXRlZCBjeWNsZSBmbGFnIHRoaXMuaGlkZUNvbXBsZXRlZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgYXJlIHRvbyBtYW55IHBhcmFtZXRlcnMgb3Igbm9uZSBwYXJhbWV0ZXIgdG8gY29uZmlnIHRoZSB0b29sdGlwIG9wdGlvbnMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkRldGVjdHMgd2hlcmUgdGhlIG1vdXNlIGlzIHRvIHRyaWdnZXIgdGhlIGxlYXZlL2hpZGUgcHJvY2Vzc1xyXG4gICAqIFRoaXMgaXMgYSBiYWNrc3RvcCBwcm90ZWN0aW9uIGFnYWluc3QgdXMgbWlzc2luZyB0aGUgbW91c2VsZWF2ZSBldmVudCBhbmQgbGVhdmluZyBhIGhhbmdpbmcgY2hhZC5cclxuICAgKiBPbiBzb21lIGJyb3dzZXJzLCBhbmQgb24gc29tZSBhY3Rpb25zIChlc3BlY2lhbGx5IHNjcm9sbCkgdGhlIG1vdXNlTGVhdmUgc2VlbXMgdG8gbmV2ZXIgZmlyZSAqL1xyXG4gIHB1YmxpYyBvbk1vdXNlTW92ZShldmVudDpNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgY2FsbENhbGxiYWNrID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XHJcbiAgICAgIGNhbGxDYWxsYmFjayA9IHRoaXMudG9vbHRpcFNlcnZpY2Uub25Nb3ZlKGV2ZW50LCB0aGlzLmNvbnRlbnRSZWN0ISk7XHJcbiAgICAgIGlmKGNhbGxDYWxsYmFjaykge1xyXG4gICAgICAgIC8vdHJpZ2dlciBvbiBoaWRlIHByb2Nlc3NcclxuICAgICAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7IFxyXG4gICAgICAgIC8vcmVzZXQgdGhlIGNvbnRlbnRSZWMgZm9yIGEgbmV3IHRvb2x0aXBcclxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gc2hvdyB0aGUgdG9vbHRpcFxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXHJcbiAgcHVibGljIG9uTW91c2VPdmVyKCkge1xyXG4gICAgdGhpcy5tb3VzZU92ZXIubmV4dCgpO1xyXG4gIH1cclxuICBcclxuICAvL1RyaWdnZXIgdGhlIHByb2Nlc3MgdG8gaGlkZSBhbmQgbGF0ZXIgdGhlIHByb2Nlc3NcclxuICAvL3RvIG1hcmsgYXMgY29tcGxldGUgdGhlIGN5Y2xlIG9mIHNob3cgYW5kIGhpZGUgdGhlIHRvb2x0aXBcclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICBwdWJsaWMgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJbnB1dHNWYWx1ZSgpOmJvb2xlYW4ge1xyXG4gICAgbGV0IHBhcmFtZXRlcnNXaXRoVmFsdWUgPSAwO1xyXG4gICAgaWYodGhpcy50b29sdGlwVGV4dCkge1xyXG4gICAgICBwYXJhbWV0ZXJzV2l0aFZhbHVlID0gcGFyYW1ldGVyc1dpdGhWYWx1ZSArIDFcclxuICAgIH0gXHJcbiAgICBpZih0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50KSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy50b29sdGlwQ29uZmlnKSB7XHJcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxyXG4gICAgfVxyXG4gICAgaWYocGFyYW1ldGVyc1dpdGhWYWx1ZSA9PT0gMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogY3JlYXRlVG9vbHRpcE9wdGlvbnNcclxuICAgKiB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgYWZ0ZXIgbWFuYWdlRXJyb3IoKSB2ZXJpZmllcyBcclxuICAgKiBpZiB0aGUgcGFyYW1ldGVycyBhcmUgbm90IG92ZXJsYXBwaW5nIGVhY2ggb3RoZXJcclxuICAgKiBhbmQgaXQgd2lsbCBidWlsZCB0aGUgdG9vbHRpcE9wdGlvbnMgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSB7XHJcbiAgICAgIGlkOiBgdG9vbHRpcF8ke3RoaXMudG9vbHRpcENvbmZpZz8uaWQ/IHRoaXMudG9vbHRpcENvbmZpZz8uaWQ6ICcnfWAsXHJcbiAgICAgIHRleHQ6IHRoaXMudG9vbHRpcENvbmZpZz8udGV4dCB8fCB0aGlzLnRvb2x0aXBUZXh0LFxyXG4gICAgICB0aXRsZTogdGhpcy50b29sdGlwQ29uZmlnPy50aXRsZSxcclxuICAgICAgc3VidGl0bGU6IHRoaXMudG9vbHRpcENvbmZpZz8uc3VidGl0bGUsXHJcbiAgICAgIGN1c3RvbUNvbnRlbnQ6IHRoaXMudG9vbHRpcENvbmZpZz8uY3VzdG9tQ29udGVudCB8fCB0aGlzLnRvb2x0aXBDdXN0b21Db250ZW50LFxyXG4gICAgICBkaXNtaXNzaWJsZTogdGhpcy50b29sdGlwQ29uZmlnPy5kaXNtaXNzaWJsZSB8fCBmYWxzZSxcclxuICAgICAgbWF4V2lkdGg6IHRoaXMudG9vbHRpcENvbmZpZz8ubWF4V2lkdGgsXHJcbiAgICAgIHdpZHRoOiB0aGlzLnRvb2x0aXBDb25maWc/LndpZHRoLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMudG9vbHRpcENvbmZpZz8uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNob3coKTp2b2lkIHtcclxuICAgIC8vUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHdoZXJlIHRvIHRvb2x0aXAgaXMgYXR0YWNoZWRcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIC8vY29udGVudFJlY3Qgd2lsbCBiZSBhc3Npbmcgb25seSBhZnRlciBzaG93aW5nIGEgdG9vbHRpcC9wb3BvdmVyIGFuZCBpdCB3aWxsIGJlXHJcbiAgICAvL3Jlc2V0IGFmdGVyIGhpZGUgdGhlIHNhbWUgdG9vbHRpcC9wb3BvdmVyXHJcbiAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAvL3Rvb2x0aXBQb3NpdGlvbiBpcyBuZXZlciB1bmRlZmluZWQsIGRlZmF1bHQgdmFsdWUgPSBcInRvcC1jZW50ZXJcIlxyXG4gICAgaWYoIXRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLnNob3coZWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcy50b29sdGlwUG9zaXRpb24sIHRoaXMudG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICB0aGlzLm1vdXNlTW92ZVVuc3Vic2NyaWJlID0gdGhpcy5yZW5kZXJlcjIubGlzdGVuKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZSgpOnZvaWQge1xyXG4gICAgLy9UaGVyZSBpcyBhIHRpbWluZyBpc3N1ZSBiZXR3ZWVuIHRoZSBzaG93IC0gaGlkZSB3aXRoIFxyXG4gICAgLy9saW5lciB0b29sdGlwIGVsZW1lbnRzLCBzbyB0aGUgYmVsb3cgbGluZVxyXG4gICAgLy9tYWtlcyBzdXJlIHRoZSBhcHAgZG9lc24ndCBicmVha1xyXG4gICAgaWYodGhpcy50b29sdGlwKSB7XHJcbiAgICAgIC8vQ2FsbCB0aGUgaGlkZSgpIGZyb20gdGhlIHRvb2x0aXAgY29tcG9uZW50XHJcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHVuZGVmaW5lZDtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUpe1xyXG4gICAgICAgIHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vSW50ZXJydXB0IHRoZSBmbG93IG9mIG1vdXNlb3ZlciB3aXRoIGEgZGVsYXkgYW5kIHRyaWdnZXJzIHRoZSBcclxuICAgIC8vZmxvdyB0byBoaWRlIHRoZSB0b29sdGlwIHdpdGggYSBkZWxheSBcclxuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICAgIC8vV29yayBhcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIGZsb3cgb2Ygc2hvdyBhbmQgaGlkZSBoYXMgYmVlbiBjb21wbGV0ZWRcclxuICAgIHRoaXMuaGlkZUNvbXBsZXRlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvL1doZW4gdGhlIGVsZW1lbnQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQgZGlzYXBwZWFyc1xyXG4gIC8vdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGRlc3Ryb3kgYXMgd2VsbCAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -9625,9 +9625,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
9625
9625
  }] } });
9626
9626
 
9627
9627
  class TooltipDirective {
9628
- constructor(tooltipService, element) {
9628
+ constructor(tooltipService, element, renderer2) {
9629
9629
  this.tooltipService = tooltipService;
9630
9630
  this.element = element;
9631
+ this.renderer2 = renderer2;
9631
9632
  //TooltipConfig: receives all the tooltip options to overwrite the
9632
9633
  //default configuration of the tooltip
9633
9634
  this.tooltipConfig = undefined;
@@ -9647,6 +9648,10 @@ class TooltipDirective {
9647
9648
  //Object with the tooltip options builded with the Input parameters
9648
9649
  //and use it in tooltipService - show()
9649
9650
  this.tooltipOptions = {};
9651
+ /**Set when we show a tooltip, to allow us to unsubscribe to mouse move when hide fires.
9652
+ * if we never showed the tooltip this will remain null and we won't have an event to unsubscribe to
9653
+ */
9654
+ this.mouseMoveUnsubscribe = null;
9650
9655
  }
9651
9656
  ngOnInit() {
9652
9657
  //checkInputsValue(): if there is an error it will prevent to execute
@@ -9667,7 +9672,9 @@ class TooltipDirective {
9667
9672
  console.error('There are too many parameters or none parameter to config the tooltip options');
9668
9673
  }
9669
9674
  }
9670
- //Detects where the mouse is to trigger the leave/hide process
9675
+ /**Detects where the mouse is to trigger the leave/hide process
9676
+ * This is a backstop protection against us missing the mouseleave event and leaving a hanging chad.
9677
+ * On some browsers, and on some actions (especially scroll) the mouseLeave seems to never fire */
9671
9678
  onMouseMove(event) {
9672
9679
  let callCallback = false;
9673
9680
  if (this.contentRect) {
@@ -9736,6 +9743,7 @@ class TooltipDirective {
9736
9743
  //tooltipPosition is never undefined, default value = "top-center"
9737
9744
  if (!this.tooltip) {
9738
9745
  this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
9746
+ this.mouseMoveUnsubscribe = this.renderer2.listen(document, 'mousemove', this.onMouseMove.bind(this));
9739
9747
  }
9740
9748
  }
9741
9749
  hide() {
@@ -9746,6 +9754,9 @@ class TooltipDirective {
9746
9754
  //Call the hide() from the tooltip component
9747
9755
  this.tooltip.hide();
9748
9756
  this.tooltip = undefined;
9757
+ if (this.mouseMoveUnsubscribe) {
9758
+ this.mouseMoveUnsubscribe();
9759
+ }
9749
9760
  }
9750
9761
  //Interrupt the flow of mouseover with a delay and triggers the
9751
9762
  //flow to hide the tooltip with a delay
@@ -9759,14 +9770,14 @@ class TooltipDirective {
9759
9770
  this.interrupt.next();
9760
9771
  }
9761
9772
  }
9762
- TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, deps: [{ token: TooltipService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
9763
- TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
9773
+ TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, deps: [{ token: TooltipService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
9774
+ TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
9764
9775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, decorators: [{
9765
9776
  type: Directive,
9766
9777
  args: [{
9767
9778
  selector: '[ecTooltip]'
9768
9779
  }]
9769
- }], ctorParameters: function () { return [{ type: TooltipService }, { type: i0.ElementRef }]; }, propDecorators: { tooltipConfig: [{
9780
+ }], ctorParameters: function () { return [{ type: TooltipService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipConfig: [{
9770
9781
  type: Input
9771
9782
  }], tooltipText: [{
9772
9783
  type: Input
@@ -9774,9 +9785,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
9774
9785
  type: Input
9775
9786
  }], tooltipPosition: [{
9776
9787
  type: Input
9777
- }], onMouseMove: [{
9778
- type: HostListener,
9779
- args: ['document:mousemove', ['$event']]
9780
9788
  }], onMouseOver: [{
9781
9789
  type: HostListener,
9782
9790
  args: ['mouseover']