@internetarchive/bookreader 5.0.0-8 → 5.0.0-80

Sign up to get free protection for your applications and to get access to all the features.
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>