@octostar/map-component 0.1.16 → 0.1.19

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 (51) hide show
  1. package/dist/index.cjs +61 -35
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.mjs +62 -36
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/types/components/action-panel.d.ts +8 -0
  6. package/dist/types/components/action-panel.d.ts.map +1 -0
  7. package/dist/types/components/cluster-pie-chart.d.ts +16 -0
  8. package/dist/types/components/cluster-pie-chart.d.ts.map +1 -0
  9. package/dist/types/components/color-picker-popover.d.ts +9 -0
  10. package/dist/types/components/color-picker-popover.d.ts.map +1 -0
  11. package/dist/types/components/debug-sidebar.d.ts +14 -0
  12. package/dist/types/components/debug-sidebar.d.ts.map +1 -0
  13. package/dist/types/components/demos/feature-editor-demo.d.ts +2 -0
  14. package/dist/types/components/demos/feature-editor-demo.d.ts.map +1 -0
  15. package/dist/types/components/demos/point-editor-demo.d.ts +2 -0
  16. package/dist/types/components/demos/point-editor-demo.d.ts.map +1 -0
  17. package/dist/types/components/demos/search-filter-demo.d.ts +2 -0
  18. package/dist/types/components/demos/search-filter-demo.d.ts.map +1 -0
  19. package/dist/types/components/demos/standalone-demo.d.ts +2 -0
  20. package/dist/types/components/demos/standalone-demo.d.ts.map +1 -0
  21. package/dist/types/components/drawing-toolbar.d.ts +57 -0
  22. package/dist/types/components/drawing-toolbar.d.ts.map +1 -0
  23. package/dist/types/components/icon-picker.d.ts +20 -0
  24. package/dist/types/components/icon-picker.d.ts.map +1 -0
  25. package/dist/types/components/layers-panel.d.ts +124 -0
  26. package/dist/types/components/layers-panel.d.ts.map +1 -0
  27. package/dist/types/components/map-drop-zone.d.ts +7 -0
  28. package/dist/types/components/map-drop-zone.d.ts.map +1 -0
  29. package/dist/types/components/map-editor-canvas.d.ts +5 -0
  30. package/dist/types/components/map-editor-canvas.d.ts.map +1 -0
  31. package/dist/types/components/properties-panel.d.ts +32 -0
  32. package/dist/types/components/properties-panel.d.ts.map +1 -0
  33. package/dist/types/components/status-indicator.d.ts +10 -0
  34. package/dist/types/components/status-indicator.d.ts.map +1 -0
  35. package/dist/types/components/timebar.d.ts +15 -0
  36. package/dist/types/components/timebar.d.ts.map +1 -0
  37. package/dist/types/hooks/toast-context.d.ts +7 -0
  38. package/dist/types/hooks/toast-context.d.ts.map +1 -0
  39. package/dist/types/hooks/use-toast.d.ts +5 -0
  40. package/dist/types/hooks/use-toast.d.ts.map +1 -0
  41. package/dist/types/index.d.ts +28 -0
  42. package/dist/types/index.d.ts.map +1 -0
  43. package/dist/types/lib/map-editor-api.d.ts +547 -0
  44. package/dist/types/lib/map-editor-api.d.ts.map +1 -0
  45. package/dist/types/lib/queryClient.d.ts +9 -0
  46. package/dist/types/lib/queryClient.d.ts.map +1 -0
  47. package/dist/types/lib/timeline-store.d.ts +37 -0
  48. package/dist/types/lib/timeline-store.d.ts.map +1 -0
  49. package/dist/types/lib/utils.d.ts +3 -0
  50. package/dist/types/lib/utils.d.ts.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ interface ActionPanelProps {
2
+ onSave: () => void;
3
+ onLoad: () => void;
4
+ disabled?: boolean;
5
+ }
6
+ export declare function ActionPanel({ onSave, onLoad, disabled }: ActionPanelProps): import("react").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=action-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-panel.d.ts","sourceRoot":"","sources":["../../../client/src/components/action-panel.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,+BA4CzE"}
@@ -0,0 +1,16 @@
1
+ import maplibregl from 'maplibre-gl';
2
+ interface ClusterPieProps {
3
+ map: maplibregl.Map;
4
+ sourceId: string;
5
+ layerId: string;
6
+ categoryValues: string[];
7
+ categoryColorMap: Record<string, string>;
8
+ visible: boolean;
9
+ }
10
+ export declare function ClusterPieManager(props: ClusterPieProps): null;
11
+ export declare function createClusterPieManager(map: maplibregl.Map, sourceId: string, categoryValues: string[], categoryColorMap: Record<string, string>): {
12
+ update: () => void;
13
+ destroy: () => void;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=cluster-pie-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-pie-chart.d.ts","sourceRoot":"","sources":["../../../client/src/components/cluster-pie-chart.tsx"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,aAAa,CAAC;AAQrC,UAAU,eAAe;IACvB,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAyJD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,QAiIvD;AAGD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,UAAU,CAAC,GAAG,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC;IAAE,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAkG7C"}
@@ -0,0 +1,9 @@
1
+ declare const PRESET_COLORS: string[];
2
+ interface ColorPickerPopoverProps {
3
+ value: string;
4
+ onChange: (color: string) => void;
5
+ testId?: string;
6
+ }
7
+ export declare function ColorPickerPopover({ value, onChange, testId }: ColorPickerPopoverProps): import("react").JSX.Element;
8
+ export { PRESET_COLORS };
9
+ //# sourceMappingURL=color-picker-popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-picker-popover.d.ts","sourceRoot":"","sources":["../../../client/src/components/color-picker-popover.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,aAAa,UAWlB,CAAC;AAEF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAsDtF;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Parse KML file content to GeoJSON using @mapbox/togeojson
3
+ */
4
+ export declare function parseKMLToGeoJSON(kmlContent: string): GeoJSON.FeatureCollection | null;
5
+ interface DebugSidebarProps {
6
+ onAddRandomPoints: (features: GeoJSON.Feature[]) => void;
7
+ onImportKML?: (name: string, geojson: GeoJSON.FeatureCollection) => void;
8
+ canAddFeatures?: boolean;
9
+ className?: string;
10
+ onCloseMap?: () => void;
11
+ }
12
+ export declare function DebugSidebar({ onAddRandomPoints, onImportKML, canAddFeatures, className, onCloseMap }: DebugSidebarProps): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=debug-sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-sidebar.d.ts","sourceRoot":"","sources":["../../../client/src/components/debug-sidebar.tsx"],"names":[],"mappings":"AA6jBA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAmBtF;AAgLD,UAAU,iBAAiB;IACzB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;IACzD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAqB,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,iBAAiB,+BAmQ/H"}
@@ -0,0 +1,2 @@
1
+ export declare function FeatureEditorDemo(): import("react").JSX.Element;
2
+ //# sourceMappingURL=feature-editor-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-editor-demo.d.ts","sourceRoot":"","sources":["../../../../client/src/components/demos/feature-editor-demo.tsx"],"names":[],"mappings":"AA6FA,wBAAgB,iBAAiB,gCA0lBhC"}
@@ -0,0 +1,2 @@
1
+ export declare function PointEditorDemo(): import("react").JSX.Element;
2
+ //# sourceMappingURL=point-editor-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-editor-demo.d.ts","sourceRoot":"","sources":["../../../../client/src/components/demos/point-editor-demo.tsx"],"names":[],"mappings":"AAgGA,wBAAgB,eAAe,gCA0Q9B"}
@@ -0,0 +1,2 @@
1
+ export declare function SearchFilterDemo(): import("react").JSX.Element;
2
+ //# sourceMappingURL=search-filter-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-filter-demo.d.ts","sourceRoot":"","sources":["../../../../client/src/components/demos/search-filter-demo.tsx"],"names":[],"mappings":"AAyKA,wBAAgB,gBAAgB,gCA0O/B"}
@@ -0,0 +1,2 @@
1
+ export declare function StandaloneDemo(): import("react").JSX.Element;
2
+ //# sourceMappingURL=standalone-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-demo.d.ts","sourceRoot":"","sources":["../../../../client/src/components/demos/standalone-demo.tsx"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,gCAwlB7B"}
@@ -0,0 +1,57 @@
1
+ import type { GeocoderProvider } from '@/lib/map-editor-api';
2
+ export type DrawingMode = 'simple_select' | 'view_select' | 'draw_point' | 'draw_line_string' | 'draw_polygon' | 'draw_rectangle' | 'direct_select' | 'draw_text' | 'draw_arrow' | 'draw_circle';
3
+ export type MeasureMode = 'none' | 'distance' | 'area';
4
+ export type SelectionMode = 'click' | 'rectangle' | 'polygon' | 'circle';
5
+ interface DrawingToolbarProps {
6
+ activeMode: DrawingMode;
7
+ onModeChange: (mode: DrawingMode) => void;
8
+ onClear: () => void;
9
+ onDeleteSelected: () => void;
10
+ onUndo: () => void;
11
+ onRedo: () => void;
12
+ featureCount: number;
13
+ selectedCount: number;
14
+ canUndo: boolean;
15
+ canRedo: boolean;
16
+ disabled?: boolean;
17
+ isEditMode: boolean;
18
+ onToggleEditMode: () => void;
19
+ hasVisibleLayers: boolean;
20
+ hasEditableLayer: boolean;
21
+ measureMode: MeasureMode;
22
+ onMeasureModeChange: (mode: MeasureMode) => void;
23
+ selectionMode: SelectionMode;
24
+ onSelectionModeChange: (mode: SelectionMode) => void;
25
+ enableMeasurement?: boolean;
26
+ enableSelection?: boolean;
27
+ hiddenDrawingTools?: ('point' | 'line' | 'polygon' | 'text' | 'arrow' | 'circle')[];
28
+ hiddenSelectionTools?: ('click' | 'rectangle' | 'polygon' | 'circle')[];
29
+ selectionOnly?: boolean;
30
+ onGoTo?: (coords: [number, number], zoom?: number) => void;
31
+ onDropPoint?: (coords: [number, number], name?: string) => void;
32
+ showGoToButton?: boolean;
33
+ onFitToFeatures?: () => void;
34
+ isSelectionToolActive?: boolean;
35
+ onSelectionToolActiveChange?: (active: boolean) => void;
36
+ showClearFilter?: boolean;
37
+ onClearFilter?: () => void;
38
+ /** Notifies the parent when the filter tool is toggled on or off */
39
+ onFilterActiveChange?: (active: boolean) => void;
40
+ /** Callback to invoke the external search engine - when provided, shows "+" add menu */
41
+ onSearchEngineRequest?: () => Promise<void>;
42
+ /** Whether the search engine request is currently in progress */
43
+ isSearchEngineLoading?: boolean;
44
+ /** Custom geocoding URL - should accept ?q={query} parameter and return Nominatim-compatible JSON */
45
+ geocodingUrl?: string;
46
+ /** Custom geocoder provider function - use instead of geocodingUrl when geocoding is an internal API */
47
+ geocoderProvider?: GeocoderProvider;
48
+ /** Whether to show keyboard shortcut hints in tooltips and menus. Default: true. */
49
+ showShortcutHints?: boolean;
50
+ /** When true, render each selection tool as a separate button instead of a dropdown */
51
+ expandSelectionTools?: boolean;
52
+ /** Show a dedicated Filter button that activates rectangle selection for geo-filtering */
53
+ showFilterTool?: boolean;
54
+ }
55
+ export declare function DrawingToolbar({ activeMode, onModeChange, onClear, onDeleteSelected, onUndo, onRedo, featureCount, selectedCount, canUndo, canRedo, disabled, isEditMode, onToggleEditMode, hasVisibleLayers, hasEditableLayer, measureMode, onMeasureModeChange, selectionMode, onSelectionModeChange, enableMeasurement, enableSelection, hiddenDrawingTools, hiddenSelectionTools, selectionOnly, onGoTo, onDropPoint, showGoToButton, onFitToFeatures, isSelectionToolActive, onSelectionToolActiveChange, showClearFilter, onClearFilter, onFilterActiveChange, onSearchEngineRequest, geocodingUrl, geocoderProvider, showShortcutHints, expandSelectionTools, showFilterTool, }: DrawingToolbarProps): import("react").JSX.Element;
56
+ export {};
57
+ //# sourceMappingURL=drawing-toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawing-toolbar.d.ts","sourceRoot":"","sources":["../../../client/src/components/drawing-toolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type LucideIcon } from 'lucide-react';
2
+ interface IconDef {
3
+ id: string;
4
+ name: string;
5
+ icon: LucideIcon;
6
+ category: string;
7
+ }
8
+ declare const ICONS: IconDef[];
9
+ declare const ICON_MAP: Map<string, LucideIcon>;
10
+ interface IconPickerProps {
11
+ value: string;
12
+ onChange: (icon: string) => void;
13
+ disabled?: boolean;
14
+ }
15
+ export declare function IconPicker({ value, onChange, disabled }: IconPickerProps): import("react").JSX.Element;
16
+ export declare function getIconComponent(iconId: string): LucideIcon | null;
17
+ export declare function isValidIconId(value: string): boolean;
18
+ export { ICONS, ICON_MAP };
19
+ export type { IconDef };
20
+ //# sourceMappingURL=icon-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-picker.d.ts","sourceRoot":"","sources":["../../../client/src/components/icon-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAmBL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,KAAK,EAAE,OAAO,EAqInB,CAAC;AAqBF,QAAA,MAAM,QAAQ,yBAA8D,CAAC;AAE7E,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAgB,EAAE,EAAE,eAAe,+BAuKhF;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAElE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC3B,YAAY,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { Map } from 'lucide-react';
2
+ export type BuiltInMapStyle = 'streets' | 'satellite' | 'dark';
3
+ export type MapStyle = BuiltInMapStyle | (string & {});
4
+ export declare const MAP_STYLES: {
5
+ id: MapStyle;
6
+ name: string;
7
+ icon: typeof Map;
8
+ }[];
9
+ export interface TraceConfig {
10
+ enabled: boolean;
11
+ groupByField: string | null;
12
+ }
13
+ export interface HeatmapConfig {
14
+ enabled: boolean;
15
+ intensity: number;
16
+ radius: number;
17
+ hideFeatures?: boolean;
18
+ }
19
+ export interface ClusterConfig {
20
+ enabled: boolean;
21
+ groupByField: string | null;
22
+ showPointDots?: boolean;
23
+ }
24
+ export type LabelMode = 'standard' | 'field' | 'fixed';
25
+ export type SizeMode = 'standard' | 'field' | 'override';
26
+ export type ColorMode = 'standard' | 'field' | 'fixed';
27
+ export interface LabelConfig {
28
+ mode: LabelMode;
29
+ fieldName?: string;
30
+ fixedText?: string;
31
+ }
32
+ export interface SizeConfig {
33
+ mode: SizeMode;
34
+ fieldName?: string;
35
+ overrideValue?: number;
36
+ }
37
+ export interface ColorConfig {
38
+ mode: ColorMode;
39
+ fieldName?: string;
40
+ fixedColor?: string;
41
+ }
42
+ export interface IconConfig {
43
+ enabled: boolean;
44
+ icon: string;
45
+ size: number;
46
+ }
47
+ export interface VisualConfig {
48
+ label?: LabelConfig;
49
+ size?: SizeConfig;
50
+ color?: ColorConfig;
51
+ icon?: IconConfig;
52
+ }
53
+ export type AltitudeDisplayMode = '3d' | 'flat' | 'both';
54
+ export interface Layer {
55
+ id: string;
56
+ name: string;
57
+ visible: boolean;
58
+ featureIds: string[];
59
+ readOnly?: boolean;
60
+ traceConfig?: TraceConfig;
61
+ heatmapConfig?: HeatmapConfig;
62
+ clusterConfig?: ClusterConfig;
63
+ visualConfig?: VisualConfig;
64
+ altitudeDisplayMode?: AltitudeDisplayMode;
65
+ hasAltitudeData?: boolean;
66
+ }
67
+ export interface AutoLabelConfig {
68
+ enabled: boolean;
69
+ threshold: number;
70
+ }
71
+ interface LayersPanelProps {
72
+ layers: Layer[];
73
+ onAddLayer: (name: string) => void;
74
+ onRemoveLayer: (layerId: string) => void;
75
+ onRenameLayer: (layerId: string, name: string) => void;
76
+ onToggleLayerVisibility: (layerId: string) => void;
77
+ onMoveFeatureToLayer: (featureId: string, layerId: string) => void;
78
+ selectedFeatureIds: string[];
79
+ getFeatureCount: (layerId: string) => number;
80
+ /** Get count of unsaved features in a layer (for displaying unsaved badge) */
81
+ getLayerUnsavedCount?: (layerId: string) => number;
82
+ /** Get total count of unsaved features across all layers (for map-level indicator) */
83
+ getMapUnsavedCount?: () => number;
84
+ activeEditingLayerId: string;
85
+ onSetActiveEditingLayer: (layerId: string) => void;
86
+ onSaveLayerGeoJSON: (layerId: string) => void;
87
+ onLoadLayerGeoJSON: (layerId: string) => void;
88
+ onLoadNewLayerGeoJSON: () => void;
89
+ onSaveAllGeoJSON: () => void;
90
+ onSearchAndAddToNewLayer?: () => Promise<void>;
91
+ onWorkspaceLoad?: (layerId: string) => Promise<void>;
92
+ onWorkspaceSave?: (layerId: string) => Promise<void>;
93
+ onFitToFeatures?: () => void;
94
+ onFitToLayerFeatures?: (layerId: string) => void;
95
+ currentMapStyle: MapStyle;
96
+ onMapStyleChange: (style: MapStyle) => void;
97
+ onUpdateTraceConfig: (layerId: string, config: TraceConfig) => void;
98
+ getAvailableTraceFields: (layerId: string) => string[];
99
+ getLayerFields?: (layerId: string) => {
100
+ name: string;
101
+ isNumeric: boolean;
102
+ }[];
103
+ onUpdateHeatmapConfig?: (layerId: string, config: HeatmapConfig) => void;
104
+ onUpdateClusterConfig?: (layerId: string, config: ClusterConfig) => void;
105
+ onUpdateVisualConfig?: (layerId: string, config: VisualConfig) => void;
106
+ hasPointFeatures?: (layerId: string) => boolean;
107
+ autoLabelConfig?: AutoLabelConfig;
108
+ onUpdateAutoLabelConfig?: (config: AutoLabelConfig) => void;
109
+ visibleFeatureCount?: number;
110
+ is3DTerrainEnabled?: boolean;
111
+ onToggle3DTerrain?: () => void;
112
+ onUpdateAltitudeDisplayMode?: (layerId: string, mode: AltitudeDisplayMode) => void;
113
+ /** Hide satellite basemap option (for air-gapped deployments) */
114
+ hideSatellite?: boolean;
115
+ /** Hide terrain basemap and 3D toggle (for air-gapped deployments) */
116
+ hideTerrain?: boolean;
117
+ /** Hide the entire basemap style switcher (for air-gapped deployments with only a local tile server) */
118
+ hideBasemapSwitcher?: boolean;
119
+ /** When true, hide unsaved badges (persistence is handled externally) */
120
+ externalPersistence?: boolean;
121
+ }
122
+ export declare function LayersPanel({ layers, onAddLayer, onRemoveLayer, onRenameLayer, onToggleLayerVisibility, onMoveFeatureToLayer, selectedFeatureIds, getFeatureCount, getLayerUnsavedCount, getMapUnsavedCount, activeEditingLayerId, onSetActiveEditingLayer, onSaveLayerGeoJSON, onLoadLayerGeoJSON, onLoadNewLayerGeoJSON, onSaveAllGeoJSON, onSearchAndAddToNewLayer, onWorkspaceLoad, onWorkspaceSave, onFitToFeatures, onFitToLayerFeatures, currentMapStyle, onMapStyleChange, onUpdateTraceConfig, getAvailableTraceFields, getLayerFields, onUpdateHeatmapConfig, onUpdateClusterConfig, onUpdateVisualConfig, hasPointFeatures, autoLabelConfig, onUpdateAutoLabelConfig, visibleFeatureCount, is3DTerrainEnabled, onToggle3DTerrain, onUpdateAltitudeDisplayMode, hideSatellite, hideTerrain, hideBasemapSwitcher, externalPersistence, }: LayersPanelProps): import("react").JSX.Element;
123
+ export {};
124
+ //# sourceMappingURL=layers-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers-panel.d.ts","sourceRoot":"","sources":["../../../client/src/components/layers-panel.tsx"],"names":[],"mappings":"AACA,OAAO,EAA0G,GAAG,EAA0E,MAAM,cAAc,CAAC;AAKnN,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,CAAA;CAAE,EAIxE,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,eAAe,EAAE,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACpE,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC7E,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACzE,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACzE,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACvE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,2BAA2B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnF,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wGAAwG;IACxG,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,UAAU,EACV,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,kBAA0B,EAC1B,iBAAiB,EACjB,2BAA2B,EAC3B,aAAqB,EACrB,WAAmB,EACnB,mBAA2B,EAC3B,mBAA2B,GAC5B,EAAE,gBAAgB,+BAy1BlB"}
@@ -0,0 +1,7 @@
1
+ interface MapDropZoneProps {
2
+ onDrop: (name: string, data: GeoJSON.FeatureCollection) => void;
3
+ children: React.ReactNode;
4
+ }
5
+ export declare function MapDropZone({ onDrop, children }: MapDropZoneProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=map-drop-zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-drop-zone.d.ts","sourceRoot":"","sources":["../../../client/src/components/map-drop-zone.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,+BAgEjE"}
@@ -0,0 +1,5 @@
1
+ import 'maplibre-gl/dist/maplibre-gl.css';
2
+ import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
3
+ import type { MapEditorHandle, MapEditorProps } from '@/lib/map-editor-api';
4
+ export declare const MapEditorCanvas: import("react").ForwardRefExoticComponent<MapEditorProps & import("react").RefAttributes<MapEditorHandle>>;
5
+ //# sourceMappingURL=map-editor-canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-editor-canvas.d.ts","sourceRoot":"","sources":["../../../client/src/components/map-editor-canvas.tsx"],"names":[],"mappings":"AA2IA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gDAAgD,CAAC;AA+NxD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgF5E,eAAO,MAAM,eAAe,4GAyoO1B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { EntityCardProvider, TypePickerProvider, FeatureSaveProvider } from '@/lib/map-editor-api';
2
+ interface FeatureProperties {
3
+ name?: string;
4
+ description?: string;
5
+ [key: string]: unknown;
6
+ }
7
+ interface SelectedFeature {
8
+ id: string;
9
+ type: string;
10
+ properties: FeatureProperties;
11
+ geometry: GeoJSON.Geometry;
12
+ }
13
+ interface PropertiesPanelProps {
14
+ selectedFeatures: SelectedFeature[];
15
+ onUpdateProperties: (featureId: string, properties: FeatureProperties) => void;
16
+ onUpdateGeometry?: (featureId: string, geometry: GeoJSON.Geometry) => void;
17
+ onClose: () => void;
18
+ isEditMode?: boolean;
19
+ layerName?: string;
20
+ layerId?: string;
21
+ autoFocusLabel?: boolean;
22
+ entityCardProvider?: EntityCardProvider;
23
+ typePickerProvider?: TypePickerProvider;
24
+ featureSaveProvider?: FeatureSaveProvider;
25
+ onFeatureSaved?: (featureId: string, newId: string, metadata: {
26
+ workspace: string;
27
+ sourceName: string;
28
+ }) => void;
29
+ }
30
+ export declare function PropertiesPanel({ selectedFeatures, onUpdateProperties, onUpdateGeometry, onClose, isEditMode, layerName, layerId, autoFocusLabel, entityCardProvider, typePickerProvider, featureSaveProvider, onFeatureSaved }: PropertiesPanelProps): import("react").JSX.Element | null;
31
+ export {};
32
+ //# sourceMappingURL=properties-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties-panel.d.ts","sourceRoot":"","sources":["../../../client/src/components/properties-panel.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAc,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAkBxI,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;CAC5B;AAED,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/E,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAClH;AAmED,wBAAgB,eAAe,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,cAAsB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE,oBAAoB,sCA+lCpQ"}
@@ -0,0 +1,10 @@
1
+ import type { DrawingMode, SelectionMode } from '@/components/drawing-toolbar';
2
+ interface StatusIndicatorProps {
3
+ activeMode: DrawingMode;
4
+ featureCount: number;
5
+ selectedCount?: number;
6
+ selectionMode?: SelectionMode;
7
+ }
8
+ export declare function StatusIndicator({ featureCount, selectedCount }: StatusIndicatorProps): import("react").JSX.Element | null;
9
+ export {};
10
+ //# sourceMappingURL=status-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-indicator.d.ts","sourceRoot":"","sources":["../../../client/src/components/status-indicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE/E,UAAU,oBAAoB;IAC5B,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAgB,eAAe,CAAC,EAAE,YAAY,EAAE,aAAiB,EAAE,EAAE,oBAAoB,sCAyBxF"}
@@ -0,0 +1,15 @@
1
+ export declare const TIMEBAR_HEIGHT = 152;
2
+ export declare const TIMEBAR_BOTTOM_OFFSET = 12;
3
+ interface TimebarProps {
4
+ onFilterChange: (visibleIds: string[], hiddenIds: string[], untimedIds: string[]) => void;
5
+ selectedFeatureIds?: string[];
6
+ selectedFeatureColors?: Map<string, string>;
7
+ className?: string;
8
+ }
9
+ export declare function TimebarToggle({ onClick, hasData }: {
10
+ onClick: () => void;
11
+ hasData: boolean;
12
+ }): import("react").JSX.Element | null;
13
+ export declare function Timebar({ onFilterChange, selectedFeatureIds, selectedFeatureColors, className }: TimebarProps): import("react").JSX.Element | null;
14
+ export {};
15
+ //# sourceMappingURL=timebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timebar.d.ts","sourceRoot":"","sources":["../../../client/src/components/timebar.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,UAAU,YAAY;IACpB,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1F,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2KD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,sCAa5F;AAED,wBAAgB,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAuB,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,YAAY,sCA2QlH"}
@@ -0,0 +1,7 @@
1
+ export type ToastFn = (options: {
2
+ title?: string;
3
+ description?: string;
4
+ variant?: 'default' | 'destructive';
5
+ }) => void;
6
+ export declare const ToastContext: import("react").Context<ToastFn | null>;
7
+ //# sourceMappingURL=toast-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-context.d.ts","sourceRoot":"","sources":["../../../client/src/hooks/toast-context.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;CAAE,KAAK,IAAI,CAAC;AAEvH,eAAO,MAAM,YAAY,yCAAsC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function useToast(): {
2
+ toast: import("./toast-context").ToastFn;
3
+ };
4
+ export { useToast as toast };
5
+ //# sourceMappingURL=use-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../../client/src/hooks/use-toast.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ;;EA2BvB;AAED,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @octostar/map-component
3
+ *
4
+ * A powerful MapLibre-based map editor component for React applications.
5
+ * Provides drawing tools, layer management, timeline filtering, and more.
6
+ */
7
+ import './index.css';
8
+ export { MapEditorCanvas } from './components/map-editor-canvas';
9
+ export type { MapEditorHandle, MapEditorConfig, MapEditorProps, ViewportInfo, SearchEngineParams, SearchEngineCallback, GeocoderResult, GeocoderProvider, EntityType, EntityCardProvider, TypePickerProvider, ContextMenuContext, ContextMenuItem, ContextMenuProvider, RasterBasemapDefinition, VectorBasemapDefinition, BasemapDefinition, BuiltInBasemapStyle, TooltipProvider, } from './lib/map-editor-api';
10
+ export { LayersPanel, MAP_STYLES } from './components/layers-panel';
11
+ export type { Layer, BuiltInMapStyle, MapStyle, TraceConfig, HeatmapConfig, ClusterConfig, LabelMode, SizeMode, ColorMode, LabelConfig, SizeConfig, ColorConfig, IconConfig, VisualConfig, AltitudeDisplayMode, AutoLabelConfig, } from './components/layers-panel';
12
+ export { DrawingToolbar } from './components/drawing-toolbar';
13
+ export type { DrawingMode, MeasureMode, SelectionMode, } from './components/drawing-toolbar';
14
+ export { PropertiesPanel } from './components/properties-panel';
15
+ export { Timebar, TimebarToggle, TIMEBAR_HEIGHT, TIMEBAR_BOTTOM_OFFSET } from './components/timebar';
16
+ export { StatusIndicator } from './components/status-indicator';
17
+ export { ColorPickerPopover, PRESET_COLORS } from './components/color-picker-popover';
18
+ export { IconPicker, getIconComponent, isValidIconId } from './components/icon-picker';
19
+ export type { IconDef } from './components/icon-picker';
20
+ export { MapDropZone } from './components/map-drop-zone';
21
+ export { ActionPanel } from './components/action-panel';
22
+ export { ClusterPieManager, createClusterPieManager } from './components/cluster-pie-chart';
23
+ export { DebugSidebar, parseKMLToGeoJSON } from './components/debug-sidebar';
24
+ export { cn } from './lib/utils';
25
+ export { useToast, toast } from './hooks/use-toast';
26
+ export { useTimelineStore, isFeatureInRange, normalizeTemporalProperties } from './lib/timeline-store';
27
+ export type { TemporalFeature, TimelineState } from './lib/timeline-store';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EACV,KAAK,EACL,eAAe,EACf,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGrG,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvF,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG5F,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}