Git Product home page Git Product logo

react-blockly-playground's Introduction

react-blockly-playground

Built on Blockly

A React Wrapper for using Blockly, the visual programming editor from Google I wrote react-blockly-playground for an internal platform at Tekie to cater student's curriculum activity.

Features:

  • Provides a hook as well as a function component for ease of use + flexibility
  • Supports the JSON toolbox format
  • Automatically propagates prop updates to Blockly
  • Provides callbacks for workspace injection, disposal, changes, and XML import errors
  • Automatically generates workspace XML, debounced for performance

Installation

To add react-blockly to a React app that uses npm, run:

npm install --save react-blockly-playground

How to use

You can use react-blockly as either a component or a hook.

As component

Write import { BlocklyWorkspace } from 'react-blockly-playground'; in your code and use BlocklyWorkspace as a component.

Example:

import { BlocklyWorkspace } from 'react-blockly';

function MyBlocklyEditor() {
  const [xml, setXml] = useState();

  return (
    <BlocklyWorkspace
      useDefaultToolbox
      customTools={[tool1]}
      toolboxConfiguration={MY_TOOLBOX} // this must be a JSON toolbox definition
      workspaceConfiguration={WORKSPACE_CONFIGURATION}
      initialXml={xml}
      onXmlChange={setXml}
      onWorkspaceChange={(workspace) => {}}
      onInject={(e) => {}}
      customTheme={Blockly.Theme.Playground}
      blocklyKey='One'
    />
  )
}

Using the hook

Write import { useBlocklyWorkspace } from 'react-blockly-playground'; in your code and use this hook to inject a Blockly workspace into your rendered components.

Example:

import { useBlocklyWorkspace } from 'react-blockly-playground';

function MyBlocklyHookEmbed() {
  const blocklyRef = useRef(null);
  const { workspace, xml } = useBlocklyWorkspace({
    ref: blocklyRef,
    toolboxConfiguration: MY_TOOLBOX, // this must be a JSON toolbox definition
    initialXml: xml,
  });

  return (
    <div ref={blocklyRef} /> // Blockly will be injected here
  )
}

react-blockly-playground's People

Contributors

smithg09 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.