@internetarchive/bookreader 5.0.0-12-fixsorting-8 → 5.0.0-121

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 (420) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +670 -1190
  4. package/BookReader/bergamot-translator-worker.js +2966 -0
  5. package/BookReader/bergamot-translator-worker.wasm +0 -0
  6. package/BookReader/hypothesis/LICENSE +50 -0
  7. package/BookReader/hypothesis/README.md +55 -0
  8. package/BookReader/hypothesis/build/boot-template.js +1 -0
  9. package/BookReader/hypothesis/build/boot.js +1 -0
  10. package/BookReader/hypothesis/build/manifest.json +20 -0
  11. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +199 -0
  12. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  13. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +811 -0
  14. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +437 -0
  16. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  17. package/BookReader/hypothesis/build/styles/annotator.css +4 -0
  18. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  19. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  20. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  38. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  39. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  40. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  41. package/BookReader/hypothesis/build/styles/katex.min.css +3 -0
  42. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +14 -0
  44. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/sidebar.css +4 -0
  46. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  47. package/BookReader/hypothesis/build/styles/ui-playground.css +4 -0
  48. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  49. package/BookReader/hypothesis/package.json +126 -0
  50. package/BookReader/ia-bookreader.js +1886 -0
  51. package/BookReader/{BookReader.js.LICENSE.txt → ia-bookreader.js.LICENSE.txt} +26 -20
  52. package/BookReader/ia-bookreader.js.map +1 -0
  53. package/BookReader/icons/1up.svg +1 -12
  54. package/BookReader/icons/2up.svg +1 -15
  55. package/BookReader/icons/advance.svg +3 -26
  56. package/BookReader/icons/chevron-right.svg +1 -1
  57. package/BookReader/icons/close-circle-dark.svg +1 -1
  58. package/BookReader/icons/close-circle.svg +1 -1
  59. package/BookReader/icons/fullscreen.svg +1 -17
  60. package/BookReader/icons/fullscreen_exit.svg +1 -17
  61. package/BookReader/icons/hamburger.svg +1 -15
  62. package/BookReader/icons/left-arrow.svg +1 -12
  63. package/BookReader/icons/magnify-minus.svg +1 -16
  64. package/BookReader/icons/magnify-plus.svg +1 -17
  65. package/BookReader/icons/magnify.svg +1 -15
  66. package/BookReader/icons/pause.svg +1 -23
  67. package/BookReader/icons/play.svg +1 -22
  68. package/BookReader/icons/playback-speed.svg +1 -34
  69. package/BookReader/icons/read-aloud.svg +1 -22
  70. package/BookReader/icons/review.svg +3 -22
  71. package/BookReader/icons/slider-toggle.svg +1 -0
  72. package/BookReader/icons/thumbnails.svg +1 -17
  73. package/BookReader/icons/voice.svg +1 -0
  74. package/BookReader/icons/volume-full.svg +1 -22
  75. package/BookReader/images/BRicons.svg +5 -94
  76. package/BookReader/images/books_graphic.svg +1 -177
  77. package/BookReader/images/hypothesis.ico +0 -0
  78. package/BookReader/images/icon_book.svg +1 -12
  79. package/BookReader/images/icon_bookmark.svg +1 -12
  80. package/BookReader/images/icon_experiment.svg +1 -0
  81. package/BookReader/images/icon_gear.svg +1 -14
  82. package/BookReader/images/icon_hamburger.svg +1 -20
  83. package/BookReader/images/icon_home.svg +1 -21
  84. package/BookReader/images/icon_info.svg +1 -11
  85. package/BookReader/images/icon_one_page.svg +1 -8
  86. package/BookReader/images/icon_pause.svg +1 -1
  87. package/BookReader/images/icon_play.svg +1 -1
  88. package/BookReader/images/icon_playback-rate.svg +1 -15
  89. package/BookReader/images/icon_search_button.svg +1 -8
  90. package/BookReader/images/icon_share.svg +1 -9
  91. package/BookReader/images/icon_skip-ahead.svg +1 -6
  92. package/BookReader/images/icon_skip-back.svg +2 -13
  93. package/BookReader/images/icon_speaker.svg +1 -18
  94. package/BookReader/images/icon_speaker_open.svg +1 -10
  95. package/BookReader/images/icon_thumbnails.svg +1 -12
  96. package/BookReader/images/icon_toc.svg +1 -5
  97. package/BookReader/images/icon_two_pages.svg +1 -9
  98. package/BookReader/images/marker_chap-off.svg +1 -11
  99. package/BookReader/images/marker_chap-on.svg +1 -11
  100. package/BookReader/images/marker_srch-on.svg +1 -11
  101. package/BookReader/images/translate.svg +1 -0
  102. package/BookReader/images/unviewable_page.png +0 -0
  103. package/BookReader/jquery-3.js +2 -0
  104. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  105. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  106. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  107. package/BookReader/plugins/plugin.autoplay.js +1 -165
  108. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  109. package/BookReader/plugins/plugin.chapters.js +19 -301
  110. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  111. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  112. package/BookReader/plugins/plugin.experiments.js +3 -0
  113. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  114. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  115. package/BookReader/plugins/plugin.iframe.js +1 -74
  116. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  117. package/BookReader/plugins/plugin.iiif.js +2 -0
  118. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  119. package/BookReader/plugins/plugin.resume.js +1 -368
  120. package/BookReader/plugins/plugin.resume.js.map +1 -1
  121. package/BookReader/plugins/plugin.search.js +2 -1385
  122. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  123. package/BookReader/plugins/plugin.search.js.map +1 -1
  124. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  125. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  126. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  127. package/BookReader/plugins/plugin.translate.js +3 -0
  128. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  129. package/BookReader/plugins/plugin.translate.js.map +1 -0
  130. package/BookReader/plugins/plugin.tts.js +2 -9193
  131. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  132. package/BookReader/plugins/plugin.tts.js.map +1 -1
  133. package/BookReader/plugins/plugin.url.js +1 -269
  134. package/BookReader/plugins/plugin.url.js.map +1 -1
  135. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  136. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  137. package/BookReader/plugins/translator-worker.js +2 -0
  138. package/BookReader/plugins/translator-worker.js.map +1 -0
  139. package/BookReader/silence.mp3 +0 -0
  140. package/BookReader/translator-worker.js +475 -0
  141. package/BookReader/webcomponents-bundle.js +3 -0
  142. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  143. package/BookReader/webcomponents-bundle.js.map +1 -0
  144. package/README.md +17 -4
  145. package/dist/esm/ia-bookreader.js +3 -0
  146. package/dist/esm/ia-bookreader.js.LICENSE.txt +17 -0
  147. package/dist/esm/ia-bookreader.js.map +1 -0
  148. package/dist/esm/plugins/plugin.archive_analytics.js +2 -0
  149. package/dist/esm/plugins/plugin.archive_analytics.js.map +1 -0
  150. package/dist/esm/plugins/plugin.autoplay.js +2 -0
  151. package/dist/esm/plugins/plugin.autoplay.js.map +1 -0
  152. package/dist/esm/plugins/plugin.chapters.js +2 -0
  153. package/dist/esm/plugins/plugin.chapters.js.map +1 -0
  154. package/dist/esm/plugins/plugin.experiments.js +2 -0
  155. package/dist/esm/plugins/plugin.experiments.js.map +1 -0
  156. package/dist/esm/plugins/plugin.iframe.js +2 -0
  157. package/dist/esm/plugins/plugin.iframe.js.map +1 -0
  158. package/dist/esm/plugins/plugin.iiif.js +2 -0
  159. package/dist/esm/plugins/plugin.iiif.js.map +1 -0
  160. package/dist/esm/plugins/plugin.resume.js +2 -0
  161. package/dist/esm/plugins/plugin.resume.js.map +1 -0
  162. package/dist/esm/plugins/plugin.search.js +2 -0
  163. package/dist/esm/plugins/plugin.search.js.map +1 -0
  164. package/dist/esm/plugins/plugin.text_selection.js +2 -0
  165. package/dist/esm/plugins/plugin.text_selection.js.map +1 -0
  166. package/dist/esm/plugins/plugin.translate.js +2 -0
  167. package/dist/esm/plugins/plugin.translate.js.map +1 -0
  168. package/dist/esm/plugins/plugin.tts.js +2 -0
  169. package/dist/esm/plugins/plugin.tts.js.map +1 -0
  170. package/dist/esm/plugins/plugin.url.js +2 -0
  171. package/dist/esm/plugins/plugin.url.js.map +1 -0
  172. package/dist/esm/plugins/plugin.vendor-fullscreen.js +2 -0
  173. package/dist/esm/plugins/plugin.vendor-fullscreen.js.map +1 -0
  174. package/jsconfig.json +18 -0
  175. package/package.json +113 -71
  176. package/src/BookReader/BookModel.js +92 -46
  177. package/src/BookReader/DragScrollable.js +233 -0
  178. package/src/BookReader/ImageCache.js +49 -16
  179. package/src/BookReader/Mode1Up.js +66 -365
  180. package/src/BookReader/Mode1UpLit.js +392 -0
  181. package/src/BookReader/Mode2Up.js +87 -1315
  182. package/src/BookReader/Mode2UpLit.js +786 -0
  183. package/src/BookReader/ModeAbstract.js +43 -0
  184. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  185. package/src/BookReader/ModeSmoothZoom.js +312 -0
  186. package/src/BookReader/ModeThumb.js +29 -15
  187. package/src/BookReader/Navbar/Navbar.js +204 -84
  188. package/src/BookReader/PageContainer.js +120 -23
  189. package/src/BookReader/ReduceSet.js +2 -2
  190. package/src/BookReader/Toolbar/Toolbar.js +18 -40
  191. package/src/BookReader/events.js +3 -3
  192. package/src/BookReader/options.js +105 -18
  193. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  194. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  195. package/src/BookReader/utils/SelectionObserver.js +72 -0
  196. package/src/BookReader/utils/classes.js +1 -1
  197. package/src/BookReader/utils.js +136 -12
  198. package/src/BookReader.js +732 -1231
  199. package/src/BookReaderPlugin.js +52 -0
  200. package/src/assets/icons/magnify-minus.svg +3 -7
  201. package/src/assets/icons/magnify-plus.svg +3 -7
  202. package/src/assets/icons/slider-toggle.svg +1 -0
  203. package/src/assets/icons/voice.svg +1 -0
  204. package/src/assets/images/hypothesis.ico +0 -0
  205. package/src/assets/images/icon_experiment.svg +1 -0
  206. package/src/assets/images/translate.svg +1 -0
  207. package/src/assets/images/unviewable_page.png +0 -0
  208. package/src/assets/silence.mp3 +0 -0
  209. package/src/css/BookReader.scss +1 -5
  210. package/src/css/_BRBookmarks.scss +1 -1
  211. package/src/css/_BRComponent.scss +1 -1
  212. package/src/css/_BRicon.scss +8 -2
  213. package/src/css/_BRmain.scss +16 -3
  214. package/src/css/_BRnav.scss +74 -70
  215. package/src/css/_BRpages.scss +174 -42
  216. package/src/css/_BRsearch.scss +69 -30
  217. package/src/css/_BRtoolbar.scss +5 -5
  218. package/src/css/_TextSelection.scss +249 -25
  219. package/src/css/_colorbox.scss +2 -2
  220. package/src/css/_controls.scss +24 -7
  221. package/src/css/_icons.scss +8 -1
  222. package/src/{BookNavigator/assets → css}/button-base.js +2 -2
  223. package/src/css/icon_checkmark.js +9 -0
  224. package/src/css/sharedStyles.js +15 -0
  225. package/src/ia-bookreader/downloads/downloads-provider.js +81 -0
  226. package/src/{BookNavigator → ia-bookreader}/downloads/downloads.js +25 -5
  227. package/src/ia-bookreader/ia-bookreader.js +686 -0
  228. package/src/ia-bookreader/sharing.js +27 -0
  229. package/src/ia-bookreader/viewable-files.js +98 -0
  230. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments-provider.js +17 -17
  231. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments.js +75 -67
  232. package/src/{BookNavigator → plugins}/bookmarks/bookmark-button.js +4 -3
  233. package/src/{BookNavigator/assets → plugins/bookmarks}/bookmark-colors.js +1 -1
  234. package/src/{BookNavigator → plugins}/bookmarks/bookmark-edit.js +43 -31
  235. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-list.js +48 -49
  236. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-loginCTA.js +3 -3
  237. package/src/plugins/bookmarks/bookmarks-provider.js +63 -0
  238. package/src/{BookNavigator → plugins/bookmarks}/delete-modal-actions.js +1 -1
  239. package/src/{BookNavigator → plugins}/bookmarks/ia-bookmarks.js +117 -68
  240. package/src/plugins/plugin.archive_analytics.js +84 -78
  241. package/src/plugins/plugin.autoplay.js +99 -104
  242. package/src/plugins/plugin.chapters.js +323 -205
  243. package/src/plugins/plugin.experiments.js +375 -0
  244. package/src/plugins/plugin.iframe.js +36 -37
  245. package/src/plugins/plugin.iiif.js +147 -0
  246. package/src/plugins/plugin.resume.js +54 -51
  247. package/src/plugins/plugin.text_selection.js +464 -219
  248. package/src/plugins/plugin.vendor-fullscreen.js +5 -5
  249. package/src/plugins/search/plugin.search.js +347 -397
  250. package/src/{BookNavigator → plugins}/search/search-provider.js +59 -27
  251. package/src/{BookNavigator → plugins}/search/search-results.js +105 -76
  252. package/src/plugins/search/utils.js +50 -0
  253. package/src/plugins/search/view.js +51 -69
  254. package/src/plugins/translate/TranslationManager.js +164 -0
  255. package/src/plugins/translate/plugin.translate.js +559 -0
  256. package/src/plugins/tts/AbstractTTSEngine.js +78 -49
  257. package/src/plugins/tts/FestivalTTSEngine.js +20 -30
  258. package/src/plugins/tts/PageChunk.js +117 -23
  259. package/src/plugins/tts/PageChunkIterator.js +11 -17
  260. package/src/plugins/tts/WebTTSEngine.js +132 -92
  261. package/src/plugins/tts/plugin.tts.js +341 -351
  262. package/src/plugins/tts/utils.js +76 -67
  263. package/src/plugins/url/UrlPlugin.js +213 -0
  264. package/src/plugins/{plugin.url.js → url/plugin.url.js} +54 -18
  265. package/src/util/TextSelectionManager.js +1471 -0
  266. package/src/util/browserSniffing.js +42 -1
  267. package/src/util/cache.js +20 -0
  268. package/src/util/docCookies.js +21 -2
  269. package/src/util/dom.js +88 -0
  270. package/src/util/generators.js +89 -0
  271. package/src/util/lit.js +15 -0
  272. package/src/util/strings.js +11 -0
  273. package/.babelrc +0 -12
  274. package/.dependabot/config.yml +0 -6
  275. package/.eslintrc.js +0 -50
  276. package/.gitattributes +0 -2
  277. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  278. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  279. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  280. package/.github/workflows/node.js.yml +0 -37
  281. package/.github/workflows/npm-publish.yml +0 -47
  282. package/.testcaferc.json +0 -5
  283. package/BookReader/BookReader.js +0 -21613
  284. package/BookReader/BookReader.js.map +0 -1
  285. package/BookReader/bookreader-component-bundle.js +0 -14497
  286. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  287. package/BookReader/bookreader-component-bundle.js.map +0 -1
  288. package/BookReader/jquery-1.10.1.js +0 -108
  289. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  290. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  291. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  292. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  293. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  294. package/BookReaderDemo/BookReaderDemo.css +0 -41
  295. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
  296. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  297. package/BookReaderDemo/BookReaderJSSimple.js +0 -55
  298. package/BookReaderDemo/IIIFBookReader.js +0 -207
  299. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  300. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  301. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  302. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  303. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  304. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  305. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  306. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  307. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  308. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  309. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  310. package/BookReaderDemo/demo-advanced.html +0 -33
  311. package/BookReaderDemo/demo-autoplay.html +0 -38
  312. package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
  313. package/BookReaderDemo/demo-embed.html +0 -26
  314. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
  315. package/BookReaderDemo/demo-fullscreen.html +0 -33
  316. package/BookReaderDemo/demo-iiif.html +0 -34
  317. package/BookReaderDemo/demo-iiif.js +0 -26
  318. package/BookReaderDemo/demo-internetarchive.html +0 -74
  319. package/BookReaderDemo/demo-multiple.html +0 -43
  320. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  321. package/BookReaderDemo/demo-preview-pages.html +0 -1092
  322. package/BookReaderDemo/demo-simple.html +0 -34
  323. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
  324. package/BookReaderDemo/immersion-1up.html +0 -64
  325. package/BookReaderDemo/immersion-mode.html +0 -35
  326. package/BookReaderDemo/toggle_controls.html +0 -53
  327. package/BookReaderDemo/view_mode.html +0 -39
  328. package/BookReaderDemo/viewmode-cycle.html +0 -41
  329. package/CHANGELOG.md +0 -499
  330. package/CONTRIBUTING.md +0 -7
  331. package/codecov.yml +0 -17
  332. package/index.html +0 -31
  333. package/karma.conf.js +0 -23
  334. package/screenshot.png +0 -0
  335. package/scripts/postversion.js +0 -10
  336. package/scripts/preversion.js +0 -14
  337. package/scripts/version.js +0 -26
  338. package/src/BookNavigator/BookModel.js +0 -14
  339. package/src/BookNavigator/BookNavigator.js +0 -459
  340. package/src/BookNavigator/assets/book-loader.js +0 -27
  341. package/src/BookNavigator/assets/icon_checkmark.js +0 -6
  342. package/src/BookNavigator/assets/icon_close.js +0 -3
  343. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  344. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  345. package/src/BookNavigator/assets/icon_sort_neutral.js +0 -5
  346. package/src/BookNavigator/assets/icon_volumes.js +0 -11
  347. package/src/BookNavigator/bookmarks/bookmarks-provider.js +0 -53
  348. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  349. package/src/BookNavigator/downloads/downloads-provider.js +0 -66
  350. package/src/BookNavigator/search/a-search-result.js +0 -55
  351. package/src/BookNavigator/volumes/volumes-provider.js +0 -83
  352. package/src/BookNavigator/volumes/volumes.js +0 -178
  353. package/src/BookReader/DebugConsole.js +0 -54
  354. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  355. package/src/ItemNavigator/ItemNavigator.js +0 -376
  356. package/src/ItemNavigator/providers/sharing.js +0 -33
  357. package/src/css/_MobileNav.scss +0 -194
  358. package/src/dragscrollable-br.js +0 -261
  359. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  360. package/src/plugins/plugin.mobile_nav.js +0 -287
  361. package/tests/BookReader/BookModel.test.js +0 -312
  362. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  363. package/tests/BookReader/DebugConsole.test.js +0 -25
  364. package/tests/BookReader/ImageCache.test.js +0 -150
  365. package/tests/BookReader/Mode1Up.test.js +0 -164
  366. package/tests/BookReader/Mode2Up.test.js +0 -247
  367. package/tests/BookReader/Navbar/Navbar.test.js +0 -169
  368. package/tests/BookReader/PageContainer.test.js +0 -115
  369. package/tests/BookReader/ReduceSet.test.js +0 -38
  370. package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
  371. package/tests/BookReader/utils/classes.test.js +0 -88
  372. package/tests/BookReader/utils.test.js +0 -109
  373. package/tests/BookReader.options.test.js +0 -39
  374. package/tests/BookReader.test.js +0 -301
  375. package/tests/e2e/README.md +0 -75
  376. package/tests/e2e/autoplay.test.js +0 -13
  377. package/tests/e2e/base.test.js +0 -35
  378. package/tests/e2e/helpers/base.js +0 -263
  379. package/tests/e2e/helpers/debug.js +0 -13
  380. package/tests/e2e/helpers/desktopSearch.js +0 -72
  381. package/tests/e2e/helpers/mobileSearch.js +0 -85
  382. package/tests/e2e/helpers/mockSearch.js +0 -93
  383. package/tests/e2e/helpers/rightToLeft.js +0 -29
  384. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  385. package/tests/e2e/models/BookReader.js +0 -11
  386. package/tests/e2e/models/Navigation.js +0 -56
  387. package/tests/e2e/rightToLeft.test.js +0 -20
  388. package/tests/e2e/viewmode.test.js +0 -37
  389. package/tests/karma/BookNavigator/book-navigator.test.js +0 -139
  390. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
  391. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
  392. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  393. package/tests/karma/BookNavigator/search/search-results.test.js +0 -240
  394. package/tests/karma/BookNavigator/sharing/sharing-provider.test.js +0 -40
  395. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  396. package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +0 -141
  397. package/tests/karma/BookNavigator/volumes/volumes.test.js +0 -98
  398. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  399. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  400. package/tests/plugins/plugin.autoplay.test.js +0 -52
  401. package/tests/plugins/plugin.chapters.test.js +0 -130
  402. package/tests/plugins/plugin.iframe.test.js +0 -42
  403. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  404. package/tests/plugins/plugin.resume.test.js +0 -98
  405. package/tests/plugins/plugin.text_selection.test.js +0 -203
  406. package/tests/plugins/plugin.url.test.js +0 -129
  407. package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
  408. package/tests/plugins/search/plugin.search.test.js +0 -173
  409. package/tests/plugins/search/plugin.search.view.test.js +0 -106
  410. package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
  411. package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
  412. package/tests/plugins/tts/PageChunk.test.js +0 -57
  413. package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
  414. package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
  415. package/tests/plugins/tts/utils.test.js +0 -133
  416. package/tests/util/browserSniffing.test.js +0 -56
  417. package/tests/util/docCookies.test.js +0 -15
  418. package/tests/util/strings.test.js +0 -63
  419. package/tests/utils.js +0 -42
  420. package/webpack.config.js +0 -86
