@nebula-spatial/viewer 0.1.0 → 0.2.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/CHANGELOG.md +15 -0
- package/README.md +63 -29
- package/dist/assets/geo-prepare.worker-ClQZBxyx.js +1 -0
- package/dist/cad/types.d.ts +254 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +15466 -289
- package/dist/types.d.ts +73 -14
- package/package.json +8 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
import type { Box3, ColorRepresentation, Object3D, Vector3 } from 'three';
|
|
2
|
+
import type { CadViewerCapability, CameraStateStore, ViewerUiOptions } from './cad/types';
|
|
3
|
+
export type { CadBlockModel, CadDocumentHandle, CadFontResolver, CadResolvedTextFont, CadHudModel, CadInspectorModel, CadLayerModel, CadLoadSource, CadOpenOptions, CadTextDetails, CadTextSelection, CadTextSelectionId, CadViewerCapability, ResolveTextFont, CadViewerEventMap, CameraStateStore, ViewerUiOptions, ViewerUiParts, ViewerUiPreset, ViewerUiTheme, } from './cad/types';
|
|
2
4
|
export type ViewerViewMode = '2d' | '3d';
|
|
5
|
+
export interface ViewerDocumentRect {
|
|
6
|
+
readonly minX: number;
|
|
7
|
+
readonly minY: number;
|
|
8
|
+
readonly maxX: number;
|
|
9
|
+
readonly maxY: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ViewerOrthographicSnapshot {
|
|
12
|
+
readonly left: number;
|
|
13
|
+
readonly right: number;
|
|
14
|
+
readonly top: number;
|
|
15
|
+
readonly bottom: number;
|
|
16
|
+
readonly zoom: number;
|
|
17
|
+
readonly positionX: number;
|
|
18
|
+
readonly positionY: number;
|
|
19
|
+
readonly targetX: number;
|
|
20
|
+
readonly targetY: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ViewerOrbitSnapshot {
|
|
23
|
+
readonly targetX: number;
|
|
24
|
+
readonly targetY: number;
|
|
25
|
+
readonly targetZ: number;
|
|
26
|
+
readonly distance: number;
|
|
27
|
+
readonly yaw: number;
|
|
28
|
+
readonly pitch: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ViewerCameraSnapshot {
|
|
31
|
+
readonly schemaVersion: number;
|
|
32
|
+
readonly viewMode: ViewerViewMode;
|
|
33
|
+
readonly orthographic?: ViewerOrthographicSnapshot;
|
|
34
|
+
readonly orbit?: ViewerOrbitSnapshot;
|
|
35
|
+
}
|
|
3
36
|
export interface ViewerOptions {
|
|
4
37
|
viewport: HTMLElement;
|
|
5
38
|
canvas: HTMLCanvasElement;
|
|
@@ -10,6 +43,10 @@ export interface ViewerOptions {
|
|
|
10
43
|
initialViewMode?: ViewerViewMode;
|
|
11
44
|
autoSelectOnPick?: boolean;
|
|
12
45
|
pointerPick?: boolean;
|
|
46
|
+
cameraStateStore?: CameraStateStore | false;
|
|
47
|
+
/** Max delay for merged viewport demands while the interaction is active. Default 160ms. */
|
|
48
|
+
viewportDemandCoalesceMs?: number;
|
|
49
|
+
ui?: ViewerUiOptions;
|
|
13
50
|
}
|
|
14
51
|
export interface ViewerFitViewOptions {
|
|
15
52
|
padding?: number;
|
|
@@ -31,20 +68,24 @@ export interface ViewerPickResult {
|
|
|
31
68
|
export interface ViewerHighlightOptions {
|
|
32
69
|
color?: ColorRepresentation;
|
|
33
70
|
}
|
|
71
|
+
export interface ViewerRenderStats {
|
|
72
|
+
readonly drawCalls: number;
|
|
73
|
+
readonly submittedVertexRefs: number;
|
|
74
|
+
readonly fps: number;
|
|
75
|
+
}
|
|
76
|
+
export interface ViewerPointerEvent {
|
|
77
|
+
clientX: number;
|
|
78
|
+
clientY: number;
|
|
79
|
+
buttons: number;
|
|
80
|
+
shiftKey: boolean;
|
|
81
|
+
ctrlKey: boolean;
|
|
82
|
+
metaKey: boolean;
|
|
83
|
+
}
|
|
34
84
|
export interface ViewerEventMap {
|
|
35
|
-
'pointer-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
ctrlKey: boolean;
|
|
40
|
-
metaKey: boolean;
|
|
41
|
-
};
|
|
42
|
-
pick: {
|
|
43
|
-
clientX: number;
|
|
44
|
-
clientY: number;
|
|
45
|
-
shiftKey: boolean;
|
|
46
|
-
ctrlKey: boolean;
|
|
47
|
-
metaKey: boolean;
|
|
85
|
+
'pointer-move': ViewerPointerEvent;
|
|
86
|
+
'pointer-leave': ViewerPointerEvent;
|
|
87
|
+
'pointer-click': ViewerPointerEvent;
|
|
88
|
+
pick: ViewerPointerEvent & {
|
|
48
89
|
result: ViewerPickResult | null;
|
|
49
90
|
};
|
|
50
91
|
'selection-change': {
|
|
@@ -59,6 +100,21 @@ export interface ViewerEventMap {
|
|
|
59
100
|
resize: {
|
|
60
101
|
resized: boolean;
|
|
61
102
|
};
|
|
103
|
+
'viewport-change': {
|
|
104
|
+
viewportWidthPx: number;
|
|
105
|
+
viewportHeightPx: number;
|
|
106
|
+
worldUnitsPerPixel: number;
|
|
107
|
+
interaction: 'active' | 'idle';
|
|
108
|
+
};
|
|
109
|
+
'interaction-change': {
|
|
110
|
+
interaction: 'active' | 'idle';
|
|
111
|
+
};
|
|
112
|
+
'content-change': {
|
|
113
|
+
source: 'object' | 'cad';
|
|
114
|
+
};
|
|
115
|
+
'camera-change': {
|
|
116
|
+
viewMode: ViewerViewMode;
|
|
117
|
+
};
|
|
62
118
|
}
|
|
63
119
|
export interface Viewer {
|
|
64
120
|
readonly viewport: HTMLElement;
|
|
@@ -67,10 +123,13 @@ export interface Viewer {
|
|
|
67
123
|
readonly selectedObject: Object3D | null;
|
|
68
124
|
readonly highlightedObject: Object3D | null;
|
|
69
125
|
readonly isDisposed: boolean;
|
|
126
|
+
readonly cad: CadViewerCapability;
|
|
70
127
|
addObject(object: Object3D): void;
|
|
71
128
|
removeObject(object: Object3D): boolean;
|
|
72
129
|
setVisible(object: Object3D, visible: boolean): void;
|
|
73
|
-
setViewMode(mode: ViewerViewMode
|
|
130
|
+
setViewMode(mode: ViewerViewMode, options?: {
|
|
131
|
+
preserveOrbit?: boolean;
|
|
132
|
+
}): void;
|
|
74
133
|
fitView(target?: Object3D | Box3, options?: ViewerFitViewOptions): boolean;
|
|
75
134
|
screenToWorldOnPlane(clientX: number, clientY: number, planeZ?: number): Vector3 | null;
|
|
76
135
|
pick(clientX: number, clientY: number, options?: ViewerPickOptions): ViewerPickResult | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nebula-spatial/viewer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Read-only Three.js viewer facade",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"engines": {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
12
|
"README.md",
|
|
13
|
+
"CHANGELOG.md",
|
|
13
14
|
"package.json"
|
|
14
15
|
],
|
|
15
16
|
"main": "./dist/index.js",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"scripts": {
|
|
27
28
|
"build": "npm run check:boundary && npm run typecheck && npm run build:bundle && npm run build:types && npm run check:dist",
|
|
28
29
|
"build:bundle": "vite build --config vite.config.ts",
|
|
29
|
-
"build:types": "tsc --project tsconfig.build.json",
|
|
30
|
+
"build:types": "tsc --project tsconfig.build.json && node scripts/prune-dist-types.mjs",
|
|
30
31
|
"check:boundary": "node scripts/check-boundary.mjs",
|
|
31
32
|
"check:dist": "node scripts/check-dist.mjs",
|
|
32
33
|
"typecheck": "tsc --project tsconfig.json --noEmit",
|
|
@@ -34,14 +35,19 @@
|
|
|
34
35
|
"pack:dry": "npm pack --dry-run",
|
|
35
36
|
"prepack": "npm run build"
|
|
36
37
|
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@nebula-spatial/cad-loader": "^0.2.0"
|
|
40
|
+
},
|
|
37
41
|
"peerDependencies": {
|
|
38
42
|
"three": "0.182.0"
|
|
39
43
|
},
|
|
40
44
|
"devDependencies": {
|
|
41
45
|
"@types/node": "^25.6.0",
|
|
46
|
+
"@types/jsdom": "^27.0.0",
|
|
42
47
|
"@types/three": "0.182.0",
|
|
43
48
|
"three": "0.182.0",
|
|
44
49
|
"typescript": "^5.6.3",
|
|
50
|
+
"jsdom": "^29.0.2",
|
|
45
51
|
"vite": "^5.4.10",
|
|
46
52
|
"vitest": "^2.1.8"
|
|
47
53
|
}
|