@thinkersteps_labs/3d-viewer-react-native 0.0.0-stage → 2.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 (66) hide show
  1. package/dist/Viewer.d.ts +5 -0
  2. package/dist/Viewer.d.ts.map +1 -0
  3. package/dist/Viewer.js +157 -0
  4. package/dist/Viewer.js.map +1 -0
  5. package/dist/bridge/ar-launcher.d.ts +6 -0
  6. package/dist/bridge/ar-launcher.d.ts.map +1 -0
  7. package/dist/bridge/ar-launcher.js +18 -0
  8. package/dist/bridge/ar-launcher.js.map +1 -0
  9. package/dist/bridge/runtime-bundle.d.ts +2 -0
  10. package/dist/bridge/runtime-bundle.d.ts.map +1 -0
  11. package/dist/bridge/runtime-bundle.js +3 -0
  12. package/dist/bridge/runtime-bundle.js.map +1 -0
  13. package/dist/bridge/runtime-entry.d.ts +2 -0
  14. package/dist/bridge/runtime-entry.d.ts.map +1 -0
  15. package/dist/bridge/runtime-entry.js +616 -0
  16. package/dist/bridge/runtime-entry.js.map +1 -0
  17. package/dist/bridge/types.d.ts +186 -0
  18. package/dist/bridge/types.d.ts.map +1 -0
  19. package/dist/bridge/types.js +2 -0
  20. package/dist/bridge/types.js.map +1 -0
  21. package/dist/hooks/useViewerBridge.d.ts +16 -0
  22. package/dist/hooks/useViewerBridge.d.ts.map +1 -0
  23. package/dist/hooks/useViewerBridge.js +565 -0
  24. package/dist/hooks/useViewerBridge.js.map +1 -0
  25. package/dist/hooks/useViewerGestureLock.d.ts +23 -0
  26. package/dist/hooks/useViewerGestureLock.d.ts.map +1 -0
  27. package/dist/hooks/useViewerGestureLock.js +49 -0
  28. package/dist/hooks/useViewerGestureLock.js.map +1 -0
  29. package/dist/index.d.ts +9 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +7 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/swatches/JewelryCustomizer.d.ts +16 -0
  34. package/dist/swatches/JewelryCustomizer.d.ts.map +1 -0
  35. package/dist/swatches/JewelryCustomizer.js +36 -0
  36. package/dist/swatches/JewelryCustomizer.js.map +1 -0
  37. package/dist/swatches/MetalSwatches.d.ts +13 -0
  38. package/dist/swatches/MetalSwatches.d.ts.map +1 -0
  39. package/dist/swatches/MetalSwatches.js +81 -0
  40. package/dist/swatches/MetalSwatches.js.map +1 -0
  41. package/dist/swatches/ShapeSelect.d.ts +15 -0
  42. package/dist/swatches/ShapeSelect.d.ts.map +1 -0
  43. package/dist/swatches/ShapeSelect.js +226 -0
  44. package/dist/swatches/ShapeSelect.js.map +1 -0
  45. package/dist/swatches/ShapeSwatches.d.ts +22 -0
  46. package/dist/swatches/ShapeSwatches.d.ts.map +1 -0
  47. package/dist/swatches/ShapeSwatches.js +144 -0
  48. package/dist/swatches/ShapeSwatches.js.map +1 -0
  49. package/dist/swatches/StoneSwatches.d.ts +13 -0
  50. package/dist/swatches/StoneSwatches.d.ts.map +1 -0
  51. package/dist/swatches/StoneSwatches.js +81 -0
  52. package/dist/swatches/StoneSwatches.js.map +1 -0
  53. package/dist/swatches/index.d.ts +7 -0
  54. package/dist/swatches/index.d.ts.map +1 -0
  55. package/dist/swatches/index.js +7 -0
  56. package/dist/swatches/index.js.map +1 -0
  57. package/dist/swatches/useJewelryCustomizer.d.ts +33 -0
  58. package/dist/swatches/useJewelryCustomizer.d.ts.map +1 -0
  59. package/dist/swatches/useJewelryCustomizer.js +43 -0
  60. package/dist/swatches/useJewelryCustomizer.js.map +1 -0
  61. package/dist/types.d.ts +103 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +50 -6
  66. package/README.md +0 -3
