@daks.dev/svelte.sdk
Version:
DAKS.DEV Svelte SDK
33 lines (32 loc) • 921 B
JavaScript
function outside(node, callback) {
const handle = (event) => {
if (!event?.target)
return;
if (node && !event.defaultPrevented && !node.contains(event.target))
callback(node);
};
document.addEventListener('click', handle, true);
return {
destroy() {
document.removeEventListener('click', handle, true);
}
};
}
outside.withnext = function (node, callback) {
const handle = (event) => {
if (!event?.target)
return;
if (node &&
!event.defaultPrevented &&
!node.contains(event.target) &&
!node.nextElementSibling?.contains(event.target))
callback(node);
};
document.addEventListener('click', handle, true);
return {
destroy() {
document.removeEventListener('click', handle, true);
}
};
};
export default outside;