Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-medium-editor-es6

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-medium-editor-es6

React wrapper for medium-editor

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

react-medium-editor-es6

ES6 version of React wrapper for medium-editor

This repository is a fork of the original react-medium-editor react-wrapper by @wangzuo

Installation

npm install react-medium-editor-es6 --save

However, since this package exports an ES6 class, you'll need to load this with an appropriate handler (e.g babel). Here's an example of how you can do that if you're using webpack. Doing this with browserify is similar:

module.exports = {
    module: {
        loaders: [
            {
                test: /\.js$/,
                include: ([
                    /react-medium-editor-es6\/src/,
                    path.resolve(__dirname, 'src'),
                ]),
                loader: 'babel',
            }
        ]
    }
}

And you're good to go. This package is very little amount of code, so if you find some feature missing, just clone this repostory and npm link this package. No pesky rebuilding required for development.

Usage

import React, {
    Component,
} from 'react';

// load theme styles with webpack
import 'medium-editor/dist/css/medium-editor.css';
import 'medium-editor/dist/css/themes/default.css';

import MediumEditor from 'react-medium-editor-es6';

class App extends Component {
    render() {
        return (
            <div>
                <MediumEditor
                    tag='pre'
                    flushEditorDOM={shallFlushEditorDOM}
                    text={'content'}
                    options={
                        ...mediumOptions,
                    }
                    onChange={handleChangeEditorContent}
                />
            </div>
        );
    }
}

Props

  • tag (string): Name of the HTML element which will be created for this component. In the above example, a <pre></pre> element will be creaed and handed over to Medium editor
  • text (string): The content of the editor. It can be HTML content
  • options (object): Medium editor options
  • onChange (function): Callback which will be called when user changes the editor content
  • flushEditorDOM (boolean): An interesting problem I faced when no using any internal state was that normal Undo operation won't work, since react would re-render the component, set new editor content, and for the browser, the undo is lost. So because I am lazy, I decided to not write to DOM at all. I mean it does write to DOM, but not to the knowledge of react. This means that props.text don't change the actual content of the Editor. To do so, you need to pass flushEditorDOM=true. There's probably a better way to do this, feel free to fork and create a PR may be; or you can wait for me to solve it which might or might not happen depending on whether I see it as a problem at some point or not.

Why the fork?

Well, mostly because:

  • I am a prick. I should have modified the code and created a pull request instead, but I didn't. Because I am prick.
  • I had some propblems integrating the original component in my redux app, had to change some stuff and I didn't like all the building that was required. ES6 modules will be here soon anyway and it's much easier to work with them directly rather than requiring to build in 2 places (first the component, then the app) imo, so I forked it to an ES6 version
  • This component has some differences than the original component. We strictly use props, no internal state, and pay for the consequences too.

License

MIT

Keywords

FAQs

Package last updated on 07 Mar 2016

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