@equinor/esv-intersection 3.0.0-beta.6 → 3.0.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 (73) hide show
  1. package/README.md +11 -16
  2. package/dist/components/axis.d.ts +47 -47
  3. package/dist/components/index.d.ts +1 -1
  4. package/dist/constants.d.ts +11 -11
  5. package/dist/control/ExtendedCurveInterpolator.d.ts +58 -58
  6. package/dist/control/IntersectionReferenceSystem.d.ts +96 -96
  7. package/dist/control/LayerManager.d.ts +76 -76
  8. package/dist/control/MainController.d.ts +154 -154
  9. package/dist/control/ZoomPanHandler.d.ts +158 -158
  10. package/dist/control/index.d.ts +5 -5
  11. package/dist/control/interfaces.d.ts +37 -37
  12. package/dist/control/overlay.d.ts +20 -20
  13. package/dist/datautils/colortable.d.ts +1 -1
  14. package/dist/datautils/findsample.d.ts +2 -2
  15. package/dist/datautils/index.d.ts +6 -6
  16. package/dist/datautils/interfaces.d.ts +63 -63
  17. package/dist/datautils/picks.d.ts +74 -74
  18. package/dist/datautils/schematicShapeGenerator.d.ts +59 -61
  19. package/dist/datautils/seismicimage.d.ts +45 -45
  20. package/dist/datautils/surfacedata.d.ts +10 -10
  21. package/dist/datautils/trajectory.d.ts +14 -14
  22. package/dist/index.cjs +15 -0
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.ts +6 -6
  25. package/dist/index.mjs +7944 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/index.umd.js +15 -1
  28. package/dist/index.umd.js.map +1 -0
  29. package/dist/interfaces.d.ts +86 -86
  30. package/dist/layers/CalloutCanvasLayer.d.ts +60 -60
  31. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +22 -22
  32. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +27 -27
  33. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +20 -20
  34. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +26 -26
  35. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +17 -17
  36. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +24 -24
  37. package/dist/layers/GeomodelCanvasLayer.d.ts +28 -28
  38. package/dist/layers/GeomodelLabelsLayer.d.ts +49 -49
  39. package/dist/layers/GeomodelLayerV2.d.ts +12 -12
  40. package/dist/layers/GridLayer.d.ts +29 -29
  41. package/dist/layers/ImageCanvasLayer.d.ts +20 -20
  42. package/dist/layers/ReferenceLineLayer.d.ts +29 -29
  43. package/dist/layers/SchematicLayer.d.ts +113 -114
  44. package/dist/layers/SeismicCanvasLayer.d.ts +18 -18
  45. package/dist/layers/WellborePathLayer.d.ts +17 -17
  46. package/dist/layers/base/CanvasLayer.d.ts +19 -19
  47. package/dist/layers/base/HTMLLayer.d.ts +13 -13
  48. package/dist/layers/base/Layer.d.ts +69 -69
  49. package/dist/layers/base/PixiLayer.d.ts +32 -32
  50. package/dist/layers/base/SVGLayer.d.ts +13 -13
  51. package/dist/layers/base/index.d.ts +5 -5
  52. package/dist/layers/index.d.ts +16 -16
  53. package/dist/layers/schematicInterfaces.d.ts +208 -208
  54. package/dist/tubing1.svg +3 -0
  55. package/dist/tubing2.svg +6 -0
  56. package/dist/tubing3.svg +12 -0
  57. package/dist/utils/arc-length.d.ts +23 -23
  58. package/dist/utils/binary-search.d.ts +8 -8
  59. package/dist/utils/color.d.ts +5 -5
  60. package/dist/utils/index.d.ts +1 -1
  61. package/dist/utils/root-finder.d.ts +34 -34
  62. package/dist/utils/text.d.ts +14 -14
  63. package/dist/utils/vectorUtils.d.ts +15 -15
  64. package/dist/vendor/pixi-dashed-line/index.d.ts +57 -0
  65. package/package.json +30 -55
  66. package/src/datautils/schematicShapeGenerator.ts +2 -8
  67. package/src/layers/SchematicLayer.ts +12 -37
  68. package/src/layers/base/PixiLayer.ts +4 -4
  69. package/src/vendor/pixi-dashed-line/index.ts +394 -0
  70. package/dist/datautils/camelcase.d.ts +0 -5
  71. package/dist/index.esm.js +0 -1
  72. package/dist/index.js +0 -1
  73. package/src/datautils/camelcase.ts +0 -28
