@internetarchive/bookreader 5.0.0-4 → 5.0.0-40-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 (228) hide show
  1. package/.eslintrc.js +17 -15
  2. package/.github/workflows/node.js.yml +75 -4
  3. package/.github/workflows/npm-publish.yml +2 -16
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +83 -323
  6. package/BookReader/BookReader.js +1 -1
  7. package/BookReader/BookReader.js.LICENSE.txt +24 -0
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1623 -0
  10. package/BookReader/{bookreader-component-bundle.js.LICENSE.txt → ia-bookreader-bundle.js.LICENSE.txt} +14 -10
  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/voice.svg +1 -0
  16. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  17. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  18. package/BookReader/plugins/plugin.autoplay.js +1 -1
  19. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  20. package/BookReader/plugins/plugin.chapters.js +1 -1
  21. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  22. package/BookReader/plugins/plugin.iframe.js +1 -1
  23. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  24. package/BookReader/plugins/plugin.mobile_nav.js +1 -1
  25. package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
  26. package/BookReader/plugins/plugin.resume.js +1 -1
  27. package/BookReader/plugins/plugin.resume.js.map +1 -1
  28. package/BookReader/plugins/plugin.search.js +1 -1
  29. package/BookReader/plugins/plugin.search.js.map +1 -1
  30. package/BookReader/plugins/plugin.text_selection.js +1 -1
  31. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  32. package/BookReader/plugins/plugin.tts.js +1 -1
  33. package/BookReader/plugins/plugin.tts.js.map +1 -1
  34. package/BookReader/plugins/plugin.url.js +1 -1
  35. package/BookReader/plugins/plugin.url.js.map +1 -1
  36. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  37. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  38. package/BookReader/webcomponents-bundle.js +3 -0
  39. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  40. package/BookReader/webcomponents-bundle.js.map +1 -0
  41. package/BookReaderDemo/BookReaderDemo.css +14 -1
  42. package/BookReaderDemo/IADemoBr.js +120 -0
  43. package/BookReaderDemo/demo-advanced.html +1 -1
  44. package/BookReaderDemo/demo-autoplay.html +1 -0
  45. package/BookReaderDemo/demo-embed-iframe-src.html +1 -0
  46. package/BookReaderDemo/demo-fullscreen-mobile.html +1 -0
  47. package/BookReaderDemo/demo-fullscreen.html +1 -0
  48. package/BookReaderDemo/demo-iiif.html +1 -0
  49. package/BookReaderDemo/demo-internetarchive.html +74 -17
  50. package/BookReaderDemo/demo-multiple.html +1 -0
  51. package/BookReaderDemo/demo-preview-pages.html +1 -0
  52. package/BookReaderDemo/demo-simple.html +1 -0
  53. package/BookReaderDemo/demo-vendor-fullscreen.html +1 -0
  54. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  55. package/BookReaderDemo/immersion-1up.html +1 -0
  56. package/BookReaderDemo/immersion-mode.html +1 -0
  57. package/BookReaderDemo/toggle_controls.html +1 -0
  58. package/BookReaderDemo/view_mode.html +1 -0
  59. package/BookReaderDemo/viewmode-cycle.html +1 -2
  60. package/CHANGELOG.md +166 -0
  61. package/README.md +14 -1
  62. package/babel.config.js +18 -0
  63. package/codecov.yml +6 -0
  64. package/index.html +3 -0
  65. package/jsconfig.json +19 -0
  66. package/package.json +62 -47
  67. package/renovate.json +43 -0
  68. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  69. package/src/BookNavigator/assets/button-base.js +9 -2
  70. package/src/BookNavigator/assets/ia-logo.js +17 -0
  71. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  72. package/src/BookNavigator/assets/icon_close.js +1 -1
  73. package/src/BookNavigator/assets/icon_sort_asc.js +5 -0
  74. package/src/BookNavigator/assets/icon_sort_desc.js +5 -0
  75. package/src/BookNavigator/assets/icon_sort_neutral.js +5 -0
  76. package/src/BookNavigator/assets/icon_volumes.js +11 -0
  77. package/src/BookNavigator/book-navigator.js +556 -0
  78. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  79. package/src/BookNavigator/bookmarks/bookmark-edit.js +4 -4
  80. package/src/BookNavigator/bookmarks/bookmarks-list.js +3 -3
  81. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +3 -8
  82. package/src/BookNavigator/bookmarks/bookmarks-provider.js +23 -12
  83. package/src/BookNavigator/bookmarks/ia-bookmarks.js +98 -62
  84. package/src/BookNavigator/delete-modal-actions.js +1 -1
  85. package/src/BookNavigator/downloads/downloads-provider.js +23 -17
  86. package/src/BookNavigator/downloads/downloads.js +17 -25
  87. package/src/BookNavigator/search/a-search-result.js +3 -3
  88. package/src/BookNavigator/search/search-provider.js +57 -24
  89. package/src/BookNavigator/search/search-results.js +8 -20
  90. package/src/BookNavigator/sharing.js +27 -0
  91. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +11 -13
  92. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +4 -3
  93. package/src/BookNavigator/volumes/volumes-provider.js +114 -0
  94. package/src/BookNavigator/volumes/volumes.js +188 -0
  95. package/src/BookReader/DebugConsole.js +3 -3
  96. package/src/BookReader/DragScrollable.js +233 -0
  97. package/src/BookReader/Mode1Up.js +51 -351
  98. package/src/BookReader/Mode1UpLit.js +441 -0
  99. package/src/BookReader/Mode2Up.js +104 -71
  100. package/src/BookReader/ModeSmoothZoom.js +179 -0
  101. package/src/BookReader/ModeThumb.js +16 -8
  102. package/src/BookReader/Navbar/Navbar.js +2 -31
  103. package/src/BookReader/PageContainer.js +57 -6
  104. package/src/BookReader/ReduceSet.js +1 -1
  105. package/src/BookReader/Toolbar/Toolbar.js +7 -7
  106. package/src/BookReader/options.js +10 -0
  107. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  108. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  109. package/src/BookReader/utils.js +68 -13
  110. package/src/BookReader.js +375 -289
  111. package/src/assets/icons/close-circle-dark.svg +1 -0
  112. package/src/assets/icons/magnify-minus.svg +3 -7
  113. package/src/assets/icons/magnify-plus.svg +3 -7
  114. package/src/assets/icons/voice.svg +1 -0
  115. package/src/css/BookReader.scss +0 -12
  116. package/src/css/_BRComponent.scss +1 -1
  117. package/src/css/_BRmain.scss +19 -24
  118. package/src/css/_BRnav.scss +4 -26
  119. package/src/css/_BRpages.scss +35 -0
  120. package/src/css/_BRsearch.scss +11 -215
  121. package/src/css/_TextSelection.scss +14 -17
  122. package/src/css/_colorbox.scss +2 -2
  123. package/src/css/_controls.scss +16 -3
  124. package/src/css/_icons.scss +6 -0
  125. package/src/ia-bookreader/ia-bookreader.js +224 -0
  126. package/src/plugins/plugin.chapters.js +26 -33
  127. package/src/plugins/plugin.mobile_nav.js +11 -10
  128. package/src/plugins/plugin.resume.js +3 -3
  129. package/src/plugins/plugin.text_selection.js +26 -39
  130. package/src/plugins/plugin.vendor-fullscreen.js +4 -4
  131. package/src/plugins/search/plugin.search.js +106 -107
  132. package/src/plugins/search/view.js +50 -163
  133. package/src/plugins/tts/AbstractTTSEngine.js +46 -37
  134. package/src/plugins/tts/FestivalTTSEngine.js +12 -13
  135. package/src/plugins/tts/PageChunk.js +15 -21
  136. package/src/plugins/tts/PageChunkIterator.js +8 -12
  137. package/src/plugins/tts/WebTTSEngine.js +64 -68
  138. package/src/plugins/tts/plugin.tts.js +79 -108
  139. package/src/plugins/url/UrlPlugin.js +184 -0
  140. package/src/plugins/{plugin.url.js → url/plugin.url.js} +28 -6
  141. package/tests/e2e/README.md +37 -0
  142. package/tests/e2e/autoplay.test.js +2 -2
  143. package/tests/e2e/base.test.js +7 -7
  144. package/tests/e2e/helpers/base.js +8 -3
  145. package/tests/e2e/helpers/debug.js +1 -1
  146. package/tests/e2e/helpers/desktopSearch.js +14 -13
  147. package/tests/e2e/helpers/mobileSearch.js +3 -3
  148. package/tests/e2e/helpers/params.js +17 -0
  149. package/tests/e2e/models/Navigation.js +12 -3
  150. package/tests/e2e/rightToLeft.test.js +4 -5
  151. package/tests/e2e/viewmode.test.js +38 -33
  152. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +3 -3
  153. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +176 -0
  154. package/tests/{BookReader → jest/BookReader}/DebugConsole.test.js +1 -1
  155. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  156. package/tests/jest/BookReader/Mode1UpLit.test.js +88 -0
  157. package/tests/{BookReader → jest/BookReader}/Mode2Up.test.js +5 -7
  158. package/tests/jest/BookReader/ModeSmoothZoom.test.js +149 -0
  159. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  160. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +7 -7
  161. package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +79 -6
  162. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  163. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
  164. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  165. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  166. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  167. package/tests/jest/BookReader/utils.test.js +136 -0
  168. package/tests/jest/BookReader.keyboard.test.js +190 -0
  169. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
  170. package/tests/{BookReader.test.js → jest/BookReader.test.js} +20 -4
  171. package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
  172. package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +2 -2
  173. package/tests/{plugins → jest/plugins}/plugin.chapters.test.js +8 -8
  174. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
  175. package/tests/{plugins → jest/plugins}/plugin.mobile_nav.test.js +5 -5
  176. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
  177. package/tests/{plugins → jest/plugins}/plugin.text_selection.test.js +39 -47
  178. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  179. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +24 -25
  180. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +6 -6
  181. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +6 -6
  182. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  183. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  184. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  185. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +1 -1
  186. package/tests/{plugins → jest/plugins}/tts/utils.test.js +3 -3
  187. package/tests/jest/plugins/url/UrlPlugin.test.js +190 -0
  188. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +33 -14
  189. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  190. package/tests/{util → jest/util}/docCookies.test.js +1 -1
  191. package/tests/{util → jest/util}/strings.test.js +1 -1
  192. package/tests/{utils.js → jest/utils.js} +38 -0
  193. package/tests/karma/BookNavigator/book-navigator.test.js +501 -0
  194. package/tests/karma/BookNavigator/bookmarks/bookmark-button.test.js +44 -0
  195. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +1 -3
  196. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +3 -4
  197. package/tests/karma/BookNavigator/bookmarks/ia-bookmarks.test.js +57 -0
  198. package/tests/karma/BookNavigator/downloads/downloads-provider.test.js +67 -0
  199. package/tests/karma/BookNavigator/downloads/downloads.test.js +54 -0
  200. package/tests/karma/BookNavigator/search/search-provider.test.js +123 -0
  201. package/tests/karma/BookNavigator/{search-results.test.js → search/search-results.test.js} +1 -4
  202. package/tests/karma/BookNavigator/sharing/sharing-provider.test.js +49 -0
  203. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -2
  204. package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +184 -0
  205. package/tests/karma/BookNavigator/volumes/volumes.test.js +98 -0
  206. package/webpack.config.js +10 -4
  207. package/.babelrc +0 -12
  208. package/.dependabot/config.yml +0 -6
  209. package/.testcaferc.json +0 -5
  210. package/BookReader/bookreader-component-bundle.js +0 -1450
  211. package/BookReader/bookreader-component-bundle.js.map +0 -1
  212. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  213. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  214. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  215. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  216. package/src/BookNavigator/BookModel.js +0 -14
  217. package/src/BookNavigator/BookNavigator.js +0 -435
  218. package/src/BookNavigator/assets/book-loader.js +0 -27
  219. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  220. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  221. package/src/ItemNavigator/ItemNavigator.js +0 -372
  222. package/src/ItemNavigator/providers/sharing.js +0 -29
  223. package/src/dragscrollable-br.js +0 -261
  224. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  225. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  226. package/tests/BookReader/Mode1Up.test.js +0 -164
  227. package/tests/BookReader/utils.test.js +0 -109
  228. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
