All Projects → live-editor → live-editor

live-editor / live-editor

Licence: MIT license
Real-time collaboration editing service with integrated editor component.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to live-editor

Text
📑 Collaborative document editing using Markdown
Stars: ✭ 282 (+705.71%)
Mutual labels:  rich-text-editor, collaborative-editing
Slate Collaborative
slatejs collaborative plugin & microservice https://slate-collaborative.herokuapp.com/
Stars: ✭ 236 (+574.29%)
Mutual labels:  rich-text-editor, collaborative-editing
Quill Sharedb Cursors
Collaborative editing with multi cursors sync using Quill and ShareDB.
Stars: ✭ 121 (+245.71%)
Mutual labels:  rich-text-editor, collaborative-editing
textbus
Textbus 是一个组件化的、数据驱动的富文本框架,支持在线协同编辑,同时也可以作为一个开箱即用的富文本编辑器,拥有非常好的扩展性和可定制性,是构建复杂富文本的不二之选!
Stars: ✭ 642 (+1734.29%)
Mutual labels:  rich-text-editor, collaborative-editing
Etherpad Lite
Etherpad: A modern really-real-time collaborative document editor.
Stars: ✭ 11,937 (+34005.71%)
Mutual labels:  rich-text-editor, collaborative-editing
React Text Selection Popover
Selection based Text UI made easy
Stars: ✭ 245 (+600%)
Mutual labels:  rich-text-editor
cm-page-builder
Page builder package like notion
Stars: ✭ 29 (-17.14%)
Mutual labels:  rich-text-editor
Ng Quill
AngularJS Component for Quill rich text editor
Stars: ✭ 223 (+537.14%)
Mutual labels:  rich-text-editor
Flutter Quill
Rich text editor for Flutter
Stars: ✭ 177 (+405.71%)
Mutual labels:  rich-text-editor
ray
HTML-powered text editor for creating and organizing personal notes.
Stars: ✭ 115 (+228.57%)
Mutual labels:  rich-text-editor
ngx-wall
Helps build content editor for note-taking application
Stars: ✭ 78 (+122.86%)
Mutual labels:  rich-text-editor
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (-37.14%)
Mutual labels:  collaborative-editing
fabrica-collaborative-editing
Plugin to make WordPress more Wiki-like by allowing more than one person to edit the same Post, Page, or Custom Post Type at the same time. When there are conflicting edits, it helps users to view, compare, and merge changes before saving.
Stars: ✭ 19 (-45.71%)
Mutual labels:  collaborative-editing
Mui Rte
Material-UI Rich Text Editor and Viewer
Stars: ✭ 233 (+565.71%)
Mutual labels:  rich-text-editor
elm-rte-toolkit
A toolkit for creating rich text editors in Elm
Stars: ✭ 139 (+297.14%)
Mutual labels:  rich-text-editor
Hallo
Simple rich text editor (contentEditable) for jQuery UI
Stars: ✭ 2,455 (+6914.29%)
Mutual labels:  rich-text-editor
Medium Editor
Medium.com WYSIWYG editor clone. Uses contenteditable API to implement a rich text solution.
Stars: ✭ 15,421 (+43960%)
Mutual labels:  rich-text-editor
ember-pell
Ember addon for simplest and smallest (1kB) WYSIWYG text editor for web, with no dependencies
Stars: ✭ 56 (+60%)
Mutual labels:  rich-text-editor
Textbus
基于组件 + 数据驱动的现代富文本编辑器
Stars: ✭ 242 (+591.43%)
Mutual labels:  rich-text-editor
Ngx Editor
🖋️ Rich Text Editor for angular using ProseMirror
Stars: ✭ 251 (+617.14%)
Mutual labels:  rich-text-editor

Enable Real-Time Co-Editing in Applications

Install

npm:

npm install live-editor

yarn:

yarn add live-editor

Start server

const { startServer } = require('live-editor/server');

// ref: node_modules/live-editor/config/server.json
const options = {
  enableFakeTokenApi: true, // enable fake token api only in test environment
};

startServer(options); // default port: 9000

Client

import {
  createEditorPromise,
  AuthMessage,
} from 'live-editor/client';

// Don't change this for demo.
const AppId = '_LC1xOdRp';

// Editor service server address
const WsServerUrl = `ws://localhost:9000`;

// create a random editor user
// user id and display name is needed by editor service
const user = {
  userId: `${new Date().valueOf()}`,
  displayName: 'test user',
};

// editor options
const options = {
  serverUrl: WsServerUrl,
  user,
};

// get a editor service token.
async function fakeGetAccessTokenFromServer(userId: string, docId: string): Promise<string> {
  const res = await fetch(`http://localhost:9000/token/${AppId}/${docId}/${userId}`);
  const ret = await res.json();
  return ret.token;
}

// document id
const docId = 'my-test-doc-id-simple';

(async function loadDocument() {
  // get an editor access token. Web Apps should get this token from your own server
  const token = await fakeGetAccessTokenFromServer(user.userId, docId);

  // editor auth data
  const auth: AuthMessage = {
    appId: AppId,
    userId: user.userId,
    docId,
    token,
    permission: 'w',
  };

  // create editor and load document
  const editor = await createEditorPromise(document.getElementById('editor') as HTMLElement, options, auth);
  console.log(editor);
})();

react demo

react demo

Features

Real-Time co-editing.

Text style

  • heading
  • list (ordered / unordered)
  • checkbox
  • quoted text
  • text color and background color.
  • bold, italic, underline, strikethrough.
  • any custom style (any css style).

Inline objects

  • Link
  • Latex equations
  • Mentions
  • Custom inline object
  • Comment (Add comment to any text)

Blocks

  • Image, Video, Audio
  • Table
  • Webpage (YouTube videos, etc.)
  • Flowchart, Sequence Diagram, Class Diagram, etc. (mermaid)
  • Diagram (drawio)
  • Layout
  • Chart (by Chart.js)
Block state
  • locked / unlocked
  • marker highlighter

Editor Features

  • support markdown syntax
  • support offline mode (editor server is not needed)
  • support markdown-only mode (only support markdown features)
  • import / export markdown
  • export html
  • import docx files
  • support focus & typewriter mode
  • display list as MindMap
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].