@nice2dev/ui-3d 1.0.0 → 1.0.3
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 +115 -1
- package/dist/cjs/collaborative/collaborativeScene.js +210 -0
- package/dist/cjs/collaborative/collaborativeScene.js.map +1 -0
- package/dist/cjs/core/i18n.js +3 -3
- package/dist/cjs/core/i18n.js.map +1 -1
- package/dist/cjs/dance/DanceBridge.js +162 -0
- package/dist/cjs/dance/DanceBridge.js.map +1 -0
- package/dist/cjs/dance/DanceScoreEngine.js +210 -0
- package/dist/cjs/dance/DanceScoreEngine.js.map +1 -0
- package/dist/cjs/dance/PoseDetector.js +199 -0
- package/dist/cjs/dance/PoseDetector.js.map +1 -0
- package/dist/cjs/index.js +254 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/material/MaterialEditor.module.css.js +6 -0
- package/dist/cjs/material/MaterialEditor.module.css.js.map +1 -0
- package/dist/cjs/material/NiceMaterialEditor.js +737 -0
- package/dist/cjs/material/NiceMaterialEditor.js.map +1 -0
- package/dist/cjs/material/materialEditorTypes.js +73 -0
- package/dist/cjs/material/materialEditorTypes.js.map +1 -0
- package/dist/cjs/material/materialEditorUtils.js +841 -0
- package/dist/cjs/material/materialEditorUtils.js.map +1 -0
- package/dist/cjs/material/materialNodeDefinitions.js +1285 -0
- package/dist/cjs/material/materialNodeDefinitions.js.map +1 -0
- package/dist/cjs/model/ModelEditor.js +4 -1
- package/dist/cjs/model/ModelEditor.js.map +1 -1
- package/dist/cjs/model/ModelEditor.module.css.js +1 -1
- package/dist/cjs/model/ModelEditorLeftPanel.js +5 -4
- package/dist/cjs/model/ModelEditorLeftPanel.js.map +1 -1
- package/dist/cjs/model/ModelEditorMenuBar.js +8 -3
- package/dist/cjs/model/ModelEditorMenuBar.js.map +1 -1
- package/dist/cjs/model/ModelEditorRightPanel.js +27 -26
- package/dist/cjs/model/ModelEditorRightPanel.js.map +1 -1
- package/dist/cjs/model/ModelEditorSubComponents.js +20 -16
- package/dist/cjs/model/ModelEditorSubComponents.js.map +1 -1
- package/dist/cjs/model/ModelEditorTimeline.js +5 -4
- package/dist/cjs/model/ModelEditorTimeline.js.map +1 -1
- package/dist/cjs/model/ModelEditorToolbar.js +4 -3
- package/dist/cjs/model/ModelEditorToolbar.js.map +1 -1
- package/dist/cjs/model/ModelEditorViewport.js +2 -2
- package/dist/cjs/model/ModelEditorViewport.js.map +1 -1
- package/dist/cjs/model/ModelViewer.js +68 -0
- package/dist/cjs/model/ModelViewer.js.map +1 -0
- package/dist/cjs/model/ModelViewer.module.css.js +6 -0
- package/dist/cjs/model/ModelViewer.module.css.js.map +1 -0
- package/dist/cjs/model/NiceArmatureEditor.js +255 -0
- package/dist/cjs/model/NiceArmatureEditor.js.map +1 -0
- package/dist/cjs/model/NiceMorphTargetEditor.js +206 -0
- package/dist/cjs/model/NiceMorphTargetEditor.js.map +1 -0
- package/dist/cjs/model/NiceOctree.js +339 -0
- package/dist/cjs/model/NiceOctree.js.map +1 -0
- package/dist/cjs/model/NicePhysicsSimulation.js +283 -0
- package/dist/cjs/model/NicePhysicsSimulation.js.map +1 -0
- package/dist/cjs/model/NiceProceduralGeometry.js +269 -0
- package/dist/cjs/model/NiceProceduralGeometry.js.map +1 -0
- package/dist/cjs/model/NiceTerrainEditor.js +343 -0
- package/dist/cjs/model/NiceTerrainEditor.js.map +1 -0
- package/dist/cjs/model/NiceWeightPainter.js +258 -0
- package/dist/cjs/model/NiceWeightPainter.js.map +1 -0
- package/dist/cjs/model/NiceXRPreview.js +269 -0
- package/dist/cjs/model/NiceXRPreview.js.map +1 -0
- package/dist/cjs/model/cadModeUtils.js +130 -0
- package/dist/cjs/model/cadModeUtils.js.map +1 -0
- package/dist/cjs/model/editorShortcuts.js +187 -0
- package/dist/cjs/model/editorShortcuts.js.map +1 -0
- package/dist/cjs/model/modelEditorTypes.js +11 -0
- package/dist/cjs/model/modelEditorTypes.js.map +1 -1
- package/dist/cjs/model/modelEditorUtils.js +1049 -0
- package/dist/cjs/model/modelEditorUtils.js.map +1 -0
- package/dist/cjs/model/simsModeUtils.js +358 -0
- package/dist/cjs/model/simsModeUtils.js.map +1 -0
- package/dist/cjs/model/useModelEditor.js +319 -115
- package/dist/cjs/model/useModelEditor.js.map +1 -1
- package/dist/cjs/model/useModelViewer.js +634 -0
- package/dist/cjs/model/useModelViewer.js.map +1 -0
- package/dist/cjs/nice2dev-ui-3d.css +1 -1
- package/dist/cjs/particle/NiceParticleEditor.js +526 -0
- package/dist/cjs/particle/NiceParticleEditor.js.map +1 -0
- package/dist/cjs/particle/ParticleEditor.module.css.js +6 -0
- package/dist/cjs/particle/ParticleEditor.module.css.js.map +1 -0
- package/dist/cjs/particle/particleEditorTypes.js +92 -0
- package/dist/cjs/particle/particleEditorTypes.js.map +1 -0
- package/dist/cjs/particle/particleEditorUtils.js +1084 -0
- package/dist/cjs/particle/particleEditorUtils.js.map +1 -0
- package/dist/cjs/rendering/NiceCascadedShadows.js +266 -0
- package/dist/cjs/rendering/NiceCascadedShadows.js.map +1 -0
- package/dist/cjs/rendering/NiceRenderExport.js +341 -0
- package/dist/cjs/rendering/NiceRenderExport.js.map +1 -0
- package/dist/cjs/rendering/NiceSSAO.js +359 -0
- package/dist/cjs/rendering/NiceSSAO.js.map +1 -0
- package/dist/cjs/rendering/NiceSSR.js +277 -0
- package/dist/cjs/rendering/NiceSSR.js.map +1 -0
- package/dist/cjs/rendering/NiceWebGPURenderer.js +215 -0
- package/dist/cjs/rendering/NiceWebGPURenderer.js.map +1 -0
- package/dist/cjs/ui/dist/index.js +50089 -0
- package/dist/cjs/ui/dist/index.js.map +1 -0
- package/dist/cjs/uv/NiceUVEditor.js +520 -0
- package/dist/cjs/uv/NiceUVEditor.js.map +1 -0
- package/dist/cjs/uv/UVEditor.module.css.js +6 -0
- package/dist/cjs/uv/UVEditor.module.css.js.map +1 -0
- package/dist/cjs/uv/uvEditorTypes.js +98 -0
- package/dist/cjs/uv/uvEditorTypes.js.map +1 -0
- package/dist/cjs/uv/uvEditorUtils.js +670 -0
- package/dist/cjs/uv/uvEditorUtils.js.map +1 -0
- package/dist/esm/collaborative/collaborativeScene.js +206 -0
- package/dist/esm/collaborative/collaborativeScene.js.map +1 -0
- package/dist/esm/dance/DanceBridge.js +158 -0
- package/dist/esm/dance/DanceBridge.js.map +1 -0
- package/dist/esm/dance/DanceScoreEngine.js +207 -0
- package/dist/esm/dance/DanceScoreEngine.js.map +1 -0
- package/dist/esm/dance/PoseDetector.js +195 -0
- package/dist/esm/dance/PoseDetector.js.map +1 -0
- package/dist/esm/index.js +35 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/material/MaterialEditor.module.css.js +4 -0
- package/dist/esm/material/MaterialEditor.module.css.js.map +1 -0
- package/dist/esm/material/NiceMaterialEditor.js +734 -0
- package/dist/esm/material/NiceMaterialEditor.js.map +1 -0
- package/dist/esm/material/materialEditorTypes.js +62 -0
- package/dist/esm/material/materialEditorTypes.js.map +1 -0
- package/dist/esm/material/materialEditorUtils.js +811 -0
- package/dist/esm/material/materialEditorUtils.js.map +1 -0
- package/dist/esm/material/materialNodeDefinitions.js +1280 -0
- package/dist/esm/material/materialNodeDefinitions.js.map +1 -0
- package/dist/esm/model/ModelEditor.js +4 -2
- package/dist/esm/model/ModelEditor.js.map +1 -1
- package/dist/esm/model/ModelEditor.module.css.js +1 -1
- package/dist/esm/model/ModelEditorLeftPanel.js +5 -4
- package/dist/esm/model/ModelEditorLeftPanel.js.map +1 -1
- package/dist/esm/model/ModelEditorMenuBar.js +8 -3
- package/dist/esm/model/ModelEditorMenuBar.js.map +1 -1
- package/dist/esm/model/ModelEditorRightPanel.js +27 -26
- package/dist/esm/model/ModelEditorRightPanel.js.map +1 -1
- package/dist/esm/model/ModelEditorSubComponents.js +17 -13
- package/dist/esm/model/ModelEditorSubComponents.js.map +1 -1
- package/dist/esm/model/ModelEditorTimeline.js +5 -4
- package/dist/esm/model/ModelEditorTimeline.js.map +1 -1
- package/dist/esm/model/ModelEditorToolbar.js +4 -3
- package/dist/esm/model/ModelEditorToolbar.js.map +1 -1
- package/dist/esm/model/ModelEditorViewport.js +2 -2
- package/dist/esm/model/ModelEditorViewport.js.map +1 -1
- package/dist/esm/model/ModelViewer.js +65 -0
- package/dist/esm/model/ModelViewer.js.map +1 -0
- package/dist/esm/model/ModelViewer.module.css.js +4 -0
- package/dist/esm/model/ModelViewer.module.css.js.map +1 -0
- package/dist/esm/model/NiceArmatureEditor.js +233 -0
- package/dist/esm/model/NiceArmatureEditor.js.map +1 -0
- package/dist/esm/model/NiceMorphTargetEditor.js +184 -0
- package/dist/esm/model/NiceMorphTargetEditor.js.map +1 -0
- package/dist/esm/model/NiceOctree.js +317 -0
- package/dist/esm/model/NiceOctree.js.map +1 -0
- package/dist/esm/model/NicePhysicsSimulation.js +261 -0
- package/dist/esm/model/NicePhysicsSimulation.js.map +1 -0
- package/dist/esm/model/NiceProceduralGeometry.js +242 -0
- package/dist/esm/model/NiceProceduralGeometry.js.map +1 -0
- package/dist/esm/model/NiceTerrainEditor.js +321 -0
- package/dist/esm/model/NiceTerrainEditor.js.map +1 -0
- package/dist/esm/model/NiceWeightPainter.js +236 -0
- package/dist/esm/model/NiceWeightPainter.js.map +1 -0
- package/dist/esm/model/NiceXRPreview.js +247 -0
- package/dist/esm/model/NiceXRPreview.js.map +1 -0
- package/dist/esm/model/cadModeUtils.js +103 -0
- package/dist/esm/model/cadModeUtils.js.map +1 -0
- package/dist/esm/model/editorShortcuts.js +185 -0
- package/dist/esm/model/editorShortcuts.js.map +1 -0
- package/dist/esm/model/modelEditorTypes.js +11 -0
- package/dist/esm/model/modelEditorTypes.js.map +1 -1
- package/dist/esm/model/modelEditorUtils.js +997 -0
- package/dist/esm/model/modelEditorUtils.js.map +1 -0
- package/dist/esm/model/simsModeUtils.js +325 -0
- package/dist/esm/model/simsModeUtils.js.map +1 -0
- package/dist/esm/model/useModelEditor.js +204 -0
- package/dist/esm/model/useModelEditor.js.map +1 -1
- package/dist/esm/model/useModelViewer.js +613 -0
- package/dist/esm/model/useModelViewer.js.map +1 -0
- package/dist/esm/nice2dev-ui-3d.css +1 -1
- package/dist/esm/particle/NiceParticleEditor.js +523 -0
- package/dist/esm/particle/NiceParticleEditor.js.map +1 -0
- package/dist/esm/particle/ParticleEditor.module.css.js +4 -0
- package/dist/esm/particle/ParticleEditor.module.css.js.map +1 -0
- package/dist/esm/particle/particleEditorTypes.js +84 -0
- package/dist/esm/particle/particleEditorTypes.js.map +1 -0
- package/dist/esm/particle/particleEditorUtils.js +1054 -0
- package/dist/esm/particle/particleEditorUtils.js.map +1 -0
- package/dist/esm/rendering/NiceCascadedShadows.js +244 -0
- package/dist/esm/rendering/NiceCascadedShadows.js.map +1 -0
- package/dist/esm/rendering/NiceRenderExport.js +319 -0
- package/dist/esm/rendering/NiceRenderExport.js.map +1 -0
- package/dist/esm/rendering/NiceSSAO.js +337 -0
- package/dist/esm/rendering/NiceSSAO.js.map +1 -0
- package/dist/esm/rendering/NiceSSR.js +255 -0
- package/dist/esm/rendering/NiceSSR.js.map +1 -0
- package/dist/esm/rendering/NiceWebGPURenderer.js +193 -0
- package/dist/esm/rendering/NiceWebGPURenderer.js.map +1 -0
- package/dist/esm/ui/dist/index.js +49686 -0
- package/dist/esm/ui/dist/index.js.map +1 -0
- package/dist/esm/uv/NiceUVEditor.js +518 -0
- package/dist/esm/uv/NiceUVEditor.js.map +1 -0
- package/dist/esm/uv/UVEditor.module.css.js +4 -0
- package/dist/esm/uv/UVEditor.module.css.js.map +1 -0
- package/dist/esm/uv/uvEditorTypes.js +88 -0
- package/dist/esm/uv/uvEditorTypes.js.map +1 -0
- package/dist/esm/uv/uvEditorUtils.js +621 -0
- package/dist/esm/uv/uvEditorUtils.js.map +1 -0
- package/package.json +3 -4
|
@@ -3,6 +3,7 @@ import { useState } from 'react';
|
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import styles from './ModelEditor.module.css.js';
|
|
5
5
|
import { DEG } from './modelEditorTypes.js';
|
|
6
|
+
import { NiceTextInput as ut, NiceColorPicker as _n, NiceSlider as Jr, NiceSelect as tn } from '../ui/dist/index.js';
|
|
6
7
|
|
|
7
8
|
/* ═══════════════════════════════════════════
|
|
8
9
|
Sub-components
|
|
@@ -18,7 +19,7 @@ const Vec3Row = ({ label, value, onChange }) => {
|
|
|
18
19
|
onChange();
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
|
-
return (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: label }), jsxs("div", { className: styles.propVec3, children: [jsx(
|
|
22
|
+
return (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: label }), jsxs("div", { className: styles.propVec3, children: [jsx(ut, { className: styles.propVec3X, value: value.x.toFixed(3), onChange: (val) => set("x", val) }), jsx(ut, { className: styles.propVec3Y, value: value.y.toFixed(3), onChange: (val) => set("y", val) }), jsx(ut, { className: styles.propVec3Z, value: value.z.toFixed(3), onChange: (val) => set("z", val) })] })] }));
|
|
22
23
|
};
|
|
23
24
|
/** Vec3 input row for rotation (shows degrees) */
|
|
24
25
|
const Vec3RowDeg = ({ label, value, onChange }) => {
|
|
@@ -31,7 +32,7 @@ const Vec3RowDeg = ({ label, value, onChange }) => {
|
|
|
31
32
|
onChange();
|
|
32
33
|
}
|
|
33
34
|
};
|
|
34
|
-
return (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: label }), jsxs("div", { className: styles.propVec3, children: [jsx(
|
|
35
|
+
return (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: label }), jsxs("div", { className: styles.propVec3, children: [jsx(ut, { className: styles.propVec3X, value: (value.x * DEG).toFixed(1), onChange: (val) => set("x", val) }), jsx(ut, { className: styles.propVec3Y, value: (value.y * DEG).toFixed(1), onChange: (val) => set("y", val) }), jsx(ut, { className: styles.propVec3Z, value: (value.z * DEG).toFixed(1), onChange: (val) => set("z", val) })] })] }));
|
|
35
36
|
};
|
|
36
37
|
/** Material card with editable properties */
|
|
37
38
|
const MaterialCard = ({ material, active, onClick, onUpdate }) => {
|
|
@@ -55,21 +56,24 @@ const MaterialCard = ({ material, active, onClick, onUpdate }) => {
|
|
|
55
56
|
mat.needsUpdate = true;
|
|
56
57
|
onUpdate();
|
|
57
58
|
};
|
|
58
|
-
return (jsxs("div", { className: `${styles.materialCard} ${active ? styles.materialCardActive : ""}`, onClick: onClick, children: [jsx("div", { className: styles.materialHeader, children: jsx("span", { className: styles.materialName, children: mat.name || mat.type }) }), hasColor && (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Color" }), jsx(
|
|
59
|
-
|
|
60
|
-
mat.needsUpdate = true;
|
|
61
|
-
onUpdate();
|
|
62
|
-
} }) })] })), jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Opacity" }), jsx("input", { type: "range", min: 0, max: 1, step: 0.01, value: mat.opacity, onChange: (e) => {
|
|
63
|
-
const v = parseFloat(e.target.value);
|
|
64
|
-
mat.opacity = v;
|
|
65
|
-
mat.transparent = v < 1;
|
|
59
|
+
return (jsxs("div", { className: `${styles.materialCard} ${active ? styles.materialCardActive : ""}`, onClick: onClick, children: [jsx("div", { className: styles.materialHeader, children: jsx("span", { className: styles.materialName, children: mat.name || mat.type }) }), hasColor && (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Color" }), jsx(_n, { value: `#${mat.color.getHexString()}`, onChange: (c) => setColor(c) }), jsxs("span", { style: { fontSize: 10, color: "#888" }, children: ["#", mat.color.getHexString()] })] })), hasMetalness && (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Metal" }), jsx(Jr, { min: 0, max: 1, step: 0.01, value: mat.metalness, onChange: (val) => setNum("metalness", val), style: { flex: 1 } }), jsx("span", { style: { fontSize: 9, color: "#888", width: 28, textAlign: "right" }, children: mat.metalness.toFixed(2) })] })), hasRoughness && (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Rough" }), jsx(Jr, { min: 0, max: 1, step: 0.01, value: mat.roughness, onChange: (val) => setNum("roughness", val), style: { flex: 1 } }), jsx("span", { style: { fontSize: 9, color: "#888", width: 28, textAlign: "right" }, children: mat.roughness.toFixed(2) })] })), hasEmissive && mat.emissive && (jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Emissive" }), jsx(_n, { value: `#${mat.emissive.getHexString()}`, onChange: (c) => {
|
|
60
|
+
mat.emissive.set(c);
|
|
66
61
|
mat.needsUpdate = true;
|
|
67
62
|
onUpdate();
|
|
68
|
-
}
|
|
69
|
-
mat.
|
|
63
|
+
} })] })), jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Opacity" }), jsx(Jr, { min: 0, max: 1, step: 0.01, value: mat.opacity, onChange: (val) => {
|
|
64
|
+
mat.opacity = val;
|
|
65
|
+
mat.transparent = val < 1;
|
|
70
66
|
mat.needsUpdate = true;
|
|
71
67
|
onUpdate();
|
|
72
|
-
},
|
|
68
|
+
}, style: { flex: 1 } }), jsx("span", { style: { fontSize: 9, color: "#888", width: 28, textAlign: "right" }, children: mat.opacity.toFixed(2) })] }), jsxs("div", { className: styles.propRow, children: [jsx("span", { className: styles.propLabel, children: "Side" }), jsx(tn, { className: styles.propSelect, value: String(mat.side), onChange: (val) => {
|
|
69
|
+
mat.side = parseInt(val);
|
|
70
|
+
mat.needsUpdate = true;
|
|
71
|
+
onUpdate();
|
|
72
|
+
}, options: [
|
|
73
|
+
{ value: String(THREE.FrontSide), label: "Front" },
|
|
74
|
+
{ value: String(THREE.BackSide), label: "Back" },
|
|
75
|
+
{ value: String(THREE.DoubleSide), label: "Double" },
|
|
76
|
+
] })] }), hasMap && mat.map && (jsxs("div", { className: styles.textureSlot, children: [jsx("div", { className: styles.textureThumb, children: mat.map.image != null && (jsx("img", { src: (_a = mat.map.image.src) !== null && _a !== void 0 ? _a : "", alt: "diffuse" })) }), jsxs("div", { className: styles.textureInfo, children: [jsx("div", { className: styles.textureName, children: "Diffuse Map" }), jsxs("div", { style: { fontSize: 9, color: "#666" }, children: [(_b = mat.map.image) === null || _b === void 0 ? void 0 : _b.width, "\u00D7", (_c = mat.map.image) === null || _c === void 0 ? void 0 : _c.height] })] })] })), hasNormalMap && mat.normalMap && (jsxs("div", { className: styles.textureSlot, children: [jsx("div", { className: styles.textureThumb, children: mat.normalMap.image != null && (jsx("img", { src: (_d = mat.normalMap.image.src) !== null && _d !== void 0 ? _d : "", alt: "normal" })) }), jsx("div", { className: styles.textureInfo, children: jsx("div", { className: styles.textureName, children: "Normal Map" }) })] }))] }));
|
|
73
77
|
};
|
|
74
78
|
|
|
75
79
|
export { MaterialCard, Vec3Row, Vec3RowDeg };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelEditorSubComponents.js","sources":["../../../src/model/ModelEditorSubComponents.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelEditorSubComponents.js","sources":["../../../src/model/ModelEditorSubComponents.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","NiceTextInput","NiceColorPicker","NiceSlider","NiceSelect"],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import Ae from 'react';
|
|
3
3
|
import styles from './ModelEditor.module.css.js';
|
|
4
4
|
import { fmtTime } from './modelEditorTypes.js';
|
|
5
|
+
import { NiceButton as Ee, NiceSlider as Jr } from '../ui/dist/index.js';
|
|
5
6
|
|
|
6
|
-
const ModelEditorTimeline =
|
|
7
|
+
const ModelEditorTimeline = Ae.memo(({ api }) => {
|
|
7
8
|
const { bottomCollapsed, setBottomCollapsed, animations, activeAnimIdx, isPlaying, animTime, animDuration, animSpeed, setAnimSpeed, loopAnim, setLoopAnim, seekAnim, togglePlay, stopAnim, playClip, mergeInputRef, } = api;
|
|
8
|
-
return (jsxs("div", { className: `${styles.bottomPanel} ${bottomCollapsed ? styles.bottomPanelCollapsed : ""}`, children: [jsxs("div", { className: styles.bottomPanelHeader, children: [jsx("span", { className: styles.bottomToggle, onClick: () => setBottomCollapsed((c) => !c), children: bottomCollapsed ? "▶" : "▼" }), jsxs("span", { className: styles.bottomPanelTitle, onClick: () => setBottomCollapsed((c) => !c), children: ["Animation (", animations.length, " clip", animations.length !== 1 ? "s" : "", ")"] }), jsx("div", { className: styles.menuSep }), jsxs("div", { className: styles.transportBar, children: [jsx(
|
|
9
|
+
return (jsxs("div", { className: `${styles.bottomPanel} ${bottomCollapsed ? styles.bottomPanelCollapsed : ""}`, children: [jsxs("div", { className: styles.bottomPanelHeader, children: [jsx("span", { className: styles.bottomToggle, onClick: () => setBottomCollapsed((c) => !c), children: bottomCollapsed ? "▶" : "▼" }), jsxs("span", { className: styles.bottomPanelTitle, onClick: () => setBottomCollapsed((c) => !c), children: ["Animation (", animations.length, " clip", animations.length !== 1 ? "s" : "", ")"] }), jsx("div", { className: styles.menuSep }), jsxs("div", { className: styles.transportBar, children: [jsx(Ee, { className: styles.transportBtn, variant: "ghost", size: "sm", onClick: () => seekAnim(0), title: "Go to start", children: "\u23EE" }), jsx(Ee, { className: styles.transportBtn, variant: isPlaying ? "primary" : "ghost", size: "sm", onClick: togglePlay, title: "Play/Pause (Space)", children: isPlaying ? "⏸" : "▶" }), jsx(Ee, { className: styles.transportBtn, variant: "ghost", size: "sm", onClick: stopAnim, title: "Stop", children: "\u23F9" }), jsx(Ee, { className: styles.transportBtn, variant: loopAnim ? "primary" : "ghost", size: "sm", onClick: () => setLoopAnim((v) => !v), title: "Loop", children: "\uD83D\uDD01" })] }), jsxs("span", { className: styles.transportTime, children: [fmtTime(animTime), " / ", fmtTime(animDuration)] }), jsx("div", { className: styles.menuSep }), jsx("label", { className: styles.menuLabel, children: "Speed" }), jsx(Jr, { min: 0.1, max: 3, step: 0.1, value: animSpeed, onChange: (val) => setAnimSpeed(val), style: { width: 60 } }), jsxs("span", { className: styles.menuLabel, children: [animSpeed.toFixed(1), "\u00D7"] })] }), !bottomCollapsed && (jsxs("div", { className: styles.animListArea, children: [jsxs("div", { className: styles.animList, children: [animations.length === 0 && (jsx("div", { style: { color: "#666", fontSize: 10, padding: 8 }, children: "No animations loaded" })), animations.map((anim, i) => (jsxs("div", { className: `${styles.animItem} ${i === activeAnimIdx ? styles.animItemActive : ""}`, onClick: () => playClip(i), children: [jsx("span", { children: anim.name }), jsxs("span", { className: styles.animDuration, children: [anim.duration.toFixed(1), "s"] })] }, `${anim.name}-${i}`))), jsx("div", { style: { padding: "4px 8px" }, children: jsx(Ee, { className: styles.btnSecondary, variant: "ghost", size: "sm", style: { width: "100%", fontSize: 10 }, onClick: () => { var _a; return (_a = mergeInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Add Animation File" }) })] }), jsxs("div", { className: styles.timelineArea, children: [jsxs("div", { className: styles.timelineRuler, children: [animDuration > 0 &&
|
|
9
10
|
Array.from({ length: Math.ceil(animDuration) + 1 }, (_, i) => {
|
|
10
11
|
const pct = (i / animDuration) * 100;
|
|
11
|
-
return (jsxs(
|
|
12
|
+
return (jsxs(Ae.Fragment, { children: [jsx("div", { className: styles.rulerTick, style: { left: `${pct}%` } }), jsxs("span", { className: styles.rulerLabel, style: { left: `${pct}%` }, children: [i, "s"] })] }, i));
|
|
12
13
|
}), animDuration > 0 && (jsx("div", { className: styles.playhead, style: {
|
|
13
14
|
left: `${(animTime / animDuration) * 100}%`,
|
|
14
15
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelEditorTimeline.js","sources":["../../../src/model/ModelEditorTimeline.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelEditorTimeline.js","sources":["../../../src/model/ModelEditorTimeline.tsx"],"sourcesContent":[null],"names":["React","_jsxs","_jsx","NiceButton","NiceSlider"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import Ae from 'react';
|
|
3
3
|
import styles from './ModelEditor.module.css.js';
|
|
4
|
+
import { NiceButton as Ee } from '../ui/dist/index.js';
|
|
4
5
|
|
|
5
|
-
const ModelEditorToolbar =
|
|
6
|
+
const ModelEditorToolbar = Ae.memo(({ api }) => {
|
|
6
7
|
const { transformMode, setTransformMode, snapEnabled, setSnapEnabled, gizmoSpace, setGizmoSpace, rootObjectRef, focusOnObject, setCameraPreset, deleteSelected, duplicateSelected, selectedNode, } = api;
|
|
7
|
-
return (jsxs("div", { className: styles.toolbar, children: [jsx(
|
|
8
|
+
return (jsxs("div", { className: styles.toolbar, children: [jsx(Ee, { className: styles.toolBtn, variant: transformMode === "translate" ? "primary" : "ghost", size: "sm", onClick: () => setTransformMode("translate"), title: "Translate (G)", children: "\u2725" }), jsx(Ee, { className: styles.toolBtn, variant: transformMode === "rotate" ? "primary" : "ghost", size: "sm", onClick: () => setTransformMode("rotate"), title: "Rotate (R)", children: "\u21BB" }), jsx(Ee, { className: styles.toolBtn, variant: transformMode === "scale" ? "primary" : "ghost", size: "sm", onClick: () => setTransformMode("scale"), title: "Scale (S)", children: "\u2B21" }), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: snapEnabled ? "primary" : "ghost", size: "sm", onClick: () => setSnapEnabled((v) => !v), title: `Snap to Grid (${snapEnabled ? "ON" : "OFF"})`, children: "\uD83E\uDDF2" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => setGizmoSpace((s) => (s === "local" ? "world" : "local")), title: `Orientation: ${gizmoSpace}`, children: gizmoSpace === "local" ? "🔶" : "🌐" }), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => rootObjectRef.current && focusOnObject(rootObjectRef.current), title: "Focus (F)", children: "\u25CE" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => setCameraPreset("front"), title: "Front view (Numpad 1)", children: "1" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => setCameraPreset("right"), title: "Right view (Numpad 3)", children: "3" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => setCameraPreset("top"), title: "Top view (Numpad 7)", children: "7" }), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: deleteSelected, title: "Delete selected (Del)", children: "\uD83D\uDDD1" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: duplicateSelected, title: "Duplicate (Shift+D)", disabled: !selectedNode, children: "\uD83D\uDCCB" })] }));
|
|
8
9
|
});
|
|
9
10
|
ModelEditorToolbar.displayName = "ModelEditorToolbar";
|
|
10
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelEditorToolbar.js","sources":["../../../src/model/ModelEditorToolbar.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelEditorToolbar.js","sources":["../../../src/model/ModelEditorToolbar.tsx"],"sourcesContent":[null],"names":["React","_jsxs","_jsx","NiceButton"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import Ae from 'react';
|
|
3
3
|
import styles from './ModelEditor.module.css.js';
|
|
4
4
|
|
|
5
|
-
const ModelEditorViewport =
|
|
5
|
+
const ModelEditorViewport = Ae.memo(({ api }) => {
|
|
6
6
|
const { mountRef, dragOver, handleDragOver, handleDragLeave, handleDrop, handleViewportClick, handleContextMenu, editorMode, polyCount, meshCount, boneCount, shadingMode, setShadingMode, gizmoSpace, setGizmoSpace, contextMenu, closeContextMenu, addPrimitive, addSceneLight, duplicateSelected, deleteSelected, selectedNode, rootObjectRef, focusOnObject, snapEnabled, setSnapEnabled, } = api;
|
|
7
7
|
return (jsxs(Fragment, { children: [jsxs("div", { ref: mountRef, className: `${styles.viewportContainer} ${dragOver ? styles.dragOver : ""}`, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, onClick: handleViewportClick, onContextMenu: handleContextMenu, children: [jsxs("div", { className: styles.viewportOverlay, children: [jsxs("span", { className: styles.viewportBadge, children: [editorMode.toUpperCase(), " MODE"] }), jsxs("span", { className: styles.viewportBadge, children: [polyCount.toLocaleString(), " tris \u00B7 ", meshCount, " meshes \u00B7 ", boneCount, " bones"] })] }), jsx("div", { className: styles.viewportShadingBar, children: ["wireframe", "solid", "material", "rendered"].map((m) => (jsx("button", { className: `${styles.shadingBtn} ${shadingMode === m ? styles.shadingBtnActive : ""}`, onClick: (e) => { e.stopPropagation(); setShadingMode(m); }, title: m.charAt(0).toUpperCase() + m.slice(1), children: m === "wireframe" ? "◇" : m === "solid" ? "◆" : m === "material" ? "🎨" : "☀" }, m))) }), jsx("div", { className: styles.viewportGizmoInfo, children: jsx("button", { className: styles.shadingBtn, onClick: (e) => {
|
|
8
8
|
e.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelEditorViewport.js","sources":["../../../src/model/ModelEditorViewport.tsx"],"sourcesContent":[null],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAaA,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ModelEditorViewport.js","sources":["../../../src/model/ModelEditorViewport.tsx"],"sourcesContent":[null],"names":["React","_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useRef, useCallback } from 'react';
|
|
3
|
+
import styles from './ModelViewer.module.css.js';
|
|
4
|
+
import { useModelViewer } from './useModelViewer.js';
|
|
5
|
+
import { NiceButton as Ee, NiceSelect as tn, NiceSlider as Jr } from '../ui/dist/index.js';
|
|
6
|
+
|
|
7
|
+
const NAV_LABELS = {
|
|
8
|
+
orbit: '🌍 Orbit',
|
|
9
|
+
fps: '🚶 FPS',
|
|
10
|
+
fly: '✈️ Fly',
|
|
11
|
+
walkthrough: '🏠 Walk',
|
|
12
|
+
};
|
|
13
|
+
const NiceModelViewer = ({ className, showToolbar = true, showStatusBar = true, showInfoPanel = true, toolbarExtra, onFileDrop, children, ...viewerProps }) => {
|
|
14
|
+
const api = useModelViewer(viewerProps);
|
|
15
|
+
const [panelOpen, setPanelOpen] = useState(false);
|
|
16
|
+
const [dragOver, setDragOver] = useState(false);
|
|
17
|
+
const fileInputRef = useRef(null);
|
|
18
|
+
/* ── drag & drop ── */
|
|
19
|
+
const handleDragOver = useCallback((e) => {
|
|
20
|
+
e.preventDefault();
|
|
21
|
+
setDragOver(true);
|
|
22
|
+
}, []);
|
|
23
|
+
const handleDragLeave = useCallback((e) => {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
setDragOver(false);
|
|
26
|
+
}, []);
|
|
27
|
+
const handleDrop = useCallback((e) => {
|
|
28
|
+
var _a;
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
setDragOver(false);
|
|
31
|
+
const file = (_a = e.dataTransfer.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
32
|
+
if (file) {
|
|
33
|
+
onFileDrop === null || onFileDrop === void 0 ? void 0 : onFileDrop(file);
|
|
34
|
+
api.loadFile(file);
|
|
35
|
+
}
|
|
36
|
+
}, [api, onFileDrop]);
|
|
37
|
+
/* ── nav cycle ── */
|
|
38
|
+
const navModes = ['orbit', 'fps', 'fly', 'walkthrough'];
|
|
39
|
+
const cycleNav = useCallback(() => {
|
|
40
|
+
const idx = navModes.indexOf(api.navigationMode);
|
|
41
|
+
api.setNavigationMode(navModes[(idx + 1) % navModes.length]);
|
|
42
|
+
}, [api]);
|
|
43
|
+
return (jsxs("div", { className: `${styles.root} ${className !== null && className !== void 0 ? className : ''}`, children: [showToolbar && (jsxs("div", { className: styles.toolbar, children: [jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", title: "Open file\u2026", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "\uD83D\uDCC2 Open" }), jsx("input", { ref: fileInputRef, type: "file", accept: ".fbx,.glb,.gltf,.obj,.dae,.stl,.ply", style: { display: 'none' }, onChange: (e) => {
|
|
44
|
+
var _a;
|
|
45
|
+
const f = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
46
|
+
if (f)
|
|
47
|
+
api.loadFile(f);
|
|
48
|
+
e.target.value = '';
|
|
49
|
+
} }), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", title: "Navigation mode", onClick: cycleNav, children: NAV_LABELS[api.navigationMode] }), jsx(Ee, { className: styles.toolBtn, variant: api.wireframe ? 'primary' : 'ghost', size: "sm", onClick: () => api.setWireframe(!api.wireframe), title: "Wireframe", children: "\uD83D\uDD32" }), jsx(Ee, { className: styles.toolBtn, variant: api.showGrid ? 'primary' : 'ghost', size: "sm", onClick: () => api.setShowGrid(!api.showGrid), title: "Grid", children: "\u229E" }), jsx(Ee, { className: styles.toolBtn, variant: api.clippingEnabled ? 'primary' : 'ghost', size: "sm", onClick: () => api.setClippingEnabled(!api.clippingEnabled), title: "Clipping plane", children: "\u2702\uFE0F" }), api.clippingEnabled && (jsxs(Fragment, { children: [jsx(tn, { className: styles.animSelect, value: api.clippingAxis, onChange: (val) => api.setClippingAxis(val), options: [
|
|
50
|
+
{ value: 'x', label: 'X' },
|
|
51
|
+
{ value: 'y', label: 'Y' },
|
|
52
|
+
{ value: 'z', label: 'Z' },
|
|
53
|
+
] }), jsx(Jr, { min: -10, max: 10, step: 0.1, value: api.clippingPosition, onChange: (val) => api.setClippingPosition(val), style: { width: 60 } })] })), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: api.zoomToFit, title: "Zoom to fit", children: "\uD83D\uDD0D" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: api.resetCamera, title: "Reset camera", children: "\uD83C\uDFE0" }), jsx("div", { className: styles.toolSep }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: () => {
|
|
54
|
+
const url = api.screenshot();
|
|
55
|
+
const a = document.createElement('a');
|
|
56
|
+
a.href = url;
|
|
57
|
+
a.download = 'screenshot.png';
|
|
58
|
+
a.click();
|
|
59
|
+
}, title: "Screenshot", children: "\uD83D\uDCF7" }), jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: api.toggleFullscreen, title: "Fullscreen", children: api.isFullscreen ? '⊡' : '⛶' }), toolbarExtra, showInfoPanel && (jsx("div", { className: styles.toolRight, children: jsx(Ee, { className: `${styles.toolBtn} ${panelOpen ? styles.active : ''}`, variant: panelOpen ? 'primary' : 'ghost', size: "sm", onClick: () => setPanelOpen(!panelOpen), title: "Info panel", children: "\u2139\uFE0F" }) }))] })), jsxs("div", { className: styles.viewport, ref: api.mountRef, tabIndex: 0, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [api.loading && (jsxs("div", { className: styles.loadingOverlay, children: [jsx("span", { className: styles.loadingText, children: "Loading model\u2026" }), jsx("div", { className: styles.loadingBar, children: jsx("div", { className: styles.loadingBarFill, style: { width: `${(api.loadProgress * 100).toFixed(0)}%` } }) })] })), api.error && (jsxs("div", { className: styles.errorOverlay, children: [jsx("span", { style: { fontSize: 28 }, children: "\u26A0\uFE0F" }), jsx("span", { style: { marginTop: 8 }, children: api.error })] })), dragOver && (jsx("div", { className: styles.dropZone, children: "Drop 3D model file here" }))] }), jsxs("div", { className: `${styles.sidePanel} ${!panelOpen ? styles.hidden : ''}`, children: [jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: "Model Info" }), jsxs("div", { className: styles.panelRow, children: [jsx("label", { children: "Triangles" }), jsx("span", { children: api.polyCount.toLocaleString() })] }), jsxs("div", { className: styles.panelRow, children: [jsx("label", { children: "Meshes" }), jsx("span", { children: api.meshCount })] }), api.dimensions && (jsxs(Fragment, { children: [jsxs("div", { className: styles.panelRow, children: [jsx("label", { children: "Width" }), jsx("span", { children: api.dimensions.width })] }), jsxs("div", { className: styles.panelRow, children: [jsx("label", { children: "Height" }), jsx("span", { children: api.dimensions.height })] }), jsxs("div", { className: styles.panelRow, children: [jsx("label", { children: "Depth" }), jsx("span", { children: api.dimensions.depth })] })] }))] }), jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: "Navigation" }), navModes.map((m) => (jsx(Ee, { className: styles.toolBtn, variant: api.navigationMode === m ? 'primary' : 'ghost', size: "sm", onClick: () => api.setNavigationMode(m), children: NAV_LABELS[m] }, m)))] }), jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: "Auto Rotate" }), jsx(Jr, { min: 0, max: 10, step: 0.5, value: api.autoRotateSpeed, onChange: (val) => api.setAutoRotateSpeed(val), style: { width: '100%' } })] }), api.animations.length > 0 && (jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: "Animations" }), api.animations.map((name, i) => (jsxs(Ee, { className: styles.toolBtn, variant: api.activeAnimIdx === i ? 'primary' : 'ghost', size: "sm", onClick: () => api.playAnimation(i), children: ["\u25B6 ", name] }, i)))] }))] }), jsxs("div", { className: `${styles.animBar} ${api.animations.length === 0 ? styles.hidden : ''}`, children: [jsx(Ee, { className: styles.toolBtn, variant: "ghost", size: "sm", onClick: api.togglePlay, children: api.isPlaying ? '⏸' : '▶' }), jsx(tn, { className: styles.animSelect, value: String(api.activeAnimIdx), onChange: (val) => api.playAnimation(parseInt(val)), options: api.animations.map((n, i) => ({ value: String(i), label: n })) }), jsx(Jr, { className: styles.animSlider, min: 0, max: api.animDuration || 1, step: 0.01, value: api.animTime, onChange: (val) => api.seekAnim(val) }), jsxs("span", { className: styles.toolLabel, children: [api.animTime.toFixed(1), "s / ", api.animDuration.toFixed(1), "s"] })] }), showStatusBar && (jsxs("div", { className: styles.statusBar, children: [jsx("span", { children: api.statusText }), jsxs("div", { className: styles.statusRight, children: [jsx("span", { children: NAV_LABELS[api.navigationMode] }), api.dimensions && (jsxs("span", { children: [api.dimensions.width, "\u00D7", api.dimensions.height, "\u00D7", api.dimensions.depth] }))] })] })), children === null || children === void 0 ? void 0 : children(api)] }));
|
|
60
|
+
};
|
|
61
|
+
/** @deprecated Use NiceModelViewer */
|
|
62
|
+
const ModelViewer = NiceModelViewer;
|
|
63
|
+
|
|
64
|
+
export { ModelViewer, NiceModelViewer };
|
|
65
|
+
//# sourceMappingURL=ModelViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelViewer.js","sources":["../../../src/model/ModelViewer.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","NiceButton","_Fragment","NiceSelect","NiceSlider"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var styles = {"root":"ModelViewer-module_root__6Fbj3","toolbar":"ModelViewer-module_toolbar__EQJRN","toolBtn":"ModelViewer-module_toolBtn__f9833","active":"ModelViewer-module_active__MgURC","toolSep":"ModelViewer-module_toolSep__5zuAK","toolLabel":"ModelViewer-module_toolLabel__PcpJC","toolRight":"ModelViewer-module_toolRight__VSuzD","viewport":"ModelViewer-module_viewport__-1llx","loadingOverlay":"ModelViewer-module_loadingOverlay__Ayyci","loadingBar":"ModelViewer-module_loadingBar__RDqVv","loadingBarFill":"ModelViewer-module_loadingBarFill__zvIoP","loadingText":"ModelViewer-module_loadingText__6OGeA","errorOverlay":"ModelViewer-module_errorOverlay__ASUqN","sidePanel":"ModelViewer-module_sidePanel__-QFkd","hidden":"ModelViewer-module_hidden__yoMuq","panelSection":"ModelViewer-module_panelSection__bH-O3","panelTitle":"ModelViewer-module_panelTitle__xsn3e","panelRow":"ModelViewer-module_panelRow__3QxnD","animBar":"ModelViewer-module_animBar__qcYi5","animSlider":"ModelViewer-module_animSlider__9AQzN","animSelect":"ModelViewer-module_animSelect__LhFWD","statusBar":"ModelViewer-module_statusBar__-3uuA","statusRight":"ModelViewer-module_statusRight__vI51s","dropZone":"ModelViewer-module_dropZone__eNrPo"};
|
|
2
|
+
|
|
3
|
+
export { styles as default };
|
|
4
|
+
//# sourceMappingURL=ModelViewer.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelViewer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|