roosterjs

roosterjs is a framework-independent javascript rich text editor.

  • 所有者: microsoft/roosterjs
  • 平台:
  • 許可證: Other
  • 分類:
  • 主題:
  • 喜歡:
    2
      比較:

Github星跟蹤圖

Build Status

Rooster

Rooster is a framework-independent JavaScript rich-text editor neatly nested
inside one HTML <div> element. Editing operations performed by end users are
handled in simple ways to generate the final HTML.

To view the sample site, please click the link below:

RoosterJs Sample Site.

Upgrade from RoosterJs 6.x

If you are upgrading your project from RoosterJs 6.x, please read
here for a full
list of API changes.

The code of RoosterJs 6.x is now moved to branch roosterjs6.

RoosterJs 6.x will be still support for a while. Most new features added into
RoosterJs 7.x will also be merged into 6.x branch for now. We plan to stop the
supporting of RoosterJs 6.x at the end of 2019/2.

Features

Packages

Rooster contains 9 packages.

  1. roosterjs:
    A facade of all Rooster code for those who want a quick start. Use the
    createEditor() function in roosterjs to create an editor with default
    configurations.

  2. roosterjs-editor-core:
    Defines the core editor and plugin infrastructure. Use roosterjs-editor-core
    instead of roosterjs to build and customize your own editor.

  3. roosterjs-editor-api:
    Defines APIs for editor operations. Use these APIs to modify content and
    formatting in the editor you built using roosterjs-editor-core.

  4. roosterjs-editor-dom:
    Defines APIs for DOM operations. Use roosterjs-editor-api instead unless
    you want to access DOM API directly.

  5. roosterjs-editor-plugins:
    Defines basic plugins for common features. Examples: making hyperlinks,
    pasting HTML content, inserting inline images.

  6. roosterjs-editor-types:
    Defines public interfaces and enumerations.

  7. roosterjs-html-sanitizer
    A common library to help sanitize HTML.

  8. roosterjs-plugin-image-resize
    A plugin to help do inline image resize within the editor

  9. roosterjs-plugin-picker
    A plugin to help build picker-like plugins

APIs

Rooster provides DOM level APIs (in roosterjs-editor-dom), core APIs (in roosterjs-editor-core), and formatting APIs
(in roosterjs-editor-api) to perform editing operations.

roosterjs-editor-dom provides several levels of DOM operations:

  • Perform basic DOM operations such as fromHtml(), wrap(), unwrap(), ...
  • Wrap a given DOM node with InlineElement or BlockElement and perform
    operations with DOM Walker API.
  • Perform DOM operations on a given scope using scopers.
  • Travel among InlineElements and BlockElements with scope using
    ContentTraverser API.

roosterjs-editor-core provides APIs for editor core. Editor class will call such
APIs to perform basic editor operations. These APIs are overridable by specifying
API overrides in Editor options when creating the editor.

roosterjs-editor-api provides APIs for scenario-based operations triggered by
user interaction.

Plugins

Rooster supports plugins. You can use built-in plugins or build your own.
Plugins call APIs to communicate with the editor. When an operation is
performed by the user or when content is changed by code, the editor will
trigger events for the plugins to handle.

Here's a sample plugin which will show a dialog containing "Hello Rooster" when
an "a" is typed in the editor:

class HelloRooster implements EditorPlugin {
    getName() {
        return 'HelloRooster';
    }

    initialize(editor: Editor) {}

    dispose() {}

    onPluginEvent(e: PluginEvent) {
        if (e.eventType == PluginEventType.KeyPress && e.rawEvent.which == 65) {
            alert('Hello Rooster');
        }
    }
}

Installation

Install via NPM or Yarn:

yarn add roosterjs

or

npm install roosterjs --save

You can also install sub packages separately:

yarn add roosterjs-editor-core

yarn add roosterjs-editor-api

...

or

npm install roosterjs-editor-core --save

npm install roosterjs-editor-api --save

...

In order to run the code below, you may also need to install webpack:

yarn add webpack -g

or

npm install webpack -g

Usage

A quick start

  1. Create editor.htm contains a DIV with some styles, and a reference to a
    .js file:
<html>
    <body>
        <div
            id="editorDiv"
            style="width: 500px; height: 300px; overflow: auto;
        border: solid 1px black"
        ></div>
        <script src="editor.js"></script>
    </body>
</html>
  1. Create source.js to import roosterjs and create an editor:
var roosterjs = require('roosterjs');
var editorDiv = document.getElementById('editorDiv');
var editor = roosterjs.createEditor(editorDiv);
editor.setContent('Welcome to <b>RoosterJs</b>!');
  1. Compile the javascript file using webpack:

webpack source.js editor.js

  1. Navigate to editor.htm, you will see a editor shown in the page.

Add some format buttons

  1. Add some buttons into editor.htm:
<html>
    <body>
        <div
            id="editorDiv"
            style="width: 500px; height: 300px; overflow: auto;
        border: solid 1px black"
        ></div>
        <button id="buttonB">B</button> <button id="buttonI">I</button>
        <button id="buttonU">U</button>
        <script src="editor.js"></script>
    </body>
</html>
  1. Add code to source.js to handle click event of the buttons:
var roosterjs = require('roosterjs');
var editorDiv = document.getElementById('editorDiv');
var editor = roosterjs.createEditor(editorDiv);
editor.setContent('Welcome to <b>RoosterJs</b>!');

document.getElementById('buttonB').addEventListener('click', function() {
    roosterjs.toggleBold(editor);
});
document.getElementById('buttonI').addEventListener('click', function() {
    roosterjs.toggleItalic(editor);
});
document.getElementById('buttonU').addEventListener('click', function() {
    roosterjs.toggleUnderline(editor);
});
  1. Compile the javascript file using webpack:

webpack source.js editor.js

  1. Navigate to editor.htm, you will see buttons with bold, italic, underline
    actions in the page.

Sample code

To view the sample site, please click here.

To build the sample site code yourself, follow these instructions:

  1. Get dependencies using yarn or npm:

    yarn
    

    or

    npm install
    
  2. Build the source code, and start the sample editor:

    yarn start
    

    or

    npm start
    
  3. Navigate to the sample editor at http://localhost:3000/

More documentation

We are still working on more documentation in roosterjs wiki and API reference.

License - MIT

License
Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT License.

概覽

名稱與所有者microsoft/roosterjs
主編程語言TypeScript
編程語言JavaScript (語言數: 3)
平台
許可證Other
發布數187
最新版本名稱v9.1.0 (發布於 )
第一版名稱v6.0.0 (發布於 )
創建於2017-07-13 16:39:51
推送於2024-04-20 06:19:57
最后一次提交2024-04-19 23:08:54
星數847
關注者數36
派生數141
提交數3.6k
已啟用問題?
問題數540
打開的問題數23
拉請求數1734
打開的拉請求數10
關閉的拉請求數273
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?
去到頂部