Skip to content

Instantly share code, notes, and snippets.

@olegpolyakov
Created December 19, 2018 14:49
Show Gist options
  • Save olegpolyakov/2ecd77a684afa1615de7023029a8688c to your computer and use it in GitHub Desktop.
Save olegpolyakov/2ecd77a684afa1615de7023029a8688c to your computer and use it in GitHub Desktop.
Browser REPL
function(module, exports) {
var __styleE = document.getElementById("style");
(window.React = parent.React),
(window.ReactDOM = parent.ReactDOM),
(window.PropTypes = parent.PropTypes),
(window._ = parent._),
(window.axios = parent.axios),
(window.subscribeEmail = parent.subscribeEmail),
(window.__REACT_DEVTOOLS_GLOBAL_HOOK__ =
parent.__REACT_DEVTOOLS_GLOBAL_HOOK__),
(window.JSC = parent.__jscC);
var __defaultStyle =
'body { font-family: -apple-system,BlinkMacSystemFont,Lato,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif } .mountNode { padding: 10px; padding-bottom: 0 } .printLine { white-space: pre-wrap; }',
__isDev__ = !1,
renderError = function(e) {
window.ReactDOM.render(
window.React.createElement(
"div",
{ className: "printLine", style: { color: "red" } },
e
),
document.getElementById("mountNode")
);
};
window.addEventListener(
"message",
function(event) {
if (__isDev__ || ~event.origin.indexOf("https://jscomplete.com")) {
if (event.data.reset)
return (
window.ReactDOM.unmountComponentAtNode(
document.getElementById("mountNode")
),
window.ReactDOM.unmountComponentAtNode(
document.getElementById("mountNode2")
),
(document.getElementById("mountNode").innerHTML = ""),
void (document.getElementById("mountNode2").innerHTML = "")
);
if (event.data.error) return void renderError(event.data.error);
if (
(event.data.css &&
(__styleE.textContent = __defaultStyle + event.data.css),
event.data.code)
) {
if (
event.data.code.match(
/\b(eval|postMessage|new Function|iframe|cookie|localStorage|sessionStorage)\b/
)
)
throw new Error("Unable to execute code");
try {
eval(event.data.code);
} catch (e) {
renderError(e.toString());
}
}
var mountNode = document.getElementById("mountNode");
parent.postMessage(
{ id: "__jscF", html: mountNode.innerHTML },
__isDev__ ? "*" : "https://jscomplete.com"
);
}
},
!0
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment