PageSourceSearch

https://manifold.garden/js/infinite-scroll-v19.js

js manifold.garden collected 2026-10-01 10:27:39 UTC 3,081 bytes, 131 lines download raw bytes

1var fakeEnd = 10000;
2var cancelNextScroll = false;
3var lastScroll = 0;
4var ticking = false;
5var keepTicking = false;
6var endMarker = null;
7
8Math.sign = Math.sign || function(x) {
9  x = +x; // convert to a number
10  if (x === 0 || isNaN(x)) {
11    return x;
12  }
13  return x > 0 ? 1 : -1;
14}
15
16$(window).on('mousewheel DOMMouseScroll', function(e){
17  if(typeof e.originalEvent.detail == 'number' && e.originalEvent.detail !== 0) {
18    if(e.originalEvent.detail > 0) {
19      // console.log('Down');
20	  scrollIntention(e);
21    } else if(e.originalEvent.detail < 0){
22      // console.log('Up');
23	  scrollIntention(e);
24    }
25  } else if (typeof e.originalEvent.wheelDelta == 'number') {
26    if(e.originalEvent.wheelDelta < 0) {
27      // console.log('Down');
28	  scrollIntention(e);
29    } else if(e.originalEvent.wheelDelta > 0) {
30      // console.log('Up');
31	  scrollIntention(e);
32    }
33  }
34});
35
36function scrollIntention(event) {
37	var scrollTotalDeltaY = event.deltaY * event.deltaFactor
38	var preScrollTop = window.pageYOffset;
39	var postScrollTop = window.pageYOffset - scrollTotalDeltaY;
40	var pageRect = endMarker.getBoundingClientRect();
41
42	if (postScrollTop < 0 && scrollTotalDeltaY > 0) {
43		cancelNextScroll = true;
44		//window.scrollTo(0, pageRect.top + preScrollTop);
45		window.scrollBy(0, pageRect.top + preScrollTop);
46	}
47	else if (pageRect.top <= 0 && scrollTotalDeltaY < 0) {
48		cancelNextScroll = true;
49		window.scrollTo(0, pageRect.top);
50		//window.scrollBy(0, -(pageRect.top + preScrollTop));
51	}
52}
53
54function refresh() {
55	var st = window.pageYOffset;
56
57	if (st != lastScroll) {
58		var scrollDelta = lastScroll - st
59
60		if (cancelNextScroll) {
61			cancelNextScroll = false;
62		} else {
63			scrollIntention({ deltaY: Math.sign(scrollDelta), deltaFactor: Math.abs(scrollDelta) })
64		}
65
66	}
67}
68
69$(document).ready(function() {
70
71	endMarker = $("#end-marker")[0];
72
73	var $window = $(window);
74
75	// check whether we want to scroll but we're at the top of the page
76//	$window.mousewheel(scrollIntention);
77
78//	$(document).mousewheel(function(event) {
79//		scrollIntention(event);
80//    		console.log(event.deltaX, event.deltaY, event.deltaFactor);
81//	});
82
83	// update parallax on scroll events
84	$window.scroll(refresh);
85
86	// initial refresh
87	refresh();
88});
89
90$(document).keyup(function(e) {
91	switch (e.keyCode) {
92		case 27: // escape
93			window.location.href = "#_";
94			break;
95	}
96});
97
98$(document).keydown(function(e) {
99	switch (e.keyCode) {
100		case 38: // up
101		case 33: // page-up
102			window.scrollTo(0, 0);
103			return false;
104			if (window.pageYOffset == 0)
105				scrollIntention({ deltaY: 1, deltaFactor: 1 })
106			break;
107
108		case 40: // down
109		case 34: // page-down
110			if (endMarker){
111				var pageRect = endMarker.getBoundingClientRect();
112				window.scrollTo(0, pageRect.top)
113			}
114			return false;
115			/*if (window.pageYOffset >= pageSize)
116				scrollIntention({ deltaY: -1, deltaFactor: 1 })*/
117			break;
118
119		case 35: // end
120			window.scrollTo(0, fakeEnd);
121			cancelNextScroll = true;
122			return false;
123			break;
124
125		case 36: // home
126			window.scrollTo(0, 1);
127			cancelNextScroll = true;
128			return false;
129			break;
130	}
131});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.