/** Dispatch event on click outside of node */ namespace svelte.JSX { interface HTMLProps { onclick_outside?: (e: CustomEvent) => void; } } export function clickOutside(node: Node) { const handleClick = (event: MouseEvent) => { if ( node && !node.contains(event.target as Node) && !event.defaultPrevented ) { node.dispatchEvent(new CustomEvent("click_outside", node as any)); } }; document.addEventListener("click", handleClick, true); return { destroy() { document.removeEventListener("click", handleClick, true); } }; }