@element-editor/ui 0.2.1 → 0.2.2
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/AGENTS.md +1 -1
- package/dist/{BooleanOperations-BRO7NHUY.js → BooleanOperations-CUQDHcha.js} +1 -1
- package/dist/{BooleanOperations-C2uOHRu3.cjs → BooleanOperations-DrQS-3mJ.cjs} +1 -1
- package/dist/{DataTable-B-2VjBEz.cjs → DataTable-BPtIbZh4.cjs} +1 -1
- package/dist/{DataTable-CS-3dIqY.js → DataTable-Ce5P1HaO.js} +3 -3
- package/dist/{DataTablePanel-DDFUmMaM.js → DataTablePanel-DqS1lhWv.js} +1 -1
- package/dist/{DataTablePanel-58LwzXQR.cjs → DataTablePanel-PH5qtwrD.cjs} +1 -1
- package/dist/{FeatureEditModal-Cc8N6vei.cjs → FeatureEditModal-BNil19oc.cjs} +1 -1
- package/dist/{FeatureEditModal-Dr10p3nE.js → FeatureEditModal-DvdBiMck.js} +2 -2
- package/dist/{FeatureList-Bo9w9nre.js → FeatureList-DJTd3gEU.js} +2 -2
- package/dist/{FeatureList-VRYesXCq.cjs → FeatureList-F3BgjXro.cjs} +1 -1
- package/dist/{FeatureRowContextMenu-CtBqdC1j.cjs → FeatureRowContextMenu-Bw9Z6mpN.cjs} +1 -1
- package/dist/{FeatureRowContextMenu-DCUIiDwc.js → FeatureRowContextMenu-Dlsk7erC.js} +1 -1
- package/dist/{GeoJSONModal-BV9Tamf4.js → GeoJSONModal-BhHkqLAR.js} +2 -2
- package/dist/{GeoJSONModal-Dd-nBufy.cjs → GeoJSONModal-D6JBr9FA.cjs} +1 -1
- package/dist/{SchemaModal-gAuDkd-L.cjs → SchemaModal-5F0HBHGS.cjs} +1 -1
- package/dist/{SchemaModal-DvMbWskS.js → SchemaModal-CI5i_Kxh.js} +2 -2
- package/dist/{SettingsModal-BScVTjpn.js → SettingsModal-4OuBLPyW.js} +2 -2
- package/dist/{SettingsModal-CqaSFxxR.cjs → SettingsModal-au03oFaJ.cjs} +1 -1
- package/dist/{ShortcutsModal-D1Y2bGT8.cjs → ShortcutsModal-DBE-gSUi.cjs} +1 -1
- package/dist/{ShortcutsModal-ozuS2Ysb.js → ShortcutsModal-jGmjontP.js} +2 -2
- package/dist/contexts/ElementEditorConfigContext.d.cts +1 -1
- package/dist/contexts/ElementEditorConfigContext.d.ts +1 -1
- package/dist/element-editor-ui.cjs +1 -1
- package/dist/element-editor-ui.es.js +1 -1
- package/dist/index-mfb91TEp.cjs +1 -0
- package/dist/{index-CILw1Du5.js → index-rT-R0kyV.js} +1028 -988
- package/dist/{useWindowFocus-EemgNOuz.cjs → useWindowFocus-CRWNNxOL.cjs} +1 -1
- package/dist/{useWindowFocus-DuQVjnHE.js → useWindowFocus-CroxgGOo.js} +1 -1
- package/package.json +2 -2
- package/dist/index-DG4wEjGj.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-mfb91TEp.cjs"),o=require("./useAdapterControls-BBObhzVX.cjs"),r=require("./useAccentStyle-hsGvyHZc.cjs"),n=require("@element-editor/core"),t=require("./EditToolbarBtn-Ch9HCLHq.cjs");exports.ActiveDrawingToolbar=e.ActiveDrawingToolbar;exports.BasemapPicker=e.BasemapPicker;exports.BooleanOperations=e.BooleanOperations;exports.BufferPanel=e.BufferPanel;exports.ControlGroup=e.ControlGroup;exports.DataTable=e.DataTable;exports.DataTablePanel=e.DataTablePanel;exports.EditingToolbar=e.EditingToolbar;exports.ElementEditorErrorBoundary=e.ElementEditorErrorBoundary;exports.ElementEditorUIProvider=e.ElementEditorUIProvider;exports.FeatureEditModal=e.FeatureEditModal;exports.FeatureList=e.FeatureList;exports.FeatureMapContextMenu=e.FeatureMapContextMenu;exports.FeatureRow=e.FeatureRow;exports.FeatureSidePanel=e.FeatureSidePanel;exports.FitBoundsButton=e.FitBoundsButton;exports.FloatingToolbar=e.FloatingToolbar;exports.GeoJSONDockPlaceholder=e.GeoJSONDockPlaceholder;exports.GeoJSONModal=e.GeoJSONModal;exports.GroupRow=e.GroupRow;exports.IconButton=e.IconButton;exports.LayersPanel=e.LayersPanel;exports.LocateButton=e.LocateButton;exports.PartSubRow=e.PartSubRow;exports.ReadonlyBanner=e.ReadonlyBanner;exports.RedoButton=e.RedoButton;exports.SchemaEditor=e.SchemaEditor;exports.SchemaModal=e.SchemaModal;exports.SettingsModal=e.SettingsModal;exports.ShortcutConfigProvider=e.ShortcutConfigProvider;exports.ShortcutsModal=e.ShortcutsModal;exports.SimplifyPanel=e.SimplifyPanel;exports.SmoothPanel=e.SmoothPanel;exports.UndoButton=e.UndoButton;exports.UndoRedoToolbar=e.UndoRedoToolbar;exports.VertexSelectionBar=e.VertexSelectionBar;exports.ZoomIndicator=e.ZoomIndicator;exports.disposeGeometryWorker=e.disposeGeometryWorker;exports.featureLabel=e.featureLabel;exports.preloadEditorPanelsWhenIdle=e.preloadEditorPanelsWhenIdle;exports.runGeometryWorkerOperation=e.runGeometryWorkerOperation;exports.useAccentPalette=e.useAccentPalette;exports.useDataChangeSubscription=e.useDataChangeSubscription;exports.useGeoJSONDrop=e.useGeoJSONDrop;exports.useGeoJSONExport=e.useGeoJSONExport;exports.useIsEventForEditor=e.useIsEventForEditor;exports.useKeyboardShortcuts=e.useKeyboardShortcuts;exports.useShortcutConfig=e.useShortcutConfig;exports.ElementToaster=o.ElementToaster;exports.EventProvider=o.EventProvider;exports.GeoStoreProvider=o.GeoStoreProvider;exports.MapControllerProvider=o.MapControllerProvider;exports.StoreContext=o.StoreContext;exports.ThemeContext=o.ThemeContext;exports.ThemeReportingProvider=o.ThemeReportingProvider;exports.saveGeoJSONFile=o.saveGeoJSONFile;exports.triggerGeoJSONDownload=o.triggerGeoJSONDownload;exports.useAdapterControls=o.useAdapterControls;exports.useDataStore=o.useDataStore;exports.useEmit=o.useEmit;exports.useGeoStore=o.useGeoStore;exports.useIsManaged=o.useIsManaged;exports.useMapController=o.useMapController;exports.useNominatim=o.useNominatim;exports.useReportThemeFromRoot=o.useReportThemeFromRoot;exports.useSetMapController=o.useSetMapController;exports.useTheme=o.useTheme;exports.useToasterId=o.useToasterId;exports.useUIStore=o.useUIStore;exports.DEFAULT_LAYOUT=r.DEFAULT_LAYOUT;exports.ElementEditorConfigProvider=r.ElementEditorConfigProvider;exports.accentStyle=r.accentStyle;exports.resolveConfig=r.resolveConfig;exports.useAccentStyle=r.useAccentStyle;exports.useApplyAccentToRoot=r.useApplyAccentToRoot;exports.useElementEditorConfig=r.useElementEditorConfig;exports.useUnitsOverride=r.useUnitsOverride;exports.withLayout=r.withLayout;Object.defineProperty(exports,"ElementEditorError",{enumerable:!0,get:()=>n.ElementEditorError});exports.Button=t.Button;exports.CONTEXT_MENU_MARKER_ATTR=t.CONTEXT_MENU_MARKER_ATTR;exports.ContextMenu=t.ContextMenu;exports.EditToolbarBtn=t.EditToolbarBtn;exports.Input=t.Input;exports.Kbd=t.Kbd;exports.KbdDark=t.KbdDark;exports.KbdInvert=t.KbdInvert;exports.SearchDropdown=t.SearchDropdown;exports.SelectInput=t.SelectInput;exports.Textarea=t.Textarea;exports.ToolButton=t.ToolButton;exports.ToolbarDivider=t.ToolbarDivider;exports.Tooltip=t.Tooltip;exports.isContextMenuOpen=t.isContextMenuOpen;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { A as o, B as s, v as t, w as r, x as n, D as i, y as l, E as u, z as d, H as S, I as p, J as E, K as c, e as m, F as T, L as h, M as P, O as b, Q as C, G as v, R as B, S as M, T as f, P as g, U as x, V as D, X as G, Y as R, Z as I, _ as O, $ as y, a0 as F, a1 as A, a2 as N, a3 as U, a4 as w, a5 as L, a6 as J, l as K, a7 as k, c as _, a8 as W, a9 as j, aa as V, ab as X, ac as Y, ad as Z, b as q } from "./index-
|
|
2
|
+
import { A as o, B as s, v as t, w as r, x as n, D as i, y as l, E as u, z as d, H as S, I as p, J as E, K as c, e as m, F as T, L as h, M as P, O as b, Q as C, G as v, R as B, S as M, T as f, P as g, U as x, V as D, X as G, Y as R, Z as I, _ as O, $ as y, a0 as F, a1 as A, a2 as N, a3 as U, a4 as w, a5 as L, a6 as J, l as K, a7 as k, c as _, a8 as W, a9 as j, aa as V, ab as X, ac as Y, ad as Z, b as q } from "./index-rT-R0kyV.js";
|
|
3
3
|
import { o as H, m as Q, G as $, M as aa, S as ea, p as oa, T as sa, s as ta, t as ra, q as na, f as ia, h as la, e as ua, i as da, g as Sa, l as pa, r as Ea, v as ca, d as ma, j as Ta, u as ha } from "./useAdapterControls-DVjkwRZ_.js";
|
|
4
4
|
import { D as ba, E as Ca, g as va, h as Ba, e as Ma, j as fa, u as ga, k as xa, m as Da } from "./useAccentStyle-CPo2XqAn.js";
|
|
5
5
|
import { ElementEditorError as Ra } from "@element-editor/core";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var ar=Object.defineProperty;var ir=(r,t,n)=>t in r?ar(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n;var nt=(r,t,n)=>ir(r,typeof t!="symbol"?t+"":t,n);const l=require("react"),d=require("./useAdapterControls-BBObhzVX.cjs"),e=require("react/jsx-runtime"),Q=require("./useAccentStyle-hsGvyHZc.cjs"),$=require("@element-editor/core/internal"),Z=require("@element-editor/core"),F=require("@phosphor-icons/react"),lr=require("zustand/react/shallow"),D=require("./EditToolbarBtn-Ch9HCLHq.cjs"),te=require("clsx"),ft=require("react-dom"),cr=require("@turf/centroid"),ur=require("@turf/helpers"),mt=require("@turf/bbox");function se(r){let t=null,n=null;const s=()=>t??(t=r().then(a=>(n=a.default,a))),o=l.lazy(s);function f(a){const[p]=l.useState(()=>n??o);return l.createElement(p,a)}return Object.assign(f,{preload:s})}const pt=[];function Me(...r){for(const t of r)pt.push(t.preload)}let ot=!1;function dr(){if(ot||typeof window>"u")return;ot=!0;const r=()=>{for(const n of pt)n().catch(()=>{})},t=window.requestIdleCallback;t?t(r,{timeout:3e3}):setTimeout(r,1500)}const Ue=l.createContext(null);function ht({children:r}){const t=Q.useElementEditorConfig(),[n,s]=l.useState(()=>{const c=$.loadCustomBindings(t);return $.syncShortcutCache(c),c}),o=l.useCallback(c=>$.getEffectiveKey(c,n),[n]),f=l.useCallback((c,x)=>{const h=$.findConflict(x,c,n);if(h)return h;const y={...n,[c]:x};return s(y),$.saveCustomBindings(y,t),$.syncShortcutCache(y),null},[n,t]),a=l.useCallback(c=>{const x={...n};delete x[c],s(x),$.saveCustomBindings(x,t),$.syncShortcutCache(x)},[n,t]),p=l.useCallback(()=>{s({}),$.saveCustomBindings({},t),$.syncShortcutCache({})},[t]);return e.jsx(Ue.Provider,{value:{custom:n,getKey:o,setKey:f,resetKey:a,resetAll:p},children:r})}function fr(){return l.useContext(Ue)}function me(){const r=l.useContext(Ue);if(!r)throw new Error("useShortcutConfig must be used inside ShortcutConfigProvider");return r}const Fe=se(()=>Promise.resolve().then(()=>require("./FeatureList-F3BgjXro.cjs"))),gt=se(()=>Promise.resolve().then(()=>require("./DataTable-BPtIbZh4.cjs"))),xt=se(()=>Promise.resolve().then(()=>require("./SchemaEditor-B4L17K1e.cjs")));Me(Fe,gt,xt);function yt(){return e.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 h-full text-elm-text-muted",children:[e.jsx(F.MapPinPlus,{size:40,weight:"light"}),e.jsx("p",{className:"text-sm text-center text-balance leading-snug",children:"No features yet — add a point, line, or area"})]})}const bt=()=>typeof navigator<"u"&&/Mac/.test(navigator.platform);function vt(r){const t=r==null?void 0:r.name;return{type:"error",code:t==="NotAllowedError"?"permission-denied":t==="TypeError"?"unsupported":"unknown",source:"clipboard",message:"Could not copy to the clipboard",cause:r,quiet:!0}}function wt(r,t){if(t.length===0)return r.map(s=>s.id);const n=[];for(const s of t)for(const o of r)o.groupId===s.id&&n.push(o.id);for(const s of r)s.groupId||n.push(s.id);return n}function mr(r,t){const n=[];for(const s of t)if(!s.collapsed)for(const o of r)o.groupId===s.id&&n.push(o.id);for(const s of r)s.groupId||n.push(s.id);return n}const St="data-elm-window",Te=new WeakMap;function pr(r){const t=Te.get(r);if(!(t!=null&&t.size))return!1;let n=null;for(const s of t)(!n||s.z()>n.z())&&(n=s);return n==null||n.close(),!!n}function hr(r,t,n,s,{topWindow:o=!0}={}){const{uiStore:f}=d.useGeoStore(),a=l.useRef(n),p=l.useRef(s);l.useLayoutEffect(()=>{a.current=n,p.current=s}),l.useEffect(()=>{if(!t)return;const c=document.activeElement,x={z:()=>p.current,close:()=>a.current()};let h=Te.get(f);h||Te.set(f,h=new Set),o&&h.add(x);const y=r.current;function m(S){S.key!=="Escape"||S.defaultPrevented||!(y!=null&&y.contains(S.target))||(S.preventDefault(),a.current())}return document.addEventListener("keydown",m),()=>{h.delete(x),document.removeEventListener("keydown",m);const S=document.activeElement;(!S||S===document.body||((y==null?void 0:y.contains(S))??!1)||!S.isConnected)&&(c!=null&&c.isConnected)&&c!==document.body&&c.focus({preventScroll:!0})}},[t,r,f,o])}function gr(){return new Promise(r=>{const t=document.createElement("input");t.type="file",t.accept=".geojson,.json,application/geo+json,application/json",t.style.display="none",document.body.appendChild(t);let n=!1;const s=()=>{n||(n=!0,t.remove())};t.addEventListener("change",()=>{var f;const o=((f=t.files)==null?void 0:f[0])??null;s(),r(o)},{once:!0}),t.addEventListener("cancel",()=>{s(),r(null)},{once:!0}),t.click()})}const ge=new Map;function kt(r){if(r.closest("[data-elm-portal]"))return!0;let t=r;for(;t.parentElement&&t.parentElement!==document.body;)t=t.parentElement;return t.parentElement===document.body&&(t.hasAttribute("data-elm-theme")||t.hasAttribute("data-elm-portal"))}function xr(r,t){if(!t||r.composedPath().includes(t.root))return!0;const n=document.activeElement;return!n||n===document.body||kt(n)?t.pointerInside??ge.size===1:!1}function ue(){const{uiStore:r}=d.useGeoStore();return l.useCallback(t=>xr(t,ge.get(r)),[r])}const yr=140;function br(r,t){r.querySelectorAll(`[data-elm-shortcut="${t}"]`).forEach(n=>{n.disabled||(n.setAttribute("data-pressed",""),setTimeout(()=>n.removeAttribute("data-pressed"),yr))})}const vr=["point","line","polygon","route","circle","rectangle","freehand","picker"];function wr(r){var S;const{dataStore:t,uiStore:n}=d.useGeoStore(),s=d.useEmit(),{panTo:o,fitBounds:f,setZoom:a}=d.useMapController(),p=d.useGeoJSONFileImport(),c=Q.useElementEditorConfig(),x=ue(),h=(S=fr())==null?void 0:S.custom,y=l.useRef(h);y.current=h;const m=l.useCallback(k=>y.current?$.getEffectiveKey(k,y.current):$.getCurrentKey(k),[]);l.useEffect(()=>{if(!r)return;const k=r.closest("[data-elm-theme]")??r,M={root:k,pointerInside:null};ge.set(n,M);const E=i=>{i.composedPath().includes(k)?M.pointerInside=!0:i.target instanceof Element&&kt(i.target)||(M.pointerInside=!1)};return document.addEventListener("pointerdown",E,{capture:!0,passive:!0}),()=>{ge.get(n)===M&&ge.delete(n),document.removeEventListener("pointerdown",E,{capture:!0})}},[r,n]),l.useEffect(()=>{if(!c.ui.keyboardShortcuts.enabled||!c.ui.keyboardShortcuts.mapZoom)return;function k(M){if(!(M.metaKey||M.ctrlKey)||!x(M))return;const E=M.target,i=E==null?void 0:E.tagName;if(i==="INPUT"||i==="TEXTAREA"||i==="SELECT"||E!=null&&E.isContentEditable)return;const g=M.key==="+"||M.key==="=",u=M.key==="-"||M.key==="_";if(!g&&!u||!a)return;M.preventDefault();const I=t.getState().currentZoom;a(I+(g?1:-1))}return window.addEventListener("keydown",k,{capture:!0}),()=>window.removeEventListener("keydown",k,{capture:!0})},[c.ui.keyboardShortcuts.enabled,c.ui.keyboardShortcuts.mapZoom,a,t]),l.useEffect(()=>{const k=c.ui.keyboardShortcuts.enabled;function M(i){var L;if(!k&&i.key!=="Enter"||!x(i))return;const g=t.getState(),u=n.getState(),I=u.readonly,b=w=>{var O;return br(((O=ge.get(n))==null?void 0:O.root)??document,w)},C=i.target.tagName,N=i.target,A=i.composedPath(),B=A.some(w=>{if(!(w instanceof Element))return!1;const O=w.getAttribute("role");return O==="grid"||O==="treegrid"}),v=C==="INPUT"||C==="TEXTAREA"||C==="SELECT"||N.isContentEditable||B,j=i.key.toLowerCase();if(!v&&!I&&j==="z"&&(i.metaKey||i.ctrlKey)&&!i.shiftKey){i.preventDefault(),b("undo"),g.undoStack.length>0&&(g.undo(),s({type:"undo"}));return}if(!v&&!I&&j==="z"&&(i.metaKey||i.ctrlKey)&&i.shiftKey){i.preventDefault(),b("redo"),g.redoStack.length>0&&(g.redo(),s({type:"redo"}));return}if(!v&&(i.metaKey||i.ctrlKey)&&(i.key==="a"||i.key==="A")){i.preventDefault();const w=new Set(g.groups.filter(q=>q.hidden).map(q=>q.id)),O=g.features.filter(q=>!q.hidden&&!(q.groupId&&w.has(q.groupId))).map(q=>q.id);O.length>0&&g.setSelection(O);return}if(!v&&(i.metaKey||i.ctrlKey)&&!i.shiftKey&&(i.key==="j"||i.key==="J")){i.preventDefault();const w=!u.autoExitAfterDraw;u.setAutoExitAfterDraw(w),s({type:"success",message:w?"Drawing tools will exit after each shape":"Drawing tools will stay active after each shape",description:w?"You’ll go back to select mode. Press a tool key to draw again.":"Keep drawing more shapes in a row. Press the tool key again or Esc to exit."});return}if(!v&&!I&&(i.metaKey||i.ctrlKey)&&!i.shiftKey&&(i.key==="o"||i.key==="O")){i.preventDefault(),gr().then(w=>{w&&p(w)});return}if(!v&&(i.metaKey||i.ctrlKey)&&!i.shiftKey&&(i.key==="s"||i.key==="S")){i.preventDefault();const w=g.exportGeoJSON(),O=JSON.parse(w);if(!Array.isArray(O.features)||O.features.length===0){s({type:"warning",message:"Export failed",description:"No features to export — draw or import something first."});return}const q=O.features.length;(async()=>{const R=await d.saveGeoJSONFile(w);R&&s({type:"success",message:`Exported ${R.name}`,description:`${q===1?"1 feature":`${q} features`}, ${(R.bytes/1024).toFixed(1)} KB`})})();return}if(!v&&(i.metaKey||i.ctrlKey)){if(i.key==="c"){if(g.selectedIds.length===0)return;g.copySelection().then(w=>s(w?{type:"selection:copied"}:{type:"warning",message:"Copied for pasting in this editor only",description:"The browser did not allow writing to the system clipboard."}));return}if(i.key==="d"){if(i.preventDefault(),I)return;b("duplicate");const w=g.selectedIds;if(g.duplicateSelection())if(w.length===1){const O=t.getState().features.find(q=>q.id===w[0]);s({type:"feature:duplicated",featureId:w[0],label:String((O==null?void 0:O.properties.name)||"feature")})}else s({type:"features:duplicated",count:w.length});return}if(i.key==="e"||i.key==="E"){if(g.selectedIds.length!==1)return;i.preventDefault(),u.openEditDialog(g.selectedIds[0],{focusFirstField:!0});return}if((i.key==="g"||i.key==="G")&&!I){if(i.shiftKey){if(g.selectedIds.length===0||!g.features.some(O=>g.selectedIds.includes(O.id)&&O.groupId))return;i.preventDefault(),g.ungroupSelection()}else{if(g.selectedIds.length===0)return;i.preventDefault();const w=g.groupSelection();w&&u.setAutoFocusGroupId(w)}return}}if(i.key==="Enter"){if((!v||i.metaKey||i.ctrlKey)&&u.editingMode!=="none"){if(u.editingMode==="slice-shape"){i.preventDefault(),u.commitSliceShape();return}else if(u.editingMode==="cut-hole"){i.preventDefault(),u.commitCutHole();return}else if(u.editingMode==="draw-line"&&u.lineInProgress.length>=2){i.preventDefault(),u.commitLine({});return}else if(u.editingMode==="draw-polygon"&&u.polygonInProgress.length>=3){i.preventDefault(),u.commitPolygon({});return}else if(u.editingMode==="draw-route"&&u.routeWaypoints.length>=2){i.preventDefault(),u.commitRoute();return}}if(!k)return;const O=u.editingMode==="none"||u.editingMode==="draw-rect"||u.editingMode==="draw-circle"||u.editingMode==="place-point"||u.editingMode==="draw-freehand"||u.editingMode==="pick-shape"||u.editingMode==="draw-line"&&u.lineInProgress.length<2||u.editingMode==="draw-polygon"&&u.polygonInProgress.length<3||u.editingMode==="draw-route"&&u.routeWaypoints.length<2;if(u.dialogState.type==="closed"){if(!v&&!I&&!((L=N.closest)!=null&&L.call(N,'button, a[href], [role="button"]'))&&!i.metaKey&&!i.ctrlKey&&!i.altKey&&O){const q=g.selectedIds;if(q.length===1){const R=g.features.find(W=>W.id===q[0]),T=R==null?void 0:R.geometry.type;if(T==="LineString"||T==="Polygon"||T==="MultiLineString"||T==="MultiPolygon"||T==="GeometryCollection"){i.preventDefault();const W=!u.vertexEditActive;W&&u.editingMode!=="none"&&u.setEditingMode("none"),u.setVertexEditActive(W);return}}}}}const P=A.some(w=>w instanceof Element&&w.hasAttribute("data-elm-search-open"));if(i.key==="Tab"&&!v&&u.dialogState.type==="closed"&&!P&&!i.metaKey&&!i.ctrlKey&&!i.altKey){const w=g.features;if(w.length===0)return;i.preventDefault();const O=wt(w,g.groups),q=g.selectedIds.length===1?g.selectedIds[0]:null,R=q?O.indexOf(q):-1;let T;i.shiftKey?T=R<=0?O.length-1:R-1:T=R>=O.length-1?0:R+1;const G=O[T];g.selectFeature(G);const W=w.find(H=>H.id===G);if(W)if(W.geometry.type==="Point"){const[H,X]=W.geometry.coordinates;o==null||o([X,H])}else f==null||f(W.bbox||Z.getGeometryBBox(W.geometry));return}if(!v&&!i.metaKey&&!i.ctrlKey&&!i.altKey){const w=i.key.toLowerCase();if(w===m("show-shortcuts")){i.preventDefault(),b("show-shortcuts"),u.shortcutsModalOpen?u.closeShortcutsModal():u.openShortcutsModal();return}if(c.ui.schemaEditor&&!I&&w===m("toggle-schema")){i.preventDefault(),b("toggle-schema"),u.toggleSchemaModal();return}if(c.ui.layerList&&w===m("toggle-sidebar")){i.preventDefault(),b("toggle-sidebar"),u.setSidebarOpen(!u.sidebarOpen);return}}if(!v&&u.dialogState.type!=="new-point"&&!i.metaKey&&!i.ctrlKey&&!i.altKey){const w=i.key.toLowerCase();if(c.ui.dataTable&&w===m("toggle-table")){i.preventDefault(),b("toggle-table"),u.toggleTable();return}if(c.ui.geojsonEditor&&w===m("toggle-geojson")){i.preventDefault(),b("toggle-geojson"),u.toggleCodeModal();return}if(c.ui.zoomIndicator&&w===m("set-zoom")){i.preventDefault(),b("set-zoom"),u.setZoomEditing(!0);return}if(w===m("measure")){b("measure"),u.setEditingMode(u.editingMode==="measure"?"none":"measure");return}if(I)return;if(w===m("toggle-transform")){(g.selectedIds.length===1&&g.selectedIds[0]||g.selectedIds.length>0)&&(b("toggle-transform"),u.setTransformActive(!u.transformActive),!u.transformActive&&u.editingMode!=="none"&&u.setEditingMode("none"));return}const O=u.isToolAvailable,q=R=>{u.editingMode!==R&&!g.canAddFeatures(1)||(b(R==="pick-shape"?"picker":R),u.setEditingMode(u.editingMode===R?"none":R))};for(const R of vr){const T=Q.TOOL_MODES[R];if(O(R)&&w===m(T==="pick-shape"?"picker":T)){q(T);return}}if(w===m("cut-hole")){const R=g.features.find(T=>T.id===(g.selectedIds.length===1?g.selectedIds[0]:null));R&&(R.geometry.type==="Polygon"||R.geometry.type==="MultiPolygon")&&(b("cut-hole"),u.setEditingMode(u.editingMode==="cut-hole"?"none":"cut-hole"),u.setTransformActive(!1));return}if(w===m("slice-shape")){const R=g.features.find(T=>T.id===(g.selectedIds.length===1?g.selectedIds[0]:null));R&&(R.geometry.type==="Polygon"||R.geometry.type==="MultiPolygon")&&(b("slice-shape"),u.setEditingMode(u.editingMode==="slice-shape"?"none":"slice-shape"),u.setTransformActive(!1));return}if(w===m("break-apart")){const R=g.selectedIds.length===1?g.selectedIds[0]:null,T=R?g.features.find(G=>G.id===R):null;if(T&&$.isMultiGeometry(T.geometry)){b("break-apart");const G=$.getPartCount(T.geometry);g.breakMultiGeometry(R)&&s({type:"feature:broken",featureId:R,count:G,undo:()=>t.getState().undo()})}return}}if(i.key!=="Delete"&&i.key!=="Backspace"||I||u.dialogState.type==="new-point")return;const z=g.selectedIds;if(z.length===0||v||u.vertexEditActive)return;const K=z.length,_=K===1?g.features.find(w=>w.id===z[0]):null,J=K===1?String((_==null?void 0:_.properties.name)||"Unnamed feature"):`${K} features`;i.preventDefault(),i.stopImmediatePropagation(),b("delete-selected"),g.deleteSelection(),u.closeDialog(),s(K===1?{type:"feature:deleted",featureId:z[0],label:J,undo:()=>t.getState().undo()}:{type:"features:deleted",count:K,undo:()=>t.getState().undo()})}function E(i){var b;if(!x(i))return;const g=i.target.tagName;if(g==="INPUT"||g==="TEXTAREA"||g==="SELECT"||n.getState().readonly)return;const u=(b=i.clipboardData)==null?void 0:b.getData("text");if(u)try{const C=JSON.parse(u);if(C.type==="FeatureCollection"||C.type==="Feature"){const N=C.type==="FeatureCollection"?C.features:[C];t.setState({clipboard:N}),t.getState().pasteSelection()&&s({type:"selection:pasted",count:N.length});return}}catch{}const I=t.getState().clipboard;I&&I.length>0&&t.getState().pasteSelection()&&s({type:"selection:pasted",count:I.length})}return window.addEventListener("keydown",M),window.addEventListener("paste",E),()=>{window.removeEventListener("keydown",M),window.removeEventListener("paste",E)}},[t,n,s,o,f,c,m,p]),l.useEffect(()=>{function k(M){var u;if(M.key!=="Escape"||!x(M))return;const E=M.target;if(E&&(E.tagName==="INPUT"||E.tagName==="TEXTAREA"||E.isContentEditable)||(u=E==null?void 0:E.closest)!=null&&u.call(E,`[${St}]`)||D.isContextMenuOpen())return;const i=n.getState();if(i.dialogState.type!=="closed"){i.closeDialog(),M.stopPropagation();return}if(i.editingMode==="none"){if(i.vertexEditActive){i.setVertexEditActive(!1),M.stopPropagation();return}if(i.transformActive){i.setTransformActive(!1),M.stopPropagation();return}if(t.getState().selectedIds.length>0){t.getState().selectFeature(null),M.stopPropagation();return}pr(n)&&M.stopPropagation()}}return window.addEventListener("keydown",k,{capture:!0}),()=>window.removeEventListener("keydown",k,{capture:!0})},[])}const Sr=new Set(["true","yes","y","1","on","x","✓"]),kr=new Set(["false","no","n","0","off",""]);function jt(r){const t=r.trim().toLowerCase();return Sr.has(t)?!0:kr.has(t)?!1:null}function Et(r){return typeof r=="boolean"?r:typeof r=="number"?r!==0:typeof r=="string"?jt(r)===!0:!1}function jr({fields:r,values:t,onChange:n,errors:s,autoFocusFirst:o,readonly:f}){return e.jsx("div",{className:"space-y-3",children:r.map((a,p)=>{const c=t[a.key]??"",x=s==null?void 0:s[a.key],h=o&&p===0,y=e.jsxs("label",{className:"block text-xs font-medium text-(--elm-text-muted,var(--color-gray-600)) dark:text-(--elm-text-muted,var(--color-gray-400)) mb-1",children:[a.label,a.required&&e.jsx("span",{className:"text-rose-500 ml-0.5",children:"*"})]});let m;return a.type==="boolean"?e.jsxs("div",{"data-field-key":a.key,className:"flex items-center justify-between py-1 border-b border-transparent",children:[y,e.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:Et(c),onChange:S=>n(a.key,S.target.checked),disabled:f,className:"sr-only peer"}),e.jsx("div",{className:"w-9 h-5 bg-(--elm-border-strong,var(--color-gray-200)) peer-focus-visible:ring-2 peer-focus-visible:ring-elm-focus-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-elm-surface rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-(--elm-border-strong,var(--color-gray-300)) after:border after:rounded-full after:h-4 after:w-4 after:transition-transform peer-checked:bg-primary-500 opacity-90 hover:opacity-100 disabled:opacity-50"})]}),x&&e.jsx("p",{className:"mt-1 text-xs text-rose-500 w-full basis-full",children:x})]},a.key):(a.type==="textarea"?m=e.jsx(D.Textarea,{rows:3,value:String(c),onChange:S=>n(a.key,S.target.value),autoFocus:h,error:!!x,disabled:f}):a.type==="select"?m=e.jsxs(D.SelectInput,{value:String(c),onChange:S=>n(a.key,S.target.value),autoFocus:h,error:!!x,disabled:f,children:[e.jsx("option",{value:"",children:"— select —"}),(a.options??[]).map(S=>e.jsx("option",{value:S,children:S},S))]}):a.type==="number"?m=e.jsx(D.Input,{type:"number",value:String(c),onChange:S=>n(a.key,S.target.value),autoFocus:h,error:!!x,disabled:f,min:a.min,max:a.max}):m=e.jsx(D.Input,{type:a.type,value:String(c),onChange:S=>n(a.key,S.target.value),autoFocus:h,error:!!x,disabled:f}),e.jsxs("div",{"data-field-key":a.key,children:[y,m,x&&e.jsx("p",{className:"mt-1 text-xs text-rose-500",children:x})]},a.key))})})}const xe="items-center justify-center flex-shrink-0 p-[3px] rounded-elm-control text-elm-text-secondary hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) active:scale-[0.95] disabled:text-elm-text-disabled disabled:hover:bg-transparent disabled:active:scale-100 disabled:cursor-not-allowed transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-elm-focus-ring",Ct="h-10 box-border flex items-center flex-shrink-0 border-b border-elm-border bg-elm-surface-sunken";function It(){const r=d.useUIStore(o=>o.setSidebarOpen),t=d.useUIStore(o=>o.layout==="split"),n=Q.useElementEditorConfig(),{getKey:s}=me();return t?null:e.jsx(D.Tooltip,{content:"Hide layers",shortcut:n.ui.keyboardShortcuts.enabled?e.jsx(D.KbdDark,{children:s("toggle-sidebar").toUpperCase()}):void 0,side:"bottom",children:e.jsx("button",{"aria-label":"Collapse layers panel","data-elm-shortcut":"toggle-sidebar",onClick:o=>{r(!1),o.currentTarget.blur()},className:`flex ${xe}`,children:e.jsx(F.SidebarSimple,{size:16,mirrored:!0})})})}const Er=/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false)\b|\bnull\b|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,Cr="text-gray-800 dark:text-[#e06c75]",Ir="text-[#a11] dark:text-[#98c379]",Dr="text-[#164] dark:text-[#d19a66]",Nr="text-[#219] dark:text-[#d19a66]",Pr="text-[#164] dark:text-[#d19a66]";function Tr(r){const t=[];let n=0;for(const s of r.matchAll(Er)){const o=s.index;o>n&&t.push(r.slice(n,o));const[f,a,p,c]=s;a!==void 0?(t.push(e.jsx("span",{className:p?Cr:Ir,children:a},o)),p&&t.push(p)):c!==void 0?t.push(e.jsx("span",{className:Nr,children:f},o)):t.push(e.jsx("span",{className:f==="null"?Pr:Dr,children:f},o)),n=o+f.length}return n<r.length&&t.push(r.slice(n)),t}function Mr({json:r,className:t}){const n=l.useMemo(()=>Tr(r),[r]);return e.jsx("pre",{className:t,children:n})}function st(r,t){if(r.required&&(t==null||String(t).trim()===""))return`${r.label} is required`;if(r.type==="number"&&t!==void 0&&t!==null&&String(t).trim()!==""){const n=Number(t);if(!isNaN(n)){const s=r.min!==void 0,o=r.max!==void 0;if(s&&o&&(n<r.min||n>r.max))return`${r.label} must be between ${r.min} and ${r.max}`;if(s&&n<r.min)return`${r.label} must be ≥ ${r.min}`;if(o&&n>r.max)return`${r.label} must be ≤ ${r.max}`}}return null}function Dt(r,t){const n=d.useUIStore(a=>a.panelPrefs[r]),s=d.useUIStore(a=>a.setPanelPref),o=n!==null?n:t;return{open:o,toggle:()=>s(r,!o)}}function Ur(r,t,n){if(r.type==="new-point"){const s={};return t.fields.forEach(o=>{s[o.key]=""}),r.prefill&&Object.assign(s,r.prefill),s}if(r.type==="edit"){const s=n.find(o=>o.id===r.featureId);if(s)return{...s.properties}}return{}}function Nt({dialogState:r,collapsible:t=!1}){const{dataStore:n}=d.useGeoStore(),s=d.useEmit(),o=d.useUIStore(T=>T.closeDialog),f=d.useDataStore(T=>T.selectFeature),a=d.useDataStore(lr.useShallow(T=>T.getVisibleSchemas())),p=d.useDataStore(T=>T.lastUsedSchemaId),c=d.useUIStore(T=>T.readonly),{uiStore:x}=d.useGeoStore(),h=ue(),y=d.useDataStore(T=>T.features),m=l.useMemo(()=>r.type==="edit"?y.find(T=>T.id===r.featureId)??null:null,[r,y]),S=d.useDataStore(T=>T.addFeature),k=d.useDataStore(T=>T.updateFeature),M=d.useDataStore(T=>T.deleteFeature),E=d.useDataStore(T=>T.duplicateFeature),i=d.useDataStore(T=>T.getDefaultSchema),g=d.useDataStore(T=>T.setLastUsedSchemaId),u=r.type==="new-point",I=i(),[b,C]=l.useState(()=>r.type==="edit"&&(m!=null&&m.schemaId)?m.schemaId:p&&a.find(G=>G.id===p)?p:I.id),N=a.find(T=>T.id===b)??I,[A,B]=l.useState(()=>Ur(r,N,y)),[v,j]=l.useState({}),P=m==null?void 0:m.properties,z=m==null?void 0:m.schemaId,[K,_]=l.useState({editProps:P,editSchemaId:z});m&&(K.editProps!==P||K.editSchemaId!==z)&&(_({editProps:P,editSchemaId:z}),B({...P}),z&&C(z),j({}));function J(T){const G=a.find(W=>W.id===T)??I;if(u){const W={};G.fields.forEach(H=>{W[H.key]=A[H.key]??""}),B(W)}C(T),g(T),j({})}l.useEffect(()=>{if(c)return;function T(G){if((G.metaKey||G.ctrlKey)&&G.key==="Enter"&&h(G)){const W=x.getState();if(W.lineInProgress.length>0||W.polygonInProgress.length>0||W.routeWaypoints.length>0||W.freehandPoints.length>0||W.circleCenter!==null||W.rectCorner!==null)return;G.preventDefault(),L()}}return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)});function L(){var W;const T={};for(const H of N.fields){const X=st(H,A[H.key]);X&&(T[H.key]=X)}if(Object.keys(T).length>0){j(T);const H=(W=N.fields.find(X=>T[X.key]))==null?void 0:W.key;H&&setTimeout(()=>{var de;const X=document.querySelector(`[data-field-key="${CSS.escape(H)}"]`),ee=X==null?void 0:X.querySelector("input, textarea, select");ee==null||ee.focus(),ee&&"select"in ee&&((de=ee.select)==null||de.call(ee))},0);return}j({});const G={};for(const[H,X]of Object.entries(A))X!==""&&(G[H]=X);u&&r.type==="new-point"?S({type:"Feature",id:crypto.randomUUID(),schemaId:b,geometry:{type:"Point",coordinates:r.coords},properties:G}):m&&k(m.id,{properties:G,schemaId:b}),o()}function w(){if(!m)return;const T=String(m.properties.name||"feature"),G=m.id,W=E(G);o(),W&&s({type:"feature:duplicated",featureId:G,label:T})}function O(){if(!m)return;const T=String(m.properties.name||"Unnamed feature"),G=m.id;M(G),o(),s({type:"feature:deleted",featureId:G,label:T,undo:()=>n.getState().undo()})}const q=u?"New point":m?String(m.properties.name||"Edit feature"):"Edit feature",R=u?"point":(m==null?void 0:m.geometry.type)==="MultiPoint"?"points":(m==null?void 0:m.geometry.type)==="LineString"?"line":(m==null?void 0:m.geometry.type)==="MultiLineString"?"lines":(m==null?void 0:m.geometry.type)==="Polygon"?"area":(m==null?void 0:m.geometry.type)==="MultiPolygon"?"areas":(m==null?void 0:m.geometry.type)==="GeometryCollection"?"mixed":"point";return e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsxs("header",{className:"flex items-center gap-1 px-4 pt-4 pb-3 border-b border-elm-border flex-shrink-0 bg-elm-surface-sunken",children:[t&&e.jsx(It,{}),e.jsx(D.Tooltip,{content:"Back to layers",side:"bottom",children:e.jsx("button",{type:"button",onClick:()=>{o(),f(null)},"aria-label":"Back to layers",className:`flex ${xe}`,children:e.jsx(F.ArrowLeft,{size:16})})}),e.jsxs("div",{className:"flex-1 min-w-0 mx-1",children:[e.jsx("p",{className:"text-sm leading-5 font-semibold text-(--elm-text,var(--color-gray-800)) dark:text-(--elm-text,var(--color-gray-100)) truncate",children:q}),e.jsx("p",{className:"text-xs leading-4 text-elm-text-subtle capitalize",children:R})]}),m&&e.jsxs(e.Fragment,{children:[!c&&e.jsx(D.Tooltip,{content:"Duplicate",shortcut:e.jsxs("span",{className:"flex items-center gap-0.5",children:[e.jsx(D.KbdDark,{children:"⌘"}),e.jsx(D.KbdDark,{children:"D"})]}),side:"bottom",children:e.jsx("button",{type:"button",onClick:w,"aria-label":"Duplicate feature",className:`flex ${xe}`,children:e.jsx(F.CopySimple,{size:16})})}),!c&&e.jsx(D.Tooltip,{content:"Delete feature",side:"bottom",children:e.jsx("button",{type:"button",onClick:O,"aria-label":"Delete feature",className:`flex ${xe}`,children:e.jsx(F.Trash,{size:16})})})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-4 pt-4",children:[a.length>1&&e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"block text-xs font-medium text-(--elm-text-muted,var(--color-gray-600)) dark:text-(--elm-text-muted,var(--color-gray-400)) mb-1",children:"Schema"}),e.jsx(D.SelectInput,{value:b,onChange:T=>J(T.target.value),disabled:c,children:a.map(T=>{var G;return e.jsxs("option",{value:T.id,children:[T.name,T.id===((G=a[0])==null?void 0:G.id)?" (default)":""]},T.id)})})]}),e.jsx(jr,{fields:N.fields,values:A,onChange:(T,G)=>{B(H=>({...H,[T]:G}));const W=N.fields.find(H=>H.key===T);if(W){const H=st(W,G);j(X=>{if(H)return{...X,[T]:H};const ee={...X};return delete ee[T],ee})}},errors:v,autoFocusFirst:!c&&(u||r.type==="edit"&&!!r.isNew||r.type==="edit"&&!!r.focusFirstField),readonly:c}),e.jsx(Rr,{dialogState:r,editFeature:m??null,values:A,schemaId:b}),e.jsx(Fr,{dialogState:r,editFeature:m??null}),e.jsx("div",{className:"-mx-4 border-t border-elm-border"})]}),!c&&e.jsx("div",{className:"px-4 py-3 border-t border-elm-border flex-shrink-0",children:e.jsxs(D.Button,{variant:"primary",onClick:L,className:"w-full py-2 rounded-elm font-medium",children:["Save",e.jsx("span",{className:"ml-auto flex items-center gap-0.5",children:bt()?e.jsxs(e.Fragment,{children:[e.jsx(D.KbdInvert,{children:"⌘"}),e.jsx(D.KbdInvert,{children:"↵"})]}):e.jsxs(e.Fragment,{children:[e.jsx(D.KbdInvert,{children:"Ctrl"}),e.jsx(D.KbdInvert,{children:"↵"})]})})]})})]})}function Fr({dialogState:r,editFeature:t}){const n=l.useMemo(()=>{if(r.type==="new-point"){const[a,p]=r.coords;return[`${p.toFixed(6)}, ${a.toFixed(6)}`]}if(!t)return[];if(t.geometry.type==="Point"){const[a,p]=t.geometry.coordinates;return[`${p.toFixed(6)}, ${a.toFixed(6)}`]}return t.geometry.type==="LineString"?t.geometry.coordinates.map(([p,c],x)=>`${x+1}. ${c.toFixed(6)}, ${p.toFixed(6)}`):t.geometry.type==="Polygon"?t.geometry.coordinates[0].slice(0,-1).map(([p,c],x)=>`${x+1}. ${c.toFixed(6)}, ${p.toFixed(6)}`):[]},[r,t]),s=n.length<=5,{open:o,toggle:f}=Dt("coordsOpen",s);return n.length===0?null:e.jsx(Pt,{label:"Coordinates",open:o,onToggle:f,children:e.jsx("div",{className:"space-y-0.5",children:n.map((a,p)=>e.jsx("p",{className:"text-xs font-elm-mono text-elm-text-muted",children:a},p))})})}function Rr({dialogState:r,editFeature:t,values:n,schemaId:s}){const o=l.useMemo(()=>{if(r.type==="new-point"){const S={};for(const[k,M]of Object.entries(n))M!==""&&(S[k]=M);return{type:"Feature",id:"(new)",schemaId:s,geometry:{type:"Point",coordinates:r.coords},properties:S}}return t??null},[r,t,n,s]),{open:f,toggle:a}=Dt("sourceOpen",!1),[p,c]=l.useState(!1),x=d.useEmit();if(!o)return null;const h=JSON.stringify(o,null,2);function y(){Promise.resolve().then(()=>navigator.clipboard.writeText(h)).then(()=>{c(!0),setTimeout(()=>c(!1),1500)},S=>x(vt(S)))}const m=e.jsx("button",{type:"button",onClick:S=>{S.stopPropagation(),y()},"aria-label":"Copy source",className:`flex items-center justify-center w-6 h-6 rounded-elm-chip hover:bg-elm-surface-hover transition-colors ${p?"text-emerald-500":"text-elm-text-disabled hover:text-(--elm-text-secondary,var(--color-gray-500)) dark:hover:text-(--elm-text-secondary,var(--color-gray-300))"}`,children:p?e.jsx(F.Check,{size:16,weight:"bold"}):e.jsx(F.Copy,{size:16})});return e.jsx(Pt,{label:"Source",open:f,onToggle:a,action:m,children:e.jsx(Mr,{json:h,className:"text-[11px] font-elm-mono text-(--elm-text-secondary,var(--color-gray-800)) dark:text-(--elm-text-secondary,var(--color-gray-300)) bg-elm-surface-sunken border border-(--elm-border-subtle,var(--color-gray-100)) dark:border-(--elm-border-subtle,var(--color-gray-700)) rounded-elm-card p-2 overflow-x-auto whitespace-pre leading-relaxed"})})}function Pt({label:r,open:t,onToggle:n,action:s,children:o}){return e.jsxs("div",{children:[e.jsx("div",{className:"-mx-4 border-t border-elm-border"}),e.jsxs("div",{className:"flex items-center h-12",children:[e.jsxs("button",{type:"button",className:"flex items-center gap-1 text-xs font-medium text-elm-text-subtle hover:text-(--elm-text-secondary,var(--color-gray-600)) dark:hover:text-(--elm-text-secondary,var(--color-gray-300)) hover:bg-elm-surface-hover rounded-elm-control -ml-2 pl-2 transition-colors flex-1 text-left h-full",onClick:n,children:[e.jsx("span",{className:"text-elm-text-subtle flex-shrink-0",children:t?e.jsx(F.CaretDown,{size:12,weight:"bold"}):e.jsx(F.CaretRight,{size:12,weight:"bold"})}),r]}),s]}),t&&e.jsx("div",{className:"pb-3",children:o})]})}const Tt="[data-elm-theme],[data-elm-theme] *{transition:none!important}";function at(r){const t=document.createElement("style");t.textContent=Tt,document.head.appendChild(t),r(),requestAnimationFrame(()=>requestAnimationFrame(()=>t.remove()))}function Mt(r,t){t==null||t.setAttribute("data-dragging","");const n=document.createElement("div");n.style.cssText=`position:fixed;inset:0;z-index:2147483647;cursor:${r}`,document.body.appendChild(n);const s=document.createElement("style");return s.textContent=Tt,document.head.appendChild(s),document.body.style.userSelect="none",()=>{t==null||t.removeAttribute("data-dragging"),n.remove(),s.remove(),document.body.style.userSelect=""}}function Ut(r,t,n,s){const o=Q.useElementEditorConfig(),[f,a]=l.useState(()=>{const x=parseInt(Z.readStorage(r,o)??"",10);return isNaN(x)?t:Math.max(n,Math.min(s,x))}),p=l.useRef(f);p.current=f;const c=l.useCallback(x=>{if(x.button!==0)return;x.preventDefault();const h=x.clientX,y=p.current,m=Mt("col-resize",x.currentTarget);function S(M){const E=Math.max(n,Math.min(s,y+(h-M.clientX)));p.current=E,a(E)}function k(){m(),Z.writeStorage(r,String(p.current),o),window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",k)}window.addEventListener("mousemove",S),window.addEventListener("mouseup",k)},[r,n,s,o]);return{width:f,onHandleMouseDown:c}}function Re(r,t=!0){const{uiStore:n}=d.useGeoStore(),s=Q.useElementEditorConfig().ui.layerList,o=d.useUIStore($.sidebarTakesSpace),f=d.useUIStore(h=>h.narrow),a=d.useUIStore(h=>h.sidebarWidth),p=d.useUIStore(h=>h.codeDockWidth),x=d.useUIStore(h=>h.tableFullscreen)||f?0:(s&&o?a:0)+p;l.useLayoutEffect(()=>{var y;if(!t)return;const h=(y=r.current)==null?void 0:y.closest("[data-elm-theme]");if(h)return h.style.setProperty("--elm-panel-offset",`${x}px`),()=>{h.style.removeProperty("--elm-panel-offset")}},[r,t,x]),l.useLayoutEffect(()=>{var S;if(!t)return;const h=(S=r.current)==null?void 0:S.closest("[data-elm-theme]");if(!h)return;const y=()=>{const k=h.clientWidth;k>0&&n.getState().narrow!==k<$.NARROW_EDITOR_WIDTH&&n.getState().setNarrow(k<$.NARROW_EDITOR_WIDTH)};y();const m=new ResizeObserver(y);return m.observe(h),()=>m.disconnect()},[r,t,n])}const Ft="after:absolute after:transition-colors hover:after:bg-elm-focus-ring data-[dragging]:after:bg-elm-focus-ring",Rt=`absolute left-0 top-0 h-full w-1 z-20 cursor-col-resize after:inset-y-0 after:left-0 after:w-0.5 ${Ft}`,Ar=`absolute top-0 left-0 right-0 h-1 z-10 cursor-row-resize after:inset-x-0 after:top-0 after:h-0.5 ${Ft}`,Lr="p-1 rounded-elm-control flex items-center justify-center text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-elm-focus-ring active:scale-[0.95] disabled:cursor-not-allowed disabled:active:scale-100",zr="text-elm-text hover:bg-elm-control-hover disabled:hover:bg-transparent",Br="flex items-center justify-center w-6 h-6 rounded-elm-control transition-colors bg-transparent hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-gray-200)_70%,transparent)) dark:hover:bg-(--elm-control-hover,var(--color-gray-800)) focus:outline-none focus-visible:ring-2 focus-visible:ring-elm-focus-ring disabled:cursor-not-allowed",Kr="flex items-center justify-center w-12 h-12 backdrop-blur-md border border-elm-border/80 shadow-elm-control rounded-elm transition-colors active:scale-[0.95] focus:outline-none focus-visible:ring-2 focus-visible:ring-elm-focus-ring disabled:cursor-not-allowed disabled:active:scale-100",Or="bg-elm-surface/95 hover:bg-elm-surface-hover disabled:hover:bg-elm-surface/95",it="disabled:text-elm-text-disabled",lt="text-primary-600 dark:text-primary-400",$r="text-elm-text";function pe({label:r,tooltipContent:t,shortcut:n,shortcutId:s,tooltipSide:o="top",onClick:f,active:a,expanded:p,controls:c,disabled:x,size:h="md",children:y}){const S=Q.useElementEditorConfig().ui.keyboardShortcuts.enabled?n:void 0;return e.jsx(D.Tooltip,{content:t??r,shortcut:S,side:o,children:e.jsx("button",{"aria-label":r,"data-elm-shortcut":s,"aria-pressed":p===void 0?a:void 0,"aria-expanded":p,"aria-controls":c,onClick:k=>{f(),k.detail>0&&k.currentTarget.blur()},disabled:x,className:h==="group"?`${Lr} ${a?lt:zr} ${it}`:`${h==="sm"?Br:`${Kr} ${Or}`} ${a?lt:$r} ${it}`,children:l.isValidElement(y)&&typeof y.type!="string"?l.cloneElement(y,{...a?{weight:"fill"}:{},...h==="sm"?{size:16}:{}}):y})})}const Gr=l.memo(function({footer:t}){const{dataStore:n}=d.useGeoStore(),s=d.useEmit(),o=d.useUIStore(L=>L.sidebarOpen),f=d.useUIStore(L=>L.setSidebarOpen),a=d.useUIStore(L=>L.setSidebarWidth),p=d.useUIStore(L=>L.codeDockWidth),c=d.useUIStore(L=>L.readonly),x=d.useUIStore(L=>L.layout),{width:h,onHandleMouseDown:y}=Ut("elm_panel_width",288,200,520),m=x==="split",S=l.useRef(null);Re(S);const k=d.useUIStore(L=>L.narrow)&&!m,[M,E]=l.useState(!1),i=l.useRef(!1);l.useEffect(()=>{const L=requestAnimationFrame(()=>{i.current=!0});return()=>cancelAnimationFrame(L)},[]),l.useLayoutEffect(()=>{k&&(i.current||E(!0),f(!1))},[k,f]),l.useEffect(()=>{if(!M)return;const L=requestAnimationFrame(()=>E(!1));return()=>cancelAnimationFrame(L)},[M]);const{getKey:g}=me(),u=e.jsx(D.KbdDark,{children:g("toggle-sidebar").toUpperCase()}),[I,b]=l.useState(null),C=l.useCallback(L=>b(L),[]);l.useLayoutEffect(()=>{a(h)},[h,a]);const N=d.useUIStore(L=>L.dialogState),A=N.type!=="closed",B=d.useDataStore(L=>L.features),v=d.useDataStore(L=>L.selectedIds),j=d.useDataStore(L=>L.deleteSelection),P=d.useDataStore(L=>L.clearSelection),z=d.useUIStore(L=>L.autoFocusGroupId),K=d.useUIStore(L=>L.setAutoFocusGroupId);l.useEffect(()=>{z&&K(null)},[z,K]);function _(){const L=crypto.randomUUID();n.setState(w=>({groups:[...w.groups,{id:L,name:"New group",collapsed:!1}],lastModifiedAt:Date.now()})),K(L)}const J=N.type==="edit"?`edit-${N.featureId}`:N.type;return e.jsx(e.Fragment,{children:e.jsxs("aside",{ref:S,"data-elm-layers-panel":"",className:m?"h-full w-full":k?`absolute top-0 h-full z-[600] ${o?"shadow-elm-raised":""}`:"absolute top-0 h-full z-10",style:m?void 0:k?{width:`min(${h}px, 100% - 48px)`,right:o?0:`calc(-1 * min(${h}px, 100% - 48px))`,transition:M?"none":"right 200ms ease"}:{width:h,right:o?0:-h,transition:M?"none":"right 200ms ease"},children:[!m&&!o&&e.jsx("div",{className:"absolute z-30",style:{left:-64-p,top:16},children:e.jsx(pe,{label:"Open layers panel",shortcutId:"toggle-sidebar",tooltipContent:"Show layers",shortcut:u,tooltipSide:"bottom",onClick:()=>f(!0),children:e.jsx(F.SidebarSimple,{size:24})})}),e.jsxs("div",{inert:!m&&!o,className:`h-full flex flex-col overflow-hidden bg-elm-surface ${m?"":"border-l border-elm-border/80"}`,children:[!m&&e.jsx("div",{onMouseDown:y,className:Rt,title:"Drag to resize panel"}),A&&v.length<2?e.jsx(Nt,{dialogState:N,collapsible:!0},J):e.jsxs(e.Fragment,{children:[e.jsx("header",{className:`${Ct} px-3`,children:e.jsxs("div",{className:"flex items-center justify-between h-6 w-full",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(It,{}),e.jsx("span",{className:"text-xs font-medium text-elm-text-secondary",children:"Layers"})]}),e.jsx("div",{className:"flex items-center gap-0.5",children:!c&&e.jsx(D.Tooltip,{content:"New group",side:"bottom",children:e.jsx("button",{type:"button",onClick:_,disabled:B.length===0,className:`flex ${xe}`,"aria-label":"New group",children:e.jsx(F.FolderPlus,{size:16})})})})]})}),e.jsx("div",{ref:C,className:"flex-1 overflow-y-auto min-h-0",children:e.jsx("div",{className:"px-3 py-3 flex flex-col gap-3 h-full",children:e.jsx(l.Suspense,{fallback:B.length===0?e.jsx("div",{className:"h-full",children:e.jsx(yt,{})}):null,children:e.jsx(Fe,{autoFocusGroupId:z,scrollElement:I})})})}),v.length>=2&&e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 bg-elm-surface-sunken border-t border-elm-border flex-shrink-0",children:[e.jsxs("span",{className:"text-xs text-elm-text-secondary font-medium flex-1",children:[v.length," selected"]}),e.jsx("button",{onClick:P,className:"text-xs text-elm-text-secondary px-2 py-1 rounded-elm-control hover:bg-(--elm-surface-hover,var(--color-gray-200)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) transition-colors",children:"Clear"}),!c&&e.jsx("button",{onClick:()=>{const L=v.length;j(),s({type:"features:deleted",count:L,undo:()=>n.getState().undo()})},className:"text-xs text-elm-text-secondary px-2 py-1 rounded-elm-control hover:bg-(--elm-surface-hover,var(--color-gray-200)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) transition-colors",children:"Delete all"})]})]}),t&&e.jsx("div",{className:"flex-shrink-0 border-t border-elm-border",children:t})]})]})})});function Ae({type:r,size:t=20}){return r==="Point"||r==="MultiPoint"?e.jsx(F.MapPin,{size:t}):r==="Polygon"||r==="MultiPolygon"?e.jsx(F.Polygon,{size:t,weight:"fill"}):r==="GeometryCollection"?e.jsx(F.StackSimple,{size:t}):e.jsx(F.LineSegment,{size:t,weight:"bold"})}function At(r){switch(r){case"Point":return"Point";case"MultiPoint":return"Points";case"LineString":return"Line";case"MultiLineString":return"Lines";case"Polygon":return"Area";case"MultiPolygon":return"Areas";case"GeometryCollection":return"Mixed";default:return r}}function Lt({initialLabel:r,onCommit:t,autoFocus:n,activate:s,onEnd:o,onTab:f,disabled:a}){const[p,c]=l.useState(()=>!a&&(!!n||!!s)),[x,h]=l.useState(r),y=l.useRef(null);l.useEffect(()=>{s&&!p&&!a&&(h(r),c(!0))},[s]),l.useEffect(()=>{var i,g;p&&((i=y.current)==null||i.focus(),(g=y.current)==null||g.select())},[p]);function m(i){a||(h(i),c(!0))}function S(){const i=x.trim();i&&i!==r&&t(i),c(!1),o==null||o()}function k(){h(r),c(!1),o==null||o()}function M(i){if(i.key==="Enter"){i.preventDefault(),i.nativeEvent.stopImmediatePropagation(),S();return}if(i.key==="Escape"){i.nativeEvent.stopImmediatePropagation(),k();return}if(i.key==="Tab"&&f){i.preventDefault(),i.nativeEvent.stopImmediatePropagation();const g=x.trim();g&&g!==r&&t(g),c(!1),f(i.shiftKey?"prev":"next")}}return{isRenaming:p,startRenaming:m,inputProps:{ref:y,value:x,onChange:i=>h(i.target.value),onBlur:S,onKeyDown:M,onClick:i=>i.stopPropagation()}}}function zt(r){const t=r.properties.name;return typeof t=="string"&&t.trim()?t:At(r.geometry.type)}const Wr=l.memo(function({feature:t,isSelected:n,onRowClick:s,onRowSelectOnly:o,onRowJump:f,onEdit:a,onToggleHidden:p,containerProps:c,dragHandleProps:x,isDragging:h,innerRef:y,isMultiSelected:m,onMultiSelectToggle:S,onRangeSelect:k,isContextMenuActive:M,dragCountBadge:E,isGhosted:i,onRename:g,renameActive:u,onRenameEnd:I,onRenameTab:b,joinTop:C,joinBottom:N}){const A=l.useRef(null),B=zt(t),v=d.useUIStore(R=>R.readonly),{isRenaming:j,startRenaming:P,inputProps:z}=Lt({initialLabel:B,disabled:v,onCommit:R=>g==null?void 0:g(t.id,R),activate:u,onEnd:I,onTab:b}),K=l.useRef(null);l.useEffect(()=>()=>{K.current!==null&&clearTimeout(K.current)},[]);const _=typeof t.properties.imageUrl=="string"&&t.properties.imageUrl?t.properties.imageUrl:null,[J,L]=l.useState(!1);l.useEffect(()=>{if(L(!1),!_)return;const R=new Image;let T=!1;return R.onload=()=>{T||L(!0)},R.onerror=()=>{},R.src=_,()=>{T=!0,R.onload=null,R.onerror=null}},[_]);const w=_!==null&&J,{style:O,...q}=c??{};return e.jsx("li",{ref:R=>{A.current=R,y==null||y(R)},...q,...x,style:{listStyle:"none",opacity:i?.4:void 0,outline:"none",...O},children:e.jsxs("div",{"data-feature-id":t.id,className:te.clsx("group flex items-center gap-2 px-2 h-9 rounded-elm-control text-sm cursor-default",!h&&C&&"rounded-t-none",!h&&N&&"rounded-b-none",h?"cursor-grabbing shadow-elm-control bg-elm-surface-raised":m||n?"bg-(--elm-row-selected) hover:bg-(--elm-row-selected-hover) text-primary-700 dark:text-primary-300":t.hidden?te.clsx("text-elm-text-disabled",M?"bg-(--elm-row-hover)":"hover:bg-(--elm-row-hover)"):M?"bg-(--elm-row-hover) text-elm-text-secondary":"hover:bg-(--elm-row-hover) text-elm-text-secondary"),onClick:R=>{if(R.metaKey||R.ctrlKey){R.stopPropagation(),S==null||S(t.id);return}if(R.shiftKey){R.stopPropagation(),k==null||k(t.id);return}s(t.id)},children:[w?e.jsx("img",{src:_,alt:"",className:"w-5 h-5 rounded-elm-chip object-cover flex-shrink-0 border border-(--elm-border,var(--color-gray-200))"}):e.jsx("span",{className:te.clsx("flex-shrink-0",n||m?"text-primary-700 dark:text-primary-300":t.hidden?"text-elm-text-disabled":"text-(--elm-text-subtle,var(--color-gray-400))"),children:e.jsx(Ae,{type:t.geometry.type})}),j?e.jsx("input",{...z,className:"flex-1 min-w-0 bg-elm-surface outline-none text-sm font-normal text-elm-text-secondary border border-primary-400 rounded-elm-control px-1.5 py-0.5 leading-snug"}):e.jsx("span",{className:"flex-1 min-w-0 font-normal truncate leading-snug border border-transparent rounded-elm-control px-1.5 py-0.5",onClick:R=>{R.metaKey||R.ctrlKey||R.shiftKey||!o||!f||(R.stopPropagation(),o(t.id),K.current!==null&&(clearTimeout(K.current),K.current=null),!(R.detail>=2)&&(K.current=window.setTimeout(()=>{f(t.id),K.current=null},300)))},onDoubleClick:R=>{R.stopPropagation(),K.current!==null&&(clearTimeout(K.current),K.current=null),P(B)},children:B}),!j&&E&&E>1&&e.jsx("span",{className:"flex-shrink-0 bg-primary-500 text-white text-xs font-bold px-1.5 py-0.5 rounded-full min-w-[1.25rem] text-center leading-none",children:E}),!j&&e.jsxs("div",{className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx("button",{onClick:R=>{R.stopPropagation(),a(t.id)},className:"text-elm-text hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) p-1 rounded-elm-control opacity-0 group-hover:opacity-100","aria-label":"Edit",children:e.jsx(F.PencilSimple,{size:16})}),e.jsx("button",{onClick:R=>{R.stopPropagation(),p(t.id)},className:te.clsx("text-elm-text hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) p-1 rounded-elm-control",t.hidden?"":"opacity-0 group-hover:opacity-100"),"aria-label":"Toggle visibility",children:t.hidden?e.jsx(F.EyeClosed,{size:16}):e.jsx(F.Eye,{size:16})})]})]})})});function _r({group:r,featureCount:t,autoFocus:n,isSelected:s,onToggleCollapse:o,onToggleHidden:f,onRename:a,onDelete:p,onSelect:c,innerRef:x,dragHandleProps:h,containerProps:y,isDragging:m}){const S=d.useUIStore(A=>A.readonly),{isRenaming:k,startRenaming:M,inputProps:E}=Lt({initialLabel:r.name,disabled:S,onCommit:a,autoFocus:n}),[i,g]=l.useState(null),u=l.useRef(null);function I(A){A.stopPropagation();const B=u.current;if(B){const v=B.getBoundingClientRect();g({x:v.right,y:v.bottom+4})}}const b=l.useRef(null);l.useEffect(()=>()=>{b.current!==null&&clearTimeout(b.current)},[]);const C={label:r.hidden?"Show on map":"Hide from map",icon:r.hidden?e.jsx(F.Eye,{size:16}):e.jsx(F.EyeClosed,{size:16}),onClick:()=>f()},N=S?[C]:[C,{label:"Rename",icon:e.jsx(F.Pencil,{size:16}),onClick:()=>M(r.name)},{separator:!0},{label:"Ungroup",icon:e.jsx(F.FolderMinus,{size:16}),onClick:()=>p("ungroup")},{label:"Delete group",icon:e.jsx(F.Trash,{size:16}),onClick:()=>p("delete-features")}];return e.jsxs(e.Fragment,{children:[i&&e.jsx(D.ContextMenu,{x:i.x,y:i.y,onClose:()=>g(null),items:N}),e.jsxs("div",{ref:x,...y,...h,className:te.clsx("group flex items-center gap-2 px-2 py-1.5 rounded-elm-control text-sm font-medium cursor-default",m?"shadow-elm-control bg-elm-surface-raised":s?"bg-(--elm-row-selected) hover:bg-(--elm-row-selected-hover) text-primary-700 dark:text-primary-300":r.hidden?"text-elm-text-disabled hover:bg-(--elm-row-hover)":"text-elm-text-secondary hover:bg-(--elm-row-hover)"),style:{outline:"none",cursor:m?"grabbing":"default",...y==null?void 0:y.style},onClick:()=>{c&&c()},onContextMenu:A=>{A.preventDefault(),g({x:A.clientX,y:A.clientY})},children:[e.jsx("span",{className:te.clsx("flex-shrink-0 cursor-pointer",r.hidden?"text-elm-text-disabled":"text-elm-text-muted"),onClick:A=>{A.stopPropagation(),o()},"aria-label":r.collapsed?"Expand group":"Collapse group",children:r.collapsed?e.jsx(F.Folder,{size:20,weight:"fill"}):e.jsx(F.FolderOpen,{size:20,weight:"fill"})}),k?e.jsx("input",{...E,className:"flex-1 min-w-0 bg-elm-surface outline-none text-sm font-medium text-elm-text-secondary border border-primary-400 rounded-elm-control px-1.5 py-0.5 leading-snug"}):e.jsx("span",{className:"flex-1 min-w-0 truncate cursor-default leading-snug border border-transparent rounded-elm-control px-1.5 py-0.5",onClick:A=>{A.stopPropagation(),!(!c||A.metaKey||A.ctrlKey||A.shiftKey)&&(b.current!==null&&(clearTimeout(b.current),b.current=null),!(A.detail>=2)&&(b.current=window.setTimeout(()=>{c(),b.current=null},300)))},onDoubleClick:A=>{A.stopPropagation(),b.current!==null&&(clearTimeout(b.current),b.current=null),M(r.name)},children:r.name}),!k&&e.jsxs("div",{className:"ml-auto flex items-center gap-1 flex-shrink-0",children:[r.hidden&&e.jsx("button",{onClick:A=>{A.stopPropagation(),f()},className:"text-elm-text p-1 rounded-elm-control hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700))","aria-label":"Show on map",children:e.jsx(F.EyeClosed,{size:16})}),e.jsx("div",{className:"opacity-0 group-hover:opacity-100",children:e.jsx(D.Tooltip,{content:"More options",children:e.jsx("button",{ref:u,onClick:I,className:"text-elm-text p-1 rounded-elm-control hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700))","aria-label":"More options",children:e.jsx(F.DotsThree,{size:16,weight:"bold"})})})}),e.jsx("span",{className:te.clsx("font-normal w-7 text-right text-sm",r.hidden?"text-elm-text-disabled":"text-elm-text-subtle"),children:t})]})]})]})}function qr({geometry:r,partIndex:t,isSelected:n,onClick:s}){const o=$.getPartGeometry(r,t),f=$.getPartLabel(r,t);return e.jsx("li",{style:{listStyle:"none"},className:"ml-5",children:e.jsxs("div",{className:te.clsx("flex items-center gap-2 px-2 h-9 rounded-elm-control text-sm cursor-default",n?"bg-(--elm-row-selected) hover:bg-(--elm-row-selected-hover) text-primary-700 dark:text-primary-300":"text-elm-text-muted hover:bg-(--elm-row-hover)"),onClick:a=>{a.stopPropagation(),s()},children:[e.jsx("span",{className:te.clsx("flex-shrink-0",n?"text-primary-700 dark:text-primary-300":"text-(--elm-text-subtle,var(--color-gray-400))"),children:e.jsx(Ae,{type:o.type})}),e.jsx("span",{className:"flex-1 min-w-0 font-normal truncate leading-snug border border-transparent rounded-elm-control px-1.5 py-0.5",children:f})]})})}const Bt="elm_code_docked";function Kt(){const r=Q.useElementEditorConfig(),[t]=l.useState(()=>Z.readStorage(Bt,r)!=="0");return t}function Ot(r){const t=Q.useElementEditorConfig(),n=d.useUIStore(h=>h.layout),s=d.useUIStore($.sidebarTakesSpace),o=d.useUIStore(h=>h.sidebarWidth),f=d.useUIStore(h=>h.tableFullscreen),a=d.useUIStore(h=>h.setCodeDockWidth),p=d.useUIStore(h=>h.narrow),c=Ut("elm_code_dock_width",420,280,900);l.useLayoutEffect(()=>{if(r)return at(()=>a(p?0:c.width)),()=>at(()=>a(0))},[r,p,c.width,a]);const x=t.ui.layerList&&s;return{...c,className:`absolute top-0 ${p?"z-[600] shadow-elm-raised":"z-10"} flex flex-col bg-elm-surface border-l border-elm-border/80 overflow-hidden ${f?"hidden":""}`,style:{right:x?o:0,bottom:n==="split"?"33.33%":0,width:p?`min(${c.width}px, 100%)`:c.width,transition:"right 200ms ease"}}}function Hr(){const r=Kt(),t=Ot(r),n=l.useRef(null);return Re(n,r),r?e.jsx("div",{ref:n,"aria-hidden":"true",className:t.className,style:t.style}):null}function Vr(){const[r,t]=l.useState(""),[n,s]=l.useState(!1),[o,f]=l.useState(!1),[a,p]=l.useState(-1),c=l.useRef(null),x=l.useRef(null),{results:h,loading:y,error:m,flush:S}=d.useNominatim(r),k=l.useRef(!1),{flyTo:M,fitBounds:E}=d.useMapController(),{dataStore:i}=d.useGeoStore(),g=ue();l.useEffect(()=>{s(r.trim().length>=2),p(-1)},[r,h]),l.useEffect(()=>{k.current=!1},[r]),l.useEffect(()=>{!k.current||y||(k.current=!1,h.length&&N(0))},[h,y]),l.useEffect(()=>{function v(j){c.current&&!c.current.contains(j.target)&&s(!1)}return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[]),l.useEffect(()=>{function v(j){var P,z;if(g(j)){if(j.key==="f"&&(j.metaKey||j.ctrlKey)&&!$t(j)){j.preventDefault(),(P=x.current)==null||P.focus();return}j.key==="Escape"&&(n||document.activeElement===x.current)&&(j.stopPropagation(),t(""),s(!1),p(-1),(z=x.current)==null||z.blur())}}return window.addEventListener("keydown",v,{capture:!0}),()=>window.removeEventListener("keydown",v,{capture:!0})},[n,g]);function u(v){M==null||M([parseFloat(v.lat),parseFloat(v.lon)],15)}function I(v){const j=parseFloat(v.lat),P=parseFloat(v.lon),z=i.getState().getDefaultSchema(),K={};for(const J of z.fields)K[J.key]=J.key==="name"?v.display_name.split(",")[0].trim():"";const _={type:"Feature",id:crypto.randomUUID(),schemaId:z.id,geometry:{type:"Point",coordinates:[P,j]},properties:K};i.getState().addFeature(_),M==null||M([j,P],15),C()}function b(v){const j=v.geojson;if(!j||j.type==="Point")return;let P;j.type==="MultiPolygon"?P={type:"Polygon",coordinates:j.coordinates.reduce((J,L)=>L[0].length>J[0].length?L:J)}:P=j;const z={type:"Feature",id:crypto.randomUUID(),schemaId:$.BOUNDARIES_SCHEMA_ID,geometry:P,properties:{name:v.display_name.split(",")[0].trim()}};i.getState().addFeature(z),E==null||E(Z.getGeometryBBox(P)),C()}function C(){t(""),s(!1),p(-1)}function N(v){p(v),u(h[v]),requestAnimationFrame(()=>{var j;return(j=x.current)==null?void 0:j.focus()})}function A(v){if(v.key==="Enter"){if(r.trim().length<2)return;if(v.preventDefault(),h.length&&!y){N(a>=0?a:0);return}k.current=!0,s(!0),S();return}h.length&&(v.key==="ArrowDown"?(v.preventDefault(),p(j=>(j+1)%h.length)):v.key==="ArrowUp"&&(v.preventDefault(),p(j=>j<=0?h.length-1:j-1)))}const B=n&&r.trim().length>=2;return{query:r,setQuery:t,setOpen:s,showDropdown:B,containerRef:c,inputRef:x,focused:o,setFocused:f,results:h,loading:y,error:m,flyToResult:u,handleAdd:I,handleAddShape:b,clear:C,activeIndex:a,setActiveIndex:p,handleInputKeyDown:A}}function $t(r){var t,n;return((n=(t=r.target)==null?void 0:t.closest)==null?void 0:n.call(t,".cm-editor"))!=null}const Jr=208,Xr={"top-left":{style:{top:16,left:16},className:"flex-col items-start"},"top-center":{style:{top:16,left:0,right:0},className:"flex-col items-center"},"top-right":{style:{top:16,right:16},className:"flex-col items-end"},"left-center":{style:{left:16,top:"50%",transform:"translateY(-50%)"},className:"flex-col items-start"},"right-center":{style:{right:16,top:"50%",transform:"translateY(-50%)"},className:"flex-col items-end"},"bottom-left":{style:{bottom:16,left:16},className:"flex-col-reverse items-start"},"bottom-center":{style:{bottom:16,left:0,right:0},className:"flex-col-reverse items-center"},"bottom-right":{style:{bottom:16,right:16},className:"flex-col-reverse items-end"}};function Zr({embedded:r}={}){const t=d.useDataStore(U=>U.features.length),n=d.useDataStore(U=>U.maxFeatures),s=n!=null&&t>=n,o=d.useEmit(),f=Q.useElementEditorConfig(),{toolbar:a}=f,p=a.direction==="vertical",c=Xr[a.position],x=d.useUIStore($.sidebarTakesSpace),h=d.useUIStore(U=>U.sidebarWidth),y=d.useUIStore(U=>U.codeDockWidth),m=d.useUIStore(U=>U.layout),S=f.ui.layerList&&x,k=a.position.startsWith("bottom"),M=a.position==="left-center"||a.position==="right-center",E=m==="split"&&k,i=m==="split"&&M,g=(()=>{let U=c.style;const V=a.position.endsWith("-right")||a.position.startsWith("right");return S?V&&(U={...U,right:h+16+y}):f.ui.layerList&&m==="panel"&&a.position==="top-right"?U={...U,right:72+y}:V&&y&&(U={...U,right:16+y}),E?U={...U,bottom:"calc(33.33% + 16px)"}:k&&(U={...U,bottom:"calc(var(--elm-table-offset, 0px) + 16px)"}),i&&(U={...U,top:"33.33%"}),U===c.style?c:{...c,style:U}})(),u=d.useUIStore(U=>U.editingMode),I=d.useUIStore(U=>U.enabledTools),b=d.useUIStore(U=>U.unavailableTools),C=d.useUIStore(U=>U.readonly),N=d.useUIStore(U=>U.setEditingMode);function A(U){if(s&&U!=="none"){o({type:"error",code:"limit-reached",source:"editor",message:$.featureLimitMessage(n)});return}N(U)}const{getKey:B}=me(),{query:v,setQuery:j,setOpen:P,showDropdown:z,containerRef:K,inputRef:_,focused:J,setFocused:L,results:w,loading:O,error:q,flyToResult:R,handleAdd:T,handleAddShape:G,clear:W,activeIndex:H,setActiveIndex:X,handleInputKeyDown:ee}=Vr(),de=l.useRef(null),ye=l.useRef(null);l.useEffect(()=>{var oe;if(r||!k)return;const U=(oe=ye.current)==null?void 0:oe.closest("[data-elm-theme]");if(!U)return;const V=()=>{var he;const fe=((he=ye.current)==null?void 0:he.offsetHeight)??0;U.style.setProperty("--elm-bottom-toolbar-offset",`${fe+8}px`)};V();const Y=new ResizeObserver(V);return ye.current&&Y.observe(ye.current),()=>{Y.disconnect(),U.style.setProperty("--elm-bottom-toolbar-offset","0px")}},[r,k]);const[ve,ae]=l.useState(!1),Oe=l.useRef(null),$e=l.useRef(null),[tr,Ge]=l.useState(!1),We=l.useRef(null);l.useLayoutEffect(()=>{var Ye,Qe;const U=We.current;if(p||!U){Ge(!1);return}const V=((Ye=K.current)==null?void 0:Ye.closest('[data-elm-edge="top"], [data-elm-edge="bottom"]'))??null,Y=V??((Qe=K.current)==null?void 0:Qe.offsetParent);if(!Y)return;const oe=we=>we.flatMap(le=>getComputedStyle(le).display==="contents"?oe([...le.children]):[le.offsetWidth]),fe=()=>{const we=oe([...U.children]).filter(Pe=>Pe>0),le=getComputedStyle(U),or=parseFloat(le.paddingLeft)+parseFloat(le.paddingRight)+parseFloat(le.borderLeftWidth)+parseFloat(le.borderRightWidth);let et=we.reduce((Pe,sr)=>Pe+sr,0)+8*Math.max(0,we.length-1)+or;const tt=U.querySelector("[data-elm-search-toggle]");tt&&(et+=Jr-tt.offsetWidth);const rt=V?V.clientWidth-(parseFloat(V.dataset.elmClearance??"")||0):Y.clientWidth-32;Ge(rt>0&&et>rt+.5)};fe();const he=new ResizeObserver(()=>fe());return he.observe(Y),he.observe(U),()=>he.disconnect()},[p,K]);const ie=p||tr,_e=l.useRef(ie);_e.current=ie,l.useEffect(()=>{ie||ae(!1)},[ie]);const qe=l.useRef(null),He=ue();function Ve(){const U=qe.current;U&&(U.style.animation="none",U.offsetWidth,U.style.animation="press-pulse 200ms ease-out")}l.useEffect(()=>{function U(V){V.key==="f"&&(V.metaKey||V.ctrlKey)&&He(V)&&!$t(V)&&(_e.current?ae(!0):Ve())}return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[He]);const rr=a.position.startsWith("right")||a.position.endsWith("-right")?"left":"right";l.useEffect(()=>{if(!ve)return;requestAnimationFrame(()=>{var Y;return(Y=_.current)==null?void 0:Y.focus()});function U(Y){var oe,fe;!((oe=Oe.current)!=null&&oe.contains(Y.target))&&!((fe=$e.current)!=null&&fe.contains(Y.target))&&ae(!1)}function V(Y){Y.key==="Escape"&&ae(!1)}return document.addEventListener("mousedown",U),document.addEventListener("keydown",V),()=>{document.removeEventListener("mousedown",U),document.removeEventListener("keydown",V)}},[ve,_]);const Se=u==="place-point",ke=u==="draw-line",je=u==="draw-polygon",Ee=u==="draw-circle",Ce=u==="draw-rect",Ie=u==="draw-route",De=u==="draw-freehand",Ne=u==="pick-shape",Je=u==="measure",re=U=>(!I||I.includes(U))&&!b.includes(U),nr=null;function Xe(U){var V;if(U.key==="Tab"&&H>=0){U.preventDefault(),(V=de.current)==null||V.focusAdd(H);return}ee(U)}function Ze(U,V){var oe;const Y=((V+U)%w.length+w.length)%w.length;X(Y),(oe=de.current)==null||oe.focusAdd(Y)}return e.jsxs("div",{ref:K,"data-elm-search-open":z?"true":void 0,className:r?"select-none":te.clsx("absolute z-[500] flex gap-2 pointer-events-none select-none",g.className),style:r?void 0:g.style,children:[e.jsxs("div",{ref:ye,className:"relative w-fit max-w-full",children:[z&&!ie&&e.jsx(D.SearchDropdown,{ref:de,results:w,loading:O,error:q,onGo:R,onAdd:C?void 0:T,onAddShape:C?void 0:G,activeIndex:H,onHoverIndex:X,onNavigate:Ze,layout:"row",className:`absolute left-0 right-0 bg-elm-surface border border-elm-border rounded-elm shadow-elm z-50 overflow-hidden pointer-events-auto ${k?"bottom-full mb-2":"top-full mt-2"}`}),e.jsxs("div",{ref:We,className:te.clsx("flex gap-2 bg-elm-surface/95 backdrop-blur-md border border-(--elm-border,color-mix(in_oklab,var(--color-black)_10%,transparent)) dark:border-(--elm-border,color-mix(in_oklab,var(--color-white)_10%,transparent)) shadow-elm rounded-elm pointer-events-auto antialiased",p?"flex-col items-center p-[7px]":"flex-row flex-wrap justify-center items-center p-[7px]"),children:[C?null:e.jsxs(e.Fragment,{children:[re("point")&&e.jsx(D.ToolButton,{active:Se,disabled:!Se&&s,onClick:()=>A(Se?"none":"place-point"),label:"Point",shortcut:B("place-point").toUpperCase(),shortcutId:"place-point",children:e.jsx(F.MapPin,{size:24})}),re("line")&&e.jsx(D.ToolButton,{active:ke,disabled:!ke&&s,onClick:()=>A(ke?"none":"draw-line"),label:"Line",shortcut:B("draw-line").toUpperCase(),shortcutId:"draw-line",children:e.jsx(F.LineSegment,{size:24})}),re("polygon")&&e.jsx(D.ToolButton,{active:je,disabled:!je&&s,onClick:()=>A(je?"none":"draw-polygon"),label:"Area",shortcut:B("draw-polygon").toUpperCase(),shortcutId:"draw-polygon",children:e.jsx(F.Polygon,{size:24})}),re("route")&&e.jsx(D.ToolButton,{active:Ie,disabled:!Ie&&s,onClick:()=>A(Ie?"none":"draw-route"),label:"Route",shortcut:B("draw-route").toUpperCase(),shortcutId:"draw-route",children:e.jsx(F.Path,{size:24})}),re("circle")&&e.jsx(D.ToolButton,{active:Ee,disabled:!Ee&&s,onClick:()=>A(Ee?"none":"draw-circle"),label:"Circle",shortcut:B("draw-circle").toUpperCase(),shortcutId:"draw-circle",children:e.jsx(F.Circle,{size:24})}),re("rectangle")&&e.jsx(D.ToolButton,{active:Ce,disabled:!Ce&&s,onClick:()=>A(Ce?"none":"draw-rect"),label:"Rectangle",shortcut:B("draw-rect").toUpperCase(),shortcutId:"draw-rect",children:e.jsx(F.Rectangle,{size:24})}),re("freehand")&&e.jsx(D.ToolButton,{active:De,disabled:!De&&s,onClick:()=>A(De?"none":"draw-freehand"),label:"Freehand",shortcut:B("draw-freehand").toUpperCase(),shortcutId:"draw-freehand",children:e.jsx(F.ScribbleLoop,{size:24})}),re("picker")&&e.jsx(D.ToolButton,{active:Ne,disabled:!Ne&&s,onClick:()=>A(Ne?"none":"pick-shape"),label:"Picker",shortcut:B("picker").toUpperCase(),shortcutId:"picker",children:e.jsx(F.HandTap,{size:24})})]}),re("measure")&&e.jsxs(e.Fragment,{children:[!C&&e.jsx(D.ToolbarDivider$1,{vertical:p}),e.jsx(D.ToolButton,{active:Je,onClick:()=>N(Je?"none":"measure"),label:"Measure",shortcut:B("measure").toUpperCase(),shortcutId:"measure",children:e.jsx(F.Ruler,{size:24})}),ie&&re("search")&&e.jsx(D.ToolbarDivider$1,{vertical:p})]}),re("search")&&!ie&&e.jsxs("div",{className:"flex items-center gap-2 pl-2.5 pr-3 py-1.5 bg-(--elm-surface-sunken,var(--color-gray-100)) dark:bg-(--elm-surface-sunken,color-mix(in_oklab,var(--color-white)_7%,transparent)) hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-gray-200)_70%,transparent)) dark:hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-white)_10%,transparent)) rounded-elm-control transition-colors w-52 focus-within:ring-1 focus-within:ring-inset focus-within:ring-(--elm-border-strong,var(--color-gray-300)) dark:focus-within:ring-(--elm-border-strong,var(--color-gray-600))",children:[e.jsxs("div",{ref:qe,className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx(F.MagnifyingGlass,{size:14,className:"text-elm-text-subtle flex-shrink-0"}),e.jsx("input",{ref:_,type:"text",value:v,onChange:U=>j(U.target.value),onFocus:()=>{L(!0),Ve(),v.trim().length>=2&&P(!0)},onBlur:()=>L(!1),onKeyDown:Xe,placeholder:"Search places…",className:"bg-transparent text-sm text-elm-text-secondary placeholder-elm-text-muted outline-none w-full",autoComplete:"off"}),O&&e.jsx("div",{className:"w-3 h-3 border-2 border-(--elm-border-strong,var(--color-gray-300)) border-t-primary-500 rounded-full animate-spin flex-shrink-0"}),!O&&v&&e.jsx("button",{onClick:W,className:"p-1 -m-1 rounded-elm-chip text-elm-text hover:bg-(--elm-control-hover,var(--color-gray-200)) dark:hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-white)_15%,transparent)) transition-colors flex-shrink-0","aria-label":"Clear search",children:e.jsx(F.X,{size:12})})]}),!O&&!v&&e.jsxs("span",{className:te.clsx("flex items-center gap-0.5 flex-shrink-0 transition-all duration-110 ease-out",J?"opacity-0 scale-75 pointer-events-none":"opacity-100 scale-100"),children:[e.jsx(D.Kbd,{children:"⌘"}),e.jsx(D.Kbd,{children:"F"})]})]}),re("search")&&ie&&e.jsxs("div",{ref:$e,"data-elm-search-toggle":"",className:p?"relative":void 0,children:[e.jsx(D.ToolButton,{active:ve,onClick:()=>ae(U=>!U),label:"Search places",shortcut:"⌘F",children:e.jsx(F.MagnifyingGlass,{size:24})}),ve&&e.jsxs("div",{ref:Oe,className:te.clsx("absolute z-50 bg-elm-surface/97 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm pointer-events-auto antialiased flex flex-col",p?rr==="right"?"top-0 w-80 left-full ml-2":"top-0 w-80 right-full mr-2":`left-0 right-0 min-w-0 ${k?"bottom-full mb-2":"top-full mt-2"}`),children:[e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2",children:[e.jsx(F.MagnifyingGlass,{size:16,className:"text-elm-text-subtle flex-shrink-0"}),e.jsx("input",{ref:_,type:"text",value:v,onChange:U=>j(U.target.value),onFocus:()=>{L(!0),v.trim().length>=2&&P(!0)},onBlur:()=>L(!1),onKeyDown:Xe,placeholder:"Search places…",className:"bg-transparent text-sm text-elm-text-secondary placeholder-elm-text-muted outline-none w-full",autoComplete:"off"}),O&&e.jsx("div",{className:"w-3 h-3 border-2 border-(--elm-border-strong,var(--color-gray-300)) border-t-primary-500 rounded-full animate-spin flex-shrink-0"}),!O&&v&&e.jsx("button",{onClick:W,className:"p-1 -m-1 rounded-elm-chip text-elm-text hover:bg-(--elm-control-hover,var(--color-gray-200)) dark:hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-white)_15%,transparent)) transition-colors flex-shrink-0","aria-label":"Clear search",children:e.jsx(F.X,{size:12})})]}),z&&e.jsx(D.SearchDropdown,{ref:de,results:w,loading:O,error:q,onGo:U=>{R(U),ae(!1)},onAdd:C?void 0:U=>{T(U),ae(!1)},onAddShape:C?void 0:U=>{G(U),ae(!1)},activeIndex:H,onHoverIndex:X,onNavigate:Ze,className:"border-t border-elm-border max-h-80 overflow-y-auto"})]})]})]})]}),!C&&nr]})}function ct(r){const t=[],n=s=>{for(const o of Array.from(s.children)){if(getComputedStyle(o).display==="contents"){n(o);continue}const f=o.getBoundingClientRect();if(!f.width)continue;const a=f.top+f.height/2;t.some(p=>Math.abs(p-a)<8)||t.push(a)}};return n(r),t.length}function Yr(r,t){l.useLayoutEffect(()=>{const n=r.current;if(!n)return;const s=()=>{n.style.maxWidth="";const c=ct(n);if(c<2)return;let x=0,h=n.offsetWidth;for(;h-x>1;){const y=x+h>>1;n.style.maxWidth=y+"px",ct(n)>c||n.scrollWidth>n.clientWidth?x=y:h=y}n.style.maxWidth=h+"px"};s();const o=[];for(let c=n.parentElement;c&&o.length<8&&(o.push(c),!c.hasAttribute("data-elm-theme"));c=c.parentElement);const f=new WeakMap,a=()=>{for(const c of o)f.set(c,c.clientWidth)};a();const p=new ResizeObserver(c=>{c.every(x=>f.get(x.target)===x.target.clientWidth)||(s(),a())});for(const c of o)p.observe(c);return()=>{p.disconnect(),n.style.maxWidth=""}},[r,t])}const Qr=l.lazy(()=>Promise.resolve().then(()=>require("./BooleanOperations-DrQS-3mJ.cjs")));function en(){const{dataStore:r}=d.useGeoStore(),t=d.useUIStore(j=>j.readonly),n=d.useUIStore(j=>j.transformActive),s=d.useUIStore(j=>j.setTransformActive),o=d.useUIStore(j=>j.editingMode),f=d.useUIStore(j=>j.setEditingMode),a=d.useDataStore(j=>j.selectedIds),p=a.length===1?a[0]:null,c=d.useUIStore(j=>j.closeDialog),{getKey:x}=me(),h=d.useEmit(),y=d.useDataStore(j=>{if(!p)return null;const P=j.features.find(z=>z.id===p);return(P==null?void 0:P.geometry.type)??null}),m=l.useRef(null);if(Yr(m,`${t}|${a.length}|${y}`),t)return null;const S=p!==null||a.length>0,k=y==="Polygon"||y==="MultiPolygon",M=y==="MultiPoint"||y==="MultiPolygon"||y==="MultiLineString"||y==="GeometryCollection",E=a.length===1&&y==="Point",i=S&&!E,g=k,u=$.canProcessShape(y),I=M,b=a.length>=2,C=I||b;function N(){if(a.length!==0&&r.getState().duplicateSelection())if(a.length===1){const j=r.getState().features.find(P=>P.id===a[0]);h({type:"feature:duplicated",featureId:a[0],label:String((j==null?void 0:j.properties.name)||"feature")})}else h({type:"features:duplicated",count:a.length})}function A(){if(!p||!M)return;const j=r.getState().features.find(z=>z.id===p);if(!j)return;const P=$.getPartCount(j.geometry);r.getState().breakMultiGeometry(p)&&h({type:"feature:broken",featureId:p,count:P,undo:()=>r.getState().undo()})}function B(){a.length<2||(r.getState().mergeFeatures(),h({type:"success",message:`Merged ${a.length} features`}))}function v(){if(a.length===0)return;const j=a.length,P=j===1?r.getState().features.find(K=>K.id===a[0]):null,z=j===1?String((P==null?void 0:P.properties.name)||"Unnamed feature"):`${j} features`;r.getState().deleteSelection(),c(),h(j===1?{type:"feature:deleted",featureId:a[0],label:z,undo:()=>r.getState().undo()}:{type:"features:deleted",count:j,undo:()=>r.getState().undo()})}return e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3 max-w-full pointer-events-none",children:[S&&e.jsxs("div",{ref:m,className:"flex flex-wrap items-center justify-center gap-2 max-w-full bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-2 py-2 pointer-events-auto antialiased",children:[i&&e.jsx(D.EditToolbarBtn,{label:"Transform",shortcut:e.jsx(D.KbdDark,{children:x("toggle-transform").toUpperCase()}),shortcutId:"toggle-transform",onClick:()=>{s(!n),!n&&o!=="none"&&f("none")},active:n,children:e.jsx(F.Resize,{size:24})}),i&&(u||C)&&e.jsx(D.ToolbarDivider,{}),g&&e.jsxs(e.Fragment,{children:[e.jsx(D.EditToolbarBtn,{label:"Cut hole",shortcut:e.jsx(D.KbdDark,{children:x("cut-hole").toUpperCase()}),shortcutId:"cut-hole",onClick:()=>{f(o==="cut-hole"?"none":"cut-hole"),n&&s(!1)},active:o==="cut-hole",children:e.jsx(F.Scissors,{size:24})}),e.jsx(D.EditToolbarBtn,{label:"Slice shape",shortcut:e.jsx(D.KbdDark,{children:x("slice-shape").toUpperCase()}),shortcutId:"slice-shape",onClick:()=>{f(o==="slice-shape"?"none":"slice-shape"),n&&s(!1)},active:o==="slice-shape",children:e.jsx(F.Knife,{size:24})})]}),u&&e.jsxs(e.Fragment,{children:[e.jsx(D.EditToolbarBtn,{label:"Simplify shape",onClick:()=>{f(o==="simplify-shape"?"none":"simplify-shape"),n&&s(!1)},active:o==="simplify-shape",children:e.jsx("svg",{width:"24",height:"24",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:o==="simplify-shape"?1.5:1,strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polyline",{points:"2.5,8 5.25,3.5 8,8 10.75,12.5 13.5,8"})})}),e.jsx(D.EditToolbarBtn,{label:"Smooth shape",onClick:()=>{f(o==="smooth-shape"?"none":"smooth-shape"),n&&s(!1)},active:o==="smooth-shape",children:e.jsx(F.WaveSine,{size:24})}),e.jsx(D.EditToolbarBtn,{label:"Buffer",onClick:()=>{f(o==="buffer-shape"?"none":"buffer-shape"),n&&s(!1)},active:o==="buffer-shape",children:e.jsx(F.SquareLogo,{size:24})})]}),u&&C&&e.jsx(D.ToolbarDivider,{}),I&&e.jsx(D.EditToolbarBtn,{label:"Break apart",shortcut:e.jsx(D.KbdDark,{children:x("break-apart").toUpperCase()}),shortcutId:"break-apart",onClick:A,children:e.jsx(F.Shapes,{size:24})}),b&&e.jsx(D.EditToolbarBtn,{label:"Merge",onClick:B,children:e.jsx(F.StackPlus,{size:24})}),(i||u||C)&&e.jsx(D.ToolbarDivider,{}),e.jsx(D.EditToolbarBtn,{label:"Duplicate",shortcut:e.jsxs(e.Fragment,{children:[e.jsx(D.KbdDark,{children:"⌘"}),e.jsx(D.KbdDark,{children:"D"})]}),shortcutId:"duplicate",onClick:N,children:e.jsx(F.CopySimple,{size:24})}),e.jsx(D.EditToolbarBtn,{label:"Delete",shortcut:e.jsx(D.KbdDark,{children:Z.getFixedShortcutDisplay("delete-selected")}),shortcutId:"delete-selected",onClick:v,children:e.jsx(F.Trash,{size:24})})]}),a.length>=2&&e.jsx(l.Suspense,{fallback:null,children:e.jsx(Qr,{})})]})}const tn="calc(var(--elm-bottom-stack-offset, calc(var(--elm-table-offset, 0px) + var(--elm-bottom-toolbar-offset, 0px) + 16px)) + 58px)";function rn({mapContainer:r,count:t,onSimplify:n,onDelete:s}){const o=r.parentElement;return o?ft.createPortal(e.jsx("div",{className:"absolute left-0 right-0 z-[400] flex justify-center pointer-events-none",style:{bottom:tn},onMouseDown:f=>f.stopPropagation(),onContextMenu:f=>f.stopPropagation(),children:e.jsxs("div",{className:"flex items-center gap-2 bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-2 py-2 pointer-events-auto antialiased",children:[e.jsxs("span",{className:"px-1 text-sm text-elm-text-muted tabular-nums",children:[t," point",t!==1?"s":""," selected"]}),e.jsx(D.ToolbarDivider,{}),e.jsxs(D.EditToolbarBtn,{label:"Simplify selected points",onClick:n,disabled:t<3,children:[e.jsx(F.LineSegments,{size:24}),e.jsx("span",{className:"px-1 font-medium",children:"Simplify"})]}),e.jsxs(D.EditToolbarBtn,{label:"Delete selected points",onClick:s,children:[e.jsx(F.Trash,{size:24}),e.jsx("span",{className:"px-1 font-medium",children:"Delete"})]}),e.jsx(D.Kbd,{children:"Del"})]})}),o):null}const nn=e.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.2,strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polyline",{points:"2.5,8 5.25,3.5 8,8 10.75,12.5 13.5,8"})}),on=[{mode:"cut-hole",label:"Cut hole",icon:e.jsx(F.Scissors,{size:16}),shortcut:"cut-hole"},{mode:"slice-shape",label:"Slice shape",icon:e.jsx(F.Knife,{size:16}),shortcut:"slice-shape"}],sn=[{mode:"simplify-shape",label:"Simplify shape",icon:nn},{mode:"smooth-shape",label:"Smooth shape",icon:e.jsx(F.WaveSine,{size:16})},{mode:"buffer-shape",label:"Buffer",icon:e.jsx(F.SquareLogo,{size:16})}];function an({x:r,y:t,data:n,onClose:s}){const{feature:o,requestPreciseCoords:f}=n,{dataStore:a}=d.useGeoStore(),p=d.useUIStore(N=>N.readonly),c=d.useUIStore(N=>N.transformActive),x=d.useUIStore(N=>N.setTransformActive),h=d.useUIStore(N=>N.editingMode),y=d.useUIStore(N=>N.setEditingMode),m=d.useUIStore(N=>N.closeDialog),S=d.useDataStore(N=>N.selectedIds),k=d.useEmit(),{getKey:M}=me();if(p)return null;const E=o.geometry.type,i=E==="Polygon"||E==="MultiPolygon",g=E==="MultiPoint"||E==="MultiPolygon"||E==="MultiLineString"||E==="GeometryCollection",u=S.length>=2&&S.includes(o.id);function I(N){y(h===N?"none":N),c&&x(!1)}function b(N){return e.jsx(D.KbdDark,{children:M(N).toUpperCase()})}const C=[];if(C.push({label:"Transform",icon:e.jsx(F.Resize,{size:16}),shortcut:b("toggle-transform"),onClick:()=>{x(!c),!c&&h!=="none"&&y("none")}}),$.canProcessShape(E)){C.push({separator:!0});for(const N of[...i?on:[],...sn])C.push({label:N.label,icon:N.icon,shortcut:N.shortcut?b(N.shortcut):void 0,onClick:()=>I(N.mode)})}return i&&C.push({label:"Center point",icon:e.jsx(F.DotOutline,{size:16,weight:"fill"}),onClick:()=>{var v;const N=cr.centroid(o),A=typeof((v=o.properties)==null?void 0:v.name)=="string"&&o.properties.name?o.properties.name:null,B={type:"Feature",id:crypto.randomUUID(),geometry:{type:"Point",coordinates:N.geometry.coordinates},properties:A?{name:`${A} center`}:{},groupId:o.groupId};a.getState().addFeature(B)}}),(g||u)&&(C.push({separator:!0}),g&&C.push({label:"Break apart",icon:e.jsx(F.Shapes,{size:16}),shortcut:b("break-apart"),onClick:()=>{const N=$.getPartCount(o.geometry);a.getState().breakMultiGeometry(o.id)&&k({type:"feature:broken",featureId:o.id,count:N,undo:()=>a.getState().undo()})}}),u&&C.push({label:`Merge ${S.length} features`,icon:e.jsx(F.StackPlus,{size:16}),onClick:()=>{const N=S.length;a.getState().mergeFeatures(),k({type:"success",message:`Merged ${N} features`})}})),f&&(C.push({separator:!0}),C.push({label:"Precise coordinates…",icon:e.jsx(F.Crosshair,{size:16}),onClick:f})),C.push({separator:!0}),C.push({label:u?`Delete ${S.length} features`:"Delete",icon:e.jsx(F.Trash,{size:16}),shortcut:e.jsx(D.KbdDark,{children:Z.getFixedShortcutDisplay("delete-selected")}),onClick:()=>{var B;const N=u?S.length:1,A=String(((B=o.properties)==null?void 0:B.name)||"feature");a.getState().deleteSelection(),m(),k(N===1?{type:"feature:deleted",featureId:o.id,label:A,undo:()=>a.getState().undo()}:{type:"features:deleted",count:N,undo:()=>a.getState().undo()})}}),e.jsx(D.ContextMenu,{x:r,y:t,items:C,onClose:s})}function Gt({size:r,tooltipSide:t}){const n=d.useDataStore(f=>f.undoStack.length>0),s=d.useDataStore(f=>f.undo),o=d.useEmit();return e.jsx(pe,{label:"Undo",shortcutId:"undo",shortcut:e.jsxs("span",{className:"flex items-center gap-0.5",children:[e.jsx(D.KbdDark,{children:"⌘"}),e.jsx(D.KbdDark,{children:"Z"})]}),onClick:()=>{n&&(s(),o({type:"undo"}))},disabled:!n,size:r,tooltipSide:t,children:e.jsx(F.ArrowArcLeft,{size:24})})}function Wt({size:r,tooltipSide:t}){const n=d.useDataStore(f=>f.redoStack.length>0),s=d.useDataStore(f=>f.redo),o=d.useEmit();return e.jsx(pe,{label:"Redo",shortcutId:"redo",shortcut:e.jsxs("span",{className:"flex items-center gap-0.5",children:[e.jsx(D.KbdDark,{children:"⌘"}),e.jsx(D.KbdDark,{children:"⇧"}),e.jsx(D.KbdDark,{children:"Z"})]}),onClick:()=>{n&&(s(),o({type:"redo"}))},disabled:!n,size:r,tooltipSide:t,children:e.jsx(F.ArrowArcRight,{size:24})})}function _t({direction:r="horizontal",children:t}){return e.jsx("div",{"data-elm-group":"",className:`flex bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm pointer-events-auto antialiased items-center gap-1 px-2 py-1.5 ${r==="vertical"?"flex-col":"flex-row"}`,children:t})}function ln({direction:r="vertical"}){const t=r==="vertical"?"right":"top";return e.jsxs(_t,{direction:r,children:[e.jsx(Gt,{size:"group",tooltipSide:t}),e.jsx(Wt,{size:"group",tooltipSide:t})]})}const ut="h-8 px-3 rounded-elm-control text-sm flex items-center justify-center gap-1.5 active:scale-[0.95]",ce={before:"Undo last",key:"⌫",keyName:"Backspace"},cn={before:"Hold",key:"Shift",keyName:"Shift",after:"for a square"},un=r=>typeof r=="string"?r:`${r.before} ${r.keyName} ${r.after??""}`;function dn({parts:r}){return e.jsx("ul",{"data-elm-hint":!0,"aria-label":"Drawing hints",className:"flex flex-wrap items-center justify-center gap-x-4 gap-y-1 min-w-0 px-2 m-0 list-none text-sm text-elm-text-muted",children:r.map(t=>e.jsx("li",{className:"inline-flex items-center gap-1.5 whitespace-nowrap",children:typeof t=="string"?t:e.jsxs(e.Fragment,{children:[t.before,t.key===t.keyName?e.jsx(D.Kbd,{children:t.key}):e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"inline-flex",children:e.jsx(D.Kbd,{children:t.key})}),e.jsx("span",{className:"sr-only",children:t.keyName})]}),t.after]})},un(t)))})}function dt(){const r=l.useRef(null);return l.useLayoutEffect(()=>{const t=r.current,n=t==null?void 0:t.parentElement;if(!t||!n)return;const s=(a,p)=>{let c=a;for(;c&&getComputedStyle(c).display==="contents";)c=p==="first"?c.firstElementChild:c.lastElementChild;const x=(c??a).getBoundingClientRect();return x.top+x.height/2},o=()=>{t.style.display="";const a=t.previousElementSibling,p=t.nextElementSibling,c=s(t,"first");(!a||!p||Math.abs(s(a,"last")-c)>4||Math.abs(s(p,"first")-c)>4)&&(t.style.display="none")};o();const f=new ResizeObserver(o);f.observe(n);for(const a of Array.from(n.children))a!==t&&f.observe(a);return()=>f.disconnect()}),e.jsx("span",{ref:r,"aria-hidden":"true",className:"flex",children:e.jsx(D.ToolbarDivider,{})})}function fn(){const{ui:r}=Q.useElementEditorConfig(),t=d.useUIStore(w=>w.editingMode),n=d.useUIStore(w=>w.lineInProgress),s=d.useUIStore(w=>w.polygonInProgress),o=d.useUIStore(w=>w.routeWaypoints),f=d.useUIStore(w=>w.routeLoading),a=d.useUIStore(w=>w.commitLine),p=d.useUIStore(w=>w.commitPolygon),c=d.useUIStore(w=>w.commitRoute),x=d.useUIStore(w=>w.commitSliceShape),h=d.useUIStore(w=>w.commitCutHole),y=d.useUIStore(w=>w.cancelDrawing),m=d.useUIStore(w=>w.circleCenter),S=d.useUIStore(w=>w.rectCorner),k=d.useUIStore(w=>w.freehandPoints),M=d.useUIStore(w=>w.freehandClosed),E=d.useUIStore(w=>w.setFreehandClosed),i=d.useUIStore(w=>w.measurePoints),g=d.useUIStore(w=>w.measureMode),u=d.useUIStore(w=>w.setMeasureMode),I=t==="draw-line"||t==="slice-shape",b=t==="draw-polygon"||t==="cut-hole",C=t==="draw-route",N=t==="draw-circle",A=t==="draw-rect",B=t==="draw-freehand",v=t==="place-point",j=t==="measure",P=t==="pick-shape";if(!(I||b||C||N||A||B||v)&&!j&&!P)return null;const K=n.length>0||s.length>0||!!m||!!S||o.length>0||k.length>0||i.length>0;function _(){if(t==="slice-shape"){if(n.length<2)return;x()}else if(t==="cut-hole"){if(s.length<3)return;h()}else if(I){if(n.length<2)return;a({})}else if(b){if(s.length<3)return;p({})}else if(C){if(o.length<2)return;c()}}const J=I?n.length>=2:b?s.length>=3:C?o.length>=2&&!f:!1,L=v?["Click to place a point"]:t==="draw-line"?n.length===0?["Click to place the first point"]:["Click to add points","Double-click to finish",ce]:t==="draw-polygon"?s.length===0?["Click to place the first point"]:s.length<3?["Click to continue",ce]:["Click to add points","Double-click to close",ce]:C?o.length===0?["Click to place the first waypoint"]:["Click to add waypoints",ce]:N?["Click and drag to size"]:A?["Click and drag to size",cn]:B?["Click and drag to draw"]:t==="slice-shape"?n.length===0?["Draw a line across the shape to slice it"]:["Click to add points","Double-click to cut",ce]:t==="cut-hole"?s.length===0?["Draw a shape inside to cut a hole"]:s.length<3?["Click to continue",ce]:["Click to add points","Double-click to cut",ce]:j?i.length===0?["Click to start measuring"]:["Click to add points","Double-click to finish",ce]:P?["Click anywhere to import a shape from the map"]:null;return e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-full bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-2 py-2 pointer-events-auto",children:[j&&e.jsxs(e.Fragment,{children:[e.jsx(D.EditToolbarBtn,{active:g==="distance",onClick:()=>u("distance"),label:"Measure distance",children:e.jsx(F.ArrowsHorizontal,{size:24})}),e.jsx(D.EditToolbarBtn,{active:g==="area",onClick:()=>u("area"),label:"Measure area",children:e.jsx(F.Hexagon,{size:24})})]}),t==="draw-freehand"&&e.jsx(D.EditToolbarBtn,{active:M,onClick:()=>E(!M),label:"Closed shape",children:e.jsx(F.CircleHalfTilt,{size:24,weight:M?"fill":"regular"})}),(j||t==="draw-freehand")&&e.jsx(dt,{}),r.hints&&L&&e.jsx(dn,{parts:L}),r.hints&&L&&e.jsx(dt,{}),J&&e.jsxs("button",{type:"button",onClick:_,className:`${ut} shadow-sm bg-primary-500 text-white hover:bg-primary-600`,children:[C?"Save route":t==="slice-shape"?"Slice":t==="cut-hole"?"Cut":"Finish",e.jsx(D.KbdInvert,{children:"↵"})]}),e.jsxs("button",{type:"button",onClick:y,className:`${ut} text-(--elm-text-muted,var(--color-gray-600)) dark:text-(--elm-text-muted,var(--color-gray-400)) hover:bg-elm-control-hover`,children:[K?"Cancel":"Exit",e.jsx(D.Kbd,{children:"Esc"})]})]})}function mn({size:r,tooltipSide:t}={}){const{fitBounds:n}=d.useMapController(),s=d.useEmit(),o=d.useDataStore(p=>p.features),f=d.useDataStore(p=>p.selectedIds);function a(){if(!n)return;let p=o;if(f.length>0){const c=new Set(f);p=o.filter(x=>c.has(x.id))}if(p.length===0){s({type:"warning",message:"No features on the map to zoom to"});return}try{if(p.length===1){const h=p[0];n(h.bbox||Z.getGeometryBBox(h.geometry));return}const c=ur.featureCollection(p),x=mt.bbox(c);n(x)}catch(c){s({type:"error",code:"geometry",source:"editor",message:"Failed to calculate map bounds",cause:c})}}return e.jsx(pe,{label:"Fit map to features",tooltipContent:f.length>0?"Zoom to selection":"Zoom to all features",onClick:a,size:r,tooltipSide:t,children:e.jsx(F.CornersOut,{size:24})})}const pn="flex items-center justify-center h-6 min-w-6 px-1.5 rounded-elm-control bg-transparent border border-transparent text-elm-text font-elm-mono text-xs tabular-nums select-none transition-colors focus-visible:ring-2 focus-visible:ring-elm-focus-ring",hn="flex items-center justify-center h-8 min-w-8 px-1 rounded-elm-control bg-transparent border border-transparent text-elm-text font-elm-mono text-sm tabular-nums select-none transition-colors",gn="flex items-center justify-center w-12 h-12 bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm-control rounded-elm text-elm-text font-elm-mono text-sm select-none transition-colors";function xn({minZoom:r=1,maxZoom:t=22,fractional:n=!1,size:s="md",tooltipSide:o="top"}){const f=d.useDataStore(I=>I.currentZoom),{flyTo:a,getCenter:p}=d.useMapController(),c=d.useEmit(),x=!!a&&!!p,h=d.useUIStore(I=>I.zoomEditing),y=d.useUIStore(I=>I.setZoomEditing),[m,S]=l.useState(null),k=l.useRef(null),M=l.useRef(!1),{getKey:E}=me(),i=s==="sm"?pn:s==="group"?hn:gn,g=s!=="md";l.useEffect(()=>{m!==null&&(n?Math.abs(f-m)<.05:Math.round(f)===Math.round(m))&&S(null)},[f,m,n]);function u(){var N;const I=(((N=k.current)==null?void 0:N.value)??"").trim();if(I===""){y(!1);return}const b=Number(I);if(!Number.isFinite(b)){c({type:"warning",message:`"${I}" is not a valid zoom level`});return}if(b<r||b>t){c({type:"warning",message:`Zoom must be between ${r} and ${t}`});return}if(!a||!p){c({type:"warning",message:"Map is not ready yet — try again in a moment"});return}const C=p();S(b),a([C[1],C[0]],b),y(!1)}if(h){const I=n?(m??f).toFixed(1):String(Math.round(m??f));return e.jsx("input",{ref:k,type:"text",inputMode:n?"decimal":"numeric",pattern:n?"[0-9.]*":"[0-9]*",autoFocus:!0,defaultValue:I,onFocus:b=>{const C=b.currentTarget;M.current?C.setSelectionRange(C.value.length,C.value.length):C.select(),M.current=!1},onKeyDown:b=>{b.key==="Enter"?(b.preventDefault(),u()):b.key==="Escape"&&(b.preventDefault(),y(!1))},onBlur:()=>y(!1),"aria-label":"Zoom level",className:`${i.replace(" select-none","")} text-center focus:outline-none focus:border-elm-focus-ring${g?" w-10 !bg-elm-surface":""}`})}return e.jsx(D.Tooltip,{content:x?"Set zoom level":"Map zoom level",side:o,shortcut:x?e.jsx(D.KbdDark,{children:E("set-zoom").toUpperCase()}):void 0,children:e.jsx("button",{type:"button","aria-label":x?"Set map zoom level":"Map zoom level","data-elm-shortcut":"set-zoom",onClick:()=>{x&&(M.current=!0,y(!0))},disabled:!x,className:`${i} ${x?`${g?"hover:bg-(--elm-control-hover,color-mix(in_oklab,var(--color-gray-200)_70%,transparent)) dark:hover:bg-(--elm-control-hover,var(--color-gray-800))":"hover:bg-elm-surface-hover"} focus:outline-none focus-visible:ring-2 focus-visible:ring-elm-focus-ring cursor-pointer`:"cursor-default"}`,children:n?(m??f).toFixed(1):Math.round(m??f)})})}function yn({zoom:r=15,size:t,tooltipSide:n}){const{flyTo:s}=d.useMapController(),o=d.useEmit(),[f,a]=l.useState(!1);function p(){if(!navigator.geolocation){o({type:"error",code:"unsupported",source:"locate",message:"Geolocation is not supported by this browser"});return}if(!s){o({type:"warning",message:"Map is not ready yet — try again in a moment"});return}f||(a(!0),navigator.geolocation.getCurrentPosition(c=>{a(!1),s([c.coords.latitude,c.coords.longitude],r)},c=>{a(!1),o({type:"error",code:c.code===c.PERMISSION_DENIED?"permission-denied":c.code===c.TIMEOUT?"timeout":"unknown",source:"locate",cause:c,message:c.code===c.PERMISSION_DENIED?"Location access denied":"Could not determine your location"})},{timeout:1e4}))}return e.jsx(pe,{label:f?"Locating…":"Show my location",onClick:p,size:t,tooltipSide:n,children:f?e.jsx("div",{className:`${t==="sm"?"w-3.5 h-3.5":"w-5 h-5"} border-2 border-current/25 border-t-current rounded-full animate-spin`,"aria-hidden":!0}):e.jsx(F.NavigationArrow,{size:24})})}function bn(){return d.useUIStore(t=>t.readonly)?e.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm text-sm text-(--elm-text-secondary,var(--color-gray-600)) dark:text-(--elm-text-secondary,var(--color-gray-300)) pointer-events-auto antialiased select-none",children:[e.jsx(F.Eye,{size:20,weight:"duotone",className:"text-elm-text-muted"}),e.jsx("span",{children:"View-only mode"})]}):null}const vn=3e4;let ne=null;const be=new Map;function Le(r,t){ne==null||ne.terminate(),ne=null;const n=[...be.values()];be.clear();for(const s of n)clearTimeout(s.timer),s.reject(new Z.ElementEditorError(t,"geometry",r))}async function wn(){if(ne)return ne;const{default:r}=await Promise.resolve().then(()=>require("./geometryWorker-CCwg4tNC.cjs"));return ne||(ne=new r,ne.onmessage=t=>{const{id:n,ok:s,result:o,error:f}=t.data,a=be.get(n);if(a){if(be.delete(n),clearTimeout(a.timer),s&&(o!=null&&o.geometry)){a.resolve(o.geometry);return}a.reject(new Z.ElementEditorError("geometry","geometry",(f==null?void 0:f.message)||"Geometry operation failed"))}},ne.onerror=()=>Le("Geometry worker failed","geometry"),ne)}function ze(r,{timeoutMs:t=vn}={}){return wn().then(n=>new Promise((s,o)=>{const f=crypto.randomUUID(),a=setTimeout(()=>{Le(`Geometry operation timed out after ${t} ms`,"timeout")},t);be.set(f,{resolve:s,reject:o,timer:a});const p={id:f,payload:r};n.postMessage(p)}))}typeof Worker<"u"&&$.setGeometryRunner(ze);function Sn(){Le("Geometry worker disposed","unknown")}function Be(r,t){var p;const n=(p=l.useContext(d.EventContext))==null?void 0:p.emit,s=l.useRef(n);s.current=n;const o=l.useRef({seq:0,epoch:0,busy:!1,queued:null,owned:!1,onSettled:null,alive:!0}).current,f=l.useCallback(()=>{const c=o.onSettled;o.onSettled=null,c==null||c()},[o]),a=l.useCallback(c=>{const x=++o.seq,h=o.epoch;o.busy=!0,ze(c).then(y=>y,y=>{var m;return o.alive&&h===o.epoch&&((m=s.current)==null||m.call(s,{type:"error",code:y instanceof Z.ElementEditorError?y.code:"geometry",source:"geometry",message:`The ${c.type} preview failed: ${y instanceof Error?y.message:String(y)}`,cause:y,quiet:!0})),null}).then(y=>{if(o.busy=!1,!o.alive||h!==o.epoch){if(o.queued){const k=o.queued;o.queued=null,a(k)}return}const m=o.queued;o.queued=null;const S=x===o.seq;(S||m&&m.geometry===c.geometry)&&(o.owned=!0,t(y)),m?a(m):S&&f()})},[o,t,f]);return l.useEffect(()=>{if(!r){o.epoch++,o.queued=null,o.onSettled=null,o.owned&&(o.owned=!1,t(null));return}if(o.busy){o.queued=r,o.seq++;return}a(r)},[r,o,a,t]),l.useEffect(()=>(o.alive=!0,()=>{o.alive=!1,o.queued=null,o.onSettled=null}),[o]),l.useCallback(c=>{!o.busy&&!o.queued?c():o.onSettled=c},[o])}const kn=111320;function jn(r,t){const n=r*kn;if(n<1)return`<1${Z.formatLength(1,t).unit}`;const s=Z.formatLength(n,t);return`~${s.value}${s.unit}`}function En(){const r=d.useUIStore(b=>b.editingMode),t=d.useUIStore(b=>b.simplifyTolerance),n=d.useUIStore(b=>b.setSimplifyTolerance),s=d.useUIStore(b=>b.setGeometryPreview),o=d.useUIStore(b=>b.geometryPreview),f=d.useUIStore(b=>b.commitGeometryProcess),a=d.useUIStore(b=>b.cancelGeometryProcess),{units:p}=Q.useElementEditorConfig(),c={unit:p.length,display:p.display,precision:p.precision},{dataStore:x}=d.useGeoStore(),h=ue(),y=d.useDataStore(b=>b.selectedIds[0]??null),m=d.useDataStore(b=>{var C;return y?((C=b.features.find(N=>N.id===y))==null?void 0:C.geometry)??null:null}),S=d.useDataStore(b=>{var C;return y?((C=b.features.find(N=>N.id===y))==null?void 0:C._drawType)??null:null}),k=l.useMemo(()=>{if(!m||r!=="simplify-shape")return 0;try{const b=mt.bbox({type:"Feature",geometry:m,properties:{}}),C=Math.sqrt((b[2]-b[0])**2+(b[3]-b[1])**2);return(t/100)**2*C*.3}catch{return 0}},[t,m,r]),M=r==="simplify-shape",E=l.useMemo(()=>!M||!m||!$.canProcessShape(m.type)?null:{type:"simplify",geometry:m,tolerance:k},[M,m,k]),i=Be(E,s);l.useEffect(()=>()=>{x.getState(),s(null)},[s,x]);const g=m?$.countShapeVertices(m):0,u=o?$.countShapeVertices(o):g,I=g-u;return l.useEffect(()=>{if(r!=="simplify-shape")return;function b(C){h(C)&&(C.key==="Enter"&&o&&I>0?(C.preventDefault(),i(f)):C.key==="Escape"&&(C.preventDefault(),a()))}return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[r,o,I,f,a,i,h]),r!=="simplify-shape"?null:e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3 max-w-full bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-3 py-1.5 pointer-events-auto",children:[e.jsx("span",{className:"text-sm font-medium text-elm-text-secondary shrink-0",children:"Simplify"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"range",min:0,max:100,value:t,onChange:b=>n(Number(b.target.value)),className:"w-32 accent-primary-600"}),e.jsx("span",{className:"text-sm text-elm-text-muted w-16 shrink-0",children:jn(k,c)})]}),e.jsxs("div",{className:"flex items-center gap-1 text-sm text-elm-text-muted shrink-0",children:[e.jsx("span",{className:"font-elm-mono",children:g}),e.jsx("span",{children:"→"}),e.jsx("span",{className:`font-elm-mono font-medium ${I>0?"text-primary-600 dark:text-primary-400":"text-(--elm-text-secondary,var(--color-gray-600)) dark:text-(--elm-text-secondary,var(--color-gray-300))"}`,children:u}),I>0&&e.jsxs("span",{className:"text-xs text-primary-500",children:["(−",I,")"]}),e.jsx("span",{className:"ml-0.5",children:"points"})]}),S&&e.jsx("span",{className:"text-xs text-amber-600 dark:text-amber-400 shrink-0",children:S==="route"?"Turns this route into a plain line.":`Turns this ${S} into a plain shape.`}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(D.Button,{variant:"ghost",onClick:a,className:"rounded-elm-control h-8 px-3 text-sm",children:"Cancel"}),e.jsx(D.Button,{variant:"primary",onClick:()=>i(f),disabled:!o||I===0,className:"rounded-elm-control h-8 px-3 text-sm",children:"Apply"})]})]})}function Cn(){const r=d.useUIStore(g=>g.editingMode),t=d.useUIStore(g=>g.smoothIterations),n=d.useUIStore(g=>g.setSmoothIterations),s=d.useUIStore(g=>g.setGeometryPreview),o=d.useUIStore(g=>g.geometryPreview),f=d.useUIStore(g=>g.commitGeometryProcess),a=d.useUIStore(g=>g.cancelGeometryProcess),{dataStore:p}=d.useGeoStore(),c=ue(),x=d.useDataStore(g=>g.selectedIds[0]??null),h=d.useDataStore(g=>{var u;return x?((u=g.features.find(I=>I.id===x))==null?void 0:u.geometry)??null:null}),y=d.useDataStore(g=>{var u;return x?((u=g.features.find(I=>I.id===x))==null?void 0:u._drawType)??null:null}),m=r==="smooth-shape",S=l.useMemo(()=>!m||!h||!$.canProcessShape(h.type)?null:{type:"smooth",geometry:h,iterations:t},[m,h,t]),k=Be(S,s);l.useEffect(()=>()=>{p.getState(),s(null)},[s,p]);const M=h?$.countShapeVertices(h):0,E=o?$.countShapeVertices(o):M,i=E-M;return l.useEffect(()=>{if(r!=="smooth-shape")return;function g(u){c(u)&&(u.key==="Enter"&&o?(u.preventDefault(),k(f)):u.key==="Escape"&&(u.preventDefault(),a()))}return window.addEventListener("keydown",g),()=>window.removeEventListener("keydown",g)},[r,o,f,a,k,c]),r!=="smooth-shape"?null:e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3 max-w-full bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-3 py-1.5 pointer-events-auto",children:[e.jsx("span",{className:"text-sm font-medium text-elm-text-secondary shrink-0",children:"Smooth"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"range",min:1,max:5,step:1,value:t,onChange:g=>n(Number(g.target.value)),className:"w-24 accent-primary-600"}),e.jsxs("span",{className:"text-sm text-elm-text-muted w-16 shrink-0",children:[t," ",t===1?"pass":"passes"]})]}),e.jsxs("div",{className:"flex items-center gap-1 text-sm text-elm-text-muted shrink-0",children:[e.jsx("span",{className:"font-elm-mono",children:M}),e.jsx("span",{children:"→"}),e.jsx("span",{className:"font-elm-mono font-medium text-primary-600 dark:text-primary-400",children:E}),i>0&&e.jsxs("span",{className:"text-xs text-primary-500",children:["(+",i,")"]}),e.jsx("span",{className:"ml-0.5",children:"points"})]}),y&&e.jsx("span",{className:"text-xs text-amber-600 dark:text-amber-400 shrink-0",children:y==="route"?"Turns this route into a plain line.":`Turns this ${y} into a plain shape.`}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(D.Button,{variant:"ghost",onClick:a,className:"rounded-elm-control h-8 px-3 text-sm",children:"Cancel"}),e.jsx(D.Button,{variant:"primary",onClick:()=>k(f),disabled:!o,className:"rounded-elm-control h-8 px-3 text-sm",children:"Apply"})]})]})}const Ke=.3048,In=5280,qt=Ke*In;function Dn(r,t){switch(t){case"m":return r;case"km":return r*1e3;case"ft":return r*Ke;case"mi":return r*qt}}function Nn(r,t){switch(t){case"m":return r;case"km":return r/1e3;case"ft":return r/Ke;case"mi":return r/qt}}function Pn(){const{dataStore:r}=d.useGeoStore(),t=ue(),n=d.useUIStore(P=>P.editingMode),s=d.useUIStore(P=>P.bufferDistance),o=d.useUIStore(P=>P.setBufferDistance),f=d.useUIStore(P=>P.bufferCreateNew),a=d.useUIStore(P=>P.setBufferCreateNew),p=d.useUIStore(P=>P.setGeometryPreview),c=d.useUIStore(P=>P.geometryPreview),x=d.useUIStore(P=>P.commitBufferProcess),h=d.useUIStore(P=>P.cancelBufferProcess),{units:y}=Q.useElementEditorConfig(),m=$.resolveUnitSystem(y.length),S=l.useMemo(()=>m==="imperial"?["ft","mi"]:["m","km"],[m]),[k,M]=l.useState(!1),E=k?S[1]:S[0],[i,g]=l.useState(null);l.useEffect(()=>{var K;if(n!=="buffer-shape"){g(null);return}const P=r.getState().selectedIds[0]??null;if(!P)return;const z=((K=r.getState().features.find(_=>_.id===P))==null?void 0:K.geometry)??null;z&&$.canProcessShape(z.type)&&g(z)},[n,r]);const u=$.isLineGeometryType(i==null?void 0:i.type),I=l.useMemo(()=>i&&!(u&&s<=0)?{type:"buffer",geometry:i,distance:s}:null,[i,s,u]),b=Be(I,p);l.useEffect(()=>()=>{p(null)},[p]),l.useEffect(()=>{if(n!=="buffer-shape")return;function P(z){t(z)&&(z.key==="Enter"&&c?(z.preventDefault(),b(x)):z.key==="Escape"&&(z.preventDefault(),h()))}return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[n,c,x,h,b,t]);const C=E==="km"||E==="mi",N=Nn(s,E),A=C?Number(N.toFixed(2)):Math.round(N),B=C?.1:1;function v(P){const z=parseFloat(P);isNaN(z)||o(Math.round(Dn(z,E)))}function j(){M(P=>!P)}return n!=="buffer-shape"?null:e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3 max-w-full bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm px-3 py-1.5 pointer-events-auto",children:[e.jsx("span",{className:"text-sm font-medium text-elm-text-secondary shrink-0",children:"Buffer"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("input",{type:"range",min:u?0:-500,max:2e3,step:1,value:s,onChange:P=>o(Number(P.target.value)),className:"w-28 accent-primary-600"}),e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("input",{type:"number",value:A,step:B,onChange:P=>v(P.target.value),className:"w-16 text-sm text-right bg-transparent border border-elm-border rounded-elm-control px-1.5 py-0.5 text-elm-text-secondary focus:outline-none focus:border-primary-500"}),e.jsx("button",{onClick:j,className:"text-xs text-primary-600 dark:text-primary-400 hover:bg-(--elm-surface-hover,var(--color-gray-100)) dark:hover:bg-(--elm-surface-hover,var(--color-gray-700)) font-medium px-1.5 py-0.5 rounded-elm-control shrink-0 transition-colors",children:E})]})]}),e.jsxs("label",{className:"flex items-center gap-1.5 cursor-pointer shrink-0 select-none",children:[e.jsx("span",{className:"text-sm text-(--elm-text-muted,var(--color-gray-600)) dark:text-(--elm-text-muted,var(--color-gray-400))",children:"New shape"}),e.jsx("div",{role:"checkbox","aria-checked":f,onClick:()=>a(!f),className:`relative w-8 h-4 rounded-full transition-colors cursor-pointer ${f?"bg-primary-500 dark:bg-primary-600":"bg-elm-border"}`,children:e.jsx("span",{className:`absolute top-0.5 w-3 h-3 bg-white rounded-full shadow-sm transition-transform ${f?"translate-x-4":"translate-x-0.5"}`})})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(D.Button,{variant:"ghost",onClick:h,className:"rounded-elm-control h-8 px-3 text-sm",children:"Cancel"}),e.jsx(D.Button,{variant:"primary",onClick:()=>b(x),disabled:!c,className:"rounded-elm-control h-8 px-3 text-sm",children:"Apply"})]})]})}const Tn=8,Mn={ArrowLeft:-1,ArrowRight:1,ArrowUp:-3,ArrowDown:3};function Un({options:r,value:t,onChange:n,label:s="Basemap",size:o,tooltipSide:f}){const[a,p]=l.useState(!1),[c,x]=l.useState(null),[h,y]=l.useState(!1),m=l.useRef(null),S=l.useRef(null),k=l.useId(),M=Q.useAccentStyle(),E=c!==null;l.useLayoutEffect(()=>{var B,v;const u=(v=(B=m.current)==null?void 0:B.querySelector("button"))==null?void 0:v.getBoundingClientRect(),I=S.current;if(!a||!u||!I)return;const{width:b,height:C}=I.getBoundingClientRect(),N=u.top+u.height/2>window.innerHeight/2,A=u.left+u.width/2>window.innerWidth/2;x($.placeBox(A?u.right:u.left,N?u.top:u.bottom,b,C,{x:A?"before":"after",y:N?"before":"after",gapY:Tn}))},[a,r.length]),l.useEffect(()=>{var I;if(!a||!E)return;const u=S.current;(I=(u==null?void 0:u.querySelector('[aria-pressed="true"]'))??(u==null?void 0:u.querySelector("button")))==null||I.focus()},[a,E]),l.useEffect(()=>{if(!a)return;const u=I=>{var b,C,N;I.key==="Escape"&&(I.stopImmediatePropagation(),I.preventDefault(),(b=S.current)!=null&&b.contains(document.activeElement)&&((N=(C=m.current)==null?void 0:C.querySelector("button"))==null||N.focus()),p(!1))};return window.addEventListener("keydown",u,{capture:!0}),()=>window.removeEventListener("keydown",u,{capture:!0})},[a]);const i=u=>{const I=Mn[u.key];if(!I)return;const b=Array.from(u.currentTarget.querySelectorAll("button")),C=b[b.indexOf(document.activeElement)+I];C&&(u.preventDefault(),C.focus())},g=()=>{var u,I;x(null),y(((I=(u=m.current)==null?void 0:u.closest("[data-elm-theme]"))==null?void 0:I.getAttribute("data-elm-theme"))==="dark"),p(b=>!b)};return e.jsxs("div",{ref:m,className:"contents",children:[e.jsx(pe,{label:s,onClick:g,active:a,expanded:a,controls:a?k:void 0,size:o,tooltipSide:f,children:e.jsx(F.StackSimple,{size:24})}),a&&ft.createPortal(e.jsx("div",{"data-elm-portal":!0,"data-elm-theme":h?"dark":"light",style:M,[D.CONTEXT_MENU_MARKER_ATTR]:"",children:e.jsx("div",{ref:S,id:k,role:"group","aria-label":s,className:"fixed z-[9999] w-80 max-h-[70vh] flex flex-col bg-elm-surface/95 backdrop-blur-md border border-elm-border/80 shadow-elm rounded-elm antialiased",style:{left:(c==null?void 0:c.left)??0,top:(c==null?void 0:c.top)??0,visibility:c?void 0:"hidden"},children:e.jsx("div",{className:"grid grid-cols-3 gap-2 p-2 overflow-y-auto",onKeyDown:i,children:r.map(u=>{const I=u.id===t;return e.jsxs("button",{type:"button","aria-pressed":I,"aria-label":u.label,onClick:()=>n(u.id),className:`flex flex-col rounded-elm-card border transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/60 ${I?"border-primary-500 ring-2 ring-primary-400/40 bg-primary-50 hover:bg-primary-100 dark:bg-primary-950/40 dark:hover:bg-primary-950/60":"border-elm-border hover:border-(--elm-border-strong,var(--color-gray-400)) dark:hover:border-(--elm-border-strong,var(--color-gray-500)) bg-elm-surface hover:bg-elm-surface-hover"}`,children:[Array.isArray(u.thumbnail)?e.jsx("div",{className:"w-full h-12 flex rounded-t-elm-card overflow-hidden",children:u.thumbnail.map(b=>e.jsx("img",{src:b,alt:"",className:"w-1/2 h-full object-cover",loading:"lazy",draggable:!1},b))}):u.thumbnail?e.jsx("img",{src:u.thumbnail,alt:"",className:"w-full h-12 object-cover rounded-t-elm-card",loading:"lazy",draggable:!1}):e.jsx("div",{className:"w-full h-12 rounded-t-elm-card bg-elm-surface-hover flex items-center justify-center text-elm-text-subtle",children:e.jsx(F.StackSimple,{size:20})}),e.jsx("div",{className:`text-[11px] leading-4 tracking-tight text-center px-0.5 py-1 truncate font-medium ${I?"text-primary-700 dark:text-primary-300":"text-(--elm-text-secondary,var(--color-gray-700)) dark:text-(--elm-text-secondary,var(--color-gray-200))"}`,children:u.label})]},u.id)})})})}),document.body)]})}function Fn(r,t){const n=l.useRef(t);n.current=t,l.useEffect(()=>Z.subscribeToDataChanges(r,()=>n.current),[r])}const Rn=(r,t)=>Object.keys(r).every(n=>r[n]===t[n]);function An(r){const[t,n]=l.useState(()=>Z.readAccentPalette(r));return l.useEffect(()=>{const s=()=>{const p=Z.readAccentPalette(r);n(c=>Rn(c,p)?c:p)};let o=0;const f=()=>{o||(o=requestAnimationFrame(()=>{o=0,s()}))};s();const a=Q.watchThemeInputs((r==null?void 0:r.closest("[data-elm-theme]"))??null,f);return()=>{a(),cancelAnimationFrame(o)}},[r]),t}const Ln=[".geojson",".json","application/geo+json","application/json"];function zn(r,t){const n=r.name.toLowerCase();for(const s of t){const o=s.toLowerCase();if(o.startsWith(".")){if(n.endsWith(o))return!0}else if(o.endsWith("/*")){const f=o.slice(0,-1);if(r.type.toLowerCase().startsWith(f))return!0}else if(r.type.toLowerCase()===o)return!0}return!1}function Bn(r){const{onImport:t,onError:n,maxBytes:s=Z.DEFAULT_MAX_IMPORT_BYTES,accept:o=Ln,disabled:f=!1}=r,[a,p]=l.useState(!1),[c,x]=l.useState(!1),h=l.useRef(0),y=l.useRef(null),m=l.useRef(!0),S=l.useRef(t),k=l.useRef(n);l.useEffect(()=>{S.current=t},[t]),l.useEffect(()=>{k.current=n},[n]),l.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]);const M=l.useMemo(()=>o.join(","),[o]),E=l.useCallback(async v=>{var j,P,z,K;if(!zn(v,o)){(j=k.current)==null||j.call(k,{kind:"wrong-type",file:v});return}if(v.size>s){(P=k.current)==null||P.call(k,{kind:"too-large",bytes:v.size,maxBytes:s});return}x(!0);try{const _=await v.text();if(!m.current)return;const J=Z.parseGeoJSONText(_,{maxBytes:s});if(!m.current)return;if(!J.ok){(z=k.current)==null||z.call(k,J.error);return}S.current(J.fc,v)}catch(_){if(!m.current)return;(K=k.current)==null||K.call(k,{kind:"invalid-json",cause:_ instanceof Error?_:new Error(String(_))})}finally{m.current&&x(!1)}},[o,s]),i=l.useCallback(v=>{var j,P;f||(P=(j=v.dataTransfer)==null?void 0:j.types)!=null&&P.includes("Files")&&(v.preventDefault(),v.stopPropagation(),h.current+=1,p(!0))},[f]),g=l.useCallback(v=>{var j,P;f||(P=(j=v.dataTransfer)==null?void 0:j.types)!=null&&P.includes("Files")&&(v.preventDefault(),v.stopPropagation(),v.dataTransfer.dropEffect="copy")},[f]),u=l.useCallback(v=>{f||(v.preventDefault(),v.stopPropagation(),h.current=Math.max(0,h.current-1),h.current===0&&p(!1))},[f]),I=l.useCallback(v=>{var P,z;if(f)return;v.preventDefault(),v.stopPropagation(),h.current=0,p(!1);const j=(z=(P=v.dataTransfer)==null?void 0:P.files)==null?void 0:z[0];j&&E(j)},[f,E]),b=l.useCallback(v=>{var P;if(f)return;const j=(P=v.target.files)==null?void 0:P[0];v.target.value="",j&&E(j)},[f,E]),C=l.useCallback(v=>{y.current=v},[]),N=l.useCallback(()=>{var v;f||(v=y.current)==null||v.click()},[f]),A=l.useCallback(()=>({onDragEnter:i,onDragOver:g,onDragLeave:u,onDrop:I}),[i,g,u,I]),B=l.useCallback(()=>({type:"file",accept:M,style:{display:"none"},ref:C,onChange:b}),[M,C,b]);return{getRootProps:A,getInputProps:B,isDragActive:a,isProcessing:c,open:N}}const Kn="application/geo+json";function On(r,t){const n=typeof t=="function"?t(r):typeof t=="string"&&t.length>0?t:"features";return n.toLowerCase().endsWith(".geojson")?n:`${n}.geojson`}function $n(r){const{getFeatureCollection:t,filename:n,indent:s=2,disabled:o=!1}=r,f=l.useRef(t),a=l.useRef(r.onExport),p=l.useRef(r.onError),c=l.useRef(n),x=l.useRef(s),h=l.useRef(o);l.useEffect(()=>{f.current=t},[t]),l.useEffect(()=>{a.current=r.onExport},[r.onExport]),l.useEffect(()=>{p.current=r.onError},[r.onError]),l.useEffect(()=>{c.current=n},[n]),l.useEffect(()=>{x.current=s},[s]),l.useEffect(()=>{h.current=o},[o]);const y=l.useCallback(()=>{var i;if(h.current)return null;const E=f.current();return!E||!Array.isArray(E.features)||E.features.length===0?((i=p.current)==null||i.call(p,{kind:"empty"}),null):E},[]),m=l.useCallback(E=>{var i;try{return JSON.stringify(E,null,x.current)}catch(g){return(i=p.current)==null||i.call(p,{kind:"serialization-error",cause:g instanceof Error?g:new Error(String(g))}),null}},[]),S=l.useCallback(()=>{const E=y();return E?m(E):null},[y,m]),k=l.useCallback(()=>{const E=S();return E===null?null:new Blob([E],{type:Kn})},[S]);return{exportToFile:l.useCallback(()=>{const E=y();if(!E)return null;const i=m(E);if(i===null)return null;const g=On(E,c.current);return d.saveGeoJSONFile(i,g).then(u=>{var I;u&&((I=a.current)==null||I.call(a,E,u))}),g},[y,m]),exportToString:S,exportToBlob:k}}class Ht extends l.Component{constructor(){super(...arguments);nt(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n){var s,o;(o=(s=this.props).onError)==null||o.call(s,new Z.ElementEditorError("crash","editor",`The editor crashed: ${(n==null?void 0:n.message)??String(n)}`,{cause:n}))}render(){var n;return this.state.hasError?e.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",padding:32,fontFamily:"var(--elm-font, system-ui, sans-serif)",background:"var(--elm-surface-sunken, #fafafa)",color:"var(--elm-text, #333)"},children:[e.jsx("p",{style:{fontSize:16,fontWeight:600,marginBottom:8},children:"Something went wrong"}),e.jsx("p",{style:{fontSize:13,color:"var(--elm-text-muted, #666)",marginBottom:16,maxWidth:420,textAlign:"center"},children:((n=this.state.error)==null?void 0:n.message)||"An unexpected error occurred in the map editor."}),e.jsx("button",{onClick:()=>this.setState({hasError:!1,error:null}),style:{padding:"8px 16px",fontSize:13,borderRadius:8,border:"1px solid var(--elm-border, #ddd)",background:"var(--elm-surface, white)",cursor:"pointer"},children:"Try again"})]}):this.props.children}}function Gn({config:r,accentColor:t,featureColor:n,onEvent:s,onError:o,toaster:f=!0,children:a}){const p=l.useMemo(()=>t||n?{...r,...t&&{accentColor:t},...n&&{featureColor:n}}:r,[r,t,n]);return e.jsx(Ht,{onError:o,children:e.jsx(Q.ElementEditorConfigProvider,{config:p,children:e.jsx(ht,{children:e.jsx(d.ThemeReportingProvider,{children:e.jsx(d.EventProvider,{onEvent:s,onError:o,toaster:f,children:e.jsx(d.MapControllerProvider,{children:a})})})})})})}const Vt=se(()=>Promise.resolve().then(()=>require("./GeoJSONModal-D6JBr9FA.cjs"))),Jt=se(()=>Promise.resolve().then(()=>require("./SchemaModal-5F0HBHGS.cjs"))),Xt=se(()=>Promise.resolve().then(()=>require("./FeatureEditModal-BNil19oc.cjs"))),Zt=se(()=>Promise.resolve().then(()=>require("./DataTablePanel-PH5qtwrD.cjs"))),Yt=se(()=>Promise.resolve().then(()=>require("./SettingsModal-au03oFaJ.cjs"))),Qt=se(()=>Promise.resolve().then(()=>require("./ShortcutsModal-DBE-gSUi.cjs")).then(r=>({default:r.ShortcutsModal})));Me(Vt,Jt,Xt,Zt,Yt,Qt);const er=se(()=>Promise.resolve().then(()=>require("./BooleanOperations-DrQS-3mJ.cjs")));Me(er);exports.ActiveDrawingToolbar=fn;exports.BasemapPicker=Un;exports.BooleanOperations=er;exports.BufferPanel=Pn;exports.CODE_DOCKED_KEY=Bt;exports.ControlGroup=_t;exports.DataTable=gt;exports.DataTablePanel=Zt;exports.EditingToolbar=en;exports.ElementEditorErrorBoundary=Ht;exports.ElementEditorUIProvider=Gn;exports.FeatureEditModal=Xt;exports.FeatureList=Fe;exports.FeatureMapContextMenu=an;exports.FeatureRow=Wr;exports.FeatureSidePanel=Nt;exports.FitBoundsButton=mn;exports.FloatingToolbar=Zr;exports.GeoJSONDockPlaceholder=Hr;exports.GeoJSONModal=Vt;exports.GeometryTypeIcon=Ae;exports.GroupRow=_r;exports.IconButton=pe;exports.LayersPanel=Gr;exports.LocateButton=yn;exports.NoFeaturesEmptyState=yt;exports.PartSubRow=qr;exports.ReadonlyBanner=bn;exports.RedoButton=Wt;exports.SchemaEditor=xt;exports.SchemaModal=Jt;exports.SettingsModal=Yt;exports.ShortcutConfigProvider=ht;exports.ShortcutsModal=Qt;exports.SimplifyPanel=En;exports.SmoothPanel=Cn;exports.UndoButton=Gt;exports.UndoRedoToolbar=ln;exports.VertexSelectionBar=rn;exports.WINDOW_ATTR=St;exports.ZoomIndicator=xn;exports.clipboardErrorEvent=vt;exports.disposeGeometryWorker=Sn;exports.featureLabel=zt;exports.geometryTypeLabel=At;exports.getTabbableFeatureIds=mr;exports.getVisualFeatureOrder=wt;exports.isMacPlatform=bt;exports.panelHeaderBar=Ct;exports.panelHeaderIconBtn=xe;exports.parseBooleanText=jt;exports.preloadEditorPanelsWhenIdle=dr;exports.readBooleanValue=Et;exports.resizeEdgeLeft=Rt;exports.resizeEdgeTop=Ar;exports.runGeometryWorkerOperation=ze;exports.startDragShield=Mt;exports.useAccentPalette=An;exports.useCodeDock=Ot;exports.useDataChangeSubscription=Fn;exports.useGeoJSONDrop=Bn;exports.useGeoJSONExport=$n;exports.useInitialCodeDocked=Kt;exports.useIsEventForEditor=ue;exports.useKeyboardShortcuts=wr;exports.usePanelOffset=Re;exports.useShortcutConfig=me;exports.useWindowEscape=hr;
|