@internetarchive/bookreader 5.0.0-9-multiple-files → 5.0.0-90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/.eslintrc.js +21 -19
  2. package/.github/workflows/node.js.yml +81 -7
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +505 -1442
  6. package/BookReader/BookReader.js +2 -21564
  7. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1782 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  11. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  12. package/BookReader/icons/1up.svg +1 -12
  13. package/BookReader/icons/2up.svg +1 -15
  14. package/BookReader/icons/advance.svg +3 -26
  15. package/BookReader/icons/chevron-right.svg +1 -1
  16. package/BookReader/icons/close-circle-dark.svg +1 -0
  17. package/BookReader/icons/close-circle.svg +1 -1
  18. package/BookReader/icons/fullscreen.svg +1 -17
  19. package/BookReader/icons/fullscreen_exit.svg +1 -17
  20. package/BookReader/icons/hamburger.svg +1 -15
  21. package/BookReader/icons/left-arrow.svg +1 -12
  22. package/BookReader/icons/magnify-minus.svg +1 -16
  23. package/BookReader/icons/magnify-plus.svg +1 -17
  24. package/BookReader/icons/magnify.svg +1 -15
  25. package/BookReader/icons/pause.svg +1 -23
  26. package/BookReader/icons/play.svg +1 -22
  27. package/BookReader/icons/playback-speed.svg +1 -34
  28. package/BookReader/icons/read-aloud.svg +1 -22
  29. package/BookReader/icons/review.svg +3 -22
  30. package/BookReader/icons/thumbnails.svg +1 -17
  31. package/BookReader/icons/voice.svg +1 -0
  32. package/BookReader/icons/volume-full.svg +1 -22
  33. package/BookReader/images/BRicons.svg +5 -94
  34. package/BookReader/images/books_graphic.svg +1 -177
  35. package/BookReader/images/icon_book.svg +1 -12
  36. package/BookReader/images/icon_bookmark.svg +1 -12
  37. package/BookReader/images/icon_gear.svg +1 -14
  38. package/BookReader/images/icon_hamburger.svg +1 -20
  39. package/BookReader/images/icon_home.svg +1 -21
  40. package/BookReader/images/icon_info.svg +1 -11
  41. package/BookReader/images/icon_one_page.svg +1 -8
  42. package/BookReader/images/icon_pause.svg +1 -1
  43. package/BookReader/images/icon_play.svg +1 -1
  44. package/BookReader/images/icon_playback-rate.svg +1 -15
  45. package/BookReader/images/icon_search_button.svg +1 -8
  46. package/BookReader/images/icon_share.svg +1 -9
  47. package/BookReader/images/icon_skip-ahead.svg +1 -6
  48. package/BookReader/images/icon_skip-back.svg +2 -13
  49. package/BookReader/images/icon_speaker.svg +1 -18
  50. package/BookReader/images/icon_speaker_open.svg +1 -10
  51. package/BookReader/images/icon_thumbnails.svg +1 -12
  52. package/BookReader/images/icon_toc.svg +1 -5
  53. package/BookReader/images/icon_two_pages.svg +1 -9
  54. package/BookReader/images/marker_chap-off.svg +1 -11
  55. package/BookReader/images/marker_chap-on.svg +1 -11
  56. package/BookReader/images/marker_srch-on.svg +1 -11
  57. package/BookReader/images/unviewable_page.png +0 -0
  58. package/BookReader/jquery-3.js +2 -0
  59. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  60. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  61. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  62. package/BookReader/plugins/plugin.autoplay.js +1 -165
  63. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  64. package/BookReader/plugins/plugin.chapters.js +22 -301
  65. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  66. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  67. package/BookReader/plugins/plugin.iframe.js +1 -74
  68. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  69. package/BookReader/plugins/plugin.iiif.js +2 -0
  70. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  71. package/BookReader/plugins/plugin.resume.js +1 -368
  72. package/BookReader/plugins/plugin.resume.js.map +1 -1
  73. package/BookReader/plugins/plugin.search.js +2 -1420
  74. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  75. package/BookReader/plugins/plugin.search.js.map +1 -1
  76. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  77. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  78. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  79. package/BookReader/plugins/plugin.tts.js +2 -9193
  80. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  81. package/BookReader/plugins/plugin.tts.js.map +1 -1
  82. package/BookReader/plugins/plugin.url.js +1 -269
  83. package/BookReader/plugins/plugin.url.js.map +1 -1
  84. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  85. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  86. package/BookReader/webcomponents-bundle.js +3 -0
  87. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  88. package/BookReader/webcomponents-bundle.js.map +1 -0
  89. package/BookReaderDemo/BookReaderDemo.css +18 -19
  90. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  91. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  92. package/BookReaderDemo/IADemoBr.js +144 -0
  93. package/BookReaderDemo/demo-advanced.html +2 -2
  94. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  95. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  96. package/BookReaderDemo/demo-fullscreen.html +2 -4
  97. package/BookReaderDemo/demo-iiif.html +99 -12
  98. package/BookReaderDemo/demo-internetarchive.html +214 -18
  99. package/BookReaderDemo/demo-multiple.html +2 -1
  100. package/BookReaderDemo/demo-preview-pages.html +526 -525
  101. package/BookReaderDemo/demo-simple.html +2 -1
  102. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
  103. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  104. package/BookReaderDemo/immersion-1up.html +2 -2
  105. package/BookReaderDemo/immersion-mode.html +2 -4
  106. package/BookReaderDemo/toggle_controls.html +3 -2
  107. package/BookReaderDemo/view_mode.html +2 -1
  108. package/BookReaderDemo/viewmode-cycle.html +2 -3
  109. package/CHANGELOG.md +595 -33
  110. package/README.md +14 -1
  111. package/babel.config.js +20 -0
  112. package/codecov.yml +6 -0
  113. package/index.html +5 -2
  114. package/jsconfig.json +19 -0
  115. package/netlify.toml +9 -0
  116. package/package.json +70 -62
  117. package/renovate.json +52 -0
  118. package/scripts/preversion.js +0 -1
  119. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  120. package/src/BookNavigator/assets/button-base.js +10 -2
  121. package/src/BookNavigator/assets/ia-logo.js +17 -0
  122. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  123. package/src/BookNavigator/assets/icon_close.js +1 -1
  124. package/src/BookNavigator/book-navigator.js +590 -0
  125. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  126. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  127. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  128. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
  129. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  130. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  131. package/src/BookNavigator/delete-modal-actions.js +1 -1
  132. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  133. package/src/BookNavigator/downloads/downloads.js +29 -25
  134. package/src/BookNavigator/search/search-provider.js +80 -28
  135. package/src/BookNavigator/search/search-results.js +29 -26
  136. package/src/BookNavigator/sharing.js +27 -0
  137. package/src/BookNavigator/viewable-files.js +95 -0
  138. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  139. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +7 -7
  140. package/src/BookReader/BookModel.js +76 -41
  141. package/src/BookReader/DragScrollable.js +233 -0
  142. package/src/BookReader/ImageCache.js +48 -15
  143. package/src/BookReader/Mode1Up.js +56 -351
  144. package/src/BookReader/Mode1UpLit.js +388 -0
  145. package/src/BookReader/Mode2Up.js +73 -1318
  146. package/src/BookReader/Mode2UpLit.js +777 -0
  147. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  148. package/src/BookReader/ModeSmoothZoom.js +312 -0
  149. package/src/BookReader/ModeThumb.js +19 -13
  150. package/src/BookReader/Navbar/Navbar.js +70 -54
  151. package/src/BookReader/PageContainer.js +116 -22
  152. package/src/BookReader/ReduceSet.js +3 -3
  153. package/src/BookReader/Toolbar/Toolbar.js +14 -41
  154. package/src/BookReader/events.js +2 -3
  155. package/src/BookReader/options.js +73 -15
  156. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  157. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  158. package/src/BookReader/utils/SelectionObserver.js +45 -0
  159. package/src/BookReader/utils/classes.js +1 -1
  160. package/src/BookReader/utils.js +128 -13
  161. package/src/BookReader.js +562 -1078
  162. package/src/BookReaderPlugin.js +44 -0
  163. package/src/assets/icons/close-circle-dark.svg +1 -0
  164. package/src/assets/icons/magnify-minus.svg +3 -7
  165. package/src/assets/icons/magnify-plus.svg +3 -7
  166. package/src/assets/icons/voice.svg +1 -0
  167. package/src/assets/images/unviewable_page.png +0 -0
  168. package/src/css/BookReader.scss +1 -17
  169. package/src/css/_BRBookmarks.scss +1 -1
  170. package/src/css/_BRComponent.scss +1 -1
  171. package/src/css/_BRicon.scss +8 -2
  172. package/src/css/_BRmain.scss +33 -27
  173. package/src/css/_BRnav.scss +12 -42
  174. package/src/css/_BRpages.scss +170 -42
  175. package/src/css/_BRsearch.scss +68 -230
  176. package/src/css/_BRtoolbar.scss +5 -5
  177. package/src/css/_TextSelection.scss +87 -27
  178. package/src/css/_colorbox.scss +2 -2
  179. package/src/css/_controls.scss +24 -7
  180. package/src/css/_icons.scss +7 -1
  181. package/src/ia-bookreader/ia-bookreader.js +224 -0
  182. package/src/plugins/plugin.archive_analytics.js +84 -78
  183. package/src/plugins/plugin.autoplay.js +99 -104
  184. package/src/plugins/plugin.chapters.js +237 -191
  185. package/src/plugins/plugin.iframe.js +1 -1
  186. package/src/plugins/plugin.iiif.js +141 -0
  187. package/src/plugins/plugin.resume.js +53 -50
  188. package/src/plugins/plugin.text_selection.js +503 -175
  189. package/src/plugins/plugin.vendor-fullscreen.js +7 -7
  190. package/src/plugins/search/plugin.search.js +183 -121
  191. package/src/plugins/search/utils.js +43 -0
  192. package/src/plugins/search/view.js +67 -202
  193. package/src/plugins/tts/AbstractTTSEngine.js +75 -45
  194. package/src/plugins/tts/FestivalTTSEngine.js +21 -31
  195. package/src/plugins/tts/PageChunk.js +16 -23
  196. package/src/plugins/tts/PageChunkIterator.js +11 -17
  197. package/src/plugins/tts/WebTTSEngine.js +88 -72
  198. package/src/plugins/tts/plugin.tts.js +310 -350
  199. package/src/plugins/tts/utils.js +16 -26
  200. package/src/plugins/url/UrlPlugin.js +191 -0
  201. package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
  202. package/src/util/browserSniffing.js +22 -0
  203. package/src/util/docCookies.js +21 -2
  204. package/src/util/strings.js +1 -0
  205. package/tests/e2e/README.md +37 -0
  206. package/tests/e2e/autoplay.test.js +9 -6
  207. package/tests/e2e/base.test.js +8 -16
  208. package/tests/e2e/helpers/base.js +55 -50
  209. package/tests/e2e/helpers/debug.js +1 -1
  210. package/tests/e2e/helpers/mockSearch.js +19 -22
  211. package/tests/e2e/helpers/params.js +17 -0
  212. package/tests/e2e/helpers/rightToLeft.js +8 -14
  213. package/tests/e2e/helpers/search.js +73 -0
  214. package/tests/e2e/models/Navigation.js +20 -37
  215. package/tests/e2e/rightToLeft.test.js +4 -5
  216. package/tests/e2e/viewmode.test.js +40 -33
  217. package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
  218. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  219. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  220. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  221. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  222. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  223. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  224. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  225. package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
  226. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  227. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
  228. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  229. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  230. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  231. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  232. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  233. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  234. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  235. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  236. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  237. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  238. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +42 -29
  239. package/tests/jest/BookReader/PageContainer.test.js +238 -0
  240. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  241. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +3 -3
  242. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  243. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  244. package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
  245. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  246. package/tests/jest/BookReader/utils.test.js +250 -0
  247. package/tests/jest/BookReader.keyboard.test.js +190 -0
  248. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +10 -2
  249. package/tests/{BookReader.test.js → jest/BookReader.test.js} +43 -53
  250. package/tests/jest/plugins/plugin.archive_analytics.test.js +20 -0
  251. package/tests/jest/plugins/plugin.autoplay.test.js +35 -0
  252. package/tests/jest/plugins/plugin.chapters.test.js +195 -0
  253. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +4 -4
  254. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +22 -35
  255. package/tests/jest/plugins/plugin.text_selection.test.js +316 -0
  256. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  257. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
  258. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +42 -9
  259. package/tests/jest/plugins/search/utils.js +25 -0
  260. package/tests/jest/plugins/search/utils.test.js +29 -0
  261. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +30 -10
  262. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  263. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  264. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  265. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  266. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  267. package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
  268. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +57 -18
  269. package/tests/jest/setup.js +3 -0
  270. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  271. package/tests/jest/util/docCookies.test.js +24 -0
  272. package/tests/{util → jest/util}/strings.test.js +1 -1
  273. package/tests/{utils.js → jest/utils.js} +38 -0
  274. package/webpack.config.js +16 -10
  275. package/.babelrc +0 -12
  276. package/.dependabot/config.yml +0 -6
  277. package/.testcaferc.json +0 -5
  278. package/BookReader/bookreader-component-bundle.js +0 -14330
  279. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  280. package/BookReader/bookreader-component-bundle.js.map +0 -1
  281. package/BookReader/icons/sort-ascending.svg +0 -1
  282. package/BookReader/icons/sort-descending.svg +0 -1
  283. package/BookReader/jquery-1.10.1.js +0 -108
  284. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  285. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  286. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  287. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  288. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  289. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  290. package/BookReaderDemo/IIIFBookReader.js +0 -207
  291. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  292. package/BookReaderDemo/demo-autoplay.html +0 -38
  293. package/BookReaderDemo/demo-iiif.js +0 -26
  294. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  295. package/karma.conf.js +0 -23
  296. package/src/BookNavigator/BookModel.js +0 -14
  297. package/src/BookNavigator/BookNavigator.js +0 -452
  298. package/src/BookNavigator/assets/book-loader.js +0 -27
  299. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  300. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  301. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  302. package/src/BookNavigator/search/a-search-result.js +0 -55
  303. package/src/BookNavigator/volumes/volumes-provider.js +0 -108
  304. package/src/BookNavigator/volumes/volumes.js +0 -162
  305. package/src/BookReader/DebugConsole.js +0 -54
  306. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  307. package/src/ItemNavigator/ItemNavigator.js +0 -372
  308. package/src/ItemNavigator/providers/sharing.js +0 -29
  309. package/src/assets/icons/sort-ascending.svg +0 -1
  310. package/src/assets/icons/sort-descending.svg +0 -1
  311. package/src/css/_MobileNav.scss +0 -194
  312. package/src/dragscrollable-br.js +0 -261
  313. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  314. package/src/plugins/plugin.mobile_nav.js +0 -287
  315. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  316. package/tests/BookReader/DebugConsole.test.js +0 -25
  317. package/tests/BookReader/Mode1Up.test.js +0 -164
  318. package/tests/BookReader/Mode2Up.test.js +0 -247
  319. package/tests/BookReader/PageContainer.test.js +0 -115
  320. package/tests/BookReader/utils.test.js +0 -109
  321. package/tests/e2e/helpers/desktopSearch.js +0 -72
  322. package/tests/e2e/helpers/mobileSearch.js +0 -85
  323. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  324. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  325. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  326. package/tests/karma/BookNavigator/volumes.test.js +0 -133
  327. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  328. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  329. package/tests/plugins/plugin.autoplay.test.js +0 -52
  330. package/tests/plugins/plugin.chapters.test.js +0 -130
  331. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  332. package/tests/plugins/plugin.text_selection.test.js +0 -203
  333. 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":""}