@internetarchive/bookreader 5.0.0-6-14 → 5.0.0-60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (271) hide show
  1. package/.eslintrc.js +17 -15
  2. package/.github/workflows/node.js.yml +72 -10
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +241 -140
  6. package/BookReader/BookReader.js +1 -1
  7. package/BookReader/BookReader.js.LICENSE.txt +24 -20
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1519 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +17 -0
  11. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  12. package/BookReader/icons/close-circle-dark.svg +1 -0
  13. package/BookReader/icons/magnify-minus.svg +1 -1
  14. package/BookReader/icons/magnify-plus.svg +1 -1
  15. package/BookReader/icons/pause.svg +1 -1
  16. package/BookReader/icons/playback-speed.svg +1 -1
  17. package/BookReader/icons/read-aloud.svg +1 -1
  18. package/BookReader/icons/voice.svg +1 -0
  19. package/BookReader/images/BRicons.svg +2 -2
  20. package/BookReader/images/books_graphic.svg +1 -1
  21. package/BookReader/images/icon_book.svg +1 -1
  22. package/BookReader/images/icon_gear.svg +1 -1
  23. package/BookReader/images/icon_info.svg +1 -1
  24. package/BookReader/images/icon_playback-rate.svg +1 -1
  25. package/BookReader/images/icon_search_button.svg +1 -1
  26. package/BookReader/images/icon_share.svg +1 -1
  27. package/BookReader/images/icon_speaker.svg +1 -1
  28. package/BookReader/images/icon_speaker_open.svg +1 -1
  29. package/BookReader/images/marker_chap-off.svg +1 -1
  30. package/BookReader/images/marker_chap-on.svg +1 -1
  31. package/BookReader/images/marker_srch-on.svg +1 -1
  32. package/BookReader/jquery-3.js +2 -0
  33. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  34. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  35. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  36. package/BookReader/plugins/plugin.autoplay.js +1 -1
  37. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  38. package/BookReader/plugins/plugin.chapters.js +1 -1
  39. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  40. package/BookReader/plugins/plugin.iframe.js +1 -1
  41. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  42. package/BookReader/plugins/plugin.mobile_nav.js +1 -1
  43. package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
  44. package/BookReader/plugins/plugin.resume.js +1 -1
  45. package/BookReader/plugins/plugin.resume.js.map +1 -1
  46. package/BookReader/plugins/plugin.search.js +1 -1
  47. package/BookReader/plugins/plugin.search.js.map +1 -1
  48. package/BookReader/plugins/plugin.text_selection.js +1 -1
  49. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  50. package/BookReader/plugins/plugin.tts.js +1 -1
  51. package/BookReader/plugins/plugin.tts.js.map +1 -1
  52. package/BookReader/plugins/plugin.url.js +1 -1
  53. package/BookReader/plugins/plugin.url.js.map +1 -1
  54. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  55. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  56. package/BookReader/webcomponents-bundle.js +3 -0
  57. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  58. package/BookReader/webcomponents-bundle.js.map +1 -0
  59. package/BookReaderDemo/BookReaderDemo.css +14 -1
  60. package/BookReaderDemo/BookReaderJSAutoplay.js +4 -1
  61. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  62. package/BookReaderDemo/IADemoBr.js +147 -0
  63. package/BookReaderDemo/demo-advanced.html +2 -2
  64. package/BookReaderDemo/demo-autoplay.html +2 -1
  65. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  66. package/BookReaderDemo/demo-fullscreen-mobile.html +2 -1
  67. package/BookReaderDemo/demo-fullscreen.html +2 -1
  68. package/BookReaderDemo/demo-iiif.html +2 -1
  69. package/BookReaderDemo/demo-internetarchive.html +84 -17
  70. package/BookReaderDemo/demo-multiple.html +2 -1
  71. package/BookReaderDemo/demo-preview-pages.html +2 -1
  72. package/BookReaderDemo/demo-simple.html +2 -1
  73. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -1
  74. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  75. package/BookReaderDemo/immersion-1up.html +2 -1
  76. package/BookReaderDemo/immersion-mode.html +2 -1
  77. package/BookReaderDemo/toggle_controls.html +2 -1
  78. package/BookReaderDemo/view_mode.html +2 -1
  79. package/BookReaderDemo/viewmode-cycle.html +2 -3
  80. package/CHANGELOG.md +244 -0
  81. package/README.md +14 -1
  82. package/babel.config.js +19 -0
  83. package/codecov.yml +6 -0
  84. package/index.html +3 -0
  85. package/jsconfig.json +19 -0
  86. package/netlify.toml +5 -0
  87. package/package.json +70 -59
  88. package/renovate.json +52 -0
  89. package/scripts/preversion.js +4 -1
  90. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  91. package/src/BookNavigator/assets/button-base.js +9 -2
  92. package/src/BookNavigator/assets/ia-logo.js +17 -0
  93. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  94. package/src/BookNavigator/assets/icon_close.js +1 -1
  95. package/src/BookNavigator/assets/icon_sort_asc.js +5 -0
  96. package/src/BookNavigator/assets/icon_sort_desc.js +5 -0
  97. package/src/BookNavigator/assets/icon_sort_neutral.js +5 -0
  98. package/src/BookNavigator/assets/icon_volumes.js +11 -0
  99. package/src/BookNavigator/book-navigator.js +585 -0
  100. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  101. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  102. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  103. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +3 -8
  104. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  105. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  106. package/src/BookNavigator/delete-modal-actions.js +1 -1
  107. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  108. package/src/BookNavigator/downloads/downloads.js +41 -25
  109. package/src/BookNavigator/search/search-provider.js +80 -28
  110. package/src/BookNavigator/search/search-results.js +34 -25
  111. package/src/BookNavigator/sharing.js +27 -0
  112. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +11 -10
  113. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +3 -3
  114. package/src/BookNavigator/volumes/volumes-provider.js +111 -0
  115. package/src/BookNavigator/volumes/volumes.js +188 -0
  116. package/src/BookReader/BookModel.js +59 -30
  117. package/src/BookReader/DebugConsole.js +3 -3
  118. package/src/BookReader/DragScrollable.js +233 -0
  119. package/src/BookReader/Mode1Up.js +56 -351
  120. package/src/BookReader/Mode1UpLit.js +391 -0
  121. package/src/BookReader/Mode2Up.js +73 -1318
  122. package/src/BookReader/Mode2UpLit.js +781 -0
  123. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  124. package/src/BookReader/ModeSmoothZoom.js +211 -0
  125. package/src/BookReader/ModeThumb.js +17 -11
  126. package/src/BookReader/Navbar/Navbar.js +10 -36
  127. package/src/BookReader/PageContainer.js +69 -6
  128. package/src/BookReader/ReduceSet.js +1 -1
  129. package/src/BookReader/Toolbar/Toolbar.js +10 -37
  130. package/src/BookReader/events.js +2 -0
  131. package/src/BookReader/options.js +24 -2
  132. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  133. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  134. package/src/BookReader/utils.js +108 -13
  135. package/src/BookReader.js +481 -828
  136. package/src/assets/icons/close-circle-dark.svg +1 -0
  137. package/src/assets/icons/magnify-minus.svg +3 -7
  138. package/src/assets/icons/magnify-plus.svg +3 -7
  139. package/src/assets/icons/voice.svg +1 -0
  140. package/src/css/_BRBookmarks.scss +1 -1
  141. package/src/css/_BRComponent.scss +1 -1
  142. package/src/css/_BRmain.scss +33 -0
  143. package/src/css/_BRnav.scss +4 -26
  144. package/src/css/_BRpages.scss +147 -40
  145. package/src/css/_BRsearch.scss +25 -11
  146. package/src/css/_TextSelection.scss +16 -17
  147. package/src/css/_colorbox.scss +2 -2
  148. package/src/css/_controls.scss +17 -5
  149. package/src/css/_icons.scss +7 -1
  150. package/src/ia-bookreader/ia-bookreader.js +224 -0
  151. package/src/plugins/plugin.archive_analytics.js +3 -3
  152. package/src/plugins/plugin.autoplay.js +4 -9
  153. package/src/plugins/plugin.chapters.js +28 -35
  154. package/src/plugins/plugin.mobile_nav.js +11 -10
  155. package/src/plugins/plugin.resume.js +3 -3
  156. package/src/plugins/plugin.text_selection.js +32 -41
  157. package/src/plugins/plugin.vendor-fullscreen.js +4 -4
  158. package/src/plugins/search/plugin.search.js +179 -103
  159. package/src/plugins/search/view.js +59 -44
  160. package/src/plugins/tts/AbstractTTSEngine.js +46 -37
  161. package/src/plugins/tts/FestivalTTSEngine.js +13 -14
  162. package/src/plugins/tts/PageChunk.js +15 -21
  163. package/src/plugins/tts/PageChunkIterator.js +8 -12
  164. package/src/plugins/tts/WebTTSEngine.js +87 -71
  165. package/src/plugins/tts/plugin.tts.js +94 -125
  166. package/src/plugins/tts/utils.js +0 -25
  167. package/src/plugins/url/UrlPlugin.js +193 -0
  168. package/src/plugins/{plugin.url.js → url/plugin.url.js} +45 -16
  169. package/src/util/docCookies.js +21 -2
  170. package/tests/e2e/README.md +37 -0
  171. package/tests/e2e/autoplay.test.js +2 -2
  172. package/tests/e2e/base.test.js +7 -7
  173. package/tests/e2e/helpers/base.js +28 -23
  174. package/tests/e2e/helpers/debug.js +1 -1
  175. package/tests/e2e/helpers/desktopSearch.js +14 -13
  176. package/tests/e2e/helpers/mobileSearch.js +3 -3
  177. package/tests/e2e/helpers/params.js +17 -0
  178. package/tests/e2e/helpers/rightToLeft.js +4 -10
  179. package/tests/e2e/models/Navigation.js +13 -4
  180. package/tests/e2e/rightToLeft.test.js +4 -5
  181. package/tests/e2e/viewmode.test.js +40 -33
  182. package/tests/jest/BookNavigator/book-navigator.test.js +658 -0
  183. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  184. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  185. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  186. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  187. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  188. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  189. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  190. package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +104 -60
  191. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  192. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  193. package/tests/jest/BookNavigator/volumes/volumes-provider.test.js +184 -0
  194. package/tests/jest/BookNavigator/volumes/volumes.test.js +97 -0
  195. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +59 -14
  196. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  197. package/tests/{BookReader → jest/BookReader}/DebugConsole.test.js +1 -1
  198. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  199. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  200. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  201. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  202. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  203. package/tests/jest/BookReader/ModeSmoothZoom.test.js +175 -0
  204. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  205. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +10 -10
  206. package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +88 -6
  207. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  208. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
  209. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  210. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  211. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  212. package/tests/jest/BookReader/utils.test.js +217 -0
  213. package/tests/jest/BookReader.keyboard.test.js +190 -0
  214. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
  215. package/tests/{BookReader.test.js → jest/BookReader.test.js} +26 -37
  216. package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
  217. package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +4 -4
  218. package/tests/{plugins → jest/plugins}/plugin.chapters.test.js +10 -11
  219. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
  220. package/tests/{plugins → jest/plugins}/plugin.mobile_nav.test.js +5 -5
  221. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
  222. package/tests/{plugins → jest/plugins}/plugin.text_selection.test.js +39 -47
  223. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  224. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +57 -47
  225. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +35 -6
  226. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +9 -9
  227. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  228. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  229. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  230. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  231. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  232. package/tests/jest/plugins/url/UrlPlugin.test.js +190 -0
  233. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +53 -14
  234. package/tests/jest/setup.js +3 -0
  235. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  236. package/tests/jest/util/docCookies.test.js +24 -0
  237. package/tests/{util → jest/util}/strings.test.js +1 -1
  238. package/tests/{utils.js → jest/utils.js} +38 -0
  239. package/webpack.config.js +11 -5
  240. package/.babelrc +0 -12
  241. package/.dependabot/config.yml +0 -6
  242. package/.testcaferc.json +0 -5
  243. package/BookReader/bookreader-component-bundle.js +0 -1450
  244. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  245. package/BookReader/bookreader-component-bundle.js.map +0 -1
  246. package/BookReader/jquery-1.10.1.js +0 -2
  247. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  248. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  249. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  250. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  251. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  252. package/karma.conf.js +0 -23
  253. package/src/BookNavigator/BookModel.js +0 -14
  254. package/src/BookNavigator/BookNavigator.js +0 -438
  255. package/src/BookNavigator/assets/book-loader.js +0 -27
  256. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  257. package/src/BookNavigator/search/a-search-result.js +0 -55
  258. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  259. package/src/ItemNavigator/ItemNavigator.js +0 -372
  260. package/src/ItemNavigator/providers/sharing.js +0 -29
  261. package/src/dragscrollable-br.js +0 -261
  262. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  263. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  264. package/tests/BookReader/Mode1Up.test.js +0 -164
  265. package/tests/BookReader/Mode2Up.test.js +0 -247
  266. package/tests/BookReader/utils.test.js +0 -109
  267. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  268. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  269. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  270. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  271. package/tests/util/docCookies.test.js +0 -15