@@ -0,0 +1,57 @@
1
+ import * as PIXI from 'pixi.js';
2
+ /** Define the dash: [dash length, gap size, dash size, gap size, ...] */
3
+ export declare type Dashes = number[];
4
+ export interface DashLineOptions {
5
+ dash?: Dashes;
6
+ width?: number;
7
+ color?: number;
8
+ alpha?: number;
9
+ scale?: number;
10
+ useTexture?: boolean;
11
+ useDots?: boolean;
12
+ cap?: PIXI.LINE_CAP;
13
+ join?: PIXI.LINE_JOIN;
14
+ alignment?: number;
15
+ }
16
+ export declare class DashLine {
17
+ graphics: PIXI.Graphics;
18
+ /** current length of the line */
19
+ lineLength: number;
20
+ /** cursor location */
21
+ cursor: PIXI.Point;
22
+ /** desired scale of line */
23
+ scale: number;
24
+ private activeTexture;
25
+ private start;
26
+ private dashSize;
27
+ private dash;
28
+ private useTexture;
29
+ private options;
30
+ static dashTextureCache: Record<string, PIXI.Texture>;
31
+ /**
32
+ * Create a DashLine
33
+ * @param graphics
34
+ * @param [options]
35
+ * @param [options.useTexture=false] - use the texture based render (useful for very large or very small dashed lines)
36
+ * @param [options.dashes=[10,5] - an array holding the dash and gap (eg, [10, 5, 20, 5, ...])
37
+ * @param [options.width=1] - width of the dashed line
38
+ * @param [options.alpha=1] - alpha of the dashed line
39
+ * @param [options.color=0xffffff] - color of the dashed line
40
+ * @param [options.cap] - add a PIXI.LINE_CAP style to dashed lines (only works for useTexture: false)
41
+ * @param [options.join] - add a PIXI.LINE_JOIN style to the dashed lines (only works for useTexture: false)
42
+ * @param [options.alignment] - The alignment of any lines drawn (0.5 = middle, 1 = outer, 0 = inner)
43
+ */
44
+ constructor(graphics: PIXI.Graphics, options?: DashLineOptions);
45
+ /** resets line style to enable dashed line (useful if lineStyle was changed on graphics element) */
46
+ setLineStyle(): void;
47
+ private static distance;
48
+ moveTo(x: number, y: number): this;
49
+ lineTo(x: number, y: number, closePath?: boolean): this;
50
+ closePath(): void;
51
+ drawCircle(x: number, y: number, radius: number, points?: number, matrix?: PIXI.Matrix): this;
52
+ drawEllipse(x: number, y: number, radiusX: number, radiusY: number, points?: number, matrix?: PIXI.Matrix): this;
53
+ drawPolygon(points: PIXI.Point[] | number[], matrix?: PIXI.Matrix): this;
54
+ drawRect(x: number, y: number, width: number, height: number, matrix?: PIXI.Matrix): this;
55
+ private adjustLineStyle;
56
+ private static getTexture;
57
+ }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@equinor/esv-intersection",
3
- "version": "3.0.0-beta.6",
3
+ "version": "3.0.0",
4
4
  "description": "Intersection component package with testing and automatic documentation.",
5
5
  "type": "module",
6
6
  "exports": {
7
- "import": "./dist/index.esm.js",
8
- "require": "./dist/index.js",
7
+ "import": "./dist/index.mjs",
8
+ "require": "./dist/index.cjs",
9
9
  "browser": "./dist/index.umd.js"
10
10
  },