@@ -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
  }
@@ -91,70 +91,15 @@
91
91
  /* Desktop-only */
92
92
  /* Element-level rules */
93
93
  }
94
- .BookReader .tl, .BRmobileMenu .tl, .BRfloat .tl {
95
- text-align: left;
96
- }
97
- .BookReader .tc, .BookReader .BRtc, .BRmobileMenu .tc, .BRmobileMenu .BRtc, .BRfloat .tc, .BRfloat .BRtc {
98
- text-align: center;
99
- }
100
- .BookReader .tr, .BRmobileMenu .tr, .BRfloat .tr {
101
- text-align: right;
102
- }
103
- .BookReader .ph10, .BRmobileMenu .ph10, .BRfloat .ph10 {
104
- padding-left: 10px;
105
- padding-right: 10px;
106
- }
107
- .BookReader .mv20, .BRmobileMenu .mv20, .BRfloat .mv20 {
108
- margin-top: 20px;
109
- margin-bottom: 20px;
110
- }
111
- .BookReader .mt20, .BRmobileMenu .mt20, .BRfloat .mt20 {
112
- margin-top: 20px;
113
- }
114
- .BookReader .b, .BRmobileMenu .b, .BRfloat .b {
115
- font-weight: bold;
116
- }
117
- .BookReader .i, .BRmobileMenu .i, .BRfloat .i {
118
- font-style: italic;
119
- }
120
- .BookReader .smaller, .BRmobileMenu .smaller, .BRfloat .smaller {
121
- font-size: 0.8em;
122
- }
123
94
  .BookReader .larger, .BRmobileMenu .larger, .BRfloat .larger {
124
95
  font-size: 1.2em;
125
96
  }
