@internetarchive/bookreader 5.0.0-3 → 5.0.0-30-d

Sign up to get free protection for your applications and to get access to all the features.
Files changed (391) hide show
  1. package/.eslintrc.js +17 -5
  2. package/.github/dependabot.yml +8 -0
  3. package/.github/workflows/node.js.yml +10 -1
  4. package/.husky/_/husky.sh +30 -0
  5. package/.testcaferc.js +10 -0
  6. package/BookReader/BookReader.css +75 -323
  7. package/BookReader/BookReader.js +32261 -2
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +15235 -0
  10. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  11. package/BookReader/icons/close-circle-dark.svg +1 -0
  12. package/BookReader/icons/voice.svg +1 -0
  13. package/BookReader/jquery-1.10.1.js +108 -2
  14. package/BookReader/plugins/plugin.archive_analytics.js +170 -1
  15. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  16. package/BookReader/plugins/plugin.autoplay.js +163 -1
  17. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  18. package/BookReader/plugins/plugin.chapters.js +333 -1
  19. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  20. package/BookReader/plugins/plugin.iframe.js +72 -1
  21. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  22. package/BookReader/plugins/plugin.mobile_nav.js +332 -1
  23. package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
  24. package/BookReader/plugins/plugin.resume.js +241 -1
  25. package/BookReader/plugins/plugin.resume.js.map +1 -1
  26. package/BookReader/plugins/plugin.search.js +1261 -1
  27. package/BookReader/plugins/plugin.search.js.map +1 -1
  28. package/BookReader/plugins/plugin.text_selection.js +839 -1
  29. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  30. package/BookReader/plugins/plugin.tts.js +9115 -2
  31. package/BookReader/plugins/plugin.tts.js.map +1 -1
  32. package/BookReader/plugins/plugin.url.js +811 -1
  33. package/BookReader/plugins/plugin.url.js.map +1 -1
  34. package/BookReader/plugins/plugin.vendor-fullscreen.js +326 -1
  35. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  36. package/BookReader/webcomponents-bundle.js +412 -0
  37. package/BookReader/webcomponents-bundle.js.map +1 -0
  38. package/BookReaderDemo/BookReaderDemo.css +14 -1
  39. package/BookReaderDemo/IADemoBr.js +107 -0
  40. package/BookReaderDemo/demo-advanced.html +1 -1
  41. package/BookReaderDemo/demo-autoplay.html +1 -0
  42. package/BookReaderDemo/demo-embed-iframe-src.html +1 -0
  43. package/BookReaderDemo/demo-fullscreen-mobile.html +1 -0
  44. package/BookReaderDemo/demo-fullscreen.html +1 -0
  45. package/BookReaderDemo/demo-iiif.html +1 -0
  46. package/BookReaderDemo/demo-internetarchive.html +66 -18
  47. package/BookReaderDemo/demo-multiple.html +1 -0
  48. package/BookReaderDemo/demo-preview-pages.html +1 -0
  49. package/BookReaderDemo/demo-simple.html +1 -0
  50. package/BookReaderDemo/demo-vendor-fullscreen.html +1 -0
  51. package/BookReaderDemo/immersion-1up.html +1 -0
  52. package/BookReaderDemo/immersion-mode.html +1 -0
  53. package/BookReaderDemo/toggle_controls.html +1 -0
  54. package/BookReaderDemo/view_mode.html +1 -0
  55. package/BookReaderDemo/viewmode-cycle.html +1 -2
  56. package/CHANGELOG.md +114 -0
  57. package/babel.config.js +18 -0
  58. package/index.html +3 -0
  59. package/jsconfig.json +19 -0
  60. package/package.json +45 -27
  61. package/src/BookNavigator/assets/button-base.js +8 -1
  62. package/src/BookNavigator/assets/ia-logo.js +17 -0
  63. package/src/BookNavigator/assets/icon_sort_asc.js +5 -0
  64. package/src/BookNavigator/assets/icon_sort_desc.js +5 -0
  65. package/src/BookNavigator/assets/icon_sort_neutral.js +5 -0
  66. package/src/BookNavigator/assets/icon_volumes.js +11 -0
  67. package/src/BookNavigator/book-navigator.js +528 -0
  68. package/src/BookNavigator/bookmarks/bookmark-button.js +2 -1
  69. package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -1
  70. package/src/BookNavigator/bookmarks/bookmarks-list.js +1 -0
  71. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
  72. package/src/BookNavigator/bookmarks/bookmarks-provider.js +32 -11
  73. package/src/BookNavigator/bookmarks/ia-bookmarks.js +88 -43
  74. package/src/BookNavigator/downloads/downloads-provider.js +22 -16
  75. package/src/BookNavigator/downloads/downloads.js +16 -23
  76. package/src/BookNavigator/search/a-search-result.js +1 -0
  77. package/src/BookNavigator/search/search-provider.js +54 -20
  78. package/src/BookNavigator/search/search-results.js +7 -18
  79. package/src/BookNavigator/sharing.js +27 -0
  80. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +10 -12
  81. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +1 -0
  82. package/src/BookNavigator/volumes/volumes-provider.js +114 -0
  83. package/src/BookNavigator/volumes/volumes.js +189 -0
  84. package/src/BookReader/DebugConsole.js +3 -3
  85. package/src/BookReader/DragScrollable.js +233 -0
  86. package/src/BookReader/Mode1Up.js +50 -351
  87. package/src/BookReader/Mode1UpLit.js +434 -0
  88. package/src/BookReader/Mode2Up.js +94 -72
  89. package/src/BookReader/ModeSmoothZoom.js +177 -0
  90. package/src/BookReader/ModeThumb.js +16 -8
  91. package/src/BookReader/Navbar/Navbar.js +2 -31
  92. package/src/BookReader/PageContainer.js +47 -2
  93. package/src/BookReader/ReduceSet.js +1 -1
  94. package/src/BookReader/Toolbar/Toolbar.js +5 -5
  95. package/src/BookReader/options.js +10 -0
  96. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  97. package/src/BookReader/utils.js +68 -13
  98. package/src/BookReader.js +316 -232
  99. package/src/assets/icons/close-circle-dark.svg +1 -0
  100. package/src/assets/icons/voice.svg +1 -0
  101. package/src/css/BookReader.scss +0 -12
  102. package/src/css/_BRComponent.scss +1 -1
  103. package/src/css/_BRmain.scss +19 -24
  104. package/src/css/_BRnav.scss +4 -26
  105. package/src/css/_BRpages.scss +35 -0
  106. package/src/css/_BRsearch.scss +11 -215
  107. package/src/css/_TextSelection.scss +1 -17
  108. package/src/css/_controls.scss +16 -3
  109. package/src/css/_icons.scss +6 -0
  110. package/src/ia-bookreader/ia-bookreader.js +206 -0
  111. package/src/plugins/plugin.chapters.js +15 -18
  112. package/src/plugins/plugin.mobile_nav.js +11 -10
  113. package/src/plugins/plugin.resume.js +3 -3
  114. package/src/plugins/plugin.text_selection.js +17 -29
  115. package/src/plugins/plugin.vendor-fullscreen.js +4 -4
  116. package/src/plugins/search/plugin.search.js +113 -104
  117. package/src/plugins/search/view.js +48 -163
  118. package/src/plugins/tts/AbstractTTSEngine.js +7 -0
  119. package/src/plugins/tts/FestivalTTSEngine.js +2 -2
  120. package/src/plugins/tts/WebTTSEngine.js +5 -0
  121. package/src/plugins/tts/plugin.tts.js +67 -102
  122. package/src/plugins/url/UrlPlugin.js +184 -0
  123. package/src/plugins/url/plugin.url.js +220 -0
  124. package/{src → stat}/BookNavigator/BookModel.js +0 -0
  125. package/{src → stat}/BookNavigator/BookNavigator.js +151 -104
  126. package/stat/BookNavigator/assets/bookmark-colors.js +15 -0
  127. package/stat/BookNavigator/assets/button-base.js +61 -0
  128. package/stat/BookNavigator/assets/ia-logo.js +17 -0
  129. package/stat/BookNavigator/assets/icon_checkmark.js +6 -0
  130. package/stat/BookNavigator/assets/icon_close.js +3 -0
  131. package/stat/BookNavigator/assets/icon_sort_asc.js +5 -0
  132. package/stat/BookNavigator/assets/icon_sort_desc.js +5 -0
  133. package/stat/BookNavigator/assets/icon_sort_neutral.js +5 -0
  134. package/stat/BookNavigator/assets/icon_volumes.js +11 -0
  135. package/stat/BookNavigator/bookmarks/bookmark-button.js +64 -0
  136. package/stat/BookNavigator/bookmarks/bookmark-edit.js +215 -0
  137. package/stat/BookNavigator/bookmarks/bookmarks-list.js +285 -0
  138. package/stat/BookNavigator/bookmarks/bookmarks-loginCTA.js +28 -0
  139. package/stat/BookNavigator/bookmarks/bookmarks-provider.js +56 -0
  140. package/stat/BookNavigator/bookmarks/ia-bookmarks.js +523 -0
  141. package/{src → stat}/BookNavigator/br-fullscreen-mgr.js +1 -2
  142. package/stat/BookNavigator/delete-modal-actions.js +49 -0
  143. package/stat/BookNavigator/downloads/downloads-provider.js +72 -0
  144. package/stat/BookNavigator/downloads/downloads.js +139 -0
  145. package/stat/BookNavigator/provider-config.js +0 -0
  146. package/stat/BookNavigator/search/a-search-result.js +55 -0
  147. package/stat/BookNavigator/search/search-provider.js +180 -0
  148. package/stat/BookNavigator/search/search-results.js +360 -0
  149. package/stat/BookNavigator/sharing.js +31 -0
  150. package/stat/BookNavigator/visual-adjustments/visual-adjustments-provider.js +94 -0
  151. package/stat/BookNavigator/visual-adjustments/visual-adjustments.js +280 -0
  152. package/stat/BookNavigator/volumes/volumes-provider.js +83 -0
  153. package/stat/BookNavigator/volumes/volumes.js +178 -0
  154. package/stat/BookReader/BookModel.js +518 -0
  155. package/stat/BookReader/DebugConsole.js +54 -0
  156. package/stat/BookReader/DragScrollable.js +233 -0
  157. package/stat/BookReader/ImageCache.js +116 -0
  158. package/stat/BookReader/Mode1Up.js +102 -0
  159. package/stat/BookReader/Mode1UpLit.js +434 -0
  160. package/stat/BookReader/Mode2Up.js +1372 -0
  161. package/stat/BookReader/ModeSmoothZoom.js +177 -0
  162. package/stat/BookReader/ModeThumb.js +344 -0
  163. package/stat/BookReader/Navbar/Navbar.js +310 -0
  164. package/stat/BookReader/PageContainer.js +120 -0
  165. package/stat/BookReader/ReduceSet.js +26 -0
  166. package/stat/BookReader/Toolbar/Toolbar.js +384 -0
  167. package/stat/BookReader/events.js +20 -0
  168. package/stat/BookReader/options.js +324 -0
  169. package/stat/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  170. package/stat/BookReader/utils/classes.js +36 -0
  171. package/stat/BookReader/utils.js +240 -0
  172. package/stat/BookReader.js +2550 -0
  173. package/{src → stat}/BookReaderComponent/BookReaderComponent.js +16 -11
  174. package/stat/assets/icons/1up.svg +12 -0
  175. package/stat/assets/icons/2up.svg +15 -0
  176. package/stat/assets/icons/advance.svg +26 -0
  177. package/stat/assets/icons/chevron-right.svg +1 -0
  178. package/stat/assets/icons/close-circle-dark.svg +1 -0
  179. package/stat/assets/icons/close-circle.svg +1 -0
  180. package/stat/assets/icons/fullscreen.svg +17 -0
  181. package/stat/assets/icons/fullscreen_exit.svg +17 -0
  182. package/stat/assets/icons/hamburger.svg +15 -0
  183. package/stat/assets/icons/left-arrow.svg +12 -0
  184. package/stat/assets/icons/magnify-minus.svg +16 -0
  185. package/stat/assets/icons/magnify-plus.svg +17 -0
  186. package/stat/assets/icons/magnify.svg +15 -0
  187. package/stat/assets/icons/pause.svg +23 -0
  188. package/stat/assets/icons/play.svg +22 -0
  189. package/stat/assets/icons/playback-speed.svg +34 -0
  190. package/stat/assets/icons/read-aloud.svg +22 -0
  191. package/stat/assets/icons/review.svg +22 -0
  192. package/stat/assets/icons/thumbnails.svg +17 -0
  193. package/stat/assets/icons/voice.svg +1 -0
  194. package/stat/assets/icons/volume-full.svg +22 -0
  195. package/stat/assets/images/BRicons.png +0 -0
  196. package/stat/assets/images/BRicons.svg +94 -0
  197. package/stat/assets/images/BRicons_ia.png +0 -0
  198. package/stat/assets/images/back_pages.png +0 -0
  199. package/stat/assets/images/book_bottom_icon.png +0 -0
  200. package/stat/assets/images/book_down_icon.png +0 -0
  201. package/stat/assets/images/book_left_icon.png +0 -0
  202. package/stat/assets/images/book_leftmost_icon.png +0 -0
  203. package/stat/assets/images/book_right_icon.png +0 -0
  204. package/stat/assets/images/book_rightmost_icon.png +0 -0
  205. package/stat/assets/images/book_top_icon.png +0 -0
  206. package/stat/assets/images/book_up_icon.png +0 -0
  207. package/stat/assets/images/books_graphic.svg +177 -0
  208. package/stat/assets/images/booksplit.png +0 -0
  209. package/stat/assets/images/control_pause_icon.png +0 -0
  210. package/stat/assets/images/control_play_icon.png +0 -0
  211. package/stat/assets/images/embed_icon.png +0 -0
  212. package/stat/assets/images/icon-home-ia.png +0 -0
  213. package/stat/assets/images/icon_OL-logo-xs.png +0 -0
  214. package/stat/assets/images/icon_alert-xs.png +0 -0
  215. package/stat/assets/images/icon_book.svg +12 -0
  216. package/stat/assets/images/icon_bookmark.svg +12 -0
  217. package/stat/assets/images/icon_close-pop.png +0 -0
  218. package/stat/assets/images/icon_download.png +0 -0
  219. package/stat/assets/images/icon_gear.svg +14 -0
  220. package/stat/assets/images/icon_hamburger.svg +20 -0
  221. package/stat/assets/images/icon_home.png +0 -0
  222. package/stat/assets/images/icon_home.svg +21 -0
  223. package/stat/assets/images/icon_home_ia.png +0 -0
  224. package/stat/assets/images/icon_indicator.png +0 -0
  225. package/stat/assets/images/icon_info.svg +11 -0
  226. package/stat/assets/images/icon_one_page.svg +8 -0
  227. package/stat/assets/images/icon_pause.svg +1 -0
  228. package/stat/assets/images/icon_play.svg +1 -0
  229. package/stat/assets/images/icon_playback-rate.svg +15 -0
  230. package/stat/assets/images/icon_return.png +0 -0
  231. package/stat/assets/images/icon_search_button.svg +8 -0
  232. package/stat/assets/images/icon_share.svg +9 -0
  233. package/stat/assets/images/icon_skip-ahead.svg +6 -0
  234. package/stat/assets/images/icon_skip-back.svg +13 -0
  235. package/stat/assets/images/icon_speaker.svg +18 -0
  236. package/stat/assets/images/icon_speaker_open.svg +10 -0
  237. package/stat/assets/images/icon_thumbnails.svg +12 -0
  238. package/stat/assets/images/icon_toc.svg +5 -0
  239. package/stat/assets/images/icon_two_pages.svg +9 -0
  240. package/stat/assets/images/icon_zoomer.png +0 -0
  241. package/stat/assets/images/loading.gif +0 -0
  242. package/stat/assets/images/logo_icon.png +0 -0
  243. package/stat/assets/images/marker_chap-off.png +0 -0
  244. package/stat/assets/images/marker_chap-off.svg +11 -0
  245. package/stat/assets/images/marker_chap-off_ia.png +0 -0
  246. package/stat/assets/images/marker_chap-on.png +0 -0
  247. package/stat/assets/images/marker_chap-on.svg +11 -0
  248. package/stat/assets/images/marker_srch-on.svg +11 -0
  249. package/stat/assets/images/marker_srchchap-off.png +0 -0
  250. package/stat/assets/images/marker_srchchap-on.png +0 -0
  251. package/stat/assets/images/nav_control-dn.png +0 -0
  252. package/stat/assets/images/nav_control-dn_ia.png +0 -0
  253. package/stat/assets/images/nav_control-up.png +0 -0
  254. package/stat/assets/images/nav_control-up_ia.png +0 -0
  255. package/stat/assets/images/nav_control.png +0 -0
  256. package/stat/assets/images/one_page_mode_icon.png +0 -0
  257. package/stat/assets/images/paper-badge.png +0 -0
  258. package/stat/assets/images/print_icon.png +0 -0
  259. package/stat/assets/images/progressbar.gif +0 -0
  260. package/stat/assets/images/right_edges.png +0 -0
  261. package/stat/assets/images/slider.png +0 -0
  262. package/stat/assets/images/slider_ia.png +0 -0
  263. package/stat/assets/images/thumbnail_mode_icon.png +0 -0
  264. package/stat/assets/images/transparent.png +0 -0
  265. package/stat/assets/images/two_page_mode_icon.png +0 -0
  266. package/stat/assets/images/zoom_in_icon.png +0 -0
  267. package/stat/assets/images/zoom_out_icon.png +0 -0
  268. package/stat/css/BookReader.scss +89 -0
  269. package/stat/css/_BRBookmarks.scss +29 -0
  270. package/stat/css/_BRComponent.scss +13 -0
  271. package/stat/css/_BRfloat.scss +197 -0
  272. package/stat/css/_BRicon.scss +48 -0
  273. package/stat/css/_BRmain.scss +251 -0
  274. package/stat/css/_BRnav.scss +359 -0
  275. package/stat/css/_BRpages.scss +139 -0
  276. package/stat/css/_BRsearch.scss +226 -0
  277. package/stat/css/_BRtoolbar.scss +84 -0
  278. package/stat/css/_BRvendor.scss +5 -0
  279. package/stat/css/_MobileNav.scss +194 -0
  280. package/stat/css/_TextSelection.scss +32 -0
  281. package/stat/css/_colorbox.scss +52 -0
  282. package/stat/css/_controls.scss +253 -0
  283. package/stat/css/_icons.scss +121 -0
  284. package/stat/jquery-wrapper.js +4 -0
  285. package/stat/plugins/plugin.archive_analytics.js +86 -0
  286. package/stat/plugins/plugin.autoplay.js +129 -0
  287. package/stat/plugins/plugin.chapters.js +248 -0
  288. package/stat/plugins/plugin.iframe.js +48 -0
  289. package/stat/plugins/plugin.mobile_nav.js +288 -0
  290. package/stat/plugins/plugin.resume.js +68 -0
  291. package/stat/plugins/plugin.text_selection.js +291 -0
  292. package/{src → stat}/plugins/plugin.url.js +4 -4
  293. package/stat/plugins/plugin.vendor-fullscreen.js +247 -0
  294. package/stat/plugins/search/plugin.search.js +439 -0
  295. package/stat/plugins/search/view.js +439 -0
  296. package/stat/plugins/tts/AbstractTTSEngine.js +249 -0
  297. package/stat/plugins/tts/FestivalTTSEngine.js +169 -0
  298. package/stat/plugins/tts/PageChunk.js +107 -0
  299. package/stat/plugins/tts/PageChunkIterator.js +163 -0
  300. package/stat/plugins/tts/WebTTSEngine.js +357 -0
  301. package/stat/plugins/tts/plugin.tts.js +357 -0
  302. package/stat/plugins/tts/tooltip_dict.js +15 -0
  303. package/stat/plugins/tts/utils.js +91 -0
  304. package/stat/util/browserSniffing.js +30 -0
  305. package/stat/util/debouncer.js +26 -0
  306. package/stat/util/docCookies.js +67 -0
  307. package/stat/util/strings.js +34 -0
  308. package/tests/e2e/README.md +37 -0
  309. package/tests/e2e/autoplay.test.js +2 -2
  310. package/tests/e2e/base.test.js +5 -7
  311. package/tests/e2e/helpers/base.js +8 -3
  312. package/tests/e2e/helpers/debug.js +1 -1
  313. package/tests/e2e/helpers/desktopSearch.js +1 -1
  314. package/tests/e2e/helpers/mobileSearch.js +3 -3
  315. package/tests/e2e/helpers/params.js +17 -0
  316. package/tests/e2e/rightToLeft.test.js +4 -5
  317. package/tests/e2e/viewmode.test.js +30 -31
  318. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +3 -3
  319. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +176 -0
  320. package/tests/{BookReader → jest/BookReader}/DebugConsole.test.js +1 -1
  321. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  322. package/tests/jest/BookReader/Mode1UpLit.test.js +87 -0
  323. package/tests/{BookReader → jest/BookReader}/Mode2Up.test.js +5 -7
  324. package/tests/jest/BookReader/ModeSmoothZoom.test.js +149 -0
  325. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  326. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +7 -7
  327. package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +74 -2
  328. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  329. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
  330. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  331. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  332. package/tests/jest/BookReader/utils.test.js +136 -0
  333. package/tests/jest/BookReader.keyboard.test.js +190 -0
  334. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
  335. package/tests/{BookReader.test.js → jest/BookReader.test.js} +20 -4
  336. package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
  337. package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +2 -2
  338. package/tests/{plugins → jest/plugins}/plugin.chapters.test.js +8 -8
  339. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
  340. package/tests/{plugins → jest/plugins}/plugin.mobile_nav.test.js +5 -5
  341. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
  342. package/tests/{plugins → jest/plugins}/plugin.text_selection.test.js +14 -24
  343. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  344. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +12 -5
  345. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +6 -6
  346. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +3 -3
  347. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  348. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  349. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  350. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +1 -1
  351. package/tests/{plugins → jest/plugins}/tts/utils.test.js +3 -3
  352. package/tests/jest/plugins/url/UrlPlugin.test.js +175 -0
  353. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +33 -14
  354. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  355. package/tests/{util → jest/util}/docCookies.test.js +1 -1
  356. package/tests/{util → jest/util}/strings.test.js +1 -1
  357. package/tests/{utils.js → jest/utils.js} +38 -0
  358. package/tests/karma/BookNavigator/book-navigator.test.js +485 -0
  359. package/tests/karma/BookNavigator/bookmarks/bookmark-button.test.js +44 -0
  360. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +1 -3
  361. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +1 -2
  362. package/tests/karma/BookNavigator/downloads/downloads-provider.test.js +67 -0
  363. package/tests/karma/BookNavigator/downloads/downloads.test.js +54 -0
  364. package/tests/karma/BookNavigator/search/search-provider.test.js +123 -0
  365. package/tests/karma/BookNavigator/{search-results.test.js → search/search-results.test.js} +1 -4
  366. package/tests/karma/BookNavigator/sharing/sharing-provider.test.js +49 -0
  367. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -2
  368. package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +184 -0
  369. package/tests/karma/BookNavigator/volumes/volumes.test.js +98 -0
  370. package/webpack.config.js +11 -5
  371. package/.babelrc +0 -12
  372. package/.dependabot/config.yml +0 -6
  373. package/.testcaferc.json +0 -5
  374. package/BookReader/BookReader.js.LICENSE.txt +0 -72
  375. package/BookReader/bookreader-component-bundle.js +0 -1450
  376. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  377. package/BookReader/bookreader-component-bundle.js.map +0 -1
  378. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  379. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  380. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  381. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +0 -27
  382. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  383. package/src/BookNavigator/assets/book-loader.js +0 -27
  384. package/src/ItemNavigator/ItemNavigator.js +0 -372
  385. package/src/ItemNavigator/providers/sharing.js +0 -29
  386. package/src/dragscrollable-br.js +0 -261
  387. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  388. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  389. package/tests/BookReader/Mode1Up.test.js +0 -164
  390. package/tests/BookReader/utils.test.js +0 -109
  391. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
