From: Vincent Vanwaelscappel Date: Fri, 3 Jul 2020 14:28:47 +0000 (+0200) Subject: wip #3763 @2 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=fab99057e6e000b63b68782231e299161aada257;p=fluidbook-html5.git wip #3763 @2 --- diff --git a/js/libs/fluidbook/fluidbook.3dflip.js b/js/libs/fluidbook/fluidbook.3dflip.js index abb10245..4b1a29d7 100644 --- a/js/libs/fluidbook/fluidbook.3dflip.js +++ b/js/libs/fluidbook/fluidbook.3dflip.js @@ -114,7 +114,7 @@ Fluidbook3DFlip.prototype = { $this.guessCameraZoom(true); }); - key('⌘+alt+w, ctrl+alt+w', function () { + this.fluidbook.keyboard.keyShortcut('⌘+alt+w, ctrl+alt+w', function () { $this.debugGPU(); }); diff --git a/js/libs/fluidbook/fluidbook.audiodescription.js b/js/libs/fluidbook/fluidbook.audiodescription.js index e6d4d13f..aeba6579 100644 --- a/js/libs/fluidbook/fluidbook.audiodescription.js +++ b/js/libs/fluidbook/fluidbook.audiodescription.js @@ -83,8 +83,8 @@ FluidbookAudioDescription.prototype = { }); // Keyboard Shortcuts - key('ctrl+shift+left', this.playSide.bind(this, 'left')); - key('ctrl+shift+right', this.playSide.bind(this, 'right')); + this.fluidbook.keyboard.keyShortcut('ctrl+shift+left', this.playSide.bind(this, 'left')); + this.fluidbook.keyboard.keyShortcut('ctrl+shift+right', this.playSide.bind(this, 'right')); this.setupPages(); }, diff --git a/js/libs/fluidbook/fluidbook.contentlock.js b/js/libs/fluidbook/fluidbook.contentlock.js index 29e35701..187430ec 100644 --- a/js/libs/fluidbook/fluidbook.contentlock.js +++ b/js/libs/fluidbook/fluidbook.contentlock.js @@ -9,7 +9,7 @@ FluidbookContentLock.prototype = { init: function () { var $this = this; - key('⌘+alt+u, ctrl+alt+u', function () { + this.fluidbook.keyboard.keyShortcut('⌘+alt+u, ctrl+alt+u', function () { $this.setMaxPage(); }); diff --git a/js/libs/fluidbook/fluidbook.keyboard.js b/js/libs/fluidbook/fluidbook.keyboard.js index 0a044aee..ea44ab10 100644 --- a/js/libs/fluidbook/fluidbook.keyboard.js +++ b/js/libs/fluidbook/fluidbook.keyboard.js @@ -7,7 +7,7 @@ function FluidbookKeyboard(fluidbook) { FluidbookKeyboard.prototype = { initKeyboardShortcuts: function () { var $this = this; - key.filter = function (event) { + hotkeys.filter = function (event) { var e = $(event.target || event.srcElement); return !(e.is('input:not(#q),select,textarea')); } @@ -52,20 +52,38 @@ FluidbookKeyboard.prototype = { initSearchShortcuts: function () { var $this = this; - key('f3', function () { + this.keyShortcut('f3', function () { if ($this.fluidbook.search.isResultNavOpened()) { $this.fluidbook.search.nextResultsPage(); } else { $this.fluidbook.nav.openSearch(); } - return false; }); - key('shift+f3', function () { + this.keyShortcut('shift+f3', function () { if ($this.fluidbook.search.isResultNavOpened()) { $this.fluidbook.search.previousResultsPage(); } - return false; + }); + }, + + initZoomShortcuts: function () { + var $this = this; + + window.addEventListener('keydown', function(e){ + console.log(e); + if (e.ctrlKey) { + if (e.key === '+') { + $this.fluidbook.zoom.increaseZoom(); + e.preventDefault(); + } else if (e.key === '-') { + $this.fluidbook.zoom.decreaseZoom(); + e.preventDefault(); + } else if (e.key === '0') { + $this.fluidbook.zoom.resetZoom(); + e.preventDefault(); + } + } }); }, @@ -73,7 +91,8 @@ FluidbookKeyboard.prototype = { if (shortcuts === '') { return; } - key(this.checkShortcuts(shortcuts), function () { + var s = this.checkShortcuts(shortcuts); + hotkeys(s.shortcuts, s.options, function () { func(); return false; }); @@ -83,8 +102,15 @@ FluidbookKeyboard.prototype = { checkShortcuts: function (shortcuts) { console.log(shortcuts); var $this = this; - var s = shortcuts.split(','); var res = []; + var splitKey = shortcuts.indexOf('plus') >= 0 ? '-' : '+'; + if (splitKey !== '+') { + shortcuts = shortcuts.replace(/\+/g, splitKey); + shortcuts = shortcuts.replace(/plus/g, '+'); + } + var s = shortcuts.split(','); + + $.each(s, function (k, shortcut) { shortcut = shortcut.trim(); if ($this.shortcuts.indexOf(shortcut) === -1) { @@ -92,8 +118,9 @@ FluidbookKeyboard.prototype = { res.push(shortcut); } }); - console.log(res); - return res.join(', '); + + var ret = {shortcuts: res.join(', '), options: {splitKey: splitKey}}; + return ret; }, ariaShortcut: function (shortcuts, func) { diff --git a/js/libs/fluidbook/fluidbook.search.js b/js/libs/fluidbook/fluidbook.search.js index 32312ba0..32ebd19f 100644 --- a/js/libs/fluidbook/fluidbook.search.js +++ b/js/libs/fluidbook/fluidbook.search.js @@ -108,13 +108,6 @@ FluidbookSearch.prototype = { $this.updateResultsNav($this.fluidbook.currentPage); }); - - // Close results nav when hitting escape - key('esc', function () { - if ($this.resultsNavActive()) { - $this.closeResultsNav(); - } - }) }, resultsNavActive: function () { return $('body').hasClass(this.resultsActiveClass); diff --git a/js/libs/fluidbook/fluidbook.zoom.js b/js/libs/fluidbook/fluidbook.zoom.js index dac6e375..1b025e6f 100644 --- a/js/libs/fluidbook/fluidbook.zoom.js +++ b/js/libs/fluidbook/fluidbook.zoom.js @@ -3,6 +3,7 @@ function FluidbookZoom(fluidbook) { this.zoom = 0; this.originpct = ['0%', '0%']; this.originpx = ['0px', '0px']; + this.initial = this.fluidbook.settings.zoom / 100; this.max = this.fluidbook.settings.zoomw / 100; this.transition = true; this.enabled = true; @@ -39,6 +40,30 @@ FluidbookZoom.prototype = { } }); + this.fluidbook.keyboard.initZoomShortcuts(); + }, + + increaseZoom: function () { + var z; + if (this.zoom === 1) { + z = this.initial; + } else { + z = this.max; + } + this.setZoom(z, 1, true); + }, + + decreaseZoom: function () { + var z; + if (this.zoom === 1) { + return; + } else if (this.zoom > this.initial) { + z = this.initial; + } else { + z = 1; + } + this.setZoom(z, -1, true); + }, disable: function () { diff --git a/js/libs/hotkeys.min.js b/js/libs/hotkeys.min.js new file mode 100644 index 00000000..bee739cf --- /dev/null +++ b/js/libs/hotkeys.min.js @@ -0,0 +1,2 @@ +/*! hotkeys-js v3.8.1 | MIT (c) 2020 kenny wong | http://jaywcjlove.github.io/hotkeys */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).hotkeys=t()}(this,function(){"use strict";var e="undefined"!=typeof navigator&&0