import { useEffect, useState } from 'preact/hooks' import { useLocale } from '../../contexts/index.js' import { useCanvas } from '../../hooks/index.js' import { decorator } from '../../previews/index.js' import { randomSeed } from '../../Utils.js' import { Btn } from '../index.js' import type { PreviewProps } from './index.js' export const DecoratorPreview = ({ data, version, shown }: PreviewProps) => { const { locale } = useLocale() const [scale, setScale] = useState(4) const [seed, setSeed] = useState(randomSeed()) const state = JSON.stringify(data) const { canvas, redraw } = useCanvas({ size() { return [scale * 16, scale * 16] }, async draw(img) { decorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] }) }, }, [version, state, seed]) useEffect(() => { if (shown) { redraw() } }, [version, state, scale, seed, shown]) return <>
setScale(Math.min(16, scale + 1))} /> setScale(Math.max(1, scale - 1))} /> setSeed(randomSeed())} />
}