UNPKG

@dvcol/svelte-utils

Version:

Svelte library for common utility functions and constants

31 lines (30 loc) 909 B
export const hovering = (node, options) => { let params = options; const setState = (value, e) => { if (value === params.hovered) return; params.hovered = value; params.onChange?.(value, e); }; const onPointerEnter = (e) => { if (params.hovered) return; setState(true, e); }; const onPointerLeave = (e) => { if (!params.hovered) return; setState(false, e); }; node.addEventListener('pointerenter', onPointerEnter, { passive: true }); node.addEventListener('pointerleave', onPointerLeave, { passive: true }); return { update: (_options) => { params = _options; }, destroy: () => { node.removeEventListener('pointerenter', onPointerEnter); node.removeEventListener('pointerleave', onPointerLeave); }, }; };