Skip to content

Latest commit

 

History

History
31 lines (27 loc) · 1.64 KB

README.md

File metadata and controls

31 lines (27 loc) · 1.64 KB

Visit firepad.io for demo, examples, and embedding docs!

Read on if you'd like to contribute to Firepad.

Setting Up Your Environment

Firepad uses grunt to automate some build tasks (generating / minifying firepad.js, etc.). So before you get started, you'll need node.js installed. Then you can simply clone the repo, install the necessary node modules, and run grunt:

git clone https://github.com/firebase/firepad.git
cd firepad
npm install
sudo npm install -g grunt-cli
grunt

Source Code

To get started, here are some highlights of the directory structure and notable source files:

  • build/ - output directory for all files generated by grunt (firepad.js, firepad-min.js, firepad.zip, etc.).
  • examples - examples of embedding Firepad.
  • lib/
    • firepad.js - Entry point for Firepad.
    • text-operation.js, client.js - Heart of the Operation Transformation implementation. Based on ot.js but extended to allow arbitrary attributes on text (for representing rich-text).
    • annotation-list.js - A data model for representing annotations on text (i.e. spans of text with a particular set of attributes).
    • rich-text-codemirror.js - Uses AnnotationList to track annotations on the text and maintain the appropriate set of markers on a CodeMirror instance.
    • firebase-adapter.js - handles integration with Firebase (appending operations, triggering retries, presence, etc.).
  • test/ - Jasmine tests for Firepad (many of these were borrowed from ot.js).