@internetarchive/bookreader 5.0.0-8 → 5.0.0-80

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 (313) hide show
  1. package/.eslintrc.js +17 -15
  2. package/.github/workflows/node.js.yml +73 -10
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +398 -1133
  6. package/BookReader/BookReader.js +1 -1
  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 -1
  13. package/BookReader/icons/2up.svg +1 -1
  14. package/BookReader/icons/advance.svg +1 -1
  15. package/BookReader/icons/chevron-right.svg +1 -1
  16. package/BookReader/icons/close-circle-dark.svg +1 -1
  17. package/BookReader/icons/close-circle.svg +1 -1
  18. package/BookReader/icons/fullscreen.svg +1 -1
  19. package/BookReader/icons/fullscreen_exit.svg +1 -1
  20. package/BookReader/icons/hamburger.svg +1 -1
  21. package/BookReader/icons/left-arrow.svg +1 -1
  22. package/BookReader/icons/magnify-minus.svg +1 -1
  23. package/BookReader/icons/magnify-plus.svg +1 -1
  24. package/BookReader/icons/magnify.svg +1 -1
  25. package/BookReader/icons/pause.svg +1 -1
  26. package/BookReader/icons/play.svg +1 -1
  27. package/BookReader/icons/playback-speed.svg +1 -1
  28. package/BookReader/icons/read-aloud.svg +1 -1
  29. package/BookReader/icons/review.svg +1 -1
  30. package/BookReader/icons/thumbnails.svg +1 -1
  31. package/BookReader/icons/voice.svg +1 -0
  32. package/BookReader/icons/volume-full.svg +1 -1
  33. package/BookReader/images/BRicons.svg +3 -3
  34. package/BookReader/images/books_graphic.svg +1 -1
  35. package/BookReader/images/icon_book.svg +1 -1
  36. package/BookReader/images/icon_bookmark.svg +1 -1
  37. package/BookReader/images/icon_gear.svg +1 -1
  38. package/BookReader/images/icon_hamburger.svg +1 -1
  39. package/BookReader/images/icon_home.svg +1 -1
  40. package/BookReader/images/icon_info.svg +1 -1
  41. package/BookReader/images/icon_one_page.svg +1 -1
  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 -1
  45. package/BookReader/images/icon_search_button.svg +1 -1
  46. package/BookReader/images/icon_share.svg +1 -1
  47. package/BookReader/images/icon_skip-ahead.svg +1 -1
  48. package/BookReader/images/icon_skip-back.svg +1 -1
  49. package/BookReader/images/icon_speaker.svg +1 -1
  50. package/BookReader/images/icon_speaker_open.svg +1 -1
  51. package/BookReader/images/icon_thumbnails.svg +1 -1
  52. package/BookReader/images/icon_toc.svg +1 -1
  53. package/BookReader/images/icon_two_pages.svg +1 -1
  54. package/BookReader/images/marker_chap-off.svg +1 -1
  55. package/BookReader/images/marker_chap-on.svg +1 -1
  56. package/BookReader/images/marker_srch-on.svg +1 -1
  57. package/BookReader/jquery-3.js +2 -0
  58. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  59. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  60. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  61. package/BookReader/plugins/plugin.autoplay.js +1 -1
  62. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  63. package/BookReader/plugins/plugin.chapters.js +25 -1
  64. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  65. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  66. package/BookReader/plugins/plugin.iframe.js +1 -1
  67. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  68. package/BookReader/plugins/plugin.iiif.js +2 -0
  69. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  70. package/BookReader/plugins/plugin.resume.js +1 -1
  71. package/BookReader/plugins/plugin.resume.js.map +1 -1
  72. package/BookReader/plugins/plugin.search.js +2 -1
  73. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  74. package/BookReader/plugins/plugin.search.js.map +1 -1
  75. package/BookReader/plugins/plugin.text_selection.js +2 -1
  76. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  77. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  78. package/BookReader/plugins/plugin.tts.js +1 -1
  79. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  80. package/BookReader/plugins/plugin.tts.js.map +1 -1
  81. package/BookReader/plugins/plugin.url.js +1 -1
  82. package/BookReader/plugins/plugin.url.js.map +1 -1
  83. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  84. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  85. package/BookReader/webcomponents-bundle.js +3 -0
  86. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  87. package/BookReader/webcomponents-bundle.js.map +1 -0
  88. package/BookReaderDemo/BookReaderDemo.css +18 -19
  89. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  90. package/BookReaderDemo/BookReaderJSAutoplay.js +4 -1
  91. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  92. package/BookReaderDemo/IADemoBr.js +147 -0
  93. package/BookReaderDemo/demo-advanced.html +2 -2
  94. package/BookReaderDemo/demo-autoplay.html +2 -3
  95. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  96. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  97. package/BookReaderDemo/demo-fullscreen.html +2 -4
  98. package/BookReaderDemo/demo-iiif.html +99 -12
  99. package/BookReaderDemo/demo-internetarchive.html +214 -18
  100. package/BookReaderDemo/demo-multiple.html +2 -1
  101. package/BookReaderDemo/demo-preview-pages.html +2 -1
  102. package/BookReaderDemo/demo-simple.html +2 -1
  103. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
  104. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  105. package/BookReaderDemo/immersion-1up.html +2 -2
  106. package/BookReaderDemo/immersion-mode.html +2 -4
  107. package/BookReaderDemo/toggle_controls.html +3 -2
  108. package/BookReaderDemo/view_mode.html +2 -1
  109. package/BookReaderDemo/viewmode-cycle.html +2 -3
  110. package/CHANGELOG.md +536 -33
  111. package/README.md +14 -1
  112. package/babel.config.js +20 -0
  113. package/codecov.yml +6 -0
  114. package/index.html +4 -1
  115. package/jsconfig.json +19 -0
  116. package/netlify.toml +9 -0
  117. package/package.json +70 -60
  118. package/renovate.json +52 -0
  119. package/scripts/preversion.js +0 -1
  120. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  121. package/src/BookNavigator/assets/button-base.js +4 -2
  122. package/src/BookNavigator/assets/ia-logo.js +17 -0
  123. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  124. package/src/BookNavigator/assets/icon_close.js +1 -1
  125. package/src/BookNavigator/book-navigator.js +590 -0
  126. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  127. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  128. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  129. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +3 -8
  130. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  131. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  132. package/src/BookNavigator/delete-modal-actions.js +1 -1
  133. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  134. package/src/BookNavigator/downloads/downloads.js +41 -25
  135. package/src/BookNavigator/search/search-provider.js +49 -27
  136. package/src/BookNavigator/search/search-results.js +23 -9
  137. package/src/BookNavigator/sharing.js +27 -0
  138. package/src/BookNavigator/viewable-files.js +95 -0
  139. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +11 -10
  140. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +3 -3
  141. package/src/BookReader/BookModel.js +64 -34
  142. package/src/BookReader/DragScrollable.js +233 -0
  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 +776 -0
  147. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  148. package/src/BookReader/ModeSmoothZoom.js +312 -0
  149. package/src/BookReader/ModeThumb.js +18 -12
  150. package/src/BookReader/Navbar/Navbar.js +14 -40
  151. package/src/BookReader/PageContainer.js +81 -6
  152. package/src/BookReader/ReduceSet.js +1 -1
  153. package/src/BookReader/Toolbar/Toolbar.js +10 -37
  154. package/src/BookReader/events.js +2 -3
  155. package/src/BookReader/options.js +27 -2
  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.js +118 -13
  160. package/src/BookReader.js +427 -1061
  161. package/src/assets/icons/magnify-minus.svg +3 -7
  162. package/src/assets/icons/magnify-plus.svg +3 -7
  163. package/src/assets/icons/voice.svg +1 -0
  164. package/src/css/BookReader.scss +1 -5
  165. package/src/css/_BRBookmarks.scss +1 -1
  166. package/src/css/_BRComponent.scss +1 -1
  167. package/src/css/_BRmain.scss +16 -3
  168. package/src/css/_BRnav.scss +12 -39
  169. package/src/css/_BRpages.scss +149 -40
  170. package/src/css/_BRsearch.scss +68 -25
  171. package/src/css/_BRtoolbar.scss +5 -5
  172. package/src/css/_TextSelection.scss +87 -27
  173. package/src/css/_colorbox.scss +2 -2
  174. package/src/css/_controls.scss +20 -7
  175. package/src/css/_icons.scss +1 -1
  176. package/src/ia-bookreader/ia-bookreader.js +224 -0
  177. package/src/plugins/plugin.archive_analytics.js +3 -3
  178. package/src/plugins/plugin.autoplay.js +5 -11
  179. package/src/plugins/plugin.chapters.js +237 -191
  180. package/src/plugins/plugin.iiif.js +151 -0
  181. package/src/plugins/plugin.resume.js +3 -3
  182. package/src/plugins/plugin.text_selection.js +464 -134
  183. package/src/plugins/plugin.vendor-fullscreen.js +4 -4
  184. package/src/plugins/search/plugin.search.js +142 -125
  185. package/src/plugins/search/utils.js +43 -0
  186. package/src/plugins/search/view.js +33 -58
  187. package/src/plugins/tts/AbstractTTSEngine.js +71 -40
  188. package/src/plugins/tts/FestivalTTSEngine.js +13 -14
  189. package/src/plugins/tts/PageChunk.js +15 -21
  190. package/src/plugins/tts/PageChunkIterator.js +8 -12
  191. package/src/plugins/tts/WebTTSEngine.js +87 -71
  192. package/src/plugins/tts/plugin.tts.js +96 -127
  193. package/src/plugins/tts/utils.js +15 -25
  194. package/src/plugins/url/UrlPlugin.js +191 -0
  195. package/src/plugins/{plugin.url.js → url/plugin.url.js} +45 -16
  196. package/src/util/browserSniffing.js +22 -0
  197. package/src/util/docCookies.js +21 -2
  198. package/tests/e2e/README.md +37 -0
  199. package/tests/e2e/autoplay.test.js +2 -2
  200. package/tests/e2e/base.test.js +8 -16
  201. package/tests/e2e/helpers/base.js +53 -48
  202. package/tests/e2e/helpers/debug.js +1 -1
  203. package/tests/e2e/helpers/params.js +17 -0
  204. package/tests/e2e/helpers/rightToLeft.js +8 -14
  205. package/tests/e2e/helpers/search.js +73 -0
  206. package/tests/e2e/models/Navigation.js +20 -37
  207. package/tests/e2e/rightToLeft.test.js +4 -5
  208. package/tests/e2e/viewmode.test.js +40 -33
  209. package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
  210. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  211. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  212. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  213. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  214. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  215. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  216. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  217. package/tests/{karma → jest}/BookNavigator/search/search-results.test.js +109 -60
  218. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  219. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
  220. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  221. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  222. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  223. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  224. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  225. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  226. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  227. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  228. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  229. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  230. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +10 -10
  231. package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +88 -6
  232. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  233. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
  234. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  235. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  236. package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
  237. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  238. package/tests/jest/BookReader/utils.test.js +229 -0
  239. package/tests/jest/BookReader.keyboard.test.js +190 -0
  240. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
  241. package/tests/{BookReader.test.js → jest/BookReader.test.js} +26 -37
  242. package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
  243. package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +4 -4
  244. package/tests/jest/plugins/plugin.chapters.test.js +195 -0
  245. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
  246. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
  247. package/tests/jest/plugins/plugin.text_selection.test.js +317 -0
  248. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  249. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +25 -47
  250. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +39 -6
  251. package/tests/jest/plugins/search/utils.js +25 -0
  252. package/tests/jest/plugins/search/utils.test.js +29 -0
  253. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +29 -9
  254. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  255. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  256. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  257. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  258. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  259. package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
  260. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +53 -14
  261. package/tests/jest/setup.js +3 -0
  262. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  263. package/tests/jest/util/docCookies.test.js +24 -0
  264. package/tests/{util → jest/util}/strings.test.js +1 -1
  265. package/tests/{utils.js → jest/utils.js} +38 -0
  266. package/webpack.config.js +12 -6
  267. package/.babelrc +0 -12
  268. package/.dependabot/config.yml +0 -6
  269. package/.testcaferc.json +0 -5
  270. package/BookReader/bookreader-component-bundle.js +0 -1450
  271. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  272. package/BookReader/bookreader-component-bundle.js.map +0 -1
  273. package/BookReader/jquery-1.10.1.js +0 -2
  274. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  275. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  276. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  277. package/BookReader/plugins/plugin.mobile_nav.js +0 -2
  278. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  279. package/BookReaderDemo/IIIFBookReader.js +0 -207
  280. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  281. package/BookReaderDemo/demo-iiif.js +0 -26
  282. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  283. package/karma.conf.js +0 -23
  284. package/src/BookNavigator/BookModel.js +0 -14
  285. package/src/BookNavigator/BookNavigator.js +0 -446
  286. package/src/BookNavigator/assets/book-loader.js +0 -27
  287. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  288. package/src/BookNavigator/search/a-search-result.js +0 -55
  289. package/src/BookReader/DebugConsole.js +0 -54
  290. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  291. package/src/ItemNavigator/ItemNavigator.js +0 -376
  292. package/src/ItemNavigator/providers/sharing.js +0 -29
  293. package/src/css/_MobileNav.scss +0 -194
  294. package/src/dragscrollable-br.js +0 -261
  295. package/src/lit-wrapper.js +0 -2
  296. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  297. package/src/plugins/plugin.mobile_nav.js +0 -287
  298. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  299. package/tests/BookReader/DebugConsole.test.js +0 -25
  300. package/tests/BookReader/Mode1Up.test.js +0 -164
  301. package/tests/BookReader/Mode2Up.test.js +0 -247
  302. package/tests/BookReader/utils.test.js +0 -109
  303. package/tests/e2e/helpers/desktopSearch.js +0 -72
  304. package/tests/e2e/helpers/mobileSearch.js +0 -85
  305. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  306. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  307. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  308. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  309. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  310. package/tests/plugins/plugin.chapters.test.js +0 -130
  311. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  312. package/tests/plugins/plugin.text_selection.test.js +0 -203
  313. package/tests/util/docCookies.test.js +0 -15
