PageSourceSearch

https://wearebombo.com/wp-content/plugins/jetsticky-for-elementor/…/js/lib/jsticky/jquery.jsticky.js?ver=1.1.0

js wearebombo.com collected 2026-09-24 10:47:12 UTC 4,671 bytes, 155 lines download raw bytes

1/* jSticky Plugin
2 * =============
3 * Author: Andrew Henderson (@AndrewHenderson)
4 * Contributor: Mike Street (@mikestreety)
5 * Date: 9/7/2012
6 * Update: 09/20/2016
7 * Website: http://github.com/andrewhenderson/jsticky/
8 * Description: A jQuery plugin that keeps select DOM
9 * element(s) in view while scrolling the page.
10 */
11
12;(function($) {
13
14  $.fn.jetStickySection = function(options) {
15    var defaults = {
16      topSpacing: 0, // No spacing by default
17      zIndex: '', // No default z-index
18      stopper: $('.sticky-stopper'), // Default stopper class, also accepts number value
19      stickyClass: false // Class applied to element when it's stuck
20    };
21    var settings = $.extend({}, defaults, options); // Accepts custom stopper id or class
22
23    // Checks if custom z-index was defined
24    function checkIndex() {
25      if (typeof settings.zIndex == 'number') {
26        return true;
27      } else {
28        return false;
29      }
30    }
31
32    var hasIndex = checkIndex(); // True or false
33
34    // Checks if a stopper exists in the DOM or number defined
35    function checkStopper() {
36      if (0 < settings.stopper.length || typeof settings.stopper === 'number') {
37        return true;
38      } else {
39        return false;
40      }
41    }
42    var hasStopper = checkStopper(); // True or false
43
44    return this.each(function() {
45
46      var $this = $(this);
47      var topSpacing = settings.topSpacing;
48      var thisHeight = $this.outerHeight();
49      var thisWidth = $this.outerWidth();
50      var zIndex = settings.zIndex;
51      var pushPoint = $this.offset().top - topSpacing; // Point at which the sticky element starts pushing
52      var placeholder = $('<div></div>').width(thisWidth ).height(thisHeight).addClass('sticky-placeholder'); // Cache a clone sticky element
53      var stopper = settings.stopper;
54      var $window = $(window);
55      var detached = false;
56      var stick = false;
57
58      function stickyScroll() {
59        if (detached) {
60          return;
61        }
62
63        var thisHeight = $this.outerHeight();
64        var windowTop = $window.scrollTop(); // Check window's scroll position
65        var stopPoint = stopper;
66        var parentWidth = $this.parent().width();
67
68        placeholder.width(parentWidth);
69
70        if ( hasStopper && typeof settings.stopper !== 'number' ) {
71          var stopperTop = stopper.offset().top;
72          stopPoint  = (stopperTop - thisHeight) - topSpacing;
73        }
74
75        if (pushPoint < windowTop) {
76          // Create a placeholder for sticky element to occupy vertical real estate
77          if(settings.stickyClass)
78            $this.addClass(settings.stickyClass);
79
80          $this.after(placeholder ).css({
81            position: 'fixed',
82            top: topSpacing,
83            width: parentWidth
84          });
85
86          if (hasIndex) {
87            $this.css({
88              zIndex: zIndex
89            });
90          }
91
92          if (hasStopper) {
93            if (stopPoint < windowTop) {
94              var diff = (stopPoint - windowTop) + topSpacing;
95              $this.css({
96                top: diff
97              });
98            }
99          }
100          if ( ! stick ) {
101            $this.trigger( 'jetStickySection:stick' );
102          }
103          stick = true;
104        } else {
105          if(settings.stickyClass)
106            $this.removeClass(settings.stickyClass);
107
108          $this.css({
109            position: '',
110            top: '',
111            left: '',
112            width: ''
113          });
114
115          placeholder.remove();
116          if ( stick ) {
117            $this.trigger( 'jetStickySection:unstick' );
118          }
119          stick = false;
120        }
121      }
122
123      function detachStickyScroll() {
124        detached = true;
125        //$window.off('load', stickyScroll);
126        $window.off('scroll', stickyScroll);
127        $window.off('touchmove', stickyScroll);
128        $window.off('resize', stickyScroll);
129
130        if(settings.stickyClass)
131          $this.removeClass(settings.stickyClass);
132
133        $this.css({
134          position: '',
135          top: '',
136          left: '',
137          width: ''
138        });
139
140        placeholder.remove();
141      }
142
143      if($window.innerHeight() > thisHeight) {
144        //$window.on('load', stickyScroll);
145        $this.on( 'jetStickySection:activated', stickyScroll );
146
147        $window.on('scroll', stickyScroll);
148        $window.on('touchmove', stickyScroll);
149        $window.on('resize', stickyScroll);
150
151        $this.on( 'jetStickySection:detach', detachStickyScroll );
152      }
153    });
154  };
155})(jQuery);

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.