@equinor/esv-intersection 3.1.9 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/components/axis.d.ts.map +1 -1
  2. package/dist/control/ExtendedCurveInterpolator.d.ts.map +1 -1
  3. package/dist/control/IntersectionReferenceSystem.d.ts.map +1 -1
  4. package/dist/control/LayerManager.d.ts.map +1 -1
  5. package/dist/control/MainController.d.ts.map +1 -1
  6. package/dist/control/ZoomPanHandler.d.ts.map +1 -1
  7. package/dist/control/overlay.d.ts.map +1 -1
  8. package/dist/datautils/colortable.d.ts.map +1 -1
  9. package/dist/datautils/findsample.d.ts.map +1 -1
  10. package/dist/datautils/picks.d.ts.map +1 -1
  11. package/dist/datautils/schematicShapeGenerator.d.ts +10 -10
  12. package/dist/datautils/schematicShapeGenerator.d.ts.map +1 -1
  13. package/dist/datautils/seismicimage.d.ts.map +1 -1
  14. package/dist/datautils/surfacedata.d.ts.map +1 -1
  15. package/dist/datautils/trajectory.d.ts.map +1 -1
  16. package/dist/index.cjs +2 -2
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +2533 -1570
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/index.umd.js +2 -2
  21. package/dist/index.umd.js.map +1 -1
  22. package/dist/layers/CalloutCanvasLayer.d.ts.map +1 -1
  23. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +2 -3
  24. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts.map +1 -1
  25. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts.map +1 -1
  26. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +3 -4
  27. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts.map +1 -1
  28. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +4 -4
  29. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts.map +1 -1
  30. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +3 -4
  31. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts.map +1 -1
  32. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +4 -4
  33. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts.map +1 -1
  34. package/dist/layers/GeomodelCanvasLayer.d.ts.map +1 -1
  35. package/dist/layers/GeomodelLabelsLayer.d.ts.map +1 -1
  36. package/dist/layers/GeomodelLayerV2.d.ts.map +1 -1
  37. package/dist/layers/GridLayer.d.ts.map +1 -1
  38. package/dist/layers/ImageCanvasLayer.d.ts.map +1 -1
  39. package/dist/layers/ReferenceLineLayer.d.ts.map +1 -1
  40. package/dist/layers/SchematicLayer.d.ts +6 -6
  41. package/dist/layers/SchematicLayer.d.ts.map +1 -1
  42. package/dist/layers/WellborePathLayer.d.ts.map +1 -1
  43. package/dist/layers/base/CanvasLayer.d.ts.map +1 -1
  44. package/dist/layers/base/HTMLLayer.d.ts.map +1 -1
  45. package/dist/layers/base/Layer.d.ts.map +1 -1
  46. package/dist/layers/base/PixiLayer.d.ts +7 -8
  47. package/dist/layers/base/PixiLayer.d.ts.map +1 -1
  48. package/dist/layers/base/SVGLayer.d.ts.map +1 -1
  49. package/dist/layers/schematicInterfaces.d.ts.map +1 -1
  50. package/dist/utils/arc-length.d.ts.map +1 -1
  51. package/dist/utils/root-finder.d.ts.map +1 -1
  52. package/dist/utils/text.d.ts.map +1 -1
  53. package/dist/utils/vectorUtils.d.ts +6 -6
  54. package/dist/utils/vectorUtils.d.ts.map +1 -1
  55. package/dist/vendor/pixi-dashed-line/index.d.ts +13 -13
  56. package/dist/vendor/pixi-dashed-line/index.d.ts.map +1 -1
  57. package/package.json +4 -6
  58. package/src/components/axis.ts +40 -10
  59. package/src/control/ExtendedCurveInterpolator.ts +47 -9
  60. package/src/control/IntersectionReferenceSystem.ts +110 -30
  61. package/src/control/LayerManager.ts +76 -24
  62. package/src/control/MainController.ts +37 -8
  63. package/src/control/ZoomPanHandler.ts +76 -14
  64. package/src/control/overlay.ts +18 -6
  65. package/src/datautils/colortable.ts +7 -2
  66. package/src/datautils/findsample.ts +12 -2
  67. package/src/datautils/picks.ts +66 -18
  68. package/src/datautils/schematicShapeGenerator.ts +591 -165
  69. package/src/datautils/seismicimage.ts +36 -10
  70. package/src/datautils/surfacedata.ts +119 -40
  71. package/src/datautils/trajectory.ts +56 -17
  72. package/src/layers/CalloutCanvasLayer.ts +129 -26
  73. package/src/layers/CustomDisplayObjects/ComplexRope.ts +11 -13
  74. package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +14 -13
  75. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRope.ts +11 -14
  76. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +13 -12
  77. package/src/layers/CustomDisplayObjects/UniformTextureStretchRope.ts +16 -17
  78. package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +11 -11
  79. package/src/layers/GeomodelCanvasLayer.ts +10 -3
  80. package/src/layers/GeomodelLabelsLayer.ts +212 -87
  81. package/src/layers/GeomodelLayerV2.ts +11 -7
  82. package/src/layers/GridLayer.ts +14 -3
  83. package/src/layers/ImageCanvasLayer.ts +17 -3
  84. package/src/layers/ReferenceLineLayer.ts +31 -9
  85. package/src/layers/SchematicLayer.ts +533 -173
  86. package/src/layers/WellborePathLayer.ts +22 -7
  87. package/src/layers/base/CanvasLayer.ts +18 -4
  88. package/src/layers/base/HTMLLayer.ts +11 -3
  89. package/src/layers/base/Layer.ts +10 -2
  90. package/src/layers/base/PixiLayer.ts +36 -43
  91. package/src/layers/base/SVGLayer.ts +13 -3
  92. package/src/layers/schematicInterfaces.ts +16 -6
  93. package/src/utils/arc-length.ts +31 -5
  94. package/src/utils/root-finder.ts +32 -4
  95. package/src/utils/text.ts +34 -7
  96. package/src/utils/vectorUtils.ts +27 -10
  97. package/src/vendor/pixi-dashed-line/index.ts +93 -39
