@element-editor/ui 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/AGENTS.md +65 -0
  2. package/LICENSE +21 -0
  3. package/README.md +46 -2
  4. package/dist/BooleanOperations-WXcmW9Vy.cjs +1 -0
  5. package/dist/BooleanOperations-oF0WybQP.js +111 -0
  6. package/dist/DataTable-CNfB01y2.cjs +2 -0
  7. package/dist/DataTable-DNmjUwka.js +510 -0
  8. package/dist/DataTablePanel-BknCxC1K.cjs +1 -0
  9. package/dist/DataTablePanel-rWdaQubk.js +208 -0
  10. package/dist/EditToolbarBtn-SZIsnIn3.js +378 -0
  11. package/dist/EditToolbarBtn-dpCmKnzk.cjs +3 -0
  12. package/dist/FeatureEditModal-BF-fGhVD.js +77 -0
  13. package/dist/FeatureEditModal-CM6BObUO.cjs +1 -0
  14. package/dist/FeatureList-CQb2kTrV.js +520 -0
  15. package/dist/FeatureList-Csr-anLA.cjs +1 -0
  16. package/dist/FeatureRowContextMenu-BLt7VlUU.js +130 -0
  17. package/dist/FeatureRowContextMenu-Gwq3OMEA.cjs +1 -0
  18. package/dist/GeoJSONModal-BPFWeaLZ.js +886 -0
  19. package/dist/GeoJSONModal-iwUcvrg7.cjs +9 -0
  20. package/dist/SchemaEditor-BEsKUe2p.js +293 -0
  21. package/dist/SchemaEditor-qkoYMg0C.cjs +1 -0
  22. package/dist/SchemaModal-9nNrgorr.js +95 -0
  23. package/dist/SchemaModal-GrtgA7cH.cjs +1 -0
  24. package/dist/SettingsModal-6_qmRyCi.cjs +1 -0
  25. package/dist/SettingsModal-DTP0Xx_Z.js +237 -0
  26. package/dist/ShortcutsModal-CdyQlrqK.cjs +1 -0
  27. package/dist/ShortcutsModal-DwxZu71W.js +299 -0
  28. package/dist/components/ActiveDrawingToolbar.d.cts +1 -0
  29. package/dist/components/ActiveDrawingToolbar.d.ts +1 -0
  30. package/dist/components/BasemapPicker.d.cts +26 -0
  31. package/dist/components/BasemapPicker.d.ts +26 -0
  32. package/dist/components/BooleanOperations.d.cts +1 -0
  33. package/dist/components/BooleanOperations.d.ts +1 -0
  34. package/dist/components/BufferPanel.d.cts +1 -0
  35. package/dist/components/BufferPanel.d.ts +1 -0
  36. package/dist/components/DataTable.d.cts +9 -0
  37. package/dist/components/DataTable.d.ts +9 -0
  38. package/dist/components/DataTablePanel.d.cts +10 -0
  39. package/dist/components/DataTablePanel.d.ts +10 -0
  40. package/dist/components/EditingToolbar.d.cts +1 -0
  41. package/dist/components/EditingToolbar.d.ts +1 -0
  42. package/dist/components/ElementEditorErrorBoundary.d.cts +28 -0
  43. package/dist/components/ElementEditorErrorBoundary.d.ts +28 -0
  44. package/dist/components/ElementEditorUIProvider.d.cts +50 -0
  45. package/dist/components/ElementEditorUIProvider.d.ts +50 -0
  46. package/dist/components/FeatureMapContextMenu.d.cts +23 -0
  47. package/dist/components/FeatureMapContextMenu.d.ts +23 -0
  48. package/dist/components/FitBoundsButton.d.cts +6 -0
  49. package/dist/components/FitBoundsButton.d.ts +6 -0
  50. package/dist/components/FloatingToolbar.d.cts +3 -0
  51. package/dist/components/FloatingToolbar.d.ts +3 -0
  52. package/dist/components/LocateButton.d.cts +11 -0
  53. package/dist/components/LocateButton.d.ts +11 -0
  54. package/dist/components/ReadonlyBanner.d.cts +1 -0
  55. package/dist/components/ReadonlyBanner.d.ts +1 -0
  56. package/dist/components/ShortcutsModal.d.cts +1 -0
  57. package/dist/components/ShortcutsModal.d.ts +1 -0
  58. package/dist/components/SimplifyPanel.d.cts +1 -0
  59. package/dist/components/SimplifyPanel.d.ts +1 -0
  60. package/dist/components/SmoothPanel.d.cts +1 -0
  61. package/dist/components/SmoothPanel.d.ts +1 -0
  62. package/dist/components/UndoRedoToolbar.d.cts +20 -0
  63. package/dist/components/UndoRedoToolbar.d.ts +20 -0
  64. package/dist/components/VertexSelectionBar.d.cts +12 -0
  65. package/dist/components/VertexSelectionBar.d.ts +12 -0
  66. package/dist/components/ZoomIndicator.d.cts +15 -0
  67. package/dist/components/ZoomIndicator.d.ts +15 -0
  68. package/dist/components/dialogs/DynamicFieldRenderer.d.cts +11 -0
  69. package/dist/components/dialogs/DynamicFieldRenderer.d.ts +11 -0
  70. package/dist/components/dialogs/SettingsModal.d.cts +1 -0
  71. package/dist/components/dialogs/SettingsModal.d.ts +1 -0
  72. package/dist/components/lazyParts.d.cts +12 -0
  73. package/dist/components/lazyParts.d.ts +12 -0
  74. package/dist/components/sidebar/FeatureEditModal.d.cts +6 -0
  75. package/dist/components/sidebar/FeatureEditModal.d.ts +6 -0
  76. package/dist/components/sidebar/FeatureList.d.cts +4 -0
  77. package/dist/components/sidebar/FeatureList.d.ts +4 -0
  78. package/dist/components/sidebar/FeatureRow.d.cts +38 -0
  79. package/dist/components/sidebar/FeatureRow.d.ts +38 -0
  80. package/dist/components/sidebar/FeatureRowContextMenu.d.cts +12 -0
  81. package/dist/components/sidebar/FeatureRowContextMenu.d.ts +12 -0
  82. package/dist/components/sidebar/FeatureSidePanel.d.cts +8 -0
  83. package/dist/components/sidebar/FeatureSidePanel.d.ts +8 -0
  84. package/dist/components/sidebar/GeoJSONModal.d.cts +5 -0
  85. package/dist/components/sidebar/GeoJSONModal.d.ts +5 -0
  86. package/dist/components/sidebar/GroupRow.d.cts +21 -0
  87. package/dist/components/sidebar/GroupRow.d.ts +21 -0
  88. package/dist/components/sidebar/HideLayersToggle.d.cts +2 -0
  89. package/dist/components/sidebar/HideLayersToggle.d.ts +2 -0
  90. package/dist/components/sidebar/LayersPanel.d.cts +5 -0
  91. package/dist/components/sidebar/LayersPanel.d.ts +5 -0
  92. package/dist/components/sidebar/PartSubRow.d.cts +9 -0
  93. package/dist/components/sidebar/PartSubRow.d.ts +9 -0
  94. package/dist/components/sidebar/SchemaEditor.d.cts +4 -0
  95. package/dist/components/sidebar/SchemaEditor.d.ts +4 -0
  96. package/dist/components/sidebar/SchemaModal.d.cts +5 -0
  97. package/dist/components/sidebar/SchemaModal.d.ts +5 -0
  98. package/dist/components/sidebar/codeDock.d.cts +21 -0
  99. package/dist/components/sidebar/codeDock.d.ts +21 -0
  100. package/dist/components/ui/Button.d.cts +9 -0
  101. package/dist/components/ui/Button.d.ts +9 -0
  102. package/dist/components/ui/CloseButton.d.cts +6 -0
  103. package/dist/components/ui/CloseButton.d.ts +6 -0
  104. package/dist/components/ui/ContextMenu.d.cts +28 -0
  105. package/dist/components/ui/ContextMenu.d.ts +28 -0
  106. package/dist/components/ui/EditToolbarBtn.d.cts +13 -0
  107. package/dist/components/ui/EditToolbarBtn.d.ts +13 -0
  108. package/dist/components/ui/ElementToaster.d.cts +3 -0
  109. package/dist/components/ui/ElementToaster.d.ts +3 -0
  110. package/dist/components/ui/GeometryTypeIcon.d.cts +7 -0
  111. package/dist/components/ui/GeometryTypeIcon.d.ts +7 -0
  112. package/dist/components/ui/IconButton.d.cts +28 -0
  113. package/dist/components/ui/IconButton.d.ts +28 -0
  114. package/dist/components/ui/Input.d.cts +14 -0
  115. package/dist/components/ui/Input.d.ts +14 -0
  116. package/dist/components/ui/JsonCode.d.cts +4 -0
  117. package/dist/components/ui/JsonCode.d.ts +4 -0
  118. package/dist/components/ui/Kbd.d.cts +16 -0
  119. package/dist/components/ui/Kbd.d.ts +16 -0
  120. package/dist/components/ui/NoFeaturesEmptyState.d.cts +1 -0
  121. package/dist/components/ui/NoFeaturesEmptyState.d.ts +1 -0
  122. package/dist/components/ui/SearchDropdown.d.cts +28 -0
  123. package/dist/components/ui/SearchDropdown.d.ts +28 -0
  124. package/dist/components/ui/ToolButton.d.cts +19 -0
  125. package/dist/components/ui/ToolButton.d.ts +19 -0
  126. package/dist/components/ui/Tooltip.d.cts +12 -0
  127. package/dist/components/ui/Tooltip.d.ts +12 -0
  128. package/dist/components/ui/panelHeader.d.cts +2 -0
  129. package/dist/components/ui/panelHeader.d.ts +2 -0
  130. package/dist/components/ui/resizeEdge.d.cts +4 -0
  131. package/dist/components/ui/resizeEdge.d.ts +4 -0
  132. package/dist/contexts/ElementEditorConfigContext.d.cts +351 -0
  133. package/dist/contexts/ElementEditorConfigContext.d.ts +351 -0
  134. package/dist/contexts/EventContext.d.cts +69 -0
  135. package/dist/contexts/EventContext.d.ts +69 -0
  136. package/dist/contexts/MapControllerContext.d.cts +24 -0
  137. package/dist/contexts/MapControllerContext.d.ts +24 -0
  138. package/dist/contexts/ShortcutConfigContext.d.cts +16 -0
  139. package/dist/contexts/ShortcutConfigContext.d.ts +16 -0
  140. package/dist/contexts/ThemeContext.d.cts +12 -0
  141. package/dist/contexts/ThemeContext.d.ts +12 -0
  142. package/dist/element-editor-ui.cjs +1 -0
  143. package/dist/element-editor-ui.es.js +102 -0
  144. package/dist/geometryWorker-CCwg4tNC.cjs +1 -0
  145. package/dist/geometryWorker-DgQCFSmD.js +25 -0
  146. package/dist/hooks/dragShield.d.cts +7 -0
  147. package/dist/hooks/dragShield.d.ts +7 -0
  148. package/dist/hooks/themeInputs.d.cts +14 -0
  149. package/dist/hooks/themeInputs.d.ts +14 -0
  150. package/dist/hooks/useAccentPalette.d.cts +15 -0
  151. package/dist/hooks/useAccentPalette.d.ts +15 -0
  152. package/dist/hooks/useAccentStyle.d.cts +39 -0
  153. package/dist/hooks/useAccentStyle.d.ts +39 -0
  154. package/dist/hooks/useAdapterControls.d.cts +280 -0
  155. package/dist/hooks/useAdapterControls.d.ts +280 -0
  156. package/dist/hooks/useBalancedWrap.d.cts +8 -0
  157. package/dist/hooks/useBalancedWrap.d.ts +8 -0
  158. package/dist/hooks/useContextMenu.d.cts +11 -0
  159. package/dist/hooks/useContextMenu.d.ts +11 -0
  160. package/dist/hooks/useDataChangeSubscription.d.cts +9 -0
  161. package/dist/hooks/useDataChangeSubscription.d.ts +9 -0
  162. package/dist/hooks/useDragWindow.d.cts +9 -0
  163. package/dist/hooks/useDragWindow.d.ts +9 -0
  164. package/dist/hooks/useFocusTrap.d.cts +7 -0
  165. package/dist/hooks/useFocusTrap.d.ts +7 -0
  166. package/dist/hooks/useGeoJSONDrop.d.cts +40 -0
  167. package/dist/hooks/useGeoJSONDrop.d.ts +40 -0
  168. package/dist/hooks/useGeoJSONExport.d.cts +69 -0
  169. package/dist/hooks/useGeoJSONExport.d.ts +69 -0
  170. package/dist/hooks/useGeoJSONFileImport.d.cts +24 -0
  171. package/dist/hooks/useGeoJSONFileImport.d.ts +24 -0
  172. package/dist/hooks/useInlineRename.d.cts +26 -0
  173. package/dist/hooks/useInlineRename.d.ts +26 -0
  174. package/dist/hooks/useJumpToFeature.d.cts +3 -0
  175. package/dist/hooks/useJumpToFeature.d.ts +3 -0
  176. package/dist/hooks/useKeyboardShortcuts.d.cts +9 -0
  177. package/dist/hooks/useKeyboardShortcuts.d.ts +9 -0
  178. package/dist/hooks/useNominatim.d.cts +24 -0
  179. package/dist/hooks/useNominatim.d.ts +24 -0
  180. package/dist/hooks/usePanelOffset.d.cts +14 -0
  181. package/dist/hooks/usePanelOffset.d.ts +14 -0
  182. package/dist/hooks/useResizablePanel.d.cts +4 -0
  183. package/dist/hooks/useResizablePanel.d.ts +4 -0
  184. package/dist/hooks/useRootTokens.d.cts +27 -0
  185. package/dist/hooks/useRootTokens.d.ts +27 -0
  186. package/dist/hooks/useSearchState.d.cts +23 -0
  187. package/dist/hooks/useSearchState.d.ts +23 -0
  188. package/dist/hooks/useServiceAttribution.d.cts +13 -0
  189. package/dist/hooks/useServiceAttribution.d.ts +13 -0
  190. package/dist/hooks/useWindowEscape.d.cts +25 -0
  191. package/dist/hooks/useWindowEscape.d.ts +25 -0
  192. package/dist/hooks/useWindowFocus.d.cts +4 -0
  193. package/dist/hooks/useWindowFocus.d.ts +4 -0
  194. package/dist/hooks/useWorkerGeometryPreview.d.cts +22 -0
  195. package/dist/hooks/useWorkerGeometryPreview.d.ts +22 -0
  196. package/dist/index-BKdDZ4Y9.cjs +1 -0
  197. package/dist/index-CtZterPc.js +3165 -0
  198. package/dist/index.d.cts +89 -0
  199. package/dist/index.d.ts +89 -0
  200. package/dist/internal.cjs +1 -0
  201. package/dist/internal.d.cts +16 -0
  202. package/dist/internal.d.ts +16 -0
  203. package/dist/internal.es.js +42 -0
  204. package/dist/primitives.cjs +1 -0
  205. package/dist/primitives.d.cts +19 -0
  206. package/dist/primitives.d.ts +19 -0
  207. package/dist/primitives.es.js +17 -0
  208. package/dist/store/StoreContext.d.cts +17 -0
  209. package/dist/store/StoreContext.d.ts +17 -0
  210. package/dist/types/events.d.cts +95 -0
  211. package/dist/types/events.d.ts +95 -0
  212. package/dist/useAccentStyle-CPo2XqAn.js +412 -0
  213. package/dist/useAccentStyle-hsGvyHZc.cjs +1 -0
  214. package/dist/useAdapterControls-BBObhzVX.cjs +1 -0
  215. package/dist/useAdapterControls-DVjkwRZ_.js +691 -0
  216. package/dist/useContextMenu-DJ2Cti85.js +10 -0
  217. package/dist/useContextMenu-DbxMvb1s.cjs +1 -0
  218. package/dist/useFocusTrap-BBjPCfDR.cjs +1 -0
  219. package/dist/useFocusTrap-CKxKT8De.js +25 -0
  220. package/dist/useJumpToFeature-Bdz2hqOC.js +16 -0
  221. package/dist/useJumpToFeature-LwjxGzfy.cjs +1 -0
  222. package/dist/useWindowFocus-D-_yEm_V.cjs +1 -0
  223. package/dist/useWindowFocus-DGAWA1au.js +80 -0
  224. package/dist/utils/booleanValue.d.cts +4 -0
  225. package/dist/utils/booleanValue.d.ts +4 -0
  226. package/dist/utils/clipboardError.d.cts +3 -0
  227. package/dist/utils/clipboardError.d.ts +3 -0
  228. package/dist/utils/download.d.cts +42 -0
  229. package/dist/utils/download.d.ts +42 -0
  230. package/dist/utils/geojsonDocument.d.cts +168 -0
  231. package/dist/utils/geojsonDocument.d.ts +168 -0
  232. package/dist/utils/geometryWorkerClient.d.cts +6 -0
  233. package/dist/utils/geometryWorkerClient.d.ts +6 -0
  234. package/dist/utils/layerOrder.d.cts +9 -0
  235. package/dist/utils/layerOrder.d.ts +9 -0
  236. package/dist/utils/lazyWithPreload.d.cts +24 -0
  237. package/dist/utils/lazyWithPreload.d.ts +24 -0
  238. package/dist/utils/lineSmooth.d.cts +7 -0
  239. package/dist/utils/lineSmooth.d.ts +7 -0
  240. package/dist/utils/platform.d.cts +2 -0
  241. package/dist/utils/platform.d.ts +2 -0
  242. package/dist/workers/geometryWorker.d.cts +1 -0
  243. package/dist/workers/geometryWorker.d.ts +1 -0
  244. package/package.json +133 -3
