Giter Club home page Giter Club logo

slate-instant-replace's Introduction

slate-instant-replace

Test CI

A Slate plugin that gives you full power on the last word your user typed.

⚠️ This package is compatible with <= [email protected], please refer to this issue if you are working on >= [email protected] ⚠️

Why ?

I was looking at some plugin to automatically replace some text at the very same moment that you press the key that completes the word you want to replace. There is already a SlateJS auto replace plugin, however you need to specify a key to trigger the replacement and this key cannot be a part of the replaced text.

How ?

This plugin applies your transformations every time you write a new letter and has no opinion on the changes you make to the SlateJS's editor instance. Your transformation functions will receive as arguments the editor instance and the last word write and the rest is up to you !

Install

npm install --save slate-instant-replace
yarn add slate-instant-replace

Usage

import InstantReplace from "slate-instant-replace";
import { Editor } from "slate-react";

const YourFunction = (editor, lastWord) => {
  ...
}

// Add the plugin to your set of plugins...
const plugins = [InstantReplace(YourFunction)];

// And later pass it into the Slate editor...
<Editor
  ...
  plugins={plugins}
/>

Multiple transforms

You can also apply a set of multiple replacement functions, in that case the argument needs to be an array of functions like (in which case the function will be applied in the same order you write them):

const plugins = [InstantReplace([YourFunction1, YourFunction2, YourFunction3])];

Options

Option Type Description
transform Function ArrayOf(Function) The transforms to apply to the change object each time a letter is pressed. If an array is passed, the functions will be applied from the first element of the array to the last.

Commands and queries

Additionally this plugins exposes the follow commands and queries if you want to reuse them for your other plugins:

Name Type Description
getSelection query Returns the current selection.
getCurrentWordOffset query Returns the offset of the current word in the node.
getLastWord query Returns the last word using as a reference the current anchor position.
getPreviousNode query Returns the previous node to the one currently focused.
isFirstCharOfNode query Returns true if the anchor is at position 0 of the current node.
focusPreviousInlineNode command Focuses the previous Inline node.

Commands and queries get automatically attached to the editor instance. This means you can use them like this:

editor.getSelection();
editor.focusPreviousInlineNode();

Examples

Gif Emoji demo

Gif URL demo

Gif multiple transforms demo

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.