@equinor/esv-intersection 3.0.4 → 3.0.6

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 (169) hide show
  1. package/README.md +18 -3
  2. package/dist/components/axis.d.ts +48 -0
  3. package/dist/components/axis.d.ts.map +1 -0
  4. package/dist/components/index.d.ts +2 -0
  5. package/dist/components/index.d.ts.map +1 -0
  6. package/dist/constants.d.ts +1 -0
  7. package/dist/constants.d.ts.map +1 -0
  8. package/dist/control/ExtendedCurveInterpolator.d.ts +59 -0
  9. package/dist/control/ExtendedCurveInterpolator.d.ts.map +1 -0
  10. package/dist/control/IntersectionReferenceSystem.d.ts +97 -0
  11. package/dist/control/IntersectionReferenceSystem.d.ts.map +1 -0
  12. package/dist/control/LayerManager.d.ts +77 -0
  13. package/dist/control/LayerManager.d.ts.map +1 -0
  14. package/dist/control/MainController.d.ts +155 -0
  15. package/dist/control/MainController.d.ts.map +1 -0
  16. package/dist/control/ZoomPanHandler.d.ts +159 -0
  17. package/dist/control/ZoomPanHandler.d.ts.map +1 -0
  18. package/dist/control/index.d.ts +6 -0
  19. package/dist/control/index.d.ts.map +1 -0
  20. package/dist/control/interfaces.d.ts +38 -0
  21. package/dist/control/interfaces.d.ts.map +1 -0
  22. package/dist/control/overlay.d.ts +21 -0
  23. package/dist/control/overlay.d.ts.map +1 -0
  24. package/dist/datautils/colortable.d.ts +2 -0
  25. package/dist/datautils/colortable.d.ts.map +1 -0
  26. package/dist/datautils/findsample.d.ts +3 -0
  27. package/dist/datautils/findsample.d.ts.map +1 -0
  28. package/dist/datautils/index.d.ts +7 -0
  29. package/dist/datautils/index.d.ts.map +1 -0
  30. package/dist/datautils/interfaces.d.ts +64 -0
  31. package/dist/datautils/interfaces.d.ts.map +1 -0
  32. package/dist/datautils/picks.d.ts +75 -0
  33. package/dist/datautils/picks.d.ts.map +1 -0
  34. package/dist/datautils/schematicShapeGenerator.d.ts +60 -0
  35. package/dist/datautils/schematicShapeGenerator.d.ts.map +1 -0
  36. package/dist/datautils/seismicimage.d.ts +46 -0
  37. package/dist/datautils/seismicimage.d.ts.map +1 -0
  38. package/dist/datautils/surfacedata.d.ts +11 -0
  39. package/dist/datautils/surfacedata.d.ts.map +1 -0
  40. package/dist/datautils/trajectory.d.ts +15 -0
  41. package/dist/datautils/trajectory.d.ts.map +1 -0
  42. package/dist/index.cjs +1 -1
  43. package/dist/index.cjs.map +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.mjs +141 -143
  47. package/dist/index.mjs.map +1 -1
  48. package/dist/index.umd.js +1 -1
  49. package/dist/index.umd.js.map +1 -1
  50. package/dist/interfaces.d.ts +1 -0
  51. package/dist/interfaces.d.ts.map +1 -0
  52. package/dist/layers/CalloutCanvasLayer.d.ts +61 -0
  53. package/dist/layers/CalloutCanvasLayer.d.ts.map +1 -0
  54. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +22 -0
  55. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts.map +1 -0
  56. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +24 -0
  57. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts.map +1 -0
  58. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +21 -0
  59. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts.map +1 -0
  60. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +27 -0
  61. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts.map +1 -0
  62. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +18 -0
  63. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts.map +1 -0
  64. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +25 -0
  65. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts.map +1 -0
  66. package/dist/layers/GeomodelCanvasLayer.d.ts +29 -0
  67. package/dist/layers/GeomodelCanvasLayer.d.ts.map +1 -0
  68. package/dist/layers/GeomodelLabelsLayer.d.ts +50 -0
  69. package/dist/layers/GeomodelLabelsLayer.d.ts.map +1 -0
  70. package/dist/layers/GeomodelLayerV2.d.ts +13 -0
  71. package/dist/layers/GeomodelLayerV2.d.ts.map +1 -0
  72. package/dist/layers/GridLayer.d.ts +30 -0
  73. package/dist/layers/GridLayer.d.ts.map +1 -0
  74. package/dist/layers/ImageCanvasLayer.d.ts +21 -0
  75. package/dist/layers/ImageCanvasLayer.d.ts.map +1 -0
  76. package/dist/layers/ReferenceLineLayer.d.ts +30 -0
  77. package/dist/layers/ReferenceLineLayer.d.ts.map +1 -0
  78. package/dist/layers/SchematicLayer.d.ts +114 -0
  79. package/dist/layers/SchematicLayer.d.ts.map +1 -0
  80. package/dist/layers/SeismicCanvasLayer.d.ts +19 -0
  81. package/dist/layers/SeismicCanvasLayer.d.ts.map +1 -0
  82. package/dist/layers/WellborePathLayer.d.ts +18 -0
  83. package/dist/layers/WellborePathLayer.d.ts.map +1 -0
  84. package/dist/layers/base/CanvasLayer.d.ts +20 -0
  85. package/dist/layers/base/CanvasLayer.d.ts.map +1 -0
  86. package/dist/layers/base/HTMLLayer.d.ts +14 -0
  87. package/dist/layers/base/HTMLLayer.d.ts.map +1 -0
  88. package/dist/layers/base/Layer.d.ts +70 -0
  89. package/dist/layers/base/Layer.d.ts.map +1 -0
  90. package/dist/layers/base/PixiLayer.d.ts +33 -0
  91. package/dist/layers/base/PixiLayer.d.ts.map +1 -0
  92. package/dist/layers/base/SVGLayer.d.ts +14 -0
  93. package/dist/layers/base/SVGLayer.d.ts.map +1 -0
  94. package/dist/layers/base/index.d.ts +6 -0
  95. package/dist/layers/base/index.d.ts.map +1 -0
  96. package/dist/layers/index.d.ts +17 -0
  97. package/dist/layers/index.d.ts.map +1 -0
  98. package/dist/layers/schematicInterfaces.d.ts +210 -0
  99. package/dist/layers/schematicInterfaces.d.ts.map +1 -0
  100. package/dist/utils/arc-length.d.ts +24 -0
  101. package/dist/utils/arc-length.d.ts.map +1 -0
  102. package/dist/utils/binary-search.d.ts +9 -0
  103. package/dist/utils/binary-search.d.ts.map +1 -0
  104. package/dist/utils/color.d.ts +6 -0
  105. package/dist/utils/color.d.ts.map +1 -0
  106. package/dist/utils/index.d.ts +2 -0
  107. package/dist/utils/index.d.ts.map +1 -0
  108. package/dist/utils/root-finder.d.ts +35 -0
  109. package/dist/utils/root-finder.d.ts.map +1 -0
  110. package/dist/utils/text.d.ts +15 -0
  111. package/dist/utils/text.d.ts.map +1 -0
  112. package/dist/utils/vectorUtils.d.ts +16 -0
  113. package/dist/utils/vectorUtils.d.ts.map +1 -0
  114. package/dist/vendor/pixi-dashed-line/index.d.ts +57 -0
  115. package/dist/vendor/pixi-dashed-line/index.d.ts.map +1 -0
  116. package/package.json +28 -21
  117. package/src/.eslintrc.json +5 -0
  118. package/src/components/axis.ts +247 -0
  119. package/src/components/index.ts +1 -0
  120. package/src/control/ExtendedCurveInterpolator.ts +155 -0
  121. package/src/control/IntersectionReferenceSystem.ts +391 -0
  122. package/src/control/LayerManager.ts +294 -0
  123. package/src/control/MainController.ts +296 -0
  124. package/src/control/ZoomPanHandler.ts +436 -0
  125. package/src/control/index.ts +5 -0
  126. package/src/control/interfaces.ts +42 -0
  127. package/src/control/overlay.ts +118 -0
  128. package/src/datautils/colortable.ts +14 -0
  129. package/src/datautils/findsample.ts +64 -0
  130. package/src/datautils/index.ts +6 -0
  131. package/src/datautils/interfaces.ts +68 -0
  132. package/src/datautils/picks.ts +328 -0
  133. package/src/datautils/schematicShapeGenerator.ts +1008 -0
  134. package/src/datautils/seismicimage.ts +180 -0
  135. package/src/datautils/surfacedata.ts +317 -0
  136. package/src/datautils/trajectory.ts +206 -0
  137. package/src/layers/CalloutCanvasLayer.ts +338 -0
  138. package/src/layers/CustomDisplayObjects/ComplexRope.ts +44 -0
  139. package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +184 -0
  140. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRope.ts +41 -0
  141. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +149 -0
  142. package/src/layers/CustomDisplayObjects/UniformTextureStretchRope.ts +39 -0
  143. package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +174 -0
  144. package/src/layers/GeomodelCanvasLayer.ts +176 -0
  145. package/src/layers/GeomodelLabelsLayer.ts +615 -0
  146. package/src/layers/GeomodelLayerV2.ts +111 -0
  147. package/src/layers/GridLayer.ts +145 -0
  148. package/src/layers/ImageCanvasLayer.ts +55 -0
  149. package/src/layers/ReferenceLineLayer.ts +185 -0
  150. package/src/layers/SchematicLayer.ts +870 -0
  151. package/src/layers/SeismicCanvasLayer.ts +46 -0
  152. package/src/layers/WellborePathLayer.ts +129 -0
  153. package/src/layers/base/CanvasLayer.ts +102 -0
  154. package/src/layers/base/HTMLLayer.ts +70 -0
  155. package/src/layers/base/Layer.ts +217 -0
  156. package/src/layers/base/PixiLayer.ts +190 -0
  157. package/src/layers/base/SVGLayer.ts +63 -0
  158. package/src/layers/base/index.ts +5 -0
  159. package/src/layers/index.ts +16 -0
  160. package/src/layers/schematicInterfaces.ts +472 -0
  161. package/src/tsconfig.json +9 -0
  162. package/src/utils/arc-length.ts +66 -0
  163. package/src/utils/binary-search.ts +26 -0
  164. package/src/utils/color.ts +22 -0
  165. package/src/utils/index.ts +1 -0
  166. package/src/utils/root-finder.ts +78 -0
  167. package/src/utils/text.ts +88 -0
  168. package/src/utils/vectorUtils.ts +67 -0
  169. package/src/vendor/pixi-dashed-line/index.ts +390 -0
