@liveroom-tech/react-immersive 4.3.0 → 5.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 (46) hide show
  1. package/README.md +697 -83
  2. package/dist/ModelViewer-CbbJT85n.d.mts +448 -0
  3. package/dist/ModelViewer-DOexHkJC.d.ts +448 -0
  4. package/dist/binding-builder.css +1 -0
  5. package/dist/binding-builder.d.mts +6 -0
  6. package/dist/binding-builder.d.ts +6 -0
  7. package/dist/binding-builder.js +3694 -0
  8. package/dist/binding-builder.mjs +1 -0
  9. package/dist/chunk-7EW6JZ46.mjs +27 -0
  10. package/dist/chunk-BGYK4Y2Y.mjs +1 -0
  11. package/dist/chunk-MMO7KCYU.mjs +3 -0
  12. package/dist/chunk-NVY7N7CU.mjs +3 -0
  13. package/dist/chunk-SEESCGUS.mjs +1 -0
  14. package/dist/chunk-WFEYRUZC.mjs +1 -0
  15. package/dist/chunk-XTLSAYAQ.mjs +1 -0
  16. package/dist/hosted.css +1 -1
  17. package/dist/hosted.d.mts +33 -13
  18. package/dist/hosted.d.ts +33 -13
  19. package/dist/hosted.js +11 -8
  20. package/dist/hosted.mjs +1 -1
  21. package/dist/index.css +1 -1
  22. package/dist/index.d.mts +107 -83
  23. package/dist/index.d.ts +107 -83
  24. package/dist/index.js +11 -8
  25. package/dist/index.mjs +1 -1
  26. package/dist/modelInfo-CEmmvVCH.d.mts +17 -0
  27. package/dist/modelInfo-CEmmvVCH.d.ts +17 -0
  28. package/dist/{objectBinding-CBRYMYk6.d.ts → objectCatalog-5W8n5xNQ.d.mts} +55 -3
  29. package/dist/{objectBinding-CBRYMYk6.d.mts → objectCatalog-5W8n5xNQ.d.ts} +55 -3
  30. package/dist/publicProps-tJuWZgT3.d.mts +12 -0
  31. package/dist/publicProps-tJuWZgT3.d.ts +12 -0
  32. package/dist/simple-model-viewer.css +1 -0
  33. package/dist/simple-model-viewer.d.mts +38 -0
  34. package/dist/simple-model-viewer.d.ts +38 -0
  35. package/dist/simple-model-viewer.js +3666 -0
  36. package/dist/simple-model-viewer.mjs +1 -0
  37. package/dist/utils.d.mts +49 -3
  38. package/dist/utils.d.ts +49 -3
  39. package/dist/utils.js +1 -1
  40. package/dist/utils.mjs +1 -1
  41. package/package.json +28 -18
  42. package/dist/chunk-7X37KAPE.mjs +0 -1
  43. package/dist/chunk-GYB4BOVW.mjs +0 -26
  44. package/dist/chunk-K7DMBJBJ.mjs +0 -1
  45. package/dist/publicProps-BST1E8an.d.mts +0 -349
  46. package/dist/publicProps-Bv3_PCP0.d.ts +0 -349
