mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-27 00:38:46 +00:00
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { DataModel } from '@mcschema/core'
|
|
import { Path } from '@mcschema/core'
|
|
import { useState } from 'preact/hooks'
|
|
import { useModel } from '../hooks'
|
|
import type { VersionId } from '../Schemas'
|
|
import { BiomeSourcePreview, DecoratorPreview, NoiseSettingsPreview } from './previews'
|
|
|
|
export const HasPreview = ['dimension', 'worldgen/noise_settings', 'worldgen/configured_feature']
|
|
|
|
type PreviewPanelProps = {
|
|
lang: string,
|
|
model: DataModel | null,
|
|
version: VersionId,
|
|
id: string,
|
|
shown: boolean,
|
|
onError: (message: string) => unknown,
|
|
}
|
|
export function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {
|
|
const [, setCount] = useState(0)
|
|
|
|
useModel(model, () => {
|
|
setCount(count => count + 1)
|
|
})
|
|
|
|
if (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {
|
|
const data = model.get(new Path(['generator', 'biome_source']))
|
|
if (data) return <BiomeSourcePreview {...{ lang, model, version, shown, data }} />
|
|
}
|
|
|
|
if (id === 'worldgen/noise_settings' && model) {
|
|
const data = model.get(new Path(['noise']))
|
|
if (data) return <NoiseSettingsPreview {...{ lang, model, version, shown, data }} />
|
|
}
|
|
|
|
if (id === 'worldgen/configured_feature' && model) {
|
|
const data = model.get(new Path([]))
|
|
if (data) return <DecoratorPreview {...{ lang, model, version, shown, data }} />
|
|
}
|
|
|
|
return <></>
|
|
}
|