@splnlss/3d-story-viewer 0.8.4 → 0.8.5
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/README.md +45 -1
- package/build/{main-DZ2oJmQ9.js → main-DCLbtFn7.js} +1234 -471
- package/build/main-DXC7nIw_.cjs +1 -0
- package/build/spark.module-BPiIta4L.cjs +1 -0
- package/build/{spark.module-OeW1hboi.js → spark.module-SbwV3up9.js} +235 -13
- package/build/types/src/main.d.ts +11 -1
- package/build/types/src/viewer/ContentLayer/ContentLayerRegistry.d.ts +31 -0
- package/build/types/src/viewer/ContentLayer/GeojsonLayer.d.ts +1 -0
- package/build/types/src/viewer/ContentLayer/MeshLayer.d.ts +4 -1
- package/build/types/src/viewer/ContentLayer/TilesLayer.d.ts +1 -0
- package/build/types/src/viewer/ContentLayer/gaussianSplatUtils.d.ts +6 -0
- package/build/types/src/viewer/DesktopLookControls.d.ts +22 -0
- package/build/types/src/viewer/GlobeManager.d.ts +3 -0
- package/build/types/src/viewer/SplatDestinationPrefetch.d.ts +18 -0
- package/build/types/src/viewer/WebXRSession.d.ts +2 -2
- package/build/types/src/viewer/XRDiagnosticsPanel.d.ts +14 -0
- package/build/types/src/viewer/XRRenderBridge.d.ts +3 -4
- package/build/types/src/viewer/index.d.ts +135 -7
- package/build/types/src/viewer/loadingDiagnostics.d.ts +10 -0
- package/build/types/src/workers/WorkerPool.d.ts +9 -3
- package/build/viewer.cjs +1 -1
- package/build/viewer.js +1 -1
- package/package.json +1 -1
- package/build/main-CNVle6K1.cjs +0 -1
- package/build/spark.module-HtQy_Ka9.cjs +0 -1
|
@@ -6,6 +6,49 @@ export type ViewerCoords = {
|
|
|
6
6
|
yaw?: number;
|
|
7
7
|
roll?: number;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* WGS84 degrees and ellipsoidal metres.
|
|
11
|
+
*/
|
|
12
|
+
export type DesktopGeodeticPosition = {
|
|
13
|
+
longitude: number;
|
|
14
|
+
latitude: number;
|
|
15
|
+
altitude: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* WGS84 degrees, ellipsoidal metres, and Euler degrees.
|
|
19
|
+
*/
|
|
20
|
+
export type DesktopCameraFramePose = {
|
|
21
|
+
lon: number;
|
|
22
|
+
lat: number;
|
|
23
|
+
alt: number;
|
|
24
|
+
pitch: number;
|
|
25
|
+
yaw: number;
|
|
26
|
+
roll: number;
|
|
27
|
+
};
|
|
28
|
+
export type DesktopMovementState = {
|
|
29
|
+
FRONT: boolean;
|
|
30
|
+
BACK: boolean;
|
|
31
|
+
LEFT: boolean;
|
|
32
|
+
RIGHT: boolean;
|
|
33
|
+
UP: boolean;
|
|
34
|
+
DOWN: boolean;
|
|
35
|
+
BOOST: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type DesktopNavigationFrame = {
|
|
38
|
+
timeMs: number;
|
|
39
|
+
deltaSeconds: number;
|
|
40
|
+
pose: DesktopCameraFramePose;
|
|
41
|
+
movement: Readonly<DesktopMovementState>;
|
|
42
|
+
};
|
|
43
|
+
export type DesktopNavigationFrameResult = {
|
|
44
|
+
position: DesktopGeodeticPosition;
|
|
45
|
+
pitch?: number;
|
|
46
|
+
};
|
|
47
|
+
export type DesktopNavigationController = {
|
|
48
|
+
update(frame: DesktopNavigationFrame): DesktopNavigationFrameResult;
|
|
49
|
+
canLook?(): boolean;
|
|
50
|
+
interrupt?(reason: string): void;
|
|
51
|
+
};
|
|
9
52
|
/**
|
|
10
53
|
* @typedef {Object} ViewerCoords
|
|
11
54
|
* @property {number} [lon]
|
|
@@ -15,6 +58,12 @@ export type ViewerCoords = {
|
|
|
15
58
|
* @property {number} [yaw]
|
|
16
59
|
* @property {number} [roll]
|
|
17
60
|
*/
|
|
61
|
+
/** @typedef {{longitude:number, latitude:number, altitude:number}} DesktopGeodeticPosition WGS84 degrees and ellipsoidal metres. */
|
|
62
|
+
/** @typedef {{lon:number, lat:number, alt:number, pitch:number, yaw:number, roll:number}} DesktopCameraFramePose WGS84 degrees, ellipsoidal metres, and Euler degrees. */
|
|
63
|
+
/** @typedef {{FRONT:boolean, BACK:boolean, LEFT:boolean, RIGHT:boolean, UP:boolean, DOWN:boolean, BOOST:boolean}} DesktopMovementState */
|
|
64
|
+
/** @typedef {{timeMs:number, deltaSeconds:number, pose:DesktopCameraFramePose, movement:Readonly<DesktopMovementState>}} DesktopNavigationFrame */
|
|
65
|
+
/** @typedef {{position:DesktopGeodeticPosition, pitch?:number}} DesktopNavigationFrameResult */
|
|
66
|
+
/** @typedef {{update(frame:DesktopNavigationFrame):DesktopNavigationFrameResult, canLook?():boolean, interrupt?(reason:string):void}} DesktopNavigationController */
|
|
18
67
|
declare class Viewer extends EventDispatcher {
|
|
19
68
|
/**
|
|
20
69
|
* @param {HTMLElement | null} container
|
|
@@ -25,6 +74,11 @@ declare class Viewer extends EventDispatcher {
|
|
|
25
74
|
type: string;
|
|
26
75
|
disposed: boolean;
|
|
27
76
|
xrSession: WebXRSession;
|
|
77
|
+
xrDiagnosticsRows: string[];
|
|
78
|
+
loadingDiagnosticsEnabled: boolean;
|
|
79
|
+
diagnosticFps: number;
|
|
80
|
+
diagnosticWindowStart: any;
|
|
81
|
+
diagnosticFrameCount: number;
|
|
28
82
|
sparkRenderer: any;
|
|
29
83
|
transparentBackground: boolean;
|
|
30
84
|
state: StateDispatcher;
|
|
@@ -37,11 +91,24 @@ declare class Viewer extends EventDispatcher {
|
|
|
37
91
|
cameraUp: Vector3;
|
|
38
92
|
scene: Scene<import("three").Object3DEventMap>;
|
|
39
93
|
content: Group<import("three").Object3DEventMap>;
|
|
94
|
+
contentLayerRegistry: ContentLayerRegistry;
|
|
95
|
+
splatDestinationPrefetch: SplatDestinationPrefetch;
|
|
40
96
|
topLayerIndex: number;
|
|
41
97
|
enabledLayers: any[];
|
|
42
98
|
labels: Map<any, any>;
|
|
43
99
|
features: Map<any, any>;
|
|
44
100
|
globeControls: GlobeControls;
|
|
101
|
+
_viewModeState: {
|
|
102
|
+
version: number;
|
|
103
|
+
confirmedRotationSpeed: number;
|
|
104
|
+
};
|
|
105
|
+
/** @type {DesktopNavigationController | null} */
|
|
106
|
+
desktopNavigationController: DesktopNavigationController | null;
|
|
107
|
+
_desktopControlsBefore: {
|
|
108
|
+
enabled: boolean;
|
|
109
|
+
rotationSpeed: number;
|
|
110
|
+
};
|
|
111
|
+
desktopLookControls: DesktopLookControls;
|
|
45
112
|
_onGlobeControlsStart: () => void;
|
|
46
113
|
transitionControls: TransitionControls;
|
|
47
114
|
tileDecoders: TileDecoders;
|
|
@@ -79,6 +146,8 @@ declare class Viewer extends EventDispatcher {
|
|
|
79
146
|
_onKeyDown: (event: any) => void;
|
|
80
147
|
_onKeyUp: (event: any) => void;
|
|
81
148
|
_onResize: (event: any) => void;
|
|
149
|
+
_onWindowBlur: () => void;
|
|
150
|
+
_onVisibilityChange: () => void;
|
|
82
151
|
sky: Sky;
|
|
83
152
|
pointerRaycaster: Raycaster;
|
|
84
153
|
_onPointerMove: (event: any) => void;
|
|
@@ -158,7 +227,16 @@ declare class Viewer extends EventDispatcher {
|
|
|
158
227
|
setXRNavigationFade(opacity: number): void;
|
|
159
228
|
set keysEnabled(enabled: boolean);
|
|
160
229
|
get keysEnabled(): boolean;
|
|
230
|
+
_clearHeldKeys(): void;
|
|
161
231
|
updateMovementState(): void;
|
|
232
|
+
/** Install one desktop camera owner. A null controller restores the prior globe controls. @param {DesktopNavigationController | null} controller */
|
|
233
|
+
setDesktopNavigationController(controller: DesktopNavigationController | null): void;
|
|
234
|
+
/** Rotate Walk view around its eye; pointer delta is CSS pixels. */
|
|
235
|
+
_applyDesktopLook(dx: any, dy: any): void;
|
|
236
|
+
/** Turn Walk toward north without moving its eye or leaving Walk. */
|
|
237
|
+
turnDesktopNorth(): boolean;
|
|
238
|
+
/** Invoke the desktop controller after globe input and before tiles/content/render. Invalid results leave the previous eye intact. */
|
|
239
|
+
_applyDesktopNavigationFrame(timeMs: any, deltaSeconds: any): void;
|
|
162
240
|
/**
|
|
163
241
|
* @param {number} lon
|
|
164
242
|
* @param {number} lat
|
|
@@ -180,7 +258,6 @@ declare class Viewer extends EventDispatcher {
|
|
|
180
258
|
setBackgroundColor(color: any): void;
|
|
181
259
|
appendTo(container: any): void;
|
|
182
260
|
container: any;
|
|
183
|
-
stats: Stats;
|
|
184
261
|
updateCameraDirections(): void;
|
|
185
262
|
setAnimate(bool?: boolean): void;
|
|
186
263
|
/** @param {Event} [event] */
|
|
@@ -190,8 +267,19 @@ declare class Viewer extends EventDispatcher {
|
|
|
190
267
|
ensureSparkRenderer(): Promise<any>;
|
|
191
268
|
disposeSparkRenderer(): void;
|
|
192
269
|
sparkRendererGeneration: any;
|
|
270
|
+
/** @private @param {import('../main.js').ContentLayerDefinition} sourceLayerData */
|
|
271
|
+
private prepareContentLayerDefinition;
|
|
272
|
+
/** @private @param {import('../main.js').ContentLayerDefinition} layerData */
|
|
273
|
+
private createContentLayer;
|
|
274
|
+
/** @private */
|
|
275
|
+
private reportContentLayerError;
|
|
276
|
+
/** @private */
|
|
277
|
+
private refreshContentLayerDepth;
|
|
193
278
|
/** @param {import('../main.js').ContentLayerDefinition[]} content */
|
|
194
279
|
defineContentLayers(content?: import("../main.js").ContentLayerDefinition[]): void;
|
|
280
|
+
/** Replace, add, or remove one content layer without rebuilding its siblings. */
|
|
281
|
+
/** @param {string} id @param {import('../main.js').ContentLayerDefinition | null} definition */
|
|
282
|
+
replaceContentLayer(id: string, definition: import("../main.js").ContentLayerDefinition | null): void;
|
|
195
283
|
enableContentLayers(labels?: any[]): void;
|
|
196
284
|
setTimeFrame(start: any, end: any): void;
|
|
197
285
|
timeFrameStart: Date;
|
|
@@ -240,8 +328,9 @@ declare class Viewer extends EventDispatcher {
|
|
|
240
328
|
* @param {number} [yaw]
|
|
241
329
|
* @param {number} [roll]
|
|
242
330
|
* @param {number} [duration]
|
|
331
|
+
* @returns {Promise<boolean>} Whether the requested transition completed.
|
|
243
332
|
*/
|
|
244
|
-
alignCamera(lon: number, lat: number, alt: number, pitch?: number, yaw?: number, roll?: number, duration?: number): Promise<
|
|
333
|
+
alignCamera(lon: number, lat: number, alt: number, pitch?: number, yaw?: number, roll?: number, duration?: number): Promise<boolean>;
|
|
245
334
|
/**
|
|
246
335
|
* @param {number} lon
|
|
247
336
|
* @param {number} lat
|
|
@@ -249,12 +338,13 @@ declare class Viewer extends EventDispatcher {
|
|
|
249
338
|
* @param {number} [distance]
|
|
250
339
|
* @param {number} [pitch]
|
|
251
340
|
* @param {number} [duration]
|
|
341
|
+
* @returns {Promise<boolean>} Whether the requested transition completed.
|
|
252
342
|
*/
|
|
253
|
-
focusCamera(lon: number, lat: number, alt: number, distance?: number, pitch?: number, duration?: number): Promise<
|
|
343
|
+
focusCamera(lon: number, lat: number, alt: number, distance?: number, pitch?: number, duration?: number): Promise<boolean>;
|
|
254
344
|
/**
|
|
255
345
|
* Temporarily load Google 3D tiles around a WGS84 destination without changing the live view.
|
|
256
346
|
* Position and altitude use degrees and WGS84 ellipsoidal metres; rotation uses degrees.
|
|
257
|
-
* @param {{longitude:number, latitude:number, altitude:number, pitch:number, yaw:number, roll:number, resolutionPixels:128|256} | null} target
|
|
347
|
+
* @param {{longitude:number, latitude:number, altitude:number, pitch:number, yaw:number, roll:number, resolutionPixels:128|256, timeoutMs?:number} | null} target
|
|
258
348
|
*/
|
|
259
349
|
setDestinationTilePrefetch(target: {
|
|
260
350
|
longitude: number;
|
|
@@ -264,14 +354,50 @@ declare class Viewer extends EventDispatcher {
|
|
|
264
354
|
yaw: number;
|
|
265
355
|
roll: number;
|
|
266
356
|
resolutionPixels: 128 | 256;
|
|
357
|
+
timeoutMs?: number;
|
|
267
358
|
} | null): void;
|
|
359
|
+
/**
|
|
360
|
+
* Warm only active RAD layers at a WGS84 destination. This never changes the live camera.
|
|
361
|
+
* @param {{longitude:number, latitude:number, altitude:number, pitch:number, yaw:number, roll:number, layerIds:string[], mode:'desktop'|'xr', timeoutMs:number} | null} target
|
|
362
|
+
* @param {'cancel'|'arrival'} [clearReason]
|
|
363
|
+
*/
|
|
364
|
+
setDestinationSplatPrefetch(target: {
|
|
365
|
+
longitude: number;
|
|
366
|
+
latitude: number;
|
|
367
|
+
altitude: number;
|
|
368
|
+
pitch: number;
|
|
369
|
+
yaw: number;
|
|
370
|
+
roll: number;
|
|
371
|
+
layerIds: string[];
|
|
372
|
+
mode: "desktop" | "xr";
|
|
373
|
+
timeoutMs: number;
|
|
374
|
+
} | null, clearReason?: "cancel" | "arrival"): void;
|
|
375
|
+
/** Optional viewer-owned counters, sampled by the app only while its stats setting is on.
|
|
376
|
+
* @param {boolean} enabled
|
|
377
|
+
*/
|
|
378
|
+
setLoadingDiagnosticsEnabled(enabled: boolean): void;
|
|
379
|
+
getLoadingDiagnostics(): {
|
|
380
|
+
fps: number;
|
|
381
|
+
tilesVisible: number;
|
|
382
|
+
tilesPending: number;
|
|
383
|
+
tilesFailed: number;
|
|
384
|
+
radPages: number;
|
|
385
|
+
radPending: any;
|
|
386
|
+
gpuTextures: number;
|
|
387
|
+
};
|
|
388
|
+
/** Short numeric rows in a small lower-right panel for both XR eyes.
|
|
389
|
+
* @param {string[] | null} rows
|
|
390
|
+
*/
|
|
391
|
+
setXRDiagnosticsPanel(rows: string[] | null): void;
|
|
268
392
|
/**
|
|
269
393
|
* @param {number} [pitch]
|
|
270
394
|
* @param {number} [yaw]
|
|
271
395
|
* @param {number} [duration]
|
|
396
|
+
* @returns {Promise<boolean>} Whether the requested transition completed.
|
|
272
397
|
*/
|
|
273
|
-
angleCamera(pitch?: number, yaw?: number, duration?: number): Promise<
|
|
274
|
-
|
|
398
|
+
angleCamera(pitch?: number, yaw?: number, duration?: number): Promise<boolean>;
|
|
399
|
+
/** @param {'2d' | '3d'} [mode] @returns {Promise<boolean>} Whether the camera orientation transition completed. */
|
|
400
|
+
setViewMode(mode?: "2d" | "3d"): Promise<boolean>;
|
|
275
401
|
exportScene(): void;
|
|
276
402
|
saveScreenshot(name?: string): void;
|
|
277
403
|
dispose(): void;
|
|
@@ -297,11 +423,13 @@ import { PerspectiveCamera } from 'three';
|
|
|
297
423
|
import { Vector3 } from 'three';
|
|
298
424
|
import { Scene } from 'three';
|
|
299
425
|
import { Group } from 'three';
|
|
426
|
+
import { ContentLayerRegistry } from './ContentLayer/ContentLayerRegistry.js';
|
|
427
|
+
import { SplatDestinationPrefetch } from './SplatDestinationPrefetch.js';
|
|
300
428
|
import { GlobeControls } from './GlobeControls';
|
|
429
|
+
import { DesktopLookControls } from './DesktopLookControls.js';
|
|
301
430
|
import { TransitionControls } from './TransitionControls';
|
|
302
431
|
import { TileDecoders } from './TileDecoders.js';
|
|
303
432
|
import { GlobeManager } from './GlobeManager';
|
|
304
433
|
import { Sky } from './Sky';
|
|
305
434
|
import { Raycaster } from 'three';
|
|
306
|
-
import Stats from 'stats.js';
|
|
307
435
|
export { Viewer as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Counts are viewer-owned snapshots, not a percentage or total device memory. */
|
|
2
|
+
export function readLoadingDiagnostics(viewer: any): {
|
|
3
|
+
fps: number;
|
|
4
|
+
tilesVisible: number;
|
|
5
|
+
tilesPending: number;
|
|
6
|
+
tilesFailed: number;
|
|
7
|
+
radPages: number;
|
|
8
|
+
radPending: any;
|
|
9
|
+
gpuTextures: number;
|
|
10
|
+
};
|
|
@@ -3,14 +3,20 @@ export class WorkerPool {
|
|
|
3
3
|
limit: number;
|
|
4
4
|
queue: any[];
|
|
5
5
|
workers: any[];
|
|
6
|
-
|
|
6
|
+
active: any[];
|
|
7
7
|
workerStatus: number;
|
|
8
8
|
workerCreator: any;
|
|
9
|
+
disposed: boolean;
|
|
9
10
|
initWorker(workerId: any): void;
|
|
10
11
|
getIdleWorker(): number;
|
|
11
|
-
|
|
12
|
+
finishJob(workerId: any, job: any): boolean;
|
|
13
|
+
onMessage(workerId: any, worker: any, event: any): void;
|
|
14
|
+
onError(workerId: any, worker: any, event: any): void;
|
|
15
|
+
cancelJob(job: any): void;
|
|
16
|
+
startJob(workerId: any, job: any): void;
|
|
17
|
+
drain(): void;
|
|
12
18
|
setWorkerCreator(workerCreator: any): void;
|
|
13
19
|
setWorkerLimit(limit: any): void;
|
|
14
|
-
postMessage(msg: any, transfer: any): Promise<any>;
|
|
20
|
+
postMessage(msg: any, transfer: any, { signal }?: {}): Promise<any>;
|
|
15
21
|
dispose(): void;
|
|
16
22
|
}
|
package/build/viewer.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-DXC7nIw_.cjs"),t=require("./index-XZNzHig1.cjs");exports.Viewer=e.Viewer,exports.ViewerEvents=e.ViewerEvents,exports.computeElevation=t.computeElevation;
|
package/build/viewer.js
CHANGED