@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
|
@@ -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.text_selection.js","webpack://@internetarchive/bookreader/./src/util/browserSniffing.js","webpack://@internetarchive/bookreader/./src/util/strings.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/function-bind.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/whitespaces.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.assign.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.reflect.construct.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.reflect.get.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js"],"names":["BookReader","window","DEFAULT_OPTIONS","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","Cache","maxSize","entries","entry","length","shift","push","TextSelectionPlugin","options","optionVariables","avoidTspans","isFirefox","pointerEventsOnParagraph","isSafari","djvuPagesPromise","svgParagraphElement","svgWordElement","insertNewlines","pageTextCache","maxWordRendered","$","ajax","type","url","applyVariables","dataType","error","e","undefined","then","res","xmlMap","parseXML","find","index","cachedEntry","x","response","pageIndex","xmlDoc","result","add","XMLpagesArr","$container","addEventListener","event","selection","document","getSelection","clipboardData","setData","toString","preventDefault","svg","classList","remove","on","target","is","stopPropagation","one","off","textSelectingMode","removeAllRanges","defaultMode","$svg","each","i","s","interceptCopy","$svgLayers","getPageText","XMLpage","XMLwidth","attr","XMLheight","totalWords","console","log","createElementNS","setAttribute","append","css","paragraph","words","paragSvg","style","pointerEvents","wordHeightArr","currWord","split","map","parseFloat","left","bottom","right","top","wordHeight","wordTspan","textContent","appendChild","nextWord","leftNext","bottomNext","rightNext","topNext","spaceTspan","createTextNode","sort","paragWordHeight","Math","floor","stopPageFlip","BookreaderWithTextSelection","Object","assign","plugins","textSelection","textSelectionPlugin","vars","init","pageContainer","lastPageIndex","getNumLeafs","mode","constModeThumb","createTextLayer","isChrome","userAgent","navigator","vendor","test","template","overrides","possibleFilters","APPLY_FILTERS","replace","$0","$1","expression","trim","varName","filterNames","defined","value","filters","n","reduce","acc","cur","urlencode","encodeURIComponent"],"mappings":"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","file":"plugins/plugin.text_selection.js","sourcesContent":["//@ts-check\nimport { isFirefox, isSafari } from '../util/browserSniffing.js';\nimport { applyVariables } from '../util/strings.js';\n/** @typedef {import('../util/strings.js').StringWithVars} StringWithVars */\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\nexport const DEFAULT_OPTIONS = {\n enabled: true,\n /** @type {StringWithVars} The URL to fetch the entire DJVU xml. Supports options.vars */\n fullDjvuXmlUrl: null,\n /** @type {StringWithVars} The URL to fetch a single page of the DJVU xml. Supports options.vars. Also has {{pageIndex}} */\n singlePageDjvuXmlUrl: null,\n};\n/** @typedef {typeof DEFAULT_OPTIONS} TextSelectionPluginOptions */\n\n/**\n * @template T\n */\nexport class Cache {\n constructor(maxSize = 10) {\n this.maxSize = maxSize;\n /** @type {T[]} */\n this.entries = [];\n }\n\n /**\n * @param {T} entry\n */\n add(entry) {\n if (this.entries.length >= this.maxSize) {\n this.entries.shift();\n }\n this.entries.push(entry);\n }\n}\n\nexport class TextSelectionPlugin {\n\n constructor(options = DEFAULT_OPTIONS, optionVariables, avoidTspans = isFirefox(), pointerEventsOnParagraph = isSafari()) {\n this.options = options;\n this.optionVariables = optionVariables;\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n this.djvuPagesPromise = null;\n // Using text elements instead of tspans for words because Firefox does not allow svg tspan stretch.\n // Tspans are necessary on Chrome because they prevent newline character after every word when copying\n this.svgParagraphElement = \"text\";\n this.svgWordElement = \"tspan\";\n this.insertNewlines = avoidTspans\n // Safari has a bug where `pointer-events` doesn't work on `<tspans>`. So\n // there we will set `pointer-events: all` on the paragraph element. We don't\n // do this everywhere, because it's a worse experience. Thanks Safari :/\n this.pointerEventsOnParagraph = pointerEventsOnParagraph;\n if (avoidTspans) {\n this.svgParagraphElement = \"g\";\n this.svgWordElement = \"text\";\n }\n\n /** @type {Cache<{index: number, response: any}>} */\n this.pageTextCache = new Cache();\n\n /**\n * Sometimes there are too many words on a page, and the browser becomes near\n * unusable. For now don't render text layer for pages with too many words.\n */\n this.maxWordRendered = 2500;\n }\n\n init() {\n // Only fetch the full djvu xml if the single page url isn't there\n if (this.options.singlePageDjvuXmlUrl) return;\n this.djvuPagesPromise = $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.fullDjvuXmlUrl, this.optionVariables),\n dataType: \"html\",\n error: (e) => undefined\n }).then((res) => {\n try {\n const xmlMap = $.parseXML(res);\n return xmlMap && $(xmlMap).find(\"OBJECT\");\n } catch (e) {\n return undefined;\n }\n });\n }\n\n /**\n * @param {number} index\n * @returns {Promise<HTMLElement|undefined>}\n */\n async getPageText(index) {\n if (this.options.singlePageDjvuXmlUrl) {\n const cachedEntry = this.pageTextCache.entries.find(x => x.index == index);\n if (cachedEntry) {\n return cachedEntry.response;\n }\n return $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.singlePageDjvuXmlUrl, this.optionVariables, { pageIndex: index }),\n dataType: \"html\",\n error: (e) => undefined,\n }).then((res) => {\n try {\n const xmlDoc = $.parseXML(res);\n const result = xmlDoc && $(xmlDoc).find(\"OBJECT\")[0];\n this.pageTextCache.add({ index, response: result });\n return result;\n } catch (e) {\n return undefined;\n }\n });\n } else {\n const XMLpagesArr = await this.djvuPagesPromise;\n if (XMLpagesArr) return XMLpagesArr[index];\n }\n }\n\n /**\n * Intercept copied text to remove any styling applied to it\n * @param {JQuery} $container\n */\n interceptCopy($container) {\n $container[0].addEventListener('copy', (event) => {\n const selection = document.getSelection();\n event.clipboardData.setData('text/plain', selection.toString());\n event.preventDefault();\n });\n }\n\n /**\n * Applies mouse events when in default mode\n * @param {SVGElement} svg\n */\n defaultMode(svg) {\n svg.classList.remove(\"selectingSVG\");\n $(svg).on(\"mousedown.textSelectPluginHandler\", (event) => {\n if (!$(event.target).is(\".BRwordElement\")) return;\n event.stopPropagation();\n svg.classList.add(\"selectingSVG\");\n $(svg).one(\"mouseup.textSelectPluginHandler\", (event) => {\n if (window.getSelection().toString() != \"\") {\n event.stopPropagation();\n $(svg).off(\".textSelectPluginHandler\");\n this.textSelectingMode(svg);\n }\n else svg.classList.remove(\"selectingSVG\");\n })\n })\n }\n\n /**\n * Applies mouse events when in textSelecting mode\n * @param {SVGElement} svg\n */\n textSelectingMode(svg) {\n $(svg).on('mousedown.textSelectPluginHandler', (event) => {\n if (!$(event.target).is(\".BRwordElement\")) {\n if (window.getSelection().toString() != \"\") window.getSelection().removeAllRanges();\n }\n event.stopPropagation();\n })\n $(svg).on('mouseup.textSelectPluginHandler', (event) => {\n event.stopPropagation();\n if (window.getSelection().toString() == \"\") {\n $(svg).off(\".textSelectPluginHandler\");\n this.defaultMode(svg); }\n })\n }\n\n /**\n * Initializes text selection modes if there is an svg on the page\n * @param {JQuery} $container\n */\n stopPageFlip($container) {\n /** @type {JQuery<SVGElement>} */\n const $svg = $container.find('svg.textSelectionSVG');\n if (!$svg.length) return;\n $svg.each((i, s) => this.defaultMode(s))\n this.interceptCopy($container);\n }\n\n /**\n * @param {number} pageIndex\n * @param {JQuery} $container\n */\n async createTextLayer(pageIndex, $container) {\n const $svgLayers = $container.find('.textSelectionSVG');\n if ($svgLayers.length) return;\n const XMLpage = await this.getPageText(pageIndex);\n if (!XMLpage) return;\n const XMLwidth = $(XMLpage).attr(\"width\");\n const XMLheight = $(XMLpage).attr(\"height\");\n\n const totalWords = $(XMLpage).find(\"WORD\").length;\n if (totalWords > this.maxWordRendered) {\n console.log(`Page ${pageIndex} has too many words (${totalWords} > ${this.maxWordRendered}). Not rendering text layer.`);\n return;\n }\n\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n svg.setAttribute(\"viewBox\", `0 0 ${XMLwidth} ${XMLheight}`);\n $container.append(svg);\n svg.setAttribute('class', 'textSelectionSVG');\n svg.setAttribute('preserveAspectRatio', 'none');\n $(svg).css({\n \"width\": \"100%\",\n \"position\": \"absolute\",\n \"height\": \"100%\",\n \"top\": \"0\",\n \"left\": \"0\",\n });\n\n $(XMLpage).find(\"PARAGRAPH\").each((i, paragraph) => {\n // Adding text element for each paragraph in the page\n const words = $(paragraph).find(\"WORD\");\n if (!words.length) return;\n const paragSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", this.svgParagraphElement);\n paragSvg.setAttribute(\"class\", \"BRparagElement\");\n if (this.pointerEventsOnParagraph) {\n paragSvg.style.pointerEvents = \"all\";\n }\n\n const wordHeightArr = [];\n\n for (let i = 0; i < words.length; i++) {\n // Adding tspan for each word in paragraph\n const currWord = words[i];\n // eslint-disable-next-line no-unused-vars\n const [left, bottom, right, top] = $(currWord).attr(\"coords\").split(',').map(parseFloat);\n const wordHeight = bottom - top;\n wordHeightArr.push(wordHeight);\n\n const wordTspan = document.createElementNS(\"http://www.w3.org/2000/svg\", this.svgWordElement);\n wordTspan.setAttribute(\"class\", \"BRwordElement\");\n wordTspan.setAttribute(\"x\", left.toString());\n wordTspan.setAttribute(\"y\", bottom.toString());\n wordTspan.setAttribute(\"textLength\", (right - left).toString());\n wordTspan.setAttribute(\"lengthAdjust\", \"spacingAndGlyphs\");\n wordTspan.textContent = currWord.textContent;\n paragSvg.appendChild(wordTspan);\n\n // Adding spaces after words except at the end of the paragraph\n // TODO: assumes left-to-right text\n if (i < words.length - 1) {\n const nextWord = words[i + 1];\n // eslint-disable-next-line no-unused-vars\n const [leftNext, bottomNext, rightNext, topNext] = $(nextWord).attr(\"coords\").split(',').map(parseFloat);\n const spaceTspan = document.createElementNS(\"http://www.w3.org/2000/svg\", this.svgWordElement);\n spaceTspan.setAttribute(\"class\", \"BRwordElement\");\n spaceTspan.setAttribute(\"x\", right.toString());\n spaceTspan.setAttribute(\"y\", bottom.toString());\n if ((leftNext - right) > 0) spaceTspan.setAttribute(\"textLength\", (leftNext - right).toString());\n spaceTspan.setAttribute(\"lengthAdjust\", \"spacingAndGlyphs\");\n spaceTspan.textContent = \" \";\n paragSvg.appendChild(spaceTspan);\n }\n\n // Adds newline at the end of paragraph on Firefox\n if ((i == words.length - 1 && (this.insertNewlines))) {\n paragSvg.appendChild(document.createTextNode(\"\\n\"));\n }\n }\n\n wordHeightArr.sort();\n const paragWordHeight = wordHeightArr[Math.floor(wordHeightArr.length * 0.85)];\n paragSvg.setAttribute(\"font-size\", paragWordHeight.toString());\n svg.appendChild(paragSvg);\n })\n this.stopPageFlip($container);\n }\n}\n\nexport class BookreaderWithTextSelection extends BookReader {\n init() {\n const options = Object.assign({}, DEFAULT_OPTIONS, this.options.plugins.textSelection);\n if (options.enabled) {\n this.textSelectionPlugin = new TextSelectionPlugin(options, this.options.vars);\n // Write this back; this way the plugin is the source of truth, and BR just\n // contains a reference to it.\n this.options.plugins.textSelection = options;\n this.textSelectionPlugin.init();\n }\n super.init();\n }\n\n /**\n * @param {number} index\n */\n _createPageContainer(index) {\n const pageContainer = super._createPageContainer(index);\n // Disable if thumb mode; it's too janky\n // index can be -1 for \"pre-cover\" region\n // Added checking of lastPageIndex to avoid loop around index value\n const lastPageIndex = this.getNumLeafs() - 1;\n if (this.mode !== this.constModeThumb && (index >= 0 && index <= lastPageIndex)) {\n this.textSelectionPlugin?.createTextLayer(index, pageContainer.$container);\n }\n return pageContainer;\n }\n}\nwindow.BookReader = BookreaderWithTextSelection;\nexport default BookreaderWithTextSelection;\n","\n/**\n * Checks whether the current browser is a Chrome/Chromium browser\n * Code from https://stackoverflow.com/a/4565120/2317712\n * @param {string} [userAgent]\n * @param {string} [vendor]\n * @return {boolean}\n */\nexport function isChrome(userAgent = navigator.userAgent, vendor = navigator.vendor) {\n return /chrome/i.test(userAgent) && /google inc/i.test(vendor);\n}\n\n/**\n * Checks whether the current browser is firefox\n * @param {string} [userAgent]\n * @return {boolean}\n */\nexport function isFirefox(userAgent = navigator.userAgent) {\n return /firefox/i.test(userAgent);\n}\n\n/**\n * Checks whether the current browser is safari\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Browser_Name\n * @param {string} [userAgent]\n * @return {boolean}\n */\nexport function isSafari(userAgent = navigator.userAgent) {\n return /safari/i.test(userAgent) && !/chrome|chromium/i.test(userAgent);\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 */\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","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var 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]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar has = require('../internals/has');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')\n ? descriptor.value\n : descriptor.get === undefined\n ? undefined\n : descriptor.get.call(receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\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"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"plugins/plugin.text_selection.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.text_selection.js","webpack://@internetarchive/bookreader/./node_modules/iso-language-codes/dist/index.mjs","webpack://@internetarchive/bookreader/./src/plugins/tts/utils.js","webpack://@internetarchive/bookreader/./src/BookReader/utils/SelectionObserver.js","webpack://@internetarchive/bookreader/./src/util/TextSelectionManager.js","webpack://@internetarchive/bookreader/./src/util/cache.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","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","//@ts-check\nimport { createDIVPageLayer } from '../BookReader/PageContainer.js';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { applyVariables } from '../util/strings.js';\nimport { Cache } from '../util/cache.js';\nimport { toISO6391 } from './tts/utils.js';\nimport { TextSelectionManager } from '../util/TextSelectionManager.js';\n/** @typedef {import('../util/strings.js').StringWithVars} StringWithVars */\n/** @typedef {import('../BookReader/PageContainer.js').PageContainer} PageContainer */\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\n\nexport class TextSelectionPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {StringWithVars} The URL to fetch the entire DJVU xml. Supports options.vars */\n fullDjvuXmlUrl: null,\n /** @type {StringWithVars} The URL to fetch a single page of the DJVU xml. Supports options.vars. Also has {{pageIndex}} */\n singlePageDjvuXmlUrl: null,\n /** Whether to fetch the XML as a jsonp */\n jsonp: false,\n /** Mox words that can be selected when the text layer is protected */\n maxProtectedWords: 200,\n }\n\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n djvuPagesPromise = null;\n\n /** @type {Cache<{index: number, response: any}>} */\n pageTextCache = new Cache();\n\n /**\n * Sometimes there are too many words on a page, and the browser becomes near\n * unusable. For now don't render text layer for pages with too many words.\n */\n maxWordRendered = 2500;\n\n /**\n * @param {import('../BookReader.js').default} br\n */\n constructor(br) {\n super(br);\n // In the future this should be in the ocr file\n // since a book being right to left doesn't mean the ocr is right to left. But for\n // now we do make that assumption.\n /** Whether the book is right-to-left */\n this.rtl = this.br.pageProgression === 'rl';\n this.textSelectionManager = new TextSelectionManager('.BRtextLayer', this.br, {selectionElement: ['.BRwordElement', '.BRspace']}, this.options.maxProtectedWords);\n }\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.loadData();\n this.textSelectionManager.init();\n }\n\n /**\n * @override\n * @param {PageContainer} pageContainer\n * @returns {PageContainer}\n */\n _configurePageContainer(pageContainer) {\n // Disable if thumb mode; it's too janky\n // .page can be null for \"pre-cover\" region\n if (this.br.mode !== this.br.constModeThumb && pageContainer.page) {\n this.createTextLayer(pageContainer);\n }\n return pageContainer;\n }\n\n loadData() {\n // Only fetch the full djvu xml if the single page url isn't there\n if (this.options.singlePageDjvuXmlUrl) return;\n this.djvuPagesPromise = $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.fullDjvuXmlUrl, this.br.options.vars),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n }).then((res) => {\n try {\n const xmlMap = $.parseXML(res);\n return xmlMap && $(xmlMap).find(\"OBJECT\");\n } catch (e) {\n return undefined;\n }\n });\n }\n\n /**\n * @param {number} index\n * @returns {Promise<HTMLElement|undefined>}\n */\n async getPageText(index) {\n if (this.options.singlePageDjvuXmlUrl) {\n const cachedEntry = this.pageTextCache.entries.find(x => x.index == index);\n if (cachedEntry) {\n return cachedEntry.response;\n }\n const res = await $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.singlePageDjvuXmlUrl, this.br.options.vars, { pageIndex: index }),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n });\n try {\n const xmlDoc = $.parseXML(res);\n const result = xmlDoc && $(xmlDoc).find(\"OBJECT\")[0];\n this.pageTextCache.add({ index, response: result });\n return result;\n } catch (e) {\n return undefined;\n }\n } else {\n const XMLpagesArr = await this.djvuPagesPromise;\n if (XMLpagesArr) return XMLpagesArr[index];\n }\n }\n\n /**\n * @param {PageContainer} pageContainer\n */\n async createTextLayer(pageContainer) {\n const pageIndex = pageContainer.page.index;\n const $container = pageContainer.$container;\n const $textLayers = $container.find('.BRtextLayer');\n if ($textLayers.length) return;\n const XMLpage = await this.getPageText(pageIndex);\n if (!XMLpage) return;\n // Seeing some 0 left and 0 top coordinates in OCR, remove it entirely to prevent odd rendering\n // eg https://archive.org/details/illustratedbooko00robe/page/n11/mode/2up\n $(XMLpage).find(\"WORD\").filter((_, ele) => {\n const [left, , , top] = ele.getAttribute('coords').split(\",\").map(parseFloat);\n if (left == 0 && top == 0) {\n console.error(\"Found invalid ocr word coordinates\");\n return true;\n }\n }).remove();\n recursivelyAddCoords(XMLpage);\n\n const totalWords = $(XMLpage).find(\"WORD\").length;\n if (totalWords > this.maxWordRendered) {\n console.log(`Page ${pageIndex} has too many words (${totalWords} > ${this.maxWordRendered}). Not rendering text layer.`);\n return;\n }\n\n const textLayer = createDIVPageLayer(pageContainer.page, 'BRtextLayer');\n // Have to wait to make sure the page container is actually rendered,\n // otherwise width/height are unset after a mode change.\n await Promise.resolve();\n const ratioW = parseFloat(pageContainer.$container[0].style.width) / pageContainer.page.width;\n const ratioH = parseFloat(pageContainer.$container[0].style.height) / pageContainer.page.height;\n textLayer.style.transform = `scale(${ratioW}, ${ratioH})`;\n const bookLangCode = toISO6391(this.br.options.bookLanguage);\n if (bookLangCode) {\n textLayer.setAttribute(\"lang\", bookLangCode);\n }\n textLayer.setAttribute(\"dir\", this.rtl ? \"rtl\" : \"ltr\");\n\n const ocrParagraphs = $(XMLpage).find(\"PARAGRAPH[coords]\").toArray();\n const paragEls = ocrParagraphs.map(p => {\n const el = this.renderParagraph(p);\n textLayer.appendChild(el);\n return el;\n });\n\n // Fix up paragraph positions\n const paragraphRects = determineRealRects(textLayer, '.BRparagraphElement');\n let yAdded = 0;\n for (const [ocrParagraph, paragEl] of zip(ocrParagraphs, paragEls)) {\n const ocrParagBounds = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const realRect = paragraphRects.get(paragEl);\n const [ocrLeft, , ocrRight, ocrTop] = ocrParagBounds;\n const newStartMargin = this.rtl ? (realRect.right - ocrRight) : (ocrLeft - realRect.left);\n const newTop = ocrTop - (realRect.top + yAdded);\n\n paragEl.style[this.rtl ? 'marginRight' : 'marginLeft'] = `${newStartMargin}px`;\n paragEl.style.marginTop = `${newTop}px`;\n yAdded += newTop;\n textLayer.appendChild(paragEl);\n }\n $container.append(textLayer);\n this.textSelectionManager.stopPageFlip($container);\n this.br.trigger('textLayerRendered', {\n pageIndex,\n pageContainer,\n });\n }\n\n /**\n * @param {HTMLElement} ocrParagraph\n * @returns {HTMLParagraphElement}\n */\n renderParagraph(ocrParagraph) {\n const paragEl = document.createElement('p');\n paragEl.classList.add('BRparagraphElement');\n if (ocrParagraph.getAttribute(\"x-role\")) {\n paragEl.classList.add('ocr-role-header-footer');\n paragEl.ariaHidden = \"true\";\n }\n const [paragLeft, paragBottom, paragRight, paragTop] = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const wordHeightArr = [];\n const lines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n if (!lines.length) return paragEl;\n\n\n for (const [prevLine, line, nextLine] of lookAroundWindow(genMap(lines, augmentLine))) {\n const isLastLineOfParagraph = line.ocrElement == lines[lines.length - 1];\n const lineEl = document.createElement('span');\n lineEl.classList.add('BRlineElement');\n\n for (const [wordIndex, currWord] of line.words.entries()) {\n const [, bottom, right, top] = $(currWord).attr(\"coords\").split(',').map(parseFloat);\n const wordHeight = bottom - top;\n wordHeightArr.push(wordHeight);\n\n if (wordIndex == 0 && prevLine?.lastWord.textContent.trim().endsWith('-')) {\n // ideally prefer the next line to determine the left position,\n // since the previous line could be the first line of the paragraph\n // and hence have an incorrectly indented first word.\n // E.g. https://archive.org/details/driitaleofdaring00bachuoft/page/360/mode/2up\n const [newLeft, , , ] = $((nextLine || prevLine).firstWord).attr(\"coords\").split(',').map(parseFloat);\n $(currWord).attr(\"coords\", `${newLeft},${bottom},${right},${top}`);\n }\n\n const wordEl = document.createElement('span');\n wordEl.setAttribute(\"class\", \"BRwordElement\");\n wordEl.textContent = currWord.textContent.trim();\n\n if (wordIndex > 0) {\n const space = document.createElement('span');\n space.classList.add('BRspace');\n space.textContent = ' ';\n // Hack to make screen readers (eg NVDA) read spaces correctly;\n // otherwise they ignore elements with just whitespace.\n space.setAttribute('aria-label', '\\u00A0');\n lineEl.append(space);\n\n // Edge ignores empty elements (like BRspace), so add another\n // space to ensure Edge's ReadAloud works correctly.\n lineEl.appendChild(document.createTextNode(' '));\n }\n\n lineEl.appendChild(wordEl);\n }\n\n const hasHyphen = line.lastWord.textContent.trim().endsWith('-');\n const lastWordEl = lineEl.children[lineEl.children.length - 1];\n if (hasHyphen && !isLastLineOfParagraph) {\n lastWordEl.textContent = lastWordEl.textContent.trim().slice(0, -1);\n lastWordEl.classList.add('BRwordElement--hyphen');\n }\n\n paragEl.appendChild(lineEl);\n if (!isLastLineOfParagraph && !hasHyphen) {\n // Edge does not correctly have spaces between the lines.\n paragEl.appendChild(document.createTextNode(' '));\n }\n }\n\n wordHeightArr.sort((a, b) => a - b);\n const paragWordHeight = wordHeightArr[Math.floor(wordHeightArr.length * 0.85)] + 4;\n paragEl.style.left = `${paragLeft}px`;\n paragEl.style.top = `${paragTop}px`;\n paragEl.style.width = `${paragRight - paragLeft}px`;\n paragEl.style.height = `${paragBottom - paragTop}px`;\n paragEl.style.fontSize = `${paragWordHeight}px`;\n\n // Fix up sizes - stretch/crush words as necessary using letter spacing\n let wordRects = determineRealRects(paragEl, '.BRwordElement');\n const ocrWords = $(ocrParagraph).find(\"WORD\").toArray();\n const wordEls = paragEl.querySelectorAll('.BRwordElement');\n for (const [ocrWord, wordEl] of zip(ocrWords, wordEls)) {\n const realRect = wordRects.get(wordEl);\n const [left, , right ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n let ocrWidth = right - left;\n // Some books (eg theworksofplato01platiala) have a space _inside_ the <WORD>\n // element. That makes it impossible to determine the correct positining\n // of everything, but to avoid the BRspace's being width 0, which makes selection\n // janky on Chrome Android, assume the space is the same width as one of the\n // letters.\n if (ocrWord.textContent.endsWith(' ')) {\n ocrWidth = ocrWidth * (ocrWord.textContent.length - 1) / ocrWord.textContent.length;\n }\n const diff = ocrWidth - realRect.width;\n wordEl.style.letterSpacing = `${diff / (ocrWord.textContent.length - 1)}px`;\n }\n\n // Stretch/crush lines as necessary using line spacing\n // Recompute rects after letter spacing\n wordRects = determineRealRects(paragEl, '.BRwordElement');\n const spaceRects = determineRealRects(paragEl, '.BRspace');\n\n const ocrLines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n const lineEls = Array.from(paragEl.querySelectorAll('.BRlineElement'));\n\n let ySoFar = paragTop;\n for (const [ocrLine, lineEl] of zip(ocrLines, lineEls)) {\n // shift words using marginLeft to align with the correct x position\n const words = $(ocrLine).find(\"WORD\").toArray();\n // const ocrLineLeft = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[0])));\n let xSoFar = this.rtl ? paragRight : paragLeft;\n for (const [ocrWord, wordEl] of zip(words, lineEl.querySelectorAll('.BRwordElement'))) {\n // start of line, need to compute the offset relative to the OCR words\n const wordRect = wordRects.get(wordEl);\n const [ocrLeft, , ocrRight ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n const diff = (this.rtl ? -(ocrRight - xSoFar) : ocrLeft - xSoFar);\n\n if (wordEl.previousElementSibling) {\n const space = wordEl.previousElementSibling;\n space.style.letterSpacing = `${diff - spaceRects.get(space).width}px`;\n } else {\n wordEl.style[this.rtl ? 'paddingRight' : 'paddingLeft'] = `${diff}px`;\n }\n if (this.rtl) xSoFar -= diff + wordRect.width;\n else xSoFar += diff + wordRect.width;\n }\n // And also fix y position\n const ocrLineTop = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[3])));\n const diff = ocrLineTop - ySoFar;\n if (lineEl.previousElementSibling) {\n lineEl.previousElementSibling.style.lineHeight = `${diff}px`;\n ySoFar += diff;\n }\n }\n\n // The last line will have a line height subtracting from the paragraph height\n lineEls[lineEls.length - 1].style.lineHeight = `${paragBottom - ySoFar}px`;\n\n // Edge does not include a newline for some reason when copying/pasting the <p> els\n paragEl.appendChild(document.createElement('br'));\n return paragEl;\n }\n}\n\nBookReader?.registerPlugin('textSelection', TextSelectionPlugin);\n\n\n/**\n * @param {HTMLElement} parentEl\n * @param {string} selector\n * @returns {Map<Element, Rect>}\n */\nfunction determineRealRects(parentEl, selector) {\n const initals = {\n position: parentEl.style.position,\n visibility: parentEl.style.visibility,\n top: parentEl.style.top,\n left: parentEl.style.left,\n transform: parentEl.style.transform,\n };\n parentEl.style.position = 'absolute';\n parentEl.style.visibility = 'hidden';\n parentEl.style.top = '0';\n parentEl.style.left = '0';\n parentEl.style.transform = 'none';\n document.body.appendChild(parentEl);\n const rects = new Map(\n Array.from(parentEl.querySelectorAll(selector))\n .map(wordEl => {\n const origRect = wordEl.getBoundingClientRect();\n return [wordEl, new Rect(\n origRect.left + window.scrollX,\n origRect.top + window.scrollY,\n origRect.width,\n origRect.height,\n )];\n }),\n );\n document.body.removeChild(parentEl);\n Object.assign(parentEl.style, initals);\n return rects;\n}\n\n/**\n * @param {HTMLElement} line\n */\nfunction augmentLine(line) {\n const words = $(line).find(\"WORD\").toArray();\n return {\n ocrElement: line,\n words,\n firstWord: words[0],\n lastWord: words[words.length - 1],\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) return x;\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * @template TFrom, TTo\n * Generator version of map\n * @param {Iterable<TFrom>} gen\n * @param {function(TFrom): TTo} fn\n * @returns {Iterable<TTo>}\n */\nexport function* genMap(gen, fn) {\n for (const x of gen) yield fn(x);\n}\n\n/**\n * @template T\n * Generator that provides a sliding window of 3 elements,\n * prev, current, and next.\n * @param {Iterable<T>} gen\n * @returns {Iterable<[T | undefined, T, T | undefined]>}\n */\nexport function* lookAroundWindow(gen) {\n let prev = undefined;\n let cur = undefined;\n let next = undefined;\n for (const x of gen) {\n if (typeof cur !== 'undefined') {\n next = x;\n yield [prev, cur, next];\n }\n prev = cur;\n cur = x;\n next = undefined;\n }\n\n if (typeof cur !== 'undefined') {\n yield [prev, cur, next];\n }\n}\n\n/**\n * @template T1, T2\n * Lazy zip implementation to avoid importing lodash\n * Expects iterators to be of the same length\n * @param {Iterable<T1>} gen1\n * @param {Iterable<T2>} gen2\n * @returns {Iterable<[T1, T2]>}\n */\nexport function* zip(gen1, gen2) {\n const it1 = gen1[Symbol.iterator]();\n const it2 = gen2[Symbol.iterator]();\n while (true) {\n const r1 = it1.next();\n const r2 = it2.next();\n if (r1.done && r2.done) {\n return;\n }\n if (r1.done || r2.done) {\n throw new Error('zip: one of the iterators is done');\n }\n yield [r1.value, r2.value];\n }\n}\n\n/**\n * [left, bottom, right, top]\n * @param {Array<[number, number, number, number]>} bounds\n * @returns {[number, number, number, number]}\n */\nfunction determineBounds(bounds) {\n let leftMost = Infinity;\n let bottomMost = -Infinity;\n let rightMost = -Infinity;\n let topMost = Infinity;\n\n for (const [left, bottom, right, top] of bounds) {\n leftMost = Math.min(leftMost, left);\n bottomMost = Math.max(bottomMost, bottom);\n rightMost = Math.max(rightMost, right);\n topMost = Math.min(topMost, top);\n }\n\n return [leftMost, bottomMost, rightMost, topMost];\n}\n\n/**\n * Recursively traverses the XML tree and adds coords\n * which are the bounding box of all child coords\n * @param {Element} xmlEl\n */\nfunction recursivelyAddCoords(xmlEl) {\n if ($(xmlEl).attr('coords') || !xmlEl.children) {\n return;\n }\n\n const children = $(xmlEl).children().toArray();\n if (children.length === 0) {\n return;\n }\n\n for (const child of children) {\n recursivelyAddCoords(child);\n }\n\n const childCoords = [];\n\n for (const child of children) {\n if (!$(child).attr('coords')) continue;\n childCoords.push($(child).attr('coords').split(',').map(parseFloat));\n }\n\n const boundingCoords = determineBounds(childCoords);\n if (Math.abs(boundingCoords[0]) != Infinity) {\n $(xmlEl).attr('coords', boundingCoords.join(','));\n }\n}\n\n/**\n * Basically a polyfill for the native DOMRect class\n */\nclass Rect {\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n get right() { return this.x + this.width; }\n get bottom() { return this.y + this.height; }\n get top() { return this.y; }\n get left() { return this.x; }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\n}\n","// src/data.ts\nvar data_default = [\n [\"Serbian\", \"\\u0441\\u0440\\u043F\\u0441\\u043A\\u0438 \\u0458\\u0435\\u0437\\u0438\\u043A\", \"sr\", \"srp\", \"srp\"],\n [\"Romanian, Moldavian, Moldovan\", \"Rom\\xE2n\\u0103\", \"ro\", \"ron\", \"rum\"],\n [\"Sichuan Yi, Nuosu\", \"\\uA188\\uA320\\uA4BF Nuosuhxop\", \"ii\", \"iii\", \"iii\"],\n [\"Tahitian\", \"Reo Tahiti\", \"ty\", \"tah\", \"tah\"],\n [\"Tagalog\", \"Wikang Tagalog\", \"tl\", \"tgl\", \"tgl\"],\n [\"Yiddish\", \"\\u05D9\\u05D9\\u05B4\\u05D3\\u05D9\\u05E9\", \"yi\", \"yid\", \"yid\"],\n [\"Akan\", \"Akan\", \"ak\", \"aka\", \"aka\"],\n [\"Malay\", \"Bahasa Melayu, \\u0628\\u0647\\u0627\\u0633 \\u0645\\u0644\\u0627\\u064A\\u0648\", \"ms\", \"msa\", \"may\"],\n [\"Arabic\", \"\\u0627\\u0644\\u0639\\u0631\\u0628\\u064A\\u0629\", \"ar\", \"ara\", \"ara\"],\n [\"Norwegian\", \"Norsk\", \"no\", \"nor\", \"nor\"],\n [\"Ojibwa\", \"\\u140A\\u14C2\\u1511\\u14C8\\u142F\\u14A7\\u140E\\u14D0\", \"oj\", \"oji\", \"oji\"],\n [\"Fulah\", \"Fulfulde, Pulaar, Pular\", \"ff\", \"ful\", \"ful\"],\n [\"Persian\", \"\\u0641\\u0627\\u0631\\u0633\\u06CC\", \"fa\", \"fas\", \"per\"],\n [\"Albanian\", \"Shqip\", \"sq\", \"sqi\", \"alb\"],\n [\"Aymara\", \"aymar aru\", \"ay\", \"aym\", \"aym\"],\n [\"Azerbaijani\", \"az\\u0259rbaycan dili\", \"az\", \"aze\", \"aze\"],\n [\"Chinese\", \"\\u4E2D\\u6587 (Zh\\u014Dngw\\xE9n), \\u6C49\\u8BED, \\u6F22\\u8A9E\", \"zh\", \"zho\", \"chi\"],\n [\"Cree\", \"\\u14C0\\u1426\\u1403\\u152D\\u140D\\u140F\\u1423\", \"cr\", \"cre\", \"cre\"],\n [\"Estonian\", \"eesti, eesti keel\", \"et\", \"est\", \"est\"],\n [\"Guaran\\xED\", \"Ava\\xF1e'\\u1EBD\", \"gn\", \"grn\", \"grn\"],\n [\"Inupiaq\", \"I\\xF1upiaq, I\\xF1upiatun\", \"ik\", \"ipk\", \"ipk\"],\n [\"Inuktitut\", \"\\u1403\\u14C4\\u1483\\u144E\\u1450\\u1466\", \"iu\", \"iku\", \"iku\"],\n [\"Kanuri\", \"Kanuri\", \"kr\", \"kau\", \"kau\"],\n [\"Komi\", \"\\u043A\\u043E\\u043C\\u0438 \\u043A\\u044B\\u0432\", \"kv\", \"kom\", \"kom\"],\n [\"Kongo\", \"Kikongo\", \"kg\", \"kon\", \"kon\"],\n [\"Kurdish\", \"Kurd\\xEE, \\u0623\\u06C7\\u0632\\u0628\\u06D0\\u0643\", \"ku\", \"kur\", \"kur\"],\n [\"Latvian\", \"latvie\\u0161u valoda\", \"lv\", \"lav\", \"lav\"],\n [\"Malagasy\", \"fiteny malagasy\", \"mg\", \"mlg\", \"mlg\"],\n [\"Mongolian\", \"\\u041C\\u043E\\u043D\\u0433\\u043E\\u043B \\u0445\\u044D\\u043B\", \"mn\", \"mon\", \"mon\"],\n [\"Oromo\", \"Afaan Oromoo\", \"om\", \"orm\", \"orm\"],\n [\"Pashto, Pushto\", \"\\u067E\\u069A\\u062A\\u0648\", \"ps\", \"pus\", \"pus\"],\n [\"Quechua\", \"Runa Simi, Kichwa\", \"qu\", \"que\", \"que\"],\n [\"Sardinian\", \"sardu\", \"sc\", \"srd\", \"srd\"],\n [\"Swahili\", \"Kiswahili\", \"sw\", \"swa\", \"swa\"],\n [\"Uzbek\", \"O\\u02BBzbek, \\u040E\\u0437\\u0431\\u0435\\u043A, \", \"uz\", \"uzb\", \"uzb\"],\n [\"Zhuang, Chuang\", \"Sa\\u026F cue\\u014B\\u0185, Saw cuengh\", \"za\", \"zha\", \"zha\"],\n [\"Bislama\", \"Bislama\", \"bi\", \"bis\", \"bis\"],\n [\"Norwegian Bokm\\xE5l\", \"Norsk Bokm\\xE5l\", \"nb\", \"nob\", \"nob\"],\n [\"Norwegian Nynorsk\", \"Norsk Nynorsk\", \"nn\", \"nno\", \"nno\"],\n [\"Indonesian\", \"Bahasa Indonesia\", \"id\", \"ind\", \"ind\"],\n [\"Twi\", \"Twi\", \"tw\", \"twi\", \"twi\"],\n [\"Esperanto\", \"Esperanto\", \"eo\", \"epo\", \"epo\"],\n [\"Interlingua\", \"Interlingua\", \"ia\", \"ina\", \"ina\"],\n [\"Interlingue\", \"Originally called Occidental; then Interlingue after WWII\", \"ie\", \"ile\", \"ile\"],\n [\"Ido\", \"Ido\", \"io\", \"ido\", \"ido\"],\n [\"Volap\\xFCk\", \"Volap\\xFCk\", \"vo\", \"vol\", \"vol\"],\n [\"Bihari languages\", \"\\u092D\\u094B\\u091C\\u092A\\u0941\\u0930\\u0940\", \"bh\", \"bih\", \"bih\"],\n [\"Hebrew (modern)\", \"\\u05E2\\u05D1\\u05E8\\u05D9\\u05EA\", \"he\", \"heb\", \"heb\"],\n [\"Sanskrit\", \"\\u0938\\u0902\\u0938\\u094D\\u0915\\u0943\\u0924\\u092E\\u094D\", \"sa\", \"san\", \"san\"],\n [\"Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian\", \"\\u0469\\u0437\\u044B\\u043A\\u044A \\u0441\\u043B\\u043E\\u0432\\u0463\\u043D\\u044C\\u0441\\u043A\\u044A\", \"cu\", \"chu\", \"chu\"],\n [\"Pali\", \"\\u092A\\u093E\\u0934\\u093F\", \"pi\", \"pli\", \"pli\"],\n [\"Avestan\", \"avesta\", \"ae\", \"ave\", \"ave\"],\n [\"Latin\", \"latine, lingua latina\", \"la\", \"lat\", \"lat\"],\n [\"Armenian\", \"\\u0540\\u0561\\u0575\\u0565\\u0580\\u0565\\u0576\", \"hy\", \"hye\", \"arm\"],\n [\"Swati\", \"SiSwati\", \"ss\", \"ssw\", \"ssw\"],\n [\"Tibetan\", \"\\u0F56\\u0F7C\\u0F51\\u0F0B\\u0F61\\u0F72\\u0F42\", \"bo\", \"bod\", \"tib\"],\n [\"South Ndebele\", \"isiNdebele\", \"nr\", \"nbl\", \"nbl\"],\n [\"Slovene\", \"Slovenski Jezik, Sloven\\u0161\\u010Dina\", \"sl\", \"slv\", \"slv\"],\n [\"Oriya\", \"\\u0B13\\u0B21\\u0B3C\\u0B3F\\u0B06\", \"or\", \"ori\", \"ori\"],\n [\"North Ndebele\", \"isiNdebele\", \"nd\", \"nde\", \"nde\"],\n [\"Nauru\", \"Dorerin Naoero\", \"na\", \"nau\", \"nau\"],\n [\"Maori\", \"te reo M\\u0101ori\", \"mi\", \"mri\", \"mao\"],\n [\"Marathi\", \"\\u092E\\u0930\\u093E\\u0920\\u0940\", \"mr\", \"mar\", \"mar\"],\n [\"Luba-Katanga\", \"Kiluba\", \"lu\", \"lub\", \"lub\"],\n [\"Rundi\", \"Ikirundi\", \"rn\", \"run\", \"run\"],\n [\"Central Khmer\", \"\\u1781\\u17D2\\u1798\\u17C2\\u179A, \\u1781\\u17C1\\u1798\\u179A\\u1797\\u17B6\\u179F\\u17B6, \\u1797\\u17B6\\u179F\\u17B6\\u1781\\u17D2\\u1798\\u17C2\\u179A\", \"km\", \"khm\", \"khm\"],\n [\"Western Frisian\", \"Frysk\", \"fy\", \"fry\", \"fry\"],\n [\"Bengali\", \"\\u09AC\\u09BE\\u0982\\u09B2\\u09BE\", \"bn\", \"ben\", \"ben\"],\n [\"Avaric\", \"\\u0430\\u0432\\u0430\\u0440 \\u043C\\u0430\\u0446\\u04C0, \\u043C\\u0430\\u0433\\u04C0\\u0430\\u0440\\u0443\\u043B \\u043C\\u0430\\u0446\\u04C0\", \"av\", \"ava\", \"ava\"],\n [\"Abkhazian\", \"\\u0430\\u04A7\\u0441\\u0443\\u0430 \\u0431\\u044B\\u0437\\u0448\\u04D9\\u0430, \\u0430\\u04A7\\u0441\\u0448\\u04D9\\u0430\", \"ab\", \"abk\", \"abk\"],\n [\"Afar\", \"Afaraf\", \"aa\", \"aar\", \"aar\"],\n [\"Afrikaans\", \"Afrikaans\", \"af\", \"afr\", \"afr\"],\n [\"Amharic\", \"\\u12A0\\u121B\\u122D\\u129B\", \"am\", \"amh\", \"amh\"],\n [\"Aragonese\", \"aragon\\xE9s\", \"an\", \"arg\", \"arg\"],\n [\"Assamese\", \"\\u0985\\u09B8\\u09AE\\u09C0\\u09AF\\u09BC\\u09BE\", \"as\", \"asm\", \"asm\"],\n [\"Bambara\", \"bamanankan\", \"bm\", \"bam\", \"bam\"],\n [\"Bashkir\", \"\\u0431\\u0430\\u0448\\u04A1\\u043E\\u0440\\u0442 \\u0442\\u0435\\u043B\\u0435\", \"ba\", \"bak\", \"bak\"],\n [\"Basque\", \"euskara, euskera\", \"eu\", \"eus\", \"baq\"],\n [\"Belarusian\", \"\\u0431\\u0435\\u043B\\u0430\\u0440\\u0443\\u0441\\u043A\\u0430\\u044F \\u043C\\u043E\\u0432\\u0430\", \"be\", \"bel\", \"bel\"],\n [\"Bosnian\", \"bosanski jezik\", \"bs\", \"bos\", \"bos\"],\n [\"Breton\", \"brezhoneg\", \"br\", \"bre\", \"bre\"],\n [\"Bulgarian\", \"\\u0431\\u044A\\u043B\\u0433\\u0430\\u0440\\u0441\\u043A\\u0438 \\u0435\\u0437\\u0438\\u043A\", \"bg\", \"bul\", \"bul\"],\n [\"Burmese\", \"\\u1017\\u1019\\u102C\\u1005\\u102C\", \"my\", \"mya\", \"bur\"],\n [\"Catalan, Valencian\", \"catal\\xE0, valenci\\xE0\", \"ca\", \"cat\", \"cat\"],\n [\"Chamorro\", \"Chamoru\", \"ch\", \"cha\", \"cha\"],\n [\"Chechen\", \"\\u043D\\u043E\\u0445\\u0447\\u0438\\u0439\\u043D \\u043C\\u043E\\u0442\\u0442\", \"ce\", \"che\", \"che\"],\n [\"Chichewa, Chewa, Nyanja\", \"chiChe\\u0175a, chinyanja\", \"ny\", \"nya\", \"nya\"],\n [\"Chuvash\", \"\\u0447\\u04D1\\u0432\\u0430\\u0448 \\u0447\\u04D7\\u043B\\u0445\\u0438\", \"cv\", \"chv\", \"chv\"],\n [\"Cornish\", \"Kernewek\", \"kw\", \"cor\", \"cor\"],\n [\"Corsican\", \"corsu, lingua corsa\", \"co\", \"cos\", \"cos\"],\n [\"Croatian\", \"hrvatski jezik\", \"hr\", \"hrv\", \"hrv\"],\n [\"Czech\", \"\\u010De\\u0161tina, \\u010Desk\\xFD jazyk\", \"cs\", \"ces\", \"cze\"],\n [\"Danish\", \"dansk\", \"da\", \"dan\", \"dan\"],\n [\"Divehi, Dhivehi, Maldivian\", \"\\u078B\\u07A8\\u0788\\u07AC\\u0780\\u07A8\", \"dv\", \"div\", \"div\"],\n [\"Dutch, Flemish\", \"Nederlands, Vlaams\", \"nl\", \"nld\", \"dut\"],\n [\"Dzongkha\", \"\\u0F62\\u0FAB\\u0F7C\\u0F44\\u0F0B\\u0F41\", \"dz\", \"dzo\", \"dzo\"],\n [\"English\", \"English\", \"en\", \"eng\", \"eng\"],\n [\"Ewe\", \"E\\u028Begbe\", \"ee\", \"ewe\", \"ewe\"],\n [\"Faroese\", \"f\\xF8royskt\", \"fo\", \"fao\", \"fao\"],\n [\"Fijian\", \"vosa Vakaviti\", \"fj\", \"fij\", \"fij\"],\n [\"Finnish\", \"suomi, suomen kieli\", \"fi\", \"fin\", \"fin\"],\n [\"French\", \"fran\\xE7ais, langue fran\\xE7aise\", \"fr\", \"fra\", \"fre\"],\n [\"Galician\", \"Galego\", \"gl\", \"glg\", \"glg\"],\n [\"Georgian\", \"\\u10E5\\u10D0\\u10E0\\u10D7\\u10E3\\u10DA\\u10D8\", \"ka\", \"kat\", \"geo\"],\n [\"German\", \"Deutsch\", \"de\", \"deu\", \"ger\"],\n [\"Greek (modern)\", \"\\u03B5\\u03BB\\u03BB\\u03B7\\u03BD\\u03B9\\u03BA\\u03AC\", \"el\", \"ell\", \"gre\"],\n [\"Gujarati\", \"\\u0A97\\u0AC1\\u0A9C\\u0AB0\\u0ABE\\u0AA4\\u0AC0\", \"gu\", \"guj\", \"guj\"],\n [\"Haitian, Haitian Creole\", \"Krey\\xF2l ayisyen\", \"ht\", \"hat\", \"hat\"],\n [\"Hausa\", \"(Hausa) \\u0647\\u064E\\u0648\\u064F\\u0633\\u064E\", \"ha\", \"hau\", \"hau\"],\n [\"Herero\", \"Otjiherero\", \"hz\", \"her\", \"her\"],\n [\"Hindi\", \"\\u0939\\u093F\\u0928\\u094D\\u0926\\u0940, \\u0939\\u093F\\u0902\\u0926\\u0940\", \"hi\", \"hin\", \"hin\"],\n [\"Hiri Motu\", \"Hiri Motu\", \"ho\", \"hmo\", \"hmo\"],\n [\"Hungarian\", \"magyar\", \"hu\", \"hun\", \"hun\"],\n [\"Irish\", \"Gaeilge\", \"ga\", \"gle\", \"gle\"],\n [\"Igbo\", \"As\\u1EE5s\\u1EE5 Igbo\", \"ig\", \"ibo\", \"ibo\"],\n [\"Icelandic\", \"\\xCDslenska\", \"is\", \"isl\", \"ice\"],\n [\"Italian\", \"Italiano\", \"it\", \"ita\", \"ita\"],\n [\"Japanese\", \"\\u65E5\\u672C\\u8A9E (\\u306B\\u307B\\u3093\\u3054)\", \"ja\", \"jpn\", \"jpn\"],\n [\"Javanese\", \"\\uA9A7\\uA9B1\\uA997\\uA9AE, Basa Jawa\", \"jv\", \"jav\", \"jav\"],\n [\"Kalaallisut, Greenlandic\", \"kalaallisut, kalaallit oqaasii\", \"kl\", \"kal\", \"kal\"],\n [\"Kannada\", \"\\u0C95\\u0CA8\\u0CCD\\u0CA8\\u0CA1\", \"kn\", \"kan\", \"kan\"],\n [\"Kashmiri\", \"\\u0915\\u0936\\u094D\\u092E\\u0940\\u0930\\u0940, \\u0643\\u0634\\u0645\\u064A\\u0631\\u064A\", \"ks\", \"kas\", \"kas\"],\n [\"Kazakh\", \"\\u049B\\u0430\\u0437\\u0430\\u049B \\u0442\\u0456\\u043B\\u0456\", \"kk\", \"kaz\", \"kaz\"],\n [\"Kikuyu, Gikuyu\", \"G\\u0129k\\u0169y\\u0169\", \"ki\", \"kik\", \"kik\"],\n [\"Kinyarwanda\", \"Ikinyarwanda\", \"rw\", \"kin\", \"kin\"],\n [\"Kirghiz, Kyrgyz\", \"\\u041A\\u044B\\u0440\\u0433\\u044B\\u0437\\u0447\\u0430, \\u041A\\u044B\\u0440\\u0433\\u044B\\u0437 \\u0442\\u0438\\u043B\\u0438\", \"ky\", \"kir\", \"kir\"],\n [\"Korean\", \"\\uD55C\\uAD6D\\uC5B4\", \"ko\", \"kor\", \"kor\"],\n [\"Kuanyama, Kwanyama\", \"Kuanyama\", \"kj\", \"kua\", \"kua\"],\n [\"Luxembourgish, Letzeburgesch\", \"L\\xEBtzebuergesch\", \"lb\", \"ltz\", \"ltz\"],\n [\"Ganda\", \"Luganda\", \"lg\", \"lug\", \"lug\"],\n [\"Limburgan, Limburger, Limburgish\", \"Limburgs\", \"li\", \"lim\", \"lim\"],\n [\"Lingala\", \"Ling\\xE1la\", \"ln\", \"lin\", \"lin\"],\n [\"Lao\", \"\\u0E9E\\u0EB2\\u0EAA\\u0EB2\\u0EA5\\u0EB2\\u0EA7\", \"lo\", \"lao\", \"lao\"],\n [\"Lithuanian\", \"lietuvi\\u0173 kalba\", \"lt\", \"lit\", \"lit\"],\n [\"Manx\", \"Gaelg, Gailck\", \"gv\", \"glv\", \"glv\"],\n [\"Macedonian\", \"\\u043C\\u0430\\u043A\\u0435\\u0434\\u043E\\u043D\\u0441\\u043A\\u0438 \\u0458\\u0430\\u0437\\u0438\\u043A\", \"mk\", \"mkd\", \"mac\"],\n [\"Malayalam\", \"\\u0D2E\\u0D32\\u0D2F\\u0D3E\\u0D33\\u0D02\", \"ml\", \"mal\", \"mal\"],\n [\"Maltese\", \"Malti\", \"mt\", \"mlt\", \"mlt\"],\n [\"Marshallese\", \"Kajin M\\u0327aje\\u013C\", \"mh\", \"mah\", \"mah\"],\n [\"Navajo, Navaho\", \"Din\\xE9 bizaad\", \"nv\", \"nav\", \"nav\"],\n [\"Nepali\", \"\\u0928\\u0947\\u092A\\u093E\\u0932\\u0940\", \"ne\", \"nep\", \"nep\"],\n [\"Ndonga\", \"Owambo\", \"ng\", \"ndo\", \"ndo\"],\n [\"Occitan\", \"occitan, lenga d'\\xF2c\", \"oc\", \"oci\", \"oci\"],\n [\"Ossetian, Ossetic\", \"\\u0438\\u0440\\u043E\\u043D \\xE6\\u0432\\u0437\\u0430\\u0433\", \"os\", \"oss\", \"oss\"],\n [\"Panjabi, Punjabi\", \"\\u0A2A\\u0A70\\u0A1C\\u0A3E\\u0A2C\\u0A40\", \"pa\", \"pan\", \"pan\"],\n [\"Polish\", \"j\\u0119zyk polski, polszczyzna\", \"pl\", \"pol\", \"pol\"],\n [\"Portuguese\", \"Portugu\\xEAs\", \"pt\", \"por\", \"por\"],\n [\"Romansh\", \"Rumantsch Grischun\", \"rm\", \"roh\", \"roh\"],\n [\"Russian\", \"\\u0440\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\", \"ru\", \"rus\", \"rus\"],\n [\"Sindhi\", \"\\u0938\\u093F\\u0928\\u094D\\u0927\\u0940, \\u0633\\u0646\\u068C\\u064A\\u060C \\u0633\\u0646\\u062F\\u06BE\\u06CC\", \"sd\", \"snd\", \"snd\"],\n [\"Northern Sami\", \"Davvis\\xE1megiella\", \"se\", \"sme\", \"sme\"],\n [\"Samoan\", \"gagana fa'a Samoa\", \"sm\", \"smo\", \"smo\"],\n [\"Sango\", \"y\\xE2ng\\xE2 t\\xEE s\\xE4ng\\xF6\", \"sg\", \"sag\", \"sag\"],\n [\"Gaelic, Scottish Gaelic\", \"G\\xE0idhlig\", \"gd\", \"gla\", \"gla\"],\n [\"Shona\", \"chiShona\", \"sn\", \"sna\", \"sna\"],\n [\"Sinhala, Sinhalese\", \"\\u0DC3\\u0DD2\\u0D82\\u0DC4\\u0DBD\", \"si\", \"sin\", \"sin\"],\n [\"Slovak\", \"Sloven\\u010Dina, Slovensk\\xFD Jazyk\", \"sk\", \"slk\", \"slo\"],\n [\"Somali\", \"Soomaaliga, af Soomaali\", \"so\", \"som\", \"som\"],\n [\"Southern Sotho\", \"Sesotho\", \"st\", \"sot\", \"sot\"],\n [\"Spanish, Castilian\", \"Espa\\xF1ol\", \"es\", \"spa\", \"spa\"],\n [\"Sundanese\", \"Basa Sunda\", \"su\", \"sun\", \"sun\"],\n [\"Swedish\", \"Svenska\", \"sv\", \"swe\", \"swe\"],\n [\"Tamil\", \"\\u0BA4\\u0BAE\\u0BBF\\u0BB4\\u0BCD\", \"ta\", \"tam\", \"tam\"],\n [\"Telugu\", \"\\u0C24\\u0C46\\u0C32\\u0C41\\u0C17\\u0C41\", \"te\", \"tel\", \"tel\"],\n [\"Tajik\", \"\\u0442\\u043E\\u04B7\\u0438\\u043A\\u04E3, to\\xE7ik\\u012B, \\u062A\\u0627\\u062C\\u06CC\\u06A9\\u06CC\", \"tg\", \"tgk\", \"tgk\"],\n [\"Thai\", \"\\u0E44\\u0E17\\u0E22\", \"th\", \"tha\", \"tha\"],\n [\"Tigrinya\", \"\\u1275\\u130D\\u122D\\u129B\", \"ti\", \"tir\", \"tir\"],\n [\"Turkmen\", \"T\\xFCrkmen, \\u0422\\u04AF\\u0440\\u043A\\u043C\\u0435\\u043D\", \"tk\", \"tuk\", \"tuk\"],\n [\"Tswana\", \"Setswana\", \"tn\", \"tsn\", \"tsn\"],\n [\"Tongan (Tonga Islands)\", \"Faka Tonga\", \"to\", \"ton\", \"ton\"],\n [\"Turkish\", \"T\\xFCrk\\xE7e\", \"tr\", \"tur\", \"tur\"],\n [\"Tsonga\", \"Xitsonga\", \"ts\", \"tso\", \"tso\"],\n [\"Tatar\", \"\\u0442\\u0430\\u0442\\u0430\\u0440 \\u0442\\u0435\\u043B\\u0435, tatar tele\", \"tt\", \"tat\", \"tat\"],\n [\"Uighur, Uyghur\", \"\\u0626\\u06C7\\u064A\\u063A\\u06C7\\u0631\\u0686\\u06D5, Uyghurche\", \"ug\", \"uig\", \"uig\"],\n [\"Ukrainian\", \"\\u0423\\u043A\\u0440\\u0430\\u0457\\u043D\\u0441\\u044C\\u043A\\u0430\", \"uk\", \"ukr\", \"ukr\"],\n [\"Urdu\", \"\\u0627\\u0631\\u062F\\u0648\", \"ur\", \"urd\", \"urd\"],\n [\"Venda\", \"Tshiven\\u1E13a\", \"ve\", \"ven\", \"ven\"],\n [\"Vietnamese\", \"Ti\\u1EBFng Vi\\u1EC7t\", \"vi\", \"vie\", \"vie\"],\n [\"Walloon\", \"Walon\", \"wa\", \"wln\", \"wln\"],\n [\"Welsh\", \"Cymraeg\", \"cy\", \"cym\", \"wel\"],\n [\"Wolof\", \"Wollof\", \"wo\", \"wol\", \"wol\"],\n [\"Xhosa\", \"isiXhosa\", \"xh\", \"xho\", \"xho\"],\n [\"Yoruba\", \"Yor\\xF9b\\xE1\", \"yo\", \"yor\", \"yor\"],\n [\"Zulu\", \"isiZulu\", \"zu\", \"zul\", \"zul\"]\n];\n\n// src/index.ts\nvar codes = [];\nvar by639_1 = {};\nvar by639_2T = {};\nvar by639_2B = {};\ndata_default.forEach((row) => {\n var code = {\n name: row[0],\n nativeName: row[1],\n iso639_1: row[2],\n iso639_2T: row[3],\n iso639_2B: row[4]\n };\n by639_1[row[2]] = by639_2T[row[3]] = by639_2B[row[4]] = code;\n codes.push(code);\n});\nvar src_default = codes;\nexport {\n by639_1,\n by639_2B,\n by639_2T,\n codes,\n src_default as default\n};\n//# sourceMappingURL=index.mjs.map","// @ts-check\nimport langs from 'iso-language-codes';\n\n/**\n * Use regex to approximate word count in a string\n * @param {string} text\n * @return {number}\n */\nexport function approximateWordCount(text) {\n const m = text.match(/\\S+/g);\n return m ? m.length : 0;\n}\n\n/**\n * Checks whether the current browser is on android\n * @param {string} [userAgent]\n * @return {boolean}\n */\nexport function isAndroid(userAgent = navigator.userAgent) {\n return /android/i.test(userAgent);\n}\n\n/** @type {{[lang: string]: string}} */\n// Handle odd one-off language pairs that might show up over time\nconst specialLangs = {\n \"zh-hans\": \"中文 (Zhōngwén)\",\n};\n\n/**\n * @typedef {string} ISO6391\n * Language code in ISO 639-1 format. e.g. en, fr, zh\n **/\n\n/**\n * @param {string} language in some format\n * @return {ISO6391?}\n */\nexport function toISO6391(language) {\n if (!language) return null;\n language = language.toLocaleLowerCase();\n if (specialLangs[language]) {\n return language;\n }\n const codeObj = (\n findLanguage(language, ['iso639_1']) ||\n findLanguage(language, ['iso639_2T']) ||\n findLanguage(language, ['iso639_2B', 'name', 'nativeName'])\n );\n if (codeObj) return codeObj.iso639_1;\n return null;\n}\n\n/**\n *\n * @param {string} language\n * @returns {string}\n */\nexport function toNativeName(language) {\n if (!language) return null;\n language = language.toLocaleLowerCase();\n if (specialLangs[language]) {\n return specialLangs[language];\n }\n const codeObj = (\n findLanguage(language, ['iso639_1']) ||\n findLanguage(language, ['iso639_2T']) ||\n findLanguage(language, ['iso639_2B', 'name', 'nativeName'])\n );\n if (codeObj?.nativeName) return codeObj.nativeName.split(\", \")[0];\n return null;\n}\n\n/** @typedef {import('iso-language-codes').Code} Code */\n\n/**\n * @param {string} language\n * @param {Array<'iso639_1' | 'iso639_2T' | 'iso639_2B' | 'nativeName' | 'name'>} fields\n * @returns {Code | null}\n */\nfunction findLanguage(language, fields) {\n if (!language) return null;\n language = language.toLowerCase();\n for (const lang of langs) {\n for (const codeType of fields) {\n if (lang[codeType]?.toLowerCase().split(\", \").includes(language)) {\n return lang;\n }\n }\n }\n return null;\n}\n\n/**\n * Checks whether the current browser supports localStorage or\n * if the current context has access to it.\n * @return {boolean}\n */\nexport function hasLocalStorage() {\n try {\n return !!window.localStorage;\n } catch (e) {\n // Will throw in sandboxed iframe\n // DOMException: Window.localStorage getter: Forbidden in a sandboxed document without the 'allow-same-origin' flag.\n return false;\n }\n}\n\nexport const DEBUG_READ_ALOUD = location.toString().indexOf('_debugReadAloud=true') != -1;\n\nexport async function checkIfFiresPause() {\n // Pick some random text so that if it accidentally speaks, it's not too annoying\n const u = new SpeechSynthesisUtterance(\"Loading\");\n let calledPause = false;\n u.addEventListener('pause', () => calledPause = true);\n speechSynthesis.speak(u);\n await new Promise(res => setTimeout(res, 10));\n speechSynthesis.pause();\n return calledPause;\n}\n","// @ts-check\nexport class SelectionObserver {\n selecting = false;\n startedInSelector = false;\n /** @type {HTMLElement} */\n target = null;\n\n /**\n * @param {string} selector\n * @param {function('started' | 'cleared', HTMLElement): any} handler\n */\n constructor(selector, handler) {\n this.selector = selector;\n this.handler = handler;\n }\n\n attach() {\n // We can't just use selectstart, because safari on iOS just\n // randomly decides when to fire it 😤\n // document.addEventListener(\"selectstart\", this._onSelectStart);\n // This has to be on document :/\n document.addEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n detach() {\n document.removeEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n _onSelectionChange = () => {\n const sel = window.getSelection();\n\n if (!this.selecting && sel.toString()) {\n const target = $(sel.anchorNode).closest(this.selector)[0];\n if (!target) return;\n this.target = target;\n this.selecting = true;\n this.handler('started', this.target);\n }\n\n if (this.selecting && (sel.isCollapsed || !sel.toString() || !$(sel.anchorNode).closest(this.selector)[0])) {\n this.selecting = false;\n this.handler('cleared', this.target);\n }\n };\n}\n","// @ts-check\nimport { SelectionObserver } from \"../BookReader/utils/SelectionObserver.js\";\n\nexport class TextSelectionManager {\n options = {\n // Current Translation plugin implementation does not have words, will limit to one BRlineElement for now\n maxProtectedWords: 200,\n }\n\n /**\n * @param {string} layer Selector for the text layer to manage\n * @param {import('../BookReader.js').default} br\n * @param {Object} options\n * @param {string[]} options.selectionElement CSS selector for elements that count as \"words\" for selection limiting\n * @param {number} [maxWords] Maximum number of words allowed to be selected\n */\n constructor (layer, br, { selectionElement }, maxWords) {\n /** @type {string} */\n this.layer = layer;\n /** @type {import('../BookReader.js').default} */\n this.br = br;\n /** @type {string[]} */\n this.selectionElement = selectionElement;\n this.selectionObserver = new SelectionObserver(this.layer, this._onSelectionChange);\n this.options.maxProtectedWords = maxWords ? maxWords : 200;\n }\n\n init() {\n this.attach();\n new SelectionObserver(this.layer, (selectEvent) => {\n // Track how often selection is used\n if (selectEvent == 'started') {\n this.br.plugins.archiveAnalytics?.sendEvent('BookReader', 'SelectStart');\n\n // Set a class on the page to avoid hiding it when zooming/etc\n this.br.refs.$br.find('.BRpagecontainer--hasSelection').removeClass('BRpagecontainer--hasSelection');\n $(window.getSelection().anchorNode).closest('.BRpagecontainer').addClass('BRpagecontainer--hasSelection');\n }\n }).attach();\n }\n\n // Need attach + detach methods to toggle w/ Translation plugin\n attach() {\n this.selectionObserver.attach();\n if (this.br.protected) {\n document.addEventListener('selectionchange', this._limitSelection);\n // Prevent right clicking when selected text\n $(document.body).on('contextmenu dragstart copy', (e) => {\n const selection = document.getSelection();\n if (selection?.toString()) {\n const intersectsTextLayer = $(this.layer)\n .toArray()\n .some(el => selection.containsNode(el, true));\n if (intersectsTextLayer) {\n e.preventDefault();\n return false;\n }\n }\n });\n }\n }\n\n detach() {\n this.selectionObserver.detach();\n if (this.br.protected) {\n document.removeEventListener('selectionchange', this._limitSelection);\n }\n }\n\n /**\n * @param {'started' | 'cleared'} type\n * @param {HTMLElement} target\n */\n _onSelectionChange = (type, target) => {\n if (type === 'started') {\n this.textSelectingMode(target);\n } else if (type === 'cleared') {\n this.defaultMode(target);\n } else {\n throw new Error(`Unknown type ${type}`);\n }\n }\n\n /**\n * Intercept copied text to remove any styling applied to it\n * @param {JQuery} $container\n */\n interceptCopy ($container) {\n $container[0].addEventListener('copy', (event) => {\n const selection = document.getSelection();\n event.clipboardData.setData('text/plain', selection.toString());\n event.preventDefault();\n });\n }\n\n /**\n * Initializes text selection modes if there is a text layer on the page\n * @param {JQuery} $container\n */\n stopPageFlip($container) {\n /** @type {JQuery<HTMLElement>} */\n const $textLayer = $container.find(this.layer);\n if (!$textLayer.length) return;\n $textLayer.each((i, s) => this.defaultMode(s));\n if (!this.br.protected) {\n this.interceptCopy($container);\n }\n }\n\n /**\n * Applies mouse events when in default mode\n * @param {HTMLElement} textLayer\n */\n defaultMode (textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n textLayer.style.pointerEvents = \"none\";\n $pageContainer.find(\"img\").css(\"pointer-events\", \"auto\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n const startedMouseDown = this.mouseIsDown;\n let skipNextMouseup = this.mouseIsDown;\n if (startedMouseDown) {\n textLayer.style.pointerEvents = \"auto\";\n }\n\n // Need to stop propagation to prevent DragScrollable from\n // blocking selection\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n if ($(event.target).is(this.selectionElement.join(\", \"))) {\n event.stopPropagation();\n }\n });\n\n $(textLayer).on(\"mouseup.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = false;\n textLayer.style.pointerEvents = \"none\";\n if (skipNextMouseup) {\n skipNextMouseup = false;\n event.stopPropagation();\n }\n });\n }\n\n /**\n * This mode is active while there is a selection on the given textLayer\n * @param {HTMLElement} textLayer\n */\n textSelectingMode(textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n // Make text layer consume all events\n textLayer.style.pointerEvents = \"all\";\n // Block img from getting long-press to save while selecting\n $pageContainer.find(\"img\").css(\"pointer-events\", \"none\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n event.stopPropagation();\n });\n\n // Prevent page flip on click\n $(textLayer).on('mouseup.textSelectPluginHandler', (event) => {\n this.mouseIsDown = false;\n event.stopPropagation();\n });\n }\n\n\n _limitSelection = () => {\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n\n // Check if range.startContainer is inside the sub-tree of .BRContainer\n const startInBr = !!range.startContainer.parentElement.closest('.BRcontainer');\n const endInBr = !!range.endContainer.parentElement.closest('.BRcontainer');\n if (!startInBr && !endInBr) return;\n if (!startInBr || !endInBr) {\n // weird case, just clear the selection\n selection.removeAllRanges();\n return;\n }\n\n // Find the last allowed word in the selection\n const lastAllowedWord = genAt(\n genFilter(\n walkBetweenNodes(range.startContainer, range.endContainer),\n (node) => node.classList?.contains(\n this.selectionElement[0].replace(\".\", \"\"),\n ),\n ),\n this.options.maxProtectedWords - 1,\n );\n\n if (!lastAllowedWord || range.endContainer.parentNode == lastAllowedWord) return;\n\n const newRange = document.createRange();\n newRange.setStart(range.startContainer, range.startOffset);\n newRange.setEnd(lastAllowedWord.firstChild, lastAllowedWord.textContent.length);\n\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) {\n return x;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\n}\n","/**\n * @template T\n */\nexport class Cache {\n constructor(maxSize = 10) {\n this.maxSize = maxSize;\n /** @type {T[]} */\n this.entries = [];\n }\n\n /**\n * @param {T} entry\n */\n add(entry) {\n if (this.entries.length >= this.maxSize) {\n this.entries.shift();\n }\n this.entries.push(entry);\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","BookReaderPlugin","br","_classCallCheck","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","_marked2","_regenerator","m","genMap","_marked3","lookAroundWindow","_marked4","zip","_toConsumableArray","r","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","Symbol","iterator","from","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableSpread","_createForOfIteratorHelper","e","t","length","_n","F","s","n","done","f","o","a","u","call","next","return","_slicedToArray","_arrayWithHoles","l","i","push","_iterableToArrayLimit","_nonIterableRest","toString","slice","constructor","test","toStringTag","c","prototype","Generator","create","_regeneratorDefine2","p","y","G","v","d","bind","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","_getPrototypeOf","_setPrototypeOf","_defineProperty","_typeof","toPrimitive","String","_toPrimitive","BookReader","window","TextSelectionPlugin","_BookReaderPlugin","_this","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","jsonp","maxProtectedWords","Cache","rtl","pageProgression","textSelectionManager","TextSelectionManager","selectionElement","_inherits","loadData","init","mode","constModeThumb","page","createTextLayer","djvuPagesPromise","ajax","type","url","applyVariables","vars","dataType","cache","xhrFields","withCredentials","protected","error","res","xmlMap","parseXML","find","_getPageText","_callee","index","cachedEntry","xmlDoc","result","XMLpagesArr","_context","pageTextCache","entries","x","response","pageIndex","add","undefined","_x","_createTextLayer","_callee2","$container","XMLpage","totalWords","textLayer","ratioW","ratioH","bookLangCode","ocrParagraphs","paragEls","paragraphRects","yAdded","_iterator","_step","_step$value","ocrParagraph","paragEl","ocrParagBounds","realRect","_ocrParagBounds","ocrLeft","ocrRight","ocrTop","newStartMargin","newTop","_this2","_context2","getPageText","filter","_","ele","_ele$getAttribute$spl2","getAttribute","split","map","parseFloat","left","top","console","remove","recursivelyAddCoords","maxWordRendered","log","concat","createDIVPageLayer","style","width","height","transform","toISO6391","bookLanguage","setAttribute","toArray","el","renderParagraph","appendChild","determineRealRects","attr","get","right","marginTop","err","append","stopPageFlip","trigger","_x2","document","createElement","classList","ariaHidden","_$$attr$split$map2","paragLeft","paragBottom","paragRight","paragTop","wordHeightArr","lines","_step2","_iterator2","augmentLine","_step2$value","prevLine","line","nextLine","isLastLineOfParagraph","ocrElement","lineEl","_step5","_iterator5","words","_step5$value","wordIndex","currWord","_$$attr$split$map4","bottom","wordHeight","lastWord","textContent","endsWith","newLeft","firstWord","wordEl","space","createTextNode","hasHyphen","lastWordEl","children","sort","b","paragWordHeight","Math","floor","fontSize","_step3","wordRects","_iterator3","querySelectorAll","_step3$value","ocrWord","_$$attr$split$map8","ocrWidth","diff","letterSpacing","_step4","spaceRects","ocrLines","lineEls","ySoFar","_iterator4","_step6","_step4$value","ocrLine","xSoFar","_iterator6","_step6$value","wordRect","_$$attr$split$map0","previousElementSibling","min","lineHeight","parentEl","selector","initals","position","visibility","body","rects","Map","origRect","getBoundingClientRect","Rect","scrollX","scrollY","removeChild","gen","fn","_iterator9","_step9","_t3","_context4","prev","cur","_iterator0","_step0","_t4","_context5","gen1","gen2","it1","it2","r1","r2","_context6","Error","xmlEl","_step10","_iterator10","_step11","childCoords","_iterator11","child","boundingCoords","bounds","_step1","leftMost","Infinity","bottomMost","rightMost","topMost","_iterator1","_step1$value","max","determineBounds","abs","join","registerPlugin","codes","by639_1","by639_2T","by639_2B","forEach","row","code","nativeName","iso639_1","iso639_2T","iso639_2B","src_default","approximateWordCount","text","match","isAndroid","userAgent","navigator","specialLangs","language","toLocaleLowerCase","codeObj","findLanguage","toNativeName","fields","toLowerCase","langs","lang","_lang$codeType","includes","hasLocalStorage","localStorage","DEBUG_READ_ALOUD","location","indexOf","SelectionObserver","handler","sel","getSelection","selecting","anchorNode","closest","isCollapsed","addEventListener","_onSelectionChange","removeEventListener","_marked","genFilter","walkBetweenNodes","layer","_ref","maxWords","textSelectingMode","defaultMode","selection","rangeCount","range","getRangeAt","startInBr","startContainer","parentElement","endInBr","endContainer","lastAllowedWord","iterable","genAt","node","_node$classList","contains","replace","parentNode","newRange","createRange","setStart","startOffset","setEnd","firstChild","removeAllRanges","addRange","selectionObserver","attach","selectEvent","_this2$br$plugins$arc","plugins","archiveAnalytics","sendEvent","refs","$br","removeClass","addClass","_this3","_limitSelection","on","some","containsNode","preventDefault","detach","event","clipboardData","setData","_this4","$textLayer","each","interceptCopy","_this5","$pageContainer","pointerEvents","css","off","startedMouseDown","mouseIsDown","skipNextMouseup","is","stopPropagation","_this6","_t","start","end","walk","_context3","_ref2","_ref2$children","_ref2$parents","parents","_ref2$siblings","siblings","sib","_regeneratorValues","nextSibling","maxSize","entry","shift","template","overrides","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","varName","filterNames","reduce","acc","urlencode","encodeURIComponent"],"sourceRoot":""}
|