PageSourceSearch

https://puhsd.k12.ca.us/includes/js/countUp.js

js puhsd.k12.ca.us collected 2026-09-24 10:09:15 UTC 10,813 bytes, 259 lines download raw bytes

1(function (global, factory) {
2    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3    typeof define === 'function' && define.amd ? define(['exports'], factory) :
4    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.countUp = {}));
5}(this, (function (exports) { 'use strict';
6
7    var __assign = (undefined && undefined.__assign) || function () {
8        __assign = Object.assign || function(t) {
9            for (var s, i = 1, n = arguments.length; i < n; i++) {
10                s = arguments[i];
11                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12                    t[p] = s[p];
13            }
14            return t;
15        };
16        return __assign.apply(this, arguments);
17    };
18    // playground: stackblitz.com/edit/countup-typescript
19    var CountUp = /** @class */ (function () {
20        function CountUp(target, endVal, options) {
21            var _this = this;
22            this.target = target;
23            this.endVal = endVal;
24            this.options = options;
25            this.version = '2.0.7';
26            this.defaults = {
27                startVal: 0,
28                decimalPlaces: 0,
29                duration: 2,
30                useEasing: true,
31                useGrouping: true,
32                smartEasingThreshold: 999,
33                smartEasingAmount: 333,
34                separator: ',',
35                decimal: '.',
36                prefix: '',
37                suffix: ''
38            };
39            this.finalEndVal = null; // for smart easing
40            this.useEasing = true;
41            this.countDown = false;
42            this.error = '';
43            this.startVal = 0;
44            this.paused = true;
45            this.count = function (timestamp) {
46                if (!_this.startTime) {
47                    _this.startTime = timestamp;
48                }
49                var progress = timestamp - _this.startTime;
50                _this.remaining = _this.duration - progress;
51                // to ease or not to ease
52                if (_this.useEasing) {
53                    if (_this.countDown) {
54                        _this.frameVal = _this.startVal - _this.easingFn(progress, 0, _this.startVal - _this.endVal, _this.duration);
55                    }
56                    else {
57                        _this.frameVal = _this.easingFn(progress, _this.startVal, _this.endVal - _this.startVal, _this.duration);
58                    }
59                }
60                else {
61                    if (_this.countDown) {
62                        _this.frameVal = _this.startVal - ((_this.startVal - _this.endVal) * (progress / _this.duration));
63                    }
64                    else {
65                        _this.frameVal = _this.startVal + (_this.endVal - _this.startVal) * (progress / _this.duration);
66                    }
67                }
68                // don't go past endVal since progress can exceed duration in the last frame
69                if (_this.countDown) {
70                    _this.frameVal = (_this.frameVal < _this.endVal) ? _this.endVal : _this.frameVal;
71                }
72                else {
73                    _this.frameVal = (_this.frameVal > _this.endVal) ? _this.endVal : _this.frameVal;
74                }
75                // decimal
76                _this.frameVal = Number(_this.frameVal.toFixed(_this.options.decimalPlaces));
77                // format and print value
78                _this.printValue(_this.frameVal);
79                // whether to continue
80                if (progress < _this.duration) {
81                    _this.rAF = requestAnimationFrame(_this.count);
82                }
83                else if (_this.finalEndVal !== null) {
84                    // smart easing
85                    _this.update(_this.finalEndVal);
86                }
87                else {
88                    if (_this.callback) {
89                        _this.callback();
90                    }
91                }
92            };
93            // default format and easing functions
94            this.formatNumber = function (num) {
95                var neg = (num < 0) ? '-' : '';
96                var result, x, x1, x2, x3;
97                result = Math.abs(num).toFixed(_this.options.decimalPlaces);
98                result += '';
99                x = result.split('.');
100                x1 = x[0];
101                x2 = x.length > 1 ? _this.options.decimal + x[1] : '';
102                if (_this.options.useGrouping) {
103                    x3 = '';
104                    for (var i = 0, len = x1.length; i < len; ++i) {
105                        if (i !== 0 && (i % 3) === 0) {
106                            x3 = _this.options.separator + x3;
107                        }
108                        x3 = x1[len - i - 1] + x3;
109                    }
110                    x1 = x3;
111                }
112                // optional numeral substitution
113                if (_this.options.numerals && _this.options.numerals.length) {
114                    x1 = x1.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
115                    x2 = x2.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
116                }
117                return neg + _this.options.prefix + x1 + x2 + _this.options.suffix;
118            };
119            this.easeOutExpo = function (t, b, c, d) {
120                return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;
121            };
122            this.options = __assign(__assign({}, this.defaults), options);
123            this.formattingFn = (this.options.formattingFn) ?
124                this.options.formattingFn : this.formatNumber;
125            this.easingFn = (this.options.easingFn) ?
126                this.options.easingFn : this.easeOutExpo;
127            this.startVal = this.validateValue(this.options.startVal);
128            this.frameVal = this.startVal;
129            this.endVal = this.validateValue(endVal);
130            this.options.decimalPlaces = Math.max(this.options.decimalPlaces);
131            this.resetDuration();
132            this.options.separator = String(this.options.separator);
133            this.useEasing = this.options.useEasing;
134            if (this.options.separator === '') {
135                this.options.useGrouping = false;
136            }
137            this.el = (typeof target === 'string') ? document.getElementById(target) : target;
138            if (this.el) {
139                this.printValue(this.startVal);
140            }
141            else {
142                this.error = '[CountUp] target is null or undefined';
143            }
144        }
145        // determines where easing starts and whether to count down or up
146        CountUp.prototype.determineDirectionAndSmartEasing = function () {
147            var end = (this.finalEndVal) ? this.finalEndVal : this.endVal;
148            this.countDown = (this.startVal > end);
149            var animateAmount = end - this.startVal;
150            if (Math.abs(animateAmount) > this.options.smartEasingThreshold) {
151                this.finalEndVal = end;
152                var up = (this.countDown) ? 1 : -1;
153                this.endVal = end + (up * this.options.smartEasingAmount);
154                this.duration = this.duration / 2;
155            }
156            else {
157                this.endVal = end;
158                this.finalEndVal = null;
159            }
160            if (this.finalEndVal) {
161                this.useEasing = false;
162            }
163            else {
164                this.useEasing = this.options.useEasing;
165            }
166        };
167        // start animation
168        CountUp.prototype.start = function (callback) {
169            if (this.error) {
170                return;
171            }
172            this.callback = callback;
173            if (this.duration > 0) {
174                this.determineDirectionAndSmartEasing();
175                this.paused = false;
176                this.rAF = requestAnimationFrame(this.count);
177            }
178            else {
179                this.printValue(this.endVal);
180            }
181        };
182        // pause/resume animation
183        CountUp.prototype.pauseResume = function () {
184            if (!this.paused) {
185                cancelAnimationFrame(this.rAF);
186            }
187            else {
188                this.startTime = null;
189                this.duration = this.remaining;
190                this.startVal = this.frameVal;
191                this.determineDirectionAndSmartEasing();
192                this.rAF = requestAnimationFrame(this.count);
193            }
194            this.paused = !this.paused;
195        };
196        // reset to startVal so animation can be run again
197        CountUp.prototype.reset = function () {
198            cancelAnimationFrame(this.rAF);
199            this.paused = true;
200            this.resetDuration();
201            this.startVal = this.validateValue(this.options.startVal);
202            this.frameVal = this.startVal;
203            this.printValue(this.startVal);
204        };
205        // pass a new endVal and start animation
206        CountUp.prototype.update = function (newEndVal) {
207            cancelAnimationFrame(this.rAF);
208            this.startTime = null;
209            this.endVal = this.validateValue(newEndVal);
210            if (this.endVal === this.frameVal) {
211                return;
212            }
213            this.startVal = this.frameVal;
214            if (!this.finalEndVal) {
215                this.resetDuration();
216            }
217            this.finalEndVal = null;
218            this.determineDirectionAndSmartEasing();
219            this.rAF = requestAnimationFrame(this.count);
220        };
221        CountUp.prototype.printValue = function (val) {
222            var result = this.formattingFn(val);
223            if (this.el.tagName === 'INPUT') {
224                var input = this.el;
225                input.value = result;
226            }
227            else if (this.el.tagName === 'text' || this.el.tagName === 'tspan') {
228                this.el.textContent = result;
229            }
230            else {
231                this.el.innerHTML = result;
232            }
233        };
234        CountUp.prototype.ensureNumber = function (n) {
235            return (typeof n === 'number' && !isNaN(n));
236        };
237        CountUp.prototype.validateValue = function (value) {
238            var newValue = Number(value);
239            if (!this.ensureNumber(newValue)) {
240                this.error = "[CountUp] invalid start or end value: " + value;
241                return null;
242            }
243            else {
244                return newValue;
245            }
246        };
247        CountUp.prototype.resetDuration = function () {
248            this.startTime = null;
249            this.duration = Number(this.options.duration) * 1000;
250            this.remaining = this.duration;
251        };
252        return CountUp;
253    }());
254
255    exports.CountUp = CountUp;
256
257    Object.defineProperty(exports, '__esModule', { value: true });
258
259})));

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.