Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Convergence Logo

Convergence DOM Utils

Build Status

This project contains utilities to that make binding the DOM to a Convergence Model.


This library depends on the following libraries:

  • @convergence/convergence: The main Convergence client API.

Building the Distribution

npm install
npm run dist


<!DOCTYPE html>
<html lang="en">
    .edit { border: 1px solid black; height: 400px; width: 400px; margin-top: 15px; }
<h3>Content Editable Rich Text Area</h3>
<div class="edit" id="editable">Loading...</div>
  const editable = document.getElementById("editable"); 
  const DOMAIN_URL = "http://localhost:8000/api/realtime/convergence/default";
  Convergence.connectAnonymously(DOMAIN_URL).then(function (domain) {
    return domain.models().open("content-editable", "test", function () {
      return ConvergenceDomUtils.DomConverter.htmlToJson(
        "Here is some initial text with a <b>bold</b> section and some <i>italics</i>."
  }).then(function (model) {
    const binder = new ConvergenceDomUtils.DomBinder(editable, model);
    editable.contentEditable = true;



constructor(element: HTMLElement, data: RealTimeObject | RealTimeModel, autoBind: boolean = true)

Creates a new DomBinder associated with a specific HTMLElement and RealTimeObject. If an instance of RealTimeModel is passed in, the HTMLElemenet will be bound to the root element of the model. The current contents of the element will be replaced by the DOM representation contained in the RealTimeObject. The autoBind parameter configures whether or not the DomBinder will automatically bind upon construction. The default is true.

unbind(): void

Disconnects the HTMLElement from the RealTimeObject. The element and model will be left as is, but the two-way data binding will be disconnected. This method can only be called when the DomBinder is bound.

bind(): void

Sets up the two-way data binding between the element and RealTimeObject. This method can only be called when the DomBinder is not already bound.

isBound(): boolean

Determines if the HTMLElement and RealTimeObject are currently bound.


static htmlToJson(html: string): any

Converts a string containing HTML into the JSON representation of the DOM Tree.

static nodeToJson(node: Node): any

Converts a DOM Node (e.g. Element, Text) into the JSON representation of the DOM Tree.

static jsonToNode(json: any): Node

Converts the JSON Representation of a DOM Tree into a DOM Node.

Running the Example

To run the example you must first:

  1. Build the distribution
  2. Follow the steps in the example/config.example.js file
  3. Open the example/index.html file in your browser

Note: to run the example you must have a running Convergence Server. The easiest way to get one running is using Docker:

docker run \
  --name convergence \
  -p 8000:80 \


Utilities to bind a Convergence Model to the DOM.





No packages published