11
11
  "files": [
@@ -16,19 +16,19 @@
16
16
  "types": "dist/index.d.ts",
17
17
  "scripts": {
18
18
  "prebuild": "rimraf dist",
19
- "build": "rollup -c --bundleConfigAsCjs",
19
+ "build": "vite build",
20
20
  "prepub": "npm run build",
21
21
  "pub": "npm publish --access=public",
22
22
  "prepub-beta": "npm run build",
23
23
  "pub-beta": "npm publish --tag=beta --access=public",
24
24
  "lint": "eslint --ext .js,.jsx,.ts,.tsx src test",
25
- "test": "tsc --project tsconfig.test.json && jest",
26
- "test:watch": "jest --watchAll",
25
+ "test": "tsc --project tsconfig.test.json && vitest",
26
+ "test:watch": "vitest --watch",
27
27
  "predocs": "rimraf docs_out",
28
28
  "docs": "typedoc --out docs_out src",
29
29
  "postdocs": "copyfiles images/* docs_out && copyfiles .nojekyll docs_out",
30
- "storybook": "start-storybook -p 6006",
31
- "build-storybook": "build-storybook",
30
+ "storybook": "storybook dev -p 6006",
31
+ "build-storybook": "storybook build",
32
32
  "prettier": "prettier --write --config .prettierrc \"**/*.ts\" "
33
33
  },
34
34
  "repository": {
@@ -47,69 +47,44 @@
47
47
  },
48
48
  "homepage": "https://github.com/equinor/esv-intersection#readme",
49
49
  "devDependencies": {
50
- "@babel/core": "^7.20.5",
51
- "@babel/preset-env": "^7.20.2",
52
- "@babel/preset-typescript": "^7.18.6",
53
- "@rollup/plugin-commonjs": "^23.0.5",
54
- "@rollup/plugin-node-resolve": "^15.0.1",
55
- "@rollup/plugin-terser": "^0.2.0",
56
- "@storybook/addon-docs": "^6.5.14",
57
- "@storybook/addon-storysource": "^6.5.14",
58
- "@storybook/html": "^6.5.14",
50
+ "@storybook/addon-storysource": "^7.0.0-beta.25",
51
+ "@storybook/html-vite": "^7.0.0-beta.25",
59
52
  "@types/d3": "^7.4.0",
60
- "@types/jest": "^29.2.4",
61
53
  "@types/mock-raf": "^1.0.3",
62
- "@typescript-eslint/eslint-plugin": "^5.46.1",
63
- "@typescript-eslint/parser": "^5.46.1",
64
- "babel-jest": "^29.3.1",
54
+ "@typescript-eslint/eslint-plugin": "^5.48.1",
55
+ "@typescript-eslint/parser": "^5.48.1",
65
56
  "copyfiles": "^2.4.1",
66
- "eslint": "^8.29.0",
67
- "eslint-config-prettier": "^8.5.0",
57
+ "eslint": "^8.31.0",
58
+ "eslint-config-prettier": "^8.6.0",
68
59
  "eslint-plugin-prettier": "^4.2.1",
69
- "eslint-plugin-storybook": "^0.6.8",
70
- "jest": "^29.3.1",
71
- "jest-canvas-mock": "^2.4.0",
72
- "jest-environment-jsdom": "^29.3.1",
60
+ "eslint-plugin-storybook": "^0.6.10",
73
61
  "mock-raf": "^1.0.1",
74
- "pixi-dashed-line": "^1.4.2",
75
- "pixi.js": "^6.5.8",
76
- "prettier": "^2.8.1",
62
+ "pixi.js": "^7.1.0",
63
+ "prettier": "^2.8.2",
77
64
  "rimraf": "^3.0.2",
78
- "rollup": "^3.7.4",
79
- "rollup-plugin-typescript2": "^0.34.1",
80
- "storybook-dark-mode": "^2.0.4",
65
+ "storybook": "^7.0.0-beta.25",
66
+ "storybook-dark-mode": "^2.0.5",
81
67
  "tslib": "^2.4.1",
82
- "typedoc": "^0.23.22",
83
- "typescript": "^4.9.4"
84
- },
85
- "jest": {
86
- "setupFiles": [
87
- "jest-canvas-mock"
88
- ],
89
- "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$",
90
- "moduleFileExtensions": [
91
- "ts",
92
- "tsx",
93
- "js"
94
- ],
95
- "testEnvironment": "jsdom",
96
- "transformIgnorePatterns": [
97
- "/node_modules/(?!d3)"
98
- ]
68
+ "typedoc": "^0.23.24",
69
+ "typescript": "^4.9.4",
70
+ "vite": "^4.0.4",
71
+ "vite-plugin-dts": "^1.7.1",
72
+ "vitest": "^0.27.1",
73
+ "vitest-canvas-mock": "^0.2.2"
99
74
  },
100
75
  "peerDependencies": {
101
- "pixi-dashed-line": "^1.4.2",
102
- "pixi.js": "^6.5.8"
76
+ "pixi.js": "^7.1.0"
103
77
  },
104
78
  "dependencies": {
105
79
  "@equinor/videx-math": "^1.1.0",
106
80
  "@equinor/videx-vector2": "^1.0.44",
107
- "curve-interpolator": "2.0.8",
81
+ "curve-interpolator": "3.0.1",
108
82
  "d3-array": "^3.2.1",
109
83
  "d3-axis": "^3.0.0",
110
84
  "d3-scale": "^4.0.2",
111
85
  "d3-selection": "^3.0.0",
112
- "d3-shape": "^3.1.0",
113
- "d3-zoom": "^3.0.0"
86
+ "d3-shape": "^3.2.0",
87
+ "d3-zoom": "^3.0.0",
88
+ "jest-canvas-mock": "^2.4.0"
114
89
  }
115
90
  }
