Skip to content

Commit 4926cb2

Browse files
authored
Merge pull request #887 from popcodeorg/revert-859-#815-external-starter-code
Revert "Insert popcode JS and CSS libraries on the top of the head tag"
2 parents 27ab3e2 + cb2bf5f commit 4926cb2

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/util/generatePreview.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import castArray from 'lodash/castArray';
22
import pick from 'lodash/pick';
3+
import base64 from 'base64-js';
34
import loopBreaker from 'loop-breaker';
45
import libraries from '../config/libraries';
56
import previewFrameLibraries from '../config/previewFrameLibraries';
67

8+
const textEncoder = new TextEncoder('utf-8');
79
const parser = new DOMParser();
810

911
const sourceDelimiter = '/*__POPCODESTART__*/';
@@ -183,15 +185,18 @@ class PreviewGenerator {
183185
_attachCssLibrary(css) {
184186
const linkTag = this.previewDocument.createElement('link');
185187
linkTag.rel = 'stylesheet';
186-
linkTag.innerHTML = css;
187-
this._previewHead.insertBefore(linkTag, this._previewHead.firstChild);
188+
189+
const base64encoded = base64.fromByteArray(textEncoder.encode(css));
190+
linkTag.href = `data:text/css;charset=utf-8;base64,${base64encoded}`;
191+
this._previewHead.appendChild(linkTag);
188192
}
189193

190194
_attachJavascriptLibrary(javascript) {
191195
const scriptTag = this.previewDocument.createElement('script');
192-
const javascriptText = String(javascript);
193-
scriptTag.innerHTML = javascriptText.replace(/<\/script>/g, '<\\/script>');
194-
this._previewHead.insertBefore(scriptTag, this._previewHead.firstChild);
196+
const base64encoded = base64.fromByteArray(textEncoder.encode(javascript));
197+
scriptTag.src =
198+
`data:text/javascript;charset=utf-8;base64,${base64encoded}`;
199+
this.previewBody.appendChild(scriptTag);
195200
}
196201
}
197202

0 commit comments

Comments
 (0)