@@ -1,98 +0,0 @@
1
- import {
2
- html,
3
- fixture,
4
- expect,
5
- fixtureCleanup,
6
- } from '@open-wc/testing';
7
- import sinon from 'sinon';
8
- import '../../../../src/BookNavigator/volumes/volumes.js';
9
-
10
-
11
- const brOptions = {
12
- "options": {
13
- "enableMultipleBooks": true,
14
- "multipleBooksList": {
15
- "by_subprefix": {
16
- "/details/SubBookTest": {
17
- "url_path": "/details/SubBookTest",
18
- "file_subprefix": "book1/GPORFP",
19
- "orig_sort": 0,
20
- "title": "book1/GPORFP.pdf",
21
- "file_source": "/book1/GPORFP_jp2.zip"
22
- },
23
- "/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive": {
24
- "url_path": "/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive",
25
- "file_subprefix": "subdir/book2/brewster_kahle_internet_archive",
26
- "orig_sort": 1,
27
- "title": "subdir/book2/brewster_kahle_internet_archive.pdf",
28
- "file_source": "/subdir/book2/brewster_kahle_internet_archive_jp2.zip"
29
- },
30
- "/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume": {
31
- "url_path": "/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
32
- "file_subprefix": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
33
- "orig_sort": 2,
34
- "title": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume.pdf",
35
- "file_source": "/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume_jp2.zip"
36
- }
37
- }
38
- }
39
- }
40
- };
41
-
42
- const container = (brOptions, prefix) => (
43
- html`
44
- <viewable-files .viewableFiles=${brOptions} .hostUrl="https://archive.org" .subPrefix=${prefix}></viewable-files>
45
- `
46
- );
47
-
48
- beforeEach(() => {
49
- const body = document.querySelector('body');
50
- const brHook = document.createElement('div');
51
- brHook.setAttribute('id', 'BookReader');
52
- body.appendChild(brHook);
53
- });
54
-
55
- afterEach(() => {
56
- sinon.restore();
57
- fixtureCleanup();
58
- });
59
-
60
- describe('<viewable-files>', () => {
61
- it('sets default properties', async () => {
62
- const files = brOptions.options.multipleBooksList?.by_subprefix;
63
- const viewableFiles = Object.keys(files).map(item => files[item]);
64
- const el = await fixture(container(viewableFiles));
65
- await el.updateComplete;
66
-
67
- expect(el.viewableFiles).to.equal(viewableFiles);
68
- expect(el.viewableFiles.length).to.equal(3);
69
- expect(el.shadowRoot.querySelectorAll("ul li").length).to.equal(3);
70
-
71
- expect(el.shadowRoot.querySelector(".item-title").innerText).to.include(`${viewableFiles[0].title}`);
72
- });
73
-
74
- it('render empty volumes', async () => {
75
- const viewableFiles = [];
76
- const el = await fixture(container(viewableFiles));
77
- await el.updateComplete;
78
-
79
- expect(el.viewableFiles).to.equal(viewableFiles);
80
- expect(el.viewableFiles.length).to.equal(0);
81
- expect(el.shadowRoot.childElementCount).to.equal(0);
82
- });
83
-
84
- it('render active volume item set as first viewable item ', async () => {
85
- const files = brOptions.options.multipleBooksList?.by_subprefix;
86
- const viewableFiles = Object.keys(files).map(item => files[item]);
87
- const prefix = viewableFiles[0].file_subprefix;
88
-
89
- const el = await fixture(container(viewableFiles, prefix));
90
- await el.updateComplete;
91
-
92
- expect(el.viewableFiles).to.equal(viewableFiles);
93
- expect(el.viewableFiles.length).to.equal(3);
94
-
95
- expect(el.shadowRoot.querySelectorAll("ul li div")[1].className).to.equal("content active");
96
- });
97
-
98
- });
@@ -1,68 +0,0 @@
1
-
2
- import BookReader from '../../../src/BookReader.js';
3
- import '../../../src/plugins/menu_toggle/plugin.menu_toggle.js';
4
-
5
-
6
- let br;
7
- let hideFlag;
8
- beforeAll(() => {
9
- $.fx.off = true;
10
- const OGSpeed = $.speed;
11
- $.speed = function(_speed, easing, callback) {
12
- return OGSpeed(0, easing, callback);
13
- };
14
- document.body.innerHTML = '<div id="BookReader">';
15
- br = new BookReader();
16
- br.init();
17
- });
18
-
19
- afterEach(() => {
20
- $.fx.off = false;
21
- jest.clearAllMocks();
22
- });
23
-
24
- describe('Plugin: Menu Toggle', () => {
25
- test('has option flag', () => {
26
- expect(BookReader.defaultOptions.enableMenuToggle).toEqual(true);
27
- });
28
-
29
- test('core code has animation consts', () => {
30
- expect(BookReader.constNavAnimationDuration).toEqual(300);
31
- expect(BookReader.constResizeAnimationDuration).toEqual(100);
32
- });
33
-
34
- test('core code has registered event: `navToggled`', () => {
35
- expect(BookReader.eventNames.navToggled).toBeTruthy();
36
- });
37
-
38
- test('when bookreader loads, the menu shows', () => {
39
- expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(false);
40
- expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(false);
41
- });
42
-
43
- test('clicking on background hides the menu', () => {
44
- expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(false);
45
- expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(false);
46
- $('.BRcontainer').click();
47
- expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(true);
48
- expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(true);
49
- });
50
-
51
- test('core function `setNavigationView` is called `hideNavigation` is called', () => {
52
- br.setNavigationView = jest.fn((arg) => hideFlag = arg);
53
-
54
- br.hideNavigation();
55
- expect(br.setNavigationView).toHaveBeenCalled();
56
- expect(hideFlag).toEqual(true);
57
- });
58
-
59
- test('core function `setNavigationView` is called `showNavigation` is called', () => {
60
- br.setNavigationView = jest.fn((arg) => hideFlag = arg);
61
- br.navigationIsVisible = jest.fn(() => false);
62
-
63
- br.showNavigation();
64
- expect(br.setNavigationView).toHaveBeenCalled();
65
- expect(br.navigationIsVisible).toHaveBeenCalled();
66
- expect(hideFlag).toEqual(undefined);
67
- });
68
- });
@@ -1,23 +0,0 @@
1
- import sinon from 'sinon';
2
- import BookReader from '../../src/BookReader.js';
3
- import '../../src/plugins/plugin.archive_analytics.js';
4
-
5
- describe('archiveAnalyticsSendEvent', () => {
6
- const sendEvent = BookReader.prototype.archiveAnalyticsSendEvent;
7
-
8
- test('logs if debug set to true', () => {
9
- const stub = sinon.stub(console, 'log');
10
- const FAKE_BR = { options: { enableArchiveAnalytics: true, debugArchiveAnaltyics: true }};
11
- sendEvent.call(FAKE_BR);
12
- expect(stub.callCount).toBe(1);
13
- stub.restore();
14
- });
15
-
16
- test('Does not error if window.archive_analytics is undefined', () => {
17
- const spy = sinon.spy(sendEvent);
18
- const FAKE_BR = { options: { enableArchiveAnalytics: true }};
19
- spy.call(FAKE_BR);
20
- expect(spy.threw()).toBe(false);
21
- });
22
- });
23
-
@@ -1,52 +0,0 @@
1
-
2
- import BookReader from '../../src/BookReader.js';
3
- import '../../src/plugins/plugin.autoplay.js';
4
-
5
-
6
- let br;
7
- beforeEach(() => {
8
- document.body.innerHTML = '<div id="BookReader">';
9
- br = new BookReader();
10
- br.init();
11
- });
12
-
13
- afterEach(() => {
14
- jest.clearAllMocks();
15
- });
16
-
17
- describe('Plugin: Menu Toggle', () => {
18
- test('has option flag', () => {
19
- expect(BookReader.defaultOptions.enableAutoPlayPlugin).toEqual(true);
20
- });
21
- test('has added BR property: auto', () => {
22
- expect(br).toHaveProperty('auto');
23
- expect(br.auto).toEqual(false);
24
- });
25
- test('has added BR property: autoTimer', () => {
26
- expect(br).toHaveProperty('autoTimer');
27
- expect(br.autoTimer).toEqual(null);
28
- });
29
- test('has added BR property: flipDelay', () => {
30
- expect(br).toHaveProperty('flipDelay');
31
- expect(br.flipDelay).toBeTruthy();
32
- expect(br.flipDelay).toBeGreaterThan(1);
33
- });
34
- test('autoplay does not start when BookReaderInitializes', () => {
35
- br.autoToggle = jest.fn();
36
- br.init();
37
- expect(br.autoToggle).toHaveBeenCalledTimes(0);
38
- });
39
- test('autoplay will run without `flipSpeed` parameters', () => {
40
- const initialAutoTimer = br.autoTimer;
41
- br.flipFwdToIndex = jest.fn();
42
- br.autoStop = jest.fn();
43
- br.init();
44
- br.autoToggle();
45
- // internally referenced functions that fire
46
- expect(br.flipFwdToIndex).toHaveBeenCalledTimes(1);
47
-
48
- expect(initialAutoTimer).toBeFalsy();
49
- // br.autoTimer changes when autoToggle turns on
50
- expect(br.autoTimer).toBeTruthy();
51
- });
52
- });
@@ -1,130 +0,0 @@
1
- import sinon from 'sinon';
2
-
3
- import BookReader from '../../src/BookReader.js';
4
- import '../../src/plugins/plugin.mobile_nav.js';
5
- import '../../src/plugins/plugin.chapters.js';
6
-
7
- const SAMPLE_TOC = [{
8
- "pagenum": "3",
9
- "level": 1,
10
- "label": "CHAPTER I",
11
- "type": {"key": "/type/toc_item"},
12
- "title": "THE COUNTRY AND THE MISSION 1",
13
- "pageIndex": 3,
14
- },{
15
- "pagenum": "17",
16
- "level": 1,
17
- "label": "CHAPTER II",
18
- "type": {"key": "/type/toc_item"},
19
- "title": "THE COUNTRY AND THE MISSION 2",
20
- "pageIndex": 17,
21
- },
22
- {
23
- "pagenum": "undefined",
24
- "level": 1,
25
- "label": "CHAPTER III",
26
- "type": {"key": "/type/toc_item"},
27
- "title": "THE COUNTRY AND THE MISSION 3",
28
- "pageIndex": undefined,
29
- },
30
- {
31
- "pagenum": "40",
32
- "level": 1,
33
- "label": "CHAPTER IV",
34
- "type": {"key": "/type/toc_item"},
35
- "title": "THE COUNTRY AND THE MISSION 4",
36
- "pageIndex": 40,
37
- }];
38
-
39
- const SAMPLE_TOC_UNDEF = [
40
- {
41
- "pagenum": "undefined",
42
- "level": 1,
43
- "label": "CHAPTER I",
44
- "type": {"key": "/type/toc_item"},
45
- "title": "THE COUNTRY AND THE MISSION 1",
46
- "pageIndex": undefined,
47
- },
48
- {
49
- "pagenum": "undefined",
50
- "level": 1,
51
- "label": "CHAPTER II",
52
- "type": {"key": "/type/toc_item"},
53
- "title": "THE COUNTRY AND THE MISSION 2",
54
- "pageIndex": undefined,
55
- }
56
- ];
57
-
58
- let br;
59
- beforeEach(() => {
60
- $.ajax = jest.fn().mockImplementation((args) => {
61
- return Promise.resolve([{
62
- table_of_contents: SAMPLE_TOC,
63
- }]);
64
- });
65
- document.body.innerHTML = '<div id="BookReader">';
66
- br = new BookReader();
67
- });
68
-
69
- afterEach(() => {
70
- jest.clearAllMocks();
71
- });
72
-
73
- describe('Plugin: Menu Toggle', () => {
74
- test('has option flag', () => {
75
- expect(BookReader.defaultOptions.enableChaptersPlugin).toEqual(true);
76
- });
77
- test('has added BR property: olHost', () => {
78
- expect(br).toHaveProperty('olHost');
79
- expect(br.olHost).toBeTruthy();
80
- });
81
- test('has added BR property: bookId', () => {
82
- expect(br).toHaveProperty('bookId');
83
- expect(br.bookId).toBeFalsy();
84
- });
85
- test('fetches OL Book Record on init', () => {
86
- br.getOpenLibraryRecord = jest.fn();
87
- br.init();
88
- expect(br.getOpenLibraryRecord).toHaveBeenCalled();
89
- });
90
- test('Updates Table of Contents when available', () => {
91
- br.init();
92
- expect($.ajax).toHaveBeenCalled();
93
- });
94
- });
95
-
96
- describe('updateTOCState', () => {
97
-
98
- beforeEach(() => {
99
- window.HTMLElement.prototype.scrollIntoView = sinon.stub();
100
- //Sinon is not used because this function is imported from BookModel with exposeOverrideableMethod()
101
- //which has a getter and setter
102
- br.getPageIndex = (str) => parseFloat(str);
103
- br.init();
104
- });
105
-
106
- test('Test page is one of TOC', () => {
107
- br.updateTOCState(20, SAMPLE_TOC);
108
- expect($('li.BRtable-contents-el')[1].classList.contains('current-chapter'));
109
- });
110
-
111
- test('Only one element has .current-chapter', () => {
112
- br.updateTOCState(9, SAMPLE_TOC);
113
- expect($('li.BRtable-contents-el.current-chapter').length).toBe(1);
114
- });
115
-
116
- test('No chapter has .current-chapter if current index is < than any chapter index', () => {
117
- br.updateTOCState(1, SAMPLE_TOC);
118
- expect($('li.BRtable-contents-el.current-chapter').length).toBe(0);
119
- });
120
-
121
- test('if current index == chapter index ', () => {
122
- br.updateTOCState(17, SAMPLE_TOC);
123
- expect($('li.BRtable-contents-el')[1].classList.contains('current-chapter'));
124
- });
125
-
126
- test('No chapter has .current-chapter if all chapter have undefined pageIndex ', () => {
127
- br.updateTOCState(10, SAMPLE_TOC_UNDEF);
128
- expect($('li.BRtable-contents-el.current-chapter').length).toBe(0);
129
- });
130
- });
@@ -1,42 +0,0 @@
1
- import sinon from 'sinon';
2
-
3
- import BookReader from '../../src/BookReader.js';
4
- import { _attachEventListeners } from '../../src/plugins/plugin.iframe.js';
5
-
6
- afterEach(() => {
7
- sinon.restore();
8
- });
9
-
10
- test('listens for br events if parent', () => {
11
- const br = new BookReader();
12
- sinon.spy(br, 'bind');
13
- sinon.spy(window, 'addEventListener');
14
-
15
- _attachEventListeners(br, window.parent);
16
- expect(br.bind.callCount).toBe(1);
17
- expect(window.addEventListener.callCount).toBe(1);
18
- expect(window.addEventListener.args[0][0]).toBe('message');
19
- });
20
-
21
- test('does not attach if not in iframe', () => {
22
- const br = new BookReader();
23
- sinon.spy(br, 'bind');
24
- sinon.spy(window, 'addEventListener');
25
-
26
- _attachEventListeners(br, null);
27
- expect(br.bind.callCount).toBe(0);
28
- expect(window.addEventListener.callCount).toBe(0);
29
- });
30
-
31
- test('updates params when window receives a message', () => {
32
- const br = new BookReader();
33
- sinon.spy(br, 'updateFromParams');
34
- _attachEventListeners(br);
35
- window.dispatchEvent(new MessageEvent('message', {
36
- data: {
37
- type: 'bookReaderFragmentChange',
38
- fragment: ''
39
- }
40
- }));
41
- expect(br.updateFromParams.callCount).toBe(1);
42
- });
@@ -1,66 +0,0 @@
1
-
2
- import BookReader from '../../src/BookReader.js';
3
- import '../../src/plugins/plugin.mobile_nav.js';
4
-
5
- /** @type {BookReader} */
6
- let br;
7
- beforeEach(() => {
8
- document.body.innerHTML = '<div id="BookReader">';
9
- br = new BookReader();
10
- br.init();
11
- });
12
-
13
- afterEach(() => {
14
- jest.clearAllMocks();
15
- });
16
-
17
- describe('Plugin: Mobile Nav', () => {
18
- test('has option flag', () => {
19
- expect(BookReader.defaultOptions.enableMobileNav).toEqual(true);
20
- });
21
- test('has added BR property: mobileNavTitle', () => {
22
- expect(br).toHaveProperty('mobileNavTitle');
23
- expect(br.mobileNavTitle).toBeTruthy();
24
- });
25
- test('has added BR property: mobileNavFullscreenOnly', () => {
26
- expect(br).toHaveProperty('mobileNavFullscreenOnly');
27
- expect(br.mobileNavFullscreenOnly).toEqual(false);
28
- });
29
- test('has a referenced copy of nav in BookReader', () => {
30
- expect(br.refs).toHaveProperty('$mmenu');
31
- });
32
- test('draws toolbar on init', () => {
33
- let callCount = 0;
34
- // Since we have a custom setter set in utils/classes.js, we can't
35
- // use regular spying; need to "override" the function with a watcher.
36
- BookReader.prototype.initToolbar = function(_super) {
37
- return function() {
38
- callCount++;
39
- _super.apply(this, arguments);
40
- };
41
- }(BookReader.prototype.initToolbar);
42
- const br = new BookReader();
43
- br.init();
44
- expect(callCount).toBe(1);
45
- });
46
- test('sets a class on body to signal it has attached', () => {
47
- expect($(document.body).hasClass('BRbodyMobileNavEnabled')).toEqual(true);
48
- });
49
- test('loads the navbar on init', () => {
50
- expect($('#BRmobileMenu')).toHaveLength(1);
51
- });
52
- test('There is a Settings Section', () => {
53
- expect($('.BRmobileMenu__settings')).toHaveLength(1);
54
- });
55
- test('There is a More Info Section', () => {
56
- expect($('.BRmobileMenu__moreInfoRow')).toHaveLength(1);
57
- });
58
- test('There is a Sharing Section', () => {
59
- expect($('.BRmobileMenu__share')).toHaveLength(1);
60
- });
61
- test('clicking on hamburger opens menu', () => {
62
- expect($('html').hasClass('mm-opened')).toEqual(false);
63
- $('.BRmobileHamburger').click();
64
- expect($('html').hasClass('mm-opened')).toEqual(true);
65
- });
66
- });
@@ -1,98 +0,0 @@
1
- import BookReader from '../../src/BookReader.js';
2
- import '../../src/plugins/plugin.resume.js';
3
-
4
- import sinon from 'sinon';
5
- import * as docCookies from '../../src/util/docCookies.js';
6
-
7
- let br;
8
- beforeAll(() => {
9
- document.body.innerHTML = '<div id="BookReader">';
10
- br = new BookReader();
11
- br.init();
12
- });
13
-
14
- afterEach(() => {
15
- jest.clearAllMocks();
16
- sinon.restore();
17
- });
18
-
19
- describe('Plugin: Remember Current Page in Cookies', () => {
20
- test('has default option flag', () => {
21
- expect(BookReader.defaultOptions.enablePageResume).toEqual(true);
22
- expect(BookReader.defaultOptions.resumeCookiePath).toEqual(null);
23
- });
24
-
25
- test('has added BR property: getResumeValue', () => {
26
- expect(br).toHaveProperty('getResumeValue');
27
- });
28
-
29
- test('has added BR property: updateResumeValue', () => {
30
- expect(br).toHaveProperty('updateResumeValue');
31
- });
32
- });
33
-
34
- describe('updateResumeValue', () => {
35
- /* Mark 2020-05-02
36
- Skipping while confirming with Neeraj
37
- I'm not sure:
38
- - What this test really does
39
- - If the instantiation of the prototype counts as a call
40
- - If so, why would there be a second call
41
- Can't find in production
42
- In this branch .toHaveBeenCalledTimes() === 1
43
- */
44
- test.skip('starts when BookReaderInit is called', () => {
45
- br.updateResumeValue = jest.fn();
46
- br.init();
47
- expect(br.updateResumeValue).toHaveBeenCalledTimes(2);
48
- });
49
-
50
- test('handles cookieName=null', () => {
51
- const { updateResumeValue } = BookReader.prototype;
52
- const setItemSpy = sinon.spy(docCookies, 'setItem');
53
- const fakeBr = { options: { resumeCookiePath: '/details/goody' } };
54
-
55
- updateResumeValue.call(fakeBr, 16);
56
- expect(setItemSpy.callCount).toBe(1);
57
- expect(setItemSpy.args[0].slice(0, 2)).toEqual(['br-resume', 16]);
58
- expect(setItemSpy.args[0][3]).toEqual('/details/goody');
59
- });
60
-
61
- test('handles resumeCookiePath not set', () => {
62
- const setItemSpy = sinon.spy(docCookies, 'setItem');
63
- // Save function
64
- const saveFn = br.getCookiePath;
65
- br.getCookiePath = jest.fn(() => '/details/foo');
66
- br.updateResumeValue(16);
67
- expect(setItemSpy.args[0][3]).toEqual('/details/foo');
68
- // Restore function
69
- br.getCookiePath = saveFn;
70
- });
71
-
72
- test('handles cookie path from URL with decoration', () => {
73
- const complexPathWithPage = '/details/2008ELMValidityStudyFinalReportRevised/Executive%20Summary%20for%20the%20EPT%26ELM%20Validity%20Studie_20100603%20-%20Copy/page/n1/mode/2up';
74
- const complexPath = '/details/2008ELMValidityStudyFinalReportRevised/Executive%20Summary%20for%20the%20EPT%26ELM%20Validity%20Studie_20100603%20-%20Copy';
75
- expect(br.getCookiePath(complexPathWithPage))
76
- .toEqual(complexPath);
77
-
78
- expect(br.getCookiePath('/details/item/mode/1up'))
79
- .toEqual('/details/item');
80
-
81
- expect(br.getCookiePath('/details/item/inside/a/long/path/model/is/used'))
82
- .toEqual('/details/item/inside/a/long/path/model/is/used');
83
-
84
- expect(br.getCookiePath('/details/item/inside/a/long/path/mode/is/used'))
85
- .toEqual('/details/item/inside/a/long/path');
86
- });
87
-
88
- test('handles cookie path from URL with no decoration', () => {
89
- expect(br.getCookiePath('/details/item'))
90
- .toEqual('/details/item');
91
-
92
- expect(br.getCookiePath('/details/item/'))
93
- .toEqual('/details/item/');
94
-
95
- expect(br.getCookiePath('/details/item/almost/any/kind/of/long/path'))
96
- .toEqual('/details/item/almost/any/kind/of/long/path');
97
- });
98
- });