diff --git a/package.json b/package.json index 8f87090ec..22c2d81fc 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "@primevue/icons": "catalog:", "@primevue/themes": "catalog:", "@sentry/vue": "catalog:", + "@sparkjsdev/spark": "catalog:", "@tiptap/core": "^2.10.4", "@tiptap/extension-link": "^2.10.4", "@tiptap/extension-table": "^2.10.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fec5ae471..2188bf0e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,9 @@ catalogs: '@sentry/vue': specifier: ^8.48.0 version: 8.48.0 + '@sparkjsdev/spark': + specifier: ^0.1.10 + version: 0.1.10 '@storybook/addon-docs': specifier: ^10.1.9 version: 10.1.9 @@ -374,6 +377,9 @@ importers: '@sentry/vue': specifier: 'catalog:' version: 8.48.0(pinia@2.2.2(typescript@5.9.3)(vue@3.5.13(typescript@5.9.3)))(vue@3.5.13(typescript@5.9.3)) + '@sparkjsdev/spark': + specifier: 'catalog:' + version: 0.1.10 '@tiptap/core': specifier: ^2.10.4 version: 2.10.4(@tiptap/pm@2.10.4) @@ -3112,6 +3118,9 @@ packages: '@sinclair/typebox@0.34.40': resolution: {integrity: sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==} + '@sparkjsdev/spark@0.1.10': + resolution: {integrity: sha512-CiijdZQuj7KPDUqIZPiEqyUkJCYo1JqR05vq/V+ElxMwqR7L70ZuZDyIKcasjZHSiPB8pGRMH8HZGqUKO9aRPQ==} + '@storybook/addon-docs@10.1.9': resolution: {integrity: sha512-SvwEZ32lyk5p3PRmE3pmfAhs4HMiVo5zxjTBVmK9kgz9zGgWCTlikb56tJ998hVe52CFyCvt3I9rkHeYMCKPww==} peerDependencies: @@ -10857,6 +10866,10 @@ snapshots: '@sinclair/typebox@0.34.40': {} + '@sparkjsdev/spark@0.1.10': + dependencies: + fflate: 0.8.2 + '@storybook/addon-docs@10.1.9(@types/react@19.1.9)(esbuild@0.27.1)(rollup@4.53.5)(storybook@10.1.9(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.8.2))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.1.9)(react@19.2.3) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fb28dcf63..589020fe0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -27,6 +27,7 @@ catalog: '@primevue/themes': ^4.2.5 '@sentry/vite-plugin': ^4.6.0 '@sentry/vue': ^8.48.0 + '@sparkjsdev/spark': ^0.1.10 '@storybook/addon-docs': ^10.1.9 '@storybook/vue3': ^10.1.9 '@storybook/vue3-vite': ^10.1.9 diff --git a/src/components/load3d/Load3D.vue b/src/components/load3d/Load3D.vue index e71024cb1..befc1f322 100644 --- a/src/components/load3d/Load3D.vue +++ b/src/components/load3d/Load3D.vue @@ -22,6 +22,8 @@ v-model:model-config="modelConfig" v-model:camera-config="cameraConfig" v-model:light-config="lightConfig" + :is-splat-model="isSplatModel" + :is-ply-model="isPlyModel" @update-background-image="handleBackgroundImageUpdate" @export-model="handleExportModel" /> @@ -109,6 +111,8 @@ const { // other state isRecording, isPreview, + isSplatModel, + isPlyModel, hasRecording, recordingDuration, animations, diff --git a/src/components/load3d/Load3DControls.vue b/src/components/load3d/Load3DControls.vue index 41853f03f..7a199da2a 100644 --- a/src/components/load3d/Load3DControls.vue +++ b/src/components/load3d/Load3DControls.vue @@ -47,6 +47,8 @@ v-if="showModelControls" v-model:material-mode="modelConfig!.materialMode" v-model:up-direction="modelConfig!.upDirection" + :hide-material-mode="isSplatModel" + :is-ply-model="isPlyModel" /> () + const sceneConfig = defineModel('sceneConfig') const modelConfig = defineModel('modelConfig') const cameraConfig = defineModel('cameraConfig') @@ -101,6 +108,10 @@ const categoryLabels: Record = { } const availableCategories = computed(() => { + if (isSplatModel) { + return ['scene', 'model', 'camera'] + } + return ['scene', 'model', 'camera', 'light', 'export'] }) diff --git a/src/components/load3d/Load3dViewerContent.vue b/src/components/load3d/Load3dViewerContent.vue index 1f794a946..8365c7b7f 100644 --- a/src/components/load3d/Load3dViewerContent.vue +++ b/src/components/load3d/Load3dViewerContent.vue @@ -46,6 +46,8 @@ @@ -56,13 +58,13 @@ /> -
+
-
+
diff --git a/src/components/load3d/controls/ModelControls.vue b/src/components/load3d/controls/ModelControls.vue index eae0092e9..f2836691f 100644 --- a/src/components/load3d/controls/ModelControls.vue +++ b/src/components/load3d/controls/ModelControls.vue @@ -28,7 +28,7 @@
-
+
-
+