@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,173 +1,2 @@
1
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.archive_analytics.js"],{
2
-
3
- /***/ "./src/plugins/plugin.archive_analytics.js":
4
- /*!*************************************************!*\
5
- !*** ./src/plugins/plugin.archive_analytics.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_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
12
- /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js");
14
- /* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1__);
15
- /* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "jquery");
16
-
17
-
18
-
19
- /* global BookReader, archive_analytics */
20
-
21
- /**
22
- * Plugin for Archive.org analytics
23
- */
24
- jQuery.extend(BookReader.defaultOptions, {
25
- enableArchiveAnalytics: true,
26
-
27
- /** Provide a means of debugging, cause otherwise it's impossible to test locally */
28
- debugArchiveAnaltyics: false
29
- });
30
-
31
- BookReader.prototype.init = function (super_) {
32
- return function () {
33
- var _this = this;
34
-
35
- super_.call(this);
36
-
37
- if (this.options.enableArchiveAnalytics) {
38
- this.bind(BookReader.eventNames.fragmentChange, function () {
39
- return _this.archiveAnalyticsSendFragmentChange();
40
- });
41
- }
42
- };
43
- }(BookReader.prototype.init);
44
- /** @private */
45
-
46
-
47
- BookReader.prototype.archiveAnalyticsSendFragmentChange = function () {
48
- if (!window.archive_analytics) {
49
- return;
50
- }
51
-
52
- var prevFragment = this.archiveAnalyticsSendFragmentChange.prevFragment;
53
- var params = this.paramsFromCurrent();
54
- var newFragment = this.fragmentFromParams(params);
55
-
56
- if (prevFragment != newFragment) {
57
- var values = {
58
- bookreader: "user_changed_view",
59
- itemid: this.bookId,
60
- cache_bust: Math.random()
61
- }; // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!
62
-
63
- values.offsite = 1;
64
- values.details = 0;
65
-
66
- try {
67
- values.offsite = window.top.location.hostname.match(/\.archive.org$/) ? 0 : 1;
68
- values.details = !values.offsite && window.top.location.pathname.match(/^\/details\//) ? 1 : 0;
69
- } catch (e) {} // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!
70
- // Send bookreader ping
71
-
72
-
73
- archive_analytics.send_ping(values, null, "augment_for_ao_site"); // Also send tracking event ping
74
-
75
- var additionalEventParams = this.options.lendingInfo && this.options.lendingInfo.loanId ? {
76
- loanId: this.options.lendingInfo.loanId
77
- } : {};
78
- archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);
79
- this.archiveAnalyticsSendFragmentChange.prevFragment = newFragment;
80
- }
81
- };
82
- /**
83
- * Sends a tracking "Event". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events
84
- * @param {string} category
85
- * @param {string} action
86
- * @param {number} [value] (must be an int)
87
- * @param {Object} [additionalEventParams]
88
- */
89
-
90
-
91
- BookReader.prototype.archiveAnalyticsSendEvent = function (category, action, value, additionalEventParams) {
92
- if (!this.options.enableArchiveAnalytics) return;
93
-
94
- if (this.options.debugArchiveAnaltyics) {
95
- console.log("archiveAnalyticsSendEvent", arguments, window.archive_analytics);
96
- }
97
-
98
- if (!window.archive_analytics) return;
99
- additionalEventParams = additionalEventParams || {};
100
-
101
- if (typeof value == 'number') {
102
- additionalEventParams.ev = value;
103
- }
104
-
105
- window.archive_analytics.send_event(category, action, null, additionalEventParams);
106
- };
107
-
108
- /***/ }),
109
-
110
- /***/ "./node_modules/core-js/modules/es.string.match.js":
111
- /*!*********************************************************!*\
112
- !*** ./node_modules/core-js/modules/es.string.match.js ***!
113
- \*********************************************************/
114
- /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
115
-
116
- "use strict";
117
-
118
- var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
119
- var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
120
- var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
121
- var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
122
- var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
123
- var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
124
-
125
- // @@match logic
126
- fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {
127
- return [
128
- // `String.prototype.match` method
129
- // https://tc39.es/ecma262/#sec-string.prototype.match
130
- function match(regexp) {
131
- var O = requireObjectCoercible(this);
132
- var matcher = regexp == undefined ? undefined : regexp[MATCH];
133
- return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
134
- },
135
- // `RegExp.prototype[@@match]` method
136
- // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
137
- function (regexp) {
138
- var res = maybeCallNative(nativeMatch, regexp, this);
139
- if (res.done) return res.value;
140
-
141
- var rx = anObject(regexp);
142
- var S = String(this);
143
-
144
- if (!rx.global) return regExpExec(rx, S);
145
-
146
- var fullUnicode = rx.unicode;
147
- rx.lastIndex = 0;
148
- var A = [];
149
- var n = 0;
150
- var result;
151
- while ((result = regExpExec(rx, S)) !== null) {
152
- var matchStr = String(result[0]);
153
- A[n] = matchStr;
154
- if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
155
- n++;
156
- }
157
- return n === 0 ? null : A;
158
- }
159
- ];
160
- });
161
-
162
-
163
- /***/ })
164
-
165
- },
166
- /******/ function(__webpack_require__) { // webpackRuntimeModules
167
- /******/ "use strict";
168
- /******/
169
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
170
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.archive_analytics.js"));
171
- /******/ }
172
- ]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[623],{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}()},9372:function(t,e,n){n(2675),n(9463),n(2259),n(5700),n(8706),n(3792),n(9572),n(8130),n(875),n(6099),n(825),n(7495),n(7764),n(1761),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=c(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||[],c(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(t){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},c(t)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function l(t,e,n){return(e=s(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}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 y=window.BookReader,p=function(t){function e(){var t;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return l(t=a(this,e,[].concat(r)),"options",{enabled:!0,debug:!1}),l(t,"_prevFragment",null),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&&f(t,e)}(e,t),n=e,r=[{key:"init",value:function(){var t=this;this.options.enabled&&this.br.bind(y.eventNames.fragmentChange,(function(){return t.sendFragmentChange()}))}},{key:"sendFragmentChange",value:function(){if(window.archive_analytics){var t=this._prevFragment,e=this.br.paramsFromCurrent(),n=this.br.fragmentFromParams(e);if(t!=n){var r,o={bookreader:"user_changed_view",itemid:this.br.bookId,cache_bust:Math.random(),offsite:1,details:0};try{o.offsite=window.top.location.hostname.match(/\.archive.org$/)?0:1,o.details=!o.offsite&&window.top.location.pathname.match(/^\/details\//)?1:0}catch(t){}window.archive_analytics.send_ping(o,null,"augment_for_ao_site");var i=null!==(r=this.br.options.lendingInfo)&&void 0!==r&&r.loanId?{loanId:this.br.options.lendingInfo.loanId}:{};window.archive_analytics.send_event("BookReader","UserChangedView",window.location.pathname,i),this._prevFragment=n}}}},{key:"sendEvent",value:function(t,e,n,r){this.options.enabled&&(this.options.debug&&console.log("archiveAnalyticsSendEvent",arguments,window.archive_analytics),window.archive_analytics&&(r=r||{},"number"==typeof n&&(r.ev=n),window.archive_analytics.send_event(t,e,null,r)))}}],r&&i(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(r.S);null==y||y.registerPlugin("archiveAnalytics",p)}},function(t){t(t.s=9372)}]);
173
2
  //# sourceMappingURL=plugin.archive_analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.archive_analytics.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.match.js"],"names":["jQuery","extend","BookReader","defaultOptions","enableArchiveAnalytics","debugArchiveAnaltyics","prototype","init","super_","call","options","bind","eventNames","fragmentChange","archiveAnalyticsSendFragmentChange","window","archive_analytics","prevFragment","params","paramsFromCurrent","newFragment","fragmentFromParams","values","bookreader","itemid","bookId","cache_bust","Math","random","offsite","details","top","location","hostname","match","pathname","e","send_ping","additionalEventParams","lendingInfo","loanId","send_event","archiveAnalyticsSendEvent","category","action","value","console","log","arguments","ev"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA;AACA;AACA;AACAA,MAAM,CAACC,MAAP,CAAcC,UAAU,CAACC,cAAzB,EAAyC;AACvCC,wBAAsB,EAAE,IADe;;AAEvC;AACAC,uBAAqB,EAAE;AAHgB,CAAzC;;AAMAH,UAAU,CAACI,SAAX,CAAqBC,IAArB,GAA6B,UAASC,MAAT,EAAiB;AAC5C,SAAO,YAAW;AAAA;;AAChBA,UAAM,CAACC,IAAP,CAAY,IAAZ;;AAEA,QAAI,KAAKC,OAAL,CAAaN,sBAAjB,EAAyC;AACvC,WAAKO,IAAL,CAAUT,UAAU,CAACU,UAAX,CAAsBC,cAAhC,EAAgD;AAAA,eAAM,KAAI,CAACC,kCAAL,EAAN;AAAA,OAAhD;AACD;AACF,GAND;AAOD,CAR2B,CAQzBZ,UAAU,CAACI,SAAX,CAAqBC,IARI,CAA5B;AAUA;;;AACAL,UAAU,CAACI,SAAX,CAAqBQ,kCAArB,GAA0D,YAAW;AACnE,MAAI,CAACC,MAAM,CAACC,iBAAZ,EAA+B;AAC7B;AACD;;AAED,MAAMC,YAAY,GAAG,KAAKH,kCAAL,CAAwCG,YAA7D;AAEA,MAAMC,MAAM,GAAG,KAAKC,iBAAL,EAAf;AACA,MAAMC,WAAW,GAAG,KAAKC,kBAAL,CAAwBH,MAAxB,CAApB;;AAEA,MAAID,YAAY,IAAIG,WAApB,EAAiC;AAC/B,QAAME,MAAM,GAAG;AACbC,gBAAU,EAAE,mBADC;AAEbC,YAAM,EAAE,KAAKC,MAFA;AAGbC,gBAAU,EAAEC,IAAI,CAACC,MAAL;AAHC,KAAf,CAD+B,CAM/B;;AACAN,UAAM,CAACO,OAAP,GAAiB,CAAjB;AACAP,UAAM,CAACQ,OAAP,GAAiB,CAAjB;;AACA,QAAI;AACFR,YAAM,CAACO,OAAP,GAAiBd,MAAM,CAACgB,GAAP,CAAWC,QAAX,CAAoBC,QAApB,CAA6BC,KAA7B,CAAmC,gBAAnC,IACb,CADa,GAEb,CAFJ;AAGAZ,YAAM,CAACQ,OAAP,GACE,CAACR,MAAM,CAACO,OAAR,IAAmBd,MAAM,CAACgB,GAAP,CAAWC,QAAX,CAAoBG,QAApB,CAA6BD,KAA7B,CAAmC,cAAnC,CAAnB,GACI,CADJ,GAEI,CAHN;AAID,KARD,CAQE,OAAOE,CAAP,EAAU,CAAE,CAjBiB,CAkB/B;AAEA;;;AACApB,qBAAiB,CAACqB,SAAlB,CAA4Bf,MAA5B,EAAoC,IAApC,EAA0C,qBAA1C,EArB+B,CAuB/B;;AACA,QAAMgB,qBAAqB,GAAG,KAAK5B,OAAL,CAAa6B,WAAb,IAA4B,KAAK7B,OAAL,CAAa6B,WAAb,CAAyBC,MAArD,GAC1B;AAAEA,YAAM,EAAE,KAAK9B,OAAL,CAAa6B,WAAb,CAAyBC;AAAnC,KAD0B,GAE1B,EAFJ;AAGAxB,qBAAiB,CAACyB,UAAlB,CAA6B,YAA7B,EAA2C,iBAA3C,EAA8D1B,MAAM,CAACiB,QAAP,CAAgBG,QAA9E,EAAwFG,qBAAxF;AAEA,SAAKxB,kCAAL,CAAwCG,YAAxC,GAAuDG,WAAvD;AACD;AACF,CAzCD;AA2CA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAlB,UAAU,CAACI,SAAX,CAAqBoC,yBAArB,GAAiD,UAASC,QAAT,EAAmBC,MAAnB,EAA2BC,KAA3B,EAAkCP,qBAAlC,EAAyD;AACxG,MAAI,CAAC,KAAK5B,OAAL,CAAaN,sBAAlB,EAA0C;;AAE1C,MAAI,KAAKM,OAAL,CAAaL,qBAAjB,EAAwC;AACtCyC,WAAO,CAACC,GAAR,CAAY,2BAAZ,EAAyCC,SAAzC,EAAoDjC,MAAM,CAACC,iBAA3D;AACD;;AAED,MAAI,CAACD,MAAM,CAACC,iBAAZ,EAA+B;AAE/BsB,uBAAqB,GAAGA,qBAAqB,IAAI,EAAjD;;AACA,MAAI,OAAOO,KAAP,IAAiB,QAArB,EAA+B;AAC7BP,yBAAqB,CAACW,EAAtB,GAA2BJ,KAA3B;AACD;;AACD9B,QAAM,CAACC,iBAAP,CAAyByB,UAAzB,CAAoCE,QAApC,EAA8CC,MAA9C,EAAsD,IAAtD,EAA4DN,qBAA5D;AACD,CAdD,C;;;;;;;;;;;ACvEa;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,iBAAiB,mBAAO,CAAC,mGAAmC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","file":"plugins/plugin.archive_analytics.js","sourcesContent":["/* global BookReader, archive_analytics */\n/**\n * Plugin for Archive.org analytics\n */\njQuery.extend(BookReader.defaultOptions, {\n enableArchiveAnalytics: true,\n /** Provide a means of debugging, cause otherwise it's impossible to test locally */\n debugArchiveAnaltyics: false,\n});\n\nBookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n\n if (this.options.enableArchiveAnalytics) {\n this.bind(BookReader.eventNames.fragmentChange, () => this.archiveAnalyticsSendFragmentChange());\n }\n };\n})(BookReader.prototype.init);\n\n/** @private */\nBookReader.prototype.archiveAnalyticsSendFragmentChange = function() {\n if (!window.archive_analytics) {\n return;\n }\n\n const prevFragment = this.archiveAnalyticsSendFragmentChange.prevFragment;\n\n const params = this.paramsFromCurrent();\n const newFragment = this.fragmentFromParams(params);\n\n if (prevFragment != newFragment) {\n const values = {\n bookreader: \"user_changed_view\",\n itemid: this.bookId,\n cache_bust: Math.random()\n };\n // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!\n values.offsite = 1;\n values.details = 0;\n try {\n values.offsite = window.top.location.hostname.match(/\\.archive.org$/)\n ? 0\n : 1;\n values.details =\n !values.offsite && window.top.location.pathname.match(/^\\/details\\//)\n ? 1\n : 0;\n } catch (e) {}\n // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!\n\n // Send bookreader ping\n archive_analytics.send_ping(values, null, \"augment_for_ao_site\");\n\n // Also send tracking event ping\n const additionalEventParams = this.options.lendingInfo && this.options.lendingInfo.loanId\n ? { loanId: this.options.lendingInfo.loanId }\n : {};\n archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);\n\n this.archiveAnalyticsSendFragmentChange.prevFragment = newFragment;\n }\n};\n\n/**\n * Sends a tracking \"Event\". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events\n * @param {string} category\n * @param {string} action\n * @param {number} [value] (must be an int)\n * @param {Object} [additionalEventParams]\n */\nBookReader.prototype.archiveAnalyticsSendEvent = function(category, action, value, additionalEventParams) {\n if (!this.options.enableArchiveAnalytics) return;\n\n if (this.options.debugArchiveAnaltyics) {\n console.log(\"archiveAnalyticsSendEvent\", arguments, window.archive_analytics);\n }\n\n if (!window.archive_analytics) return;\n\n additionalEventParams = additionalEventParams || {};\n if (typeof(value) == 'number') {\n additionalEventParams.ev = value;\n }\n window.archive_analytics.send_event(category, action, null, additionalEventParams);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.archive_analytics.js","mappings":"06BAMO,IAAMA,EAAgB,WAW3B,O,EAPA,SAAAA,EAAYC,I,4FAAIC,CAAA,KAAAF,GAEdG,KAAKF,GAAKA,EAEVE,KAAKC,OACP,G,EAEA,EAAAC,IAAA,QAAAC,MAIA,SAAMF,GACJD,KAAKC,QAAUG,OAAOC,OAAO,CAAC,EAAGL,KAAKC,QAASA,EACjD,GAEA,CAAAC,IAAA,OAAAC,MACA,WAAQ,GAER,CAAAD,IAAA,0BAAAC,MAKA,SAAwBG,GACxB,GAEA,CAAAJ,IAAA,0BAAAC,MACA,WAA2B,GAE3B,CAAAD,IAAA,eAAAC,MAGA,SAAaI,GAAU,M,6EAAC,CApCG,E,qtDCH7B,IAAMC,EAAmEC,OAAOD,WAGnEE,EAAsB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,G,4FAAAb,CAAA,KAAAW,GAAA,QAAAG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAQb,OARaC,EAAAP,EAAAQ,EAAA,KAAAV,EAAA,GAAAW,OAAAL,IAAA,UACvB,CACRM,SAAS,EAETC,OAAO,IAGTJ,EAAAP,EAAA,gBACgB,MAAIA,CAAA,Q,qRAAAY,CAAAd,EAAAC,G,EAAAD,E,EAAA,EAAAR,IAAA,OAAAC,MAGpB,WAAO,IAAAsB,EAAA,KACDzB,KAAKC,QAAQqB,SACftB,KAAKF,GAAG4B,KAAKlB,EAAWmB,WAAWC,gBAAgB,kBAAMH,EAAKI,oBAAoB,GAEtF,GAEA,CAAA3B,IAAA,qBAAAC,MACA,WACE,GAAKM,OAAOqB,kBAAZ,CAIA,IAAMC,EAAe/B,KAAKgC,cAEpBC,EAASjC,KAAKF,GAAGoC,oBACjBC,EAAcnC,KAAKF,GAAGsC,mBAAmBH,GAE/C,GAAIF,GAAgBI,EAAa,KAAAE,EACzBC,EAAS,CACbC,WAAY,oBACZC,OAAQxC,KAAKF,GAAG2C,OAChBC,WAAYC,KAAKC,SAGnBN,QAAiB,EACjBA,QAAiB,GACjB,IACEA,EAAOO,QAAUpC,OAAOqC,IAAIC,SAASC,SAASC,MAAM,kBAChD,EACA,EACJX,EAAOY,SACJZ,EAAOO,SAAWpC,OAAOqC,IAAIC,SAASI,SAASF,MAAM,gBAClD,EACA,CACR,CAAE,MAAOG,GAAK,CAId3C,OAAOqB,kBAAkBuB,UAAUf,EAAQ,KAAM,uBAGjD,IAAMgB,EAAmD,QAA3BjB,EAAArC,KAAKF,GAAGG,QAAQsD,mBAAW,IAAAlB,GAA3BA,EAA6BmB,OACvD,CAAEA,OAAQxD,KAAKF,GAAGG,QAAQsD,YAAYC,QACtC,CAAC,EACL/C,OAAOqB,kBAAkB2B,WAAW,aAAc,kBAAmBhD,OAAOsC,SAASI,SAAUG,GAE/FtD,KAAKgC,cAAgBG,CACvB,CArCA,CAsCF,GAEA,CAAAjC,IAAA,YAAAC,MAOA,SAAUuD,EAAUC,EAAQxD,EAAOmD,GAC5BtD,KAAKC,QAAQqB,UAEdtB,KAAKC,QAAQsB,OACfqC,QAAQC,IAAI,4BAA6B/C,UAAWL,OAAOqB,mBAGxDrB,OAAOqB,oBAEZwB,EAAwBA,GAAyB,CAAC,EAC5B,iBAAVnD,IACVmD,EAAsBQ,GAAK3D,GAE7BM,OAAOqB,kBAAkB2B,WAAWC,EAAUC,EAAQ,KAAML,IAC9D,I,gFAAC,CAlFgC,CAASzD,EAAAA,GAqF5CW,SAAAA,EAAYuD,eAAe,mBAAoBrD,E","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.archive_analytics.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\n\nexport class ArchiveAnalyticsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** Provide a means of debugging, cause otherwise it's impossible to test locally */\n debug: false,\n }\n\n /** @type {string} */\n _prevFragment = null;\n\n /** @override */\n init() {\n if (this.options.enabled) {\n this.br.bind(BookReader.eventNames.fragmentChange, () => this.sendFragmentChange());\n }\n }\n\n /** @private */\n sendFragmentChange() {\n if (!window.archive_analytics) {\n return;\n }\n\n const prevFragment = this._prevFragment;\n\n const params = this.br.paramsFromCurrent();\n const newFragment = this.br.fragmentFromParams(params);\n\n if (prevFragment != newFragment) {\n const values = {\n bookreader: \"user_changed_view\",\n itemid: this.br.bookId,\n cache_bust: Math.random(),\n };\n // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!\n values.offsite = 1;\n values.details = 0;\n try {\n values.offsite = window.top.location.hostname.match(/\\.archive.org$/)\n ? 0\n : 1;\n values.details =\n !values.offsite && window.top.location.pathname.match(/^\\/details\\//)\n ? 1\n : 0;\n } catch (e) { }\n // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!\n\n // Send bookreader ping\n window.archive_analytics.send_ping(values, null, \"augment_for_ao_site\");\n\n // Also send tracking event ping\n const additionalEventParams = this.br.options.lendingInfo?.loanId\n ? { loanId: this.br.options.lendingInfo.loanId }\n : {};\n window.archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);\n\n this._prevFragment = newFragment;\n }\n }\n\n /**\n * Sends a tracking \"Event\". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events\n * @param {string} category\n * @param {string} action\n * @param {number} [value] (must be an int)\n * @param {Object} [additionalEventParams]\n */\n sendEvent(category, action, value, additionalEventParams) {\n if (!this.options.enabled) return;\n\n if (this.options.debug) {\n console.log(\"archiveAnalyticsSendEvent\", arguments, window.archive_analytics);\n }\n\n if (!window.archive_analytics) return;\n\n additionalEventParams = additionalEventParams || {};\n if (typeof (value) == 'number') {\n additionalEventParams.ev = value;\n }\n window.archive_analytics.send_event(category, action, null, additionalEventParams);\n }\n}\n\nBookReader?.registerPlugin('archiveAnalytics', ArchiveAnalyticsPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$navBar","BookReader","window","ArchiveAnalyticsPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","debug","_inherits","_this2","bind","eventNames","fragmentChange","sendFragmentChange","archive_analytics","prevFragment","_prevFragment","params","paramsFromCurrent","newFragment","fragmentFromParams","_this$br$options$lend","values","bookreader","itemid","bookId","cache_bust","Math","random","offsite","top","location","hostname","match","details","pathname","e","send_ping","additionalEventParams","lendingInfo","loanId","send_event","category","action","console","log","ev","registerPlugin"],"sourceRoot":""}
@@ -1,166 +1,2 @@
1
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.autoplay.js"],{
2
-
3
- /***/ "./src/plugins/plugin.autoplay.js":
4
- /*!****************************************!*\
5
- !*** ./src/plugins/plugin.autoplay.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_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
12
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ "./node_modules/core-js/modules/es.array.reduce.js");
14
- /* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_1__);
15
- /* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "jquery");
16
- /* provided dependency */ var $ = __webpack_require__(/*! jquery */ "jquery");
17
-
18
-
19
-
20
- /*global BookReader */
21
-
22
- /**
23
- * Plugin which adds an autoplay feature. Useful for kiosk situations.
24
- */
25
- jQuery.extend(BookReader.defaultOptions, {
26
- enableAutoPlayPlugin: true
27
- });
28
- /**
29
- * @override BookReader.setup
30
- */
31
-
32
- BookReader.prototype.setup = function (super_) {
33
- return function (options) {
34
- super_.call(this, options);
35
- this.auto = false;
36
- this.autoTimer = null;
37
- this.flipDelay = 5000;
38
- };
39
- }(BookReader.prototype.setup);
40
- /**
41
- * @override BookReader.init
42
- */
43
-
44
-
45
- BookReader.prototype.init = function (super_) {
46
- return function (options) {
47
- var _this = this;
48
-
49
- super_.call(this, options);
50
- if (!this.options.enableAutoPlayPlugin) return;
51
- this.bind(BookReader.eventNames.stop, function () {
52
- return _this.autoStop();
53
- });
54
- };
55
- }(BookReader.prototype.init);
56
- /**
57
- * @override BookReader.bindNavigationHandlers
58
- */
59
-
60
-
61
- BookReader.prototype.bindNavigationHandlers = function (super_) {
62
- return function () {
63
- var _this2 = this;
64
-
65
- super_.call(this);
66
- if (!this.options.enableAutoPlayPlugin) return; // Note the mobile plugin attaches itself to body, so we need to select outside
67
-
68
- var jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');
69
- jIcons.filter('.play').click(function () {
70
- _this2.autoToggle();
71
-
72
- return false;
73
- });
74
- jIcons.filter('.pause').click(function () {
75
- _this2.autoToggle();
76
-
77
- return false;
78
- });
79
- };
80
- }(BookReader.prototype.bindNavigationHandlers);
81
- /**
82
- * Starts autoplay mode
83
- * @param {object} overrides
84
- * @param {number} overrides.flipSpeed
85
- * @param {number} overrides.flipDelay
86
- */
87
-
88
-
89
- BookReader.prototype.autoToggle = function (overrides) {
90
- var _this3 = this;
91
-
92
- if (!this.options.enableAutoPlayPlugin) return;
93
- var options = $.extend({
94
- flipSpeed: this.flipSpeed,
95
- flipDelay: this.flipDelay
96
- }, overrides);
97
- this.flipSpeed = typeof options.flipSpeed === "number" ? options.flipSpeed : this.flipSpeed;
98
- this.flipDelay = typeof options.flipDelay === "number" ? options.flipDelay : this.flipDelay;
99
- this.trigger(BookReader.eventNames.stop);
100
- var bComingFrom1up = false;
101
-
102
- if (this.constMode2up != this.mode) {
103
- bComingFrom1up = true;
104
- this.switchMode(this.constMode2up);
105
- } // Change to autofit if book is too large
106
-
107
-
108
- if (this.reduce < this.twoPageGetAutofitReduce()) {
109
- this.zoom('auto');
110
- }
111
-
112
- if (null == this.autoTimer) {
113
- // $$$ Draw events currently cause layout problems when they occur during animation.
114
- // There is a specific problem when changing from 1-up immediately to autoplay in RTL so
115
- // we workaround for now by not triggering immediate animation in that case.
116
- // See https://bugs.launchpad.net/gnubook/+bug/328327
117
- if ('rl' == this.pageProgression && bComingFrom1up) {// don't flip immediately -- wait until timer fires
118
- } else {
119
- // flip immediately
120
- this.flipFwdToIndex();
121
- }
122
-
123
- this.$('.play').hide();
124
- this.$('.pause').show();
125
- this.autoTimer = setInterval(function () {
126
- if (_this3.animating) return;
127
-
128
- if (Math.max(_this3.twoPage.currentIndexL, _this3.twoPage.currentIndexR) >= _this3.lastDisplayableIndex()) {
129
- _this3.flipBackToIndex(1); // $$$ really what we want?
130
-
131
- } else {
132
- _this3.flipFwdToIndex();
133
- }
134
- }, this.flipDelay);
135
- } else {
136
- this.autoStop();
137
- }
138
- };
139
- /**
140
- * Stop autoplay mode, allowing animations to finish
141
- */
142
-
143
-
144
- BookReader.prototype.autoStop = function () {
145
- if (!this.options.enableAutoPlayPlugin) return;
146
-
147
- if (null != this.autoTimer) {
148
- clearInterval(this.autoTimer);
149
- this.flipSpeed = 'fast';
150
- this.$('.pause').hide();
151
- this.$('.play').show();
152
- this.autoTimer = null;
153
- }
154
- };
155
-
156
- /***/ })
157
-
158
- },
159
- /******/ function(__webpack_require__) { // webpackRuntimeModules
160
- /******/ "use strict";
161
- /******/
162
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
163
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.autoplay.js"));
164
- /******/ }
165
- ]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[393],{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 u}}),n(2675),n(9463),n(2259),n(5700),n(3792),n(9572),n(8130),n(9085),n(6099),n(7764),n(2953);var u=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}()},5964:function(t,e,n){n(2675),n(9463),n(2259),n(5700),n(8706),n(2008),n(3792),n(9572),n(8130),n(9085),n(875),n(6099),n(825),n(7495),n(7764),n(5746),n(2953),n(8408);var r=n(2827),o=n(6257);function i(t){return i="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},i(t)}function u(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,f(r.key),r)}}function a(t,e,n){return e=s(e),function(t,e){if(e&&("object"==i(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,l()?Reflect.construct(e,n||[],s(t).constructor):e.apply(t,n))}function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}function p(t,e){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},p(t,e)}function c(t,e,n){return(e=f(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function f(t){var e=function(t,e){if("object"!=i(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}var b=function(t){function e(){var t;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return c(t=a(this,e,[].concat(r)),"options",{enabled:!0,flipSpeed:1500,flipDelay:5e3,urlParams:!0}),c(t,"timer",null),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&&p(t,e)}(e,t),n=e,i=[{key:"init",value:function(){var t=this;if(this.options.enabled&&(this.br.bind(r.q.stop,(function(){return t.stop()})),this.options.urlParams)){var e=new URLSearchParams(window.location.search);e.get("flipSpeed")&&(this.options.flipSpeed=(0,o.parseAnimationSpeed)(e.get("flipSpeed"))||this.options.flipSpeed),e.get("flipDelay")&&(this.options.flipDelay=(0,o.parseAnimationSpeed)(e.get("flipDelay"))||this.options.flipDelay),"1"===e.get("autoflip")&&this.toggle()}}},{key:"_bindNavigationHandlers",value:function(){var t=this;if(this.options.enabled){var e=this.br.$(".BRicon");e.filter(".play").on("click",(function(){return t.toggle(),!1})),e.filter(".pause").on("click",(function(){return t.toggle(),!1}))}}},{key:"toggle",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(this.options.enabled){Object.assign(this.options,e),this.br.trigger(r.q.stop);var n=!1;this.br.constMode2up!=this.br.mode&&(n=!0,this.br.switchMode(this.br.constMode2up)),null==this.timer?("rl"==this.br.pageProgression&&n||this.br.next({triggerStop:!1,flipSpeed:this.options.flipSpeed}),this.br.$(".play").hide(),this.br.$(".pause").show(),this.timer=setInterval((function(){t.br.animating||(Math.max(t.br.twoPage.currentIndexL,t.br.twoPage.currentIndexR)>=t.br.book.getNumLeafs()-1?t.br.prev({triggerStop:!1,flipSpeed:t.options.flipSpeed}):t.br.next({triggerStop:!1,flipSpeed:t.options.flipSpeed}))}),(0,o.parseAnimationSpeed)(this.options.flipDelay))):this.stop()}}},{key:"stop",value:function(){this.options.enabled&&null!=this.timer&&(clearInterval(this.timer),this.br.$(".pause").hide(),this.br.$(".play").show(),this.timer=null)}}],i&&u(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,i}(n(472).S),y=window.BookReader;null==y||y.registerPlugin("autoplay",b)}},function(t){t(t.s=5964)}]);
166
2
  //# sourceMappingURL=plugin.autoplay.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.js"],"names":["jQuery","extend","BookReader","defaultOptions","enableAutoPlayPlugin","prototype","setup","super_","options","call","auto","autoTimer","flipDelay","init","bind","eventNames","stop","autoStop","bindNavigationHandlers","jIcons","$","add","filter","click","autoToggle","overrides","flipSpeed","trigger","bComingFrom1up","constMode2up","mode","switchMode","reduce","twoPageGetAutofitReduce","zoom","pageProgression","flipFwdToIndex","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","lastDisplayableIndex","flipBackToIndex","clearInterval"],"mappings":"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","file":"plugins/plugin.autoplay.js","sourcesContent":["/*global BookReader */\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\njQuery.extend(BookReader.defaultOptions, {\n enableAutoPlayPlugin: true\n});\n\n/**\n * @override BookReader.setup\n */\nBookReader.prototype.setup = (function(super_) {\n return function (options) {\n super_.call(this, options);\n\n this.auto = false;\n this.autoTimer = null;\n this.flipDelay = 5000;\n };\n})(BookReader.prototype.setup);\n\n/**\n * @override BookReader.init\n */\nBookReader.prototype.init = (function(super_) {\n return function (options) {\n super_.call(this, options);\n\n if (!this.options.enableAutoPlayPlugin) return;\n this.bind(BookReader.eventNames.stop, () => this.autoStop());\n };\n})(BookReader.prototype.init);\n\n/**\n * @override BookReader.bindNavigationHandlers\n */\nBookReader.prototype.bindNavigationHandlers = (function(super_) {\n return function() {\n super_.call(this);\n\n if (!this.options.enableAutoPlayPlugin) return;\n\n // Note the mobile plugin attaches itself to body, so we need to select outside\n const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');\n\n jIcons.filter('.play').click(() => {\n this.autoToggle();\n return false;\n });\n\n jIcons.filter('.pause').click(() => {\n this.autoToggle();\n return false;\n });\n };\n})(BookReader.prototype.bindNavigationHandlers);\n\n/**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\nBookReader.prototype.autoToggle = function(overrides) {\n if (!this.options.enableAutoPlayPlugin) return;\n\n const options = $.extend({\n flipSpeed: this.flipSpeed,\n flipDelay: this.flipDelay\n }, overrides);\n\n this.flipSpeed = typeof options.flipSpeed === \"number\" ? options.flipSpeed : this.flipSpeed;\n this.flipDelay = typeof options.flipDelay === \"number\" ? options.flipDelay : this.flipDelay;\n this.trigger(BookReader.eventNames.stop);\n\n let bComingFrom1up = false;\n if (this.constMode2up != this.mode) {\n bComingFrom1up = true;\n this.switchMode(this.constMode2up);\n }\n\n // Change to autofit if book is too large\n if (this.reduce < this.twoPageGetAutofitReduce()) {\n this.zoom('auto');\n }\n\n if (null == this.autoTimer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.flipFwdToIndex();\n }\n\n this.$('.play').hide();\n this.$('.pause').show();\n this.autoTimer = setInterval(() => {\n if (this.animating) return;\n\n if (Math.max(this.twoPage.currentIndexL, this.twoPage.currentIndexR) >= this.lastDisplayableIndex()) {\n this.flipBackToIndex(1); // $$$ really what we want?\n } else {\n this.flipFwdToIndex();\n }\n }, this.flipDelay);\n } else {\n this.autoStop();\n }\n};\n\n/**\n * Stop autoplay mode, allowing animations to finish\n */\nBookReader.prototype.autoStop = function() {\n if (!this.options.enableAutoPlayPlugin) return;\n\n if (null != this.autoTimer) {\n clearInterval(this.autoTimer);\n this.flipSpeed = 'fast';\n this.$('.pause').hide();\n this.$('.play').show();\n this.autoTimer = null;\n }\n};\n"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.autoplay.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { EVENTS } from \"../BookReader/events\";\nimport { parseAnimationSpeed } from \"../BookReader/utils\";\nimport { BookReaderPlugin } from \"../BookReaderPlugin\";\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\nexport class AutoplayPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /**\n * @type {number | 'fast' | 'slow'}\n * How quickly the flip animation should run.\n **/\n flipSpeed: 1500,\n /** How long to pause on each page between flips */\n flipDelay: 5000,\n /** Allow controlling the autoflip/speed/delay from the url */\n urlParams: true,\n }\n\n timer = null;\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.br.bind(EVENTS.stop, () => this.stop());\n\n if (this.options.urlParams) {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('flipSpeed')) {\n this.options.flipSpeed = parseAnimationSpeed(urlParams.get('flipSpeed')) || this.options.flipSpeed;\n }\n if (urlParams.get('flipDelay')) {\n this.options.flipDelay = parseAnimationSpeed(urlParams.get('flipDelay')) || this.options.flipDelay;\n }\n if (urlParams.get('autoflip') === '1') {\n this.toggle();\n }\n }\n }\n\n /** @override */\n _bindNavigationHandlers() {\n if (!this.options.enabled) return;\n\n const jIcons = this.br.$('.BRicon');\n\n jIcons.filter('.play').on('click', () => {\n this.toggle();\n return false;\n });\n\n jIcons.filter('.pause').on('click', () => {\n this.toggle();\n return false;\n });\n }\n\n /**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\n toggle(overrides = null) {\n if (!this.options.enabled) return;\n\n Object.assign(this.options, overrides);\n this.br.trigger(EVENTS.stop);\n\n let bComingFrom1up = false;\n if (this.br.constMode2up != this.br.mode) {\n bComingFrom1up = true;\n this.br.switchMode(this.br.constMode2up);\n }\n\n if (null == this.timer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.br.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n\n this.br.$('.play').hide();\n this.br.$('.pause').show();\n this.timer = setInterval(() => {\n if (this.br.animating) return;\n\n if (Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR) >= this.br.book.getNumLeafs() - 1) {\n this.br.prev({ triggerStop: false, flipSpeed: this.options.flipSpeed }); // $$$ really what we want?\n } else {\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n }, parseAnimationSpeed(this.options.flipDelay));\n } else {\n this.stop();\n }\n }\n\n /**\n * Stop autoplay mode, allowing animations to finish\n */\n stop() {\n if (!this.options.enabled) return;\n\n if (null != this.timer) {\n clearInterval(this.timer);\n this.br.$('.pause').hide();\n this.br.$('.play').show();\n this.timer = null;\n }\n }\n}\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\nBookReader?.registerPlugin('autoplay', AutoplayPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$navBar","AutoplayPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","flipSpeed","flipDelay","urlParams","_inherits","_this2","bind","EVENTS","stop","URLSearchParams","window","location","search","get","parseAnimationSpeed","toggle","_this3","jIcons","$","filter","on","_this4","overrides","undefined","trigger","bComingFrom1up","constMode2up","mode","switchMode","timer","pageProgression","next","triggerStop","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","book","getNumLeafs","prev","clearInterval","BookReader","registerPlugin"],"sourceRoot":""}