All Projects → cudr → Slate Collaborative

cudr / Slate Collaborative

Licence: mit
slatejs collaborative plugin & microservice https://slate-collaborative.herokuapp.com/

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Slate Collaborative

textbus
Textbus 是一个组件化的、数据驱动的富文本框架,支持在线协同编辑,同时也可以作为一个开箱即用的富文本编辑器,拥有非常好的扩展性和可定制性,是构建复杂富文本的不二之选!
Stars: ✭ 642 (+172.03%)
Mutual labels:  collaboration, rich-text-editor, collaborative-editing
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+2397.46%)
Mutual labels:  collaboration, collaborative-editing, crdt
Etherpad Lite
Etherpad: A modern really-real-time collaborative document editor.
Stars: ✭ 11,937 (+4958.05%)
Mutual labels:  collaboration, collaborative-editing, rich-text-editor
Text
📑 Collaborative document editing using Markdown
Stars: ✭ 282 (+19.49%)
Mutual labels:  collaboration, collaborative-editing, rich-text-editor
Quill Sharedb Cursors
Collaborative editing with multi cursors sync using Quill and ShareDB.
Stars: ✭ 121 (-48.73%)
Mutual labels:  collaboration, collaborative-editing, rich-text-editor
Re Editor
一个开箱即用的React富文本编辑器 🚀re-editor
Stars: ✭ 367 (+55.51%)
Mutual labels:  slate, rich-text-editor
Slate Plugins
🔌 Next-gen slate plugins
Stars: ✭ 399 (+69.07%)
Mutual labels:  slate, rich-text-editor
Crdt Playground
Stars: ✭ 215 (-8.9%)
Mutual labels:  collaborative-editing, crdt
Canner Slate Editor
📝Rich Text / WYSIWYG Editor built for Modularity and Extensibility.
Stars: ✭ 1,071 (+353.81%)
Mutual labels:  slate, rich-text-editor
Fluidframework
Library for building distributed, real-time collaborative web applications
Stars: ✭ 3,592 (+1422.03%)
Mutual labels:  collaboration, crdt
Tandem
Typing in Tandem. Decentralized, cross-editor, collaborative text-editing!
Stars: ✭ 678 (+187.29%)
Mutual labels:  collaboration, collaborative-editing
Peer Base
Build real-time collaborative DApps on top of IPFS
Stars: ✭ 208 (-11.86%)
Mutual labels:  collaboration, crdt
How To Collaborate On Github
A mini book about collaborating on GitHub
Stars: ✭ 346 (+46.61%)
Mutual labels:  collaboration, collaborative-editing
Teletype Crdt
String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.
Stars: ✭ 637 (+169.92%)
Mutual labels:  collaborative-editing, crdt
Slate Edit Table
Slate plugin for table edition
Stars: ✭ 97 (-58.9%)
Mutual labels:  slate, rich-text-editor
Slate Edit Code
A Slate plugin for code block editing
Stars: ✭ 44 (-81.36%)
Mutual labels:  slate, rich-text-editor
Subethaedit
General purpose plain text editor for macOS. Widely known for its live collaboration feature.
Stars: ✭ 1,183 (+401.27%)
Mutual labels:  collaboration, collaborative-editing
Slate Yjs
Yjs bindings for Slate
Stars: ✭ 99 (-58.05%)
Mutual labels:  collaborative-editing, slate
diamond-types
The world's fastest CRDT. WIP.
Stars: ✭ 654 (+177.12%)
Mutual labels:  crdt, collaborative-editing
mute-structs
MUTE-structs is a Typescript library that provides an implementation of the LogootSplit CRDT algorithm.
Stars: ✭ 14 (-94.07%)
Mutual labels:  crdt, collaborative-editing

slate-collaborative. Check demo

slatejs collaborative plugin & microservice

screencast2019-10-2820-06-10

A little experiment for co-editing.

Based on idea of https://github.com/humandx/slate-automerge

API

Client

Use it as a simple slatejs plugin

import { withIOCollaboration } from '@slate-collaborative/client'

const collaborationEditor = withIOCollaboration(editor, options)

Check detailed example

Options:

{
  docId?: // document id
  url?: string // url to open connection
  connectOpts?: SocketIOClient.ConnectOpts // socket.io-client options
  cursorData?: any // any data passed to cursor
  onConnect?: () => void // connect callback
  onDisconnect?: () => void // disconnect callback
  onError?: (reason: string) => void // error callback
  preserveExternalHistory?: boolean // preserve slate-history operations form other clients
}

You need to attach the useCursor decorator to provide custom cursor data in renderLeaf function

import { useCursor } from '@slate-collaborative/client'

const decorator = useCursor(editor)

Backend

const { SocketIOConnection } = require('@slate-collaborative/backend')

const connection = new SocketIOConnection(options)

options:

{
  entry: Server // or specify port to start io server
  defaultValue: Node[] // default value
  saveFrequency: number // frequency of onDocumentSave callback execution in ms
  onAuthRequest: ( // auth callback
    query: Object,
    socket?: SocketIO.Socket
  ) => Promise<boolean> | boolean
  onDocumentLoad: ( // request slate document callback
    pathname: string,
    query?: Object
  ) => Promise<Node[]> | Node[]
  onDocumentSave: (pathname: string, doc: Node[]) => Promise<void> | void // save document callback
}

Contribute

You welcome to contribute!

start it ease:

yarn
yarn dev
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].