@tetacom/svg-charts 1.1.20 → 1.1.21

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.
@@ -32,7 +32,7 @@ export class ScaleService {
32
32
  return map;
33
33
  }), shareReplay({
34
34
  bufferSize: 1,
35
- refCount: true
35
+ refCount: true,
36
36
  }));
37
37
  this.yAxisMap = combineLatest([
38
38
  this.chartService.size,
@@ -46,7 +46,7 @@ export class ScaleService {
46
46
  return map;
47
47
  }), shareReplay({
48
48
  bufferSize: 1,
49
- refCount: true
49
+ refCount: true,
50
50
  }));
51
51
  this.xScaleMap = combineLatest([
52
52
  this.chartService.size,
@@ -70,7 +70,7 @@ export class ScaleService {
70
70
  let scale = this.scaleMapping
71
71
  .get(axis.options.scaleType.type)()
72
72
  .domain(domain)
73
- .range([0, finalWidth]);
73
+ .range([0, finalWidth - config.bounds.right]);
74
74
  if (axis.options.niceTicks) {
75
75
  scale.nice();
76
76
  }
@@ -99,7 +99,7 @@ export class ScaleService {
99
99
  return map;
100
100
  }), shareReplay({
101
101
  bufferSize: 1,
102
- refCount: true
102
+ refCount: true,
103
103
  }));
104
104
  this.yScaleMap = combineLatest([
105
105
  this.chartService.size,
@@ -114,7 +114,11 @@ export class ScaleService {
114
114
  const bottom = [...xAxes.values()]
115
115
  .filter((_) => _.options?.visible && _.options?.opposite !== true)
116
116
  .reduce((acc, cur) => acc + cur.selfSize, 0);
117
- const finalHeight = (size.height || 0) - top - bottom;
117
+ const finalHeight = (size.height || 0) -
118
+ top -
119
+ bottom -
120
+ config?.bounds?.top -
121
+ config.bounds?.bottom;
118
122
  yAxes.forEach((axis) => {
119
123
  let domain = axis.extremes;
120
124
  if (axis.orientation === AxisOrientation.y) {
@@ -126,7 +130,7 @@ export class ScaleService {
126
130
  const scale = this.scaleMapping
127
131
  .get(axis.options.scaleType.type)()
128
132
  .domain(domain)
129
- .range([0, finalHeight]);
133
+ .range([config.bounds.top, finalHeight]);
130
134
  if (axis.options.niceTicks) {
131
135
  scale.nice();
132
136
  }
@@ -155,7 +159,7 @@ export class ScaleService {
155
159
  return map;
156
160
  }), shareReplay({
157
161
  bufferSize: 1,
158
- refCount: true
162
+ refCount: true,
159
163
  }));
160
164
  }
161
165
  }
@@ -167,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
167
171
  providedIn: 'root',
168
172
  }]
169
173
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i2.ZoomService }]; } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRy9ELE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUVILFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLbkQsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQ1UsWUFBMEIsRUFDMUIsV0FBd0I7UUFEeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFiMUIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQzdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDckMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFD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QUN4RCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUVyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2RDthQUNGO1lBRUQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQ0YsRUFDRCxXQUFXLENBQUM7WUFDVixVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzt5R0FwT1UsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0QzWm9vbUV2ZW50LCBab29tVHJhbnNmb3JtfSBmcm9tICdkMyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzaGFyZVJlcGxheSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJQ2hhcnRFdmVudH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuL3pvb20uc2VydmljZSc7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9zY2FsZS10eXBlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjYWxlU2VydmljZSB7XG4gIHB1YmxpYyB5QXhpc01hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBBeGlzPj47XG4gIHB1YmxpYyB4QXhpc01hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBBeGlzPj47XG5cbiAgcHVibGljIHlTY2FsZU1hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBhbnk+PjtcbiAgcHVibGljIHhTY2FsZU1hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBhbnk+PjtcblxuICBwcml2YXRlIHRyYW5zZm9ybUNhY2hlWCA9IG5ldyBNYXA8bnVtYmVyLCBab29tVHJhbnNmb3JtPigpO1xuICBwcml2YXRlIHRyYW5zZm9ybUNhY2hlWSA9IG5ldyBNYXA8bnVtYmVyLCBab29tVHJhbnNmb3JtPigpO1xuXG4gIHByaXZhdGUgc2NhbGVNYXBwaW5nID0gbmV3IE1hcDxTY2FsZVR5cGUsIGFueT4oKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxpbmVhciwgZDMuc2NhbGVMaW5lYXIpXG4gICAgLnNldChTY2FsZVR5cGUudGltZSwgZDMuc2NhbGVUaW1lKVxuICAgIC5zZXQoU2NhbGVUeXBlLmNhdGVnb3J5LCBkMy5zY2FsZU9yZGluYWwpXG4gICAgLnNldChTY2FsZVR5cGUubG9nLCBkMy5zY2FsZUxvZylcbiAgICAuc2V0KFNjYWxlVHlwZS5wb3csIGQzLnNjYWxlUG93KVxuICAgIC5zZXQoU2NhbGVUeXBlLnNxcnQsIGQzLnNjYWxlU3FydCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZVxuICApIHtcbiAgICB0aGlzLnhBeGlzTWFwID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5zaXplLFxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IFtET01SZWN0UmVhZE9ubHksIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgWywgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBBeGlzPigpO1xuICAgICAgICBjb25maWcueEF4aXMubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgIG1hcC5zZXQoaW5kZXgsIEF4aXMuY3JlYXRlQXhpcyhBeGlzT3JpZW50YXRpb24ueCwgY29uZmlnLCBpbmRleCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55QXhpc01hcCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSxcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFssIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQXhpcz4oKTtcbiAgICAgICAgY29uZmlnLnlBeGlzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBtYXAuc2V0KGluZGV4LCBBeGlzLmNyZWF0ZUF4aXMoQXhpc09yaWVudGF0aW9uLnksIGNvbmZpZywgaW5kZXgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy54U2NhbGVNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy55QXhpc01hcCwgdGhpcy54QXhpc01hcCksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWcsIElDaGFydEV2ZW50PEF4aXM+XSxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+LFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz5cbiAgICAgICAgICBdXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwgY29uZmlnLCB6b29tXSwgeUF4ZXMsIHhBeGVzXSA9IGRhdGE7XG5cbiAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuXG4gICAgICAgICAgY29uc3QgbGVmdCA9IFsuLi55QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCByaWdodCA9IFsuLi55QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbFdpZHRoID0gKHNpemUud2lkdGggfHwgMCkgLSBsZWZ0IC0gcmlnaHQ7XG5cbiAgICAgICAgICB4QXhlcy5mb3JFYWNoKChheGlzKSA9PiB7XG4gICAgICAgICAgICBsZXQgZG9tYWluID0gYXhpcy5leHRyZW1lcztcblxuICAgICAgICAgICAgaWYgKGF4aXM/Lm9wdGlvbnMuaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gWy4uLmF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdGhpcy5zY2FsZU1hcHBpbmdcbiAgICAgICAgICAgICAgLmdldChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUpKClcbiAgICAgICAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgICAgICAgIC5yYW5nZShbMCwgZmluYWxXaWR0aF0pO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVUeXBlLmJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHNjYWxlKTtcblxuICAgICAgICAgICAgY29uc3QgaGFzQ2FjaGUgPSB0aGlzLnRyYW5zZm9ybUNhY2hlWC5oYXMoYXhpcy5pbmRleCk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRSZXN0b3JlID1cbiAgICAgICAgICAgICAgem9vbT8udGFyZ2V0Py5vcmllbnRhdGlvbiAhPT0gQXhpc09yaWVudGF0aW9uLnggfHxcbiAgICAgICAgICAgICAgem9vbS50YXJnZXQ/LmluZGV4ICE9PSBheGlzLmluZGV4O1xuXG4gICAgICAgICAgICBpZiAoaGFzQ2FjaGUgJiYgc2hvdWxkUmVzdG9yZSkge1xuICAgICAgICAgICAgICBjb25zdCByZXN0b3JlZFRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ2FjaGVYLmdldChheGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgbWFwLnNldChheGlzLmluZGV4LCByZXN0b3JlZFRyYW5zZm9ybS5yZXNjYWxlWChzY2FsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gem9vbS5ldmVudCBhcyBEM1pvb21FdmVudDxhbnksIGFueT47XG5cbiAgICAgICAgICAgIGlmICh6b29tLnRhcmdldD8ub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY2FsZSA9IG1hcC5nZXQoem9vbS50YXJnZXQuaW5kZXgpO1xuICAgICAgICAgICAgICBjb25zdCByZXNjYWxlZCA9IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChjdXJyZW50U2NhbGUpO1xuICAgICAgICAgICAgICBtYXAuc2V0KHpvb20udGFyZ2V0LmluZGV4LCByZXNjYWxlZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYXhpcyA9IHhBeGVzLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGVYLnNldChheGlzLmluZGV4LCBldmVudC50cmFuc2Zvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55U2NhbGVNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy55QXhpc01hcCwgdGhpcy54QXhpc01hcCksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWcsIElDaGFydEV2ZW50PEF4aXM+XSxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+LFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz5cbiAgICAgICAgICBdXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwgY29uZmlnLCB6b29tXSwgeUF4ZXMsIHhBeGVzXSA9IGRhdGE7XG5cbiAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0gWy4uLnhBeGVzLnZhbHVlcygpXVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zPy52aXNpYmxlICYmIF8ub3B0aW9ucz8ub3Bwb3NpdGUpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IFsuLi54QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbEhlaWdodCA9IChzaXplLmhlaWdodCB8fCAwKSAtIHRvcCAtIGJvdHRvbTtcblxuICAgICAgICAgIHlBeGVzLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgICAgIGxldCBkb21haW4gPSBheGlzLmV4dHJlbWVzO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gWy4uLmF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXM/Lm9wdGlvbnMuaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlTWFwcGluZ1xuICAgICAgICAgICAgICAuZ2V0KGF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSkoKVxuICAgICAgICAgICAgICAuZG9tYWluKGRvbWFpbilcbiAgICAgICAgICAgICAgLnJhbmdlKFswLCBmaW5hbEhlaWdodF0pO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVUeXBlLmJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHNjYWxlKTtcblxuICAgICAgICAgICAgY29uc3QgaGFzQ2FjaGUgPSB0aGlzLnRyYW5zZm9ybUNhY2hlWS5oYXMoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc3RvcmUgPVxuICAgICAgICAgICAgICB6b29tPy50YXJnZXQ/Lm9yaWVudGF0aW9uICE9PSBBeGlzT3JpZW50YXRpb24ueSB8fFxuICAgICAgICAgICAgICB6b29tLnRhcmdldD8uaW5kZXggIT09IGF4aXMuaW5kZXg7XG5cbiAgICAgICAgICAgIGlmIChoYXNDYWNoZSAmJiBzaG91bGRSZXN0b3JlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkVHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm1DYWNoZVkuZ2V0KGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHJlc3RvcmVkVHJhbnNmb3JtLnJlc2NhbGVZKHNjYWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoem9vbSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB6b29tLmV2ZW50IGFzIEQzWm9vbUV2ZW50PGFueSwgYW55PjtcblxuICAgICAgICAgICAgaWYgKHpvb20udGFyZ2V0Py5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNjYWxlID0gbWFwLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2NhbGVkID0gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVZKGN1cnJlbnRTY2FsZSk7XG4gICAgICAgICAgICAgIG1hcC5zZXQoem9vbS50YXJnZXQuaW5kZXgsIHJlc2NhbGVkKTtcblxuICAgICAgICAgICAgICBjb25zdCBheGlzID0geUF4ZXMuZ2V0KHpvb20udGFyZ2V0LmluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZVkuc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUVILFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQ1UsWUFBMEIsRUFDMUIsV0FBd0I7UUFEeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFiMUIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQzdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDckMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFD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QyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRXJDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FDRixFQUNELFdBQVcsQ0FBQztZQUNWLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O3lHQXpPVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21UcmFuc2Zvcm0gfSBmcm9tICdkMyc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4vY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlUmVwbGF5LFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQ2hhcnRFdmVudCB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbGVTZXJ2aWNlIHtcbiAgcHVibGljIHlBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcbiAgcHVibGljIHhBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcblxuICBwdWJsaWMgeVNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuICBwdWJsaWMgeFNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuXG4gIHByaXZhdGUgdHJhbnNmb3JtQ2FjaGVYID0gbmV3IE1hcDxudW1iZXIsIFpvb21UcmFuc2Zvcm0+KCk7XG4gIHByaXZhdGUgdHJhbnNmb3JtQ2FjaGVZID0gbmV3IE1hcDxudW1iZXIsIFpvb21UcmFuc2Zvcm0+KCk7XG5cbiAgcHJpdmF0ZSBzY2FsZU1hcHBpbmcgPSBuZXcgTWFwPFNjYWxlVHlwZSwgYW55PigpXG4gICAgLnNldChTY2FsZVR5cGUubGluZWFyLCBkMy5zY2FsZUxpbmVhcilcbiAgICAuc2V0KFNjYWxlVHlwZS50aW1lLCBkMy5zY2FsZVRpbWUpXG4gICAgLnNldChTY2FsZVR5cGUuY2F0ZWdvcnksIGQzLnNjYWxlT3JkaW5hbClcbiAgICAuc2V0KFNjYWxlVHlwZS5sb2csIGQzLnNjYWxlTG9nKVxuICAgIC5zZXQoU2NhbGVUeXBlLnBvdywgZDMuc2NhbGVQb3cpXG4gICAgLnNldChTY2FsZVR5cGUuc3FydCwgZDMuc2NhbGVTcXJ0KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMueEF4aXNNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogW0RPTVJlY3RSZWFkT25seSwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbLCBjb25maWddID0gZGF0YTtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIEF4aXM+KCk7XG4gICAgICAgIGNvbmZpZy54QXhpcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbWFwLnNldChpbmRleCwgQXhpcy5jcmVhdGVBeGlzKEF4aXNPcmllbnRhdGlvbi54LCBjb25maWcsIGluZGV4KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55QXhpc01hcCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSxcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFssIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQXhpcz4oKTtcbiAgICAgICAgY29uZmlnLnlBeGlzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBtYXAuc2V0KGluZGV4LCBBeGlzLmNyZWF0ZUF4aXMoQXhpc09yaWVudGF0aW9uLnksIGNvbmZpZywgaW5kZXgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMueFNjYWxlTWFwID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5zaXplLFxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnLFxuICAgICAgdGhpcy56b29tU2VydmljZS56b29tZWQsXG4gICAgXSkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMueUF4aXNNYXAsIHRoaXMueEF4aXNNYXApLFxuICAgICAgbWFwKFxuICAgICAgICAoXG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgW0RPTVJlY3RSZWFkT25seSwgSUNoYXJ0Q29uZmlnLCBJQ2hhcnRFdmVudDxBeGlzPl0sXG4gICAgICAgICAgICBNYXA8bnVtYmVyLCBBeGlzPixcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+XG4gICAgICAgICAgXVxuICAgICAgICApID0+IHtcbiAgICAgICAgICBjb25zdCBbW3NpemUsIGNvbmZpZywgem9vbV0sIHlBeGVzLCB4QXhlc10gPSBkYXRhO1xuXG4gICAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcblxuICAgICAgICAgIGNvbnN0IGxlZnQgPSBbLi4ueUF4ZXMudmFsdWVzKCldXG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnM/LnZpc2libGUgJiYgXy5vcHRpb25zPy5vcHBvc2l0ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MgKyBjdXIuc2VsZlNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBbLi4ueUF4ZXMudmFsdWVzKCldXG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnM/LnZpc2libGUgJiYgXy5vcHRpb25zPy5vcHBvc2l0ZSAhPT0gdHJ1ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MgKyBjdXIuc2VsZlNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgZmluYWxXaWR0aCA9IChzaXplLndpZHRoIHx8IDApIC0gbGVmdCAtIHJpZ2h0O1xuXG4gICAgICAgICAgeEF4ZXMuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICAgICAgbGV0IGRvbWFpbiA9IGF4aXMuZXh0cmVtZXM7XG5cbiAgICAgICAgICAgIGlmIChheGlzPy5vcHRpb25zLmludmVydGVkKSB7XG4gICAgICAgICAgICAgIGRvbWFpbiA9IFsuLi5heGlzLmV4dHJlbWVzXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRoaXMuc2NhbGVNYXBwaW5nXG4gICAgICAgICAgICAgIC5nZXQoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKSgpXG4gICAgICAgICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAgICAgICAucmFuZ2UoWzAsIGZpbmFsV2lkdGggLSBjb25maWcuYm91bmRzLnJpZ2h0XSk7XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMubmljZVRpY2tzKSB7XG4gICAgICAgICAgICAgIHNjYWxlLm5pY2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmxvZykge1xuICAgICAgICAgICAgICBzY2FsZS5iYXNlKGF4aXMub3B0aW9ucy5zY2FsZVR5cGUuYmFzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1hcC5zZXQoYXhpcy5pbmRleCwgc2NhbGUpO1xuXG4gICAgICAgICAgICBjb25zdCBoYXNDYWNoZSA9IHRoaXMudHJhbnNmb3JtQ2FjaGVYLmhhcyhheGlzLmluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc3RvcmUgPVxuICAgICAgICAgICAgICB6b29tPy50YXJnZXQ/Lm9yaWVudGF0aW9uICE9PSBBeGlzT3JpZW50YXRpb24ueCB8fFxuICAgICAgICAgICAgICB6b29tLnRhcmdldD8uaW5kZXggIT09IGF4aXMuaW5kZXg7XG5cbiAgICAgICAgICAgIGlmIChoYXNDYWNoZSAmJiBzaG91bGRSZXN0b3JlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkVHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm1DYWNoZVguZ2V0KGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHJlc3RvcmVkVHJhbnNmb3JtLnJlc2NhbGVYKHNjYWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoem9vbSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB6b29tLmV2ZW50IGFzIEQzWm9vbUV2ZW50PGFueSwgYW55PjtcblxuICAgICAgICAgICAgaWYgKHpvb20udGFyZ2V0Py5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNjYWxlID0gbWFwLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2NhbGVkID0gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKGN1cnJlbnRTY2FsZSk7XG4gICAgICAgICAgICAgIG1hcC5zZXQoem9vbS50YXJnZXQuaW5kZXgsIHJlc2NhbGVkKTtcblxuICAgICAgICAgICAgICBjb25zdCBheGlzID0geEF4ZXMuZ2V0KHpvb20udGFyZ2V0LmluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZVguc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55U2NhbGVNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy55QXhpc01hcCwgdGhpcy54QXhpc01hcCksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWcsIElDaGFydEV2ZW50PEF4aXM+XSxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+LFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz5cbiAgICAgICAgICBdXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwgY29uZmlnLCB6b29tXSwgeUF4ZXMsIHhBeGVzXSA9IGRhdGE7XG5cbiAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0gWy4uLnhBeGVzLnZhbHVlcygpXVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zPy52aXNpYmxlICYmIF8ub3B0aW9ucz8ub3Bwb3NpdGUpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IFsuLi54QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbEhlaWdodCA9XG4gICAgICAgICAgICAoc2l6ZS5oZWlnaHQgfHwgMCkgLVxuICAgICAgICAgICAgdG9wIC1cbiAgICAgICAgICAgIGJvdHRvbSAtXG4gICAgICAgICAgICBjb25maWc/LmJvdW5kcz8udG9wIC1cbiAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbTtcblxuICAgICAgICAgIHlBeGVzLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgICAgIGxldCBkb21haW4gPSBheGlzLmV4dHJlbWVzO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gWy4uLmF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXM/Lm9wdGlvbnMuaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlTWFwcGluZ1xuICAgICAgICAgICAgICAuZ2V0KGF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSkoKVxuICAgICAgICAgICAgICAuZG9tYWluKGRvbWFpbilcbiAgICAgICAgICAgICAgLnJhbmdlKFtjb25maWcuYm91bmRzLnRvcCwgZmluYWxIZWlnaHRdKTtcblxuICAgICAgICAgICAgaWYgKGF4aXMub3B0aW9ucy5uaWNlVGlja3MpIHtcbiAgICAgICAgICAgICAgc2NhbGUubmljZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUubG9nKSB7XG4gICAgICAgICAgICAgIHNjYWxlLmJhc2UoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS5iYXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFwLnNldChheGlzLmluZGV4LCBzY2FsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhhc0NhY2hlID0gdGhpcy50cmFuc2Zvcm1DYWNoZVkuaGFzKGF4aXMuaW5kZXgpO1xuXG4gICAgICAgICAgICBjb25zdCBzaG91bGRSZXN0b3JlID1cbiAgICAgICAgICAgICAgem9vbT8udGFyZ2V0Py5vcmllbnRhdGlvbiAhPT0gQXhpc09yaWVudGF0aW9uLnkgfHxcbiAgICAgICAgICAgICAgem9vbS50YXJnZXQ/LmluZGV4ICE9PSBheGlzLmluZGV4O1xuXG4gICAgICAgICAgICBpZiAoaGFzQ2FjaGUgJiYgc2hvdWxkUmVzdG9yZSkge1xuICAgICAgICAgICAgICBjb25zdCByZXN0b3JlZFRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ2FjaGVZLmdldChheGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgbWFwLnNldChheGlzLmluZGV4LCByZXN0b3JlZFRyYW5zZm9ybS5yZXNjYWxlWShzY2FsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gem9vbS5ldmVudCBhcyBEM1pvb21FdmVudDxhbnksIGFueT47XG5cbiAgICAgICAgICAgIGlmICh6b29tLnRhcmdldD8ub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY2FsZSA9IG1hcC5nZXQoem9vbS50YXJnZXQuaW5kZXgpO1xuICAgICAgICAgICAgICBjb25zdCByZXNjYWxlZCA9IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShjdXJyZW50U2NhbGUpO1xuICAgICAgICAgICAgICBtYXAuc2V0KHpvb20udGFyZ2V0LmluZGV4LCByZXNjYWxlZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYXhpcyA9IHlBeGVzLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGVZLnNldChheGlzLmluZGV4LCBldmVudC50cmFuc2Zvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -20,14 +20,14 @@ var ZoomType;
20
20
 
