@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.
Files changed (95) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +684 -64
  3. package/dist/django/index.js +2871 -2253
  4. package/dist/django/index.js.map +1 -1
  5. package/dist/leaflet-geokit.es.js +2928 -2325
  6. package/dist/leaflet-geokit.es.js.map +1 -1
  7. package/dist/leaflet-geokit.external.es.js +2636 -0
  8. package/dist/leaflet-geokit.external.es.js.map +1 -0
  9. package/dist/leaflet-geokit.umd.js +69 -16
  10. package/dist/leaflet-geokit.umd.js.map +1 -1
  11. package/dist/preact/index-D8EjMf-1.js +2623 -0
  12. package/dist/preact/index-D8EjMf-1.js.map +1 -0
  13. package/dist/preact/index.js +109 -0
  14. package/dist/preact/index.js.map +1 -0
  15. package/dist/preact-bundled/index.js +9931 -0
  16. package/dist/preact-bundled/index.js.map +1 -0
  17. package/dist/react/index-D8EjMf-1.js +2623 -0
  18. package/dist/react/index-D8EjMf-1.js.map +1 -0
  19. package/dist/react/index.js +109 -0
  20. package/dist/react/index.js.map +1 -0
  21. package/dist/react-bundled/index.js +9931 -0
  22. package/dist/react-bundled/index.js.map +1 -0
  23. package/dist/types/e2e/component.spec.d.ts +1 -0
  24. package/dist/types/e2e/dummy.spec.d.ts +1 -0
  25. package/dist/types/src/components/LeafletDrawMapElement.d.ts +94 -0
  26. package/dist/types/src/django/index.d.ts +35 -0
  27. package/dist/types/src/external.d.ts +4 -0
  28. package/dist/types/src/index.d.ts +4 -0
  29. package/dist/types/src/lib/FeatureStore.d.ts +48 -0
  30. package/dist/types/src/lib/MapController.d.ts +121 -0
  31. package/dist/types/src/lib/draw/L.Draw.Cake.d.ts +9 -0
  32. package/dist/types/src/lib/draw/L.Draw.Move.d.ts +49 -0
  33. package/dist/types/src/lib/draw/toolbar-patch.d.ts +2 -0
  34. package/dist/types/src/lib/layer-cake/CakeBaker.d.ts +12 -0
  35. package/dist/types/src/lib/layer-cake/LayerCakeManager.d.ts +29 -0
  36. package/dist/types/src/lib/layer-cake/bindCakeControls.d.ts +8 -0
  37. package/dist/types/src/lib/layer-cake/ensureCircleEditable.d.ts +2 -0
  38. package/dist/types/src/lib/leaflet-assets.d.ts +23 -0
  39. package/dist/types/src/preact/core.d.ts +36 -0
  40. package/dist/types/src/preact/index.d.ts +8 -0
  41. package/dist/types/src/preact-bundled/index.d.ts +9 -0
  42. package/dist/types/src/react/core.d.ts +36 -0
  43. package/dist/types/src/react/index.d.ts +7 -0
  44. package/dist/types/src/react-bundled/index.d.ts +8 -0
  45. package/dist/types/src/shims/ensure-element.d.ts +2 -0
  46. package/dist/types/src/state/types.d.ts +7 -0
  47. package/dist/types/src/types/events.d.ts +71 -0
  48. package/dist/types/src/types/public.d.ts +108 -0
  49. package/dist/types/src/utils/geodesic.d.ts +8 -0
  50. package/dist/types/src/utils/geojson.d.ts +70 -0
  51. package/dist/types/src/utils/leaflet-guards.d.ts +9 -0
  52. package/dist/types/src/utils/logger.d.ts +12 -0
  53. package/dist/types/src/utils/ruler.d.ts +31 -0
  54. package/dist/types/tests/bbox-more.spec.d.ts +1 -0
  55. package/dist/types/tests/component-api-more.spec.d.ts +1 -0
  56. package/dist/types/tests/component-delegation.spec.d.ts +1 -0
  57. package/dist/types/tests/component-events.spec.d.ts +1 -0
  58. package/dist/types/tests/component-io.spec.d.ts +1 -0
  59. package/dist/types/tests/django-shim.spec.d.ts +1 -0
  60. package/dist/types/tests/draw-cake.spec.d.ts +1 -0
  61. package/dist/types/tests/draw-move.spec.d.ts +1 -0
  62. package/dist/types/tests/eachcoord.spec.d.ts +1 -0
  63. package/dist/types/tests/element.spec.d.ts +1 -0
  64. package/dist/types/tests/ensure-element.spec.d.ts +1 -0
  65. package/dist/types/tests/external-entry.spec.d.ts +1 -0
  66. package/dist/types/tests/featureStore-more.spec.d.ts +1 -0
  67. package/dist/types/tests/featureStore.spec.d.ts +1 -0
  68. package/dist/types/tests/framework-runtime-externalization.spec.d.ts +1 -0
  69. package/dist/types/tests/geodesic.spec.d.ts +1 -0
  70. package/dist/types/tests/geojson-merge.spec.d.ts +1 -0
  71. package/dist/types/tests/geojson-more.spec.d.ts +1 -0
  72. package/dist/types/tests/geojson.spec.d.ts +1 -0
  73. package/dist/types/tests/layer-cake-baker.spec.d.ts +1 -0
  74. package/dist/types/tests/layer-cake-controls.spec.d.ts +1 -0
  75. package/dist/types/tests/layer-cake-editing.spec.d.ts +1 -0
  76. package/dist/types/tests/layer-cake-manager.spec.d.ts +1 -0
  77. package/dist/types/tests/leaflet-assets.spec.d.ts +1 -0
  78. package/dist/types/tests/leaflet-draw-circle-resize-patch.spec.d.ts +1 -0
  79. package/dist/types/tests/leaflet-guards.spec.d.ts +1 -0
  80. package/dist/types/tests/logger-more.spec.d.ts +1 -0
  81. package/dist/types/tests/logger.spec.d.ts +1 -0
  82. package/dist/types/tests/map-controller.spec.d.ts +1 -0
  83. package/dist/types/tests/mapcontroller-merge.spec.d.ts +1 -0
  84. package/dist/types/tests/preact-bundled-shim.spec.d.ts +1 -0
  85. package/dist/types/tests/preact-shim.spec.d.ts +1 -0
  86. package/dist/types/tests/react-bundled-shim.spec.d.ts +1 -0
  87. package/dist/types/tests/react-shim.spec.d.ts +1 -0
  88. package/dist/types/tests/ruler.spec.d.ts +1 -0
  89. package/dist/types/vite.config.d.ts +2 -0
  90. package/dist/types/vite.config.external.d.ts +2 -0
  91. package/dist/types/vite.config.preact-bundled.d.ts +2 -0
  92. package/dist/types/vite.config.preact.d.ts +2 -0
  93. package/dist/types/vite.config.react-bundled.d.ts +2 -0
  94. package/dist/types/vite.config.react.d.ts +2 -0
  95. 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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"}