summaryrefslogtreecommitdiffstats
path: root/theme/javascript/index.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-10-06 09:42:49 +0200
committerSamy Pessé <samypesse@gmail.com>2015-10-06 09:42:49 +0200
commitce1e0e187339976fc3cae7ef70bcfdd0eaf68981 (patch)
treec71ab2b8badd7a54759790bde083cab721796d92 /theme/javascript/index.js
parentbcb224d1cb0add4285538f03956f6f6a1574e49a (diff)
parentc2775b3b63e92a7047f019a9d56851ce4fdd6c02 (diff)
downloadgitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.zip
gitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.tar.gz
gitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.tar.bz2
Merge pull request #964 from GitbookIO/features/plugin_api
Better APIs for Plugins
Diffstat (limited to 'theme/javascript/index.js')
-rwxr-xr-xtheme/javascript/index.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/theme/javascript/index.js b/theme/javascript/index.js
new file mode 100755
index 0000000..6e601c6
--- /dev/null
+++ b/theme/javascript/index.js
@@ -0,0 +1,81 @@
+var $ = require('jquery');
+var _ = require('lodash');
+
+var storage = require('./storage');
+var dropdown = require('./dropdown');
+var events = require('./events');
+var state = require('./state');
+var keyboard = require('./keyboard');
+var navigation = require('./navigation');
+var sidebar = require('./sidebar');
+var toolbar = require('./toolbar');
+
+
+function start(config) {
+ // Init sidebar
+ sidebar.init();
+
+ // Init keyboard
+ keyboard.init();
+
+ // Bind dropdown
+ dropdown.init();
+
+ // Init navigation
+ navigation.init();
+
+
+ // Add action to toggle sidebar
+ toolbar.createButton({
+ icon: 'fa fa-align-justify',
+ onClick: function(e) {
+ e.preventDefault();
+ sidebar.toggle();
+ }
+ });
+
+ events.trigger('start', config);
+}
+
+// Export APIs for plugins
+var gitbook = {
+ start: start,
+ events: events,
+ state: state,
+
+ // UI sections
+ toolbar: toolbar,
+ sidebar: sidebar,
+
+ // Read/Write the localstorage
+ storage: storage,
+
+ // Create keyboard shortcuts
+ keyboard: keyboard
+};
+
+
+// Modules mapping for plugins
+var MODULES = {
+ 'gitbook': gitbook,
+ 'jQuery': $,
+ 'lodash': _
+};
+
+window.gitbook = gitbook;
+window.$ = $;
+window.jQuery = $;
+window.require = function(mods, fn) {
+ mods = _.map(mods, function(mod) {
+ if (!MODULES[mod]) {
+ throw new Error('GitBook module '+mod+' doesn\'t exist');
+ }
+
+ return MODULES[mod];
+ });
+
+ fn.apply(null, mods);
+};
+
+module.exports = {};
+