@@ -0,0 +1,186 @@
1
+ import type { MetalColorProp, StoneColorProp, DiamondShape, DiamondQuality, ViewerSourceInput, PartInfo, MaterialSlotInfo, PartType, ViewerErrorCode, ViewerState, CameraPreset } from '../types.js';
2
+ export interface CameraSphericalState {
3
+ radius: number;
4
+ phi: number;
5
+ theta: number;
6
+ target: [number, number, number];
7
+ }
8
+ export interface ViewerConfigState {
9
+ metalColor?: MetalColorProp;
10
+ stoneColor?: StoneColorProp;
11
+ shape?: DiamondShape | string;
12
+ materialColors?: Record<string, string>;
13
+ partColors?: Record<string, string>;
14
+ environment?: string;
15
+ exposure?: number;
16
+ metalEnvUrl?: string;
17
+ gemEnvUrl?: string;
18
+ quality?: 'low' | 'medium' | 'high';
19
+ diamondQuality?: DiamondQuality;
20
+ autoRotate?: boolean;
21
+ autoRotateSpeed?: number;
22
+ minZoom?: number;
23
+ maxZoom?: number;
24
+ fov?: number;
25
+ shadows?: boolean;
26
+ background?: string | number;
27
+ cameraState?: CameraSphericalState;
28
+ }
29
+ export type OutboundCommand = {
30
+ type: 'LOAD_MODEL';
31
+ source: ViewerSourceInput;
32
+ } | {
33
+ type: 'LOAD_MODULAR';
34
+ components: Record<string, any>;
35
+ options?: any;
36
+ } | {
37
+ type: 'LOAD_COMPONENT';
38
+ slot: string;
39
+ source: any;
40
+ options?: any;
41
+ } | {
42
+ type: 'APPLY_CONFIG';
43
+ config: Partial<ViewerConfigState>;
44
+ } | {
45
+ type: 'SET_METAL';
46
+ color: MetalColorProp;
47
+ } | {
48
+ type: 'SET_STONE';
49
+ color: StoneColorProp;
50
+ } | {
51
+ type: 'SET_SHAPE';
52
+ shape: DiamondShape | string;
53
+ } | {
54
+ type: 'SET_MATERIAL_COLOR';
55
+ slotId: string;
56
+ color: string;
57
+ } | {
58
+ type: 'CLEAR_MATERIAL_COLOR';
59
+ slotId: string;
60
+ } | {
61
+ type: 'SET_PART_COLOR';
62
+ partId: string;
63
+ color: string;
64
+ slotIndex?: number;
65
+ } | {
66
+ type: 'CLEAR_PART_COLOR';
67
+ partId: string;
68
+ slotIndex?: number;
69
+ } | {
70
+ type: 'SET_ENVIRONMENT';
71
+ environment?: string;
72
+ exposure?: number;
73
+ } | {
74
+ type: 'SET_METAL_ENVIRONMENT';
75
+ url: string;
76
+ } | {
77
+ type: 'SET_GEM_ENVIRONMENT';
78
+ url: string;
79
+ } | {
80
+ type: 'SET_AUTO_ROTATE';
81
+ enabled: boolean;
82
+ speed?: number;
83
+ } | {
84
+ type: 'SET_RENDER_ACTIVE';
85
+ active: boolean;
86
+ } | {
87
+ type: 'SET_QUALITY';
88
+ quality: 'low' | 'medium' | 'high';
89
+ } | {
90
+ type: 'RESET_CAMERA';
91
+ } | {
92
+ type: 'SET_CAMERA_PRESET';
93
+ preset: CameraPreset;
94
+ } | {
95
+ type: 'SET_CAMERA_POSITION';
96
+ position: [number, number, number];
97
+ target: [number, number, number];
98
+ } | {
99
+ type: 'CLEAR_OVERRIDES';
100
+ } | {
101
+ type: 'GET_STATE';
102
+ reqId: string;
103
+ } | {
104
+ type: 'SET_STATE';
105
+ state: ViewerState;
106
+ } | {
107
+ type: 'CAPTURE_SNAPSHOT';
108
+ reqId: string;
109
+ format?: 'png' | 'jpeg';
110
+ quality?: number;
111
+ } | {
112
+ type: 'EXPORT_AR_PAYLOAD';
113
+ reqId: string;
114
+ platform: 'ios' | 'android';
115
+ usdzUrl?: string;
116
+ } | {
117
+ type: 'SET_DIAMOND_QUALITY';
118
+ quality: DiamondQuality;
119
+ } | {
120
+ type: 'FIT_TO_SCENE';
121
+ } | {
122
+ type: 'UNLOAD';
123
+ } | {
124
+ type: 'SET_PART_TYPE';
125
+ meshId: string;
126
+ partType: PartType;
127
+ } | {
128
+ type: 'GET_PARTS';
129
+ reqId: string;
130
+ } | {
131
+ type: 'GET_MATERIALS';
132
+ reqId: string;
133
+ };
134
+ export type InboundEvent = {
135
+ type: 'VIEWER_READY';
136
+ } | {
137
+ type: 'VIEWER_LOADED';
138
+ parts: PartInfo[];
139
+ materials: MaterialSlotInfo[];
140
+ } | {
141
+ type: 'VIEWER_PROGRESS';
142
+ progress: number;
143
+ } | {
144
+ type: 'PART_SELECTED';
145
+ meshId: string;
146
+ partId?: string;
147
+ partType: PartType;
148
+ slotIndex?: number;
149
+ slotId?: string;
150
+ materialName?: string;
151
+ } | {
152
+ type: 'STATE_READY';
153
+ reqId: string;
154
+ state: ViewerState;
155
+ } | {
156
+ type: 'VIEWER_CHANGE';
157
+ state: ViewerState;
158
+ } | {
159
+ type: 'INTERACTION_START';
160
+ } | {
161
+ type: 'INTERACTION_END';
162
+ cameraState?: CameraSphericalState;
163
+ } | {
164
+ type: 'SNAPSHOT_READY';
165
+ reqId: string;
166
+ dataUrl: string;
167
+ } | {
168
+ type: 'AR_PAYLOAD_READY';
169
+ reqId: string;
170
+ url: string;
171
+ launchedInWebView?: boolean;
172
+ } | {
173
+ type: 'VIEWER_ERROR';
174
+ code: ViewerErrorCode;
175
+ message: string;
176
+ reqId?: string;
177
+ } | {
178
+ type: 'PARTS_READY';
179
+ reqId: string;
180
+ parts: PartInfo[];
181
+ } | {
182
+ type: 'MATERIALS_READY';
183
+ reqId: string;
184
+ materials: MaterialSlotInfo[];
185
+ };
186
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { WebView, WebViewMessageEvent } from 'react-native-webview';
2
+ import type { ViewerConfigState } from '../bridge/types.js';
3
+ import type { ViewerProps, ViewerRef, ViewerError, ViewerErrorCode, ViewerSourceInput } from '../types.js';
4
+ export declare function createViewerError(code: ViewerErrorCode, message: string, reqId?: string): ViewerError;
5
+ export declare function useViewerBridge(props: ViewerProps): {
6
+ webViewRef: import("react").MutableRefObject<WebView<{}> | null>;
7
+ isReady: boolean;
8
+ viewerRefMethods: ViewerRef;
9
+ handleMessage: (event: WebViewMessageEvent) => void;
10
+ handleWebViewProcessTerminated: () => void;
11
+ lastKnownStateRef: import("react").MutableRefObject<{
12
+ source?: ViewerSourceInput;
13
+ config: ViewerConfigState;
14
+ }>;
15
+ };
16
+ //# sourceMappingURL=useViewerBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewerBridge.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewerBridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,EAWlB,MAAM,aAAa,CAAA;AAWpB,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,WAAW,CAMb;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW;;;;2BA2EtC,mBAAmB;;;iBA7DlB,iBAAiB;gBAClB,iBAAiB;;EA8a5B"}