|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
- var fontState;
-
- var THEMES = {
- "white": 0,
- "sepia": 1,
- "night": 2
- };
-
- var FAMILY = {
- "serif": 0,
- "sans": 1
- };
-
- // Save current font settings
- function saveFontSettings() {
- gitbook.storage.set("fontState", fontState);
- update();
- }
-
- // Increase font size
- function enlargeFontSize(e) {
- e.preventDefault();
- if (fontState.size >= 4) return;
-
- fontState.size++;
- saveFontSettings();
- };
-
- // Decrease font size
- function reduceFontSize(e) {
- e.preventDefault();
- if (fontState.size <= 0) return;
-
- fontState.size--;
- saveFontSettings();
- };
-
- // Change font family
- function changeFontFamily(index, e) {
- e.preventDefault();
-
- fontState.family = index;
- saveFontSettings();
- };
-
- // Change type of color
- function changeColorTheme(index, e) {
- e.preventDefault();
-
- var $book = $(".book");
-
- if (fontState.theme !== 0)
- $book.removeClass("color-theme-"+fontState.theme);
-
- fontState.theme = index;
- if (fontState.theme !== 0)
- $book.addClass("color-theme-"+fontState.theme);
-
- saveFontSettings();
- };
-
- function update() {
- var $book = gitbook.state.$book;
-
- $(".font-settings .font-family-list li").removeClass("active");
- $(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active");
-
- $book[0].className = $book[0].className.replace(/\bfont-\S+/g, '');
- $book.addClass("font-size-"+fontState.size);
- $book.addClass("font-family-"+fontState.family);
-
- if(fontState.theme !== 0) {
- $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, '');
- $book.addClass("color-theme-"+fontState.theme);
- }
- };
-
- function init(config) {
- var $bookBody, $book;
-
- //Find DOM elements.
- $book = gitbook.state.$book;
- $bookBody = $book.find(".book-body");
-
- // Instantiate font state object
- fontState = gitbook.storage.get("fontState", {
- size: config.size || 2,
- family: FAMILY[config.family || "sans"],
- theme: THEMES[config.theme || "white"]
- });
-
- update();
- };
-
-
- gitbook.events.bind("start", function(e, config) {
- var opts = config.fontsettings;
-
- // Create buttons in toolbar
- gitbook.toolbar.createButton({
- icon: 'fa fa-font',
- label: 'Font Settings',
- className: 'font-settings',
- dropdown: [
- [
- {
- text: 'A',
- className: 'font-reduce',
- onClick: reduceFontSize
- },
- {
- text: 'A',
- className: 'font-enlarge',
- onClick: enlargeFontSize
- }
- ],
- [
- {
- text: 'Serif',
- onClick: _.partial(changeFontFamily, 0)
- },
- {
- text: 'Sans',
- onClick: _.partial(changeFontFamily, 1)
- }
- ],
- [
- {
- text: 'White',
- onClick: _.partial(changeColorTheme, 0)
- },
- {
- text: 'Sepia',
- onClick: _.partial(changeColorTheme, 1)
- },
- {
- text: 'Night',
- onClick: _.partial(changeColorTheme, 2)
- }
- ]
- ]
- });
-
-
- // Init current settings
- init(opts);
- });
- });
-
-
|