@@ -0,0 +1,296 @@
1
+ import { IntersectionReferenceSystem } from './IntersectionReferenceSystem';
2
+ import { LayerManager } from './LayerManager';
3
+ import { Layer } from '../layers';
4
+ import { ControllerOptions } from './interfaces';
5
+ import { ZoomPanHandler } from './ZoomPanHandler';
6
+ import { LayerOptions, OnRescaleEvent, ReferenceSystemOptions } from '..';
7
+ import { Axis } from '../components';
8
+ import { overlay, Overlay } from './overlay';
9
+ import { HORIZONTAL_AXIS_MARGIN, VERTICAL_AXIS_MARGIN } from '../constants';
10
+
11
+ /**
12
+ * API for controlling data and layers
13
+ */
14
+ export class Controller {
15
+ private _referenceSystem: IntersectionReferenceSystem;
16
+
17
+ private layerManager: LayerManager;
18
+ private _overlay: Overlay<Controller>;
19
+
20
+ /**
21
+ * Interface to control layers, reference system, axis and overlay. overlay is created on instantiation, does not currently support opt-out.
22
+ * @param options
23
+ * @param options.container (required) Currently only supports HTMLElement
24
+ * @param options.scaleOptions (optional) currently supports formats listed in examples below
25
+ * @example scaleOptions = { xMin: 0, xMax: 100, yMin: 0, yMax: 100 }
26
+ * @example scaleOptions = { xBounds: [0 , 100], yBounds: [0, 100] }
27
+ * @param options.axisOptions (optional) creates axis with supplied labels, currently only supports creating axis on instantiation
28
+ * @param options.layers (optional) list of layers
29
+ * @param options.path (optional) creates a reference system based on an array of 3d coordinates
30
+ * @param options.referenceSystem (optional) sets reference system, takes priority over path if both are supplied
31
+ */
32
+ constructor(options: ControllerOptions) {
33
+ const { container, axisOptions, scaleOptions, referenceSystem, layers, path } = options;
34
+
35
+ this._referenceSystem = referenceSystem || (path && new IntersectionReferenceSystem(path));
36
+
37
+ this._overlay = overlay(this, container);
38
+
39
+ this.layerManager = new LayerManager(this._overlay.elm.node() as HTMLElement, scaleOptions, axisOptions);
40
+ if (layers) {
41
+ this.layerManager.addLayers(layers);
42
+ this.setOverlayZIndex(layers);
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Sets reference system, overrides any existing reference systems in place
48
+ * @param referenceSystem IntersectionReferenceSystem
49
+ */
50
+ setReferenceSystem(referenceSystem: IntersectionReferenceSystem): Controller {
51
+ this._referenceSystem = referenceSystem;
52
+ this.layerManager.setReferenceSystem(referenceSystem);
53
+ return this;
54
+ }
55
+
56
+ /**
57
+ * Creates new reference system based on path, overrides any existing reference systems in place
58
+ * @param path array of coords
59
+ * @param options optional
60
+ * @param options.trajectoryAngle (optional) angle in degrees
61
+ */
62
+ updatePath(path: number[][], options?: ReferenceSystemOptions): Controller {
63
+ this.setReferenceSystem(new IntersectionReferenceSystem(path, options));
64
+
65
+ return this;
66
+ }
67
+
68
+ /**
69
+ * Clears data from all mounted layers
70
+ * @param includeReferenceSystem - (optional) if true also removes reference system, default is true
71
+ */
72
+ clearAllData(includeReferenceSystem: boolean = true): Controller {
73
+ this.layerManager.clearAllData(includeReferenceSystem);
74
+ return this;
75
+ }
76
+
77
+ /**
78
+ * Adds layer to list, and initializes it
79
+ * @param layer layer object
80
+ * @param params (optional) adds additional parameters to the onUpdateEvent
81
+ */
82
+ addLayer(layer: Layer<unknown>, params?: LayerOptions<unknown>): Controller {
83
+ this.layerManager.addLayer(layer, params);
84
+ this.setOverlayZIndex(this.layerManager.getLayers());
85
+ return this;
86
+ }
87
+
88
+ /**
89
+ * Remove and unmount layer from list
90
+ * @param layerId string id
91
+ */
92
+ removeLayer(layerId: string): Controller {
93
+ this.layerManager.removeLayer(layerId);
94
+ return this;
95
+ }
96
+
97
+ /**
98
+ * Remove and unmount all layers from list
99
+ */
100
+ removeAllLayers(): Controller {
101
+ this.layerManager.removeAllLayers();
102
+ return this;
103
+ }
104
+
105
+ /**
106
+ * Find first layer with given id, returns undefined if none are found
107
+ * @param layerId string id
108
+ */
109
+ getLayer(layerId: string): Layer<unknown> {
110
+ return this.layerManager.getLayer(layerId);
111
+ }
112
+
113
+ /**
114
+ * Sets visibility to true and rescales the layer
115
+ * @param layerId string id
116
+ */
117
+ showLayer(layerId: string): Controller {
118
+ this.layerManager.showLayer(layerId);
119
+ return this;
120
+ }
121
+
122
+ /**
123
+ * Sets visibility to false
124
+ * @param layerId string id
125
+ */
126
+ hideLayer(layerId: string): Controller {
127
+ this.layerManager.hideLayer(layerId);
128
+ return this;
129
+ }
130
+
131
+ /**
132
+ * Adjust layers, axis, overlay, and zoom according to inputted dimensions
133
+ * @param width (required)
134
+ * @param height (required)
135
+ */
136
+ adjustToSize(width: number, height: number): Controller {
137
+ this.layerManager.adjustToSize(width, height);
138
+
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 });
141
+
142
+ return this;
143
+ }
144
+
145
+ /**
146
+ * Set new viewport
147
+ * @param cx - center X pos
148
+ * @param cy - center Y pos
149
+ * @param displ - displacement
150
+ * @param duration - duration of transition
151
+ */
152
+ setViewport(cx?: number, cy?: number, displacement?: number, duration?: number): Controller {
153
+ this.zoomPanHandler.setViewport(cx, cy, displacement, duration);
154
+ return this;
155
+ }
156
+
157
+ /**
158
+ * Sets bounds for zoom and pan handler
159
+ * @param xBounds - domain in x-direction
160
+ * @param yBounds - domain in y-direction
161
+ */
162
+ setBounds(xBounds: [number, number], yBounds: [number, number]): Controller {
163
+ this.zoomPanHandler.setBounds(xBounds, yBounds);
164
+ return this;
165
+ }
166
+
167
+ /**
168
+ * Display both axes
169
+ */
170
+ showAxis(): Controller {
171
+ this.layerManager.showAxis();
172
+ return this;
173
+ }
174
+
175
+ /**
176
+ * Hide both axes
177
+ */
178
+ hideAxis(): Controller {
179
+ this.layerManager.hideAxis();
180
+ return this;
181
+ }
182
+
183
+ /**
184
+ * Shows labels in x and y
185
+ */
186
+ showAxisLabels(): Controller {
187
+ this.layerManager.showAxisLabels();
188
+ return this;
189
+ }
190
+
191
+ /**
192
+ * Hide labels in x and y
193
+ */
194
+ hideAxisLabels(): Controller {
195
+ this.layerManager.hideAxisLabels();
196
+ return this;
197
+ }
198
+
199
+ /**
200
+ * Sets domain offset, offset is subtracted from domain
201
+ * @param x
202
+ * @param y
203
+ */
204
+ setAxisOffset(x: number, y: number): Controller {
205
+ this.layerManager.setAxisOffset(x, y);
206
+ return this;
207
+ }
208
+
209
+ /**
210
+ * Sets domain offset in x-direction, offset is subtracted from domain
211
+ * @param x
212
+ */
213
+ setXAxisOffset(x: number): Controller {
214
+ this.layerManager.setXAxisOffset(x);
215
+ return this;
216
+ }
217
+
218
+ /**
219
+ * Sets domain offset in y-direction, offset is subtracted from domain
220
+ * @param y
221
+ */
222
+ setYAxisOffset(y: number): Controller {
223
+ this.layerManager.setYAxisOffset(y);
224
+ return this;
225
+ }
226
+
227
+ /**
228
+ * Defines min and max of how much one can zoom
229
+ * @param zoomlevels
230
+ */
231
+ setZoomLevelBoundary(zoomlevels: [number, number]): Controller {
232
+ this.zoomPanHandler.setZoomLevelBoundary(zoomlevels);
233
+ return this;
234
+ }
235
+
236
+ /**
237
+ * Defines how far in one can zoom
238
+ * @param zoomlevel
239
+ */
240
+ setMaxZoomLevel(zoomlevel: number): Controller {
241
+ this.zoomPanHandler.setMaxZoomLevel(zoomlevel);
242
+ return this;
243
+ }
244
+
245
+ /**
246
+ * Defines how far out one can zoom
247
+ * @param zoomlevel
248
+ */
249
+ setMinZoomLevel(zoomlevel: number): Controller {
250
+ this.zoomPanHandler.setMinZoomLevel(zoomlevel);
251
+ return this;
252
+ }
253
+
254
+ /**
255
+ * Destroy Controller
256
+ * Convenience method for removing from DOM and clearing references
257
+ */
258
+ destroy(): Controller {
259
+ this.layerManager.destroy();
260
+ this._overlay.destroy();
261
+ this._referenceSystem = undefined;
262
+ this.layerManager = undefined;
263
+ this._overlay = undefined;
264
+ return this;
265
+ }
266
+
267
+ private getHighestZIndex(layers: Layer<unknown>[]): number {
268
+ const highestZIndex = layers.length > 0 ? layers.reduce((max, layers) => (max.order > layers.order ? max : layers)).order : 1;
269
+ return highestZIndex;
270
+ }
271
+
272
+ private setOverlayZIndex(layers: Layer<unknown>[]): void {
273
+ const highestZIndex = this.getHighestZIndex(layers);
274
+ this.overlay.setZIndex(highestZIndex + 2);
275
+ }
276
+
277
+ get overlay(): Overlay<Controller> {
278
+ return this._overlay;
279
+ }
280
+
281
+ get referenceSystem(): IntersectionReferenceSystem {
282
+ return this._referenceSystem;
283
+ }
284
+
285
+ get zoomPanHandler(): ZoomPanHandler {
286
+ return this.layerManager.zoomPanHandler;
287
+ }
288
+
289
+ get axis(): Axis {
290
+ return this.layerManager.axis;
291
+ }
292
+
293
+ get currentStateAsEvent(): OnRescaleEvent {
294
+ return this.zoomPanHandler.currentStateAsEvent();
295
+ }
296
+ }