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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/.eslintrc.js +21 -19
  2. package/.github/workflows/node.js.yml +81 -7
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +505 -1442
  6. package/BookReader/BookReader.js +2 -21564
  7. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1782 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  11. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  12. package/BookReader/icons/1up.svg +1 -12
  13. package/BookReader/icons/2up.svg +1 -15
  14. package/BookReader/icons/advance.svg +3 -26
  15. package/BookReader/icons/chevron-right.svg +1 -1
  16. package/BookReader/icons/close-circle-dark.svg +1 -0
  17. package/BookReader/icons/close-circle.svg +1 -1
  18. package/BookReader/icons/fullscreen.svg +1 -17
  19. package/BookReader/icons/fullscreen_exit.svg +1 -17
  20. package/BookReader/icons/hamburger.svg +1 -15
  21. package/BookReader/icons/left-arrow.svg +1 -12
  22. package/BookReader/icons/magnify-minus.svg +1 -16
  23. package/BookReader/icons/magnify-plus.svg +1 -17
  24. package/BookReader/icons/magnify.svg +1 -15
  25. package/BookReader/icons/pause.svg +1 -23
  26. package/BookReader/icons/play.svg +1 -22
  27. package/BookReader/icons/playback-speed.svg +1 -34
  28. package/BookReader/icons/read-aloud.svg +1 -22
  29. package/BookReader/icons/review.svg +3 -22
  30. package/BookReader/icons/thumbnails.svg +1 -17
  31. package/BookReader/icons/voice.svg +1 -0
  32. package/BookReader/icons/volume-full.svg +1 -22
  33. package/BookReader/images/BRicons.svg +5 -94
  34. package/BookReader/images/books_graphic.svg +1 -177
  35. package/BookReader/images/icon_book.svg +1 -12
  36. package/BookReader/images/icon_bookmark.svg +1 -12
  37. package/BookReader/images/icon_gear.svg +1 -14
  38. package/BookReader/images/icon_hamburger.svg +1 -20
  39. package/BookReader/images/icon_home.svg +1 -21
  40. package/BookReader/images/icon_info.svg +1 -11
  41. package/BookReader/images/icon_one_page.svg +1 -8
  42. package/BookReader/images/icon_pause.svg +1 -1
  43. package/BookReader/images/icon_play.svg +1 -1
  44. package/BookReader/images/icon_playback-rate.svg +1 -15
  45. package/BookReader/images/icon_search_button.svg +1 -8
  46. package/BookReader/images/icon_share.svg +1 -9
  47. package/BookReader/images/icon_skip-ahead.svg +1 -6
  48. package/BookReader/images/icon_skip-back.svg +2 -13
  49. package/BookReader/images/icon_speaker.svg +1 -18
  50. package/BookReader/images/icon_speaker_open.svg +1 -10
  51. package/BookReader/images/icon_thumbnails.svg +1 -12
  52. package/BookReader/images/icon_toc.svg +1 -5
  53. package/BookReader/images/icon_two_pages.svg +1 -9
  54. package/BookReader/images/marker_chap-off.svg +1 -11
  55. package/BookReader/images/marker_chap-on.svg +1 -11
  56. package/BookReader/images/marker_srch-on.svg +1 -11
  57. package/BookReader/images/unviewable_page.png +0 -0
  58. package/BookReader/jquery-3.js +2 -0
  59. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  60. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  61. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  62. package/BookReader/plugins/plugin.autoplay.js +1 -165
  63. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  64. package/BookReader/plugins/plugin.chapters.js +22 -301
  65. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  66. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  67. package/BookReader/plugins/plugin.iframe.js +1 -74
  68. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  69. package/BookReader/plugins/plugin.iiif.js +2 -0
  70. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  71. package/BookReader/plugins/plugin.resume.js +1 -368
  72. package/BookReader/plugins/plugin.resume.js.map +1 -1
  73. package/BookReader/plugins/plugin.search.js +2 -1420
  74. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  75. package/BookReader/plugins/plugin.search.js.map +1 -1
  76. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  77. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  78. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  79. package/BookReader/plugins/plugin.tts.js +2 -9193
  80. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  81. package/BookReader/plugins/plugin.tts.js.map +1 -1
  82. package/BookReader/plugins/plugin.url.js +1 -269
  83. package/BookReader/plugins/plugin.url.js.map +1 -1
  84. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  85. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  86. package/BookReader/webcomponents-bundle.js +3 -0
  87. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  88. package/BookReader/webcomponents-bundle.js.map +1 -0
  89. package/BookReaderDemo/BookReaderDemo.css +18 -19
  90. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  91. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  92. package/BookReaderDemo/IADemoBr.js +144 -0
  93. package/BookReaderDemo/demo-advanced.html +2 -2
  94. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  95. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  96. package/BookReaderDemo/demo-fullscreen.html +2 -4
  97. package/BookReaderDemo/demo-iiif.html +99 -12
  98. package/BookReaderDemo/demo-internetarchive.html +214 -18
  99. package/BookReaderDemo/demo-multiple.html +2 -1
  100. package/BookReaderDemo/demo-preview-pages.html +526 -525
  101. package/BookReaderDemo/demo-simple.html +2 -1
  102. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
  103. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  104. package/BookReaderDemo/immersion-1up.html +2 -2
  105. package/BookReaderDemo/immersion-mode.html +2 -4
  106. package/BookReaderDemo/toggle_controls.html +3 -2
  107. package/BookReaderDemo/view_mode.html +2 -1
  108. package/BookReaderDemo/viewmode-cycle.html +2 -3
  109. package/CHANGELOG.md +595 -33
  110. package/README.md +14 -1
  111. package/babel.config.js +20 -0
  112. package/codecov.yml +6 -0
  113. package/index.html +5 -2
  114. package/jsconfig.json +19 -0
  115. package/netlify.toml +9 -0
  116. package/package.json +70 -62
  117. package/renovate.json +52 -0
  118. package/scripts/preversion.js +0 -1
  119. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  120. package/src/BookNavigator/assets/button-base.js +10 -2
  121. package/src/BookNavigator/assets/ia-logo.js +17 -0
  122. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  123. package/src/BookNavigator/assets/icon_close.js +1 -1
  124. package/src/BookNavigator/book-navigator.js +590 -0
  125. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  126. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  127. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  128. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
  129. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  130. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  131. package/src/BookNavigator/delete-modal-actions.js +1 -1
  132. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  133. package/src/BookNavigator/downloads/downloads.js +29 -25
  134. package/src/BookNavigator/search/search-provider.js +80 -28
  135. package/src/BookNavigator/search/search-results.js +29 -26
  136. package/src/BookNavigator/sharing.js +27 -0
  137. package/src/BookNavigator/viewable-files.js +95 -0
  138. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  139. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +7 -7
  140. package/src/BookReader/BookModel.js +76 -41
  141. package/src/BookReader/DragScrollable.js +233 -0
  142. package/src/BookReader/ImageCache.js +48 -15
  143. package/src/BookReader/Mode1Up.js +56 -351
  144. package/src/BookReader/Mode1UpLit.js +388 -0
  145. package/src/BookReader/Mode2Up.js +73 -1318
  146. package/src/BookReader/Mode2UpLit.js +777 -0
  147. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  148. package/src/BookReader/ModeSmoothZoom.js +312 -0
  149. package/src/BookReader/ModeThumb.js +19 -13
  150. package/src/BookReader/Navbar/Navbar.js +70 -54
  151. package/src/BookReader/PageContainer.js +116 -22
  152. package/src/BookReader/ReduceSet.js +3 -3
  153. package/src/BookReader/Toolbar/Toolbar.js +14 -41
  154. package/src/BookReader/events.js +2 -3
  155. package/src/BookReader/options.js +73 -15
  156. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  157. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  158. package/src/BookReader/utils/SelectionObserver.js +45 -0
  159. package/src/BookReader/utils/classes.js +1 -1
  160. package/src/BookReader/utils.js +128 -13
  161. package/src/BookReader.js +562 -1078
  162. package/src/BookReaderPlugin.js +44 -0
  163. package/src/assets/icons/close-circle-dark.svg +1 -0
  164. package/src/assets/icons/magnify-minus.svg +3 -7
  165. package/src/assets/icons/magnify-plus.svg +3 -7
  166. package/src/assets/icons/voice.svg +1 -0
  167. package/src/assets/images/unviewable_page.png +0 -0
  168. package/src/css/BookReader.scss +1 -17
  169. package/src/css/_BRBookmarks.scss +1 -1
  170. package/src/css/_BRComponent.scss +1 -1
  171. package/src/css/_BRicon.scss +8 -2
  172. package/src/css/_BRmain.scss +33 -27
  173. package/src/css/_BRnav.scss +12 -42
  174. package/src/css/_BRpages.scss +170 -42
  175. package/src/css/_BRsearch.scss +68 -230
  176. package/src/css/_BRtoolbar.scss +5 -5
  177. package/src/css/_TextSelection.scss +87 -27
  178. package/src/css/_colorbox.scss +2 -2
  179. package/src/css/_controls.scss +24 -7
  180. package/src/css/_icons.scss +7 -1
  181. package/src/ia-bookreader/ia-bookreader.js +224 -0
  182. package/src/plugins/plugin.archive_analytics.js +84 -78
  183. package/src/plugins/plugin.autoplay.js +99 -104
  184. package/src/plugins/plugin.chapters.js +237 -191
  185. package/src/plugins/plugin.iframe.js +1 -1
  186. package/src/plugins/plugin.iiif.js +141 -0
  187. package/src/plugins/plugin.resume.js +53 -50
  188. package/src/plugins/plugin.text_selection.js +503 -175
  189. package/src/plugins/plugin.vendor-fullscreen.js +7 -7
  190. package/src/plugins/search/plugin.search.js +183 -121
  191. package/src/plugins/search/utils.js +43 -0
  192. package/src/plugins/search/view.js +67 -202
  193. package/src/plugins/tts/AbstractTTSEngine.js +75 -45
  194. package/src/plugins/tts/FestivalTTSEngine.js +21 -31
  195. package/src/plugins/tts/PageChunk.js +16 -23
  196. package/src/plugins/tts/PageChunkIterator.js +11 -17
  197. package/src/plugins/tts/WebTTSEngine.js +88 -72
  198. package/src/plugins/tts/plugin.tts.js +310 -350
  199. package/src/plugins/tts/utils.js +16 -26
  200. package/src/plugins/url/UrlPlugin.js +191 -0
  201. package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
  202. package/src/util/browserSniffing.js +22 -0
  203. package/src/util/docCookies.js +21 -2
  204. package/src/util/strings.js +1 -0
  205. package/tests/e2e/README.md +37 -0
  206. package/tests/e2e/autoplay.test.js +9 -6
  207. package/tests/e2e/base.test.js +8 -16
  208. package/tests/e2e/helpers/base.js +55 -50
  209. package/tests/e2e/helpers/debug.js +1 -1
  210. package/tests/e2e/helpers/mockSearch.js +19 -22
  211. package/tests/e2e/helpers/params.js +17 -0
  212. package/tests/e2e/helpers/rightToLeft.js +8 -14
  213. package/tests/e2e/helpers/search.js +73 -0
  214. package/tests/e2e/models/Navigation.js +20 -37
  215. package/tests/e2e/rightToLeft.test.js +4 -5
  216. package/tests/e2e/viewmode.test.js +40 -33
  217. package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
  218. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  219. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  220. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  221. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  222. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  223. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  224. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  225. package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
  226. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  227. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
  228. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  229. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  230. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  231. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  232. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  233. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  234. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  235. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  236. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  237. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  238. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +42 -29
  239. package/tests/jest/BookReader/PageContainer.test.js +238 -0
  240. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  241. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +3 -3
  242. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  243. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  244. package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
  245. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  246. package/tests/jest/BookReader/utils.test.js +250 -0
  247. package/tests/jest/BookReader.keyboard.test.js +190 -0
  248. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +10 -2
  249. package/tests/{BookReader.test.js → jest/BookReader.test.js} +43 -53
  250. package/tests/jest/plugins/plugin.archive_analytics.test.js +20 -0
  251. package/tests/jest/plugins/plugin.autoplay.test.js +35 -0
  252. package/tests/jest/plugins/plugin.chapters.test.js +195 -0
  253. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +4 -4
  254. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +22 -35
  255. package/tests/jest/plugins/plugin.text_selection.test.js +316 -0
  256. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  257. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
  258. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +42 -9
  259. package/tests/jest/plugins/search/utils.js +25 -0
  260. package/tests/jest/plugins/search/utils.test.js +29 -0
  261. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +30 -10
  262. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  263. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  264. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  265. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  266. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  267. package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
  268. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +57 -18
  269. package/tests/jest/setup.js +3 -0
  270. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  271. package/tests/jest/util/docCookies.test.js +24 -0
  272. package/tests/{util → jest/util}/strings.test.js +1 -1
  273. package/tests/{utils.js → jest/utils.js} +38 -0
  274. package/webpack.config.js +16 -10
  275. package/.babelrc +0 -12
  276. package/.dependabot/config.yml +0 -6
  277. package/.testcaferc.json +0 -5
  278. package/BookReader/bookreader-component-bundle.js +0 -14330
  279. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  280. package/BookReader/bookreader-component-bundle.js.map +0 -1
  281. package/BookReader/icons/sort-ascending.svg +0 -1
  282. package/BookReader/icons/sort-descending.svg +0 -1
  283. package/BookReader/jquery-1.10.1.js +0 -108
  284. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  285. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  286. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  287. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  288. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  289. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  290. package/BookReaderDemo/IIIFBookReader.js +0 -207
  291. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  292. package/BookReaderDemo/demo-autoplay.html +0 -38
  293. package/BookReaderDemo/demo-iiif.js +0 -26
  294. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  295. package/karma.conf.js +0 -23
  296. package/src/BookNavigator/BookModel.js +0 -14
  297. package/src/BookNavigator/BookNavigator.js +0 -452
  298. package/src/BookNavigator/assets/book-loader.js +0 -27
  299. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  300. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  301. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  302. package/src/BookNavigator/search/a-search-result.js +0 -55
  303. package/src/BookNavigator/volumes/volumes-provider.js +0 -108
  304. package/src/BookNavigator/volumes/volumes.js +0 -162
  305. package/src/BookReader/DebugConsole.js +0 -54
  306. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  307. package/src/ItemNavigator/ItemNavigator.js +0 -372
  308. package/src/ItemNavigator/providers/sharing.js +0 -29
  309. package/src/assets/icons/sort-ascending.svg +0 -1
  310. package/src/assets/icons/sort-descending.svg +0 -1
  311. package/src/css/_MobileNav.scss +0 -194
  312. package/src/dragscrollable-br.js +0 -261
  313. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  314. package/src/plugins/plugin.mobile_nav.js +0 -287
  315. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  316. package/tests/BookReader/DebugConsole.test.js +0 -25
  317. package/tests/BookReader/Mode1Up.test.js +0 -164
  318. package/tests/BookReader/Mode2Up.test.js +0 -247
  319. package/tests/BookReader/PageContainer.test.js +0 -115
  320. package/tests/BookReader/utils.test.js +0 -109
  321. package/tests/e2e/helpers/desktopSearch.js +0 -72
  322. package/tests/e2e/helpers/mobileSearch.js +0 -85
  323. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  324. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  325. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  326. package/tests/karma/BookNavigator/volumes.test.js +0 -133
  327. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  328. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  329. package/tests/plugins/plugin.autoplay.test.js +0 -52
  330. package/tests/plugins/plugin.chapters.test.js +0 -130
  331. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  332. package/tests/plugins/plugin.text_selection.test.js +0 -203
  333. package/tests/util/docCookies.test.js +0 -15
