@@ -5,6 +5,7 @@ import type { mat3, mat4 } from 'gl-matrix'
5
5
import { useCallback , useEffect , useRef , useState } from 'preact/hooks'
6
6
import { getProjectData , useLocale , useProject , useVersion } from '../../contexts/index.js'
7
7
import { useAsync } from '../../hooks/useAsync.js'
8
+ import { useLocalStorage } from '../../hooks/useLocalStorage.js'
8
9
import { Store } from '../../Store.js'
9
10
import { iterateWorld2D , randomSeed } from '../../Utils.js'
10
11
import { Btn , BtnMenu , NumberInput } from '../index.js'
@@ -17,13 +18,12 @@ import { InteractiveCanvas2D } from './InteractiveCanvas2D.jsx'
17
18
import { InteractiveCanvas3D } from './InteractiveCanvas3D.jsx'
18
19
19
20
const MODES = [ 'side' , 'top' , '3d' ] as const
20
- type Mode = typeof MODES [ number ]
21
21
22
22
export const DensityFunctionPreview = ( { data, shown } : PreviewProps ) => {
23
23
const { locale } = useLocale ( )
24
24
const { project } = useProject ( )
25
25
const { version } = useVersion ( )
26
- const [ mode , setMode ] = useState < Mode > ( 'side' )
26
+ const [ mode , setMode ] = useLocalStorage ( 'misode_density_function_mode' , 'side' )
27
27
const voxelMode = mode === '3d'
28
28
const topDown = mode === 'top'
29
29
const [ seed , setSeed ] = useState ( randomSeed ( ) )
@@ -130,7 +130,7 @@ export const DensityFunctionPreview = ({ data, shown }: PreviewProps) => {
130
130
< span > { locale ( topDown ? 'y' : 'z' ) } </ span >
131
131
< NumberInput value = { offset } onChange = { setOffset } />
132
132
</ div > }
133
- < BtnMenu icon = "package" >
133
+ < BtnMenu label = { locale ( `mode. ${ mode } ` ) } >
134
134
{ MODES . map ( m => < Btn label = { locale ( `mode.${ m } ` ) } active = { mode == m } onClick = { ( ) => setMode ( m ) } /> ) }
135
135
</ BtnMenu >
136
136
< Btn icon = "sync" tooltip = { locale ( 'generate_new_seed' ) }
0 commit comments