@@ -2,11 +2,13 @@
2
2
  * Custom overrides for BookReader Demo.
3
3
  */
4
4
  html {
5
+ /** This must be set because the nav menu uses rem and sets the fonts really big? */
5
6
  font-size: 10px;
6
7
  font-family: sans-serif;
7
8
  }
8
9
 
9
10
  body {
11
+ font-size: 16px;
10
12
  background-color: #939598;
11
13
  margin: 0px;
12
14
  }
@@ -16,26 +18,23 @@ body {
16
18
  display: none;
17
19
  }
18
20
 
21
+ body.BRfullscreenActive section.theater {
22
+ height: 100vh;
23
+ }
24
+ ia-bookreader[fullscreen] {
25
+ height: unset;
26
+ }
27
+
28
+ ia-bookreader{
29
+ --br-height: calc(100vh - 100px);
30
+ display: block;
31
+ height: var(--br-height);
32
+ }
33
+
19
34
  .BookReader {
20
- height: 600px;
35
+ --br-height: calc(100vh - 100px);
36
+ --new-height: calc(var(--br-height) - 20px);
37
+ height: var(--br-height);
21
38
  overflow: hidden;
22
39
  margin: 0 auto;
23
40
  }
24
-
25
- @media only screen and (max-width: 799px) {
26
- body.BRbodyMobileNavEnabled {
27
- margin: 0;
28
- width: 100%;
29
- overflow: hidden;
30
- }
31
- .BRbodyMobileNavEnabled .BookReader {
32
- top: 0;
33
- bottom: 0;
34
- left: 0;
35
- right: 0;
36
- position: absolute;
37
- height: 100%;
38
- margin: 0;
39
- width: 100%;
40
- }
41
- }
@@ -92,9 +92,6 @@ var options = {
92
92
  {label: 'Author', value: 'Internet Archive'},
93
93
  {label: 'Demo Info', value: 'This demo shows how one could use BookReader with their own content.'},
94
94
  ],
