@vectojs/three 0.1.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.
- package/dist/index.d.mts +123 -0
- package/dist/index.d.ts +123 -0
- package/dist/index.js +711 -0
- package/dist/index.mjs +675 -0
- package/package.json +35 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { IRenderer, Scene, SceneOptions } from '@vectojs/core';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
|
|
4
|
+
declare class WebGLGradient {
|
|
5
|
+
x0: number;
|
|
6
|
+
y0: number;
|
|
7
|
+
x1: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
colorStops: {
|
|
10
|
+
stop: number;
|
|
11
|
+
color: string;
|
|
12
|
+
}[];
|
|
13
|
+
type: string;
|
|
14
|
+
constructor(x0: number, y0: number, x1: number, y1: number, colorStops: {
|
|
15
|
+
stop: number;
|
|
16
|
+
color: string;
|
|
17
|
+
}[]);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* WebGL/Three.js implementation of {@link IRenderer}.
|
|
21
|
+
*
|
|
22
|
+
* Bridges VectoJS's 2D canvas API to Three.js for 3D hardware-accelerated rendering.
|
|
23
|
+
*/
|
|
24
|
+
declare class ThreeRenderer implements IRenderer {
|
|
25
|
+
scene: THREE.Scene;
|
|
26
|
+
camera: THREE.OrthographicCamera;
|
|
27
|
+
renderer: THREE.WebGLRenderer;
|
|
28
|
+
private width;
|
|
29
|
+
private height;
|
|
30
|
+
private matrix;
|
|
31
|
+
private stack;
|
|
32
|
+
private globalAlpha;
|
|
33
|
+
private alphaStack;
|
|
34
|
+
private currentPath;
|
|
35
|
+
private activeObjects;
|
|
36
|
+
private scissorStack;
|
|
37
|
+
constructor(canvas: HTMLCanvasElement);
|
|
38
|
+
resize(width: number, height: number): void;
|
|
39
|
+
clear(): void;
|
|
40
|
+
save(): void;
|
|
41
|
+
restore(): void;
|
|
42
|
+
translate(x: number, y: number): void;
|
|
43
|
+
scale(x: number, y: number): void;
|
|
44
|
+
rotate(angle: number): void;
|
|
45
|
+
setGlobalAlpha(alpha: number): void;
|
|
46
|
+
clip(x: number, y: number, width: number, height: number): void;
|
|
47
|
+
beginPath(): void;
|
|
48
|
+
moveTo(x: number, y: number): void;
|
|
49
|
+
lineTo(x: number, y: number): void;
|
|
50
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
51
|
+
closePath(): void;
|
|
52
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
53
|
+
roundRect(x: number, y: number, width: number, height: number, radii: number | number[]): void;
|
|
54
|
+
drawImage(source: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
|
|
55
|
+
fill(colorOrGradient: string | any): void;
|
|
56
|
+
private fillSolidShape;
|
|
57
|
+
stroke(colorOrGradient: string | any, lineWidth?: number): void;
|
|
58
|
+
fillText(text: string, x: number, y: number, font: string, color: string | any): void;
|
|
59
|
+
fillCircle(cx: number, cy: number, radius: number, color: string, alpha?: number): void;
|
|
60
|
+
flush(): void;
|
|
61
|
+
createLinearGradient(x0: number, y0: number, x1: number, y1: number, colorStops: {
|
|
62
|
+
stop: number;
|
|
63
|
+
color: string;
|
|
64
|
+
}[]): any;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface ThreeAdapterOptions {
|
|
68
|
+
/** Physical layout width of the 2D UI canvas. */
|
|
69
|
+
width: number;
|
|
70
|
+
/** Physical layout height of the 2D UI canvas. */
|
|
71
|
+
height: number;
|
|
72
|
+
/** Optional pre-existing canvas element. If omitted, a new canvas is created. */
|
|
73
|
+
canvas?: HTMLCanvasElement;
|
|
74
|
+
/** Options passed to the VectoScene constructor. */
|
|
75
|
+
sceneOptions?: SceneOptions;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Adapts a VectoJS Scene into a Three.js CanvasTexture, allowing VectoJS
|
|
79
|
+
* components to be rendered in 3D space (e.g. on a plane, screen, or VR dashboard).
|
|
80
|
+
*/
|
|
81
|
+
declare class ThreeAdapter {
|
|
82
|
+
/** The Three.js CanvasTexture wrapping the offscreen Vecto canvas. */
|
|
83
|
+
texture: THREE.CanvasTexture;
|
|
84
|
+
/** The active VectoJS Scene instance. */
|
|
85
|
+
vectoScene: Scene;
|
|
86
|
+
/** The offscreen HTMLCanvasElement on which Vecto draws. */
|
|
87
|
+
canvas: HTMLCanvasElement;
|
|
88
|
+
/** A pre-built THREE.Mesh with PlaneGeometry and this texture for immediate use. */
|
|
89
|
+
mesh: THREE.Mesh;
|
|
90
|
+
/** Track hover states independently per pointerId for WebXR / Multi-Touch. */
|
|
91
|
+
private activePointers;
|
|
92
|
+
constructor(options: ThreeAdapterOptions);
|
|
93
|
+
/**
|
|
94
|
+
* Processes 3D Raycasting intersections and forwards pointer/scroll events.
|
|
95
|
+
* Call this from window/document event listeners passing the raycaster.
|
|
96
|
+
*
|
|
97
|
+
* @param raycaster Three.js Raycaster instance.
|
|
98
|
+
* @param type Pointer event type: 'pointerdown' | 'pointerup' | 'pointermove' | 'wheel' | 'click'.
|
|
99
|
+
* @param originalEvent Optional original DOM Event to forward scroll deltas or button states.
|
|
100
|
+
* @returns true if the ray intersected the VectoJS mesh; false otherwise.
|
|
101
|
+
*/
|
|
102
|
+
updateIntersection(raycaster: THREE.Raycaster, type: 'pointerdown' | 'pointerup' | 'pointermove' | 'wheel' | 'click', originalEvent?: Event): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Dispatches pointer events mapped from UV coordinates [0, 1] to VectoJS entities.
|
|
105
|
+
*/
|
|
106
|
+
private dispatchAtUv;
|
|
107
|
+
/**
|
|
108
|
+
* Routes events to the associated A11y DOM element, or Vecto's own event dispatch system.
|
|
109
|
+
*/
|
|
110
|
+
private dispatchEventToTarget;
|
|
111
|
+
private createDOMEvent;
|
|
112
|
+
private findEntityById;
|
|
113
|
+
/**
|
|
114
|
+
* Resizes the offscreen canvas and VectoScene dimensions.
|
|
115
|
+
*/
|
|
116
|
+
resize(width: number, height: number): void;
|
|
117
|
+
/**
|
|
118
|
+
* Disposes of Three.js textures, geometries, and VectoJS scenes to prevent memory leaks.
|
|
119
|
+
*/
|
|
120
|
+
dispose(): void;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { ThreeAdapter, type ThreeAdapterOptions, ThreeRenderer, WebGLGradient };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { IRenderer, Scene, SceneOptions } from '@vectojs/core';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
|
|
4
|
+
declare class WebGLGradient {
|
|
5
|
+
x0: number;
|
|
6
|
+
y0: number;
|
|
7
|
+
x1: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
colorStops: {
|
|
10
|
+
stop: number;
|
|
11
|
+
color: string;
|
|
12
|
+
}[];
|
|
13
|
+
type: string;
|
|
14
|
+
constructor(x0: number, y0: number, x1: number, y1: number, colorStops: {
|
|
15
|
+
stop: number;
|
|
16
|
+
color: string;
|
|
17
|
+
}[]);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* WebGL/Three.js implementation of {@link IRenderer}.
|
|
21
|
+
*
|
|
22
|
+
* Bridges VectoJS's 2D canvas API to Three.js for 3D hardware-accelerated rendering.
|
|
23
|
+
*/
|
|
24
|
+
declare class ThreeRenderer implements IRenderer {
|
|
25
|
+
scene: THREE.Scene;
|
|
26
|
+
camera: THREE.OrthographicCamera;
|
|
27
|
+
renderer: THREE.WebGLRenderer;
|
|
28
|
+
private width;
|
|
29
|
+
private height;
|
|
30
|
+
private matrix;
|
|
31
|
+
private stack;
|
|
32
|
+
private globalAlpha;
|
|
33
|
+
private alphaStack;
|
|
34
|
+
private currentPath;
|
|
35
|
+
private activeObjects;
|
|
36
|
+
private scissorStack;
|
|
37
|
+
constructor(canvas: HTMLCanvasElement);
|
|
38
|
+
resize(width: number, height: number): void;
|
|
39
|
+
clear(): void;
|
|
40
|
+
save(): void;
|
|
41
|
+
restore(): void;
|
|
42
|
+
translate(x: number, y: number): void;
|
|
43
|
+
scale(x: number, y: number): void;
|
|
44
|
+
rotate(angle: number): void;
|
|
45
|
+
setGlobalAlpha(alpha: number): void;
|
|
46
|
+
clip(x: number, y: number, width: number, height: number): void;
|
|
47
|
+
beginPath(): void;
|
|
48
|
+
moveTo(x: number, y: number): void;
|
|
49
|
+
lineTo(x: number, y: number): void;
|
|
50
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
51
|
+
closePath(): void;
|
|
52
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
53
|
+
roundRect(x: number, y: number, width: number, height: number, radii: number | number[]): void;
|
|
54
|
+
drawImage(source: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
|
|
55
|
+
fill(colorOrGradient: string | any): void;
|
|
56
|
+
private fillSolidShape;
|
|
57
|
+
stroke(colorOrGradient: string | any, lineWidth?: number): void;
|
|
58
|
+
fillText(text: string, x: number, y: number, font: string, color: string | any): void;
|
|
59
|
+
fillCircle(cx: number, cy: number, radius: number, color: string, alpha?: number): void;
|
|
60
|
+
flush(): void;
|
|
61
|
+
createLinearGradient(x0: number, y0: number, x1: number, y1: number, colorStops: {
|
|
62
|
+
stop: number;
|
|
63
|
+
color: string;
|
|
64
|
+
}[]): any;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface ThreeAdapterOptions {
|
|
68
|
+
/** Physical layout width of the 2D UI canvas. */
|
|
69
|
+
width: number;
|
|
70
|
+
/** Physical layout height of the 2D UI canvas. */
|
|
71
|
+
height: number;
|
|
72
|
+
/** Optional pre-existing canvas element. If omitted, a new canvas is created. */
|
|
73
|
+
canvas?: HTMLCanvasElement;
|
|
74
|
+
/** Options passed to the VectoScene constructor. */
|
|
75
|
+
sceneOptions?: SceneOptions;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Adapts a VectoJS Scene into a Three.js CanvasTexture, allowing VectoJS
|
|
79
|
+
* components to be rendered in 3D space (e.g. on a plane, screen, or VR dashboard).
|
|
80
|
+
*/
|
|
81
|
+
declare class ThreeAdapter {
|
|
82
|
+
/** The Three.js CanvasTexture wrapping the offscreen Vecto canvas. */
|
|
83
|
+
texture: THREE.CanvasTexture;
|
|
84
|
+
/** The active VectoJS Scene instance. */
|
|
85
|
+
vectoScene: Scene;
|
|
86
|
+
/** The offscreen HTMLCanvasElement on which Vecto draws. */
|
|
87
|
+
canvas: HTMLCanvasElement;
|
|
88
|
+
/** A pre-built THREE.Mesh with PlaneGeometry and this texture for immediate use. */
|
|
89
|
+
mesh: THREE.Mesh;
|
|
90
|
+
/** Track hover states independently per pointerId for WebXR / Multi-Touch. */
|
|
91
|
+
private activePointers;
|
|
92
|
+
constructor(options: ThreeAdapterOptions);
|
|
93
|
+
/**
|
|
94
|
+
* Processes 3D Raycasting intersections and forwards pointer/scroll events.
|
|
95
|
+
* Call this from window/document event listeners passing the raycaster.
|
|
96
|
+
*
|
|
97
|
+
* @param raycaster Three.js Raycaster instance.
|
|
98
|
+
* @param type Pointer event type: 'pointerdown' | 'pointerup' | 'pointermove' | 'wheel' | 'click'.
|
|
99
|
+
* @param originalEvent Optional original DOM Event to forward scroll deltas or button states.
|
|
100
|
+
* @returns true if the ray intersected the VectoJS mesh; false otherwise.
|
|
101
|
+
*/
|
|
102
|
+
updateIntersection(raycaster: THREE.Raycaster, type: 'pointerdown' | 'pointerup' | 'pointermove' | 'wheel' | 'click', originalEvent?: Event): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Dispatches pointer events mapped from UV coordinates [0, 1] to VectoJS entities.
|
|
105
|
+
*/
|
|
106
|
+
private dispatchAtUv;
|
|
107
|
+
/**
|
|
108
|
+
* Routes events to the associated A11y DOM element, or Vecto's own event dispatch system.
|
|
109
|
+
*/
|
|
110
|
+
private dispatchEventToTarget;
|
|
111
|
+
private createDOMEvent;
|
|
112
|
+
private findEntityById;
|
|
113
|
+
/**
|
|
114
|
+
* Resizes the offscreen canvas and VectoScene dimensions.
|
|
115
|
+
*/
|
|
116
|
+
resize(width: number, height: number): void;
|
|
117
|
+
/**
|
|
118
|
+
* Disposes of Three.js textures, geometries, and VectoJS scenes to prevent memory leaks.
|
|
119
|
+
*/
|
|
120
|
+
dispose(): void;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { ThreeAdapter, type ThreeAdapterOptions, ThreeRenderer, WebGLGradient };
|