126
- .BookReader .loader, .BRmobileMenu .loader, .BRfloat .loader {
127
- background: url(images/loading.gif) no-repeat 50%;
128
- height: 16px;
129
- min-width: 16px;
130
- }
131
97
  @media (min-width: 801px) {
132
- .BookReader .mobile-only, .BRmobileMenu .mobile-only, .BRfloat .mobile-only {
133
- display: none;
134
- }
135
- .BookReader .pv20-lg, .BRmobileMenu .pv20-lg, .BRfloat .pv20-lg {
136
- padding-top: 20px;
137
- padding-bottom: 20px;
138
- }
139
- .BookReader .pv50-lg, .BRmobileMenu .pv50-lg, .BRfloat .pv50-lg {
140
- padding-top: 50px;
141
- padding-bottom: 50px;
142
- }
143
98
  .BookReader .mv20-lg, .BRmobileMenu .mv20-lg, .BRfloat .mv20-lg {
144
99
  margin-top: 20px;
145
100
  margin-bottom: 20px;
146
101
  }
147
102
  }
148
- @media (max-width: 800px) {
149
- .BookReader .desktop-only, .BRmobileMenu .desktop-only, .BRfloat .desktop-only {
150
- display: none;
151
- }
152
- }
153
- @media (min-width: 800px) and (max-width: 1050px) {
154
- .BookReader .hide-md, .BRmobileMenu .hide-md, .BRfloat .hide-md {
155
- display: none;
156
- }
157
- }
158
103
  .BookReader h3, .BRmobileMenu h3, .BRfloat h3 {
159
104
  font-size: 20px;
160
105
  font-weight: 700;
@@ -181,6 +126,7 @@
181
126
  position: relative;
182
127
  overflow: hidden;
183
128
  background-color: black;
129
+ contain: strict;
184
130
  }