95
- // This toggles the mobile drawer (not shown in 'embed' mode)
96
- enableMobileNav: false,
97
- mobileNavTitle: 'BookReader demo',
98
95
 
99
96
  // Override the path used to find UI images
100
97
  imagesBaseURL: '../BookReader/images/',
@@ -8,6 +8,7 @@ function instantiateBookReader(selector, extraOptions) {
8
8
  selector = selector || '#BookReader';
9
9
  extraOptions = extraOptions || {};
10
10
  var options = {
11
+ ppi: 100,
11
12
  data: [
12
13
  [
13
14
  { width: 800, height: 1200,
@@ -52,5 +53,7 @@ function instantiateBookReader(selector, extraOptions) {
52
53
  $.extend(options, extraOptions);
53
54
  var br = new BookReader(options);
54
55
  br.init();
55
- br.autoToggle(options);
56
+ setTimeout(function() {
57
+ br.autoToggle(options);
58
+ }, 0);
56
59
  }
@@ -8,6 +8,7 @@ function instantiateBookReader(selector, extraOptions) {
8
8
  selector = selector || '#BookReader';
9
9
  extraOptions = extraOptions || {};
10
10
  var options = {
11
+ ppi: 100,
11
12
  data: [
12
13
  [
13
14
  { width: 800, height: 1200,
@@ -0,0 +1,147 @@
1
+ /* global BookReader, BookReaderJSIAinit */
2
+ import { extraVolOptions, custvolumesManifest } from './ia-multiple-volumes-manifest.js';
3
+
4
+ /**
5
+ * This is how Internet Archive loads bookreader
6
+ */
7
+ const urlParams = new URLSearchParams(window.location.search);
8
+
9
+ const ocaid = urlParams.get('ocaid');
10
+ const openFullImmersionTheater = urlParams.get('view') === 'theater';
11
+ const ui = urlParams.get('ui');
12
+ const autoflip = urlParams.get('autoflip');
13
+ const searchTerm = urlParams.get('q');
14
+
15
+ const iaBookReader = document.querySelector('ia-bookreader');
16
+
17
+ const downloadListWithLCP = [
18
+ [
19
+ "lcpPDF",
20
+ "link to lcp pdf"
21
+ ],
22
+ [
23
+ "lcpEPUB",
24
+ "link to lcp epub"
25
+ ]
26
+ ];
27
+
28
+ if (openFullImmersionTheater) {
29
+ $(document.body).addClass('BRfullscreenActive');
30
+ iaBookReader.fullscreen = openFullImmersionTheater;
31
+ }
32
+
33
+ const modal = document.querySelector('modal-manager');
34
+ iaBookReader.modal = modal;
35
+
36
+ // Override options coming from IA
37
+ BookReader.optionOverrides.imagesBaseURL = '/BookReader/images/';
38
+
39
+ const initializeBookReader = (brManifest) => {
40
+ console.log('initializeBookReader', brManifest);
41
+
42
+ const customAutoflipParams = {
43
+ autoflip: !!autoflip,
44
+ flipSpeed: urlParams.flipSpeed || 2000,
45
+ flipDelay: urlParams.flipDelay || 5000
46
+ };
47
+
48
+ const options = {
49
+ el: '#BookReader',
50
+ /* Url plugin - IA uses History mode for URL */
51
+ // commenting these out as demo uses hash mode
52
+ // keeping them here for reference
53
+ // urlHistoryBasePath: `/details/{$ocaid}/`,
54
+ // resumeCookiePath: `/details/{$ocaid}/`,
55
+ // urlMode: 'history',
56
+ // Only reflect these params onto the URL
57
+ // urlTrackedParams: ['page', 'search', 'mode'],
58
+ /* End url plugin */
59
+ enableBookTitleLink: false,
60
+ bookUrlText: null,
61
+ startFullscreen: openFullImmersionTheater,
62
+ initialSearchTerm: searchTerm ? searchTerm : '',
63
+ // leaving this option commented out bc we change given user agent on archive.org
64
+ // onePage: { autofit: <?=json_encode($this->ios ? 'width' : 'auto')?> },
65
+ showToolbar: false,
66
+ /* Multiple volumes */
67
+ // To show multiple volumes:
68
+ enableMultipleBooks: false, // turn this on
69
+ multipleBooksList: [], // populate this // TODO: get sample blob and tie into demo
70
+ /* End multiple volumes */
71
+ enableBookmarks: true, // turn this on
72
+ enableFSLogoShortcut: true,
73
+ };
74
+
75
+ // we want to show item as embedded when ?ui=embed is in URI
76
+ if (ui === 'embed') {
77
+ options.mode = 1;
78
+ options.ui = 'embed';
79
+ }
80
+
81
+ // we expect this at the global level
82
+ BookReaderJSIAinit(brManifest.data, options);
83
+
84
+ const isRestricted = brManifest.data.isRestricted;
85
+ window.dispatchEvent(new CustomEvent('contextmenu', { detail: { isRestricted } }));
86
+ if (customAutoflipParams.autoflip) {
87
+ window.br.autoToggle(customAutoflipParams);
88
+ }
89
+ };
90
+
91
+ window.initializeBookReader = initializeBookReader;
92
+
93
+ const showLCP = document.querySelector('#show-lcp');
94
+ showLCP.addEventListener('click', async () => {
95
+ const iaBr = document.querySelector('ia-bookreader');
96
+ const bookNav = iaBr.shadowRoot.querySelector('book-navigator');
97
+
98
+ bookNav.downloadableTypes = downloadListWithLCP;
99
+
100
+ bookNav.updateMenuContents();
101
+ await bookNav.updateComplete;
102
+ });
103
+
104
+ const multiVolume = document.querySelector('#multi-volume');
105
+ multiVolume.addEventListener('click', () => {
106
+ // remove everything
107
+ $('#BookReader').empty();
108
+ delete window.br;
109
+ // and re-mount with a new book
110
+ BookReaderJSIAinit(custvolumesManifest, extraVolOptions);
111
+ });
112
+
113
+
114
+ const fetchBookManifestAndInitializeBookreader = async (iaMetadata) => {
115
+ document.querySelector('input[name="itemMD"]').checked = true;
116
+ iaBookReader.item = iaMetadata;
117
+
118
+ const jsiaParams = {
119
+ format: 'jsonp',
120
+ itemPath: iaMetadata.dir,
121
+ id: iaMetadata.metadata.identifier,
122
+ server: iaMetadata.server,
123
+ };
124
+
125
+ const jp2File = iaMetadata.files.find(f => f.name.endsWith('_jp2.zip'))
126
+ if (jp2File) {
127
+ jsiaParams.subPrefix = jp2File.name.replace('_jp2.zip', '');
128
+ }
129
+
130
+ const iaManifestUrl = `https://${iaMetadata.server}/BookReader/BookReaderJSIA.php?${
131
+ new URLSearchParams(jsiaParams)
132
+ }`;
133
+
134
+ const manifest = await fetch(iaManifestUrl).then(response => response.json());
135
+ document.querySelector('input[name="bookManifest"]').checked = true;
136
+
137
+ initializeBookReader(manifest);
138
+ };
139
+
140
+ // Temp; Circumvent bug in BookReaderJSIA code
141
+ window.Sentry = null;
142
+ window.logError = function(e) {
143
+ console.error(e);
144
+ };
145
+ fetch(`https://archive.org/metadata/${ocaid}`)
146
+ .then(response => response.json())
147
+ .then(iaMetadata => fetchBookManifestAndInitializeBookreader(iaMetadata));
@@ -7,14 +7,14 @@
7
7
  <meta name="apple-mobile-web-app-capable" content="yes">
8
8
 
9
9
  <!-- JS dependencies -->
10
- <script src="../BookReader/jquery-1.10.1.js"></script>
10
+ <script src="../BookReader/webcomponents-bundle.js"></script>
11
+ <script src="../BookReader/jquery-3.js"></script>
11
12
 
12
13
 
13
14
  <!-- BookReader and plugins -->
14
15
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
15
16
  <script src="../BookReader/BookReader.js"></script>
16
17
  <script type="text/javascript" src="../BookReader/plugins/plugin.url.js"></script>
17
- <script type="text/javascript" src="../BookReader/plugins/plugin.menu_toggle.js"></script>
18
18
 
19
19
  <!-- Custom CSS overrides -->
20
20
  <link rel="stylesheet" href="BookReaderDemo.css"/>
@@ -7,15 +7,14 @@
7
7
  <meta name="apple-mobile-web-app-capable" content="yes">
8
8
 
9
9
  <!-- JS dependencies -->
10
- <script src="../BookReader/jquery-1.10.1.js"></script>
10
+ <script src="../BookReader/webcomponents-bundle.js"></script>
11
+ <script src="../BookReader/jquery-3.js"></script>
11
12
 
12
13
 
13
14
  <!-- BookReader and plugins -->
14
15
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
15
16
  <script src="../BookReader/BookReader.js"></script>
16
17
 
17
- <!-- Mobile nav plugin -->
18
- <script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
19
18
  <!-- Autoplay plugin -->
20
19
  <script src="../BookReader/plugins/plugin.autoplay.js"></script>
21
20
 
@@ -8,7 +8,8 @@
8
8
 
9
9
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
10
10
 
11
- <script src="../BookReader/jquery-1.10.1.js"></script>
11
+ <script src="../BookReader/webcomponents-bundle.js"></script>
12
+ <script src="../BookReader/jquery-3.js"></script>
12
13
 
13
14
 
14
15
  <script src="../BookReader/BookReader.js"></script>
@@ -7,16 +7,14 @@
7
7
  <meta name="apple-mobile-web-app-capable" content="yes">
8
8
 
9
9
  <!-- JS dependencies -->
10
- <script src="../BookReader/jquery-1.10.1.js"></script>
10
+ <script src="../BookReader/webcomponents-bundle.js"></script>
11
+ <script src="../BookReader/jquery-3.js"></script>
11
12
 
12
13
 
13
14
  <!-- BookReader and plugins -->
14
15
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
15
16
  <script src="../BookReader/BookReader.js"></script>
16
17
 
17
- <!-- Mobile nav plugin -->
18
- <script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
19
-
20
18
  <!-- URL-changing plugin -->
21
19
  <script src="../BookReader/plugins/plugin.url.js"></script>
22
20
 
@@ -30,7 +28,7 @@ html, body { width: 100%; height: 100%; margin: 0; padding: 0; background: grey;
30
28
  <div id="BookReader"></div>
31
29
  <script type="text/javascript" src="BookReaderJSSimple.js"></script>
32
30
  <script>
33
- instantiateBookReader('#BookReader', {mobileNavFullscreenOnly: true});
31
+ instantiateBookReader('#BookReader');
34
32
  </script>
35
33
  </body>
36
34
  </html>
@@ -7,16 +7,14 @@
7
7
  <meta name="apple-mobile-web-app-capable" content="yes">
8
8
 
9
9
  <!-- JS dependencies -->
10
- <script src="../BookReader/jquery-1.10.1.js"></script>
10
+ <script src="../BookReader/webcomponents-bundle.js"></script>
11
+ <script src="../BookReader/jquery-3.js"></script>
11
12
 
12
13
 
13
14
  <!-- BookReader and plugins -->
14
15
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
15
16
  <script src="../BookReader/BookReader.js"></script>
16
17
 
17
- <!-- Mobile nav plugin -->
18
- <script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
19
-
20
18
  <!-- URL-changing plugin -->
21
19
  <script src="../BookReader/plugins/plugin.url.js"></script>
22
20
 
@@ -4,31 +4,118 @@
4
4
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
5
5
  <meta name="apple-mobile-web-app-capable" content="yes">
6
6
 
7
+ <!-- WC dependencies -->
8
+ <script type="text/javascript" src="https://polyfill.io/v3/polyfill.min.js?features=es2015%2Ces5%2CglobalThis"></script>
9
+ <script type="text/javascript" src="https://unpkg.com/lit@2.1.2/polyfill-support.js"></script>
10
+ <script type="text/javascript" src="https://unpkg.com/@webcomponents/webcomponentsjs@2.2.10/webcomponents-bundle.js"></script>
11
+
12
+
7
13
  <!-- JS dependencies -->
8
- <script src="../BookReader/jquery-1.10.1.js"></script>
14
+ <script src="../BookReader/webcomponents-bundle.js"></script>
15
+ <script src="../BookReader/jquery-3.js"></script>
9
16
 
10
17
 
11
18
  <!-- BookReader -->
12
19
  <link rel="stylesheet" href="../BookReader/BookReader.css"/>
13
20
  <script src="../BookReader/BookReader.js"></script>
21
+ <script src="../BookReader/plugins/plugin.iiif.js"></script>
22
+ <script src="../BookReader/plugins/plugin.url.js"></script>
23
+
24
+ <script type="module" src="../BookReader/ia-bookreader-bundle.js"></script>
14
25
 
15
26
  <!-- Custom CSS overrides -->
16
27
  <link rel="stylesheet" href="BookReaderDemo.css"/>
17
28
 
29
+ <style>
30
+ body > section { padding: 0 10px; }
31
+ </style>
18
32
  </head>
19
33
  <body>
20
34
 
21
- <div id="BookReader">
22
- Internet Archive BookReader Demo<br/>
23
- <noscript>
24
- <p>
25
- The BookReader requires JavaScript to be enabled. Please check that your browser supports JavaScript and that it is enabled in the browser settings. You can also try one of the <a href="https://archive.org/details/goodytwoshoes00newyiala"> other formats of the book</a>.
26
- </p>
27
- </noscript>
28
- </div>
29
-
30
- <script src="IIIFBookReader.js"></script>
31
- <script src="demo-iiif.js"></script>
35
+ <ia-bookreader>
36
+ <div id="IABookReaderWrapper" slot="main">
37
+ <div id="BookReader" class="BookReader"></div>
38
+ </div>
39
+ <div>
40
+ Internet Archive BookReader Demo<br />
41
+ <noscript>
42
+ <p>
43
+ The BookReader requires JavaScript to be enabled. Please check that
44
+ your browser supports JavaScript and that it is enabled in the
45
+ browser settings.
46
+ </p>
47
+ </noscript>
48
+ </div>
49
+ </ia-bookreader>
50
+
51
+ <hr />
52
+
53
+ <section>
54
+ <form id="manifestForm">
55
+ Try another manifest: <input type="url" id="manifest"
56
+ value="https://view.nls.uk/manifest/2423/3907/242339078/manifest.json" size="60">
57
+ <input type="submit" value="Go">
58
+ </form>
59
+
60
+ <details open>
61
+ <summary>Test books</summary>
62
+ <ul>
63
+ <li>
64
+ Version 2.0 of the IIIF Presentation API
65
+ <ul>
66
+ <li>
67
+ <a
68
+ href="/BookReaderDemo/demo-iiif.html?manifest=https%3A%2F%2Fview.nls.uk%2Fmanifest%2F2423%2F3907%2F242339078%2Fmanifest.json">
69
+ https://view.nls.uk/manifest/2423/3907/242339078/manifest.json
70
+ </a>
71
+ </li>
72
+ </ul>
73
+ </li>
74
+ <li>
75
+ Version 3.0 of the IIIF Presentation API
76
+ <ul>
77
+ <li>
78
+ <a
79
+ href="/BookReaderDemo/demo-iiif.html?manifest=https%3A%2F%2Fiiif.archive.org%2Fiiif%2F3%2Fplatowithenglish04platuoft%2Fmanifest.json">
80
+ https://iiif.archive.org/iiif/3/platowithenglish04platuoft/manifest.json
81
+ </a>
82
+ </li>
83
+ </ul>
84
+ </li>
85
+ <li>
86
+ <a href="https://iiif.io/guides/finding_resources/">Find more books at iiif.io</a>
87
+ </li>
88
+ </ul>
89
+ </details>
90
+ </section>
91
+
92
+ <script>
93
+ const manifestInForm = document.getElementById('manifest').value;
94
+ const manifestInUrl = new URL(window.location.href).searchParams.get('manifest');
95
+ if (manifestInUrl) {
96
+ document.getElementById('manifest').value = manifestInUrl;
97
+ }
98
+
99
+ document.getElementById('manifestForm').addEventListener('submit', function (event) {
100
+ event.preventDefault();
101
+ window.location.search = `?manifest=${encodeURIComponent(document.getElementById('manifest').value)}`;
102
+ });
103
+
104
+ fetch(manifestInUrl || manifestInForm)
105
+ .then(response => response.json())
106
+ .then(manifest => {
107
+ window.br = new BookReader({
108
+ plugins: {
109
+ iiif: {
110
+ manifest: manifest
111
+ }
112
+ }
113
+ });
114
+
115
+ // Let's go!
116
+ br.init();
117
+ });
118
+ </script>
32
119
 
33
120
  </body>
34
121
  </html>