Wondering what’s next for npm?Check out our public roadmap! »

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

    1.6.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

    Install

    npm i @slate-sheikah/bridge

    DownloadsWeekly Downloads

    35

    Version

    1.6.0

    License

    MIT

    Unpacked Size

    169 kB

    Total Files

    78

    Last publish

    Collaborators

    • avatar