Skip to content

petrsiegl/editorjs-undo

 
 

Repository files navigation

EditorJS Undo Plugin

Undo/Redo feature for Editor.js.

Installation

Install via NPM

Get the package

$ npm i --save-dev editorjs-undo

Include module in your application

import Undo from 'editorjs-undo';

Usage

const editor = new EditorJS({
  onReady: () => {
    new Undo({ editor });
  },
});

On the editor, use Ctrl + Z or + Z to undo, or use Ctrl + Y or + Y to redo.

Usage with react-editor-js.

If you are using react-editor-js, you could create a function to handle the onReady property, the function will store the undo instance and the respective configuration or initialize method if you want to use them (they will be explained below). Then, you must call the function in onReady in the editorJS instance.

const handleReady = (editor) => {
  new Undo({ editor });
};

class ReactEditor extends Component {
  render() {
    return (
      <EditorJs
        onReady = { handleReady }
        tools = { ... }
      />
    )
  }
}

Note: If you are already using editorjs-drag-drop your handleReady function must have the editorjs-drag-drop instance.

const handleReady = (editor) => {
  new Undo({ editor });
  new DragDrop(editor);
};

Initialize the plugin with data

Note: If you have loaded EditorJS with any initial data (such as some saved content), you must pass in an initialData object. If you don't, the default initial undo state lead to an empty editor.

You may use the initialize method inside the editor's onReady callback.

const editor = new EditorJS({
  onReady: () => {
    const undo = new Undo({ editor });
    undo.initialize(initialData);
  },
});

Add a custom shortcut to undo and redo

Note: If you do not add any shortcut, the default shortcuts will be set up.

If you want to add custom shortcuts, pass a config object with a shortcut key in the undo instance, the shortcuts must be called undo and redo.

const config = {
  shortcuts: {
    undo: 'CMD+X',
    redo: 'CMD+ALT+C'
  }
}
const editor = new EditorJS({
  onReady: () => {
    const undo = new Undo({ editor, config });
  },
});

You can set each shortcut with two or three keys, the available special keys are: CMD, ALT, SHIFT. CMD will be set up automatically as Ctrl or depending on your OS.

Available Options

Field Type Description
editor EditorJS Required. The EditorJS instance.
maxLength Number Max amount of changes recorded by the history stack.
onUpdate() function Callback called when the user performs an undo or redo action.
config object Set up the configuration to editorjs-undo like the shortcuts

Development

Development mode

$ yarn build:dev

Production release

  1. Create a production bundle
$ yarn build
  1. Commit dist/bundle.js

Run tests

$ yarn test

Code of conduct

We welcome everyone to contribute. Make sure you have read the CODE_OF_CONDUCT before.

Contributing

For information on how to contribute, please refer to our CONTRIBUTING guide.

Changelog

Features and bug fixes are listed in the CHANGELOG file.

License

This library is licensed under an MIT license. See LICENSE for details.

Acknowledgements

Made with 💙 by kommitters Open Source

About

Undo/Redo feature for Editor.js

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%