@equinor/esv-intersection 3.0.1 → 3.0.4

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 (109) hide show
  1. package/dist/index.cjs +2 -2
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.mjs +2241 -1938
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/index.umd.js +2 -2
  6. package/dist/index.umd.js.map +1 -1
  7. package/package.json +21 -22
  8. package/dist/components/axis.d.ts +0 -47
  9. package/dist/components/index.d.ts +0 -1
  10. package/dist/control/ExtendedCurveInterpolator.d.ts +0 -58
  11. package/dist/control/IntersectionReferenceSystem.d.ts +0 -96
  12. package/dist/control/LayerManager.d.ts +0 -76
  13. package/dist/control/MainController.d.ts +0 -154
  14. package/dist/control/ZoomPanHandler.d.ts +0 -158
  15. package/dist/control/index.d.ts +0 -5
  16. package/dist/control/interfaces.d.ts +0 -37
  17. package/dist/control/overlay.d.ts +0 -20
  18. package/dist/datautils/colortable.d.ts +0 -1
  19. package/dist/datautils/findsample.d.ts +0 -2
  20. package/dist/datautils/index.d.ts +0 -6
  21. package/dist/datautils/interfaces.d.ts +0 -63
  22. package/dist/datautils/picks.d.ts +0 -74
  23. package/dist/datautils/schematicShapeGenerator.d.ts +0 -59
  24. package/dist/datautils/seismicimage.d.ts +0 -45
  25. package/dist/datautils/surfacedata.d.ts +0 -10
  26. package/dist/datautils/trajectory.d.ts +0 -14
  27. package/dist/layers/CalloutCanvasLayer.d.ts +0 -60
  28. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +0 -22
  29. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +0 -27
  30. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +0 -20
  31. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +0 -26
  32. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +0 -17
  33. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +0 -24
  34. package/dist/layers/GeomodelCanvasLayer.d.ts +0 -28
  35. package/dist/layers/GeomodelLabelsLayer.d.ts +0 -49
  36. package/dist/layers/GeomodelLayerV2.d.ts +0 -12
  37. package/dist/layers/GridLayer.d.ts +0 -29
  38. package/dist/layers/ImageCanvasLayer.d.ts +0 -20
  39. package/dist/layers/ReferenceLineLayer.d.ts +0 -29
  40. package/dist/layers/SchematicLayer.d.ts +0 -113
  41. package/dist/layers/SeismicCanvasLayer.d.ts +0 -18
  42. package/dist/layers/WellborePathLayer.d.ts +0 -17
  43. package/dist/layers/base/CanvasLayer.d.ts +0 -19
  44. package/dist/layers/base/HTMLLayer.d.ts +0 -13
  45. package/dist/layers/base/Layer.d.ts +0 -69
  46. package/dist/layers/base/PixiLayer.d.ts +0 -32
  47. package/dist/layers/base/SVGLayer.d.ts +0 -13
  48. package/dist/layers/base/index.d.ts +0 -5
  49. package/dist/layers/index.d.ts +0 -16
  50. package/dist/layers/schematicInterfaces.d.ts +0 -208
  51. package/dist/utils/arc-length.d.ts +0 -23
  52. package/dist/utils/binary-search.d.ts +0 -8
  53. package/dist/utils/color.d.ts +0 -5
  54. package/dist/utils/index.d.ts +0 -1
  55. package/dist/utils/root-finder.d.ts +0 -34
  56. package/dist/utils/text.d.ts +0 -14
  57. package/dist/utils/vectorUtils.d.ts +0 -15
  58. package/dist/vendor/pixi-dashed-line/index.d.ts +0 -57
  59. package/src/components/axis.ts +0 -247
  60. package/src/components/index.ts +0 -1
  61. package/src/control/ExtendedCurveInterpolator.ts +0 -155
  62. package/src/control/IntersectionReferenceSystem.ts +0 -391
  63. package/src/control/LayerManager.ts +0 -294
  64. package/src/control/MainController.ts +0 -296
  65. package/src/control/ZoomPanHandler.ts +0 -436
  66. package/src/control/index.ts +0 -5
  67. package/src/control/interfaces.ts +0 -42
  68. package/src/control/overlay.ts +0 -118
  69. package/src/datautils/colortable.ts +0 -14
  70. package/src/datautils/findsample.ts +0 -64
  71. package/src/datautils/index.ts +0 -6
  72. package/src/datautils/interfaces.ts +0 -68
  73. package/src/datautils/picks.ts +0 -328
  74. package/src/datautils/schematicShapeGenerator.ts +0 -1007
  75. package/src/datautils/seismicimage.ts +0 -180
  76. package/src/datautils/surfacedata.ts +0 -318
  77. package/src/datautils/trajectory.ts +0 -206
  78. package/src/layers/CalloutCanvasLayer.ts +0 -338
  79. package/src/layers/CustomDisplayObjects/ComplexRope.ts +0 -45
  80. package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +0 -190
  81. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRope.ts +0 -41
  82. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +0 -149
  83. package/src/layers/CustomDisplayObjects/UniformTextureStretchRope.ts +0 -39
  84. package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +0 -174
  85. package/src/layers/GeomodelCanvasLayer.ts +0 -176
  86. package/src/layers/GeomodelLabelsLayer.ts +0 -619
  87. package/src/layers/GeomodelLayerV2.ts +0 -110
  88. package/src/layers/GridLayer.ts +0 -145
  89. package/src/layers/ImageCanvasLayer.ts +0 -55
  90. package/src/layers/ReferenceLineLayer.ts +0 -185
  91. package/src/layers/SchematicLayer.ts +0 -871
  92. package/src/layers/SeismicCanvasLayer.ts +0 -46
  93. package/src/layers/WellborePathLayer.ts +0 -129
  94. package/src/layers/base/CanvasLayer.ts +0 -102
  95. package/src/layers/base/HTMLLayer.ts +0 -70
  96. package/src/layers/base/Layer.ts +0 -217
  97. package/src/layers/base/PixiLayer.ts +0 -190
  98. package/src/layers/base/SVGLayer.ts +0 -63
  99. package/src/layers/base/index.ts +0 -5
  100. package/src/layers/index.ts +0 -16
  101. package/src/layers/schematicInterfaces.ts +0 -470
  102. package/src/utils/arc-length.ts +0 -66
  103. package/src/utils/binary-search.ts +0 -26
  104. package/src/utils/color.ts +0 -22
  105. package/src/utils/index.ts +0 -1
  106. package/src/utils/root-finder.ts +0 -78
  107. package/src/utils/text.ts +0 -88
  108. package/src/utils/vectorUtils.ts +0 -67
  109. package/src/vendor/pixi-dashed-line/index.ts +0 -394
