PageSourceSearch

https://www.spm-pn.go.th/wp-content/plugins/animated-number-counters/assets/js/jquery.counterup.js?ver=1.1.0

js spm-pn.go.th collected 2026-09-24 13:24:50 UTC 6,930 bytes, 103 lines download raw bytes

1!function(a,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t(require,exports,module):a.CountUp=t()}(this,function(a,t,e){var n=function(a,t,e,n,i,r){function o(a){a=a.toFixed(c.decimals),a+="";var t,e,n,i;if(t=a.split("."),e=t[0],n=t.length>1?c.options.decimal+t[1]:"",i=/(\d+)(\d{3})/,c.options.useGrouping)for(;i.test(e);)e=e.replace(i,"$1"+c.options.separator+"$2");return c.options.prefix+e+n+c.options.suffix}function l(a,t,e,n){return e*(-Math.pow(2,-10*a/n)+1)*1024/1023+t}function s(a){return"number"==typeof a&&!isNaN(a)}for(var u=0,m=["webkit","moz","ms","o"],d=0;d<m.length&&!window.requestAnimationFrame;++d)window.requestAnimationFrame=window[m[d]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[m[d]+"CancelAnimationFrame"]||window[m[d]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a,t){var e=(new Date).getTime(),n=Math.max(0,16-(e-u)),i=window.setTimeout(function(){a(e+n)},n);return u=e+n,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)});var c=this;if(c.version=function(){return"1.8.5"},c.options={useEasing:!0,useGrouping:!0,separator:",",decimal:".",easingFn:l,formattingFn:o,prefix:"",suffix:""},r&&"object"==typeof r)for(var f in c.options)r.hasOwnProperty(f)&&null!==r[f]&&(c.options[f]=r[f]);""===c.options.separator&&(c.options.useGrouping=!1),c.initialize=function(){return!!c.initialized||(c.d="string"==typeof a?document.getElementById(a):a,c.d?(c.startVal=Number(t),c.endVal=Number(e),s(c.startVal)&&s(c.endVal)?(c.decimals=Math.max(0,n||0),c.dec=Math.pow(10,c.decimals),c.duration=1e3*Number(i)||2e3,c.countDown=c.startVal>c.endVal,c.frameVal=c.startVal,c.initialized=!0,!0):(console.error("[CountUp] startVal or endVal is not a number",c.startVal,c.endVal),!1)):(console.error("[CountUp] target is null or undefined",c.d),!1))},c.printValue=function(a){var t=c.options.formattingFn(a);"INPUT"===c.d.tagName?this.d.value=t:"text"===c.d.tagName||"tspan"===c.d.tagName?this.d.textContent=t:this.d.innerHTML=t},c.count=function(a){c.startTime||(c.startTime=a),c.timestamp=a;var t=a-c.startTime;c.remaining=c.duration-t,c.options.useEasing?c.countDown?c.frameVal=c.startVal-c.options.easingFn(t,0,c.startVal-c.endVal,c.duration):c.frameVal=c.options.easingFn(t,c.startVal,c.endVal-c.startVal,c.duration):c.countDown?c.frameVal=c.startVal-(c.startVal-c.endVal)*(t/c.duration):c.frameVal=c.startVal+(c.endVal-c.startVal)*(t/c.duration),c.countDown?c.frameVal=c.frameVal<c.endVal?c.endVal:c.frameVal:c.frameVal=c.frameVal>c.endVal?c.endVal:c.frameVal,c.frameVal=Math.round(c.frameVal*c.dec)/c.dec,c.printValue(c.frameVal),t<c.duration?c.rAF=requestAnimationFrame(c.count):c.callback&&c.callback()},c.start=function(a){c.initialize()&&(c.callback=a,c.rAF=requestAnimationFrame(c.count))},c.pauseResume=function(){c.paused?(c.paused=!1,delete c.startTime,c.duration=c.remaining,c.startVal=c.frameVal,requestAnimationFrame(c.count)):(c.paused=!0,cancelAnimationFrame(c.rAF))},c.reset=function(){c.paused=!1,delete c.startTime,c.initialized=!1,c.initialize()&&(cancelAnimationFrame(c.rAF),c.printValue(c.startVal))},c.update=function(a){c.initialize()&&a!==c.frameVal&&(cancelAnimationFrame(c.rAF),c.paused=!1,delete c.startTime,c.startVal=c.frameVal,c.endVal=Number(a),s(c.endVal)?(c.countDown=c.startVal>c.endVal,c.rAF=requestAnimationFrame(c.count)):console.error("[CountUp] update() - new endVal is not a number",a))},c.initialize()&&c.printValue(c.startVal)};return n});
2
3var firstLoaded = false
4setTimeout(function(){
5  if(!firstLoaded){
6    firstLoaded = true;
7    initialLoad();
8  }
9}, 2000)
10window.addEventListener("DOMContentLoaded", function () {
11  if(!firstLoaded){
12    firstLoaded = true;
13    initialLoad();
14  }
15});
16
17window.addEventListener('scroll', debounceEvents(function () {
18  const allCounter = document.querySelectorAll(".anc-6310-counter-number");
19
20  allCounter.forEach(function (el) {
21    const closest = el.closest('.anc_6310_main_counter');
22    const animationType = closest ? Number(closest.getAttribute('data-counter-type')) : 0;
23
24    if (animationType !== 1 && isScrolledIntoView(el)) {
25      if (!el.classList.contains('anc-6310-animation-completed')) {
26        el.classList.add('anc-6310-animation-completed');
27
28        const separator = el.getAttribute('data-anc-6310-thousands-separator') || ',';
29        const start = parseFloat(el.getAttribute("data-anc-6310-start") || '0');
30        const end = parseFloat(el.getAttribute("data-anc-6310-end") || '0');
31        const decimal = parseInt(el.getAttribute("data-anc-6310-decimal") || '0');
32        const duration = parseFloat(el.getAttribute("data-anc-6310-duration") || '2');
33
34        const options = {
35          useEasing: false,
36          useGrouping: true,
37          separator: separator,
38        };
39
40        const counter = new CountUp(el, start, end, decimal, duration, options);
41        if (!counter.error) {
42          counter.start();
43        } else {
44          console.error(counter.error);
45        }
46      }
47    } else {
48      el.classList.remove('anc-6310-animation-completed');
49    }
50  });
51}, 50));
52
53function initialLoad(){
54  let allCounter = document.querySelectorAll(".anc-6310-counter-number");
55  if (allCounter.length) {
56    for (let i = 0; i < allCounter.length; i++) {
57      let separator = allCounter[i].getAttribute(
58        "data-anc-6310-thousands-separator"
59      );
60      let options = {
61        useEasing: false,
62        useGrouping: true,
63        separator: separator,
64      };
65      let ids = allCounter[i].getAttribute("id");
66      let start = allCounter[i].getAttribute("data-anc-6310-start");
67      let end = allCounter[i].getAttribute("data-anc-6310-end");
68      let decimal = allCounter[i].getAttribute("data-anc-6310-decimal");
69      let duration = allCounter[i].getAttribute("data-anc-6310-duration");
70      let demo = new CountUp(ids, start, end, decimal, duration, options);
71      demo.start();
72      const el = document.getElementById(ids);
73      if (el) {
74        el.classList.add("anc-6310-animation-completed");
75      }
76    }
77  }
78}
79
80// Use element’s bounding box to check visibility
81function isScrolledIntoView(el) {
82  const rect = el.getBoundingClientRect();
83  const windowHeight = (window.innerHeight || document.documentElement.clientHeight);
84  const windowTop = 0;
85  const windowBottom = windowHeight;
86
87  // Consider element "in view" if at least top half is visible
88  const elemTop = rect.top;
89  const elemBottom = rect.top + (rect.height / 2);
90
91  return (elemBottom <= windowBottom && elemTop >= windowTop);
92}
93
94// Debounce function
95function debounceEvents(func, delay) {
96  let timer;
97  return function () {
98    clearTimeout(timer);
99    timer = setTimeout(() => {
100      func.apply(this, arguments);
101    }, delay || 300);
102  };
103}

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.