@internetarchive/bookreader 5.0.0-95 → 5.0.0-96

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 (305) hide show
  1. package/BookReader/BookReader.css +2251 -0
  2. package/BookReader/BookReader.js +3 -0
  3. package/BookReader/BookReader.js.LICENSE.txt +72 -0
  4. package/BookReader/BookReader.js.map +1 -0
  5. package/BookReader/hypothesis/LICENSE +50 -0
  6. package/BookReader/hypothesis/README.md +55 -0
  7. package/BookReader/hypothesis/build/boot.js +1 -0
  8. package/BookReader/hypothesis/build/manifest.json +20 -0
  9. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
  10. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  11. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
  12. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  13. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
  14. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
  16. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  17. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  18. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  19. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  20. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  38. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  39. package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
  40. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  41. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
  42. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
  44. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
  46. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  47. package/BookReader/hypothesis/package.json +126 -0
  48. package/BookReader/ia-bookreader-bundle.js +1782 -0
  49. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  50. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  51. package/BookReader/icons/1up.svg +1 -0
  52. package/BookReader/icons/2up.svg +1 -0
  53. package/BookReader/icons/advance.svg +3 -0
  54. package/BookReader/icons/chevron-right.svg +1 -0
  55. package/BookReader/icons/close-circle-dark.svg +1 -0
  56. package/BookReader/icons/close-circle.svg +1 -0
  57. package/BookReader/icons/fullscreen.svg +1 -0
  58. package/BookReader/icons/fullscreen_exit.svg +1 -0
  59. package/BookReader/icons/hamburger.svg +1 -0
  60. package/BookReader/icons/left-arrow.svg +1 -0
  61. package/BookReader/icons/magnify-minus.svg +1 -0
  62. package/BookReader/icons/magnify-plus.svg +1 -0
  63. package/BookReader/icons/magnify.svg +1 -0
  64. package/BookReader/icons/pause.svg +1 -0
  65. package/BookReader/icons/play.svg +1 -0
  66. package/BookReader/icons/playback-speed.svg +1 -0
  67. package/BookReader/icons/read-aloud.svg +1 -0
  68. package/BookReader/icons/review.svg +3 -0
  69. package/BookReader/icons/thumbnails.svg +1 -0
  70. package/BookReader/icons/voice.svg +1 -0
  71. package/BookReader/icons/volume-full.svg +1 -0
  72. package/BookReader/images/BRicons.png +0 -0
  73. package/BookReader/images/BRicons.svg +5 -0
  74. package/BookReader/images/BRicons_ia.png +0 -0
  75. package/BookReader/images/back_pages.png +0 -0
  76. package/BookReader/images/book_bottom_icon.png +0 -0
  77. package/BookReader/images/book_down_icon.png +0 -0
  78. package/BookReader/images/book_left_icon.png +0 -0
  79. package/BookReader/images/book_leftmost_icon.png +0 -0
  80. package/BookReader/images/book_right_icon.png +0 -0
  81. package/BookReader/images/book_rightmost_icon.png +0 -0
  82. package/BookReader/images/book_top_icon.png +0 -0
  83. package/BookReader/images/book_up_icon.png +0 -0
  84. package/BookReader/images/books_graphic.svg +1 -0
  85. package/BookReader/images/booksplit.png +0 -0
  86. package/BookReader/images/control_pause_icon.png +0 -0
  87. package/BookReader/images/control_play_icon.png +0 -0
  88. package/BookReader/images/embed_icon.png +0 -0
  89. package/BookReader/images/hypothesis.ico +0 -0
  90. package/BookReader/images/icon-home-ia.png +0 -0
  91. package/BookReader/images/icon_OL-logo-xs.png +0 -0
  92. package/BookReader/images/icon_alert-xs.png +0 -0
  93. package/BookReader/images/icon_book.svg +1 -0
  94. package/BookReader/images/icon_bookmark.svg +1 -0
  95. package/BookReader/images/icon_close-pop.png +0 -0
  96. package/BookReader/images/icon_download.png +0 -0
  97. package/BookReader/images/icon_gear.svg +1 -0
  98. package/BookReader/images/icon_hamburger.svg +1 -0
  99. package/BookReader/images/icon_home.png +0 -0
  100. package/BookReader/images/icon_home.svg +1 -0
  101. package/BookReader/images/icon_home_ia.png +0 -0
  102. package/BookReader/images/icon_indicator.png +0 -0
  103. package/BookReader/images/icon_info.svg +1 -0
  104. package/BookReader/images/icon_one_page.svg +1 -0
  105. package/BookReader/images/icon_pause.svg +1 -0
  106. package/BookReader/images/icon_play.svg +1 -0
  107. package/BookReader/images/icon_playback-rate.svg +1 -0
  108. package/BookReader/images/icon_return.png +0 -0
  109. package/BookReader/images/icon_search_button.svg +1 -0
  110. package/BookReader/images/icon_share.svg +1 -0
  111. package/BookReader/images/icon_skip-ahead.svg +1 -0
  112. package/BookReader/images/icon_skip-back.svg +2 -0
  113. package/BookReader/images/icon_speaker.svg +1 -0
  114. package/BookReader/images/icon_speaker_open.svg +1 -0
  115. package/BookReader/images/icon_thumbnails.svg +1 -0
  116. package/BookReader/images/icon_toc.svg +1 -0
  117. package/BookReader/images/icon_two_pages.svg +1 -0
  118. package/BookReader/images/icon_zoomer.png +0 -0
  119. package/BookReader/images/loading.gif +0 -0
  120. package/BookReader/images/logo_icon.png +0 -0
  121. package/BookReader/images/marker_chap-off.png +0 -0
  122. package/BookReader/images/marker_chap-off.svg +1 -0
  123. package/BookReader/images/marker_chap-off_ia.png +0 -0
  124. package/BookReader/images/marker_chap-on.png +0 -0
  125. package/BookReader/images/marker_chap-on.svg +1 -0
  126. package/BookReader/images/marker_srch-on.svg +1 -0
  127. package/BookReader/images/marker_srchchap-off.png +0 -0
  128. package/BookReader/images/marker_srchchap-on.png +0 -0
  129. package/BookReader/images/nav_control-dn.png +0 -0
  130. package/BookReader/images/nav_control-dn_ia.png +0 -0
  131. package/BookReader/images/nav_control-up.png +0 -0
  132. package/BookReader/images/nav_control-up_ia.png +0 -0
  133. package/BookReader/images/nav_control.png +0 -0
  134. package/BookReader/images/one_page_mode_icon.png +0 -0
  135. package/BookReader/images/paper-badge.png +0 -0
  136. package/BookReader/images/print_icon.png +0 -0
  137. package/BookReader/images/progressbar.gif +0 -0
  138. package/BookReader/images/right_edges.png +0 -0
  139. package/BookReader/images/slider.png +0 -0
  140. package/BookReader/images/slider_ia.png +0 -0
  141. package/BookReader/images/thumbnail_mode_icon.png +0 -0
  142. package/BookReader/images/transparent.png +0 -0
  143. package/BookReader/images/two_page_mode_icon.png +0 -0
  144. package/BookReader/images/unviewable_page.png +0 -0
  145. package/BookReader/images/zoom_in_icon.png +0 -0
  146. package/BookReader/images/zoom_out_icon.png +0 -0
  147. package/BookReader/jquery-3.js +2 -0
  148. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  149. package/BookReader/plugins/plugin.archive_analytics.js +2 -0
  150. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -0
  151. package/BookReader/plugins/plugin.autoplay.js +2 -0
  152. package/BookReader/plugins/plugin.autoplay.js.map +1 -0
  153. package/BookReader/plugins/plugin.chapters.js +26 -0
  154. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  155. package/BookReader/plugins/plugin.chapters.js.map +1 -0
  156. package/BookReader/plugins/plugin.experiments.js +3 -0
  157. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  158. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  159. package/BookReader/plugins/plugin.iframe.js +2 -0
  160. package/BookReader/plugins/plugin.iframe.js.map +1 -0
  161. package/BookReader/plugins/plugin.iiif.js +2 -0
  162. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  163. package/BookReader/plugins/plugin.resume.js +2 -0
  164. package/BookReader/plugins/plugin.resume.js.map +1 -0
  165. package/BookReader/plugins/plugin.search.js +3 -0
  166. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  167. package/BookReader/plugins/plugin.search.js.map +1 -0
  168. package/BookReader/plugins/plugin.text_selection.js +3 -0
  169. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  170. package/BookReader/plugins/plugin.text_selection.js.map +1 -0
  171. package/BookReader/plugins/plugin.tts.js +3 -0
  172. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +29 -0
  173. package/BookReader/plugins/plugin.tts.js.map +1 -0
  174. package/BookReader/plugins/plugin.url.js +2 -0
  175. package/BookReader/plugins/plugin.url.js.map +1 -0
  176. package/BookReader/plugins/plugin.vendor-fullscreen.js +2 -0
  177. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -0
  178. package/BookReader/webcomponents-bundle.js +3 -0
  179. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  180. package/BookReader/webcomponents-bundle.js.map +1 -0
  181. package/package.json +6 -1
  182. package/src/BookReader/BookModel.js +564 -0
  183. package/src/BookReader/DragScrollable.js +233 -0
  184. package/src/BookReader/ImageCache.js +149 -0
  185. package/src/BookReader/Mode1Up.js +110 -0
  186. package/src/BookReader/Mode1UpLit.js +388 -0
  187. package/src/BookReader/Mode2Up.js +107 -0
  188. package/src/BookReader/Mode2UpLit.js +777 -0
  189. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  190. package/src/BookReader/ModeSmoothZoom.js +312 -0
  191. package/src/BookReader/ModeThumb.js +344 -0
  192. package/src/BookReader/Navbar/Navbar.js +355 -0
  193. package/src/BookReader/PageContainer.js +172 -0
  194. package/src/BookReader/ReduceSet.js +26 -0
  195. package/src/BookReader/Toolbar/Toolbar.js +362 -0
  196. package/src/BookReader/events.js +19 -0
  197. package/src/BookReader/options.js +387 -0
  198. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  199. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  200. package/src/BookReader/utils/SelectionObserver.js +45 -0
  201. package/src/BookReader/utils/classes.js +36 -0
  202. package/src/BookReader/utils.js +313 -0
  203. package/.eslintrc.cjs +0 -51
  204. package/.gitattributes +0 -2
  205. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  206. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  207. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  208. package/.github/workflows/node.js.yml +0 -102
  209. package/.github/workflows/npm-publish.yml +0 -23
  210. package/.testcaferc.cjs +0 -10
  211. package/BookReaderDemo/BookReaderDemo.css +0 -40
  212. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -112
  213. package/BookReaderDemo/BookReaderJSSimple.js +0 -56
  214. package/BookReaderDemo/IADemoBr.js +0 -149
  215. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  216. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  217. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  218. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  219. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  220. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  221. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  222. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  223. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  224. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  225. package/BookReaderDemo/demo-advanced.html +0 -33
  226. package/BookReaderDemo/demo-embed-iframe-src.html +0 -85
  227. package/BookReaderDemo/demo-embed.html +0 -26
  228. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -34
  229. package/BookReaderDemo/demo-fullscreen.html +0 -31
  230. package/BookReaderDemo/demo-iiif.html +0 -121
  231. package/BookReaderDemo/demo-internetarchive.html +0 -271
  232. package/BookReaderDemo/demo-multiple.html +0 -44
  233. package/BookReaderDemo/demo-preview-pages.html +0 -1093
  234. package/BookReaderDemo/demo-simple.html +0 -35
  235. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -34
  236. package/BookReaderDemo/ia-multiple-volumes-manifest.js +0 -169
  237. package/BookReaderDemo/immersion-1up.html +0 -64
  238. package/BookReaderDemo/immersion-mode.html +0 -33
  239. package/BookReaderDemo/toggle_controls.html +0 -54
  240. package/BookReaderDemo/view_mode.html +0 -40
  241. package/BookReaderDemo/viewmode-cycle.html +0 -40
  242. package/CHANGELOG.md +0 -1087
  243. package/CONTRIBUTING.md +0 -7
  244. package/babel.config.cjs +0 -20
  245. package/codecov.yml +0 -23
  246. package/index.html +0 -34
  247. package/netlify.toml +0 -9
  248. package/renovate.json +0 -52
  249. package/screenshot.png +0 -0
  250. package/scripts/postversion.js +0 -11
  251. package/scripts/preversion.js +0 -15
  252. package/scripts/version.js +0 -24
  253. package/tests/e2e/README.md +0 -112
  254. package/tests/e2e/autoplay.test.js +0 -16
  255. package/tests/e2e/base.test.js +0 -27
  256. package/tests/e2e/helpers/base.js +0 -263
  257. package/tests/e2e/helpers/debug.js +0 -13
  258. package/tests/e2e/helpers/mockSearch.js +0 -90
  259. package/tests/e2e/helpers/params.js +0 -17
  260. package/tests/e2e/helpers/rightToLeft.js +0 -23
  261. package/tests/e2e/helpers/search.js +0 -73
  262. package/tests/e2e/models/BookReader.js +0 -11
  263. package/tests/e2e/models/Navigation.js +0 -39
  264. package/tests/e2e/rightToLeft.test.js +0 -19
  265. package/tests/e2e/viewmode.test.js +0 -44
  266. package/tests/jest/BookNavigator/book-navigator.test.js +0 -653
  267. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +0 -43
  268. package/tests/jest/BookNavigator/bookmarks/bookmark-edit.test.js +0 -132
  269. package/tests/jest/BookNavigator/bookmarks/bookmarks-list.test.js +0 -221
  270. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +0 -45
  271. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +0 -67
  272. package/tests/jest/BookNavigator/downloads/downloads.test.js +0 -53
  273. package/tests/jest/BookNavigator/search/search-provider.test.js +0 -179
  274. package/tests/jest/BookNavigator/search/search-results.test.js +0 -289
  275. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +0 -49
  276. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +0 -80
  277. package/tests/jest/BookNavigator/visual-adjustments.test.js +0 -200
  278. package/tests/jest/BookReader.keyboard.test.js +0 -190
  279. package/tests/jest/BookReader.options.test.js +0 -47
  280. package/tests/jest/BookReader.test.js +0 -316
  281. package/tests/jest/plugins/plugin.archive_analytics.test.js +0 -20
  282. package/tests/jest/plugins/plugin.autoplay.test.js +0 -35
  283. package/tests/jest/plugins/plugin.chapters.test.js +0 -193
  284. package/tests/jest/plugins/plugin.iframe.test.js +0 -42
  285. package/tests/jest/plugins/plugin.resume.test.js +0 -85
  286. package/tests/jest/plugins/plugin.text_selection.test.js +0 -447
  287. package/tests/jest/plugins/plugin.vendor-fullscreen.test.js +0 -65
  288. package/tests/jest/plugins/search/plugin.search.test.js +0 -120
  289. package/tests/jest/plugins/search/plugin.search.view.test.js +0 -131
  290. package/tests/jest/plugins/search/utils.js +0 -25
  291. package/tests/jest/plugins/search/utils.test.js +0 -29
  292. package/tests/jest/plugins/tts/AbstractTTSEngine.test.js +0 -173
  293. package/tests/jest/plugins/tts/FestivalTTSEngine.test.js +0 -59
  294. package/tests/jest/plugins/tts/PageChunk.test.js +0 -57
  295. package/tests/jest/plugins/tts/PageChunkIterator.test.js +0 -179
  296. package/tests/jest/plugins/tts/WebTTSEngine.test.js +0 -178
  297. package/tests/jest/plugins/tts/utils.test.js +0 -74
  298. package/tests/jest/plugins/url/UrlPlugin.test.js +0 -198
  299. package/tests/jest/plugins/url/plugin.url.test.js +0 -168
  300. package/tests/jest/setup.js +0 -3
  301. package/tests/jest/util/browserSniffing.test.js +0 -62
  302. package/tests/jest/util/docCookies.test.js +0 -24
  303. package/tests/jest/util/strings.test.js +0 -63
  304. package/tests/jest/utils.js +0 -83
  305. package/webpack.config.js +0 -97
