@slate-sheikah/client
TypeScript icon, indicating that this package has built-in type declarations

1.7.0 • Public • Published

slate-sheikah.

slatejs collaborative plugin & microservice Forked from (slate-collaborative and modified for speed and stability.

demo

screencast2019-10-2820-06-10

API

Client

Use it as a simple slatejs plugin

import { withIOCollaboration } from '@slate-sheikah/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
  presenceData?: Object //any object data that represents a participant in the meeting.  This will get echoed back through the onParticipantChange when people join and leave the document.
  onConnect?: () => void // connect callback
  onDisconnect?: () => void // disconnect callback
  onError?: (reason: string) => void // error callback
  preserveExternalHistory?: boolean // preserve slate-history operations form other clients
  onDocumentLoaded(id)?: => void // callback that runs once a document is loaded on the client, takes internal id of document (can be used to tell if the document you have in memory matches the one on the server)
  onParticipantChange = (msg: Object) => void // callback called when the participants change. message contains an array of participants as defined in presenceData
}

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

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

const decorator = useCursor(editor)

Backend

const { SocketIOConnection } = require('@slate-sheikah/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
  cleanFrequency: number // frequency of cleaner runs in ms, defaults to 60000 (1 minute)
  cleanThreshold: number // how long after all the connections have closed before allowing memory recovery in minutes defaults, to 30 minutes
  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
  onSocketConnection?: ({
    docId: string,
    socket: SocketIO.Socket,
    _this: SocketIOConnection
  }) => void // socket connection callback
  onSocketDisconnection?: ({
    docId: string,
    socket: SocketIO.Socket,
    _this: SocketIOConnection
  }) => void // socket disconnection callback
}

Contribute

You welcome to contribute!

start it ease:

yarn
yarn dev

Credits

cudr slate-collaborative slate-automerge

/@slate-sheikah/client/

    Package Sidebar

    Install

    npm i @slate-sheikah/client

    Weekly Downloads

    1

    Version

    1.7.0

    License

    MIT

    Unpacked Size

    59 kB

    Total Files

    21

    Last publish

    Collaborators

    • jnbarlow