From ad5d030d10cae092fd4be26753bf9d97c821ee4c Mon Sep 17 00:00:00 2001 From: Jesse Winton Date: Wed, 21 May 2025 15:11:04 -0400 Subject: [PATCH] update the map --- src/lib/actions/mouse-position.svelte.ts | 40 +++++++++++++++++ src/lib/actions/mouse-position.ts | 34 -------------- .../appwrite-network/map-tooltip.svelte | 14 +++--- .../components/appwrite-network/map.svelte | 44 ++++++++++--------- src/lib/map/index.ts | 42 +++++++++++------- 5 files changed, 96 insertions(+), 78 deletions(-) create mode 100644 src/lib/actions/mouse-position.svelte.ts delete mode 100644 src/lib/actions/mouse-position.ts diff --git a/src/lib/actions/mouse-position.svelte.ts b/src/lib/actions/mouse-position.svelte.ts new file mode 100644 index 000000000..fd78a8eaf --- /dev/null +++ b/src/lib/actions/mouse-position.svelte.ts @@ -0,0 +1,40 @@ +import { hover } from 'motion'; +import { writable } from 'svelte/store'; + +export interface Position { + x: number; + y: number; +} + +export const useMousePosition = () => { + let position = $state({ + x: 0, + y: 0 + }); + + const handleMouseMove = (event: MouseEvent) => { + position = { + x: event.offsetX, + y: event.offsetY + }; + }; + + const action = (node: HTMLElement | SVGSVGElement) => { + hover(node, () => { + document.addEventListener('mousemove', handleMouseMove); + }); + + return { + destroy() { + document.removeEventListener('mousemove', handleMouseMove); + } + }; + }; + + return { + action, + position: () => { + return position; + } + }; +}; diff --git a/src/lib/actions/mouse-position.ts b/src/lib/actions/mouse-position.ts deleted file mode 100644 index 4a0457f12..000000000 --- a/src/lib/actions/mouse-position.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { hover } from 'motion'; -import { writable } from 'svelte/store'; - -export const useMousePosition = () => { - let position = writable<{ x: number; y: number }>({ - x: 0, - y: 0 - }); - - const action = (node: HTMLElement) => { - const handleMouseMove = (event: MouseEvent) => { - // Get the bounding rectangle of the element - const rect = node.getBoundingClientRect(); - - // Calculate position relative to the element - position.set({ - x: event.clientX - rect.left, - y: event.clientY - rect.top - }); - }; - - hover(node, () => { - node.addEventListener('mousemove', handleMouseMove); - }); - - return { - destroy() { - node.removeEventListener('mousemove', handleMouseMove); - } - }; - }; - - return { action, position }; -}; diff --git a/src/lib/components/appwrite-network/map-tooltip.svelte b/src/lib/components/appwrite-network/map-tooltip.svelte index 25b8b1eaf..29c915757 100644 --- a/src/lib/components/appwrite-network/map-tooltip.svelte +++ b/src/lib/components/appwrite-network/map-tooltip.svelte @@ -68,18 +68,20 @@ }); -