Skip to content

Vizel API / svelte/src / createVizelCollaboration

Function: createVizelCollaboration()

ts
function createVizelCollaboration(getProvider, options?): CreateVizelCollaborationResult;

Defined in: packages/svelte/src/runes/createVizelCollaboration.svelte.ts:73

Rune for tracking real-time collaboration state with a Yjs provider.

This rune manages event listeners on the provider to track connection status, sync state, and peer count. It does NOT create the Yjs document or provider — users must create those themselves and pass them in.

Parameters

ParameterTypeDescription
getProvider() => | VizelYjsProvider | null | undefinedFunction that returns the Yjs provider instance
optionsVizelCollaborationOptionsCollaboration options including user info and callbacks

Returns

CreateVizelCollaborationResult

Collaboration state and controls

Example

svelte
<script lang="ts">
import * as Y from "yjs";
import { WebsocketProvider } from "y-websocket";
import Collaboration from "@tiptap/extension-collaboration";
import CollaborationCursor from "@tiptap/extension-collaboration-cursor";
import { createVizelEditor, createVizelCollaboration } from "@vizel/svelte";

const doc = new Y.Doc();
const provider = new WebsocketProvider("ws://localhost:1234", "my-doc", doc);

const collab = createVizelCollaboration(
  () => provider,
  { user: { name: "Alice", color: "#ff0000" } }
);

const editor = createVizelEditor({
  features: { collaboration: { provider: true } },
  extensions: [
    Collaboration.configure({ document: doc }),
    CollaborationCursor.configure({
      provider,
      user: { name: "Alice", color: "#ff0000" },
    }),
  ],
});
</script>

<p>{collab.isConnected ? "Connected" : "Disconnected"} ({collab.peerCount} peers)</p>

Released under the MIT License.