@internetarchive/bookreader 5.0.0-7 → 5.0.0-70-a1

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 (307) 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 +396 -1129
  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 +1788 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +19 -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.resume.js +1 -1
  69. package/BookReader/plugins/plugin.resume.js.map +1 -1
  70. package/BookReader/plugins/plugin.search.js +2 -1
  71. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  72. package/BookReader/plugins/plugin.search.js.map +1 -1
  73. package/BookReader/plugins/plugin.text_selection.js +2 -1
  74. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  75. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  76. package/BookReader/plugins/plugin.tts.js +1 -1
  77. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  78. package/BookReader/plugins/plugin.tts.js.map +1 -1
  79. package/BookReader/plugins/plugin.url.js +1 -1
  80. package/BookReader/plugins/plugin.url.js.map +1 -1
  81. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  82. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  83. package/BookReader/webcomponents-bundle.js +3 -0
  84. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  85. package/BookReader/webcomponents-bundle.js.map +1 -0
  86. package/BookReaderDemo/BookReaderDemo.css +16 -19
  87. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  88. package/BookReaderDemo/BookReaderJSAutoplay.js +4 -1
  89. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  90. package/BookReaderDemo/IADemoBr.js +147 -0
  91. package/BookReaderDemo/demo-advanced.html +2 -2
  92. package/BookReaderDemo/demo-autoplay.html +2 -3
  93. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  94. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  95. package/BookReaderDemo/demo-fullscreen.html +2 -4
  96. package/BookReaderDemo/demo-iiif.html +2 -1
  97. package/BookReaderDemo/demo-iiif.js +0 -1
  98. package/BookReaderDemo/demo-internetarchive.html +213 -17
  99. package/BookReaderDemo/demo-multiple.html +2 -1
  100. package/BookReaderDemo/demo-preview-pages.html +2 -1
  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 +279 -0
  110. package/README.md +14 -1
  111. package/babel.config.js +20 -0
  112. package/codecov.yml +6 -0
  113. package/index.html +4 -1
  114. package/jsconfig.json +19 -0
  115. package/netlify.toml +9 -0
  116. package/package.json +69 -60
  117. package/renovate.json +52 -0
  118. package/scripts/preversion.js +4 -1
  119. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  120. package/src/BookNavigator/assets/button-base.js +4 -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 +586 -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 +3 -8
  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 +41 -25
  134. package/src/BookNavigator/search/search-provider.js +49 -27
  135. package/src/BookNavigator/search/search-results.js +23 -9
  136. package/src/BookNavigator/sharing.js +27 -0
  137. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +11 -10
  138. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +3 -3
  139. package/src/BookNavigator/volumes/volumes-provider.js +95 -0
  140. package/src/BookReader/BookModel.js +64 -34
  141. package/src/BookReader/DragScrollable.js +233 -0
  142. package/src/BookReader/Mode1Up.js +56 -351
  143. package/src/BookReader/Mode1UpLit.js +388 -0
  144. package/src/BookReader/Mode2Up.js +73 -1318
  145. package/src/BookReader/Mode2UpLit.js +776 -0
  146. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  147. package/src/BookReader/ModeSmoothZoom.js +312 -0
  148. package/src/BookReader/ModeThumb.js +18 -12
  149. package/src/BookReader/Navbar/Navbar.js +12 -38
  150. package/src/BookReader/PageContainer.js +81 -6
  151. package/src/BookReader/ReduceSet.js +1 -1
  152. package/src/BookReader/Toolbar/Toolbar.js +10 -37
  153. package/src/BookReader/events.js +2 -3
  154. package/src/BookReader/options.js +24 -2
  155. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  156. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  157. package/src/BookReader/utils/SelectionObserver.js +43 -0
  158. package/src/BookReader/utils.js +118 -13
  159. package/src/BookReader.js +423 -1056
  160. package/src/assets/icons/magnify-minus.svg +3 -7
  161. package/src/assets/icons/magnify-plus.svg +3 -7
  162. package/src/assets/icons/voice.svg +1 -0
  163. package/src/css/BookReader.scss +1 -5
  164. package/src/css/_BRBookmarks.scss +1 -1
  165. package/src/css/_BRComponent.scss +1 -1
  166. package/src/css/_BRmain.scss +16 -0
  167. package/src/css/_BRnav.scss +11 -38
  168. package/src/css/_BRpages.scss +149 -40
  169. package/src/css/_BRsearch.scss +67 -21
  170. package/src/css/_TextSelection.scss +87 -27
  171. package/src/css/_colorbox.scss +2 -2
  172. package/src/css/_controls.scss +20 -7
  173. package/src/css/_icons.scss +1 -1
  174. package/src/ia-bookreader/ia-bookreader.js +224 -0
  175. package/src/plugins/plugin.archive_analytics.js +3 -3
  176. package/src/plugins/plugin.autoplay.js +5 -11
  177. package/src/plugins/plugin.chapters.js +211 -186
  178. package/src/plugins/plugin.resume.js +3 -3
  179. package/src/plugins/plugin.text_selection.js +464 -134
  180. package/src/plugins/plugin.vendor-fullscreen.js +4 -4
  181. package/src/plugins/search/plugin.search.js +142 -125
  182. package/src/plugins/search/utils.js +43 -0
  183. package/src/plugins/search/view.js +33 -58
  184. package/src/plugins/tts/AbstractTTSEngine.js +46 -37
  185. package/src/plugins/tts/FestivalTTSEngine.js +13 -14
  186. package/src/plugins/tts/PageChunk.js +15 -21
  187. package/src/plugins/tts/PageChunkIterator.js +8 -12
  188. package/src/plugins/tts/WebTTSEngine.js +87 -71
  189. package/src/plugins/tts/plugin.tts.js +95 -126
  190. package/src/plugins/tts/utils.js +0 -25
  191. package/src/plugins/url/UrlPlugin.js +193 -0
  192. package/src/plugins/{plugin.url.js → url/plugin.url.js} +45 -16
  193. package/src/util/browserSniffing.js +22 -0
  194. package/src/util/docCookies.js +21 -2
  195. package/tests/e2e/README.md +37 -0
  196. package/tests/e2e/autoplay.test.js +2 -2
  197. package/tests/e2e/base.test.js +8 -16
  198. package/tests/e2e/helpers/base.js +53 -48
  199. package/tests/e2e/helpers/debug.js +1 -1
  200. package/tests/e2e/helpers/params.js +17 -0
  201. package/tests/e2e/helpers/rightToLeft.js +8 -14
  202. package/tests/e2e/helpers/search.js +73 -0
  203. package/tests/e2e/models/Navigation.js +20 -37
  204. package/tests/e2e/rightToLeft.test.js +4 -5
  205. package/tests/e2e/viewmode.test.js +40 -33
  206. package/tests/jest/BookNavigator/book-navigator.test.js +658 -0
  207. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  208. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  209. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  210. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  211. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  212. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  213. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  214. package/tests/{karma → jest}/BookNavigator/search/search-results.test.js +109 -60
  215. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  216. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  217. package/tests/jest/BookNavigator/volumes/volumes-provider.test.js +80 -0
  218. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  219. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  220. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  221. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  222. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  223. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  224. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  225. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  226. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  227. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +10 -10
  228. package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +88 -6
  229. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  230. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
  231. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  232. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  233. package/tests/jest/BookReader/utils/SelectionObserver.test.js +43 -0
  234. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  235. package/tests/jest/BookReader/utils.test.js +229 -0
  236. package/tests/jest/BookReader.keyboard.test.js +190 -0
  237. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
  238. package/tests/{BookReader.test.js → jest/BookReader.test.js} +26 -37
  239. package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
  240. package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +4 -4
  241. package/tests/jest/plugins/plugin.chapters.test.js +145 -0
  242. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
  243. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
  244. package/tests/jest/plugins/plugin.text_selection.test.js +317 -0
  245. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  246. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +25 -47
  247. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +39 -6
  248. package/tests/jest/plugins/search/utils.js +25 -0
  249. package/tests/jest/plugins/search/utils.test.js +29 -0
  250. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +9 -9
  251. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  252. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  253. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  254. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  255. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  256. package/tests/jest/plugins/url/UrlPlugin.test.js +190 -0
  257. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +53 -14
  258. package/tests/jest/setup.js +3 -0
  259. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  260. package/tests/jest/util/docCookies.test.js +24 -0
  261. package/tests/{util → jest/util}/strings.test.js +1 -1
  262. package/tests/{utils.js → jest/utils.js} +38 -0
  263. package/webpack.config.js +11 -6
  264. package/.babelrc +0 -12
  265. package/.dependabot/config.yml +0 -6
  266. package/.testcaferc.json +0 -5
  267. package/BookReader/bookreader-component-bundle.js +0 -1450
  268. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  269. package/BookReader/bookreader-component-bundle.js.map +0 -1
  270. package/BookReader/jquery-1.10.1.js +0 -2
  271. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  272. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  273. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  274. package/BookReader/plugins/plugin.mobile_nav.js +0 -2
  275. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  276. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  277. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  278. package/karma.conf.js +0 -23
  279. package/src/BookNavigator/BookModel.js +0 -14
  280. package/src/BookNavigator/BookNavigator.js +0 -446
  281. package/src/BookNavigator/assets/book-loader.js +0 -27
  282. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  283. package/src/BookNavigator/search/a-search-result.js +0 -55
  284. package/src/BookReader/DebugConsole.js +0 -54
  285. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  286. package/src/ItemNavigator/ItemNavigator.js +0 -376
  287. package/src/ItemNavigator/providers/sharing.js +0 -29
  288. package/src/css/_MobileNav.scss +0 -194
  289. package/src/dragscrollable-br.js +0 -261
  290. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  291. package/src/plugins/plugin.mobile_nav.js +0 -287
  292. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  293. package/tests/BookReader/DebugConsole.test.js +0 -25
  294. package/tests/BookReader/Mode1Up.test.js +0 -164
  295. package/tests/BookReader/Mode2Up.test.js +0 -247
  296. package/tests/BookReader/utils.test.js +0 -109
  297. package/tests/e2e/helpers/desktopSearch.js +0 -72
  298. package/tests/e2e/helpers/mobileSearch.js +0 -85
  299. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  300. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  301. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  302. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  303. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  304. package/tests/plugins/plugin.chapters.test.js +0 -130
  305. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  306. package/tests/plugins/plugin.text_selection.test.js +0 -203
  307. 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,21 @@ 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