@@ -76,7 +76,7 @@
76
76
  background: transparent;
77
77
  }
78
78
 
79
- .shift {
79
+ .br-colorbox-shift {
80
80
  position: absolute !important;
81
81
  left: -10000px !important;
82
82
  }
@@ -126,6 +126,7 @@
126
126
  position: relative;
127
127
  overflow: hidden;
128
128
  background-color: black;
129
+ contain: strict;
129
130
  }
130
131
 
131
132
  .BRcontainer {
@@ -150,6 +151,21 @@
150
151
  z-index: 3000;
151
152
  color: #222;
152
153
  }
154
+ .BRprogresspopup .close-popup {
155
+ position: absolute;
156
+ top: 0;
157
+ right: 0;
158
+ width: 30px;
159
+ width: 30px;
160
+ padding: 0;
161
+ border: 0;
162
+ background-color: transparent;
163
+ }
164
+ .BRprogresspopup .close-popup .icon.icon-close-dark {
165
+ position: absolute;
166
+ top: 5px;
167
+ right: 5px;
168
+ }
153
169
 
154
170
  .BRprogressbar {
155
171
  background-image: url("images/progressbar.gif");
@@ -189,7 +205,7 @@
189
205
  display: block;
190
206
  }
191
207
  .BRshare button[type=button].share-finished {
192
- background-color: #4a90e2;
208
+ background-color: rgb(74, 144, 226);
193
209
  border: 0;
194
210
  color: white;
195
211
  border-radius: 3px;
@@ -212,13 +228,13 @@
212
228
  }
