1
- import React from 'react' ;
1
+ import React , { Fragment , useEffect , useState , lazy , useRef } from 'react' ;
2
2
import Grid from '@material-ui/core/Grid' ;
3
3
import { makeStyles } from '@material-ui/core/styles' ;
4
4
import Typography from '@material-ui/core/Typography' ;
@@ -24,10 +24,6 @@ const CodeEditor = dynamic(import('./code-editor'), {
24
24
ssr : false
25
25
} ) ;
26
26
27
- const reqSource = require . context ( '!raw-loader!@docs/examples' , true , / \. j s / ) ;
28
- const reqCss = require . context ( '!raw-loader!@docs/examples' , true , / \. c s s / ) ;
29
- const req = require . context ( '@docs/examples' , true , / \. j s / ) ;
30
-
31
27
const useStyles = makeStyles ( ( theme ) => ( {
32
28
codeWrapper : {
33
29
background : '#1D1F21' ,
@@ -138,23 +134,16 @@ const getPayload = (type, code, sourceFiles = {}) =>
138
134
} ) ;
139
135
140
136
const CodeExample = ( { source, mode, mapper, additionalSources } ) => {
137
+ const { current : Component } = useRef ( mode === 'preview' ? dynamic ( import ( `@docs/examples/${ source } ` ) ) : Fragment )
138
+ const [ codeSource , setCodeSource ] = useState ( '' ) ;
139
+ const sourceFiles = [ ] ;
140
+ useEffect ( ( ) => {
141
+ import ( `!raw-loader!@docs/examples/${ source } ` ) . then ( file => {
142
+ setCodeSource ( file . default )
143
+ } )
144
+ } , [ source ] )
141
145
const classes = useStyles ( ) ;
142
- const codeSource = reqSource ( `./${ source } .js` ) . default ;
143
- let Component ;
144
146
if ( mode === 'preview' ) {
145
- Component = req ( `./${ source } .js` ) . default ;
146
- const sourceFiles = additionalSources
147
- ? additionalSources . split ( ',' ) . reduce (
148
- ( acc , curr ) => ( {
149
- ...acc ,
150
- [ `src/${ curr . split ( '/' ) . pop ( ) } ` ] : {
151
- content : curr . match ( / \. c s s $ / ) ? reqCss ( `./${ curr } ` ) . default : reqSource ( `./${ curr } ` ) . default
152
- }
153
- } ) ,
154
- { }
155
- )
156
- : { } ;
157
-
158
147
return (
159
148
< Grid container spacing = { 0 } className = "DocRawComponent" >
160
149
< Grid item xs = { 12 } >
0 commit comments