@@ -3,12 +3,34 @@ import Head from "next/head";
33import type { NextPage } from "next" ;
44
55import { Canvas , View , Layer , Rectangle } from "react-paper-renderer" ;
6- import styles from "../styles/Home.module.css" ;
6+ import styles from "../styles/Styles.module.css" ;
7+
8+ function move ( arr : any [ ] , from : number , to : number ) {
9+ return arr . reduce ( ( prev , current , idx , self ) => {
10+ if ( from === to ) prev . push ( current ) ;
11+ if ( idx === from ) return prev ;
12+ if ( from < to ) prev . push ( current ) ;
13+ if ( idx === to ) prev . push ( self [ from ] ) ;
14+ if ( from > to ) prev . push ( current ) ;
15+ return prev ;
16+ } , [ ] ) ;
17+ }
718
819const Home : NextPage = ( ) => {
9- const [ color , setColor ] = useState ( "#000000" ) ;
20+ const [ rects , setRects ] = useState ( [
21+ { id : 1 , center : [ 100 , 100 ] , fillColor : "red" , size : [ 50 , 50 ] } ,
22+ { id : 2 , center : [ 120 , 120 ] , fillColor : "green" , size : [ 50 , 50 ] } ,
23+ { id : 3 , center : [ 140 , 140 ] , fillColor : "orange" , size : [ 50 , 50 ] } ,
24+ ] ) ;
25+ const [ visible , setVisible ] = useState ( true ) ;
26+ const [ visible2 , setVisible2 ] = useState ( true ) ;
27+ const [ color , setColor ] = useState ( "black" ) ;
28+ const [ color2 , setColor2 ] = useState ( "white" ) ;
1029 const onClick = ( ) => {
11- setColor ( color === "#000000" ? "#ff0000" : "#000000" ) ;
30+ setColor ( color === "black" ? "white" : "black" ) ;
31+ } ;
32+ const onClick2 = ( ) => {
33+ setColor2 ( color2 === "black" ? "white" : "black" ) ;
1234 } ;
1335 return (
1436 < >
@@ -18,18 +40,45 @@ const Home: NextPage = () => {
1840 < link rel = "icon" href = "/favicon.ico" />
1941 </ Head >
2042 < div className = { styles . container } >
21- < Canvas width = { 800 } height = { 600 } >
22- < View >
23- < Layer >
24- < Rectangle
25- center = { [ 200 , 200 ] }
26- fillColor = { color }
27- size = { [ 100 , 100 ] }
28- onClick = { onClick }
29- />
30- </ Layer >
31- </ View >
32- </ Canvas >
43+ < div >
44+ < button onClick = { ( ) => setVisible ( ! visible ) } > canvas1</ button >
45+ < button onClick = { ( ) => setVisible2 ( ! visible2 ) } > canvas2</ button >
46+ </ div >
47+ { visible && (
48+ < Canvas className = { styles . canvas } width = { 400 } height = { 300 } >
49+ < View >
50+ < Layer >
51+ < Rectangle
52+ center = { [ 75 , 75 ] }
53+ fillColor = { color }
54+ size = { [ 50 , 50 ] }
55+ onClick = { onClick }
56+ />
57+ { rects . map ( ( rect ) => (
58+ < Rectangle
59+ { ...rect }
60+ key = { rect . id }
61+ onClick = { ( ) => setRects ( move ( rects , 0 , 2 ) ) }
62+ />
63+ ) ) }
64+ </ Layer >
65+ </ View >
66+ </ Canvas >
67+ ) }
68+ { visible2 && (
69+ < Canvas className = { styles . canvas } width = { 400 } height = { 300 } >
70+ < View >
71+ < Layer >
72+ < Rectangle
73+ center = { [ 200 , 100 ] }
74+ fillColor = { color2 }
75+ size = { [ 100 , 100 ] }
76+ onClick = { onClick2 }
77+ />
78+ </ Layer >
79+ </ View >
80+ </ Canvas >
81+ ) }
3382 </ div >
3483 </ >
3584 ) ;
0 commit comments