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).