@internetarchive/bookreader 5.0.0-3 → 5.0.0-30-d
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/.eslintrc.js +17 -5
- package/.github/dependabot.yml +8 -0
- package/.github/workflows/node.js.yml +10 -1
- package/.husky/_/husky.sh +30 -0
- package/.testcaferc.js +10 -0
- package/BookReader/BookReader.css +75 -323
- package/BookReader/BookReader.js +32261 -2
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +15235 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -0
- package/BookReader/icons/close-circle-dark.svg +1 -0
- package/BookReader/icons/voice.svg +1 -0
- package/BookReader/jquery-1.10.1.js +108 -2
- package/BookReader/plugins/plugin.archive_analytics.js +170 -1
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +163 -1
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +333 -1
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +72 -1
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.mobile_nav.js +332 -1
- package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +241 -1
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1261 -1
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +839 -1
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +9115 -2
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +811 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +326 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +412 -0
- package/BookReader/webcomponents-bundle.js.map +1 -0
- package/BookReaderDemo/BookReaderDemo.css +14 -1
- package/BookReaderDemo/IADemoBr.js +107 -0
- package/BookReaderDemo/demo-advanced.html +1 -1
- package/BookReaderDemo/demo-autoplay.html +1 -0
- package/BookReaderDemo/demo-embed-iframe-src.html +1 -0
- package/BookReaderDemo/demo-fullscreen-mobile.html +1 -0
- package/BookReaderDemo/demo-fullscreen.html +1 -0
- package/BookReaderDemo/demo-iiif.html +1 -0
- package/BookReaderDemo/demo-internetarchive.html +66 -18
- package/BookReaderDemo/demo-multiple.html +1 -0
- package/BookReaderDemo/demo-preview-pages.html +1 -0
- package/BookReaderDemo/demo-simple.html +1 -0
- package/BookReaderDemo/demo-vendor-fullscreen.html +1 -0
- package/BookReaderDemo/immersion-1up.html +1 -0
- package/BookReaderDemo/immersion-mode.html +1 -0
- package/BookReaderDemo/toggle_controls.html +1 -0
- package/BookReaderDemo/view_mode.html +1 -0
- package/BookReaderDemo/viewmode-cycle.html +1 -2
- package/CHANGELOG.md +114 -0
- package/babel.config.js +18 -0
- package/index.html +3 -0
- package/jsconfig.json +19 -0
- package/package.json +45 -27
- package/src/BookNavigator/assets/button-base.js +8 -1
- package/src/BookNavigator/assets/ia-logo.js +17 -0
- package/src/BookNavigator/assets/icon_sort_asc.js +5 -0
- package/src/BookNavigator/assets/icon_sort_desc.js +5 -0
- package/src/BookNavigator/assets/icon_sort_neutral.js +5 -0
- package/src/BookNavigator/assets/icon_volumes.js +11 -0
- package/src/BookNavigator/book-navigator.js +528 -0
- package/src/BookNavigator/bookmarks/bookmark-button.js +2 -1
- package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -1
- package/src/BookNavigator/bookmarks/bookmarks-list.js +1 -0
- package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +32 -11
- package/src/BookNavigator/bookmarks/ia-bookmarks.js +88 -43
- package/src/BookNavigator/downloads/downloads-provider.js +22 -16
- package/src/BookNavigator/downloads/downloads.js +16 -23
- package/src/BookNavigator/search/a-search-result.js +1 -0
- package/src/BookNavigator/search/search-provider.js +54 -20
- package/src/BookNavigator/search/search-results.js +7 -18
- package/src/BookNavigator/sharing.js +27 -0
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +10 -12
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +1 -0
- package/src/BookNavigator/volumes/volumes-provider.js +114 -0
- package/src/BookNavigator/volumes/volumes.js +189 -0
- package/src/BookReader/DebugConsole.js +3 -3
- package/src/BookReader/DragScrollable.js +233 -0
- package/src/BookReader/Mode1Up.js +50 -351
- package/src/BookReader/Mode1UpLit.js +434 -0
- package/src/BookReader/Mode2Up.js +94 -72
- package/src/BookReader/ModeSmoothZoom.js +177 -0
- package/src/BookReader/ModeThumb.js +16 -8
- package/src/BookReader/Navbar/Navbar.js +2 -31
- package/src/BookReader/PageContainer.js +47 -2
- package/src/BookReader/ReduceSet.js +1 -1
- package/src/BookReader/Toolbar/Toolbar.js +5 -5
- package/src/BookReader/options.js +10 -0
- package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/src/BookReader/utils.js +68 -13
- package/src/BookReader.js +316 -232
- package/src/assets/icons/close-circle-dark.svg +1 -0
- package/src/assets/icons/voice.svg +1 -0
- package/src/css/BookReader.scss +0 -12
- package/src/css/_BRComponent.scss +1 -1
- package/src/css/_BRmain.scss +19 -24
- package/src/css/_BRnav.scss +4 -26
- package/src/css/_BRpages.scss +35 -0
- package/src/css/_BRsearch.scss +11 -215
- package/src/css/_TextSelection.scss +1 -17
- package/src/css/_controls.scss +16 -3
- package/src/css/_icons.scss +6 -0
- package/src/ia-bookreader/ia-bookreader.js +206 -0
- package/src/plugins/plugin.chapters.js +15 -18
- package/src/plugins/plugin.mobile_nav.js +11 -10
- package/src/plugins/plugin.resume.js +3 -3
- package/src/plugins/plugin.text_selection.js +17 -29
- package/src/plugins/plugin.vendor-fullscreen.js +4 -4
- package/src/plugins/search/plugin.search.js +113 -104
- package/src/plugins/search/view.js +48 -163
- package/src/plugins/tts/AbstractTTSEngine.js +7 -0
- package/src/plugins/tts/FestivalTTSEngine.js +2 -2
- package/src/plugins/tts/WebTTSEngine.js +5 -0
- package/src/plugins/tts/plugin.tts.js +67 -102
- package/src/plugins/url/UrlPlugin.js +184 -0
- package/src/plugins/url/plugin.url.js +220 -0
- package/{src → stat}/BookNavigator/BookModel.js +0 -0
- package/{src → stat}/BookNavigator/BookNavigator.js +151 -104
- package/stat/BookNavigator/assets/bookmark-colors.js +15 -0
- package/stat/BookNavigator/assets/button-base.js +61 -0
- package/stat/BookNavigator/assets/ia-logo.js +17 -0
- package/stat/BookNavigator/assets/icon_checkmark.js +6 -0
- package/stat/BookNavigator/assets/icon_close.js +3 -0
- package/stat/BookNavigator/assets/icon_sort_asc.js +5 -0
- package/stat/BookNavigator/assets/icon_sort_desc.js +5 -0
- package/stat/BookNavigator/assets/icon_sort_neutral.js +5 -0
- package/stat/BookNavigator/assets/icon_volumes.js +11 -0
- package/stat/BookNavigator/bookmarks/bookmark-button.js +64 -0
- package/stat/BookNavigator/bookmarks/bookmark-edit.js +215 -0
- package/stat/BookNavigator/bookmarks/bookmarks-list.js +285 -0
- package/stat/BookNavigator/bookmarks/bookmarks-loginCTA.js +28 -0
- package/stat/BookNavigator/bookmarks/bookmarks-provider.js +56 -0
- package/stat/BookNavigator/bookmarks/ia-bookmarks.js +523 -0
- package/{src → stat}/BookNavigator/br-fullscreen-mgr.js +1 -2
- package/stat/BookNavigator/delete-modal-actions.js +49 -0
- package/stat/BookNavigator/downloads/downloads-provider.js +72 -0
- package/stat/BookNavigator/downloads/downloads.js +139 -0
- package/stat/BookNavigator/provider-config.js +0 -0
- package/stat/BookNavigator/search/a-search-result.js +55 -0
- package/stat/BookNavigator/search/search-provider.js +180 -0
- package/stat/BookNavigator/search/search-results.js +360 -0
- package/stat/BookNavigator/sharing.js +31 -0
- package/stat/BookNavigator/visual-adjustments/visual-adjustments-provider.js +94 -0
- package/stat/BookNavigator/visual-adjustments/visual-adjustments.js +280 -0
- package/stat/BookNavigator/volumes/volumes-provider.js +83 -0
- package/stat/BookNavigator/volumes/volumes.js +178 -0
- package/stat/BookReader/BookModel.js +518 -0
- package/stat/BookReader/DebugConsole.js +54 -0
- package/stat/BookReader/DragScrollable.js +233 -0
- package/stat/BookReader/ImageCache.js +116 -0
- package/stat/BookReader/Mode1Up.js +102 -0
- package/stat/BookReader/Mode1UpLit.js +434 -0
- package/stat/BookReader/Mode2Up.js +1372 -0
- package/stat/BookReader/ModeSmoothZoom.js +177 -0
- package/stat/BookReader/ModeThumb.js +344 -0
- package/stat/BookReader/Navbar/Navbar.js +310 -0
- package/stat/BookReader/PageContainer.js +120 -0
- package/stat/BookReader/ReduceSet.js +26 -0
- package/stat/BookReader/Toolbar/Toolbar.js +384 -0
- package/stat/BookReader/events.js +20 -0
- package/stat/BookReader/options.js +324 -0
- package/stat/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/stat/BookReader/utils/classes.js +36 -0
- package/stat/BookReader/utils.js +240 -0
- package/stat/BookReader.js +2550 -0
- package/{src → stat}/BookReaderComponent/BookReaderComponent.js +16 -11
- package/stat/assets/icons/1up.svg +12 -0
- package/stat/assets/icons/2up.svg +15 -0
- package/stat/assets/icons/advance.svg +26 -0
- package/stat/assets/icons/chevron-right.svg +1 -0
- package/stat/assets/icons/close-circle-dark.svg +1 -0
- package/stat/assets/icons/close-circle.svg +1 -0
- package/stat/assets/icons/fullscreen.svg +17 -0
- package/stat/assets/icons/fullscreen_exit.svg +17 -0
- package/stat/assets/icons/hamburger.svg +15 -0
- package/stat/assets/icons/left-arrow.svg +12 -0
- package/stat/assets/icons/magnify-minus.svg +16 -0
- package/stat/assets/icons/magnify-plus.svg +17 -0
- package/stat/assets/icons/magnify.svg +15 -0
- package/stat/assets/icons/pause.svg +23 -0
- package/stat/assets/icons/play.svg +22 -0
- package/stat/assets/icons/playback-speed.svg +34 -0
- package/stat/assets/icons/read-aloud.svg +22 -0
- package/stat/assets/icons/review.svg +22 -0
- package/stat/assets/icons/thumbnails.svg +17 -0
- package/stat/assets/icons/voice.svg +1 -0
- package/stat/assets/icons/volume-full.svg +22 -0
- package/stat/assets/images/BRicons.png +0 -0
- package/stat/assets/images/BRicons.svg +94 -0
- package/stat/assets/images/BRicons_ia.png +0 -0
- package/stat/assets/images/back_pages.png +0 -0
- package/stat/assets/images/book_bottom_icon.png +0 -0
- package/stat/assets/images/book_down_icon.png +0 -0
- package/stat/assets/images/book_left_icon.png +0 -0
- package/stat/assets/images/book_leftmost_icon.png +0 -0
- package/stat/assets/images/book_right_icon.png +0 -0
- package/stat/assets/images/book_rightmost_icon.png +0 -0
- package/stat/assets/images/book_top_icon.png +0 -0
- package/stat/assets/images/book_up_icon.png +0 -0
- package/stat/assets/images/books_graphic.svg +177 -0
- package/stat/assets/images/booksplit.png +0 -0
- package/stat/assets/images/control_pause_icon.png +0 -0
- package/stat/assets/images/control_play_icon.png +0 -0
- package/stat/assets/images/embed_icon.png +0 -0
- package/stat/assets/images/icon-home-ia.png +0 -0
- package/stat/assets/images/icon_OL-logo-xs.png +0 -0
- package/stat/assets/images/icon_alert-xs.png +0 -0
- package/stat/assets/images/icon_book.svg +12 -0
- package/stat/assets/images/icon_bookmark.svg +12 -0
- package/stat/assets/images/icon_close-pop.png +0 -0
- package/stat/assets/images/icon_download.png +0 -0
- package/stat/assets/images/icon_gear.svg +14 -0
- package/stat/assets/images/icon_hamburger.svg +20 -0
- package/stat/assets/images/icon_home.png +0 -0
- package/stat/assets/images/icon_home.svg +21 -0
- package/stat/assets/images/icon_home_ia.png +0 -0
- package/stat/assets/images/icon_indicator.png +0 -0
- package/stat/assets/images/icon_info.svg +11 -0
- package/stat/assets/images/icon_one_page.svg +8 -0
- package/stat/assets/images/icon_pause.svg +1 -0
- package/stat/assets/images/icon_play.svg +1 -0
- package/stat/assets/images/icon_playback-rate.svg +15 -0
- package/stat/assets/images/icon_return.png +0 -0
- package/stat/assets/images/icon_search_button.svg +8 -0
- package/stat/assets/images/icon_share.svg +9 -0
- package/stat/assets/images/icon_skip-ahead.svg +6 -0
- package/stat/assets/images/icon_skip-back.svg +13 -0
- package/stat/assets/images/icon_speaker.svg +18 -0
- package/stat/assets/images/icon_speaker_open.svg +10 -0
- package/stat/assets/images/icon_thumbnails.svg +12 -0
- package/stat/assets/images/icon_toc.svg +5 -0
- package/stat/assets/images/icon_two_pages.svg +9 -0
- package/stat/assets/images/icon_zoomer.png +0 -0
- package/stat/assets/images/loading.gif +0 -0
- package/stat/assets/images/logo_icon.png +0 -0
- package/stat/assets/images/marker_chap-off.png +0 -0
- package/stat/assets/images/marker_chap-off.svg +11 -0
- package/stat/assets/images/marker_chap-off_ia.png +0 -0
- package/stat/assets/images/marker_chap-on.png +0 -0
- package/stat/assets/images/marker_chap-on.svg +11 -0
- package/stat/assets/images/marker_srch-on.svg +11 -0
- package/stat/assets/images/marker_srchchap-off.png +0 -0
- package/stat/assets/images/marker_srchchap-on.png +0 -0
- package/stat/assets/images/nav_control-dn.png +0 -0
- package/stat/assets/images/nav_control-dn_ia.png +0 -0
- package/stat/assets/images/nav_control-up.png +0 -0
- package/stat/assets/images/nav_control-up_ia.png +0 -0
- package/stat/assets/images/nav_control.png +0 -0
- package/stat/assets/images/one_page_mode_icon.png +0 -0
- package/stat/assets/images/paper-badge.png +0 -0
- package/stat/assets/images/print_icon.png +0 -0
- package/stat/assets/images/progressbar.gif +0 -0
- package/stat/assets/images/right_edges.png +0 -0
- package/stat/assets/images/slider.png +0 -0
- package/stat/assets/images/slider_ia.png +0 -0
- package/stat/assets/images/thumbnail_mode_icon.png +0 -0
- package/stat/assets/images/transparent.png +0 -0
- package/stat/assets/images/two_page_mode_icon.png +0 -0
- package/stat/assets/images/zoom_in_icon.png +0 -0
- package/stat/assets/images/zoom_out_icon.png +0 -0
- package/stat/css/BookReader.scss +89 -0
- package/stat/css/_BRBookmarks.scss +29 -0
- package/stat/css/_BRComponent.scss +13 -0
- package/stat/css/_BRfloat.scss +197 -0
- package/stat/css/_BRicon.scss +48 -0
- package/stat/css/_BRmain.scss +251 -0
- package/stat/css/_BRnav.scss +359 -0
- package/stat/css/_BRpages.scss +139 -0
- package/stat/css/_BRsearch.scss +226 -0
- package/stat/css/_BRtoolbar.scss +84 -0
- package/stat/css/_BRvendor.scss +5 -0
- package/stat/css/_MobileNav.scss +194 -0
- package/stat/css/_TextSelection.scss +32 -0
- package/stat/css/_colorbox.scss +52 -0
- package/stat/css/_controls.scss +253 -0
- package/stat/css/_icons.scss +121 -0
- package/stat/jquery-wrapper.js +4 -0
- package/stat/plugins/plugin.archive_analytics.js +86 -0
- package/stat/plugins/plugin.autoplay.js +129 -0
- package/stat/plugins/plugin.chapters.js +248 -0
- package/stat/plugins/plugin.iframe.js +48 -0
- package/stat/plugins/plugin.mobile_nav.js +288 -0
- package/stat/plugins/plugin.resume.js +68 -0
- package/stat/plugins/plugin.text_selection.js +291 -0
- package/{src → stat}/plugins/plugin.url.js +4 -4
- package/stat/plugins/plugin.vendor-fullscreen.js +247 -0
- package/stat/plugins/search/plugin.search.js +439 -0
- package/stat/plugins/search/view.js +439 -0
- package/stat/plugins/tts/AbstractTTSEngine.js +249 -0
- package/stat/plugins/tts/FestivalTTSEngine.js +169 -0
- package/stat/plugins/tts/PageChunk.js +107 -0
- package/stat/plugins/tts/PageChunkIterator.js +163 -0
- package/stat/plugins/tts/WebTTSEngine.js +357 -0
- package/stat/plugins/tts/plugin.tts.js +357 -0
- package/stat/plugins/tts/tooltip_dict.js +15 -0
- package/stat/plugins/tts/utils.js +91 -0
- package/stat/util/browserSniffing.js +30 -0
- package/stat/util/debouncer.js +26 -0
- package/stat/util/docCookies.js +67 -0
- package/stat/util/strings.js +34 -0
- package/tests/e2e/README.md +37 -0
- package/tests/e2e/autoplay.test.js +2 -2
- package/tests/e2e/base.test.js +5 -7
- package/tests/e2e/helpers/base.js +8 -3
- package/tests/e2e/helpers/debug.js +1 -1
- package/tests/e2e/helpers/desktopSearch.js +1 -1
- package/tests/e2e/helpers/mobileSearch.js +3 -3
- package/tests/e2e/helpers/params.js +17 -0
- package/tests/e2e/rightToLeft.test.js +4 -5
- package/tests/e2e/viewmode.test.js +30 -31
- package/tests/{BookReader → jest/BookReader}/BookModel.test.js +3 -3
- package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +176 -0
- package/tests/{BookReader → jest/BookReader}/DebugConsole.test.js +1 -1
- package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
- package/tests/jest/BookReader/Mode1UpLit.test.js +87 -0
- package/tests/{BookReader → jest/BookReader}/Mode2Up.test.js +5 -7
- package/tests/jest/BookReader/ModeSmoothZoom.test.js +149 -0
- package/tests/jest/BookReader/ModeThumb.test.js +71 -0
- package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +7 -7
- package/tests/{BookReader → jest/BookReader}/PageContainer.test.js +74 -2
- package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
- package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +2 -2
- package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
- package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
- package/tests/jest/BookReader/utils.test.js +136 -0
- package/tests/jest/BookReader.keyboard.test.js +190 -0
- package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +9 -1
- package/tests/{BookReader.test.js → jest/BookReader.test.js} +20 -4
- package/tests/{plugins → jest/plugins}/plugin.archive_analytics.test.js +2 -2
- package/tests/{plugins → jest/plugins}/plugin.autoplay.test.js +2 -2
- package/tests/{plugins → jest/plugins}/plugin.chapters.test.js +8 -8
- package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +2 -2
- package/tests/{plugins → jest/plugins}/plugin.mobile_nav.test.js +5 -5
- package/tests/{plugins → jest/plugins}/plugin.resume.test.js +3 -3
- package/tests/{plugins → jest/plugins}/plugin.text_selection.test.js +14 -24
- package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
- package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +12 -5
- package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +6 -6
- package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +3 -3
- package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
- package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
- package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
- package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +1 -1
- package/tests/{plugins → jest/plugins}/tts/utils.test.js +3 -3
- package/tests/jest/plugins/url/UrlPlugin.test.js +175 -0
- package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +33 -14
- package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
- package/tests/{util → jest/util}/docCookies.test.js +1 -1
- package/tests/{util → jest/util}/strings.test.js +1 -1
- package/tests/{utils.js → jest/utils.js} +38 -0
- package/tests/karma/BookNavigator/book-navigator.test.js +485 -0
- package/tests/karma/BookNavigator/bookmarks/bookmark-button.test.js +44 -0
- package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +1 -3
- package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +1 -2
- package/tests/karma/BookNavigator/downloads/downloads-provider.test.js +67 -0
- package/tests/karma/BookNavigator/downloads/downloads.test.js +54 -0
- package/tests/karma/BookNavigator/search/search-provider.test.js +123 -0
- package/tests/karma/BookNavigator/{search-results.test.js → search/search-results.test.js} +1 -4
- package/tests/karma/BookNavigator/sharing/sharing-provider.test.js +49 -0
- package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -2
- package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +184 -0
- package/tests/karma/BookNavigator/volumes/volumes.test.js +98 -0
- package/webpack.config.js +11 -5
- package/.babelrc +0 -12
- package/.dependabot/config.yml +0 -6
- package/.testcaferc.json +0 -5
- package/BookReader/BookReader.js.LICENSE.txt +0 -72
- package/BookReader/bookreader-component-bundle.js +0 -1450
- package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
- package/BookReader/bookreader-component-bundle.js.map +0 -1
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
- package/BookReader/plugins/plugin.menu_toggle.js +0 -2
- package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +0 -27
- package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
- package/src/BookNavigator/assets/book-loader.js +0 -27
- package/src/ItemNavigator/ItemNavigator.js +0 -372
- package/src/ItemNavigator/providers/sharing.js +0 -29
- package/src/dragscrollable-br.js +0 -261
- package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
- package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
- package/tests/BookReader/Mode1Up.test.js +0 -164
- package/tests/BookReader/utils.test.js +0 -109
- package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Sizzle CSS Selector Engine v2.2.0-pre
|
|
3
|
-
* http://sizzlejs.com/
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
|
|
6
|
-
* Released under the MIT license
|
|
7
|
-
* http://jquery.org/license
|
|
8
|
-
*
|
|
9
|
-
* Date: 2014-12-16
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/*!
|
|
13
|
-
* jQuery JavaScript Library v1.11.3
|
|
14
|
-
* http://jquery.com/
|
|
15
|
-
*
|
|
16
|
-
* Includes Sizzle.js
|
|
17
|
-
* http://sizzlejs.com/
|
|
18
|
-
*
|
|
19
|
-
* Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
|
|
20
|
-
* Released under the MIT license
|
|
21
|
-
* http://jquery.org/license
|
|
22
|
-
*
|
|
23
|
-
* Date: 2015-04-28T16:19Z
|
|
24
|
-
*/
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[777],{3504:function(e,n,o){"use strict";o(9600);var t=o(3609),i=o(3609);!function(){t.extend(BookReader.defaultOptions,{enableMenuToggle:!0});var e=!1;function n(e){e.refs&&e.refs.$BRnav&&e.refs.$BRnav.children(".BRnavCntl").css("display","none")}var o,r,a=!1,s=function(n,o,t){if(!e){var r,s,c=(r=document.querySelector(".BRcontainer")).scrollWidth>r.offsetWidth?n.refs.$brContainer[0]:o.currentTarget,d=n.constMode1up===n.mode||function(e,n){var o=e.clientX,t=n.offsetWidth,i=n.offsetLeft,r=Math.round(t/3),a=Math.round(r+i),s=Math.round(t-r+i);return o>a&&o<s}(o,c);(t?d:(s=o.target,i(s).hasClass("BookReader")||i(s).hasClass("BRcontainer")||i(s).hasClass("BRemptypage")||i(s).hasClass("BRpageview")||i(s).hasClass("BRtwopageview")))&&(function(e){a||(a=!0,i(document).on("BookReader:navToggled",(function e(){a=!1,window.removeEventListener("BookReader:navToggled",e)})),e.navigationIsVisible()?e.hideNavigation():e.showNavigation())}(n),t&&o.stopPropagation())}};function c(e,n){s(e,n)}function d(e,n){s(e,n,!0)}function u(n){var t=document.querySelector(".BookReader");if(t){t.addEventListener("click",c.bind(null,n),{capture:!0,passive:!0});var i=(document.querySelector(".BRcontainer")||{}).firstChild;i&&(i.addEventListener("click",d.bind(null,n),!0),function(){var n=document.querySelector(".BookReader");n&&(n.addEventListener("mousedown",(function(n){o=n.screenX,r=n.screenY,e=!0}),!0),n.addEventListener("mouseup",(function(n){Math.abs(o-n.screenX)>5||Math.abs(r-n.screenY)>5||(e=!1,o=0,r=0)}),!0))}())}}var f,l=function(e){var o=!1;try{o=e.navigationIsVisible()}catch(e){o=!1}if(o){var t=function(n){u(e)},r=function(o){!function(e){n(e),u(e)}(e)};i(document).on(["BookReader:3PageViewSelected"].join(" "),(function(o){!function(e){n(e),function(e){e.refs.$brPageViewEl&&e.refs.$brPageViewEl[0].removeEventListener("click",d,!0),e.refs.$brTwoPageView&&e.refs.$brTwoPageView[0].removeEventListener("click",d,!0)}(e),e.showNavigation()}(e)})),i(document).on(["BookReader:1PageViewSelected","BookReader:2PageViewSelected","BookReader:zoomIn","BookReader:zoomOut","BookReader:resize"].join(" "),t),i(window).on("orientationchange",t),i(document).on("BookReader:fullscreenToggled",r),i(window).on("DOMContentLoaded",r),r()}};BookReader.prototype.setup=(f=BookReader.prototype.setup,function(e){f.call(this,e)}),BookReader.prototype.init=function(e){return function(){e.call(this),this.options.enableMenuToggle&&l(this)}}(BookReader.prototype.init)}()}},function(e){"use strict";e(e.s=3504)}]);
|
|
2
|
-
//# sourceMappingURL=plugin.menu_toggle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://@internetarchive/bookreader/./src/plugins/menu_toggle/plugin.menu_toggle.js"],"names":["jQuery","extend","BookReader","defaultOptions","enableMenuToggle","holdOffOnToggle","hideArrow","br","refs","$BRnav","children","css","initialX","initialY","togglingNav","toggleRouter","e","atBookCenter","brContainer","element","book","document","querySelector","scrollWidth","offsetWidth","$brContainer","currentTarget","validBookClick","constMode1up","mode","event","clickPosition","clientX","bookWidth","leftOffset","offsetLeft","bookEndPageFlipArea","Math","round","leftThreshold","rightThreshold","isCenterClick","target","$","hasClass","on","navToggled","window","removeEventListener","navigationIsVisible","hideNavigation","showNavigation","toggleNav","stopPropagation","onBackgroundClick","onBookClick","registerClickHandlers","background","addEventListener","bind","capture","passive","firstChild","screenX","screenY","abs","registerDragHandlers","super_","installMenuToggle","hasNav","error","menuToggleEventRegister","setupDOMandHandlers","setupNavForToggle","join","$brPageViewEl","$brTwoPageView","removeClickHandlers","alwaysShowNav","prototype","setup","options","call","this","init"],"mappings":"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","file":"plugins/plugin.menu_toggle.js","sourcesContent":["\n/* global BookReader */\n/**\n * Plugin for managing menu visibility\n * Enabling this plug-in:\n * + removes the \"menu tab\" triangle\n * + toggles nav at: book center tap/click\n * + toggles nav at: black background tap/click\n *\n * Handles to events at CAPTURE phase\n *\n * This uses core BookReader functions and parameters to check its UI state:\n * - br.refs = (at best) ui references that are present at any given time\n * - br.navigationIsVisible() - checks using refs to confirm the navbar's presence\n * - br.showNavigation() & br.hideNavigation()\n * - br.constMode1up checks against br.mode;\n *\n * The list of BookReader custom events this plugin taps into are mainly\n * listed in the `.init` function\n */\n\n(function addMenuToggler() {\n jQuery.extend(BookReader.defaultOptions, {\n enableMenuToggle: true\n });\n\n /**\n * `holdOffOnToggle` is used in fn `toggleRouter`\n * to determine if menu toggle should happen\n * set by `registerDragHandlers`\n */\n let holdOffOnToggle = false;\n\n /**\n * Hides Nav arrow tab\n *\n * @param { object } br - BookReader instance\n */\n function hideArrow(br) {\n if (!br.refs || !br.refs.$BRnav) {\n return;\n }\n const $menuTab = br.refs.$BRnav.children('.BRnavCntl');\n $menuTab.css('display', 'none');\n }\n\n /**\n * Sets up nav - hides arrow tab & adds click events\n *\n * @param { object } br - BookReader instance\n */\n function setupNavForToggle(br) {\n hideArrow(br);\n registerClickHandlers(br);\n }\n\n /**\n * Resets nav to always show\n * hides arrow tab, removes click events, shows nav chrome\n *\n * @param { object } br - BookReader instance\n */\n function alwaysShowNav(br) {\n hideArrow(br);\n removeClickHandlers(br);\n br.showNavigation();\n }\n\n /**\n * Removes click handlers on elements that house the book pages\n *\n * @param { object } br - BookReader instance\n */\n const removeClickHandlers = function removeClickHandlers(br) {\n if (br.refs.$brPageViewEl) {\n br.refs.$brPageViewEl[0].removeEventListener('click', onBookClick, true);\n }\n if (br.refs.$brTwoPageView) {\n br.refs.$brTwoPageView[0].removeEventListener('click', onBookClick, true);\n }\n }\n\n /**\n * Toggle functionality\n * Responsible for calling native functions `hideNavigation` & `showNavigation`\n * Makes sure only 1 toggle action is taken at a time using `togglingNav` switch.\n *\n * @params { object } br - bookreader instance\n */\n let togglingNav = false; /* flag to make sure animations only fire once */\n const toggleNav = function toggleNav(br) {\n if (togglingNav) {\n return;\n }\n\n togglingNav = true;\n const navToggled = function navToggled() {\n togglingNav = false;\n window.removeEventListener('BookReader:navToggled', navToggled);\n };\n $(document).on('BookReader:navToggled', navToggled);\n\n const menuIsShowing = br.navigationIsVisible();\n if (menuIsShowing) {\n br.hideNavigation();\n } else {\n br.showNavigation();\n }\n }\n\n /**\n * Check if div `BRcontainer` is scrollable.\n * This normally happens when bookreader is zoomed in.\n * not using br.refs, because `scrollWidth` & `offsetWidth` is not easily accessible.\n */\n const isBRcontainerScrollable = function isBRcontainerScrollable() {\n const brContainer = document.querySelector('.BRcontainer');\n const scrollWidth = brContainer.scrollWidth;\n const offsetWidth = brContainer.offsetWidth;\n\n return scrollWidth > offsetWidth;\n }\n\n /**\n * Confirms whether or not the click happened in the nav toggle zone\n *\n * @param { MouseEvent } event - JS click event object\n * @param { DOM } book - DOM element that represents book\n */\n const isCenterClick = function isCenterClick(event, book) {\n const clickPosition = event.clientX;\n const bookWidth = book.offsetWidth;\n const leftOffset = book.offsetLeft\n const bookEndPageFlipArea = Math.round(bookWidth / 3);\n const leftThreshold = Math.round(bookEndPageFlipArea + leftOffset); // without it, the click area is small\n const rightThreshold = Math.round(bookWidth - bookEndPageFlipArea + leftOffset);\n const isOkOnRight = clickPosition > leftThreshold;\n const isOkOnLeft = clickPosition < rightThreshold;\n const isCenterClick = isOkOnRight && isOkOnLeft;\n\n return isCenterClick;\n }\n\n /**\n * Confirms whether or not the click happened in the background\n *\n * @param { DOM } element\n */\n const isBackground = function isBackground(element) {\n const isBackgroundClick = $(element).hasClass('BookReader')\n || $(element).hasClass('BRcontainer') /* main black theatre */\n || $(element).hasClass('BRemptypage') /* empty page placeholder */\n || $(element).hasClass('BRpageview') /* empty page placeholder, 1up */\n || $(element).hasClass('BRtwopageview'); /* empty page placeholder, 2up */\n return isBackgroundClick;\n };\n\n /**\n * Main hook into toggle functionality\n * This is the only function that should be called by the event handlers\n *\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n * @param { boolean } atBookCenter - optional\n */\n const toggleRouter = function toggleRouter (br, e, atBookCenter) {\n if (holdOffOnToggle) {\n return;\n }\n\n const book = isBRcontainerScrollable() ? br.refs.$brContainer[0] : e.currentTarget;\n const is1UpMode = br.constMode1up === br.mode;\n const validBookClick = is1UpMode || isCenterClick(e, book);\n const isValidClickArea = atBookCenter ? validBookClick : isBackground(e.target);\n if (isValidClickArea) {\n toggleNav(br, atBookCenter);\n\n if (atBookCenter) {\n e.stopPropagation(); // don't turn the page. this takes prescendence\n }\n }\n }\n\n /**\n * background click event handler\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n */\n function onBackgroundClick(br, e) {\n toggleRouter(br, e);\n }\n\n /**\n * actual book container click event handler\n *\n * @param { object } br - BookReader instance\n * @param { MouseEvent } e - JS event object\n */\n function onBookClick(br, e) {\n\n const atBookCenter = true;\n toggleRouter(br, e, atBookCenter);\n }\n\n let initialX;\n let initialY;\n /**\n * attaches mouseup & mousedown event handlers to assess if user is dragging\n * sets `initialX`, `initialY`, and `holdOffOnToggle`\n */\n function registerDragHandlers() {\n const background = document.querySelector('.BookReader');\n if (!background) {\n return;\n }\n\n background.addEventListener('mousedown', function (e) {\n initialX = e.screenX;\n initialY = e.screenY;\n\n holdOffOnToggle = true;\n }, true);\n background.addEventListener('mouseup', function (e) {\n const isDrag = (Math.abs(initialX - e.screenX) > 5 || Math.abs(initialY - e.screenY) > 5);\n\n if (!isDrag) {\n holdOffOnToggle = false;\n initialX = 0;\n initialY = 0;\n }\n }, true);\n }\n\n /**\n * attaches click handlers to background & book\n * @param { object } br - BookReader instance\n */\n function registerClickHandlers(br) {\n const background = document.querySelector('.BookReader');\n if (!background) {\n return;\n }\n\n background.addEventListener('click', onBackgroundClick.bind(null, br), { capture: true, passive: true });\n\n const desk = document.querySelector('.BRcontainer') || {};\n const book = desk.firstChild;\n\n if (book) {\n book.addEventListener('click', onBookClick.bind(null, br), true);\n registerDragHandlers();\n }\n }\n\n /**\n * Install menu toggle\n * attaches event handlers, sets up DOM on load\n */\n const installMenuToggle = function installMenuToggle(br) {\n let hasNav = false;\n\n try {\n hasNav = br.navigationIsVisible();\n } catch (error) {\n hasNav = false;\n }\n\n if (!hasNav) {\n return;\n }\n\n const menuToggleEventRegister = function menuToggleEventRegister(e) {\n registerClickHandlers(br);\n };\n\n const setupDOMandHandlers = function setupDOMandHandlers(e) {\n setupNavForToggle(br);\n };\n\n const persistNav = function persistNav(e) {\n alwaysShowNav(br);\n };\n\n const whenToToggleNav = [\n 'BookReader:1PageViewSelected',\n 'BookReader:2PageViewSelected',\n 'BookReader:zoomIn',\n 'BookReader:zoomOut',\n 'BookReader:resize'\n ];\n\n const whenTolwaysShowNavWhen = [\n 'BookReader:3PageViewSelected'\n ];\n\n $(document).on(whenTolwaysShowNavWhen.join(' '), persistNav);\n $(document).on(whenToToggleNav.join(' '), menuToggleEventRegister);\n $(window).on('orientationchange', menuToggleEventRegister);\n $(document).on('BookReader:fullscreenToggled', setupDOMandHandlers);\n $(window).on('DOMContentLoaded', setupDOMandHandlers);\n setupDOMandHandlers();\n };\n\n /**\n * Add to BookReader\n */\n BookReader.prototype.setup = (function(super_) {\n return function(options) {\n super_.call(this, options);\n };\n })(BookReader.prototype.setup);\n\n /**\n * Initialize plugin\n */\n BookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.options.enableMenuToggle) {\n installMenuToggle(this);\n }\n };\n })(BookReader.prototype.init);\n})();\n"],"sourceRoot":""}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* jQuery Browser Plugin 0.1.0
|
|
3
|
-
* https://github.com/gabceb/jquery-browser-plugin
|
|
4
|
-
*
|
|
5
|
-
* Original jquery-browser code Copyright 2005, 2015 jQuery Foundation, Inc. and other contributors
|
|
6
|
-
* http://jquery.org/license
|
|
7
|
-
*
|
|
8
|
-
* Modifications Copyright 2015 Gabriel Cebrian
|
|
9
|
-
* https://github.com/gabceb
|
|
10
|
-
*
|
|
11
|
-
* Released under the MIT license
|
|
12
|
-
*
|
|
13
|
-
* Date: 05-07-2015
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/** @license
|
|
17
|
-
*
|
|
18
|
-
* SoundManager 2: JavaScript Sound for the Web
|
|
19
|
-
* ----------------------------------------------
|
|
20
|
-
* http://schillmania.com/projects/soundmanager2/
|
|
21
|
-
*
|
|
22
|
-
* Copyright (c) 2007, Scott Schiller. All rights reserved.
|
|
23
|
-
* Code provided under the BSD License:
|
|
24
|
-
* http://schillmania.com/projects/soundmanager2/license.txt
|
|
25
|
-
*
|
|
26
|
-
* V2.97a.20170601
|
|
27
|
-
*/
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>bookreader demo</title>
|
|
5
|
-
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
|
7
|
-
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
8
|
-
|
|
9
|
-
<!-- JS dependencies -->
|
|
10
|
-
<script src="../BookReader/jquery-1.10.1.js"></script>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<!-- BookReader and plugins -->
|
|
14
|
-
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
15
|
-
<script src="../BookReader/BookReader.js"></script>
|
|
16
|
-
<script type="text/javascript" src="../BookReader/plugins/plugin.url.js"></script>
|
|
17
|
-
<script type="text/javascript" src="../BookReader/plugins/plugin.menu_toggle.js"></script>
|
|
18
|
-
|
|
19
|
-
<!-- Custom CSS overrides -->
|
|
20
|
-
<link rel="stylesheet" href="BookReaderDemo.css"/>
|
|
21
|
-
</head>
|
|
22
|
-
<body>
|
|
23
|
-
<div id="BookReader">
|
|
24
|
-
Internet Archive BookReader Demo<br/>
|
|
25
|
-
plugin: Fullscreen menu toggle<br/>
|
|
26
|
-
<noscript>
|
|
27
|
-
<p>
|
|
28
|
-
The BookReader requires JavaScript to be enabled. Please check that your browser supports JavaScript and that it is enabled in the browser settings. You can also try one of the <a href="https://archive.org/details/goodytwoshoes00newyiala"> other formats of the book</a>.
|
|
29
|
-
</p>
|
|
30
|
-
</noscript>
|
|
31
|
-
</div>
|
|
32
|
-
<script type="text/javascript" src="BookReaderJSAdvanced.js"></script>
|
|
33
|
-
</body>
|
|
34
|
-
</html>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { html } from 'lit-element';
|
|
2
|
-
|
|
3
|
-
export default html`
|
|
4
|
-
<svg
|
|
5
|
-
height="100"
|
|
6
|
-
viewBox="0 0 100 100"
|
|
7
|
-
width="100"
|
|
8
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
-
aria-labelledby="bookreader-loading"
|
|
10
|
-
>
|
|
11
|
-
<title id="bookreader-loading">Currently loading viewer.</title>
|
|
12
|
-
<desc>Please wait while we load book reader.</desc>
|
|
13
|
-
<g fill="#333" fill-rule="evenodd" class="book-icon">
|
|
14
|
-
<g transform="matrix(1 0 0 -1 28 67.362264)">
|
|
15
|
-
<path d="m44.71698 31.6981124v-29.99320678s-18.0956599.30735848-18.6322637-.7171698c-.0633962-.12226414-1.890566-.59207545-2.9745282-.59207545-1.3228302 0-3.5122641 0-4.1286791.74547168-.9707547 1.17452827-18.82811278.71660375-18.82811278.71660375v30.040754l1.83849052.7867924.29094339-28.48188608s15.94981097.15339622 17.09094297-1.10716978c.8145283-.90056602 4.997547-.91641507 5.3450942-.3526415.9611321 1.55716977 14.7101883 1.31716978 17.6077354 1.45981128l.3266038 28.22830118z"/>
|
|
16
|
-
<path d="m40.1129424 33.5957539h-12.8337733c-1.8690565 0-3.1098112-.7545283-3.9299999-1.6279245v-26.70452764l1.2362264-.00792453c.4584906.72962262 3.0922641 1.39415091 3.0922641 1.39415091h10.1298111s1.0381131.01754717 1.5141509.47377357c.5643396.54056602.7913207 1.36981129.7913207 1.36981129z"/>
|
|
17
|
-
<path d="m17.3354713 33.5957539h-12.8337733v-25.37660316s0-.75283017.49358489-1.14113205c.52867924-.41433961 1.3415094-.42849055 1.3415094-.42849055h10.59905631s2.2075471-.52698112 3.0928301-1.39415091l1.2.00792453v26.74245214c-.8201886.8581132-2.0530188 1.59-3.8932074 1.59"/>
|
|
18
|
-
</g>
|
|
19
|
-
<path
|
|
20
|
-
class="ring"
|
|
21
|
-
d="m17.8618849 11.6970233c18.5864635-15.59603144 45.6875867-15.59603102 64.2740497.000001 1.9271446 1.6170806 2.1785128 4.4902567.5614466 6.4174186-1.6170661 1.9271618-4.4902166 2.1785323-6.4173612.5614517-15.1996922-12.75416882-37.3625282-12.75416916-52.5622206-.000001-15.19969387 12.7541707-19.04823077 34.5805019-9.1273354 51.7641499 9.9208955 17.183646 30.7471499 24.7638499 49.3923323 17.9774983 18.6451823-6.7863521 29.7266014-25.9801026 26.2811129-45.5206248-.436848-2.4775114 1.2174186-4.8400696 3.6949079-5.2769215 2.4774893-.4368518 4.8400264 1.2174296 5.2768744 3.694941 4.2132065 23.8945096-9.3373563 47.3649806-32.137028 55.6634567-22.799672 8.2984758-48.2663986-.9707372-60.39785211-21.9832155-12.1314534-21.012481-7.42539173-47.7021198 11.16107351-63.2981544z"
|
|
22
|
-
fill-rule="nonzero"
|
|
23
|
-
/>
|
|
24
|
-
</g>
|
|
25
|
-
</svg>
|
|
26
|
-
`;
|
|
27
|
-
|
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
import { css, html, LitElement } from "lit-element";
|
|
2
|
-
import { nothing } from "lit-html";
|
|
3
|
-
import { IAMenuSlider } from "@internetarchive/ia-menu-slider";
|
|
4
|
-
import IAIcon from "@internetarchive/ia-icons";
|
|
5
|
-
import { ModalConfig } from "@internetarchive/modal-manager";
|
|
6
|
-
|
|
7
|
-
export default class ItemNavigator extends LitElement {
|
|
8
|
-
static get properties() {
|
|
9
|
-
return {
|
|
10
|
-
baseHost: { type: String },
|
|
11
|
-
item: {
|
|
12
|
-
type: Object,
|
|
13
|
-
converter(value) {
|
|
14
|
-
return !value ? {} : JSON.parse(atob(value));
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
itemType: { type: String },
|
|
18
|
-
menuShortcuts: {
|
|
19
|
-
type: Array,
|
|
20
|
-
hasChanged(newVal, oldVal) {
|
|
21
|
-
if (newVal !== oldVal) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
return false;
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
menuOpened: { type: Boolean },
|
|
28
|
-
menuContents: { type: Array },
|
|
29
|
-
openMenu: { type: String },
|
|
30
|
-
signedIn: {
|
|
31
|
-
type: Boolean,
|
|
32
|
-
converter: (arg) => {
|
|
33
|
-
if (typeof (arg) === 'boolean') {
|
|
34
|
-
return arg;
|
|
35
|
-
}
|
|
36
|
-
return arg === 'true';
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
viewportInFullscreen: { type: Boolean },
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
constructor() {
|
|
44
|
-
/** TODO: Request BookModel.js
|
|
45
|
-
* Request BookNavigator.js
|
|
46
|
-
* Show loading spinner
|
|
47
|
-
* When JS assets loaded:
|
|
48
|
-
* - render book-navigator component
|
|
49
|
-
*/
|
|
50
|
-
super();
|
|
51
|
-
this.baseHost = 'archive.org';
|
|
52
|
-
this.item = {};
|
|
53
|
-
this.itemType = '';
|
|
54
|
-
this.menuOpened = false;
|
|
55
|
-
this.signedIn = false;
|
|
56
|
-
this.menuShortcuts = [];
|
|
57
|
-
this.menuContents = [];
|
|
58
|
-
this.viewportInFullscreen = false;
|
|
59
|
-
this.openMenu = '';
|
|
60
|
-
this.renderModalManager();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
showItemNavigatorModal({ detail }) {
|
|
64
|
-
this.modal.showModal({
|
|
65
|
-
config: this.modalConfig,
|
|
66
|
-
customModalContent: detail.customModalContent,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
closeItemNavigatorModal() {
|
|
71
|
-
this.modal.closeModal();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Event handler - handles viewport slot going into fullscreen
|
|
76
|
-
* @param {Event} e - custom event object
|
|
77
|
-
*/
|
|
78
|
-
manageViewportFullscreen({ detail }) {
|
|
79
|
-
const { isFullScreen } = detail;
|
|
80
|
-
this.viewportInFullscreen = isFullScreen;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Event handler - handles viewport slot going into fullscreen
|
|
85
|
-
* @param {Event} e - custom event object
|
|
86
|
-
* @param {object} event.detail - custom event detail
|
|
87
|
-
* @param {string} detail.action - open, toggle, close
|
|
88
|
-
* @param {string} detail.menuId - menu id to be shown
|
|
89
|
-
*/
|
|
90
|
-
manageSideMenuEvents({ detail }) {
|
|
91
|
-
const { action = '', menuId = '' } = detail;
|
|
92
|
-
if (menuId) {
|
|
93
|
-
if (action === 'open') {
|
|
94
|
-
this.openShortcut(menuId);
|
|
95
|
-
} else if (action === 'toggle') {
|
|
96
|
-
this.openMenu = menuId;
|
|
97
|
-
this.toggleMenu();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
toggleMenu() {
|
|
103
|
-
this.menuOpened = !this.menuOpened;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
closeMenu() {
|
|
107
|
-
this.menuOpened = false;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Opens menu to selected menu
|
|
112
|
-
* @param {string} selectedMenuId
|
|
113
|
-
*/
|
|
114
|
-
openShortcut(selectedMenuId = '') {
|
|
115
|
-
// open sidemenu to proper tab
|
|
116
|
-
this.openMenu = selectedMenuId;
|
|
117
|
-
this.menuOpened = true;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
setOpenMenu({ detail }) {
|
|
121
|
-
const { id } = detail;
|
|
122
|
-
this.openMenu = id === this.openMenu ? '' : id;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
setMenuContents({ detail }) {
|
|
126
|
-
this.menuContents = [...detail];
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
setMenuShortcuts({ detail }) {
|
|
130
|
-
this.menuShortcuts = [...detail];
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* computes classes for item-navigator <section> node
|
|
135
|
-
*/
|
|
136
|
-
get menuClass() {
|
|
137
|
-
const drawerState = this.menuOpened ? 'open' : '';
|
|
138
|
-
const fullscreenState = this.viewportInFullscreen ? 'fullscreen' : '';
|
|
139
|
-
return `${drawerState} ${fullscreenState}`;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
get menuToggleButton() {
|
|
143
|
-
return html`
|
|
144
|
-
<button class="toggle-menu" @click=${this.toggleMenu.bind(this)}>
|
|
145
|
-
<div>
|
|
146
|
-
<ia-icon icon="ellipses" style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon>
|
|
147
|
-
</div>
|
|
148
|
-
</button>
|
|
149
|
-
`;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
get menuSlider() {
|
|
153
|
-
return html`
|
|
154
|
-
<div id="menu">
|
|
155
|
-
<ia-menu-slider
|
|
156
|
-
.menus=${this.menuContents}
|
|
157
|
-
.open=${true}
|
|
158
|
-
.selectedMenu=${this.openMenu}
|
|
159
|
-
@menuTypeSelected=${this.setOpenMenu}
|
|
160
|
-
@menuSliderClosed=${this.closeMenu}
|
|
161
|
-
?manuallyHandleClose=${true}
|
|
162
|
-
?animateMenuOpen=${false}
|
|
163
|
-
></ia-menu-slider>
|
|
164
|
-
</div>
|
|
165
|
-
`;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Returns the shortcut buttons for minimized view
|
|
170
|
-
* @return html
|
|
171
|
-
*/
|
|
172
|
-
get shortcuts() {
|
|
173
|
-
// todo: aria tags
|
|
174
|
-
const shortcuts = this.menuShortcuts.map(({
|
|
175
|
-
icon,
|
|
176
|
-
id,
|
|
177
|
-
}) => html`
|
|
178
|
-
<button class="shortcut ${id}" @click="${(e) => { this.openShortcut(id); }}">
|
|
179
|
-
${icon}
|
|
180
|
-
</button>
|
|
181
|
-
`);
|
|
182
|
-
|
|
183
|
-
return html`<div class="shortcuts">${shortcuts}</div>`;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Returns the side menu given it's open/close state
|
|
188
|
-
* @return html
|
|
189
|
-
*/
|
|
190
|
-
get renderSideMenu() {
|
|
191
|
-
// todo: aria tags
|
|
192
|
-
return html`
|
|
193
|
-
<nav>
|
|
194
|
-
<div class="minimized">
|
|
195
|
-
${this.shortcuts}
|
|
196
|
-
${this.menuToggleButton}
|
|
197
|
-
</div>
|
|
198
|
-
${this.menuSlider}
|
|
199
|
-
</nav>
|
|
200
|
-
`;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Given a itemType, this chooses the proper viewport component
|
|
205
|
-
* @return html
|
|
206
|
-
*/
|
|
207
|
-
get renderViewport() {
|
|
208
|
-
if (this.itemType === 'bookreader') {
|
|
209
|
-
return html`
|
|
210
|
-
<book-navigator
|
|
211
|
-
.baseHost=${this.baseHost}
|
|
212
|
-
.book=${this.item}
|
|
213
|
-
?signedIn=${this.signedIn}
|
|
214
|
-
?sideMenuOpen=${this.menuOpened}
|
|
215
|
-
@ViewportInFullScreen=${this.manageViewportFullscreen}
|
|
216
|
-
@updateSideMenu=${this.manageSideMenuEvents}
|
|
217
|
-
@menuUpdated=${this.setMenuContents}
|
|
218
|
-
@menuShortcutsUpdated=${this.setMenuShortcuts}
|
|
219
|
-
@showItemNavigatorModal=${this.showItemNavigatorModal}
|
|
220
|
-
@closeItemNavigatorModal=${this.closeItemNavigatorModal}
|
|
221
|
-
>
|
|
222
|
-
<div slot="bookreader">
|
|
223
|
-
<slot name="bookreader"></slot>
|
|
224
|
-
</div>
|
|
225
|
-
</book-navigator>
|
|
226
|
-
`;
|
|
227
|
-
}
|
|
228
|
-
return html`<div class="viewport"></div>`;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
renderModalManager() {
|
|
232
|
-
this.modal = document.createElement('modal-manager');
|
|
233
|
-
this.modal.setAttribute('id', 'item-navigator-modal');
|
|
234
|
-
this.modalConfig = new ModalConfig();
|
|
235
|
-
this.modalConfig.title = 'Delete Bookmark';
|
|
236
|
-
this.modalConfig.headline = 'This bookmark contains a note. Deleting it will permanently delete the note. Are you sure?';
|
|
237
|
-
this.modalConfig.headerColor = '#194880';
|
|
238
|
-
document.body.appendChild(this.modal);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
render() {
|
|
242
|
-
const renderMenu = this.menuContents.length || this.menuShortcuts.length;
|
|
243
|
-
return html`
|
|
244
|
-
<div id="frame" class=${this.menuClass}>
|
|
245
|
-
<slot name="item-nav-header"></slot>
|
|
246
|
-
<div class="menu-and-reader">
|
|
247
|
-
${renderMenu ? this.renderSideMenu : nothing}
|
|
248
|
-
<div id="reader">
|
|
249
|
-
${this.renderViewport}
|
|
250
|
-
</div>
|
|
251
|
-
</div>
|
|
252
|
-
</div>
|
|
253
|
-
`;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
static get styles() {
|
|
257
|
-
const subnavWidth = css`var(--menuWidth, 320px)`;
|
|
258
|
-
const tabletPlusQuery = css`@media (min-width: 640px)`;
|
|
259
|
-
const transitionTiming = css`var(--animationTiming, 200ms)`;
|
|
260
|
-
const transitionEffect = css`transform ${transitionTiming} ease-out`;
|
|
261
|
-
|
|
262
|
-
return css`
|
|
263
|
-
#frame {
|
|
264
|
-
position: relative;
|
|
265
|
-
overflow: hidden;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
#frame.fullscreen,
|
|
269
|
-
#frame.fullscreen #reader {
|
|
270
|
-
height: 100vh;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
button {
|
|
274
|
-
cursor: pointer;
|
|
275
|
-
padding: 0;
|
|
276
|
-
border: 0;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
button:focus,
|
|
280
|
-
button:active {
|
|
281
|
-
outline: none;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
.menu-and-reader {
|
|
285
|
-
position: relative;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
nav button {
|
|
289
|
-
background: none;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
nav .minimized {
|
|
293
|
-
background: rgba(0, 0, 0, .7);
|
|
294
|
-
border-bottom-right-radius: 5%;
|
|
295
|
-
position: absolute;
|
|
296
|
-
padding-top: .6rem;
|
|
297
|
-
left: 0;
|
|
298
|
-
width: 4rem;
|
|
299
|
-
z-index: 2;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
nav .minimized button {
|
|
303
|
-
width: var(--iconWidth);
|
|
304
|
-
height: var(--iconHeight);
|
|
305
|
-
margin: auto;
|
|
306
|
-
display: inline-flex;
|
|
307
|
-
vertical-align: middle;
|
|
308
|
-
-webkit-box-align: center;
|
|
309
|
-
align-items: center;
|
|
310
|
-
-webkit-box-pack: center;
|
|
311
|
-
justify-content: center;
|
|
312
|
-
width: 4rem;
|
|
313
|
-
height: 4rem;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
nav .minimized button.toggle-menu > * {
|
|
317
|
-
border: 2px solid var(--iconStrokeColor);
|
|
318
|
-
border-radius: var(--iconWidth);
|
|
319
|
-
width: var(--iconWidth);
|
|
320
|
-
height: var(--iconHeight);
|
|
321
|
-
margin: auto;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
#menu {
|
|
325
|
-
position: absolute;
|
|
326
|
-
top: 0;
|
|
327
|
-
bottom: 0;
|
|
328
|
-
left: 0;
|
|
329
|
-
z-index: 3;
|
|
330
|
-
overflow: hidden;
|
|
331
|
-
transform: translateX(-${subnavWidth});
|
|
332
|
-
width: ${subnavWidth};
|
|
333
|
-
transform: translateX(calc(${subnavWidth} * -1));
|
|
334
|
-
transition: ${transitionEffect};
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
#reader {
|
|
338
|
-
position: relative;
|
|
339
|
-
z-index: 1;
|
|
340
|
-
transition: ${transitionEffect};
|
|
341
|
-
transform: translateX(0);
|
|
342
|
-
width: 100%;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
.open #menu {
|
|
346
|
-
width: ${subnavWidth};
|
|
347
|
-
transform: translateX(0);
|
|
348
|
-
transition: ${transitionEffect};
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
${tabletPlusQuery} {
|
|
352
|
-
.open #reader {
|
|
353
|
-
transition: ${transitionEffect};
|
|
354
|
-
transform: translateX(${subnavWidth});
|
|
355
|
-
width: calc(100% - ${subnavWidth});
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
#loading-indicator {
|
|
360
|
-
display: none;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
#loading-indicator.visible {
|
|
364
|
-
display: block;
|
|
365
|
-
}
|
|
366
|
-
`;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
customElements.define('ia-icon', IAIcon);
|
|
371
|
-
customElements.define('ia-menu-slider', IAMenuSlider);
|
|
372
|
-
customElements.define('item-navigator', ItemNavigator);
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { html } from 'lit-element';
|
|
2
|
-
|
|
3
|
-
/* register subpanel */
|
|
4
|
-
import { IASharingOptions } from '@internetarchive/ia-sharing-options';
|
|
5
|
-
customElements.define('ia-sharing-options', IASharingOptions);
|
|
6
|
-
|
|
7
|
-
export default class {
|
|
8
|
-
constructor(metadata = {}, baseHost, baseItemType) {
|
|
9
|
-
this.itemType = baseItemType;
|
|
10
|
-
const label = `Share this ${this.reconcileItemType}`;
|
|
11
|
-
this.icon = html`<ia-icon icon="share" style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon>`;
|
|
12
|
-
this.label = label;
|
|
13
|
-
this.id = 'share';
|
|
14
|
-
this.component = html`<ia-sharing-options
|
|
15
|
-
identifier="${metadata.identifier}"
|
|
16
|
-
type="book"
|
|
17
|
-
creator="${metadata.creator}"
|
|
18
|
-
description="${metadata.title}"
|
|
19
|
-
baseHost="${baseHost}"
|
|
20
|
-
></ia-sharing-options>`;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
get reconcileItemType() {
|
|
24
|
-
if (this.itemType === 'bookreader') {
|
|
25
|
-
return 'book';
|
|
26
|
-
}
|
|
27
|
-
return 'item';
|
|
28
|
-
}
|
|
29
|
-
}
|