@florasync/leaflet-geokit 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +684 -64
- package/dist/django/index.js +2871 -2253
- package/dist/django/index.js.map +1 -1
- package/dist/leaflet-geokit.es.js +2928 -2325
- package/dist/leaflet-geokit.es.js.map +1 -1
- package/dist/leaflet-geokit.external.es.js +2636 -0
- package/dist/leaflet-geokit.external.es.js.map +1 -0
- package/dist/leaflet-geokit.umd.js +69 -16
- package/dist/leaflet-geokit.umd.js.map +1 -1
- package/dist/preact/index-D8EjMf-1.js +2623 -0
- package/dist/preact/index-D8EjMf-1.js.map +1 -0
- package/dist/preact/index.js +109 -0
- package/dist/preact/index.js.map +1 -0
- package/dist/preact-bundled/index.js +9931 -0
- package/dist/preact-bundled/index.js.map +1 -0
- package/dist/react/index-D8EjMf-1.js +2623 -0
- package/dist/react/index-D8EjMf-1.js.map +1 -0
- package/dist/react/index.js +109 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react-bundled/index.js +9931 -0
- package/dist/react-bundled/index.js.map +1 -0
- package/dist/types/e2e/component.spec.d.ts +1 -0
- package/dist/types/e2e/dummy.spec.d.ts +1 -0
- package/dist/types/src/components/LeafletDrawMapElement.d.ts +94 -0
- package/dist/types/src/django/index.d.ts +35 -0
- package/dist/types/src/external.d.ts +4 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/lib/FeatureStore.d.ts +48 -0
- package/dist/types/src/lib/MapController.d.ts +121 -0
- package/dist/types/src/lib/draw/L.Draw.Cake.d.ts +9 -0
- package/dist/types/src/lib/draw/L.Draw.Move.d.ts +49 -0
- package/dist/types/src/lib/draw/toolbar-patch.d.ts +2 -0
- package/dist/types/src/lib/layer-cake/CakeBaker.d.ts +12 -0
- package/dist/types/src/lib/layer-cake/LayerCakeManager.d.ts +29 -0
- package/dist/types/src/lib/layer-cake/bindCakeControls.d.ts +8 -0
- package/dist/types/src/lib/layer-cake/ensureCircleEditable.d.ts +2 -0
- package/dist/types/src/lib/leaflet-assets.d.ts +23 -0
- package/dist/types/src/preact/core.d.ts +36 -0
- package/dist/types/src/preact/index.d.ts +8 -0
- package/dist/types/src/preact-bundled/index.d.ts +9 -0
- package/dist/types/src/react/core.d.ts +36 -0
- package/dist/types/src/react/index.d.ts +7 -0
- package/dist/types/src/react-bundled/index.d.ts +8 -0
- package/dist/types/src/shims/ensure-element.d.ts +2 -0
- package/dist/types/src/state/types.d.ts +7 -0
- package/dist/types/src/types/events.d.ts +71 -0
- package/dist/types/src/types/public.d.ts +108 -0
- package/dist/types/src/utils/geodesic.d.ts +8 -0
- package/dist/types/src/utils/geojson.d.ts +70 -0
- package/dist/types/src/utils/leaflet-guards.d.ts +9 -0
- package/dist/types/src/utils/logger.d.ts +12 -0
- package/dist/types/src/utils/ruler.d.ts +31 -0
- package/dist/types/tests/bbox-more.spec.d.ts +1 -0
- package/dist/types/tests/component-api-more.spec.d.ts +1 -0
- package/dist/types/tests/component-delegation.spec.d.ts +1 -0
- package/dist/types/tests/component-events.spec.d.ts +1 -0
- package/dist/types/tests/component-io.spec.d.ts +1 -0
- package/dist/types/tests/django-shim.spec.d.ts +1 -0
- package/dist/types/tests/draw-cake.spec.d.ts +1 -0
- package/dist/types/tests/draw-move.spec.d.ts +1 -0
- package/dist/types/tests/eachcoord.spec.d.ts +1 -0
- package/dist/types/tests/element.spec.d.ts +1 -0
- package/dist/types/tests/ensure-element.spec.d.ts +1 -0
- package/dist/types/tests/external-entry.spec.d.ts +1 -0
- package/dist/types/tests/featureStore-more.spec.d.ts +1 -0
- package/dist/types/tests/featureStore.spec.d.ts +1 -0
- package/dist/types/tests/framework-runtime-externalization.spec.d.ts +1 -0
- package/dist/types/tests/geodesic.spec.d.ts +1 -0
- package/dist/types/tests/geojson-merge.spec.d.ts +1 -0
- package/dist/types/tests/geojson-more.spec.d.ts +1 -0
- package/dist/types/tests/geojson.spec.d.ts +1 -0
- package/dist/types/tests/layer-cake-baker.spec.d.ts +1 -0
- package/dist/types/tests/layer-cake-controls.spec.d.ts +1 -0
- package/dist/types/tests/layer-cake-editing.spec.d.ts +1 -0
- package/dist/types/tests/layer-cake-manager.spec.d.ts +1 -0
- package/dist/types/tests/leaflet-assets.spec.d.ts +1 -0
- package/dist/types/tests/leaflet-draw-circle-resize-patch.spec.d.ts +1 -0
- package/dist/types/tests/leaflet-guards.spec.d.ts +1 -0
- package/dist/types/tests/logger-more.spec.d.ts +1 -0
- package/dist/types/tests/logger.spec.d.ts +1 -0
- package/dist/types/tests/map-controller.spec.d.ts +1 -0
- package/dist/types/tests/mapcontroller-merge.spec.d.ts +1 -0
- package/dist/types/tests/preact-bundled-shim.spec.d.ts +1 -0
- package/dist/types/tests/preact-shim.spec.d.ts +1 -0
- package/dist/types/tests/react-bundled-shim.spec.d.ts +1 -0
- package/dist/types/tests/react-shim.spec.d.ts +1 -0
- package/dist/types/tests/ruler.spec.d.ts +1 -0
- package/dist/types/vite.config.d.ts +2 -0
- package/dist/types/vite.config.external.d.ts +2 -0
- package/dist/types/vite.config.preact-bundled.d.ts +2 -0
- package/dist/types/vite.config.preact.d.ts +2 -0
- package/dist/types/vite.config.react-bundled.d.ts +2 -0
- package/dist/types/vite.config.react.d.ts +2 -0
- package/package.json +59 -5
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import A, { useRef as L, useMemo as S, useEffect as h } from "react";
|
|
2
|
+
const G = "leaflet-geokit";
|
|
3
|
+
let o = null;
|
|
4
|
+
function v() {
|
|
5
|
+
return typeof customElements == "undefined" ? !1 : !!customElements.get(G);
|
|
6
|
+
}
|
|
7
|
+
async function O() {
|
|
8
|
+
typeof customElements != "undefined" && (v() || (o || (o = import("./index-D8EjMf-1.js").then(() => {
|
|
9
|
+
}).finally(() => {
|
|
10
|
+
o = null;
|
|
11
|
+
})), await o));
|
|
12
|
+
}
|
|
13
|
+
const N = [
|
|
14
|
+
"leaflet-draw:created",
|
|
15
|
+
"leaflet-draw:edited",
|
|
16
|
+
"leaflet-draw:deleted",
|
|
17
|
+
"leaflet-draw:merged"
|
|
18
|
+
];
|
|
19
|
+
function w(t) {
|
|
20
|
+
return t ? typeof t == "string" ? t : Object.entries(t).map(([r, e]) => `${r}: ${String(e)};`).join(" ") : "";
|
|
21
|
+
}
|
|
22
|
+
function g(t) {
|
|
23
|
+
return t instanceof Error ? t : typeof t == "string" ? new Error(t) : new Error("Unknown GeoKit React shim error");
|
|
24
|
+
}
|
|
25
|
+
function R(t, r) {
|
|
26
|
+
Object.entries(r).forEach(([e, i]) => {
|
|
27
|
+
if (i === !1 || i === null || i === void 0) {
|
|
28
|
+
t.removeAttribute(e);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (i === !0) {
|
|
32
|
+
t.setAttribute(e, "");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
t.setAttribute(e, String(i));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function J(t, r) {
|
|
39
|
+
if (r === "external") {
|
|
40
|
+
t.useExternalLeaflet = !0, t.skipLeafletStyles = !0, t.setAttribute("use-external-leaflet", ""), t.setAttribute("skip-leaflet-styles", "");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
t.useExternalLeaflet = !1, t.skipLeafletStyles = !1, t.removeAttribute("use-external-leaflet"), t.removeAttribute("skip-leaflet-styles");
|
|
44
|
+
}
|
|
45
|
+
function T(t) {
|
|
46
|
+
return function(e) {
|
|
47
|
+
const i = L(null), d = S(() => w(e.style), [e.style]);
|
|
48
|
+
return h(() => {
|
|
49
|
+
let E = !1, u;
|
|
50
|
+
return O().then(() => {
|
|
51
|
+
if (E) return;
|
|
52
|
+
const n = i.current;
|
|
53
|
+
if (!n) return;
|
|
54
|
+
const c = e.externalLeaflet != null ? e.externalLeaflet ? "external" : "bundled" : t;
|
|
55
|
+
J(n, c), e.className ? n.setAttribute("class", e.className) : n.removeAttribute("class"), d ? n.setAttribute("style", d) : n.removeAttribute("style"), e.leafletInstance && (n.leafletInstance = e.leafletInstance), e.attributes && R(n, e.attributes);
|
|
56
|
+
const y = async () => {
|
|
57
|
+
var a, f, s;
|
|
58
|
+
try {
|
|
59
|
+
const l = await n.getGeoJSON(), b = JSON.stringify(l);
|
|
60
|
+
(a = e.onChangeText) == null || a.call(e, b), (f = e.onChangeGeoJSON) == null || f.call(e, l);
|
|
61
|
+
} catch (l) {
|
|
62
|
+
(s = e.onError) == null || s.call(e, g(l));
|
|
63
|
+
}
|
|
64
|
+
}, m = () => {
|
|
65
|
+
var a, f;
|
|
66
|
+
(a = e.onReady) == null || a.call(e, n), (f = e.initialGeoJSONText) != null && f.trim() ? n.loadGeoJSONFromText(e.initialGeoJSONText).then(() => y()).catch((s) => {
|
|
67
|
+
var l;
|
|
68
|
+
return (l = e.onError) == null ? void 0 : l.call(e, g(s));
|
|
69
|
+
}) : y();
|
|
70
|
+
}, x = () => {
|
|
71
|
+
y();
|
|
72
|
+
};
|
|
73
|
+
n.addEventListener("leaflet-draw:ready", m), N.forEach((a) => {
|
|
74
|
+
n.addEventListener(a, x);
|
|
75
|
+
}), u = () => {
|
|
76
|
+
n.removeEventListener("leaflet-draw:ready", m), N.forEach((a) => {
|
|
77
|
+
n.removeEventListener(a, x);
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
}).catch((n) => {
|
|
81
|
+
var c;
|
|
82
|
+
E || (c = e.onError) == null || c.call(e, g(n));
|
|
83
|
+
}), () => {
|
|
84
|
+
E = !0, u == null || u();
|
|
85
|
+
};
|
|
86
|
+
}, [
|
|
87
|
+
t,
|
|
88
|
+
e.className,
|
|
89
|
+
e.externalLeaflet,
|
|
90
|
+
e.leafletInstance,
|
|
91
|
+
e.attributes,
|
|
92
|
+
e.initialGeoJSONText,
|
|
93
|
+
e.onChangeText,
|
|
94
|
+
e.onChangeGeoJSON,
|
|
95
|
+
e.onError,
|
|
96
|
+
e.onReady,
|
|
97
|
+
d
|
|
98
|
+
]), A.createElement("leaflet-geokit", {
|
|
99
|
+
ref: i,
|
|
100
|
+
className: e.className
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const k = T("external");
|
|
105
|
+
export {
|
|
106
|
+
k as ReactLeafletGeoKit,
|
|
107
|
+
k as default
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/shims/ensure-element.ts","../../src/react/core.tsx","../../src/react/index.tsx"],"sourcesContent":["const CANONICAL_TAG_NAME = \"leaflet-geokit\";\n\nlet registrationPromise: Promise<void> | null = null;\n\nexport function isLeafletGeoKitRegistered(): boolean {\n if (typeof customElements === \"undefined\") return false;\n return Boolean(customElements.get(CANONICAL_TAG_NAME));\n}\n\nexport async function ensureLeafletGeoKitRegistered(): Promise<void> {\n if (typeof customElements === \"undefined\") return;\n if (isLeafletGeoKitRegistered()) return;\n\n if (!registrationPromise) {\n registrationPromise = import(\"@src/index\")\n .then(() => undefined)\n .finally(() => {\n registrationPromise = null;\n });\n }\n\n await registrationPromise;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\n\nimport type { LeafletDrawMapElement } from \"@src/components/LeafletDrawMapElement\";\nimport { ensureLeafletGeoKitRegistered } from \"@src/shims/ensure-element\";\n\ntype Primitive = string | number | boolean | null | undefined;\ntype LeafletMode = \"external\" | \"bundled\";\n\nconst CHANGE_EVENTS = [\n \"leaflet-draw:created\",\n \"leaflet-draw:edited\",\n \"leaflet-draw:deleted\",\n \"leaflet-draw:merged\",\n] as const;\n\nexport interface ReactLeafletGeoKitProps {\n className?: string;\n style?: string | Record<string, string | number>;\n\n /**\n * HTML attributes to apply to <leaflet-geokit>.\n * Boolean true => present attribute, false => removed.\n */\n attributes?: Record<string, Primitive>;\n\n /**\n * Override the default entrypoint mode:\n * - /react defaults to external\n * - /react-bundled defaults to bundled\n */\n externalLeaflet?: boolean;\n\n /** Optional explicit Leaflet namespace (window.L equivalent). */\n leafletInstance?: any;\n\n /** Initial GeoJSON text to load once on ready. */\n initialGeoJSONText?: string;\n\n /** Called whenever draw/edit/delete/merge occurs, with latest serialized FeatureCollection. */\n onChangeText?: (text: string) => void;\n /** Called with parsed FeatureCollection after sync, if parsing is desired by host. */\n onChangeGeoJSON?: (geoJSON: unknown) => void;\n /** Called if sync/load operations fail. */\n onError?: (error: Error) => void;\n\n /** Access underlying custom element instance. */\n onReady?: (element: LeafletDrawMapElement) => void;\n}\n\nfunction toStyleString(\n style?: string | Record<string, string | number>,\n): string {\n if (!style) return \"\";\n if (typeof style === \"string\") return style;\n return Object.entries(style)\n .map(([key, value]) => `${key}: ${String(value)};`)\n .join(\" \");\n}\n\nfunction toError(error: unknown): Error {\n if (error instanceof Error) return error;\n if (typeof error === \"string\") return new Error(error);\n return new Error(\"Unknown GeoKit React shim error\");\n}\n\nfunction applyAttributes(\n element: LeafletDrawMapElement,\n attrs: Record<string, Primitive>,\n): void {\n Object.entries(attrs).forEach(([name, value]) => {\n if (value === false || value === null || value === undefined) {\n element.removeAttribute(name);\n return;\n }\n if (value === true) {\n element.setAttribute(name, \"\");\n return;\n }\n element.setAttribute(name, String(value));\n });\n}\n\nfunction applyModeDefaults(\n element: LeafletDrawMapElement,\n mode: LeafletMode,\n): void {\n if (mode === \"external\") {\n element.useExternalLeaflet = true;\n element.skipLeafletStyles = true;\n element.setAttribute(\"use-external-leaflet\", \"\");\n element.setAttribute(\"skip-leaflet-styles\", \"\");\n return;\n }\n\n element.useExternalLeaflet = false;\n element.skipLeafletStyles = false;\n element.removeAttribute(\"use-external-leaflet\");\n element.removeAttribute(\"skip-leaflet-styles\");\n}\n\nexport function createReactLeafletGeoKit(defaultMode: LeafletMode) {\n return function ReactLeafletGeoKit(props: ReactLeafletGeoKitProps) {\n const ref = useRef<LeafletDrawMapElement | null>(null);\n const styleText = useMemo(() => toStyleString(props.style), [props.style]);\n\n useEffect(() => {\n let disposed = false;\n let cleanup: (() => void) | undefined;\n\n void ensureLeafletGeoKitRegistered()\n .then(() => {\n if (disposed) return;\n\n const element = ref.current;\n if (!element) return;\n\n const mode =\n props.externalLeaflet != null\n ? props.externalLeaflet\n ? \"external\"\n : \"bundled\"\n : defaultMode;\n\n applyModeDefaults(element, mode);\n\n if (props.className) {\n element.setAttribute(\"class\", props.className);\n } else {\n element.removeAttribute(\"class\");\n }\n\n if (styleText) {\n element.setAttribute(\"style\", styleText);\n } else {\n element.removeAttribute(\"style\");\n }\n\n if (props.leafletInstance) {\n element.leafletInstance = props.leafletInstance;\n }\n\n if (props.attributes) {\n applyAttributes(element, props.attributes);\n }\n\n const sync = async () => {\n try {\n const geoJSON = await element.getGeoJSON();\n const text = JSON.stringify(geoJSON);\n props.onChangeText?.(text);\n props.onChangeGeoJSON?.(geoJSON);\n } catch (error) {\n props.onError?.(toError(error));\n }\n };\n\n const onReady = () => {\n props.onReady?.(element);\n if (props.initialGeoJSONText?.trim()) {\n void element\n .loadGeoJSONFromText(props.initialGeoJSONText)\n .then(() => sync())\n .catch((error: unknown) => props.onError?.(toError(error)));\n } else {\n void sync();\n }\n };\n\n const onChange = () => {\n void sync();\n };\n\n element.addEventListener(\"leaflet-draw:ready\", onReady);\n CHANGE_EVENTS.forEach((eventName) => {\n element.addEventListener(eventName, onChange);\n });\n\n cleanup = () => {\n element.removeEventListener(\"leaflet-draw:ready\", onReady);\n CHANGE_EVENTS.forEach((eventName) => {\n element.removeEventListener(eventName, onChange);\n });\n };\n })\n .catch((error: unknown) => {\n if (disposed) return;\n props.onError?.(toError(error));\n });\n\n return () => {\n disposed = true;\n cleanup?.();\n };\n }, [\n defaultMode,\n props.className,\n props.externalLeaflet,\n props.leafletInstance,\n props.attributes,\n props.initialGeoJSONText,\n props.onChangeText,\n props.onChangeGeoJSON,\n props.onError,\n props.onReady,\n styleText,\n ]);\n\n return React.createElement(\"leaflet-geokit\", {\n ref,\n className: props.className,\n });\n };\n}\n","import {\n createReactLeafletGeoKit,\n type ReactLeafletGeoKitProps,\n} from \"@src/react/core\";\n\nexport type { ReactLeafletGeoKitProps };\n\nexport const ReactLeafletGeoKit = createReactLeafletGeoKit(\"external\");\n\nexport default ReactLeafletGeoKit;\n"],"names":["CANONICAL_TAG_NAME","registrationPromise","isLeafletGeoKitRegistered","ensureLeafletGeoKitRegistered","CHANGE_EVENTS","toStyleString","style","key","value","toError","error","applyAttributes","element","attrs","name","applyModeDefaults","mode","createReactLeafletGeoKit","defaultMode","props","ref","useRef","styleText","useMemo","useEffect","disposed","cleanup","sync","geoJSON","text","_a","_b","_c","onReady","onChange","eventName","React","ReactLeafletGeoKit"],"mappings":"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"}
|