@@ -0,0 +1,89 @@
1
+ export { GeoStoreProvider, StoreContext, useDataStore, useUIStore, useGeoStore } from './store/StoreContext.cjs';
2
+ export type { DataStore, UIStore } from '@element-editor/core';
3
+ export { MapControllerProvider, useMapController, useSetMapController } from './contexts/MapControllerContext.cjs';
4
+ export type { MapController } from './contexts/MapControllerContext.cjs';
5
+ export { ThemeContext, useTheme, ThemeReportingProvider, useReportThemeFromRoot } from './contexts/ThemeContext.cjs';
6
+ export type { ResolvedTheme } from './contexts/ThemeContext.cjs';
7
+ export { EventProvider, useEmit, useIsManaged, useToasterId, type EmittedEvent } from './contexts/EventContext.cjs';
8
+ export { ShortcutConfigProvider, useShortcutConfig } from './contexts/ShortcutConfigContext.cjs';
9
+ export { ElementEditorConfigProvider, useElementEditorConfig, useUnitsOverride, resolveConfig, DEFAULT_LAYOUT, withLayout } from './contexts/ElementEditorConfigContext.cjs';
10
+ export type { ElementEditorConfig, ResolvedConfig, DrawTool, ToolbarPosition, LayoutSlot, LayoutControl, RasterBasemap, LayoutGroup, LayoutEntry, LayoutSlotConfig, LayoutConfig, ResolvedLayout, MapSlot, StatusSlot, MapGroup, StatusGroup, MapEntry, StatusEntry, MapSlotConfig, StatusSlotConfig, LayoutPatch, SlotFor, UnitsOverride } from './contexts/ElementEditorConfigContext.cjs';
11
+ export type { ElementEditorEvent, ElementEditorErrorHandler } from './types/events.cjs';
12
+ export { ElementEditorError } from '@element-editor/core';
13
+ export type { ErrorCode, ErrorSource } from '@element-editor/core';
14
+ export { default as LayersPanel } from './components/sidebar/LayersPanel.cjs';
15
+ export { default as FeatureSidePanel } from './components/sidebar/FeatureSidePanel.cjs';
16
+ export { default as FeatureRow, featureLabel } from './components/sidebar/FeatureRow.cjs';
17
+ export { default as GroupRow } from './components/sidebar/GroupRow.cjs';
18
+ export { default as PartSubRow } from './components/sidebar/PartSubRow.cjs';
19
+ export { FeatureList, SchemaEditor, DataTable } from './components/lazyParts.cjs';
20
+ export declare const GeoJSONModal: typeof import('./components/sidebar/GeoJSONModal.cjs').default & {
21
+ preload: () => Promise<unknown>;
22
+ };
23
+ export { GeoJSONDockPlaceholder } from './components/sidebar/codeDock.cjs';
24
+ export declare const SchemaModal: typeof import('./components/sidebar/SchemaModal.cjs').default & {
25
+ preload: () => Promise<unknown>;
26
+ };
27
+ export declare const FeatureEditModal: typeof import('./components/sidebar/FeatureEditModal.cjs').default & {
28
+ preload: () => Promise<unknown>;
29
+ };
30
+ export declare const DataTablePanel: typeof import('./components/DataTablePanel.cjs').default & {
31
+ preload: () => Promise<unknown>;
32
+ };
33
+ export declare const SettingsModal: typeof import('./components/dialogs/SettingsModal.cjs').default & {
34
+ preload: () => Promise<unknown>;
35
+ };
36
+ export declare const ShortcutsModal: typeof import('./components/ShortcutsModal.cjs').ShortcutsModal & {
37
+ preload: () => Promise<unknown>;
38
+ };
39
+ export { preloadEditorPanelsWhenIdle } from './utils/lazyWithPreload.cjs';
40
+ export { default as FloatingToolbar } from './components/FloatingToolbar.cjs';
41
+ export { default as EditingToolbar } from './components/EditingToolbar.cjs';
42
+ export { VertexSelectionBar } from './components/VertexSelectionBar.cjs';
43
+ export { FeatureMapContextMenu } from './components/FeatureMapContextMenu.cjs';
44
+ export type { FeatureContextMenuData } from './components/FeatureMapContextMenu.cjs';
45
+ export { default as UndoRedoToolbar } from './components/UndoRedoToolbar.cjs';
46
+ export { UndoButton, RedoButton, ControlGroup } from './components/UndoRedoToolbar.cjs';
47
+ export { default as ActiveDrawingToolbar } from './components/ActiveDrawingToolbar.cjs';
48
+ export { default as FitBoundsButton } from './components/FitBoundsButton.cjs';
49
+ export { default as ZoomIndicator } from './components/ZoomIndicator.cjs';
50
+ export { default as LocateButton } from './components/LocateButton.cjs';
51
+ export { default as ReadonlyBanner } from './components/ReadonlyBanner.cjs';
52
+ export declare const BooleanOperations: typeof import('./components/BooleanOperations.cjs').default & {
53
+ preload: () => Promise<unknown>;
54
+ };
55
+ export { default as SimplifyPanel } from './components/SimplifyPanel.cjs';
56
+ export { default as SmoothPanel } from './components/SmoothPanel.cjs';
57
+ export { default as BufferPanel } from './components/BufferPanel.cjs';
58
+ export { Button } from './components/ui/Button.cjs';
59
+ export { ContextMenu, isContextMenuOpen, CONTEXT_MENU_MARKER_ATTR } from './components/ui/ContextMenu.cjs';
60
+ export { Input, Textarea, SelectInput } from './components/ui/Input.cjs';
61
+ export { Kbd, KbdDark, KbdInvert } from './components/ui/Kbd.cjs';
62
+ export { SearchDropdown } from './components/ui/SearchDropdown.cjs';
63
+ export type { SearchDropdownHandle } from './components/ui/SearchDropdown.cjs';
64
+ export { ToolButton } from './components/ui/ToolButton.cjs';
65
+ export { IconButton } from './components/ui/IconButton.cjs';
66
+ export type { IconButtonSize } from './components/ui/IconButton.cjs';
67
+ export { BasemapPicker } from './components/BasemapPicker.cjs';
68
+ export type { BasemapPickerOption, BasemapPickerProps } from './components/BasemapPicker.cjs';
69
+ export { Tooltip } from './components/ui/Tooltip.cjs';
70
+ export type { TooltipSide } from './components/ui/Tooltip.cjs';
71
+ export { ElementToaster } from './components/ui/ElementToaster.cjs';
72
+ export { EditToolbarBtn, ToolbarDivider } from './components/ui/EditToolbarBtn.cjs';
73
+ export { useKeyboardShortcuts, useIsEventForEditor } from './hooks/useKeyboardShortcuts.cjs';
74
+ export { useDataChangeSubscription } from './hooks/useDataChangeSubscription.cjs';
75
+ export { useNominatim } from './hooks/useNominatim.cjs';
76
+ export type { NominatimResult } from './hooks/useNominatim.cjs';
77
+ export { useAccentPalette } from './hooks/useAccentPalette.cjs';
78
+ export { useAccentStyle, useApplyAccentToRoot, accentStyle } from './hooks/useAccentStyle.cjs';
79
+ export { useGeoJSONDrop } from './hooks/useGeoJSONDrop.cjs';
80
+ export type { UseGeoJSONDropOptions, UseGeoJSONDropReturn, GeoJSONDropError } from './hooks/useGeoJSONDrop.cjs';
81
+ export { useGeoJSONExport } from './hooks/useGeoJSONExport.cjs';
82
+ export type { UseGeoJSONExportOptions, UseGeoJSONExportReturn, GeoJSONExportError } from './hooks/useGeoJSONExport.cjs';
83
+ export { useAdapterControls } from './hooks/useAdapterControls.cjs';
84
+ export type { UseAdapterControlsOptions, ElementEditorImperativeAPI, MutationOptions, SetFeatureCollectionOptions, ValidationReport, ImportResult } from './hooks/useAdapterControls.cjs';
85
+ export { triggerGeoJSONDownload, saveGeoJSONFile } from './utils/download.cjs';
86
+ export { runGeometryWorkerOperation, disposeGeometryWorker } from './utils/geometryWorkerClient.cjs';
87
+ export { ElementEditorErrorBoundary } from './components/ElementEditorErrorBoundary.cjs';
88
+ export { ElementEditorUIProvider } from './components/ElementEditorUIProvider.cjs';
89
+ export type { ElementEditorUIProviderProps } from './components/ElementEditorUIProvider.cjs';
@@ -0,0 +1,89 @@
1
+ export { GeoStoreProvider, StoreContext, useDataStore, useUIStore, useGeoStore } from './store/StoreContext.js';
2
+ export type { DataStore, UIStore } from '@element-editor/core';
3
+ export { MapControllerProvider, useMapController, useSetMapController } from './contexts/MapControllerContext.js';
4
+ export type { MapController } from './contexts/MapControllerContext.js';
5
+ export { ThemeContext, useTheme, ThemeReportingProvider, useReportThemeFromRoot } from './contexts/ThemeContext.js';
6
+ export type { ResolvedTheme } from './contexts/ThemeContext.js';
7
+ export { EventProvider, useEmit, useIsManaged, useToasterId, type EmittedEvent } from './contexts/EventContext.js';
8
+ export { ShortcutConfigProvider, useShortcutConfig } from './contexts/ShortcutConfigContext.js';
9
+ export { ElementEditorConfigProvider, useElementEditorConfig, useUnitsOverride, resolveConfig, DEFAULT_LAYOUT, withLayout } from './contexts/ElementEditorConfigContext.js';
10
+ export type { ElementEditorConfig, ResolvedConfig, DrawTool, ToolbarPosition, LayoutSlot, LayoutControl, RasterBasemap, LayoutGroup, LayoutEntry, LayoutSlotConfig, LayoutConfig, ResolvedLayout, MapSlot, StatusSlot, MapGroup, StatusGroup, MapEntry, StatusEntry, MapSlotConfig, StatusSlotConfig, LayoutPatch, SlotFor, UnitsOverride } from './contexts/ElementEditorConfigContext.js';
11
+ export type { ElementEditorEvent, ElementEditorErrorHandler } from './types/events.js';
12
+ export { ElementEditorError } from '@element-editor/core';
13
+ export type { ErrorCode, ErrorSource } from '@element-editor/core';
14
+ export { default as LayersPanel } from './components/sidebar/LayersPanel.js';
15
+ export { default as FeatureSidePanel } from './components/sidebar/FeatureSidePanel.js';
16
+ export { default as FeatureRow, featureLabel } from './components/sidebar/FeatureRow.js';
17
+ export { default as GroupRow } from './components/sidebar/GroupRow.js';
18
+ export { default as PartSubRow } from './components/sidebar/PartSubRow.js';
19
+ export { FeatureList, SchemaEditor, DataTable } from './components/lazyParts.js';
20
+ export declare const GeoJSONModal: typeof import('./components/sidebar/GeoJSONModal.js').default & {
21
+ preload: () => Promise<unknown>;
22
+ };
23
+ export { GeoJSONDockPlaceholder } from './components/sidebar/codeDock.js';
24
+ export declare const SchemaModal: typeof import('./components/sidebar/SchemaModal.js').default & {
25
+ preload: () => Promise<unknown>;
26
+ };
27
+ export declare const FeatureEditModal: typeof import('./components/sidebar/FeatureEditModal.js').default & {
28
+ preload: () => Promise<unknown>;
29
+ };
30
+ export declare const DataTablePanel: typeof import('./components/DataTablePanel.js').default & {
31
+ preload: () => Promise<unknown>;
32
+ };
33
+ export declare const SettingsModal: typeof import('./components/dialogs/SettingsModal.js').default & {
34
+ preload: () => Promise<unknown>;
35
+ };
36
+ export declare const ShortcutsModal: typeof import('./components/ShortcutsModal.js').ShortcutsModal & {
37
+ preload: () => Promise<unknown>;
38
+ };
39
+ export { preloadEditorPanelsWhenIdle } from './utils/lazyWithPreload.js';
40
+ export { default as FloatingToolbar } from './components/FloatingToolbar.js';
41
+ export { default as EditingToolbar } from './components/EditingToolbar.js';
42
+ export { VertexSelectionBar } from './components/VertexSelectionBar.js';
43
+ export { FeatureMapContextMenu } from './components/FeatureMapContextMenu.js';
44
+ export type { FeatureContextMenuData } from './components/FeatureMapContextMenu.js';
45
+ export { default as UndoRedoToolbar } from './components/UndoRedoToolbar.js';
46
+ export { UndoButton, RedoButton, ControlGroup } from './components/UndoRedoToolbar.js';
47
+ export { default as ActiveDrawingToolbar } from './components/ActiveDrawingToolbar.js';
48
+ export { default as FitBoundsButton } from './components/FitBoundsButton.js';
49
+ export { default as ZoomIndicator } from './components/ZoomIndicator.js';
50
+ export { default as LocateButton } from './components/LocateButton.js';
51
+ export { default as ReadonlyBanner } from './components/ReadonlyBanner.js';
52
+ export declare const BooleanOperations: typeof import('./components/BooleanOperations.js').default & {
53
+ preload: () => Promise<unknown>;
54
+ };
55
+ export { default as SimplifyPanel } from './components/SimplifyPanel.js';
56
+ export { default as SmoothPanel } from './components/SmoothPanel.js';
57
+ export { default as BufferPanel } from './components/BufferPanel.js';
58
+ export { Button } from './components/ui/Button.js';
59
+ export { ContextMenu, isContextMenuOpen, CONTEXT_MENU_MARKER_ATTR } from './components/ui/ContextMenu.js';
60
+ export { Input, Textarea, SelectInput } from './components/ui/Input.js';
61
+ export { Kbd, KbdDark, KbdInvert } from './components/ui/Kbd.js';
62
+ export { SearchDropdown } from './components/ui/SearchDropdown.js';
63
+ export type { SearchDropdownHandle } from './components/ui/SearchDropdown.js';
64
+ export { ToolButton } from './components/ui/ToolButton.js';
65
+ export { IconButton } from './components/ui/IconButton.js';
66
+ export type { IconButtonSize } from './components/ui/IconButton.js';
67
+ export { BasemapPicker } from './components/BasemapPicker.js';
68
+ export type { BasemapPickerOption, BasemapPickerProps } from './components/BasemapPicker.js';
69
+ export { Tooltip } from './components/ui/Tooltip.js';
70
+ export type { TooltipSide } from './components/ui/Tooltip.js';
71
+ export { ElementToaster } from './components/ui/ElementToaster.js';
72
+ export { EditToolbarBtn, ToolbarDivider } from './components/ui/EditToolbarBtn.js';
73
+ export { useKeyboardShortcuts, useIsEventForEditor } from './hooks/useKeyboardShortcuts.js';
74
+ export { useDataChangeSubscription } from './hooks/useDataChangeSubscription.js';
75
+ export { useNominatim } from './hooks/useNominatim.js';
76
+ export type { NominatimResult } from './hooks/useNominatim.js';
77
+ export { useAccentPalette } from './hooks/useAccentPalette.js';
78
+ export { useAccentStyle, useApplyAccentToRoot, accentStyle } from './hooks/useAccentStyle.js';
79
+ export { useGeoJSONDrop } from './hooks/useGeoJSONDrop.js';
80
+ export type { UseGeoJSONDropOptions, UseGeoJSONDropReturn, GeoJSONDropError } from './hooks/useGeoJSONDrop.js';
81
+ export { useGeoJSONExport } from './hooks/useGeoJSONExport.js';
82
+ export type { UseGeoJSONExportOptions, UseGeoJSONExportReturn, GeoJSONExportError } from './hooks/useGeoJSONExport.js';
83
+ export { useAdapterControls } from './hooks/useAdapterControls.js';
84
+ export type { UseAdapterControlsOptions, ElementEditorImperativeAPI, MutationOptions, SetFeatureCollectionOptions, ValidationReport, ImportResult } from './hooks/useAdapterControls.js';
85
+ export { triggerGeoJSONDownload, saveGeoJSONFile } from './utils/download.js';
86
+ export { runGeometryWorkerOperation, disposeGeometryWorker } from './utils/geometryWorkerClient.js';
87
+ export { ElementEditorErrorBoundary } from './components/ElementEditorErrorBoundary.js';
88
+ export { ElementEditorUIProvider } from './components/ElementEditorUIProvider.js';
89
+ export type { ElementEditorUIProviderProps } from './components/ElementEditorUIProvider.js';
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useAccentStyle-hsGvyHZc.cjs"),n=require("./useAdapterControls-BBObhzVX.cjs"),T=require("react"),a=require("@element-editor/core/internal"),p=require("./useContextMenu-DbxMvb1s.cjs");function l(i,t){const s=[],o=i.nominatim;t.search&&o!==!1&&(o!=null&&o.attribution?s.push(o.attribution):!(o!=null&&o.url)||o.url===n.NOMINATIM_URL?s.push(n.NOMINATIM_ATTRIBUTION):a.warnOnce("network-attribution-nominatim","config.network.nominatim points at another server but sets no `attribution`: give it the provider's credit."));const r=t.route?a.routingAttribution(i.routing):void 0;return r&&s.push(r),s}function c(i){const{routing:t}=e.useElementEditorConfig().network;return i!==void 0&&a.warnOnce("routingApiKey","The `routingApiKey` prop is deprecated: use `config.network.routing.apiKey`."),T.useMemo(()=>t===!1?!1:i&&!(t!=null&&t.apiKey)?{...t,apiKey:i}:t??{},[t,i])}function b(i){const{network:t}=e.useElementEditorConfig(),s=c(i),o=n.useUIStore(u=>u.isToolAvailable("search")),r=n.useUIStore(u=>u.isToolAvailable("route"));return l({...t,routing:s},{search:o,route:r}).join(" | ")}exports.LAYOUT_SLOTS=e.LAYOUT_SLOTS;exports.RootCssVarsContext=e.RootCssVarsContext;exports.RootTokensContext=e.RootTokensContext;exports.THEME_TOKENS=e.THEME_TOKENS;exports.applyRootTokens=e.applyRootTokens;exports.isControlVisible=e.isControlVisible;exports.layoutGaps=e.layoutGaps;exports.readRootTokens=e.readRootTokens;exports.resolveLayout=e.resolveLayout;exports.useRootTokens=e.useRootTokens;exports.visibleLayoutEntries=e.visibleLayoutEntries;exports.networkUnavailableTools=n.networkUnavailableTools;exports.useGeoJSONFileImport=n.useGeoJSONFileImport;exports.useOptionalEmit=n.useOptionalEmit;exports.useContextMenu=p.useContextMenu;exports.serviceAttribution=l;exports.useRouting=c;exports.useServiceAttribution=b;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @element-editor/ui/internal
3
+ *
4
+ * Unstable, no semver guarantees; for @element-editor/* packages only.
5
+ * Plumbing shared with the adapters and `@element-editor/react`'s drop-in shell (layout
6
+ * resolution, service attribution, the context-menu hook). Anything here may change or
7
+ * disappear in any release. Don't import it from application code.
8
+ */
9
+ export { resolveLayout, LAYOUT_SLOTS, isControlVisible, visibleLayoutEntries, layoutGaps } from './contexts/ElementEditorConfigContext.cjs';
10
+ export { useOptionalEmit } from './contexts/EventContext.cjs';
11
+ export { useRouting, useServiceAttribution, serviceAttribution } from './hooks/useServiceAttribution.cjs';
12
+ export { networkUnavailableTools } from './hooks/useAdapterControls.cjs';
13
+ export { useContextMenu } from './hooks/useContextMenu.cjs';
14
+ export { useGeoJSONFileImport } from './hooks/useGeoJSONFileImport.cjs';
15
+ export { RootCssVarsContext } from './hooks/useAccentStyle.cjs';
16
+ export { RootTokensContext, useRootTokens, readRootTokens, applyRootTokens, THEME_TOKENS } from './hooks/useRootTokens.cjs';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @element-editor/ui/internal
3
+ *
4
+ * Unstable, no semver guarantees; for @element-editor/* packages only.
5
+ * Plumbing shared with the adapters and `@element-editor/react`'s drop-in shell (layout
6
+ * resolution, service attribution, the context-menu hook). Anything here may change or
7
+ * disappear in any release. Don't import it from application code.
8
+ */
9
+ export { resolveLayout, LAYOUT_SLOTS, isControlVisible, visibleLayoutEntries, layoutGaps } from './contexts/ElementEditorConfigContext.js';
10
+ export { useOptionalEmit } from './contexts/EventContext.js';
11
+ export { useRouting, useServiceAttribution, serviceAttribution } from './hooks/useServiceAttribution.js';
12
+ export { networkUnavailableTools } from './hooks/useAdapterControls.js';
13
+ export { useContextMenu } from './hooks/useContextMenu.js';
14
+ export { useGeoJSONFileImport } from './hooks/useGeoJSONFileImport.js';
15
+ export { RootCssVarsContext } from './hooks/useAccentStyle.js';
16
+ export { RootTokensContext, useRootTokens, readRootTokens, applyRootTokens, THEME_TOKENS } from './hooks/useRootTokens.js';
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { u as a } from "./useAccentStyle-CPo2XqAn.js";
3
+ import { L as A, R as I, a as N, T as g, b as x, i as E, l as M, r as w, c as y, d as C, v as L } from "./useAccentStyle-CPo2XqAn.js";
4
+ import { N as l, a as c, u as n } from "./useAdapterControls-DVjkwRZ_.js";
5
+ import { n as U, b as _, c as K } from "./useAdapterControls-DVjkwRZ_.js";
6
+ import { useMemo as p } from "react";
7
+ import { warnOnce as u, routingAttribution as f } from "@element-editor/core/internal";
8
+ import { u as V } from "./useContextMenu-DJ2Cti85.js";
9
+ function m(e, o) {
10
+ const s = [], t = e.nominatim;
11
+ o.search && t !== !1 && (t != null && t.attribution ? s.push(t.attribution) : !(t != null && t.url) || t.url === l ? s.push(c) : u("network-attribution-nominatim", "config.network.nominatim points at another server but sets no `attribution`: give it the provider's credit."));
12
+ const i = o.route ? f(e.routing) : void 0;
13
+ return i && s.push(i), s;
14
+ }
15
+ function T(e) {
16
+ const { routing: o } = a().network;
17
+ return e !== void 0 && u("routingApiKey", "The `routingApiKey` prop is deprecated: use `config.network.routing.apiKey`."), p(() => o === !1 ? !1 : e && !(o != null && o.apiKey) ? { ...o, apiKey: e } : o ?? {}, [o, e]);
18
+ }
19
+ function k(e) {
20
+ const { network: o } = a(), s = T(e), t = n((r) => r.isToolAvailable("search")), i = n((r) => r.isToolAvailable("route"));
21
+ return m({ ...o, routing: s }, { search: t, route: i }).join(" | ");
22
+ }
23
+ export {
24
+ A as LAYOUT_SLOTS,
25
+ I as RootCssVarsContext,
26
+ N as RootTokensContext,
27
+ g as THEME_TOKENS,
28
+ x as applyRootTokens,
29
+ E as isControlVisible,
30
+ M as layoutGaps,
31
+ U as networkUnavailableTools,
32
+ w as readRootTokens,
33
+ y as resolveLayout,
34
+ m as serviceAttribution,
35
+ V as useContextMenu,
36
+ _ as useGeoJSONFileImport,
37
+ K as useOptionalEmit,
38
+ C as useRootTokens,
39
+ T as useRouting,
40
+ k as useServiceAttribution,
41
+ L as visibleLayoutEntries
42
+ };
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./EditToolbarBtn-dpCmKnzk.cjs");exports.Button=t.Button;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;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @element-editor/ui/primitives
3
+ *
4
+ * Lightweight base UI components with no map or store dependencies.
5
+ * Use this entry point when building custom layouts with adapter packages.
6
+ *
7
+ * @example
8
+ * import { Button, Tooltip, Input } from '@element-editor/ui/primitives'
9
+ */
10
+ export { Button } from './components/ui/Button.cjs';
11
+ export type { ButtonVariant, ButtonSize } from './components/ui/Button.cjs';
12
+ export { ContextMenu } from './components/ui/ContextMenu.cjs';
13
+ export { Input, Textarea, SelectInput } from './components/ui/Input.cjs';
14
+ export { Kbd, KbdDark, KbdInvert } from './components/ui/Kbd.cjs';
15
+ export { SearchDropdown } from './components/ui/SearchDropdown.cjs';
16
+ export type { SearchDropdownHandle } from './components/ui/SearchDropdown.cjs';
17
+ export { ToolButton } from './components/ui/ToolButton.cjs';
18
+ export { Tooltip } from './components/ui/Tooltip.cjs';
19
+ export { EditToolbarBtn, ToolbarDivider } from './components/ui/EditToolbarBtn.cjs';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @element-editor/ui/primitives
3
+ *
4
+ * Lightweight base UI components with no map or store dependencies.
5
+ * Use this entry point when building custom layouts with adapter packages.
6
+ *
7
+ * @example
8
+ * import { Button, Tooltip, Input } from '@element-editor/ui/primitives'
9
+ */
10
+ export { Button } from './components/ui/Button.js';
11
+ export type { ButtonVariant, ButtonSize } from './components/ui/Button.js';
12
+ export { ContextMenu } from './components/ui/ContextMenu.js';
13
+ export { Input, Textarea, SelectInput } from './components/ui/Input.js';
14
+ export { Kbd, KbdDark, KbdInvert } from './components/ui/Kbd.js';
15
+ export { SearchDropdown } from './components/ui/SearchDropdown.js';
16
+ export type { SearchDropdownHandle } from './components/ui/SearchDropdown.js';
17
+ export { ToolButton } from './components/ui/ToolButton.js';
18
+ export { Tooltip } from './components/ui/Tooltip.js';
19
+ export { EditToolbarBtn, ToolbarDivider } from './components/ui/EditToolbarBtn.js';
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { B as o, C as s, E as e, I as n, K as r, a as d, b, S as l, c as u, T, d as i, e as p, f as c } from "./EditToolbarBtn-SZIsnIn3.js";
3
+ export {
4
+ o as Button,
5
+ s as ContextMenu,
6
+ e as EditToolbarBtn,
7
+ n as Input,
8
+ r as Kbd,
9
+ d as KbdDark,
10
+ b as KbdInvert,
11
+ l as SearchDropdown,
12
+ u as SelectInput,
13
+ T as Textarea,
14
+ i as ToolButton,
15
+ p as ToolbarDivider,
16
+ c as Tooltip
17
+ };
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { StoreApi } from 'zustand';
3
+ import { DataStore, UIStore } from '@element-editor/core';
4
+ /** UI stores whose GeoJSON inspector is still in its on-load open (`ui.geojsonEditorOpen`); it doesn't take focus. */
5
+ export declare const inspectorOpenedOnLoad: WeakSet<StoreApi<UIStore>>;
6
+ interface StoreContextValue {
7
+ dataStore: StoreApi<DataStore>;
8
+ uiStore: StoreApi<UIStore>;
9
+ }
10
+ export declare const StoreContext: React.Context<StoreContextValue | null>;
11
+ export declare function GeoStoreProvider({ children }: {
12
+ children: React.ReactNode;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function useDataStore<T>(selector: (state: DataStore) => T): T;
15
+ export declare function useUIStore<T>(selector: (state: UIStore) => T): T;
16
+ export declare function useGeoStore(): StoreContextValue;
17
+ export {};
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { StoreApi } from 'zustand';
3
+ import { DataStore, UIStore } from '@element-editor/core';
4
+ /** UI stores whose GeoJSON inspector is still in its on-load open (`ui.geojsonEditorOpen`); it doesn't take focus. */
5
+ export declare const inspectorOpenedOnLoad: WeakSet<StoreApi<UIStore>>;
6
+ interface StoreContextValue {
7
+ dataStore: StoreApi<DataStore>;
8
+ uiStore: StoreApi<UIStore>;
9
+ }
10
+ export declare const StoreContext: React.Context<StoreContextValue | null>;
11
+ export declare function GeoStoreProvider({ children }: {
12
+ children: React.ReactNode;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function useDataStore<T>(selector: (state: DataStore) => T): T;
15
+ export declare function useUIStore<T>(selector: (state: UIStore) => T): T;
16
+ export declare function useGeoStore(): StoreContextValue;
17
+ export {};
@@ -0,0 +1,95 @@
1
+ import { ElementEditorError, ErrorCode, ErrorSource } from '@element-editor/core';
2
+ /**
3
+ * Events emitted by the Element library.
4
+ *
5
+ * Pass an `onEvent` prop to `<ElementEditor>` to receive these instead of (or in
6
+ * addition to) the built-in sonner toasts. When `onEvent` is provided the
7
+ * library goes fully silent — no `<Toaster>` is rendered and no toasts are
8
+ * fired. The host app is responsible for surfacing notifications.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <ElementEditor
13
+ * onEvent={(e) => {
14
+ * if (e.type === 'feature:deleted') myToast(`Deleted "${e.label}"`)
15
+ * if (e.type === 'error') console.error(e.code, e.message)
16
+ * }}
17
+ * />
18
+ * ```
19
+ */
20
+ export type ElementEditorEvent =
21
+ /** A single feature was deleted. `undo()` reverts the deletion. */
22
+ {
23
+ type: 'feature:deleted';
24
+ featureId: string;
25
+ label: string;
26
+ undo: () => void;
27
+ }
28
+ /** Multiple features were deleted at once. `undo()` reverts the deletion. */
29
+ | {
30
+ type: 'features:deleted';
31
+ count: number;
32
+ undo: () => void;
33
+ }
34
+ /** A single feature was duplicated. */
35
+ | {
36
+ type: 'feature:duplicated';
37
+ featureId: string;
38
+ label: string;
39
+ }
40
+ /** Multiple features were duplicated at once. */
41
+ | {
42
+ type: 'features:duplicated';
43
+ count: number;
44
+ }
45
+ /** A multi-geometry feature was broken into individual features. */
46
+ | {
47
+ type: 'feature:broken';
48
+ featureId: string;
49
+ count: number;
50
+ undo: () => void;
51
+ }
52
+ /** The current selection was copied to the internal clipboard. */
53
+ | {
54
+ type: 'selection:copied';
55
+ }
56
+ /** Features were pasted from the internal clipboard. */
57
+ | {
58
+ type: 'selection:pasted';
59
+ count: number;
60
+ } | {
61
+ type: 'undo';
62
+ } | {
63
+ type: 'redo';
64
+ }
65
+ /**
66
+ * A recoverable error the user should be aware of. `code` / `source` are the same as on the
67
+ * {@link ElementEditorError} `onError` receives (which fires first; returning `false` from it
68
+ * stops this event).
69
+ */
70
+ | {
71
+ type: 'error';
72
+ code: ErrorCode;
73
+ source: ErrorSource;
74
+ message: string;
75
+ description?: string;
76
+ }
77
+ /** A non-blocking warning (e.g. converting a circle to a plain polygon). */
78
+ | {
79
+ type: 'warning';
80
+ message: string;
81
+ description?: string;
82
+ }
83
+ /** A positive confirmation (e.g. "Coordinate updated"). */
84
+ | {
85
+ type: 'success';
86
+ message: string;
87
+ description?: string;
88
+ };
89
+ /**
90
+ * `onError` handler. Called first for every runtime failure, also when `onEvent` is set and for
91
+ * "quiet" failures that show no toast (a failed preview, the system clipboard, the search box).
92
+ * Return nothing to keep the built-in handling, `false` to stop it (no toast, no `onEvent` error
93
+ * event: you show it), or a string to show that text instead (e.g. a translation keyed on `code`).
94
+ */
95
+ export type ElementEditorErrorHandler = (error: ElementEditorError) => void | false | string;
@@ -0,0 +1,95 @@
1
+ import { ElementEditorError, ErrorCode, ErrorSource } from '@element-editor/core';
2
+ /**
3
+ * Events emitted by the Element library.
4
+ *
5
+ * Pass an `onEvent` prop to `<ElementEditor>` to receive these instead of (or in
6
+ * addition to) the built-in sonner toasts. When `onEvent` is provided the
7
+ * library goes fully silent — no `<Toaster>` is rendered and no toasts are
8
+ * fired. The host app is responsible for surfacing notifications.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <ElementEditor
13
+ * onEvent={(e) => {
14
+ * if (e.type === 'feature:deleted') myToast(`Deleted "${e.label}"`)
15
+ * if (e.type === 'error') console.error(e.code, e.message)
16
+ * }}
17
+ * />
18
+ * ```
19
+ */
20
+ export type ElementEditorEvent =
21
+ /** A single feature was deleted. `undo()` reverts the deletion. */
22
+ {
23
+ type: 'feature:deleted';
24
+ featureId: string;
25
+ label: string;
26
+ undo: () => void;
27
+ }
28
+ /** Multiple features were deleted at once. `undo()` reverts the deletion. */
29
+ | {
30
+ type: 'features:deleted';
31
+ count: number;
32
+ undo: () => void;
33
+ }
34
+ /** A single feature was duplicated. */
35
+ | {
36
+ type: 'feature:duplicated';
37
+ featureId: string;
38
+ label: string;
39
+ }
40
+ /** Multiple features were duplicated at once. */
41
+ | {
42
+ type: 'features:duplicated';
43
+ count: number;
44
+ }
45
+ /** A multi-geometry feature was broken into individual features. */
46
+ | {
47
+ type: 'feature:broken';
48
+ featureId: string;
49
+ count: number;
50
+ undo: () => void;
51
+ }
52
+ /** The current selection was copied to the internal clipboard. */
53
+ | {
54
+ type: 'selection:copied';
55
+ }
56
+ /** Features were pasted from the internal clipboard. */
57
+ | {
58
+ type: 'selection:pasted';
59
+ count: number;
60
+ } | {
61
+ type: 'undo';
62
+ } | {
63
+ type: 'redo';
64
+ }
65
+ /**
66
+ * A recoverable error the user should be aware of. `code` / `source` are the same as on the
67
+ * {@link ElementEditorError} `onError` receives (which fires first; returning `false` from it
68
+ * stops this event).
69
+ */
70
+ | {
71
+ type: 'error';
72
+ code: ErrorCode;
73
+ source: ErrorSource;
74
+ message: string;
75
+ description?: string;
76
+ }
77
+ /** A non-blocking warning (e.g. converting a circle to a plain polygon). */
78
+ | {
79
+ type: 'warning';
80
+ message: string;
81
+ description?: string;
82
+ }
83
+ /** A positive confirmation (e.g. "Coordinate updated"). */
84
+ | {
85
+ type: 'success';
86
+ message: string;
87
+ description?: string;
88
+ };
89
+ /**
90
+ * `onError` handler. Called first for every runtime failure, also when `onEvent` is set and for
91
+ * "quiet" failures that show no toast (a failed preview, the system clipboard, the search box).
92
+ * Return nothing to keep the built-in handling, `false` to stop it (no toast, no `onEvent` error
93
+ * event: you show it), or a string to show that text instead (e.g. a translation keyed on `code`).
94
+ */
95
+ export type ElementEditorErrorHandler = (error: ElementEditorError) => void | false | string;