Visit firepad.io for demo, examples, and embedding docs!
Read on if you'd like to contribute to Firepad.
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
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).