1- import React from 'react' ;
1+ import React , { Fragment , useEffect , useState , lazy , useRef } from 'react' ;
22import Grid from '@material-ui/core/Grid' ;
33import { makeStyles } from '@material-ui/core/styles' ;
44import Typography from '@material-ui/core/Typography' ;
@@ -24,10 +24,6 @@ const CodeEditor = dynamic(import('./code-editor'), {
2424 ssr : false
2525} ) ;
2626
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-
3127const useStyles = makeStyles ( ( theme ) => ( {
3228 codeWrapper : {
3329 background : '#1D1F21' ,
@@ -138,23 +134,16 @@ const getPayload = (type, code, sourceFiles = {}) =>
138134 } ) ;
139135
140136const 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 ] )
141145 const classes = useStyles ( ) ;
142- const codeSource = reqSource ( `./${ source } .js` ) . default ;
143- let Component ;
144146 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-
158147 return (
159148 < Grid container spacing = { 0 } className = "DocRawComponent" >
160149 < Grid item xs = { 12 } >
0 commit comments