@internetarchive/bookreader 5.0.0-10-alpha-1 → 5.0.0-100

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 (374) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +428 -1139
  4. package/BookReader/BookReader.js +1 -1
  5. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  6. package/BookReader/BookReader.js.map +1 -1
  7. package/BookReader/bergamot-translator-worker.js +2966 -0
  8. package/BookReader/bergamot-translator-worker.wasm +0 -0
  9. package/BookReader/hypothesis/LICENSE +50 -0
  10. package/BookReader/hypothesis/README.md +55 -0
  11. package/BookReader/hypothesis/build/boot.js +1 -0
  12. package/BookReader/hypothesis/build/manifest.json +20 -0
  13. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
  14. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
  16. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  17. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
  18. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  19. package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
  20. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  38. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  39. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  40. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  41. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  42. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
  44. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
  46. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  47. package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
  48. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  49. package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
  50. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  51. package/BookReader/hypothesis/package.json +126 -0
  52. package/BookReader/ia-bookreader-bundle.js +1782 -0
  53. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  54. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  55. package/BookReader/icons/1up.svg +1 -1
  56. package/BookReader/icons/2up.svg +1 -1
  57. package/BookReader/icons/advance.svg +1 -1
  58. package/BookReader/icons/chevron-right.svg +1 -1
  59. package/BookReader/icons/close-circle-dark.svg +1 -1
  60. package/BookReader/icons/close-circle.svg +1 -1
  61. package/BookReader/icons/fullscreen.svg +1 -1
  62. package/BookReader/icons/fullscreen_exit.svg +1 -1
  63. package/BookReader/icons/hamburger.svg +1 -1
  64. package/BookReader/icons/left-arrow.svg +1 -1
  65. package/BookReader/icons/magnify-minus.svg +1 -1
  66. package/BookReader/icons/magnify-plus.svg +1 -1
  67. package/BookReader/icons/magnify.svg +1 -1
  68. package/BookReader/icons/pause.svg +1 -1
  69. package/BookReader/icons/play.svg +1 -1
  70. package/BookReader/icons/playback-speed.svg +1 -1
  71. package/BookReader/icons/read-aloud.svg +1 -1
  72. package/BookReader/icons/review.svg +1 -1
  73. package/BookReader/icons/thumbnails.svg +1 -1
  74. package/BookReader/icons/voice.svg +1 -0
  75. package/BookReader/icons/volume-full.svg +1 -1
  76. package/BookReader/images/BRicons.svg +3 -3
  77. package/BookReader/images/books_graphic.svg +1 -1
  78. package/BookReader/images/hypothesis.ico +0 -0
  79. package/BookReader/images/icon_book.svg +1 -1
  80. package/BookReader/images/icon_bookmark.svg +1 -1
  81. package/BookReader/images/icon_experiment.svg +1 -0
  82. package/BookReader/images/icon_gear.svg +1 -1
  83. package/BookReader/images/icon_hamburger.svg +1 -1
  84. package/BookReader/images/icon_home.svg +1 -1
  85. package/BookReader/images/icon_info.svg +1 -1
  86. package/BookReader/images/icon_one_page.svg +1 -1
  87. package/BookReader/images/icon_pause.svg +1 -1
  88. package/BookReader/images/icon_play.svg +1 -1
  89. package/BookReader/images/icon_playback-rate.svg +1 -1
  90. package/BookReader/images/icon_search_button.svg +1 -1
  91. package/BookReader/images/icon_share.svg +1 -1
  92. package/BookReader/images/icon_skip-ahead.svg +1 -1
  93. package/BookReader/images/icon_skip-back.svg +1 -1
  94. package/BookReader/images/icon_speaker.svg +1 -1
  95. package/BookReader/images/icon_speaker_open.svg +1 -1
  96. package/BookReader/images/icon_thumbnails.svg +1 -1
  97. package/BookReader/images/icon_toc.svg +1 -1
  98. package/BookReader/images/icon_two_pages.svg +1 -1
  99. package/BookReader/images/marker_chap-off.svg +1 -1
  100. package/BookReader/images/marker_chap-on.svg +1 -1
  101. package/BookReader/images/marker_srch-on.svg +1 -1
  102. package/BookReader/images/translate.svg +1 -0
  103. package/BookReader/images/unviewable_page.png +0 -0
  104. package/BookReader/jquery-3.js +2 -0
  105. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  106. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  107. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  108. package/BookReader/plugins/plugin.autoplay.js +1 -1
  109. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  110. package/BookReader/plugins/plugin.chapters.js +25 -1
  111. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  112. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  113. package/BookReader/plugins/plugin.experiments.js +3 -0
  114. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  115. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  116. package/BookReader/plugins/plugin.iframe.js +1 -1
  117. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  118. package/BookReader/plugins/plugin.iiif.js +2 -0
  119. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  120. package/BookReader/plugins/plugin.resume.js +1 -1
  121. package/BookReader/plugins/plugin.resume.js.map +1 -1
  122. package/BookReader/plugins/plugin.search.js +2 -1
  123. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  124. package/BookReader/plugins/plugin.search.js.map +1 -1
  125. package/BookReader/plugins/plugin.text_selection.js +2 -1
  126. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  127. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  128. package/BookReader/plugins/plugin.translate.js +137 -0
  129. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  130. package/BookReader/plugins/plugin.translate.js.map +1 -0
  131. package/BookReader/plugins/plugin.tts.js +1 -1
  132. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  133. package/BookReader/plugins/plugin.tts.js.map +1 -1
  134. package/BookReader/plugins/plugin.url.js +1 -1
  135. package/BookReader/plugins/plugin.url.js.map +1 -1
  136. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  137. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  138. package/BookReader/plugins/translator-worker.js +2 -0
  139. package/BookReader/plugins/translator-worker.js.map +1 -0
  140. package/BookReader/silence.mp3 +0 -0
  141. package/BookReader/translator-worker.js +475 -0
  142. package/BookReader/webcomponents-bundle.js +3 -0
  143. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  144. package/BookReader/webcomponents-bundle.js.map +1 -0
  145. package/README.md +14 -3
  146. package/jsconfig.json +19 -0
  147. package/package.json +84 -64
  148. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  149. package/src/BookNavigator/assets/button-base.js +2 -1
  150. package/src/BookNavigator/assets/ia-logo.js +17 -0
  151. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  152. package/src/BookNavigator/assets/icon_close.js +1 -1
  153. package/src/BookNavigator/book-navigator.js +620 -0
  154. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  155. package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -3
  156. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  157. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +2 -2
  158. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  159. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  160. package/src/BookNavigator/delete-modal-actions.js +1 -1
  161. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  162. package/src/BookNavigator/downloads/downloads.js +24 -4
  163. package/src/BookNavigator/search/search-provider.js +55 -27
  164. package/src/BookNavigator/search/search-results.js +25 -11
  165. package/src/BookNavigator/sharing.js +27 -0
  166. package/src/BookNavigator/viewable-files.js +95 -0
  167. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  168. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +9 -9
  169. package/src/BookReader/BookModel.js +92 -46
  170. package/src/BookReader/DragScrollable.js +233 -0
  171. package/src/BookReader/ImageCache.js +49 -16
  172. package/src/BookReader/Mode1Up.js +58 -360
  173. package/src/BookReader/Mode1UpLit.js +393 -0
  174. package/src/BookReader/Mode2Up.js +75 -1318
  175. package/src/BookReader/Mode2UpLit.js +787 -0
  176. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  177. package/src/BookReader/ModeSmoothZoom.js +312 -0
  178. package/src/BookReader/ModeThumb.js +20 -12
  179. package/src/BookReader/Navbar/Navbar.js +130 -53
  180. package/src/BookReader/PageContainer.js +120 -23
  181. package/src/BookReader/ReduceSet.js +2 -2
  182. package/src/BookReader/Toolbar/Toolbar.js +18 -40
  183. package/src/BookReader/events.js +2 -3
  184. package/src/BookReader/options.js +87 -16
  185. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  186. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  187. package/src/BookReader/utils/SelectionObserver.js +45 -0
  188. package/src/BookReader/utils/classes.js +1 -1
  189. package/src/BookReader/utils.js +136 -12
  190. package/src/BookReader.js +641 -1192
  191. package/src/BookReaderPlugin.js +52 -0
  192. package/src/assets/icons/magnify-minus.svg +3 -7
  193. package/src/assets/icons/magnify-plus.svg +3 -7
  194. package/src/assets/icons/voice.svg +1 -0
  195. package/src/assets/images/hypothesis.ico +0 -0
  196. package/src/assets/images/icon_experiment.svg +1 -0
  197. package/src/assets/images/translate.svg +1 -0
  198. package/src/assets/images/unviewable_page.png +0 -0
  199. package/src/assets/silence.mp3 +0 -0
  200. package/src/css/BookReader.scss +1 -5
  201. package/src/css/_BRBookmarks.scss +1 -1
  202. package/src/css/_BRComponent.scss +1 -1
  203. package/src/css/_BRicon.scss +8 -2
  204. package/src/css/_BRmain.scss +16 -3
  205. package/src/css/_BRnav.scss +12 -66
  206. package/src/css/_BRpages.scss +163 -43
  207. package/src/css/_BRsearch.scss +69 -30
  208. package/src/css/_BRtoolbar.scss +5 -5
  209. package/src/css/_TextSelection.scss +129 -24
  210. package/src/css/_colorbox.scss +2 -2
  211. package/src/css/_controls.scss +24 -7
  212. package/src/css/_icons.scss +1 -1
  213. package/src/ia-bookreader/ia-bookreader.js +224 -0
  214. package/src/plugins/plugin.archive_analytics.js +84 -78
  215. package/src/plugins/plugin.autoplay.js +99 -104
  216. package/src/plugins/plugin.chapters.js +314 -205
  217. package/src/plugins/plugin.experiments.js +321 -0
  218. package/src/plugins/plugin.iframe.js +1 -1
  219. package/src/plugins/plugin.iiif.js +141 -0
  220. package/src/plugins/plugin.resume.js +54 -51
  221. package/src/plugins/plugin.text_selection.js +510 -219
  222. package/src/plugins/plugin.vendor-fullscreen.js +5 -5
  223. package/src/plugins/search/plugin.search.js +370 -392
  224. package/src/plugins/search/utils.js +43 -0
  225. package/src/plugins/search/view.js +49 -67
  226. package/src/plugins/translate/TranslationManager.js +162 -0
  227. package/src/plugins/translate/plugin.translate.js +523 -0
  228. package/src/plugins/tts/AbstractTTSEngine.js +78 -49
  229. package/src/plugins/tts/FestivalTTSEngine.js +20 -30
  230. package/src/plugins/tts/PageChunk.js +33 -21
  231. package/src/plugins/tts/PageChunkIterator.js +11 -17
  232. package/src/plugins/tts/WebTTSEngine.js +131 -91
  233. package/src/plugins/tts/plugin.tts.js +344 -350
  234. package/src/plugins/tts/utils.js +49 -47
  235. package/src/plugins/url/UrlPlugin.js +191 -0
  236. package/src/plugins/{plugin.url.js → url/plugin.url.js} +44 -15
  237. package/src/util/TextSelectionManager.js +282 -0
  238. package/src/util/browserSniffing.js +33 -1
  239. package/src/util/cache.js +20 -0
  240. package/src/util/docCookies.js +21 -2
  241. package/src/util/strings.js +1 -0
  242. package/.babelrc +0 -12
  243. package/.dependabot/config.yml +0 -6
  244. package/.eslintrc.js +0 -50
  245. package/.gitattributes +0 -2
  246. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  247. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  248. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  249. package/.github/workflows/node.js.yml +0 -37
  250. package/.github/workflows/npm-publish.yml +0 -47
  251. package/.testcaferc.json +0 -5
  252. package/BookReader/bookreader-component-bundle.js +0 -1450
  253. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  254. package/BookReader/bookreader-component-bundle.js.map +0 -1
  255. package/BookReader/jquery-1.10.1.js +0 -2
  256. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  257. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  258. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  259. package/BookReader/plugins/plugin.mobile_nav.js +0 -2
  260. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  261. package/BookReaderDemo/BookReaderDemo.css +0 -41
  262. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
  263. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  264. package/BookReaderDemo/BookReaderJSSimple.js +0 -55
  265. package/BookReaderDemo/IIIFBookReader.js +0 -207
  266. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  267. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  268. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  269. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  270. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  271. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  272. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  273. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  274. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  275. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  276. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  277. package/BookReaderDemo/demo-advanced.html +0 -33
  278. package/BookReaderDemo/demo-autoplay.html +0 -38
  279. package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
  280. package/BookReaderDemo/demo-embed.html +0 -26
  281. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
  282. package/BookReaderDemo/demo-fullscreen.html +0 -33
  283. package/BookReaderDemo/demo-iiif.html +0 -34
  284. package/BookReaderDemo/demo-iiif.js +0 -26
  285. package/BookReaderDemo/demo-internetarchive.html +0 -74
  286. package/BookReaderDemo/demo-multiple.html +0 -43
  287. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  288. package/BookReaderDemo/demo-preview-pages.html +0 -1092
  289. package/BookReaderDemo/demo-simple.html +0 -34
  290. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
  291. package/BookReaderDemo/immersion-1up.html +0 -64
  292. package/BookReaderDemo/immersion-mode.html +0 -35
  293. package/BookReaderDemo/toggle_controls.html +0 -53
  294. package/BookReaderDemo/view_mode.html +0 -39
  295. package/BookReaderDemo/viewmode-cycle.html +0 -41
  296. package/CHANGELOG.md +0 -493
  297. package/CONTRIBUTING.md +0 -7
  298. package/codecov.yml +0 -17
  299. package/index.html +0 -31
  300. package/karma.conf.js +0 -23
  301. package/screenshot.png +0 -0
  302. package/scripts/postversion.js +0 -10
  303. package/scripts/preversion.js +0 -14
  304. package/scripts/version.js +0 -26
  305. package/src/BookNavigator/BookModel.js +0 -14
  306. package/src/BookNavigator/BookNavigator.js +0 -446
  307. package/src/BookNavigator/assets/book-loader.js +0 -27
  308. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  309. package/src/BookNavigator/search/a-search-result.js +0 -55
  310. package/src/BookReader/DebugConsole.js +0 -54
  311. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  312. package/src/ItemNavigator/ItemNavigator.js +0 -376
  313. package/src/ItemNavigator/providers/sharing.js +0 -29
  314. package/src/css/_MobileNav.scss +0 -194
  315. package/src/dragscrollable-br.js +0 -261
  316. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  317. package/src/plugins/plugin.mobile_nav.js +0 -287
  318. package/tests/BookReader/BookModel.test.js +0 -312
  319. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  320. package/tests/BookReader/DebugConsole.test.js +0 -25
  321. package/tests/BookReader/ImageCache.test.js +0 -150
  322. package/tests/BookReader/Mode1Up.test.js +0 -164
  323. package/tests/BookReader/Mode2Up.test.js +0 -247
  324. package/tests/BookReader/Navbar/Navbar.test.js +0 -169
  325. package/tests/BookReader/PageContainer.test.js +0 -115
  326. package/tests/BookReader/ReduceSet.test.js +0 -38
  327. package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
  328. package/tests/BookReader/utils/classes.test.js +0 -88
  329. package/tests/BookReader/utils.test.js +0 -109
  330. package/tests/BookReader.options.test.js +0 -39
  331. package/tests/BookReader.test.js +0 -301
  332. package/tests/e2e/README.md +0 -75
  333. package/tests/e2e/autoplay.test.js +0 -13
  334. package/tests/e2e/base.test.js +0 -35
  335. package/tests/e2e/helpers/base.js +0 -263
  336. package/tests/e2e/helpers/debug.js +0 -13
  337. package/tests/e2e/helpers/desktopSearch.js +0 -72
  338. package/tests/e2e/helpers/mobileSearch.js +0 -85
  339. package/tests/e2e/helpers/mockSearch.js +0 -93
  340. package/tests/e2e/helpers/rightToLeft.js +0 -29
  341. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  342. package/tests/e2e/models/BookReader.js +0 -11
  343. package/tests/e2e/models/Navigation.js +0 -56
  344. package/tests/e2e/rightToLeft.test.js +0 -20
  345. package/tests/e2e/viewmode.test.js +0 -37
  346. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  347. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
  348. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
  349. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  350. package/tests/karma/BookNavigator/search/search-results.test.js +0 -240
  351. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  352. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  353. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  354. package/tests/plugins/plugin.autoplay.test.js +0 -52
  355. package/tests/plugins/plugin.chapters.test.js +0 -130
  356. package/tests/plugins/plugin.iframe.test.js +0 -42
  357. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  358. package/tests/plugins/plugin.resume.test.js +0 -98
  359. package/tests/plugins/plugin.text_selection.test.js +0 -203
  360. package/tests/plugins/plugin.url.test.js +0 -129
  361. package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
  362. package/tests/plugins/search/plugin.search.test.js +0 -173
  363. package/tests/plugins/search/plugin.search.view.test.js +0 -106
  364. package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
  365. package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
  366. package/tests/plugins/tts/PageChunk.test.js +0 -57
  367. package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
  368. package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
  369. package/tests/plugins/tts/utils.test.js +0 -133
  370. package/tests/util/browserSniffing.test.js +0 -56
  371. package/tests/util/docCookies.test.js +0 -15
  372. package/tests/util/strings.test.js +0 -63
  373. package/tests/utils.js +0 -42
  374. package/webpack.config.js +0 -86
