Files
editor/packages/viewer/src/hooks/use-asset-url.ts
T
2026-01-29 09:38:24 +09:00

24 lines
590 B
TypeScript

import { loadAssetUrl } from '@pascal-app/core'
import { useEffect, useState } from 'react'
/**
* Resolves an asset:// URL to a blob URL for use with Three.js loaders.
* Returns null while loading or if resolution fails.
*/
export function useAssetUrl(url: string): string | null {
const [resolved, setResolved] = useState<string | null>(null)
useEffect(() => {
let cancelled = false
setResolved(null)
loadAssetUrl(url).then((result) => {
if (!cancelled) setResolved(result)
})
return () => {
cancelled = true
}
}, [url])
return resolved
}