MakeCode Embed
    Preparing search index...

    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.