mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-22 20:16:57 +00:00
Improve leaflet type handing
This commit is contained in:
Vendored
+37
-2
@@ -1,7 +1,10 @@
|
|||||||
import * as L from "leaflet";
|
import * as L from "leaflet";
|
||||||
|
|
||||||
// For some reason, @types/leaflet.markercluster isn't being recognized
|
declare module "leaflet.smooth_marker_bouncing";
|
||||||
// I'm including it here by hand
|
|
||||||
|
// For some reason, @types/leaflet.markercluster isn't being recognized when added as a package
|
||||||
|
|
||||||
|
// I'm including it here by hand, and also including types for BouncingMarker and leaflet-gesture-handling
|
||||||
declare module "leaflet" {
|
declare module "leaflet" {
|
||||||
class MarkerCluster extends Marker {
|
class MarkerCluster extends Marker {
|
||||||
/*
|
/*
|
||||||
@@ -329,4 +332,36 @@ declare module "leaflet" {
|
|||||||
function markerClusterGroup(
|
function markerClusterGroup(
|
||||||
options?: MarkerClusterGroupOptions,
|
options?: MarkerClusterGroupOptions,
|
||||||
): MarkerClusterGroup;
|
): MarkerClusterGroup;
|
||||||
|
|
||||||
|
// These have been added by hand and aren't part of the @types/leaflet.markercluster that the above is a copy of
|
||||||
|
|
||||||
|
interface Map {
|
||||||
|
gestureHandling?: {
|
||||||
|
enable(): void;
|
||||||
|
disable(): void;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MapOptions {
|
||||||
|
gestureHandlingOptions?: {
|
||||||
|
duration?: number;
|
||||||
|
text?: {
|
||||||
|
touch: string;
|
||||||
|
scroll: string;
|
||||||
|
scrollMac: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Declare a class type that adds in methods etc. defined by leaflet.smooth_marker_bouncing
|
||||||
|
declare class BouncingMarker extends Marker {
|
||||||
|
isBouncing(): boolean;
|
||||||
|
bounce(): void;
|
||||||
|
stopBouncing(): void;
|
||||||
|
|
||||||
|
_icon: HTMLElement;
|
||||||
|
_bouncingMotion?: {
|
||||||
|
bouncingAnimationPlaying: boolean;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -29,8 +29,8 @@
|
|||||||
"jotai": "^2.6.1",
|
"jotai": "^2.6.1",
|
||||||
"leaflet": "^1.9.4",
|
"leaflet": "^1.9.4",
|
||||||
"leaflet-defaulticon-compatibility": "^0.1.2",
|
"leaflet-defaulticon-compatibility": "^0.1.2",
|
||||||
"leaflet-gesture-handling": "^1.2.2",
|
|
||||||
"leaflet-draw": "^1.0.4",
|
"leaflet-draw": "^1.0.4",
|
||||||
|
"leaflet-gesture-handling": "^1.2.2",
|
||||||
"leaflet.markercluster": "^1.5.3",
|
"leaflet.markercluster": "^1.5.3",
|
||||||
"leaflet.smooth_marker_bouncing": "3.0.3",
|
"leaflet.smooth_marker_bouncing": "3.0.3",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
@@ -67,7 +67,6 @@
|
|||||||
"@tailwindcss/typography": "^0.5.15",
|
"@tailwindcss/typography": "^0.5.15",
|
||||||
"@testing-library/jest-dom": "^6.1.2",
|
"@testing-library/jest-dom": "^6.1.2",
|
||||||
"@types/leaflet": "^1.9.12",
|
"@types/leaflet": "^1.9.12",
|
||||||
"@types/leaflet.markercluster": "^1.5.4",
|
|
||||||
"@types/lodash": "^4.14.195",
|
"@types/lodash": "^4.14.195",
|
||||||
"@types/nodemailer": "^6.4.8",
|
"@types/nodemailer": "^6.4.8",
|
||||||
"@types/react": "^18.2.27",
|
"@types/react": "^18.2.27",
|
||||||
|
|||||||
+1
-14
@@ -4,7 +4,7 @@ import { useCallback, useEffect, useMemo, useRef } from "react";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { useAtomValue, useSetAtom } from "jotai";
|
import { useAtomValue, useSetAtom } from "jotai";
|
||||||
import L, { DomUtil, LatLngLiteral, Marker } from "leaflet";
|
import L, { BouncingMarker, DomUtil, LatLngLiteral, Marker } from "leaflet";
|
||||||
import "leaflet-defaulticon-compatibility";
|
import "leaflet-defaulticon-compatibility";
|
||||||
import "leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.css";
|
import "leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.css";
|
||||||
import "leaflet.smooth_marker_bouncing";
|
import "leaflet.smooth_marker_bouncing";
|
||||||
@@ -21,19 +21,6 @@ export type MarkerRef = {
|
|||||||
bounce: () => void;
|
bounce: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Declare a class type that adds in methods etc. defined by leaflet.smooth_marker_bouncing
|
|
||||||
// to keep Typescript happy
|
|
||||||
declare class BouncingMarker extends Marker {
|
|
||||||
isBouncing(): boolean;
|
|
||||||
bounce(): void;
|
|
||||||
stopBouncing(): void;
|
|
||||||
|
|
||||||
_icon: HTMLElement;
|
|
||||||
_bouncingMotion?: {
|
|
||||||
bouncingAnimationPlaying: boolean;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const stopBouncingMarkers = () => {
|
const stopBouncingMarkers = () => {
|
||||||
const markers =
|
const markers =
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|||||||
@@ -52,27 +52,26 @@ export const MapEvents = ({
|
|||||||
|
|
||||||
map.addHandler("gestureHandling", GestureHandling);
|
map.addHandler("gestureHandling", GestureHandling);
|
||||||
|
|
||||||
// @ts-expect-error Typescript does not see additional handler here
|
map.gestureHandling?.enable();
|
||||||
map.gestureHandling.enable();
|
}, [bounds, map]);
|
||||||
}, [map]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("setting map language", locale);
|
if (
|
||||||
// @ts-expect-error Typescript does not see additional handler here
|
"gestureHandlingOptions" in map.options &&
|
||||||
map.options.gestureHandlingOptions.text = {
|
map.options.gestureHandlingOptions
|
||||||
touch: t("touch"),
|
) {
|
||||||
scroll: t("scroll"),
|
map.options.gestureHandlingOptions.text = {
|
||||||
scrollMac: t("scrollMac"),
|
touch: t("touch"),
|
||||||
};
|
scroll: t("scroll"),
|
||||||
|
scrollMac: t("scrollMac"),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// We need to toggle the handler to update the text on prod. No idea why.
|
// We need to toggle the handler to update the text on prod. No idea why.
|
||||||
|
|
||||||
// @ts-expect-error Typescript does not see additional handler here
|
map.gestureHandling?.disable();
|
||||||
map.gestureHandling.disable();
|
map.gestureHandling?.enable();
|
||||||
|
}, [map, locale, t]);
|
||||||
// @ts-expect-error Typescript does not see additional handler here
|
|
||||||
map.gestureHandling.enable();
|
|
||||||
}, [map, locale]);
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1947,20 +1947,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||||
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
|
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
|
||||||
|
|
||||||
"@types/leaflet.markercluster@^1.5.4":
|
|
||||||
version "1.5.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.4.tgz#2ab43417cf3f6a42d0f1baf4e1c8f659cf1dc3a1"
|
|
||||||
integrity sha512-tfMP8J62+wfsVLDLGh5Zh1JZxijCaBmVsMAX78MkLPwvPitmZZtSin5aWOVRhZrCS+pEOZwNzexbfWXlY+7yjg==
|
|
||||||
dependencies:
|
|
||||||
"@types/leaflet" "*"
|
|
||||||
|
|
||||||
"@types/leaflet@*":
|
|
||||||
version "1.9.9"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.9.tgz#5e469f1443c6796b59ad8300495bd82797345356"
|
|
||||||
integrity sha512-o0qD9ReJzWpGNIAY0O32NkpfM6rhV4sxnwVkz7x7Ah4Zy9sP+2T9Q3byccL5la1ZX416k+qiyvt8ksBavPPY7A==
|
|
||||||
dependencies:
|
|
||||||
"@types/geojson" "*"
|
|
||||||
|
|
||||||
"@types/leaflet@^1.9.12":
|
"@types/leaflet@^1.9.12":
|
||||||
version "1.9.12"
|
version "1.9.12"
|
||||||
resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.12.tgz#a6626a0b3fba36fd34723d6e95b22e8024781ad6"
|
resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.12.tgz#a6626a0b3fba36fd34723d6e95b22e8024781ad6"
|
||||||
|
|||||||
Reference in New Issue
Block a user