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

draft-regex

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

draft-regex

Helpers for draft-js

  • 1.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
283
increased by686.11%
Maintainers
1
Weekly downloads
 
Created
Source

Draft Regex

NPM version npm install size Greenkeeper badge FlowType compatible

These helpers are written for Draft.js to improve Editor capabilities.

Requirements

Getting started

npm install draft-regex

or

yarn add draft-regex

How to use

import * as React from 'react';
import { EditorState, Editor } from 'draft-js';
import { clearEmptyBlocks, clearPastedStyle, replaceTextRegex } from 'draft-regex';

type State = {
  editorState: EditorState,
};

class MyEditor extends React.Component<void, State> {
  state: State = {
    editorState: EditorState.createEmpty(),
  };

  onChange = (editorState: EditorState) => {
    this.setState({ editorState: clearEmptyBlocks(editorState) });
  };

  handlePastedText = (text: ?string, html: ?string, editorState: EditorState) => {
    this.setState({ editorState: clearPastedStyle(editorState) });
  };

  onSave = () => {
    const { editorState } = this.state;
    this.setState({ editorState: replaceTextRegex(editorState) });
  };

  render() {
    const { editorState } = this.state;
    return (
      <>
        <Editor
          editorState={editorState}
          onChange={this.onChange}
          handlePastedText={this.handlePastedText}
        />
        <button onClick={this.onSave}>Save</button>
      </>
    );
  }
}

API

All helpers are taken by EditorState and options as an argument and returned EditorState.

clearEmptyBlocks

Prevents the ability to add blank lines more than 3 (varies in settings).

A second argument can take a number for remove blank lines (number + 1).

function clearEmptyBlocks(editorState: EditorState, maxEmptyLines?: number = 2): EditorState

replaceTextRegex

Apply regular expressions to the entire text, in the process of typing or after copy/pasting text.

A second argument can take an array of rules. typoRules is a set of basic rules that you can not use.

All regular expressions are used once in the entire text. If you use a lot of regular expressions, the performance of the editor can drop noticeably.

function replaceTextRegex(
  editorState: EditorState,
  rulesArray?: Array<Rule> = typoRules,
): EditorState

The rule looks like this: { reg: new RegExp(), shift: '' }

clearPastedStyle

Clears styles of copy/pasted text to those that you have.

A second argument can take an object that can contain options.

blockTypes is an array of strings that contains all the types of blocks that you use in your editor. This is useful if you want to clear all styles, except those you can already ask yourself.

A list of all types can be found here.

If you do not want to use all six kinds of headings, you can bring the headers to the same view using shiftHeader.

The same applies to lists.

function clearPastedStyle(
  editorState: EditorState,
  options?: {
    blockTypes?: Array<string>,
    shiftHeader?: string,
    shiftList?: string,
  }
): EditorState

Hints

To improve performance, use clearPastedStyle to handlePastedText method, and replaceTextRegex to save the text editor.

Keywords

FAQs

Package last updated on 23 Jun 2018

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