PageSourceSearch

https://evolutionmusicpartners.com/wp-content/plugins/catch-infini…/catch-infinite-scroll-public.js?ver=2.0.7

js evolutionmusicpartners.com collected 2026-10-02 20:14:08 UTC 6,714 bytes, 252 lines download raw bytes

1(function ($) {
2	('use strict');
3	/**
4	 * All of the code for your public-facing JavaScript source
5	 * should reside in this file.
6	 *
7	 * Note: It has been assumed you will write jQuery code here, so the
8	 * $ function reference has been prepared for usage within the scope
9	 * of this function.
10	 *
11	 * This enables you to define handlers, for when the DOM is ready:
12	 *
13	 * $(function() {
14	 *
15	 * });
16	 *
17	 * When the window is loaded:
18	 *
19	 * $( window ).load(function() {
20	 *
21	 * });
22	 *
23	 * ...and/or other possibilities.
24	 *
25	 * Ideally, it is not considered best practise to attach more than a
26	 * single DOM-ready or window-load handler for a particular page.
27	 * Although scripts in the WordPress core, Plugins and Themes may be
28	 * practising this, we should strive to set a better example in our own work.
29	 */
30	window.addEventListener('load', function () {
31		var nextSelector = selector['nextSelector'];
32		var navigationSelector = selector['navigationSelector'];
33		var contentSelector = selector['contentSelector'];
34		var itemSelector = selector['itemSelector'];
35		var themeName = selector.theme;
36
37		/** Support for TwentyTwenty theme */
38		if( 'twentytwenty' === themeName ) {
39			if ('' !== contentSelector) {
40				itemSelector =
41					selector['contentSelector'] + ' ' + selector['itemSelector'];
42			} else {
43				itemSelector = selector['itemSelector'];
44			}
45		} else {
46			if (
47				"." !== selector.contentSelector.charAt(0) &&
48				"#" !== selector.contentSelector.charAt(0)
49			) {
50				if ($("." + selector.contentSelector).length) {
51				contentSelector = "." + selector.contentSelector;
52				} else if ($("#" + selector.contentSelector).length) {
53				contentSelector = "#" + selector.contentSelector;
54				}
55			} else {
56				contentSelector = selector.contentSelector;
57			}
58			itemSelector = contentSelector + " " + selector['itemSelector'];
59		}
60
61		var destUrl = $(nextSelector).attr('href');
62		var finished = false;
63		var flag = false;
64
65		if (
66			$(nextSelector).length &&
67			$(navigationSelector).length &&
68			// $(contentSelector).length &&
69			$(itemSelector).length
70		) {
71			$(navigationSelector).css('display', 'none');
72			$('body').addClass('infinite-scroll');
73
74			var trigger = selector['event'];
75			$(itemSelector)
76				.last()
77				.after(
78					'<div id="ctis-loading" class="infinite-loader ctis-loader-elements"><span class="spinner"><img src="' +
79						selector['image'] +
80						'" alt="catch-infinite-scroll-loader"></span></div>'
81				);
82			if ('click' == trigger) {
83				$(itemSelector)
84					.last()
85					.after(
86						'<div id="infinite-handle" class="ctis-load-more-container ctis-loader-elements"><span class="ctis-load-more"><button>
86' +
87							selector['load_more_text'] +
88							'</button></span></div>'
89					);
90				load_on_click();
91			} else {
92				load_on_scroll();
93			}
94
95			$(window).on('scroll', function () {
96				var t = $(this),
97					elem = $(itemSelector).last();
98
99				if (typeof elem == 'undefined') {
100					return;
101				}
102
103				if (
104					finished &&
105					t.scrollTop() + t.height() >=
106						elem.offset().top + elem.height()
107				) {
108					setTimeout(function () {
109						$('.ctis-finished-notice').fadeOut('slow');
110					}, 3000);
111				}
112			});
113		}
114
115		function ctis_load_more() {
116			$.ajax({
117				url: destUrl,
118				beforeSend: show_loader(),
119				success: function (results) {
120					if (selector['jetpack_enabled']) {
121						$('.infinite-loader').css('text-indent', '0');
122						$('.infinite-loader').css('height', 'auto');
123					}
124					hide_loader();
125					var obj = $(results);
126
127					var elem = obj.find(itemSelector);
128					// console.log(elem);
129					var next = obj.find(nextSelector);
130
131					if (next.length !== 0) {
132						$(nextSelector).attr('href', next.attr('href'));
133					}
134
135					// var itemClass = selector['itemSelector'].split('.');
136
137					elem = elem.each(function (index, value) {
138						var el;
139						if (
140							$(value).find('img').hasClass('lazy') &&
141							$(value).find('img').attr('data-src') !== undefined
142						) {
143							var src = $(value).find('img').attr('data-src');
144							$(value)
145								.find('img')
146								.attr('src', src)
147								.removeClass('lazy')
148								.removeAttr('data-src');
149						}
150
151						/** Support: Logic for prepending separator in TwentyTwenty theme */
152						var el;
153						if ('twentytwenty' === themeName) {
154							/* sepp = document.getElementsByClassName('post-separator');
155                console.log(sepp[0].classList); */
156							// Create a hr separator as in the theme as using existing element from the DOM didn't work in this theme for some reason
157							var hr = document.createElement('HR');
158							hr.classList.add(
159								'post-separator',
160								'styled-separator',
161								'is-style-wide',
162								'section-inner'
163							);
164							// console.log(hr);
165							// hr.appendChild($(value));
166							el = $(value).prepend(hr);
167							//el = $(value);
168						} else {
169							el = $(value);
170						}
171						return el;
172					});
173
174					elem.each(function (i, v) {
175						$(itemSelector).last().after($(this));
176					});
177
178					$(itemSelector).trigger('post-load');
179
180					if (next.length !== 0 && next.attr('href') != '#') {
181						destUrl = $(nextSelector).attr('href');
182					} else {
183						finished = true;
184						$('body').addClass('infinity-end');
185						$('.ctis-load-more-container').hide();
186						$(itemSelector)
187							.last()
188							.after(
189								'<div class="ctis-finished-notice infinite-loader ctis-loader-elements"><span class="finish-text spinner">' +
190									selector['finish_text'] +
191									'</span></div>'
192							);
193					}
194
195					// Create the event
196					let event = new CustomEvent('afterScroll', {
197						detail: 'Hook some event after load completes',
198					});
199
200					// Dispatch/Trigger/Fire the event
201					document.dispatchEvent(event);
202				},
203				error: function () {
204					hide_loader();
205					//$(".ctis-finished-notice").html('Error retrieving posts...');
206				},
207			});
208		}
209
210		function show_loader() {
211			flag = true;
212			$('#ctis-loading').show();
213			// $('.infinite-loader').show();
214			$('.ctis-load-more-container').hide();
215		}
216
217		function hide_loader() {
218			$('#ctis-loading').hide();
219			// $('.infinite-loader').hide();
220			$('.ctis-load-more-container').show();
221			setTimeout(function () {
222				flag = false;
223			}, 500);
224		}
225
226		function load_on_scroll() {
227			$(window).on('scroll', function () {
228				var t = $(this),
229					elem = $(itemSelector).last();
230
231				if (typeof elem == 'undefined') {
232					return;
233				}
234
235				if (
236					flag === false &&
237					!finished &&
238					t.scrollTop() + t.height() >=
239						elem.offset().top + elem.height()
240				) {
241					ctis_load_more();
242				}
243			});
244		}
245
246		function load_on_click() {
247			$('body').on('click', '.ctis-load-more', function () {
248				ctis_load_more();
249			});
250		}
251	});
252})(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.