@equinor/esv-intersection 3.0.9 → 3.0.10

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 (107) hide show
  1. package/dist/components/axis.d.ts +1 -2
  2. package/dist/components/axis.d.ts.map +1 -1
  3. package/dist/control/ExtendedCurveInterpolator.d.ts.map +1 -1
  4. package/dist/control/IntersectionReferenceSystem.d.ts +2 -6
  5. package/dist/control/IntersectionReferenceSystem.d.ts.map +1 -1
  6. package/dist/control/LayerManager.d.ts +2 -2
  7. package/dist/control/LayerManager.d.ts.map +1 -1
  8. package/dist/control/MainController.d.ts +3 -3
  9. package/dist/control/MainController.d.ts.map +1 -1
  10. package/dist/control/ZoomPanHandler.d.ts +5 -4
  11. package/dist/control/ZoomPanHandler.d.ts.map +1 -1
  12. package/dist/control/interfaces.d.ts +3 -4
  13. package/dist/control/interfaces.d.ts.map +1 -1
  14. package/dist/control/overlay.d.ts +3 -3
  15. package/dist/control/overlay.d.ts.map +1 -1
  16. package/dist/datautils/colortable.d.ts +1 -1
  17. package/dist/datautils/colortable.d.ts.map +1 -1
  18. package/dist/datautils/findsample.d.ts.map +1 -1
  19. package/dist/datautils/schematicShapeGenerator.d.ts +3 -3
  20. package/dist/datautils/schematicShapeGenerator.d.ts.map +1 -1
  21. package/dist/datautils/seismicimage.d.ts.map +1 -1
  22. package/dist/datautils/trajectory.d.ts +1 -1
  23. package/dist/datautils/trajectory.d.ts.map +1 -1
  24. package/dist/index.cjs +2 -2
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.mjs +1373 -1272
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/index.umd.js +2 -2
  29. package/dist/index.umd.js.map +1 -1
  30. package/dist/interfaces.d.ts +1 -2
  31. package/dist/interfaces.d.ts.map +1 -1
  32. package/dist/layers/CalloutCanvasLayer.d.ts +2 -2
  33. package/dist/layers/CalloutCanvasLayer.d.ts.map +1 -1
  34. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts.map +1 -1
  35. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts.map +1 -1
  36. package/dist/layers/GeomodelCanvasLayer.d.ts +1 -1
  37. package/dist/layers/GeomodelCanvasLayer.d.ts.map +1 -1
  38. package/dist/layers/GeomodelLabelsLayer.d.ts +4 -4
  39. package/dist/layers/GeomodelLabelsLayer.d.ts.map +1 -1
  40. package/dist/layers/GeomodelLayerV2.d.ts.map +1 -1
  41. package/dist/layers/GridLayer.d.ts.map +1 -1
  42. package/dist/layers/ImageCanvasLayer.d.ts +1 -1
  43. package/dist/layers/ImageCanvasLayer.d.ts.map +1 -1
  44. package/dist/layers/ReferenceLineLayer.d.ts +1 -2
  45. package/dist/layers/ReferenceLineLayer.d.ts.map +1 -1
  46. package/dist/layers/SchematicLayer.d.ts.map +1 -1
  47. package/dist/layers/WellborePathLayer.d.ts +1 -1
  48. package/dist/layers/WellborePathLayer.d.ts.map +1 -1
  49. package/dist/layers/base/CanvasLayer.d.ts +3 -3
  50. package/dist/layers/base/CanvasLayer.d.ts.map +1 -1
  51. package/dist/layers/base/HTMLLayer.d.ts +1 -1
  52. package/dist/layers/base/HTMLLayer.d.ts.map +1 -1
  53. package/dist/layers/base/Layer.d.ts +10 -10
  54. package/dist/layers/base/Layer.d.ts.map +1 -1
  55. package/dist/layers/base/PixiLayer.d.ts +4 -4
  56. package/dist/layers/base/PixiLayer.d.ts.map +1 -1
  57. package/dist/layers/base/SVGLayer.d.ts +1 -1
  58. package/dist/layers/base/SVGLayer.d.ts.map +1 -1
  59. package/dist/utils/arc-length.d.ts.map +1 -1
  60. package/dist/utils/color.d.ts.map +1 -1
  61. package/dist/utils/root-finder.d.ts +1 -1
  62. package/dist/utils/root-finder.d.ts.map +1 -1
  63. package/dist/utils/text.d.ts +2 -2
  64. package/dist/utils/text.d.ts.map +1 -1
  65. package/dist/utils/vectorUtils.d.ts.map +1 -1
  66. package/dist/vendor/pixi-dashed-line/index.d.ts.map +1 -1
  67. package/package.json +11 -11
  68. package/src/components/axis.ts +23 -30
  69. package/src/control/ExtendedCurveInterpolator.ts +7 -7
  70. package/src/control/IntersectionReferenceSystem.ts +33 -41
  71. package/src/control/LayerManager.ts +33 -31
  72. package/src/control/MainController.ts +5 -7
  73. package/src/control/ZoomPanHandler.ts +50 -45
  74. package/src/control/interfaces.ts +3 -3
  75. package/src/control/overlay.ts +20 -16
  76. package/src/datautils/colortable.ts +4 -4
  77. package/src/datautils/findsample.ts +8 -7
  78. package/src/datautils/picks.ts +13 -13
  79. package/src/datautils/schematicShapeGenerator.ts +47 -17
  80. package/src/datautils/seismicimage.ts +12 -13
  81. package/src/datautils/surfacedata.ts +27 -26
  82. package/src/datautils/trajectory.ts +34 -32
  83. package/src/interfaces.ts +1 -1
  84. package/src/layers/CalloutCanvasLayer.ts +55 -58
  85. package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +23 -20
  86. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +9 -10
  87. package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +13 -13
  88. package/src/layers/GeomodelCanvasLayer.ts +43 -36
  89. package/src/layers/GeomodelLabelsLayer.ts +99 -96
  90. package/src/layers/GeomodelLayerV2.ts +11 -11
  91. package/src/layers/GridLayer.ts +25 -21
  92. package/src/layers/ImageCanvasLayer.ts +17 -11
  93. package/src/layers/ReferenceLineLayer.ts +53 -45
  94. package/src/layers/SchematicLayer.ts +78 -75
  95. package/src/layers/WellborePathLayer.ts +48 -46
  96. package/src/layers/base/CanvasLayer.ts +18 -18
  97. package/src/layers/base/HTMLLayer.ts +5 -5
  98. package/src/layers/base/Layer.ts +18 -18
  99. package/src/layers/base/PixiLayer.ts +24 -20
  100. package/src/layers/base/SVGLayer.ts +5 -5
  101. package/src/utils/arc-length.ts +3 -10
  102. package/src/utils/binary-search.ts +2 -2
  103. package/src/utils/color.ts +9 -5
  104. package/src/utils/root-finder.ts +4 -4
  105. package/src/utils/text.ts +5 -5
  106. package/src/utils/vectorUtils.ts +13 -6
  107. package/src/vendor/pixi-dashed-line/index.ts +3 -2
