VanillaJS Usage

This documentation is best viewed on the documentation site rather than GitHub or NPM package site.

Use createMakeCodeRenderBlocks to create a MakeCode block renderer. Initialise the renderer before calling renderBlocks with a RenderBlocksRequest, which includes a MakeCode project (see examples). The function will return a RenderBlocksResponse.

import { createMakeCodeRenderBlocks } from "@microbit/makecode-embed/vanilla";

const renderer = createMakeCodeRenderBlocks({});
renderer.initialize();
const result = await renderer.renderBlocks({ code: makeCodeProject });

document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
<div>
${result.svg}
</div>
`;

For more examples, take a look at the MakeCode blocks rendering demo source code.

Use MakeCodeFrameDriver class to create a driverRef for an iframe element. The iframe element src URL can be generated using createMakeCodeURL.

import {
MakeCodeFrameDriver,
createMakeCodeURL,
} from "@microbit/makecode-embed/vanilla";

// Set up an iframe element.
const iframe = document.createElement("iframe");
iframe.allow = "usb; autoplay; camera; microphone;";
iframe.src = createMakeCodeURL(
"https://makecode.microbit.org",
undefined, // Version.
undefined, // Language.
1, // Controller.
undefined // Query params.
);
iframe.width = "100%";
iframe.height = "100%";

document.querySelector<HTMLDivElement>("#app")!.appendChild(iframe);

// Create and initialise an instance of MakeCodeFrameDriver.
const driverRef = new MakeCodeFrameDriver(
{
controllerId: "YOUR APP NAME HERE",
initialProjects: async () => [makeCodeProject],
onEditorContentLoaded: (e) => console.log("MakeCode is now ready"),
onWorkspaceSave: (e) => {
console.log(e.project!.header!.id, e.project);
},
},
() => iframe
);
driverRef.initialize();

For more examples, take a look at the MakeCode frame demo source code.