'use client' import { Suspense } from 'react' import { Canvas } from '@react-three/fiber' import { Stage, OrbitControls } from '@react-three/drei' import { useLoader } from '@react-three/fiber' import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js' function resolveAssetUrl(requestedUrl: string, assetUrls: Record) { if (requestedUrl.startsWith('blob:') || requestedUrl.startsWith('data:')) { return requestedUrl } const cleanUrl = decodeURIComponent(requestedUrl.split(/[?#]/)[0] || '') const filename = cleanUrl.split(/[\\/]/).pop()?.toLowerCase() return filename ? assetUrls[filename] || requestedUrl : requestedUrl } function Model({ url, assetUrls }: { url: string; assetUrls: Record }) { const { scene } = useLoader(GLTFLoader, url, (loader) => { loader.manager.setURLModifier((requestedUrl) => resolveAssetUrl(requestedUrl, assetUrls)) }) return } export default function SceneViewer({ url, assetUrls }: { url: string; assetUrls: Record }) { return ( ) }