@@ -1,193 +0,0 @@
1
- import sinon from "sinon";
2
-
3
- import "@/src/BookReader.js";
4
- import {ChaptersPlugin} from "@/src/plugins/plugin.chapters.js";
5
- import { BookModel } from "@/src/BookReader/BookModel.js";
6
- import { deepCopy } from "../utils.js";
7
- /** @typedef {import('@/src/plugins/plugin.chapters').TocEntry} TocEntry */
8
-
9
- /** @type {TocEntry[]} */
10
- const SAMPLE_TOC = [{
11
- "pagenum": "3",
12
- "level": 1,
13
- "label": "CHAPTER I",
14
- "type": { "key": "/type/toc_item" },
15
- "title": "THE COUNTRY AND THE MISSION 1",
16
- "pageIndex": 3,
17
- }, {
18
- "pagenum": "17",
19
- "level": 1,
20
- "label": "CHAPTER II",
21
- "type": { "key": "/type/toc_item" },
22
- "title": "THE COUNTRY AND THE MISSION 2",
23
- "pageIndex": 17,
24
- }, {
25
- "pagenum": "undefined",
26
- "level": 1,
27
- "label": "CHAPTER III",
28
- "type": { "key": "/type/toc_item" },
29
- "title": "THE COUNTRY AND THE MISSION 3",
30
- }, {
31
- "pagenum": "40",
32
- "level": 1,
33
- "label": "CHAPTER IV",
34
- "type": { "key": "/type/toc_item" },
35
- "title": "THE COUNTRY AND THE MISSION 4",
36
- "pageIndex": 40,
37
- }];
38
-
39
- /** @type {TocEntry[]} */
40
- const SAMPLE_TOC_UNDEF = [
41
- {
42
- "level": 1,
43
- "label": "CHAPTER I",
44
- "type": { "key": "/type/toc_item" },
45
- "title": "THE COUNTRY AND THE MISSION 1",
46
- },
47
- {
48
- "level": 1,
49
- "label": "CHAPTER II",
50
- "type": { "key": "/type/toc_item" },
51
- "title": "THE COUNTRY AND THE MISSION 2",
52
- },
53
- ];
54
-
55
- /** @type {TocEntry[]} */
56
- const SAMPLE_TOC_OPTION = [
57
- {
58
- "level": 1,
59
- "title": "THE COUNTRY AND THE MISSION 1",
60
- },
61
- {
62
- "level": 1,
63
- "title": "THE COUNTRY AND THE MISSION 2",
64
- },
65
- ];
66
-
67
- afterEach(() => {
68
- sinon.restore();
69
- });
70
-
71
- describe("ChaptersPlugin", () => {
72
- beforeEach(() => {
73
- sinon.stub(BookModel.prototype, "getPageIndex").callsFake((str) =>
74
- parseFloat(str),
75
- );
76
- });
77
-
78
- describe("init", () => {
79
- test("does not render when open library has no record", async () => {
80
- const p = new ChaptersPlugin({ options: { vars: {} } });
81
- sinon.stub(p, "getOpenLibraryRecord").resolves(null);
82
- sinon.spy(p, "_render");
83
- await p.init();
84
- expect(p._render.callCount).toBe(0);
85
- });
86
-
87
- test("does not render when open library record has no TOC", async () => {
88
- const p = new ChaptersPlugin({ options: { vars: {} } });
89
- sinon.stub(p, "getOpenLibraryRecord").resolves({ key: "/books/OL1M" });
90
- sinon.spy(p, "_render");
91
- await p.init();
92
- expect(p._render.callCount).toBe(0);
93
- });
94
-
95
- test("renders if valid TOC on open library", async () => {
96
- const fakeBR = {
97
- options: { vars: {} },
98
- bind: sinon.stub(),
99
- };
100
- const p = new ChaptersPlugin(fakeBR);
101
- sinon.stub(p, "getOpenLibraryRecord").resolves({
102
- "title": "The Adventures of Sherlock Holmes",
103
- "table_of_contents": deepCopy(SAMPLE_TOC_OPTION),
104
- "ocaid": "adventureofsherl0000unse",
105
- });
106
- sinon.stub(p, "_render");
107
- await p.init();
108
- expect(p._render.callCount).toBe(1);
109
- });
110
-
111
- test("does not fetch open library record if table of contents in options", async () => {
112
- const fakeBR = {
113
- options: {
114
- table_of_contents: deepCopy(SAMPLE_TOC_UNDEF),
115
- },
116
- bind: sinon.stub(),
117
- };
118
- const p = new ChaptersPlugin(fakeBR);
119
- sinon.stub(p, "getOpenLibraryRecord");
120
- sinon.stub(p, "_render");
121
- await p.init();
122
- expect(p.getOpenLibraryRecord.callCount).toBe(0);
123
- expect(p._render.callCount).toBe(1);
124
- });
125
-
126
- test("converts leafs and pagenums to page index", async () => {
127
- const table_of_contents = deepCopy(SAMPLE_TOC_UNDEF);
128
- table_of_contents[0].leaf = 0;
129
- table_of_contents[1].pagenum = '17';
130
- const fakeBR = {
131
- options: {
132
- table_of_contents,
133
- },
134
- bind: sinon.stub(),
135
- book: {
136
- leafNumToIndex: (leaf) => leaf + 1,
137
- getPageIndex: (str) => parseFloat(str),
138
- },
139
- };
140
- const p = new ChaptersPlugin(fakeBR);
141
- sinon.stub(p, "_render");
142
- await p.init();
143
- expect(p._render.callCount).toBe(1);
144
- expect(p._tocEntries[0].pageIndex).toBe(1);
145
- expect(p._tocEntries[1].pageIndex).toBe(17);
146
- });
147
- });
148
-
149
- describe('_render', () => {
150
- test('renders markers and panel', () => {
151
- const fakeBR = {
152
- shell: {
153
- menuProviders: {},
154
- addMenuShortcut: sinon.stub(),
155
- updateMenuContents: sinon.stub(),
156
- },
157
- };
158
- const p = new ChaptersPlugin(fakeBR);
159
- sinon.stub(p, '_renderMarker');
160
- p._tocEntries = deepCopy(SAMPLE_TOC);
161
- p._render();
162
- expect(fakeBR.shell.menuProviders['chapters']).toBeTruthy();
163
- expect(fakeBR.shell.addMenuShortcut.callCount).toBe(1);
164
- expect(fakeBR.shell.updateMenuContents.callCount).toBe(1);
165
- expect(p._renderMarker.callCount).toBeGreaterThan(1);
166
- });
167
- });
168
-
169
- describe('_updateCurrent', () => {
170
- test('highlights the current chapter', () => {
171
- const fakeBR = {
172
- mode: 2,
173
- firstIndex: 16,
174
- displayedIndices: [16, 17],
175
- };
176
- const p = new ChaptersPlugin(fakeBR);
177
- p._tocEntries = deepCopy(SAMPLE_TOC);
178
- p._chaptersPanel = {
179
- currentChapter: null,
180
- };
181
- p._updateCurrent();
182
- expect(p._chaptersPanel.currentChapter).toEqual(SAMPLE_TOC[1]);
183
-
184
- fakeBR.mode = 1;
185
- p._updateCurrent();
186
- expect(p._chaptersPanel.currentChapter).toEqual(SAMPLE_TOC[0]);
187
-
188
- fakeBR.firstIndex = 0;
189
- p._updateCurrent();
190
- expect(p._chaptersPanel.currentChapter).toBeUndefined();
191
- });
192
- });
193
- });
@@ -1,42 +0,0 @@
1
- import sinon from 'sinon';
2
-
3
- import BookReader from '@/src/BookReader.js';
4
- import { _attachEventListeners } from '@/src/plugins/plugin.iframe.js';
5
-
6
- afterEach(() => {
7
- sinon.restore();
8
- });
9
-
10
- test('listens for br events if parent', () => {
11
- const br = new BookReader();
12
- sinon.spy(br, 'bind');
13
- sinon.spy(window, 'addEventListener');
14
-
15
- _attachEventListeners(br, window.parent);
16
- expect(br.bind.callCount).toBe(1);
17
- expect(window.addEventListener.callCount).toBe(1);
18
- expect(window.addEventListener.args[0][0]).toBe('message');
19
- });
20
-
21
- test('does not attach if not in iframe', () => {
22
- const br = new BookReader();
23
- sinon.spy(br, 'bind');
24
- sinon.spy(window, 'addEventListener');
25
-
26
- _attachEventListeners(br, null);
27
- expect(br.bind.callCount).toBe(0);
28
- expect(window.addEventListener.callCount).toBe(0);
29
- });
30
-
31
- test('updates params when window receives a message', () => {
32
- const br = new BookReader();
33
- sinon.spy(br, 'updateFromParams');
34
- _attachEventListeners(br);
35
- window.dispatchEvent(new MessageEvent('message', {
36
- data: {
37
- type: 'bookReaderFragmentChange',
38
- fragment: '',
39
- },
40
- }));
41
- expect(br.updateFromParams.callCount).toBe(1);
42
- });
@@ -1,85 +0,0 @@
1
- import BookReader from '@/src/BookReader.js';
2
- import '@/src/plugins/plugin.resume.js';
3
-
4
- import sinon from 'sinon';
5
- import * as docCookies from '@/src/util/docCookies.js';
6
- import { ResumePlugin } from '@/src/plugins/plugin.resume.js';
7
-
8
- /** @type {import('@/src/BookReader.js').default} */
9
- let br;
10
- beforeAll(() => {
11
- document.body.innerHTML = '<div id="BookReader">';
12
- br = new BookReader();
13
- br.init();
14
- });
15
-
16
- afterEach(() => {
17
- jest.clearAllMocks();
18
- sinon.restore();
19
- });
20
-
21
- describe('updateResumeValue', () => {
22
- /* Mark 2020-05-02
23
- Skipping while confirming with Neeraj
24
- I'm not sure:
25
- - What this test really does
26
- - If the instantiation of the prototype counts as a call
27
- - If so, why would there be a second call
28
- Can't find in production
29
- In this branch .toHaveBeenCalledTimes() === 1
30
- */
31
- test.skip('starts when BookReaderInit is called', () => {
32
- br.plugins.resume.updateResumeValue = jest.fn();
33
- br.init();
34
- expect(br.plugins.resume.updateResumeValue).toHaveBeenCalledTimes(2);
35
- });
36
-
37
- test('handles cookieName=null', () => {
38
- const p = new ResumePlugin(null);
39
- p.setup({ cookiePath: '/details/goody' });
40
- const setItemSpy = sinon.spy(docCookies, 'setItem');
41
-
42
- p.updateResumeValue(16);
43
- expect(setItemSpy.callCount).toBe(1);
44
- expect(setItemSpy.args[0].slice(0, 2)).toEqual(['br-resume', 16]);
45
- expect(setItemSpy.args[0][3]).toEqual('/details/goody');
46
- });
47
-
48
- test('handles cookiePath not set', () => {
49
- const setItemSpy = sinon.spy(docCookies, 'setItem');
50
- // Save function
51
- const saveFn = br.plugins.resume.getCookiePath;
52
- br.plugins.resume.getCookiePath = jest.fn(() => '/details/foo');
53
- br.plugins.resume.updateResumeValue(16);
54
- expect(setItemSpy.args[0][3]).toEqual('/details/foo');
55
- // Restore function
56
- br.plugins.resume.getCookiePath = saveFn;
57
- });
58
-
59
- test('handles cookie path from URL with decoration', () => {
60
- const complexPathWithPage = '/details/2008ELMValidityStudyFinalReportRevised/Executive%20Summary%20for%20the%20EPT%26ELM%20Validity%20Studie_20100603%20-%20Copy/page/n1/mode/2up';
61
- const complexPath = '/details/2008ELMValidityStudyFinalReportRevised/Executive%20Summary%20for%20the%20EPT%26ELM%20Validity%20Studie_20100603%20-%20Copy';
62
- expect(br.plugins.resume.getCookiePath(complexPathWithPage))
63
- .toEqual(complexPath);
64
-
65
- expect(br.plugins.resume.getCookiePath('/details/item/mode/1up'))
66
- .toEqual('/details/item');
67
-
68
- expect(br.plugins.resume.getCookiePath('/details/item/inside/a/long/path/model/is/used'))
69
- .toEqual('/details/item/inside/a/long/path/model/is/used');
70
-
71
- expect(br.plugins.resume.getCookiePath('/details/item/inside/a/long/path/mode/is/used'))
72
- .toEqual('/details/item/inside/a/long/path');
73
- });
74
-
75
- test('handles cookie path from URL with no decoration', () => {
76
- expect(br.plugins.resume.getCookiePath('/details/item'))
77
- .toEqual('/details/item');
78
-
79
- expect(br.plugins.resume.getCookiePath('/details/item/'))
80
- .toEqual('/details/item/');
81
-
82
- expect(br.plugins.resume.getCookiePath('/details/item/almost/any/kind/of/long/path'))
83
- .toEqual('/details/item/almost/any/kind/of/long/path');
84
- });
85
- });