@@ -1,349 +0,0 @@
1
- import { ComponentProps, ReactNode, MutableRefObject } from 'react';
2
- import { CameraControls } from '@react-three/drei';
3
- import { Object3D, WebGLRenderer, Scene, Camera, Box3, Material } from 'three';
4
- import * as react_jsx_runtime from 'react/jsx-runtime';
5
- import { XRStore } from '@react-three/xr';
6
- import { v as SceneConfig, f as ObjectBinding, V as ViewerCameraState, e as ObjectActionEvent, s as SceneAnnotationMarker } from './objectBinding-CBRYMYk6.js';
7
- import { Canvas } from '@react-three/fiber';
8
-
9
- type CanvasCamera = ComponentProps<typeof Canvas>["camera"];
10
-
11
- type RendererCapture = {
12
- gl: WebGLRenderer;
13
- scene: Scene;
14
- camera: Camera;
15
- invalidate: () => void;
16
- };
17
- type Props = {
18
- children: ReactNode;
19
- camera?: CanvasCamera;
20
- backgroundColor?: string;
21
- shadows?: boolean;
22
- sceneConfig?: SceneConfig;
23
- selectedObjectRef?: Object3D | null;
24
- hoveredObjectRef?: Object3D | null;
25
- highlightOnHover?: boolean;
26
- renderMode?: "always" | "demand";
27
- maxDpr?: number;
28
- xrStore?: XRStore | null;
29
- rendererCaptureRef?: MutableRefObject<RendererCapture | null>;
30
- preserveDrawingBuffer?: boolean;
31
- reduceGpuLoad?: boolean;
32
- };
33
- declare function Viewer({ children, camera, backgroundColor, shadows, sceneConfig, selectedObjectRef, hoveredObjectRef, highlightOnHover, renderMode, maxDpr, xrStore, rendererCaptureRef, preserveDrawingBuffer, reduceGpuLoad, }: Props): react_jsx_runtime.JSX.Element;
34
-
35
- type PerformanceProfile = "auto" | "high" | "low";
36
-
37
- type CameraLimits = {
38
- minDistance?: number;
39
- maxDistance?: number;
40
- minPolarAngle?: number;
41
- maxPolarAngle?: number;
42
- minAzimuthAngle?: number;
43
- maxAzimuthAngle?: number;
44
- panBoundary?: [min: [number, number, number], max: [number, number, number]];
45
- boundaryEnclosesCamera?: boolean;
46
- boundaryFriction?: number;
47
- };
48
- type CameraControllerType = "orbit" | "pointerLock";
49
-
50
- type GltfDecoderConfig = {
51
- dracoDecoderPath?: string | false;
52
- ktx2TranscoderPath?: string | false;
53
- meshopt?: boolean;
54
- };
55
-
56
- /** One entry of the object catalog the processor writes beside `tileset.json`. */
57
- type TileObjectCatalogEntry = {
58
- name: string;
59
- triangles: number;
60
- minimum: [number, number, number];
61
- maximum: [number, number, number];
62
- };
63
- type StreamingTilesModelProps = {
64
- url: string;
65
- rotation?: [number, number, number];
66
- errorTarget?: number;
67
- cacheSize?: number;
68
- /**
69
- * Ceiling on the geometry and texture the renderer keeps resident, in MB.
70
- * Reaching it does not degrade quality — it stops content being requested
71
- * entirely — so it is a limit to stay under, not one to aim at.
72
- */
73
- memoryBudgetMB?: number;
74
- /** Same decoder configuration the monolithic loader uses. */
75
- decoderConfig?: GltfDecoderConfig;
76
- /** Bindings keyed the same way as the monolithic viewer's. */
77
- objectBindings?: Record<string, ObjectBinding>;
78
- /** Live colour overrides from the editor's picker. */
79
- itemMaterials?: Record<string, {
80
- hex?: string;
81
- }>;
82
- /** Supplies the shading and renderer modes, as it does for the model path. */
83
- sceneConfig?: SceneConfig;
84
- selectedItem?: string | null;
85
- /** Matches the monolithic viewer: a binding, not a node name. */
86
- panelHoveredItem?: ObjectBinding | null;
87
- highlightOnHover?: boolean;
88
- onItemClick?: (binding: ObjectBinding) => void;
89
- onItemHover?: (binding: ObjectBinding | null) => void;
90
- /** Every bindable object in the model, available before any tile loads. */
91
- onObjectCatalog?: (objects: TileObjectCatalogEntry[]) => void;
92
- /**
93
- * The whole model's world-space extent, reported as soon as tileset.json is
94
- * parsed and long before any content is fetched. The viewer needs it to frame
95
- * the camera; see the reporting effect below for why waiting is not an option.
96
- */
97
- onTilesetBounds?: (box: Box3) => void;
98
- onModelLoaded?: (scene: Object3D) => void;
99
- onLoadError?: (error: unknown) => void;
100
- /**
101
- * One representative resident mesh per binding, for the transform gizmo and
102
- * for framing the camera. A streamed object has no single node — it exists
103
- * once per resolved level of detail, and those come and go — so this is
104
- * rebuilt as tiles arrive and are evicted rather than being written once.
105
- */
106
- nodeRefsOut?: React.MutableRefObject<Record<string, Object3D>>;
107
- onNodeRefsChange?: () => void;
108
- materialRefsOut?: React.MutableRefObject<Record<string, Material | Material[]>>;
109
- /** 0-1. Eased here, so the value can be driven straight from a slider. */
110
- explodeFactor?: number;
111
- suspendBindingTransforms?: boolean;
112
- };
113
-
114
- type ModelFormat = "glb" | "gltf" | "obj" | "fbx" | "usdz";
115
-
116
- type XRScaleMode = "normalized" | "real-world";
117
-
118
- type CinematicWaypoint = {
119
- position: [number, number, number];
120
- target: [number, number, number];
121
- azimuthAngle?: number;
122
- polarAngle?: number;
123
- segmentDuration?: number;
124
- };
125
- type CinematicConfig = {
126
- waypoints?: CinematicWaypoint[];
127
- duration?: number;
128
- loop?: boolean;
129
- autoPlay?: boolean;
130
- };
131
-
132
- type MouseControllerPosition = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'center' | 'center-bottom' | 'center-top';
133
-
134
- type CaptureImageOptions = {
135
- width?: number;
136
- height?: number;
137
- transparent?: boolean;
138
- };
139
-
140
- type ViewerCameraPreset = {
141
- position: [number, number, number];
142
- target: [number, number, number];
143
- fov?: number | null;
144
- zoom?: number;
145
- azimuthAngle?: number;
146
- polarAngle?: number;
147
- };
148
- type UseViewerCameraOptions = {
149
- /** Camera position applied once when each model becomes ready. */
150
- initialPosition?: [number, number, number];
151
- /** Orbit target applied once when each model becomes ready. */
152
- initialTarget?: [number, number, number];
153
- /** Whether the initial position/target should animate. Defaults to false. */
154
- initialTransition?: boolean;
155
- /** Named views that can be opened with goToPreset. */
156
- presets?: Record<string, ViewerCameraPreset>;
157
- };
158
- type HomeCameraState = {
159
- position: [number, number, number];
160
- target: [number, number, number];
161
- };
162
- type ViewerReadyState = {
163
- controls: CameraControls;
164
- scene: Object3D | null;
165
- objectBindings: Record<string, ObjectBinding>;
166
- nodeRefs: Record<string, Object3D>;
167
- homeCameraState: HomeCameraState | null;
168
- captureImage: (options?: CaptureImageOptions) => Promise<string>;
169
- invalidate: () => void;
170
- };
171
- type ViewerCameraProps = {
172
- cameraState: ViewerCameraState | null;
173
- cameraPresets: Record<string, ViewerCameraPreset>;
174
- resetView: () => Promise<boolean>;
175
- focusObject: (objectId: string) => Promise<boolean>;
176
- fitScene: () => Promise<boolean>;
177
- setCameraTarget: (target: [number, number, number], enableTransition?: boolean) => Promise<boolean>;
178
- setCameraState: (state: ViewerCameraState, enableTransition?: boolean) => Promise<boolean>;
179
- lookAt: (position: [number, number, number], target: [number, number, number], enableTransition?: boolean) => Promise<boolean>;
180
- orbitTo: (azimuthAngle: number, polarAngle: number, enableTransition?: boolean) => Promise<boolean>;
181
- dollyTo: (distance: number, enableTransition?: boolean) => Promise<boolean>;
182
- savePreset: (name: string) => ViewerCameraState | null;
183
- goToPreset: (name: string, enableTransition?: boolean) => Promise<boolean>;
184
- handleCameraChange: (camera: Camera, controls: CameraControls) => void;
185
- handleViewerReady: (viewer: ViewerReadyState) => void;
186
- };
187
- declare function useViewerCamera(options?: UseViewerCameraOptions): ViewerCameraProps;
188
-
189
- type AnimationClipInfo = {
190
- sourceName: string;
191
- duration: number;
192
- };
193
- type AnimationPlaybackState = {
194
- currentClip: string | null;
195
- isPlaying: boolean;
196
- speed: number;
197
- time: number;
198
- duration: number;
199
- };
200
- type AnimationControls = {
201
- clips: string[];
202
- clipDetails?: AnimationClipInfo[];
203
- play: (clipName: string) => void;
204
- pause: () => void;
205
- stop: () => void;
206
- setSpeed: (speed: number) => void;
207
- seek?: (time: number) => void;
208
- getState?: () => AnimationPlaybackState;
209
- subscribe?: (listener: (state: AnimationPlaybackState) => void) => () => void;
210
- };
211
- type ViewerAnimationsProps = {
212
- clips: string[];
213
- clipDetails: AnimationClipInfo[];
214
- currentClip: string | null;
215
- isPlaying: boolean;
216
- speed: number;
217
- time: number;
218
- duration: number;
219
- play: (clipName: string) => void;
220
- pause: () => void;
221
- stop: () => void;
222
- setSpeed: (speed: number) => void;
223
- seek: (time: number) => void;
224
- handleAnimationsReady: (controls: AnimationControls) => void;
225
- };
226
- declare function useViewerAnimations(): ViewerAnimationsProps;
227
-
228
- type ObjectTransformSpace = "local" | "world";
229
-
230
- type ViewerCamera = React.ComponentProps<typeof Viewer>["camera"];
231
- type AnnotationMarker = SceneAnnotationMarker & {
232
- markerId?: string;
233
- };
234
- type CustomObjectBindingDataPanelProps = {
235
- isOpen: boolean;
236
- selectedObject: ObjectBinding | null;
237
- currentAction: ObjectActionEvent | null;
238
- onClose: () => void;
239
- onAction: (event: ObjectActionEvent) => void;
240
- };
241
- type CustomSceneObjectsPanelProps = {
242
- objectBindings: Record<string, ObjectBinding>;
243
- onAction?: (event: ObjectActionEvent) => void;
244
- onFocus?: (binding: ObjectBinding) => void;
245
- onHover?: (binding: ObjectBinding | null) => void;
246
- };
247
- type ModelViewerProps = {
248
- modelUrl: string;
249
- /** Optional 3D Tiles manifest used instead of loading `modelUrl` monolithically. */
250
- tilesetUrl?: string | null;
251
- /** Screen-space error target for streamed 3D Tiles. Lower is sharper. */
252
- tilesErrorTarget?: number;
253
- /** Maximum number of parsed tiles retained by the client cache. */
254
- tilesCacheSize?: number;
255
- /**
256
- * Every bindable object in a streamed model, read from the catalog the
257
- * processor writes beside `tileset.json`. Reported once, before the tiles
258
- * that contain those objects have necessarily loaded.
259
- */
260
- onObjectCatalog?: (objects: TileObjectCatalogEntry[]) => void;
261
- /** Explicit format for extensionless or signed model URLs. */
262
- modelFormat?: ModelFormat;
263
- licenseKey: string;
264
- objectBindings: Record<string, ObjectBinding>;
265
- selectedObject?: ObjectBinding | null;
266
- panelHoveredObject?: ObjectBinding | null;
267
- onObjectBindingsChange?: (next: Record<string, ObjectBinding>) => void;
268
- onObjectSelect?: (binding: ObjectBinding | null) => void;
269
- onObjectHover?: (binding: ObjectBinding | null) => void;
270
- onModelLoaded?: (scene: Object3D) => void;
271
- onLoadError?: (error: unknown) => void;
272
- onProgress?: (event: ProgressEvent) => void;
273
- onCameraControllerChange?: (controller: CameraControllerType) => void;
274
- cameraControllerType?: CameraControllerType;
275
- onAction?: (event: ObjectActionEvent) => void;
276
- onHiddenObjectsChange?: (next: Record<string, boolean>) => void;
277
- onCameraChange?: (camera: Camera, controls: CameraControls) => void;
278
- onViewerReady?: (viewer: ViewerReadyState) => void;
279
- onTextureUpload?: (file: File, objectId: string) => Promise<string>;
280
- onAnimationsReady?: (controls: AnimationControls) => void;
281
- onAnnotationsChange?: (annotations: AnnotationMarker[]) => void;
282
- activeAnnotation?: AnnotationMarker | null;
283
- onActiveAnnotationChange?: (annotation: AnnotationMarker | null) => void;
284
- lights?: ReactNode;
285
- camera?: ViewerCamera;
286
- cameraLimits?: CameraLimits;
287
- backgroundColor?: string;
288
- shadows?: boolean;
289
- showObjectBindingDataPanel?: boolean;
290
- customObjectBindingDataPanel?: (props: CustomObjectBindingDataPanelProps) => ReactNode;
291
- customSceneObjectsPanel?: (props: CustomSceneObjectsPanelProps) => ReactNode;
292
- showSceneObjectsPanel?: boolean;
293
- showDownloadButton?: boolean;
294
- downloadFilename?: string;
295
- showResetButton?: boolean;
296
- showLoadingOverlay?: boolean;
297
- showMouseController?: boolean;
298
- mouseControllerPosition?: MouseControllerPosition;
299
- mouseControllerOpacity?: number;
300
- moveSensitivity?: number;
301
- zoomSensitivity?: number;
302
- sceneConfig?: SceneConfig;
303
- disableZoom?: boolean;
304
- zoomOnSelected?: boolean;
305
- highlightOnHover?: boolean;
306
- onAutoFit?: () => Promise<boolean>;
307
- enableCameraControls?: boolean;
308
- moveModeEnabled?: boolean;
309
- /** Aligns PivotControls to the scene or to the selected object. */
310
- objectTransformSpace?: ObjectTransformSpace;
311
- /** Enables canvas-focused camera shortcuts. Disabled by default. */
312
- enableKeyboardNavigation?: boolean;
313
- refitOnResize?: boolean;
314
- renderMode?: "always" | "demand";
315
- maxDpr?: number;
316
- preserveDrawingBuffer?: boolean;
317
- performanceProfile?: PerformanceProfile;
318
- dracoDecoderPath?: string | false;
319
- ktx2TranscoderPath?: string | false;
320
- meshopt?: boolean;
321
- showMeasureTools?: boolean;
322
- showUvCheckerButton?: boolean;
323
- showExplodeControls?: boolean;
324
- cinematic?: boolean | CinematicConfig;
325
- measurementUnit?: string;
326
- enableXR?: boolean;
327
- usdzUrl?: string;
328
- arScaleMode?: XRScaleMode;
329
- mobileHandoffUrl?: string;
330
- showAnnotationNavigation?: boolean;
331
- showAnnotationOnHover?: boolean;
332
- onSceneConfigChange?: (config: SceneConfig) => void;
333
- showViewGizmo?: boolean;
334
- autoRotate?: boolean;
335
- autoRotateSpeed?: number;
336
- };
337
-
338
- /** Props of `BindingBuilder`. */
339
- type BindingBuilderProps = {
340
- licenseKey: string;
341
- /** Directory containing the DRACO decoder files, or false. */
342
- dracoDecoderPath?: string | false;
343
- /** Directory containing the Basis/KTX2 transcoder files, or false. */
344
- ktx2TranscoderPath?: string | false;
345
- /** Enable the bundled Meshopt decoder. Defaults to true. */
346
- meshopt?: boolean;
347
- };
348
-
349
- export { type AnimationClipInfo as A, type BindingBuilderProps as B, type CaptureImageOptions as C, type HomeCameraState as H, type ModelFormat as M, type ObjectTransformSpace as O, type StreamingTilesModelProps as S, type TileObjectCatalogEntry as T, type UseViewerCameraOptions as U, type ViewerAnimationsProps as V, type XRScaleMode as X, type AnimationControls as a, type AnimationPlaybackState as b, type CinematicConfig as c, type CinematicWaypoint as d, type CustomObjectBindingDataPanelProps as e, type CustomSceneObjectsPanelProps as f, type ModelViewerProps as g, type ViewerCameraPreset as h, type ViewerCameraProps as i, type ViewerReadyState as j, useViewerCamera as k, useViewerAnimations as u };