@internetarchive/bookreader 5.0.0-11-multiple-files → 5.0.0-110

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 (389) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +616 -1467
  4. package/BookReader/BookReader.js +2 -21564
  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 +1907 -0
  53. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +19 -0
  54. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  55. package/BookReader/icons/1up.svg +1 -12
  56. package/BookReader/icons/2up.svg +1 -15
  57. package/BookReader/icons/advance.svg +3 -26
  58. package/BookReader/icons/chevron-right.svg +1 -1
  59. package/BookReader/icons/close-circle-dark.svg +1 -0
  60. package/BookReader/icons/close-circle.svg +1 -1
  61. package/BookReader/icons/fullscreen.svg +1 -17
  62. package/BookReader/icons/fullscreen_exit.svg +1 -17
  63. package/BookReader/icons/hamburger.svg +1 -15
  64. package/BookReader/icons/left-arrow.svg +1 -12
  65. package/BookReader/icons/magnify-minus.svg +1 -16
  66. package/BookReader/icons/magnify-plus.svg +1 -17
  67. package/BookReader/icons/magnify.svg +1 -15
  68. package/BookReader/icons/pause.svg +1 -23
  69. package/BookReader/icons/play.svg +1 -22
  70. package/BookReader/icons/playback-speed.svg +1 -34
  71. package/BookReader/icons/read-aloud.svg +1 -22
  72. package/BookReader/icons/review.svg +3 -22
  73. package/BookReader/icons/slider-toggle.svg +1 -0
  74. package/BookReader/icons/thumbnails.svg +1 -17
  75. package/BookReader/icons/voice.svg +1 -0
  76. package/BookReader/icons/volume-full.svg +1 -22
  77. package/BookReader/images/BRicons.svg +5 -94
  78. package/BookReader/images/books_graphic.svg +1 -177
  79. package/BookReader/images/hypothesis.ico +0 -0
  80. package/BookReader/images/icon_book.svg +1 -12
  81. package/BookReader/images/icon_bookmark.svg +1 -12
  82. package/BookReader/images/icon_experiment.svg +1 -0
  83. package/BookReader/images/icon_gear.svg +1 -14
  84. package/BookReader/images/icon_hamburger.svg +1 -20
  85. package/BookReader/images/icon_home.svg +1 -21
  86. package/BookReader/images/icon_info.svg +1 -11
  87. package/BookReader/images/icon_one_page.svg +1 -8
  88. package/BookReader/images/icon_pause.svg +1 -1
  89. package/BookReader/images/icon_play.svg +1 -1
  90. package/BookReader/images/icon_playback-rate.svg +1 -15
  91. package/BookReader/images/icon_search_button.svg +1 -8
  92. package/BookReader/images/icon_share.svg +1 -9
  93. package/BookReader/images/icon_skip-ahead.svg +1 -6
  94. package/BookReader/images/icon_skip-back.svg +2 -13
  95. package/BookReader/images/icon_speaker.svg +1 -18
  96. package/BookReader/images/icon_speaker_open.svg +1 -10
  97. package/BookReader/images/icon_thumbnails.svg +1 -12
  98. package/BookReader/images/icon_toc.svg +1 -5
  99. package/BookReader/images/icon_two_pages.svg +1 -9
  100. package/BookReader/images/marker_chap-off.svg +1 -11
  101. package/BookReader/images/marker_chap-on.svg +1 -11
  102. package/BookReader/images/marker_srch-on.svg +1 -11
  103. package/BookReader/images/translate.svg +1 -0
  104. package/BookReader/images/unviewable_page.png +0 -0
  105. package/BookReader/jquery-3.js +2 -0
  106. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  107. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  108. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  109. package/BookReader/plugins/plugin.autoplay.js +1 -165
  110. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  111. package/BookReader/plugins/plugin.chapters.js +19 -301
  112. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  113. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  114. package/BookReader/plugins/plugin.experiments.js +3 -0
  115. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  116. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  117. package/BookReader/plugins/plugin.iframe.js +1 -74
  118. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  119. package/BookReader/plugins/plugin.iiif.js +2 -0
  120. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  121. package/BookReader/plugins/plugin.resume.js +1 -368
  122. package/BookReader/plugins/plugin.resume.js.map +1 -1
  123. package/BookReader/plugins/plugin.search.js +2 -1420
  124. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  125. package/BookReader/plugins/plugin.search.js.map +1 -1
  126. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  127. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  128. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  129. package/BookReader/plugins/plugin.translate.js +137 -0
  130. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  131. package/BookReader/plugins/plugin.translate.js.map +1 -0
  132. package/BookReader/plugins/plugin.tts.js +2 -9193
  133. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  134. package/BookReader/plugins/plugin.tts.js.map +1 -1
  135. package/BookReader/plugins/plugin.url.js +1 -269
  136. package/BookReader/plugins/plugin.url.js.map +1 -1
  137. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  138. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  139. package/BookReader/plugins/translator-worker.js +2 -0
  140. package/BookReader/plugins/translator-worker.js.map +1 -0
  141. package/BookReader/silence.mp3 +0 -0
  142. package/BookReader/translator-worker.js +475 -0
  143. package/BookReader/webcomponents-bundle.js +3 -0
  144. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  145. package/BookReader/webcomponents-bundle.js.map +1 -0
  146. package/README.md +14 -3
  147. package/jsconfig.json +19 -0
  148. package/package.json +92 -70
  149. package/src/BookReader/BookModel.js +92 -46
  150. package/src/BookReader/DragScrollable.js +233 -0
  151. package/src/BookReader/ImageCache.js +49 -16
  152. package/src/BookReader/Mode1Up.js +66 -356
  153. package/src/BookReader/Mode1UpLit.js +392 -0
  154. package/src/BookReader/Mode2Up.js +87 -1315
  155. package/src/BookReader/Mode2UpLit.js +788 -0
  156. package/src/BookReader/ModeAbstract.js +43 -0
  157. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  158. package/src/BookReader/ModeSmoothZoom.js +312 -0
  159. package/src/BookReader/ModeThumb.js +30 -16
  160. package/src/BookReader/Navbar/Navbar.js +201 -76
  161. package/src/BookReader/PageContainer.js +120 -23
  162. package/src/BookReader/ReduceSet.js +3 -3
  163. package/src/BookReader/Toolbar/Toolbar.js +19 -41
  164. package/src/BookReader/events.js +3 -3
  165. package/src/BookReader/options.js +94 -17
  166. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  167. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  168. package/src/BookReader/utils/SelectionObserver.js +45 -0
  169. package/src/BookReader/utils/classes.js +1 -1
  170. package/src/BookReader/utils.js +141 -13
  171. package/src/BookReader.js +711 -1241
  172. package/src/BookReaderPlugin.js +52 -0
  173. package/src/assets/icons/close-circle-dark.svg +1 -0
  174. package/src/assets/icons/magnify-minus.svg +3 -7
  175. package/src/assets/icons/magnify-plus.svg +3 -7
  176. package/src/assets/icons/slider-toggle.svg +1 -0
  177. package/src/assets/icons/voice.svg +1 -0
  178. package/src/assets/images/hypothesis.ico +0 -0
  179. package/src/assets/images/icon_experiment.svg +1 -0
  180. package/src/assets/images/translate.svg +1 -0
  181. package/src/assets/images/unviewable_page.png +0 -0
  182. package/src/assets/silence.mp3 +0 -0
  183. package/src/css/BookReader.scss +1 -17
  184. package/src/css/_BRBookmarks.scss +1 -1
  185. package/src/css/_BRComponent.scss +1 -1
  186. package/src/css/_BRicon.scss +8 -2
  187. package/src/css/_BRmain.scss +33 -27
  188. package/src/css/_BRnav.scss +74 -70
  189. package/src/css/_BRpages.scss +171 -42
  190. package/src/css/_BRsearch.scss +69 -235
  191. package/src/css/_BRtoolbar.scss +5 -5
  192. package/src/css/_TextSelection.scss +129 -24
  193. package/src/css/_colorbox.scss +2 -2
  194. package/src/css/_controls.scss +24 -7
  195. package/src/css/_icons.scss +14 -1
  196. package/src/{BookNavigator/assets → css}/button-base.js +10 -3
  197. package/src/css/icon_checkmark.js +9 -0
  198. package/src/css/sharedStyles.js +15 -0
  199. package/src/ia-bookreader/downloads/downloads-provider.js +81 -0
  200. package/src/{BookNavigator → ia-bookreader}/downloads/downloads.js +29 -25
  201. package/src/ia-bookreader/ia-bookreader.js +666 -0
  202. package/src/ia-bookreader/sharing.js +27 -0
  203. package/src/ia-bookreader/viewable-files.js +98 -0
  204. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments-provider.js +17 -17
  205. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments.js +75 -67
  206. package/src/{BookNavigator → plugins}/bookmarks/bookmark-button.js +4 -3
  207. package/src/{BookNavigator/assets → plugins/bookmarks}/bookmark-colors.js +1 -1
  208. package/src/{BookNavigator → plugins}/bookmarks/bookmark-edit.js +44 -32
  209. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-list.js +48 -49
  210. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-loginCTA.js +5 -10
  211. package/src/plugins/bookmarks/bookmarks-provider.js +63 -0
  212. package/src/{BookNavigator → plugins/bookmarks}/delete-modal-actions.js +1 -1
  213. package/src/{BookNavigator → plugins}/bookmarks/ia-bookmarks.js +117 -68
  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 +310 -201
  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 +53 -50
  221. package/src/plugins/plugin.text_selection.js +522 -219
  222. package/src/plugins/plugin.vendor-fullscreen.js +7 -7
  223. package/src/plugins/search/plugin.search.js +380 -360
  224. package/src/{BookNavigator → plugins}/search/search-provider.js +94 -32
  225. package/src/{BookNavigator → plugins}/search/search-results.js +108 -90
  226. package/src/plugins/search/utils.js +50 -0
  227. package/src/plugins/search/view.js +79 -210
  228. package/src/plugins/translate/TranslationManager.js +164 -0
  229. package/src/plugins/translate/plugin.translate.js +512 -0
  230. package/src/plugins/tts/AbstractTTSEngine.js +78 -49
  231. package/src/plugins/tts/FestivalTTSEngine.js +21 -31
  232. package/src/plugins/tts/PageChunk.js +33 -21
  233. package/src/plugins/tts/PageChunkIterator.js +11 -17
  234. package/src/plugins/tts/WebTTSEngine.js +131 -91
  235. package/src/plugins/tts/plugin.tts.js +345 -350
  236. package/src/plugins/tts/utils.js +77 -49
  237. package/src/plugins/url/UrlPlugin.js +191 -0
  238. package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
  239. package/src/util/TextSelectionManager.js +282 -0
  240. package/src/util/browserSniffing.js +33 -1
  241. package/src/util/cache.js +20 -0
  242. package/src/util/docCookies.js +21 -2
  243. package/src/util/lit.js +15 -0
  244. package/src/util/strings.js +1 -0
  245. package/.babelrc +0 -12
  246. package/.dependabot/config.yml +0 -6
  247. package/.eslintrc.js +0 -49
  248. package/.gitattributes +0 -2
  249. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  250. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  251. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  252. package/.github/workflows/node.js.yml +0 -28
  253. package/.github/workflows/npm-publish.yml +0 -47
  254. package/.testcaferc.json +0 -5
  255. package/BookReader/bookreader-component-bundle.js +0 -14330
  256. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  257. package/BookReader/bookreader-component-bundle.js.map +0 -1
  258. package/BookReader/icons/sort-ascending.svg +0 -1
  259. package/BookReader/icons/sort-descending.svg +0 -1
  260. package/BookReader/jquery-1.10.1.js +0 -108
  261. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  262. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  263. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  264. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  265. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  266. package/BookReaderDemo/BookReaderDemo.css +0 -41
  267. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
  268. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  269. package/BookReaderDemo/BookReaderJSSimple.js +0 -55
  270. package/BookReaderDemo/IIIFBookReader.js +0 -207
  271. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  272. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  273. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  274. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  275. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  276. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  277. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  278. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  279. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  280. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  281. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  282. package/BookReaderDemo/demo-advanced.html +0 -33
  283. package/BookReaderDemo/demo-autoplay.html +0 -38
  284. package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
  285. package/BookReaderDemo/demo-embed.html +0 -26
  286. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
  287. package/BookReaderDemo/demo-fullscreen.html +0 -33
  288. package/BookReaderDemo/demo-iiif.html +0 -34
  289. package/BookReaderDemo/demo-iiif.js +0 -26
  290. package/BookReaderDemo/demo-internetarchive.html +0 -74
  291. package/BookReaderDemo/demo-multiple.html +0 -43
  292. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  293. package/BookReaderDemo/demo-preview-pages.html +0 -1092
  294. package/BookReaderDemo/demo-simple.html +0 -34
  295. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
  296. package/BookReaderDemo/immersion-1up.html +0 -64
  297. package/BookReaderDemo/immersion-mode.html +0 -35
  298. package/BookReaderDemo/toggle_controls.html +0 -53
  299. package/BookReaderDemo/view_mode.html +0 -39
  300. package/BookReaderDemo/viewmode-cycle.html +0 -41
  301. package/CHANGELOG.md +0 -476
  302. package/CONTRIBUTING.md +0 -7
  303. package/codecov.yml +0 -17
  304. package/index.html +0 -31
  305. package/karma.conf.js +0 -23
  306. package/screenshot.png +0 -0
  307. package/scripts/postversion.js +0 -10
  308. package/scripts/preversion.js +0 -14
  309. package/scripts/version.js +0 -26
  310. package/src/BookNavigator/BookModel.js +0 -14
  311. package/src/BookNavigator/BookNavigator.js +0 -451
  312. package/src/BookNavigator/assets/book-loader.js +0 -27
  313. package/src/BookNavigator/assets/icon_checkmark.js +0 -6
  314. package/src/BookNavigator/assets/icon_close.js +0 -3
  315. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  316. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  317. package/src/BookNavigator/bookmarks/bookmarks-provider.js +0 -53
  318. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  319. package/src/BookNavigator/downloads/downloads-provider.js +0 -66
  320. package/src/BookNavigator/search/a-search-result.js +0 -55
  321. package/src/BookNavigator/volumes/volumes-provider.js +0 -75
  322. package/src/BookNavigator/volumes/volumes.js +0 -161
  323. package/src/BookReader/DebugConsole.js +0 -54
  324. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  325. package/src/ItemNavigator/ItemNavigator.js +0 -372
  326. package/src/ItemNavigator/providers/sharing.js +0 -29
  327. package/src/assets/icons/sort-ascending.svg +0 -1
  328. package/src/assets/icons/sort-descending.svg +0 -1
  329. package/src/css/_MobileNav.scss +0 -194
  330. package/src/dragscrollable-br.js +0 -261
  331. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  332. package/src/plugins/plugin.mobile_nav.js +0 -287
  333. package/tests/BookReader/BookModel.test.js +0 -312
  334. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  335. package/tests/BookReader/DebugConsole.test.js +0 -25
  336. package/tests/BookReader/ImageCache.test.js +0 -150
  337. package/tests/BookReader/Mode1Up.test.js +0 -164
  338. package/tests/BookReader/Mode2Up.test.js +0 -247
  339. package/tests/BookReader/Navbar/Navbar.test.js +0 -169
  340. package/tests/BookReader/PageContainer.test.js +0 -115
  341. package/tests/BookReader/ReduceSet.test.js +0 -38
  342. package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
  343. package/tests/BookReader/utils/classes.test.js +0 -88
  344. package/tests/BookReader/utils.test.js +0 -109
  345. package/tests/BookReader.options.test.js +0 -39
  346. package/tests/BookReader.test.js +0 -301
  347. package/tests/e2e/README.md +0 -75
  348. package/tests/e2e/autoplay.test.js +0 -13
  349. package/tests/e2e/base.test.js +0 -35
  350. package/tests/e2e/helpers/base.js +0 -258
  351. package/tests/e2e/helpers/debug.js +0 -13
  352. package/tests/e2e/helpers/desktopSearch.js +0 -72
  353. package/tests/e2e/helpers/mobileSearch.js +0 -85
  354. package/tests/e2e/helpers/mockSearch.js +0 -93
  355. package/tests/e2e/helpers/rightToLeft.js +0 -29
  356. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  357. package/tests/e2e/models/BookReader.js +0 -11
  358. package/tests/e2e/models/Navigation.js +0 -56
  359. package/tests/e2e/rightToLeft.test.js +0 -20
  360. package/tests/e2e/viewmode.test.js +0 -37
  361. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  362. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
  363. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
  364. package/tests/karma/BookNavigator/search-results.test.js +0 -240
  365. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  366. package/tests/karma/BookNavigator/volumes.test.js +0 -133
  367. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  368. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  369. package/tests/plugins/plugin.autoplay.test.js +0 -52
  370. package/tests/plugins/plugin.chapters.test.js +0 -130
  371. package/tests/plugins/plugin.iframe.test.js +0 -42
  372. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  373. package/tests/plugins/plugin.resume.test.js +0 -98
  374. package/tests/plugins/plugin.text_selection.test.js +0 -203
  375. package/tests/plugins/plugin.url.test.js +0 -129
  376. package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
  377. package/tests/plugins/search/plugin.search.test.js +0 -166
  378. package/tests/plugins/search/plugin.search.view.test.js +0 -106
  379. package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
  380. package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
  381. package/tests/plugins/tts/PageChunk.test.js +0 -57
  382. package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
  383. package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
  384. package/tests/plugins/tts/utils.test.js +0 -133
  385. package/tests/util/browserSniffing.test.js +0 -56
  386. package/tests/util/docCookies.test.js +0 -15
  387. package/tests/util/strings.test.js +0 -63
  388. package/tests/utils.js +0 -42
  389. package/webpack.config.js +0 -86