@@ -0,0 +1,123 @@
1
+ import { expect, fixtureCleanup, fixtureSync } from '@open-wc/testing';
2
+ import sinon from 'sinon';
3
+ import searchProvider from '../../../../src/BookNavigator/search/search-provider';
4
+
5
+ afterEach(() => {
6
+ sinon.restore();
7
+ fixtureCleanup();
8
+ });
9
+
10
+ describe('Search Provider', () => {
11
+ describe('constructor', () => {
12
+ const provider = new searchProvider({
13
+ onProviderChange: sinon.fake(),
14
+ bookreader: {}
15
+ });
16
+
17
+ expect(provider.bookreader).to.exist;
18
+ expect(provider.onProviderChange).to.exist;
19
+ expect(provider.id).to.equal('search');
20
+ expect(provider.icon).to.exist;
21
+ expect(fixtureSync(provider.icon).tagName).to.equal('IA-ICON-SEARCH');
22
+ expect(provider.label).to.equal('Search inside');
23
+ expect(provider.menuDetails).to.exist;
24
+ expect(provider.component).to.exist;
25
+ });
26
+ describe('BR calls', () => {
27
+ it('`advanceToPage', () => {
28
+ const provider = new searchProvider({
29
+ onProviderChange: sinon.fake(),
30
+ bookreader: {
31
+ leafNumToIndex: sinon.fake(),
32
+ _searchPluginGoToResult: sinon.fake()
33
+ }
34
+ });
35
+
36
+ provider.advanceToPage(1);
37
+ expect(provider?.bookreader.leafNumToIndex.callCount).to.equal(1);
38
+ expect(provider?.bookreader._searchPluginGoToResult.callCount).to.equal(1);
39
+ });
40
+ });
41
+ describe('Search request life cycles', () => {
42
+ it('Event: catches `BookReader:SearchStarted`', async() => {
43
+ const provider = new searchProvider({
44
+ onProviderChange: sinon.fake(),
45
+ bookreader: {}
46
+ });
47
+ sinon.spy(provider, 'updateMenu');
48
+ window.dispatchEvent(new CustomEvent('BookReader:SearchStarted', { detail: { props: { term: 'foo' }}}));
49
+ expect(provider.updateMenu.callCount).to.equal(1);
50
+ });
51
+ it('Event: catches `BookReader:SearchCallback`', async() => {
52
+ const provider = new searchProvider({
53
+ onProviderChange: sinon.fake(),
54
+ bookreader: {}
55
+ });
56
+ sinon.spy(provider, 'updateMenu');
57
+ const brStub = {};
58
+ window.dispatchEvent(new CustomEvent('BookReader:SearchCallback', { detail: { props: { instance: brStub, results: { matches: []} }}}));
59
+ expect(provider.updateMenu.callCount).to.equal(1);
60
+ expect(provider.bookreader).to.equal(brStub);
61
+ });
62
+ it('Event: catches `BookReader:SearchCallbackEmpty`', async() => {
63
+ const provider = new searchProvider({
64
+ onProviderChange: sinon.fake(),
65
+ bookreader: {}
66
+ });
67
+ sinon.spy(provider, 'onSearchRequestError');
68
+ sinon.spy(provider, 'updateMenu');
69
+ const brStub = {};
70
+ window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackEmpty', { detail: { props: { instance: brStub }}}));
71
+ expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal('noResults');
72
+ expect(provider.updateMenu.callCount).to.equal(1);
73
+ expect(provider.bookreader).to.equal(brStub);
74
+ });
75
+ it('Event: catches `BookReader:SearchCallbackNotIndexed`', async() => {
76
+ const provider = new searchProvider({
77
+ onProviderChange: sinon.fake(),
78
+ bookreader: {}
79
+ });
80
+ const brStub = {};
81
+ sinon.spy(provider, 'onSearchRequestError');
82
+ sinon.spy(provider, 'updateMenu');
83
+ window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackNotIndexed', { detail: { props: { instance: brStub }}}));
84
+ expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal('notIndexed');
85
+ expect(provider.updateMenu.callCount).to.equal(1);
86
+ expect(provider.bookreader).to.equal(brStub);
87
+ });
88
+ it('Event: catches `BookReader:SearchCallbackError`', async() => {
89
+ const provider = new searchProvider({
90
+ onProviderChange: sinon.fake(),
91
+ bookreader: {}
92
+ });
93
+ sinon.spy(provider, 'onSearchRequestError');
94
+ sinon.spy(provider, 'updateMenu');
95
+ const brStub = {};
96
+ window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackError', { detail: { props: { instance: brStub }}}));
97
+ expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal(undefined);
98
+ expect(provider.updateMenu.callCount).to.equal(1);
99
+ expect(provider.bookreader).to.equal(brStub);
100
+ });
101
+ it('Event: catches `component@resultSelected` - user clicks result in side panel - & turns page', async() => {
102
+ const provider = new searchProvider({
103
+ onProviderChange: sinon.fake(),
104
+ bookreader: {
105
+ leafNumToIndex: sinon.fake(),
106
+ _searchPluginGoToResult: sinon.fake()
107
+ }
108
+ });
109
+ sinon.spy(provider, 'advanceToPage');
110
+
111
+ const searchResultStub = {
112
+ match: { par: [{ text: 'foo', page: 3 }] },
113
+ };
114
+ fixtureSync(provider.component).dispatchEvent(
115
+ new CustomEvent('resultSelected',
116
+ { detail: searchResultStub })
117
+ );
118
+
119
+ expect(provider.advanceToPage.callCount).to.equal(1);
120
+ expect(provider.bookreader._searchPluginGoToResult.callCount).to.equal(1);
121
+ });
122
+ });
123
+ });
@@ -5,15 +5,12 @@ import {
5
5
  oneEvent,
6
6
  } from '@open-wc/testing';
