PageSourceSearch

https://pimpandhost.com/assets/2b5553c1/extension/paging.js?v=1790163009

js pimpandhost.com collected 2026-09-24 10:20:05 UTC 4,053 bytes, 170 lines download raw bytes

1/**
2 * IAS Paging Extension
3 * An IAS extension providing additional events
4 * https://infiniteajaxscroll.com
5 *
6 * This file is part of the Infinite AJAX Scroll package
7 *
8 * Copyright 2014-2018 Webcreate (Jeroen Fiege)
9 */
10
11var IASPagingExtension = function() {
12  this.ias = null;
13  this.pagebreaks = [[0, document.location.toString()]];
14  this.lastPageNum = 1;
15  this.enabled = true;
16  this.listeners = {
17    pageChange: new IASCallbacks(jQuery)
18  };
19
20  /**
21   * Fires pageChange event
22   *
23   * @param currentScrollOffset
24   * @param scrollThreshold
25   */
26  this.onScroll = function(currentScrollOffset, scrollThreshold) {
27    if (!this.enabled) {
28      return;
29    }
30
31    var ias = this.ias,
32        currentPageNum = this.getCurrentPageNum(currentScrollOffset),
33        currentPagebreak = this.getCurrentPagebreak(currentScrollOffset),
34        urlPage;
35
36    if (this.lastPageNum !== currentPageNum) {
37      urlPage = currentPagebreak[1];
38
39      ias.fire('pageChange', [currentPageNum, currentScrollOffset, urlPage]);
40    }
41
42    this.lastPageNum = currentPageNum;
43  };
44
45  /**
46   * Keeps track of pagebreaks
47   *
48   * @param url
49   */
50  this.onNext = function(url) {
51    var currentScrollOffset = this.ias.getCurrentScrollOffset(this.ias.$scrollContainer);
52
53    this.pagebreaks.push([currentScrollOffset, url]);
54
55    // trigger pageChange and update lastPageNum
56    var currentPageNum = this.getCurrentPageNum(currentScrollOffset) + 1;
57
58    this.ias.fire('pageChange', [currentPageNum, currentScrollOffset, url]);
59
60    this.lastPageNum = currentPageNum;
61  };
62
63  /**
64   * Keeps track of pagebreaks
65   *
66   * @param url
67   */
68  this.onPrev = function(url) {
69    var self = this,
70        ias = self.ias,
71        currentScrollOffset = ias.getCurrentScrollOffset(ias.$scrollContainer),
72        prevCurrentScrollOffset = currentScrollOffset - ias.$scrollContainer.height(),
73        $firstItem = ias.getFirstItem();
74
75    this.enabled = false;
76
77    this.pagebreaks.unshift([0, url]);
78
79    ias.one('rendered', function() {
80      // update pagebreaks
81      for (var i = 1, l = self.pagebreaks.length; i < l; i++) {
82        self.pagebreaks[i][0] = self.pagebreaks[i][0] + $firstItem.offset().top;
83      }
84
85      // trigger pageChange and update lastPageNum
86      var currentPageNum = self.getCurrentPageNum(prevCurrentScrollOffset) + 1;
87
88      ias.fire('pageChange', [currentPageNum, prevCurrentScrollOffset, url]);
89
90      self.lastPageNum = currentPageNum;
91
92      self.enabled = true;
93    });
94  };
95
96  return this;
97};
98
99/**
100 * @public
101 */
102IASPagingExtension.prototype.initialize = function(ias) {
103  this.ias = ias;
104
105  // expose the extensions listeners
106  jQuery.extend(ias.listeners, this.listeners);
107};
108
109/**
110 * @public
111 */
112IASPagingExtension.prototype.bind = function(ias) {
113  try {
114    ias.on('prev', jQuery.proxy(this.onPrev, this), this.priority);
115  } catch (exception) {}
116
117  ias.on('next', jQuery.proxy(this.onNext, this), this.priority);
118  ias.on('scroll', jQuery.proxy(this.onScroll, this), this.priority);
119};
120
121/**
122 * @public
123 * @param {object} ias
124 */
125IASPagingExtension.prototype.unbind = function(ias) {
126  try {
127    ias.off('prev', this.onPrev);
128  } catch (exception) {}
129
130  ias.off('next', this.onNext);
131  ias.off('scroll', this.onScroll);
132};
133
134/**
135 * Returns current page number based on scroll offset
136 *
137 * @param {number} scrollOffset
138 * @returns {number}
139 */
140IASPagingExtension.prototype.getCurrentPageNum = function(scrollOffset) {
141  for (var i = (this.pagebreaks.length - 1); i > 0; i--) {
142    if (scrollOffset > this.pagebreaks[i][0]) {
143      return i + 1;
144    }
145  }
146
147  return 1;
148};
149
150/**
151 * Returns current pagebreak information based on scroll offset
152 *
153 * @param {number} scrollOffset
154 * @returns {number}|null
155 */
156IASPagingExtension.prototype.getCurrentPagebreak = function(scrollOffset) {
157  for (var i = (this.pagebreaks.length - 1); i >= 0; i--) {
158    if (scrollOffset > this.pagebreaks[i][0]) {
159      return this.pagebreaks[i];
160    }
161  }
162
163  return null;
164};
165
166/**
167 * @public
168 * @type {number}
169 */
170IASPagingExtension.prototype.priority = 500;

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.