pxt-core-own
Version:
Microsoft MakeCode, also known as Programming Experience Toolkit (PXT), provides Blocks / JavaScript tools and editors
115 lines (102 loc) • 3.62 kB
HTML
<html>
<style>
body {
background: transparent;
}
a,
a:visited {
text-decoration: none ;
}
body a svg {
width: calc(100% - 1rem);
height: calc(100% - 3rem);
}
footer {
position: absolute;
bottom: 0;
height: 1.3rem;
background: #ccc;
text-align: right;
color: white;
font-size: 0.7rem;
font-family: consolas;
left: 0;
right: 0;
padding-top: 0.5rem;
padding-right: 1rem;
}
footer a, footer a:visited {
color: white;
}
</style>
<body>
<div id="blocks"></div>
<footer class="ui horizontal small divided link list footer">
<a target="_blank" class="item" href="https://makecode.com">Microsoft MakeCode</a>
<a target="_blank" class="item" href="https://makecode.com/termsofuse">Terms of Use </a>
<a target="_blank" class="item" href="https://makecode.com/privacy">Privacy </a>
</footer>
<script id="loader">
// This line gets patched up by the cloud
var pxtConfig = null;
// handle to rendering iframe
var pxtFrame;
// ....#pub:projectid
var projectid = /pub:([^&?]+)/i.exec(window.location.hash)[1];
function makeCodeInjectRenderer() {
pxtFrame = document.createElement("iframe");
pxtFrame.id = "makecoderenderer";
pxtFrame.style.position = "absolute";
pxtFrame.style.left = 0;
pxtFrame.style.bottom = 0;
pxtFrame.style.width = "1px";
pxtFrame.style.height = "1px";
pxtFrame.src = (pxtConfig ? pxtConfig.docsUrl : '---docs') + '?render=1';
document.body.appendChild(pxtFrame);
}
function makeCodeRenderPre(elid, pid) {
var f = document.getElementById("makecoderenderer");
f.contentWindow.postMessage({
type: "renderblocks",
id: elid,
options: {
packageId: pid
}
}, "*");
}
function removeEl(el) {
if (el && el.parentElement) el.parentElement.removeChild(el);
}
window.addEventListener("message", function (ev) {
var msg = ev.data;
if (msg.source != "makecode") return;
switch (msg.type) {
case "renderready":
makeCodeRenderPre("blocks", projectid)
break;
case "renderblocks":
var id = msg.id;
if (msg.svg) {
var svg = new DOMParser().parseFromString(msg.svg, "image/svg+xml");
var img = svg.childNodes.item(0)
var code = document.getElementById(id)
var a = document.createElement("a")
a.target = "_blank"
a.href = (pxtConfig ? pxtConfig.targetUrl : "") + "/#pub:" + projectid;
a.appendChild(img)
code.parentElement.insertBefore(a, code)
code.parentElement.removeChild(code);
}
// unload iframe
if (pxtFrame) {
removeEl(pxtFrame);
removeEl(document.getElementById("loader"));
pxtFrame = undefined;
}
break;
}
}, false);
makeCodeInjectRenderer();
</script>
</body>
</html>