@@ -46,7 +46,6 @@ export interface CasingRenderObject {
46
46
  leftPath: Point[];
47
47
  rightPath: Point[];
48
48
  pathPoints: Point[];
49
- polygon: IPoint[];
50
49
  }[];
51
50
  }
52
51
 
@@ -63,10 +62,6 @@ export const getEndLines = (
63
62
  };
64
63
  };
65
64
 
66
- export const makeTubularPolygon = (rightPath: Point[], leftPath: Point[]): Point[] => {
67
- return [...leftPath, ...rightPath.map<Point>((d) => d.clone()).reverse()];
68
- };
69
-
70
65
  export const overlaps = (top1: number, bottom1: number, top2: number, bottom2: number): boolean => top1 <= bottom2 && top2 <= bottom1;
71
66
 
72
67
  export const strictlyOverlaps = (top1: number, bottom1: number, top2: number, bottom2: number): boolean => top1 < bottom2 && top2 < bottom1;
@@ -567,7 +562,7 @@ export const prepareCasingRenderObject = (
567
562
  const sections = getCasingIntervalsWithWindows(casing).map((casingInterval: CasingInterval) => {
568
563
  const pathPoints = getPathPoints(casingInterval.start, casingInterval.end);
569
564
  const { leftPath, rightPath } = createTubularRenderingObject(exaggeratedRadius, pathPoints);
570
- return { kind: casingInterval.kind, leftPath, rightPath, pathPoints, polygon: makeTubularPolygon(leftPath, rightPath) };
565
+ return { kind: casingInterval.kind, leftPath, rightPath, pathPoints };
571
566
  });
572
567
 
573
568
  return {
@@ -943,8 +938,7 @@ const createSubkindOpenHoleGravelPackTexture = {
943
938
  * Yellow gravel. Yellow frac lines from hole OD into formation
944
939
  */
945
940
  const createSubkindOpenHoleFracPackTexture = {
946
- packing: (perforation: Perforation, perfShape: ComplexRopeSegment, perforationOptions: PerforationOptions) => {
947
- console.log({ perforation });
941
+ packing: (_perforation: Perforation, perfShape: ComplexRopeSegment, perforationOptions: PerforationOptions) => {
948
942
  const { canvas, ctx } = createPerforationCanvas(perfShape, perforationOptions);
949
943
  drawPacking(canvas, ctx, perforationOptions);
950
944
  return createPerforationTexture(canvas);
@@ -1,7 +1,7 @@
1
1
  import { max } from 'd3-array';
2
2
  import { scaleLinear, ScaleLinear } from 'd3-scale';
3
- import { Graphics, groupD8, IPoint, Point, Rectangle, RENDERER_TYPE, SimpleRope, Texture } from 'pixi.js';
4
- import { DashLine } from 'pixi-dashed-line';
3
+ import { Graphics, groupD8, IPoint, Point, Rectangle, SimpleRope, Texture } from 'pixi.js';
4
+ import { DashLine } from '../vendor/pixi-dashed-line';
5
5
  import { LayerOptions, PixiLayer, PixiRenderApplication } from '.';
6
6
  import { DEFAULT_TEXTURE_SIZE, EXAGGERATED_DIAMETER, HOLE_OUTLINE, SCREEN_OUTLINE } from '../constants';
7
7
  import {
@@ -56,7 +56,6 @@ import {
56
56
  createScreenTexture,
57
57
  createTubingTexture,
58
58
  createTubularRenderingObject,
59
- makeTubularPolygon,
60
59
  prepareCasingRenderObject,
61
60
  createCementPlugTexture,
62
61
  createComplexRopeSegmentsForPerforation,
@@ -264,12 +263,6 @@ export class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
264
263
  this.addChild(polygon);
265
264
  };
266
265
 
267
- protected drawBigTexturedPolygon = (coords: Point[], t: Texture): Graphics => {
268
- const polygon = new Graphics().beginTextureFill({ texture: t }).drawPolygon(coords).endFill();
269
- this.addChild(polygon);
270
- return polygon;
271
- };
272
-
273
266
  protected drawRope(path: Point[], texture: Texture, tint?: number): void {
274
267
  if (path.length === 0) {
275
268
  return null;
@@ -632,14 +625,9 @@ export class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
632
625
  const { exaggerationFactor, holeOptions } = this.options as SchematicLayerOptions<T>;
633
626
  const exaggeratedDiameter = holeObject.diameter * exaggerationFactor;
634
627
  const { rightPath, leftPath } = createTubularRenderingObject(exaggeratedDiameter / 2, pathPoints);
628
+ const texture = this.getHoleTexture(holeOptions, exaggeratedDiameter, maxHoleDiameter);
635
629
 
636
- if (this.renderType() === RENDERER_TYPE.CANVAS) {
637
- const polygonCoords = makeTubularPolygon(leftPath, rightPath);
638
- this.drawBigPolygon(polygonCoords, convertColor(holeOptions.firstColor));
639
- } else {
640
- const texture = this.getHoleTexture(holeOptions, exaggeratedDiameter, maxHoleDiameter);
641
- this.drawHoleRope(pathPoints, texture, maxHoleDiameter);
642
- }
630
+ this.drawHoleRope(pathPoints, texture, maxHoleDiameter);
643
631
 
644
632
  this.drawOutline(leftPath, rightPath, convertColor(holeOptions.lineColor), HOLE_OUTLINE * exaggerationFactor, 'TopAndBottom', 0);
645
633
  };
@@ -759,13 +747,10 @@ export class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
759
747
 
760
748
  casingRenderObject.sections.forEach((section, index, list) => {
761
749
  const outlineClosureType = SchematicLayer.getOutlineClosureType(index, list.length - 1);
762
- // Pixi.js-legacy handles SimpleRope and advanced render methods poorly
763
- if (this.renderType() === RENDERER_TYPE.CANVAS) {
764
- this.drawBigPolygon(section.polygon, casingSolidColorNumber);
765
- } else {
766
- const texture = this.createCasingTexture(casingRenderObject.referenceDiameter);
767
- this.drawRope(section.pathPoints, texture, casingSolidColorNumber);
768
- }
750
+
751
+ const texture = this.createCasingTexture(casingRenderObject.referenceDiameter);
752
+ this.drawRope(section.pathPoints, texture, casingSolidColorNumber);
753
+
769
754
  if (section.kind === 'casing-window') {
770
755
  this.drawCasingWindowOutline(section.leftPath, section.rightPath, casingOptions, casingRenderObject.casingWallWidth);
771
756
  } else {
@@ -843,14 +828,10 @@ export class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
843
828
 
844
829
  const pathPoints = this.getZFactorScaledPathForPoints(start, end);
845
830
  const { leftPath, rightPath } = createTubularRenderingObject(exaggeratedDiameter / 2, pathPoints);
846
- const polygon = makeTubularPolygon(leftPath, rightPath);
847
831
 
848
832
  const texture = this.getScreenTexture();
849
- if (this.renderType() === RENDERER_TYPE.CANVAS) {
850
- this.drawBigTexturedPolygon(polygon, texture);
851
- } else {
852
- this.drawCompletionRope(pathPoints, texture, exaggeratedDiameter);
853
- }
833
+
834
+ this.drawCompletionRope(pathPoints, texture, exaggeratedDiameter);
854
835
  this.drawOutline(leftPath, rightPath, convertColor(screenOptions.lineColor), SCREEN_OUTLINE * exaggerationFactor, 'TopAndBottom');
855
836
  }
856
837
 
@@ -859,15 +840,9 @@ export class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
859
840
  const exaggeratedDiameter = exaggerationFactor * diameter;
860
841
 
861
842
  const pathPoints = this.getZFactorScaledPathForPoints(start, end);
862
- const { leftPath, rightPath } = createTubularRenderingObject(exaggeratedDiameter / 2, pathPoints);
863
- const polygon = makeTubularPolygon(leftPath, rightPath);
864
-
865
843
  const texture = this.getTubingTexture(tubingOptions);
866
- if (this.renderType() === RENDERER_TYPE.CANVAS) {
867
- this.drawBigTexturedPolygon(polygon, texture);
868
- } else {
869
- this.drawCompletionRope(pathPoints, texture, exaggeratedDiameter);
870
- }
844
+
845
+ this.drawCompletionRope(pathPoints, texture, exaggeratedDiameter);
871
846
  }
872
847
 
873
848
  private getTubingTexture(tubingOptions: TubingOptions): Texture {
@@ -1,4 +1,4 @@
1
- import { AbstractRenderer, Application, autoDetectRenderer, Container, DisplayObject, IRendererOptionsAuto, Renderer, RENDERER_TYPE } from 'pixi.js';
1
+ import { IRenderer, Application, autoDetectRenderer, Container, DisplayObject, IRendererOptionsAuto, Renderer, RENDERER_TYPE } from 'pixi.js';
2
2
  import { Layer, LayerOptions } from './Layer';
3
3
  import { OnMountEvent, OnRescaleEvent, OnResizeEvent, OnUnmountEvent } from '../../interfaces';
4
4
  import { DEFAULT_LAYER_HEIGHT, DEFAULT_LAYER_WIDTH } from '../../constants';
@@ -11,7 +11,7 @@ import { DEFAULT_LAYER_HEIGHT, DEFAULT_LAYER_WIDTH } from '../../constants';
11
11
  export class PixiRenderApplication {
12
12
  stage: Container;
13
13
 
14
- renderer: AbstractRenderer;
14
+ renderer: IRenderer<HTMLCanvasElement>;
15
15
 
16
16
  constructor(pixiRenderOptions?: IRendererOptionsAuto) {
17
17
  const options = {
@@ -24,7 +24,7 @@ export class PixiRenderApplication {
24
24
  preserveDrawingBuffer: true,
25
25
  ...pixiRenderOptions,
26
26
  };
27
- this.renderer = autoDetectRenderer(options);
27
+ this.renderer = autoDetectRenderer<HTMLCanvasElement>(options);
28
28
  this.stage = new Container();
29
29
  }
30
30
 
@@ -68,7 +68,7 @@ export abstract class PixiLayer<T> extends Layer<T> {
68
68
  private ctx: PixiRenderApplication;
69
69
  private container: Container;
70
70
 
71
- constructor(ctx: Application | PixiRenderApplication, id?: string, options?: LayerOptions<T>) {
71
+ constructor(ctx: Application<HTMLCanvasElement> | PixiRenderApplication, id?: string, options?: LayerOptions<T>) {
72
72
  super(id, options);
73
73
 
74
74
  this.ctx = ctx;