← back to Dw Theme Boost Fix
assets/util.misc.js
63 lines
export function prepareTransition(el, callback) {
el.addEventListener('transitionend', removeClass)
function removeClass(evt) {
el.classList.remove('is-transitioning')
el.removeEventListener('transitionend', removeClass)
}
el.classList.add('is-transitioning')
el.offsetWidth // check offsetWidth to force the style rendering
if (typeof callback === 'function') {
callback()
}
}
export function defaultTo(value, defaultValue) {
return value == null || value !== value ? defaultValue : value
}
export function wrap(el, wrapper) {
el.parentNode.insertBefore(wrapper, el)
wrapper.appendChild(el)
}
export function executeJSmodules(scripts) {
for (let i = 0; i < scripts.length; i++) {
let script = document.createElement('script')
script.type = 'module'
script.textContent = scripts[i].textContent
scripts[i].parentNode.replaceChild(script, scripts[i])
}
}
export function debounce(wait, callback, immediate) {
let timeout
return function () {
let context = this,
args = arguments
let later = function () {
timeout = null
if (!immediate) callback.apply(context, args)
}
let callNow = immediate && !timeout
clearTimeout(timeout)
timeout = setTimeout(later, wait)
if (callNow) callback.apply(context, args)
}
}
export function throttle(limit, callback) {
let waiting = false
return function () {
if (!waiting) {
callback.apply(this, arguments)
waiting = true
setTimeout(function () {
waiting = false
}, limit)
}
}
}