@@ -1,451 +0,0 @@
1
- import { css, html, LitElement } from 'lit-element';
2
- import { nothing } from 'lit-html';
3
- import SearchProvider from './search/search-provider.js';
4
- import DownloadProvider from './downloads/downloads-provider.js';
5
- import VisualAdjustmentProvider from './visual-adjustments/visual-adjustments-provider.js';
6
- import BookmarksProvider from './bookmarks/bookmarks-provider.js';
7
- import SharingProvider from '../ItemNavigator/providers/sharing.js';
8
- import VolumesProvider from './volumes/volumes-provider.js';
9
- import BRFullscreenMgr from './br-fullscreen-mgr.js';
10
- import { Book } from './BookModel.js';
11
- import bookLoader from './assets/book-loader.js';
12
-
13
- const events = {
14
- menuUpdated: 'menuUpdated',
15
- updateSideMenu: 'updateSideMenu',
16
- PostInit: 'PostInit',
17
- ViewportInFullScreen: 'ViewportInFullScreen',
18
- };
19
- export class BookNavigator extends LitElement {
20
- static get properties() {
21
- return {
22
- book: { type: Object },
23
- pageContainerSelector: { type: String },
24
- brWidth: { type: Number },
25
- bookReaderLoaded: { type: Boolean },
26
- bookreader: { type: Object },
27
- downloadableTypes: { type: Array },
28
- isAdmin: { type: Boolean },
29
- lendingInitialized: { type: Boolean },
30
- lendingStatus: { type: Object },
31
- menuProviders: { type: Object },
32
- menuShortcuts: { type: Array },
33
- sideMenuOpen: { type: Boolean },
34
- signedIn: { type: Boolean },
35
- };
36
- }
37
-
38
- constructor() {
39
- super();
40
- this.book = {};
41
- this.pageContainerSelector = '.BRcontainer';
42
- this.brWidth = 0;
43
- this.bookReaderCannotLoad = false;
44
- this.bookReaderLoaded = false;
45
- this.bookreader = null;
46
- this.downloadableTypes = [];
47
- this.isAdmin = false;
48
- this.lendingInitialized = false;
49
- this.lendingStatus = {};
50
- this.menuProviders = {};
51
- this.menuShortcuts = [];
52
- this.sideMenuOpen = false;
53
- this.signedIn = false;
54
-
55
- // Untracked properties
56
- this.fullscreenMgr = null;
57
- this.brResizeObserver = null;
58
- this.model = new Book();
59
- this.shortcutOrder = ['volumes', 'search', 'bookmarks'];
60
- }
61
-
62
- firstUpdated() {
63
- this.model.setMetadata(this.book);
64
- this.bindEventListeners();
65
- this.emitPostInit();
66
- }
67
-
68
- updated(changed) {
69
- if (!this.bookreader) {
70
- return;
71
- }
72
- const isFirstSideMenuUpdate = changed.has('sideMenuOpen') && (changed.get('sideMenuOpen') === undefined);
73
- if (!isFirstSideMenuUpdate) {
74
- // realign image
75
- if (this.bookreader.animating) {
76
- return;
77
- }
78
- this.bookreader.resize();
79
- const curIndex = this.bookreader.currentIndex();
80
- this.bookreader.jumpToIndex(curIndex);
81
- }
82
- }
83
-
84
- /**
85
- * Global event emitter for when Book Navigator loads
86
- */
87
- emitPostInit() {
88
- // emit global event when book nav has loaded with current bookreader selector
89
- this.dispatchEvent(new CustomEvent(`BrBookNav:${events.PostInit}`, {
90
- detail: { brSelector: this.bookreader?.el },
91
- bubbles: true,
92
- composed: true,
93
- }));
94
- }
95
-
96
- /**
97
- * Instantiates books submenus & their update callbacks
98
- *
99
- * NOTE: we are doing our best to scope bookreader's instance.
100
- * If your submenu provider uses a bookreader instance to read, manually
101
- * manipulate BookReader, please update the navigator's instance of it
102
- * to keep it in sync.
103
- */
104
- initializeBookSubmenus() {
105
- this.menuProviders = {
106
- search: new SearchProvider(
107
- (brInstance = null) => {
108
- if (brInstance) {
109
- /* refresh br instance reference */
110
- this.bookreader = brInstance;
111
- }
112
- this.updateMenuContents();
113
- if (this.brWidth >= 640) { /* open side search menu */
114
- this.openSideSearchMenu();
115
- }
116
- },
117
- this.bookreader,
118
- ),
119
- downloads: new DownloadProvider(),
120
- visualAdjustments: new VisualAdjustmentProvider({
121
- onOptionChange: (event, brInstance = null) => {
122
- if (brInstance) {
123
- /* refresh br instance reference */
124
- this.bookreader = brInstance;
125
- }
126
- this.updateMenuContents();
127
- },
128
- bookContainerSelector: this.pageContainerSelector,
129
- bookreader: this.bookreader,
130
- }),
131
- share: new SharingProvider(this.book.metadata, this.baseHost, this.itemType),
132
- bookmarks: new BookmarksProvider(this.bookmarksOptions, this.bookreader),
133
- };
134
-
135
- // add shortcut for volumes if multipleBooksList exists
136
- if (this.bookreader.options.enableMultipleBooks) {
137
- this.menuProviders.volumes = new VolumesProvider((brInstance) => {
138
- if (brInstance) {
139
- /* refresh br instance reference */
140
- this.bookreader = brInstance;
141
- }
142
- this.updateMenuContents()
143
- }, this.baseHost, this.bookreader)
144
- this.addMenuShortcut('volumes')
145
- }
146
-
147
- this.addMenuShortcut('search'); /* start with search as a shortcut */
148
- this.updateMenuContents();
149
- }
150
-
151
- /** gets element that houses the bookreader in light dom */
152
- get mainBRContainer() {
153
- return document.querySelector(this.bookreader.el);
154
- }
155
-
156
- get bookmarksOptions() {
157
- const referrerStr = `referer=${encodeURIComponent(location.href)}`
158
- return {
159
- loginUrl: `https://${this.baseHost}/account/login?${referrerStr}`,
160
- displayMode: this.signedIn ? 'bookmarks' : 'login',
161
- showItemNavigatorModal: this.showItemNavigatorModal.bind(this),
162
- closeItemNavigatorModal: this.closeItemNavigatorModal.bind(this),
163
- onBookmarksChanged: (bookmarks) => {
164
- const method = Object.keys(bookmarks).length ? 'add' : 'remove';
165
- this[`${method}MenuShortcut`]('bookmarks');
166
- this.updateMenuContents();
167
- },
168
- };
169
- }
170
-
171
- /**
172
- * Open side search menu
173
- */
174
- openSideSearchMenu() {
175
- const event = new CustomEvent(
176
- events.updateSideMenu, {
177
- detail: { menuId: 'search', action: 'open' },
178
- },
179
- );
180
- this.dispatchEvent(event);
181
- }
182
-
183
- /**
184
- * Sets order of menu and emits custom event when done
185
- */
186
- updateMenuContents() {
187
- const {
188
- search, downloads, visualAdjustments, share, bookmarks, volumes
189
- } = this.menuProviders;
190
- const availableMenus = [volumes, search, bookmarks, visualAdjustments, share].filter((menu) => !!menu);
191
-
192
- if (this.shouldShowDownloadsMenu()) {
193
- downloads.update(this.downloadableTypes);
194
- availableMenus.splice(1, 0, downloads);
195
- }
196
-
197
- const event = new CustomEvent(
198
- events.menuUpdated, {
199
- detail: availableMenus,
200
- },
201
- );
202
- this.dispatchEvent(event);
203
- }
204
-
205
- /**
206
- * Confirms if we should show the downloads menu
207
- * @returns {bool}
208
- */
209
- shouldShowDownloadsMenu() {
210
- if (this.model.isRestricted === false) { return true; }
211
- if (this.isAdmin) { return true; }
212
- const { user_loan_record = {} } = this.lendingStatus;
213
- const hasNoLoanRecord = Array.isArray(user_loan_record); /* (bc PHP assoc. arrays) */
214
-
215
- if (hasNoLoanRecord) { return false; }
216
-
217
- const hasValidLoan = user_loan_record.type && (user_loan_record.type !== 'SESSION_LOAN');
218
- return hasValidLoan;
219
- }
220
-
221
- /**
222
- * Adds a provider object to the menuShortcuts array property if it isn't
223
- * already added. menuShortcuts are then sorted by shortcutOrder and
224
- * a menuShortcutsUpdated event is emitted.
225
- *
226
- * @param {string} menuId - a string matching the id property of a provider
227
- */
228
- addMenuShortcut(menuId) {
229
- if (this.menuShortcuts.find((m) => m.id === menuId)) { return; }
230
-
231
- this.menuShortcuts.push(this.menuProviders[menuId]);
232
- this.sortMenuShortcuts();
233
- this.emitMenuShortcutsUpdated();
234
- }
235
-
236
- /**
237
- * Removes a provider object from the menuShortcuts array and emits a
238
- * menuShortcutsUpdated event.
239
- *
240
- * @param {string} menuId - a string matching the id property of a provider
241
- */
242
- removeMenuShortcut(menuId) {
243
- this.menuShortcuts = this.menuShortcuts.filter((m) => m.id !== menuId);
244
- this.emitMenuShortcutsUpdated();
245
- }
246
-
247
- /**
248
- * Sorts the menuShortcuts property by comparing each provider's id to
249
- * the id in each iteration over the shortcutOrder array.
250
- */
251
- sortMenuShortcuts() {
252
- this.menuShortcuts = this.shortcutOrder.reduce((shortcuts, id) => {
253
- const menu = this.menuShortcuts.find((m) => m.id === id);
254
- if (menu) { shortcuts.push(menu); }
255
- return shortcuts;
256
- }, []);
257
- }
258
-
259
- emitMenuShortcutsUpdated() {
260
- const event = new CustomEvent('menuShortcutsUpdated', {
261
- detail: this.menuShortcuts,
262
- });
263
- this.dispatchEvent(event);
264
- }
265
-
266
- /**
267
- * Core bookreader event handler registry
268
- *
269
- * NOTE: we are trying to keep bookreader's instance in scope
270
- * Please update Book Navigator's instance reference of it to keep it current
271
- */
272
- bindEventListeners() {
273
- window.addEventListener('BookReader:PostInit', (e) => {
274
- this.bookreader = e.detail.props;
275
- this.bookReaderLoaded = true;
276
- this.bookReaderCannotLoad = false;
277
- this.fullscreenMgr = new BRFullscreenMgr(this.bookreader.el);
278
-
279
- this.initializeBookSubmenus();
280
- setTimeout(() => this.bookreader.resize(), 0);
281
- this.brResizeObserver = new ResizeObserver((elements) => this.reactToBrResize(elements));
282
- this.brResizeObserver.observe(this.mainBRContainer);
283
- });
284
- window.addEventListener('BookReader:fullscreenToggled', (event) => {
285
- const { detail: { props: brInstance = null } } = event;
286
- if (brInstance) {
287
- this.bookreader = brInstance;
288
- }
289
- this.manageFullScreenBehavior(event);
290
- }, { passive: true });
291
- window.addEventListener('BookReader:ToggleSearchMenu', (event) => {
292
- this.dispatchEvent(new CustomEvent(events.updateSideMenu, {
293
- detail: { menuId: 'search', action: 'toggle' },
294
- }));
295
- });
296
- window.addEventListener('LendingFlow:PostInit', ({ detail }) => {
297
- const {
298
- downloadTypesAvailable, lendingStatus, isAdmin, previewType,
299
- } = detail;
300
- this.lendingInitialized = true;
301
- this.downloadableTypes = downloadTypesAvailable;
302
- this.lendingStatus = lendingStatus;
303
- this.isAdmin = isAdmin;
304
- this.bookReaderCannotLoad = previewType === 'singlePagePreview';
305
- });
306
- window.addEventListener('BRJSIA:PostInit', ({ detail }) => {
307
- const { isRestricted, downloadURLs } = detail;
308
- this.bookReaderLoaded = true;
309
- this.downloadableTypes = downloadURLs;
310
- this.model.setRestriction(isRestricted);
311
- });
312
- }
313
-
314
- /**
315
- * Uses resize observer to fire BookReader's `resize` functionality
316
- * We do not want to trigger resize IF:
317
- * - book animation is happening
318
- * - book is in fullscreen (fullscreen is handled separately)
319
- *
320
- * @param { Object } entries - resize observer entries
321
- */
322
- reactToBrResize(entries = []) {
323
- const startBrWidth = this.brWidth;
324
- const { animating } = this.bookreader;
325
-
326
- entries.forEach(({ contentRect, target }) => {
327
- if (target === this.mainBRContainer) {
328
- this.brWidth = contentRect.width;
329
- }
330
- });
331
- setTimeout(() => {
332
- if (startBrWidth && !animating) {
333
- this.bookreader.resize();
334
- }
335
- }, 0);
336
- }
337
-
338
- /**
339
- * Manages Fullscreen behavior
340
- * This makes sure that controls are _always_ in view
341
- * We need this to accommodate LOAN BAR during fullscreen
342
- */
343
- manageFullScreenBehavior() {
344
- this.emitFullScreenState();
345
-
346
- if (!this.bookreader.isFullscreen()) {
347
- this.fullscreenMgr.teardown();
348
- } else {
349
- this.fullscreenMgr.setup(this.bookreader);
350
- }
351
- }
352
-
353
- /**
354
- * Intercepts and relays fullscreen toggle events
355
- */
356
- emitFullScreenState() {
357
- const isFullScreen = this.bookreader.isFullscreen();
358
- const event = new CustomEvent('ViewportInFullScreen', {
359
- detail: { isFullScreen },
360
- });
361
- this.dispatchEvent(event);
362
- }
363
-
364
- emitShowItemNavigatorModal(e) {
365
- this.dispatchEvent(new CustomEvent('showItemNavigatorModal', {
366
- detail: e.detail,
367
- }));
368
- }
369
-
370
- emitCloseItemNavigatorModal() {
371
- this.dispatchEvent(new CustomEvent('closeItemNavigatorModal'));
372
- }
373
-
374
- showItemNavigatorModal(e) {
375
- this.emitShowItemNavigatorModal(e);
376
- }
377
-
378
- closeItemNavigatorModal() {
379
- this.emitCloseItemNavigatorModal();
380
- }
381
-
382
- get loader() {
383
- const loader = html`
384
- <div class="book-loader">${bookLoader}<div>
385
- <h3>Loading viewer</h3>
386
- `;
387
- return !this.bookReaderLoaded ? loader : nothing;
388
- }
389
-
390
- get loadingClass() {
391
- return !this.bookReaderLoaded ? 'loading' : '';
392
- }
393
-
394
- get itemImage() {
395
- const url = `https://${this.baseHost}/services/img/${this.book.metadata.identifier}`;
396
- return html`<img src="${url}" alt="cover image for ${this.book.metadata.identifier}">`;
397
- }
398
-
399
- render() {
400
- const placeholder = this.bookReaderCannotLoad ? this.itemImage : this.loader;
401
- return html`<div id="book-navigator" class="${this.loadingClass}">
402
- ${placeholder}
403
- <slot name="bookreader"></slot>
404
- </div>
405
- `;
406
- }
407
-
408
- static get styles() {
409
- return css`
410
- #book-navigator.loading {
411
- display: flex;
412
- align-items: center;
413
- justify-content: center;
414
- min-height: 30vh;
415
- }
416
-
417
- #book-navigator .book-loader {
418
- width: 30%;
419
- margin: auto;
420
- text-align: center;
421
- color: var(--primaryTextColor);
422
- }
423
-
424
- .book-loader svg {
425
- display: block;
426
- width: 60%;
427
- max-width: 100px;
428
- height: auto;
429
- margin: auto;
430
- }
431
-
432
- svg * {
433
- fill: var(--primaryTextColor);
434
- }
435
-
436
- svg .ring {
437
- animation: rotate 1.3s infinite linear;
438
- transform-origin: 50px 50px;
439
- transform-box: fill-box;
440
- }
441
-
442
- @keyframes rotate {
443
- 0% {
444
- transform: rotate(-360deg);
445
- }
446
- }
447
- `
448
- }
449
- }
450
-
451
- customElements.define('book-navigator', BookNavigator);
@@ -1,27 +0,0 @@
1
- import { html } from 'lit-element';
2
-
3
- export default html`
4
- <svg
5
- height="100"
6
- viewBox="0 0 100 100"
7
- width="100"
8
- xmlns="http://www.w3.org/2000/svg"
9
- aria-labelledby="bookreader-loading"
10
- >
11
- <title id="bookreader-loading">Currently loading viewer.</title>
12
- <desc>Please wait while we load book reader.</desc>
13
- <g fill="#333" fill-rule="evenodd" class="book-icon">
14
- <g transform="matrix(1 0 0 -1 28 67.362264)">
15
- <path d="m44.71698 31.6981124v-29.99320678s-18.0956599.30735848-18.6322637-.7171698c-.0633962-.12226414-1.890566-.59207545-2.9745282-.59207545-1.3228302 0-3.5122641 0-4.1286791.74547168-.9707547 1.17452827-18.82811278.71660375-18.82811278.71660375v30.040754l1.83849052.7867924.29094339-28.48188608s15.94981097.15339622 17.09094297-1.10716978c.8145283-.90056602 4.997547-.91641507 5.3450942-.3526415.9611321 1.55716977 14.7101883 1.31716978 17.6077354 1.45981128l.3266038 28.22830118z"/>
16
- <path d="m40.1129424 33.5957539h-12.8337733c-1.8690565 0-3.1098112-.7545283-3.9299999-1.6279245v-26.70452764l1.2362264-.00792453c.4584906.72962262 3.0922641 1.39415091 3.0922641 1.39415091h10.1298111s1.0381131.01754717 1.5141509.47377357c.5643396.54056602.7913207 1.36981129.7913207 1.36981129z"/>
17
- <path d="m17.3354713 33.5957539h-12.8337733v-25.37660316s0-.75283017.49358489-1.14113205c.52867924-.41433961 1.3415094-.42849055 1.3415094-.42849055h10.59905631s2.2075471-.52698112 3.0928301-1.39415091l1.2.00792453v26.74245214c-.8201886.8581132-2.0530188 1.59-3.8932074 1.59"/>
18
- </g>
19
- <path
20
- class="ring"
21
- d="m17.8618849 11.6970233c18.5864635-15.59603144 45.6875867-15.59603102 64.2740497.000001 1.9271446 1.6170806 2.1785128 4.4902567.5614466 6.4174186-1.6170661 1.9271618-4.4902166 2.1785323-6.4173612.5614517-15.1996922-12.75416882-37.3625282-12.75416916-52.5622206-.000001-15.19969387 12.7541707-19.04823077 34.5805019-9.1273354 51.7641499 9.9208955 17.183646 30.7471499 24.7638499 49.3923323 17.9774983 18.6451823-6.7863521 29.7266014-25.9801026 26.2811129-45.5206248-.436848-2.4775114 1.2174186-4.8400696 3.6949079-5.2769215 2.4774893-.4368518 4.8400264 1.2174296 5.2768744 3.694941 4.2132065 23.8945096-9.3373563 47.3649806-32.137028 55.6634567-22.799672 8.2984758-48.2663986-.9707372-60.39785211-21.9832155-12.1314534-21.012481-7.42539173-47.7021198 11.16107351-63.2981544z"
22
- fill-rule="nonzero"
23
- />
24
- </g>
25
- </svg>
26
- `;
27
-
@@ -1,6 +0,0 @@
1
- import { css } from 'lit-element';
2
-
3
- // Original SVG object for reference
4
- // <svg height="10" viewBox="0 0 13 10" width="13" xmlns="http://www.w3.org/2000/svg"><path d="m4.33333333 10-4.33333333-4.16666667 1.73333333-1.66666666 2.6 2.5 6.93333337-6.66666667 1.7333333 1.66666667z" fill="#fff" fill-rule="evenodd"/></svg>
5
-
6
- export default css`data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTMgMTAiIHdpZHRoPSIxMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC4zMzMzMzMzMyAxMC00LjMzMzMzMzMzLTQuMTY2NjY2NjcgMS43MzMzMzMzMy0xLjY2NjY2NjY2IDIuNiAyLjUgNi45MzMzMzMzNy02LjY2NjY2NjY3IDEuNzMzMzMzMyAxLjY2NjY2NjY3eiIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+`;
@@ -1,3 +0,0 @@
1
- import { css } from 'lit-element';
2
-
3
- export default css`data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDAgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1sYWJlbGxlZGJ5PSJjbG9zZVRpdGxlSUQgY2xvc2VEZXNjSUQiPjxwYXRoIGQ9Ik0yOS4xOTIgMTAuODA4YTEuNSAxLjUgMCAwMTAgMi4xMkwyMi4xMjIgMjBsNy4wNyA3LjA3MmExLjUgMS41IDAgMDEtMi4xMiAyLjEyMWwtNy4wNzMtNy4wNy03LjA3IDcuMDdhMS41IDEuNSAwIDAxLTIuMTIxLTIuMTJsNy4wNy03LjA3My03LjA3LTcuMDdhMS41IDEuNSAwIDAxMi4xMi0yLjEyMUwyMCAxNy44NzhsNy4wNzItNy4wN2ExLjUgMS41IDAgMDEyLjEyMSAweiIgY2xhc3M9ImZpbGwtY29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==`;
@@ -1,5 +0,0 @@
1
- import { html } from 'lit-html';
2
-
3
- export default html`
4
- <svg name="ascending" height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m2.32514544 8.30769231.7756949-2.08468003h2.92824822l.75630252 2.08468003h1.01809955l-2.70523594-6.92307693h-1.01809955l-2.69553976 6.92307693zm3.41305753-2.86037492h-2.34647705l1.17323853-3.22883h.01939237z" fill="#fff" fill-rule="nonzero"/><path d="m7.1689722 16.6153846v-.7756949h-4.4117647l4.29541047-5.3716871v-.77569491h-5.06140918v.77569491h3.97543633l-4.30510666 5.3716871v.7756949z" fill="#fff" fill-rule="nonzero"/><path d="m10.3846154 11.0769231 2.7692308 5.5384615 2.7692307-5.5384615m-2.7692307 4.1538461v-13.15384612" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.661538"/></g></svg>
5
- `;
@@ -1,5 +0,0 @@
1
- import { html } from 'lit-html';
2
-
3
- export default html`
4
- <svg name="descending" height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m2.32514544 8.30769231.7756949-2.08468003h2.92824822l.75630252 2.08468003h1.01809955l-2.70523594-6.92307693h-1.01809955l-2.69553976 6.92307693zm3.41305753-2.86037492h-2.34647705l1.17323853-3.22883h.01939237z" fill="#fff" fill-rule="nonzero"/><path d="m7.1689722 16.6153846v-.7756949h-4.4117647l4.29541047-5.3716871v-.77569491h-5.06140918v.77569491h3.97543633l-4.30510666 5.3716871v.7756949z" fill="#fff" fill-rule="nonzero"/><path d="m10.3846154 11.0769231 2.7692308 5.5384615 2.7692307-5.5384615m-2.7692307 4.1538461v-13.15384612" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.661538" transform="matrix(1 0 0 -1 0 18.692308)"/></g></svg>
5
- `;
@@ -1,53 +0,0 @@
1
- import { html } from 'lit-element';
2
- import '../delete-modal-actions.js';
3
- import './bookmark-button.js';
4
- import './ia-bookmarks.js';
5
-
6
- import './bookmark-edit.js';
7
- import './bookmarks-list.js';
8
- import { IAIconBookmark } from '@internetarchive/icon-bookmark';
9
-
10
- customElements.define('icon-bookmark', IAIconBookmark);
11
-
12
- export default class BookmarksProvider {
13
- constructor(options, bookreader) {
14
- const boundOptions = Object.assign(this, options, {loginClicked: this.bookmarksLoginClicked});
15
- this.component = document.createElement('ia-bookmarks');
16
- this.component.bookreader = bookreader;
17
- this.component.options = boundOptions;
18
-
19
- this.bindEvents();
20
-
21
- this.icon = html`<icon-bookmark state="hollow" style="--iconWidth: 16px; --iconHeight: 24px;"></icon-bookmark>`;
22
- this.label = 'Bookmarks';
23
- this.id = 'bookmarks';
24
- this.component.setup();
25
- this.updateMenu(this.component.bookmarks.length);
26
- }
27
-
28
- updateMenu(count) {
29
- this.menuDetails = `(${count})`;
30
- }
31
-
32
- bindEvents() {
33
- this.component.addEventListener('bookmarksChanged', this.bookmarksChanged.bind(this));
34
- this.component.addEventListener('showItemNavigatorModal', this.showItemNavigatorModal);
35
- this.component.addEventListener('closeItemNavigatorModal', this.closeItemNavigatorModal);
36
- }
37
-
38
- bookmarksChanged({ detail }) {
39
- const bookmarksLength = Object.keys(detail.bookmarks).length;
40
- this.updateMenu(bookmarksLength);
41
- this.onBookmarksChanged(detail.bookmarks);
42
- }
43
-
44
- bookmarksLoginClicked() {
45
- if (window.archive_analytics) {
46
- window.archive_analytics?.send_event_no_sampling(
47
- 'BookReader',
48
- `BookmarksLogin`,
49
- window.location.path,
50
- );
51
- }
52
- }
53
- }
@@ -1,83 +0,0 @@
1
- import Debouncer from '../util/debouncer';
2
-
3
- /**
4
- * Manages fullscreen size
5
- * so that bookreader chrome is always visible
6
- * This is a shim to hold us until we update loan bar
7
- * https://drive.google.com/drive/folders/1Ym9FDMZPiM4EbNh3NU-_2h8kizIYaLWt
8
- */
9
- export default class BRFullscreenMgr {
10
- constructor(brSelector = '#BookReader') {
11
- this.debounceTime = 250;
12
- this.savedScrollY = 0;
13
- this.savedScrollX = 0;
14
- this.brSelector = brSelector;
15
-
16
- this.setup = this.setup.bind(this);
17
- this.teardown = this.teardown.bind(this);
18
- this.resizeBookReaderContainer = this.resizeBookReaderContainer.bind(this);
19
-
20
- this.handleResizeEvent = this.handleResizeEvent.bind(this);
21
-
22
- this.handleBookReaderHeight = new Debouncer(
23
- this.resizeBookReaderContainer, this.debounceTime, this,
24
- );
25
- }
26
-
27
- get brDom() {
28
- return document.querySelector(this.brSelector);
29
- }
30
-
31
- /**
32
- * Sets bookreader height
33
- * & adds resize, orientationchange listeners
34
- * & passes captured scroll positions
35
- *
36
- * @param {object} brInstance
37
- */
38
- setup(brInstance) {
39
- this.bookreader = brInstance;
40
-
41
- this.resizeBookReaderContainer();
42
- window.addEventListener('resize', this.handleResizeEvent);
43
- }
44
-
45
- /**
46
- * Resets BookReader height
47
- * & removes event handlers, resets captured scroll positions
48
- */
49
- teardown() {
50
- this.brDom.setAttribute('style', '');
51
- window.removeEventListener('resize', this.handleResizeEvent);
52
- window.scrollTo(this.savedScrollX, this.savedScrollY);
53
- this.savedScrollX = 0;
54
- this.savedScrollY = 0;
55
- }
56
-
57
- /**
58
- * Event listener for resize & orientationchange
59
- */
60
- handleResizeEvent() {
61
- this.handleBookReaderHeight.execute();
62
- }
63
-
64
- /**
65
- * Calculates & sets BookReader's needed height to
66
- * take the loan bar into account
67
- * + appends fullscreen classes to DOM
68
- */
69
- resizeBookReaderContainer() {
70
- const { scrollX, scrollY } = window;
71
- this.savedScrollX = scrollX;
72
- this.savedScrollY = scrollY;
73
- this.bookreader.updateBrClasses();
74
-
75
- const loanbar = document.querySelector('.BookReaderMessage');
76
- const loanbarHeight = loanbar?.offsetHeight ?? 0;
77
- const windowHeight = window.innerHeight;
78
- const newHeight = `${(windowHeight - loanbarHeight)}px`;
79
- this.brDom.style.height = newHeight;
80
- this.brDom.style.top = loanbarHeight;
81
- window.scrollTo(0, 0);
82
- }
83
- }