@@ -17,7 +17,9 @@ export class LayerManager {
17
17
  private layers: Layer<unknown>[] = [];
18
18
 
19
19
  private _axis: Axis | undefined;
20
- private _svgContainer: Selection<HTMLDivElement, unknown, null, undefined> | undefined;
20
+ private _svgContainer:
21
+ | Selection<HTMLDivElement, unknown, null, undefined>
22
+ | undefined;
21
23
 
22
24
  /**
23
25
  * Handles layers and axis also holds a zoom and pan handler object
@@ -25,16 +27,30 @@ export class LayerManager {
25
27
  * @param scaleOptions
26
28
  * @param axisOptions
27
29
  */
28
- constructor(container: HTMLElement, scaleOptions?: ScaleOptions, axisOptions?: AxisOptions) {
30
+ constructor(
31
+ container: HTMLElement,
32
+ scaleOptions?: ScaleOptions,
33
+ axisOptions?: AxisOptions,
34
+ ) {
29
35
  this.container = container;
30
36
  this.layerContainer = document.createElement('div');
31
37
  this.layerContainer.className = 'layer-container';
32
38
  this.container.appendChild(this.layerContainer);
33
- this.adjustToSize(+(this.container.getAttribute('width') ?? 0), +(this.container.getAttribute('height') ?? 0));
34
- this._zoomPanHandler = new ZoomPanHandler(container, (event) => this.rescale(event));
39
+ this.adjustToSize(
40
+ +(this.container.getAttribute('width') ?? 0),
41
+ +(this.container.getAttribute('height') ?? 0),
42
+ );
43
+ this._zoomPanHandler = new ZoomPanHandler(container, event =>
44
+ this.rescale(event),
45
+ );
35
46
  if (scaleOptions) {
36
47
  const { xMin, xMax, yMin, yMax, xBounds, yBounds } = scaleOptions;
37
- if (xMin !== undefined && xMax !== undefined && yMin !== undefined && yMax !== undefined) {
48
+ if (
49
+ xMin !== undefined &&
50
+ xMax !== undefined &&
51
+ yMin !== undefined &&
52
+ yMax !== undefined
53
+ ) {
38
54
  this._zoomPanHandler.setBounds([xMin, xMax], [yMin, yMax]);
39
55
  }
40
56
  if (xBounds && yBounds) {
@@ -56,7 +72,7 @@ export class LayerManager {
56
72
  * @param layers array of layers
57
73
  */
58
74
  addLayers(layers: Layer<unknown>[]): LayerManager {
59
- layers.forEach((layer) => this.addLayer(layer));
75
+ layers.forEach(layer => this.addLayer(layer));
60
76
  return this;
61
77
  }
62
78
 
@@ -72,7 +88,7 @@ export class LayerManager {
72
88
  * @param includeReferenceSystem - (optional) if true also removes reference system, default is true
73
89
  */
74
90
  clearAllData(includeReferenceSystem = true): LayerManager {
75
- this.layers.forEach((l) => l.clearData(includeReferenceSystem));
91
+ this.layers.forEach(l => l.clearData(includeReferenceSystem));
76
92
  return this;
77
93
  }
78
94
 
@@ -81,7 +97,10 @@ export class LayerManager {
81
97
  * @param layer Layer
82
98
  * @param params extra params to pass to the onUpdate method
83
99
  */
84
- addLayer(layer: Layer<unknown>, params?: LayerOptions<unknown>): LayerManager {
100
+ addLayer(
101
+ layer: Layer<unknown>,
102
+ params?: LayerOptions<unknown>,
103
+ ): LayerManager {
85
104
  this.layers.push(layer);
86
105
  this.initLayer(layer, params);
87
106
 
@@ -93,10 +112,10 @@ export class LayerManager {
93
112
  * @param layerId name of layer
94
113
  */
95
114
  removeLayer(layerId: string): LayerManager {
96
- const layer = this.layers.find((l) => l.id === layerId);
115
+ const layer = this.layers.find(l => l.id === layerId);
97
116
  if (layer) {
98
117
  layer.onUnmount();
99
- this.layers = this.layers.filter((l) => l.id !== layerId);
118
+ this.layers = this.layers.filter(l => l.id !== layerId);
100
119
  }
101
120
 
102
121
  return this;
@@ -107,17 +126,22 @@ export class LayerManager {
107
126
  */
108
127
  removeAllLayers(): LayerManager {
109
128
  const { layers } = this;
110
- layers.forEach((layer) => {
129
+ layers.forEach(layer => {
111
130
  this.removeLayer(layer.id);
112
131
  });
113
132
  return this;
114
133
  }
115
134
 
116
135
  getLayer(layerId: string): Layer<unknown> | undefined {
117
- return this.layers.find((l) => l.id === layerId || l.getInternalLayerIds().includes(layerId));
136
+ return this.layers.find(
137
+ l => l.id === layerId || l.getInternalLayerIds().includes(layerId),
138
+ );
118
139
  }
119
140
 
120
- initLayer(layer: Layer<unknown>, params?: LayerOptions<unknown>): LayerManager {
141
+ initLayer(
142
+ layer: Layer<unknown>,
143
+ params?: LayerOptions<unknown>,
144
+ ): LayerManager {
121
145
  const event: OnMountEvent = {
122
146
  elm: this.layerContainer,
123
147
  };
@@ -127,7 +151,12 @@ export class LayerManager {
127
151
  layer.onRescale(rescaleEvent);
128
152
 
129
153
  if (this._svgContainer) {
130
- const highestZIndex = this.layers.length > 0 ? this.layers.reduce((max, layers) => (max.order > layers.order ? max : layers)).order : 1;
154
+ const highestZIndex =
155
+ this.layers.length > 0
156
+ ? this.layers.reduce((max, layers) =>
157
+ max.order > layers.order ? max : layers,
158
+ ).order
159
+ : 1;
131
160
  this._svgContainer.style('z-index', `${highestZIndex + 1}`);
132
161
  }
133
162
 
@@ -160,8 +189,14 @@ export class LayerManager {
160
189
  * @param height (required)
161
190
  */
162
191
  adjustToSize(width: number, height: number): void {
163
- const layersWidth = Math.max(this._axis ? width - HORIZONTAL_AXIS_MARGIN : width, 0);
164
- const layersHeight = Math.max(this._axis ? height - VERTICAL_AXIS_MARGIN : height, 0);
192
+ const layersWidth = Math.max(
193
+ this._axis ? width - HORIZONTAL_AXIS_MARGIN : width,
194
+ 0,
195
+ );
196
+ const layersHeight = Math.max(
197
+ this._axis ? height - VERTICAL_AXIS_MARGIN : height,
198
+ 0,
199
+ );
165
200
 
166
201
  if (this._axis) {
167
202
  const resizeEvent = { width, height };
@@ -169,7 +204,7 @@ export class LayerManager {
169
204
  }
170
205
  if (this.layers) {
171
206
  const resizeEvent = { width: layersWidth, height: layersHeight };
172
- this.layers.forEach((layer) => layer.onResize(resizeEvent));
207
+ this.layers.forEach(layer => layer.onResize(resizeEvent));
173
208
  }
174
209
  if (this._zoomPanHandler) {
175
210
  this._zoomPanHandler.adjustToSize(layersWidth, layersHeight, true);
@@ -177,7 +212,7 @@ export class LayerManager {
177
212
  }
178
213
 
179
214
  setReferenceSystem(irs: IntersectionReferenceSystem): void {
180
- this.layers.forEach((layer) => (layer.referenceSystem = irs));
215
+ this.layers.forEach(layer => (layer.referenceSystem = irs));
181
216
  }
182
217
 
183
218
  showAxis(): LayerManager {
@@ -204,7 +239,9 @@ export class LayerManager {
204
239
  if (this._axis) {
205
240
  this._axis.offsetX = x;
206
241
  this._axis.offsetY = y;
207
- const gridLayers = this.layers.filter((l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer);
242
+ const gridLayers = this.layers.filter(
243
+ (l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer,
244
+ );
208
245
  gridLayers.forEach((l: GridLayer<unknown>) => {
209
246
  l.offsetX = x;
210
247
  l.offsetY = y;
@@ -216,7 +253,9 @@ export class LayerManager {
216
253
  setXAxisOffset(x: number): LayerManager {
217
254
  if (this._axis) {
218
255
  this._axis.offsetX = x;
219
- const gridLayers = this.layers.filter((l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer);
256
+ const gridLayers = this.layers.filter(
257
+ (l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer,
258
+ );
220
259
  gridLayers.forEach((l: GridLayer<unknown>) => {
221
260
  l.offsetX = x;
222
261
  });
@@ -227,7 +266,9 @@ export class LayerManager {
227
266
  setYAxisOffset(y: number): LayerManager {
228
267
  if (this._axis) {
229
268
  this._axis.offsetY = y;
230
- const gridLayers = this.layers.filter((l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer);
269
+ const gridLayers = this.layers.filter(
270
+ (l: Layer<unknown>): l is GridLayer<unknown> => l instanceof GridLayer,
271
+ );
231
272
  gridLayers.forEach((l: GridLayer<unknown>) => {
232
273
  l.offsetY = y;
233
274
  });
@@ -272,7 +313,9 @@ export class LayerManager {
272
313
  this._axis.onRescale(event);
273
314
  }
274
315
  if (this.layers) {
275
- this.layers.forEach((layer) => (layer.isVisible === true ? layer.onRescale(event) : {}));
316
+ this.layers.forEach(layer =>
317
+ layer.isVisible === true ? layer.onRescale(event) : {},
318
+ );
276
319
  }
277
320
  }
278
321
 
@@ -285,11 +328,20 @@ export class LayerManager {
285
328
  .style('z-index', '10')
286
329
  .style('pointer-events', 'none');
287
330
 
288
- const svg = this._svgContainer.append('svg').attr('height', `${container.offsetHeight}px`).attr('width', `${container.offsetWidth}px`);
331
+ const svg = this._svgContainer
332
+ .append('svg')
333
+ .attr('height', `${container.offsetHeight}px`)
334
+ .attr('width', `${container.offsetWidth}px`);
289
335
 
290
336
  const showLabels = true;
291
337
 
292
- const axis = new Axis(svg, showLabels, options.xLabel, options.yLabel, options.unitOfMeasure);
338
+ const axis = new Axis(
339
+ svg,
340
+ showLabels,
341
+ options.xLabel,
342
+ options.yLabel,
343
+ options.unitOfMeasure,
344
+ );
293
345
 
294
346
  return axis;
295
347
  };
@@ -30,13 +30,25 @@ export class Controller {
30
30
  * @param options.referenceSystem (optional) sets reference system, takes priority over path if both are supplied
31
31
  */
32
32
  constructor(options: ControllerOptions) {
33
- const { container, axisOptions, scaleOptions, referenceSystem, layers, path } = options;
34
-
35
- this._referenceSystem = referenceSystem || (path && new IntersectionReferenceSystem(path));
33
+ const {
34
+ container,
35
+ axisOptions,
36
+ scaleOptions,
37
+ referenceSystem,
38
+ layers,
39
+ path,
40
+ } = options;
41
+
42
+ this._referenceSystem =
43
+ referenceSystem || (path && new IntersectionReferenceSystem(path));
36
44
 
37
45
  this._overlay = overlay(this, container);
38
46
 
39
- this.layerManager = new LayerManager(this._overlay.elm.node() as HTMLElement, scaleOptions, axisOptions);
47
+ this.layerManager = new LayerManager(
48
+ this._overlay.elm.node() as HTMLElement,
49
+ scaleOptions,
50
+ axisOptions,
51
+ );
40
52
  if (layers) {
41
53
  this.layerManager.addLayers(layers);
42
54
  this.setOverlayZIndex(layers);
@@ -136,8 +148,15 @@ export class Controller {
136
148
  adjustToSize(width: number, height: number): Controller {
137
149
  this.layerManager.adjustToSize(width, height);
138
150
 
139
- const dimensions = { width: Math.max(width - HORIZONTAL_AXIS_MARGIN, 0), height: Math.max(height - VERTICAL_AXIS_MARGIN, 0) };
140
- this.overlay.elm.dispatch('resize', { detail: dimensions, bubbles: true, cancelable: true });
151
+ const dimensions = {
152
+ width: Math.max(width - HORIZONTAL_AXIS_MARGIN, 0),
153
+ height: Math.max(height - VERTICAL_AXIS_MARGIN, 0),
154
+ };
155
+ this.overlay.elm.dispatch('resize', {
156
+ detail: dimensions,
157
+ bubbles: true,
158
+ cancelable: true,
159
+ });
141
160
 
142
161
  return this;
143
162
  }
@@ -149,7 +168,12 @@ export class Controller {
149
168
  * @param displ - displacement
150
169
  * @param duration - duration of transition
151
170
  */
152
- setViewport(cx?: number, cy?: number, displacement?: number, duration?: number): Controller {
171
+ setViewport(
172
+ cx?: number,
173
+ cy?: number,
174
+ displacement?: number,
175
+ duration?: number,
176
+ ): Controller {
153
177
  this.zoomPanHandler.setViewport(cx, cy, displacement, duration);
154
178
  return this;
155
179
  }
@@ -263,7 +287,12 @@ export class Controller {
263
287
  }
264
288
 
265
289
  private getHighestZIndex(layers: Layer<unknown>[]): number {
266
- const highestZIndex = layers.length > 0 ? layers.reduce((max, layers) => (max.order > layers.order ? max : layers)).order : 1;
290
+ const highestZIndex =
291
+ layers.length > 0
292
+ ? layers.reduce((max, layers) =>
293
+ max.order > layers.order ? max : layers,
294
+ ).order
295
+ : 1;
267
296
  return highestZIndex;
268
297
  }
269
298
 
@@ -34,7 +34,10 @@ export class ZoomPanHandler {
34
34
  constructor(
35
35
  elm: HTMLElement,
36
36
  onRescale: RescaleFunction,
37
- options: ZoomAndPanOptions = { maxZoomLevel: DEFAULT_MAX_ZOOM_LEVEL, minZoomLevel: DEFAULT_MIN_ZOOM_LEVEL },
37
+ options: ZoomAndPanOptions = {
38
+ maxZoomLevel: DEFAULT_MAX_ZOOM_LEVEL,
39
+ minZoomLevel: DEFAULT_MIN_ZOOM_LEVEL,
40
+ },
38
41
  ) {
39
42
  this.container = select(elm);
40
43
  this.options = options;
@@ -180,7 +183,14 @@ export class ZoomPanHandler {
180
183
  * Update translate extent (pan limits)
181
184
  */
182
185
  updateTranslateExtent(): void {
183
- const { width, xSpan, zFactor, enableTranslateExtent, translateBoundsX, translateBoundsY } = this;
186
+ const {
187
+ width,
188
+ xSpan,
189
+ zFactor,
190
+ enableTranslateExtent,
191
+ translateBoundsX,
192
+ translateBoundsY,
193
+ } = this;
184
194
 
185
195
  let x1 = -Infinity;
186
196
  let y1 = -Infinity;
@@ -206,7 +216,19 @@ export class ZoomPanHandler {
206
216
  * Create an event object from current state
207
217
  */
208
218
  currentStateAsEvent(): OnRescaleEvent {
209
- const { scaleX, scaleY, xBounds, yBounds, zFactor, viewportRatio, currentTransform, xRatio, yRatio, width, height } = this;
219
+ const {
220
+ scaleX,
221
+ scaleY,
222
+ xBounds,
223
+ yBounds,
224
+ zFactor,
225
+ viewportRatio,
226
+ currentTransform,
227
+ xRatio,
228
+ yRatio,
229
+ width,
230
+ height,
231
+ } = this;
210
232
 
211
233
  return {
212
234
  xScale: scaleX.copy(),
@@ -236,7 +258,9 @@ export class ZoomPanHandler {
236
258
  * Initialized handler
237
259
  */
238
260
  init(): void {
239
- this.zoom = zoom<HTMLElement, unknown>().scaleExtent([this.options.minZoomLevel, this.options.maxZoomLevel]).on('zoom', this.onZoom);
261
+ this.zoom = zoom<HTMLElement, unknown>()
262
+ .scaleExtent([this.options.minZoomLevel, this.options.maxZoomLevel])
263
+ .on('zoom', this.onZoom);
240
264
  this.container.call(this.zoom);
241
265
  }
242
266
 
@@ -287,8 +311,14 @@ export class ZoomPanHandler {
287
311
  * @param duration - duration of transition
288
312
  * @returns a merge of filter and payload
289
313
  */
290
- setViewport(cx?: number, cy?: number, displ?: number, duration?: number): void {
291
- const { zoom, container, calculateTransform, scaleX, scaleY, isXInverted } = this;
314
+ setViewport(
315
+ cx?: number,
316
+ cy?: number,
317
+ displ?: number,
318
+ duration?: number,
319
+ ): void {
320
+ const { zoom, container, calculateTransform, scaleX, scaleY, isXInverted } =
321
+ this;
292
322
 
293
323
  if (cx == null || displ == null || isNaN(cx) || isNaN(displ)) {
294
324
  const xd = scaleX.domain() as [number, number];
@@ -334,7 +364,10 @@ export class ZoomPanHandler {
334
364
  /**
335
365
  * Set bounds
336
366
  */
337
- setTranslateBounds(xBounds: [number, number], yBounds: [number, number]): void {
367
+ setTranslateBounds(
368
+ xBounds: [number, number],
369
+ yBounds: [number, number],
370
+ ): void {
338
371
  this.translateBoundsX = xBounds;
339
372
  this.translateBoundsY = yBounds;
340
373
 
@@ -348,8 +381,18 @@ export class ZoomPanHandler {
348
381
  adjustToSize(): void;
349
382
  adjustToSize(autoAdjust: boolean): void;
350
383
  adjustToSize(width: number, height: number, force: boolean): void;
351
- adjustToSize(widthOrAutoAdjust?: unknown, height?: number, force = false): void {
352
- const { width: oldWidth, height: oldHeight, scaleX, scaleY, recalculateZoomTransform } = this;
384
+ adjustToSize(
385
+ widthOrAutoAdjust?: unknown,
386
+ height?: number,
387
+ force = false,
388
+ ): void {
389
+ const {
390
+ width: oldWidth,
391
+ height: oldHeight,
392
+ scaleX,
393
+ scaleY,
394
+ recalculateZoomTransform,
395
+ } = this;
353
396
 
354
397
  let w = 0;
355
398
  let h = 0;
@@ -360,7 +403,8 @@ export class ZoomPanHandler {
360
403
  } else {
361
404
  const containerEl = this.container.node();
362
405
  if (containerEl) {
363
- const { width: containerWidth, height: containerHeight } = containerEl.getBoundingClientRect();
406
+ const { width: containerWidth, height: containerHeight } =
407
+ containerEl.getBoundingClientRect();
364
408
  w = containerWidth;
365
409
  h = containerHeight;
366
410
  }
@@ -389,7 +433,16 @@ export class ZoomPanHandler {
389
433
  * @returns New transformation matrix
390
434
  */
391
435
  calculateTransform(dx0: number, dx1: number, dy: number): ZoomTransform {
392
- const { scaleX, xSpan, xBounds, yBounds, zFactor, viewportRatio: ratio, isXInverted, isYInverted } = this;
436
+ const {
437
+ scaleX,
438
+ xSpan,
439
+ xBounds,
440
+ yBounds,
441
+ zFactor,
442
+ viewportRatio: ratio,
443
+ isXInverted,
444
+ isYInverted,
445
+ } = this;
393
446
 
394
447
  const [rx1, rx2] = scaleX.range() as [number, number];
395
448
  const displ = Math.abs(dx1 - dx0);
@@ -398,8 +451,11 @@ export class ZoomPanHandler {
398
451
 
399
452
  const dy0 = dy - (isYInverted ? -displ : displ) / zFactor / ratio / 2;
400
453
 
401
- const tx = (xBounds[0] - dx0) / (isXInverted ? -unitsPerPixels : unitsPerPixels);
402
- const ty = (yBounds[0] - dy0) / ((isYInverted ? -unitsPerPixels : unitsPerPixels) / zFactor);
454
+ const tx =
455
+ (xBounds[0] - dx0) / (isXInverted ? -unitsPerPixels : unitsPerPixels);
456
+ const ty =
457
+ (yBounds[0] - dy0) /
458
+ ((isYInverted ? -unitsPerPixels : unitsPerPixels) / zFactor);
403
459
 
404
460
  return zoomIdentity.translate(tx, ty).scale(k);
405
461
  }
@@ -408,7 +464,13 @@ export class ZoomPanHandler {
408
464
  * Recalcualate the transform
409
465
  */
410
466
  recalculateZoomTransform(): void {
411
- const { scaleX, scaleY, container, calculateTransform, updateTranslateExtent } = this;
467
+ const {
468
+ scaleX,
469
+ scaleY,
470
+ container,
471
+ calculateTransform,
472
+ updateTranslateExtent,
473
+ } = this;
412
474
 
413
475
  const [dx0, dx1] = scaleX.domain() as [number, number];
414
476
  const [dy0, dy1] = scaleY.domain() as [number, number];
@@ -10,11 +10,15 @@ export class Overlay<T> {
10
10
 
11
11
  constructor(caller: T, container: HTMLElement) {
12
12
  const con = select(container);
13
- this.elm = con.append('div').attr('id', 'overlay').style('z-index', '11').style('position', 'absolute');
13
+ this.elm = con
14
+ .append('div')
15
+ .attr('id', 'overlay')
16
+ .style('z-index', '11')
17
+ .style('position', 'absolute');
14
18
  this.source = this.elm.node() ?? undefined;
15
19
 
16
20
  const { elm } = this;
17
- elm.on('resize', (event) => {
21
+ elm.on('resize', event => {
18
22
  const { width, height } = event.detail;
19
23
  elm.style('width', `${width}px`).style('height', `${height}px`);
20
24
 
@@ -39,7 +43,7 @@ export class Overlay<T> {
39
43
  });
40
44
  });
41
45
 
42
- elm.on('mousemove', (event) => {
46
+ elm.on('mousemove', event => {
43
47
  if (!this.enabled) {
44
48
  return;
45
49
  }
@@ -83,8 +87,15 @@ export class Overlay<T> {
83
87
  });
84
88
  }
85
89
 
86
- create(key: string, callbacks?: OverlayCallbacks<T>): HTMLElement | undefined {
87
- const newElm = this.elm.append('div').style('position', 'relative').style('pointer-events', 'none').node();
90
+ create(
91
+ key: string,
92
+ callbacks?: OverlayCallbacks<T>,
93
+ ): HTMLElement | undefined {
94
+ const newElm = this.elm
95
+ .append('div')
96
+ .style('position', 'relative')
97
+ .style('pointer-events', 'none')
98
+ .node();
88
99
 
89
100
  if (newElm != null) {
90
101
  this.elements[key] = newElm;
@@ -119,4 +130,5 @@ export class Overlay<T> {
119
130
  }
120
131
  }
121
132
 
122
- export const overlay = <T>(caller: T, container: HTMLElement): Overlay<T> => new Overlay<T>(caller, container);
133
+ export const overlay = <T>(caller: T, container: HTMLElement): Overlay<T> =>
134
+ new Overlay<T>(caller, container);
@@ -1,11 +1,16 @@
1
1
  import { scaleLinear } from 'd3-scale';
2
2
  import { color } from 'd3-color';
3
3
 
4
- export function createColorTable(colorMap: string[], size: number): [number, number, number][] {
4
+ export function createColorTable(
5
+ colorMap: string[],
6
+ size: number,
7
+ ): [number, number, number][] {
5
8
  const colorDomain = colorMap.map((_v, i) => (i * size) / colorMap.length);
6
9
  const colorScale = scaleLinear<string>().domain(colorDomain).range(colorMap);
7
10
 
8
- const table = Array.from(new Array(size).keys()).map<[number, number, number]>((i) => {
11
+ const table = Array.from(new Array(size).keys()).map<
12
+ [number, number, number]
13
+ >(i => {
9
14
  const rgb = color(colorScale(i))?.rgb();
10
15
  return rgb != null ? [rgb.r, rgb.g, rgb.b] : [0, 0, 0];
11
16
  });
@@ -38,7 +38,12 @@ export function findIndexOfSample(data: number[][], pos: number): number {
38
38
  for (let i = a; i < b; i++) {
39
39
  const v1 = data[i]?.[0];
40
40
  const v2 = data[i + 1]?.[0];
41
- if (v1 != null && v2 != null && Math.min(v1, v2) <= pos && pos <= Math.max(v1, v2)) {
41
+ if (
42
+ v1 != null &&
43
+ v2 != null &&
44
+ Math.min(v1, v2) <= pos &&
45
+ pos <= Math.max(v1, v2)
46
+ ) {
42
47
  index = i;
43
48
  break;
44
49
  }
@@ -47,7 +52,12 @@ export function findIndexOfSample(data: number[][], pos: number): number {
47
52
  return index;
48
53
  }
49
54
 
50
- export function findSampleAtPos(data: number[][], pos: number, topLimit = 0, bottomLimit = 0): number {
55
+ export function findSampleAtPos(
56
+ data: number[][],
57
+ pos: number,
58
+ topLimit = 0,
59
+ bottomLimit = 0,
60
+ ): number {
51
61
  let y = 0;
52
62
  const index = findIndexOfSample(data, pos);
53
63
  if (index !== -1) {