1+ /* eslint-disable indent */
12/* eslint-disable multiline-ternary */
2- import React , { useEffect , useState } from 'react'
3+ import { useEffect , useState , createElement } from 'react'
34import { Text , TouchableOpacity , View } from 'react-native'
45import addons from '@storybook/addons'
56
67const ADDON_ID = 'storybook-addon-ondevice-themed-stylesheet'
78const PANEL_ID = `${ ADDON_ID } /panel`
89
9- const Button = ( { mode, active, setMode } ) => (
10- < TouchableOpacity
11- style = { {
12- borderRadius : 5 ,
13- borderWidth : 1 ,
14- borderColor : 'rgba(0,0,0,0.5)' ,
15- padding : 10 ,
16- marginHorizontal : 10 ,
17- marginVertical : 5 ,
18- backgroundColor : active ? 'black' : 'white'
19- } }
20- onPress = { ( ) => setMode ( mode ) }
21- >
22- < Text style = { { textAlign : 'center' , color : active ? 'white' : 'black' } } >
23- { mode . toUpperCase ( ) }
24- </ Text >
25- </ TouchableOpacity >
26- )
10+ const Button = ( { mode, active, setMode } ) =>
11+ createElement (
12+ TouchableOpacity ,
13+ {
14+ style : {
15+ borderRadius : 5 ,
16+ borderWidth : 1 ,
17+ borderColor : 'rgba(0,0,0,0.5)' ,
18+ padding : 10 ,
19+ marginHorizontal : 10 ,
20+ marginVertical : 5 ,
21+ backgroundColor : active ? 'black' : 'white'
22+ } ,
23+ onPress : ( ) => setMode ( mode )
24+ } ,
25+ createElement (
26+ Text ,
27+ { style : { textAlign : 'center' , color : active ? 'white' : 'black' } } ,
28+ mode . toUpperCase ( )
29+ )
30+ )
2731
2832const ThemePanel = ( { channel } ) => {
2933 const [ currentMode , setCurrentMode ] = useState ( null )
@@ -35,25 +39,29 @@ const ThemePanel = ({ channel }) => {
3539 useEffect ( ( ) => {
3640 currentMode && channel . emit ( 'setMode' , currentMode )
3741 } , [ currentMode ] )
38- return currentMode ? (
39- < View >
40- { [ 'auto' , 'light' , 'dark' ] . map ( m => (
41- < View key = { m } >
42- < Button
43- mode = { m }
44- active = { currentMode === m }
45- setMode = { setCurrentMode }
46- />
47- </ View >
48- ) ) }
49- </ View >
50- ) : null
42+ return currentMode
43+ ? createElement (
44+ View ,
45+ null ,
46+ [ 'auto' , 'light' , 'dark' ] . map ( m =>
47+ createElement (
48+ View ,
49+ { key : m } ,
50+ createElement ( Button , {
51+ mode : m ,
52+ active : currentMode === m ,
53+ setMode : setCurrentMode
54+ } )
55+ )
56+ )
57+ )
58+ : null
5159}
5260
5361addons . register ( ADDON_ID , ( ) => {
5462 const channel = addons . getChannel ( )
5563 addons . addPanel ( PANEL_ID , {
5664 title : 'Theme' ,
57- render : ( ) => < ThemePanel channel = { channel } />
65+ render : ( ) => createElement ( ThemePanel , { channel } , null )
5866 } )
5967} )
0 commit comments