@@ -28,7 +28,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
28
28
  * @readonly
29
29
  */
30
30
  get width(): number {
31
- return max(this.segments, (segment) => segment.diameter);
31
+ return max(this.segments, (segment) => segment.diameter)!;
32
32
  }
33
33
 
34
34
  /** Refreshes Rope indices and uvs */
@@ -66,7 +66,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
66
66
  uvs[3] = 1;
67
67
 
68
68
  const segmentCount = segments.length;
69
- const maxDiameter = max(segments, (segment) => segment.diameter);
69
+ const maxDiameter = max(segments, (segment) => segment.diameter)!;
70
70
 
71
71
  let amount = 0;
72
72
  let uvIndex = 0;
@@ -74,21 +74,21 @@ export class ComplexRopeGeometry extends MeshGeometry {
74
74
  let indexCount = 0;
75
75
 
76
76
  for (let i = 0; i < segmentCount; i++) {
77
- let prev = segments[i].points[0];
77
+ let prev = segments[i]?.points[0]!;
78
78
  const textureWidth = maxDiameter;
79
- const radius = segments[i].diameter / maxDiameter / 2;
79
+ const radius = segments[i]?.diameter! / maxDiameter / 2;
80
80
 
81
- const total = segments[i].points.length; // - 1;
81
+ const total = segments[i]?.points.length!; // - 1;
82
82
 
83
83
  for (let j = 0; j < total; j++) {
84
84
  // time to do some smart drawing!
85
85
 
86
86
  // calculate pixel distance from previous point
87
- const dx = prev.x - segments[i].points[j].x;
88
- const dy = prev.y - segments[i].points[j].y;
87
+ const dx = prev.x - segments[i]?.points[j]?.x!;
88
+ const dy = prev.y - segments[i]?.points[j]?.y!;
89
89
  const distance = Math.sqrt(dx * dx + dy * dy);
90
90
 
91
- prev = segments[i].points[j];
91
+ prev = segments[i]?.points[j]!;
92
92
  amount += distance / textureWidth;
93
93
 
94
94
  uvs[uvIndex] = amount;
@@ -131,20 +131,20 @@ export class ComplexRopeGeometry extends MeshGeometry {
131
131
  const segmentCount = segments.length;
132
132
  let lastIndex = 0;
133
133
  for (let i = 0; i < segmentCount; i++) {
134
- let lastPoint = segments[i].points[0];
134
+ let lastPoint = segments[i]?.points[0]!;
135
135
  let nextPoint;
136
136
  let perpX = 0;
137
137
  let perpY = 0;
138
138
 
139
- const vertices = this.buffers[0].data;
140
- const total = segments[i].points.length;
139
+ const vertices = this.buffers[0]?.data;
140
+ const total = segments[i]?.points.length!;
141
141
  let index = 0;
142
142
  for (let j = 0; j < total; j++) {
143
- const point = segments[i].points[j];
143
+ const point = segments[i]?.points[j]!;
144
144
  index = lastIndex + j * 4;
145
145
 
146
- if (j < segments[i].points.length - 1) {
147
- nextPoint = segments[i].points[j + 1];
146
+ if (j < segments[i]?.points.length! - 1) {
147
+ nextPoint = segments[i]?.points[j + 1]!;
148
148
  } else {
149
149
  nextPoint = point;
150
150
  }
@@ -153,7 +153,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
153
153
  perpX = nextPoint.y - lastPoint.y;
154
154
 
155
155
  const perpLength = Math.sqrt(perpX * perpX + perpY * perpY);
156
- const num = segments[i].diameter / 2;
156
+ const num = segments[i]?.diameter! / 2;
157
157
 
158
158
  perpX /= perpLength;
159
159
  perpY /= perpLength;
@@ -161,16 +161,19 @@ export class ComplexRopeGeometry extends MeshGeometry {
161
161
  perpX *= num;
162
162
  perpY *= num;
163
163
 
164
- vertices[index] = point.x + perpX;
165
- vertices[index + 1] = point.y + perpY;
166
- vertices[index + 2] = point.x - perpX;
167
- vertices[index + 3] = point.y - perpY;
164
+ if (vertices != null) {
165
+ vertices[index] = point.x + perpX;
166
+ vertices[index + 1] = point.y + perpY;
167
+ vertices[index + 2] = point.x - perpX;
168
+ vertices[index + 3] = point.y - perpY;
169
+ }
170
+
168
171
  lastPoint = point;
169
172
  }
170
173
  lastIndex = index + 4;
171
174
  }
172
175
 
173
- this.buffers[0].update();
176
+ this.buffers[0]?.update();
174
177
  }
175
178
 
176
179
  public update(): void {
@@ -8,7 +8,6 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
8
8
  * @param {PIXI.Point[]} [points] - An array of PIXI.Point objects to construct this rope.
9
9
  */
10
10
  constructor(points: IPoint[], width = 200) {
11
- // eslint-disable-next-line no-magic-numbers
12
11
  super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6));
13
12
  /**
14
13
  * An array of points that determine the rope
@@ -66,17 +65,17 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
66
65
  uvs[2] = 0;
67
66
  uvs[3] = 1;
68
67
  let amount = 0;
69
- let prev = points[0];
68
+ let prev = points[0]!;
70
69
  const total = points.length; // - 1;
71
70
  for (let i = 0; i < total; i++) {
72
71
  // time to do some smart drawing!
73
72
  const index = i * 4;
74
73
 
75
74
  // calculate pixel distance from previous point
76
- const dx = prev.x - points[i].x;
77
- const dy = prev.y - points[i].y;
75
+ const dx = prev.x - points[i]?.x!;
76
+ const dy = prev.y - points[i]?.y!;
78
77
  const distance = Math.sqrt(dx * dx + dy * dy);
79
- prev = points[i];
78
+ prev = points[i]!;
80
79
  amount += distance / this._width;
81
80
 
82
81
  uvs[index] = amount;
@@ -107,17 +106,17 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
107
106
  if (points.length < 1) {
108
107
  return;
109
108
  }
110
- let lastPoint = points[0];
109
+ let lastPoint = points[0]!;
111
110
  let nextPoint;
112
111
  let perpX = 0;
113
112
  let perpY = 0;
114
- const vertices = this.buffers[0].data;
113
+ const vertices = this.buffers[0]?.data!;
115
114
  const total = points.length;
116
115
  for (let i = 0; i < total; i++) {
117
- const point = points[i];
116
+ const point = points[i]!;
118
117
  const index = i * 4;
119
118
  if (i < points.length - 1) {
120
- nextPoint = points[i + 1];
119
+ nextPoint = points[i + 1]!;
121
120
  } else {
122
121
  nextPoint = point;
123
122
  }
@@ -140,7 +139,7 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
140
139
  vertices[index + 3] = point.y - perpY;
141
140
  lastPoint = point;
142
141
  }
143
- this.buffers[0].update();
142
+ this.buffers[0]?.update();
144
143
  }
145
144
 
146
145
  public update(): void {
@@ -55,14 +55,14 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
55
55
  const total = points.length; // - 1;
56
56
 
57
57
  let totalLength = 0;
58
- let prevPoint = points[0];
58
+ let prevPoint = points[0]!;
59
59
 
60
60
  for (let i = 0; i < total; i++) {
61
- const dx = prevPoint.x - points[i].x;
62
- const dy = prevPoint.y - points[i].y;
61
+ const dx = prevPoint.x - points[i]?.x!;
62
+ const dy = prevPoint.y - points[i]?.y!;
63
63
  const distance = Math.sqrt(dx * dx + dy * dy);
64
64
 
65
- prevPoint = points[i];
65
+ prevPoint = points[i]!;
66
66
  totalLength += distance;
67
67
  }
68
68
 
@@ -75,18 +75,18 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
75
75
  uvs[3] = 1;
76
76
 
77
77
  let amount = 0;
78
- let prev = points[0];
78
+ let prev = points[0]!;
79
79
 
80
80
  for (let i = 0; i < total; i++) {
81
81
  // time to do some smart drawing!
82
82
  const index = i * 4;
83
83
 
84
84
  // calculate pixel distance from previous point
85
- const dx = prev.x - points[i].x;
86
- const dy = prev.y - points[i].y;
85
+ const dx = prev.x - points[i]?.x!;
86
+ const dy = prev.y - points[i]?.y!;
87
87
  const distance = Math.sqrt(dx * dx + dy * dy);
88
88
 
89
- prev = points[i];
89
+ prev = points[i]!;
90
90
 
91
91
  // strech texture on distance/length instead of point/points.length to get a more correct strech
92
92
  amount += distance / totalLength;
@@ -127,20 +127,20 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
127
127
  return;
128
128
  }
129
129
 
130
- let lastPoint = points[0];
130
+ let lastPoint = points[0]!;
131
131
  let nextPoint;
132
132
  let perpX = 0;
133
133
  let perpY = 0;
134
134
 
135
- const vertices = this.buffers[0].data;
135
+ const vertices = this.buffers[0]?.data!;
136
136
  const total = points.length;
137
137
 
138
138
  for (let i = 0; i < total; i++) {
139
- const point = points[i];
139
+ const point = points[i]!;
140
140
  const index = i * 4;
141
141
 
142
142
  if (i < points.length - 1) {
143
- nextPoint = points[i + 1];
143
+ nextPoint = points[i + 1]!;
144
144
  } else {
145
145
  nextPoint = point;
146
146
  }
@@ -165,7 +165,7 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
165
165
  lastPoint = point;
166
166
  }
167
167
 
168
- this.buffers[0].update();
168
+ this.buffers[0]?.update();
169
169
  }
170
170
 
171
171
  public update(): void {
@@ -12,7 +12,7 @@ type SurfacePaths = {
12
12
  };
13
13
 
14
14
  export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
15
- rescaleEvent: OnRescaleEvent;
15
+ rescaleEvent: OnRescaleEvent | undefined;
16
16
 
17
17
  surfaceAreasPaths: SurfacePaths[] = [];
18
18
 
@@ -69,65 +69,72 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
69
69
  }
70
70
 
71
71
  generateSurfaceAreasPaths(): void {
72
- this.surfaceAreasPaths = this.data.areas.reduce((acc: SurfacePaths[], s: SurfaceArea) => {
73
- const polygons = this.createPolygons(s.data);
74
- const mapped: SurfacePaths[] = polygons.map((polygon: number[]) => ({
75
- color: this.colorToCSSColor(s.color),
76
- path: this.generatePolygonPath(polygon),
77
- }));
78
- acc.push(...mapped);
79
- return acc;
80
- }, []);
72
+ this.surfaceAreasPaths =
73
+ this.data?.areas.reduce((acc: SurfacePaths[], s: SurfaceArea) => {
74
+ const polygons = this.createPolygons(s.data);
75
+ const mapped: SurfacePaths[] = polygons.map((polygon: number[]) => ({
76
+ color: this.colorToCSSColor(s.color),
77
+ path: this.generatePolygonPath(polygon),
78
+ }));
79
+ acc.push(...mapped);
80
+ return acc;
81
+ }, []) ?? [];
81
82
  }
82
83
 
83
84
  generateSurfaceLinesPaths(): void {
84
- this.surfaceLinesPaths = this.data.lines.reduce((acc: SurfacePaths[], l: SurfaceLine) => {
85
- const lines = this.generateLinePaths(l);
86
- const mapped: SurfacePaths[] = lines.map((path: Path2D) => ({ color: this.colorToCSSColor(l.color), path }));
87
- acc.push(...mapped);
88
- return acc;
89
- }, []);
85
+ this.surfaceLinesPaths =
86
+ this.data?.lines.reduce((acc: SurfacePaths[], l: SurfaceLine) => {
87
+ const lines = this.generateLinePaths(l);
88
+ const mapped: SurfacePaths[] = lines.map((path: Path2D) => ({ color: this.colorToCSSColor(l.color), path }));
89
+ acc.push(...mapped);
90
+ return acc;
91
+ }, []) ?? [];
90
92
  }
91
93
 
92
94
  drawPolygonPath = (color: string, path: Path2D): void => {
93
95
  const { ctx } = this;
94
- ctx.fillStyle = color;
95
- ctx.fill(path);
96
+ if (ctx != null) {
97
+ ctx.fillStyle = color;
98
+ ctx.fill(path);
99
+ }
96
100
  };
97
101
 
98
102
  drawLinePath = (color: string, path: Path2D): void => {
99
103
  const { ctx } = this;
100
- ctx.strokeStyle = color;
101
- ctx.stroke(path);
104
+
105
+ if (ctx != null) {
106
+ ctx.strokeStyle = color;
107
+ ctx.stroke(path);
108
+ }
102
109
  };
103
110
 
104
111
  createPolygons = (data: number[][]): number[][] => {
105
112
  const polygons: number[][] = [];
106
- let polygon: number[] = null;
113
+ let polygon: number[] = [];
107
114
 
108
115
  // Start generating polygons
109
116
  for (let i = 0; i < data.length; i++) {
110
117
  // Generate top of polygon as long as we have valid values
111
- const topIsValid = !!data[i][1];
118
+ const topIsValid = !!data[i]?.[1];
112
119
  if (topIsValid) {
113
120
  if (polygon === null) {
114
121
  polygon = [];
115
122
  }
116
- polygon.push(data[i][0], data[i][1]);
123
+ polygon.push(data[i]?.[0]!, data[i]?.[1]!);
117
124
  }
118
125
 
119
126
  const endIsReached = i === data.length - 1;
120
127
  if (!topIsValid || endIsReached) {
121
- if (polygon) {
128
+ if (polygon.length > 0) {
122
129
  // Generate bottom of polygon
123
130
  for (let j: number = !topIsValid ? i - 1 : i; j >= 0; j--) {
124
- if (!data[j][1]) {
131
+ if (!data[j]?.[1]) {
125
132
  break;
126
133
  }
127
- polygon.push(data[j][0], data[j][2] || this.maxDepth);
134
+ polygon.push(data[j]?.[0]!, data[j]?.[2] || this.maxDepth);
128
135
  }
129
136
  polygons.push(polygon);
130
- polygon = null;
137
+ polygon = [];
131
138
  }
132
139
  }
133
140
  }
@@ -138,9 +145,9 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
138
145
  generatePolygonPath = (polygon: number[]): Path2D => {
139
146
  const path = new Path2D();
140
147
 
141
- path.moveTo(polygon[0], polygon[1]);
148
+ path.moveTo(polygon[0]!, polygon[1]!);
142
149
  for (let i = 2; i < polygon.length; i += 2) {
143
- path.lineTo(polygon[i], polygon[i + 1]);
150
+ path.lineTo(polygon[i]!, polygon[i + 1]!);
144
151
  }
145
152
  path.closePath();
146
153
 
@@ -152,22 +159,22 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
152
159
  const { data: d } = s;
153
160
 
154
161
  let penDown = false;
155
- let path = null;
162
+ let path: Path2D | undefined;
156
163
  for (let i = 0; i < d.length; i++) {
157
- if (d[i][1]) {
158
- if (penDown) {
159
- path.lineTo(d[i][0], d[i][1]);
164
+ if (d[i]?.[1]) {
165
+ if (penDown && path) {
166
+ path.lineTo(d[i]?.[0]!, d[i]?.[1]!);
160
167
  } else {
161
168
  path = new Path2D();
162
- path.moveTo(d[i][0], d[i][1]);
169
+ path.moveTo(d[i]?.[0]!, d[i]?.[1]!);
163
170
  penDown = true;
164
171
  }
165
- } else if (penDown) {
172
+ } else if (penDown && path) {
166
173
  paths.push(path);
167
174
  penDown = false;
168
175
  }
169
176
  }
170
- if (penDown) {
177
+ if (penDown && path) {
171
178
  paths.push(path);
172
179
  }
173
180