@internetarchive/bookreader 5.0.0-10-alpha-3 → 5.0.0-101

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 (374) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +431 -1134
  4. package/BookReader/BookReader.js +1 -1
  5. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  6. package/BookReader/BookReader.js.map +1 -1
  7. package/BookReader/bergamot-translator-worker.js +2966 -0
  8. package/BookReader/bergamot-translator-worker.wasm +0 -0
  9. package/BookReader/hypothesis/LICENSE +50 -0
  10. package/BookReader/hypothesis/README.md +55 -0
  11. package/BookReader/hypothesis/build/boot.js +1 -0
  12. package/BookReader/hypothesis/build/manifest.json +20 -0
  13. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
  14. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
  16. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  17. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
  18. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  19. package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
  20. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  38. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  39. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  40. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  41. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  42. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
  44. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
  46. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  47. package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
  48. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  49. package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
  50. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  51. package/BookReader/hypothesis/package.json +126 -0
  52. package/BookReader/ia-bookreader-bundle.js +1782 -0
  53. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  54. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  55. package/BookReader/icons/1up.svg +1 -1
  56. package/BookReader/icons/2up.svg +1 -1
  57. package/BookReader/icons/advance.svg +1 -1
  58. package/BookReader/icons/chevron-right.svg +1 -1
  59. package/BookReader/icons/close-circle-dark.svg +1 -1
  60. package/BookReader/icons/close-circle.svg +1 -1
  61. package/BookReader/icons/fullscreen.svg +1 -1
  62. package/BookReader/icons/fullscreen_exit.svg +1 -1
  63. package/BookReader/icons/hamburger.svg +1 -1
  64. package/BookReader/icons/left-arrow.svg +1 -1
  65. package/BookReader/icons/magnify-minus.svg +1 -1
  66. package/BookReader/icons/magnify-plus.svg +1 -1
  67. package/BookReader/icons/magnify.svg +1 -1
  68. package/BookReader/icons/pause.svg +1 -1
  69. package/BookReader/icons/play.svg +1 -1
  70. package/BookReader/icons/playback-speed.svg +1 -1
  71. package/BookReader/icons/read-aloud.svg +1 -1
  72. package/BookReader/icons/review.svg +1 -1
  73. package/BookReader/icons/thumbnails.svg +1 -1
  74. package/BookReader/icons/voice.svg +1 -0
  75. package/BookReader/icons/volume-full.svg +1 -1
  76. package/BookReader/images/BRicons.svg +3 -3
  77. package/BookReader/images/books_graphic.svg +1 -1
  78. package/BookReader/images/hypothesis.ico +0 -0
  79. package/BookReader/images/icon_book.svg +1 -1
  80. package/BookReader/images/icon_bookmark.svg +1 -1
  81. package/BookReader/images/icon_experiment.svg +1 -0
  82. package/BookReader/images/icon_gear.svg +1 -1
  83. package/BookReader/images/icon_hamburger.svg +1 -1
  84. package/BookReader/images/icon_home.svg +1 -1
  85. package/BookReader/images/icon_info.svg +1 -1
  86. package/BookReader/images/icon_one_page.svg +1 -1
  87. package/BookReader/images/icon_pause.svg +1 -1
  88. package/BookReader/images/icon_play.svg +1 -1
  89. package/BookReader/images/icon_playback-rate.svg +1 -1
  90. package/BookReader/images/icon_search_button.svg +1 -1
  91. package/BookReader/images/icon_share.svg +1 -1
  92. package/BookReader/images/icon_skip-ahead.svg +1 -1
  93. package/BookReader/images/icon_skip-back.svg +1 -1
  94. package/BookReader/images/icon_speaker.svg +1 -1
  95. package/BookReader/images/icon_speaker_open.svg +1 -1
  96. package/BookReader/images/icon_thumbnails.svg +1 -1
  97. package/BookReader/images/icon_toc.svg +1 -1
  98. package/BookReader/images/icon_two_pages.svg +1 -1
  99. package/BookReader/images/marker_chap-off.svg +1 -1
  100. package/BookReader/images/marker_chap-on.svg +1 -1
  101. package/BookReader/images/marker_srch-on.svg +1 -1
  102. package/BookReader/images/translate.svg +1 -0
  103. package/BookReader/images/unviewable_page.png +0 -0
  104. package/BookReader/jquery-3.js +2 -0
  105. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  106. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  107. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  108. package/BookReader/plugins/plugin.autoplay.js +1 -1
  109. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  110. package/BookReader/plugins/plugin.chapters.js +25 -1
  111. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  112. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  113. package/BookReader/plugins/plugin.experiments.js +3 -0
  114. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  115. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  116. package/BookReader/plugins/plugin.iframe.js +1 -1
  117. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  118. package/BookReader/plugins/plugin.iiif.js +2 -0
  119. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  120. package/BookReader/plugins/plugin.resume.js +1 -1
  121. package/BookReader/plugins/plugin.resume.js.map +1 -1
  122. package/BookReader/plugins/plugin.search.js +2 -1
  123. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  124. package/BookReader/plugins/plugin.search.js.map +1 -1
  125. package/BookReader/plugins/plugin.text_selection.js +2 -1
  126. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  127. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  128. package/BookReader/plugins/plugin.translate.js +137 -0
  129. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  130. package/BookReader/plugins/plugin.translate.js.map +1 -0
  131. package/BookReader/plugins/plugin.tts.js +1 -1
  132. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  133. package/BookReader/plugins/plugin.tts.js.map +1 -1
  134. package/BookReader/plugins/plugin.url.js +1 -1
  135. package/BookReader/plugins/plugin.url.js.map +1 -1
  136. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  137. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  138. package/BookReader/plugins/translator-worker.js +2 -0
  139. package/BookReader/plugins/translator-worker.js.map +1 -0
  140. package/BookReader/silence.mp3 +0 -0
  141. package/BookReader/translator-worker.js +475 -0
  142. package/BookReader/webcomponents-bundle.js +3 -0
  143. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  144. package/BookReader/webcomponents-bundle.js.map +1 -0
  145. package/README.md +14 -3
  146. package/jsconfig.json +19 -0
  147. package/package.json +84 -64
  148. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  149. package/src/BookNavigator/assets/button-base.js +2 -1
  150. package/src/BookNavigator/assets/ia-logo.js +17 -0
  151. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  152. package/src/BookNavigator/assets/icon_close.js +1 -1
  153. package/src/BookNavigator/book-navigator.js +620 -0
  154. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  155. package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -3
  156. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  157. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +2 -2
  158. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  159. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  160. package/src/BookNavigator/delete-modal-actions.js +1 -1
  161. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  162. package/src/BookNavigator/downloads/downloads.js +24 -4
  163. package/src/BookNavigator/search/search-provider.js +55 -27
  164. package/src/BookNavigator/search/search-results.js +25 -11
  165. package/src/BookNavigator/sharing.js +27 -0
  166. package/src/BookNavigator/viewable-files.js +95 -0
  167. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  168. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +9 -9
  169. package/src/BookReader/BookModel.js +92 -46
  170. package/src/BookReader/DragScrollable.js +233 -0
  171. package/src/BookReader/ImageCache.js +49 -16
  172. package/src/BookReader/Mode1Up.js +58 -360
  173. package/src/BookReader/Mode1UpLit.js +393 -0
  174. package/src/BookReader/Mode2Up.js +75 -1318
  175. package/src/BookReader/Mode2UpLit.js +787 -0
  176. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  177. package/src/BookReader/ModeSmoothZoom.js +312 -0
  178. package/src/BookReader/ModeThumb.js +20 -12
  179. package/src/BookReader/Navbar/Navbar.js +130 -53
  180. package/src/BookReader/PageContainer.js +120 -23
  181. package/src/BookReader/ReduceSet.js +2 -2
  182. package/src/BookReader/Toolbar/Toolbar.js +18 -40
  183. package/src/BookReader/events.js +2 -3
  184. package/src/BookReader/options.js +87 -16
  185. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  186. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  187. package/src/BookReader/utils/SelectionObserver.js +45 -0
  188. package/src/BookReader/utils/classes.js +1 -1
  189. package/src/BookReader/utils.js +136 -12
  190. package/src/BookReader.js +641 -1192
  191. package/src/BookReaderPlugin.js +52 -0
  192. package/src/assets/icons/magnify-minus.svg +3 -7
  193. package/src/assets/icons/magnify-plus.svg +3 -7
  194. package/src/assets/icons/voice.svg +1 -0
  195. package/src/assets/images/hypothesis.ico +0 -0
  196. package/src/assets/images/icon_experiment.svg +1 -0
  197. package/src/assets/images/translate.svg +1 -0
  198. package/src/assets/images/unviewable_page.png +0 -0
  199. package/src/assets/silence.mp3 +0 -0
  200. package/src/css/BookReader.scss +1 -5
  201. package/src/css/_BRBookmarks.scss +1 -1
  202. package/src/css/_BRComponent.scss +1 -1
  203. package/src/css/_BRicon.scss +8 -2
  204. package/src/css/_BRmain.scss +16 -3
  205. package/src/css/_BRnav.scss +12 -66
  206. package/src/css/_BRpages.scss +171 -42
  207. package/src/css/_BRsearch.scss +69 -30
  208. package/src/css/_BRtoolbar.scss +5 -5
  209. package/src/css/_TextSelection.scss +129 -24
  210. package/src/css/_colorbox.scss +2 -2
  211. package/src/css/_controls.scss +24 -7
  212. package/src/css/_icons.scss +1 -1
  213. package/src/ia-bookreader/ia-bookreader.js +224 -0
  214. package/src/plugins/plugin.archive_analytics.js +84 -78
  215. package/src/plugins/plugin.autoplay.js +99 -104
  216. package/src/plugins/plugin.chapters.js +314 -205
  217. package/src/plugins/plugin.experiments.js +321 -0
  218. package/src/plugins/plugin.iframe.js +1 -1
  219. package/src/plugins/plugin.iiif.js +141 -0
  220. package/src/plugins/plugin.resume.js +54 -51
  221. package/src/plugins/plugin.text_selection.js +510 -219
  222. package/src/plugins/plugin.vendor-fullscreen.js +5 -5
  223. package/src/plugins/search/plugin.search.js +370 -392
  224. package/src/plugins/search/utils.js +43 -0
  225. package/src/plugins/search/view.js +49 -67
  226. package/src/plugins/translate/TranslationManager.js +162 -0
  227. package/src/plugins/translate/plugin.translate.js +523 -0
  228. package/src/plugins/tts/AbstractTTSEngine.js +78 -49
  229. package/src/plugins/tts/FestivalTTSEngine.js +20 -30
  230. package/src/plugins/tts/PageChunk.js +33 -21
  231. package/src/plugins/tts/PageChunkIterator.js +11 -17
  232. package/src/plugins/tts/WebTTSEngine.js +131 -91
  233. package/src/plugins/tts/plugin.tts.js +344 -350
  234. package/src/plugins/tts/utils.js +49 -47
  235. package/src/plugins/url/UrlPlugin.js +191 -0
  236. package/src/plugins/{plugin.url.js → url/plugin.url.js} +44 -15
  237. package/src/util/TextSelectionManager.js +282 -0
  238. package/src/util/browserSniffing.js +33 -1
  239. package/src/util/cache.js +20 -0
  240. package/src/util/docCookies.js +21 -2
  241. package/src/util/strings.js +1 -0
  242. package/.babelrc +0 -12
  243. package/.dependabot/config.yml +0 -6
  244. package/.eslintrc.js +0 -50
  245. package/.gitattributes +0 -2
  246. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  247. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  248. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  249. package/.github/workflows/node.js.yml +0 -37
  250. package/.github/workflows/npm-publish.yml +0 -47
  251. package/.testcaferc.json +0 -5
  252. package/BookReader/bookreader-component-bundle.js +0 -1450
  253. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  254. package/BookReader/bookreader-component-bundle.js.map +0 -1
  255. package/BookReader/jquery-1.10.1.js +0 -2
  256. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  257. package/BookReader/plugins/plugin.menu_toggle.js +0 -2
  258. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  259. package/BookReader/plugins/plugin.mobile_nav.js +0 -2
  260. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  261. package/BookReaderDemo/BookReaderDemo.css +0 -41
  262. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
  263. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  264. package/BookReaderDemo/BookReaderJSSimple.js +0 -55
  265. package/BookReaderDemo/IIIFBookReader.js +0 -207
  266. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  267. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  268. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  269. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  270. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  271. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  272. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  273. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  274. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  275. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  276. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  277. package/BookReaderDemo/demo-advanced.html +0 -33
  278. package/BookReaderDemo/demo-autoplay.html +0 -38
  279. package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
  280. package/BookReaderDemo/demo-embed.html +0 -26
  281. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
  282. package/BookReaderDemo/demo-fullscreen.html +0 -33
  283. package/BookReaderDemo/demo-iiif.html +0 -34
  284. package/BookReaderDemo/demo-iiif.js +0 -26
  285. package/BookReaderDemo/demo-internetarchive.html +0 -74
  286. package/BookReaderDemo/demo-multiple.html +0 -43
  287. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  288. package/BookReaderDemo/demo-preview-pages.html +0 -1092
  289. package/BookReaderDemo/demo-simple.html +0 -34
  290. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
  291. package/BookReaderDemo/immersion-1up.html +0 -64
  292. package/BookReaderDemo/immersion-mode.html +0 -35
  293. package/BookReaderDemo/toggle_controls.html +0 -53
  294. package/BookReaderDemo/view_mode.html +0 -39
  295. package/BookReaderDemo/viewmode-cycle.html +0 -41
  296. package/CHANGELOG.md +0 -493
  297. package/CONTRIBUTING.md +0 -7
  298. package/codecov.yml +0 -17
  299. package/index.html +0 -31
  300. package/karma.conf.js +0 -23
  301. package/screenshot.png +0 -0
  302. package/scripts/postversion.js +0 -10
  303. package/scripts/preversion.js +0 -14
  304. package/scripts/version.js +0 -26
  305. package/src/BookNavigator/BookModel.js +0 -14
  306. package/src/BookNavigator/BookNavigator.js +0 -446
  307. package/src/BookNavigator/assets/book-loader.js +0 -27
  308. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  309. package/src/BookNavigator/search/a-search-result.js +0 -55
  310. package/src/BookReader/DebugConsole.js +0 -54
  311. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  312. package/src/ItemNavigator/ItemNavigator.js +0 -376
  313. package/src/ItemNavigator/providers/sharing.js +0 -29
  314. package/src/css/_MobileNav.scss +0 -194
  315. package/src/dragscrollable-br.js +0 -261
  316. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  317. package/src/plugins/plugin.mobile_nav.js +0 -287
  318. package/tests/BookReader/BookModel.test.js +0 -312
  319. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  320. package/tests/BookReader/DebugConsole.test.js +0 -25
  321. package/tests/BookReader/ImageCache.test.js +0 -150
  322. package/tests/BookReader/Mode1Up.test.js +0 -164
  323. package/tests/BookReader/Mode2Up.test.js +0 -247
  324. package/tests/BookReader/Navbar/Navbar.test.js +0 -169
  325. package/tests/BookReader/PageContainer.test.js +0 -115
  326. package/tests/BookReader/ReduceSet.test.js +0 -38
  327. package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
  328. package/tests/BookReader/utils/classes.test.js +0 -88
  329. package/tests/BookReader/utils.test.js +0 -109
  330. package/tests/BookReader.options.test.js +0 -39
  331. package/tests/BookReader.test.js +0 -301
  332. package/tests/e2e/README.md +0 -75
  333. package/tests/e2e/autoplay.test.js +0 -13
  334. package/tests/e2e/base.test.js +0 -35
  335. package/tests/e2e/helpers/base.js +0 -263
  336. package/tests/e2e/helpers/debug.js +0 -13
  337. package/tests/e2e/helpers/desktopSearch.js +0 -72
  338. package/tests/e2e/helpers/mobileSearch.js +0 -85
  339. package/tests/e2e/helpers/mockSearch.js +0 -93
  340. package/tests/e2e/helpers/rightToLeft.js +0 -29
  341. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  342. package/tests/e2e/models/BookReader.js +0 -11
  343. package/tests/e2e/models/Navigation.js +0 -56
  344. package/tests/e2e/rightToLeft.test.js +0 -20
  345. package/tests/e2e/viewmode.test.js +0 -37
  346. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  347. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
  348. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
  349. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  350. package/tests/karma/BookNavigator/search/search-results.test.js +0 -240
  351. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  352. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  353. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  354. package/tests/plugins/plugin.autoplay.test.js +0 -52
  355. package/tests/plugins/plugin.chapters.test.js +0 -130
  356. package/tests/plugins/plugin.iframe.test.js +0 -42
  357. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  358. package/tests/plugins/plugin.resume.test.js +0 -98
  359. package/tests/plugins/plugin.text_selection.test.js +0 -203
  360. package/tests/plugins/plugin.url.test.js +0 -129
  361. package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
  362. package/tests/plugins/search/plugin.search.test.js +0 -173
  363. package/tests/plugins/search/plugin.search.view.test.js +0 -106
  364. package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
  365. package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
  366. package/tests/plugins/tts/PageChunk.test.js +0 -57
  367. package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
  368. package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
  369. package/tests/plugins/tts/utils.test.js +0 -133
  370. package/tests/util/browserSniffing.test.js +0 -56
  371. package/tests/util/docCookies.test.js +0 -15
  372. package/tests/util/strings.test.js +0 -63
  373. package/tests/utils.js +0 -42
  374. package/webpack.config.js +0 -86
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.js"],"names":["super_","jQuery","extend","BookReader","defaultOptions","enableAutoPlayPlugin","prototype","setup","options","call","this","auto","autoTimer","flipDelay","init","bind","eventNames","stop","autoStop","bindNavigationHandlers","jIcons","$","add","filter","click","autoToggle","overrides","flipSpeed","trigger","bComingFrom1up","constMode2up","mode","switchMode","reduce","twoPageGetAutofitReduce","zoom","pageProgression","flipFwdToIndex","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","lastDisplayableIndex","flipBackToIndex","clearInterval"],"mappings":"mKAYuCA,E,oBAPvCC,EAAOC,OAAOC,WAAWC,eAAgB,CACvCC,sBAAsB,IAMxBF,WAAWG,UAAUC,OAAkBP,EAQpCG,WAAWG,UAAUC,MAPf,SAAUC,GACfR,EAAOS,KAAKC,KAAMF,GAElBE,KAAKC,MAAY,EACjBD,KAAKE,UAAY,KACjBF,KAAKG,UAAY,MAOrBV,WAAWG,UAAUQ,KAAQ,SAASd,GACpC,OAAO,SAAUQ,GAAS,WACxBR,EAAOS,KAAKC,KAAMF,GAEbE,KAAKF,QAAQH,sBAClBK,KAAKK,KAAKZ,WAAWa,WAAWC,MAAM,kBAAM,EAAKC,eALxB,CAO1Bf,WAAWG,UAAUQ,MAKxBX,WAAWG,UAAUa,uBAA0B,SAASnB,GACtD,OAAO,WAAW,WAGhB,GAFAA,EAAOS,KAAKC,MAEPA,KAAKF,QAAQH,qBAAlB,CAGA,IAAMe,EAASV,KAAKW,EAAE,WAAWC,IAAI,yBAErCF,EAAOG,OAAO,SAASC,OAAM,WAE3B,OADA,EAAKC,cACE,KAGTL,EAAOG,OAAO,UAAUC,OAAM,WAE5B,OADA,EAAKC,cACE,OAhBkC,CAmB5CtB,WAAWG,UAAUa,wBAQxBhB,WAAWG,UAAUmB,WAAa,SAASC,GAAW,WACpD,GAAKhB,KAAKF,QAAQH,qBAAlB,CAEA,IAAMG,EAAUa,EAAEnB,OAAO,CACvByB,UAAWjB,KAAKiB,UAChBd,UAAWH,KAAKG,WACfa,GAEHhB,KAAKiB,UAAyC,iBAAtBnB,EAAQmB,UAAyBnB,EAAQmB,UAAYjB,KAAKiB,UAClFjB,KAAKG,UAAyC,iBAAtBL,EAAQK,UAAyBL,EAAQK,UAAYH,KAAKG,UAClFH,KAAKkB,QAAQzB,WAAWa,WAAWC,MAEnC,IAAIY,GAAiB,EACjBnB,KAAKoB,cAAgBpB,KAAKqB,OAC5BF,GAAiB,EACjBnB,KAAKsB,WAAWtB,KAAKoB,eAInBpB,KAAKuB,OAASvB,KAAKwB,2BACrBxB,KAAKyB,KAAK,QAGR,MAAQzB,KAAKE,WAKV,MAAQF,KAAK0B,iBAAoBP,GAIpCnB,KAAK2B,iBAGP3B,KAAKW,EAAE,SAASiB,OAChB5B,KAAKW,EAAE,UAAUkB,OACjB7B,KAAKE,UAAY4B,aAAY,WACvB,EAAKC,YAELC,KAAKC,IAAI,EAAKC,QAAQC,cAAe,EAAKD,QAAQE,gBAAkB,EAAKC,uBAC3E,EAAKC,gBAAgB,GAErB,EAAKX,oBAEN3B,KAAKG,YAERH,KAAKQ,aAOTf,WAAWG,UAAUY,SAAW,WACzBR,KAAKF,QAAQH,sBAEd,MAAQK,KAAKE,YACfqC,cAAcvC,KAAKE,WACnBF,KAAKiB,UAAY,OACjBjB,KAAKW,EAAE,UAAUiB,OACjB5B,KAAKW,EAAE,SAASkB,OAChB7B,KAAKE,UAAY,S","file":"plugins/plugin.autoplay.js","sourcesContent":["/*global BookReader */\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\njQuery.extend(BookReader.defaultOptions, {\n enableAutoPlayPlugin: true\n});\n\n/**\n * @override BookReader.setup\n */\nBookReader.prototype.setup = (function(super_) {\n return function (options) {\n super_.call(this, options);\n\n this.auto = false;\n this.autoTimer = null;\n this.flipDelay = 5000;\n };\n})(BookReader.prototype.setup);\n\n/**\n * @override BookReader.init\n */\nBookReader.prototype.init = (function(super_) {\n return function (options) {\n super_.call(this, options);\n\n if (!this.options.enableAutoPlayPlugin) return;\n this.bind(BookReader.eventNames.stop, () => this.autoStop());\n };\n})(BookReader.prototype.init);\n\n/**\n * @override BookReader.bindNavigationHandlers\n */\nBookReader.prototype.bindNavigationHandlers = (function(super_) {\n return function() {\n super_.call(this);\n\n if (!this.options.enableAutoPlayPlugin) return;\n\n // Note the mobile plugin attaches itself to body, so we need to select outside\n const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');\n\n jIcons.filter('.play').click(() => {\n this.autoToggle();\n return false;\n });\n\n jIcons.filter('.pause').click(() => {\n this.autoToggle();\n return false;\n });\n };\n})(BookReader.prototype.bindNavigationHandlers);\n\n/**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\nBookReader.prototype.autoToggle = function(overrides) {\n if (!this.options.enableAutoPlayPlugin) return;\n\n const options = $.extend({\n flipSpeed: this.flipSpeed,\n flipDelay: this.flipDelay\n }, overrides);\n\n this.flipSpeed = typeof options.flipSpeed === \"number\" ? options.flipSpeed : this.flipSpeed;\n this.flipDelay = typeof options.flipDelay === \"number\" ? options.flipDelay : this.flipDelay;\n this.trigger(BookReader.eventNames.stop);\n\n let bComingFrom1up = false;\n if (this.constMode2up != this.mode) {\n bComingFrom1up = true;\n this.switchMode(this.constMode2up);\n }\n\n // Change to autofit if book is too large\n if (this.reduce < this.twoPageGetAutofitReduce()) {\n this.zoom('auto');\n }\n\n if (null == this.autoTimer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.flipFwdToIndex();\n }\n\n this.$('.play').hide();\n this.$('.pause').show();\n this.autoTimer = setInterval(() => {\n if (this.animating) return;\n\n if (Math.max(this.twoPage.currentIndexL, this.twoPage.currentIndexR) >= this.lastDisplayableIndex()) {\n this.flipBackToIndex(1); // $$$ really what we want?\n } else {\n this.flipFwdToIndex();\n }\n }, this.flipDelay);\n } else {\n this.autoStop();\n }\n};\n\n/**\n * Stop autoplay mode, allowing animations to finish\n */\nBookReader.prototype.autoStop = function() {\n if (!this.options.enableAutoPlayPlugin) return;\n\n if (null != this.autoTimer) {\n clearInterval(this.autoTimer);\n this.flipSpeed = 'fast';\n this.$('.pause').hide();\n this.$('.play').show();\n this.autoTimer = null;\n }\n};\n"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.autoplay.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { EVENTS } from \"../BookReader/events.js\";\nimport { parseAnimationSpeed } from \"../BookReader/utils.js\";\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\nexport class AutoplayPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /**\n * @type {number | 'fast' | 'slow'}\n * How quickly the flip animation should run.\n **/\n flipSpeed: 1500,\n /** How long to pause on each page between flips */\n flipDelay: 5000,\n /** Allow controlling the autoflip/speed/delay from the url */\n urlParams: true,\n }\n\n timer = null;\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.br.bind(EVENTS.stop, () => this.stop());\n\n if (this.options.urlParams) {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('flipSpeed')) {\n this.options.flipSpeed = parseAnimationSpeed(urlParams.get('flipSpeed')) || this.options.flipSpeed;\n }\n if (urlParams.get('flipDelay')) {\n this.options.flipDelay = parseAnimationSpeed(urlParams.get('flipDelay')) || this.options.flipDelay;\n }\n if (urlParams.get('autoflip') === '1') {\n this.toggle();\n }\n }\n }\n\n /** @override */\n _bindNavigationHandlers() {\n if (!this.options.enabled) return;\n\n const jIcons = this.br.$('.BRicon');\n\n jIcons.filter('.play').on('click', () => {\n this.toggle();\n return false;\n });\n\n jIcons.filter('.pause').on('click', () => {\n this.toggle();\n return false;\n });\n }\n\n /**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\n toggle(overrides = null) {\n if (!this.options.enabled) return;\n\n Object.assign(this.options, overrides);\n this.br.trigger(EVENTS.stop);\n\n let bComingFrom1up = false;\n if (this.br.constMode2up != this.br.mode) {\n bComingFrom1up = true;\n this.br.switchMode(this.br.constMode2up);\n }\n\n if (null == this.timer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.br.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n\n this.br.$('.play').hide();\n this.br.$('.pause').show();\n this.timer = setInterval(() => {\n if (this.br.animating) return;\n\n if (Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR) >= this.br.book.getNumLeafs() - 1) {\n this.br.prev({ triggerStop: false, flipSpeed: this.options.flipSpeed }); // $$$ really what we want?\n } else {\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n }, parseAnimationSpeed(this.options.flipDelay));\n } else {\n this.stop();\n }\n }\n\n /**\n * Stop autoplay mode, allowing animations to finish\n */\n stop() {\n if (!this.options.enabled) return;\n\n if (null != this.timer) {\n clearInterval(this.timer);\n this.br.$('.pause').hide();\n this.br.$('.play').show();\n this.timer = null;\n }\n }\n}\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\nBookReader?.registerPlugin('autoplay', AutoplayPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","AutoplayPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","flipSpeed","flipDelay","urlParams","_inherits","_this2","bind","EVENTS","stop","URLSearchParams","window","location","search","get","parseAnimationSpeed","toggle","_this3","jIcons","$","filter","on","_this4","overrides","undefined","trigger","bComingFrom1up","constMode2up","mode","switchMode","timer","pageProgression","next","triggerStop","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","book","getNumLeafs","prev","clearInterval","BookReader","registerPlugin"],"sourceRoot":""}
@@ -1,2 +1,26 @@
1
- (self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[529],{8586:function(e,t,n){"use strict";n(9600),n(7327),n(2222),n(9826),n(4553);var a,o=n(3609),r=n(3609);o.extend(BookReader.defaultOptions,{olHost:"https://openlibrary.org",enableChaptersPlugin:!0,bookId:""}),BookReader.prototype.setup=(a=BookReader.prototype.setup,function(e){a.call(this,e),this.olHost=e.olHost,this.enableChaptersPlugin=e.enableChaptersPlugin,this.bookId=e.bookId}),BookReader.prototype.init=function(e){return function(){var t=this;e.call(this),this.enableChaptersPlugin&&"embed"!==this.ui&&this.getOpenLibraryRecord(),this.enableMobileNav&&(this.bind(BookReader.eventNames.mobileNavOpen,(function(){t.updateTOCState(t.firstIndex,t._tocEntries),r("table-contents-list").parent().hasClass("mm-opened")&&t.updateTOCState(t.firstIndex,t._tocEntries)})),r(".BRmobileMenu__tableContents").click((function(){t.updateTOCState(t.firstIndex,t._tocEntries)})))}}(BookReader.prototype.init),BookReader.prototype.addChapter=function(e,t,n){var a=this,o=BookReader.util.cssPercentage(n,this.getNumLeafs()-1),i=function(e){a.jumpToIndex(r(e.delegateTarget).data("pageIndex")),r(".current-chapter").removeClass("current-chapter"),r(e.delegateTarget).addClass("current-chapter")},s="".concat(e," | "),c="".concat("Page"," ").concat(t),l=r("<li></li>").append(r("<span class='BRTOCElementTitle'></span>").text(s)).append(r("<span class='BRTOCElementPage'></span>").text(c));l.addClass("BRtable-contents-el").appendTo(this.$(".table-contents-list")).data({pageIndex:n}),null!=n&&(r("<div></div>").append(r("<div />").text(s+c)).addClass("BRchapter").css({left:o}).appendTo(this.$(".BRnavline")).data({pageIndex:n}).hover((function(e){var t=e.currentTarget,n=t.querySelector("div"),o=n.getBoundingClientRect(),i=t.getBoundingClientRect(),s=2*parseInt(getComputedStyle(n).paddingLeft);o.x-s<0&&n.style.setProperty("transform","translateX(-".concat(i.left-s,"px)")),a.$(".BRsearch,.BRchapter").removeClass("front"),r(e.target).addClass("front")}),(function(e){return r(e.target).removeClass("front")})).on("click",i),l.bind("click",i).addClass("chapter-clickable").attr("data-event-click-tracking","BRTOCPanel|GoToChapter"))},BookReader.prototype.removeChapters=function(){this.$(".BRnavpos .BRchapter").remove()},BookReader.prototype.updateTOC=function(e){this.removeChapters(),this.enableMobileNav&&e.length>0&&this.$(".BRmobileMenu__tableContents").show();for(var t=0;t<e.length;t++)this.addChapterFromEntry(e[t]);this._tocEntries=e,r(".table-contents-list").children().each((function(t,n){e[t].mobileHTML=n}))},BookReader.prototype.addChapterFromEntry=function(e){e.pageIndex=this.getPageIndex(e.pagenum);var t=[e.label,e.title].filter((function(e){return e})).join(" ");this.addChapter(t,e.pagenum,e.pageIndex),this.$(".BRchapter, .BRsearch").each((function(e,t){var n=r(t);n.hover((function(){return n.addClass("front")}),(function(){return n.removeClass("front")}))}))},BookReader.prototype.getOpenLibraryRecord=function(){var e=this,t="".concat(this.olHost,"/query.json?type=/type/edition&*="),n="".concat(t,"&ocaid=").concat(this.bookId);r.ajax({url:n,dataType:"jsonp"}).then((function(n){return n&&n.length>0?n:r.ajax({url:"".concat(t,"&source_records=ia:").concat(e.bookId),dataType:"jsonp"})})).then((function(t){var n;t&&t.length>0&&(n=t[0])&&n.table_of_contents&&e.updateTOC(n.table_of_contents)}))},BookReader.prototype.buildMobileDrawerElement=function(e){return function(){var t=e.call(this);return this.enableMobileNav&&this.options.enableChaptersPlugin&&t.find(".BRmobileMenu__moreInfoRow").after(r('\n <li class="BRmobileMenu__tableContents" data-event-click-tracking="BRSidebar|TOCPanel">\n <span>\n <span class="DrawerIconWrapper">\n <img class="DrawerIcon" src="'.concat(this.imagesBaseURL,'icon_toc.svg" alt="toc-icon"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class="table-contents-list">\n </ol>\n </div>\n </li>')).hide()),t}}(BookReader.prototype.buildMobileDrawerElement),BookReader.prototype.updateTOCState=function(e,t){if(t){r(".current-chapter").removeClass("current-chapter");var n=t.filter((function(e){return null!=e.pageIndex})).reverse(),a=n[n.findIndex((function(t){return t.pageIndex<=e}))];null!=a&&r(a.mobileHTML).addClass("current-chapter")}}}},function(e){"use strict";e(e.s=8586)}]);
1
+ /*! For license information please see plugin.chapters.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[858],{706:function(t,e,r){var n=r(350).PROPER,o=r(9039),i=r(7452);t.exports=function(t){return o((function(){return!!i[t]()||"​…᠎"!=="​…᠎"[t]()||n&&i[t].name!==t}))}},2762:function(t,e,r){var n=r(6518),o=r(3802).trim;n({target:"String",proto:!0,forced:r(706)("trim")},{trim:function(){return o(this)}})},1041:function(t,e,r){function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function i(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,"string");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(e)?e:e+""}r.d(e,{S:function(){return a}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var a=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.br=e,this.options},(e=[{key:"setup",value:function(t){this.options=Object.assign({},this.options,t)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(t){}},{key:"_configureToolbar",value:function(t){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(t){}}])&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()},9220:function(t,e,r){r(2675),r(9463),r(6412),r(2259),r(8125),r(113),r(3418),r(4782),r(4554),r(2010),r(4731),r(479),r(2811),r(3851),r(875),r(3362),r(825),r(888),r(7495),r(8781),r(5700),r(8706),r(2008),r(8980),r(3792),r(8598),r(2062),r(4490),r(9572),r(8130),r(9085),r(6099),r(8940),r(7764),r(3500),r(2953),r(8408);var n=r(420),o=r(9696),i=r(6681),a=r(8900),c=n.qy`
3
+ <svg
4
+ viewBox="0 0 24 24"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ aria-labelledby="tocTitleID tocDescID"
7
+ >
8
+ <title id="tocTitleID">Table of contents icon</title>
9
+ <desc id="tocDescID">An illustration of three text list items</desc>
10
+ <g class="fill-color" fill-rule="evenodd"><rect height="3" rx="1.5" width="18" x="6"/><rect height="3" rx="1.5" width="18" x="6" y="21"/><rect height="3" rx="1.5" width="18" x="6" y="14"/><rect height="3" rx="1.5" width="18" x="6" y="7"/><rect height="3" rx="1.5" width="4"/><rect height="3" rx="1.5" width="4" y="21"/><rect height="3" rx="1.5" width="4" y="14"/><rect height="3" rx="1.5" width="4" y="7"/></g>
11
+ </svg>
12
+ `;class s extends n.WF{static get styles(){return n.AH`
13
+ :host {
14
+ width: var(--iconWidth, 'auto');
15
+ height: var(--iconHeight, 'auto');
16
+ }
17
+
18
+ .fill-color {
19
+ fill: var(--iconFillColor);
20
+ }
21
+
22
+ .stroke-color {
23
+ stroke: var(--iconStrokeColor);
24
+ }
25
+ `}render(){return c}}customElements.define("ia-icon-toc",s);var u,l,f,p,h,d,y=r(1041),v=r(9073),m=r(1669);function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}function g(){g=function(){return t};var t={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(t,e){["method","field"].forEach((function(r){e.forEach((function(e){e.kind===r&&"own"===e.placement&&this.defineClassElement(t,e)}),this)}),this)},initializeClassElements:function(t,e){var r=t.prototype;["method","field"].forEach((function(n){e.forEach((function(e){var o=e.placement;if(e.kind===n&&("static"===o||"prototype"===o)){var i="static"===o?t:r;this.defineClassElement(i,e)}}),this)}),this)},defineClassElement:function(t,e){var r=e.descriptor;if("field"===e.kind){var n=e.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(t)}}Object.defineProperty(t,e.key,r)},decorateClass:function(t,e){var r=[],n=[],o={static:[],prototype:[],own:[]};if(t.forEach((function(t){this.addElementPlacement(t,o)}),this),t.forEach((function(t){if(!x(t))return r.push(t);var e=this.decorateElement(t,o);r.push(e.element),r.push.apply(r,e.extras),n.push.apply(n,e.finishers)}),this),!e)return{elements:r,finishers:n};var i=this.decorateConstructor(r,e);return n.push.apply(n,i.finishers),i.finishers=n,i},addElementPlacement:function(t,e,r){var n=e[t.placement];if(!r&&-1!==n.indexOf(t.key))throw new TypeError("Duplicated element ("+t.key+")");n.push(t.key)},decorateElement:function(t,e){for(var r=[],n=[],o=t.decorators,i=o.length-1;i>=0;i--){var a=e[t.placement];a.splice(a.indexOf(t.key),1);var c=this.fromElementDescriptor(t),s=this.toElementFinisherExtras((0,o[i])(c)||c);t=s.element,this.addElementPlacement(t,e),s.finisher&&n.push(s.finisher);var u=s.extras;if(u){for(var l=0;l<u.length;l++)this.addElementPlacement(u[l],e);r.push.apply(r,u)}}return{element:t,finishers:n,extras:r}},decorateConstructor:function(t,e){for(var r=[],n=e.length-1;n>=0;n--){var o=this.fromClassDescriptor(t),i=this.toClassDescriptor((0,e[n])(o)||o);if(void 0!==i.finisher&&r.push(i.finisher),void 0!==i.elements){t=i.elements;for(var a=0;a<t.length-1;a++)for(var c=a+1;c<t.length;c++)if(t[a].key===t[c].key&&t[a].placement===t[c].placement)throw new TypeError("Duplicated element ("+t[a].key+")")}}return{elements:t,finishers:r}},fromElementDescriptor:function(t){var e={kind:t.kind,key:t.key,placement:t.placement,descriptor:t.descriptor};return Object.defineProperty(e,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===t.kind&&(e.initializer=t.initializer),e},toElementDescriptors:function(t){if(void 0!==t)return(e=t,function(t){if(Array.isArray(t))return t}(e)||O(e)||j(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(t){var e=this.toElementDescriptor(t);return this.disallowProperty(t,"finisher","An element descriptor"),this.disallowProperty(t,"extras","An element descriptor"),e}),this);var e},toElementDescriptor:function(t){var e=t.kind+"";if("method"!==e&&"field"!==e)throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "'+e+'"');var r=G(t.key),n=t.placement+"";if("static"!==n&&"prototype"!==n&&"own"!==n)throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "'+n+'"');var o=t.descriptor;this.disallowProperty(t,"elements","An element descriptor");var i={kind:e,key:r,placement:n,descriptor:Object.assign({},o)};return"field"!==e?this.disallowProperty(t,"initializer","A method descriptor"):(this.disallowProperty(o,"get","The property descriptor of a field descriptor"),this.disallowProperty(o,"set","The property descriptor of a field descriptor"),this.disallowProperty(o,"value","The property descriptor of a field descriptor"),i.initializer=t.initializer),i},toElementFinisherExtras:function(t){return{element:this.toElementDescriptor(t),finisher:P(t,"finisher"),extras:this.toElementDescriptors(t.extras)}},fromClassDescriptor:function(t){var e={kind:"class",elements:t.map(this.fromElementDescriptor,this)};return Object.defineProperty(e,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),e},toClassDescriptor:function(t){var e=t.kind+"";if("class"!==e)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+e+'"');this.disallowProperty(t,"key","A class descriptor"),this.disallowProperty(t,"placement","A class descriptor"),this.disallowProperty(t,"descriptor","A class descriptor"),this.disallowProperty(t,"initializer","A class descriptor"),this.disallowProperty(t,"extras","A class descriptor");var r=P(t,"finisher");return{elements:this.toElementDescriptors(t.elements),finisher:r}},runClassFinishers:function(t,e){for(var r=0;r<e.length;r++){var n=(0,e[r])(t);if(void 0!==n){if("function"!=typeof n)throw new TypeError("Finishers must return a constructor.");t=n}}return t},disallowProperty:function(t,e,r){if(void 0!==t[e])throw new TypeError(r+" can't have a ."+e+" property.")}};return t}function w(t){var e,r=G(t.key);"method"===t.kind?e={value:t.value,writable:!0,configurable:!0,enumerable:!1}:"get"===t.kind?e={get:t.value,configurable:!0,enumerable:!1}:"set"===t.kind?e={set:t.value,configurable:!0,enumerable:!1}:"field"===t.kind&&(e={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===t.kind?"field":"method",key:r,placement:t.static?"static":"field"===t.kind?"own":"prototype",descriptor:e};return t.decorators&&(n.decorators=t.decorators),"field"===t.kind&&(n.initializer=t.value),n}function k(t,e){void 0!==t.descriptor.get?e.descriptor.get=t.descriptor.get:e.descriptor.set=t.descriptor.set}function x(t){return t.decorators&&t.decorators.length}function E(t){return void 0!==t&&!(void 0===t.value&&void 0===t.writable)}function P(t,e){var r=t[e];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+e+"' to be a function");return r}function j(t,e){if(t){if("string"==typeof t)return _(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_(t,e):void 0}}function O(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function _(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function C(t,e){return e||(e=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}function I(){I=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=e&&e.prototype instanceof m?e:m,a=Object.create(i.prototype),c=new L(n||[]);return o(a,"_invoke",{value:_(t,r,c)}),a}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",h="suspendedYield",d="executing",y="completed",v={};function m(){}function g(){}function w(){}var k={};u(k,a,(function(){return this}));var x=Object.getPrototypeOf,E=x&&x(x(A([])));E&&E!==r&&n.call(E,a)&&(k=E);var P=w.prototype=m.prototype=Object.create(k);function j(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function O(t,e){function r(o,i,a,c){var s=f(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==b(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function _(e,r,n){var o=p;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===y){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=C(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var u=f(e,r,n);if("normal"===u.type){if(o=n.done?y:h,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=y,n.method="throw",n.arg=u.arg)}}}function C(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,C(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function A(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(b(e)+" is not iterable")}return g.prototype=w,o(P,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:g,configurable:!0}),g.displayName=u(w,s,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,u(t,s,"GeneratorFunction")),t.prototype=Object.create(P),t},e.awrap=function(t){return{__await:t}},j(O.prototype),u(O.prototype,c,(function(){return this})),e.AsyncIterator=O,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new O(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},j(P),u(P,s,"Generator"),u(P,a,(function(){return this})),u(P,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=A,L.prototype={constructor:L,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(T),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),T(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;T(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:A(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function S(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void r(t)}c.done?e(s):Promise.resolve(s).then(n,o)}function T(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){S(i,n,o,a,c,"next",t)}function c(t){S(i,n,o,a,c,"throw",t)}a(void 0)}))}}function L(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,G(n.key),n)}}function R(t,e,r){return e&&A(t.prototype,e),r&&A(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function D(t,e,r){return e=N(e),function(t,e){if(e&&("object"==b(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,B()?Reflect.construct(e,r||[],N(t).constructor):e.apply(t,r))}function B(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(B=function(){return!!t})()}function F(t,e,r,n){var o=z(N(1&n?t.prototype:t),e,r);return 2&n&&"function"==typeof o?function(t){return o.apply(r,t)}:o}function z(){return z="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=N(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},z.apply(null,arguments)}function N(t){return N=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},N(t)}function H(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&M(t,e)}function M(t,e){return M=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},M(t,e)}function q(t,e,r){return(e=G(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t){var e=function(t,e){if("object"!=b(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=b(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==b(e)?e:e+""}var U,W,$,Y,Z,V,X,J=window.BookReader,K=function(t){function e(){var t;L(this,e);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return q(t=D(this,e,[].concat(n)),"options",{enabled:!0,openLibraryHost:"https://openlibrary.org",openLibraryId:"",internetArchiveId:"",olHost:"https://openlibrary.org",bookId:"{{bookId}}"}),q(t,"_tocEntries",void 0),q(t,"_chaptersPanel",void 0),t}return H(e,t),R(e,[{key:"setup",value:function(t){F(e,"setup",this,3)([t]),this.options.internetArchiveId=this.options.internetArchiveId||this.options.bookId,this.options.openLibraryHost=this.options.openLibraryHost||this.options.olHost}},{key:"init",value:(o=T(I().mark((function t(){var e,r,n,o,i=this;return I().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.options.enabled&&"embed"!==this.br.ui){t.next=2;break}return t.abrupt("return");case 2:if(r=null,null===(e=this.br.options.table_of_contents)||void 0===e||!e.length){t.next=7;break}r=this.br.options.table_of_contents,t.next=11;break;case 7:return t.next=9,this.getOpenLibraryRecord();case 9:null!=(o=t.sent)&&null!==(n=o.table_of_contents)&&void 0!==n&&n.length&&(r=o.table_of_contents);case 11:r&&(this._tocEntries=r.map((function(t){return Object.assign({},t,{pageIndex:"number"==typeof t.leaf?i.br.book.leafNumToIndex(t.leaf):t.pagenum?i.br.book.getPageIndex(t.pagenum):void 0})})),this._render(),this.br.bind(J.eventNames.pageChanged,(function(){return i._updateCurrent()})));case 12:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"_render",value:function(){var t=this;this.br.shell.menuProviders.chapters={id:"chapters",icon:(0,n.qy)(u||(u=C(['<ia-icon-toc style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon-toc>']))),label:"Table of Contents",component:(0,n.qy)(l||(l=C(['<br-chapters-panel\n .contents="','"\n .jumpToPage="','"\n @connected="','"\n />'])),this._tocEntries,(function(e){t._updateCurrent(e),t.br.jumpToIndex(e)}),(function(e){t._chaptersPanel=e.target,t._updateCurrent()}))},this.br.shell.addMenuShortcut("chapters"),this.br.shell.updateMenuContents(),this._tocEntries.forEach((function(e,r){return t._renderMarker(e,r)}))}},{key:"_renderMarker",value:function(t,e){var r=this;if(null!=t.pageIndex){var n=[t.label,t.title].filter((function(t){return t})).join(" ")||"Chapter ".concat(e+1),o=J.util.cssPercentage(t.pageIndex,this.br.book.getNumLeafs()-1);m("<div></div>").append(m("<div />").text(n).append(m('<div class="BRchapterPage" />').text(this.br.book.getPageName(t.pageIndex)))).addClass("BRchapter").css({left:o}).appendTo(this.br.$(".BRnavline")).on("mouseenter",(function(t){var e=t.currentTarget,n=e.querySelector("div"),o=n.getBoundingClientRect(),i=e.getBoundingClientRect(),a=2*parseInt(getComputedStyle(n).paddingLeft);o.x-a<0&&n.style.setProperty("transform","translateX(-".concat(i.left-a,"px)")),r.br.$(".BRsearch,.BRchapter").removeClass("front"),m(t.target).addClass("front")})).on("mouseleave",(function(t){return m(t.target).removeClass("front")})).on("click",(function(){r._updateCurrent(t.pageIndex),r.br.jumpToIndex(t.pageIndex)})),this.br.$(".BRchapter, .BRsearch").each((function(t,e){var r=m(e);r.on("mouseenter",(function(){return r.addClass("front")})).on("mouseleave",(function(){return r.removeClass("front")}))}))}}},{key:"getOpenLibraryRecord",value:(r=T(I().mark((function t(){var e,r,n,o,i,a;return I().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=(0,v.g)(this.options.openLibraryHost,this.br.options.vars),!this.options.openLibraryId){t.next=6;break}return r=(0,v.g)(this.options.openLibraryId,this.br.options.vars),t.next=5,m.ajax({url:"".concat(e,"/books/").concat(r,".json")});case 5:return t.abrupt("return",t.sent);case 6:if(!this.options.internetArchiveId){t.next=17;break}return o=(0,v.g)(this.options.internetArchiveId,this.br.options.vars),i="".concat(e,"/query.json?type=/type/edition&*=&"),t.next=11,m.ajax({url:i+new URLSearchParams({ocaid:o,limit:"1"})});case 11:if((a=t.sent)&&a.length){t.next=16;break}return t.next=15,m.ajax({url:i+new URLSearchParams({source_records:"ia:".concat(o),limit:"1"})});case 15:a=t.sent;case 16:return t.abrupt("return",null===(n=a)||void 0===n?void 0:n[0]);case 17:return t.abrupt("return",null);case 18:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"_updateCurrent",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2==this.br.mode?Math.max.apply(Math,function(t){if(Array.isArray(t))return _(t)}(t=this.br.displayedIndices)||O(t)||j(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):this.br.firstIndex,r=this._tocEntries.filter((function(t){return null!=t.pageIndex})).reverse(),n=r[r.findIndex((function(t){return t.pageIndex<=e}))];this._chaptersPanel&&(this._chaptersPanel.currentChapter=n)}}]);var r,o}(y.S);null==J||J.registerPlugin("chapters",K),U=[(0,o.EM)("br-chapters-panel")],W=n.WF,Z=g(),$=function(t){Z.initializeInstanceElements(t,X.elements)},V={F:Y=function(t){function e(t){var r;return L(this,e),r=D(this,e),$(r),r.contents=t,r}return H(e,t),R(e)}(W),d:[{kind:"field",decorators:[(0,o.MZ)({type:Array})],key:"contents",value:function(){return[]}},{kind:"field",decorators:[(0,o.MZ)({type:Object})],key:"currentChapter",value:function(){return{}}},{kind:"field",key:"jumpToPage",value:function(){return function(){}}},{kind:"method",key:"render",value:function(){var t=this;return(0,n.qy)(f||(f=C(["\n <ol>\n ","\n </ol>\n "])),this.contents.map((function(e){return t.renderTOCEntry(e)})))}},{kind:"method",key:"renderTOCEntry",value:function(t){var e,r=this,o=[t.label,t.title].filter((function(t){return t})).join(" "),c=null!=t.pageIndex;return(0,n.qy)(p||(p=C(['\n <li\n class="\n BRtable-contents-el\n ',"\n ",'\n "\n style="','"\n data-event-click-tracking="','"\n @click="','"\n >\n ',"\n ","\n </li>"])),c?"clickable":"",t==this.currentChapter?"current":"",(0,a.W)({marginLeft:10*(t.level-1)+"px"}),null!=(e=c?"BRTOCPanel|GoToChapter":void 0)?e:i.s6,(function(){return r.jumpToPage(t.pageIndex)}),o,t.pagenum?(0,n.qy)(h||(h=C(['\n <br />\n <span class="BRTOCElementPage">Page ',"</span>\n "])),t.pagenum):n.s6)}},{kind:"method",key:"connectedCallback",value:function(){F(Y,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}},{kind:"method",key:"updated",value:function(t){var e;t.has("currentChapter")&&(null===(e=this.shadowRoot.querySelector("li.current"))||void 0===e||e.scrollIntoView({block:"nearest",behavior:"smooth"}))}},{kind:"get",static:!0,key:"styles",value:function(){return(0,n.AH)(d||(d=C(["\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }"])))}}]},X=Z.decorateClass(function(t){for(var e=[],r=function(t){return"method"===t.kind&&t.key===i.key&&t.placement===i.placement},n=0;n<t.length;n++){var o,i=t[n];if("method"===i.kind&&(o=e.find(r)))if(E(i.descriptor)||E(o.descriptor)){if(x(i)||x(o))throw new ReferenceError("Duplicated methods ("+i.key+") can't be decorated.");o.descriptor=i.descriptor}else{if(x(i)){if(x(o))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+i.key+").");o.decorators=i.decorators}k(i,o)}else e.push(i)}return e}(V.d.map(w)),U),Z.initializeClassElements(V.F,X.elements),Z.runClassFinishers(V.F,X.finishers)},9073:function(t,e,r){function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;return null==t?void 0:t.replace(/\{\{([^}]*?)\}\}/g,(function(t,i){if(!i)return t;var a,c=function(t){if(Array.isArray(t))return t}(a=i.split("|").map((function(t){return t.trim()})))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(a)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),s=c[0],u=c.slice(1);if(!(s in r)&&!(s in e))return t;var l=s in r?r[s]:s in e?e[s]:null;return u.map((function(t){return o[t]})).reduce((function(t,e){return e(t)}),l&&l.toString())}))}r.d(e,{g:function(){return o}}),r(2675),r(9463),r(2259),r(3418),r(3792),r(2062),r(2712),r(4782),r(2010),r(6099),r(7495),r(8781),r(7764),r(5440),r(2762),r(2953);var i={urlencode:encodeURIComponent}}},function(t){t(t.s=9220)}]);
2
26
  //# sourceMappingURL=plugin.chapters.js.map
@@ -0,0 +1 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js"],"names":["super_","jQuery","extend","BookReader","defaultOptions","olHost","enableChaptersPlugin","bookId","prototype","setup","options","call","this","init","ui","getOpenLibraryRecord","enableMobileNav","bind","eventNames","mobileNavOpen","updateTOCState","firstIndex","_tocEntries","$","parent","hasClass","click","addChapter","chapterTitle","pageNumber","pageIndex","percentThrough","util","cssPercentage","getNumLeafs","jumpToChapter","event","jumpToIndex","delegateTarget","data","removeClass","addClass","title","pageStr","mobileChapter","append","text","appendTo","undefined","css","left","hover","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","x","style","setProperty","target","on","attr","removeChapters","remove","updateTOC","tocEntries","length","show","i","addChapterFromEntry","children","each","el","mobileHTML","tocEntryObject","getPageIndex","chapterStr","label","filter","join","$el","baseURL","fetchUrlByBookId","ajax","url","dataType","then","olObject","table_of_contents","buildMobileDrawerElement","find","after","imagesBaseURL","hide","currIndex","tocEntriesIndexed","reverse","currChapter","findIndex"],"mappings":"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","file":"plugins/plugin.chapters.js","sourcesContent":["/* global BookReader */\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\n\njQuery.extend(BookReader.defaultOptions, {\n olHost: 'https://openlibrary.org',\n enableChaptersPlugin: true,\n bookId: '',\n});\n\n/** @override Extend the constructor to add search properties */\nBookReader.prototype.setup = (function (super_) {\n return function (options) {\n super_.call(this, options);\n\n this.olHost = options.olHost;\n this.enableChaptersPlugin = options.enableChaptersPlugin;\n this.bookId = options.bookId;\n };\n})(BookReader.prototype.setup);\n\n/** @override Extend to call Open Library for TOC */\nBookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.enableChaptersPlugin && this.ui !== 'embed') {\n this.getOpenLibraryRecord();\n }\n if (this.enableMobileNav) {\n this.bind(BookReader.eventNames.mobileNavOpen,\n () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n if ($('table-contents-list').parent().hasClass('mm-opened')) {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n }\n }\n );\n $(\".BRmobileMenu__tableContents\").click(\n () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n }\n );\n }\n };\n})(BookReader.prototype.init);\n\n/**\n * Adds chapter marker to navigation scrubber\n *\n * @param {string} chapterTitle\n * @param {string} pageNumber\n * @param {number} pageIndex\n */\nBookReader.prototype.addChapter = function(chapterTitle, pageNumber, pageIndex) {\n const uiStringPage = 'Page'; // i18n\n const percentThrough = BookReader.util.cssPercentage(pageIndex, this.getNumLeafs() - 1);\n const jumpToChapter = (event) => {\n this.jumpToIndex($(event.delegateTarget).data('pageIndex'));\n $('.current-chapter').removeClass('current-chapter');\n $(event.delegateTarget).addClass('current-chapter');\n };\n const title = `${chapterTitle} | `;\n const pageStr = `${uiStringPage} ${pageNumber}`;\n\n //adding items to mobile table of contents\n const mobileChapter = $(`<li></li>`).append($(`<span class='BRTOCElementTitle'></span>`).text(title))\n .append($(`<span class='BRTOCElementPage'></span>`).text(pageStr));\n mobileChapter.addClass('BRtable-contents-el')\n .appendTo(this.$('.table-contents-list'))\n .data({ pageIndex });\n\n //adds .BRchapters to the slider only if pageIndex exists\n if (pageIndex != undefined) {\n $(`<div></div>`)\n .append($('<div />').text(title + pageStr))\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.$('.BRnavline'))\n .data({ pageIndex })\n .hover(event => {\n // remove hover effect from other markers then turn on just for this\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('div');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n this.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n },\n event => $(event.target).removeClass('front')\n )\n .on('click', jumpToChapter);\n\n //adding clickable properties to mobile chapters\n mobileChapter.bind('click', jumpToChapter)\n .addClass('chapter-clickable')\n .attr(\"data-event-click-tracking\",\"BRTOCPanel|GoToChapter\");\n }\n\n};\n\n/*\n * Remove all chapters.\n */\nBookReader.prototype.removeChapters = function() {\n this.$('.BRnavpos .BRchapter').remove();\n};\n\n/**\n * Update the table of contents based on array of TOC entries.\n * @param {TocEntry[]} tocEntries\n */\nBookReader.prototype.updateTOC = function(tocEntries) {\n this.removeChapters();\n if (this.enableMobileNav && tocEntries.length > 0) {\n this.$(\".BRmobileMenu__tableContents\").show();\n }\n for (let i = 0; i < tocEntries.length; i++) {\n this.addChapterFromEntry(tocEntries[i]);\n }\n this._tocEntries = tocEntries;\n $('.table-contents-list').children().each((i, el) => {\n tocEntries[i].mobileHTML = el;\n });\n};\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined -- format is defined by Open Library\n * @property {string} pagenum\n * @property {number} level\n * @property {string} label\n * @property {{type: '/type/toc_item'}} type\n * @property {string} title\n * @property {HTMLElement} mobileHTML\n * @property {number} pageIndex\n\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"type\": {\"key\": \"/type/toc_item\"},\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n/**\n * @param {TocEntry} tocEntryObject\n */\nBookReader.prototype.addChapterFromEntry = function(tocEntryObject) {\n tocEntryObject.pageIndex = this.getPageIndex(tocEntryObject['pagenum']);\n //creates a string with non-void tocEntryObject.label and tocEntryObject.title\n const chapterStr = [tocEntryObject.label, tocEntryObject.title]\n .filter(x => x)\n .join(' ');\n this.addChapter(chapterStr, tocEntryObject['pagenum'], tocEntryObject.pageIndex);\n this.$('.BRchapter, .BRsearch').each((i, el) => {\n const $el = $(el);\n $el.hover(\n () => $el.addClass('front'),\n () => $el.removeClass('front'));\n });\n};\n\n/**\n * getOpenLibraryRecord\n *\n * The bookreader is designed to call openlibrary API and constructs the\n * \"Return book\" button using the response.\n *\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\nBookReader.prototype.getOpenLibraryRecord = function () {\n // Try looking up by ocaid first, then by source_record\n const baseURL = `${this.olHost}/query.json?type=/type/edition&*=`;\n const fetchUrlByBookId = `${baseURL}&ocaid=${this.bookId}`;\n\n /*\n * Update Chapter markers based on received record from Open Library.\n * Notes that Open Library record is used for extra metadata, and also for lending\n */\n const setUpChapterMarkers = (olObject) => {\n if (olObject && olObject.table_of_contents) {\n // XXX check here that TOC is valid\n this.updateTOC(olObject.table_of_contents);\n }\n };\n\n $.ajax({ url: fetchUrlByBookId, dataType: 'jsonp' })\n .then(data => {\n if (data && data.length > 0) {\n return data;\n } else {\n // try sourceid\n return $.ajax({ url: `${baseURL}&source_records=ia:${this.bookId}`, dataType: 'jsonp' });\n }\n })\n .then(data => {\n if (data && data.length > 0) {\n setUpChapterMarkers(data[0]);\n }\n });\n};\n\n// Extend buildMobileDrawerElement with table of contents list\nBookReader.prototype.buildMobileDrawerElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (this.enableMobileNav && this.options.enableChaptersPlugin) {\n $el.find('.BRmobileMenu__moreInfoRow').after($(`\n <li class=\"BRmobileMenu__tableContents\" data-event-click-tracking=\"BRSidebar|TOCPanel\">\n <span>\n <span class=\"DrawerIconWrapper\">\n <img class=\"DrawerIcon\" src=\"${this.imagesBaseURL}icon_toc.svg\" alt=\"toc-icon\"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class=\"table-contents-list\">\n </ol>\n </div>\n </li>`).hide());\n }\n return $el;\n };\n})(BookReader.prototype.buildMobileDrawerElement);\n\n/**\n * highlights the current chapter based on current page\n * @private\n * @param {TocEntry[]} tocEntries\n * @param {number} tocEntries\n */\nBookReader.prototype.updateTOCState = function(currIndex, tocEntries) {\n //this function won't have any effects if called before OpenLibrary request is finished\n if (!tocEntries) {return;}\n $('.current-chapter').removeClass('current-chapter');\n const tocEntriesIndexed = tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[tocEntriesIndexed.findIndex(\n (el) => el.pageIndex <= currIndex)];\n if (currChapter != undefined) {\n $(currChapter.mobileHTML).addClass('current-chapter');\n }\n};\n"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.chapters.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/index.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/icon-toc.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js","webpack://@internetarchive/bookreader/../src/directives/if-defined.ts","webpack://@internetarchive/bookreader/./src/util/strings.js"],"sourcesContent":["'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","import { html } from 'lit';\n\nexport default html`\n<svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"tocTitleID tocDescID\"\n>\n <title id=\"tocTitleID\">Table of contents icon</title>\n <desc id=\"tocDescID\">An illustration of three text list items</desc>\n <g class=\"fill-color\" fill-rule=\"evenodd\"><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"7\"/><rect height=\"3\" rx=\"1.5\" width=\"4\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"7\"/></g>\n</svg>\n`;\n","import icon from './index.js';\nimport { css, LitElement } from 'lit';\n\nclass IAIconToc extends LitElement {\n static get styles() {\n return css`\n :host {\n width: var(--iconWidth, 'auto');\n height: var(--iconHeight, 'auto');\n }\n\n .fill-color {\n fill: var(--iconFillColor);\n }\n\n .stroke-color {\n stroke: var(--iconStrokeColor);\n }\n `;\n }\n\n render() {\n return icon;\n }\n}\n\ncustomElements.define('ia-icon-toc', IAIconToc);\n\nexport default IAIconToc;\n","// @ts-check\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport '@internetarchive/icon-toc/icon-toc.js';\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\nimport { applyVariables } from \"../util/strings.js\";\n/** @typedef {import('@/src/BookReader/BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('@/src/BookReader/BookModel.js').PageString} PageString */\n/** @typedef {import('@/src/BookReader/BookModel.js').LeafNum} LeafNum */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\nexport class ChaptersPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /**\n * The Open Library host to fetch/query Open Library.\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryHost: 'https://openlibrary.org',\n\n /**\n * The Open Library edition to fetch the table of contents from.\n * E.g. 'OL12345M'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryId: '',\n\n /**\n * The Internet Archive identifier to fetch the Open Library table\n * of contents from.\n * E.g. 'goody'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n internetArchiveId: '',\n\n /**\n * @deprecated\n * Old name for openLibraryHost\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n olHost: 'https://openlibrary.org',\n\n /**\n * @deprecated\n * Old name for internetArchiveId\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n bookId: '{{bookId}}',\n }\n\n /** @type {TocEntry[]} */\n _tocEntries;\n\n /** @type {BRChaptersPanel} */\n _chaptersPanel;\n\n /** @override */\n setup(options) {\n super.setup(options);\n this.options.internetArchiveId = this.options.internetArchiveId || this.options.bookId;\n this.options.openLibraryHost = this.options.openLibraryHost || this.options.olHost;\n }\n\n /** @override Extend to call Open Library for TOC */\n async init() {\n if (!this.options.enabled || this.br.ui === 'embed') {\n return;\n }\n\n let rawTableOfContents = null;\n // Prefer explicit TOC if specified\n if (this.br.options.table_of_contents?.length) {\n rawTableOfContents = this.br.options.table_of_contents;\n } else {\n // Otherwise fetch from OL\n const olEdition = await this.getOpenLibraryRecord();\n if (olEdition?.table_of_contents?.length) {\n rawTableOfContents = olEdition.table_of_contents;\n }\n }\n\n if (rawTableOfContents) {\n this._tocEntries = rawTableOfContents\n .map(rawTOCEntry => (Object.assign({}, rawTOCEntry, {\n pageIndex: (\n typeof(rawTOCEntry.leaf) == 'number' ? this.br.book.leafNumToIndex(rawTOCEntry.leaf) :\n rawTOCEntry.pagenum ? this.br.book.getPageIndex(rawTOCEntry.pagenum) :\n undefined\n ),\n })));\n this._render();\n this.br.bind(BookReader.eventNames.pageChanged, () => this._updateCurrent());\n }\n }\n\n /**\n * Update the table of contents based on array of TOC entries.\n */\n _render() {\n this.br.shell.menuProviders['chapters'] = {\n id: 'chapters',\n icon: html`<ia-icon-toc style=\"width: var(--iconWidth); height: var(--iconHeight);\"></ia-icon-toc>`,\n label: 'Table of Contents',\n component: html`<br-chapters-panel\n .contents=\"${this._tocEntries}\"\n .jumpToPage=\"${(pageIndex) => {\n this._updateCurrent(pageIndex);\n this.br.jumpToIndex(pageIndex);\n }}\"\n @connected=\"${(e) => {\n this._chaptersPanel = e.target;\n this._updateCurrent();\n }}\"\n />`,\n };\n this.br.shell.addMenuShortcut('chapters');\n this.br.shell.updateMenuContents();\n this._tocEntries.forEach((tocEntry, i) => this._renderMarker(tocEntry, i));\n }\n\n /**\n * @param {TocEntry} tocEntry\n * @param {number} entryIndex\n */\n _renderMarker(tocEntry, entryIndex) {\n if (tocEntry.pageIndex == undefined) return;\n\n //creates a string with non-void tocEntry.label and tocEntry.title\n const chapterStr = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ') || `Chapter ${entryIndex + 1}`;\n\n const percentThrough = BookReader.util.cssPercentage(tocEntry.pageIndex, this.br.book.getNumLeafs() - 1);\n $(`<div></div>`)\n .append(\n $('<div />')\n .text(chapterStr)\n .append(\n $('<div class=\"BRchapterPage\" />')\n .text(this.br.book.getPageName(tocEntry.pageIndex)),\n ),\n )\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", event => {\n // remove hover effect from other markers then turn on just for this\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('div');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n this.br.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', () => {\n this._updateCurrent(tocEntry.pageIndex);\n this.br.jumpToIndex(tocEntry.pageIndex);\n });\n\n this.br.$('.BRchapter, .BRsearch').each((i, el) => {\n const $el = $(el);\n $el\n .on(\"mouseenter\", () => $el.addClass('front'))\n .on(\"mouseleave\", () => $el.removeClass('front'));\n });\n }\n\n /**\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\n async getOpenLibraryRecord() {\n const olHost = applyVariables(this.options.openLibraryHost, this.br.options.vars);\n\n if (this.options.openLibraryId) {\n const openLibraryId = applyVariables(this.options.openLibraryId, this.br.options.vars);\n return await $.ajax({ url: `${olHost}/books/${openLibraryId}.json` });\n }\n\n if (this.options.internetArchiveId) {\n const ocaid = applyVariables(this.options.internetArchiveId, this.br.options.vars);\n\n // Try looking up by ocaid first, then by source_record\n const baseQueryUrl = `${olHost}/query.json?type=/type/edition&*=&`;\n\n let data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ ocaid, limit: '1' }),\n });\n\n if (!data || !data.length) {\n // try source_records\n data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ source_records: `ia:${ocaid}`, limit: '1' }),\n });\n }\n\n return data?.[0];\n }\n\n return null;\n }\n\n /**\n * @private\n * Highlights the current chapter based on current page\n * @param {PageIndex} curIndex\n */\n _updateCurrent(\n curIndex = (this.br.mode == 2 ? Math.max(...this.br.displayedIndices) : this.br.firstIndex),\n ) {\n const tocEntriesIndexed = this._tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[\n // subtract one so that 2up shows the right label\n tocEntriesIndexed.findIndex((chapter) => chapter.pageIndex <= curIndex)\n ];\n if (this._chaptersPanel) {\n this._chaptersPanel.currentChapter = currChapter;\n }\n }\n}\nBookReader?.registerPlugin('chapters', ChaptersPlugin);\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined by Open Library, with some extra values for internal use\n * @property {number} [level]\n * @property {string} [label]\n * @property {string} [title]\n * @property {PageString} [pagenum]\n * @property {LeafNum} [leaf]\n * @property {number} [pageIndex] - Added\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n@customElement('br-chapters-panel')\nexport class BRChaptersPanel extends LitElement {\n /** @type {TocEntry[]} */\n @property({ type: Array })\n contents = [];\n\n /** @type {TocEntry?} */\n @property({ type: Object })\n currentChapter = {};\n\n /** @type {(pageIndex: PageIndex) => void} */\n jumpToPage = () => {};\n\n /**\n * @param {TocEntry[]} contents\n */\n constructor(contents) {\n super();\n this.contents = contents;\n }\n\n render() {\n return html`\n <ol>\n ${this.contents.map(tocEntry => this.renderTOCEntry(tocEntry))}\n </ol>\n `;\n }\n\n /**\n * @param {TocEntry} tocEntry\n */\n renderTOCEntry(tocEntry) {\n const chapterTitle = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ');\n const clickable = tocEntry.pageIndex != undefined;\n // note the click-tracking won't work...\n return html`\n <li\n class=\"\n BRtable-contents-el\n ${clickable ? 'clickable' : ''}\n ${tocEntry == this.currentChapter ? 'current' : ''}\n \"\n style=\"${styleMap({marginLeft: (tocEntry.level - 1) * 10 + 'px'})}\"\n data-event-click-tracking=\"${ifDefined(clickable ? \"BRTOCPanel|GoToChapter\" : undefined)}\"\n @click=\"${() => this.jumpToPage(tocEntry.pageIndex)}\"\n >\n ${chapterTitle}\n ${tocEntry.pagenum ? html`\n <br />\n <span class=\"BRTOCElementPage\">Page ${tocEntry.pagenum}</span>\n ` : nothing}\n </li>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n\n updated(changedProperties) {\n if (changedProperties.has('currentChapter')) {\n this.shadowRoot.querySelector('li.current')?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n\n static get styles() {\n return css`\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }`;\n }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n"],"names":["PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","name","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","this","BookReaderPlugin","br","_classCallCheck","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","IAIconToc","styles","render","customElements","define","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","_superPropGet","_get","get","bind","_superPropBase","getOwnPropertyDescriptor","_inherits","_setPrototypeOf","_defineProperty","toPrimitive","String","_toPrimitive","_initialize","BRChaptersPanel","BookReader","window","ChaptersPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","concat","enabled","openLibraryHost","openLibraryId","internetArchiveId","olHost","bookId","_init","_callee","_this$br$options$tabl","rawTableOfContents","_olEdition$table_of_c","olEdition","_this2","_context","ui","table_of_contents","getOpenLibraryRecord","_tocEntries","map","rawTOCEntry","pageIndex","leaf","book","leafNumToIndex","pagenum","getPageIndex","undefined","_render","eventNames","pageChanged","_updateCurrent","_this3","shell","menuProviders","id","icon","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","jumpToIndex","_chaptersPanel","addMenuShortcut","updateMenuContents","tocEntry","_renderMarker","entryIndex","_this4","chapterStr","title","filter","x","join","percentThrough","util","cssPercentage","getNumLeafs","append","text","getPageName","addClass","css","left","appendTo","on","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","style","setProperty","removeClass","each","el","$el","_getOpenLibraryRecord","_callee2","_data","ocaid","baseQueryUrl","data","_context2","applyVariables","vars","ajax","url","URLSearchParams","limit","source_records","curIndex","mode","Math","max","displayedIndices","firstIndex","tocEntriesIndexed","currChapter","findIndex","chapter","currentChapter","registerPlugin","customElement","LitElement","F","_LitElement2","contents","_this5","kind","decorators","property","_this6","_templateObject3","renderTOCEntry","_this7","chapterTitle","clickable","_templateObject4","styleMap","marginLeft","level","jumpToPage","_templateObject5","nothing","dispatchEvent","CustomEvent","changedProperties","_this$shadowRoot$quer","has","shadowRoot","scrollIntoView","block","behavior","static","_templateObject6","template","overrides","possibleFilters","APPLY_FILTERS","replace","$0","$1","_expression$split$map2","split","varName","filterNames","reduce","acc","cur","toString","urlencode","encodeURIComponent"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see plugin.experiments.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[830],{3921:function(e,t,r){var n=r(6518),i=r(2652),o=r(4659);n({target:"Object",stat:!0},{fromEntries:function(e){var t={};return i(e,(function(e,r){o(t,e,r)}),{AS_ENTRIES:!0}),t}})},1041:function(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{S:function(){return a}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var a=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=t,this.options},(t=[{key:"setup",value:function(e){this.options=Object.assign({},this.options,e)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(e){}},{key:"_configureToolbar",value:function(e){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(e){}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},6732:function(e,t,r){r(2675),r(9463),r(5700),r(6412),r(2259),r(8125),r(8706),r(4490),r(4782),r(4731),r(479),r(875),r(825),r(8781),r(7764),r(2953),r(2008),r(113),r(4423),r(3792),r(2062),r(3418),r(4554),r(739),r(9572),r(2010),r(8130),r(9085),r(2811),r(3921),r(3851),r(9432),r(6099),r(3362),r(888),r(7495),r(1699),r(5440),r(3500);var n,i,o,a,s,c,l,u=r(420),f=r(1041),p=r(9696),d=r(8004);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function y(e,t,r,n){var i=v();if(n)for(var o=0;o<n.length;o++)i=n[o](i);var a=t((function(e){i.initializeInstanceElements(e,s.elements)}),r),s=i.decorateClass(function(e){for(var t=[],r=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},n=0;n<e.length;n++){var i,o=e[n];if("method"===o.kind&&(i=t.find(r)))if(w(o.descriptor)||w(i.descriptor)){if(g(o)||g(i))throw new ReferenceError("Duplicated methods ("+o.key+") can't be decorated.");i.descriptor=o.descriptor}else{if(g(o)){if(g(i))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}b(o,i)}else t.push(o)}return t}(a.d.map(m)),e);return i.initializeClassElements(a.F,s.elements),i.runClassFinishers(a.F,s.finishers)}function v(){v=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach((function(r){t.forEach((function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)}),this)}),this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach((function(n){t.forEach((function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}}),this)}),this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,i)}),this),e.forEach((function(e){if(!g(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)}),this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u<l.length;u++)this.addElementPlacement(l[u],t);r.push.apply(r,l)}}return{element:e,finishers:n,extras:r}},decorateConstructor:function(e,t){for(var r=[],n=t.length-1;n>=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a<e.length-1;a++)for(var s=a+1;s<e.length;s++)if(e[a].key===e[s].key&&e[a].placement===e[s].placement)throw new TypeError("Duplicated element ("+e[a].key+")")}}return{elements:e,finishers:r}},fromElementDescriptor:function(e){var t={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(t.initializer=e.initializer),t},toElementDescriptors:function(e){if(void 0!==e)return(t=e,function(e){if(Array.isArray(e))return e}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||_(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(e){var t=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),t}),this);var t},toElementDescriptor:function(e){var t=e.kind+"";if("method"!==t&&"field"!==t)throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "'+t+'"');var r=B(e.key),n=e.placement+"";if("static"!==n&&"prototype"!==n&&"own"!==n)throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "'+n+'"');var i=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var o={kind:t,key:r,placement:n,descriptor:Object.assign({},i)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(i,"get","The property descriptor of a field descriptor"),this.disallowProperty(i,"set","The property descriptor of a field descriptor"),this.disallowProperty(i,"value","The property descriptor of a field descriptor"),o.initializer=e.initializer),o},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:k(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var t={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),t},toClassDescriptor:function(e){var t=e.kind+"";if("class"!==t)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+t+'"');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var r=k(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:r}},runClassFinishers:function(e,t){for(var r=0;r<t.length;r++){var n=(0,t[r])(e);if(void 0!==n){if("function"!=typeof n)throw new TypeError("Finishers must return a constructor.");e=n}}return e},disallowProperty:function(e,t,r){if(void 0!==e[t])throw new TypeError(r+" can't have a ."+t+" property.")}};return e}function m(e){var t,r=B(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function b(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function g(e){return e.decorators&&e.decorators.length}function w(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function k(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function E(e,t,r,n){var i=x(A(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof i?function(e){return i.apply(r,e)}:i}function x(){return x="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=A(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},x.apply(null,arguments)}function P(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=_(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function _(e,t){if(e){if("string"==typeof e)return O(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function j(e,t,r){return t=A(t),function(e,t){if(t&&("object"==h(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,L()?Reflect.construct(t,r||[],A(e).constructor):t.apply(e,r))}function L(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(L=function(){return!!e})()}function A(e){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},A(e)}function T(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&C(e,t)}function C(e,t){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},C(e,t)}function D(){D=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var o=t&&t.prototype instanceof b?t:b,a=Object.create(o.prototype),s=new T(n||[]);return i(a,"_invoke",{value:O(e,r,s)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",m={};function b(){}function g(){}function w(){}var k={};l(k,a,(function(){return this}));var E=Object.getPrototypeOf,x=E&&E(E(C([])));x&&x!==r&&n.call(x,a)&&(k=x);var P=w.prototype=b.prototype=Object.create(k);function S(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function r(i,o,a,s){var c=f(e[i],e,o);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==h(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,a,s)}),(function(e){r("throw",e,a,s)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return r("throw",e,a,s)}))}s(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function O(t,r,n){var i=p;return function(o,a){if(i===y)throw Error("Generator is already running");if(i===v){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var c=j(s,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===p)throw i=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=y;var l=f(t,r,n);if("normal"===l.type){if(i=n.done?v:d,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=v,n.method="throw",n.arg=l.arg)}}}function j(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,j(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=f(i,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function C(t){if(t||""===t){var r=t[a];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i<t.length;)if(n.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(h(t)+" is not iterable")}return g.prototype=w,i(P,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:g,configurable:!0}),g.displayName=l(w,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,l(e,c,"GeneratorFunction")),e.prototype=Object.create(P),e},t.awrap=function(e){return{__await:e}},S(_.prototype),l(_.prototype,s,(function(){return this})),t.AsyncIterator=_,t.async=function(e,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(e,r,n,i),o);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},S(P),l(P,c,"Generator"),l(P,a,(function(){return this})),l(P,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=C,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(A),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function i(n,i){return s.type="throw",s.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;A(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:C(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function M(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function R(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){M(o,n,i,a,s,"next",e)}function s(e){M(o,n,i,a,s,"throw",e)}a(void 0)}))}}function F(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function z(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,B(n.key),n)}}function N(e,t,r){return t&&z(e.prototype,t),r&&z(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function I(e,t,r){return(t=B(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(e){var t=function(e,t){if("object"!=h(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}var q=window.BookReader,G=function(){return N((function e(){F(this,e),I(this,"name",void 0),I(this,"title",void 0),I(this,"description",void 0),I(this,"icon",void 0),I(this,"enabled",void 0),I(this,"learnMore",void 0),I(this,"br",void 0),I(this,"assetRoot","/BookReader/"),I(this,"enabledLoading",!1)}),[{key:"buildAssetPath",value:function(e){return"".concat(this.assetRoot).concat(e)}},{key:"enable",value:(t=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.manual;case 1:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)})},{key:"disable",value:(e=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return e.apply(this,arguments)})}]);var e,t}(),U=function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"options",{enabled:!0,localStorageKey:"BrExperiments",enabledExperiments:["translate"]}),I(e,"allExperiments",[new(function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"name","translate"),I(e,"title","Translate Plugin"),I(e,"description","Translate books directly in your browser."),I(e,"learnMore","https://mozilla.github.io/translations/"),I(e,"icon","images/translate.svg"),I(e,"enabled",!1),e}return T(t,e),N(t,[{key:"enable",value:(n=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.manual,!q.PLUGINS.translate){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Z(this.buildAssetPath("plugins/plugin.translate.js"));case 5:this.br.initializePlugin("translate");case 6:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"disable",value:(r=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,d.sleep)(0).then((function(){window.location.reload()}));case 1:case"end":return e.stop()}}),e)}))),function(){return r.apply(this,arguments)})}]);var r,n}(G)),new(function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"name","hypothesis"),I(e,"title","Hypothes.is"),I(e,"description","Create public, collaborative, or fully private annotations on books and the web."),I(e,"learnMore","https://web.hypothes.is/about/"),I(e,"icon","images/hypothesis.ico"),I(e,"enabled",!1),e}return T(t,e),N(t,[{key:"enable",value:(n=R(D().mark((function e(t){var r,n,i;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.manual,n=void 0!==r&&r,(i=document.createElement("script")).type="application/json",i.className="js-hypothesis-config",i.textContent=JSON.stringify({openSidebar:n,assetRoot:this.buildAssetPath("hypothesis/")}),document.head.appendChild(i),e.abrupt("return",Z(this.buildAssetPath("hypothesis/build/boot.js")));case 7:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"disable",value:(r=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,d.sleep)(0).then((function(){window.location.reload()}));case 1:case"end":return e.stop()}}),e)}))),function(){return r.apply(this,arguments)})}]);var r,n}(G))]),I(e,"_panel",void 0),e}return T(t,e),N(t,[{key:"init",value:(o=R(D().mark((function e(){var t,r,n;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.options.enabled){e.next=2;break}return e.abrupt("return");case 2:t=S(this.allExperiments);try{for(t.s();!(r=t.n()).done;)(n=r.value).assetRoot=this.br.options.imagesBaseURL.replace(/images\/$/,""),n.icon=n.buildAssetPath(n.icon),n.br=this.br}catch(e){t.e(e)}finally{t.f()}return this._loadExperimentStates(),e.next=7,Promise.resolve();case 7:this._render();case 8:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"_loadExperimentStates",value:function(){var e=JSON.parse(localStorage.getItem(this.options.localStorageKey)||"{}");this.allExperiments.forEach((function(t){void 0!==e[t.name]&&(t.enabled=e[t.name],t.enabled&&t.enable({manual:!1}))}))}},{key:"_saveExperimentStates",value:function(){var e=Object.fromEntries(this.allExperiments.map((function(e){return[e.name,e.enabled]})));localStorage.setItem(this.options.localStorageKey,JSON.stringify(e))}},{key:"_toggleExperiment",value:(r=R(D().mark((function e(t,r){var n;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.enabledLoading=!0,null===(n=this.br.plugins.archiveAnalytics)||void 0===n||n.sendEvent("BRExperiment-".concat(t.name),r?"Enable":"Disable"),this._panel.requestUpdate(),!r){e.next=8;break}return e.next=6,t.enable({manual:!0});case 6:e.next=10;break;case 8:return e.next=10,t.disable();case 10:t.enabledLoading=!1,t.enabled=r,this._panel.requestUpdate();case 13:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.experiments={id:"experiments",icon:(0,u.qy)(n||(n=P(['\n <img src="','/icon_experiment.svg" width="26"/>\n '])),this.br.options.imagesBaseURL),label:"Experiments",component:(0,u.qy)(i||(i=P(['<br-experiments-panel\n .experiments="','"\n @connected="','"\n @toggle="','"\n />'])),this.allExperiments.filter((function(t){return e.options.enabledExperiments.includes(t.name)})),(function(t){return e._panel=t.target}),function(){var t=R(D().mark((function t(r){return D().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e._toggleExperiment(r.detail.experiment,r.detail.enabled);case 2:e._saveExperimentStates();case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())},this.br.shell.updateMenuContents()}}]);var r,o}(f.S);function Z(e){return H.apply(this,arguments)}function H(){return(H=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){var n=document.createElement("script");n.src=t,n.onload=function(){return e()},n.onerror=function(){return r(new Error("Failed to load script: ".concat(t)))},document.head.appendChild(n)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}null==q||q.registerPlugin("experiments",U),y([(0,p.EM)("br-experiments-panel")],(function(e,t){var r,n=function(t){function r(){var t;F(this,r);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return t=j(this,r,[].concat(i)),e(t),t}return T(r,t),N(r)}(t);return{F:n,d:[{kind:"field",decorators:[(0,p.MZ)({type:Array})],key:"experiments",value:function(){return[]}},{kind:"method",key:"render",value:function(){var e=this;return(0,u.qy)(o||(o=P(['\n <div style="padding: 10px">\n ',"\n </div>\n "])),this.experiments.map((function(t){return(0,u.qy)(a||(a=P(['\n <br-experiment-toggle\n .icon="','"\n .title="','"\n .description="','"\n .enabled="','"\n .loading="','"\n .learnMore="','"\n @toggle="','"\n ></br-experiment-toggle>\n '])),t.icon,t.title,t.description,t.enabled,t.enabledLoading,t.learnMore,(function(r){return e._dispatchToggle(t,r.detail.enabled)}))})))}},{kind:"method",key:"_dispatchToggle",value:(r=R(D().mark((function e(t,r){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.dispatchEvent(new CustomEvent("toggle",{detail:{experiment:t,enabled:r}}));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{kind:"method",key:"connectedCallback",value:function(){E(n,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}}]}}),u.WF),y([(0,p.EM)("br-experiment-toggle")],(function(e,t){var r=function(t){function r(){var t;F(this,r);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return t=j(this,r,[].concat(i)),e(t),t}return T(r,t),N(r)}(t);return{F:r,d:[{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"icon",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"title",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"description",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"enabled",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"loading",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"learnMore",value:function(){return""}},{kind:"field",decorators:[(0,p.wk)()],key:"_longLoading",value:function(){return!1}},{kind:"method",key:"update",value:function(e){var t=this;E(r,"update",this,3)([e]),e.has("loading")&&(this.loading?(0,d.sleep)(500).then((function(){t.loading&&(t._longLoading=!0,t.requestUpdate())})):this._longLoading=!1)}},{kind:"method",key:"render",value:function(){return(0,u.qy)(s||(s=P(['\n <div class="experiment-card" style="margin-bottom: 10px;">\n <div style="display: flex; align-items: center; gap: 10px;">\n <img src="','" style="width: 20px; height: 20px;" alt="" />\n <div style="flex-grow: 1; font-weight: bold;">','</div>\n </div>\n <p style="opacity: 0.9">\n ',"\n ",'\n </p>\n <div style="display: flex">\n <div style="flex-grow: 1;"></div>\n <button @click="','" .disabled="','">\n ',"\n </button>\n </div>\n </div>\n "])),this.icon,this.title,this.description,this.learnMore?(0,u.qy)(c||(c=P(['<a href="','" target="_blank">Learn more</a>.'])),this.learnMore):"",this._dispatchToggle,this.loading,this._longLoading?"Loading…":this.enabled?"Disable":"Enable")}},{kind:"get",static:!0,key:"styles",value:function(){return(0,u.AH)(l||(l=P(["\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n "])))}},{kind:"method",key:"_dispatchToggle",value:function(){this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:!this.enabled}}))}}]}}),u.WF)}},function(e){e(e.s=6732)}]);
3
+ //# sourceMappingURL=plugin.experiments.js.map
@@ -0,0 +1 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/plugin.experiments.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.from-entries.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.experiments.js"],"sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { css, html, LitElement } from 'lit';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { sleep } from '../BookReader/utils.js';\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nclass ExperimentModel {\n /** @type {string} test */\n name;\n /** @type {string} */\n title;\n /** @type {string} */\n description;\n /** @type {string} */\n icon;\n /** @type {boolean} */\n enabled;\n /** @type {string} */\n learnMore;\n\n /** @type {import(\"@/src/BookReader.js\").default} */\n br;\n\n assetRoot = '/BookReader/';\n\n enabledLoading = false;\n\n /**\n * @param {string} path\n */\n buildAssetPath(path) {\n return `${this.assetRoot}${path}`;\n }\n\n /**\n * @param {object} param0\n * @param {boolean} param0.manual Whether the experiment was enabled manually\n */\n async enable({ manual }) { }\n async disable() { }\n}\n\nexport class ExperimentsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /** Where the state of this plugin is saved in localStorage */\n localStorageKey: 'BrExperiments',\n\n /** The experiments that should be shown in the experiments panel */\n enabledExperiments: ['translate'],\n }\n\n /** @type {ExperimentModel[]} */\n allExperiments = [\n new class extends ExperimentModel {\n name = 'translate';\n title = 'Translate Plugin';\n description = \"Translate books directly in your browser.\";\n learnMore = 'https://mozilla.github.io/translations/';\n icon = 'images/translate.svg';\n enabled = false;\n async enable({ manual = false}) {\n if (BookReader.PLUGINS.translate) return;\n\n await importAsScript(this.buildAssetPath('plugins/plugin.translate.js'));\n this.br.initializePlugin('translate');\n }\n async disable() {\n // need to reload to remove translate plugin script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n new class extends ExperimentModel {\n name = 'hypothesis';\n title = 'Hypothes.is';\n description = 'Create public, collaborative, or fully private annotations on books and the web.';\n learnMore = 'https://web.hypothes.is/about/';\n icon = 'images/hypothesis.ico';\n enabled = false;\n\n async enable({ manual = false }) {\n // Hypothesis configs ; see https://h.readthedocs.io/projects/client/en/latest/publishers/config.html\n const configScript = document.createElement('script');\n configScript.type = 'application/json';\n configScript.className = 'js-hypothesis-config';\n configScript.textContent = JSON.stringify({\n // Open the sidebar if this is the first time enabling\n openSidebar: manual,\n assetRoot: this.buildAssetPath('hypothesis/'),\n });\n\n document.head.appendChild(configScript);\n return importAsScript(this.buildAssetPath('hypothesis/build/boot.js'));\n // For testing\n // return importAsScript('http://localhost:3001/hypothesis');\n }\n\n async disable() {\n // need to reload to remove the Hypothesis script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n ]\n\n /** @type {BrExperimentsPanel} */\n _panel;\n\n async init() {\n if (!this.options.enabled) {\n return;\n }\n\n for (const experiment of this.allExperiments) {\n // TODO: imagesBaseURL should be replaced with assetRoot everywhere\n experiment.assetRoot = this.br.options.imagesBaseURL.replace(/images\\/$/, '');\n experiment.icon = experiment.buildAssetPath(experiment.icon);\n experiment.br = this.br;\n }\n\n this._loadExperimentStates();\n await Promise.resolve();\n this._render();\n }\n\n _loadExperimentStates() {\n const savedStates = JSON.parse(localStorage.getItem(this.options.localStorageKey) || '{}');\n this.allExperiments.forEach(experiment => {\n if (savedStates[experiment.name] !== undefined) {\n experiment.enabled = savedStates[experiment.name];\n if (experiment.enabled) {\n experiment.enable({ manual: false });\n }\n }\n });\n }\n\n _saveExperimentStates() {\n const states = Object.fromEntries(\n this.allExperiments.map(experiment => [experiment.name, experiment.enabled]),\n );\n localStorage.setItem(this.options.localStorageKey, JSON.stringify(states));\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _toggleExperiment(experiment, enabled) {\n experiment.enabledLoading = true;\n this.br.plugins.archiveAnalytics?.sendEvent(`BRExperiment-${experiment.name}`, enabled ? 'Enable' : 'Disable');\n this._panel.requestUpdate();\n\n if (enabled) {\n await experiment.enable({ manual: true });\n } else {\n await experiment.disable();\n }\n experiment.enabledLoading = false;\n experiment.enabled = enabled;\n this._panel.requestUpdate();\n }\n\n _render() {\n this.br.shell.menuProviders['experiments'] = {\n id: 'experiments',\n icon: html`\n <img src=\"${this.br.options.imagesBaseURL}/icon_experiment.svg\" width=\"26\"/>\n `,\n label: 'Experiments',\n component: html`<br-experiments-panel\n .experiments=\"${this.allExperiments.filter(experiment => this.options.enabledExperiments.includes(experiment.name))}\"\n @connected=\"${e => this._panel = e.target}\"\n @toggle=\"${async e => {\n await this._toggleExperiment(e.detail.experiment, e.detail.enabled);\n this._saveExperimentStates();\n }}\"\n />`,\n };\n this.br.shell.updateMenuContents();\n }\n}\nBookReader?.registerPlugin('experiments', ExperimentsPlugin);\n\n@customElement('br-experiments-panel')\nexport class BrExperimentsPanel extends LitElement {\n\n /** @type {ExperimentModel[]} */\n @property({ type: Array }) experiments = [];\n\n render() {\n return html`\n <div style=\"padding: 10px\">\n ${this.experiments.map(\n experiment => html`\n <br-experiment-toggle\n .icon=\"${experiment.icon}\"\n .title=\"${experiment.title}\"\n .description=\"${experiment.description}\"\n .enabled=\"${experiment.enabled}\"\n .loading=\"${experiment.enabledLoading}\"\n .learnMore=\"${experiment.learnMore}\"\n @toggle=\"${e => this._dispatchToggle(experiment, e.detail.enabled)}\"\n ></br-experiment-toggle>\n `,\n )}\n </div>\n `;\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _dispatchToggle(experiment, enabled) {\n this.dispatchEvent(new CustomEvent('toggle', {\n detail: { experiment, enabled },\n }));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n}\n\n@customElement('br-experiment-toggle')\nexport class BrExperimentToggle extends LitElement {\n @property({ type: String }) icon = '';\n @property({ type: String }) title = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) enabled = false;\n @property({ type: Boolean }) loading = false;\n @property({ type: String }) learnMore = '';\n\n /**\n * We want to disable the button immediately if loading, but only display\n * the loading indicator after 200ms.\n */\n @state() _longLoading = false;\n\n /** @override */\n update(changedProperties) {\n super.update(changedProperties);\n if (changedProperties.has('loading')) {\n if (this.loading) {\n sleep(500).then(() => {\n if (this.loading) {\n this._longLoading = true;\n this.requestUpdate();\n }\n });\n } else {\n this._longLoading = false;\n }\n }\n }\n\n render() {\n return html`\n <div class=\"experiment-card\" style=\"margin-bottom: 10px;\">\n <div style=\"display: flex; align-items: center; gap: 10px;\">\n <img src=\"${this.icon}\" style=\"width: 20px; height: 20px;\" alt=\"\" />\n <div style=\"flex-grow: 1; font-weight: bold;\">${this.title}</div>\n </div>\n <p style=\"opacity: 0.9\">\n ${this.description}\n ${this.learnMore ? html`<a href=\"${this.learnMore}\" target=\"_blank\">Learn more</a>.` : ''}\n </p>\n <div style=\"display: flex\">\n <div style=\"flex-grow: 1;\"></div>\n <button @click=\"${this._dispatchToggle}\" .disabled=\"${this.loading}\">\n ${this._longLoading ? 'Loading…' : this.enabled ? 'Disable' : 'Enable'}\n </button>\n </div>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n `;\n }\n\n _dispatchToggle() {\n this.dispatchEvent(new CustomEvent('toggle', { detail: { enabled: !this.enabled } }));\n }\n}\n\n/**\n * @param {string} url\n */\nasync function importAsScript(url) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Failed to load script: ${url}`));\n document.head.appendChild(script);\n });\n}\n"],"names":["$","iterate","createProperty","target","stat","fromEntries","iterable","obj","k","v","AS_ENTRIES","BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_defineProperty","toPrimitive","String","_toPrimitive","BookReader","window","ExperimentModel","path","concat","assetRoot","_enable","_callee","_ref","_context","manual","_x","_disable","_callee2","_context2","ExperimentsPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","_callSuper","enabled","localStorageKey","enabledExperiments","_ExperimentModel2","_class","_this2","_len2","_key2","_inherits","_enable2","_callee3","_ref2","_context3","PLUGINS","translate","importAsScript","buildAssetPath","initializePlugin","_x2","_disable2","_callee4","_context4","sleep","location","reload","_ExperimentModel3","_class2","_this3","_len3","_key3","_enable3","_callee5","_ref3","_ref3$manual","configScript","_context5","document","createElement","className","textContent","JSON","stringify","openSidebar","head","appendChild","_x3","_disable3","_callee6","_context6","_init","_callee7","_iterator","_step","experiment","_context7","_createForOfIteratorHelper","allExperiments","imagesBaseURL","replace","icon","err","_loadExperimentStates","_render","savedStates","parse","localStorage","getItem","undefined","enable","states","map","setItem","_toggleExperiment2","_callee8","_this$br$plugins$arch","_context8","enabledLoading","plugins","archiveAnalytics","sendEvent","_panel","requestUpdate","disable","_x4","_x5","_this4","shell","menuProviders","id","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","filter","includes","_ref4","_callee9","_context9","_toggleExperiment","detail","_saveExperimentStates","_x6","updateMenuContents","_x9","_importAsScript","_callee11","url","_context11","reject","script","src","onload","onerror","registerPlugin","_decorate","customElement","_initialize","_LitElement","_dispatchToggle2","BrExperimentsPanel","_LitElement2","_this5","_len4","_key4","F","kind","decorators","property","_this6","_templateObject3","experiments","_templateObject4","title","description","learnMore","_dispatchToggle","_callee10","_context10","dispatchEvent","CustomEvent","_x7","_x8","_superPropGet","LitElement","_initialize2","_LitElement3","BrExperimentToggle","_LitElement4","_this7","_len5","_key5","Boolean","state","changedProperties","_this8","has","loading","_longLoading","_templateObject5","_templateObject6","static","css","_templateObject7"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[697],{5206:function(e,a,t){"use strict";var n,r="bookReaderFragmentChange";BookReader.prototype.init=(n=BookReader.prototype.init,function(){n.call(this),function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.parent;a&&(e.bind(BookReader.eventNames.fragmentChange,(function(){var t=e.fragmentFromParams(e.paramsFromCurrent());a.postMessage({type:r,fragment:t},"*")})),window.addEventListener("message",(function(a){a.data&&a.data.type===r&&e.updateFromParams(e.paramsFromFragment(a.data.fragment))})))}(this)})}},function(e){"use strict";e(e.s=5206)}]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[240],{7038:function(e,a,t){var n,r="bookReaderFragmentChange";BookReader.prototype.init=(n=BookReader.prototype.init,function(){n.call(this),function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.parent;a&&(e.bind(BookReader.eventNames.fragmentChange,(function(){var t=e.fragmentFromParams(e.paramsFromCurrent());a.postMessage({type:r,fragment:t},"*")})),window.addEventListener("message",(function(a){a.data&&a.data.type===r&&e.updateFromParams(e.paramsFromFragment(a.data.fragment))})))}(this)})}},function(e){e(e.s=7038)}]);
2
2
  //# sourceMappingURL=plugin.iframe.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"names":["super_","MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","call","this","br","parent","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment","_attachEventListeners"],"mappings":"+IAMA,IAEuCA,EAFjCC,EAA+B,2BAErCC,WAAWC,UAAUC,MAAkBJ,EAKpCE,WAAWC,UAAUC,KAJf,WACLJ,EAAOK,KAAKC,MAcT,SAA+BC,GAA4B,IAAxBC,EAAwB,uDAAfC,OAAOD,OAEnDA,IAILD,EAAGG,KAAKR,WAAWS,WAAWC,gBAAgB,WAC5C,IAAMC,EAAWN,EAAGO,mBAAmBP,EAAGQ,qBAE1CP,EAAOQ,YACL,CAAEC,KAAMhB,EAA8BY,YACtC,QAIJJ,OAAOS,iBAAiB,WAAW,SAAAC,GAE5BA,EAAMC,MAAQD,EAAMC,KAAKH,OAAShB,GAIvCM,EAAGc,iBAAiBd,EAAGe,mBAAmBH,EAAMC,KAAKP,eAlCrDU,CAAsBjB,U","file":"plugins/plugin.iframe.js","sourcesContent":["/* global BookReader */\n/**\n * Plugin for two-way communication between a BookReader in an IFrame and the\n * parent web page\n */\n\nconst MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';\n\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n _attachEventListeners(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * @private\n * Using window.postMessage() and event listeners, the plugin notifies the\n * parent window when pages change, and the parent window can also\n * explicitly request a page change by sending its own message.\n *\n * @param {BookReader} br\n * @param {Window?} [parent]\n */\nexport function _attachEventListeners(br, parent = window.parent) {\n // Not embedded, abort\n if (!parent) {\n return;\n }\n\n br.bind(BookReader.eventNames.fragmentChange, () => {\n const fragment = br.fragmentFromParams(br.paramsFromCurrent());\n\n parent.postMessage(\n { type: MESSAGE_TYPE_FRAGMENT_CHANGE, fragment },\n '*'\n );\n });\n\n window.addEventListener('message', event => {\n // Not a recognized message type, abort\n if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {\n return;\n }\n\n br.updateFromParams(br.paramsFromFragment(event.data.fragment));\n });\n}\n"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.iframe.js","mappings":"+IAMA,IAEuCA,EAFjCC,EAA+B,2BAErCC,WAAWC,UAAUC,MAAkBJ,EAKpCE,WAAWC,UAAUC,KAJf,WACLJ,EAAOK,KAAKC,MAcT,SAA+BC,GAA4B,IAAxBC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGG,OAAOJ,OAEnDA,IAILD,EAAGM,KAAKX,WAAWY,WAAWC,gBAAgB,WAC5C,IAAMC,EAAWT,EAAGU,mBAAmBV,EAAGW,qBAE1CV,EAAOW,YACL,CAAEC,KAAMnB,EAA8Be,SAAAA,GACtC,IAEJ,IAEAJ,OAAOS,iBAAiB,WAAW,SAAAC,GAE5BA,EAAMC,MAAQD,EAAMC,KAAKH,OAASnB,GAIvCM,EAAGiB,iBAAiBjB,EAAGkB,mBAAmBH,EAAMC,KAAKP,UACvD,IACF,CApCIU,CAAsBpB,KACxB,E","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for two-way communication between a BookReader in an IFrame and the\n * parent web page\n */\n\nconst MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';\n\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n _attachEventListeners(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * @private\n * Using window.postMessage() and event listeners, the plugin notifies the\n * parent window when pages change, and the parent window can also\n * explicitly request a page change by sending its own message.\n *\n * @param {BookReader} br\n * @param {Window?} [parent]\n */\nexport function _attachEventListeners(br, parent = window.parent) {\n // Not embedded, abort\n if (!parent) {\n return;\n }\n\n br.bind(BookReader.eventNames.fragmentChange, () => {\n const fragment = br.fragmentFromParams(br.paramsFromCurrent());\n\n parent.postMessage(\n { type: MESSAGE_TYPE_FRAGMENT_CHANGE, fragment },\n '*',\n );\n });\n\n window.addEventListener('message', event => {\n // Not a recognized message type, abort\n if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {\n return;\n }\n\n br.updateFromParams(br.paramsFromFragment(event.data.fragment));\n });\n}\n"],"names":["super_","MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","call","this","br","parent","arguments","length","undefined","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment","_attachEventListeners"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[69],{1041:function(t,e,n){function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function r(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,i(o.key),o)}}function i(t){var e=function(t,e){if("object"!=o(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}n.d(e,{S:function(){return a}}),n(2675),n(9463),n(2259),n(5700),n(3792),n(9572),n(8130),n(9085),n(6099),n(7764),n(2953);var a=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.br=e,this.options},(e=[{key:"setup",value:function(t){this.options=Object.assign({},this.options,t)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(t){}},{key:"_configureToolbar",value:function(t){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(t){}}])&&r(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()},8847:function(t,e,n){n(2675),n(9463),n(2259),n(5700),n(8706),n(3792),n(2062),n(9572),n(8130),n(9085),n(3851),n(875),n(9432),n(6099),n(825),n(888),n(7764),n(3500),n(2953);var o=n(1041);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,s(o.key),o)}}function a(t,e,n){return e=f(e),function(t,e){if(e&&("object"==r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,u()?Reflect.construct(e,n||[],f(t).constructor):e.apply(t,n))}function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}function c(){return c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,n){var o=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=f(t)););return t}(t,e);if(o){var r=Object.getOwnPropertyDescriptor(o,e);return r.get?r.get.call(arguments.length<3?t:n):r.value}},c.apply(null,arguments)}function f(t){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},f(t)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}function s(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}var p=window.BookReader,b=function(t){function e(){var t,n,o,r;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var i=arguments.length,u=new Array(i),c=0;c<i;c++)u[c]=arguments[c];return n=t=a(this,e,[].concat(u)),r={enabled:!0,manifest:null},(o=s(o="options"))in n?Object.defineProperty(n,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[o]=r,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}(e,t),n=e,o=[{key:"setup",value:function(t){var n,o,r;(n=e,o=this,"function"==typeof(r=c(f(1&3?n.prototype:n),"setup",o))?function(t){return r.apply(o,t)}:r)([t]),this.manifest=this.options.manifest,this.options.enabled&&Object.assign(this.br.options,this.load())}},{key:"load",value:function(){if("http://iiif.io/api/presentation/2/context.json"==this.manifest["@context"]){var t=this.manifest;return this.manifestToBookReaderV2(t)}if("http://iiif.io/api/presentation/3/context.json"==this.manifest["@context"]){var e=this.manifest;return this.manifestToBookReaderV3(e)}throw new Error("Unsupported IIIF context "+this.manifest["@context"])}},{key:"manifestToBookReaderV3",value:function(t){var e={bookTitle:y(t.label),pageProgression:"right-to-left"==t.viewingDirection?"rl":"lr",metadata:(t.metadata||[]).map((function(t){return{label:y(t.label),value:y(t.value)}})),data:[],getPageURI:function(e,n,o){var r=Math.floor(100/n),i=t.items[e].items[0].items[0].body,a=(i instanceof Array?i[0]:i).service[0].id;return"".concat(a,"/full/pct:").concat(r,"/0/default.jpg")}};"top-to-bottom"!=t.viewingDirection&&"bottom-to-top"!=t.viewingDirection||console.warn("Unsupported viewingDirection",t.viewingDirection);var n=[];return t.items.forEach((function(o,r){var i=t.items[r].items[0].items[0].body,a={uri:(i instanceof Array?i[0]:i).service[0].id,width:o.width,height:o.height,pageNum:y(o.label)};n.push(a),r%2==0&&(e.data.push(n),n=[])})),n.length>0&&e.data.push(n),e}},{key:"manifestToBookReaderV2",value:function(t){var e,n={bookTitle:t.label,metadata:t.metadata,thumbnail:null===(e=t.thumbnail)||void 0===e?void 0:e["@id"],data:[],getPageURI:function(e,n,o){var r=Math.floor(100/n),i=t.sequences[0].canvases[e].images[0].resource.service["@id"];return"".concat(i,"/full/pct:").concat(r,"/0/default.jpg")}},o=[];return t.sequences[0].canvases.forEach((function(t,e){var r={uri:t.images[0].resource.service["@id"],width:t.width,height:t.height,pageNum:t.label};o.push(r),e%2==0&&(n.data.push(o),o=[])})),o.length>0&&n.data.push(o),n}}],o&&i(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(o.S);function y(t){var e=Object.keys(t)[0];return(t[navigator.language]||t[e])[0]}null==p||p.registerPlugin("iiif",b)}},function(t){t(t.s=8847)}]);