package/README.md CHANGED
@@ -123,7 +123,7 @@ A peek in how to use/extend core functionality:
123
123
  - plugin.url.js - automatically updates the browser url
124
124
  - plugin.resume.js - uses cookies to remember the current page
125
125
  - plugin.vendor-fullscreen.js - replaces fullscreen mode with vendor native fullscreen
126
- - see plugin directory for current plugin files ()[https://github.com/internetarchive/bookreader/tree/master/src/plugins]
126
+ - see [plugin directory for current plugin files](https://github.com/internetarchive/bookreader/tree/master/src/plugins)
127
127
 
128
128
  ### Embedding BookReader in an iFrame
129
129
 
@@ -149,6 +149,19 @@ The source JavaScript is written in ES6 (located in the `src/js` directory) and
149
149
 
150
150
  Until the next major version bump, we have to store the build files inside the repo to maintain backwards compatibility. Please _DO NOT_ include these files in your PR. Anything in the `BookReader/` directory should not be committed.
151
151
 
152
+ ### Developing icons
153
+ To see local icon package changes in bookreader, you'll need to install core-js into the icon package and link into bookreader.
154
+
155
+ Let's use `icon-share` as an example.
156
+ 1. Confirm your icon package is working properly in the iaux-icons demo
157
+ 2. Navigate to your icon package (`iaux-icons/packages/icon-share`) and run command: `npm install core-js`
158
+ - You shouldn't need to commit any of these core-js changes
159
+ 3. From within your icon package directory run command: `npm link`
160
+ - You can use the command `npm ls -g` to confirm your local package now appears in the registry
161
+ 4. Navigate to `/bookreader` and run command: `npm link @internetarchive/icon-share`
162
+ - You can use the command `npm ls |grep icon-share` to confirm icon-share is now a link to your local directory
163
+ 5. You may now start a local server to see your changes by running command: `npm run serve-dev`
164
+
152
165
  ## Releases
153
166
 
154
167
  To version bump the repo and prepare a release, run `npm version major|minor|patch` (following [semver](https://semver.org/)), then (something like) `git push origin HEAD --tags`. It'll automatically update the version number where it appears, build the files, and ask you to update the CHANGELOG.
@@ -0,0 +1,20 @@
1
+ module.exports = {
2
+ presets: [
3
+ [
4
+ "@babel/preset-env",
5
+ process.env.NODE_ENV == "test" ? { targets: { node: process.version } } :
6
+ process.env.NODE_ENV == "development" ? { targets: "last 2 Chrome versions, last 2 Firefox versions, last 2 Safari versions, last 2 Edge versions" } : {
7
+ targets: "> 2%, ie 11, edge 14, samsung > 9, OperaMini all, UCAndroid > 12, Safari >= 9",
8
+ useBuiltIns: "usage",
9
+ corejs: 3,
10
+ },
11
+ ],
12
+ ],
13
+ plugins: [
14
+ ["@babel/plugin-proposal-decorators", {
15
+ version: "2018-09",
16
+ decoratorsBeforeExport: true,
17
+ }],
18
+ ["@babel/plugin-proposal-class-properties"],
19
+ ],
20
+ };
package/codecov.yml CHANGED
@@ -1,6 +1,12 @@
1
1
  codecov:
2
2
  notify:
3
3
  require_ci_to_pass: yes
4
+ status:
5
+ project:
6
+ default:
7
+ # Allow small drops in coverage
8
+ threshold: 0.5 # 0.5%
9
+ if_not_found: failure
4
10
 
5
11
  coverage:
6
12
  precision: 2
package/index.html CHANGED
@@ -18,12 +18,15 @@
18
18
  <li><a href="BookReaderDemo/demo-preview-pages.html">Preview Pages</a></li>
19
19
  <li><a href="BookReaderDemo/demo-embed.html">Embed</a></li>
20
20
  <li><a href="BookReaderDemo/demo-multiple.html">Multiple on same page</a></li>
21
+ <!-- plugin.search.js -->
21
22
  <li><a href="BookReaderDemo/demo-internetarchive.html?ocaid=theworksofplato01platiala">From Internet Archive</a></li>
22
- <li><a href="BookReaderDemo/demo-internetarchive.html?ocaid=adventuresofoli00dick">From Internet Archive - a book with CHAPTERS</a></li>
23
+ <!-- plugin.search.js -->
24
+ <li><a href="BookReaderDemo/demo-internetarchive.html?ocaid=adventureofsherl0000unse">From Internet Archive - a book with CHAPTERS</a></li>
23
25
  <li><a href="BookReaderDemo/demo-iiif.html">IIIF</a></li>
24
- <li><a href="BookReaderDemo/demo-autoplay.html">Autoplay (kiosk mode)</a></li>
26
+ <li><a href="BookReaderDemo/demo-internetarchive.html?ocaid=goodytwoshoes00newyiala&autoflip=1">Autoplay (kiosk mode)</a></li>
25
27
  <li><a href="BookReaderDemo/demo-plugin-menu-toggle.html">Plugin: Full screen menu toggle</a></li>
26
28
  <li><a href="BookReaderDemo/immersion-mode.html">Start in immersion (fullscreen) mode</a></li>
29
+ <!-- plugin.search.js -->
27
30
  <li><a href="BookReaderDemo/immersion-1up.html">Start in immersion mode on 1up default item</a></li>
28
31
  <li><a href="BookReaderDemo/viewmode-cycle.html">Replace view mode buttons with view mode cycler</a></li>
29
32
  </ul>
package/jsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es6",
4
+ "moduleResolution": "node",
5
+ "experimentalDecorators": true,
6
+ "baseUrl": ".",
7
+ "paths": {
8
+ "@/*": ["./*"]
9
+ }
10
+ },
11
+ "include": [
12
+ "src/**/*.js",
13
+ "tests/**/*.js",
14
+ ],
15
+ "exclude": [
16
+ "node_modules",
17
+ "BookReader"
18
+ ]
19
+ }
package/netlify.toml ADDED
@@ -0,0 +1,9 @@
1
+ [build.environment]
2
+ # Keep in sync with CI in .github/workflows/node.js.yml
3
+ NODE_VERSION = "20"
4
+
5
+ [[headers]]
6
+ # Define which paths this specific [[headers]] block will cover.
7
+ for = "/BookReader/*"
8
+ [headers.values]
9
+ Access-Control-Allow-Origin = "*"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/bookreader",
3
- "version": "5.0.0-9-multiple-files",
3
+ "version": "5.0.0-90",
4
4
  "description": "The Internet Archive BookReader.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "module": "src/BookNavigator/BookNavigator.js",
12
+ "module": "src/ia-bookreader/ia-bookreader.js",
13
13
  "keywords": [
14
14
  "online",
15
15
  "bookreader",
@@ -25,73 +25,81 @@
25
25
  "homepage": "https://github.com/internetarchive/bookreader#readme",
26
26
  "private": false,
27
27
  "dependencies": {
28
- "@internetarchive/ia-activity-indicator": "^0.0.1",
29
- "@internetarchive/ia-icons": "^1.2.3",
30
- "@internetarchive/ia-menu-slider": "0.2.0-alpha3",
31
- "@internetarchive/ia-sharing-options": "^0.1.2",
32
- "@internetarchive/icon-bookmark": "^1.1.3",
33
- "@internetarchive/icon-collapse-sidebar": "^1.1.0",
34
- "@internetarchive/icon-edit-pencil": "1.1.5",
35
- "@internetarchive/icon-magnify-minus": "^1.2.3",
36
- "@internetarchive/icon-magnify-plus": "^1.2.3",
37
- "@internetarchive/icon-search": "^1.2.3",
38
- "@internetarchive/modal-manager": "^0.1.0",
39
- "lit-element": "^2.4.0",
40
- "lit-html": "^1.3.0"
28
+ "@internetarchive/ia-activity-indicator": "^0.0.4",
29
+ "@internetarchive/ia-item-navigator": "^2.1.2",
30
+ "@internetarchive/icon-bookmark": "^1.3.4",
31
+ "@internetarchive/icon-dl": "^1.3.4",
32
+ "@internetarchive/icon-edit-pencil": "^1.3.4",
33
+ "@internetarchive/icon-magnify-minus": "^1.3.4",
34
+ "@internetarchive/icon-magnify-plus": "^1.3.4",
35
+ "@internetarchive/icon-search": "^1.3.4",
36
+ "@internetarchive/icon-toc": "^1.3.4",
37
+ "@internetarchive/icon-visual-adjustment": "^1.3.4",
38
+ "@internetarchive/modal-manager": "^0.2.12",
39
+ "@internetarchive/shared-resize-observer": "^0.2.0",
40
+ "lit": "^2.5.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@babel/core": "7.13.16",
44
- "@babel/preset-env": "7.13.15",
45
- "@open-wc/testing": "^2.5.33",
46
- "@open-wc/testing-karma": "^4.0.9",
47
- "@types/jest": "26.0.23",
48
- "babel-loader": "8.2.2",
49
- "codecov": "3.8.1",
50
- "concurrently": "6.0.2",
51
- "core-js": "3.11.0",
52
- "cpx2": "3.0.0",
53
- "eslint": "7.25.0",
54
- "eslint-plugin-testcafe": "0.2.1",
55
- "http-server": "0.12.3",
56
- "iso-language-codes": "1.0.8",
57
- "jest": "26.6.3",
58
- "jquery": "1.11.3",
43
+ "@babel/core": "7.25.8",
44
+ "@babel/eslint-parser": "7.25.7",
45
+ "@babel/plugin-proposal-class-properties": "7.18.6",
46
+ "@babel/plugin-proposal-decorators": "7.25.7",
47
+ "@babel/preset-env": "7.25.8",
48
+ "@iiif/presentation-2": "^1.0.4",
49
+ "@iiif/presentation-3": "^2.1.3",
50
+ "@open-wc/testing-helpers": "3.0.1",
51
+ "@types/jest": "29.5.14",
52
+ "@webcomponents/webcomponentsjs": "^2.6.0",
53
+ "babel-loader": "9.2.1",
54
+ "concurrently": "9.0.1",
55
+ "core-js": "3.38.1",
56
+ "cpx2": "8.0.0",
57
+ "eslint": "^7.32.0",
58
+ "eslint-plugin-no-jquery": "^2.7.0",
59
+ "eslint-plugin-testcafe": "^0.2.1",
60
+ "http-server": "14.1.1",
61
+ "interactjs": "^1.10.18",
62
+ "iso-language-codes": "1.1.0",
63
+ "jest": "29.7.0",
64
+ "jest-environment-jsdom": "^29.7.0",
65
+ "jquery": "3.6.1",
59
66
  "jquery-colorbox": "1.6.4",
60
67
  "jquery-ui": "1.12.1",
61
68
  "jquery-ui-touch-punch": "0.2.3",
62
69
  "jquery.browser": "0.1.0",
63
- "jquery.mmenu": "5.6.5",
64
- "karma-coverage": "^2.0.3",
65
- "live-server": "1.2.1",
66
- "node-fetch": "2.6.1",
67
- "regenerator-runtime": "0.13.7",
68
- "sass": "1.32.11",
69
- "sinon": "10.0.0",
70
+ "live-server": "1.2.2",
71
+ "regenerator-runtime": "0.14.1",
72
+ "sass": "1.79.5",
73
+ "sinon": "19.0.2",
70
74
  "soundmanager2": "2.97.20170602",
71
- "svgo": "2.3.0",
72
- "testcafe": "1.14.0",
73
- "webpack": "5.35.0",
74
- "webpack-cli": "4.6.0"
75
+ "svgo": "3.3.2",
76
+ "testcafe": "3.6.2",
77
+ "testcafe-browser-provider-browserstack": "^1.13.2-alpha.1",
78
+ "webpack": "5.95.0",
79
+ "webpack-cli": "5.1.4"
75
80
  },
76
81
  "jest": {
82
+ "testEnvironment": "jsdom",
83
+ "transformIgnorePatterns": [
84
+ "node_modules/(?!(sinon|lit-html|lit-element|lit|@lit|@internetarchive|@open-wc)/)"
85
+ ],
86
+ "moduleNameMapper": {
87
+ "^@/(.*)$": "<rootDir>/$1"
88
+ },
77
89
  "setupFiles": [
78
- "./src/jquery-wrapper.js"
90
+ "./src/jquery-wrapper.js",
91
+ "./tests/jest/setup.js"
79
92
  ],
80
93
  "roots": [
81
94
  "<rootDir>/src/",
82
- "<rootDir>/tests/"
83
- ],
84
- "testPathIgnorePatterns": [
85
- "<rootDir>/tests/e2e/",
86
- "<rootDir>/tests/karma/"
87
- ],
88
- "coverageDirectory": "<rootDir>/coverage-jest"
95
+ "<rootDir>/tests/jest/"
96
+ ]
89
97
  },
90
98
  "scripts": {
91
99
  "preversion": "npm run test && node scripts/preversion.js",
92
100
  "version": "node scripts/version.js",
93
101
  "postversion": "node scripts/postversion.js",
94
- "build": "npm run clean && npm run build-js && npm run build-css && npm run build-assets",
102
+ "build": "npm run clean && npx concurrently --group npm:build-js npm:build-css npm:build-assets",
95
103
  "build-assets": "npx cpx \"src/assets/**/*\" BookReader && npx svgo -f BookReader/icons && npx svgo -f BookReader/images",
96
104
  "build-assets:watch": "npx cpx --watch --verbose \"src/assets/**/*\" BookReader",
97
105
  "build-js": "npx webpack",
@@ -101,16 +109,16 @@
101
109
  "clean": "rm -r BookReader/ || true",
102
110
  "lint": "npx eslint src/ tests/ *.js",
103
111
  "lint:fix": "npx eslint --fix src/ tests/ *.js",
104
- "serve": "npx http-server . --port 8000",
105
- "serve-live": "npx live-server . --port 8000 --watch=index.html,BookReader,BookReaderDemo",
106
- "serve-dev": "npm run build-css && npx concurrently --kill-others npm:serve-live npm:build-*:watch",
107
- "test": "npm run test-jest && npm run test-karma",
108
- "test:e2e": "npm run build && env BASE_URL=http://127.0.0.1:8000/BookReaderDemo/ npx testcafe",
109
- "test:e2e:dev": "env BASE_URL=http://127.0.0.1:8000/BookReaderDemo/ npx testcafe --live --dev",
110
- "test-jest:watch": "npx jest --watch",
111
- "test-jest": "npx jest --coverage --colors",
112
- "test-karma": "npx karma start --coverage",
113
- "test-karma:watch": "npx karma start --auto-watch=true --single-run=false",
114
- "codecov": "npx codecov"
112
+ "serve": "npx http-server . --port=8000",
113
+ "serve-live": "npx live-server . --cors --port=8000 --watch=index.html,BookReader,BookReaderDemo",
114
+ "serve-dev": "env NODE_ENV='development' npm run build-css && env NODE_ENV='development' npx concurrently --kill-others npm:serve-live npm:build-*:watch",
115
+ "test": "npx jest --coverage --colors",
116
+ "test:watch": "npx jest --watch",
117
+ "test:e2e": "npm run build && npx testcafe",
118
+ "test:e2e:dev": "npx testcafe --live --dev",
119
+ "DOCS:update:test-deps": "If CI succeeds, these should be good to update",
120
+ "update:test-deps": "npm i @babel/eslint-parser@latest @open-wc/testing-helpers@latest @types/jest@latest eslint@7 eslint-plugin-testcafe@latest jest@latest sinon@latest testcafe@latest",
121
+ "DOCS:update:build-deps": "These can cause strange changes, so do an npm run build + check file size (git diff --stat), and check the site is as expected",
122
+ "update:build-deps": "npm i @babel/core@latest @babel/preset-env@latest @babel/plugin-proposal-class-properties@latest @babel/plugin-proposal-decorators@latest babel-loader@latest core-js@latest regenerator-runtime@latest sass@latest svgo@latest webpack@latest webpack-cli@latest"
115
123
  }
116
124
  }
package/renovate.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "extends": [
3
+ "config:base",
4
+ "schedule:monthly"
5
+ ],
6
+ "packageRules": [
7
+ {
8
+ "matchPackageNames": [
9
+ "@babel/eslint-parser",
10
+ "@open-wc/testing-helpers",
11
+ "@types/jest",
12
+ "codecov/codecov-action",
13
+ "eslint",
14
+ "eslint-plugin-no-jquery",
15
+ "eslint-plugin-testcafe",
16
+ "jest",
17
+ "jest-environment-jsdom",
18
+ "sinon",
19
+ "testcafe"
20
+ ],
21
+ "automerge": true
22
+ },
23
+ {
24
+ "matchPackageNames": [
25
+ "concurrently",
26
+ "http-server",
27
+ "live-server",
28
+ "node-fetch"
29
+ ],
30
+ "matchUpdateTypes": ["minor", "patch"],
31
+ "automerge": true
32
+ },
33
+ {
34
+ "matchPackagePatterns": ["^@internetarchive/icon-"],
35
+ "groupName": "@internetarchive icons",
36
+ "rangeStrategy": "bump"
37
+ },
38
+ {
39
+ "matchPackagePatterns": ["*"],
40
+ "rangeStrategy": "bump"
41
+ },
42
+ {
43
+ "matchPackagePatterns": ["^actions/"],
44
+ "groupName": "GitHub Actions",
45
+ "automerge": true
46
+ },
47
+ {
48
+ "matchPackagePatterns": ["^@internetarchive"],
49
+ "schedule": ["at any time"]
50
+ }
51
+ ]
52
+ }
@@ -1,5 +1,4 @@
1
1
  const { version: OLD_VERSION } = require('../package.json');
