[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
siakad
/
kesiswaan
/
vendors
/
bower_components
/
nouislider
/
src
/
js
/
[
Home
]
File: helpers.js
// Removes duplicates from an array. function unique(array) { return array.filter(function(a){ return !this[a] ? this[a] = true : false; }, {}); } // Round a value to the closest 'to'. function closest ( value, to ) { return Math.round(value / to) * to; } // Current position of an element relative to the document. function offset ( elem ) { var rect = elem.getBoundingClientRect(), doc = elem.ownerDocument, docElem = doc.documentElement, pageOffset = getPageOffset(); // getBoundingClientRect contains left scroll in Chrome on Android. // I haven't found a feature detection that proves this. Worst case // scenario on mis-match: the 'tap' feature on horizontal sliders breaks. if ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) { pageOffset.x = 0; } return { top: rect.top + pageOffset.y - docElem.clientTop, left: rect.left + pageOffset.x - docElem.clientLeft }; } // Checks whether a value is numerical. function isNumeric ( a ) { return typeof a === 'number' && !isNaN( a ) && isFinite( a ); } // Rounds a number to 7 supported decimals. function accurateNumber( number ) { var p = Math.pow(10, 7); return Number((Math.round(number*p)/p).toFixed(7)); } // Sets a class and removes it after [duration] ms. function addClassFor ( element, className, duration ) { addClass(element, className); setTimeout(function(){ removeClass(element, className); }, duration); } // Limits a value to 0 - 100 function limit ( a ) { return Math.max(Math.min(a, 100), 0); } // Wraps a variable as an array, if it isn't one yet. function asArray ( a ) { return Array.isArray(a) ? a : [a]; } // Counts decimals function countDecimals ( numStr ) { var pieces = numStr.split("."); return pieces.length > 1 ? pieces[1].length : 0; } // http://youmightnotneedjquery.com/#add_class function addClass ( el, className ) { if ( el.classList ) { el.classList.add(className); } else { el.className += ' ' + className; } } // http://youmightnotneedjquery.com/#remove_class function removeClass ( el, className ) { if ( el.classList ) { el.classList.remove(className); } else { el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); } } // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ function hasClass ( el, className ) { return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); } // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes function getPageOffset ( ) { var supportPageOffset = window.pageXOffset !== undefined, isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"), x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft, y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; return { x: x, y: y }; } // Shorthand for stopPropagation so we don't have to create a dynamic method function stopPropagation ( e ) { e.stopPropagation(); } // todo function addCssPrefix(cssPrefix) { return function(className) { return cssPrefix + className; }; }