@tetacom/svg-charts 1.1.12 → 1.1.13

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.
@@ -1,4 +1,4 @@
1
- import { ElementRef, NgZone, OnDestroy, SimpleChanges } from '@angular/core';
1
+ import { ElementRef, NgZone, OnDestroy } from '@angular/core';
2
2
  import { ZoomService } from '../service/zoom.service';
3
3
  import { IChartConfig } from '../model/i-chart-config';
4
4
  import { Axis } from '../core/axis/axis';
@@ -21,10 +21,8 @@ export declare class ZoomableDirective implements OnDestroy {
21
21
  private alive;
22
22
  private currentTransform;
23
23
  private currentSelection;
24
- private originScale;
25
24
  constructor(elementRef: ElementRef, zoomService: ZoomService, broadcastService: BroadcastService, zone: NgZone);
26
25
  ngOnInit(): void;
27
- ngOnChanges(changes: SimpleChanges): void;
28
26
  zoomed: (event: D3ZoomEvent<any, any>) => void;
29
27
  ngAfterViewInit(): void;
30
28
  ngOnDestroy(): void;
@@ -14,14 +14,16 @@ export interface IChartConfig {
14
14
  type: ZoomType;
15
15
  axisIndex?: number;
16
16
  syncChannel?: string;
17
- limit?: number;
17
+ min?: number;
18
+ max?: number;
18
19
  };
19
20
  brush?: {
20
21
  enable?: boolean;
21
22
  type: BrushType;
22
23
  from?: number;
23
24
  to?: number;
24
- limit?: number;
25
+ min?: number;
26
+ max?: number;
25
27
  };
26
28
  legend?: {
27
29
  enable?: boolean;
@@ -6,8 +6,8 @@ import { ZoomType } from '../model/enum/zoom-type';
6
6
  import { AxisOrientation } from '../model/enum/axis-orientation';
7
7
  import { ZoomMessage } from '../model/i-broadcast-message';
8
8
  import { BrushType } from '../model/enum/brush-type';
9
- import { debounceTime, tap, throttleTime } from 'rxjs/operators';
10
- import { animationFrameScheduler, filter, takeWhile } from 'rxjs';
9
+ import { debounceTime, tap } from 'rxjs/operators';
10
+ import { filter, takeWhile } from 'rxjs';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "../service/zoom.service";
13
13
  import * as i2 from "../service/broadcast.service";
@@ -53,8 +53,6 @@ export class ZoomableDirective {
53
53
  this.zoomable = true;
54
54
  }
55
55
  }
56
- ngOnChanges(changes) {
57
- }
58
56
  ngAfterViewInit() {
59
57
  const enable = this.axis?.options?.zoom && this.axis?.options.visible || this.config?.zoom?.enable;
60
58
  if (!enable) {
@@ -63,7 +61,6 @@ export class ZoomableDirective {
63
61
  this._element = d3.select(this.elementRef.nativeElement);
64
62
  this.zoom = d3
65
63
  .zoom()
66
- .scaleExtent([0, Infinity])
67
64
  .extent([
68
65
  [0, 0],
69
66
  [this.size.width, this.size.height],
@@ -71,26 +68,26 @@ export class ZoomableDirective {
71
68
  const commonZoomAxis = Axis.createAxis(this.config?.zoom.type === ZoomType.x ? AxisOrientation.x : AxisOrientation.y, this.config, 0, true);
72
69
  this.zoomAxis = this.axis ?? commonZoomAxis;
73
70
  if (enable) {
71
+ const maxZoom = this.config.zoom?.max ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.max : 0;
72
+ const minZoom = this.config.zoom?.min ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.min : Infinity;
73
+ this.zoom.scaleExtent([maxZoom, minZoom]);
74
+ console.log(this.zoom.scaleExtent());
74
75
  this.zoom.on('start zoom end', this.zoomed);
75
76
  this._element.call(this.zoom);
76
77
  }
77
78
  // Subscribe to zoom events
78
- this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(filter((m) => m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent), debounceTime(50), filter((m) => {
79
+ this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(filter((m) => m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent), debounceTime(30), filter((m) => {
79
80
  return this.zoomAxis.index === m.message?.axis?.index && this.zoomAxis.orientation === m.message?.axis?.orientation;
80
81
  }), tap((m) => {
81
82
  const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
82
83
  if (currentTransform !== m.message.event.transform) {
83
- if (this.zoomAxis.isFake && !m.message.axis.isFake || !this.zoomAxis.isFake && m.message.axis.isFake) {
84
- this._element.call(this.zoom.transform, m.message.event.transform, null, {});
85
- return;
86
- }
87
- this._element.transition().call(this.zoom.transform, m.message.event.transform, null, {});
84
+ this._element.call(this.zoom.transform, m.message.event.transform, null, {});
88
85
  }
89
86
  }), takeWhile((_) => this.alive)).subscribe();
90
87
  // Subscribe to brush events x or y
91
88
  if ((this.config.brush?.type === BrushType.x && this.zoomAxis.orientation === AxisOrientation.x) ||
92
89
  (this.config.brush?.type === BrushType.y && this.zoomAxis.orientation === AxisOrientation.y)) {
93
- this.broadcastService.subscribeToBrush(this.config?.zoom.syncChannel).pipe(throttleTime(0, animationFrameScheduler, { leading: false, trailing: true }), filter((m) => Boolean(m.message.selection)), tap((m) => {
90
+ this.broadcastService.subscribeToBrush(this.config?.zoom.syncChannel).pipe(debounceTime(30), filter((m) => Boolean(m.message.selection)), tap((m) => {
94
91
  const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
95
92
  if (!m.message.event && this.currentSelection && currentTransform.k !== 1) {
96
93
  return;
@@ -124,7 +121,7 @@ export class ZoomableDirective {
124
121
  }
125
122
  }
126
123
  ZoomableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.BroadcastService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
127
- ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, usesOnChanges: true, ngImport: i0 });
124
+ ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, ngImport: i0 });
128
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, decorators: [{
129
126
  type: Directive,
130
127
  args: [{
@@ -142,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
142
139
  type: HostBinding,
143
140
  args: ['class.zoomable']
144
141
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBb0MsTUFBTSxlQUFlLENBQUM7QUFHM0csT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBa0IsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBS2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFpQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLElBQVk7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWZpQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hELFVBQUssR0FBRyxJQUFJLENBQUM7UUFFYixxQkFBZ0IsR0FBRyxZQUFZLENB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QUFJLEVBQ0osRUFBRSxDQUNILENBQUM7SUFDSixDQUFDOzs4R0FsTVUsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjsrS0FFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVpQyxRQUFRO3NCQUE5QyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0QzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIHpvb21JZGVudGl0eX0gZnJvbSAnZDMnO1xuaW1wb3J0IHtab29tVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS96b29tLXR5cGUnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge0JydXNoTWVzc2FnZSwgSUJyb2FkY2FzdE1lc3NhZ2UsIFpvb21NZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7QnJ1c2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YXAsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHthbmltYXRpb25GcmFtZVNjaGVkdWxlciwgZmlsdGVyLCBxdWV1ZVNjaGVkdWxlciwgdGFrZVdoaWxlfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RldGFab29tYWJsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBab29tYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbmZpZz86IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYXhpcz86IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU/OiBET01SZWN0O1xuICBASW5wdXQoKSBicnVzaFNjYWxlPzogYW55O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muem9vbWFibGUnKSBwcml2YXRlIHpvb21hYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZWxlbWVudDogZDMuU2VsZWN0aW9uPFNWR0VsZW1lbnQsIGFueSwgYW55LCBhbnk+O1xuICBwcml2YXRlIHpvb21BeGlzOiBBeGlzO1xuICBwcml2YXRlIHpvb206IFpvb21CZWhhdmlvcjxhbnksIGFueT47XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuXG4gIHByaXZhdGUgY3VycmVudFRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgcHJpdmF0ZSBjdXJyZW50U2VsZWN0aW9uO1xuICBwcml2YXRlIG9yaWdpblNjYWxlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZSxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgdGhpcy56b29tYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICB9XG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGV2ZW50LnNvdXJjZUV2ZW50KS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRyYW5zZm9ybSA9PT0gZXZlbnQudHJhbnNmb3JtICYmIGV2ZW50LnR5cGUgIT09ICdlbmQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy56b29tQXhpcy5leHRyZW1lcyk7XG5cbiAgICAgICAgbGV0IGRvbWFpbiA9IHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnkgP1xuICAgICAgICAgIGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpIDpcbiAgICAgICAgICBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbmV3IFpvb21NZXNzYWdlKHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBheGlzOiB0aGlzLnpvb21BeGlzLFxuICAgICAgICAgIGJydXNoRG9tYWluOiBkb21haW5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdFpvb20oe1xuICAgICAgICAgIGNoYW5uZWw6IHRoaXMuY29uZmlnPy56b29tPy5zeW5jQ2hhbm5lbCxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnNldFpvb20oe1xuICAgICAgICBldmVudCxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnpvb21BeGlzXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgZW5hYmxlID0gdGhpcy5heGlzPy5vcHRpb25zPy56b29tICYmIHRoaXMuYXhpcz8ub3B0aW9ucy52aXNpYmxlIHx8IHRoaXMuY29uZmlnPy56b29tPy5lbmFibGU7XG5cbiAgICBpZiAoIWVuYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQgPSBkMy5zZWxlY3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgdGhpcy56b29tID0gZDNcbiAgICAgIC56b29tKClcbiAgICAgIC5zY2FsZUV4dGVudChbMCwgSW5maW5pdHldKVxuICAgICAgLmV4dGVudChbXG4gICAgICAgIFswLCAwXSxcbiAgICAgICAgW3RoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodF0sXG4gICAgICBdKTtcblxuXG4gICAgY29uc3QgY29tbW9uWm9vbUF4aXMgPSBBeGlzLmNyZWF0ZUF4aXMoXG4gICAgICB0aGlzLmNvbmZpZz8uem9vbS50eXBlID09PSBab29tVHlwZS54ID8gQXhpc09yaWVudGF0aW9uLnggOiBBeGlzT3JpZW50YXRpb24ueSxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgMCxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy56b29tQXhpcyA9IHRoaXMuYXhpcyA/PyBjb21tb25ab29tQXhpcztcblxuICAgIGlmIChlbmFibGUpIHtcbiAgICAgIHRoaXMuem9vbS5vbignc3RhcnQgem9vbSBlbmQnLCB0aGlzLnpvb21lZCk7XG4gICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tKTtcbiAgICB9XG5cblxuICAgIC8vIFN1YnNjcmliZSB0byB6b29tIGV2ZW50c1xuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zdWJzY3JpYmVUb1pvb20odGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICBmaWx0ZXIoKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT4gbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCB8fCBtLm1lc3NhZ2UuZXZlbnQuc291cmNlRXZlbnQgaW5zdGFuY2VvZiBXaGVlbEV2ZW50KSxcbiAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICBmaWx0ZXIoKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy56b29tQXhpcy5pbmRleCA9PT0gbS5tZXNzYWdlPy5heGlzPy5pbmRleCAmJiB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBtLm1lc3NhZ2U/LmF4aXM/Lm9yaWVudGF0aW9uO1xuICAgICAgfSksXG4gICAgICB0YXAoKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT4ge1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUcmFuc2Zvcm0gPSBkMy56b29tVHJhbnNmb3JtKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRUcmFuc2Zvcm0gIT09IG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0pIHtcblxuICAgICAgICAgIGlmKHRoaXMuem9vbUF4aXMuaXNGYWtlICYmICFtLm1lc3NhZ2UuYXhpcy5pc0Zha2UgfHwgIXRoaXMuem9vbUF4aXMuaXNGYWtlICYmIG0ubWVzc2FnZS5heGlzLmlzRmFrZSkge1xuXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgbS5tZXNzYWdlLmV2ZW50LnRyYW5zZm9ybSwgbnVsbCwge30pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fZWxlbWVudC50cmFuc2l0aW9uKCkuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtLCBudWxsLCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgfSksXG4gICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuYWxpdmUpXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGJydXNoIGV2ZW50cyB4IG9yIHlcblxuICAgIGlmICgodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB8fFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueSAmJiB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkpIHtcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zdWJzY3JpYmVUb0JydXNoKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIHtsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWV9KSxcbiAgICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+KSA9PiBCb29sZWFuKG0ubWVzc2FnZS5zZWxlY3Rpb24pKSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+KSA9PiB7XG5cbiAgICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghbS5tZXNzYWdlLmV2ZW50ICYmIHRoaXMuY3VycmVudFNlbGVjdGlvbiAmJiBjdXJyZW50VHJhbnNmb3JtLmsgIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSBtLm1lc3NhZ2Uuc2VsZWN0aW9uO1xuXG5cbiAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlWm9vbShtKTtcbiAgICAgICAgICAgIH0sIDEwMClcbiAgICAgICAgICB9KVxuXG5cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSlcbiAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlWm9vbShtOiBJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+KSB7XG4gICAgY29uc3QgcyA9IG0ubWVzc2FnZS5zZWxlY3Rpb247XG4gICAgdGhpcy5icnVzaFNjYWxlLmRvbWFpbih0aGlzLnpvb21BeGlzLmV4dHJlbWVzKTtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLmJydXNoU2NhbGUuZG9tYWluKCk7XG5cbiAgICBjb25zdCBzY2FsZSA9IChkb21haW5bMV0gLSBkb21haW5bMF0pIC8gKHNbMV0gLSBzWzBdKTtcblxuICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgaWYgKG0ubWVzc2FnZT8uYnJ1c2hUeXBlID09PSBCcnVzaFR5cGUueCkge1xuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5icnVzaFNjYWxlKHNbMF0pLCAwKTtcbiAgICB9XG4gICAgaWYgKG0ubWVzc2FnZT8uYnJ1c2hUeXBlID09PSBCcnVzaFR5cGUueSkge1xuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGhpcy5icnVzaFNjYWxlKHNbMF0pKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnRyYW5zaXRpb24oKS5kdXJhdGlvbigxNTApLmNhbGwoXG4gICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgbnVsbCxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxufVxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBb0MsTUFBTSxlQUFlLENBQUM7QUFHM0csT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLE1BQU0sRUFBa0IsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBS2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFnQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLElBQVk7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWRpQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hELFVBQUssR0FBRyxJQUFJLENBQUM7UUFFYixxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFrQnhDLFdBQU0sR0FBRyxD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QUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUNuQixTQUFTLEVBQ1QsSUFBSSxFQUNKLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7OEdBL0xVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7K0tBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2UsIElCcm9hZGNhc3RNZXNzYWdlLCBab29tTWVzc2FnZX0gZnJvbSAnLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgcXVldWVTY2hlZHVsZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc/OiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM/OiBBeGlzO1xuICBASW5wdXQoKSBzaXplPzogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnpvb21hYmxlJykgcHJpdmF0ZSB6b29tYWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tQXhpczogQXhpcztcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuXG4gIHpvb21lZCA9IChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPT09IGV2ZW50LnRyYW5zZm9ybSAmJiBldmVudC50eXBlICE9PSAnZW5kJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuXG4gICAgICAgIGxldCBkb21haW4gPSB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55ID9cbiAgICAgICAgICBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKSA6XG4gICAgICAgICAgZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgYXhpczogdGhpcy56b29tQXhpcyxcbiAgICAgICAgICBicnVzaERvbWFpbjogZG9tYWluXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRab29tKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpc1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9IHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSAmJiB0aGlzLmF4aXM/Lm9wdGlvbnMudmlzaWJsZSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlO1xuXG4gICAgaWYgKCFlbmFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuem9vbSA9IGQzXG4gICAgICAuem9vbSgpXG4gICAgICAuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG5cbiAgICBjb25zdCBjb21tb25ab29tQXhpcyA9IEF4aXMuY3JlYXRlQXhpcyhcbiAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyBBeGlzT3JpZW50YXRpb24ueCA6IEF4aXNPcmllbnRhdGlvbi55LFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgICAwLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLnpvb21BeGlzID0gdGhpcy5heGlzID8/IGNvbW1vblpvb21BeGlzO1xuXG4gICAgaWYgKGVuYWJsZSkge1xuXG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXggPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWF4IDogMDtcbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW4gPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnpvb20uc2NhbGVFeHRlbnQoKSlcblxuXG4gICAgICB0aGlzLnpvb20ub24oJ3N0YXJ0IHpvb20gZW5kJywgdGhpcy56b29tZWQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbSk7XG4gICAgfVxuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCksXG4gICAgICBkZWJvdW5jZVRpbWUoMzApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gbS5tZXNzYWdlPy5heGlzPy5vcmllbnRhdGlvbjtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtICE9PSBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KSxcbiAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKCh0aGlzLmNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHx8XG4gICAgICAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS55ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSkge1xuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMCksXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4gQm9vbGVhbihtLm1lc3NhZ2Uuc2VsZWN0aW9uKSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4ge1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IGQzLnpvb21UcmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW0ubWVzc2FnZS5ldmVudCAmJiB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVab29tKG0pO1xuICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgIH0pXG5cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVab29tKG06IElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4pIHtcbiAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICB0aGlzLmJydXNoU2NhbGUuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHNjYWxlID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyAoc1sxXSAtIHNbMF0pO1xuXG4gICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS54KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC10aGlzLmJydXNoU2NhbGUoc1swXSksIDApO1xuICAgIH1cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDE1MCkuY2FsbChcbiAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBudWxsLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -13,4 +13,4 @@ export class BrushMessage {
13
13
  this.brushScale = options?.brushScale;
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1icm9hZGNhc3QtbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0QzQnJ1c2hFdmVudCwgRDNab29tRXZlbnR9IGZyb20gJ2QzJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4vZW51bS9icnVzaC10eXBlJztcblxuZXhwb3J0IGNsYXNzIFpvb21NZXNzYWdlIHtcbiAgZXZlbnQ6IEQzWm9vbUV2ZW50PGFueSwgYW55PjtcbiAgYXhpcz86IEF4aXM7XG4gIGJydXNoRG9tYWluPzogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IHtcbiAgICBldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+O1xuICAgIGF4aXM/OiBBeGlzO1xuICAgIGJydXNoRG9tYWluPzogbnVtYmVyW11cbiAgfSkge1xuICAgIHRoaXMuZXZlbnQgPSBvcHRpb25zPy5ldmVudDtcbiAgICB0aGlzLmF4aXMgPSBvcHRpb25zPy5heGlzO1xuICAgIHRoaXMuYnJ1c2hEb21haW4gPSBvcHRpb25zLmJydXNoRG9tYWluO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCcnVzaE1lc3NhZ2Uge1xuICBldmVudDogRDNCcnVzaEV2ZW50PGFueT47XG4gIGJydXNoVHlwZTogQnJ1c2hUeXBlO1xuICBzZWxlY3Rpb246IG51bWJlcltdO1xuICBicnVzaFNjYWxlPzogYW55O1xuXG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IHtcbiAgICBldmVudDogRDNCcnVzaEV2ZW50PGFueT47XG4gICAgYnJ1c2hUeXBlOiBCcnVzaFR5cGU7XG4gICAgc2VsZWN0aW9uOiBudW1iZXJbXTtcbiAgICBicnVzaFNjYWxlPzogYW55O1xuICB9KSB7XG4gICAgdGhpcy5ldmVudCA9IG9wdGlvbnM/LmV2ZW50O1xuICAgIHRoaXMuYnJ1c2hUeXBlID0gb3B0aW9ucz8uYnJ1c2hUeXBlO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gb3B0aW9ucz8uc2VsZWN0aW9uO1xuICAgIHRoaXMuYnJ1c2hTY2FsZSA9IG9wdGlvbnM/LmJydXNoU2NhbGU7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQnJvYWRjYXN0TWVzc2FnZTxUPiB7XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgbWVzc2FnZTogVDtcbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1icm9hZGNhc3QtbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0QzQnJ1c2hFdmVudCwgRDNab29tRXZlbnR9IGZyb20gJ2QzJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4vZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tIFwiLi9pLWNoYXJ0LWNvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgWm9vbU1lc3NhZ2Uge1xuICBldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+O1xuICBheGlzPzogQXhpcztcbiAgYnJ1c2hEb21haW4/OiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT47XG4gICAgYXhpcz86IEF4aXM7XG4gICAgYnJ1c2hEb21haW4/OiBudW1iZXJbXVxuICB9KSB7XG4gICAgdGhpcy5ldmVudCA9IG9wdGlvbnM/LmV2ZW50O1xuICAgIHRoaXMuYXhpcyA9IG9wdGlvbnM/LmF4aXM7XG4gICAgdGhpcy5icnVzaERvbWFpbiA9IG9wdGlvbnMuYnJ1c2hEb21haW47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJydXNoTWVzc2FnZSB7XG4gIGV2ZW50OiBEM0JydXNoRXZlbnQ8YW55PjtcbiAgYnJ1c2hUeXBlOiBCcnVzaFR5cGU7XG4gIHNlbGVjdGlvbjogbnVtYmVyW107XG4gIGJydXNoU2NhbGU/OiBhbnk7XG5cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIGV2ZW50OiBEM0JydXNoRXZlbnQ8YW55PjtcbiAgICBicnVzaFR5cGU6IEJydXNoVHlwZTtcbiAgICBzZWxlY3Rpb246IG51bWJlcltdO1xuICAgIGJydXNoU2NhbGU/OiBhbnk7XG4gIH0pIHtcbiAgICB0aGlzLmV2ZW50ID0gb3B0aW9ucz8uZXZlbnQ7XG4gICAgdGhpcy5icnVzaFR5cGUgPSBvcHRpb25zPy5icnVzaFR5cGU7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBvcHRpb25zPy5zZWxlY3Rpb247XG4gICAgdGhpcy5icnVzaFNjYWxlID0gb3B0aW9ucz8uYnJ1c2hTY2FsZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCcm9hZGNhc3RNZXNzYWdlPFQ+IHtcbiAgY2hhbm5lbDogc3RyaW5nO1xuICBtZXNzYWdlOiBUO1xufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1jaGFydC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvbW9kZWwvaS1jaGFydC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4vc2VyaWVzJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4vYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBBeGlzT3B0aW9ucyB9IGZyb20gJy4vYXhpcy1vcHRpb25zJztcbmltcG9ydCB7IFpvb21UeXBlIH0gZnJvbSAnLi9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucyB9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zJztcbmltcG9ydCB7IENoYXJ0Qm91bmRzIH0gZnJvbSAnLi9jaGFydC1ib3VuZHMnO1xuaW1wb3J0IHsgQnJ1c2hUeXBlIH0gZnJvbSAnLi9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4vYW5ub3RhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYXJ0Q29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgc2VyaWVzPzogU2VyaWVzPEJhc2VQb2ludD5bXTtcbiAgem9vbT86IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgdHlwZTogWm9vbVR5cGU7XG4gICAgYXhpc0luZGV4PzogbnVtYmVyO1xuICAgIHN5bmNDaGFubmVsPzogc3RyaW5nO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICB9O1xuICBicnVzaD86IHtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICAgIHR5cGU6IEJydXNoVHlwZTtcbiAgICBmcm9tPzogbnVtYmVyO1xuICAgIHRvPzogbnVtYmVyO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICB9O1xuICBsZWdlbmQ/OiB7XG4gICAgZW5hYmxlPzogYm9vbGVhbjtcbiAgfTtcbiAgYm91bmRzPzogQ2hhcnRCb3VuZHM7XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgdG9vbHRpcD86IFRvb2x0aXBPcHRpb25zO1xuICB4QXhpczogQXhpc09wdGlvbnNbXTtcbiAgeUF4aXM6IEF4aXNPcHRpb25zW107XG4gIGFubm90YXRpb25zPzogQW5ub3RhdGlvbltdO1xuICBncmlkTGluZXM/OiB7XG4gICAgZW5hYmxlPzogYm9vbGVhbjtcbiAgICBzaG93WD86IGJvb2xlYW47XG4gICAgc2hvd1k/OiBib29sZWFuO1xuICB9O1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1jaGFydC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvbW9kZWwvaS1jaGFydC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4vc2VyaWVzJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4vYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBBeGlzT3B0aW9ucyB9IGZyb20gJy4vYXhpcy1vcHRpb25zJztcbmltcG9ydCB7IFpvb21UeXBlIH0gZnJvbSAnLi9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucyB9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zJztcbmltcG9ydCB7IENoYXJ0Qm91bmRzIH0gZnJvbSAnLi9jaGFydC1ib3VuZHMnO1xuaW1wb3J0IHsgQnJ1c2hUeXBlIH0gZnJvbSAnLi9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4vYW5ub3RhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYXJ0Q29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgc2VyaWVzPzogU2VyaWVzPEJhc2VQb2ludD5bXTtcbiAgem9vbT86IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgdHlwZTogWm9vbVR5cGU7XG4gICAgYXhpc0luZGV4PzogbnVtYmVyO1xuICAgIHN5bmNDaGFubmVsPzogc3RyaW5nO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXJcbiAgfTtcbiAgYnJ1c2g/OiB7XG4gICAgZW5hYmxlPzogYm9vbGVhbjtcbiAgICB0eXBlOiBCcnVzaFR5cGU7XG4gICAgZnJvbT86IG51bWJlcjtcbiAgICB0bz86IG51bWJlcjtcbiAgICBtaW4/OiBudW1iZXI7XG4gICAgbWF4PzogbnVtYmVyXG4gIH07XG4gIGxlZ2VuZD86IHtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICB9O1xuICBib3VuZHM/OiBDaGFydEJvdW5kcztcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICB0b29sdGlwPzogVG9vbHRpcE9wdGlvbnM7XG4gIHhBeGlzOiBBeGlzT3B0aW9uc1tdO1xuICB5QXhpczogQXhpc09wdGlvbnNbXTtcbiAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uW107XG4gIGdyaWRMaW5lcz86IHtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICAgIHNob3dYPzogYm9vbGVhbjtcbiAgICBzaG93WT86IGJvb2xlYW47XG4gIH07XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG4iXX0=
@@ -28,11 +28,24 @@ export class BrushService {
28
28
  if (to - from === 0) {
29
29
  const selection = this.selection?.map(brushScale) ?? [config.brush?.from, config.brush?.to].map(brushScale);
30
30
  const halfBrushHeight = (selection[1] - selection[0]) / 2;
31
+ const invertedSelection = [from - halfBrushHeight, to + halfBrushHeight].map(brushScale.invert);
32
+ if (invertedSelection[1] - invertedSelection[0] > config.brush?.max) {
33
+ container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + config.brush?.max].map(brushScale));
34
+ return;
35
+ }
36
+ if (invertedSelection[1] - invertedSelection[0] < config.brush?.min) {
37
+ container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + config.brush?.min].map(brushScale));
38
+ return;
39
+ }
31
40
  container.call(this.brush.move, [from - halfBrushHeight, to + halfBrushHeight]);
32
41
  return;
33
42
  }
34
- if (brushScale.invert(to) - brushScale.invert(from) > config.brush?.limit) {
35
- container.call(this.brush.move, this.selection ? this.selection.map(brushScale) : [config.brush?.from, config.brush?.to].map(brushScale));
43
+ if (brushScale.invert(to) - brushScale.invert(from) > config.brush?.max) {
44
+ container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + config.brush?.max].map(brushScale) : [config.brush?.from, config.brush?.to].map(brushScale));
45
+ return;
46
+ }
47
+ if (brushScale.invert(to) - brushScale.invert(from) < config.brush?.min) {
48
+ container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + config.brush?.min].map(brushScale) : [config.brush?.from, config.brush?.to].map(brushScale));
36
49
  return;
37
50
  }
38
51
  if (_.sourceEvent instanceof MouseEvent) {
@@ -42,7 +55,7 @@ export class BrushService {
42
55
  event: _,
43
56
  selection: [brushScale.invert(from), brushScale.invert(to)],
44
57
  brushType: config?.brush?.type ?? BrushType.x,
45
- brushScale,
58
+ brushScale
46
59
  });
47
60
  this.broadcastService.broadcastBrush({
48
61
  channel: config?.zoom?.syncChannel,
@@ -99,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
99
112
  providedIn: 'root',
100
113
  }]
101
114
  }], ctorParameters: function () { return [{ type: i1.BroadcastService }, { type: i0.NgZone }]; } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2JydXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBZ0IsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQWlDLE1BQU0sOEJBQThCLENBQUM7QUFDMUYsT0FBTyxFQUFlLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLFlBQVk7SUFZdkIsWUFBb0IsZ0JBQWtDLEVBQVUsSUFBWTtRQUF4RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVBwRSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW9DO2FBQzNELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUM3QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQU1qQyxDQUFDO0lBRUQsVUFBVSxDQUNSLFVBQXNCLEVBQ3RCLE1BQW9CLEVBQ3BCLFVBQWU7UUFFZixJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVuRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUV0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQXVCLEVBQUUsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO29CQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQUUsT0FBTztvQkFFekIsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsQ0FBQztvQkFFM0MsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRTt3QkFDbkIsTUFBTSxTQUFTLEdBQWEsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDdEgsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUUxRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLGVBQWUsRUFBRSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQzt3QkFDaEYsT0FBTztxQkFDUjtvQkFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTt3QkFDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMxSSxPQUFPO3FCQUNSO29CQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsWUFBWSxVQUFVLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNyRDtvQkFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQzt3QkFDcEMsS0FBSyxFQUFFLENBQUM7d0JBQ1IsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRCxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7d0JBQzdDLFVBQVU7cUJBQ1gsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7d0JBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVc7d0JBQ2xDLE9BQU8sRUFBRSxZQUFZO3FCQUN0QixDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUlILElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUUzQixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBR2pDLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztxQkFDL0I7b0JBRUQsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTt3QkFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3FCQUM3QjtvQkFFRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVoSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQTtZQUlGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNoRyxNQUFNLENBQUMsQ0FBQyxDQUFpQyxFQUFFLEVBQUU7Z0JBQzNDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxZQUFZLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLFlBQVksVUFBVSxDQUFDO1lBQ2hILENBQUMsQ0FBQyxFQUNGLFlBQVksQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsRUFDMUQsR0FBRyxDQUFDLENBQUMsQ0FBaUMsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLEVBQUMsT0FBTyxFQUFFLEVBQUMsV0FBVyxFQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRW5DLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzlCLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNCLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7b0JBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDO3dCQUNwQyxLQUFLLEVBQUUsSUFBSTt3QkFDWCxTQUFTLEVBQUUsV0FBVzt3QkFDdEIsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDO3dCQUM3QyxVQUFVO3FCQUNYLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO3dCQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXO3dCQUNsQyxPQUFPLEVBQUUsWUFBWTtxQkFDdEIsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7eUdBM0hVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgU3Vic2NyaXB0aW9uLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0JydXNoTWVzc2FnZSwgSUJyb2FkY2FzdE1lc3NhZ2UsIFpvb21NZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJydXNoU2VydmljZSB7XG4gIGJyb2FkY2FzdFN1YnNjcmlidGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYnJ1c2g6IGQzLkJydXNoQmVoYXZpb3I8YW55PjtcblxuICBwcml2YXRlIGJydXNoTWFwID0gbmV3IE1hcDxCcnVzaFR5cGUsIGQzLkJydXNoQmVoYXZpb3I8YW55Pj4oKVxuICAgIC5zZXQoQnJ1c2hUeXBlLngsIGQzLmJydXNoWCgpKVxuICAgIC5zZXQoQnJ1c2hUeXBlLnksIGQzLmJydXNoWSgpKTtcblxuICBwcml2YXRlIHNlbGVjdGlvbjogbnVtYmVyW107XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2UsIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gIH1cblxuICBhcHBseUJydXNoKFxuICAgIHN2Z0VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgY29uZmlnOiBJQ2hhcnRDb25maWcsXG4gICAgYnJ1c2hTY2FsZTogYW55XG4gICkge1xuICAgIHRoaXMuYnJvYWRjYXN0U3Vic2NyaWJ0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYnJ1c2g/Lm9uKCdzdGFydCBicnVzaCBlbmQnLCBudWxsKTtcbiAgICBpZiAoY29uZmlnLmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYnJ1c2ggPSB0aGlzLmJydXNoTWFwLmdldChjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54KTtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gZDMuc2VsZWN0KHN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIHRoaXMuYnJ1c2gub24oJ3N0YXJ0IGJydXNoIGVuZCcsIChfOiBkMy5EM0JydXNoRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCkge1xuICAgICAgICAgIGlmICghXy5zZWxlY3Rpb24pIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBfLnNlbGVjdGlvbiBhcyBudW1iZXJbXTtcblxuICAgICAgICAgIGlmICh0byAtIGZyb20gPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogbnVtYmVyW10gPSB0aGlzLnNlbGVjdGlvbj8ubWFwKGJydXNoU2NhbGUpID8/IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZCcnVzaEhlaWdodCA9IChzZWxlY3Rpb25bMV0gLSBzZWxlY3Rpb25bMF0pIC8gMjtcblxuICAgICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbZnJvbSAtIGhhbGZCcnVzaEhlaWdodCwgdG8gKyBoYWxmQnJ1c2hIZWlnaHRdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYnJ1c2hTY2FsZS5pbnZlcnQodG8pIC0gYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSkgPiBjb25maWcuYnJ1c2g/LmxpbWl0KSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIHRoaXMuc2VsZWN0aW9uID8gdGhpcy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUpIDogW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gXy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUuaW52ZXJ0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBicnVzaE1lc3NhZ2UgPSBuZXcgQnJ1c2hNZXNzYWdlKHtcbiAgICAgICAgICAgIGV2ZW50OiBfLFxuICAgICAgICAgICAgc2VsZWN0aW9uOiBbYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSksIGJydXNoU2NhbGUuaW52ZXJ0KHRvKV0sXG4gICAgICAgICAgICBicnVzaFR5cGU6IGNvbmZpZz8uYnJ1c2g/LnR5cGUgPz8gQnJ1c2hUeXBlLngsXG4gICAgICAgICAgICBicnVzaFNjYWxlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdEJydXNoKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBicnVzaE1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cblxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaCk7XG5cbiAgICAgICAgICBsZXQgZG9tYWluID0gYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LmZyb20pIHtcbiAgICAgICAgICAgIGRvbWFpblswXSA9IGNvbmZpZy5icnVzaC5mcm9tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb25maWc/LmJydXNoPy50bykge1xuICAgICAgICAgICAgZG9tYWluWzFdID0gY29uZmlnLmJydXNoLnRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZSkgOiBkb21haW4ubWFwKGJydXNoU2NhbGUpLCB7fSk7XG5cbiAgICAgICAgfSwgMCk7XG4gICAgICB9KVxuXG5cblxuICAgICAgdGhpcy5icm9hZGNhc3RTdWJzY3JpYnRpb24gPSB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwge3RyYWlsaW5nOiB0cnVlfSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgY29uc3Qge21lc3NhZ2U6IHticnVzaERvbWFpbn19ID0gbTtcblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgW1xuICAgICAgICAgICAgYnJ1c2hTY2FsZShicnVzaERvbWFpblswXSksXG4gICAgICAgICAgICBicnVzaFNjYWxlKGJydXNoRG9tYWluWzFdKSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIGlmIChtLm1lc3NhZ2UuZXZlbnQudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGJydXNoTWVzc2FnZSA9IG5ldyBCcnVzaE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBldmVudDogbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0aW9uOiBicnVzaERvbWFpbixcbiAgICAgICAgICAgICAgYnJ1c2hUeXBlOiBjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54LFxuICAgICAgICAgICAgICBicnVzaFNjYWxlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3RCcnVzaCh7XG4gICAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGJydXNoTWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gYnJ1c2hEb21haW47XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICB9XG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2JydXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBZ0IsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQWlDLE1BQU0sOEJBQThCLENBQUM7QUFDMUYsT0FBTyxFQUFlLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLFlBQVk7SUFZdkIsWUFBb0IsZ0JBQWtDLEVBQVUsSUFBWTtRQUF4RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVBwRSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW9DO2FBQzNELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUM3QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQU1qQyxDQUFDO0lBRUQsVUFBVSxDQUNSLFVBQXNCLEVBQ3RCLE1BQW9CLEVBQ3BCLFVBQWU7UUFFZixJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxH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QUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDdEwsT0FBTztxQkFDUjtvQkFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTt3QkFFdkUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUN0TCxPQUFPO3FCQUNSO29CQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsWUFBWSxVQUFVLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNyRDtvQkFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQzt3QkFDcEMsS0FBSyxFQUFFLENBQUM7d0JBQ1IsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRCxTQUFTLEVB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O2dCQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7eUdBakpVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgU3Vic2NyaXB0aW9uLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0JydXNoTWVzc2FnZSwgSUJyb2FkY2FzdE1lc3NhZ2UsIFpvb21NZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJydXNoU2VydmljZSB7XG4gIGJyb2FkY2FzdFN1YnNjcmlidGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYnJ1c2g6IGQzLkJydXNoQmVoYXZpb3I8YW55PjtcblxuICBwcml2YXRlIGJydXNoTWFwID0gbmV3IE1hcDxCcnVzaFR5cGUsIGQzLkJydXNoQmVoYXZpb3I8YW55Pj4oKVxuICAgIC5zZXQoQnJ1c2hUeXBlLngsIGQzLmJydXNoWCgpKVxuICAgIC5zZXQoQnJ1c2hUeXBlLnksIGQzLmJydXNoWSgpKTtcblxuICBwcml2YXRlIHNlbGVjdGlvbjogbnVtYmVyW107XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2UsIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gIH1cblxuICBhcHBseUJydXNoKFxuICAgIHN2Z0VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgY29uZmlnOiBJQ2hhcnRDb25maWcsXG4gICAgYnJ1c2hTY2FsZTogYW55XG4gICkge1xuICAgIHRoaXMuYnJvYWRjYXN0U3Vic2NyaWJ0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYnJ1c2g/Lm9uKCdzdGFydCBicnVzaCBlbmQnLCBudWxsKTtcbiAgICBpZiAoY29uZmlnLmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYnJ1c2ggPSB0aGlzLmJydXNoTWFwLmdldChjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54KTtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gZDMuc2VsZWN0KHN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIHRoaXMuYnJ1c2gub24oJ3N0YXJ0IGJydXNoIGVuZCcsIChfOiBkMy5EM0JydXNoRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCkge1xuICAgICAgICAgIGlmICghXy5zZWxlY3Rpb24pIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBfLnNlbGVjdGlvbiBhcyBudW1iZXJbXTtcblxuICAgICAgICAgIGlmICh0byAtIGZyb20gPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogbnVtYmVyW10gPSB0aGlzLnNlbGVjdGlvbj8ubWFwKGJydXNoU2NhbGUpID8/IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZCcnVzaEhlaWdodCA9IChzZWxlY3Rpb25bMV0gLSBzZWxlY3Rpb25bMF0pIC8gMjtcblxuICAgICAgICAgICAgY29uc3QgaW52ZXJ0ZWRTZWxlY3Rpb246IG51bWJlcltdID0gW2Zyb20gLSBoYWxmQnJ1c2hIZWlnaHQsIHRvICsgaGFsZkJydXNoSGVpZ2h0XS5tYXAoYnJ1c2hTY2FsZS5pbnZlcnQpXG5cbiAgICAgICAgICAgIGlmKGludmVydGVkU2VsZWN0aW9uWzFdIC0gaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gPiBjb25maWcuYnJ1c2g/Lm1heCkge1xuICAgICAgICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIFtpbnZlcnRlZFNlbGVjdGlvblswXSwgaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1heF0ubWFwKGJydXNoU2NhbGUpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihpbnZlcnRlZFNlbGVjdGlvblsxXSAtIGludmVydGVkU2VsZWN0aW9uWzBdIDwgY29uZmlnLmJydXNoPy5taW4pIHtcbiAgICAgICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbaW52ZXJ0ZWRTZWxlY3Rpb25bMF0sIGludmVydGVkU2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW5dLm1hcChicnVzaFNjYWxlKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbZnJvbSAtIGhhbGZCcnVzaEhlaWdodCwgdG8gKyBoYWxmQnJ1c2hIZWlnaHRdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICBpZiAoYnJ1c2hTY2FsZS5pbnZlcnQodG8pIC0gYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSkgPiBjb25maWcuYnJ1c2g/Lm1heCkge1xuXG4gICAgICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIHRoaXMuc2VsZWN0aW9uID8gW3RoaXMuc2VsZWN0aW9uWzBdLCB0aGlzLnNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWF4XS5tYXAoYnJ1c2hTY2FsZSkgOiBbY29uZmlnLmJydXNoPy5mcm9tLCBjb25maWcuYnJ1c2g/LnRvXS5tYXAoYnJ1c2hTY2FsZSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA8IGNvbmZpZy5icnVzaD8ubWluKSB7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgdGhpcy5zZWxlY3Rpb24gPyBbdGhpcy5zZWxlY3Rpb25bMF0sIHRoaXMuc2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW5dLm1hcChicnVzaFNjYWxlKSA6IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uc291cmNlRXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IF8uc2VsZWN0aW9uLm1hcChicnVzaFNjYWxlLmludmVydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYnJ1c2hNZXNzYWdlID0gbmV3IEJydXNoTWVzc2FnZSh7XG4gICAgICAgICAgICBldmVudDogXyxcbiAgICAgICAgICAgIHNlbGVjdGlvbjogW2JydXNoU2NhbGUuaW52ZXJ0KGZyb20pLCBicnVzaFNjYWxlLmludmVydCh0byldLFxuICAgICAgICAgICAgYnJ1c2hUeXBlOiBjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54LFxuICAgICAgICAgICAgYnJ1c2hTY2FsZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdEJydXNoKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBicnVzaE1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cblxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaCk7XG5cbiAgICAgICAgICBsZXQgZG9tYWluID0gYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LmZyb20pIHtcbiAgICAgICAgICAgIGRvbWFpblswXSA9IGNvbmZpZy5icnVzaC5mcm9tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb25maWc/LmJydXNoPy50bykge1xuICAgICAgICAgICAgZG9tYWluWzFdID0gY29uZmlnLmJydXNoLnRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZSkgOiBkb21haW4ubWFwKGJydXNoU2NhbGUpLCB7fSk7XG5cbiAgICAgICAgfSwgMCk7XG4gICAgICB9KVxuXG5cblxuICAgICAgdGhpcy5icm9hZGNhc3RTdWJzY3JpYnRpb24gPSB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwge3RyYWlsaW5nOiB0cnVlfSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgY29uc3Qge21lc3NhZ2U6IHticnVzaERvbWFpbn19ID0gbTtcblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgW1xuICAgICAgICAgICAgYnJ1c2hTY2FsZShicnVzaERvbWFpblswXSksXG4gICAgICAgICAgICBicnVzaFNjYWxlKGJydXNoRG9tYWluWzFdKSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIGlmIChtLm1lc3NhZ2UuZXZlbnQudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGJydXNoTWVzc2FnZSA9IG5ldyBCcnVzaE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBldmVudDogbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0aW9uOiBicnVzaERvbWFpbixcbiAgICAgICAgICAgICAgYnJ1c2hUeXBlOiBjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54LFxuICAgICAgICAgICAgICBicnVzaFNjYWxlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3RCcnVzaCh7XG4gICAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGJydXNoTWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gYnJ1c2hEb21haW47XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICB9XG59XG4iXX0=
@@ -667,7 +667,7 @@ class BrushService {
667
667
  this.brush = this.brushMap.get((_e = (_d = config === null || config === void 0 ? void 0 : config.brush) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : BrushType.x);
668
668
  const container = d3.select(svgElement.nativeElement);
669
669
  this.brush.on('start brush end', (_) => {
670
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
670
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
671
671
  if (_.sourceEvent) {
672
672
  if (!_.selection)
673
673
  return;
@@ -675,11 +675,24 @@ class BrushService {
675
675
  if (to - from === 0) {
676
676
  const selection = (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.map(brushScale)) !== null && _b !== void 0 ? _b : [(_c = config.brush) === null || _c === void 0 ? void 0 : _c.from, (_d = config.brush) === null || _d === void 0 ? void 0 : _d.to].map(brushScale);
677
677
  const halfBrushHeight = (selection[1] - selection[0]) / 2;
678
+ const invertedSelection = [from - halfBrushHeight, to + halfBrushHeight].map(brushScale.invert);
679
+ if (invertedSelection[1] - invertedSelection[0] > ((_e = config.brush) === null || _e === void 0 ? void 0 : _e.max)) {
680
+ container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + ((_f = config.brush) === null || _f === void 0 ? void 0 : _f.max)].map(brushScale));
681
+ return;
682
+ }
683
+ if (invertedSelection[1] - invertedSelection[0] < ((_g = config.brush) === null || _g === void 0 ? void 0 : _g.min)) {
684
+ container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + ((_h = config.brush) === null || _h === void 0 ? void 0 : _h.min)].map(brushScale));
685
+ return;
686
+ }
678
687
  container.call(this.brush.move, [from - halfBrushHeight, to + halfBrushHeight]);
679
688
  return;
680
689
  }
681
- if (brushScale.invert(to) - brushScale.invert(from) > ((_e = config.brush) === null || _e === void 0 ? void 0 : _e.limit)) {
682
- container.call(this.brush.move, this.selection ? this.selection.map(brushScale) : [(_f = config.brush) === null || _f === void 0 ? void 0 : _f.from, (_g = config.brush) === null || _g === void 0 ? void 0 : _g.to].map(brushScale));
690
+ if (brushScale.invert(to) - brushScale.invert(from) > ((_j = config.brush) === null || _j === void 0 ? void 0 : _j.max)) {
691
+ container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + ((_k = config.brush) === null || _k === void 0 ? void 0 : _k.max)].map(brushScale) : [(_l = config.brush) === null || _l === void 0 ? void 0 : _l.from, (_m = config.brush) === null || _m === void 0 ? void 0 : _m.to].map(brushScale));
692
+ return;
693
+ }
694
+ if (brushScale.invert(to) - brushScale.invert(from) < ((_o = config.brush) === null || _o === void 0 ? void 0 : _o.min)) {
695
+ container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + ((_p = config.brush) === null || _p === void 0 ? void 0 : _p.min)].map(brushScale) : [(_q = config.brush) === null || _q === void 0 ? void 0 : _q.from, (_r = config.brush) === null || _r === void 0 ? void 0 : _r.to].map(brushScale));
683
696
  return;
684
697
  }
685
698
  if (_.sourceEvent instanceof MouseEvent) {
@@ -688,11 +701,11 @@ class BrushService {
688
701
  const brushMessage = new BrushMessage({
689
702
  event: _,
690
703
  selection: [brushScale.invert(from), brushScale.invert(to)],
691
- brushType: (_j = (_h = config === null || config === void 0 ? void 0 : config.brush) === null || _h === void 0 ? void 0 : _h.type) !== null && _j !== void 0 ? _j : BrushType.x,
692
- brushScale,
704
+ brushType: (_t = (_s = config === null || config === void 0 ? void 0 : config.brush) === null || _s === void 0 ? void 0 : _s.type) !== null && _t !== void 0 ? _t : BrushType.x,
705
+ brushScale
693
706
  });
694
707
  this.broadcastService.broadcastBrush({
695
- channel: (_k = config === null || config === void 0 ? void 0 : config.zoom) === null || _k === void 0 ? void 0 : _k.syncChannel,
708
+ channel: (_u = config === null || config === void 0 ? void 0 : config.zoom) === null || _u === void 0 ? void 0 : _u.syncChannel,
696
709
  message: brushMessage,
697
710
  });
698
711
  }
@@ -1830,10 +1843,8 @@ class ZoomableDirective {
1830
1843
  this.zoomable = true;
1831
1844
  }
1832
1845
  }
1833
- ngOnChanges(changes) {
1834
- }
1835
1846
  ngAfterViewInit() {
1836
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
1847
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
1837
1848
  const enable = ((_b = (_a = this.axis) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.zoom) && ((_c = this.axis) === null || _c === void 0 ? void 0 : _c.options.visible) || ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.zoom) === null || _e === void 0 ? void 0 : _e.enable);
1838
1849
  if (!enable) {
1839
1850
  return;
@@ -1841,7 +1852,6 @@ class ZoomableDirective {
1841
1852
  this._element = d3.select(this.elementRef.nativeElement);
1842
1853
  this.zoom = d3
1843
1854
  .zoom()
1844
- .scaleExtent([0, Infinity])
1845
1855
  .extent([
1846
1856
  [0, 0],
1847
1857
  [this.size.width, this.size.height],
@@ -1849,27 +1859,27 @@ class ZoomableDirective {
1849
1859
  const commonZoomAxis = Axis.createAxis(((_f = this.config) === null || _f === void 0 ? void 0 : _f.zoom.type) === ZoomType.x ? AxisOrientation.x : AxisOrientation.y, this.config, 0, true);
1850
1860
  this.zoomAxis = (_g = this.axis) !== null && _g !== void 0 ? _g : commonZoomAxis;
1851
1861
  if (enable) {
1862
+ const maxZoom = ((_h = this.config.zoom) === null || _h === void 0 ? void 0 : _h.max) ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / ((_j = this.config.zoom) === null || _j === void 0 ? void 0 : _j.max) : 0;
1863
+ const minZoom = ((_k = this.config.zoom) === null || _k === void 0 ? void 0 : _k.min) ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / ((_l = this.config.zoom) === null || _l === void 0 ? void 0 : _l.min) : Infinity;
1864
+ this.zoom.scaleExtent([maxZoom, minZoom]);
1865
+ console.log(this.zoom.scaleExtent());
1852
1866
  this.zoom.on('start zoom end', this.zoomed);
1853
1867
  this._element.call(this.zoom);
1854
1868
  }
1855
1869
  // Subscribe to zoom events
1856
- this.broadcastService.subscribeToZoom((_h = this.config) === null || _h === void 0 ? void 0 : _h.zoom.syncChannel).pipe(filter((m) => m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent), debounceTime(50), filter((m) => {
1870
+ this.broadcastService.subscribeToZoom((_m = this.config) === null || _m === void 0 ? void 0 : _m.zoom.syncChannel).pipe(filter((m) => m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent), debounceTime(30), filter((m) => {
1857
1871
  var _a, _b, _c, _d;
1858
1872
  return this.zoomAxis.index === ((_b = (_a = m.message) === null || _a === void 0 ? void 0 : _a.axis) === null || _b === void 0 ? void 0 : _b.index) && this.zoomAxis.orientation === ((_d = (_c = m.message) === null || _c === void 0 ? void 0 : _c.axis) === null || _d === void 0 ? void 0 : _d.orientation);
1859
1873
  }), tap$1((m) => {
1860
1874
  const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
1861
1875
  if (currentTransform !== m.message.event.transform) {
1862
- if (this.zoomAxis.isFake && !m.message.axis.isFake || !this.zoomAxis.isFake && m.message.axis.isFake) {
1863
- this._element.call(this.zoom.transform, m.message.event.transform, null, {});
1864
- return;
1865
- }
1866
- this._element.transition().call(this.zoom.transform, m.message.event.transform, null, {});
1876
+ this._element.call(this.zoom.transform, m.message.event.transform, null, {});
1867
1877
  }
1868
1878
  }), takeWhile((_) => this.alive)).subscribe();
1869
1879
  // Subscribe to brush events x or y
1870
- if ((((_j = this.config.brush) === null || _j === void 0 ? void 0 : _j.type) === BrushType.x && this.zoomAxis.orientation === AxisOrientation.x) ||
1871
- (((_k = this.config.brush) === null || _k === void 0 ? void 0 : _k.type) === BrushType.y && this.zoomAxis.orientation === AxisOrientation.y)) {
1872
- this.broadcastService.subscribeToBrush((_l = this.config) === null || _l === void 0 ? void 0 : _l.zoom.syncChannel).pipe(throttleTime(0, animationFrameScheduler, { leading: false, trailing: true }), filter((m) => Boolean(m.message.selection)), tap$1((m) => {
1880
+ if ((((_o = this.config.brush) === null || _o === void 0 ? void 0 : _o.type) === BrushType.x && this.zoomAxis.orientation === AxisOrientation.x) ||
1881
+ (((_p = this.config.brush) === null || _p === void 0 ? void 0 : _p.type) === BrushType.y && this.zoomAxis.orientation === AxisOrientation.y)) {
1882
+ this.broadcastService.subscribeToBrush((_q = this.config) === null || _q === void 0 ? void 0 : _q.zoom.syncChannel).pipe(debounceTime(30), filter((m) => Boolean(m.message.selection)), tap$1((m) => {
1873
1883
  const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
1874
1884
  if (!m.message.event && this.currentSelection && currentTransform.k !== 1) {
1875
1885
  return;
@@ -1905,7 +1915,7 @@ class ZoomableDirective {
1905
1915
  }
1906
1916
  }
1907
1917
  ZoomableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: ZoomService }, { token: BroadcastService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1908
- ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, usesOnChanges: true, ngImport: i0 });
1918
+ ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, ngImport: i0 });
1909
1919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, decorators: [{
1910
1920
  type: Directive,
1911
1921
  args: [{