1- import React , { useEffect , useRef , useState } from 'react' ;
1+ import React , { useEffect , useRef } from 'react' ;
22import { environment } from '#store/environment' ;
33import { observer } from 'mobx-react' ;
44import { exportSprite } from '#formats/image' ;
@@ -7,14 +7,12 @@ import rotSprite, {
77 addMarginToImageData ,
88 getRotateDiagonal ,
99} from '#util/rotsprite' ;
10- import { Input , Slider , Item , SelectBase , Button , Modal } from '#ui' ;
10+ import { Input , Slider , Item , Button , Modal } from '#ui' ;
1111import { mappingState } from './state' ;
1212
1313export const Rotate = observer ( ( ) => {
1414 const canvasRef = useRef ( ) ;
1515
16- const [ value , setValue ] = useState ( 0 ) ;
17-
1816 useEffect ( ( ) => {
1917 if ( ! canvasRef . current ) return ;
2018 const spriteCanv = exportSprite ( environment . currentSprite ) ;
@@ -75,42 +73,55 @@ export const Rotate = observer(() => {
7573 return value ;
7674 } ;
7775
78- // mappingState.rotateShow
76+ const { active } = mappingState . rotate ;
7977
8078 return (
81- < >
82- { String ( ! ! value ) }
83- < SelectBase
84- options = { [ ...Array ( 2 ) . keys ( ) ] . map ( ( d ) => String ( d ) ) }
85- value = { value }
86- onChange = { ( e ) => setValue ( e . value === '1' ) }
87- />
88-
89- < Modal
90- className = "rotsprite"
91- spring = { {
92- top : value ? - 150 : 50 ,
93- opacity : value ? 1 : 0.5 ,
94- } }
95- >
96- < Item > Rotate Sprite</ Item >
97- < canvas ref = { canvasRef } />
98- < Input
99- store = { mappingState . rotate }
100- assert = { assertInput }
101- accessor = "angle"
102- isNumber
103- />
104- < Slider
105- min = "0"
106- step = "1"
107- max = "360"
108- store = { mappingState . rotate }
109- accessor = "angle"
110- />
79+ < Modal
80+ className = "rotsprite"
81+ spring = { {
82+ top : active ? 15 : - 100 ,
83+ opacity : active ? 1 : 0 ,
84+ } }
85+ >
86+ < Item > Rotate Sprite</ Item >
87+ < canvas ref = { canvasRef } />
88+ < div className = "angles" >
89+ < div className = "numbers" >
90+ { Array . from ( { length : 8 } , ( _ , i ) => {
91+ const angle = i * 45 ;
92+ return (
93+ < Button
94+ key = { i }
95+ onClick = { ( ) => {
96+ mappingState . rotate . angle = angle ;
97+ } }
98+ >
99+ { angle }
100+ </ Button >
101+ ) ;
102+ } ) }
103+ < Input
104+ store = { mappingState . rotate }
105+ assert = { assertInput }
106+ accessor = "angle"
107+ isNumber
108+ />
109+ </ div >
110+
111+ < Slider
112+ min = "0"
113+ step = "1"
114+ max = "360"
115+ store = { mappingState . rotate }
116+ accessor = "angle"
117+ />
118+ </ div >
119+ < div className = "actions" >
120+ < Button color = "magenta" onClick = { mappingState . toggleRotate } >
121+ close
122+ </ Button >
111123 < Button color = "red" > Reimport</ Button >
112- < Button color = "magenta" > close</ Button >
113- </ Modal >
114- </ >
124+ </ div >
125+ </ Modal >
115126 ) ;
116127} ) ;
0 commit comments