2
- const fetch = require('node-fetch');
3
2
  const OLD_RELEASE_URL = `https://api.github.com/repos/internetarchive/bookreader/releases/tags/v${OLD_VERSION}`;
4
3
 
5
4
  async function main() {
@@ -1,4 +1,4 @@
1
- import { css } from 'lit-element';
1
+ import { css } from 'lit';
2
2
 
3
3
  export default css`
4
4
  .blue {
@@ -1,4 +1,4 @@
1
- import { css } from 'lit-element';
1
+ import { css } from 'lit';
2
2
 
3
3
  export default css`
4
4
  .ia-button {
@@ -12,6 +12,7 @@ export default css`
12
12
  text-align: center;
13
13
  vertical-align: middle;
14
14
  font-size: 1.4rem;
15
+ font-family: inherit;
15
16
  display: inline-block;
16
17
  padding: .6rem 1.2rem;
17
18
  border: 1px solid transparent;
@@ -24,8 +25,10 @@ export default css`
24
25
  user-select: none;
25
26
  }
26
27
 
27
- .ia-button.link {
28
+ .ia-button.link,
29
+ .ia-button.external {
28
30
  min-height: unset;
31
+ text-decoration: none;
29
32
  }
30
33
 
31
34
  .ia-button:disabled,
@@ -51,4 +54,9 @@ export default css`
51
54
  background-color: var(--primaryErrorCTAFill);
52
55
  border-color: var(--primaryErrorCTABorder);
53
56
  }
57
+
58
+ .ia-button.external {
59
+ background: var(--secondaryCTAFill);
60
+ border-color: var(--secondaryCTABorder);
61
+ }
54
62
  `;
@@ -0,0 +1,17 @@
1
+ import { svg } from 'lit';
2
+
3
+ export default svg`
4
+ <svg class="ia-logo" width="27" height="30" viewBox="0 0 27 30" xmlns="http://www.w3.org/2000/svg" aria-labelledby="logoTitleID logoDescID">
5
+ <title id="logoTitleID">Internet Archive logo</title>
6
+ <desc id="logoDescID">A line drawing of the Internet Archive headquarters building façade.</desc>
7
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <mask id="mask-2" fill="white">
9
+ <path d="M26.6666667,28.6046512 L26.6666667,30 L0,30 L0.000283687943,28.6046512 L26.6666667,28.6046512 Z M25.6140351,26.5116279 L25.6140351,28.255814 L1.05263158,28.255814 L1.05263158,26.5116279 L25.6140351,26.5116279 Z M3.62469203,7.6744186 L3.91746909,7.82153285 L4.0639977,10.1739544 L4.21052632,13.9963932 L4.21052632,17.6725617 L4.0639977,22.255044 L4.03962296,25.3421929 L3.62469203,25.4651163 L2.16024641,25.4651163 L1.72094074,25.3421929 L1.55031755,22.255044 L1.40350877,17.6970339 L1.40350877,14.0211467 L1.55031755,10.1739544 L1.68423854,7.80887484 L1.98962322,7.6744186 L3.62469203,7.6744186 Z M24.6774869,7.6744186 L24.9706026,7.82153285 L25.1168803,10.1739544 L25.2631579,13.9963932 L25.2631579,17.6725617 L25.1168803,22.255044 L25.0927809,25.3421929 L24.6774869,25.4651163 L23.2130291,25.4651163 L22.7736357,25.3421929 L22.602418,22.255044 L22.4561404,17.6970339 L22.4561404,14.0211467 L22.602418,10.1739544 L22.7369262,7.80887484 L23.0420916,7.6744186 L24.6774869,7.6744186 Z M9.94042303,7.6744186 L10.2332293,7.82153285 L10.3797725,10.1739544 L10.5263158,13.9963932 L10.5263158,17.6725617 L10.3797725,22.255044 L10.3556756,25.3421929 L9.94042303,25.4651163 L8.47583122,25.4651163 L8.0362015,25.3421929 L7.86556129,22.255044 L7.71929825,17.6970339 L7.71929825,14.0211467 L7.86556129,10.1739544 L8.00005604,7.80887484 L8.30491081,7.6744186 L9.94042303,7.6744186 Z M18.0105985,7.6744186 L18.3034047,7.82153285 L18.449948,10.1739544 L18.5964912,13.9963932 L18.5964912,17.6725617 L18.449948,22.255044 L18.425851,25.3421929 L18.0105985,25.4651163 L16.5460067,25.4651163 L16.1066571,25.3421929 L15.9357367,22.255044 L15.7894737,17.6970339 L15.7894737,14.0211467 L15.9357367,10.1739544 L16.0702315,7.80887484 L16.3753664,7.6744186 L18.0105985,7.6744186 Z M25.6140351,4.53488372 L25.6140351,6.97674419 L1.05263158,6.97674419 L1.05263158,4.53488372 L25.6140351,4.53488372 Z M13.0806755,0 L25.9649123,2.93331338 L25.4484139,3.8372093 L0.771925248,3.8372093 L0,3.1041615 L13.0806755,0 Z" id="path-1"></path>
10
+ </mask>
11
+ <use fill="#FFFFFF" xlink:href="#path-1"></use>
12
+ <g mask="url(#mask-2)" fill="#FFFFFF">
13
+ <path d="M0,0 L26.6666667,0 L26.6666667,30 L0,30 L0,0 Z" id="swatch"></path>
14
+ </g>
15
+ </g>
16
+ </svg>
17
+ `;
@@ -1,4 +1,4 @@
1
- import { css } from 'lit-element';
1
+ import { css } from 'lit';
2
2
 
3
3
  // Original SVG object for reference
4
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>
@@ -1,3 +1,3 @@
1
- import { css } from 'lit-element';
1
+ import { css } from 'lit';
2
2
 
3
3
  export default css`data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDAgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1sYWJlbGxlZGJ5PSJjbG9zZVRpdGxlSUQgY2xvc2VEZXNjSUQiPjxwYXRoIGQ9Ik0yOS4xOTIgMTAuODA4YTEuNSAxLjUgMCAwMTAgMi4xMkwyMi4xMjIgMjBsNy4wNyA3LjA3MmExLjUgMS41IDAgMDEtMi4xMiAyLjEyMWwtNy4wNzMtNy4wNy03LjA3IDcuMDdhMS41IDEuNSAwIDAxLTIuMTIxLTIuMTJsNy4wNy03LjA3My03LjA3LTcuMDdhMS41IDEuNSAwIDAxMi4xMi0yLjEyMUwyMCAxNy44NzhsNy4wNzItNy4wN2ExLjUgMS41IDAgMDEyLjEyMSAweiIgY2xhc3M9ImZpbGwtY29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==`;