21
21
  class ChartBounds {
22
22
  constructor(options) {
23
- this.top = 30;
24
- this.right = 30;
23
+ this.top = 0;
24
+ this.right = 0;
25
25
  this.bottom = 0;
26
26
  this.left = 0;
27
- this.top = (options === null || options === void 0 ? void 0 : options.top) || this.top;
28
- this.right = (options === null || options === void 0 ? void 0 : options.right) || this.right;
29
- this.bottom = (options === null || options === void 0 ? void 0 : options.bottom) || this.bottom;
30
- this.left = (options === null || options === void 0 ? void 0 : options.left) || this.left;
27
+ this.top = (options === null || options === void 0 ? void 0 : options.top) || 0;
28
+ this.right = (options === null || options === void 0 ? void 0 : options.right) || 0;
29
+ this.bottom = (options === null || options === void 0 ? void 0 : options.bottom) || 0;
30
+ this.left = (options === null || options === void 0 ? void 0 : options.left) || 0;
31
31
  }
32
32
  }
33
33
 
@@ -133,11 +133,9 @@ class ChartService {
133
133
  this.annotationEvent$ = new Subject();
134
134
  this.annotationMove$ = new Subject();
135
135
  this.id = of((Date.now() + Math.random()).toString(36));
136
- this.config = this.config$
137
- .asObservable()
138
- .pipe(withLatestFrom(this.id), map(this.setDefaults), map(this.setPreparationData), shareReplay({
136
+ this.config = this.config$.asObservable().pipe(withLatestFrom(this.id), map(this.setDefaults), map(this.setPreparationData), shareReplay({
139
137
  bufferSize: 1,
140
- refCount: true
138
+ refCount: true,
141
139
  }));
142
140
  this.size = this.size$.asObservable();
143
141
  this.pointerMove = this.pointerMove$.asObservable();
@@ -147,8 +145,12 @@ class ChartService {
147
145
  this.pointMove = this.pointMove$.asObservable();
148
146
  this.chartClick = this.chartClick$.asObservable();
149
147
  this.chartContextMenu = this.chartContextMenu$.asObservable();
150
- this.annotationClick = this.annotationEvent$.asObservable().pipe(filter((_) => { var _a; return ((_a = _ === null || _ === void 0 ? void 0 : _.event) === null || _a === void 0 ? void 0 : _a.type) === 'click'; }));
151
- this.annotationContextMenu = this.annotationEvent$.asObservable().pipe(filter((_) => { var _a; return ((_a = _ === null || _ === void 0 ? void 0 : _.event) === null || _a === void 0 ? void 0 : _a.type) === 'contextmenu'; }));
148
+ this.annotationClick = this.annotationEvent$
149
+ .asObservable()
150
+ .pipe(filter((_) => { var _a; return ((_a = _ === null || _ === void 0 ? void 0 : _.event) === null || _a === void 0 ? void 0 : _a.type) === 'click'; }));
151
+ this.annotationContextMenu = this.annotationEvent$
152
+ .asObservable()
153
+ .pipe(filter((_) => { var _a; return ((_a = _ === null || _ === void 0 ? void 0 : _.event) === null || _a === void 0 ? void 0 : _a.type) === 'contextmenu'; }));
152
154
  this.annotationMove = this.annotationMove$.asObservable();
153
155
  this.plotBandClick = this.plotBandEvent$
154
156
  .asObservable()
@@ -202,7 +204,7 @@ class ChartService {
202
204
  this.chartContextMenu$.next(event);
203
205
  }
204
206
  setDefaults(data) {
205
- var _a, _b;
207
+ var _a, _b, _c, _d, _e, _f;
206
208
  let [config, id] = data;
207
209
  const defaultConfig = (defaultConfig) => {
208
210
  return (source) => {
@@ -218,8 +220,24 @@ class ChartService {
218
220
  var _a;
219
221
  return Object.assign(Object.assign({}, _), { id: (_a = _.id) !== null && _a !== void 0 ? _a : index });
220
222
  });
223
+ const oppositeYCount = (_a = config.yAxis) === null || _a === void 0 ? void 0 : _a.filter((_) => _.opposite);
224
+ const oppositeXCount = (_b = config.xAxis) === null || _b === void 0 ? void 0 : _b.filter((_) => _.opposite);
225
+ const nonOppositeYCount = (_c = config.yAxis) === null || _c === void 0 ? void 0 : _c.filter((_) => !_.opposite);
226
+ const nonOppositeXCount = (_d = config.xAxis) === null || _d === void 0 ? void 0 : _d.filter((_) => !_.opposite);
227
+ if ((nonOppositeXCount === null || nonOppositeXCount === void 0 ? void 0 : nonOppositeXCount.length) > 1) {
228
+ config.bounds.bottom = 0;
229
+ }
230
+ if ((oppositeXCount === null || oppositeXCount === void 0 ? void 0 : oppositeXCount.length) > 1) {
231
+ config.bounds.top = 0;
232
+ }
233
+ if ((nonOppositeYCount === null || nonOppositeYCount === void 0 ? void 0 : nonOppositeYCount.length) > 1) {
234
+ config.bounds.left = 0;
235
+ }
236
+ if ((oppositeYCount === null || oppositeYCount === void 0 ? void 0 : oppositeYCount.length) > 1) {
237
+ config.bounds.right = 0;
238
+ }
221
239
  config.tooltip = Object.assign({}, defaultChartConfig().tooltip, config.tooltip);
222
- config.zoom.syncChannel = (_b = (_a = config.zoom) === null || _a === void 0 ? void 0 : _a.syncChannel) !== null && _b !== void 0 ? _b : id;
240
+ config.zoom.syncChannel = (_f = (_e = config.zoom) === null || _e === void 0 ? void 0 : _e.syncChannel) !== null && _f !== void 0 ? _f : id;
223
241
  return config;
224
242
  }
225
243
  setPreparationData(config) {
@@ -476,7 +494,7 @@ class ScaleService {
476
494
  return map;
477
495
  }), shareReplay({
478
496
  bufferSize: 1,
479
- refCount: true
497
+ refCount: true,
480
498
  }));
481
499
  this.yAxisMap = combineLatest([
482
500
  this.chartService.size,
@@ -490,7 +508,7 @@ class ScaleService {
490
508
  return map;
491
509
  }), shareReplay({
492
510
  bufferSize: 1,
493
- refCount: true
511
+ refCount: true,
494
512
  }));
495
513
  this.xScaleMap = combineLatest([
496
514
  this.chartService.size,
@@ -516,7 +534,7 @@ class ScaleService {
516
534
  let scale = this.scaleMapping
517
535
  .get(axis.options.scaleType.type)()
518
536
  .domain(domain)
519
- .range([0, finalWidth]);
537
+ .range([0, finalWidth - config.bounds.right]);
520
538
  if (axis.options.niceTicks) {
521
539
  scale.nice();
522
540
  }
@@ -545,14 +563,14 @@ class ScaleService {
545
563
  return map;
546
564
  }), shareReplay({
547
565
  bufferSize: 1,
548
- refCount: true
566
+ refCount: true,
549
567
  }));
550
568
  this.yScaleMap = combineLatest([
551
569
  this.chartService.size,
552
570
  this.chartService.config,
553
571
  this.zoomService.zoomed,
554
572
  ]).pipe(withLatestFrom(this.yAxisMap, this.xAxisMap), map((data) => {
555
- var _a;
573
+ var _a, _b, _c;
556
574
  const [[size, config, zoom], yAxes, xAxes] = data;
557
575
  const map = new Map();
558
576
  const top = [...xAxes.values()]
@@ -561,7 +579,11 @@ class ScaleService {
561
579
  const bottom = [...xAxes.values()]
562
580
  .filter((_) => { var _a, _b; return ((_a = _.options) === null || _a === void 0 ? void 0 : _a.visible) && ((_b = _.options) === null || _b === void 0 ? void 0 : _b.opposite) !== true; })
563
581
  .reduce((acc, cur) => acc + cur.selfSize, 0);
564
- const finalHeight = (size.height || 0) - top - bottom;
582
+ const finalHeight = (size.height || 0) -
583
+ top -
584
+ bottom -
585
+ ((_a = config === null || config === void 0 ? void 0 : config.bounds) === null || _a === void 0 ? void 0 : _a.top) -
586
+ ((_b = config.bounds) === null || _b === void 0 ? void 0 : _b.bottom);
565
587
  yAxes.forEach((axis) => {
566
588
  var _a, _b;
567
589
  let domain = axis.extremes;
@@ -574,7 +596,7 @@ class ScaleService {
574
596
  const scale = this.scaleMapping
575
597
  .get(axis.options.scaleType.type)()
576
598
  .domain(domain)
577
- .range([0, finalHeight]);
599
+ .range([config.bounds.top, finalHeight]);
578
600
  if (axis.options.niceTicks) {
579
601
  scale.nice();
580
602
  }
@@ -592,7 +614,7 @@ class ScaleService {
592
614
  });
593
615
  if (zoom) {
594
616
  const event = zoom.event;
595
- if (((_a = zoom.target) === null || _a === void 0 ? void 0 : _a.orientation) === AxisOrientation.y) {
617
+ if (((_c = zoom.target) === null || _c === void 0 ? void 0 : _c.orientation) === AxisOrientation.y) {
596
618
  const currentScale = map.get(zoom.target.index);
597
619
  const rescaled = event.transform.rescaleY(currentScale);
598
620
  map.set(zoom.target.index, rescaled);
@@ -603,7 +625,7 @@ class ScaleService {
603
625
  return map;
604
626
  }), shareReplay({
605
627
  bufferSize: 1,
606
- refCount: true
628
+ refCount: true,
607
629
  }));
608
630
  }
609
631
  }
@@ -2076,11 +2098,11 @@ class ChartContainerComponent {
2076
2098
  this.xAxisMap = this._scaleService.xAxisMap;
2077
2099
  this.yScaleMap = this._scaleService.yScaleMap.pipe(throttleTime(0, animationFrameScheduler, { trailing: true }), tap(() => this._cdr.detectChanges()), shareReplay({
2078
2100
  bufferSize: 1,
2079
- refCount: true
2101
+ refCount: true,
2080
2102
  }));
2081
2103
  this.xScaleMap = this._scaleService.xScaleMap.pipe(throttleTime(0, animationFrameScheduler, { trailing: true }), tap(() => this._cdr.detectChanges()), shareReplay({
2082
2104
  bufferSize: 1,
2083
- refCount: true
2105
+ refCount: true,
2084
2106
  }));
2085
2107
  this.brushScale = combineLatest([
2086
2108
  this._scaleService.xScaleMap,
@@ -2088,19 +2110,18 @@ class ChartContainerComponent {
2088
2110
  ]).pipe(withLatestFrom(this.config), map((data) => {
2089
2111
  var _a;
2090
2112
  const [[x, y], config] = data;
2091
- return ((_a = config.brush) === null || _a === void 0 ? void 0 : _a.type) === BrushType.x
2092
- ? x.get(0)
2093
- : y.get(0);
2113
+ return ((_a = config.brush) === null || _a === void 0 ? void 0 : _a.type) === BrushType.x ? x.get(0) : y.get(0);
2094
2114
  }), shareReplay({
2095
2115
  bufferSize: 1,
2096
- refCount: true
2116
+ refCount: true,
2097
2117
  }));
2098
2118
  this.visibleRect = combineLatest([
2099
2119
  this.size,
2100
2120
  this.xAxisMap,
2101
- this.yAxisMap
2102
- ]).pipe(throttleTime(0, animationFrameScheduler, { trailing: true }), map((data) => {
2103
- const [size, x, y] = data;
2121
+ this.yAxisMap,
2122
+ ]).pipe(throttleTime(0, animationFrameScheduler, { trailing: true }), withLatestFrom(this.config), map((data) => {
2123
+ var _a, _b, _c, _d, _e, _f;
2124
+ const [[size, x, y], config] = data;
2104
2125
  const yAxesArray = [...y.values()];
2105
2126
  const xAxesArray = [...x.values()];
2106
2127
  const left = yAxesArray
@@ -2116,10 +2137,18 @@ class ChartContainerComponent {
2116
2137
  .filter((_) => _.options.opposite && _.options.visible)
2117
2138
  .reduce(this.sumSize, 0);
2118
2139
  return {
2119
- x: left,
2120
- y: top,
2121
- width: size.width - left - right,
2122
- height: size.height - top - bottom,
2140
+ x: left + ((_a = config.bounds) === null || _a === void 0 ? void 0 : _a.left),
2141
+ y: top + ((_b = config.bounds) === null || _b === void 0 ? void 0 : _b.top),
2142
+ width: size.width -
2143
+ left -
2144
+ right -
2145
+ ((_c = config.bounds) === null || _c === void 0 ? void 0 : _c.left) -
2146
+ ((_d = config.bounds) === null || _d === void 0 ? void 0 : _d.right),
2147
+ height: size.height -
2148
+ top -
2149
+ bottom -
2150
+ ((_e = config.bounds) === null || _e === void 0 ? void 0 : _e.top) -
2151
+ ((_f = config.bounds) === null || _f === void 0 ? void 0 : _f.bottom),
2123
2152
  };
2124
2153
  }), tap(() => setTimeout(() => this._cdr.detectChanges())));
2125
2154
  }
@@ -2141,8 +2170,9 @@ class ChartContainerComponent {
2141
2170
  this._observer.disconnect();
2142
2171
  }
2143
2172
  getTranslate(axis, size) {
2144
- return combineLatest([this.xAxisMap, this.yAxisMap]).pipe(map((data) => {
2145
- const [x, y] = data;
2173
+ return combineLatest([this.xAxisMap, this.yAxisMap]).pipe(withLatestFrom(this.config), map((data) => {
2174
+ var _a, _b;
2175
+ const [[x, y], config] = data;
2146
2176
  const xAxesArray = [...x.values()];
2147
2177
  const yAxesArray = [...y.values()];
2148
2178
  const oppositeFilter = this.filterPositionMap.get(true);
@@ -2157,10 +2187,10 @@ class ChartContainerComponent {
2157
2187
  const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
2158
2188
  const left = yAxesArray
2159
2189
  .filter((_) => _.options.visible && _.options.opposite !== true)
2160
- .reduce((acc, curr) => acc + curr.selfSize, 0);
2190
+ .reduce((acc, curr) => acc + curr.selfSize, (_a = config.bounds) === null || _a === void 0 ? void 0 : _a.left);
2161
2191
  const top = xAxesArray
2162
2192
  .filter((_) => _.options.visible && _.options.opposite === true)
2163
- .reduce((acc, curr) => acc + curr.selfSize, 0);
2193
+ .reduce((acc, curr) => acc + curr.selfSize, (_b = config.bounds) === null || _b === void 0 ? void 0 : _b.top);
2164
2194
  if (axis.orientation === AxisOrientation.x) {
2165
2195
  return `translate(${left}, ${axis.options.opposite
2166
2196
  ? oppositeTranslateX
@@ -2184,8 +2214,8 @@ class ChartContainerComponent {
2184
2214
  event: event,
2185
2215
  target: {
2186
2216
  x: x.invert(event.offsetX),
2187
- y: y.invert(event.offsetY)
2188
- }
2217
+ y: y.invert(event.offsetY),
2218
+ },
2189
2219
  });
2190
2220
  }
2191
2221
  contextMenu(event, xScales, yScales) {
@@ -2195,8 +2225,8 @@ class ChartContainerComponent {
2195
2225
  event: event,
2196
2226
  target: {
2197
2227
  x: x.invert(event.offsetX),
2198
- y: y.invert(event.offsetY)
2199
- }
2228
+ y: y.invert(event.offsetY),
2229
+ },
2200
2230
  });
2201
2231
  }
2202
2232
  mouseMove(event) {