@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,190 @@
1
+ import { IRenderer, Application, autoDetectRenderer, Container, DisplayObject, IRendererOptionsAuto, Renderer, RENDERER_TYPE } from 'pixi.js';
2
+ import { Layer, LayerOptions } from './Layer';
3
+ import { OnMountEvent, OnRescaleEvent, OnResizeEvent, OnUnmountEvent } from '../../interfaces';
4
+ import { DEFAULT_LAYER_HEIGHT, DEFAULT_LAYER_WIDTH } from '../../constants';
5
+
6
+ // PixiRenderApplication has many similarities with PIXI.Application,
7
+ // but an important distinction is that it does not run the TickerPlugin.
8
+ // We only want to re-render on data changes
9
+ // The plugin we are trying to avoid:
10
+ // https://github.com/pixijs/pixijs/blob/dev/packages/ticker/src/TickerPlugin.ts
11
+ export class PixiRenderApplication {
12
+ stage: Container;
13
+
14
+ renderer: IRenderer<HTMLCanvasElement>;
15
+
16
+ constructor(pixiRenderOptions?: IRendererOptionsAuto) {
17
+ const options = {
18
+ width: DEFAULT_LAYER_WIDTH,
19
+ height: DEFAULT_LAYER_HEIGHT,
20
+ antialias: true,
21
+ backgroundAlpha: 0,
22
+ clearBeforeRender: true,
23
+ // autoResize: true,
24
+ preserveDrawingBuffer: true,
25
+ ...pixiRenderOptions,
26
+ };
27
+ this.renderer = autoDetectRenderer<HTMLCanvasElement>(options);
28
+ this.stage = new Container();
29
+ }
30
+
31
+ destroy() {
32
+ this.stage.destroy({
33
+ children: true,
34
+ texture: true,
35
+ baseTexture: true,
36
+ });
37
+ this.stage = null;
38
+
39
+ // Get renderType and clContext before we destroy the renderer
40
+ const renderType = this.renderer.type;
41
+ const glContext = this.renderer instanceof Renderer ? this.renderer?.gl : undefined;
42
+
43
+ /**
44
+ * WebGL v2 does supposedly not have WEBGL_lose_context
45
+ * so Pixi.js does not use it to "clean up" on v2.
46
+ *
47
+ * Cleaning up our self since it still seems to work and fix issue with lingering context
48
+ */
49
+ if (renderType === RENDERER_TYPE.WEBGL && glContext) {
50
+ glContext?.getExtension('WEBGL_lose_context')?.loseContext();
51
+ }
52
+
53
+ this.renderer.destroy(true);
54
+ this.renderer = null;
55
+ }
56
+
57
+ get view() {
58
+ return this.renderer.view;
59
+ }
60
+
61
+ render() {
62
+ this.renderer.render(this.stage);
63
+ }
64
+ }
65
+
66
+ export abstract class PixiLayer<T> extends Layer<T> {
67
+ private pixiViewContainer: HTMLElement;
68
+ private ctx: PixiRenderApplication;
69
+ private container: Container;
70
+
71
+ constructor(ctx: Application<HTMLCanvasElement> | PixiRenderApplication, id?: string, options?: LayerOptions<T>) {
72
+ super(id, options);
73
+
74
+ this.ctx = ctx;
75
+
76
+ this.container = new Container();
77
+ this.ctx.stage.addChild(this.container);
78
+ }
79
+
80
+ render(): void {
81
+ this.ctx.render();
82
+ }
83
+
84
+ addChild(child: DisplayObject) {
85
+ this.container.addChild(child);
86
+ }
87
+
88
+ clearLayer() {
89
+ const children = this.container.removeChildren();
90
+ children.forEach((child) => {
91
+ child.destroy();
92
+ });
93
+ }
94
+
95
+ override onMount(event: OnMountEvent) {
96
+ super.onMount(event);
97
+
98
+ this.pixiViewContainer = this.element.querySelector('#webgl-layer');
99
+
100
+ if (!this.pixiViewContainer) {
101
+ this.pixiViewContainer = document.createElement('div');
102
+ this.pixiViewContainer.setAttribute('id', `${this.id}`);
103
+ this.pixiViewContainer.setAttribute('class', 'webgl-layer');
104
+
105
+ this.pixiViewContainer.appendChild(this.ctx.view);
106
+
107
+ this.element.appendChild(this.pixiViewContainer);
108
+
109
+ this.updateStyle();
110
+ }
111
+ }
112
+
113
+ override onUnmount(event?: OnUnmountEvent) {
114
+ super.onUnmount(event);
115
+
116
+ this.clearLayer();
117
+ this.ctx.stage.removeChild(this.container);
118
+ this.container.destroy();
119
+ this.pixiViewContainer.remove();
120
+ this.pixiViewContainer = undefined;
121
+ }
122
+
123
+ override onResize(event: OnResizeEvent): void {
124
+ super.onResize(event);
125
+ this.ctx.renderer.resize(event.width, event.height);
126
+ }
127
+
128
+ override onRescale(event: OnRescaleEvent): void {
129
+ super.onRescale(event);
130
+
131
+ const flippedX = event.xBounds[0] > event.xBounds[1];
132
+ const flippedY = event.yBounds[0] > event.yBounds[1];
133
+ this.setContainerPosition(event.xScale(0), event.yScale(0));
134
+ this.setContainerScale(event.xRatio * (flippedX ? -1 : 1), event.yRatio * (flippedY ? -1 : 1));
135
+ }
136
+
137
+ protected setContainerPosition(x?: number, y?: number) {
138
+ this.container.position.set(x, y);
139
+ }
140
+
141
+ protected setContainerScale(x?: number, y?: number) {
142
+ this.container.scale.set(x, y);
143
+ }
144
+
145
+ updateStyle(visible?: boolean): void {
146
+ const isVisible = visible || this.isVisible;
147
+ const interactive = this.interactive ? 'auto' : 'none';
148
+ this.container.visible = isVisible;
149
+
150
+ const styles = [
151
+ ['position', 'absolute'],
152
+ ['pointer-events', `${interactive}`],
153
+ ['z-index', `${this.order}`],
154
+ ['opacity', `${this.opacity}`],
155
+ ]
156
+ .map((pair) => pair.join(':'))
157
+ .join(';');
158
+
159
+ this.pixiViewContainer.setAttribute('style', styles);
160
+ }
161
+
162
+ override setVisibility(visible: boolean, layerId?: string): void {
163
+ super.setVisibility(visible, layerId);
164
+ if (this.pixiViewContainer) {
165
+ this.updateStyle(visible);
166
+ }
167
+ }
168
+
169
+ onOpacityChanged(_opacity: number): void {
170
+ if (this.pixiViewContainer) {
171
+ this.updateStyle();
172
+ }
173
+ }
174
+
175
+ onOrderChanged(_order: number): void {
176
+ if (this.pixiViewContainer) {
177
+ this.updateStyle();
178
+ }
179
+ }
180
+
181
+ onInteractivityChanged(_interactive: boolean): void {
182
+ if (this.pixiViewContainer) {
183
+ this.updateStyle();
184
+ }
185
+ }
186
+
187
+ renderType(): RENDERER_TYPE {
188
+ return this.ctx.renderer.type;
189
+ }
190
+ }
@@ -0,0 +1,63 @@
1
+ import { select, Selection } from 'd3-selection';
2
+ import { Layer } from './Layer';
3
+ import { OnMountEvent, OnResizeEvent } from '../../interfaces';
4
+ import { DEFAULT_LAYER_HEIGHT, DEFAULT_LAYER_WIDTH } from '../../constants';
5
+
6
+ export abstract class SVGLayer<T> extends Layer<T> {
7
+ elm: Selection<SVGElement, unknown, null, undefined>;
8
+
9
+ override onMount(event: OnMountEvent): void {
10
+ super.onMount(event);
11
+ const { elm } = event;
12
+ const width = event.width || parseInt(elm.getAttribute('width'), 10) || DEFAULT_LAYER_WIDTH;
13
+ const height = event.height || parseInt(elm.getAttribute('height'), 10) || DEFAULT_LAYER_HEIGHT;
14
+ if (!this.elm) {
15
+ this.elm = select(elm).append('svg');
16
+ this.elm.attr('id', `${this.id}`);
17
+ this.elm.attr('class', 'svg-layer');
18
+ }
19
+ this.elm.attr('height', height).attr('width', width);
20
+ const interactive = this.interactive ? 'auto' : 'none';
21
+ this.elm.style('position', 'absolute').style('pointer-events', interactive).style('opacity', this.opacity).style('z-index', this.order);
22
+ }
23
+
24
+ override onUnmount(): void {
25
+ super.onUnmount();
26
+ this.elm.remove();
27
+ this.elm = null;
28
+ }
29
+
30
+ override onResize(event: OnResizeEvent): void {
31
+ if (!this.elm) {
32
+ return;
33
+ }
34
+ super.onResize(event);
35
+ this.elm.attr('height', event.height).attr('width', event.width);
36
+ }
37
+
38
+ override setVisibility(visible: boolean): void {
39
+ super.setVisibility(visible);
40
+ if (this.elm) {
41
+ this.elm.attr('visibility', visible ? 'visible' : 'hidden');
42
+ }
43
+ }
44
+
45
+ onOpacityChanged(opacity: number): void {
46
+ if (this.elm) {
47
+ this.elm.style('opacity', opacity);
48
+ }
49
+ }
50
+
51
+ onOrderChanged(order: number): void {
52
+ if (this.elm) {
53
+ this.elm.style('z-index', order);
54
+ }
55
+ }
56
+
57
+ onInteractivityChanged(shouldBeInteractive: boolean): void {
58
+ if (this.elm) {
59
+ const interactive = shouldBeInteractive ? 'auto' : 'none';
60
+ this.elm.style('pointer-events', interactive);
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,5 @@
1
+ export * from './CanvasLayer';
2
+ export * from './HTMLLayer';
3
+ export * from './Layer';
4
+ export * from './PixiLayer';
5
+ export * from './SVGLayer';
@@ -0,0 +1,16 @@
1
+ export * from './base/CanvasLayer';
2
+ export * from './base/Layer';
3
+ export * from './base/HTMLLayer';
4
+ export * from './base/SVGLayer';
5
+ export * from './base/PixiLayer';
6
+ export * from './schematicInterfaces';
7
+ export * from './CalloutCanvasLayer';
8
+ export * from './GeomodelCanvasLayer';
9
+ export * from './GeomodelLabelsLayer';
10
+ export * from './GeomodelLayerV2';
11
+ export * from './GridLayer';
12
+ export * from './ImageCanvasLayer';
13
+ export * from './SchematicLayer';
14
+ export * from './SeismicCanvasLayer';
15
+ export * from './WellborePathLayer';
16
+ export * from './ReferenceLineLayer';