PageSourceSearch

https://legaltransformation.io/wp-content/plugins/testimonial-slid…/assets/js/wptestimonial.js?ver=2.3.14

js legaltransformation.io collected 2026-10-08 18:43:47 UTC 26,131 bytes, 816 lines download raw bytes

1(function ($) {
2	'use strict';
3	$('*')
4		.on('touchstart', function () {
5			$(this).trigger('hover');
6		})
7		.on('touchend', function () {
8			$(this).trigger('hover');
9		});
10
11	$(function () {
12		preFunction();
13		$(document)
14			.on('mouseover', '.tss-isotope-button-wrapper.tooltip-active .rt-iso-button', function () {
15				var self = $(this),
16					count = self.attr('data-filter-counter'),
17					id = self.parents('.tss-wrapper').attr('id');
18				$tooltip =
19					'<div class="tss-tooltip" id="tss-tooltip-' +
20					id +
21					'">' +
22					'<div class="tss-tooltip-content">' +
23					count +
24					'</div>' +
25					'<div class="tss-tooltip-bottom"></div>' +
26					'</div>';
27				$('body').append($tooltip);
28				var $tooltip = $('body > .tss-tooltip');
29				var tHeight = $tooltip.outerHeight();
30				var tBottomHeight = $tooltip.find('.tss-tooltip-bottom').outerHeight();
31				var tWidth = $tooltip.outerWidth();
32				var tHolderWidth = self.outerWidth();
33				var top = self.offset().top - (tHeight + tBottomHeight);
34				var left = self.offset().left;
35				$tooltip
36					.css({
37						top: top + 'px',
38						left: left + 'px',
39						opacity: 1
40					})
41					.show();
42				if (tWidth <= tHolderWidth) {
43					var itemLeft = (tHolderWidth - tWidth) / 2;
44					left = left + itemLeft;
45					$tooltip.css('left', left + 'px');
46				} else {
47					var itemLeft = (tWidth - tHolderWidth) / 2;
48					left = left - itemLeft;
49					if (left < 0) {
50						left = 0;
51					}
52					$tooltip.css('left', left + 'px');
53				}
54			})
55			.on('mouseout', '.tss-isotope-button-wrapper.tooltip-active .rt-iso-button', function () {
56				$('body > .tss-tooltip').fadeOut(300, function () { $(this).remove(); });
57			});
58	});
59
60	$(window).on('load resize', function () {
61		preFunction();
62	});
63
64	function preFunction() {
65		overlayIconResize();
66	}
67
68	RTInitCaroIso();
69
70	function RTInitCaroIso() {
71		var elementInstances = [];
72		var elementThumbInstances = [];
73
74		$('.tss-wrapper').each(function (index) {
75			var container = $(this);
76			var str = $(this).attr('data-layout');
77			if (str) {
78				var qsRegex,
79					buttonFilter,
80					Iso = container.find('.tss-isotope'),
81					caro = container.find('.tss-carousel'),
82					caroThumb = container.find('.tss-carousel-main'),
83					html_loading =
84						'<div class="rt-loading-overlay"></div><div class="rt-loading rt-ball-clip-rotate"><div></div></div>',
85					preLoader = container.find('.tss-pre-loader');
86				if (preLoader.find('.rt-loading-overlay').length == 0) {
87					preLoader.append(html_loading);
88				}
89
90				if (caroThumb.length) {
91					var carouselOptions = RTCarouselOptions(caroThumb);
92
93					carouselOptions.responsive = {
94						0: {
95							slidesPerView: carouselOptions.mItems ? carouselOptions.mItems : 3
96						},
97						575: {
98							slidesPerView: carouselOptions.tItems ? carouselOptions.tItems : 3
99						},
100						991: {
101							slidesPerView: carouselOptions.items ? carouselOptions.items : 5
102						}
103					};
104
105					RTElementThumbCarousel(container, carouselOptions, elementThumbInstances, index);
106
107					caroThumb.parents('.rt-row').removeClass('tss-pre-loader');
108					caroThumb.parents('.rt-row').find('.rt-loading-overlay, .rt-loading').fadeOut(100);
109
110					// Updating the sliders
111					setTimeout(function () {
112						elementThumbInstances.forEach(function (sliders) {
113							sliders.forEach(function (slider) {
114								slider.update();
115							});
116						});
117					}, 50);
118				}
119
120				if (caro.length) {
121					var carouselEl = {
122						container: container.find('.tss-carousel'),
123						navPrev: '.swiper-button-prev',
124						navNext: '.swiper-button-next',
125						dotsEl: '.swiper-pagination'
126					};
127
128					var carouselOptions = RTCarouselOptions(caro);
129
130					carouselOptions.responsive = {
131						0: {
132							slidesPerView: carouselOptions.mItems ? carouselOptions.mItems : 1,
133							slidesPerGroup: carouselOptions.mItems ? carouselOptions.mItems : 1
134						},
135						767: {
136							slidesPerView: carouselOptions.tItems ? carouselOptions.tItems : 2,
137							slidesPerGroup: carouselOptions.tItems ? carouselOptions.tItems : 2
138						},
139						991: {
140							slidesPerView: carouselOptions.items ? carouselOptions.items : 3,
141							slidesPerGroup: carouselOptions.items ? carouselOptions.items : 3
142						}
143					};
144
145					RTElementCarousel(carouselEl, carouselOptions, elementInstances, index);
146
147					// Updating the sliders
148					setTimeout(function () {
149						elementInstances.forEach(function (slider) {
150							slider.update();
151						});
152					}, 50);
153
154					// Updating the sliders in tab
155					$('body').on('shown.bs.tab', 'a[data-bs-toggle="tab"], a[data-bs-toggle="pill"]', function (e) {
156						elementInstances.forEach(function (slider) {
157							slider.update();
158						});
159					});
160
161					$('.vc_tta-tabs-list li').on('click', function () {
162						setTimeout(function () {
163							elementInstances.forEach(function (slider) {
164								slider.update();
165							});
166						}, 100);
167					});
168
169					caro.parents('.rt-row').removeClass('tss-pre-loader');
170					caro.parents('.rt-row').find('.rt-loading-overlay, .rt-loading').fadeOut(100);
171				} else if (Iso.length) {
172					var IsoButton = container.find('.tss-isotope-button-wrapper');
173					if (!buttonFilter) {
174						buttonFilter = IsoButton.find('.rt-iso-button.selected').data('filter');
175					}
176					var isotope = Iso.imagesLoaded(function () {
177						Iso.parents('.rt-row').removeClass('tss-pre-loader');
178						Iso.parents('.rt-row').find('.rt-loading-overlay, .rt-loading').remove();
179						preFunction();
180						isotope.isotope({
181							itemSelector: '.isotope-item',
182							masonry: {
183								columnWidth: '.isotope-item'
184							},
185							filter: function () {
186								var $this = $(this);
187								var searchResult = qsRegex ? $this.text().match(qsRegex) : true;
188								var buttonResult = buttonFilter ? $this.is(buttonFilter) : true;
189								return searchResult && buttonResult;
190							}
191						});
192						isoFilterCounter(container, isotope);
193					});
194					// use value of search field to filter
195					var $quicksearch = container.find('.iso-search-input').keyup(
196						debounce(function () {
197							qsRegex = new RegExp($quicksearch.val(), 'gi');
198							isotope.isotope();
199						})
200					);
201
202					IsoButton.on('click', '.rt-iso-button', function (e) {
203						e.preventDefault();
204						buttonFilter = $(this).attr('data-filter');
205						isotope.isotope();
206						$(this).parent().find('.selected').removeClass('selected');
207						$(this).addClass('selected');
208					});
209
210					if (container.find('.tss-utility .tss-load-more').length) {
211						container.find('.tss-load-more').on('click', '.rt-button', function (e) {
212							e.preventDefault(e);
213							loadMoreButton($(this), isotope, container, 'isotope', IsoButton);
214						});
215					}
216
217					if (container.find('.tss-utility .tss-scroll-load-more').length) {
218						$(window).on('scroll', function () {
219							var $this = container.find('.tss-utility .tss-scroll-load-more');
220							scrollLoadMore($this, isotope, container, 'isotope', IsoButton);
221						});
222					}
223				} else if (container.find('.rt-row.tss-masonry').length) {
224					var masonryTarget = container.find('.rt-row.tss-masonry');
225					preFunction();
226					var isotopeM = masonryTarget.imagesLoaded(function () {
227						isotopeM.isotope({
228							itemSelector: '.masonry-grid-item',
229							masonry: {
230								columnWidth: '.masonry-grid-item'
231							}
232						});
233					});
234					if (container.find('.tss-utility .tss-load-more').length) {
235						container.find('.tss-load-more').on('click', '.rt-button', function (e) {
236							e.preventDefault(e);
237							loadMoreButton($(this), isotopeM, container, 'mLayout');
238						});
239					}
240					if (container.find('.tss-utility .tss-scroll-load-more').length) {
241						$(window).on('scroll', function () {
242							var $this = container.find('.tss-utility .tss-scroll-load-more');
243							if ($this.attr('data-trigger') > 0) {
244								scrollLoadMore($this, isotopeM, container, 'mLayout');
245							}
246						});
247					}
248
249					if (container.find('.tss-utility .tss-pagination.tss-ajax').length) {
250						ajaxPagination(container, isotopeM);
251					}
252				} else {
253					if (container.find('.tss-utility  .tss-load-more').length) {
254						container.find('.tss-load-more').on('click', '.rt-button', function (e) {
255							e.preventDefault(e);
256							loadMoreButton($(this), isotopeM, container, 'eLayout');
257						});
258					}
259					if (container.find('.tss-utility .tss-scroll-load-more').length) {
260						$(window).on('scroll', function () {
261							var $this = container.find('.tss-utility .tss-scroll-load-more');
262							if ($this.attr('data-trigger') > 0) {
263								scrollLoadMore($this, isotopeM, container, 'eLayout');
264							}
265						});
266					}
267					if (container.find('.tss-utility .tss-pagination.tss-ajax').length) {
268						ajaxPagination(container);
269					}
270				}
271			}
272		});
273	}
274
275	function RTCarouselOptions(el) {
276		return {
277			items: parseInt(el.data('items-desktop')),
278			tItems: parseInt(el.data('items-tab')),
279			mItems: parseInt(el.data('items-mobile')),
280			loop: el.data('loop'),
281			nav: el.data('nav'),
282			dots: el.data('dots'),
283			autoplay: el.data('autoplay'),
284			autoplayDelay: parseInt(el.data('autoplay-timeout'), 10),
285			autoPlayHoverPause: el.data('autoplay-hover-pause'),
286			autoHeight: el.data('auto-height'),
287			lazyLoad: el.data('lazy-load'),
288			rtl: el.data('rtl'),
289			smartSpeed: parseInt(el.data('smart-speed'))
290		};
291	}
292
293	function RTElementCarousel(elements, carouselOptions, instance, index) {
294		var slider = elements.container.addClass('instance-' + index);
295		elements.container.parent().find(elements.navPrev).addClass('prev-' + index);
296		elements.container.parent().find(elements.navNext).addClass('next-' + index);
297
298		var options = {
299			slidesPerView: carouselOptions.items ? carouselOptions.items : 2,
300			slidesPerGroup: carouselOptions.items ? carouselOptions.items : 2,
301			spaceBetween: 0,
302			speed: carouselOptions.smartSpeed ? carouselOptions.smartSpeed : 1000,
303			loop: carouselOptions.loop ? carouselOptions.loop : false,
304			autoHeight: carouselOptions.autoHeight ? carouselOptions.autoHeight : false,
305
306			// Responsive breakpoints
307			breakpoints: carouselOptions.responsive
308		};
309
310		if (carouselOptions.autoplay) {
311			options.autoplay = {
312				delay: carouselOptions.autoplayDelay,
313				pauseOnMouseEnter: carouselOptions.autoPlayHoverPause,
314				disableOnInteraction: false
315			};
316		}
317
318		if (carouselOptions.lazyLoad) {
319			options.preloadImages = false;
320			options.lazy = true;
321		}
322
323		if (carouselOptions.nav) {
324			options.navigation = {
325				nextEl: elements.navNext,
326				prevEl: elements.navPrev
327			};
328		}
329
330		if (carouselOptions.dots) {
331			options.pagination = {
332				el: elements.dotsEl,
333				type: 'bullets',
334				clickable: true
335			};
336		}
337		instance[index] = new Swiper(slider[0], options);
338	}
339
340	function RTElementThumbCarousel(container, options, instance, index) {
341		// Params
342		var mainSlider = container.find('.tss-carousel-main').addClass('instance-' + index),
343			navSlider = container.find('.tss-carousel-thumb').addClass('instance-' + index),
344			navPrev = '.swiper-button-prev',
345			navNext = '.swiper-button-next',
346			dotsEl = '.swiper-pagination';
347
348		container.find(navPrev).addClass('prev-' + index);
349		container.find(navNext).addClass('next-' + index);
350
351		// Main Slider
352		var mainSliderOptions = {
353			loop: true,
354			speed: options.smartSpeed ? options.smartSpeed : 1000,
355			loopedSlides: 5,
356			autoHeight: options.autoHeight ? options.autoHeight : false
357		};
358
359		if (options.nav) {
360			mainSliderOptions.navigation = {
361				nextEl: navNext,
362				prevEl: navPrev
363			};
364		}
365
366		if (options.dots) {
367			mainSliderOptions.pagination = {
368				el: dotsEl,
369				type: 'bullets',
370				clickable: true
371			};
372		}
373		var main = new Swiper(mainSlider[0], mainSliderOptions);
374
375		// Navigation Slider
376		var navSliderOptions = {
377			loop: true,
378			speed: options.smartSpeed ? options.smartSpeed : 1000,
379			observer: true,
380			observerParents: true,
381			slidesPerView: options.items ? options.items : 5,
382			centeredSlides: true,
383			spaceBetween: 0,
384			touchRatio: 0.2,
385			slideToClickedSlide: true,
386			loopedSlides: 5,
387			watchSlidesProgress: true,
388			breakpoints: options.responsive
389		};
390
391		if (options.autoplay) {
392			navSliderOptions.autoplay = {
393				delay: options.autoplayDelay,
394				pauseOnMouseEnter: options.autoPlayHoverPause,
395				disableOnInteraction: false
396			};
397		}
398
399		if (options.lazyLoad) {
400			navSliderOptions.preloadImages = false;
401			navSliderOptions.lazy = true;
402		}
403
404		var thumb = new Swiper(navSlider[0], navSliderOptions);
405
406		// Syncing the sliders
407		main.controller.control = thumb;
408		thumb.controller.control = main;
409
410		instance[index] = [main, thumb];
411	}
412
413	function isoFilterCounter(container, isotope) {
414		var total = 0;
415		container.find('.tss-isotope-button-wrapper .rt-iso-button').each(function () {
416			var self = $(this),
417				filter = self.data('filter'),
418				itemTotal = isotope.find(filter).length;
419			if (filter != '*') {
420				self.attr('data-filter-counter', itemTotal);
421				total = total + itemTotal;
422			}
423		});
424		container
425			.find('.tss-isotope-button-wrapper .rt-iso-button[data-filter="*"]')
426			.attr('data-filter-counter', total);
427	}
428
429	function loadMoreButton($this, $isotope, container, layout, IsoButton) {
430		var $thisText = $this.clone().children().remove().end().text(),
431			noMorePostText = $this.data('no-more-post-text'),
432			loadingText = $this.data('loading-text'),
433			scID = $this.attr('data-sc-id'),
434			elData = $this.data('tss-elementor'),
435			paged = parseInt($this.attr('data-paged'), 10) + 1,
436			totalPages = parseInt($this.data('total-pages'), 10),
437			foundPosts = parseInt($this.data('found-posts'), 10),
438			postsPerPage = parseInt($this.data('posts-per-page'), 10),
439			data = 'scID=' + scID + '&paged=' + paged,
440			morePosts = foundPosts - postsPerPage * paged,
441			data;
442
443		data = 'scID=' + scID + '&paged=' + paged;
444
445		if (typeof elData !== 'undefined') {
446			data = 'scID=elementor&elData=' + JSON.stringify(elData) + '&paged=' + paged;
447		}
448
449		if (morePosts > 0) {
450			$thisText = $thisText + ' <span>(' + morePosts + ')</span>';
451		} else {
452			$thisText = noMorePostText;
453		}
454		data = data + '&action=tssLoadMore&' + tss.nonceId + '=' + tss.nonce;
455		if (container.data('archive')) {
456			data = data + '&archive=' + container.data('archive');
457			if (container.data('archive-value')) {
458				data = data + '&archive-value=' + container.data('archive-value');
459			}
460		}
461
462		$.ajax({
463			type: 'post',
464			url: tss.ajaxurl,
465			data: data,
466			beforeSend: function () {
467				$this.html('<span class="more-loading">' + loadingText + '</span>');
468			},
469			success: function (data) {
470				if (!data.error) {
471					$this.attr('data-paged', paged);
472					if (layout == 'isotope') {
473						renderIsotope(container, $isotope, data.data, IsoButton);
474					} else if (layout == 'mLayout') {
475						$isotope
476							.append(data.data)
477							.isotope('appended', data.data)
478							.isotope('updateSortData')
479							.isotope('reloadItems');
480						$isotope.imagesLoaded(function () {
481							$isotope.isotope();
482						});
483					} else {
484						container.children('.rt-row').append(data.data);
485						container.children('.rt-row').imagesLoaded(function () {
486							preFunction();
487						});
488					}
489					$this.html($thisText);
490					if (totalPages <= paged) {
491						$this.css("pointer-events", "none");
492						$this.unbind("click");
493					}
494				} else {
495					$this.text(data.msg);
496					$this.attr('disabled', 'disabled');
497					$this.parent().hide();
498				}
499			},
500			error: function (jqXHR, textStatus, errorThrown) {
501				container.find('.more-loading').remove();
502				alert(textStatus + ' (' + errorThrown + ')');
503			}
504		});
505		return false;
506	}
507
508	function renderIsotope(container, $isotope, data, IsoButton) {
509		var qsRegexG, buttonFilter;
510		if (!buttonFilter) {
511			buttonFilter = IsoButton.find('.rt-iso-button.selected').data('filter');
512		}
513
514		$isotope.append(data).isotope('appended', data).isotope('reloadItems').isotope('updateSortData');
515		$isotope.imagesLoaded(function () {
516			preFunction();
517			$isotope.isotope();
518		});
519
520		$(IsoButton).on('click', '.rt-iso-button', function (e) {
521			e.preventDefault();
522			buttonFilter = $(this).attr('data-filter');
523			$isotope.isotope();
524			$(this).parent().find('.selected').removeClass('selected');
525			$(this).addClass('selected');
526		});
527		var $quicksearch = container.find('.iso-search-input').keyup(
528			debounce(function () {
529				qsRegexG = new RegExp($quicksearch.val(), 'gi');
530				$isotope.isotope();
531			})
532		);
533		isoFilterCounter(container, $isotope);
534	}
535
536	function scrollLoadMore($this, $isotope, container, layout, IsoButton) {
537		var viewportHeight = $(window).height();
538		var scrollTop = $(window).scrollTop();
539		var targetHeight = $this.offset().top + $this.outerHeight() - 50;
540		var targetScroll = scrollTop + viewportHeight;
541
542		if (targetScroll >= targetHeight) {
543			var trigger = $this.attr('data-trigger');
544			if (trigger == 1) {
545				// $this.data('trigger', false);
546				$this.attr('data-trigger', 0);
547				var data,
548					scID = $this.attr('data-sc-id'),
549					elData = $this.data('tss-elementor'),
550					maxpage = $this.data('max-page'),
551					paged = parseInt($this.attr('data-paged'), 10);
552
553				data = 'scID=' + scID + '&paged=' + paged;
554
555				if (typeof elData !== 'undefined') {
556					data = 'scID=elementor&elData=' + JSON.stringify(elData) + '&paged=' + paged;
557				}
558
559				// data = 'scID=' + scID + '&paged=' + paged;
560				data = data + '&action=tssLoadMore&' + tss.nonceId + '=' + tss.nonce;
561
562				if (container.data('archive')) {
563					data = data + '&archive=' + container.data('archive');
564					if (container.data('archive-value')) {
565						data = data + '&archive-value=' + container.data('archive-value');
566					}
567				}
568				$.ajax({
569					type: 'post',
570					url: tss.ajaxurl,
571					data: data,
572					beforeSend: function () {
573						$this.html('<span class="more-loading">Loading ...</span>');
574					},
575					success: function (data) {
576						if (!data.error) {
577							$this.attr('data-paged', paged + 1);
578							if (layout == 'isotope') {
579								renderIsotope(container, $isotope, data.data, IsoButton);
580							} else if (layout == 'mLayout') {
581								$isotope
582									.append(data.data)
583									.isotope('appended', data.data)
584									.isotope('updateSortData')
585									.isotope('reloadItems');
586								$isotope.imagesLoaded(function () {
587									$isotope.isotope();
588								});
589							} else {
590								container.children('.rt-row').append(data.data);
591								container.children('.rt-row').imagesLoaded(function () {
592									preFunction();
593								});
594							}
595							$this.html('');
596							$this.attr('data-trigger', 1);
597
598							if ($this.attr('data-paged') > maxpage) {
599								$this.attr('data-trigger', 0);
600							}
601						} else {
602							$this.html('');
603							$this.attr('data-trigger', 0);
604						}
605					},
606					error: function (jqXHR, textStatus, errorThrown) {
607						container.find('.more-loading').remove();
608						alert(textStatus + ' (' + errorThrown + ')');
609					}
610				});
611			} // if trigger == 1
612		}
613	}
614
615	function ajaxPagination(container, isotopeM) {
616		container.find('.tss-pagination.tss-ajax ul li').on('click', 'a', function (e) {
617			e.preventDefault();
618			var data,
619				$this = $(this),
620				target = $this.parents('li'),
621				parent = target.parents('.tss-pagination.tss-ajax'),
622				activeLi = parent.find('li.active'),
623				activeNumber = parseInt(activeLi.text(), 10),
624				replaced = "<a data-paged='" + activeNumber + "' href='#'>" + activeNumber + '</a>',
625				scID = parent.data('sc-id'),
626				elData = parent.data('tss-elementor'),
627				paged = $this.data('paged');
628			activeLi.html(replaced);
629			parent.find('li').removeClass('active');
630			target.addClass('active');
631			target.html('<span>' + paged + '</span>');
632
633			data = 'scID=' + scID + '&paged=' + paged;
634
635			if (typeof elData !== 'undefined') {
636				data = 'scID=elementor&elData=' + JSON.stringify(elData) + '&paged=' + paged;
637			}
638
639			data = data + '&action=tssLoadMore&' + tss.nonceId + '=' + tss.nonce;
640
641			if (container.data('archive')) {
642				data = data + '&archive=' + container.data('archive');
643				if (container.data('archive-value')) {
644					data = data + '&archive-value=' + container.data('archive-value');
645				}
646			}
647			$.ajax({
648				type: 'post',
649				url: tss.ajaxurl,
650				data: data,
651				beforeSend: function () {
652					parent.append(
653						'<div class="tss-loading-holder"><span class="more-loading">Loading ...</span></div>'
654					);
655				},
656				success: function (data) {
657
658					if (!data.error) {
659						if (typeof isotopeM === 'undefined') {
660							container.children('.rt-row').animate({
661								opacity: 0
662							});
663							setTimeout(function () {
664								container.children('.rt-row').html(data.data);
665								container.children('.rt-row').imagesLoaded(function () {
666									preFunction();
667									container.children('.rt-row').animate(
668										{
669											opacity: 1
670										},
671										1000
672									);
673								});
674							}, 500);
675						} else {
676							container.children('.rt-row').find('.masonry-grid-item').remove();
677							isotopeM
678								.append(data.data)
679								.isotope('appended', data.data)
680								.isotope('updateSortData')
681								.isotope('reloadItems');
682							isotopeM.imagesLoaded(function () {
683								preFunction();
684								isotopeM.isotope();
685							});
686						}
687
688						$('.tss-wrapper').animate({ scrollTop: 0 }, 700);
689						$('html, body').animate({
690							scrollTop: ($('.tss-wrapper').offset().top - 100)
691						}, 700);
692					} else {
693						alert(data.msg);
694					}
695					container.find('.tss-loading-holder').remove();
696				},
697				error: function (jqXHR, textStatus, errorThrown) {
698					container.find('.tss-loading-holder').remove();
699					alert(textStatus + ' (' + errorThrown + ')');
700				}
701			});
702		});
703	}
704
705	// debounce so filtering doesn't happen every millisecond
706	function debounce(fn, threshold) {
707		var timeout;
708		return function debounced() {
709			if (timeout) {
710				clearTimeout(timeout);
711			}
712
713			function delayed() {
714				fn();
715				timeout = null;
716			}
717
718			setTimeout(delayed, threshold || 100);
719		};
720	}
721
722	function overlayIconResize() {
723		$('.tlp-item').each(function () {
724			var holder_height = $(this).height();
725			var a_height = $(this).find('.tlp-overlay .link-icon').height();
726			var h = (holder_height - a_height) / 2;
727			$(this).find('.link-icon').css('margin-top', h + 'px');
728		});
729	}
730
731	function RTPromoContent() {
732		parent.document.addEventListener("mousedown", function (e) {
733			var widgets = parent.document.querySelectorAll(".elementor-element--promotion");
734
735			if (widgets.length > 0) {
736				for (var i = 0; i < widgets.length; i++) {
737					if (widgets[i].contains(e.target)) {
738						var dialog = parent.document.querySelector("#elementor-element--promotion__dialog");
739						var icon = widgets[i].querySelector(".icon > i");
740
741						if (icon.classList.toString().indexOf("tss-promotional-element") >= 0) {
742							dialog.querySelector(".dialog-buttons-action").style.visibility = "hidden";
743							dialog.querySelector(".dialog-buttons-action").style.width = 0;
744							dialog.querySelector(".dialog-buttons-action").style.height = 0;
745							dialog.querySelector(".dialog-buttons-action").style.opacity = 0;
746							dialog.querySelector(".dialog-buttons-action").style.padding = 0;
747
748							if (dialog.querySelector(".rt-dialog-buttons-action") === null) {
749								var button = document.createElement("a");
750								var buttonText = document.createTextNode("Get Pro");
751
752								button.setAttribute("href", "https://www.radiustheme.com/downloads/wp-testimonial-slider-showcase-pro-wordpress/");
753								button.setAttribute("target", "_blank");
754								button.classList.add(
755									"dialog-button",
756									"dialog-action",
757									"dialog-buttons-action",
758									"elementor-button",
759									"elementor-button-success",
760									"rt-dialog-buttons-action"
761								);
762								button.appendChild(buttonText);
763
764								dialog.querySelector(".dialog-buttons-action").insertAdjacentHTML("afterend", button.outerHTML);
765							} else {
766								dialog.querySelector(".rt-dialog-buttons-action").style.display = "";
767							}
768						} else {
769							dialog.querySelector(".dialog-buttons-action").style.display = "";
770							dialog.querySelector(".dialog-buttons-action").style.visibility = "";
771							dialog.querySelector(".dialog-buttons-action").style.width = "";
772							dialog.querySelector(".dialog-buttons-action").style.height = "";
773							dialog.querySelector(".dialog-buttons-action").style.opacity = "";
774							dialog.querySelector(".dialog-buttons-action").style.padding = "";
775
776							if (dialog.querySelector(".rt-dialog-buttons-action") !== null) {
777								dialog.querySelector(".rt-dialog-buttons-action").style.display = "none";
778							}
779						}
780
781						break;
782					}
783				}
784			}
785		});
786	}
787
788	function RTInitIsotope() {
789		var container = jQuery('.tss-wrapper');
790
791		if (container.find('.tss-isotope, .tss-isotope2').length) {
792			container.find('.tss-isotope, .tss-isotope2').isotope();
793		}
794
795		if (container.find('.rt-row.tss-masonry').length) {
796			var masonryTarget = container.find('.rt-row.tss-masonry');
797			masonryTarget.isotope({
798				itemSelector: '.isotope-item',
799				masonry: { columnWidth: '.isotope-item' }
800			});
801		}
802	}
803
804	// Elementor Frontend Load
805	$(window).on('elementor/frontend/init', function () {
806		if (elementorFrontend.isEditMode()) {
807			elementorFrontend.hooks.addAction('frontend/element_ready/widget', function () {
808				RTInitCaroIso();
809				preFunction();
810			});
811
812			// Promo Content.
813			RTPromoContent();
814		}
815	});
816})(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.