Last active
October 13, 2016 19:35
-
-
Save Hexrays/9ef0c5e7fe9c2987d69adc5089a9bbc2 to your computer and use it in GitHub Desktop.
Helpers that replicate common jQuery functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //helper function | |
| export function $$(selector, context) { | |
| context = context || document; | |
| var elements = context.querySelectorAll(selector); | |
| return Array.prototype.slice.call(elements); | |
| } | |
| export function convertToSnake (str) { | |
| let strArr = str.split(''), | |
| isLastUppercase = false; | |
| for (let ltr in strArr) { | |
| if (!isLastUppercase && strArr[ltr] === strArr[ltr].toUpperCase() && typeof(strArr[ltr]) !== 'number') { | |
| strArr[ltr] = '-' + strArr[ltr].toLowerCase(); | |
| isLastUppercase = true; | |
| } else if (strArr[ltr] === strArr[ltr].toUpperCase() && typeof(strArr[ltr]) !== 'number') { | |
| strArr[ltr] = strArr[ltr].toLowerCase(); | |
| isLastUppercase = true; | |
| } else { | |
| isLastUppercase = false; | |
| } | |
| } | |
| return strArr.join(''); | |
| } | |
| export function addNewClass (el, newClass) { | |
| if (el.classList){ | |
| el.classList.add(newClass); | |
| } else { | |
| el.className += ' ' + newClass; | |
| } | |
| } | |
| export 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'), ' '); | |
| } | |
| } | |
| export function hasClass(el, className) { | |
| if (el.classList){ | |
| return el.classList.contains(className); | |
| } | |
| else { | |
| return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className); | |
| } | |
| } | |
| export function toggleClass(el, className) { | |
| if (el.classList) { | |
| el.classList.toggle(className); | |
| } else { | |
| var classes = el.className.split(' '); | |
| var existingIndex = classes.indexOf(className); | |
| if (existingIndex >= 0) | |
| classes.splice(existingIndex, 1); | |
| else | |
| classes.push(className); | |
| el.className = classes.join(' '); | |
| } | |
| } | |
| export function findAncestor(el, cls) { | |
| while ((el = el.parentElement) && !hasClass(el, cls)); | |
| return el; | |
| } | |
| export function removeFromArray(arr, elm) { | |
| let index = arr.indexOf(elm); | |
| if (index > -1) { | |
| arr.splice(index,1); | |
| } | |
| } | |
| export function checkObjectInArray(obj, array) { | |
| let element; | |
| for (element in array) { | |
| if (array.hasOwnProperty(element) && array[element] === obj) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| export function append(parent, el) { | |
| parent.appendChild(el); | |
| } | |
| export function after(el, html) { | |
| el.insertAdjacentHTML('afterend', htmlString); | |
| } | |
| export function before(el, html) { | |
| el.insertAdjacentHTML('beforebegin', htmlString); | |
| } | |
| export function round(value, decimals) { | |
| return Number(Math.round(value+'e'+decimals)+'e-'+decimals); | |
| } | |
| export function createRandomRGB(alpha=1) { | |
| return `rgba(${(Math.floor(Math.random() * 256))},${(Math.floor(Math.random() * 256))},${(Math.floor(Math.random() * 256))},${alpha})`; | |
| } | |
| export function debounce(func, wait, immediate) { | |
| var timeout; | |
| return function() { | |
| var context = this, args = arguments; | |
| var later = function() { | |
| timeout = null; | |
| if (!immediate) func.apply(context, args); | |
| }; | |
| var callNow = immediate && !timeout; | |
| clearTimeout(timeout); | |
| timeout = setTimeout(later, wait); | |
| if (callNow) func.apply(context, args); | |
| }; | |
| }; | |
| export function isNodeList(nodes) { | |
| var stringRepr = Object.prototype.toString.call(nodes); | |
| return typeof nodes === 'object' && | |
| /^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) && | |
| (typeof nodes.length === 'number') && | |
| (nodes.length === 0 || (typeof nodes[0] === "object" && nodes[0].nodeType > 0)); | |
| } | |
| export function guid() { | |
| function s4() { | |
| return Math.floor((1 + Math.random()) * 0x10000) | |
| .toString(16) | |
| .substring(1); | |
| } | |
| return s4() + s4() + '-' + s4() + '-' + s4() + '-' + | |
| s4() + '-' + s4() + s4() + s4(); | |
| } | |
| export function createRandomRGB(alpha=1) { | |
| return `rgba(${(Math.floor(Math.random() * 256))},${(Math.floor(Math.random() * 256))},${(Math.floor(Math.random() * 256))},${alpha})`; | |
| } | |
| export function getRandomInt(min, max) { | |
| return Math.floor(Math.random() * (max - min + 1)) + min; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment