A small bit of code for handling Google Analytics
An abstraction over WebSockets and other communication channels (like
Handles the chat messages (except actual display, which is in
An console replacement that collects messages and allows TogetherJS-specific log levels
Handles the shared cursors, display and capturing the events. Also handles clicks and scrolls. Includes UI.
Generates something like a CSS selector for an element, and finds said elements based on selectors. A portable description of an element.
Creates artificial events, like a fake click event.
Handles synchronization of forms, including CodeMirror and ACE support. Implements a portion of OT.
Some plugins for jQuery; doesn't export anything, just patches
Detects and adds links to plain text.
Operational transformation support: what keeps big chunks of text in sync when multiple people are simultaneously editing those fields.
Handles the objects representing the peers and oneself.
Handles the magic
/playback command that plays recordings.
Some functions/methods for random numbers, really just for testing support.
recorder.html, which is a kind of alternate mini-client used to record sessions when you put
/record in the chat box.
The most important and most core module in the system. This sets up the channels, routes messages, tracks peers, and is used for inter-module communication using events.
Handles the logic of what to display when TogetherJS is first started up (including warning messages, introductory stuff, the share link, confirmation of joining the session).
An abstraction (over
localStorage) of per-tab and client storage.
This is generated from
interface.html and other sources, including the content as inline strings.
Handles creating new nodes based on DOM templates. Does some substitution based on specific class names.
This is the bootstrap code. It is included on all pages, defines the
TogetherJS variable, and handles configuration and initial loading.
This has most of the UI, meaning everything involving HTML, and reacting to that interface.
Lots of support code in here. It doesn't depend on other things, and has fairly abstract general-purpose code. It includes a pattern for creating classes, assertions, events.
Handles cross-browser tab visibility events
Implements the walkthrough interface (content is in
Handles live audio chat.
Lets clients peek into rooms and invite people from those rooms without joining the room
Handles the creation of different windows, notifications, and modal windows.
Support for the YouTube video sync feature