
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
react-draft-wysiwyg
Advanced tools
The react-draft-wysiwyg package is a rich text editor component based on Draft.js. It provides a highly customizable and extensible WYSIWYG editor for React applications, allowing developers to integrate text editing capabilities with ease.
Basic Editor
This code demonstrates how to set up a basic editor using react-draft-wysiwyg. The editor includes default toolbar options and basic styling.
import React from 'react';
import { Editor } from 'react-draft-wysiwyg';
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
const MyEditor = () => (
<Editor
toolbarClassName="toolbarClassName"
wrapperClassName="wrapperClassName"
editorClassName="editorClassName"
/>
);
export default MyEditor;
Custom Toolbar
This code shows how to customize the toolbar of the editor. You can specify which options to include and whether they should be displayed in dropdowns.
import React from 'react';
import { Editor } from 'react-draft-wysiwyg';
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
const MyEditor = () => (
<Editor
toolbar={{
options: ['inline', 'blockType', 'fontSize', 'list', 'textAlign', 'colorPicker', 'link', 'embedded', 'emoji', 'image', 'remove', 'history'],
inline: { inDropdown: true },
list: { inDropdown: true },
textAlign: { inDropdown: true },
link: { inDropdown: true },
history: { inDropdown: true },
}}
/>
);
export default MyEditor;
Controlled Editor
This example demonstrates how to create a controlled editor component. The editor's state is managed using React's useState hook, allowing for more control over the editor's content.
import React, { useState } from 'react';
import { EditorState } from 'draft-js';
import { Editor } from 'react-draft-wysiwyg';
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
const MyEditor = () => {
const [editorState, setEditorState] = useState(EditorState.createEmpty());
return (
<Editor
editorState={editorState}
onEditorStateChange={setEditorState}
/>
);
};
export default MyEditor;
Image Upload
This code sample shows how to handle image uploads in the editor. The uploadImageCallBack function processes the image file and returns a promise with the image URL.
import React, { useState } from 'react';
import { EditorState } from 'draft-js';
import { Editor } from 'react-draft-wysiwyg';
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
const MyEditor = () => {
const [editorState, setEditorState] = useState(EditorState.createEmpty());
const uploadImageCallBack = (file) => {
return new Promise(
(resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve({ data: { link: reader.result } });
reader.readAsDataURL(file);
}
);
};
return (
<Editor
editorState={editorState}
onEditorStateChange={setEditorState}
toolbar={{
image: {
uploadCallback: uploadImageCallBack,
previewImage: true,
},
}}
/>
);
};
export default MyEditor;
Draft.js is a framework for building rich text editors in React. It provides the core functionality for text editing, but requires more setup and customization compared to react-draft-wysiwyg. It is highly flexible and can be tailored to specific needs.
React-Quill is a React component for Quill, a powerful rich text editor. It offers a wide range of features out of the box and is easy to integrate. Compared to react-draft-wysiwyg, React-Quill has a more extensive set of built-in features but may be less customizable.
Slate is a completely customizable framework for building rich text editors. It provides a lot of flexibility and control over the editor's behavior and appearance. Slate requires more effort to set up and configure compared to react-draft-wysiwyg, but it offers unparalleled customization options.
A Wysiwyg editor built using ReactJS and DraftJS libraries. Demo Page.
The package can be installed from npm react-draft-wysiwyg
$ npm install --save react-draft-wysiwyg draft-js
Editor can be used as simple React Component:
import { Editor } from 'react-draft-wysiwyg';
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
<Editor
editorState={editorState}
toolbarClassName="toolbarClassName"
wrapperClassName="wrapperClassName"
editorClassName="editorClassName"
onEditorStateChange={this.onEditorStateChange}
/>
For more documentation check here.
For discussions join public channel #rd_wysiwyg in DraftJS Slack Organization.
Original motivation and sponsorship for this work came from iPaoo. I am thankful to them for allowing the Editor to be open-sourced.
MIT.
FAQs
A wysiwyg on top of DraftJS.
The npm package react-draft-wysiwyg receives a total of 233,644 weekly downloads. As such, react-draft-wysiwyg popularity was classified as popular.
We found that react-draft-wysiwyg demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.