fix: clean up map resize hook listeners
This commit is contained in:
parent
be1c9f1038
commit
512b7c4fe9
2 changed files with 12 additions and 3 deletions
|
|
@ -835,7 +835,10 @@ let MapAPRSMap = {
|
||||||
|
|
||||||
// Store the event handler so we can remove it later
|
// Store the event handler so we can remove it later
|
||||||
self.popupNavigationHandler = (e: Event) => {
|
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
|
// Check if clicked element or its parent is a LiveView navigation link
|
||||||
const navLink = target.closest(".aprs-lv-link") as HTMLAnchorElement;
|
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)
|
// Resize map when slideover toggles (class changes handled by LiveView JS commands)
|
||||||
self.el.addEventListener("phx:map-resize", () => {
|
self.mapResizeHandler = () => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (self.map) {
|
if (self.map) {
|
||||||
self.map.invalidateSize();
|
self.map.invalidateSize();
|
||||||
}
|
}
|
||||||
}, 350);
|
}, 350);
|
||||||
});
|
};
|
||||||
|
self.el.addEventListener("phx:map-resize", self.mapResizeHandler);
|
||||||
|
|
||||||
// Handle bounds-based marker filtering
|
// Handle bounds-based marker filtering
|
||||||
self.handleEvent(
|
self.handleEvent(
|
||||||
|
|
@ -2504,6 +2508,10 @@ let MapAPRSMap = {
|
||||||
window.removeEventListener("resize", self.resizeHandler);
|
window.removeEventListener("resize", self.resizeHandler);
|
||||||
self.resizeHandler = undefined;
|
self.resizeHandler = undefined;
|
||||||
}
|
}
|
||||||
|
if (self.mapResizeHandler !== undefined) {
|
||||||
|
self.el.removeEventListener("phx:map-resize", self.mapResizeHandler);
|
||||||
|
self.mapResizeHandler = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
// Remove map event handlers
|
// Remove map event handlers
|
||||||
if (self.map !== undefined && self.mapEventHandlers !== undefined) {
|
if (self.map !== undefined && self.mapEventHandlers !== undefined) {
|
||||||
|
|
|
||||||
1
assets/js/types/map.d.ts
vendored
1
assets/js/types/map.d.ts
vendored
|
|
@ -30,6 +30,7 @@ export interface LiveViewHookContext {
|
||||||
mapEventHandlers?: Map<string, Function>;
|
mapEventHandlers?: Map<string, Function>;
|
||||||
isDestroyed?: boolean;
|
isDestroyed?: boolean;
|
||||||
popupNavigationHandler?: (e: Event) => void;
|
popupNavigationHandler?: (e: Event) => void;
|
||||||
|
mapResizeHandler?: () => void;
|
||||||
moveEndHandler?: () => void;
|
moveEndHandler?: () => void;
|
||||||
zoomEndHandler?: () => void;
|
zoomEndHandler?: () => void;
|
||||||
rfPathLines?: Array<Polyline | Marker>; // Array of Leaflet polylines and markers for RF path visualization
|
rfPathLines?: Array<Polyline | Marker>; // Array of Leaflet polylines and markers for RF path visualization
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue