@@ -3,6 +3,12 @@ import buildError from './utils/error-message-builder';
33import evalModule , { deleteCache } from './eval' ;
44import NoDomChangeError from './errors/no-dom-change-error' ;
55
6+ import {
7+ getBoilerplates ,
8+ evalBoilerplates ,
9+ findBoilerplate ,
10+ } from './boilerplates' ;
11+
612const host = process . env . NODE_ENV === 'development'
713 ? 'http://codesandbox.dev/'
814 : 'https://codesandbox.io/' ;
@@ -88,6 +94,15 @@ async function compile(message) {
8894 return ;
8995 }
9096
97+ // initiate boilerplates
98+ if (
99+ boilerplates . length !== 0 &&
100+ getBoilerplates ( ) . length === 0 &&
101+ manifest != null
102+ ) {
103+ evalBoilerplates ( boilerplates , modules , directories , manifest ) ;
104+ }
105+
91106 const extResString = getExternalResourcesConcatination ( externalResources ) ;
92107 if ( extResString !== cachedExternalResources ) {
93108 clearExternalResources ( ) ;
@@ -106,7 +121,12 @@ async function compile(message) {
106121 const isReact = module . code . includes ( 'react' ) ;
107122 const functionName = evalled . default ? evalled . default . name : '' ;
108123
109- throw new NoDomChangeError ( isReact , functionName ) ;
124+ if ( isReact ) {
125+ const boilerplate = findBoilerplate ( module ) ;
126+ boilerplate . module . default ( evalled ) ;
127+ } else {
128+ throw new NoDomChangeError ( isReact , functionName ) ;
129+ }
110130 }
111131
112132 window . parent . postMessage (
0 commit comments