New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-live

Package Overview
Dependencies
Maintainers
1
Versions
70
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-live

A production-focused playground for live editing React code

  • 1.3.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

React Live

A production-focused playground for live editing React code

React Live brings you the ability to render React components and present the user with editable source code and live preview. It supports server-side rendering and comes in a tiny bundle, thanks to Bublé and a Prism.js-based editor.

The library is structured modularly and lets you style its components as you wish and put them where you want.

Usage

Install it with npm install react-live and try out this piece of JSX:

import {
  LiveProvider,
  LiveEditor,
  LiveError,
  LivePreview
} from 'react-live'

<LiveProvider code="<strong>Hello World!</strong>">
  <LiveEditor />
  <LiveError />
  <LivePreview />
</LiveProvider>

Demo

https://react-live-demo.philpl.com/

FAQ

How does it work?

It takes your code and transpiles it through Bublé, while the code is displayed using Prism.js. The transpiled code is then rendered in the preview component, which does a fake mount, if the code is a component.

Easy peasy!

What code can I use?

The code can be one of the following things:

  • React elements, e.g. <strong>Hello World!</strong>
  • React pure functional components, e.g. () => <strong>Hello World!</strong>
  • React component classes

It cannot contain inline code just yet.

How does the scope work?

The scope prop on the LiveProvider accepts additional globals. By default it injects React only, which means that the user can use it in his code like this:

//                    ↓↓↓↓↓
class Example extends React.Component {
  render() {
    return <strong>Hello World!</strong>
  }
}

But you can of course pass more things to this scope, that will be available as variables in the code.

API

<LiveProvider />

This component provides the context for all the other ones. It also transpiles the user's code! It supports these props, while passing all others through to a <div />:

NamePropTypeDescription
codePropTypes.stringThe code that should be rendered, apart from the user's edits
scopePropTypes.objectAccepts custom globals that the code can use
mountStylesheetPropTypes.boolMounts the stylesheet for the prism editor (Default: true)

Apart from these props it attaches the .react-live CSS class to its div. All subsequent components must be rendered inside a provider, since they communicate using one.

By default this component will render a <style /> tag for the Prism styling. You can decide not to render it and include the react-live.css file instead.

<LiveEditor />

This component renders the editor that displays the code. It is built using Prism.js and a Content Editable. It accepts these props for styling:

NamePropTypeDescription
classNamePropTypes.stringAn additional class that is added to the Content Editable
stylePropTypes.objectAdditional styles for the Content Editable

This component renders a Prism.js editor underneath it and also renders all of Prism's styles inside a style tag. The editor / content editable has an additional .react-live-editor CSS class.

<LiveError />

This component renders any error that occur while executing the code, or transpiling it. It passes through any props to its div and also attaches the .react-live-error CSS class to it.

Note: Right now the component unmounts, when there's no error to be shown.

<LivePreview />

This component renders the actual component, that the code generates, inside an error boundary. It passes through any props to its div and also attaches the .react-live-preview CSS class to it.

Prior work & Thanks

This project wouldn't exist without Formidable's component-playground which is the actual idea behind this project as well.

So thanks to Formidable Labs!

Keywords

FAQs

Package last updated on 04 Apr 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc