@internetarchive/bookreader 5.0.0-11-multiple-files → 5.0.0-110
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.
- package/BookReader/474.js +2 -0
- package/BookReader/474.js.map +1 -0
- package/BookReader/BookReader.css +616 -1467
- package/BookReader/BookReader.js +2 -21564
- package/BookReader/BookReader.js.LICENSE.txt +20 -20
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/bergamot-translator-worker.js +2966 -0
- package/BookReader/bergamot-translator-worker.wasm +0 -0
- package/BookReader/hypothesis/LICENSE +50 -0
- package/BookReader/hypothesis/README.md +55 -0
- package/BookReader/hypothesis/build/boot.js +1 -0
- package/BookReader/hypothesis/build/manifest.json +20 -0
- package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
- package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
- package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
- package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
- package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/highlights.css +2 -0
- package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
- package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
- package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
- package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
- package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
- package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
- package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
- package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
- package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
- package/BookReader/hypothesis/package.json +126 -0
- package/BookReader/ia-bookreader-bundle.js +1907 -0
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +19 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -0
- package/BookReader/icons/1up.svg +1 -12
- package/BookReader/icons/2up.svg +1 -15
- package/BookReader/icons/advance.svg +3 -26
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -0
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -17
- package/BookReader/icons/fullscreen_exit.svg +1 -17
- package/BookReader/icons/hamburger.svg +1 -15
- package/BookReader/icons/left-arrow.svg +1 -12
- package/BookReader/icons/magnify-minus.svg +1 -16
- package/BookReader/icons/magnify-plus.svg +1 -17
- package/BookReader/icons/magnify.svg +1 -15
- package/BookReader/icons/pause.svg +1 -23
- package/BookReader/icons/play.svg +1 -22
- package/BookReader/icons/playback-speed.svg +1 -34
- package/BookReader/icons/read-aloud.svg +1 -22
- package/BookReader/icons/review.svg +3 -22
- package/BookReader/icons/slider-toggle.svg +1 -0
- package/BookReader/icons/thumbnails.svg +1 -17
- package/BookReader/icons/voice.svg +1 -0
- package/BookReader/icons/volume-full.svg +1 -22
- package/BookReader/images/BRicons.svg +5 -94
- package/BookReader/images/books_graphic.svg +1 -177
- package/BookReader/images/hypothesis.ico +0 -0
- package/BookReader/images/icon_book.svg +1 -12
- package/BookReader/images/icon_bookmark.svg +1 -12
- package/BookReader/images/icon_experiment.svg +1 -0
- package/BookReader/images/icon_gear.svg +1 -14
- package/BookReader/images/icon_hamburger.svg +1 -20
- package/BookReader/images/icon_home.svg +1 -21
- package/BookReader/images/icon_info.svg +1 -11
- package/BookReader/images/icon_one_page.svg +1 -8
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -15
- package/BookReader/images/icon_search_button.svg +1 -8
- package/BookReader/images/icon_share.svg +1 -9
- package/BookReader/images/icon_skip-ahead.svg +1 -6
- package/BookReader/images/icon_skip-back.svg +2 -13
- package/BookReader/images/icon_speaker.svg +1 -18
- package/BookReader/images/icon_speaker_open.svg +1 -10
- package/BookReader/images/icon_thumbnails.svg +1 -12
- package/BookReader/images/icon_toc.svg +1 -5
- package/BookReader/images/icon_two_pages.svg +1 -9
- package/BookReader/images/marker_chap-off.svg +1 -11
- package/BookReader/images/marker_chap-on.svg +1 -11
- package/BookReader/images/marker_srch-on.svg +1 -11
- package/BookReader/images/translate.svg +1 -0
- package/BookReader/images/unviewable_page.png +0 -0
- package/BookReader/jquery-3.js +2 -0
- package/BookReader/jquery-3.js.LICENSE.txt +24 -0
- package/BookReader/plugins/plugin.archive_analytics.js +1 -172
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -165
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +19 -301
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.experiments.js +3 -0
- package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.experiments.js.map +1 -0
- package/BookReader/plugins/plugin.iframe.js +1 -74
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.iiif.js +2 -0
- package/BookReader/plugins/plugin.iiif.js.map +1 -0
- package/BookReader/plugins/plugin.resume.js +1 -368
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +2 -1420
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +2 -1080
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.translate.js +137 -0
- package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.translate.js.map +1 -0
- package/BookReader/plugins/plugin.tts.js +2 -9193
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -269
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/plugins/translator-worker.js +2 -0
- package/BookReader/plugins/translator-worker.js.map +1 -0
- package/BookReader/silence.mp3 +0 -0
- package/BookReader/translator-worker.js +475 -0
- package/BookReader/webcomponents-bundle.js +3 -0
- package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
- package/BookReader/webcomponents-bundle.js.map +1 -0
- package/README.md +14 -3
- package/jsconfig.json +19 -0
- package/package.json +92 -70
- package/src/BookReader/BookModel.js +92 -46
- package/src/BookReader/DragScrollable.js +233 -0
- package/src/BookReader/ImageCache.js +49 -16
- package/src/BookReader/Mode1Up.js +66 -356
- package/src/BookReader/Mode1UpLit.js +392 -0
- package/src/BookReader/Mode2Up.js +87 -1315
- package/src/BookReader/Mode2UpLit.js +788 -0
- package/src/BookReader/ModeAbstract.js +43 -0
- package/src/BookReader/ModeCoordinateSpace.js +29 -0
- package/src/BookReader/ModeSmoothZoom.js +312 -0
- package/src/BookReader/ModeThumb.js +30 -16
- package/src/BookReader/Navbar/Navbar.js +201 -76
- package/src/BookReader/PageContainer.js +120 -23
- package/src/BookReader/ReduceSet.js +3 -3
- package/src/BookReader/Toolbar/Toolbar.js +19 -41
- package/src/BookReader/events.js +3 -3
- package/src/BookReader/options.js +94 -17
- package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/src/BookReader/utils/ScrollClassAdder.js +31 -0
- package/src/BookReader/utils/SelectionObserver.js +45 -0
- package/src/BookReader/utils/classes.js +1 -1
- package/src/BookReader/utils.js +141 -13
- package/src/BookReader.js +711 -1241
- package/src/BookReaderPlugin.js +52 -0
- package/src/assets/icons/close-circle-dark.svg +1 -0
- package/src/assets/icons/magnify-minus.svg +3 -7
- package/src/assets/icons/magnify-plus.svg +3 -7
- package/src/assets/icons/slider-toggle.svg +1 -0
- package/src/assets/icons/voice.svg +1 -0
- package/src/assets/images/hypothesis.ico +0 -0
- package/src/assets/images/icon_experiment.svg +1 -0
- package/src/assets/images/translate.svg +1 -0
- package/src/assets/images/unviewable_page.png +0 -0
- package/src/assets/silence.mp3 +0 -0
- package/src/css/BookReader.scss +1 -17
- package/src/css/_BRBookmarks.scss +1 -1
- package/src/css/_BRComponent.scss +1 -1
- package/src/css/_BRicon.scss +8 -2
- package/src/css/_BRmain.scss +33 -27
- package/src/css/_BRnav.scss +74 -70
- package/src/css/_BRpages.scss +171 -42
- package/src/css/_BRsearch.scss +69 -235
- package/src/css/_BRtoolbar.scss +5 -5
- package/src/css/_TextSelection.scss +129 -24
- package/src/css/_colorbox.scss +2 -2
- package/src/css/_controls.scss +24 -7
- package/src/css/_icons.scss +14 -1
- package/src/{BookNavigator/assets → css}/button-base.js +10 -3
- package/src/css/icon_checkmark.js +9 -0
- package/src/css/sharedStyles.js +15 -0
- package/src/ia-bookreader/downloads/downloads-provider.js +81 -0
- package/src/{BookNavigator → ia-bookreader}/downloads/downloads.js +29 -25
- package/src/ia-bookreader/ia-bookreader.js +666 -0
- package/src/ia-bookreader/sharing.js +27 -0
- package/src/ia-bookreader/viewable-files.js +98 -0
- package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments-provider.js +17 -17
- package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments.js +75 -67
- package/src/{BookNavigator → plugins}/bookmarks/bookmark-button.js +4 -3
- package/src/{BookNavigator/assets → plugins/bookmarks}/bookmark-colors.js +1 -1
- package/src/{BookNavigator → plugins}/bookmarks/bookmark-edit.js +44 -32
- package/src/{BookNavigator → plugins}/bookmarks/bookmarks-list.js +48 -49
- package/src/{BookNavigator → plugins}/bookmarks/bookmarks-loginCTA.js +5 -10
- package/src/plugins/bookmarks/bookmarks-provider.js +63 -0
- package/src/{BookNavigator → plugins/bookmarks}/delete-modal-actions.js +1 -1
- package/src/{BookNavigator → plugins}/bookmarks/ia-bookmarks.js +117 -68
- package/src/plugins/plugin.archive_analytics.js +84 -78
- package/src/plugins/plugin.autoplay.js +99 -104
- package/src/plugins/plugin.chapters.js +310 -201
- package/src/plugins/plugin.experiments.js +321 -0
- package/src/plugins/plugin.iframe.js +1 -1
- package/src/plugins/plugin.iiif.js +141 -0
- package/src/plugins/plugin.resume.js +53 -50
- package/src/plugins/plugin.text_selection.js +522 -219
- package/src/plugins/plugin.vendor-fullscreen.js +7 -7
- package/src/plugins/search/plugin.search.js +380 -360
- package/src/{BookNavigator → plugins}/search/search-provider.js +94 -32
- package/src/{BookNavigator → plugins}/search/search-results.js +108 -90
- package/src/plugins/search/utils.js +50 -0
- package/src/plugins/search/view.js +79 -210
- package/src/plugins/translate/TranslationManager.js +164 -0
- package/src/plugins/translate/plugin.translate.js +512 -0
- package/src/plugins/tts/AbstractTTSEngine.js +78 -49
- package/src/plugins/tts/FestivalTTSEngine.js +21 -31
- package/src/plugins/tts/PageChunk.js +33 -21
- package/src/plugins/tts/PageChunkIterator.js +11 -17
- package/src/plugins/tts/WebTTSEngine.js +131 -91
- package/src/plugins/tts/plugin.tts.js +345 -350
- package/src/plugins/tts/utils.js +77 -49
- package/src/plugins/url/UrlPlugin.js +191 -0
- package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
- package/src/util/TextSelectionManager.js +282 -0
- package/src/util/browserSniffing.js +33 -1
- package/src/util/cache.js +20 -0
- package/src/util/docCookies.js +21 -2
- package/src/util/lit.js +15 -0
- package/src/util/strings.js +1 -0
- package/.babelrc +0 -12
- package/.dependabot/config.yml +0 -6
- package/.eslintrc.js +0 -49
- package/.gitattributes +0 -2
- package/.github/ISSUE_TEMPLATE/bug.md +0 -32
- package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
- package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
- package/.github/workflows/node.js.yml +0 -28
- package/.github/workflows/npm-publish.yml +0 -47
- package/.testcaferc.json +0 -5
- package/BookReader/bookreader-component-bundle.js +0 -14330
- package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
- package/BookReader/bookreader-component-bundle.js.map +0 -1
- package/BookReader/icons/sort-ascending.svg +0 -1
- package/BookReader/icons/sort-descending.svg +0 -1
- package/BookReader/jquery-1.10.1.js +0 -108
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
- package/BookReader/plugins/plugin.menu_toggle.js +0 -369
- package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
- package/BookReader/plugins/plugin.mobile_nav.js +0 -335
- package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
- package/BookReaderDemo/BookReaderDemo.css +0 -41
- package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
- package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
- package/BookReaderDemo/BookReaderJSSimple.js +0 -55
- package/BookReaderDemo/IIIFBookReader.js +0 -207
- package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
- package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
- package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
- package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
- package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
- package/BookReaderDemo/demo-advanced.html +0 -33
- package/BookReaderDemo/demo-autoplay.html +0 -38
- package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
- package/BookReaderDemo/demo-embed.html +0 -26
- package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
- package/BookReaderDemo/demo-fullscreen.html +0 -33
- package/BookReaderDemo/demo-iiif.html +0 -34
- package/BookReaderDemo/demo-iiif.js +0 -26
- package/BookReaderDemo/demo-internetarchive.html +0 -74
- package/BookReaderDemo/demo-multiple.html +0 -43
- package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
- package/BookReaderDemo/demo-preview-pages.html +0 -1092
- package/BookReaderDemo/demo-simple.html +0 -34
- package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
- package/BookReaderDemo/immersion-1up.html +0 -64
- package/BookReaderDemo/immersion-mode.html +0 -35
- package/BookReaderDemo/toggle_controls.html +0 -53
- package/BookReaderDemo/view_mode.html +0 -39
- package/BookReaderDemo/viewmode-cycle.html +0 -41
- package/CHANGELOG.md +0 -476
- package/CONTRIBUTING.md +0 -7
- package/codecov.yml +0 -17
- package/index.html +0 -31
- package/karma.conf.js +0 -23
- package/screenshot.png +0 -0
- package/scripts/postversion.js +0 -10
- package/scripts/preversion.js +0 -14
- package/scripts/version.js +0 -26
- package/src/BookNavigator/BookModel.js +0 -14
- package/src/BookNavigator/BookNavigator.js +0 -451
- package/src/BookNavigator/assets/book-loader.js +0 -27
- package/src/BookNavigator/assets/icon_checkmark.js +0 -6
- package/src/BookNavigator/assets/icon_close.js +0 -3
- package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
- package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +0 -53
- package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
- package/src/BookNavigator/downloads/downloads-provider.js +0 -66
- package/src/BookNavigator/search/a-search-result.js +0 -55
- package/src/BookNavigator/volumes/volumes-provider.js +0 -75
- package/src/BookNavigator/volumes/volumes.js +0 -161
- package/src/BookReader/DebugConsole.js +0 -54
- package/src/BookReaderComponent/BookReaderComponent.js +0 -112
- package/src/ItemNavigator/ItemNavigator.js +0 -372
- package/src/ItemNavigator/providers/sharing.js +0 -29
- package/src/assets/icons/sort-ascending.svg +0 -1
- package/src/assets/icons/sort-descending.svg +0 -1
- package/src/css/_MobileNav.scss +0 -194
- package/src/dragscrollable-br.js +0 -261
- package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
- package/src/plugins/plugin.mobile_nav.js +0 -287
- package/tests/BookReader/BookModel.test.js +0 -312
- package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
- package/tests/BookReader/DebugConsole.test.js +0 -25
- package/tests/BookReader/ImageCache.test.js +0 -150
- package/tests/BookReader/Mode1Up.test.js +0 -164
- package/tests/BookReader/Mode2Up.test.js +0 -247
- package/tests/BookReader/Navbar/Navbar.test.js +0 -169
- package/tests/BookReader/PageContainer.test.js +0 -115
- package/tests/BookReader/ReduceSet.test.js +0 -38
- package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
- package/tests/BookReader/utils/classes.test.js +0 -88
- package/tests/BookReader/utils.test.js +0 -109
- package/tests/BookReader.options.test.js +0 -39
- package/tests/BookReader.test.js +0 -301
- package/tests/e2e/README.md +0 -75
- package/tests/e2e/autoplay.test.js +0 -13
- package/tests/e2e/base.test.js +0 -35
- package/tests/e2e/helpers/base.js +0 -258
- package/tests/e2e/helpers/debug.js +0 -13
- package/tests/e2e/helpers/desktopSearch.js +0 -72
- package/tests/e2e/helpers/mobileSearch.js +0 -85
- package/tests/e2e/helpers/mockSearch.js +0 -93
- package/tests/e2e/helpers/rightToLeft.js +0 -29
- package/tests/e2e/ia-production/ia-prod-base.js +0 -17
- package/tests/e2e/models/BookReader.js +0 -11
- package/tests/e2e/models/Navigation.js +0 -56
- package/tests/e2e/rightToLeft.test.js +0 -20
- package/tests/e2e/viewmode.test.js +0 -37
- package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
- package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
- package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
- package/tests/karma/BookNavigator/search-results.test.js +0 -240
- package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
- package/tests/karma/BookNavigator/volumes.test.js +0 -133
- package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
- package/tests/plugins/plugin.archive_analytics.test.js +0 -23
- package/tests/plugins/plugin.autoplay.test.js +0 -52
- package/tests/plugins/plugin.chapters.test.js +0 -130
- package/tests/plugins/plugin.iframe.test.js +0 -42
- package/tests/plugins/plugin.mobile_nav.test.js +0 -66
- package/tests/plugins/plugin.resume.test.js +0 -98
- package/tests/plugins/plugin.text_selection.test.js +0 -203
- package/tests/plugins/plugin.url.test.js +0 -129
- package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
- package/tests/plugins/search/plugin.search.test.js +0 -166
- package/tests/plugins/search/plugin.search.view.test.js +0 -106
- package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
- package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
- package/tests/plugins/tts/PageChunk.test.js +0 -57
- package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
- package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
- package/tests/plugins/tts/utils.test.js +0 -133
- package/tests/util/browserSniffing.test.js +0 -56
- package/tests/util/docCookies.test.js +0 -15
- package/tests/util/strings.test.js +0 -63
- package/tests/utils.js +0 -42
- package/webpack.config.js +0 -86
|
@@ -1,305 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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],{706:function(e,t,r){var n=r(350).PROPER,o=r(9039),i=r(7452);e.exports=function(e){return o(function(){return!!i[e]()||"
"!=="
"[e]()||n&&i[e].name!==e})}},2762:function(e,t,r){var n=r(6518),o=r(3802).trim;n({target:"String",proto:!0,forced:r(706)("trim")},{trim:function(){return o(this)}})},4535:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(6681),o=function(e){return null!=e?e:n.s6}},1041:function(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(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,i(n.key),n)}}function i(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{S:function(){return a}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var a=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=t,this.options},(t=[{key:"setup",value:function(e){this.options=Object.assign({},this.options,e)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(e){}},{key:"_configureToolbar",value:function(e){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(e){}}])&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},2117:function(e,t,r){r(2675),r(9463),r(2259),r(8125),r(113),r(3418),r(4782),r(4554),r(2010),r(4731),r(479),r(2811),r(3851),r(875),r(3362),r(825),r(888),r(7495),r(8781),r(5700),r(8706),r(2008),r(8980),r(3792),r(8598),r(2062),r(4490),r(9572),r(8130),r(9085),r(6099),r(8940),r(7764),r(3500),r(2953),r(8408);var n=r(420),o=r(9696),i=r(4535),a=r(8900),c=n.qy`
|
|
3
|
+
<svg
|
|
4
|
+
viewBox="0 0 24 24"
|
|
5
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
6
|
+
>
|
|
7
|
+
<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>
|
|
8
|
+
</svg>
|
|
9
|
+
`;class s extends n.WF{static get styles(){return n.AH`
|
|
10
|
+
:host {
|
|
11
|
+
width: var(--iconWidth, 'auto');
|
|
12
|
+
height: var(--iconHeight, 'auto');
|
|
123
13
|
}
|
|
124
14
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
/***/ })
|
|
15
|
+
.fill-color {
|
|
16
|
+
fill: var(--iconFillColor);
|
|
17
|
+
}
|
|
296
18
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
]);
|
|
19
|
+
.stroke-color {
|
|
20
|
+
stroke: var(--iconStrokeColor);
|
|
21
|
+
}
|
|
22
|
+
`}render(){return c}}customElements.define("ia-icon-toc",s);var u,l,f,p,d,h,y=r(1041),v=r(9073),m=r(1669);function b(e){return b="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},b(e)}function g(){g=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(!E(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 u=s.extras;if(u){for(var l=0;l<u.length;l++)this.addElementPlacement(u[l],t);r.push.apply(r,u)}}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)||j(t)||C(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=U(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:x(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=x(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 w(e){var t,r=U(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 k(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function E(e){return e.decorators&&e.decorators.length}function P(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function x(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 C(e,t){if(e){if("string"==typeof e)return O(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}function j(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function _(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var s=n&&n.prototype instanceof c?n:c,u=Object.create(s.prototype);return T(u,"_invoke",function(r,n,o){var i,c,s,u=0,l=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,c=0,s=e,p.n=r,a}};function d(r,n){for(c=r,s=n,t=0;!f&&u&&!o&&t<l.length;t++){var o,i=l[t],d=p.p,h=i[2];r>3?(o=h===n)&&(s=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,p.v=n,p.n=i[1]):d<h&&(o=r<3||i[0]>n||n>h)&&(i[4]=r,i[5]=n,p.n=h,c=0))}if(o||r>1)return a;throw f=!0,n}return function(o,l,h){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&d(l,h),c=l,s=h;(t=c<2?e:s)||!f;){i||(c?c<3?(c>1&&(p.n=-1),d(c,s)):p.n=s:p.v=s);try{if(u=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(f=p.n<0)?s:r.call(n,p))!==a)break}catch(t){i=e,c=1,s=t}finally{u=1}}return{value:t,done:f}}}(r,o,i),!0),u}var a={};function c(){}function s(){}function u(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(T(t={},n,function(){return this}),t),f=u.prototype=c.prototype=Object.create(l);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,T(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return s.prototype=u,T(f,"constructor",u),T(u,"constructor",s),s.displayName="GeneratorFunction",T(u,o,"GeneratorFunction"),T(f),T(f,o,"Generator"),T(f,n,function(){return this}),T(f,"toString",function(){return"[object Generator]"}),(S=function(){return{w:i,m:p}})()}function T(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}T=function(e,t,r,n){function i(t,r){T(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},T(e,t,r,n)}function I(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 A(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){I(i,n,o,a,c,"next",e)}function c(e){I(i,n,o,a,c,"throw",e)}a(void 0)})}}function R(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(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,U(n.key),n)}}function B(e,t,r){return t&&D(e.prototype,t),r&&D(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function L(e,t,r){return t=M(t),function(e,t){if(t&&("object"==b(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,z()?Reflect.construct(t,r||[],M(e).constructor):t.apply(e,r))}function z(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(z=function(){return!!e})()}function F(e,t,r,n){var o=H(M(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof o?function(e){return o.apply(r,e)}:o}function H(){return H="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=M(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}},H.apply(null,arguments)}function M(e){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},M(e)}function q(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&&G(e,t)}function G(e,t){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},G(e,t)}function N(e,t,r){return(t=U(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function U(e){var t=function(e){if("object"!=b(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=b(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==b(t)?t:t+""}var W,$,J,Z,V,X,K,Q=window.BookReader,Y=function(e){function t(){var e;R(this,t);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return N(e=L(this,t,[].concat(n)),"options",{enabled:!0,openLibraryHost:"https://openlibrary.org",openLibraryId:"",internetArchiveId:"",olHost:"https://openlibrary.org",bookId:"{{bookId}}"}),N(e,"_tocEntries",void 0),N(e,"_chaptersPanel",void 0),e}return q(t,e),B(t,[{key:"setup",value:function(e){F(t,"setup",this,3)([e]),this.options.internetArchiveId=this.options.internetArchiveId||this.options.bookId,this.options.openLibraryHost=this.options.openLibraryHost||this.options.olHost}},{key:"init",value:(o=A(S().m(function e(){var t,r,n,o,i=this;return S().w(function(e){for(;;)switch(e.n){case 0:if(this.options.enabled&&"embed"!==this.br.ui){e.n=1;break}return e.a(2);case 1:if(r=null,null===(t=this.br.options.table_of_contents)||void 0===t||!t.length){e.n=2;break}r=this.br.options.table_of_contents,e.n=4;break;case 2:return e.n=3,this.getOpenLibraryRecord();case 3:null!=(o=e.v)&&null!==(n=o.table_of_contents)&&void 0!==n&&n.length&&(r=o.table_of_contents);case 4:r&&(this._tocEntries=r.map(function(e){return Object.assign({},e,{pageIndex:"number"==typeof e.leaf?i.br.book.leafNumToIndex(e.leaf):e.pagenum?i.br.book.getPageIndex(e.pagenum):void 0})}),this._render(),this.br.bind(Q.eventNames.pageChanged,function(){return i._updateCurrent()}));case 5:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.chapters={id:"chapters",icon:(0,n.qy)(u||(u=_(['<ia-icon-toc aria-hidden="true" role="presentation" style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon-toc>']))),label:"Table of Contents",component:(0,n.qy)(l||(l=_(['<br-chapters-panel\n .contents="','"\n .jumpToPage="','"\n @connected="','"\n />'])),this._tocEntries,function(t){e._updateCurrent(t),e.br.jumpToIndex(t,{ariaLive:!0})},function(t){e._chaptersPanel=t.target,e._updateCurrent()})},this.br.shell.addMenuShortcut("chapters"),this.br.shell.updateMenuContents(),this._tocEntries.forEach(function(t,r){return e._renderMarker(t,r)})}},{key:"_renderMarker",value: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=Q.util.cssPercentage(e.pageIndex,this.br.book.getNumLeafs()-1);m("<div></div>").append(m("<div />").text(n).append(m('<div class="BRchapterPage" />').text(this.br.book.getPageName(e.pageIndex)))).addClass("BRchapter").css({left:o}).appendTo(this.br.$(".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.br.$(".BRsearch,.BRchapter").removeClass("front"),m(e.target).addClass("front")}).on("mouseleave",function(e){return m(e.target).removeClass("front")}).on("click",function(){r._updateCurrent(e.pageIndex),r.br.jumpToIndex(e.pageIndex,{ariaLive:!0})}),this.br.$(".BRchapter, .BRsearch").each(function(e,t){var r=m(t);r.on("mouseenter",function(){return r.addClass("front")}).on("mouseleave",function(){return r.removeClass("front")})})}}},{key:"getOpenLibraryRecord",value:(r=A(S().m(function e(){var t,r,n,o,i,a;return S().w(function(e){for(;;)switch(e.n){case 0:if(t=(0,v.g)(this.options.openLibraryHost,this.br.options.vars),!this.options.openLibraryId){e.n=2;break}return r=(0,v.g)(this.options.openLibraryId,this.br.options.vars),e.n=1,m.ajax({url:"".concat(t,"/books/").concat(r,".json")});case 1:return e.a(2,e.v);case 2:if(!this.options.internetArchiveId){e.n=6;break}return o=(0,v.g)(this.options.internetArchiveId,this.br.options.vars),i="".concat(t,"/query.json?type=/type/edition&*=&"),e.n=3,m.ajax({url:i+new URLSearchParams({ocaid:o,limit:"1"})});case 3:if((a=e.v)&&a.length){e.n=5;break}return e.n=4,m.ajax({url:i+new URLSearchParams({source_records:"ia:".concat(o),limit:"1"})});case 4:a=e.v;case 5:return e.a(2,null===(n=a)||void 0===n?void 0:n[0]);case 6:return e.a(2,null)}},e,this)})),function(){return r.apply(this,arguments)})},{key:"_updateCurrent",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2==this.br.mode?Math.max.apply(Math,function(e){if(Array.isArray(e))return O(e)}(e=this.br.displayedIndices)||j(e)||C(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.br.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)}}]);var r,o}(y.S);null==Q||Q.registerPlugin("chapters",Y),W=[(0,o.EM)("br-chapters-panel")],$=n.WF,V=g(),J=function(e){V.initializeInstanceElements(e,K.elements)},X={F:Z=function(e){function t(e){var r;return R(this,t),r=L(this,t),J(r),r.contents=e,r}return q(t,e),B(t)}($),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=_(["\n <ol>\n ","\n </ol>\n "])),this.contents.map(function(t){return e.renderTOCEntry(t)}))}},{kind:"method",key:"renderTOCEntry",value:function(e){var t=this,r=[e.label,e.title].filter(function(e){return e}).join(" "),o=null!=e.pageIndex;return(0,n.qy)(p||(p=_(['\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>"])),o?"clickable":"",e==this.currentChapter?"current":"",(0,a.W)({marginLeft:10*(e.level-1)+"px"}),(0,i.J)(o?"BRTOCPanel|GoToChapter":void 0),function(){return t.jumpToPage(e.pageIndex)},r,e.pagenum?(0,n.qy)(d||(d=_(['\n <br />\n <span class="BRTOCElementPage">Page ',"</span>\n "])),e.pagenum):n.s6)}},{kind:"method",key:"connectedCallback",value:function(){F(Z,"connectedCallback",this,3)([]),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)(h||(h=_(["\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 }"])))}}]},K=V.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(P(i.descriptor)||P(o.descriptor)){if(E(i)||E(o))throw new ReferenceError("Duplicated methods ("+i.key+") can't be decorated.");o.descriptor=i.descriptor}else{if(E(i)){if(E(o))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+i.key+").");o.decorators=i.decorators}k(i,o)}else t.push(i)}return t}(X.d.map(w)),W),V.initializeClassElements(X.F,K.elements),V.runClassFinishers(X.F,K.finishers)},9073:function(e,t,r){function n(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 o(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;return null==e?void 0:e.replace(/\{\{([^}]*?)\}\}/g,function(e,i){if(!i)return e;var a,c=function(e){if(Array.isArray(e))return e}(a=i.split("|").map(function(e){return e.trim()}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return n(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)?n(e,t):void 0}}(a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),s=c[0],u=n(c).slice(1);if(!(s in r)&&!(s in t))return e;var l=s in r?r[s]:s in t?t[s]:null;return u.map(function(e){return o[e]}).reduce(function(e,t){return t(e)},l&&l.toString())})}r.d(t,{g:function(){return o}}),r(2675),r(9463),r(2259),r(3418),r(3792),r(2062),r(2712),r(4782),r(2010),r(6099),r(7495),r(8781),r(7764),r(5440),r(2762),r(2953);var i={urlencode:encodeURIComponent}}},function(e){e(e.s=2117)}]);
|
|
305
23
|
//# sourceMappingURL=plugin.chapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/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/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/../src/directives/if-defined.ts","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/index.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/icon-toc.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js","webpack://@internetarchive/bookreader/./src/util/strings.js"],"sourcesContent":["'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","/**\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","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","import { html } from 'lit';\n\nexport default html`\n<svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g class=\"fill-color\" fill-rule=\"evenodd\"><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"7\"/><rect height=\"3\" rx=\"1.5\" width=\"4\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"7\"/></g>\n</svg>\n`;\n","import icon from './index.js';\nimport { css, LitElement } from 'lit';\n\nclass IAIconToc extends LitElement {\n static get styles() {\n return css`\n :host {\n width: var(--iconWidth, 'auto');\n height: var(--iconHeight, 'auto');\n }\n\n .fill-color {\n fill: var(--iconFillColor);\n }\n\n .stroke-color {\n stroke: var(--iconStrokeColor);\n }\n `;\n }\n\n render() {\n return icon;\n }\n}\n\ncustomElements.define('ia-icon-toc', IAIconToc);\n\nexport default IAIconToc;\n","// @ts-check\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport '@internetarchive/icon-toc/icon-toc.js';\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\nimport { applyVariables } from \"../util/strings.js\";\n/** @typedef {import('@/src/BookReader/BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('@/src/BookReader/BookModel.js').PageString} PageString */\n/** @typedef {import('@/src/BookReader/BookModel.js').LeafNum} LeafNum */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\nexport class ChaptersPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /**\n * The Open Library host to fetch/query Open Library.\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryHost: 'https://openlibrary.org',\n\n /**\n * The Open Library edition to fetch the table of contents from.\n * E.g. 'OL12345M'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryId: '',\n\n /**\n * The Internet Archive identifier to fetch the Open Library table\n * of contents from.\n * E.g. 'goody'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n internetArchiveId: '',\n\n /**\n * @deprecated\n * Old name for openLibraryHost\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n olHost: 'https://openlibrary.org',\n\n /**\n * @deprecated\n * Old name for internetArchiveId\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n bookId: '{{bookId}}',\n }\n\n /** @type {TocEntry[]} */\n _tocEntries;\n\n /** @type {BRChaptersPanel} */\n _chaptersPanel;\n\n /** @override */\n setup(options) {\n super.setup(options);\n this.options.internetArchiveId = this.options.internetArchiveId || this.options.bookId;\n this.options.openLibraryHost = this.options.openLibraryHost || this.options.olHost;\n }\n\n /** @override Extend to call Open Library for TOC */\n async init() {\n if (!this.options.enabled || this.br.ui === 'embed') {\n return;\n }\n\n let rawTableOfContents = null;\n // Prefer explicit TOC if specified\n if (this.br.options.table_of_contents?.length) {\n rawTableOfContents = this.br.options.table_of_contents;\n } else {\n // Otherwise fetch from OL\n const olEdition = await this.getOpenLibraryRecord();\n if (olEdition?.table_of_contents?.length) {\n rawTableOfContents = olEdition.table_of_contents;\n }\n }\n\n if (rawTableOfContents) {\n this._tocEntries = rawTableOfContents\n .map(rawTOCEntry => (Object.assign({}, rawTOCEntry, {\n pageIndex: (\n typeof(rawTOCEntry.leaf) == 'number' ? this.br.book.leafNumToIndex(rawTOCEntry.leaf) :\n rawTOCEntry.pagenum ? this.br.book.getPageIndex(rawTOCEntry.pagenum) :\n undefined\n ),\n })));\n this._render();\n this.br.bind(BookReader.eventNames.pageChanged, () => this._updateCurrent());\n }\n }\n\n /**\n * Update the table of contents based on array of TOC entries.\n */\n _render() {\n this.br.shell.menuProviders['chapters'] = {\n id: 'chapters',\n icon: html`<ia-icon-toc aria-hidden=\"true\" role=\"presentation\" style=\"width: var(--iconWidth); height: var(--iconHeight);\"></ia-icon-toc>`,\n label: 'Table of Contents',\n component: html`<br-chapters-panel\n .contents=\"${this._tocEntries}\"\n .jumpToPage=\"${(pageIndex) => {\n this._updateCurrent(pageIndex);\n this.br.jumpToIndex(pageIndex, { ariaLive: true });\n }}\"\n @connected=\"${(e) => {\n this._chaptersPanel = e.target;\n this._updateCurrent();\n }}\"\n />`,\n };\n this.br.shell.addMenuShortcut('chapters');\n this.br.shell.updateMenuContents();\n this._tocEntries.forEach((tocEntry, i) => this._renderMarker(tocEntry, i));\n }\n\n /**\n * @param {TocEntry} tocEntry\n * @param {number} entryIndex\n */\n _renderMarker(tocEntry, entryIndex) {\n if (tocEntry.pageIndex == undefined) return;\n\n //creates a string with non-void tocEntry.label and tocEntry.title\n const chapterStr = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ') || `Chapter ${entryIndex + 1}`;\n\n const percentThrough = BookReader.util.cssPercentage(tocEntry.pageIndex, this.br.book.getNumLeafs() - 1);\n $(`<div></div>`)\n .append(\n $('<div />')\n .text(chapterStr)\n .append(\n $('<div class=\"BRchapterPage\" />')\n .text(this.br.book.getPageName(tocEntry.pageIndex)),\n ),\n )\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", event => {\n // remove hover effect from other markers then turn on just for this\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('div');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n this.br.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', () => {\n this._updateCurrent(tocEntry.pageIndex);\n this.br.jumpToIndex(tocEntry.pageIndex, { ariaLive: true });\n });\n\n this.br.$('.BRchapter, .BRsearch').each((i, el) => {\n const $el = $(el);\n $el\n .on(\"mouseenter\", () => $el.addClass('front'))\n .on(\"mouseleave\", () => $el.removeClass('front'));\n });\n }\n\n /**\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\n async getOpenLibraryRecord() {\n const olHost = applyVariables(this.options.openLibraryHost, this.br.options.vars);\n\n if (this.options.openLibraryId) {\n const openLibraryId = applyVariables(this.options.openLibraryId, this.br.options.vars);\n return await $.ajax({ url: `${olHost}/books/${openLibraryId}.json` });\n }\n\n if (this.options.internetArchiveId) {\n const ocaid = applyVariables(this.options.internetArchiveId, this.br.options.vars);\n\n // Try looking up by ocaid first, then by source_record\n const baseQueryUrl = `${olHost}/query.json?type=/type/edition&*=&`;\n\n let data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ ocaid, limit: '1' }),\n });\n\n if (!data || !data.length) {\n // try source_records\n data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ source_records: `ia:${ocaid}`, limit: '1' }),\n });\n }\n\n return data?.[0];\n }\n\n return null;\n }\n\n /**\n * @private\n * Highlights the current chapter based on current page\n * @param {PageIndex} curIndex\n */\n _updateCurrent(\n curIndex = (this.br.mode == 2 ? Math.max(...this.br.displayedIndices) : this.br.firstIndex),\n ) {\n const tocEntriesIndexed = this._tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[\n // subtract one so that 2up shows the right label\n tocEntriesIndexed.findIndex((chapter) => chapter.pageIndex <= curIndex)\n ];\n if (this._chaptersPanel) {\n this._chaptersPanel.currentChapter = currChapter;\n }\n }\n}\nBookReader?.registerPlugin('chapters', ChaptersPlugin);\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined by Open Library, with some extra values for internal use\n * @property {number} [level]\n * @property {string} [label]\n * @property {string} [title]\n * @property {PageString} [pagenum]\n * @property {LeafNum} [leaf]\n * @property {number} [pageIndex] - Added\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n@customElement('br-chapters-panel')\nexport class BRChaptersPanel extends LitElement {\n /** @type {TocEntry[]} */\n @property({ type: Array })\n contents = [];\n\n /** @type {TocEntry?} */\n @property({ type: Object })\n currentChapter = {};\n\n /** @type {(pageIndex: PageIndex) => void} */\n jumpToPage = () => {};\n\n /**\n * @param {TocEntry[]} contents\n */\n constructor(contents) {\n super();\n this.contents = contents;\n }\n\n render() {\n return html`\n <ol>\n ${this.contents.map(tocEntry => this.renderTOCEntry(tocEntry))}\n </ol>\n `;\n }\n\n /**\n * @param {TocEntry} tocEntry\n */\n renderTOCEntry(tocEntry) {\n const chapterTitle = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ');\n const clickable = tocEntry.pageIndex != undefined;\n // note the click-tracking won't work...\n return html`\n <li\n class=\"\n BRtable-contents-el\n ${clickable ? 'clickable' : ''}\n ${tocEntry == this.currentChapter ? 'current' : ''}\n \"\n style=\"${styleMap({marginLeft: (tocEntry.level - 1) * 10 + 'px'})}\"\n data-event-click-tracking=\"${ifDefined(clickable ? \"BRTOCPanel|GoToChapter\" : undefined)}\"\n @click=\"${() => this.jumpToPage(tocEntry.pageIndex)}\"\n >\n ${chapterTitle}\n ${tocEntry.pagenum ? html`\n <br />\n <span class=\"BRTOCElementPage\">Page ${tocEntry.pagenum}</span>\n ` : nothing}\n </li>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n\n updated(changedProperties) {\n if (changedProperties.has('currentChapter')) {\n this.shadowRoot.querySelector('li.current')?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n\n static get styles() {\n return css`\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }`;\n }\n}\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n"],"names":["PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","name","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","this","l","t","BookReaderPlugin","br","_classCallCheck","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","IAIconToc","styles","render","customElements","define","e","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","TypeError","call","done","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_callSuper","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_superPropGet","_get","get","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","_inherits","_setPrototypeOf","_defineProperty","toPrimitive","String","_toPrimitive","_initialize","BRChaptersPanel","BookReader","window","ChaptersPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","concat","enabled","openLibraryHost","openLibraryId","internetArchiveId","olHost","bookId","_init","_callee","_this$br$options$tabl","rawTableOfContents","_olEdition$table_of_c","olEdition","_this2","_context","ui","table_of_contents","getOpenLibraryRecord","_tocEntries","map","rawTOCEntry","pageIndex","leaf","book","leafNumToIndex","pagenum","getPageIndex","undefined","_render","eventNames","pageChanged","_updateCurrent","_this3","shell","menuProviders","id","icon","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","jumpToIndex","ariaLive","_chaptersPanel","addMenuShortcut","updateMenuContents","forEach","tocEntry","_renderMarker","entryIndex","_this4","chapterStr","title","filter","x","join","percentThrough","util","cssPercentage","getNumLeafs","append","text","getPageName","addClass","css","left","appendTo","on","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","style","setProperty","removeClass","each","el","$el","_getOpenLibraryRecord","_callee2","_data","ocaid","baseQueryUrl","data","_context2","applyVariables","vars","ajax","url","URLSearchParams","limit","source_records","curIndex","mode","Math","max","displayedIndices","firstIndex","tocEntriesIndexed","reverse","currChapter","findIndex","chapter","currentChapter","registerPlugin","customElement","LitElement","F","_LitElement2","contents","_this5","kind","decorators","property","type","_this6","_templateObject3","renderTOCEntry","_this7","chapterTitle","clickable","_templateObject4","styleMap","marginLeft","level","ifDefined","jumpToPage","_templateObject5","nothing","dispatchEvent","CustomEvent","changedProperties","_this$shadowRoot$quer","has","shadowRoot","scrollIntoView","block","behavior","static","_templateObject6","template","overrides","possibleFilters","APPLY_FILTERS","replace","$0","$1","_expression$split$map2","split","varName","filterNames","_arrayLikeToArray","slice","reduce","acc","cur","toString","urlencode","encodeURIComponent"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see plugin.experiments.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[830],{3921:function(e,t,n){var r=n(6518),i=n(2652),o=n(4659);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return i(e,function(e,n){o(t,e,n)},{AS_ENTRIES:!0}),t}})},1041:function(e,t,n){function r(e){return r="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},r(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==r(t)?t:t+""}n.d(t,{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 e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=t,this.options},(t=[{key:"setup",value:function(e){this.options=Object.assign({},this.options,e)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(e){}},{key:"_configureToolbar",value:function(e){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(e){}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},6732:function(e,t,n){n(2675),n(9463),n(2259),n(5700),n(8125),n(8706),n(2008),n(113),n(3418),n(4423),n(3792),n(2062),n(4782),n(4554),n(739),n(9572),n(2010),n(4731),n(479),n(8130),n(9085),n(2811),n(3921),n(3851),n(875),n(9432),n(6099),n(3362),n(825),n(888),n(7495),n(8781),n(1699),n(7764),n(5440),n(3500),n(2953);var r,i,o,a,s,c,l,u=n(420),f=n(1041),p=n(9696),d=n(8004);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function y(e,t,n,r){var i=m();if(r)for(var o=0;o<r.length;o++)i=r[o](i);var a=t(function(e){i.initializeInstanceElements(e,s.elements)},n),s=i.decorateClass(function(e){for(var t=[],n=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},r=0;r<e.length;r++){var i,o=e[r];if("method"===o.kind&&(i=t.find(n)))if(w(o.descriptor)||w(i.descriptor)){if(g(o)||g(i))throw new ReferenceError("Duplicated methods ("+o.key+") can't be decorated.");i.descriptor=o.descriptor}else{if(g(o)){if(g(i))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}b(o,i)}else t.push(o)}return t}(a.d.map(v)),e);return i.initializeClassElements(a.F,s.elements),i.runClassFinishers(a.F,s.finishers)}function m(){m=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(n){t.forEach(function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach(function(r){t.forEach(function(t){var i=t.placement;if(t.kind===r&&("static"===i||"prototype"===i)){var o="static"===i?e:n;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var r=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===r?void 0:r.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],r=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!g(e))return n.push(e);var t=this.decorateElement(e,i);n.push(t.element),n.push.apply(n,t.extras),r.push.apply(r,t.finishers)},this),!t)return{elements:n,finishers:r};var o=this.decorateConstructor(n,t);return r.push.apply(r,o.finishers),o.finishers=r,o},addElementPlacement:function(e,t,n){var r=t[e.placement];if(!n&&-1!==r.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");r.push(e.key)},decorateElement:function(e,t){for(var n=[],r=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&r.push(c.finisher);var l=c.extras;if(l){for(var u=0;u<l.length;u++)this.addElementPlacement(l[u],t);n.push.apply(n,l)}}return{element:e,finishers:r,extras:n}},decorateConstructor:function(e,t){for(var n=[],r=t.length-1;r>=0;r--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[r])(i)||i);if(void 0!==o.finisher&&n.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a<e.length-1;a++)for(var s=a+1;s<e.length;s++)if(e[a].key===e[s].key&&e[a].placement===e[s].placement)throw new TypeError("Duplicated element ("+e[a].key+")")}}return{elements:e,finishers:n}},fromElementDescriptor:function(e){var t={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(t.initializer=e.initializer),t},toElementDescriptors:function(e){if(void 0!==e)return(t=e,function(e){if(Array.isArray(e))return e}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||O(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 n=N(e.key),r=e.placement+"";if("static"!==r&&"prototype"!==r&&"own"!==r)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 "'+r+'"');var i=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var o={kind:t,key:n,placement:r,descriptor:Object.assign({},i)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(i,"get","The property descriptor of a field descriptor"),this.disallowProperty(i,"set","The property descriptor of a field descriptor"),this.disallowProperty(i,"value","The property descriptor of a field descriptor"),o.initializer=e.initializer),o},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:k(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var t={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),t},toClassDescriptor:function(e){var t=e.kind+"";if("class"!==t)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+t+'"');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var n=k(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:n}},runClassFinishers:function(e,t){for(var n=0;n<t.length;n++){var r=(0,t[n])(e);if(void 0!==r){if("function"!=typeof r)throw new TypeError("Finishers must return a constructor.");e=r}}return e},disallowProperty:function(e,t,n){if(void 0!==e[t])throw new TypeError(n+" can't have a ."+t+" property.")}};return e}function v(e){var t,n=N(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 r={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(r.decorators=e.decorators),"field"===e.kind&&(r.initializer=e.value),r}function b(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function g(e){return e.decorators&&e.decorators.length}function w(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function k(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function E(e,t,n,r){var i=x(T(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof i?function(e){return i.apply(n,e)}:i}function x(){return x="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=T(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},x.apply(null,arguments)}function P(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=O(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function O(e,t){if(e){if("string"==typeof e)return j(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,t):void 0}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function _(e,t,n){return t=T(t),function(e,t){if(t&&("object"==h(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,A()?Reflect.construct(t,n||[],T(e).constructor):t.apply(e,n))}function A(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(A=function(){return!!e})()}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function C(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&&D(e,t)}function D(e,t){return D=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},D(e,t)}function M(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=r&&r.prototype instanceof s?r:s,l=Object.create(c.prototype);return R(l,"_invoke",function(n,r,i){var o,s,c,l=0,u=i||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return o=t,s=0,c=e,p.n=n,a}};function d(n,r){for(s=n,c=r,t=0;!f&&l&&!i&&t<u.length;t++){var i,o=u[t],d=p.p,h=o[2];n>3?(i=h===r)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=d&&((i=n<2&&d<o[1])?(s=0,p.v=r,p.n=o[1]):d<h&&(i=n<3||o[0]>r||r>h)&&(o[4]=n,o[5]=r,p.n=h,s=0))}if(i||n>1)return a;throw f=!0,r}return function(i,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){o||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,o){if(s||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=e}else if((t=(f=p.n<0)?c:n.call(r,p))!==a)break}catch(t){o=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(n,i,o),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(R(t={},r,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,R(e,i,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,R(f,"constructor",l),R(l,"constructor",c),c.displayName="GeneratorFunction",R(l,i,"GeneratorFunction"),R(f),R(f,i,"Generator"),R(f,r,function(){return this}),R(f,"toString",function(){return"[object Generator]"}),(M=function(){return{w:o,m:p}})()}function R(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}R=function(e,t,n,r){function o(t,n){R(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},R(e,t,n,r)}function z(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function F(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(e){z(o,r,i,a,s,"next",e)}function s(e){z(o,r,i,a,s,"throw",e)}a(void 0)})}}function L(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function B(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function I(e,t,n){return t&&B(e.prototype,t),n&&B(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function q(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){var t=function(e){if("object"!=h(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}var G=window.BookReader,U=function(){return I(function e(){L(this,e),q(this,"name",void 0),q(this,"title",void 0),q(this,"description",void 0),q(this,"icon",void 0),q(this,"enabled",void 0),q(this,"learnMore",void 0),q(this,"br",void 0),q(this,"assetRoot","/BookReader/"),q(this,"enabledLoading",!1)},[{key:"buildAssetPath",value:function(e){return"".concat(this.assetRoot).concat(e)}},{key:"enable",value:(t=F(M().m(function e(t){return M().w(function(e){for(;;)switch(e.n){case 0:t.manual;case 1:return e.a(2)}},e)})),function(e){return t.apply(this,arguments)})},{key:"disable",value:(e=F(M().m(function e(){return M().w(function(e){for(;;)if(0===e.n)return e.a(2)},e)})),function(){return e.apply(this,arguments)})}]);var e,t}(),Z=function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"options",{enabled:!0,localStorageKey:"BrExperiments",enabledExperiments:["translate"]}),q(e,"allExperiments",[new(function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"name","translate"),q(e,"title","Translate Plugin"),q(e,"description","Translate books directly in your browser."),q(e,"learnMore","https://mozilla.github.io/translations/"),q(e,"icon","images/translate.svg"),q(e,"enabled",!1),e}return C(t,e),I(t,[{key:"enable",value:(r=F(M().m(function e(t){return M().w(function(e){for(;;)switch(e.n){case 0:if(t.manual,!G.PLUGINS.translate){e.n=1;break}return e.a(2);case 1:return e.n=2,H(this.buildAssetPath("plugins/plugin.translate.js"));case 2:this.br.initializePlugin("translate");case 3:return e.a(2)}},e,this)})),function(e){return r.apply(this,arguments)})},{key:"disable",value:(n=F(M().m(function e(){return M().w(function(e){for(;;)switch(e.n){case 0:(0,d.sleep)(0).then(function(){window.location.reload()});case 1:return e.a(2)}},e)})),function(){return n.apply(this,arguments)})}]);var n,r}(U)),new(function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"name","hypothesis"),q(e,"title","Hypothes.is"),q(e,"description","Create public, collaborative, or fully private annotations on books and the web."),q(e,"learnMore","https://web.hypothes.is/about/"),q(e,"icon","images/hypothesis.ico"),q(e,"enabled",!1),e}return C(t,e),I(t,[{key:"enable",value:(r=F(M().m(function e(t){var n,r,i;return M().w(function(e){for(;;)if(0===e.n)return n=t.manual,r=void 0!==n&&n,(i=document.createElement("script")).type="application/json",i.className="js-hypothesis-config",i.textContent=JSON.stringify({openSidebar:r,assetRoot:this.buildAssetPath("hypothesis/")}),document.head.appendChild(i),e.a(2,H(this.buildAssetPath("hypothesis/build/boot.js")))},e,this)})),function(e){return r.apply(this,arguments)})},{key:"disable",value:(n=F(M().m(function e(){return M().w(function(e){for(;;)switch(e.n){case 0:(0,d.sleep)(0).then(function(){window.location.reload()});case 1:return e.a(2)}},e)})),function(){return n.apply(this,arguments)})}]);var n,r}(U))]),q(e,"_panel",void 0),e}return C(t,e),I(t,[{key:"init",value:(o=F(M().m(function e(){var t,n,r;return M().w(function(e){for(;;)switch(e.n){case 0:if(this.options.enabled){e.n=1;break}return e.a(2);case 1:t=S(this.allExperiments);try{for(t.s();!(n=t.n()).done;)(r=n.value).assetRoot=this.br.options.imagesBaseURL.replace(/images\/$/,""),r.icon=r.buildAssetPath(r.icon),r.br=this.br}catch(e){t.e(e)}finally{t.f()}return this._loadExperimentStates(),e.n=2,Promise.resolve();case 2:this._render();case 3:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_loadExperimentStates",value:function(){var e=JSON.parse(localStorage.getItem(this.options.localStorageKey)||"{}");this.allExperiments.forEach(function(t){void 0!==e[t.name]&&(t.enabled=e[t.name],t.enabled&&t.enable({manual:!1}))})}},{key:"_saveExperimentStates",value:function(){var e=Object.fromEntries(this.allExperiments.map(function(e){return[e.name,e.enabled]}));localStorage.setItem(this.options.localStorageKey,JSON.stringify(e))}},{key:"_toggleExperiment",value:(n=F(M().m(function e(t,n){var r;return M().w(function(e){for(;;)switch(e.n){case 0:if(t.enabledLoading=!0,null===(r=this.br.plugins.archiveAnalytics)||void 0===r||r.sendEvent("BRExperiment-".concat(t.name),n?"Enable":"Disable"),this._panel.requestUpdate(),!n){e.n=2;break}return e.n=1,t.enable({manual:!0});case 1:e.n=3;break;case 2:return e.n=3,t.disable();case 3:t.enabledLoading=!1,t.enabled=n,this._panel.requestUpdate();case 4:return e.a(2)}},e,this)})),function(e,t){return n.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.experiments={id:"experiments",icon:(0,u.qy)(r||(r=P(['\n <img src="','/icon_experiment.svg" alt="" width="26"/>\n '])),this.br.options.imagesBaseURL),label:"Experiments",component:(0,u.qy)(i||(i=P(['<br-experiments-panel\n .experiments="','"\n @connected="','"\n @toggle="','"\n />'])),this.allExperiments.filter(function(t){return e.options.enabledExperiments.includes(t.name)}),function(t){return e._panel=t.target},function(){var t=F(M().m(function t(n){return M().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,e._toggleExperiment(n.detail.experiment,n.detail.enabled);case 1:e._saveExperimentStates();case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())},this.br.shell.updateMenuContents()}}]);var n,o}(f.S);function H(e){return J.apply(this,arguments)}function J(){return(J=F(M().m(function e(t){return M().w(function(e){for(;;)if(0===e.n)return e.a(2,new Promise(function(e,n){var r=document.createElement("script");r.src=t,r.onload=function(){return e()},r.onerror=function(){return n(new Error("Failed to load script: ".concat(t)))},document.head.appendChild(r)}))},e)}))).apply(this,arguments)}null==G||G.registerPlugin("experiments",Z),y([(0,p.EM)("br-experiments-panel")],function(e,t){var n,r=function(t){function n(){var t;L(this,n);for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t=_(this,n,[].concat(i)),e(t),t}return C(n,t),I(n)}(t);return{F:r,d:[{kind:"field",decorators:[(0,p.MZ)({type:Array})],key:"experiments",value:function(){return[]}},{kind:"method",key:"render",value:function(){var e=this;return(0,u.qy)(o||(o=P(['\n <div style="padding: 10px">\n ',"\n </div>\n "])),this.experiments.map(function(t){return(0,u.qy)(a||(a=P(['\n <br-experiment-toggle\n .icon="','"\n .title="','"\n .description="','"\n .enabled="','"\n .loading="','"\n .learnMore="','"\n @toggle="','"\n ></br-experiment-toggle>\n '])),t.icon,t.title,t.description,t.enabled,t.enabledLoading,t.learnMore,function(n){return e._dispatchToggle(t,n.detail.enabled)})}))}},{kind:"method",key:"_dispatchToggle",value:(n=F(M().m(function e(t,n){return M().w(function(e){for(;;)switch(e.n){case 0:this.dispatchEvent(new CustomEvent("toggle",{detail:{experiment:t,enabled:n}}));case 1:return e.a(2)}},e,this)})),function(e,t){return n.apply(this,arguments)})},{kind:"method",key:"connectedCallback",value:function(){E(r,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}}]}},u.WF),y([(0,p.EM)("br-experiment-toggle")],function(e,t){var n=function(t){function n(){var t;L(this,n);for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t=_(this,n,[].concat(i)),e(t),t}return C(n,t),I(n)}(t);return{F:n,d:[{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"icon",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"title",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"description",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"enabled",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"loading",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"learnMore",value:function(){return""}},{kind:"field",decorators:[(0,p.wk)()],key:"_longLoading",value:function(){return!1}},{kind:"method",key:"update",value:function(e){var t=this;E(n,"update",this,3)([e]),e.has("loading")&&(this.loading?(0,d.sleep)(500).then(function(){t.loading&&(t._longLoading=!0,t.requestUpdate())}):this._longLoading=!1)}},{kind:"method",key:"render",value:function(){return(0,u.qy)(s||(s=P(['\n <div class="experiment-card" style="margin-bottom: 10px;">\n <div style="display: flex; align-items: center; gap: 10px;">\n <img src="','" style="width: 20px; height: 20px;" alt="" />\n <div style="flex-grow: 1; font-weight: bold;">','</div>\n </div>\n <p style="opacity: 0.9">\n ',"\n ",'\n </p>\n <div style="display: flex">\n <div style="flex-grow: 1;"></div>\n <button @click="','" .disabled="','">\n ',"\n </button>\n </div>\n </div>\n "])),this.icon,this.title,this.description,this.learnMore?(0,u.qy)(c||(c=P(['<a href="','" target="_blank">Learn more</a>.'])),this.learnMore):"",this._dispatchToggle,this.loading,this._longLoading?"Loading…":this.enabled?"Disable":"Enable")}},{kind:"get",static:!0,key:"styles",value:function(){return(0,u.AH)(l||(l=P(["\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n "])))}},{kind:"method",key:"_dispatchToggle",value:function(){this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:!this.enabled}}))}}]}},u.WF)}},function(e){e(e.s=6732)}]);
|
|
3
|
+
//# sourceMappingURL=plugin.experiments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|