2.4.7 • Published 3 years ago

react-code-live v2.4.7

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

NPM JavaScript Style Guide w3c

react-code-live

Live coding Component for React, with scoped CSS and Real Time Preview!

Demo page:

https://kais3rp.github.io/react-code-live/

Install

npm install --save react-code-live

Usage

The Editor works by default even without taking extra props

import React from 'react'
import Editor from 'react-code-live'

const App = () => <Editor/>
}

Styling

To style the components, you can use the className prop, that will style the main container, while to access the containers of the 4 components (JS Textarea, CSS Textarea, Preview and Error), you can use the dataset attributes of data-id to select the containers:

div[data-id="error-container"]
div[data-id="preview-container"]
div[data-id="js-container"]
div[data-id="css-container"]

You can also use the two wrappers:

div[data-id="jss-wrapper"]
div[data-id="css-wrapper"]

to style elements inside the container ( Controls && Error ) as absolute positioned overlays over the textareas (as you can see in the Demo).

API

PropTypeEffectExample
classNameStringIt is applied to the main container 'div'className="container"
jsPlaceholderStringThe place holder for the JS TextareajsPlaceholder="WRITE JS CODE HERE"
cssPlaceholderStringThe placeholder for the CSS TextareacssPlaceholder="WRITE CSS CODE HERE"
initialJsStringThe JS code that you want to display as default content of the TextareainitialJs={`function Test ( ){ return "hello"}`}
initialCSSStringThe CSS code that you want to display as default content of the TextareainitialCss={`div { color: red; }`}
iconsObjectYou need to pass an object with a js and a css property and a JSX value, that JSX is intended to render some sort of indicator to distinguish the Textarea of JS from that of CSSicons={{ js: <>JS</>, css:<>CSS</>}}
showControlsBooleanShows the control buttons "Copy, Paste, Clear, Save, Load"showControls={true}
storageIdentifierStringThis id is used to identify the textarea to match the saved and loaded content on localStoragestorageIdentifier="js#first"
scopeObjectIn this object you can pass any JS variable that you want to be in scope with the code that will be written in the JS Textarea, you can pass anything, and it will be referenced insidescope={{color: "magenta"}}
getJsCodeFunctionAn handler that receives the JS code while it's written in the textareagetJsCode={(code) => {console.log(code)}}
getCssCodeFunctionAn handler that receives the CSS code while it's written in the textareagetCssCode={(code) => {console.log(code)}}
renderFunctionA render prop that will expose js, and css code as paramsrender={(js,css) => <>{js}{css}</>}
themeObjectYou can choose a theme style for the highligthers, according to PrismJS theme tabletheme={{js: "funky", css: "coy"}}

Themes:

Name
coy
funky
dark
okaidia
tomorrow
solarized
The testing environment is still under development, so if you wish to contribute, please open an issue. Thanks.

License

MIT © Cesare Polonara

2.4.5

3 years ago

2.4.4

3 years ago

2.4.7

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.4.1

3 years ago

2.4.0

3 years ago

2.4.3

3 years ago

2.4.2

3 years ago

2.1.0

3 years ago

2.0.0

3 years ago

1.3.3

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.2.2

3 years ago

1.3.0

3 years ago

1.2.1

3 years ago

1.2.0

3 years ago

1.1.0

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

1.0.0

3 years ago

0.1.0

3 years ago