@internetarchive/bookreader 5.0.0-9-multiple-files → 5.0.0-90

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 (333) hide show
  1. package/.eslintrc.js +21 -19
  2. package/.github/workflows/node.js.yml +81 -7
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +505 -1442
  6. package/BookReader/BookReader.js +2 -21564
  7. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1782 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  11. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  12. package/BookReader/icons/1up.svg +1 -12
  13. package/BookReader/icons/2up.svg +1 -15
  14. package/BookReader/icons/advance.svg +3 -26
  15. package/BookReader/icons/chevron-right.svg +1 -1
  16. package/BookReader/icons/close-circle-dark.svg +1 -0
  17. package/BookReader/icons/close-circle.svg +1 -1
  18. package/BookReader/icons/fullscreen.svg +1 -17
  19. package/BookReader/icons/fullscreen_exit.svg +1 -17
  20. package/BookReader/icons/hamburger.svg +1 -15
  21. package/BookReader/icons/left-arrow.svg +1 -12
  22. package/BookReader/icons/magnify-minus.svg +1 -16
  23. package/BookReader/icons/magnify-plus.svg +1 -17
  24. package/BookReader/icons/magnify.svg +1 -15
  25. package/BookReader/icons/pause.svg +1 -23
  26. package/BookReader/icons/play.svg +1 -22
  27. package/BookReader/icons/playback-speed.svg +1 -34
  28. package/BookReader/icons/read-aloud.svg +1 -22
  29. package/BookReader/icons/review.svg +3 -22
  30. package/BookReader/icons/thumbnails.svg +1 -17
  31. package/BookReader/icons/voice.svg +1 -0
  32. package/BookReader/icons/volume-full.svg +1 -22
  33. package/BookReader/images/BRicons.svg +5 -94
  34. package/BookReader/images/books_graphic.svg +1 -177
  35. package/BookReader/images/icon_book.svg +1 -12
  36. package/BookReader/images/icon_bookmark.svg +1 -12
  37. package/BookReader/images/icon_gear.svg +1 -14
  38. package/BookReader/images/icon_hamburger.svg +1 -20
  39. package/BookReader/images/icon_home.svg +1 -21
  40. package/BookReader/images/icon_info.svg +1 -11
  41. package/BookReader/images/icon_one_page.svg +1 -8
  42. package/BookReader/images/icon_pause.svg +1 -1
  43. package/BookReader/images/icon_play.svg +1 -1
  44. package/BookReader/images/icon_playback-rate.svg +1 -15
  45. package/BookReader/images/icon_search_button.svg +1 -8
  46. package/BookReader/images/icon_share.svg +1 -9
  47. package/BookReader/images/icon_skip-ahead.svg +1 -6
  48. package/BookReader/images/icon_skip-back.svg +2 -13
  49. package/BookReader/images/icon_speaker.svg +1 -18
  50. package/BookReader/images/icon_speaker_open.svg +1 -10
  51. package/BookReader/images/icon_thumbnails.svg +1 -12
  52. package/BookReader/images/icon_toc.svg +1 -5
  53. package/BookReader/images/icon_two_pages.svg +1 -9
  54. package/BookReader/images/marker_chap-off.svg +1 -11
  55. package/BookReader/images/marker_chap-on.svg +1 -11
  56. package/BookReader/images/marker_srch-on.svg +1 -11
  57. package/BookReader/images/unviewable_page.png +0 -0
  58. package/BookReader/jquery-3.js +2 -0
  59. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  60. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  61. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  62. package/BookReader/plugins/plugin.autoplay.js +1 -165
  63. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  64. package/BookReader/plugins/plugin.chapters.js +22 -301
  65. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  66. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  67. package/BookReader/plugins/plugin.iframe.js +1 -74
  68. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  69. package/BookReader/plugins/plugin.iiif.js +2 -0
  70. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  71. package/BookReader/plugins/plugin.resume.js +1 -368
  72. package/BookReader/plugins/plugin.resume.js.map +1 -1
  73. package/BookReader/plugins/plugin.search.js +2 -1420
  74. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  75. package/BookReader/plugins/plugin.search.js.map +1 -1
  76. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  77. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  78. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  79. package/BookReader/plugins/plugin.tts.js +2 -9193
  80. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  81. package/BookReader/plugins/plugin.tts.js.map +1 -1
  82. package/BookReader/plugins/plugin.url.js +1 -269
  83. package/BookReader/plugins/plugin.url.js.map +1 -1
  84. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  85. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  86. package/BookReader/webcomponents-bundle.js +3 -0
  87. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  88. package/BookReader/webcomponents-bundle.js.map +1 -0
  89. package/BookReaderDemo/BookReaderDemo.css +18 -19
  90. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  91. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  92. package/BookReaderDemo/IADemoBr.js +144 -0
  93. package/BookReaderDemo/demo-advanced.html +2 -2
  94. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  95. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  96. package/BookReaderDemo/demo-fullscreen.html +2 -4
  97. package/BookReaderDemo/demo-iiif.html +99 -12
  98. package/BookReaderDemo/demo-internetarchive.html +214 -18
  99. package/BookReaderDemo/demo-multiple.html +2 -1
  100. package/BookReaderDemo/demo-preview-pages.html +526 -525
  101. package/BookReaderDemo/demo-simple.html +2 -1
  102. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
  103. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  104. package/BookReaderDemo/immersion-1up.html +2 -2
  105. package/BookReaderDemo/immersion-mode.html +2 -4
  106. package/BookReaderDemo/toggle_controls.html +3 -2
  107. package/BookReaderDemo/view_mode.html +2 -1
  108. package/BookReaderDemo/viewmode-cycle.html +2 -3
  109. package/CHANGELOG.md +595 -33
  110. package/README.md +14 -1
  111. package/babel.config.js +20 -0
  112. package/codecov.yml +6 -0
  113. package/index.html +5 -2
  114. package/jsconfig.json +19 -0
  115. package/netlify.toml +9 -0
  116. package/package.json +70 -62
  117. package/renovate.json +52 -0
  118. package/scripts/preversion.js +0 -1
  119. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  120. package/src/BookNavigator/assets/button-base.js +10 -2
  121. package/src/BookNavigator/assets/ia-logo.js +17 -0
  122. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  123. package/src/BookNavigator/assets/icon_close.js +1 -1
  124. package/src/BookNavigator/book-navigator.js +590 -0
  125. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  126. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  127. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  128. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
  129. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  130. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  131. package/src/BookNavigator/delete-modal-actions.js +1 -1
  132. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  133. package/src/BookNavigator/downloads/downloads.js +29 -25
  134. package/src/BookNavigator/search/search-provider.js +80 -28
  135. package/src/BookNavigator/search/search-results.js +29 -26
  136. package/src/BookNavigator/sharing.js +27 -0
  137. package/src/BookNavigator/viewable-files.js +95 -0
  138. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  139. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +7 -7
  140. package/src/BookReader/BookModel.js +76 -41
  141. package/src/BookReader/DragScrollable.js +233 -0
  142. package/src/BookReader/ImageCache.js +48 -15
  143. package/src/BookReader/Mode1Up.js +56 -351
  144. package/src/BookReader/Mode1UpLit.js +388 -0
  145. package/src/BookReader/Mode2Up.js +73 -1318
  146. package/src/BookReader/Mode2UpLit.js +777 -0
  147. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  148. package/src/BookReader/ModeSmoothZoom.js +312 -0
  149. package/src/BookReader/ModeThumb.js +19 -13
  150. package/src/BookReader/Navbar/Navbar.js +70 -54
  151. package/src/BookReader/PageContainer.js +116 -22
  152. package/src/BookReader/ReduceSet.js +3 -3
  153. package/src/BookReader/Toolbar/Toolbar.js +14 -41
  154. package/src/BookReader/events.js +2 -3
  155. package/src/BookReader/options.js +73 -15
  156. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  157. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  158. package/src/BookReader/utils/SelectionObserver.js +45 -0
  159. package/src/BookReader/utils/classes.js +1 -1
  160. package/src/BookReader/utils.js +128 -13
  161. package/src/BookReader.js +562 -1078
  162. package/src/BookReaderPlugin.js +44 -0
  163. package/src/assets/icons/close-circle-dark.svg +1 -0
  164. package/src/assets/icons/magnify-minus.svg +3 -7
  165. package/src/assets/icons/magnify-plus.svg +3 -7
  166. package/src/assets/icons/voice.svg +1 -0
  167. package/src/assets/images/unviewable_page.png +0 -0
  168. package/src/css/BookReader.scss +1 -17
  169. package/src/css/_BRBookmarks.scss +1 -1
  170. package/src/css/_BRComponent.scss +1 -1
  171. package/src/css/_BRicon.scss +8 -2
  172. package/src/css/_BRmain.scss +33 -27
  173. package/src/css/_BRnav.scss +12 -42
  174. package/src/css/_BRpages.scss +170 -42
  175. package/src/css/_BRsearch.scss +68 -230
  176. package/src/css/_BRtoolbar.scss +5 -5
  177. package/src/css/_TextSelection.scss +87 -27
  178. package/src/css/_colorbox.scss +2 -2
  179. package/src/css/_controls.scss +24 -7
  180. package/src/css/_icons.scss +7 -1
  181. package/src/ia-bookreader/ia-bookreader.js +224 -0
  182. package/src/plugins/plugin.archive_analytics.js +84 -78
  183. package/src/plugins/plugin.autoplay.js +99 -104
  184. package/src/plugins/plugin.chapters.js +237 -191
  185. package/src/plugins/plugin.iframe.js +1 -1
  186. package/src/plugins/plugin.iiif.js +141 -0
  187. package/src/plugins/plugin.resume.js +53 -50
  188. package/src/plugins/plugin.text_selection.js +503 -175
  189. package/src/plugins/plugin.vendor-fullscreen.js +7 -7
  190. package/src/plugins/search/plugin.search.js +183 -121
  191. package/src/plugins/search/utils.js +43 -0
  192. package/src/plugins/search/view.js +67 -202
  193. package/src/plugins/tts/AbstractTTSEngine.js +75 -45
  194. package/src/plugins/tts/FestivalTTSEngine.js +21 -31
  195. package/src/plugins/tts/PageChunk.js +16 -23
  196. package/src/plugins/tts/PageChunkIterator.js +11 -17
  197. package/src/plugins/tts/WebTTSEngine.js +88 -72
  198. package/src/plugins/tts/plugin.tts.js +310 -350
  199. package/src/plugins/tts/utils.js +16 -26
  200. package/src/plugins/url/UrlPlugin.js +191 -0
  201. package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
  202. package/src/util/browserSniffing.js +22 -0
  203. package/src/util/docCookies.js +21 -2
  204. package/src/util/strings.js +1 -0
  205. package/tests/e2e/README.md +37 -0
  206. package/tests/e2e/autoplay.test.js +9 -6
  207. package/tests/e2e/base.test.js +8 -16
  208. package/tests/e2e/helpers/base.js +55 -50
  209. package/tests/e2e/helpers/debug.js +1 -1
  210. package/tests/e2e/helpers/mockSearch.js +19 -22
  211. package/tests/e2e/helpers/params.js +17 -0
  212. package/tests/e2e/helpers/rightToLeft.js +8 -14
  213. package/tests/e2e/helpers/search.js +73 -0
  214. package/tests/e2e/models/Navigation.js +20 -37
  215. package/tests/e2e/rightToLeft.test.js +4 -5
  216. package/tests/e2e/viewmode.test.js +40 -33
  217. package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
  218. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  219. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  220. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  221. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  222. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  223. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  224. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  225. package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
  226. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  227. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
  228. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  229. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  230. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  231. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  232. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  233. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  234. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  235. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  236. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  237. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  238. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +42 -29
  239. package/tests/jest/BookReader/PageContainer.test.js +238 -0
  240. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  241. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +3 -3
  242. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  243. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  244. package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
  245. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  246. package/tests/jest/BookReader/utils.test.js +250 -0
  247. package/tests/jest/BookReader.keyboard.test.js +190 -0
  248. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +10 -2
  249. package/tests/{BookReader.test.js → jest/BookReader.test.js} +43 -53
  250. package/tests/jest/plugins/plugin.archive_analytics.test.js +20 -0
  251. package/tests/jest/plugins/plugin.autoplay.test.js +35 -0
  252. package/tests/jest/plugins/plugin.chapters.test.js +195 -0
  253. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +4 -4
  254. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +22 -35
  255. package/tests/jest/plugins/plugin.text_selection.test.js +316 -0
  256. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  257. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
  258. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +42 -9
  259. package/tests/jest/plugins/search/utils.js +25 -0
  260. package/tests/jest/plugins/search/utils.test.js +29 -0
  261. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +30 -10
  262. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  263. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  264. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  265. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  266. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  267. package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
  268. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +57 -18
  269. package/tests/jest/setup.js +3 -0
  270. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  271. package/tests/jest/util/docCookies.test.js +24 -0
  272. package/tests/{util → jest/util}/strings.test.js +1 -1
  273. package/tests/{utils.js → jest/utils.js} +38 -0
  274. package/webpack.config.js +16 -10
  275. package/.babelrc +0 -12
  276. package/.dependabot/config.yml +0 -6
  277. package/.testcaferc.json +0 -5
  278. package/BookReader/bookreader-component-bundle.js +0 -14330
  279. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  280. package/BookReader/bookreader-component-bundle.js.map +0 -1
  281. package/BookReader/icons/sort-ascending.svg +0 -1
  282. package/BookReader/icons/sort-descending.svg +0 -1
  283. package/BookReader/jquery-1.10.1.js +0 -108
  284. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  285. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  286. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  287. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  288. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  289. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  290. package/BookReaderDemo/IIIFBookReader.js +0 -207
  291. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  292. package/BookReaderDemo/demo-autoplay.html +0 -38
  293. package/BookReaderDemo/demo-iiif.js +0 -26
  294. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  295. package/karma.conf.js +0 -23
  296. package/src/BookNavigator/BookModel.js +0 -14
  297. package/src/BookNavigator/BookNavigator.js +0 -452
  298. package/src/BookNavigator/assets/book-loader.js +0 -27
  299. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  300. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  301. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  302. package/src/BookNavigator/search/a-search-result.js +0 -55
  303. package/src/BookNavigator/volumes/volumes-provider.js +0 -108
  304. package/src/BookNavigator/volumes/volumes.js +0 -162
  305. package/src/BookReader/DebugConsole.js +0 -54
  306. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  307. package/src/ItemNavigator/ItemNavigator.js +0 -372
  308. package/src/ItemNavigator/providers/sharing.js +0 -29
  309. package/src/assets/icons/sort-ascending.svg +0 -1
  310. package/src/assets/icons/sort-descending.svg +0 -1
  311. package/src/css/_MobileNav.scss +0 -194
  312. package/src/dragscrollable-br.js +0 -261
  313. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  314. package/src/plugins/plugin.mobile_nav.js +0 -287
  315. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  316. package/tests/BookReader/DebugConsole.test.js +0 -25
  317. package/tests/BookReader/Mode1Up.test.js +0 -164
  318. package/tests/BookReader/Mode2Up.test.js +0 -247
  319. package/tests/BookReader/PageContainer.test.js +0 -115
  320. package/tests/BookReader/utils.test.js +0 -109
  321. package/tests/e2e/helpers/desktopSearch.js +0 -72
  322. package/tests/e2e/helpers/mobileSearch.js +0 -85
  323. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  324. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  325. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  326. package/tests/karma/BookNavigator/volumes.test.js +0 -133
  327. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  328. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  329. package/tests/plugins/plugin.autoplay.test.js +0 -52
  330. package/tests/plugins/plugin.chapters.test.js +0 -130
  331. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  332. package/tests/plugins/plugin.text_selection.test.js +0 -203
  333. package/tests/util/docCookies.test.js +0 -15