7
7
  import sinon from 'sinon';
8
- import { IABookSearchResults } from '../../../src/BookNavigator/search/search-results.js';
9
- customElements.define('ia-book-search-results', IABookSearchResults);
8
+ import { IABookSearchResults } from '../../../../src/BookNavigator/search/search-results.js';
10
9
 
11
10
  const container = (results = [], query = '') => (
12
11
  html`<ia-book-search-results .results=${results} .query=${query}></ia-book-search-results>`
13
12
  );
14
13
 
15
- console.log("ia-book-search-results-test")
16
-
17
14
  const searchQuery = 'Bristol';
18
15
 
19
16
  const results = [{
@@ -0,0 +1,49 @@
1
+ import { expect, fixtureSync } from '@open-wc/testing';
2
+ import sinon from 'sinon';
3
+ import SharingProvider from '../../../../src/BookNavigator/sharing.js';
4
+
5
+ afterEach(() => {
6
+ sinon.restore();
7
+ });
8
+
9
+ const item = {
10
+ metadata: {
11
+ identifier: 'stubby-id',
12
+ creator: 'mr. big',
13
+ title: 'Stubby title',
14
+ }
15
+ };
16
+
17
+ const baseHost = 'foo.org';
18
+ const subPrefix = 'beep-boop_12 4 5';
19
+
20
+ describe('Sharing Provider', () => {
21
+ describe('constructor', () => {
22
+ const provider = new SharingProvider({
23
+ item,
24
+ baseHost,
25
+ bookreader: {
26
+ options: { subPrefix }
27
+ }
28
+ });
29
+
30
+ expect(provider.id).to.equal('share');
31
+ expect(provider.icon).to.exist;
32
+ expect(provider.label).to.equal('Share this book');
33
+ expect(fixtureSync(provider.component).tagName).to.contains('IA-SHARING-OPTIONS');
34
+ });
35
+
36
+ describe('Handles being a sub file/volume', () => {
37
+ it('encodes the subprefix if it has one', async () => {
38
+ const provider = new SharingProvider({
39
+ item,
40
+ baseHost,
41
+ bookreader: {
42
+ options: { subPrefix }
43
+ }
44
+ });
45
+
46
+ expect(fixtureSync(provider.component).fileSubPrefix).to.equal(subPrefix);
47
+ });
48
+ });
49
+ });
@@ -7,8 +7,6 @@ import {
7
7
  import sinon from 'sinon';
8
8
  import { IABookVisualAdjustments } from '../../../src/BookNavigator/visual-adjustments/visual-adjustments.js';
9
9
 
10
- customElements.define('ia-book-visual-adjustments', IABookVisualAdjustments);
11
-
12
10
  const options = [{
13
11
  id: 'contrast',
14
12
  name: 'Adjust contrast',
@@ -0,0 +1,184 @@
1
+ import { expect, fixture, fixtureCleanup, fixtureSync } from '@open-wc/testing';
2
+ import sinon from 'sinon';
3
+ import volumesProvider from '../../../../src/BookNavigator/volumes/volumes-provider';
4
+
5
+ const brOptions = {
6
+ "options": {
7
+ "enableMultipleBooks": true,
8
+ "multipleBooksList": {
9
+ "by_subprefix": {
10
+ "/details/SubBookTest": {
11
+ "url_path": "/details/SubBookTest",
12
+ "file_subprefix": "book1/GPORFP",
13
+ "orig_sort": 1,
14
+ "title": "book1/GPORFP.pdf",
15
+ "file_source": "/book1/GPORFP_jp2.zip"
16
+ },
17
+ "/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive": {
18
+ "url_path": "/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive",
19
+ "file_subprefix": "subdir/book2/brewster_kahle_internet_archive",
20
+ "orig_sort": 2,
21
+ "title": "subdir/book2/brewster_kahle_internet_archive.pdf",
22
+ "file_source": "/subdir/book2/brewster_kahle_internet_archive_jp2.zip"
23
+ },
24
+ "/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume": {
25
+ "url_path": "/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
26
+ "file_subprefix": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
27
+ "orig_sort": 3,
28
+ "title": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume.pdf",
29
+ "file_source": "/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume_jp2.zip"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ };
35
+
36
+ afterEach(() => {
37
+ sinon.restore();
38
+ fixtureCleanup();
39
+ });
40
+
41
+ describe('Volumes Provider', () => {
42
+ it('constructor', () => {
43
+ const onProviderChange = sinon.fake();
44
+ const baseHost = "https://archive.org";
45
+ const provider = new volumesProvider({
46
+ baseHost,
47
+ bookreader: brOptions,
48
+ onProviderChange
49
+ });
50
+
51
+ const files = brOptions.options.multipleBooksList.by_subprefix;
52
+ const volumeCount = Object.keys(files).length;
53
+
54
+ expect(provider.onProviderChange).to.equal(onProviderChange);
55
+ expect(provider.id).to.equal('volumes');
56
+ expect(provider.icon).to.exist;
57
+ expect(fixtureSync(provider.icon).tagName).to.equal('svg');
58
+ expect(provider.label).to.equal(`Viewable files (${volumeCount})`);
59
+ expect(provider.viewableFiles).to.exist;
60
+ expect(provider.viewableFiles.length).to.equal(3);
61
+
62
+ expect(provider.component.hostUrl).to.exist;
63
+ expect(provider.component.hostUrl).to.equal(baseHost);
64
+ expect(provider.component).to.exist;
65
+ });
66
+
67
+ it('sorting cycles - render sort actionButton', async () => {
68
+ const onProviderChange = sinon.fake();
69
+ const baseHost = "https://archive.org";
70
+ const provider = new volumesProvider({
71
+ baseHost,
72
+ bookreader: brOptions,
73
+ onProviderChange
74
+ });
75
+
76
+ expect(provider.sortOrderBy).to.equal("default");
77
+
78
+ provider.sortVolumes("title_asc");
79
+ expect(provider.sortOrderBy).to.equal("title_asc");
80
+ expect(provider.sortButton.getHTML()).includes("sort-by asc-icon");
81
+
82
+ provider.sortVolumes("title_desc");
83
+ expect(provider.sortOrderBy).to.equal("title_desc");
84
+ expect(provider.sortButton.getHTML()).includes("sort-by desc-icon");
85
+
86
+ provider.sortVolumes("default");
87
+ expect(provider.sortOrderBy).to.equal("default");
88
+ expect(provider.sortButton.getHTML()).includes("sort-by neutral-icon");
89
+ });
90
+
91
+ it('sort volumes in initial order', async () => {
92
+ const onProviderChange = sinon.fake();
93
+ const baseHost = "https://archive.org";
94
+ const provider = new volumesProvider({
95
+ baseHost,
96
+ bookreader: brOptions,
97
+ onProviderChange
98
+ });
99
+
100
+ const parsedFiles = brOptions.options.multipleBooksList.by_subprefix;
101
+ const files = Object.keys(parsedFiles).map(item => parsedFiles[item]).sort((a, b) => a.orig_sort - b.orig_sort);
102
+ const origSortTitles = files.map(item => item.title);
103
+
104
+ provider.sortVolumes("default");
105
+
106
+ expect(provider.sortOrderBy).to.equal("default");
107
+ expect(provider.actionButton).to.exist;
108
+
109
+ const providerFileTitles = provider.viewableFiles.map(item => item.title);
110
+ // use `.eql` for "lose equality" in order to deeply compare values.
111
+ expect(providerFileTitles).to.eql([...origSortTitles]);
112
+ });
113
+
114
+ it('sort volumes in ascending title order', async () => {
115
+ const onProviderChange = sinon.fake();
116
+ const baseHost = "https://archive.org";
117
+ const provider = new volumesProvider({
118
+ baseHost,
119
+ bookreader: brOptions,
120
+ onProviderChange
121
+ });
122
+
123
+ const parsedFiles = brOptions.options.multipleBooksList.by_subprefix;
124
+ const files = Object.keys(parsedFiles).map(item => parsedFiles[item]);
125
+ const ascendingTitles = files.map(item => item.title).sort((a, b) => a.localeCompare(b));
126
+
127
+ provider.sortVolumes("title_asc");
128
+
129
+ expect(provider.sortOrderBy).to.equal("title_asc");
130
+ expect(provider.actionButton).to.exist;
131
+
132
+ const providerFileTitles = provider.viewableFiles.map(item => item.title);
133
+ // use `.eql` for "lose equality" in order to deeply compare values.
134
+ expect(providerFileTitles).to.eql([...ascendingTitles]);
135
+ });
136
+
137
+ it('sort volumes in descending title order', async () => {
138
+ const onProviderChange = sinon.fake();
139
+ const baseHost = "https://archive.org";
140
+ const provider = new volumesProvider({
141
+ baseHost,
142
+ bookreader: brOptions,
143
+ onProviderChange
144
+ });
145
+ provider.isSortAscending = false;
146
+
147
+ const parsedFiles = brOptions.options.multipleBooksList.by_subprefix;
148
+ const files = Object.keys(parsedFiles).map(item => parsedFiles[item]);
149
+ const descendingTitles = files.map(item => item.title).sort((a, b) => b.localeCompare(a));
150
+
151
+ provider.sortVolumes("title_desc");
152
+
153
+ expect(provider.sortOrderBy).to.equals("title_desc");
154
+ expect(provider.actionButton).to.exist;
155
+
156
+ const providerFileTitles = provider.viewableFiles.map(item => item.title);
157
+ // use `.eql` for "lose equality" in order to deeply compare values.
158
+ expect(providerFileTitles).to.eql([...descendingTitles]);
159
+ });
160
+
161
+ describe('Sorting icons', () => {
162
+ it('has 3 icons', async () => {
163
+ const onProviderChange = sinon.fake();
164
+ const baseHost = "https://archive.org";
165
+ const provider = new volumesProvider({
166
+ baseHost,
167
+ bookreader: brOptions,
168
+ onProviderChange
169
+ });
170
+ provider.sortOrderBy = 'default';
171
+
172
+ const origSortButton = await fixture(provider.sortButton);
173
+ expect(origSortButton.classList.contains('neutral-icon')).to.be.true;
174
+
175
+ provider.sortOrderBy = 'title_asc';
176
+ const ascButton = await fixture(provider.sortButton);
177
+ expect(ascButton.classList.contains('asc-icon')).to.be.true;
178
+
179
+ provider.sortOrderBy = 'title_desc';
180
+ const descButton = await fixture(provider.sortButton);
181
+ expect(descButton.classList.contains('desc-icon')).to.be.true;
182
+ });
183
+ });
184
+ });
@@ -0,0 +1,98 @@
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
+ });
package/webpack.config.js CHANGED
@@ -4,7 +4,7 @@ const webpack = require('webpack');
4
4
 
5
5
  /** @type {webpack.Configuration} */
6
6
  const shared = {
7
- mode: 'production',
7
+ mode: 'development',
8
8
 
9
9
  watchOptions: {
10
10
  ignored: ['BookReader/**', 'node_modules/**', 'tests/**']
@@ -14,7 +14,11 @@ const shared = {
14
14
 
15
15
  module: {
16
16
  rules: [
17
- { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
17
+ {
18
+ test: /\.js$/,
19
+ exclude: /node_modules[/\\](?!(lit-element|lit-html)[/\\]).*/,
20
+ loader: "babel-loader",
21
+ }
18
22
  ]
19
23
  },
20
24
 
@@ -31,6 +35,9 @@ module.exports = [
31
35
 
32
36
  // Output file -> srcfile
33
37
  entry: {
38
+ // Polyfill bundles
39
+ 'webcomponents-bundle.js': { import: '@webcomponents/webcomponentsjs/webcomponents-bundle.js' },
40
+
34
41
  // BookReader
35
42
  'BookReader.js': './src/BookReader.js',
36
43
 
@@ -39,15 +46,14 @@ module.exports = [
39
46
  'plugins/plugin.autoplay.js': { import: './src/plugins/plugin.autoplay.js', dependOn: 'BookReader.js' },
40
47
  'plugins/plugin.chapters.js': { import: './src/plugins/plugin.chapters.js', dependOn: 'BookReader.js' },
41
48
  'plugins/plugin.iframe.js': { import: './src/plugins/plugin.iframe.js', dependOn: 'BookReader.js' },
42
- 'plugins/plugin.menu_toggle.js': { import: './src/plugins/menu_toggle/plugin.menu_toggle.js', dependOn: 'BookReader.js' },
43
49
  'plugins/plugin.mobile_nav.js': { import: './src/plugins/plugin.mobile_nav.js', dependOn: 'BookReader.js' },
44
50
  'plugins/plugin.resume.js': { import: './src/plugins/plugin.resume.js', dependOn: 'BookReader.js' },
45
51
  'plugins/plugin.search.js': { import: './src/plugins/search/plugin.search.js', dependOn: 'BookReader.js' },
46
52
  'plugins/plugin.text_selection.js': { import: './src/plugins/plugin.text_selection.js', dependOn: 'BookReader.js' },
47
53
  'plugins/plugin.tts.js': { import: './src/plugins/tts/plugin.tts.js', dependOn: 'BookReader.js' },
48
- 'plugins/plugin.url.js': { import: './src/plugins/plugin.url.js', dependOn: 'BookReader.js' },
54
+ 'plugins/plugin.url.js': { import: './src/plugins/url/plugin.url.js', dependOn: 'BookReader.js' },
49
55
  'plugins/plugin.vendor-fullscreen.js': { import: './src/plugins/plugin.vendor-fullscreen.js', dependOn: 'BookReader.js' },
50
- 'bookreader-component-bundle.js': { import: './src/BookReaderComponent/BookReaderComponent.js', dependOn: 'BookReader.js' }
56
+ 'ia-bookreader-bundle.js': { import: './src/ia-bookreader/ia-bookreader.js', dependOn: 'BookReader.js' }
51
57
  },
52
58
 
53
59
  externals: {
package/.babelrc DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "presets": [
3
- [
4
- "@babel/preset-env",
5
- {
6
- "targets": "> 2%, ie 11, edge 14, samsung > 9, OperaMini all, UCAndroid > 12",
7
- "useBuiltIns": "usage",
8
- "corejs": 3
9
- }
10
- ]
11
- ]
12
- }
@@ -1,6 +0,0 @@
1
- version: 1
2
-
3
- update_configs:
4
- - package_manager: "javascript"
5
- directory: "/"
6
- update_schedule: "monthly"
package/.testcaferc.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "appCommand": "npm run serve",
3
- "browsers": ["chrome:headless", "firefox:headless"],
4
- "src": ["tests/e2e/**/*test.js"]
5
- }
@@ -1,72 +0,0 @@
1
- /*!
2
- Colorbox 1.6.4
3
- license: MIT
4
- http://www.jacklmoore.com/colorbox
5
- */
6
-
7
- /*!
8
- * jQuery Color Animations v2.1.2
9
- * https://github.com/jquery/jquery-color
10
- *
11
- * Copyright 2014 jQuery Foundation and other contributors
12
- * Released under the MIT license.
13
- * http://jquery.org/license
14
- *
15
- * Date: Wed Jan 16 08:47:09 2013 -0600
16
- */
17
-
18
- /*!
19
- * jQuery UI Effects 1.12.1
20
- * http://jqueryui.com
21
- *
22
- * Copyright jQuery Foundation and other contributors
23
- * Released under the MIT license.
24
- * http://jquery.org/license
25
- */
26
-
27
- /*!
28
- * jQuery UI Keycode 1.12.1
29
- * http://jqueryui.com
30
- *
31
- * Copyright jQuery Foundation and other contributors
32
- * Released under the MIT license.
33
- * http://jquery.org/license
34
- */
35
-
36
- /*!
37
- * jQuery UI Mouse 1.12.1
38
- * http://jqueryui.com
39
- *
40
- * Copyright jQuery Foundation and other contributors
41
- * Released under the MIT license.
42
- * http://jquery.org/license
43
- */
44
-
45
- /*!
46
- * jQuery UI Slider 1.12.1
47
- * http://jqueryui.com
48
- *
49
- * Copyright jQuery Foundation and other contributors
50
- * Released under the MIT license.
51
- * http://jquery.org/license
52
- */
53
-
54
- /*!
55
- * jQuery UI Touch Punch 0.2.3
56
- *
57
- * Copyright 2011–2014, Dave Furfero
58
- * Dual licensed under the MIT or GPL Version 2 licenses.
59
- *
60
- * Depends:
61
- * jquery.ui.widget.js
62
- * jquery.ui.mouse.js
63
- */
64
-
65
- /*!
66
- * jQuery UI Widget 1.12.1
67
- * http://jqueryui.com
68
- *
69
- * Copyright jQuery Foundation and other contributors
70
- * Released under the MIT license.
71
- * http://jquery.org/license
72
- */