fix: clean up map resize hook listeners

This commit is contained in:
Graham McIntire 2026-03-23 14:08:18 -05:00
parent be1c9f1038
commit 512b7c4fe9
No known key found for this signature in database
2 changed files with 12 additions and 3 deletions

View file

@ -835,7 +835,10 @@ let MapAPRSMap = {
// Store the event handler so we can remove it later
self.popupNavigationHandler = (e: Event) => {
const target = e.target as HTMLElement;
const target = e.target;
if (!(target instanceof Element)) {
return;
}
// Check if clicked element or its parent is a LiveView navigation link
const navLink = target.closest(".aprs-lv-link") as HTMLAnchorElement;
@ -1492,13 +1495,14 @@ let MapAPRSMap = {
});
// Resize map when slideover toggles (class changes handled by LiveView JS commands)
self.el.addEventListener("phx:map-resize", () => {
self.mapResizeHandler = () => {
setTimeout(() => {
if (self.map) {
self.map.invalidateSize();
}
}, 350);
});
};
self.el.addEventListener("phx:map-resize", self.mapResizeHandler);
// Handle bounds-based marker filtering
self.handleEvent(
@ -2504,6 +2508,10 @@ let MapAPRSMap = {
window.removeEventListener("resize", self.resizeHandler);
self.resizeHandler = undefined;
}
if (self.mapResizeHandler !== undefined) {
self.el.removeEventListener("phx:map-resize", self.mapResizeHandler);
self.mapResizeHandler = undefined;
}
// Remove map event handlers
if (self.map !== undefined && self.mapEventHandlers !== undefined) {

View file

@ -30,6 +30,7 @@ export interface LiveViewHookContext {
mapEventHandlers?: Map<string, Function>;
isDestroyed?: boolean;
popupNavigationHandler?: (e: Event) => void;
mapResizeHandler?: () => void;
moveEndHandler?: () => void;
zoomEndHandler?: () => void;
rfPathLines?: Array<Polyline | Marker>; // Array of Leaflet polylines and markers for RF path visualization