@@ -60,7 +60,6 @@ function playground_text(playground) {
60
60
mac : "Ctrl-Enter"
61
61
} ,
62
62
exec : _editor => {
63
- console . log ( code_block . classList . contains ( "wasm" ) ) ;
64
63
if ( code_block . classList . contains ( "wasm" ) ) {
65
64
run_wasm_pack_code ( playground_block ) ;
66
65
} else {
@@ -161,18 +160,16 @@ function playground_text(playground) {
161
160
162
161
result_block . innerText = "Running..." ;
163
162
164
- prepareSandbox ( params ) . then ( src => processHTML ( src ) ) . then ( html => {
165
- result_block . innerText = "" ;
166
- var iframe = document . createElement ( 'iframe' ) ;
167
- iframe . style . height = "100%" ;
168
- iframe . style . width = "100%" ;
169
- iframe . style . padding = 0 ;
170
- iframe . style . margin = 0 ;
171
- iframe . style . border = 0 ;
172
- iframe . src = createObjectURL ( html , "text/html" ) ;
173
- result_block . appendChild ( iframe ) ;
174
- } ) ;
163
+ prepareSandbox ( params )
164
+ . then ( src => processHTML ( src ) )
165
+ . then ( html => {
166
+ result_block . innerText = "" ;
167
+ var iframe = createIFrame ( html ) ;
168
+ result_block . appendChild ( iframe ) ;
169
+ } )
170
+ . catch ( error => result_block . innerText = "Playground Communication: " + error . message ) ;
175
171
}
172
+
176
173
// Greatly inspired from WebAssemblyStudio
177
174
async function prepareSandbox ( params ) {
178
175
var wasmResult = fetch_with_timeout ( "http://127.0.0.1:9999/wasm-pack" , {
@@ -184,22 +181,25 @@ function playground_text(playground) {
184
181
body : JSON . stringify ( params )
185
182
} )
186
183
. then ( response => response . json ( ) )
187
- . then ( ( { wasm_js, wasm_bg } ) => {
184
+ . then ( ( { wasm_js, wasm_bg, error } ) => {
185
+ if ( error ) {
186
+ throw new Error ( error ) ;
187
+ }
188
+
188
189
return {
189
190
wasm_js : atob ( wasm_js ) ,
190
191
wasm_bg : base64ToByteArray ( wasm_bg )
191
192
}
192
193
} )
193
- . catch ( error => result_block . innerText = "Playground Communication: " + error . message ) ;
194
194
195
195
var htmlSrc = fetch ( new Request ( "iframe.html" ) )
196
196
. then ( response => response . text ( ) ) ;
197
197
var jsSrc = fetch ( new Request ( "wasm-entry.mjs" ) )
198
198
. then ( response => response . text ( ) ) ;
199
199
200
200
return Promise . all ( [ htmlSrc , jsSrc , wasmResult ] )
201
- . catch ( error => console . log ( error ) ) ;
202
201
}
202
+
203
203
function base64ToByteArray ( src ) {
204
204
var decode = atob ( src ) ;
205
205
const byteNumbers = new Array ( decode . length ) ;
@@ -208,6 +208,7 @@ function playground_text(playground) {
208
208
}
209
209
return new Uint8Array ( byteNumbers ) ;
210
210
}
211
+
211
212
async function processHTML ( [ htmlSrc , jsSrc , { wasm_js, wasm_bg } ] ) {
212
213
var src = rewriteJS ( jsSrc , wasm_js , wasm_bg ) ;
213
214
var jsBlob = createObjectURL ( src , "application/javascript" ) ;
@@ -230,11 +231,22 @@ function playground_text(playground) {
230
231
} )
231
232
return src
232
233
}
233
-
234
+
234
235
function createObjectURL ( src , mime ) {
235
236
return URL . createObjectURL ( new Blob ( [ src ] , { type : mime } ) ) ;
236
237
}
237
238
239
+ function createIFrame ( src ) {
240
+ var iframe = document . createElement ( 'iframe' ) ;
241
+ iframe . style . height = "100%" ;
242
+ iframe . style . width = "100%" ;
243
+ iframe . style . padding = 0 ;
244
+ iframe . style . margin = 0 ;
245
+ iframe . style . border = 0 ;
246
+ iframe . src = createObjectURL ( src , "text/html" ) ;
247
+ return iframe
248
+ }
249
+
238
250
// Syntax highlighting Configuration
239
251
hljs . configure ( {
240
252
tabReplace : ' ' , // 4 spaces
0 commit comments