PageSourceSearch

https://faithiq.org/assets/53c1793d/extension/spinner.js

js faithiq.org collected 2026-09-28 15:20:47 UTC 4,907 bytes, 119 lines download raw bytes

vendor: 4,907 bytes, lines 1-119
1/**
2 * IAS Spinner Extension
3 * An IAS extension to show a spinner when loading
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 IASSpinnerExtension = function(options) {
12  options = jQuery.extend({}, this.defaults, options);
13
14  this.ias = null;
15  this.uid = new Date().getTime();
16  this.src = options.src;
17  this.html = (options.html).replace('{src}', this.src);
18
19  /**
20   * Shows spinner
21   */
22  this.showSpinner = function() {
23    var $spinner = this.getSpinner() || this.createSpinner(),
24        $lastItem = this.ias.getLastItem();
25
26    $lastItem.after($spinner);
27    $spinner.fadeIn();
28  };
29
30  /**
31   * Shows spinner
32   */
33  this.showSpinnerBefore = function() {
34    var $spinner = this.getSpinner() || this.createSpinner(),
35        $firstItem = this.ias.getFirstItem();
36
37    $firstItem.before($spinner);
38    $spinner.fadeIn();
39  };
40
41  /**
42   * Removes spinner
43   */
44  this.removeSpinner = function() {
45    if (this.hasSpinner()) {
46      this.getSpinner().remove();
47    }
48  };
49
50  /**
51   * @returns {jQuery|boolean}
52   */
53  this.getSpinner = function() {
54    var $spinner = jQuery('#ias_spinner_' + this.uid);
55
56    if ($spinner.length > 0) {
57      return $spinner;
58    }
59
60    return false;
61  };
62
63  /**
64   * @returns {boolean}
65   */
66  this.hasSpinner = function() {
67    var $spinner = jQuery('#ias_spinner_' + this.uid);
68
69    return ($spinner.length > 0);
70  };
71
72  /**
73   * @returns {jQuery}
74   */
75  this.createSpinner = function() {
76    var $spinner = jQuery(this.html).attr('id', 'ias_spinner_' + this.uid);
77
78    $spinner.hide();
79
80    return $spinner;
81  };
82
83  return this;
84};
85
86/**
87 * @public
88 */
89IASSpinnerExtension.prototype.bind = function(ias) {
90  this.ias = ias;
91
92  ias.on('next', jQuery.proxy(this.showSpinner, this));
93  ias.on('render', jQuery.proxy(this.removeSpinner, this));
94
95  try {
96    ias.on('prev', jQuery.proxy(this.showSpinnerBefore, this));
97  } catch (exception) {}
98};
99
100/**
101 * @public
102 * @param {object} ias
103 */
104IASSpinnerExtension.prototype.unbind = function(ias) {
105  ias.off('next', this.showSpinner);
106  ias.off('render', this.removeSpinner);
107
108  try {
109    ias.off('prev', this.showSpinnerBefore);
110  } catch (exception) {}
111};
112
113/**
114 * @public
115 */
116IASSpinnerExtension.prototype.defaults = {
117  src: 'data:image/gif;base64,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',
118  html: '<div class="ias-spinner" style="text-align: center;"><img src="{src}"/></div>'
119};

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.