PageSourceSearch

https://cic.mx/wp-content/plugins/essential-addons-elementor/assets/js/progress-bar.js?ver=1.0

js cic.mx collected 2026-10-03 20:23:41 UTC 4,253 bytes, 173 lines download raw bytes

1(function($) {
2	// inView
3	var inviewObjects = [],
4		viewportSize, viewportOffset,
5		d = document,
6		w = window,
7		documentElement = d.documentElement,
8		timer
9
10	$.event.special.inview = {
11		add: function(data) {
12			inviewObjects.push({
13				data: data,
14				$element: $(this),
15				element: this
16			})
17
18			if (!timer && inviewObjects.length) {
19				timer = setInterval(checkInView, 250)
20			}
21		},
22
23		remove: function(data) {
24			for (var i = 0; i < inviewObjects.length; i++) {
25				var inviewObject = inviewObjects[i]
26				if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
27					inviewObjects.splice(i, 1)
28					break
29				}
30			}
31
32			if (!inviewObjects.length) {
33				clearInterval(timer)
34				timer = null
35			}
36		}
37	}
38
39	function getViewportSize() {
40		var mode, domObject, size = {
41			height: w.innerHeight,
42			width: w.innerWidth
43		}
44
45		if (!size.height) {
46			mode = d.compatMode
47			if (mode || !$.support.boxModel) { // IE, Gecko
48				domObject = mode === 'CSS1Compat' ?
49					documentElement : // Standards
50					d.body // Quirks
51				size = {
52					height: domObject.clientHeight,
53					width: domObject.clientWidth
54				}
55			}
56		}
57
58		return size
59	}
60
61	function getViewportOffset() {
62		return {
63			top: w.pageYOffset || documentElement.scrollTop || d.body.scrollTop,
64			left: w.pageXOffset || documentElement.scrollLeft || d.body.scrollLeft
65		}
66	}
67
68	function checkInView() {
69		if (!inviewObjects.length) {
70			return
71		}
72
73		var i = 0,
74			$elements = $.map(inviewObjects, function(inviewObject) {
75				var selector = inviewObject.data.selector,
76					$element = inviewObject.$element
77				return selector ? $element.find(selector) : $element
78			})
79
80		viewportSize = viewportSize || getViewportSize()
81		viewportOffset = viewportOffset || getViewportOffset()
82
83		for (; i < inviewObjects.length; i++) {
84			if (!$.contains(documentElement, $elements[i][0])) {
85				continue
86			}
87
88			var $element = $($elements[i]),
89				elementSize = {
90					height: $element[0].offsetHeight,
91					width: $element[0].offsetWidth
92				},
93				elementOffset = $element.offset(),
94				inView = $element.data('inview')
95
96			if (!viewportOffset || !viewportSize) {
97				return
98			}
99
100			if (elementOffset.top + elementSize.height > viewportOffset.top &&
101				elementOffset.top < viewportOffset.top + viewportSize.height &&
102				elementOffset.left + elementSize.width > viewportOffset.left &&
103				elementOffset.left < viewportOffset.left + viewportSize.width) {
104				if (!inView) {
105					$element.data('inview', true).trigger('inview', [true])
106				}
107			} else if (inView) {
108				$element.data('inview', false).trigger('inview', [false])
109			}
110		}
111	}
112
113	$(w).on("scroll resize scrollstop", function() {
114		viewportSize = viewportOffset = null
115	})
116
117	if (!documentElement.addEventListener && documentElement.attachEvent) {
118		documentElement.attachEvent("onfocusin", function() {
119			viewportOffset = null
120		})
121	}
122
123	// eaelProgressBar
124	$.fn.eaelProgressBar = function() {
125		var $this = $(this)
126		var $layout = $this.data('layout')
127		var $num = $this.data('count')
128		var $duration = $this.data('duration')
129
130		$this.one('inview', function() {
131			if ($layout == 'line' || $layout == 'line_rainbow') {
132				$('.eael-progressbar-line-fill', $this).css({
133					'width': $num + '%',
134				})
135			} else if ($layout == 'half_circle' || $layout == 'half_circle_fill') {
136				$('.eael-progressbar-circle-half', $this).css({
137					'transform': 'rotate(' + ($num * 1.8) + 'deg)',
138				})
139			} else if ($layout == 'box') {
140				$('.eael-progressbar-box-fill', $this).css({
141					'height': $num + '%',
142				})
143			}
144
145			$('.eael-progressbar-count', $this).prop({
146				'counter': 0
147			}).animate({
148				counter: $num
149			}, {
150				duration: $duration,
151				easing: 'linear',
152				step: function(counter) {
153					if ($layout == 'circle' || $layout == 'circle_fill') {
154						var rotate = (counter * 3.6)
155						$('.eael-progressbar-circle-half-left', $this).css({
156							'transform': "rotate(" + rotate + "deg)",
157						})
158						if (rotate > 180) {
159							$('.eael-progressbar-circle-pie', $this).css({
160								'clip-path': 'inset(0)'
161							})
162							$('.eael-progressbar-circle-half-right', $this).css({
163								'visibility': 'visible'
164							})
165						}
166					}
167
168					$(this).text(Math.ceil(counter))
169				}
170			})
171		})
172	}
173}
173(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.