diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-10-06 09:42:49 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-10-06 09:42:49 +0200 |
commit | ce1e0e187339976fc3cae7ef70bcfdd0eaf68981 (patch) | |
tree | c71ab2b8badd7a54759790bde083cab721796d92 /theme/javascript/index.js | |
parent | bcb224d1cb0add4285538f03956f6f6a1574e49a (diff) | |
parent | c2775b3b63e92a7047f019a9d56851ce4fdd6c02 (diff) | |
download | gitbook-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-x | theme/javascript/index.js | 81 |
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 = {}; + |