@internetarchive/bookreader 5.0.0-38 → 5.0.0-39
Sign up to get free protection for your applications and to get access to all the features.
- package/BookReader/BookReader.css +8 -0
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +99 -75
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/icons/magnify-minus.svg +1 -1
- package/BookReader/icons/magnify-plus.svg +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -1
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +1 -1
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.mobile_nav.js +1 -1
- package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +1 -1
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1 -1
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +1 -1
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/CHANGELOG.md +5 -0
- package/README.md +13 -0
- package/package.json +14 -14
- package/renovate.json +1 -1
- package/src/BookReader/Mode1UpLit.js +7 -1
- package/src/BookReader/Mode2Up.js +11 -0
- package/src/BookReader/ModeSmoothZoom.js +2 -0
- package/src/BookReader/PageContainer.js +10 -4
- package/src/BookReader/utils/ScrollClassAdder.js +31 -0
- package/src/assets/icons/magnify-minus.svg +3 -7
- package/src/assets/icons/magnify-plus.svg +3 -7
- package/src/css/_TextSelection.scss +13 -0
- package/tests/jest/BookReader/PageContainer.test.js +5 -4
- package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
- package/.husky/_/husky.sh +0 -30
- package/stat/BookNavigator/BookModel.js +0 -14
- package/stat/BookNavigator/BookNavigator.js +0 -524
- package/stat/BookNavigator/assets/bookmark-colors.js +0 -15
- package/stat/BookNavigator/assets/button-base.js +0 -61
- package/stat/BookNavigator/assets/ia-logo.js +0 -17
- package/stat/BookNavigator/assets/icon_checkmark.js +0 -6
- package/stat/BookNavigator/assets/icon_close.js +0 -3
- package/stat/BookNavigator/assets/icon_sort_asc.js +0 -5
- package/stat/BookNavigator/assets/icon_sort_desc.js +0 -5
- package/stat/BookNavigator/assets/icon_sort_neutral.js +0 -5
- package/stat/BookNavigator/assets/icon_volumes.js +0 -11
- package/stat/BookNavigator/bookmarks/bookmark-button.js +0 -64
- package/stat/BookNavigator/bookmarks/bookmark-edit.js +0 -215
- package/stat/BookNavigator/bookmarks/bookmarks-list.js +0 -285
- package/stat/BookNavigator/bookmarks/bookmarks-loginCTA.js +0 -28
- package/stat/BookNavigator/bookmarks/bookmarks-provider.js +0 -56
- package/stat/BookNavigator/bookmarks/ia-bookmarks.js +0 -523
- package/stat/BookNavigator/br-fullscreen-mgr.js +0 -82
- package/stat/BookNavigator/delete-modal-actions.js +0 -49
- package/stat/BookNavigator/downloads/downloads-provider.js +0 -72
- package/stat/BookNavigator/downloads/downloads.js +0 -139
- package/stat/BookNavigator/provider-config.js +0 -0
- package/stat/BookNavigator/search/a-search-result.js +0 -55
- package/stat/BookNavigator/search/search-provider.js +0 -180
- package/stat/BookNavigator/search/search-results.js +0 -360
- package/stat/BookNavigator/sharing.js +0 -31
- package/stat/BookNavigator/visual-adjustments/visual-adjustments-provider.js +0 -94
- package/stat/BookNavigator/visual-adjustments/visual-adjustments.js +0 -280
- package/stat/BookNavigator/volumes/volumes-provider.js +0 -83
- package/stat/BookNavigator/volumes/volumes.js +0 -178
- package/stat/BookReader/BookModel.js +0 -518
- package/stat/BookReader/DebugConsole.js +0 -54
- package/stat/BookReader/DragScrollable.js +0 -233
- package/stat/BookReader/ImageCache.js +0 -116
- package/stat/BookReader/Mode1Up.js +0 -102
- package/stat/BookReader/Mode1UpLit.js +0 -434
- package/stat/BookReader/Mode2Up.js +0 -1372
- package/stat/BookReader/ModeSmoothZoom.js +0 -177
- package/stat/BookReader/ModeThumb.js +0 -344
- package/stat/BookReader/Navbar/Navbar.js +0 -310
- package/stat/BookReader/PageContainer.js +0 -120
- package/stat/BookReader/ReduceSet.js +0 -26
- package/stat/BookReader/Toolbar/Toolbar.js +0 -384
- package/stat/BookReader/events.js +0 -20
- package/stat/BookReader/options.js +0 -324
- package/stat/BookReader/utils/HTMLDimensionsCacher.js +0 -44
- package/stat/BookReader/utils/classes.js +0 -36
- package/stat/BookReader/utils.js +0 -240
- package/stat/BookReader.js +0 -2550
- package/stat/BookReaderComponent/BookReaderComponent.js +0 -117
- package/stat/assets/icons/1up.svg +0 -12
- package/stat/assets/icons/2up.svg +0 -15
- package/stat/assets/icons/advance.svg +0 -26
- package/stat/assets/icons/chevron-right.svg +0 -1
- package/stat/assets/icons/close-circle-dark.svg +0 -1
- package/stat/assets/icons/close-circle.svg +0 -1
- package/stat/assets/icons/fullscreen.svg +0 -17
- package/stat/assets/icons/fullscreen_exit.svg +0 -17
- package/stat/assets/icons/hamburger.svg +0 -15
- package/stat/assets/icons/left-arrow.svg +0 -12
- package/stat/assets/icons/magnify-minus.svg +0 -16
- package/stat/assets/icons/magnify-plus.svg +0 -17
- package/stat/assets/icons/magnify.svg +0 -15
- package/stat/assets/icons/pause.svg +0 -23
- package/stat/assets/icons/play.svg +0 -22
- package/stat/assets/icons/playback-speed.svg +0 -34
- package/stat/assets/icons/read-aloud.svg +0 -22
- package/stat/assets/icons/review.svg +0 -22
- package/stat/assets/icons/thumbnails.svg +0 -17
- package/stat/assets/icons/voice.svg +0 -1
- package/stat/assets/icons/volume-full.svg +0 -22
- package/stat/assets/images/BRicons.png +0 -0
- package/stat/assets/images/BRicons.svg +0 -94
- package/stat/assets/images/BRicons_ia.png +0 -0
- package/stat/assets/images/back_pages.png +0 -0
- package/stat/assets/images/book_bottom_icon.png +0 -0
- package/stat/assets/images/book_down_icon.png +0 -0
- package/stat/assets/images/book_left_icon.png +0 -0
- package/stat/assets/images/book_leftmost_icon.png +0 -0
- package/stat/assets/images/book_right_icon.png +0 -0
- package/stat/assets/images/book_rightmost_icon.png +0 -0
- package/stat/assets/images/book_top_icon.png +0 -0
- package/stat/assets/images/book_up_icon.png +0 -0
- package/stat/assets/images/books_graphic.svg +0 -177
- package/stat/assets/images/booksplit.png +0 -0
- package/stat/assets/images/control_pause_icon.png +0 -0
- package/stat/assets/images/control_play_icon.png +0 -0
- package/stat/assets/images/embed_icon.png +0 -0
- package/stat/assets/images/icon-home-ia.png +0 -0
- package/stat/assets/images/icon_OL-logo-xs.png +0 -0
- package/stat/assets/images/icon_alert-xs.png +0 -0
- package/stat/assets/images/icon_book.svg +0 -12
- package/stat/assets/images/icon_bookmark.svg +0 -12
- package/stat/assets/images/icon_close-pop.png +0 -0
- package/stat/assets/images/icon_download.png +0 -0
- package/stat/assets/images/icon_gear.svg +0 -14
- package/stat/assets/images/icon_hamburger.svg +0 -20
- package/stat/assets/images/icon_home.png +0 -0
- package/stat/assets/images/icon_home.svg +0 -21
- package/stat/assets/images/icon_home_ia.png +0 -0
- package/stat/assets/images/icon_indicator.png +0 -0
- package/stat/assets/images/icon_info.svg +0 -11
- package/stat/assets/images/icon_one_page.svg +0 -8
- package/stat/assets/images/icon_pause.svg +0 -1
- package/stat/assets/images/icon_play.svg +0 -1
- package/stat/assets/images/icon_playback-rate.svg +0 -15
- package/stat/assets/images/icon_return.png +0 -0
- package/stat/assets/images/icon_search_button.svg +0 -8
- package/stat/assets/images/icon_share.svg +0 -9
- package/stat/assets/images/icon_skip-ahead.svg +0 -6
- package/stat/assets/images/icon_skip-back.svg +0 -13
- package/stat/assets/images/icon_speaker.svg +0 -18
- package/stat/assets/images/icon_speaker_open.svg +0 -10
- package/stat/assets/images/icon_thumbnails.svg +0 -12
- package/stat/assets/images/icon_toc.svg +0 -5
- package/stat/assets/images/icon_two_pages.svg +0 -9
- package/stat/assets/images/icon_zoomer.png +0 -0
- package/stat/assets/images/loading.gif +0 -0
- package/stat/assets/images/logo_icon.png +0 -0
- package/stat/assets/images/marker_chap-off.png +0 -0
- package/stat/assets/images/marker_chap-off.svg +0 -11
- package/stat/assets/images/marker_chap-off_ia.png +0 -0
- package/stat/assets/images/marker_chap-on.png +0 -0
- package/stat/assets/images/marker_chap-on.svg +0 -11
- package/stat/assets/images/marker_srch-on.svg +0 -11
- package/stat/assets/images/marker_srchchap-off.png +0 -0
- package/stat/assets/images/marker_srchchap-on.png +0 -0
- package/stat/assets/images/nav_control-dn.png +0 -0
- package/stat/assets/images/nav_control-dn_ia.png +0 -0
- package/stat/assets/images/nav_control-up.png +0 -0
- package/stat/assets/images/nav_control-up_ia.png +0 -0
- package/stat/assets/images/nav_control.png +0 -0
- package/stat/assets/images/one_page_mode_icon.png +0 -0
- package/stat/assets/images/paper-badge.png +0 -0
- package/stat/assets/images/print_icon.png +0 -0
- package/stat/assets/images/progressbar.gif +0 -0
- package/stat/assets/images/right_edges.png +0 -0
- package/stat/assets/images/slider.png +0 -0
- package/stat/assets/images/slider_ia.png +0 -0
- package/stat/assets/images/thumbnail_mode_icon.png +0 -0
- package/stat/assets/images/transparent.png +0 -0
- package/stat/assets/images/two_page_mode_icon.png +0 -0
- package/stat/assets/images/zoom_in_icon.png +0 -0
- package/stat/assets/images/zoom_out_icon.png +0 -0
- package/stat/css/BookReader.scss +0 -89
- package/stat/css/_BRBookmarks.scss +0 -29
- package/stat/css/_BRComponent.scss +0 -13
- package/stat/css/_BRfloat.scss +0 -197
- package/stat/css/_BRicon.scss +0 -48
- package/stat/css/_BRmain.scss +0 -251
- package/stat/css/_BRnav.scss +0 -359
- package/stat/css/_BRpages.scss +0 -139
- package/stat/css/_BRsearch.scss +0 -226
- package/stat/css/_BRtoolbar.scss +0 -84
- package/stat/css/_BRvendor.scss +0 -5
- package/stat/css/_MobileNav.scss +0 -194
- package/stat/css/_TextSelection.scss +0 -32
- package/stat/css/_colorbox.scss +0 -52
- package/stat/css/_controls.scss +0 -253
- package/stat/css/_icons.scss +0 -121
- package/stat/jquery-wrapper.js +0 -4
- package/stat/plugins/plugin.archive_analytics.js +0 -86
- package/stat/plugins/plugin.autoplay.js +0 -129
- package/stat/plugins/plugin.chapters.js +0 -248
- package/stat/plugins/plugin.iframe.js +0 -48
- package/stat/plugins/plugin.mobile_nav.js +0 -288
- package/stat/plugins/plugin.resume.js +0 -68
- package/stat/plugins/plugin.text_selection.js +0 -291
- package/stat/plugins/plugin.url.js +0 -198
- package/stat/plugins/plugin.vendor-fullscreen.js +0 -247
- package/stat/plugins/search/plugin.search.js +0 -439
- package/stat/plugins/search/view.js +0 -439
- package/stat/plugins/tts/AbstractTTSEngine.js +0 -249
- package/stat/plugins/tts/FestivalTTSEngine.js +0 -169
- package/stat/plugins/tts/PageChunk.js +0 -107
- package/stat/plugins/tts/PageChunkIterator.js +0 -163
- package/stat/plugins/tts/WebTTSEngine.js +0 -357
- package/stat/plugins/tts/plugin.tts.js +0 -357
- package/stat/plugins/tts/tooltip_dict.js +0 -15
- package/stat/plugins/tts/utils.js +0 -91
- package/stat/util/browserSniffing.js +0 -30
- package/stat/util/debouncer.js +0 -26
- package/stat/util/docCookies.js +0 -67
- package/stat/util/strings.js +0 -34
@@ -46,11 +46,17 @@ export class PageContainer {
|
|
46
46
|
const alreadyLoaded = this.imageCache.imageLoaded(this.page.index, reduce);
|
47
47
|
const nextBestLoadedReduce = !alreadyLoaded && this.imageCache.getBestLoadedReduce(this.page.index, reduce);
|
48
48
|
|
49
|
-
//
|
49
|
+
// Create high res image
|
50
|
+
const $newImg = this.imageCache.image(this.page.index, reduce);
|
51
|
+
|
52
|
+
// Avoid removing/re-adding the image if it's already there
|
53
|
+
// This can be called quite a bit, so we need to be fast
|
54
|
+
if (this.$img?.[0].src == $newImg[0].src) {
|
55
|
+
return this;
|
56
|
+
}
|
57
|
+
|
50
58
|
this.$img?.remove();
|
51
|
-
this.$img = this
|
52
|
-
.image(this.page.index, reduce)
|
53
|
-
.prependTo(this.$container);
|
59
|
+
this.$img = $newImg.prependTo(this.$container);
|
54
60
|
|
55
61
|
const backgroundLayers = [];
|
56
62
|
if (!alreadyLoaded) {
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/** Adds a class while the given element is experiencing scrolling */
|
2
|
+
export class ScrollClassAdder {
|
3
|
+
/**
|
4
|
+
* @param {HTMLElement} element
|
5
|
+
* @param {string} className
|
6
|
+
*/
|
7
|
+
constructor(element, className) {
|
8
|
+
/** @type {HTMLElement} */
|
9
|
+
this.element = element;
|
10
|
+
/** @type {string} */
|
11
|
+
this.className = className;
|
12
|
+
this.timeout = null;
|
13
|
+
}
|
14
|
+
|
15
|
+
attach() {
|
16
|
+
this.element.addEventListener('scroll', this.onScroll);
|
17
|
+
}
|
18
|
+
|
19
|
+
detach() {
|
20
|
+
this.element.removeEventListener('scroll', this.onScroll);
|
21
|
+
}
|
22
|
+
|
23
|
+
onScroll = () => {
|
24
|
+
this.element.classList.add(this.className);
|
25
|
+
clearTimeout(this.timeout);
|
26
|
+
// TODO: Also remove class on mousemove, touch, click, etc.
|
27
|
+
this.timeout = setTimeout(() => {
|
28
|
+
this.element.classList.remove(this.className);
|
29
|
+
}, 600);
|
30
|
+
}
|
31
|
+
}
|
@@ -1,16 +1,12 @@
|
|
1
1
|
<svg
|
2
|
-
|
3
|
-
height="18"
|
4
|
-
viewBox="0 0 18 18"
|
2
|
+
viewBox="0 0 100 100"
|
5
3
|
version="1.1"
|
6
4
|
xmlns="http://www.w3.org/2000/svg"
|
7
5
|
aria-labelledby="magnify-minusTitleID magnify-minusDescID"
|
8
6
|
>
|
9
7
|
<title id="magnify-minusTitleID">Zoom out</title>
|
10
8
|
<desc id="magnify-minusDescID">An icon of a minus symbol</desc>
|
11
|
-
<g fill="
|
12
|
-
<
|
13
|
-
<path d="m12 12 4.335213 4.335213" stroke="#fff" stroke-linecap="round" stroke-width="2" />
|
14
|
-
<path d="m10 7.75v-1.5h-6v1.5z" fill="#fff" fill-rule="nonzero" />
|
9
|
+
<g fill="#fff" fill-rule="evenodd">
|
10
|
+
<path d="m2.3239824 87.3815869 25.8938394-23.8143095c-4.5929593-6.6937643-6.889439-14.1059452-6.889439-22.2365428 0-7.1360431 1.7567382-13.7186647 5.2702146-19.7478649 3.5134763-6.0292002 8.2852035-10.8003118 14.3151815-14.31333499 6.029978-3.51302314 12.6134488-5.26953471 19.7504125-5.26953471s13.7204346 1.75651157 19.7504126 5.26953471c6.029978 3.51302319 10.8017051 8.28413479 14.3151815 14.31333499 3.5134763 6.0292002 5.2702145 12.6118218 5.2702145 19.7478649s-1.7567382 13.7324143-5.2702145 19.7891137c-3.5134764 6.0566994-8.2852035 10.8415607-14.3151815 14.3545838-6.029978 3.5130232-12.6134489 5.2695347-19.7504126 5.2695347-8.5762743 0-16.3217363-2.5723212-23.2363861-7.7169637l-26.3063807 24.2302349c-1.27200216 1.1618413-2.76631826 1.742762-4.48294825 1.742762-1.826641 0-3.38971397-.6496687-4.68921892-1.949006s-1.94925743-2.8622087-1.94925743-4.688614c0-1.9364022.7746608-3.5955208 2.3239824-4.9773557zm58.3436469-19.9162976c7.1919692 0 13.3331041-2.5585716 18.4234048-7.6757149s7.635451-11.2712357 7.635451-18.4622772-2.5451503-13.3313843-7.635451-18.4210284-11.2314356-7.6344661-18.4234048-7.6344661-13.3331042 2.544822-18.4234049 7.6344661-7.635451 11.2299869-7.635451 18.4210284 2.5451503 13.3451339 7.635451 18.4622772 11.2314357 7.6757149 18.4234049 7.6757149zm-14.9374313-21.3256316h31.2878163v-9.5422233h-31.2878163z"/>
|
15
11
|
</g>
|
16
12
|
</svg>
|
@@ -1,17 +1,13 @@
|
|
1
1
|
<svg
|
2
|
-
|
3
|
-
height="18"
|
4
|
-
viewBox="0 0 18 18"
|
2
|
+
viewBox="0 0 100 100"
|
5
3
|
version="1.1"
|
6
4
|
xmlns="http://www.w3.org/2000/svg"
|
7
5
|
aria-labelledby="magnify-plusTitleID magnify-plusDescID"
|
8
6
|
>
|
9
7
|
<title id="magnify-plusTitleID">Zoom in</title>
|
10
8
|
<desc id="magnify-plusDescID">An icon of a plus symbol</desc>
|
11
|
-
<g fill="
|
12
|
-
<
|
13
|
-
<path d="m12 12 4.335213 4.335213" stroke="#fff" stroke-linecap="round" stroke-width="2" />
|
14
|
-
<path d="m7.75 4v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25v-2.25z" fill="#fff" fill-rule="nonzero" />
|
9
|
+
<g fill="#fff" fill-rule="evenodd">
|
10
|
+
<path d="m2.40305276 87.4017263 25.81133064-23.7730295c-4.5356618-6.5723551-6.8034928-14.000283-6.8034928-22.2837838 0-7.1236734 1.7429868-13.6948847 5.2289603-19.7136338 3.4859736-6.0187491 8.2577006-10.7953163 14.3151813-14.32970144 6.0574806-3.53438517 12.6547027-5.30157776 19.7916662-5.30157776 10.8429591 0 20.0964884 3.85236545 27.760588 11.5570964 7.6640996 7.7047309 11.4950036 16.9684802 11.4927136 27.791248 0 10.8799585-3.8309059 20.1574336-11.4927136 27.8324254-7.6618077 7.6749917-16.915337 11.5124876-27.760588 11.5124876-8.6312796 0-16.431747-2.5678624-23.4014021-7.7035871l-26.1413636 24.188234c-1.21699671 1.2147305-2.73881553 1.8220957-4.56545649 1.8220957s-3.3897139-.6485425-4.68921882-1.9456276c-1.29950493-1.297085-1.94925739-2.8572473-1.94925739-4.6804867 0-1.8781426.80216353-3.5343852 2.4064906-4.9687279zm58.34020784-19.878343c7.1369635 0 13.264347-2.5678623 18.3821503-7.7035871 5.1178034-5.1357247 7.676705-11.2928753 7.676705-18.4714518s-2.5589016-13.3082755-7.676705-18.3890972c-5.1178033-5.0808217-11.2451868-7.6212325-18.3821503-7.6212325-7.2469746 0-13.4156121 2.5404108-18.5059127 7.6212325s-7.6354509 11.2105207-7.6354509 18.3890972 2.5589016 13.3357271 7.676705 18.4714518c5.1178033 5.1357248 11.2726895 7.7035871 18.4646586 7.7035871zm-13.3594607-21.8685793h10.206958v10.1879511h7.2194718v-10.1879511h10.206958v-7.206028h-10.206958v-10.187951h-7.2194718v10.187951h-10.206958z"/>
|
15
11
|
</g>
|
16
12
|
|
17
13
|
</svg>
|
@@ -24,6 +24,19 @@
|
|
24
24
|
}
|
25
25
|
}
|
26
26
|
|
27
|
+
// Hide text layer for performance during zooming & scrolling
|
28
|
+
.BRsmooth-zooming, .BRscrolling-active {
|
29
|
+
.textSelectionSVG {
|
30
|
+
display: none;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
// Hide text selection layers of off-screen pages, and only display
|
35
|
+
// 2 text layers regardless of zoom level
|
36
|
+
.BRmode1up .BRpagecontainer:not(.BRpage-visible) .textSelectionSVG {
|
37
|
+
display: none;
|
38
|
+
}
|
39
|
+
|
27
40
|
// Makes page image unselectable
|
28
41
|
.BRpagecontainer img {
|
29
42
|
-webkit-user-select: none;
|
@@ -62,17 +62,18 @@ describe('update', () => {
|
|
62
62
|
expect(pc.$img[0].style.background).toBe('');
|
63
63
|
});
|
64
64
|
|
65
|
-
test('removes image between updates', () => {
|
65
|
+
test('removes image between updates only if changed', () => {
|
66
66
|
const fakeImageCache = {
|
67
67
|
imageLoaded: () => true,
|
68
|
-
image: () => $(
|
68
|
+
image: (index, reduce) => $(`<img src="page${index}-${reduce}.jpg" />`),
|
69
69
|
};
|
70
70
|
const pc = new PageContainer({index: 12}, {imageCache: fakeImageCache});
|
71
71
|
pc.update({ reduce: 7 });
|
72
72
|
const $im1 = pc.$img;
|
73
73
|
pc.update({ reduce: 7 });
|
74
|
-
|
75
|
-
|
74
|
+
expect(pc.$img).toBe($im1);
|
75
|
+
pc.update({ reduce: 16 });
|
76
|
+
expect(pc.$img).not.toBe($im1);
|
76
77
|
expect($im1.parent().length).toBe(0);
|
77
78
|
});
|
78
79
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
// @ts-check
|
2
|
+
import sinon from 'sinon';
|
3
|
+
import { ScrollClassAdder } from '@/src/BookReader/utils/ScrollClassAdder';
|
4
|
+
|
5
|
+
describe('ScrollClassAdder', () => {
|
6
|
+
test('Does not attach during construction', () => {
|
7
|
+
const element = document.createElement('div');
|
8
|
+
const attachSpy = sinon.spy(ScrollClassAdder.prototype, 'attach');
|
9
|
+
new ScrollClassAdder(element, 'foo');
|
10
|
+
expect(attachSpy.callCount).toBe(0);
|
11
|
+
});
|
12
|
+
|
13
|
+
test('Attach/detach call correct methods', () => {
|
14
|
+
const el = document.createElement('div');
|
15
|
+
const addEventListenerSpy = sinon.spy(el, 'addEventListener');
|
16
|
+
const removeEventListenerSpy = sinon.spy(el, 'removeEventListener');
|
17
|
+
const sca = new ScrollClassAdder(el, 'foo');
|
18
|
+
expect(addEventListenerSpy.callCount).toBe(0);
|
19
|
+
sca.attach();
|
20
|
+
expect(addEventListenerSpy.callCount).toBe(1);
|
21
|
+
sca.detach();
|
22
|
+
expect(removeEventListenerSpy.callCount).toBe(1);
|
23
|
+
});
|
24
|
+
|
25
|
+
test('onScroll adds class at right time', () => {
|
26
|
+
const clock = sinon.useFakeTimers();
|
27
|
+
const el = document.createElement('div');
|
28
|
+
const sca = new ScrollClassAdder(el, 'foo');
|
29
|
+
expect(el.getAttribute('class')).toBeFalsy();
|
30
|
+
sca.onScroll();
|
31
|
+
expect(el.getAttribute('class')).toBe('foo');
|
32
|
+
clock.tick(600);
|
33
|
+
expect(el.getAttribute('class')).toBeFalsy();
|
34
|
+
|
35
|
+
sca.onScroll();
|
36
|
+
expect(el.getAttribute('class')).toBe('foo');
|
37
|
+
clock.tick(500);
|
38
|
+
expect(el.getAttribute('class')).toBe('foo');
|
39
|
+
sca.onScroll();
|
40
|
+
expect(el.getAttribute('class')).toBe('foo');
|
41
|
+
clock.tick(100);
|
42
|
+
expect(el.getAttribute('class')).toBe('foo');
|
43
|
+
clock.tick(499);
|
44
|
+
expect(el.getAttribute('class')).toBe('foo');
|
45
|
+
clock.tick(1);
|
46
|
+
expect(el.getAttribute('class')).toBeFalsy();
|
47
|
+
clock.restore();
|
48
|
+
});
|
49
|
+
});
|
package/.husky/_/husky.sh
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
if [ -z "$husky_skip_init" ]; then
|
3
|
-
debug () {
|
4
|
-
[ "$HUSKY_DEBUG" = "1" ] && echo "husky (debug) - $1"
|
5
|
-
}
|
6
|
-
|
7
|
-
readonly hook_name="$(basename "$0")"
|
8
|
-
debug "starting $hook_name..."
|
9
|
-
|
10
|
-
if [ "$HUSKY" = "0" ]; then
|
11
|
-
debug "HUSKY env variable is set to 0, skipping hook"
|
12
|
-
exit 0
|
13
|
-
fi
|
14
|
-
|
15
|
-
if [ -f ~/.huskyrc ]; then
|
16
|
-
debug "sourcing ~/.huskyrc"
|
17
|
-
. ~/.huskyrc
|
18
|
-
fi
|
19
|
-
|
20
|
-
export readonly husky_skip_init=1
|
21
|
-
sh -e "$0" "$@"
|
22
|
-
exitCode="$?"
|
23
|
-
|
24
|
-
if [ $exitCode != 0 ]; then
|
25
|
-
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
26
|
-
exit $exitCode
|
27
|
-
fi
|
28
|
-
|
29
|
-
exit 0
|
30
|
-
fi
|