185
131
 
186
132
  .BRcontainer {
@@ -205,6 +151,21 @@
205
151
  z-index: 3000;
206
152
  color: #222;
207
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
+ }
208
169
 
209
170
  .BRprogressbar {
210
171
  background-image: url("images/progressbar.gif");
@@ -501,6 +462,23 @@ body.BRfullscreenActive .mm-menu {
501
462
  cursor: unset;
502
463
  }
503
464
 
465
+ .br-mode-1up__root {
466
+ display: block;
467
+ overflow: auto;
468
+ position: relative;
469
+ width: 100%;
470
+ height: 100%;
471
+ contain: strict;
472
+ }
473
+ .br-mode-1up__root .br-mode-1up__world {
474
+ position: absolute;
475
+ transform-origin: 0 0;
476
+ }
477
+ .br-mode-1up__root .br-mode-1up__visible-world {
478
+ position: absolute;
479
+ transform-origin: 0 0;
480
+ }
481
+
504
482
  .BRpagecontainer {
505
483
  position: relative;
506
484
  overflow: hidden;
@@ -531,6 +509,18 @@ body.BRfullscreenActive .mm-menu {
531
509
  background-image: none;
532
510
  }
533
511
 
512
+ svg.BRPageLayer {
513
+ position: absolute;
514
+ top: 0;
515
+ left: 0;
516
+ right: 0;
517
+ bottom: 0;
518
+ }
519
+
520
+ .BRpageFlipping .BRPageLayer {
521
+ display: none;
522
+ }
523
+
534
524
  .BRbookcover {
535
525
  position: absolute;
536
526
  background-image: none;
@@ -1087,44 +1077,6 @@ i.BRicon {
1087
1077
  .BRReadAloudToolbar .BRnavCntlBtm:hover {
1088
1078
  background-color: #0074D1;
1089
1079
  }
1090
- .BRReadAloudToolbar.BRnavEmbed {
1091
- background-color: white;
1092
- color: black;
1093
- }
1094
- .BRReadAloudToolbar.BRnavEmbed a {
1095
- color: black;
1096
- }
1097
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider {
1098
- background: #B7B7B7;
1099
- }
1100
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider .ui-slider-handle {
1101
- background: #0074D1;
1102
- }
1103
- .BRReadAloudToolbar.BRnavEmbed .BRpager.ui-slider .ui-slider-range {
1104
- background: rgba(0, 116, 209, 0.25);
1105
- }
1106
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon {
1107
- border-left: 1px solid #979797;
1108
- }
1109
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon.activated {
1110
- background-color: rgba(0, 116, 209, 0.4);
1111
- }
1112
- .BRReadAloudToolbar.BRnavEmbed .BRpage .BRicon.activated:before {
1113
- content: "";
1114
- top: 0;
1115
- left: 0;
1116
- width: 100%;
1117
- height: 100%;
1118
- box-sizing: border-box;
1119
- display: block;
1120
- border: 3px solid rgba(0, 116, 209, 0.3);
1121
- }
1122
- .BRReadAloudToolbar.BRnavEmbed .BRnavCntl {
1123
- background-color: #979797;
1124
- }
1125
- .BRReadAloudToolbar.BRnavEmbed .BRnavCntlBtm:hover {
1126
- background-color: #0074D1;
1127
- }
1128
1080
  @media (max-width: 800px) {
1129
1081
  .BRbodyMobileNavEnabled .BRReadAloudToolbar, .BRbodyMobileNavEnabledFullscreen.BRfullscreenActive .BRReadAloudToolbar {
1130
1082
  background-color: white;
@@ -1245,23 +1197,6 @@ i.BRicon {
1245
1197
  color: white;
1246
1198
  /* Full mobile styles */
1247
1199
  }
1248
- .BRnav.BRnavEmbed {
1249
- padding-top: 0;
1250
- height: auto;
1251
- align-items: center;
1252
- }
1253
- .BRnav.BRnavEmbed .BRembedreturn {
1254
- flex: 1 auto;
1255
- overflow-x: hidden;
1256
- }
1257
- .BRnav.BRnavEmbed .logo {
1258
- display: inline-block;
1259
- width: 25px;
1260
- height: 25px;
1261
- margin: 0 10px;
1262
- background: transparent url(images/icon_home.svg) no-repeat center center;
1263
- background-size: contain;
1264
- }
1265
1200
  .BRnav a {
1266
1201
  color: white;
1267
1202
  }
@@ -1555,13 +1490,12 @@ i.BRicon {
1555
1490
  border-top-color: #333;
1556
1491
  }
1557
1492
 
1558
- .BookReader .BookReaderSearchHilite, .BRmobileMenu .BookReaderSearchHilite, .BRfloat .BookReaderSearchHilite {
1559
- opacity: 0.2;
1560
- filter: alpha(opacity=20);
1561
- background-color: #0000ff;
1562
- position: absolute;
1563
- /* z-index is important */
1564
- z-index: 4;
1493
+ .BookReader .searchHiliteLayer, .BookReader .ttsHiliteLayer, .BRmobileMenu .searchHiliteLayer, .BRmobileMenu .ttsHiliteLayer, .BRfloat .searchHiliteLayer, .BRfloat .ttsHiliteLayer {
1494
+ pointer-events: none;
1495
+ }
1496
+ .BookReader .searchHiliteLayer rect, .BookReader .ttsHiliteLayer rect, .BRmobileMenu .searchHiliteLayer rect, .BRmobileMenu .ttsHiliteLayer rect, .BRfloat .searchHiliteLayer rect, .BRfloat .ttsHiliteLayer rect {
1497
+ fill: #0000ff;
1498
+ fill-opacity: 0.2;
1565
1499
  animation: hiliteFadeIn 0.2s;
1566
1500
  }
1567
1501
  .BookReader .BRchapter, .BookReader .BRsearch, .BRmobileMenu .BRchapter, .BRmobileMenu .BRsearch, .BRfloat .BRchapter, .BRfloat .BRsearch {
@@ -1661,188 +1595,6 @@ i.BRicon {
1661
1595
  float: left;
1662
1596
  cursor: pointer;
1663
1597
  }
1664
- .BookReader .BRbooksearch.mobile, .BRmobileMenu .BRbooksearch.mobile, .BRfloat .BRbooksearch.mobile {
1665
- position: relative;
1666
- top: 0;
1667
- display: flex;
1668
- flex-direction: row;
1669
- }
1670
- .BookReader .BRbooksearch.mobile .BRsearchInput, .BRmobileMenu .BRbooksearch.mobile .BRsearchInput, .BRfloat .BRbooksearch.mobile .BRsearchInput {
1671
- -webkit-appearance: none;
1672
- position: relative;
1673
- min-width: 100px;
1674
- float: left;
1675
- font-size: 14px;
1676
- width: 150px;
1677
- height: 30px;
1678
- border: 1px solid #979797;
1679
- flex: 1;
1680
- border-radius: 0;
1681
- }
1682
- .BookReader .BRbooksearch.mobile .BRsearchSubmit, .BRmobileMenu .BRbooksearch.mobile .BRsearchSubmit, .BRfloat .BRbooksearch.mobile .BRsearchSubmit {
1683
- width: 30px;
1684
- height: 30px;
1685
- border: none;
1686
- background-color: #0074D1;
1687
- background-image: url("images/icon_search_button.svg");
1688
- background-repeat: no-repeat;
1689
- background-position: center center;
1690
- text-align: center;
1691
- color: white;
1692
- overflow: hidden;
1693
- box-sizing: border-box;
1694
- display: inline-block;
1695
- }
1696
- .BookReader #BRsearch_tray, .BRmobileMenu #BRsearch_tray, .BRfloat #BRsearch_tray {
1697
- --menuSliderBg: #151515;
1698
- --primaryTextColor: #fff;
1699
- --activeButtonBg: #282828;
1700
- --searchResultText: #adaedc;
1701
- --searchResultBg: #272958;
1702
- --searchResultBorder: #fff;
1703
- position: absolute;
1704
- top: 0;
1705
- right: 0;
1706
- bottom: 0;
1707
- left: 0;
1708
- padding: 15px 10px;
1709
- overflow-y: auto;
1710
- font-size: 14px;
1711
- color: var(--primaryTextColor);
1712
- background: var(--menuSliderBg);
1713
- }
1714
- .BookReader #BRsearch_tray header, .BRmobileMenu #BRsearch_tray header, .BRfloat #BRsearch_tray header {
1715
- display: flex;
1716
- justify-content: space-between;
1717
- align-items: center;
1718
- }
1719
- .BookReader #BRsearch_tray h3, .BRmobileMenu #BRsearch_tray h3, .BRfloat #BRsearch_tray h3 {
1720
- padding: 0;
1721
- margin: 0 10px 0 0;
1722
- font-size: 20px;
1723
- }
1724
- .BookReader #BRsearch_tray header p, .BRmobileMenu #BRsearch_tray header p, .BRfloat #BRsearch_tray header p {
1725
- display: none;
1726
- padding: 0;
1727
- margin: 0;
1728
- font-size: 12px;
1729
- font-weight: bold;
1730
- font-style: italic;
1731
- }
1732
- .BookReader #BRsearch_tray header p.visible, .BRmobileMenu #BRsearch_tray header p.visible, .BRfloat #BRsearch_tray header p.visible {
1733
- display: block;
1734
- }
1735
- .BookReader #BRsearch_tray header div, .BRmobileMenu #BRsearch_tray header div, .BRfloat #BRsearch_tray header div {
1736
- display: flex;
1737
- align-items: baseline;
1738
- }
1739
- .BookReader #BRsearch_tray a.close, .BRmobileMenu #BRsearch_tray a.close, .BRfloat #BRsearch_tray a.close {
1740
- justify-self: end;
1741
- }
1742
- .BookReader #BRsearch_tray fieldset, .BRmobileMenu #BRsearch_tray fieldset, .BRfloat #BRsearch_tray fieldset {
1743
- padding: 20px 0 10px 0;
1744
- border: none;
1745
- }
1746
- .BookReader #BRsearch_tray [type=checkbox], .BRmobileMenu #BRsearch_tray [type=checkbox], .BRfloat #BRsearch_tray [type=checkbox] {
1747
- display: none;
1748
- }
1749
- .BookReader #BRsearch_tray #all_files, .BRmobileMenu #BRsearch_tray #all_files, .BRfloat #BRsearch_tray #all_files {
1750
- display: none;
1751
- }
1752
- .BookReader #BRsearch_tray #all_files + label, .BRmobileMenu #BRsearch_tray #all_files + label, .BRfloat #BRsearch_tray #all_files + label {
1753
- display: none;
1754
- }
1755
- .BookReader #BRsearch_tray label, .BRmobileMenu #BRsearch_tray label, .BRfloat #BRsearch_tray label {
1756
- display: block;
1757
- text-align: center;
1758
- }
1759
- .BookReader #BRsearch_tray label.checkbox, .BRmobileMenu #BRsearch_tray label.checkbox, .BRfloat #BRsearch_tray label.checkbox {
1760
- padding-bottom: 5px;
1761
- font-size: 16px;
1762
- line-height: 150%;
1763
- vertical-align: middle;
1764
- }
1765
- .BookReader #BRsearch_tray label.checkbox:after, .BRmobileMenu #BRsearch_tray label.checkbox:after, .BRfloat #BRsearch_tray label.checkbox:after {
1766
- display: inline-block;
1767
- width: 14px;
1768
- height: 14px;
1769
- margin-left: 7px;
1770
- content: "";
1771
- color: var(--primaryTextColor);
1772
- border: 1px solid var(--primaryTextColor);
1773
- border-radius: 2px;
1774
- background: var(--activeButtonBg) 50% 50% no-repeat;
1775
- }
1776
- .BookReader #BRsearch_tray :checked + label.checkbox:after, .BRmobileMenu #BRsearch_tray :checked + label.checkbox:after, .BRfloat #BRsearch_tray :checked + label.checkbox:after {
1777
- background-image: url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTMgMTAiIHdpZHRoPSIxMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC4zMzMzMzMzMyAxMC00LjMzMzMzMzMzLTQuMTY2NjY2NjcgMS43MzMzMzMzMy0xLjY2NjY2NjY2IDIuNiAyLjUgNi45MzMzMzMzNy02LjY2NjY2NjY3IDEuNzMzMzMzMyAxLjY2NjY2NjY3eiIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+");
1778
- }
1779
- .BookReader #BRsearch_tray [type=search], .BRmobileMenu #BRsearch_tray [type=search], .BRfloat #BRsearch_tray [type=search] {
1780
- -webkit-appearance: textfield;
1781
- width: 100%;
1782
- height: 22px;
1783
- padding: 0 15px;
1784
- box-sizing: border-box;
1785
- font: normal 16px "Helvetica Neue", Helvetica, Arial, sans-serif;
1786
- color: var(--primaryTextColor);
1787
- border: 1px solid var(--primaryTextColor);
1788
- border-radius: 15px;
1789
- background: transparent;
1790
- }
1791
- .BookReader #BRsearch_tray [type=search]:focus, .BRmobileMenu #BRsearch_tray [type=search]:focus, .BRfloat #BRsearch_tray [type=search]:focus {
1792
- outline: none;
1793
- }
1794
- .BookReader #BRsearch_tray [type=search]::-webkit-search-cancel-button, .BRmobileMenu #BRsearch_tray [type=search]::-webkit-search-cancel-button, .BRfloat #BRsearch_tray [type=search]::-webkit-search-cancel-button {
1795
- width: 18px;
1796
- height: 18px;
1797
- -webkit-appearance: none;
1798
- appearance: none;
1799
- /* Uses an X SVG shape as a mask */
1800
- -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDAgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1sYWJlbGxlZGJ5PSJjbG9zZVRpdGxlSUQgY2xvc2VEZXNjSUQiPjxwYXRoIGQ9Ik0yOS4xOTIgMTAuODA4YTEuNSAxLjUgMCAwMTAgMi4xMkwyMi4xMjIgMjBsNy4wNyA3LjA3MmExLjUgMS41IDAgMDEtMi4xMiAyLjEyMWwtNy4wNzMtNy4wNy03LjA3IDcuMDdhMS41IDEuNSAwIDAxLTIuMTIxLTIuMTJsNy4wNy03LjA3My03LjA3LTcuMDdhMS41IDEuNSAwIDAxMi4xMi0yLjEyMUwyMCAxNy44NzhsNy4wNzItNy4wN2ExLjUgMS41IDAgMDEyLjEyMSAweiIgY2xhc3M9ImZpbGwtY29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==") 0 0 no-repeat;
1801
- mask: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDAgNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1sYWJlbGxlZGJ5PSJjbG9zZVRpdGxlSUQgY2xvc2VEZXNjSUQiPjxwYXRoIGQ9Ik0yOS4xOTIgMTAuODA4YTEuNSAxLjUgMCAwMTAgMi4xMkwyMi4xMjIgMjBsNy4wNyA3LjA3MmExLjUgMS41IDAgMDEtMi4xMiAyLjEyMWwtNy4wNzMtNy4wNy03LjA3IDcuMDdhMS41IDEuNSAwIDAxLTIuMTIxLTIuMTJsNy4wNy03LjA3My03LjA3LTcuMDdhMS41IDEuNSAwIDAxMi4xMi0yLjEyMUwyMCAxNy44NzhsNy4wNzItNy4wN2ExLjUgMS41IDAgMDEyLjEyMSAweiIgY2xhc3M9ImZpbGwtY29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==") 0 0 no-repeat;
1802
- -webkit-mask-size: 100%;
1803
- mask-size: 100%;
1804
- background: #fff;
1805
- }
1806
- .BookReader #BRsearch_tray ul, .BRmobileMenu #BRsearch_tray ul, .BRfloat #BRsearch_tray ul {
1807
- padding: 0;
1808
- margin: 0;
1809
- list-style: none;
1810
- }
1811
- .BookReader #BRsearch_tray li, .BRmobileMenu #BRsearch_tray li, .BRfloat #BRsearch_tray li {
1812
- margin-bottom: 20px;
1813
- border-bottom: 1px solid #fff;
1814
- }
1815
- .BookReader #BRsearch_tray li:after, .BRmobileMenu #BRsearch_tray li:after, .BRfloat #BRsearch_tray li:after {
1816
- display: none;
1817
- }
1818
- .BookReader #BRsearch_tray li img, .BRmobileMenu #BRsearch_tray li img, .BRfloat #BRsearch_tray li img {
1819
- display: block;
1820
- width: 100%;
1821
- }
1822
- .BookReader #BRsearch_tray li h4, .BRmobileMenu #BRsearch_tray li h4, .BRfloat #BRsearch_tray li h4 {
1823
- padding: 0 0 20px 0;
1824
- margin: 0;
1825
- font-size: 14px;
1826
- font-weight: normal;
1827
- }
1828
- .BookReader #BRsearch_tray li p, .BRmobileMenu #BRsearch_tray li p, .BRfloat #BRsearch_tray li p {
1829
- padding: 0 0 15px 0;
1830
- margin: 0;
1831
- font-size: 12px;
1832
- }
1833
- .BookReader #BRsearch_tray mark, .BRmobileMenu #BRsearch_tray mark, .BRfloat #BRsearch_tray mark {
1834
- padding: 0 2px;
1835
- color: var(--searchResultText);
1836
- background: var(--searchResultBg);
1837
- border: 1px solid var(--searchResultBorder);
1838
- border-radius: 2px;
1839
- }
1840
- .BookReader #BRsearch_tray #search_pending, .BRmobileMenu #BRsearch_tray #search_pending, .BRfloat #BRsearch_tray #search_pending {
1841
- display: none;
1842
- }
1843
- .BookReader #BRsearch_tray #search_pending.visible, .BRmobileMenu #BRsearch_tray #search_pending.visible, .BRfloat #BRsearch_tray #search_pending.visible {
1844
- display: block;
1845
- }
1846
1598
  .BookReader .BRsearch-navigation, .BRmobileMenu .BRsearch-navigation, .BRfloat .BRsearch-navigation {
1847
1599
  position: relative;
1848
1600
  z-index: 1;
@@ -1898,10 +1650,7 @@ i.BRicon {
1898
1650
 
1899
1651
  @keyframes hiliteFadeIn {
1900
1652
  from {
1901
- opacity: 0;
1902
- }
1903
- to {
1904
- opacity: 0.2;
1653
+ fill-opacity: 0;
1905
1654
  }
1906
1655
  }
1907
1656
  /* Mid size breakpoint */
@@ -2880,6 +2629,12 @@ li.BRtable-contents-el .BRTOCElementPage {
2880
2629
  background-image: url("icons/close-circle.svg");
2881
2630
  }
2882
2631
 
2632
+ .icon-close-dark {
2633
+ width: 12px;
2634
+ height: 12px;
2635
+ background-image: url("icons/close-circle-dark.svg");
2636
+ }
2637
+
2883
2638
  .BRcontrols {
2884
2639
  width: 100%;
2885
2640
  /* BookReader defaults overrides */
@@ -2906,8 +2661,7 @@ li.BRtable-contents-el .BRTOCElementPage {
2906
2661
  .BRfullscreenActive .BRcontrols .icon-fullscreen {
2907
2662
  background-image: url("icons/fullscreen_exit.svg");
2908
2663
  }
2909
- .BRcontrols select.playback-speed {
2910
- width: 24px;
2664
+ .BRcontrols select.playback-speed, .BRcontrols select.playback-voices {
2911
2665
  padding-top: 18px;
2912
2666
  -moz-appearance: none;
2913
2667
  -webkit-appearance: none;
@@ -2918,11 +2672,19 @@ li.BRtable-contents-el .BRTOCElementPage {
2918
2672
  color: #fff;
2919
2673
  border: none;
2920
2674
  cursor: pointer;
2921
- background: transparent url("icons/playback-speed.svg") 50% 0 no-repeat;
2922
2675
  }
2923
- .BRcontrols select.playback-speed option {
2676
+ .BRcontrols select.playback-speed option, .BRcontrols select.playback-voices option {
2924
2677
  background: #333;
2925
2678
  }
2679
+ .BRcontrols select.playback-speed {
2680
+ width: 30px;
2681
+ background: transparent url("icons/playback-speed.svg") 50% 0 no-repeat;
2682
+ }
2683
+ .BRcontrols select.playback-voices {
2684
+ width: 30px;
2685
+ background: transparent url("icons/voice.svg") 50% 0 no-repeat;
2686
+ background-size: 18px;
2687
+ }
2926
2688
  .BRcontrols .active {
2927
2689
  background: #fff;
2928
2690
  }
@@ -2975,6 +2737,10 @@ li.BRtable-contents-el .BRTOCElementPage {
2975
2737
  display: flex;
2976
2738
  animation: slideUp 0.2s;
2977
2739
  }
2740
+ .BRcontrols .read-aloud.visible button {
2741
+ width: unset;
2742
+ height: unset;
2743
+ }
2978
2744
  .BRcontrols .read-aloud li {
2979
2745
  padding: 0 10px;
2980
2746
  }
@@ -3095,11 +2861,6 @@ li.BRtable-contents-el .BRTOCElementPage {
3095
2861
  }
3096
2862
 
3097
2863
  .textSelectionSVG {
3098
- width: 100%;
3099
- position: absolute;
3100
- height: 100%;
3101
- top: 0;
3102
- left: 0;
3103
2864
  pointer-events: none;
3104
2865
  }
3105
2866
  .textSelectionSVG .BRwordElement {
@@ -3117,32 +2878,31 @@ li.BRtable-contents-el .BRTOCElementPage {
3117
2878
  color: transparent;
3118
2879
  }
3119
2880
  .textSelectionSVG .BRparagElement {
3120
- fill: red;
2881
+ fill: transparent;
3121
2882
  cursor: text;
3122
2883
  white-space: pre;
3123
- fill-opacity: 0;
3124
2884
  font-family: Georgia, serif;
3125
2885
  }
3126
2886
 
3127
- .BRpagecontainer img {
3128
- -webkit-user-select: none;
3129
- -moz-user-select: none;
3130
- user-select: none;
2887
+ .BRsmooth-zooming .textSelectionSVG, .BRscrolling-active .textSelectionSVG {
2888
+ display: none;
3131
2889
  }
3132
2890
 
3133
- .BRpageFlipping .textSelectionSVG {
2891
+ .BRmode1up .BRpagecontainer:not(.BRpage-visible) .textSelectionSVG {
3134
2892
  display: none;
3135
2893
  }
3136
2894
 
3137
- .BRpagecontainer.BRemptypage .textSelectionSVG {
3138
- display: none;
2895
+ .BRpagecontainer img {
2896
+ -webkit-user-select: none;
2897
+ -moz-user-select: none;
2898
+ user-select: none;
3139
2899
  }
3140
2900
 
3141
2901
  /**
3142
2902
  * Hide modal-manager that loads item-navigator-modal
3143
2903
  * loading bookmarks related alert messages
3144
2904
  */
3145
- #item-navigator-modal {
2905
+ modal-manager[mode=closed] {
3146
2906
  display: none;
3147
2907
  }
3148
2908