UNPKG

pxt-core

Version:

Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors

88 lines (79 loc) 2.83 kB
<html> <head> <style> img { display: block; } </style> </head> <body> <pre id="mycode"> <code>basic.showString("hello!")</code> </pre> <pre id="mycode2"> basic.showIcon(IconNames.Heart) </pre> <pre id="mycode3"> <code> &lt;xml xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;block type="device_forever"&gt;&lt;/block&gt; &lt;/xml&gt; </code> </pre> <div id="status"></div> <div id="blocks"></div> <script> function makeCodeInjectRenderer() { var f = document.createElement("iframe"); f.id = "makecoderenderer"; f.style.position = "absolute"; f.style.left = 0; f.style.bottom = 0; f.style.width = "1px"; f.style.height = "1px"; f.src = "/--docs?render=1&lang=fr" document.body.appendChild(f); } function makeCodeRenderPre(pre) { var f = document.getElementById("makecoderenderer"); f.contentWindow.postMessage({ type: "renderblocks", id: pre.id, code: pre.innerText }, "*"); } window.addEventListener("message", function (ev) { var msg = ev.data; if (msg.source != "makecode") return; switch (msg.type) { case "renderready": // makeCodeRenderPre(document.getElementById("mycode")) makeCodeRenderPre(document.getElementById("mycode2")) makeCodeRenderPre(document.getElementById("mycode3")) break; case "renderblocks": console.log(msg); var id = msg.id; var code = document.getElementById(id) // inject as svg { var svg = new DOMParser().parseFromString(msg.svg, "image/svg+xml"); img = svg.childNodes.item(0) code.parentElement.insertBefore(img, code) } // inject as data uri { var img = document.createElement("img"); img.src = msg.uri; img.width = msg.width; img.height = msg.height; code.parentElement.insertBefore(img, code) } code.parentElement.removeChild(code); break; } }, false); makeCodeInjectRenderer(); </script> </body> </html>