2
+ //# sourceMappingURL=plugin.iiif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/plugin.iiif.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.iiif.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\nexport class IiifPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {import('@iiif/presentation-3').Manifest | import('@iiif/presentation-2').Manifest} */\n manifest: null,\n }\n\n setup(options) {\n super.setup(options);\n this.manifest = this.options.manifest;\n\n if (this.options.enabled) {\n Object.assign(this.br.options, this.load());\n }\n }\n\n load() {\n if (this.manifest[\"@context\"] == \"http://iiif.io/api/presentation/2/context.json\") {\n const manifest = /** @type {import('@iiif/presentation-2').Manifest} */(this.manifest);\n return this.manifestToBookReaderV2(manifest);\n } else if (this.manifest[\"@context\"] == \"http://iiif.io/api/presentation/3/context.json\") {\n const manifest = /** @type {import('@iiif/presentation-3').Manifest} */(this.manifest);\n return this.manifestToBookReaderV3(manifest);\n } else {\n throw new Error(\"Unsupported IIIF context \" + this.manifest[\"@context\"]);\n }\n }\n\n /**\n * @param {import('@iiif/presentation-3').Manifest} manifest\n */\n manifestToBookReaderV3(manifest) {\n /** @type {import('../BookReader/options.js').BookReaderOptions} */\n const book = {\n bookTitle: resolveInternationalString(manifest.label),\n pageProgression: manifest.viewingDirection == \"right-to-left\" ? \"rl\" : \"lr\",\n // numLeafs: manifest.items.length,\n metadata: (manifest.metadata || []).map((metadata) => {\n return {\n label: resolveInternationalString(metadata.label),\n value: resolveInternationalString(metadata.value),\n };\n }),\n data: [],\n /**\n * @this {import('../BookReader.js').default}\n */\n getPageURI(pageIndex, reduce, rotate) {\n const percent = Math.floor(100 * 1 / reduce);\n const bodyArr = manifest.items[pageIndex].items[0].items[0].body;\n const body = bodyArr instanceof Array ? bodyArr[0] : bodyArr;\n const uri = body.service[0].id;\n return `${uri}/full/pct:${percent}/0/default.jpg`;\n },\n };\n\n if (manifest.viewingDirection == \"top-to-bottom\" || manifest.viewingDirection == \"bottom-to-top\") {\n console.warn(\"Unsupported viewingDirection\", manifest.viewingDirection);\n }\n\n let spread = [];\n manifest.items.forEach((item, index) => {\n const bodyArr = manifest.items[index].items[0].items[0].body;\n const body = bodyArr instanceof Array ? bodyArr[0] : bodyArr;\n const uri = body.service[0].id;\n /** @type {import('../BookReader/options.js').PageData} */\n const pageData = {\n uri,\n width: item.width,\n height: item.height,\n pageNum: resolveInternationalString(item.label),\n };\n spread.push(pageData);\n if (index % 2 == 0) {\n book.data.push(spread);\n spread = [];\n }\n });\n if (spread.length > 0) {\n book.data.push(spread);\n }\n return book;\n }\n\n /**\n * @param {import('@iiif/presentation-2').Manifest} manifest\n */\n manifestToBookReaderV2(manifest) {\n /** @type {import('../BookReader/options.js').BookReaderOptions} */\n const book = {\n bookTitle: manifest.label,\n metadata: manifest.metadata,\n thumbnail: manifest.thumbnail?.['@id'],\n // numLeafs: manifest.sequences[0].canvases.length,\n data: [],\n /**\n * @this {import('../BookReader.js').default}\n */\n getPageURI(pageIndex, reduce, rotate) {\n const percent = Math.floor(100 * 1 / reduce);\n const uri = manifest.sequences[0].canvases[pageIndex].images[0].resource.service['@id'];\n return `${uri}/full/pct:${percent}/0/default.jpg`;\n },\n };\n\n let spread = [];\n manifest.sequences[0].canvases.forEach((canvas, index) => {\n /** @type {import('../BookReader/options.js').PageData} */\n const pageData = {\n uri: canvas.images[0].resource.service['@id'],\n width: canvas.width,\n height: canvas.height,\n pageNum: canvas.label,\n };\n spread.push(pageData);\n if (index % 2 == 0) {\n book.data.push(spread);\n spread = [];\n }\n });\n if (spread.length > 0) {\n book.data.push(spread);\n }\n return book;\n }\n}\n\n/**\n * @param {import('@iiif/presentation-3').InternationalString} internationalString\n */\nfunction resolveInternationalString(internationalString) {\n const anyLang = Object.keys(internationalString)[0];\n return (internationalString[navigator.language] || internationalString[anyLang])[0];\n}\n\nBookReader?.registerPlugin('iiif', IiifPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","BookReader","window","IiifPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","enabled","manifest","_inherits","load","manifestToBookReaderV2","manifestToBookReaderV3","Error","book","bookTitle","resolveInternationalString","label","pageProgression","viewingDirection","metadata","map","data","getPageURI","pageIndex","reduce","rotate","percent","Math","floor","bodyArr","items","body","uri","service","id","console","warn","spread","forEach","item","index","pageData","width","height","pageNum","push","_manifest$thumbnail","thumbnail","sequences","canvases","images","resource","canvas","internationalString","anyLang","keys","navigator","language","registerPlugin"],"sourceRoot":""}