@@ -1,305 +1,26 @@
1
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.chapters.js"],{
2
-
3
- /***/ "./src/plugins/plugin.chapters.js":
4
- /*!****************************************!*\
5
- !*** ./src/plugins/plugin.chapters.js ***!
6
- \****************************************/
7
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8
-
9
- "use strict";
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
12
- /* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
14
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);
15
- /* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js");
16
- /* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);
17
- /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
18
- /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__);
19
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ "./node_modules/core-js/modules/es.array.find-index.js");
20
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_4__);
21
- /* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "jquery");
22
- /* provided dependency */ var $ = __webpack_require__(/*! jquery */ "jquery");
23
-
24
-
25
-
26
-
27
-
28
-
29
- /* global BookReader */
30
-
31
- /**
32
- * Plugin for chapter markers in BookReader. Fetches from openlibrary.org
33
- * Could be forked, or extended to alter behavior
34
- */
35
- jQuery.extend(BookReader.defaultOptions, {
36
- olHost: 'https://openlibrary.org',
37
- enableChaptersPlugin: true,
38
- bookId: ''
39
- });
40
- /** @override Extend the constructor to add search properties */
41
-
42
- BookReader.prototype.setup = function (super_) {
43
- return function (options) {
44
- super_.call(this, options);
45
- this.olHost = options.olHost;
46
- this.enableChaptersPlugin = options.enableChaptersPlugin;
47
- this.bookId = options.bookId;
48
- };
49
- }(BookReader.prototype.setup);
50
- /** @override Extend to call Open Library for TOC */
51
-
52
-
53
- BookReader.prototype.init = function (super_) {
54
- return function () {
55
- var _this = this;
56
-
57
- super_.call(this);
58
-
59
- if (this.enableChaptersPlugin && this.ui !== 'embed') {
60
- this.getOpenLibraryRecord();
61
- }
62
-
63
- if (this.enableMobileNav) {
64
- this.bind(BookReader.eventNames.mobileNavOpen, function () {
65
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
66
-
67
- if ($('table-contents-list').parent().hasClass('mm-opened')) {
68
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
69
- }
70
- });
71
- $(".BRmobileMenu__tableContents").click(function () {
72
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
73
- });
74
- }
75
- };
76
- }(BookReader.prototype.init);
77
- /**
78
- * Adds chapter marker to navigation scrubber
79
- *
80
- * @param {string} chapterTitle
81
- * @param {string} pageNumber
82
- * @param {number} pageIndex
83
- */
84
-
85
-
86
- BookReader.prototype.addChapter = function (chapterTitle, pageNumber, pageIndex) {
87
- var _this2 = this;
88
-
89
- var uiStringPage = 'Page'; // i18n
90
-
91
- var percentThrough = BookReader.util.cssPercentage(pageIndex, this.getNumLeafs() - 1);
92
-
93
- var jumpToChapter = function jumpToChapter(event) {
94
- _this2.jumpToIndex($(event.delegateTarget).data('pageIndex'));
95
-
96
- $('.current-chapter').removeClass('current-chapter');
97
- $(event.delegateTarget).addClass('current-chapter');
98
- };
99
-
100
- var title = "".concat(chapterTitle, " | ");
101
- var pageStr = "".concat(uiStringPage, " ").concat(pageNumber); //adding items to mobile table of contents
102
-
103
- var mobileChapter = $("<li></li>").append($("<span class='BRTOCElementTitle'></span>").text(title)).append($("<span class='BRTOCElementPage'></span>").text(pageStr));
104
- mobileChapter.addClass('BRtable-contents-el').appendTo(this.$('.table-contents-list')).data({
105
- pageIndex: pageIndex
106
- }); //adds .BRchapters to the slider only if pageIndex exists
107
-
108
- if (pageIndex != undefined) {
109
- $("<div></div>").append($('<div />').text(title + pageStr)).addClass('BRchapter').css({
110
- left: percentThrough
111
- }).appendTo(this.$('.BRnavline')).data({
112
- pageIndex: pageIndex
113
- }).hover(function (event) {
114
- // remove hover effect from other markers then turn on just for this
115
- var marker = event.currentTarget;
116
- var tooltip = marker.querySelector('div');
117
- var tooltipOffset = tooltip.getBoundingClientRect();
118
- var targetOffset = marker.getBoundingClientRect();
119
- var boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;
120
-
121
- if (tooltipOffset.x - boxSizeAdjust < 0) {
122
- tooltip.style.setProperty('transform', "translateX(-".concat(targetOffset.left - boxSizeAdjust, "px)"));
1
+ /*! For license information please see plugin.chapters.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[858],{7045:function(e,t,r){r(5700),r(8706),r(2008),r(113),r(8980),r(3418),r(8598),r(2675),r(9463),r(6412),r(2259),r(8125),r(3792),r(2062),r(4490),r(4782),r(4554),r(9572),r(2010),r(4731),r(479),r(8130),r(9085),r(2811),r(875),r(7764),r(2953),r(3851),r(6099),r(8940),r(3362),r(825),r(888),r(7495),r(8781),r(3500);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');
123
16
  }
124
17
 
125
- _this2.$('.BRsearch,.BRchapter').removeClass('front');
126
-
127
- $(event.target).addClass('front');
128
- }, function (event) {
129
- return $(event.target).removeClass('front');
130
- }).on('click', jumpToChapter); //adding clickable properties to mobile chapters
131
-
132
- mobileChapter.bind('click', jumpToChapter).addClass('chapter-clickable').attr("data-event-click-tracking", "BRTOCPanel|GoToChapter");
133
- }
134
- };
135
- /*
136
- * Remove all chapters.
137
- */
138
-
139
-
140
- BookReader.prototype.removeChapters = function () {
141
- this.$('.BRnavpos .BRchapter').remove();
142
- };
143
- /**
144
- * Update the table of contents based on array of TOC entries.
145
- * @param {TocEntry[]} tocEntries
146
- */
147
-
148
-
149
- BookReader.prototype.updateTOC = function (tocEntries) {
150
- this.removeChapters();
151
-
152
- if (this.enableMobileNav && tocEntries.length > 0) {
153
- this.$(".BRmobileMenu__tableContents").show();
154
- }
155
-
156
- for (var i = 0; i < tocEntries.length; i++) {
157
- this.addChapterFromEntry(tocEntries[i]);
158
- }
159
-
160
- this._tocEntries = tocEntries;
161
- $('.table-contents-list').children().each(function (i, el) {
162
- tocEntries[i].mobileHTML = el;
163
- });
164
- };
165
- /**
166
- * @typedef {Object} TocEntry
167
- * Table of contents entry as defined -- format is defined by Open Library
168
- * @property {string} pagenum
169
- * @property {number} level
170
- * @property {string} label
171
- * @property {{type: '/type/toc_item'}} type
172
- * @property {string} title
173
- * @property {HTMLElement} mobileHTML
174
- * @property {number} pageIndex
175
-
176
- *
177
- * @example {
178
- * "pagenum": "17",
179
- * "level": 1,
180
- * "label": "CHAPTER I",
181
- * "type": {"key": "/type/toc_item"},
182
- * "title": "THE COUNTRY AND THE MISSION"
183
- * }
184
- */
185
-
186
- /**
187
- * @param {TocEntry} tocEntryObject
188
- */
189
-
190
-
191
- BookReader.prototype.addChapterFromEntry = function (tocEntryObject) {
192
- tocEntryObject.pageIndex = this.getPageIndex(tocEntryObject['pagenum']); //creates a string with non-void tocEntryObject.label and tocEntryObject.title
193
-
194
- var chapterStr = [tocEntryObject.label, tocEntryObject.title].filter(function (x) {
195
- return x;
196
- }).join(' ');
197
- this.addChapter(chapterStr, tocEntryObject['pagenum'], tocEntryObject.pageIndex);
198
- this.$('.BRchapter, .BRsearch').each(function (i, el) {
199
- var $el = $(el);
200
- $el.hover(function () {
201
- return $el.addClass('front');
202
- }, function () {
203
- return $el.removeClass('front');
204
- });
205
- });
206
- };
207
- /**
208
- * getOpenLibraryRecord
209
- *
210
- * The bookreader is designed to call openlibrary API and constructs the
211
- * "Return book" button using the response.
212
- *
213
- * This makes a call to OL API and calls the given callback function with the
214
- * response from the API.
215
- */
216
-
217
-
218
- BookReader.prototype.getOpenLibraryRecord = function () {
219
- var _this3 = this;
220
-
221
- // Try looking up by ocaid first, then by source_record
222
- var baseURL = "".concat(this.olHost, "/query.json?type=/type/edition&*=");
223
- var fetchUrlByBookId = "".concat(baseURL, "&ocaid=").concat(this.bookId);
224
- /*
225
- * Update Chapter markers based on received record from Open Library.
226
- * Notes that Open Library record is used for extra metadata, and also for lending
227
- */
228
-
229
- var setUpChapterMarkers = function setUpChapterMarkers(olObject) {
230
- if (olObject && olObject.table_of_contents) {
231
- // XXX check here that TOC is valid
232
- _this3.updateTOC(olObject.table_of_contents);
233
- }
234
- };
235
-
236
- $.ajax({
237
- url: fetchUrlByBookId,
238
- dataType: 'jsonp'
239
- }).then(function (data) {
240
- if (data && data.length > 0) {
241
- return data;
242
- } else {
243
- // try sourceid
244
- return $.ajax({
245
- url: "".concat(baseURL, "&source_records=ia:").concat(_this3.bookId),
246
- dataType: 'jsonp'
247
- });
248
- }
249
- }).then(function (data) {
250
- if (data && data.length > 0) {
251
- setUpChapterMarkers(data[0]);
252
- }
253
- });
254
- }; // Extend buildMobileDrawerElement with table of contents list
255
-
256
-
257
- BookReader.prototype.buildMobileDrawerElement = function (super_) {
258
- return function () {
259
- var $el = super_.call(this);
260
-
261
- if (this.enableMobileNav && this.options.enableChaptersPlugin) {
262
- $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=\"".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());
263
- }
264
-
265
- return $el;
266
- };
267
- }(BookReader.prototype.buildMobileDrawerElement);
268
- /**
269
- * highlights the current chapter based on current page
270
- * @private
271
- * @param {TocEntry[]} tocEntries
272
- * @param {number} tocEntries
273
- */
274
-
275
-
276
- BookReader.prototype.updateTOCState = function (currIndex, tocEntries) {
277
- //this function won't have any effects if called before OpenLibrary request is finished
278
- if (!tocEntries) {
279
- return;
280
- }
281
-
282
- $('.current-chapter').removeClass('current-chapter');
283
- var tocEntriesIndexed = tocEntries.filter(function (el) {
284
- return el.pageIndex != undefined;
285
- }).reverse();
286
- var currChapter = tocEntriesIndexed[tocEntriesIndexed.findIndex(function (el) {
287
- return el.pageIndex <= currIndex;
288
- })];
289
-
290
- if (currChapter != undefined) {
291
- $(currChapter.mobileHTML).addClass('current-chapter');
292
- }
293
- };
294
-
295
- /***/ })
18
+ .fill-color {
19
+ fill: var(--iconFillColor);
20
+ }
296
21
 
297
- },
298
- /******/ function(__webpack_require__) { // webpackRuntimeModules
299
- /******/ "use strict";
300
- /******/
301
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
302
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.chapters.js"));
303
- /******/ }
304
- ]);
22
+ .stroke-color {
23
+ stroke: var(--iconStrokeColor);
24
+ }
25
+ `}render(){return c}}customElements.define("ia-icon-toc",s);var l,u,f,p,h,d,y,v,m,g,b,w,k,x,E=r(1669),P=r(1669);function _(e){return _="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},_(e)}function C(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 O(e,t,r){return t=z(t),function(e,t){if(t&&("object"==_(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,j()?Reflect.construct(t,r||[],z(e).constructor):t.apply(e,r))}function j(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(j=function(){return!!e})()}function T(e,t){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},T(e,t)}function R(){R=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 o=t.placement;if(t.kind===n&&("static"===o||"prototype"===o)){var i="static"===o?e:r;this.defineClassElement(i,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=[],o={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,o)}),this),e.forEach((function(e){if(!S(e))return r.push(e);var t=this.decorateElement(e,o);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)}),this),!t)return{elements:r,finishers:n};var i=this.decorateConstructor(r,t);return n.push.apply(n,i.finishers),i.finishers=n,i},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=[],o=e.decorators,i=o.length-1;i>=0;i--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var c=this.fromElementDescriptor(e),s=this.toElementFinisherExtras((0,o[i])(c)||c);e=s.element,this.addElementPlacement(e,t),s.finisher&&n.push(s.finisher);var l=s.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 o=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[n])(o)||o);if(void 0!==i.finisher&&r.push(i.finisher),void 0!==i.elements){e=i.elements;for(var a=0;a<e.length-1;a++)for(var c=a+1;c<e.length;c++)if(e[a].key===e[c].key&&e[a].placement===e[c].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)||M(t)||N(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 o=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var i={kind:t,key:r,placement:n,descriptor:Object.assign({},o)};return"field"!==t?this.disallowProperty(e,"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=e.initializer),i},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:A(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=A(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 I(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 L(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function S(e){return e.decorators&&e.decorators.length}function D(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function A(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 B(e){var t=function(e,t){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}function F(){return F="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=z(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},F.apply(null,arguments)}function z(e){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},z(e)}function N(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}function M(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function q(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 G(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function H(){H=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.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 i=t&&t.prototype instanceof m?t:m,a=Object.create(i.prototype),c=new I(n||[]);return o(a,"_invoke",{value:O(e,r,c)}),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",h="suspendedYield",d="executing",y="completed",v={};function m(){}function g(){}function b(){}var w={};l(w,a,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(L([])));x&&x!==r&&n.call(x,a)&&(w=x);var E=b.prototype=m.prototype=Object.create(w);function P(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function r(o,i,a,c){var s=f(e[o],e,i);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==_(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return r("throw",e,a,c)}))}c(s.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return i=i?i.then(o,o):o()}})}function O(t,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:e,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=j(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 l=f(t,r,n);if("normal"===l.type){if(o=n.done?y:h,l.arg===v)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=y,n.method="throw",n.arg=l.arg)}}}function j(t,r){var n=r.method,o=t.iterator[n];if(o===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")),v;var i=f(o,t.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[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function T(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 R(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function L(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 o=-1,i=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(_(t)+" is not iterable")}return g.prototype=b,o(E,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=l(b,s,"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,b):(e.__proto__=b,l(e,s,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},P(C.prototype),l(C.prototype,c,(function(){return this})),t.AsyncIterator=C,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new C(u(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},P(E),l(E,s,"Generator"),l(E,a,(function(){return this})),l(E,"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=L,I.prototype={constructor:I,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(R),!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 o(n,o){return c.type="throw",c.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!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"),l=n.call(a,"finallyLoc");if(s&&l){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(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,t){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"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,v):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),v},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),R(r),v}},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 o=n.arg;R(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function U(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function W(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){U(i,n,o,a,c,"next",e)}function c(e){U(i,n,o,a,c,"throw",e)}a(void 0)}))}}E.extend(BookReader.defaultOptions,{olHost:"https://openlibrary.org",enableChaptersPlugin:!0,bookId:""}),BookReader.prototype.init=(y=BookReader.prototype.init,function(){y.call(this),this.options.enableChaptersPlugin&&"embed"!==this.ui&&this._chapterInit()}),BookReader.prototype._chapterInit=W(H().mark((function e(){var t,r,n,o,i=this;return H().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=null,null===(t=this.options.table_of_contents)||void 0===t||!t.length){e.next=5;break}r=this.options.table_of_contents,e.next=9;break;case 5:return e.next=7,this.getOpenLibraryRecord(this.options.olHost,this.options.bookId);case 7:null!=(o=e.sent)&&null!==(n=o.table_of_contents)&&void 0!==n&&n.length&&(r=o.table_of_contents);case 9:r&&(this._tocEntries=r.map((function(e){return Object.assign({},e,{pageIndex:"number"==typeof e.leaf?i.book.leafNumToIndex(e.leaf):e.pagenum?i.book.getPageIndex(e.pagenum):void 0})})),this._chaptersRender(this._tocEntries),this.bind(BookReader.eventNames.pageChanged,(function(){return i._chaptersUpdateCurrent()})));case 10:case"end":return e.stop()}}),e,this)}))),BookReader.prototype._chaptersRender=function(){var e=this,t=this.shell;t.menuProviders.chapters={id:"chapters",icon:(0,n.qy)(l||(l=G(['<ia-icon-toc style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon-toc>']))),label:"Table of Contents",component:(0,n.qy)(u||(u=G(['<br-chapters-panel\n .contents="','"\n .jumpToPage="','"\n @connected="','"\n />'])),this._tocEntries,(function(t){e._chaptersUpdateCurrent(t),e.jumpToIndex(t)}),(function(t){e._chaptersPanel=t.target,e._chaptersUpdateCurrent()}))},t.addMenuShortcut("chapters"),t.updateMenuContents(),this._tocEntries.forEach((function(t,r){return e._chaptersRenderMarker(t,r)}))},BookReader.prototype._chaptersRenderMarker=function(e,t){var r=this;if(null!=e.pageIndex){var n=[e.label,e.title].filter((function(e){return e})).join(" ")||"Chapter ".concat(t+1),o=BookReader.util.cssPercentage(e.pageIndex,this.book.getNumLeafs()-1);P("<div></div>").append(P("<div />").text(n).append(P('<div class="BRchapterPage" />').text(this.book.getPageName(e.pageIndex)))).addClass("BRchapter").css({left:o}).appendTo(this.$(".BRnavline")).on("mouseenter",(function(e){var t=e.currentTarget,n=t.querySelector("div"),o=n.getBoundingClientRect(),i=t.getBoundingClientRect(),a=2*parseInt(getComputedStyle(n).paddingLeft);o.x-a<0&&n.style.setProperty("transform","translateX(-".concat(i.left-a,"px)")),r.$(".BRsearch,.BRchapter").removeClass("front"),P(e.target).addClass("front")})).on("mouseleave",(function(e){return P(e.target).removeClass("front")})).on("click",(function(){r._chaptersUpdateCurrent(e.pageIndex),r.jumpToIndex(e.pageIndex)})),this.$(".BRchapter, .BRsearch").each((function(e,t){var r=P(t);r.on("mouseenter",(function(){return r.addClass("front")})).on("mouseleave",(function(){return r.removeClass("front")}))}))}},BookReader.prototype.getOpenLibraryRecord=function(){var e=W(H().mark((function e(t,r){var n,o,i,a;return H().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o="".concat(t,"/query.json?type=/type/edition&*="),i="".concat(o,"&ocaid=").concat(r),e.next=4,P.ajax({url:i});case 4:if((a=e.sent)&&a.length){e.next=9;break}return e.next=8,P.ajax({url:"".concat(o,"&source_records=ia:").concat(r)});case 8:a=e.sent;case 9:return e.abrupt("return",null===(n=a)||void 0===n?void 0:n[0]);case 10:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),BookReader.prototype._chaptersUpdateCurrent=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2==this.mode?Math.max.apply(Math,function(e){if(Array.isArray(e))return q(e)}(e=this.displayedIndices)||M(e)||N(e)||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.firstIndex,r=this._tocEntries.filter((function(e){return null!=e.pageIndex})).reverse(),n=r[r.findIndex((function(e){return e.pageIndex<=t}))];this._chaptersPanel&&(this._chaptersPanel.currentChapter=n)},v=[(0,o.EM)("br-chapters-panel")],m=n.WF,w=R(),g=function(e){w.initializeInstanceElements(e,x.elements)},b=function(e){function t(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=O(this,t),g(r),r.contents=e,r}return function(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&&T(e,t)}(t,e),r=t,n&&C(r.prototype,n),o&&C(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(m),k={F:b,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 e=this;return(0,n.qy)(f||(f=G(["\n <ol>\n ","\n </ol>\n "])),this.contents.map((function(t){return e.renderTOCEntry(t)})))}},{kind:"method",key:"renderTOCEntry",value:function(e){var t,r=this,o=[e.label,e.title].filter((function(e){return e})).join(" "),c=null!=e.pageIndex;return(0,n.qy)(p||(p=G(['\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":"",e==this.currentChapter?"current":"",(0,a.W)({marginLeft:10*(e.level-1)+"px"}),null!=(t=c?"BRTOCPanel|GoToChapter":void 0)?t:i.s6,(function(){return r.jumpToPage(e.pageIndex)}),o,e.pagenum?(0,n.qy)(h||(h=G(['\n <br />\n <span class="BRTOCElementPage">Page ',"</span>\n "])),e.pagenum):n.s6)}},{kind:"method",key:"connectedCallback",value:function(){var e,t,r,n,o;(e=b,t="connectedCallback",r=this,o=F(z(1&(n=3)?e.prototype:e),t,r),2&n&&"function"==typeof o?function(e){return o.apply(r,e)}:o)([]),this.dispatchEvent(new CustomEvent("connected"))}},{kind:"method",key:"updated",value:function(e){var t;e.has("currentChapter")&&(null===(t=this.shadowRoot.querySelector("li.current"))||void 0===t||t.scrollIntoView({block:"nearest",behavior:"smooth"}))}},{kind:"get",static:!0,key:"styles",value:function(){return(0,n.AH)(d||(d=G(["\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=w.decorateClass(function(e){for(var t=[],r=function(e){return"method"===e.kind&&e.key===i.key&&e.placement===i.placement},n=0;n<e.length;n++){var o,i=e[n];if("method"===i.kind&&(o=t.find(r)))if(D(i.descriptor)||D(o.descriptor)){if(S(i)||S(o))throw new ReferenceError("Duplicated methods ("+i.key+") can't be decorated.");o.descriptor=i.descriptor}else{if(S(i)){if(S(o))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+i.key+").");o.decorators=i.decorators}L(i,o)}else t.push(i)}return t}(k.d.map(I)),v),w.initializeClassElements(k.F,x.elements),w.runClassFinishers(k.F,x.finishers)}},function(e){e(e.s=7045)}]);
305
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":["jQuery","extend","BookReader","defaultOptions","olHost","enableChaptersPlugin","bookId","prototype","setup","super_","options","call","init","ui","getOpenLibraryRecord","enableMobileNav","bind","eventNames","mobileNavOpen","updateTOCState","firstIndex","_tocEntries","$","parent","hasClass","click","addChapter","chapterTitle","pageNumber","pageIndex","uiStringPage","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","setUpChapterMarkers","olObject","table_of_contents","ajax","url","dataType","then","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/@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"],"sourcesContent":["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","/* global BookReader */\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';\n/** @typedef {import('@/src/BookNavigator/book-navigator.js').BookNavigator} BookNavigator */\n\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 to call Open Library for TOC */\nBookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.options.enableChaptersPlugin && this.ui !== 'embed') {\n this._chapterInit();\n }\n };\n})(BookReader.prototype.init);\n\nBookReader.prototype._chapterInit = async function() {\n let rawTableOfContents = null;\n // Prefer IA TOC for now, until we update the second half to check for\n // `openlibrary_edition` on the IA metadata instead of making a bunch of\n // requests to OL.\n if (this.options.table_of_contents?.length) {\n rawTableOfContents = this.options.table_of_contents;\n } else {\n const olEdition = await this.getOpenLibraryRecord(this.options.olHost, this.options.bookId);\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.book.leafNumToIndex(rawTOCEntry.leaf) :\n rawTOCEntry.pagenum ? this.book.getPageIndex(rawTOCEntry.pagenum) :\n undefined\n ),\n })));\n this._chaptersRender(this._tocEntries);\n this.bind(BookReader.eventNames.pageChanged, () => this._chaptersUpdateCurrent());\n }\n};\n\n/**\n * Update the table of contents based on array of TOC entries.\n */\nBookReader.prototype._chaptersRender = function() {\n const shell = /** @type {BookNavigator} */(this.shell);\n 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._chaptersUpdateCurrent(pageIndex);\n this.jumpToIndex(pageIndex);\n }}\"\n @connected=\"${(e) => {\n this._chaptersPanel = e.target;\n this._chaptersUpdateCurrent();\n }}\"\n />`,\n };\n shell.addMenuShortcut('chapters');\n shell.updateMenuContents();\n this._tocEntries.forEach((tocEntry, i) => this._chaptersRenderMarker(tocEntry, i));\n};\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/**\n * @param {TocEntry} tocEntry\n * @param {number} entryIndex\n */\nBookReader.prototype._chaptersRenderMarker = function(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.book.getNumLeafs() - 1);\n $(`<div></div>`)\n .append(\n $('<div />')\n .text(chapterStr)\n .append(\n $('<div class=\"BRchapterPage\" />')\n .text(this.book.getPageName(tocEntry.pageIndex)),\n ),\n )\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.$('.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.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', () => {\n this._chaptersUpdateCurrent(tocEntry.pageIndex);\n this.jumpToIndex(tocEntry.pageIndex);\n });\n\n this.$('.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 * @param {string} olHost\n * @param {string} ocaid\n */\nBookReader.prototype.getOpenLibraryRecord = async function (olHost, ocaid) {\n // Try looking up by ocaid first, then by source_record\n const baseURL = `${olHost}/query.json?type=/type/edition&*=`;\n const fetchUrlByBookId = `${baseURL}&ocaid=${ocaid}`;\n\n let data = await $.ajax({ url: fetchUrlByBookId });\n\n if (!data || !data.length) {\n // try sourceid\n data = await $.ajax({ url: `${baseURL}&source_records=ia:${ocaid}` });\n }\n\n return data?.[0];\n};\n\n/**\n * @private\n * Highlights the current chapter based on current page\n * @param {PageIndex} curIndex\n */\nBookReader.prototype._chaptersUpdateCurrent = function(\n curIndex = (this.mode == 2 ? Math.max(...this.displayedIndices) : this.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\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"],"names":["IAIconToc","styles","render","customElements","define","super_","_initialize","BRChaptersPanel","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","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","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","jQuery","extend","BookReader","defaultOptions","olHost","enableChaptersPlugin","bookId","init","this","options","ui","_chapterInit","_callee","_this$options$table_o","rawTableOfContents","_olEdition$table_of_c","olEdition","_this","_context","table_of_contents","getOpenLibraryRecord","_tocEntries","map","rawTOCEntry","assign","pageIndex","leaf","book","leafNumToIndex","pagenum","getPageIndex","undefined","_chaptersRender","bind","eventNames","pageChanged","_chaptersUpdateCurrent","_this2","shell","menuProviders","id","icon","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","jumpToIndex","_chaptersPanel","target","addMenuShortcut","updateMenuContents","tocEntry","_chaptersRenderMarker","entryIndex","_this3","chapterStr","title","filter","x","join","concat","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","_ref2","_callee2","ocaid","_data","baseURL","fetchUrlByBookId","data","_context2","ajax","url","_x","_x2","curIndex","mode","Math","max","displayedIndices","firstIndex","tocEntriesIndexed","currChapter","findIndex","chapter","currentChapter","customElement","LitElement","_LitElement2","contents","_this4","_classCallCheck","_callSuper","_inherits","F","kind","decorators","property","Array","key","_this5","_templateObject3","renderTOCEntry","_this6","chapterTitle","clickable","_templateObject4","styleMap","marginLeft","level","jumpToPage","_templateObject5","nothing","dispatchEvent","CustomEvent","changedProperties","_this$shadowRoot$quer","has","shadowRoot","scrollIntoView","block","behavior","static","_templateObject6"],"sourceRoot":""}
@@ -1,75 +1,2 @@
1
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.iframe.js"],{
2
-
3
- /***/ "./src/plugins/plugin.iframe.js":
4
- /*!**************************************!*\
5
- !*** ./src/plugins/plugin.iframe.js ***!
6
- \**************************************/
7
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8
-
9
- "use strict";
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ "_attachEventListeners": function() { return /* binding */ _attachEventListeners; }
13
- /* harmony export */ });
14
- /* global BookReader */
15
-
16
- /**
17
- * Plugin for two-way communication between a BookReader in an IFrame and the
18
- * parent web page
19
- */
20
- var MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';
21
-
22
- BookReader.prototype.init = function (super_) {
23
- return function () {
24
- super_.call(this);
25
-
26
- _attachEventListeners(this);
27
- };
28
- }(BookReader.prototype.init);
29
- /**
30
- * @private
31
- * Using window.postMessage() and event listeners, the plugin notifies the
32
- * parent window when pages change, and the parent window can also
33
- * explicitly request a page change by sending its own message.
34
- *
35
- * @param {BookReader} br
36
- * @param {Window?} [parent]
37
- */
38
-
39
-
40
- function _attachEventListeners(br) {
41
- var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.parent;
42
-
43
- // Not embedded, abort
44
- if (!parent) {
45
- return;
46
- }
47
-
48
- br.bind(BookReader.eventNames.fragmentChange, function () {
49
- var fragment = br.fragmentFromParams(br.paramsFromCurrent());
50
- parent.postMessage({
51
- type: MESSAGE_TYPE_FRAGMENT_CHANGE,
52
- fragment: fragment
53
- }, '*');
54
- });
55
- window.addEventListener('message', function (event) {
56
- // Not a recognized message type, abort
57
- if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {
58
- return;
59
- }
60
-
61
- br.updateFromParams(br.paramsFromFragment(event.data.fragment));
62
- });
63
- }
64
-
65
- /***/ })
66
-
67
- },
68
- /******/ function(__webpack_require__) { // webpackRuntimeModules
69
- /******/ "use strict";
70
- /******/
71
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
72
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.iframe.js"));
73
- /******/ }
74
- ]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[240],{7121: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=7121)}]);
75
2
  //# sourceMappingURL=plugin.iframe.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"names":["MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","super_","call","_attachEventListeners","br","parent","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;AACA;AACA;AACA;AAEA,IAAMA,4BAA4B,GAAG,0BAArC;;AAEAC,UAAU,CAACC,SAAX,CAAqBC,IAArB,GAA6B,UAAUC,MAAV,EAAkB;AAC7C,SAAO,YAAY;AACjBA,UAAM,CAACC,IAAP,CAAY,IAAZ;;AACAC,yBAAqB,CAAC,IAAD,CAArB;AACD,GAHD;AAID,CAL2B,CAKzBL,UAAU,CAACC,SAAX,CAAqBC,IALI,CAA5B;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,qBAAT,CAA+BC,EAA/B,EAA2D;AAAA,MAAxBC,MAAwB,uEAAfC,MAAM,CAACD,MAAQ;;AAChE;AACA,MAAI,CAACA,MAAL,EAAa;AACX;AACD;;AAEDD,IAAE,CAACG,IAAH,CAAQT,UAAU,CAACU,UAAX,CAAsBC,cAA9B,EAA8C,YAAM;AAClD,QAAMC,QAAQ,GAAGN,EAAE,CAACO,kBAAH,CAAsBP,EAAE,CAACQ,iBAAH,EAAtB,CAAjB;AAEAP,UAAM,CAACQ,WAAP,CACE;AAAEC,UAAI,EAAEjB,4BAAR;AAAsCa,cAAQ,EAARA;AAAtC,KADF,EAEE,GAFF;AAID,GAPD;AASAJ,QAAM,CAACS,gBAAP,CAAwB,SAAxB,EAAmC,UAAAC,KAAK,EAAI;AAC1C;AACA,QAAI,CAACA,KAAK,CAACC,IAAP,IAAeD,KAAK,CAACC,IAAN,CAAWH,IAAX,KAAoBjB,4BAAvC,EAAqE;AACnE;AACD;;AAEDO,MAAE,CAACc,gBAAH,CAAoBd,EAAE,CAACe,kBAAH,CAAsBH,KAAK,CAACC,IAAN,CAAWP,QAAjC,CAApB;AACD,GAPD;AAQD,C","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],{472:function(t,e,n){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 o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(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+""}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:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(t){}}])&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()},8: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 r=n(472);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 i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,s(r.key),r)}}function a(t,e,n){return e=f(e),function(t,e){if(e&&("object"==o(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 r=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=f(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(arguments.length<3?t:n):o.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"!=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+""}var p=window.BookReader,b=function(t){function e(){var t,n,r,o;!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)),o={enabled:!0,manifest:null},(r=s(r="options"))in n?Object.defineProperty(n,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[r]=o,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,r=[{key:"setup",value:function(t){var n,r,o;(n=e,r=this,"function"==typeof(o=c(f(1&3?n.prototype:n),"setup",r))?function(t){return o.apply(r,t)}:o)([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,r){var o=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(o,"/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(r,o){var i=t.items[o].items[0].items[0].body,a={uri:(i instanceof Array?i[0]:i).service[0].id,width:r.width,height:r.height,pageNum:y(r.label)};n.push(a),o%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,r){var o=Math.floor(100/n),i=t.sequences[0].canvases[e].images[0].resource.service["@id"];return"".concat(i,"/full/pct:").concat(o,"/0/default.jpg")}},r=[];return t.sequences[0].canvases.forEach((function(t,e){var o={uri:t.images[0].resource.service["@id"],width:t.width,height:t.height,pageNum:t.label};r.push(o),e%2==0&&(n.data.push(r),r=[])})),r.length>0&&n.data.push(r),n}}],r&&i(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(r.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=8)}]);
2
+ //# sourceMappingURL=plugin.iiif.js.map