@dvcol/svelte-utils
Version:
Svelte library for common utility functions and constants
31 lines (30 loc) • 909 B
JavaScript
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);
},
};
};