PageSourceSearch

https://benvox.be/wp-content/plugins/elementskit-lite/widgets/init/assets/js/elementor.js?ver=1.4.1

js benvox.be collected 2026-10-04 17:43:40 UTC 35,927 bytes, 921 lines download raw bytes

1(function ($, elementor) {
2	"use strict";
3
4	var Elementskit = {
5
6		init: function () {
7
8			var widgets = {
9				'elementskit-countdown-timer.default': Elementskit.Countdown_Timer,
10				'elementskit-client-logo.default': Elementskit.Client_Logo,
11				'elementskit-testimonial.default': Elementskit.Testimonial_Slider,
12				'elementskit-image-comparison.default': Elementskit.Image_Comparison,
13				'elementskit-progressbar.default': Elementskit.Progressbar,
14				'elementskit-piechart.default': Elementskit.Piechart,
15				'elementskit-funfact.default': Elementskit.Funfact,
16				'elementskit-gallery.default': Elementskit.Gallery,
17				'elementskit-motion-text.default': Elementskit.MotionText,
18				'elementskit-timeline.default': Elementskit.TimeLine,
19				'elementskit-post-tab.default': Elementskit.PostTab,
20				'elementskit-elementskit-hotspot.default': Elementskit.Hotspot,
21				'elementskit-header-search.default': Elementskit.Header_Search,
22				'elementskit-header-offcanvas.default': Elementskit.Header_Off_Canvas,
23				'elementskit-table.default': Elementskit.Table,
24				'elementskit-creative-button.default': Elementskit.Creative_Button,
25				'ekit-nav-menu.default': Elementskit.Nav_Menu,
26				'elementskit-woo-mini-cart.default': Elementskit.Mini_Cart,
27				'elementskit-team.default': Elementskit.Team,
28				'elementskit-image-accordion.default': Elementskit.Image_Accordion,
29			};
30			$.each(widgets, function (widget, callback) {
31				elementor.hooks.addAction('frontend/element_ready/' + widget, callback);
32			});
33
34			elementor.hooks.addAction('frontend/element_ready/global', Elementskit.GlobalCallback);
35		},
36
37		GlobalCallback: function ($scope) {
38			// $('img').imagesLoaded().done(function (instance) {
39			// 	console.log('all images successfully loaded');
40			// });
41		},
42
43		AnimationFix: function ($scope) {
44			function init($scope) {
45				$scope.find('.elementskit-invisible').each(function () {
46					var el = $(this);
47					var settings = JSON.parse(el.attr('data-settings'));
48
49					var isVisible = Elementskit.IsElementInView(el, false),
50						animationClass = settings._animation,
51						animationDelay = settings._animation_delay || 300;
52
53					if (isVisible == true) {
54						setTimeout(function () {
55							el.removeClass('elementskit-invisible').addClass('animated ' + animationClass);
56						}, animationDelay);
57					}
58				});
59			}
60
61			init($scope);
62			$(window).on('scroll', function () {
63				init($scope);
64			});
65		},
66
67		IsElementInView: function (element, fullyInView) {
68			var pageTop = $(window).scrollTop();
69			var pageBottom = pageTop + $(window).height();
70			var elementTop = element.offset().top;
71			var elementBottom = elementTop + element.height();
72
73			if (fullyInView === true) {
74				return ((pageTop < elementTop) && (pageBottom > elementBottom));
75			} else {
76				return ((elementTop <= pageBottom) && (elementBottom >= pageTop));
77			}
78		},
79
80		Nav_Menu: function ($scope) {
81			var menu_container = $scope.find('.elementskit-menu-container');
82			if (menu_container.attr('ekit-dom-added') == 'yes') {
83				return;
84			}
85			menu_container
86				.before(
87					'<button class="elementskit-menu-hamburger elementskit-menu-toggler">' +
88					'<span class="elementskit-menu-hamburger-icon"></span>' +
89					'<span class="elementskit-menu-hamburger-icon"></span>' +
90					'<span class="elementskit-menu-hamburger-icon"></span>' +
91					'</button>'
92				)
93				.after('<div class="elementskit-menu-overlay elementskit-menu-offcanvas-elements elementskit-menu-toggler"></div>')
94				.attr('ekit-dom-added', 'yes');
95		},
96
97		Mini_Cart: function ($scope) {
98			$scope.find(".ekit-dropdown-back").on('click mouseenter mouseleave', function (e) {
99				var self = $(this),
100					enableClick = self.hasClass('ekit-mini-cart-visibility-click'),
101					enableHover = self.hasClass('ekit-mini-cart-visibility-hover'),
102					body = self.find('.ekit-mini-cart-container');
103
104
105				if (e.type === 'click' && enableClick && !$(e.target).parents('div').hasClass('ekit-mini-cart-container')) {
106					body.fadeToggle();
107				} else if (e.type === 'mouseenter' && enableHover) {
108					body.fadeIn();
109				} else if (e.type === 'mouseleave' && enableHover) {
110					body.fadeOut();
111				}
112
113			});
114		},
115
116		Progressbar: function ($scope) {
117			var barElement = $scope.find(".single-skill-bar");
118			var percentElement = $scope.find(".number-percentage");
119			var value = percentElement.attr("data-value");
120			var duration = percentElement.attr("data-animation-duration");
121			duration = parseInt((duration != '' ? duration : 300), 10);
122
123			barElement.elementorWaypoint({
124				handler: function () {
125					percentElement.animateNumbers(value, true, duration);
126					barElement.find('.skill-track').animate({
127						width: value + '%'
128					}, 3500);
129				},
130				offset: '100%'
131			})
132		},
133		Funfact: function ($scope) {
134			var barElement = $scope.find(".elementskit-funfact");
135			var percentElement = $scope.find(".number-percentage");
136			var value = percentElement.attr("data-value");
137			var duration = percentElement.attr("data-animation-duration");
138			duration = parseInt((duration != '' ? duration : 300), 10);
139
140			barElement.elementorWaypoint({
141				handler: function () {
142					percentElement.animateNumbers(value, true, duration);
143				},
144				offset: '100%'
145			})
146		},
147		Countdown_Timer: function ($scope) {
148
149			var $container1 = $scope.find('.elementskit-countdown-timer[data-ekit-countdown]');
150			var $container2 = $scope.find('.elementskit-countdown-timer-2[data-ekit-countdown]');
151			var $container3 = $scope.find('.elementskit-countdown-timer-3[data-ekit-countdown]');
152			var $container4 = $scope.find('.elementskit-countdown-timer-4[data-ekit-countdown]');
153			var $container5 = $scope.find('.elementskit-flip-clock');
154
155			$container1.each(function () {
156				var $this = $(this),
157					finalDate = $(this).data('ekit-countdown');
158				var hour = $(this).data('date-ekit-hour'),
159					minute = $(this).data('date-ekit-minute'),
160					second = $(this).data('date-ekit-second'),
161					day = $(this).data('date-ekit-day'),
162					week = $(this).data('date-ekit-week'),
163					finish_title = $(this).data('finish-title'),
164					finish_content = $(this).data('finish-content');
165
166				$this.theFinalCountdown(finalDate, function (event) {
167						var $this = $(this).html(event.strftime(' ' +
168							'<div class="elementskit-timer-container elementskit-days"><div class="elementskit-inner-container"><div class="elementskit-timer-content"><span class="elementskit-timer-count">%-D </span><span class="elementskit-timer-title">' + day + '</span></div></div></div>' +
169							'<div class="elementskit-timer-container elementskit-hours"><div class="elementskit-inner-container"><div class="elementskit-timer-content"><span class="elementskit-timer-count">%H </span><span class="elementskit-timer-title">' + hour + '</span></div></div></div>' +
170							'<div class="elementskit-timer-container elementskit-minutes"><div class="elementskit-inner-container"><div class="elementskit-timer-content"><span class="elementskit-timer-count">%M </span><span class="elementskit-timer-title">' + minute + '</span></div></div></div>' +
171							'<div class="elementskit-timer-container elementskit-seconds"><div class="elementskit-inner-container"><div class="elementskit-timer-content"><span class="elementskit-timer-count">%S </span><span class="elementskit-timer-title">' + second + '</span></div></div></div>'
172						));
173					})
174					.on('finish.countdown', function () {
175						$(this).html(
176							finish_title + "<br/>" + finish_content
177						);
178					});
179			});
180
181			$container2.each(function () {
182				var $this = $(this),
183					finalDate = $(this).data('ekit-countdown');
184				var hour = $(this).data('date-ekit-hour'),
185					minute = $(this).data('date-ekit-minute'),
186					second = $(this).data('date-ekit-second'),
187					day = $(this).data('date-ekit-day'),
188					week = $(this).data('date-ekit-week'),
189					finish_title = $(this).data('finish-title'),
190					finish_content = $(this).data('finish-content');
191
192				$this.theFinalCountdown(finalDate, function (event) {
193
194						var $this = $(this).html(event.strftime(' ' +
195							'<div class="elementskit-timer-container elementskit-days"><span class="elementskit-timer-count">%-D </span><span class="elementskit-timer-title">' + day + '</span></div>' +
196							'<div class="elementskit-timer-container elementskit-hours"><span class="elementskit-timer-count">%H </span><span class="elementskit-timer-title">' + hour + '</span></div>' +
197							'<div class="elementskit-timer-container elementskit-minutes"><span class="elementskit-timer-count">%M </span><span class="elementskit-timer-title">' + minute + '</span></div>' +
198							'<div class="elementskit-timer-container elementskit-seconds"><span class="elementskit-timer-count">%S </span><span class="elementskit-timer-title">' + second + '</span></div>'));
199					})
200					.on('finish.countdown', function () {
201						$(this).html(
202							finish_title + "<br/>" + finish_content
203						);
204					});
205			});
206
207			$container3.each(function () {
208				var $this = $(this),
209					finalDate = $(this).data('ekit-countdown');
210				var hour = $(this).data('date-ekit-hour'),
211					minute = $(this).data('date-ekit-minute'),
212					second = $(this).data('date-ekit-second'),
213					day = $(this).data('date-ekit-day'),
214					week = $(this).data('date-ekit-week'),
215					finish_title = $(this).data('finish-title'),
216					finish_content = $(this).data('finish-content');
217
218				$this.theFinalCountdown(finalDate, function (event) {
219						var $this = $(this).html(event.strftime(' ' +
220							'<div class="elementskit-timer-container elementskit-days"><div class="elementskit-timer-content"><div class="elementskit-inner-container"><span class="elementskit-timer-count">%-D </span><span class="elementskit-timer-title">' + day + '</span></div></div></div>' +
221							'<div class="elementskit-timer-container elementskit-hours"><div class="elementskit-timer-content"><div class="elementskit-inner-container"><span class="elementskit-timer-count">%H </span><span class="elementskit-timer-title">' + hour + '</span></div></div></div>' +
222							'<div class="elementskit-timer-container elementskit-minutes"><div class="elementskit-timer-content"><div class="elementskit-inner-container"><span class="elementskit-timer-count">%M </span><span class="elementskit-timer-title">' + minute + '</span></div></div></div>' +
223							'<div class="elementskit-timer-container elementskit-seconds"><div class="elementskit-timer-content"><div class="elementskit-inner-container"><span class="elementskit-timer-count">%S </span><span class="elementskit-timer-title">' + second + '</span></div></div></div>'));
224
225					})
226					.on('finish.countdown', function () {
227						$(this).html(
228							finish_title + "<br/>" + finish_content
229						);
230					});
231			});
232
233			$container4.each(function () {
234				var $this = $(this),
235					finalDate = $(this).data('ekit-countdown');
236				var hour = $(this).data('date-ekit-hour'),
237					minute = $(this).data('date-ekit-minute'),
238					second = $(this).data('date-ekit-second'),
239					day = $(this).data('date-ekit-day'),
240					week = $(this).data('date-ekit-week'),
241					finish_title = $(this).data('finish-title'),
242					finish_content = $(this).data('finish-content');
243
244				$this.theFinalCountdown(finalDate, function (event) {
245
246						var $this = $(this).html(event.strftime(' ' +
247							'<div class="elementskit-timer-container elementskit-days"><span class="elementskit-timer-count">%-D </span><span class="elementskit-timer-title">' + day + '</span></div>' +
248							'<div class="elementskit-timer-container elementskit-hours"><span class="elementskit-timer-count">%H </span><span class="elementskit-timer-title">' + hour + '</span></div>' +
249							'<div class="elementskit-timer-container elementskit-minutes"><span class="elementskit-timer-count">%M </span><span class="elementskit-timer-title">' + minute + '</span></div>' +
250							'<div class="elementskit-timer-container elementskit-seconds"><span class="elementskit-timer-count">%S </span><span class="elementskit-timer-title">' + second + '</span></div>'));
251
252					})
253					.on('finish.countdown', function () {
254						$(this).html(
255							finish_title + "<br/>" + finish_content
256						);
257						$(this).addClass('elementskit-coundown-finish');
258					});
259			});
260
261			$container5.each(function () {
262				var hour = $(this).data('date-ekit-hour'),
263					minute = $(this).data('date-ekit-minute'),
264					second = $(this).data('date-ekit-second'),
265					day = $(this).data('date-ekit-day'),
266					week = $(this).data('date-ekit-week'),
267					finalDate = $(this).data('ekit-countdown'),
268					finish_title = $(this).data('finish-title'),
269					finish_content = $(this).data('finish-content');
270
271				var labelsData = {
272					'elementskit-wks': week,
273					'elementskit-days': day,
274					'elementskit-hrs': hour,
275					'elementskit-mins': minute,
276					'elementskit-secs': second
277				};
278
279				var labels = ['elementskit-wks', 'elementskit-days', 'elementskit-hrs', 'elementskit-mins', 'elementskit-secs'],
280
281					nextYear = (new Date(finalDate)),
282					// template = _.template('<div class="elementskit-time <%= label %>"><span class="elementskit-count elementskit-curr elementskit-top"><%= curr %></span><span class="elementskit-count elementskit-next elementskit-top"><%= next %></span><span class="elementskit-count elementskit-next elementskit-bottom"><%= next %></span><span class="elementskit-count elementskit-curr elementskit-bottom"><%= curr %></span><span class="elementskit-label"><%= labelD.length < 6 ? labelD : labelD.substr(0, 3)  %></span></div>'),
283					currDate = '00:00:00:00:00',
284					nextDate = '00:00:00:00:00',
285					parser = /([0-9]{2})/gi,
286					$example = $container5;
287				// Parse countdown string to an object
288				function strfobj(str) {
289					var parsed = str.match(parser),
290						obj = {};
291					labels.forEach(function (label, i) {
292						obj[label] = parsed[i]
293					});
294					return obj;
295				}
296				// Return the time components that diffs
297				function diff(obj1, obj2) {
298					var diff = [];
299					labels.forEach(function (key) {
300						if (obj1[key] !== obj2[key]) {
301							diff.push(key);
302						}
303					});
304					return diff;
305				}
306				// Build the layout
307				var initData = strfobj(currDate);
308				labels.forEach(function (label, i) {
309					// $example.append(template({
310					// 	curr: initData[label],
311					// 	next: initData[label],
312					// 	label: label,
313					// 	labelD: labelsData[label]
314					// }));
315
316					// $example.append(`<div class="elementskit-time ${label}">
317					// 	<span class="elementskit-count elementskit-curr elementskit-top">${initData[label]}</span>
318					// 	<span class="elementskit-count elementskit-next elementskit-top">${initData[label]}</span>
319					// 	<span class="elementskit-count elementskit-next elementskit-bottom">${initData[label]}</span>
320					// 	<span class="elementskit-count elementskit-curr elementskit-bottom">${initData[label]}</span>
321					// 	<span class="elementskit-label">${labelsData[label].length < 6 ? labelsData[label] : labelsData[label].substr(0, 3)}</span>
322					// </div>`);
323
324					$example.append('' +
325						'<span class="elementskit-count elementskit-curr elementskit-top">' + initData[label] + '</span>' +
326						'<span class="elementskit-count elementskit-next elementskit-top">' + initData[label] + '</span>' +
327						'<span class="elementskit-count elementskit-next elementskit-bottom">' + initData[label] + '</span>' +
328						'<span class="elementskit-count elementskit-curr elementskit-bottom">' + initData[label] + '</span>' +
329						'<span class="elementskit-label">' + labelsData[label].length < 6 ? labelsData[label] : labelsData[label].substr(0, 3) + ' </span>'
330					);
331				});
332				// Starts the countdown
333				$example.theFinalCountdown(nextYear, function (event) {
334						var newDate = event.strftime('%w:%d:%H:%M:%S'),
335							data;
336						if (newDate !== nextDate) {
337							currDate = nextDate;
338							nextDate = newDate;
339							// Setup the data
340							data = {
341								'curr': strfobj(currDate),
342								'next': strfobj(nextDate)
343							};
344							// Apply the new values to each node that changed
345							diff(data.curr, data.next).forEach(function (label) {
346								var selector = '.%s'.replace(/%s/, label),
347									$node = $example.find(selector);
348								// Update the node
349								$node.removeClass('elementskit-flip');
350								$node.find('.elementskit-curr').text(data.curr[label]);
351								$node.find('.elementskit-next').text(data.next[label]);
352								// Wait for a repaint to then flip
353								setTimeout(function ($node) {
354									$node.addClass('elementskit-flip');
355								}, 50, $node);
356							});
357						}
358					})
359					.on('finish.countdown', function () {
360						$(this).html(
361							finish_title + "<br/>" + finish_content
362						);
363					});
364			});
365
366		},
367
368		Client_Logo: function ($scope) {
369			var $log_carosel = $scope.find('.elementskit-clients-slider');
370			$log_carosel.each(function () {
371				// //console.log($(this).data('right_icon'));
372				var leftArrow = '<button type="button" class="slick-prev"><i class="icon icon-left-arrow2"></i></button>';
373
374				var rightArrow = '<button type="button" class="slick-next"><i class="icon icon-right-arrow2"></i></button>';
375
376				var slidestoshowtablet = $(this).data('slidestoshowtablet');
377				var slidestoscroll_tablet = $(this).data('slidestoscroll_tablet');
378				var slidestoshowmobile = $(this).data('slidestoshowmobile');
379				var slidestoscroll_mobile = $(this).data('slidestoscroll_mobile');
380				var arrow = $(this).data('show_arrow') === 'yes' ? true : false;
381				var dot = $(this).data('show_dot') === 'yes' ? true : false;
382				var autoPlay = $(this).data('autoplay') === 'yes' ? true : false;
383				var centerMode = $(this).data('data-center_mode') === 'yes' ? true : false;
384
385				$(this).not('.slick-initialized').slick({
386					slidesToShow: ($(this).data('slidestoshow') !== 'undefined') ? $(this).data('slidestoshow') : 4,
387					slidesToScroll: ($(this).data('slidestoscroll') !== 'undefined') ? $(this).data('slidestoscroll') : 4,
388					autoplay: ($(this).data('autoplay') !== 'undefined') ? autoPlay : true,
389					autoplaySpeed: ($(this).data('speed') !== 'undefined') ? $(this).data('speed') : 1000,
390					arrows: ($(this).data('show_arrow') !== 'undefined') ? arrow : true,
391					dots: ($(this).data('show_dot') !== 'undefined') ? dot : true,
392					pauseOnHover: ($(this).data('pause_on_hover') == 'yes') ? true : false,
393					prevArrow: ($(this).data('left_icon') !== 'undefined') ? '<button type="button" class="slick-prev"><i class="' + $(this).data('left_icon') + '"></i></button>' : leftArrow,
394					nextArrow: ($(this).data('right_icon') !== 'undefined') ? '<button type="button" class="slick-next"><i class="' + $(this).data('right_icon') + '"></i></button>' : rightArrow,
395					rows: ($(this).data('rows') !== 'undefined') ? $(this).data('rows') : 1,
396					vertical: ($(this).data('vertical_style') == 'yes') ? true : false,
397					infinite: ($(this).data('autoplay') !== 'undefined') ? autoPlay : true,
398					responsive: [{
399							breakpoint: 1024,
400							settings: {
401								slidesToShow: slidestoshowtablet,
402								slidesToScroll: slidestoscroll_tablet,
403							}
404						},
405						{
406							breakpoint: 600,
407							settings: {
408								slidesToShow: slidestoshowtablet,
409								slidesToScroll: slidestoscroll_tablet
410							}
411						},
412						{
413							breakpoint: 480,
414							settings: {
415								arrows: false,
416								slidesToShow: slidestoshowmobile,
417								slidesToScroll: slidestoscroll_mobile
418							}
419						}
420					]
421
422				});
423
424			});
425		},
426
427		Testimonial_Slider: function ($scope) {
428			var $testimonial_slider = $scope.find('.elementskit-testimonial-slider');
429			$testimonial_slider.each(function () {
430				var leftArrow = '<button type="button" class="slick-prev"><i class="icon icon-left-arrow2"></i></button>';
431				var rightArrow = '<button type="button" class="slick-next"><i class="icon icon-right-arrow2"></i></button>';
432
433				var slidestoshowtablet = $(this).data('slidestoshowtablet');
434				var slidestoscroll_tablet = $(this).data('slidestoscroll_tablet');
435				var slidestoshowmobile = $(this).data('slidestoshowmobile');
436				var slidestoscroll_mobile = $(this).data('slidestoscroll_mobile');
437				var arrow = $(this).data('show_arrow') === 'yes' ? true : false;
438				var dot = $(this).data('show_dot') === 'yes' ? true : false;
439				var autoPlay = $(this).data('autoplay') === 'yes' ? true : false;
440				// var centerMode = $(this).data('data-center_mode') === 'yes' ? true : false;
441
442
443				$(this).not('.slick-initialized').slick({
444					slidesToShow: ($(this).data('slidestoshow') !== 'undefined') ? $(this).data('slidestoshow') : 1,
445					slidesToScroll: ($(this).data('slidestoscroll') !== 'undefined') ? $(this).data('slidestoscroll') : 1,
446					autoplay: ($(this).data('autoplay') !== 'undefined') ? autoPlay : true,
447					autoplaySpeed: ($(this).data('speed') !== 'undefined') ? $(this).data('speed') : 1000,
448					arrows: ($(this).data('show_arrow') !== 'undefined') ? arrow : true,
449					dots: ($(this).data('show_dot') !== 'undefined') ? dot : true,
450					pauseOnHover: ($(this).data('pause_on_hover') == 'yes') ? true : false,
451					prevArrow: ($(this).data('left_icon') !== 'undefined') ? '<button type="button" class="slick-prev"><i class="' + $(this).data('left_icon') + '"></i></button>' : leftArrow,
452					nextArrow: ($(this).data('right_icon') !== 'undefined') ? '<button type="button" class="slick-next"><i class="' + $(this).data('right_icon') + '"></i></button>' : rightArrow,
453					// rows: ($(this).data('rows') !== 'undefined') ? $(this).data('rows') : 1,
454					vertical: ($(this).data('vertical_style') == 'yes') ? true : false,
455					infinite: ($(this).data('autoplay') !== 'undefined') ? autoPlay : true,
456					responsive: [{
457							breakpoint: 1024,
458							settings: {
459								slidesToShow: slidestoshowtablet,
460								slidesToScroll: slidestoscroll_tablet,
461							}
462						},
463						{
464							breakpoint: 600,
465							settings: {
466								slidesToShow: slidestoshowtablet,
467								slidesToScroll: slidestoscroll_tablet
468							}
469						},
470						{
471							breakpoint: 480,
472							settings: {
473								arrows: false,
474								slidesToShow: slidestoshowmobile,
475								slidesToScroll: slidestoscroll_mobile
476							}
477						}
478					]
479				});
480
481			});
482		},
483
484		Image_Comparison: function ($scope) {
485			var $ekit_img_comparison = $scope.find('.elementskit-image-comparison');
486
487			$ekit_img_comparison.imagesLoaded(function (e) {
488				var $el = $(e.elements[0]),
489					config = {
490						orientation: $el.hasClass('image-comparison-container-vertical') ? 'vertical' : 'horizontal',
491						before_label: $el.data('label_before'),
492						after_label: $el.data('label_after'),
493						default_offset_pct: $el.data('offset'),
494						no_overlay: $el.data('overlay'),
495						move_slider_on_hover: $el.data('move_slider_on_hover'),
496						click_to_move: $el.data('click_to_move')
497					};
498
499				$el.twentytwenty(config);
500			});
501		},
502		Piechart: function ($scope) {
503			var colorfulchart = $scope.find('.colorful-chart');
504
505			//console.log(colorfulchart);
506
507			if (colorfulchart.length > 0) {
508
509				colorfulchart.each(function (__, e) {
510					var myColors = $(e).data('color');
511					var datalineWidth = $(e).data('linewidth');
512					var color_type = $(e).data('pie_color_style');
513					var gradentColor1 = $(e).data('gradientcolor1');
514					var gradentColor2 = $(e).data('gradientcolor2');
515					var barbg = $(e).data('barbg');
516
517					var obj;
518
519					if (color_type === 'gradient') {
520
521						obj = {
522							gradientChart: true,
523							barColor: gradentColor1,
524							gradientColor1: gradentColor2,
525							gradientColor2: gradentColor1,
526							lineWidth: datalineWidth,
527							trackColor: barbg,
528						};
529
530					} else {
531						obj = {
532							lineWidth: datalineWidth,
533							barColor: myColors,
534							trackColor: barbg,
535						};
536					}
537
538					$(e).myChart(obj);
539				})
540			}
541
542		},
543		Gallery: function ($scope) {
544			var $container = $scope.find('.ekit_gallery_grid');
545			var column = $container.data('gallerycol');
546			// console.log((parseInt(column.tablet, 10)));
547			if ($container.length > 0) {
548				var colWidth = function colWidth() {
549						var w = $container.width(),
550							columnNum,
551							columnWidth = 0;
552						if (w > 1024) {
553							columnNum = parseInt(column.desktop, 10);
554						} else if (w > 768) {
555							columnNum = parseInt(column.tablet, 10);
556						}
557						columnWidth = Math.floor(w / columnNum);
558						$container.find('.ekit_gallery_grid_item').each(function () {
559							var $item = $(this),
560								multiplier_w = $item.attr('class').match(/ekit_gallery_grid_item-w(\d)/),
561								width = multiplier_w ? columnWidth * multiplier_w[1] : columnWidth;
562							$item.css({
563								width: width,
564							});
565						});
566						return columnWidth;
567					},
568					isotope = function isotope() {
569						$container.isotope({
570							resizable: false,
571							itemSelector: '.ekit_gallery_grid_item',
572							masonry: {
573								columnWidth: colWidth(),
574								gutterWidth: 0
575							}
576						});
577					};
578				isotope();
579				$(window).on('resize load', isotope);
580				var $optionSets = $scope.find('.filter-button-wraper .option-set'),
581					$optionLinks = $optionSets.find('a');
582				$optionLinks.on('click', function () {
583					var $this = $(this);
584					var $optionSet = $this.parents('.option-set');
585					$optionSet.find('.selected').removeClass('selected');
586					$this.addClass('selected');
587					// make option object dynamically, i.e. { filter: '.my-filter-class' }
588					var options = {},
589						key = $optionSet.attr('data-option-key'),
590						value = $this.attr('data-option-value');
591
592					// parse 'false' as false boolean
593					value = value === 'false' ? false : value;
594					options[key] = value;
595					if (key === 'layoutMode' && typeof changeLayoutMode === 'function') {
596						// changes in layout modes need extra logic
597						changeLayoutMode($this, options);
598					} else {
599						// creativewise, apply new options
600						$container.isotope(options);
601					}
602					return false;
603				});
604			}
605			// tilt
606			var tiltContainer = $scope.find('.ekit-gallery-portfolio-tilt'),
607				glare = $(tiltContainer).data('tilt-glare') === 'yes' ? true : false;
608			$(tiltContainer).tilt({
609				easing: "cubic-bezier(.03,.98,.52,.99)",
610				transition: true,
611				glare: glare,
612			})
613
614			$container.imagesLoaded(function () {
615				$container.isotope();
616			});
617
618			$(window).on('scroll', function () {
619				$container.isotope('layout');
620			});
621		},
622		MotionText: function ($scope) {
623			var texts = $scope.find('.ekit_char_based .ekit_motion_text');
624			var motionTitle = $scope.find('.ekit_motion_text_title');
625
626			// split content
627			texts.each(function () {
628				var text = $(this);
629				for (let i = 0; i < text.length; i++) {
630					var $this = text[i];
631					var content = $this.innerHTML;
632					content = content.trim();
633					var str = '';
634					var delay = parseInt(text.attr('data-ekit-animation-delay')),
635						delayIncrement = delay;
636
637					//console.log(delay);
638
639					for (let l = 0; l < content.length; l++) {
640						if (content[l] != '') {
641							// str += `<span class="ekit-letter" style="animation-delay:${delay}ms; -moz-animation-delay:${delay}ms; -webkit-animation-delay:${delay}ms;">${content[l]}</span>`;
642							str += '<span class="ekit-letter" style="animation-delay:' + delay + 'ms; -moz-animation-delay:' + delay + 'ms; -webkit-animation-delay:' + delay + 'ms;">' + content[l] + '</span>';
643							delay += delayIncrement;
644						} else {
645							str += content[i];
646						}
647					}
648					$this.innerHTML = str;
649				}
650			});
651
652			// motion title on scroll
653			var animationClass = motionTitle.attr("data-animate-class");
654			motionTitle.elementorWaypoint({
655				handler: function () {
656					motionTitle.addClass(animationClass).css('opacity', 1);
657				},
658				offset: '100%'
659			});
660
661
662		},
663
664		TimeLine: function ($scope) {
665
666			Elementskit.AnimationFix($scope);
667
668			var horizantalTimeline = $scope.find('.horizantal-timeline');
669
670			if (horizantalTimeline.length > 0) {
671				horizantalTimeline.find('.content-group').each(function (__, e) {
672					$(e).on('mouseenter', function () {
673						if ($(e).parents('.single-timeline').hasClass('hover')) {
674							$(e).parents('.single-timeline').removeClass('hover')
675						} else {
676							$(e).parents('.single-timeline').addClass('hover')
677							$(e).parents('.single-timeline').nextAll().removeClass('hover')
678							$(e).parents('.single-timeline').prevAll().removeClass('hover')
679						}
680					})
681				})
682			}
683		},
684
685		PostTab: function ($scope) {
686			var tab = $scope.find('.post--tab');
687
688			if (tab.length < 1) {
689				return;
690			}
691
692			var event_type = tab.attr('data-post-tab-event');
693
694			tab.find('.tabHeader > .tab__list > .tab__list__item').on(event_type, function () {
695				$(tab).find('.tabHeader > .tab__list > .tab__list__item').removeClass('active');
696				$(this).addClass('active');
697				$(tab).find('.tabContent > .tabItem').removeClass('active');
698				$(tab).find('.tabContent > .tabItem').eq($(this).index()).addClass('active');
699				$(tab).find('.tabContent > .tabItem').hide();
700				$(tab).find('.tabContent > .tabItem').eq($(this).index()).show();
701			});
702		},
703		Hotspot: function ($scope) {
704			if ($scope.find('[data-toggle="tooltip"]').length > 0) {
705				var event_type = $scope.find('[data-toggle="tooltip"]');
706				event_type.tooltip();
707			}
708		},
709		Header_Search: function ($scope) {
710			if ($scope.find('.ekit-modal-popup').length > 0) {
711				$scope.find('.ekit-modal-popup').magnificPopup({
712					type: 'inline',
713					fixedContentPos: false,
714					fixedBgPos: true,
715					overflowY: 'auto',
716					closeBtnInside: false,
717					prependTo: $scope.find('.ekit-wid-con'),
718					callbacks: {
719						beforeOpen: function () {
720							this.st.mainClass = "my-mfp-slide-bottom ekit-promo-popup";
721						}
722					}
723				});
724			}
725		},
726		Team: function ($scope) {
727			var el = $scope.find('.ekit-team-popup');
728			el.magnificPopup({
729				type: 'inline',
730				fixedContentPos: true,
731				fixedBgPos: true,
732				overflowY: 'auto',
733				closeBtnInside: true,
734				prependTo: $scope.find('.ekit-wid-con'),
735				showCloseBtn: false,
736				callbacks: {
737					beforeOpen: function () {
738						this.st.mainClass = "my-mfp-slide-bottom ekit-promo-popup";
739					}
740				}
741			});
742
743			$($scope).find('.ekit-modal-close').on('click', function () {
744				el.magnificPopup('close');
745			});
746		},
747		Table: function ($scope) {
748			if ($scope.find('.ekit_table').length > 0) {
749				var settings = $scope.find('.ekit_table').data('settings'),
750					prevText = (settings.nav_style.trim() === 'text' || settings.nav_style.trim() === 'both') ? '<span class="ekit-tbl-pagi-nav ekit-tbl-pagi-prev">' + settings.prev_text + '</span>' : '',
751					nextText = (settings.nav_style.trim() === 'text' || settings.nav_style.trim() === 'both') ? '<span class="ekit-tbl-pagi-nav ekit-tbl-pagi-next">' + settings.next_text + '</span>' : '',
752					prevArrow = (settings.nav_style.trim() === 'arrow' || settings.nav_style.trim() === 'both') ? '<i class="ekit-tbl-pagi-nav-icon ekit-tbl-pagi-nav-prev-icon ' + settings.prev_arrow + '" aria-hidden="true"></i>' : '',
753					nextArrow = (settings.nav_style.trim() === 'arrow' || settings.nav_style.trim() === 'both') ? '<i class="ekit-tbl-pagi-nav-icon ekit-tbl-pagi-nav-next-icon ' + settings.next_arrow + '" aria-hidden="true"></i>' : '';
754
755				$(window).trigger('resize');
756
757				var tableConfig = {
758					buttons: settings.button === true ? ['copy', 'excel', 'csv'] : [],
759					bFilter: settings.search,
760					autoFill: true, //don't know
761					pageLength: settings.item_per_page ? settings.item_per_page : 1,
762					fixedHeader: settings.fixedHeader,
763					responsive: settings.responsive,
764					paging: settings.pagination,
765					ordering: settings.ordering,
766					info: settings.info,
767					"language": {
768						search: '<span class="ekit-table-search-label"><i class="fa fa-search" aria-hidden="true"></i></span>',
769						searchPlaceholder: 'Type Here To Search...',
770						paginate: {
771							next: nextText + nextArrow,
772							previous: prevArrow + prevText
773						}
774					}
775				}
776
777				if (settings.entries === false) {
778					tableConfig.dom = 'Bfrtip';
779				}
780
781				$scope.find('.ekit_table table').DataTable(tableConfig);
782			}
783		},
784
785		Header_Off_Canvas: function ($scope) {
786			if ($scope.find('.ekit-sidebar-group').length > 0) {
787				$scope.find('.ekit_offcanvas-sidebar').on('click', function (e) {
788					e.preventDefault();
789					$scope.find('.ekit-sidebar-group').addClass('ekit_isActive');
790				});
791				$scope.find('.ekit_close-side-widget').on('click', function (e) {
792					e.preventDefault();
793					$scope.find('.ekit-sidebar-group').removeClass('ekit_isActive');
794				});
795				$scope.find('.ekit-overlay').on('click', function (e) {
796					$scope.find('.ekit-sidebar-group').removeClass('ekit_isActive');
797				});
798			}
799		},
800
801		Creative_Button: function ($scope) {
802			if ($scope.find('.ekit_position_aware').length > 0) {
803				$scope.find('.ekit_position_aware').on('mouseenter', function (e) {
804					var parentOffset = $(this).offset(),
805						relX = e.pageX - parentOffset.left,
806						relY = e.pageY - parentOffset.top;
807					$(this).find('.ekit_position_aware_bg').css({
808						top: relY,
809						left: relX
810					});
811				}).on('mouseout', function (e) {
812					var parentOffset = $(this).offset(),
813						relX = e.pageX - parentOffset.left,
814						relY = e.pageY - parentOffset.top;
815					$(this).find('.ekit_position_aware_bg').css({
816						top: relY,
817						left: relX
818					});
819				});
820			}
821		},
822
823		Image_Accordion: function ($scope) {
824			if ($scope.find('.elementskit-single-image-accordion').length > 0) {
825				$scope.find('.elementskit-single-image-accordion').on('click', function () {
826					$(this).siblings().removeClass('active').end().addClass('active');
827				})
828			}
829		}
830	};
831	$(window).on('elementor/frontend/init', Elementskit.init);
832}(jQuery, window.elementorFrontend));
833
834
835
836(function ($) {
837	"use strict";
838	$.fn.animateNumbers = function (stop, commas, duration, ease) {
839		return this.each(function () {
840			var $this = $(this);
841			var start = parseInt($this.text().replace(/,/g, ""), 10);
842			commas = (commas === undefined) ? true : commas;
843			$({
844				value: start
845			}).animate({
846				value: stop
847			}, {
848				duration: duration == undefined ? 500 : duration,
849				easing: ease == undefined ? "swing" : ease,
850				step: function () {
851					$this.text(Math.floor(this.value));
852					if (commas) {
853						$this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
854					}
855				},
856				complete: function () {
857					if (parseInt($this.text(), 10) !== stop) {
858						$this.text(stop);
859						if (commas) {
860							$this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
861						}
862					}
863				}
864			});
865		});
866	};
867
868	$.fn.myChart = function (options) {
869		var settings = $.extend({
870			barColor: '#666666',
871			gradientColor1: '',
872			gradientColor2: '',
873			scaleColor: 'transparent',
874			lineWidth: 20,
875			size: 150,
876			trackColor: '#f7f7f7',
877			lineCap: 'round',
878			gradientChart: false,
879		}, options);
880
881		return this.easyPieChart({
882			barColor: settings.gradientChart === true ? function (percent) {
883				var ctx = this.renderer.getCtx();
884				var canvas = this.renderer.getCanvas();
885				var gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
886				gradient.addColorStop(0, settings.gradientColor1);
887				gradient.addColorStop(1, settings.gradientColor2);
888				return gradient;
889			} : settings.barColor,
890			scaleColor: settings.scaleColor,
891			trackColor: settings.trackColor,
892			lineCap: settings.lineCap,
893			size: settings.size,
894			lineWidth: settings.lineWidth
895		});
896	}
897
898
899	$(document).ready(function () {
900		if ($('.ekit-video-popup').length > 0) {
901			$('.ekit-video-popup').magnificPopup({
902				type: 'iframe',
903				mainClass: 'mfp-fade',
904				removalDelay: 160,
905				preloader: true,
906				fixedContentPos: false,
907			});
908		}
909
910		if ($('#wp-admin-bar-elementor_edit_page-default').length > 0) {
911			var elements = $('#wp-admin-bar-elementor_edit_page-default').children('li');
912			$(elements).map(function (__, element) {
913				var target = $(element).find(".elementor-edit-link-title");
914				if (target.text().indexOf('dynamic-content-') !== -1) {
915					target.parent().parent().remove();
916				}
917			});
918		}
919
920	}); // end ready function
921})(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.