@internetarchive/bookreader 5.0.0-7-multiple-files → 5.0.0-70
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.js +17 -15
- package/.github/workflows/node.js.yml +78 -6
- package/.github/workflows/npm-publish.yml +6 -20
- package/.testcaferc.js +10 -0
- package/BookReader/BookReader.css +416 -1365
- package/BookReader/BookReader.js +2 -21564
- package/BookReader/BookReader.js.LICENSE.txt +20 -20
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +1509 -0
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +19 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -0
- package/BookReader/icons/1up.svg +1 -12
- package/BookReader/icons/2up.svg +1 -15
- package/BookReader/icons/advance.svg +3 -26
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -0
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -17
- package/BookReader/icons/fullscreen_exit.svg +1 -17
- package/BookReader/icons/hamburger.svg +1 -15
- package/BookReader/icons/left-arrow.svg +1 -12
- package/BookReader/icons/magnify-minus.svg +1 -16
- package/BookReader/icons/magnify-plus.svg +1 -17
- package/BookReader/icons/magnify.svg +1 -15
- package/BookReader/icons/pause.svg +1 -23
- package/BookReader/icons/play.svg +1 -22
- package/BookReader/icons/playback-speed.svg +1 -34
- package/BookReader/icons/read-aloud.svg +1 -22
- package/BookReader/icons/review.svg +3 -22
- package/BookReader/icons/thumbnails.svg +1 -17
- package/BookReader/icons/voice.svg +1 -0
- package/BookReader/icons/volume-full.svg +1 -22
- package/BookReader/images/BRicons.svg +5 -94
- package/BookReader/images/books_graphic.svg +1 -177
- package/BookReader/images/icon_book.svg +1 -12
- package/BookReader/images/icon_bookmark.svg +1 -12
- package/BookReader/images/icon_gear.svg +1 -14
- package/BookReader/images/icon_hamburger.svg +1 -20
- package/BookReader/images/icon_home.svg +1 -21
- package/BookReader/images/icon_info.svg +1 -11
- package/BookReader/images/icon_one_page.svg +1 -8
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -15
- package/BookReader/images/icon_search_button.svg +1 -8
- package/BookReader/images/icon_share.svg +1 -9
- package/BookReader/images/icon_skip-ahead.svg +1 -6
- package/BookReader/images/icon_skip-back.svg +2 -13
- package/BookReader/images/icon_speaker.svg +1 -18
- package/BookReader/images/icon_speaker_open.svg +1 -10
- package/BookReader/images/icon_thumbnails.svg +1 -12
- package/BookReader/images/icon_toc.svg +1 -5
- package/BookReader/images/icon_two_pages.svg +1 -9
- package/BookReader/images/marker_chap-off.svg +1 -11
- package/BookReader/images/marker_chap-on.svg +1 -11
- package/BookReader/images/marker_srch-on.svg +1 -11
- package/BookReader/jquery-3.js +2 -0
- package/BookReader/jquery-3.js.LICENSE.txt +24 -0
- package/BookReader/plugins/plugin.archive_analytics.js +1 -172
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -165
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +22 -301
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +1 -74
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +1 -368
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +2 -1420
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +2 -1080
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +2 -9193
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -269
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +3 -0
- package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
- package/BookReader/webcomponents-bundle.js.map +1 -0
- package/BookReaderDemo/BookReaderDemo.css +16 -19
- package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
- package/BookReaderDemo/BookReaderJSAutoplay.js +4 -1
- package/BookReaderDemo/BookReaderJSSimple.js +1 -0
- package/BookReaderDemo/IADemoBr.js +147 -0
- package/BookReaderDemo/demo-advanced.html +2 -2
- package/BookReaderDemo/demo-autoplay.html +2 -3
- package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
- package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
- package/BookReaderDemo/demo-fullscreen.html +2 -4
- package/BookReaderDemo/demo-iiif.html +2 -1
- package/BookReaderDemo/demo-iiif.js +0 -1
- package/BookReaderDemo/demo-internetarchive.html +213 -17
- package/BookReaderDemo/demo-multiple.html +2 -1
- package/BookReaderDemo/demo-preview-pages.html +2 -1
- package/BookReaderDemo/demo-simple.html +2 -1
- package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
- package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
- package/BookReaderDemo/immersion-1up.html +2 -2
- package/BookReaderDemo/immersion-mode.html +2 -4
- package/BookReaderDemo/toggle_controls.html +3 -2
- package/BookReaderDemo/view_mode.html +2 -1
- package/BookReaderDemo/viewmode-cycle.html +2 -3
- package/CHANGELOG.md +289 -0
- package/README.md +14 -1
- package/babel.config.js +20 -0
- package/codecov.yml +6 -0
- package/index.html +4 -1
- package/jsconfig.json +19 -0
- package/netlify.toml +9 -0
- package/package.json +71 -60
- package/renovate.json +52 -0
- package/scripts/preversion.js +4 -1
- package/src/BookNavigator/assets/bookmark-colors.js +1 -1
- package/src/BookNavigator/assets/button-base.js +9 -2
- package/src/BookNavigator/assets/ia-logo.js +17 -0
- package/src/BookNavigator/assets/icon_checkmark.js +1 -1
- package/src/BookNavigator/assets/icon_close.js +1 -1
- package/src/BookNavigator/assets/icon_sort_asc.js +5 -0
- package/src/BookNavigator/assets/{icon_sort_ascending.js → icon_sort_desc.js} +2 -2
- package/src/BookNavigator/assets/icon_sort_neutral.js +5 -0
- package/src/BookNavigator/assets/icon_volumes.js +11 -0
- package/src/BookNavigator/book-navigator.js +586 -0
- package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
- package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
- package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
- package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +3 -8
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
- package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
- package/src/BookNavigator/delete-modal-actions.js +1 -1
- package/src/BookNavigator/downloads/downloads-provider.js +36 -21
- package/src/BookNavigator/downloads/downloads.js +41 -25
- package/src/BookNavigator/search/search-provider.js +80 -28
- package/src/BookNavigator/search/search-results.js +28 -25
- package/src/BookNavigator/sharing.js +27 -0
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +11 -10
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +3 -3
- package/src/BookNavigator/volumes/volumes-provider.js +88 -53
- package/src/BookNavigator/volumes/volumes.js +41 -14
- package/src/BookReader/BookModel.js +64 -34
- package/src/BookReader/DragScrollable.js +233 -0
- package/src/BookReader/Mode1Up.js +56 -351
- package/src/BookReader/Mode1UpLit.js +388 -0
- package/src/BookReader/Mode2Up.js +73 -1318
- package/src/BookReader/Mode2UpLit.js +776 -0
- package/src/BookReader/ModeCoordinateSpace.js +29 -0
- package/src/BookReader/ModeSmoothZoom.js +312 -0
- package/src/BookReader/ModeThumb.js +18 -12
- package/src/BookReader/Navbar/Navbar.js +12 -38
- package/src/BookReader/PageContainer.js +81 -6
- package/src/BookReader/ReduceSet.js +1 -1
- package/src/BookReader/Toolbar/Toolbar.js +10 -37
- package/src/BookReader/events.js +2 -3
- package/src/BookReader/options.js +24 -2
- package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/src/BookReader/utils/ScrollClassAdder.js +31 -0
- package/src/BookReader/utils/SelectionObserver.js +43 -0
- package/src/BookReader/utils.js +118 -13
- package/src/BookReader.js +446 -1062
- package/src/assets/icons/close-circle-dark.svg +1 -0
- package/src/assets/icons/magnify-minus.svg +3 -7
- package/src/assets/icons/magnify-plus.svg +3 -7
- package/src/assets/icons/voice.svg +1 -0
- package/src/css/BookReader.scss +1 -17
- package/src/css/_BRBookmarks.scss +1 -1
- package/src/css/_BRComponent.scss +1 -1
- package/src/css/_BRmain.scss +33 -24
- package/src/css/_BRnav.scss +11 -38
- package/src/css/_BRpages.scss +149 -40
- package/src/css/_BRsearch.scss +67 -226
- package/src/css/_TextSelection.scss +87 -27
- package/src/css/_colorbox.scss +2 -2
- package/src/css/_controls.scss +20 -7
- package/src/css/_icons.scss +7 -1
- package/src/ia-bookreader/ia-bookreader.js +224 -0
- package/src/plugins/plugin.archive_analytics.js +3 -3
- package/src/plugins/plugin.autoplay.js +5 -11
- package/src/plugins/plugin.chapters.js +211 -186
- package/src/plugins/plugin.resume.js +3 -3
- package/src/plugins/plugin.text_selection.js +464 -134
- package/src/plugins/plugin.vendor-fullscreen.js +4 -4
- package/src/plugins/search/plugin.search.js +175 -120
- package/src/plugins/search/utils.js +43 -0
- package/src/plugins/search/view.js +64 -202
- package/src/plugins/tts/AbstractTTSEngine.js +68 -40
- package/src/plugins/tts/FestivalTTSEngine.js +13 -14
- package/src/plugins/tts/PageChunk.js +15 -21
- package/src/plugins/tts/PageChunkIterator.js +8 -12
- package/src/plugins/tts/WebTTSEngine.js +87 -71
- package/src/plugins/tts/plugin.tts.js +95 -126
- package/src/plugins/tts/utils.js +0 -25
- package/src/plugins/url/UrlPlugin.js +191 -0
- package/src/plugins/{plugin.url.js → url/plugin.url.js} +45 -16
- package/src/util/browserSniffing.js +22 -0
- package/src/util/docCookies.js +21 -2
- package/tests/e2e/README.md +37 -0
- package/tests/e2e/autoplay.test.js +2 -2
- package/tests/e2e/base.test.js +8 -16
- package/tests/e2e/helpers/base.js +53 -48
- package/tests/e2e/helpers/debug.js +1 -1
- package/tests/e2e/helpers/params.js +17 -0
- package/tests/e2e/helpers/rightToLeft.js +8 -14
- package/tests/e2e/helpers/search.js +73 -0
- package/tests/e2e/models/Navigation.js +20 -37
- package/tests/e2e/rightToLeft.test.js +4 -5
- package/tests/e2e/viewmode.test.js +40 -33
- package/tests/jest/BookNavigator/book-navigator.test.js +658 -0
- package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
- package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
- package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
- package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
- package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
- package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
- package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
- package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
- package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
- package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
- package/tests/jest/BookNavigator/volumes/volumes-provider.test.js +184 -0
- package/tests/jest/BookNavigator/volumes/volumes.test.js +97 -0
- package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
- package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
- package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
- package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
- package/tests/jest/BookReader/Mode2Up.test.js +98 -0
- package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
- package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
- package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
- package/tests/jest/BookReader/ModeThumb.test.js +71 -0
- package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +10 -10
- package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +88 -6
- package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
- package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
- package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
- package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
- package/tests/jest/BookReader/utils/SelectionObserver.test.js +43 -0
- package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
- package/tests/jest/BookReader/utils.test.js +229 -0
- package/tests/jest/BookReader.keyboard.test.js +190 -0
- package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
- package/tests/{BookReader.test.js → jest/BookReader.test.js} +26 -37
- package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
- package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +4 -4
- package/tests/jest/plugins/plugin.chapters.test.js +145 -0
- package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
- package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
- package/tests/jest/plugins/plugin.text_selection.test.js +317 -0
- package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
- package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
- package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +39 -6
- package/tests/jest/plugins/search/utils.js +25 -0
- package/tests/jest/plugins/search/utils.test.js +29 -0
- package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +29 -9
- package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
- package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
- package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
- package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
- package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
- package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
- package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +53 -14
- package/tests/jest/setup.js +3 -0
- package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
- package/tests/jest/util/docCookies.test.js +24 -0
- package/tests/{util → jest/util}/strings.test.js +1 -1
- package/tests/{utils.js → jest/utils.js} +38 -0
- package/webpack.config.js +11 -6
- package/.babelrc +0 -12
- package/.dependabot/config.yml +0 -6
- package/.testcaferc.json +0 -5
- package/BookReader/bookreader-component-bundle.js +0 -14311
- package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
- package/BookReader/bookreader-component-bundle.js.map +0 -1
- package/BookReader/icons/sort-ascending.svg +0 -1
- package/BookReader/icons/sort-descending.svg +0 -1
- package/BookReader/jquery-1.10.1.js +0 -108
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
- package/BookReader/plugins/plugin.menu_toggle.js +0 -369
- package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
- package/BookReader/plugins/plugin.mobile_nav.js +0 -335
- package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
- package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
- package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
- package/karma.conf.js +0 -23
- package/src/BookNavigator/BookModel.js +0 -14
- package/src/BookNavigator/BookNavigator.js +0 -452
- package/src/BookNavigator/assets/book-loader.js +0 -27
- package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
- package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
- package/src/BookNavigator/search/a-search-result.js +0 -55
- package/src/BookReader/DebugConsole.js +0 -54
- package/src/BookReaderComponent/BookReaderComponent.js +0 -112
- package/src/ItemNavigator/ItemNavigator.js +0 -372
- package/src/ItemNavigator/providers/sharing.js +0 -29
- package/src/assets/icons/sort-ascending.svg +0 -1
- package/src/assets/icons/sort-descending.svg +0 -1
- package/src/css/_MobileNav.scss +0 -194
- package/src/dragscrollable-br.js +0 -261
- package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
- package/src/plugins/plugin.mobile_nav.js +0 -287
- package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
- package/tests/BookReader/DebugConsole.test.js +0 -25
- package/tests/BookReader/Mode1Up.test.js +0 -164
- package/tests/BookReader/Mode2Up.test.js +0 -247
- package/tests/BookReader/utils.test.js +0 -109
- package/tests/e2e/helpers/desktopSearch.js +0 -72
- package/tests/e2e/helpers/mobileSearch.js +0 -85
- package/tests/e2e/ia-production/ia-prod-base.js +0 -17
- package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
- package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
- package/tests/karma/BookNavigator/volumes.test.js +0 -101
- package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
- package/tests/plugins/plugin.chapters.test.js +0 -130
- package/tests/plugins/plugin.mobile_nav.test.js +0 -66
- package/tests/plugins/plugin.text_selection.test.js +0 -203
- package/tests/util/docCookies.test.js +0 -15
@@ -1,24 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Sizzle CSS Selector Engine v2.2.0-pre
|
3
|
-
* http://sizzlejs.com/
|
4
|
-
*
|
5
|
-
* Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
|
6
|
-
* Released under the MIT license
|
7
|
-
* http://jquery.org/license
|
8
|
-
*
|
9
|
-
* Date: 2014-12-16
|
10
|
-
*/
|
11
|
-
|
12
|
-
/*!
|
13
|
-
* jQuery JavaScript Library v1.11.3
|
14
|
-
* http://jquery.com/
|
15
|
-
*
|
16
|
-
* Includes Sizzle.js
|
17
|
-
* http://sizzlejs.com/
|
18
|
-
*
|
19
|
-
* Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
|
20
|
-
* Released under the MIT license
|
21
|
-
* http://jquery.org/license
|
22
|
-
*
|
23
|
-
* Date: 2015-04-28T16:19Z
|
24
|
-
*/
|
@@ -1,369 +0,0 @@
|
|
1
|
-
(self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.menu_toggle.js"],{
|
2
|
-
|
3
|
-
/***/ "./src/plugins/menu_toggle/plugin.menu_toggle.js":
|
4
|
-
/*!*******************************************************!*\
|
5
|
-
!*** ./src/plugins/menu_toggle/plugin.menu_toggle.js ***!
|
6
|
-
\*******************************************************/
|
7
|
-
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
8
|
-
|
9
|
-
"use strict";
|
10
|
-
__webpack_require__.r(__webpack_exports__);
|
11
|
-
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
|
12
|
-
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
|
13
|
-
/* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "jquery");
|
14
|
-
/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "jquery");
|
15
|
-
|
16
|
-
|
17
|
-
/* global BookReader */
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Plugin for managing menu visibility
|
21
|
-
* Enabling this plug-in:
|
22
|
-
* + removes the "menu tab" triangle
|
23
|
-
* + toggles nav at: book center tap/click
|
24
|
-
* + toggles nav at: black background tap/click
|
25
|
-
*
|
26
|
-
* Handles to events at CAPTURE phase
|
27
|
-
*
|
28
|
-
* This uses core BookReader functions and parameters to check its UI state:
|
29
|
-
* - br.refs = (at best) ui references that are present at any given time
|
30
|
-
* - br.navigationIsVisible() - checks using refs to confirm the navbar's presence
|
31
|
-
* - br.showNavigation() & br.hideNavigation()
|
32
|
-
* - br.constMode1up checks against br.mode;
|
33
|
-
*
|
34
|
-
* The list of BookReader custom events this plugin taps into are mainly
|
35
|
-
* listed in the `.init` function
|
36
|
-
*/
|
37
|
-
(function addMenuToggler() {
|
38
|
-
jQuery.extend(BookReader.defaultOptions, {
|
39
|
-
enableMenuToggle: true
|
40
|
-
});
|
41
|
-
/**
|
42
|
-
* `holdOffOnToggle` is used in fn `toggleRouter`
|
43
|
-
* to determine if menu toggle should happen
|
44
|
-
* set by `registerDragHandlers`
|
45
|
-
*/
|
46
|
-
|
47
|
-
var holdOffOnToggle = false;
|
48
|
-
/**
|
49
|
-
* Hides Nav arrow tab
|
50
|
-
*
|
51
|
-
* @param { object } br - BookReader instance
|
52
|
-
*/
|
53
|
-
|
54
|
-
function hideArrow(br) {
|
55
|
-
if (!br.refs || !br.refs.$BRnav) {
|
56
|
-
return;
|
57
|
-
}
|
58
|
-
|
59
|
-
var $menuTab = br.refs.$BRnav.children('.BRnavCntl');
|
60
|
-
$menuTab.css('display', 'none');
|
61
|
-
}
|
62
|
-
/**
|
63
|
-
* Sets up nav - hides arrow tab & adds click events
|
64
|
-
*
|
65
|
-
* @param { object } br - BookReader instance
|
66
|
-
*/
|
67
|
-
|
68
|
-
|
69
|
-
function setupNavForToggle(br) {
|
70
|
-
hideArrow(br);
|
71
|
-
registerClickHandlers(br);
|
72
|
-
}
|
73
|
-
/**
|
74
|
-
* Resets nav to always show
|
75
|
-
* hides arrow tab, removes click events, shows nav chrome
|
76
|
-
*
|
77
|
-
* @param { object } br - BookReader instance
|
78
|
-
*/
|
79
|
-
|
80
|
-
|
81
|
-
function alwaysShowNav(br) {
|
82
|
-
hideArrow(br);
|
83
|
-
removeClickHandlers(br);
|
84
|
-
br.showNavigation();
|
85
|
-
}
|
86
|
-
/**
|
87
|
-
* Removes click handlers on elements that house the book pages
|
88
|
-
*
|
89
|
-
* @param { object } br - BookReader instance
|
90
|
-
*/
|
91
|
-
|
92
|
-
|
93
|
-
var removeClickHandlers = function removeClickHandlers(br) {
|
94
|
-
if (br.refs.$brPageViewEl) {
|
95
|
-
br.refs.$brPageViewEl[0].removeEventListener('click', onBookClick, true);
|
96
|
-
}
|
97
|
-
|
98
|
-
if (br.refs.$brTwoPageView) {
|
99
|
-
br.refs.$brTwoPageView[0].removeEventListener('click', onBookClick, true);
|
100
|
-
}
|
101
|
-
};
|
102
|
-
/**
|
103
|
-
* Toggle functionality
|
104
|
-
* Responsible for calling native functions `hideNavigation` & `showNavigation`
|
105
|
-
* Makes sure only 1 toggle action is taken at a time using `togglingNav` switch.
|
106
|
-
*
|
107
|
-
* @params { object } br - bookreader instance
|
108
|
-
*/
|
109
|
-
|
110
|
-
|
111
|
-
var togglingNav = false;
|
112
|
-
/* flag to make sure animations only fire once */
|
113
|
-
|
114
|
-
var toggleNav = function toggleNav(br) {
|
115
|
-
if (togglingNav) {
|
116
|
-
return;
|
117
|
-
}
|
118
|
-
|
119
|
-
togglingNav = true;
|
120
|
-
|
121
|
-
var navToggled = function navToggled() {
|
122
|
-
togglingNav = false;
|
123
|
-
window.removeEventListener('BookReader:navToggled', navToggled);
|
124
|
-
};
|
125
|
-
|
126
|
-
$(document).on('BookReader:navToggled', navToggled);
|
127
|
-
var menuIsShowing = br.navigationIsVisible();
|
128
|
-
|
129
|
-
if (menuIsShowing) {
|
130
|
-
br.hideNavigation();
|
131
|
-
} else {
|
132
|
-
br.showNavigation();
|
133
|
-
}
|
134
|
-
};
|
135
|
-
/**
|
136
|
-
* Check if div `BRcontainer` is scrollable.
|
137
|
-
* This normally happens when bookreader is zoomed in.
|
138
|
-
* not using br.refs, because `scrollWidth` & `offsetWidth` is not easily accessible.
|
139
|
-
*/
|
140
|
-
|
141
|
-
|
142
|
-
var isBRcontainerScrollable = function isBRcontainerScrollable() {
|
143
|
-
var brContainer = document.querySelector('.BRcontainer');
|
144
|
-
var scrollWidth = brContainer.scrollWidth;
|
145
|
-
var offsetWidth = brContainer.offsetWidth;
|
146
|
-
return scrollWidth > offsetWidth;
|
147
|
-
};
|
148
|
-
/**
|
149
|
-
* Confirms whether or not the click happened in the nav toggle zone
|
150
|
-
*
|
151
|
-
* @param { MouseEvent } event - JS click event object
|
152
|
-
* @param { DOM } book - DOM element that represents book
|
153
|
-
*/
|
154
|
-
|
155
|
-
|
156
|
-
var isCenterClick = function isCenterClick(event, book) {
|
157
|
-
var clickPosition = event.clientX;
|
158
|
-
var bookWidth = book.offsetWidth;
|
159
|
-
var leftOffset = book.offsetLeft;
|
160
|
-
var bookEndPageFlipArea = Math.round(bookWidth / 3);
|
161
|
-
var leftThreshold = Math.round(bookEndPageFlipArea + leftOffset); // without it, the click area is small
|
162
|
-
|
163
|
-
var rightThreshold = Math.round(bookWidth - bookEndPageFlipArea + leftOffset);
|
164
|
-
var isOkOnRight = clickPosition > leftThreshold;
|
165
|
-
var isOkOnLeft = clickPosition < rightThreshold;
|
166
|
-
var isCenterClick = isOkOnRight && isOkOnLeft;
|
167
|
-
return isCenterClick;
|
168
|
-
};
|
169
|
-
/**
|
170
|
-
* Confirms whether or not the click happened in the background
|
171
|
-
*
|
172
|
-
* @param { DOM } element
|
173
|
-
*/
|
174
|
-
|
175
|
-
|
176
|
-
var isBackground = function isBackground(element) {
|
177
|
-
var isBackgroundClick = $(element).hasClass('BookReader') || $(element).hasClass('BRcontainer')
|
178
|
-
/* main black theatre */
|
179
|
-
|| $(element).hasClass('BRemptypage')
|
180
|
-
/* empty page placeholder */
|
181
|
-
|| $(element).hasClass('BRpageview')
|
182
|
-
/* empty page placeholder, 1up */
|
183
|
-
|| $(element).hasClass('BRtwopageview');
|
184
|
-
/* empty page placeholder, 2up */
|
185
|
-
|
186
|
-
return isBackgroundClick;
|
187
|
-
};
|
188
|
-
/**
|
189
|
-
* Main hook into toggle functionality
|
190
|
-
* This is the only function that should be called by the event handlers
|
191
|
-
*
|
192
|
-
* @param { object } br - BookReader instance
|
193
|
-
* @param { MouseEvent } e - JS event object
|
194
|
-
* @param { boolean } atBookCenter - optional
|
195
|
-
*/
|
196
|
-
|
197
|
-
|
198
|
-
var toggleRouter = function toggleRouter(br, e, atBookCenter) {
|
199
|
-
if (holdOffOnToggle) {
|
200
|
-
return;
|
201
|
-
}
|
202
|
-
|
203
|
-
var book = isBRcontainerScrollable() ? br.refs.$brContainer[0] : e.currentTarget;
|
204
|
-
var is1UpMode = br.constMode1up === br.mode;
|
205
|
-
var validBookClick = is1UpMode || isCenterClick(e, book);
|
206
|
-
var isValidClickArea = atBookCenter ? validBookClick : isBackground(e.target);
|
207
|
-
|
208
|
-
if (isValidClickArea) {
|
209
|
-
toggleNav(br, atBookCenter);
|
210
|
-
|
211
|
-
if (atBookCenter) {
|
212
|
-
e.stopPropagation(); // don't turn the page. this takes prescendence
|
213
|
-
}
|
214
|
-
}
|
215
|
-
};
|
216
|
-
/**
|
217
|
-
* background click event handler
|
218
|
-
* @param { object } br - BookReader instance
|
219
|
-
* @param { MouseEvent } e - JS event object
|
220
|
-
*/
|
221
|
-
|
222
|
-
|
223
|
-
function onBackgroundClick(br, e) {
|
224
|
-
toggleRouter(br, e);
|
225
|
-
}
|
226
|
-
/**
|
227
|
-
* actual book container click event handler
|
228
|
-
*
|
229
|
-
* @param { object } br - BookReader instance
|
230
|
-
* @param { MouseEvent } e - JS event object
|
231
|
-
*/
|
232
|
-
|
233
|
-
|
234
|
-
function onBookClick(br, e) {
|
235
|
-
var atBookCenter = true;
|
236
|
-
toggleRouter(br, e, atBookCenter);
|
237
|
-
}
|
238
|
-
|
239
|
-
var initialX;
|
240
|
-
var initialY;
|
241
|
-
/**
|
242
|
-
* attaches mouseup & mousedown event handlers to assess if user is dragging
|
243
|
-
* sets `initialX`, `initialY`, and `holdOffOnToggle`
|
244
|
-
*/
|
245
|
-
|
246
|
-
function registerDragHandlers() {
|
247
|
-
var background = document.querySelector('.BookReader');
|
248
|
-
|
249
|
-
if (!background) {
|
250
|
-
return;
|
251
|
-
}
|
252
|
-
|
253
|
-
background.addEventListener('mousedown', function (e) {
|
254
|
-
initialX = e.screenX;
|
255
|
-
initialY = e.screenY;
|
256
|
-
holdOffOnToggle = true;
|
257
|
-
}, true);
|
258
|
-
background.addEventListener('mouseup', function (e) {
|
259
|
-
var isDrag = Math.abs(initialX - e.screenX) > 5 || Math.abs(initialY - e.screenY) > 5;
|
260
|
-
|
261
|
-
if (!isDrag) {
|
262
|
-
holdOffOnToggle = false;
|
263
|
-
initialX = 0;
|
264
|
-
initialY = 0;
|
265
|
-
}
|
266
|
-
}, true);
|
267
|
-
}
|
268
|
-
/**
|
269
|
-
* attaches click handlers to background & book
|
270
|
-
* @param { object } br - BookReader instance
|
271
|
-
*/
|
272
|
-
|
273
|
-
|
274
|
-
function registerClickHandlers(br) {
|
275
|
-
var background = document.querySelector('.BookReader');
|
276
|
-
|
277
|
-
if (!background) {
|
278
|
-
return;
|
279
|
-
}
|
280
|
-
|
281
|
-
background.addEventListener('click', onBackgroundClick.bind(null, br), {
|
282
|
-
capture: true,
|
283
|
-
passive: true
|
284
|
-
});
|
285
|
-
var desk = document.querySelector('.BRcontainer') || {};
|
286
|
-
var book = desk.firstChild;
|
287
|
-
|
288
|
-
if (book) {
|
289
|
-
book.addEventListener('click', onBookClick.bind(null, br), true);
|
290
|
-
registerDragHandlers();
|
291
|
-
}
|
292
|
-
}
|
293
|
-
/**
|
294
|
-
* Install menu toggle
|
295
|
-
* attaches event handlers, sets up DOM on load
|
296
|
-
*/
|
297
|
-
|
298
|
-
|
299
|
-
var installMenuToggle = function installMenuToggle(br) {
|
300
|
-
var hasNav = false;
|
301
|
-
|
302
|
-
try {
|
303
|
-
hasNav = br.navigationIsVisible();
|
304
|
-
} catch (error) {
|
305
|
-
hasNav = false;
|
306
|
-
}
|
307
|
-
|
308
|
-
if (!hasNav) {
|
309
|
-
return;
|
310
|
-
}
|
311
|
-
|
312
|
-
var menuToggleEventRegister = function menuToggleEventRegister(e) {
|
313
|
-
registerClickHandlers(br);
|
314
|
-
};
|
315
|
-
|
316
|
-
var setupDOMandHandlers = function setupDOMandHandlers(e) {
|
317
|
-
setupNavForToggle(br);
|
318
|
-
};
|
319
|
-
|
320
|
-
var persistNav = function persistNav(e) {
|
321
|
-
alwaysShowNav(br);
|
322
|
-
};
|
323
|
-
|
324
|
-
var whenToToggleNav = ['BookReader:1PageViewSelected', 'BookReader:2PageViewSelected', 'BookReader:zoomIn', 'BookReader:zoomOut', 'BookReader:resize'];
|
325
|
-
var whenTolwaysShowNavWhen = ['BookReader:3PageViewSelected'];
|
326
|
-
$(document).on(whenTolwaysShowNavWhen.join(' '), persistNav);
|
327
|
-
$(document).on(whenToToggleNav.join(' '), menuToggleEventRegister);
|
328
|
-
$(window).on('orientationchange', menuToggleEventRegister);
|
329
|
-
$(document).on('BookReader:fullscreenToggled', setupDOMandHandlers);
|
330
|
-
$(window).on('DOMContentLoaded', setupDOMandHandlers);
|
331
|
-
setupDOMandHandlers();
|
332
|
-
};
|
333
|
-
/**
|
334
|
-
* Add to BookReader
|
335
|
-
*/
|
336
|
-
|
337
|
-
|
338
|
-
BookReader.prototype.setup = function (super_) {
|
339
|
-
return function (options) {
|
340
|
-
super_.call(this, options);
|
341
|
-
};
|
342
|
-
}(BookReader.prototype.setup);
|
343
|
-
/**
|
344
|
-
* Initialize plugin
|
345
|
-
*/
|
346
|
-
|
347
|
-
|
348
|
-
BookReader.prototype.init = function (super_) {
|
349
|
-
return function () {
|
350
|
-
super_.call(this);
|
351
|
-
|
352
|
-
if (this.options.enableMenuToggle) {
|
353
|
-
installMenuToggle(this);
|
354
|
-
}
|
355
|
-
};
|
356
|
-
}(BookReader.prototype.init);
|
357
|
-
})();
|
358
|
-
|
359
|
-
/***/ })
|
360
|
-
|
361
|
-
},
|
362
|
-
/******/ function(__webpack_require__) { // webpackRuntimeModules
|
363
|
-
/******/ "use strict";
|
364
|
-
/******/
|
365
|
-
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
366
|
-
/******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/menu_toggle/plugin.menu_toggle.js"));
|
367
|
-
/******/ }
|
368
|
-
]);
|
369
|
-
//# sourceMappingURL=plugin.menu_toggle.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/menu_toggle/plugin.menu_toggle.js"],"names":["addMenuToggler","jQuery","extend","BookReader","defaultOptions","enableMenuToggle","holdOffOnToggle","hideArrow","br","refs","$BRnav","$menuTab","children","css","setupNavForToggle","registerClickHandlers","alwaysShowNav","removeClickHandlers","showNavigation","$brPageViewEl","removeEventListener","onBookClick","$brTwoPageView","togglingNav","toggleNav","navToggled","window","$","document","on","menuIsShowing","navigationIsVisible","hideNavigation","isBRcontainerScrollable","brContainer","querySelector","scrollWidth","offsetWidth","isCenterClick","event","book","clickPosition","clientX","bookWidth","leftOffset","offsetLeft","bookEndPageFlipArea","Math","round","leftThreshold","rightThreshold","isOkOnRight","isOkOnLeft","isBackground","element","isBackgroundClick","hasClass","toggleRouter","e","atBookCenter","$brContainer","currentTarget","is1UpMode","constMode1up","mode","validBookClick","isValidClickArea","target","stopPropagation","onBackgroundClick","initialX","initialY","registerDragHandlers","background","addEventListener","screenX","screenY","isDrag","abs","bind","capture","passive","desk","firstChild","installMenuToggle","hasNav","error","menuToggleEventRegister","setupDOMandHandlers","persistNav","whenToToggleNav","whenTolwaysShowNavWhen","join","prototype","setup","super_","options","call","init"],"mappings":"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","file":"plugins/plugin.menu_toggle.js","sourcesContent":["\n/* global BookReader */\n/**\n * Plugin for managing menu visibility\n * Enabling this plug-in:\n * + removes the \"menu tab\" triangle\n * + toggles nav at: book center tap/click\n * + toggles nav at: black background tap/click\n *\n * Handles to events at CAPTURE phase\n *\n * This uses core BookReader functions and parameters to check its UI state:\n * - br.refs = (at best) ui references that are present at any given time\n * - br.navigationIsVisible() - checks using refs to confirm the navbar's presence\n * - br.showNavigation() & br.hideNavigation()\n * - br.constMode1up checks against br.mode;\n *\n * The list of BookReader custom events this plugin taps into are mainly\n * listed in the `.init` function\n */\n\n(function addMenuToggler() {\n jQuery.extend(BookReader.defaultOptions, {\n enableMenuToggle: true\n });\n\n /**\n * `holdOffOnToggle` is used in fn `toggleRouter`\n * to determine if menu toggle should happen\n * set by `registerDragHandlers`\n */\n let holdOffOnToggle = false;\n\n /**\n * Hides Nav arrow tab\n *\n * @param { object } br - BookReader instance\n */\n function hideArrow(br) {\n if (!br.refs || !br.refs.$BRnav) {\n return;\n }\n const $menuTab = br.refs.$BRnav.children('.BRnavCntl');\n $menuTab.css('display', 'none');\n }\n\n /**\n * Sets up nav - hides arrow tab & adds click events\n *\n * @param { object } br - BookReader instance\n */\n function setupNavForToggle(br) {\n hideArrow(br);\n registerClickHandlers(br);\n }\n\n /**\n * Resets nav to always show\n * hides arrow tab, removes click events, shows nav chrome\n *\n * @param { object } br - BookReader instance\n */\n function alwaysShowNav(br) {\n hideArrow(br);\n removeClickHandlers(br);\n br.showNavigation();\n }\n\n /**\n * Removes click handlers on elements that house the book pages\n *\n * @param { object } br - BookReader instance\n */\n const removeClickHandlers = function removeClickHandlers(br) {\n if (br.refs.$brPageViewEl) {\n br.refs.$brPageViewEl[0].removeEventListener('click', onBookClick, true);\n }\n if (br.refs.$brTwoPageView) {\n br.refs.$brTwoPageView[0].removeEventListener('click', onBookClick, true);\n }\n }\n\n /**\n * Toggle functionality\n * Responsible for calling native functions `hideNavigation` & `showNavigation`\n * Makes sure only 1 toggle action is taken at a time using `togglingNav` switch.\n *\n * @params { object } br - bookreader instance\n */\n let togglingNav = false; /* flag to make sure animations only fire once */\n const toggleNav = function toggleNav(br) {\n if (togglingNav) {\n return;\n }\n\n togglingNav = true;\n const navToggled = function navToggled() {\n togglingNav = false;\n window.removeEventListener('BookReader:navToggled', navToggled);\n };\n $(document).on('BookReader:navToggled', navToggled);\n\n const menuIsShowing = br.navigationIsVisible();\n if (menuIsShowing) {\n br.hideNavigation();\n } else {\n br.showNavigation();\n }\n }\n\n /**\n * Check if div `BRcontainer` is scrollable.\n * This normally happens when bookreader is zoomed in.\n * not using br.refs, because `scrollWidth` & `offsetWidth` is not easily accessible.\n */\n const isBRcontainerScrollable = function isBRcontainerScrollable() {\n const brContainer = document.querySelector('.BRcontainer');\n const scrollWidth = brContainer.scrollWidth;\n const offsetWidth = brContainer.offsetWidth;\n\n return scrollWidth > offsetWidth;\n }\n\n /**\n * Confirms whether or not the click happened in the nav toggle zone\n *\n * @param { MouseEvent } event - JS click event object\n * @param { DOM } book - DOM element that represents book\n */\n const isCenterClick = function isCenterClick(event, book) {\n const clickPosition = event.clientX;\n const bookWidth = book.offsetWidth;\n const leftOffset = book.offsetLeft\n const bookEndPageFlipArea = Math.round(bookWidth / 3);\n const leftThreshold = Math.round(bookEndPageFlipArea + leftOffset); // without it, the click area is small\n const rightThreshold = Math.round(bookWidth - bookEndPageFlipArea + leftOffset);\n const isOkOnRight = clickPosition > leftThreshold;\n const isOkOnLeft = clickPosition < rightThreshold;\n const isCenterClick = isOkOnRight && isOkOnLeft;\n\n return isCenterClick;\n }\n\n /**\n * Confirms whether or not the click happened in the background\n *\n * @param { DOM } element\n */\n const isBackground = function isBackground(element) {\n const isBackgroundClick = $(element).hasClass('BookReader')\n || $(element).hasClass('BRcontainer') /* main black theatre */\n || $(element).hasClass('BRemptypage') /* empty page placeholder */\n || $(element).hasClass('BRpageview') /* empty page placeholder, 1up */\n || $(element).hasClass('BRtwopageview'); /* empty page placeholder, 2up */\n return isBackgroundClick;\n };\n\n /**\n * Main hook into toggle functionality\n * This is the only function that should be called by the event handlers\n *\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n * @param { boolean } atBookCenter - optional\n */\n const toggleRouter = function toggleRouter (br, e, atBookCenter) {\n if (holdOffOnToggle) {\n return;\n }\n\n const book = isBRcontainerScrollable() ? br.refs.$brContainer[0] : e.currentTarget;\n const is1UpMode = br.constMode1up === br.mode;\n const validBookClick = is1UpMode || isCenterClick(e, book);\n const isValidClickArea = atBookCenter ? validBookClick : isBackground(e.target);\n if (isValidClickArea) {\n toggleNav(br, atBookCenter);\n\n if (atBookCenter) {\n e.stopPropagation(); // don't turn the page. this takes prescendence\n }\n }\n }\n\n /**\n * background click event handler\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n */\n function onBackgroundClick(br, e) {\n toggleRouter(br, e);\n }\n\n /**\n * actual book container click event handler\n *\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n */\n function onBookClick(br, e) {\n\n const atBookCenter = true;\n toggleRouter(br, e, atBookCenter);\n }\n\n let initialX;\n let initialY;\n /**\n * attaches mouseup & mousedown event handlers to assess if user is dragging\n * sets `initialX`, `initialY`, and `holdOffOnToggle`\n */\n function registerDragHandlers() {\n const background = document.querySelector('.BookReader');\n if (!background) {\n return;\n }\n\n background.addEventListener('mousedown', function (e) {\n initialX = e.screenX;\n initialY = e.screenY;\n\n holdOffOnToggle = true;\n }, true);\n background.addEventListener('mouseup', function (e) {\n const isDrag = (Math.abs(initialX - e.screenX) > 5 || Math.abs(initialY - e.screenY) > 5);\n\n if (!isDrag) {\n holdOffOnToggle = false;\n initialX = 0;\n initialY = 0;\n }\n }, true);\n }\n\n /**\n * attaches click handlers to background & book\n * @param { object } br - BookReader instance\n */\n function registerClickHandlers(br) {\n const background = document.querySelector('.BookReader');\n if (!background) {\n return;\n }\n\n background.addEventListener('click', onBackgroundClick.bind(null, br), { capture: true, passive: true });\n\n const desk = document.querySelector('.BRcontainer') || {};\n const book = desk.firstChild;\n\n if (book) {\n book.addEventListener('click', onBookClick.bind(null, br), true);\n registerDragHandlers();\n }\n }\n\n /**\n * Install menu toggle\n * attaches event handlers, sets up DOM on load\n */\n const installMenuToggle = function installMenuToggle(br) {\n let hasNav = false;\n\n try {\n hasNav = br.navigationIsVisible();\n } catch (error) {\n hasNav = false;\n }\n\n if (!hasNav) {\n return;\n }\n\n const menuToggleEventRegister = function menuToggleEventRegister(e) {\n registerClickHandlers(br);\n };\n\n const setupDOMandHandlers = function setupDOMandHandlers(e) {\n setupNavForToggle(br);\n };\n\n const persistNav = function persistNav(e) {\n alwaysShowNav(br);\n };\n\n const whenToToggleNav = [\n 'BookReader:1PageViewSelected',\n 'BookReader:2PageViewSelected',\n 'BookReader:zoomIn',\n 'BookReader:zoomOut',\n 'BookReader:resize'\n ];\n\n const whenTolwaysShowNavWhen = [\n 'BookReader:3PageViewSelected'\n ];\n\n $(document).on(whenTolwaysShowNavWhen.join(' '), persistNav);\n $(document).on(whenToToggleNav.join(' '), menuToggleEventRegister);\n $(window).on('orientationchange', menuToggleEventRegister);\n $(document).on('BookReader:fullscreenToggled', setupDOMandHandlers);\n $(window).on('DOMContentLoaded', setupDOMandHandlers);\n setupDOMandHandlers();\n };\n\n /**\n * Add to BookReader\n */\n BookReader.prototype.setup = (function(super_) {\n return function(options) {\n super_.call(this, options);\n };\n })(BookReader.prototype.setup);\n\n /**\n * Initialize plugin\n */\n BookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.options.enableMenuToggle) {\n installMenuToggle(this);\n }\n };\n })(BookReader.prototype.init);\n})();\n"],"sourceRoot":""}
|