mirror of https://github.com/sveltejs/svelte
parent
4018b548f3
commit
9d76fca1ef
@ -1,9 +1,9 @@
|
|||||||
export function pannable(node) {
|
export function clickOutside(node) {
|
||||||
// setup work goes here...
|
// setup work goes here...
|
||||||
|
|
||||||
return {
|
return {
|
||||||
destroy() {
|
destroy() {
|
||||||
// ...cleanup goes here
|
// ...cleanup goes here
|
||||||
}
|
},
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
@ -1,47 +1,15 @@
|
|||||||
export function pannable(node) {
|
export function clickOutside(node) {
|
||||||
let x;
|
const handleClick = (event) => {
|
||||||
let y;
|
if (!node.contains(event.target)) {
|
||||||
|
node.dispatchEvent(new CustomEvent("outclick"));
|
||||||
function handleMousedown(event) {
|
|
||||||
x = event.clientX;
|
|
||||||
y = event.clientY;
|
|
||||||
|
|
||||||
node.dispatchEvent(new CustomEvent('panstart', {
|
|
||||||
detail: { x, y }
|
|
||||||
}));
|
|
||||||
|
|
||||||
window.addEventListener('mousemove', handleMousemove);
|
|
||||||
window.addEventListener('mouseup', handleMouseup);
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMousemove(event) {
|
|
||||||
const dx = event.clientX - x;
|
|
||||||
const dy = event.clientY - y;
|
|
||||||
x = event.clientX;
|
|
||||||
y = event.clientY;
|
|
||||||
|
|
||||||
node.dispatchEvent(new CustomEvent('panmove', {
|
|
||||||
detail: { x, y, dx, dy }
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMouseup(event) {
|
|
||||||
x = event.clientX;
|
|
||||||
y = event.clientY;
|
|
||||||
|
|
||||||
node.dispatchEvent(new CustomEvent('panend', {
|
|
||||||
detail: { x, y }
|
|
||||||
}));
|
|
||||||
|
|
||||||
window.removeEventListener('mousemove', handleMousemove);
|
|
||||||
window.removeEventListener('mouseup', handleMouseup);
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
node.addEventListener('mousedown', handleMousedown);
|
document.addEventListener("click", handleClick, true);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
destroy() {
|
destroy() {
|
||||||
node.removeEventListener('mousedown', handleMousedown);
|
document.removeEventListener("click", handleClick, true);
|
||||||
}
|
},
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
Loading…
Reference in new issue