@@ -1,86 +1,92 @@
1
- /* global BookReader, archive_analytics */
2
- /**
3
- * Plugin for Archive.org analytics
4
- */
5
- jQuery.extend(BookReader.defaultOptions, {
6
- enableArchiveAnalytics: true,
7
- /** Provide a means of debugging, cause otherwise it's impossible to test locally */
8
- debugArchiveAnaltyics: false,
9
- });
10
-
11
- BookReader.prototype.init = (function(super_) {
12
- return function() {
13
- super_.call(this);
14
-
15
- if (this.options.enableArchiveAnalytics) {
16
- this.bind(BookReader.eventNames.fragmentChange, () => this.archiveAnalyticsSendFragmentChange());
17
- }
18
- };
19
- })(BookReader.prototype.init);
1
+ // @ts-check
2
+ import { BookReaderPlugin } from "../BookReaderPlugin.js";
3
+
4
+ const BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);
5
+
20
6
 
21
- /** @private */
22
- BookReader.prototype.archiveAnalyticsSendFragmentChange = function() {
23
- if (!window.archive_analytics) {
24
- return;
7
+ export class ArchiveAnalyticsPlugin extends BookReaderPlugin {
8
+ options = {
9
+ enabled: true,
10
+ /** Provide a means of debugging, cause otherwise it's impossible to test locally */
11
+ debug: false,
25
12
  }
26
13
 
27
- const prevFragment = this.archiveAnalyticsSendFragmentChange.prevFragment;
28
-
29
- const params = this.paramsFromCurrent();
30
- const newFragment = this.fragmentFromParams(params);
31
-
32
- if (prevFragment != newFragment) {
33
- const values = {
34
- bookreader: "user_changed_view",
35
- itemid: this.bookId,
36
- cache_bust: Math.random()
37
- };
38
- // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!
39
- values.offsite = 1;
40
- values.details = 0;
41
- try {
42
- values.offsite = window.top.location.hostname.match(/\.archive.org$/)
43
- ? 0
44
- : 1;
45
- values.details =
46
- !values.offsite && window.top.location.pathname.match(/^\/details\//)
47
- ? 1
48
- : 0;
49
- } catch (e) {}
50
- // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!
51
-
52
- // Send bookreader ping
53
- archive_analytics.send_ping(values, null, "augment_for_ao_site");
54
-
55
- // Also send tracking event ping
56
- const additionalEventParams = this.options.lendingInfo && this.options.lendingInfo.loanId
57
- ? { loanId: this.options.lendingInfo.loanId }
58
- : {};
59
- archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);
60
-
61
- this.archiveAnalyticsSendFragmentChange.prevFragment = newFragment;
14
+ /** @type {string} */
15
+ _prevFragment = null;
16
+
17
+ /** @override */
18
+ init() {
19
+ if (this.options.enabled) {
20
+ this.br.bind(BookReader.eventNames.fragmentChange, () => this.sendFragmentChange());
21
+ }
62
22
  }
63
- };
64
-
65
- /**
66
- * Sends a tracking "Event". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events
67
- * @param {string} category
68
- * @param {string} action
69
- * @param {number} [value] (must be an int)
70
- * @param {Object} [additionalEventParams]
71
- */
72
- BookReader.prototype.archiveAnalyticsSendEvent = function(category, action, value, additionalEventParams) {
73
- if (!this.options.enableArchiveAnalytics) return;
74
-
75
- if (this.options.debugArchiveAnaltyics) {
76
- console.log("archiveAnalyticsSendEvent", arguments, window.archive_analytics);
23
+
24
+ /** @private */
25
+ sendFragmentChange() {
26
+ if (!window.archive_analytics) {
27
+ return;
28
+ }
29
+
30
+ const prevFragment = this._prevFragment;
31
+
32
+ const params = this.br.paramsFromCurrent();
33
+ const newFragment = this.br.fragmentFromParams(params);
34
+
35
+ if (prevFragment != newFragment) {
36
+ const values = {
37
+ bookreader: "user_changed_view",
38
+ itemid: this.br.bookId,
39
+ cache_bust: Math.random(),
40
+ };
41
+ // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!
42
+ values.offsite = 1;
43
+ values.details = 0;
44
+ try {
45
+ values.offsite = window.top.location.hostname.match(/\.archive.org$/)
46
+ ? 0
47
+ : 1;
48
+ values.details =
49
+ !values.offsite && window.top.location.pathname.match(/^\/details\//)
50
+ ? 1
51
+ : 0;
52
+ } catch (e) { }
53
+ // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!
54
+
55
+ // Send bookreader ping
56
+ window.archive_analytics.send_ping(values, null, "augment_for_ao_site");
57
+
58
+ // Also send tracking event ping
59
+ const additionalEventParams = this.br.options.lendingInfo?.loanId
60
+ ? { loanId: this.br.options.lendingInfo.loanId }
61
+ : {};
62
+ window.archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);
63
+
64
+ this._prevFragment = newFragment;
65
+ }
77
66
  }
78
67
 
79
- if (!window.archive_analytics) return;
68
+ /**
69
+ * Sends a tracking "Event". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events
70
+ * @param {string} category
71
+ * @param {string} action
72
+ * @param {number} [value] (must be an int)
73
+ * @param {Object} [additionalEventParams]
74
+ */
75
+ sendEvent(category, action, value, additionalEventParams) {
76
+ if (!this.options.enabled) return;
80
77
 
81
- additionalEventParams = additionalEventParams || {};
82
- if (typeof(value) == 'number') {
83
- additionalEventParams.ev = value;
78
+ if (this.options.debug) {
79
+ console.log("archiveAnalyticsSendEvent", arguments, window.archive_analytics);
80
+ }
81
+
82
+ if (!window.archive_analytics) return;
83
+
84
+ additionalEventParams = additionalEventParams || {};
85
+ if (typeof (value) == 'number') {
86
+ additionalEventParams.ev = value;
87
+ }
88
+ window.archive_analytics.send_event(category, action, null, additionalEventParams);
84
89
  }
85
- window.archive_analytics.send_event(category, action, null, additionalEventParams);
86
- };
90
+ }
91
+
92
+ BookReader?.registerPlugin('archiveAnalytics', ArchiveAnalyticsPlugin);
@@ -1,129 +1,124 @@
1
- /*global BookReader */
1
+ // @ts-check
2
+ import { EVENTS } from "../BookReader/events.js";
3
+ import { parseAnimationSpeed } from "../BookReader/utils.js";
4
+ import { BookReaderPlugin } from "../BookReaderPlugin.js";
2
5
 
3
6
  /**
4
7
  * Plugin which adds an autoplay feature. Useful for kiosk situations.
5
8
  */
6
- jQuery.extend(BookReader.defaultOptions, {
7
- enableAutoPlayPlugin: true
8
- });
9
+ export class AutoplayPlugin extends BookReaderPlugin {
10
+ options = {
11
+ enabled: true,
12
+ /**
13
+ * @type {number | 'fast' | 'slow'}
14
+ * How quickly the flip animation should run.
15
+ **/
16
+ flipSpeed: 1500,
17
+ /** How long to pause on each page between flips */
18
+ flipDelay: 5000,
19
+ /** Allow controlling the autoflip/speed/delay from the url */
20
+ urlParams: true,
21
+ }
9
22
 
10
- /**
11
- * @override BookReader.setup
12
- */
13
- BookReader.prototype.setup = (function(super_) {
14
- return function (options) {
15
- super_.call(this, options);
23
+ timer = null;
16
24
 
17
- this.auto = false;
18
- this.autoTimer = null;
19
- this.flipDelay = 5000;
20
- };
21
- })(BookReader.prototype.setup);
25
+ /** @override */
26
+ init() {
27
+ if (!this.options.enabled) return;
22
28
 
23
- /**
24
- * @override BookReader.init
25
- */
26
- BookReader.prototype.init = (function(super_) {
27
- return function (options) {
28
- super_.call(this, options);
29
-
30
- if (!this.options.enableAutoPlayPlugin) return;
31
- this.bind(BookReader.eventNames.stop, () => this.autoStop());
32
- };
33
- })(BookReader.prototype.init);
29
+ this.br.bind(EVENTS.stop, () => this.stop());
34
30
 
35
- /**
36
- * @override BookReader.bindNavigationHandlers
37
- */
38
- BookReader.prototype.bindNavigationHandlers = (function(super_) {
39
- return function() {
40
- super_.call(this);
31
+ if (this.options.urlParams) {
32
+ const urlParams = new URLSearchParams(window.location.search);
33
+ if (urlParams.get('flipSpeed')) {
34
+ this.options.flipSpeed = parseAnimationSpeed(urlParams.get('flipSpeed')) || this.options.flipSpeed;
35
+ }
36
+ if (urlParams.get('flipDelay')) {
37
+ this.options.flipDelay = parseAnimationSpeed(urlParams.get('flipDelay')) || this.options.flipDelay;
38
+ }
39
+ if (urlParams.get('autoflip') === '1') {
40
+ this.toggle();
41
+ }
42
+ }
43
+ }
41
44
 
42
- if (!this.options.enableAutoPlayPlugin) return;
45
+ /** @override */
46
+ _bindNavigationHandlers() {
47
+ if (!this.options.enabled) return;
43
48
 
44
- // Note the mobile plugin attaches itself to body, so we need to select outside
45
- const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');
49
+ const jIcons = this.br.$('.BRicon');
46
50
 
47
- jIcons.filter('.play').click(() => {
48
- this.autoToggle();
51
+ jIcons.filter('.play').on('click', () => {
52
+ this.toggle();
49
53
  return false;
50
54
  });
51
55
 
52
- jIcons.filter('.pause').click(() => {
53
- this.autoToggle();
56
+ jIcons.filter('.pause').on('click', () => {
57
+ this.toggle();
54
58
  return false;
55
59
  });
56
- };
57
- })(BookReader.prototype.bindNavigationHandlers);
58
-
59
- /**
60
- * Starts autoplay mode
61
- * @param {object} overrides
62
- * @param {number} overrides.flipSpeed
63
- * @param {number} overrides.flipDelay
64
- */
65
- BookReader.prototype.autoToggle = function(overrides) {
66
- if (!this.options.enableAutoPlayPlugin) return;
67
-
68
- const options = $.extend({
69
- flipSpeed: this.flipSpeed,
70
- flipDelay: this.flipDelay
71
- }, overrides);
72
-
73
- this.flipSpeed = typeof options.flipSpeed === "number" ? options.flipSpeed : this.flipSpeed;
74
- this.flipDelay = typeof options.flipDelay === "number" ? options.flipDelay : this.flipDelay;
75
- this.trigger(BookReader.eventNames.stop);
76
-
77
- let bComingFrom1up = false;
78
- if (this.constMode2up != this.mode) {
79
- bComingFrom1up = true;
80
- this.switchMode(this.constMode2up);
81
- }
82
-
83
- // Change to autofit if book is too large
84
- if (this.reduce < this.twoPageGetAutofitReduce()) {
85
- this.zoom('auto');
86
60
  }
87
61
 
88
- if (null == this.autoTimer) {
89
- // $$$ Draw events currently cause layout problems when they occur during animation.
90
- // There is a specific problem when changing from 1-up immediately to autoplay in RTL so
91
- // we workaround for now by not triggering immediate animation in that case.
92
- // See https://bugs.launchpad.net/gnubook/+bug/328327
93
- if (('rl' == this.pageProgression) && bComingFrom1up) {
94
- // don't flip immediately -- wait until timer fires
95
- } else {
96
- // flip immediately
97
- this.flipFwdToIndex();
62
+ /**
63
+ * Starts autoplay mode
64
+ * @param {object} overrides
65
+ * @param {number} overrides.flipSpeed
66
+ * @param {number} overrides.flipDelay
67
+ */
68
+ toggle(overrides = null) {
69
+ if (!this.options.enabled) return;
70
+
71
+ Object.assign(this.options, overrides);
72
+ this.br.trigger(EVENTS.stop);
73
+
74
+ let bComingFrom1up = false;
75
+ if (this.br.constMode2up != this.br.mode) {
76
+ bComingFrom1up = true;
77
+ this.br.switchMode(this.br.constMode2up);
98
78
  }
99
79
 
100
- this.$('.play').hide();
101
- this.$('.pause').show();
102
- this.autoTimer = setInterval(() => {
103
- if (this.animating) return;
104
-
105
- if (Math.max(this.twoPage.currentIndexL, this.twoPage.currentIndexR) >= this.lastDisplayableIndex()) {
106
- this.flipBackToIndex(1); // $$$ really what we want?
80
+ if (null == this.timer) {
81
+ // $$$ Draw events currently cause layout problems when they occur during animation.
82
+ // There is a specific problem when changing from 1-up immediately to autoplay in RTL so
83
+ // we workaround for now by not triggering immediate animation in that case.
84
+ // See https://bugs.launchpad.net/gnubook/+bug/328327
85
+ if (('rl' == this.br.pageProgression) && bComingFrom1up) {
86
+ // don't flip immediately -- wait until timer fires
107
87
  } else {
108
- this.flipFwdToIndex();
88
+ // flip immediately
89
+ this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });
109
90
  }
110
- }, this.flipDelay);
111
- } else {
112
- this.autoStop();
91
+
92
+ this.br.$('.play').hide();
93
+ this.br.$('.pause').show();
94
+ this.timer = setInterval(() => {
95
+ if (this.br.animating) return;
96
+
97
+ if (Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR) >= this.br.book.getNumLeafs() - 1) {
98
+ this.br.prev({ triggerStop: false, flipSpeed: this.options.flipSpeed }); // $$$ really what we want?
99
+ } else {
100
+ this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });
101
+ }
102
+ }, parseAnimationSpeed(this.options.flipDelay));
103
+ } else {
104
+ this.stop();
105
+ }
113
106
  }
114
- };
115
107
 
116
- /**
117
- * Stop autoplay mode, allowing animations to finish
118
- */
119
- BookReader.prototype.autoStop = function() {
120
- if (!this.options.enableAutoPlayPlugin) return;
121
-
122
- if (null != this.autoTimer) {
123
- clearInterval(this.autoTimer);
124
- this.flipSpeed = 'fast';
125
- this.$('.pause').hide();
126
- this.$('.play').show();
127
- this.autoTimer = null;
108
+ /**
109
+ * Stop autoplay mode, allowing animations to finish
110
+ */
111
+ stop() {
112
+ if (!this.options.enabled) return;
113
+
114
+ if (null != this.timer) {
115
+ clearInterval(this.timer);
116
+ this.br.$('.pause').hide();
117
+ this.br.$('.play').show();
118
+ this.timer = null;
119
+ }
128
120
  }
129
- };
121
+ }
122
+
123
+ const BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);
124
+ BookReader?.registerPlugin('autoplay', AutoplayPlugin);