213
229
 
214
230
  .BRinfoMoreInfoWrapper {
215
- background-color: #4a90e2;
231
+ background-color: rgb(74, 144, 226);
216
232
  border-radius: 2px;
217
233
  padding: 8px;
218
234
  text-align: center;
219
235
  }
220
236
  .BRinfoMoreInfoWrapper:active {
221
- background-color: #509bf2;
237
+ background-color: rgb(80, 155, 242);
222
238
  }
223
239
 
224
240
  .BRinfoOtherFormats {
@@ -269,10 +285,10 @@ body.BRfullscreenActive .mm-menu {
269
285
  line-height: 1;
270
286
  }
271
287
  .BRaction:active {
272
- background-color: #ababab;
288
+ background-color: rgb(171, 171, 171);
273
289
  }
274
290
  .BRaction.default {
275
- background-color: #c1c1c1;
291
+ background-color: rgb(193, 193, 193);
276
292
  color: white;
277
293
  }
278
294
  .BRaction.primary {
@@ -287,7 +303,7 @@ body.BRfullscreenActive .mm-menu {
287
303
  color: orange;
288
304
  }
289
305
  .BRaction.orangeButton:active {
290
- border-color: #f9c613;
306
+ border-color: rgb(249, 198, 19);
291
307
  }
292
308
  .BRaction.skinny {
293
309
  min-width: 50px;
@@ -426,6 +442,23 @@ body.BRfullscreenActive .mm-menu {
426
442
  background-color: white;
427
443
  }
428
444
 
445
+ .BRfullscreenAnimation .br-mode-2up__book {
446
+ transition: transform 0.2s ease-in-out;
447
+ }
448
+
449
+ .fullscreenActive.BRmodeThumb .BRcontainer,
450
+ .fullscreenActive.BRmode1up .BRcontainer {
451
+ animation: flash 0.3s ease-in-out;
452
+ }
453
+
454
+ @keyframes flash {
455
+ 0% {
456
+ opacity: 0;
457
+ }
458
+ 100% {
459
+ opacity: 1;
460
+ }
461
+ }
429
462
  .BRpageview {
430
463
  position: relative;
431
464
  margin: auto;
@@ -438,7 +471,7 @@ body.BRfullscreenActive .mm-menu {
438
471
  border: 0;
439
472
  }
440
473
 
441
- .BRmodeThumb .BRpagecontainer, .BRmode2Up .BRpagecontainer {
474
+ .BRmodeThumb .BRpagecontainer, .BRmode2up .BRpagecontainer {
442
475
  cursor: pointer;
443
476
  }
444
477
 
@@ -446,6 +479,23 @@ body.BRfullscreenActive .mm-menu {
446
479
  cursor: unset;
447
480
  }
448
481
 
482
+ .br-mode-1up__root {
483
+ display: block;
484
+ overflow: auto;
485
+ position: relative;
486
+ width: 100%;
487
+ height: 100%;
488
+ contain: strict;
489
+ }
490
+ .br-mode-1up__root .br-mode-1up__world {
491
+ position: absolute;
492
+ transform-origin: 0 0;
493
+ }
494
+ .br-mode-1up__root .br-mode-1up__visible-world {
495
+ position: absolute;
496
+ transform-origin: 0 0;
497
+ }
498
+
449
499
  .BRpagecontainer {
450
500
  position: relative;
451
501
  overflow: hidden;
@@ -476,61 +526,127 @@ body.BRfullscreenActive .mm-menu {
476
526
  background-image: none;
477
527
  }
478
528
 
479
- .BRbookcover {
529
+ svg.BRPageLayer {
480
530
  position: absolute;
481
- background-image: none;
482
- box-shadow: 1px 0 10px #111;
531
+ top: 0;
532
+ left: 0;
533
+ right: 0;
534
+ bottom: 0;
483
535
  }
484
536
 
485
- .BRPreview .BRpageimage {
486
- background-color: #eee;
487
- -webkit-filter: grayscale(100%);
488
- filter: grayscale(100%);
537
+ .BRpageFlipping .BRPageLayer {
538
+ display: none;
489
539
  }
490
540
 
491
- .BRleafEdgeR {
492
- border-style: solid solid solid none;
493
- border-color: #333322;
494
- border-width: 1px 1px 1px 0px;
495
- background: transparent url(images/back_pages.png) repeat scroll 0% 0%;
496
- position: absolute;
497
- cursor: pointer;
541
+ .br-mode-2up__root {
542
+ display: block;
543
+ overflow: auto;
544
+ width: 100%;
545
+ height: 100%;
498
546
  }
499
547
 
500
- .BRleafEdgeL {
501
- /* border-style: solid none solid solid;
502
- border-color: rgb(51, 51, 34);
503
- border-width: 1px 0px 1px 1px; */
504
- background: transparent url(images/back_pages.png) repeat scroll 0% 0%;
505
- /* XXXmang replace file */
548
+ .br-mode-2up__book {
549
+ position: relative;
550
+ transform-origin: 0 0;
551
+ width: 0px;
552
+ height: 0px;
553
+ }
554
+
555
+ .BRmode2up {
556
+ transition: opacity 0.2s;
557
+ }
558
+
559
+ .BRmode2up .BRpagecontainer {
560
+ backface-visibility: hidden;
561
+ }
562
+ .BRmode2up .BRpagecontainer:not(.BRpage-visible) {
563
+ display: none;
564
+ }
565
+
566
+ .br-mode-2up__leafs {
506
567
  position: absolute;
507
568
  cursor: pointer;
569
+ top: 0;
570
+ transform-style: preserve-3d;
508
571
  }
509
-
510
- .BRleafEdgeTmp {
511
- /* border-style: solid none solid solid;
512
- border-color: rgb(51, 51, 34);
513
- border-width: 1px 0px 1px 1px; */
514
- background: transparent url(images/back_pages.png) repeat scroll 0% 0%;
515
- /* XXXmang replace file */
572
+ .br-mode-2up__leafs[side=left] {
573
+ border-radius: 4px 0 0 4px;
574
+ }
575
+ .br-mode-2up__leafs[side=left] .br-leaf-edges__label {
576
+ padding-right: 10px;
577
+ border-radius: 4px 0 0 4px;
578
+ }
579
+ .br-mode-2up__leafs[side=right] {
580
+ border-radius: 0 4px 4px 0;
581
+ }
582
+ .br-mode-2up__leafs[side=right] .br-leaf-edges__label {
583
+ padding-left: 20px;
584
+ border-radius: 0 4px 4px 0;
585
+ }
586
+ .br-mode-2up__leafs.br-mode-2up__leafs--flipping {
587
+ z-index: 200000;
588
+ transition: transform 5s;
589
+ transition-timing-function: ease-in-out;
590
+ border-radius: 0;
591
+ }
592
+ .br-mode-2up__leafs.br-mode-2up__leafs--flipping:before {
593
+ content: "";
594
+ display: block;
595
+ width: 100%;
596
+ height: 100%;
516
597
  position: absolute;
598
+ transform: rotateY(-90deg);
517
599
  }
518
-
519
- .BRgutter {
520
- /* border: 1px solid rgb(68, 25, 17); */
600
+ .br-mode-2up__leafs, .br-mode-2up__leafs.br-mode-2up__leafs--flipping::before {
601
+ background: transparent url(images/back_pages.png) repeat scroll 0% 0%;
602
+ }
603
+ .br-mode-2up__leafs .br-leaf-edges__bar {
604
+ display: none;
605
+ pointer-events: none;
521
606
  position: absolute;
522
- background: transparent url(images/booksplit.png) repeat scroll 0% 0%;
607
+ top: 0;
608
+ bottom: 0;
609
+ min-width: 1px;
610
+ background-color: #9A9B9D;
611
+ opacity: 0.85;
612
+ transform: translateX(-50%);
523
613
  }
524
-
525
- .BRtwoPagePopUp {
526
- padding: 6px;
614
+ .br-mode-2up__leafs .br-leaf-edges__label {
615
+ display: none;
616
+ pointer-events: none;
617
+ z-index: 1000;
527
618
  position: absolute;
528
- font-size: 12px;
619
+ padding: 6px;
529
620
  color: white;
530
621
  background-color: #9A9B9D;
531
622
  opacity: 0.85;
532
- border-radius: 4px;
533
623
  white-space: nowrap;
624
+ transform: translateY(-10px);
625
+ }
626
+
627
+ .br-mode-2up--flipping-left .BRpage-entering[data-side=R] {
628
+ z-index: 10;
629
+ transform-origin: left;
630
+ transform: rotateY(0deg);
631
+ }
632
+ .br-mode-2up--flipping-left .BRpage-exiting[data-side=L] {
633
+ z-index: 10;
634
+ transform-origin: right;
635
+ }
636
+ .br-mode-2up--flipping-left .BRpage-exiting[data-side=R] {
637
+ z-index: 9;
638
+ }
639
+
640
+ .br-mode-2up--flipping-right .BRpage-entering[data-side=L] {
641
+ z-index: 10;
642
+ transform-origin: right;
643
+ }
644
+ .br-mode-2up--flipping-right .BRpage-exiting[data-side=R] {
645
+ z-index: 10;
646
+ transform-origin: left;
647
+ }
648
+ .br-mode-2up--flipping-right .BRpage-exiting[data-side=L] {
649
+ z-index: 9;
534
650
  }
535
651
 
536
652
  .BRToolbarButton, .BRicon {
@@ -710,7 +826,7 @@ i.BRicon {
710
826
  * BRfloat is the modal popup used in bookreader
711
827
  */
712
828
  .BRfloat {
713
- color: #343434;
829
+ color: rgb(52, 52, 52);
714
830
  }
715
831
 
716
832
  .BRfloat a.title {
@@ -881,7 +997,7 @@ i.BRicon {
881
997
  font-size: 16px;
882
998
  font-weight: 700;
883
999
  text-align: center;
884
- border-bottom: 1px solid #d8d8d8;
1000
+ border-bottom: 1px solid rgb(216, 216, 216);
885
1001
  }
886
1002
 
887
1003
  .BRfloatFoot {
@@ -900,7 +1016,7 @@ i.BRicon {
900
1016
  .BRfloatHead {
901
1017
  box-sizing: border-box;
902
1018
  line-height: normal;
903
- border-bottom: 1px solid #d8d8d8;
1019
+ border-bottom: 1px solid rgb(216, 216, 216);
904
1020
  padding: 10px;
905
1021
  min-height: initial;
906
1022
  font-size: 14px;
@@ -1032,44 +1148,6 @@ i.BRicon {
1032
1148
  .BRReadAloudToolbar .BRnavCntlBtm:hover {
1033
1149
  background-color: #0074D1;
1034
1150
  }
1035
- .BRReadAloudToolbar.BRnavEmbed {
1036
- background-color: white;
1037
- color: black;
1038
- }
1039
- .BRReadAloudToolbar.BRnavEmbed a {
1040
- color: black;
1041
- }
1042
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider {
1043
- background: #B7B7B7;
1044
- }
1045
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider .ui-slider-handle {
1046
- background: #0074D1;
1047
- }
1048
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider .ui-slider-range {
1049
- background: rgba(0, 116, 209, 0.25);
1050
- }
1051
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon {
1052
- border-left: 1px solid #979797;
1053
- }
1054
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon.activated {
1055
- background-color: rgba(0, 116, 209, 0.4);
1056
- }
1057
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon.activated:before {
1058
- content: "";
1059
- top: 0;
1060
- left: 0;
1061
- width: 100%;
1062
- height: 100%;
1063
- box-sizing: border-box;
1064
- display: block;
1065
- border: 3px solid rgba(0, 116, 209, 0.3);
1066
- }
1067
- .BRReadAloudToolbar.BRnavEmbed .BRnavCntl {
1068
- background-color: #979797;
1069
- }
1070
- .BRReadAloudToolbar.BRnavEmbed .BRnavCntlBtm:hover {
1071
- background-color: #0074D1;
1072
- }
1073
1151
  @media (max-width: 800px) {
1074
1152
  .BRbodyMobileNavEnabled .BRReadAloudToolbar, .BRbodyMobileNavEnabledFullscreen.BRfullscreenActive .BRReadAloudToolbar {
1075
1153
  background-color: white;
@@ -1190,23 +1268,6 @@ i.BRicon {
1190
1268
  color: white;
1191
1269
  /* Full mobile styles */
1192
1270
  }
1193
- .BRnav.BRnavEmbed {
1194
- padding-top: 0;
1195
- height: auto;
1196
- align-items: center;
1197
- }
1198
- .BRnav.BRnavEmbed .BRembedreturn {
1199
- flex: 1 auto;
1200
- overflow-x: hidden;
1201
- }
1202
- .BRnav.BRnavEmbed .logo {
1203
- display: inline-block;
1204
- width: 25px;
1205
- height: 25px;
1206
- margin: 0 10px;
1207
- background: transparent url(images/icon_home.svg) no-repeat center center;
1208
- background-size: contain;
1209
- }
1210
1271
  .BRnav a {
1211
1272
  color: white;
1212
1273
  }
@@ -1500,14 +1561,46 @@ i.BRicon {
1500
1561
  border-top-color: #333;
1501
1562
  }
1502
1563
 
1503
- .BookReader .BookReaderSearchHilite, .BRmobileMenu .BookReaderSearchHilite, .BRfloat .BookReaderSearchHilite {
1504
- opacity: 0.2;
1505
- filter: alpha(opacity=20);
1506
- background-color: #0000ff;
1507
- position: absolute;
1508
- /* z-index is important */
1509
- z-index: 4;
1510
- animation: hiliteFadeIn 0.2s;
1564
+ .BookReader .searchHiliteLayer, .BookReader .ttsHiliteLayer, .BRmobileMenu .searchHiliteLayer, .BRmobileMenu .ttsHiliteLayer, .BRfloat .searchHiliteLayer, .BRfloat .ttsHiliteLayer {
1565
+ pointer-events: none;
1566
+ }
1567
+ .BookReader .searchHiliteLayer rect, .BookReader .ttsHiliteLayer rect, .BRmobileMenu .searchHiliteLayer rect, .BRmobileMenu .ttsHiliteLayer rect, .BRfloat .searchHiliteLayer rect, .BRfloat .ttsHiliteLayer rect {
1568
+ fill: rgba(0, 0, 255, 0.2);
1569
+ }
1570
+ .BookReader .searchHiliteLayer rect, .BRmobileMenu .searchHiliteLayer rect, .BRfloat .searchHiliteLayer rect {
1571
+ animation: highlightFocus 600ms 1 reverse;
1572
+ stroke: blue;
1573
+ stroke-width: 4px;
1574
+ }
1575
+ .BookReader .searchHiliteLayer rect:nth-child(1), .BRmobileMenu .searchHiliteLayer rect:nth-child(1), .BRfloat .searchHiliteLayer rect:nth-child(1) {
1576
+ animation-delay: 0ms;
1577
+ }
1578
+ .BookReader .searchHiliteLayer rect:nth-child(2), .BRmobileMenu .searchHiliteLayer rect:nth-child(2), .BRfloat .searchHiliteLayer rect:nth-child(2) {
1579
+ animation-delay: 50ms;
1580
+ }
1581
+ .BookReader .searchHiliteLayer rect:nth-child(3), .BRmobileMenu .searchHiliteLayer rect:nth-child(3), .BRfloat .searchHiliteLayer rect:nth-child(3) {
1582
+ animation-delay: 100ms;
1583
+ }
1584
+ .BookReader .searchHiliteLayer rect:nth-child(4), .BRmobileMenu .searchHiliteLayer rect:nth-child(4), .BRfloat .searchHiliteLayer rect:nth-child(4) {
1585
+ animation-delay: 150ms;
1586
+ }
1587
+ .BookReader .searchHiliteLayer rect:nth-child(5), .BRmobileMenu .searchHiliteLayer rect:nth-child(5), .BRfloat .searchHiliteLayer rect:nth-child(5) {
1588
+ animation-delay: 200ms;
1589
+ }
1590
+ .BookReader .searchHiliteLayer rect:nth-child(6), .BRmobileMenu .searchHiliteLayer rect:nth-child(6), .BRfloat .searchHiliteLayer rect:nth-child(6) {
1591
+ animation-delay: 250ms;
1592
+ }
1593
+ .BookReader .searchHiliteLayer rect:nth-child(7), .BRmobileMenu .searchHiliteLayer rect:nth-child(7), .BRfloat .searchHiliteLayer rect:nth-child(7) {
1594
+ animation-delay: 300ms;
1595
+ }
1596
+ .BookReader .searchHiliteLayer rect:nth-child(8), .BRmobileMenu .searchHiliteLayer rect:nth-child(8), .BRfloat .searchHiliteLayer rect:nth-child(8) {
1597
+ animation-delay: 350ms;
1598
+ }
1599
+ .BookReader .searchHiliteLayer rect:nth-child(9), .BRmobileMenu .searchHiliteLayer rect:nth-child(9), .BRfloat .searchHiliteLayer rect:nth-child(9) {
1600
+ animation-delay: 400ms;
1601
+ }
1602
+ .BookReader .searchHiliteLayer rect:nth-child(10), .BRmobileMenu .searchHiliteLayer rect:nth-child(10), .BRfloat .searchHiliteLayer rect:nth-child(10) {
1603
+ animation-delay: 450ms;
1511
1604
  }
1512
1605
  .BookReader .BRchapter, .BookReader .BRsearch, .BRmobileMenu .BRchapter, .BRmobileMenu .BRsearch, .BRfloat .BRchapter, .BRfloat .BRsearch {
1513
1606
  position: absolute;
@@ -1659,12 +1752,9 @@ i.BRicon {
1659
1752
  display: none;
1660
1753
  }
1661
1754
 
1662
- @keyframes hiliteFadeIn {
1663
- from {
1664
- opacity: 0;
1665
- }
1755
+ @keyframes highlightFocus {
1666
1756
  to {
1667
- opacity: 0.2;
1757
+ stroke-width: 20px;
1668
1758
  }
1669
1759
  }
1670
1760
  /* Mid size breakpoint */
@@ -2287,7 +2377,7 @@ html.mm-opening .mm-slideout {
2287
2377
 
2288
2378
  .mm-panel h1 {
2289
2379
  margin-top: 0;
2290
- color: #245e83;
2380
+ color: rgb(36, 94, 131);
2291
2381
  font-size: 14px;
2292
2382
  }
2293
2383
 
@@ -2566,7 +2656,7 @@ li.BRtable-contents-el .BRTOCElementPage {
2566
2656
  }
2567
2657
 
2568
2658
  .icon-fullscreen-exit {
2569
- background-image: url("icons/fullscreen-exit.svg");
2659
+ background-image: url("icons/fullscreen_exit.svg");
2570
2660
  }
2571
2661
 
2572
2662
  .icon-thumb {
@@ -2643,6 +2733,12 @@ li.BRtable-contents-el .BRTOCElementPage {
2643
2733
  background-image: url("icons/close-circle.svg");
2644
2734
  }
2645
2735
 
2736
+ .icon-close-dark {
2737
+ width: 12px;
2738
+ height: 12px;
2739
+ background-image: url("icons/close-circle-dark.svg");
2740
+ }
2741
+
2646
2742
  .BRcontrols {
2647
2743
  width: 100%;
2648
2744
  /* BookReader defaults overrides */
@@ -2669,23 +2765,29 @@ li.BRtable-contents-el .BRTOCElementPage {
2669
2765
  .BRfullscreenActive .BRcontrols .icon-fullscreen {
2670
2766
  background-image: url("icons/fullscreen_exit.svg");
2671
2767
  }
2672
- .BRcontrols select.playback-speed {
2673
- width: 24px;
2768
+ .BRcontrols select.playback-speed, .BRcontrols select.playback-voices {
2674
2769
  padding-top: 18px;
2675
2770
  -moz-appearance: none;
2676
2771
  -webkit-appearance: none;
2677
2772
  appearance: none;
2678
2773
  font-size: 10px;
2679
- text-align: center;
2680
2774
  text-align-last: center;
2681
2775
  color: #fff;
2682
2776
  border: none;
2683
2777
  cursor: pointer;
2684
- background: transparent url("icons/playback-speed.svg") 50% 0 no-repeat;
2685
2778
  }
2686
- .BRcontrols select.playback-speed option {
2779
+ .BRcontrols select.playback-speed option, .BRcontrols select.playback-speed optgroup, .BRcontrols select.playback-voices option, .BRcontrols select.playback-voices optgroup {
2687
2780
  background: #333;
2688
2781
  }
2782
+ .BRcontrols select.playback-speed {
2783
+ width: 30px;
2784
+ background: transparent url("icons/playback-speed.svg") 50% 0 no-repeat;
2785
+ }
2786
+ .BRcontrols select.playback-voices {
2787
+ width: 30px;
2788
+ background: transparent url("icons/voice.svg") 50% 0 no-repeat;
2789
+ background-size: 18px;
2790
+ }
2689
2791
  .BRcontrols .active {
2690
2792
  background: #fff;
2691
2793
  }
@@ -2738,6 +2840,10 @@ li.BRtable-contents-el .BRTOCElementPage {
2738
2840
  display: flex;
2739
2841
  animation: slideUp 0.2s;
2740
2842
  }
2843
+ .BRcontrols .read-aloud.visible button {
2844
+ width: unset;
2845
+ height: unset;
2846
+ }
2741
2847
  .BRcontrols .read-aloud li {
2742
2848
  padding: 0 10px;
2743
2849
  }
@@ -2858,11 +2964,7 @@ li.BRtable-contents-el .BRTOCElementPage {
2858
2964
  }
2859
2965
 
2860
2966
  .textSelectionSVG {
2861
- width: 100%;
2862
- position: absolute;
2863
- height: 100%;
2864
- top: 0;
2865
- left: 0;
2967
+ z-index: 2;
2866
2968
  pointer-events: none;
2867
2969
  }
2868
2970
  .textSelectionSVG .BRwordElement {
@@ -2873,39 +2975,38 @@ li.BRtable-contents-el .BRTOCElementPage {
2873
2975
  cursor: text;
2874
2976
  }
2875
2977
  .textSelectionSVG .BRwordElement::selection {
2876
- background: rgba(86, 158, 230, 0.4);
2978
+ background: hsla(210deg, 74%, 62%, 0.4);
2877
2979
  }
2878
2980
  .textSelectionSVG .BRwordElement::-moz-selection {
2879
- background: rgba(86, 158, 230, 0.4);
2981
+ background: hsla(210deg, 74%, 62%, 0.4);
2880
2982
  color: transparent;
2881
2983
  }
2882
2984
  .textSelectionSVG .BRparagElement {
2883
- fill: red;
2985
+ fill: transparent;
2884
2986
  cursor: text;
2885
2987
  white-space: pre;
2886
- fill-opacity: 0;
2887
2988
  font-family: Georgia, serif;
2888
2989
  }
2889
2990
 
2890
- .BRpagecontainer img {
2891
- -webkit-user-select: none;
2892
- -moz-user-select: none;
2893
- user-select: none;
2991
+ .BRsmooth-zooming .textSelectionSVG, .BRscrolling-active .textSelectionSVG {
2992
+ display: none;
2894
2993
  }
2895
2994
 
2896
- .BRpageFlipping .textSelectionSVG {
2995
+ .BRmode1up .BRpagecontainer:not(.BRpage-visible) .textSelectionSVG {
2897
2996
  display: none;
2898
2997
  }
2899
2998
 
2900
- .BRpagecontainer.BRemptypage .textSelectionSVG {
2901
- display: none;
2999
+ .BRpagecontainer img {
3000
+ -webkit-user-select: none;
3001
+ -moz-user-select: none;
3002
+ user-select: none;
2902
3003
  }
2903
3004
 
2904
3005
  /**
2905
3006
  * Hide modal-manager that loads item-navigator-modal
2906
3007
  * loading bookmarks related alert messages
2907
3008
  */
2908
- #item-navigator-modal {
3009
+ modal-manager[mode=closed] {
2909
3010
  display: none;
2910
3011
  }
2911
3012
 
@@ -2924,7 +3025,7 @@ li.BRtable-contents-el .BRTOCElementPage {
2924
3025
  opacity: 0;
2925
3026
  }
2926
3027
 
2927
- .BRtwopageview .BRpagecontainer[data-side=L] .bookmark-button {
3028
+ .BRmode2up .BRpagecontainer[data-side=L] .bookmark-button {
2928
3029
  right: auto;
2929
3030
  left: 0;
2930
3031
  }