%PDF- %PDF-
| Direktori : /var/www/projetos/takthua.com.br/wp-content/plugins/ml-slider/extendify-sdk/src/hooks/ |
| Current File : //var/www/projetos/takthua.com.br/wp-content/plugins/ml-slider/extendify-sdk/src/hooks/helpers.js |
import { useRef, useEffect, useState } from '@wordpress/element'
export function useIsMounted() {
const isMounted = useRef(false)
useEffect(() => {
isMounted.current = true
return () => (isMounted.current = false)
})
return isMounted
}
export const useIsDevMode = () => {
const [devMode, setDevMode] = useState(false)
const check = () => {
return (
window.location.search.indexOf('DEVMODE') > -1 ||
window.location.search.indexOf('LOCALMODE') > -1
)
}
useEffect(() => {
const handle = () => setDevMode(check())
handle()
window.addEventListener('popstate', handle)
return () => {
window.removeEventListener('popstate', handle)
}
}, [])
return devMode
}
export const useWhenIdle = (time) => {
const [idle, setIdle] = useState(false)
const isMounted = useIsMounted()
useEffect(() => {
let timer
const handleMovement = () => {
setIdle(false)
window.clearTimeout(timer)
timer = window.setTimeout(() => {
isMounted.current && setIdle(true)
}, time)
}
const passive = { passive: true }
window.addEventListener('keydown', handleMovement, passive)
window.addEventListener('mousemove', handleMovement, passive)
window.addEventListener('touchmove', handleMovement, passive)
return () => {
window.removeEventListener('keydown', handleMovement)
window.removeEventListener('mousemove', handleMovement)
window.removeEventListener('touchmove', handleMovement)
}
}, [isMounted, time])
return idle
}
/** Dev debugging tool to identify leaky renders: https://usehooks.com/useWhyDidYouUpdate/ */
export const useWhyDidYouUpdate = (name, props) => {
const previousProps = useRef()
useEffect(() => {
if (previousProps.current) {
const allKeys = Object.keys({ ...previousProps.current, ...props })
const changesObj = {}
allKeys.forEach((key) => {
if (previousProps.current[key] !== props[key]) {
changesObj[key] = {
from: previousProps.current[key],
to: props[key],
}
}
})
if (Object.keys(changesObj).length) {
console.log('[why-did-you-update]', name, changesObj)
}
}
previousProps.current = props
})
}