+ height: var(--br-height);
21
36
  overflow: hidden;
22
37
  margin: 0 auto;
23
38
  }
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
 
@@ -5,7 +5,8 @@
5
5
  <meta name="apple-mobile-web-app-capable" content="yes">
6
6
 
7
7
  <!-- JS dependencies -->
8
- <script src="../BookReader/jquery-1.10.1.js"></script>
8
+ <script src="../BookReader/webcomponents-bundle.js"></script>
9
+ <script src="../BookReader/jquery-3.js"></script>
9
10
 
10
11
 
11
12
  <!-- BookReader -->
@@ -11,7 +11,6 @@ var br = new BookReader({
11
11
 
12
12
  // Override the path used to find UI images
13
13
  imagesBaseURL: '../BookReader/images/',
14
- enableMobileNav: false,
15
14
  });
16
15
 
17
16
  br.IIIF({
@@ -7,8 +7,14 @@
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
8
8
  <meta name="apple-mobile-web-app-capable" content="yes">
9
9
 
10
+ <!-- WC dependencies -->
11
+ <script type="text/javascript" src="https://polyfill.io/v3/polyfill.min.js?features=es2015%2Ces5%2CglobalThis"></script>
12
+ <script type="text/javascript" src="https://unpkg.com/lit@2.1.2/polyfill-support.js"></script>
13
+ <script type="text/javascript" src="https://unpkg.com/@webcomponents/webcomponentsjs@2.2.10/webcomponents-bundle.js"></script>
14
+
10
15
  <!-- JS dependencies -->
11
- <script src="../BookReader/jquery-1.10.1.js"></script>
16
+ <script src="../BookReader/webcomponents-bundle.js"></script>
17
+ <script src="../BookReader/jquery-3.js"></script>
12
18
 
13
19
 
14
20
  <!-- Bookreader -->
@@ -25,17 +31,21 @@
25
31
  <script src="../BookReader/plugins/plugin.archive_analytics.js"></script>
26
32
  <script src="../BookReader/plugins/plugin.text_selection.js"></script>
27
33
 
28
- <script type="module" src="../BookReader/bookreader-component-bundle.js"></script>
34
+ <script type="module" src="../BookReader/ia-bookreader-bundle.js"></script>
29
35
 
30
36
  <link rel="stylesheet" href="BookReaderDemo.css"/>
31
- </head>
37
+
38
+ <!-- IA scripts -->
39
+ <script src="https://archive.org/bookreader/BookReaderJSIA.js"></script>
40
+
41
+ </head>
32
42
 
33
43
  <body>
34
- <section style="width: 100%; overflow: hidden; background-color: black;">
44
+ <section class="theater" style="width: 100%; overflow: hidden; background-color: black;">
35
45
  <ia-bookreader
36
46
  baseHost="https://archive.org"
37
47
  >
38
- <div id="IABookReaderWrapper" slot="bookreader">
48
+ <div id="IABookReaderWrapper" slot="main">
39
49
  <div id="BookReader" class="BookReader"></div>
40
50
  </div>
41
51
  <div>
@@ -50,25 +60,211 @@
50
60
  </div>
51
61
  </ia-bookreader>
52
62
  </section>
53
- <section style="height: 800px; width: 200px;">
54
- <p>placeholder div to allow scrolling</p>
63
+ <style>
64
+ .demos {
65
+ height: 800px;
66
+ width: inherit;
67
+ padding: 10px;
68
+ }
69
+ .demo {
70
+ border: 1px solid white;
71
+ padding: 10px;
72
+ }
73
+ </style>
74
+ <section class="demos">
75
+ <details class="demo">
76
+ <summary>Test books</summary>
77
+ <ul>
78
+ <li>
79
+ Misc English book
80
+ <ul>
81
+ <li>
82
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=countofmontecris00duma_7">
83
+ <i>The Count of Monte-Cristo</i> by Alexandre Dumas
84
+ </a>
85
+ </li>
86
+ <li>
87
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=driitaleofdaring00bachuoft">
88
+ <i>D’ri and I</i> by Irving Bacheller
89
+ </a>
90
+ </li>
91
+ </ul>
92
+ </li>
93
+ <li>
94
+ Misc non-English book (<a href="https://archive.org/search?query=%21language%3Aeng&sort=-week&and%5B%5D=lending%3A%22is_readable%22&and%5B%5D=mediatype%3A%22texts%22">Search for more</a>)
95
+ <ul>
96
+ <li>
97
+ French: <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=lecomtedemontecr01dumauoft">
98
+ <i>Le Comte de Monte-Cristo</i> by Alexandre Dumas
99
+ </a>
100
+ </li>
101
+ </ul>
102
+ </li>
103
+ <li>
104
+ Right-to-left book (<a href="https://archive.org/search?query=page-progression%3Arl&sort=-week&and%5B%5D=lending%3A%22is_readable%22&and%5B%5D=mediatype%3A%22texts%22">Search for more</a>)
105
+ <ul>
106
+ <li>
107
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=gendaitankashu00meijuoft">
108
+ <i>Gendai tanka shu</i> by Meiji, Emperor of Japan
109
+ </a>
110
+ </li>
111
+ </ul>
112
+ </li>
113
+ <li>
114
+ Newspaper with columns
115
+ <ul>
116
+ <li>
117
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=Crusader-Vol_28_Nos_1-20_Sept_1986-April_1987">
118
+ Crusader-Vol_28_Nos_1-20_Sept_1986-April_1987
119
+ </a>
120
+ </li>
121
+ </ul>
122
+ </li>
123
+ <li>
124
+ Text Selection
125
+ <ul>
126
+ <li>
127
+ OCR with spaces inside each <code>&lt;WORD&gt;</code> element
128
+ <ul>
129
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=theworksofplato01platiala">
130
+ <i>The Works of Plato</i> by Plato
131
+ </a></li>
132
+ </ul>
133
+ </li>
134
+ <li>
135
+ Weird font-sizes/indents
136
+ <ul>
137
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=cihm_58393#page/n3">
138
+ Microfilm poster thing
139
+ </a></li>
140
+ </ul>
141
+ </li>
142
+ <li>
143
+ Book with short lines
144
+ <ul>
145
+ <li>
146
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=countofmontecris00duma_7#page/261/mode/2up">
147
+ <i>The Count of Monte-Cristo</i>, p.261, second last line
148
+ </a>
149
+ </li>
150
+ </ul>
151
+ </li>
152
+ <li>
153
+ Book with double-spaced lines
154
+ <ul>
155
+ <li>
156
+ <a href="/BookReaderDemo/demo-internetarchive.html?ocaid=calnevpipelineex02unit#page/n93/mode/2up">
157
+ calnevpipelineex02unit
158
+ </a>
159
+ </li>
160
+ </ul>
161
+ </li>
162
+ </ul>
163
+ </li>
164
+ <li>
165
+ Chapters
166
+ <ul>
167
+ <li>
168
+ Normal book with chapters
169
+ <ul>
170
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=adventureofsherl0000unse">
171
+ <i>The Adventures of Sherlock Holmes</i> by Arthur Conan Doyle
172
+ </a></li>
173
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=jalna00dela">
174
+ <i>Jalna</i> by Mazo de la Roche
175
+ </a></li>
176
+ </ul>
177
+ </li>
178
+ <li>
179
+ Book preview
180
+ <ul>
181
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=peoplewareproduc00dema_0">
182
+ <i>Peopleware</i> by Tom DeMarco and Timothy Lister
183
+ </a></li>
184
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=passionforbooksb00rabi">
185
+ <i>A Passion for Books</i>
186
+ </a></li>
187
+ </ul>
188
+ </li>
189
+ <li>
190
+ Book with levelled chapters
191
+ <ul>
192
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=notredamedepar01hugo">
193
+ <i>Notre-Dame de Paris: Tome Premier</i> par Victor Hugo
194
+ </a></li>
195
+ <li><a href="/BookReaderDemo/demo-internetarchive.html?ocaid=alanturingenigma0000hodg">
196
+ <i>Alan Turing: The Enigma</i> by Andrew Hodges
197
+ </a></li>
198
+ </ul>
199
+ </li>
200
+ </ul>
201
+ </li>
202
+ </ul>
203
+ </details>
204
+ <div class="demo">
205
+ <button id="toggle-loggedin">Toggle Logged in view</button>
206
+ <p>Features behind signed in gate: Bookmarks</p>
207
+ <p>Logged In Status: <span id="logged-in-status">Logged Out</span></p>
208
+ </div>
209
+ <div class="demo">
210
+ <button id="show-lcp">LCP Download option</button>
211
+ </div>
212
+ <div class="demo">
213
+ <button id="multi-volume">Multiple books</button>
214
+ </div>
215
+ <div class="demo">
216
+ <button id="start-fs">Start at Fullscreen</button>
217
+ </div>
218
+ <div class="demo">
219
+ <h3 id="placeholder">please wait as we are fetching the following: </h3>
220
+ <input type='checkbox' class='group1' name='itemMD' disabled>Item metadata</input><br>
221
+ <input type='checkbox' class='group1' name='bookManifest' disabled> Book manifest</input><br>
222
+ </div>
55
223
  </section>
224
+ <div class="demo">
225
+ <h3>Placeholder div to allow scrolling</h3>
226
+ </div>
56
227
 
228
+ <!-- Certain features, like Bookmarks, use modal-manager to draw their interface -->
229
+ <modal-manager></modal-manager>
230
+ <script >
231
+ // Set up demo things
232
+ const iaBR = document.querySelector('ia-bookreader');
233
+ const toggleLoginBtn = document.querySelector('#toggle-loggedin');
234
+ toggleLoginBtn.addEventListener('click', () => {
235
+ const currLoggedIn = iaBR.signedIn;
236
+ iaBR.signedIn = !currLoggedIn;
57
237
 
58
- <script id="pageUrl" type="text/javascript"></script>
59
-
60
- <script>
61
- var ocaid = location.href.match(/ocaid=([^&#]+)/i)[1];
238
+ document.querySelector('#logged-in-status').innerText = iaBR.signedIn ? 'Logged In' : 'Logged Out';
239
+ console.log("Toggled SignedIn state", iaBR.signedIn, { currLoggedIn })
240
+ });
62
241
 
63
- // Override options coming from IA
64
- BookReader.optionOverrides.imagesBaseURL = '/BookReader/images/';
242
+ const startFSBtn = document.querySelector('#start-fs');
243
+ startFSBtn.addEventListener('click', () => {
244
+ const urlParams = new URLSearchParams(window.location.search);
245
+ if (urlParams.has('view')) {
246
+ const url = new URL(window.location);
247
+ url.searchParams.delete('view');
248
+ window.history.pushState({}, '', url);
249
+ }
250
+ urlParams.set('view', 'theater');
251
+ window.location.search = urlParams.toString();
252
+ });
65
253
 
66
- // Temp; Circumvent bug in BookReaderJSIA code
67
- window.Sentry = null;
254
+ window.addEventListener('BookReader:PostInit', () => {
255
+ const placeholder = document.querySelector('#placeholder');
256
+ placeholder.innerHTML = 'Dependencies are complete, bookreader has loaded';
257
+ });
68
258
 
69
- var script_url = 'https://archive.org/bookreader/BookReaderJSLocate.php?subPrefix=&id=' + ocaid;
70
- document.getElementById('pageUrl').src = script_url;
259
+ // analytics stub
260
+ window.archive_analytics = {
261
+ send_event_no_sampling: (category, action, label) => {}, //console.log('~~~ NO SAMPLE EVENT CALLED: ', { category, action, label }),
262
+ send_event: (category, action, label) => {}, //console.log('~~~ send_event SAMPLE EVENT CALLED: ', { category, action, label }),
263
+ send_ping: (category, action, label) => {}, //console.log('~~~ send_ping SAMPLE EVENT CALLED: ', { category, action, label }),
264
+ }
71
265
  </script>
72
266
 
267
+ <!-- IA fetch demo -->
268
+ <script type="module" src="IADemoBr.js"></script>
73
269
  </body>
74
270
  </html>
@@ -7,7 +7,8 @@
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 -->
@@ -8,7 +8,8 @@
8
8
  <meta name="apple-mobile-web-app-capable" content="yes">
9
9
 
10
10
  <!-- JS dependencies -->
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
  <!-- BookReader and plugins -->
@@ -7,7 +7,8 @@
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 -->