ai-chatbot/packages/editor/src/lib/local-guide-image.ts

43 lines
901 B
TypeScript

import {
type AnyNodeId,
GuideNode,
type GuideNode as GuideNodeType,
saveAsset,
} from '@pascal-app/core'
export function getGuideImageName(filename: string) {
const trimmed = filename.trim()
if (!trimmed) {
return 'Guide image'
}
const dotIndex = trimmed.lastIndexOf('.')
return dotIndex > 0 ? trimmed.slice(0, dotIndex) : trimmed
}
export async function createLocalGuideImage({
createNode,
file,
levelId,
position = [0, 0, 0],
}: {
createNode: (node: GuideNodeType, parentId: AnyNodeId) => void
file: File
levelId: string
position?: [number, number, number]
}) {
const assetUrl = await saveAsset(file)
const guide = GuideNode.parse({
name: getGuideImageName(file.name),
url: assetUrl,
position,
rotation: [0, 0, 0],
scale: 1,
opacity: 50,
scaleReference: null,
})
createNode(guide, levelId as AnyNodeId)
return guide
}