@@ -1,110 +0,0 @@
1
- import { Graphics } from 'pixi.js';
2
- import { PixiLayer } from './base/PixiLayer';
3
- import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
4
- import { SurfaceArea, SurfaceData, SurfaceLine } from '../datautils';
5
- import { SURFACE_LINE_WIDTH } from '../constants';
6
-
7
- const DEFAULT_Y_BOTTOM = 10000;
8
-
9
- export class GeomodelLayerV2<T extends SurfaceData> extends PixiLayer<T> {
10
- private isPreRendered: boolean = false;
11
-
12
- onRescale(event: OnRescaleEvent): void {
13
- super.onRescale(event);
14
-
15
- if (!this.isPreRendered) {
16
- this.clearLayer();
17
- this.preRender();
18
- }
19
-
20
- this.render();
21
- }
22
-
23
- onUpdate(event: OnUpdateEvent<T>): void {
24
- super.onUpdate(event);
25
-
26
- this.isPreRendered = false;
27
- this.clearLayer();
28
- this.preRender();
29
- this.render();
30
- }
31
-
32
- preRender(): void {
33
- const { data }: { data: SurfaceData } = this;
34
-
35
- if (!data) {
36
- return;
37
- }
38
-
39
- data.areas.forEach((a: SurfaceArea) => this.generateAreaPolygon(a));
40
- data.lines.forEach((l: SurfaceLine) => this.generateSurfaceLine(l));
41
-
42
- this.isPreRendered = true;
43
- }
44
-
45
- createPolygons = (data: number[][]): number[][] => {
46
- const polygons: number[][] = [];
47
- let polygon: number[] = null;
48
-
49
- // Start generating polygons
50
- for (let i = 0; i < data.length; i++) {
51
- // Generate top of polygon as long as we have valid values
52
- const topIsValid = !!data[i][1];
53
- if (topIsValid) {
54
- if (polygon === null) {
55
- polygon = [];
56
- }
57
- polygon.push(data[i][0], data[i][1]);
58
- }
59
-
60
- const endIsReached = i === data.length - 1;
61
- if (!topIsValid || endIsReached) {
62
- if (polygon) {
63
- // Generate bottom of polygon
64
- for (let j: number = !topIsValid ? i - 1 : i; j >= 0; j--) {
65
- if (!data[j][1]) {
66
- break;
67
- }
68
- polygon.push(data[j][0], data[j][2] || DEFAULT_Y_BOTTOM);
69
- }
70
- polygons.push(polygon);
71
- polygon = null;
72
- }
73
- }
74
- }
75
- return polygons;
76
- };
77
-
78
- generateAreaPolygon = (s: SurfaceArea): void => {
79
- const g = new Graphics();
80
- g.lineStyle(1, s.color as number, 1);
81
- g.beginFill(s.color as number);
82
- const polygons = this.createPolygons(s.data);
83
- polygons.forEach((polygon: number[]) => g.drawPolygon(polygon));
84
- g.endFill();
85
- this.addChild(g);
86
- };
87
-
88
- generateSurfaceLine = (s: SurfaceLine): void => {
89
- const g = new Graphics();
90
- const { data: d } = s;
91
-
92
- const alignment = 0.5;
93
- g.lineStyle(SURFACE_LINE_WIDTH, s.color as number, 1, alignment, true);
94
-
95
- let penDown = false;
96
- for (let i = 0; i < d.length; i++) {
97
- if (d[i][1]) {
98
- if (penDown) {
99
- g.lineTo(d[i][0], d[i][1]);
100
- } else {
101
- g.moveTo(d[i][0], d[i][1]);
102
- penDown = true;
103
- }
104
- } else {
105
- penDown = false;
106
- }
107
- }
108
- this.addChild(g);
109
- };
110
- }
@@ -1,145 +0,0 @@
1
- import { CanvasLayer } from './base/CanvasLayer';
2
- import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
- import { ScaleLinear } from 'd3-scale';
4
- import { LayerOptions } from './base/Layer';
5
-
6
- // constants
7
- const MINORCOLOR: string = 'lightgray';
8
- const MAJORCOLOR: string = 'gray';
9
- const MINORWIDTH: number = 0.25;
10
- const MAJORWIDTH: number = 0.75;
11
-
12
- const defaultOptions = {
13
- minorColor: MINORCOLOR,
14
- majorColor: MAJORCOLOR,
15
- minorWidth: MINORWIDTH,
16
- majorWidth: MAJORWIDTH,
17
- };
18
-
19
- export interface GridLayerOptions<T> extends LayerOptions<T> {
20
- majorWidth?: number;
21
- majorColor?: string;
22
- minorWidth?: number;
23
- minorColor?: string;
24
- }
25
-
26
- export interface OnGridLayerUpdateEvent<T> extends OnUpdateEvent<T> {
27
- xScale?: ScaleLinear<number, number, never>;
28
- yScale?: ScaleLinear<number, number, never>;
29
- }
30
-
31
- export class GridLayer<T> extends CanvasLayer<T> {
32
- private _offsetX: number = 0;
33
- private _offsetY: number = 0;
34
-
35
- constructor(id?: string, options?: GridLayerOptions<T>) {
36
- super(id, options);
37
- this.options = {
38
- ...this.options,
39
- ...(options || defaultOptions),
40
- };
41
- this.render = this.render.bind(this);
42
- }
43
-
44
- onUpdate(event: OnGridLayerUpdateEvent<T>): void {
45
- super.onUpdate(event);
46
- this.render(event);
47
- }
48
-
49
- onRescale(event: OnRescaleEvent): void {
50
- super.onRescale(event);
51
- this.render(event);
52
- }
53
-
54
- render(event: OnRescaleEvent | OnGridLayerUpdateEvent<T>): void {
55
- const { ctx } = this;
56
- const { minorWidth, minorColor, majorWidth, majorColor } = this.options as GridLayerOptions<T>;
57
-
58
- if (!ctx) {
59
- return;
60
- }
61
-
62
- this.clearCanvas();
63
-
64
- if (!(event.xScale || event.yScale)) {
65
- return;
66
- }
67
-
68
- const xScale = event.xScale.copy();
69
- const yScale = event.yScale.copy();
70
-
71
- const xDomain = xScale.domain();
72
- const yDomain = yScale.domain();
73
-
74
- const offsetX = this.offsetX;
75
- const offsetY = this.offsetY;
76
-
77
- xScale.domain([xDomain[0] - offsetX, xDomain[1] - offsetX]);
78
- yScale.domain([yDomain[0] - offsetY, yDomain[1] - offsetY]);
79
-
80
- const [rx1, rx2] = xScale.range();
81
- const [ry1, ry2] = yScale.range();
82
-
83
- ctx.lineWidth = minorWidth || MINORWIDTH;
84
- ctx.strokeStyle = minorColor || MINORCOLOR;
85
-
86
- // minor grid lines
87
- const xminticks = this.mapMinorTicks(xScale.ticks());
88
- const yminticks = this.mapMinorTicks(yScale.ticks());
89
- this.renderTicksX(xScale, xminticks, ry1, ry2);
90
- this.renderTicksY(yScale, yminticks, rx1, rx2);
91
-
92
- ctx.lineWidth = majorWidth || MAJORWIDTH;
93
- ctx.strokeStyle = majorColor || MAJORCOLOR;
94
-
95
- // major grid lines
96
- this.renderTicksX(xScale, xScale.ticks(), ry1, ry2);
97
- this.renderTicksY(yScale, yScale.ticks(), rx1, rx2);
98
- ctx.restore();
99
- }
100
-
101
- private renderTicksX(xscale: ScaleLinear<number, number, never>, xticks: number[], ry1: number, ry2: number): void {
102
- xticks.forEach((tx: number) => {
103
- const x = xscale(tx);
104
- this.ctx.beginPath();
105
- this.ctx.moveTo(x, ry1);
106
- this.ctx.lineTo(x, ry2);
107
- this.ctx.stroke();
108
- });
109
- }
110
-
111
- private renderTicksY(yscale: ScaleLinear<number, number, never>, yticks: number[], rx1: number, rx2: number): void {
112
- yticks.forEach((ty: number) => {
113
- const y = yscale(ty);
114
- this.ctx.beginPath();
115
- this.ctx.moveTo(rx1, y);
116
- this.ctx.lineTo(rx2, y);
117
- this.ctx.stroke();
118
- });
119
- }
120
-
121
- private mapMinorTicks(ticks: number[]): number[] {
122
- let xminticks: number[] = [];
123
- if (ticks.length >= 2) {
124
- xminticks = ticks.map((v: number) => v + (ticks[1] - ticks[0]) / 2);
125
- xminticks.pop();
126
- }
127
- return xminticks;
128
- }
129
-
130
- get offsetX(): number {
131
- return this._offsetX;
132
- }
133
-
134
- set offsetX(offset: number) {
135
- this._offsetX = offset;
136
- }
137
-
138
- get offsetY(): number {
139
- return this._offsetY;
140
- }
141
-
142
- set offsetY(offset: number) {
143
- this._offsetY = offset;
144
- }
145
- }
@@ -1,55 +0,0 @@
1
- import { CanvasLayer } from './base/CanvasLayer';
2
- import { OnUpdateEvent, OnMountEvent, OnRescaleEvent } from '../interfaces';
3
- import { ScaleLinear } from 'd3-scale';
4
-
5
- export interface OnImageLayerUpdateEvent<T> extends OnUpdateEvent<T> {
6
- url: string;
7
- xScale: ScaleLinear<number, number, never>;
8
- yScale: ScaleLinear<number, number, never>;
9
- xRatio?: number;
10
- yRatio?: number;
11
- x?: number;
12
- y?: number;
13
- }
14
-
15
- export type OnImageLayerRescaleEvent<T> = OnImageLayerUpdateEvent<T> & OnRescaleEvent;
16
-
17
- export class ImageLayer<T> extends CanvasLayer<T> {
18
- img: HTMLImageElement;
19
-
20
- onMount(event: OnMountEvent): void {
21
- super.onMount(event);
22
- const img = document.createElement('img');
23
- this.img = img;
24
- this.isLoading = true;
25
- }
26
-
27
- onUpdate(event: OnImageLayerUpdateEvent<T>): void {
28
- super.onUpdate(event);
29
- this.img.src = event.url;
30
- this.render(event);
31
- }
32
-
33
- onRescale(event: OnImageLayerRescaleEvent<T>): void {
34
- super.onRescale(event);
35
- this.setTransform(event);
36
- this.render(event);
37
- }
38
-
39
- render(event: OnImageLayerUpdateEvent<T>): void {
40
- const width = parseInt(this.elm.getAttribute('width'), 10);
41
- const height = parseInt(this.elm.getAttribute('height'), 10);
42
- const { xScale, yScale, xRatio, yRatio, x, y } = event;
43
- const calcWidth = width * (xRatio || 1);
44
- const calcHeight = height * (yRatio || 1);
45
- this.clearCanvas();
46
- if (this.isLoading) {
47
- this.img.onload = (): void => {
48
- this.isLoading = false;
49
- this.ctx.drawImage(this.img, xScale(x || 0), yScale(y || 0), calcWidth, calcHeight);
50
- };
51
- } else {
52
- this.ctx.drawImage(this.img, xScale(x || 0), yScale(y || 0), calcWidth, calcHeight);
53
- }
54
- }
55
- }
@@ -1,185 +0,0 @@
1
- import { calcSize } from '../utils';
2
- import { CanvasLayer, LayerOptions } from './base';
3
- import { assertNever } from './schematicInterfaces';
4
- import { OnUpdateEvent, OnRescaleEvent, OnMountEvent } from '../interfaces';
5
- import { ScaleLinear } from 'd3-scale';
6
-
7
- export type ReferenceLineType = 'wavy' | 'dashed' | 'solid';
8
-
9
- export type ReferenceLine = {
10
- text?: string;
11
- lineType: ReferenceLineType;
12
- color: string;
13
- depth: number;
14
- lineWidth?: number;
15
- textColor?: string;
16
- fontSize?: string;
17
- };
18
-
19
- export interface ReferenceLineLayerOptions extends LayerOptions<ReferenceLine[]> {}
20
-
21
- const foldReferenceLine = <T>(
22
- options: {
23
- wavy: (wavy: ReferenceLine) => T;
24
- dashed: (dashed: ReferenceLine) => T;
25
- solid: (solid: ReferenceLine) => T;
26
- },
27
- refLine: ReferenceLine,
28
- ): T => {
29
- switch (refLine.lineType) {
30
- case 'wavy':
31
- return options.wavy(refLine);
32
-
33
- case 'dashed':
34
- return options.dashed(refLine);
35
-
36
- case 'solid':
37
- return options.solid(refLine);
38
-
39
- default:
40
- return assertNever(refLine.lineType);
41
- }
42
- };
43
-
44
- export class ReferenceLineLayer extends CanvasLayer<ReferenceLine[]> {
45
- yScale: ScaleLinear<number, number, never> | null = null;
46
- xScale: ScaleLinear<number, number, never> | null = null;
47
-
48
- onMount(event: OnMountEvent) {
49
- super.onMount(event);
50
- }
51
-
52
- onUpdate(event: OnUpdateEvent<ReferenceLine[]>) {
53
- super.onUpdate(event);
54
- this.clearCanvas();
55
- this.render();
56
- }
57
-
58
- onRescale(event: OnRescaleEvent) {
59
- super.onRescale(event);
60
- this.yScale = event.yScale;
61
- this.xScale = event.xScale;
62
- this.resetTransform();
63
- this.render();
64
- }
65
-
66
- private drawDashed(dashed: ReferenceLine) {
67
- const { ctx } = this;
68
- const { canvas } = this;
69
- const y = this.yScale(dashed.depth);
70
- ctx.save();
71
- ctx.strokeStyle = dashed.color;
72
- this.setCtxLineStyle(ctx, dashed);
73
- this.setCtxLineWidth(ctx, dashed);
74
- ctx.beginPath();
75
- ctx.moveTo(0, y);
76
- ctx.lineTo(canvas.width, y);
77
- ctx.stroke();
78
- ctx.restore();
79
- if (dashed.text) {
80
- this.drawText(ctx, dashed, ctx.canvas.width, y);
81
- }
82
- }
83
-
84
- private drawSolid(solid: ReferenceLine) {
85
- const { ctx } = this;
86
- const { canvas } = this;
87
- const y = this.yScale(solid.depth);
88
- ctx.save();
89
- ctx.strokeStyle = solid.color;
90
- this.setCtxLineStyle(ctx, solid);
91
- this.setCtxLineWidth(ctx, solid);
92
- ctx.beginPath();
93
- ctx.moveTo(0, y);
94
- ctx.lineTo(canvas.width, y);
95
- ctx.stroke();
96
- ctx.restore();
97
- if (solid.text) {
98
- this.drawText(ctx, solid, ctx.canvas.width, y);
99
- }
100
- }
101
-
102
- private drawWavy(wavy: ReferenceLine): void {
103
- const factor = 4;
104
- const min = 2.5;
105
- const max = 500;
106
- const { ctx } = this;
107
- const { canvas } = this;
108
- const waveHeight = calcSize(factor, min, max, this.yScale);
109
- const wavePeriod = waveHeight * 2;
110
- const y = this.yScale(wavy.depth) - waveHeight;
111
- const steps = Math.ceil(canvas.width / wavePeriod) + 1;
112
- const xOffset = this.xScale(0) % wavePeriod;
113
- ctx.save();
114
- ctx.strokeStyle = wavy.color;
115
- this.setCtxLineStyle(ctx, wavy);
116
- this.setCtxLineWidth(ctx, wavy);
117
- for (let i = -1; i < steps; i++) {
118
- ctx.beginPath();
119
- ctx.arc(i * wavePeriod + xOffset + waveHeight, y, waveHeight, 0, Math.PI);
120
- ctx.stroke();
121
- }
122
- ctx.restore();
123
- if (wavy.text) {
124
- this.drawText(ctx, wavy, ctx.canvas.width, y);
125
- }
126
- }
127
-
128
- private drawText(ctx: CanvasRenderingContext2D, refLine: ReferenceLine, x: number, y: number) {
129
- const textColor = refLine.textColor || '#000';
130
- const fontSize = refLine.fontSize || '10px sans-serif';
131
- const textOffsetX = 10;
132
- ctx.save();
133
- ctx.strokeStyle = textColor;
134
- ctx.font = fontSize;
135
- ctx.textAlign = 'end';
136
- ctx.textBaseline = 'bottom';
137
- ctx.fillText(refLine.text, x - textOffsetX, y);
138
- ctx.restore();
139
- }
140
-
141
- private setCtxLineStyle(ctx: CanvasRenderingContext2D, refLine: ReferenceLine): void {
142
- const a = 8;
143
- const b = 10;
144
- foldReferenceLine(
145
- {
146
- solid: () => {
147
- ctx.setLineDash([]);
148
- },
149
- dashed: () => {
150
- ctx.setLineDash([a, b]);
151
- },
152
- wavy: () => {
153
- ctx.setLineDash([]);
154
- },
155
- },
156
- refLine,
157
- );
158
- }
159
-
160
- private setCtxLineWidth(ctx: CanvasRenderingContext2D, refLine: ReferenceLine) {
161
- const defaultLineWidth = 1;
162
- ctx.lineWidth = refLine.lineWidth || defaultLineWidth;
163
- }
164
-
165
- private render() {
166
- if (!this.ctx || !this.yScale || !this.xScale) {
167
- return;
168
- }
169
-
170
- requestAnimationFrame(() => {
171
- this.clearCanvas();
172
-
173
- this.data?.forEach((refLine) => {
174
- foldReferenceLine(
175
- {
176
- solid: (solid) => this.drawSolid(solid),
177
- dashed: (dashed) => this.drawDashed(dashed),
178
- wavy: (wavy) => this.drawWavy(wavy),
179
- },
180
- refLine,
181
- );
182
- });
183
- });
184
- }
185
- }