@wenle_2523097/agri-map 1.0.1 → 1.0.3

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 (190) hide show
  1. package/README.md +63 -0
  2. package/dist/components/ConfigProvider/index.d.ts +15 -0
  3. package/dist/components/ConfigProvider/index.d.ts.map +1 -0
  4. package/dist/components/DualScaleControl/index.d.ts +10 -0
  5. package/dist/components/DualScaleControl/index.d.ts.map +1 -0
  6. package/dist/components/Icons/SelectIcon.d.ts +68 -0
  7. package/dist/components/Icons/SelectIcon.d.ts.map +1 -0
  8. package/dist/components/Icons/index.d.ts +43 -0
  9. package/dist/components/Icons/index.d.ts.map +1 -0
  10. package/dist/components/Irrigation/index.d.ts +8 -0
  11. package/dist/components/Irrigation/index.d.ts.map +1 -0
  12. package/dist/components/Irrigation/toolbar.d.ts +6 -0
  13. package/dist/components/Irrigation/toolbar.d.ts.map +1 -0
  14. package/dist/components/Loading/index.d.ts +40 -0
  15. package/dist/components/Loading/index.d.ts.map +1 -0
  16. package/dist/components/MapContent/index.d.ts +17 -0
  17. package/dist/components/MapContent/index.d.ts.map +1 -0
  18. package/dist/components/MapSizeHandler/index.d.ts +24 -0
  19. package/dist/components/MapSizeHandler/index.d.ts.map +1 -0
  20. package/dist/components/Marker/ClusterView.d.ts +29 -0
  21. package/dist/components/Marker/ClusterView.d.ts.map +1 -0
  22. package/dist/components/Marker/MapClickHandler.d.ts +25 -0
  23. package/dist/components/Marker/MapClickHandler.d.ts.map +1 -0
  24. package/dist/components/Marker/index.d.ts +61 -0
  25. package/dist/components/Marker/index.d.ts.map +1 -0
  26. package/dist/components/Marker/parseClusterConfig.d.ts +25 -0
  27. package/dist/components/Marker/parseClusterConfig.d.ts.map +1 -0
  28. package/dist/components/Marker/toolbar.d.ts +6 -0
  29. package/dist/components/Marker/toolbar.d.ts.map +1 -0
  30. package/dist/components/Marker/useEditHandlers.d.ts +44 -0
  31. package/dist/components/Marker/useEditHandlers.d.ts.map +1 -0
  32. package/dist/components/Marker/useIconConfig.d.ts +23 -0
  33. package/dist/components/Marker/useIconConfig.d.ts.map +1 -0
  34. package/dist/components/Marker/useMarkerCommands.d.ts +30 -0
  35. package/dist/components/Marker/useMarkerCommands.d.ts.map +1 -0
  36. package/dist/components/Measurement/toolbar.d.ts +20 -0
  37. package/dist/components/Measurement/toolbar.d.ts.map +1 -0
  38. package/dist/components/MiniMap/index.d.ts +16 -0
  39. package/dist/components/MiniMap/index.d.ts.map +1 -0
  40. package/dist/components/Notification/index.d.ts +12 -0
  41. package/dist/components/Notification/index.d.ts.map +1 -0
  42. package/dist/components/PlotGroupLayer/index.d.ts +8 -0
  43. package/dist/components/PlotGroupLayer/index.d.ts.map +1 -0
  44. package/dist/components/PlotLayer/index.d.ts +7 -0
  45. package/dist/components/PlotLayer/index.d.ts.map +1 -0
  46. package/dist/components/PlotLayer/label.d.ts +12 -0
  47. package/dist/components/PlotLayer/label.d.ts.map +1 -0
  48. package/dist/components/PlotLayer/leaflet-types.d.ts +59 -0
  49. package/dist/components/PlotLayer/leaflet-types.d.ts.map +1 -0
  50. package/dist/components/PlotLayer/parseConfig.d.ts +15 -0
  51. package/dist/components/PlotLayer/parseConfig.d.ts.map +1 -0
  52. package/dist/components/PlotLayer/toolbar.d.ts +6 -0
  53. package/dist/components/PlotLayer/toolbar.d.ts.map +1 -0
  54. package/dist/components/PlotLayer/types.d.ts +10 -0
  55. package/dist/components/PlotLayer/types.d.ts.map +1 -0
  56. package/dist/components/PlotLayer/usePlotCommands.d.ts +33 -0
  57. package/dist/components/PlotLayer/usePlotCommands.d.ts.map +1 -0
  58. package/dist/components/PlotLayer/usePlotData.d.ts +32 -0
  59. package/dist/components/PlotLayer/usePlotData.d.ts.map +1 -0
  60. package/dist/components/PlotLayer/usePlotEditMode.d.ts +92 -0
  61. package/dist/components/PlotLayer/usePlotEditMode.d.ts.map +1 -0
  62. package/dist/components/Road/index.d.ts +8 -0
  63. package/dist/components/Road/index.d.ts.map +1 -0
  64. package/dist/components/Road/toolbar.d.ts +6 -0
  65. package/dist/components/Road/toolbar.d.ts.map +1 -0
  66. package/dist/components/TianDiTuLayer/index.d.ts +15 -0
  67. package/dist/components/TianDiTuLayer/index.d.ts.map +1 -0
  68. package/dist/components/Track/ClusterView.d.ts +20 -0
  69. package/dist/components/Track/ClusterView.d.ts.map +1 -0
  70. package/dist/components/Track/TrackView.d.ts +24 -0
  71. package/dist/components/Track/TrackView.d.ts.map +1 -0
  72. package/dist/components/Track/commands.d.ts +53 -0
  73. package/dist/components/Track/commands.d.ts.map +1 -0
  74. package/dist/components/Track/constants.d.ts +34 -0
  75. package/dist/components/Track/constants.d.ts.map +1 -0
  76. package/dist/components/Track/index.d.ts +54 -0
  77. package/dist/components/Track/index.d.ts.map +1 -0
  78. package/dist/components/Track/parseConfig.d.ts +40 -0
  79. package/dist/components/Track/parseConfig.d.ts.map +1 -0
  80. package/dist/components/Track/types.d.ts +38 -0
  81. package/dist/components/Track/types.d.ts.map +1 -0
  82. package/dist/components/Track/useMarkerIcon.d.ts +14 -0
  83. package/dist/components/Track/useMarkerIcon.d.ts.map +1 -0
  84. package/dist/components/Track/useTrackCommands.d.ts +56 -0
  85. package/dist/components/Track/useTrackCommands.d.ts.map +1 -0
  86. package/dist/components/shared/BaseEditToolbar.d.ts +100 -0
  87. package/dist/components/shared/BaseEditToolbar.d.ts.map +1 -0
  88. package/dist/components/shared/ToolbarButton.d.ts +49 -0
  89. package/dist/components/shared/ToolbarButton.d.ts.map +1 -0
  90. package/dist/components/shared/index.d.ts +5 -0
  91. package/dist/components/shared/index.d.ts.map +1 -0
  92. package/dist/constants/device.d.ts +14 -0
  93. package/dist/constants/device.d.ts.map +1 -0
  94. package/dist/constants/index.d.ts +20 -0
  95. package/dist/constants/index.d.ts.map +1 -0
  96. package/dist/constants/map.d.ts +13 -0
  97. package/dist/constants/map.d.ts.map +1 -0
  98. package/dist/constants/plot.d.ts +33 -0
  99. package/dist/constants/plot.d.ts.map +1 -0
  100. package/dist/constants/road.d.ts +12 -0
  101. package/dist/constants/road.d.ts.map +1 -0
  102. package/dist/constants/styles.d.ts +57 -0
  103. package/dist/constants/styles.d.ts.map +1 -0
  104. package/dist/constants/theme.d.ts +47 -0
  105. package/dist/constants/theme.d.ts.map +1 -0
  106. package/dist/constants/unit.d.ts +11 -0
  107. package/dist/constants/unit.d.ts.map +1 -0
  108. package/dist/hooks/index.d.ts +8 -0
  109. package/dist/hooks/index.d.ts.map +1 -0
  110. package/dist/hooks/useEditMode.d.ts +75 -0
  111. package/dist/hooks/useEditMode.d.ts.map +1 -0
  112. package/dist/hooks/useLatestRef.d.ts +17 -0
  113. package/dist/hooks/useLatestRef.d.ts.map +1 -0
  114. package/dist/hooks/usePolylineEditor.d.ts +65 -0
  115. package/dist/hooks/usePolylineEditor.d.ts.map +1 -0
  116. package/dist/hooks/usePolylineRenderer.d.ts +34 -0
  117. package/dist/hooks/usePolylineRenderer.d.ts.map +1 -0
  118. package/dist/hooks/useTheme.d.ts +13 -0
  119. package/dist/hooks/useTheme.d.ts.map +1 -0
  120. package/dist/index.css +709 -3
  121. package/dist/index.css.map +1 -1
  122. package/dist/index.d.ts +312 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.esm.js +2837 -1888
  125. package/dist/index.esm.js.map +1 -1
  126. package/dist/index.js +2838 -1888
  127. package/dist/index.js.map +1 -1
  128. package/dist/index.umd.js +2838 -1888
  129. package/dist/index.umd.js.map +1 -1
  130. package/dist/types/basic.d.ts +57 -0
  131. package/dist/types/basic.d.ts.map +1 -0
  132. package/dist/types/components.d.ts +56 -0
  133. package/dist/types/components.d.ts.map +1 -0
  134. package/dist/types/config.d.ts +112 -0
  135. package/dist/types/config.d.ts.map +1 -0
  136. package/dist/types/decorator.d.ts +26 -0
  137. package/dist/types/decorator.d.ts.map +1 -0
  138. package/dist/types/icon.d.ts +52 -0
  139. package/dist/types/icon.d.ts.map +1 -0
  140. package/dist/types/index.d.ts +20 -0
  141. package/dist/types/index.d.ts.map +1 -0
  142. package/dist/types/irrigation.d.ts +315 -0
  143. package/dist/types/irrigation.d.ts.map +1 -0
  144. package/dist/types/layer.d.ts +40 -0
  145. package/dist/types/layer.d.ts.map +1 -0
  146. package/dist/types/loading.d.ts +62 -0
  147. package/dist/types/loading.d.ts.map +1 -0
  148. package/dist/types/marker.d.ts +299 -0
  149. package/dist/types/marker.d.ts.map +1 -0
  150. package/dist/types/measurement.d.ts +121 -0
  151. package/dist/types/measurement.d.ts.map +1 -0
  152. package/dist/types/notification.d.ts +50 -0
  153. package/dist/types/notification.d.ts.map +1 -0
  154. package/dist/types/plot.d.ts +479 -0
  155. package/dist/types/plot.d.ts.map +1 -0
  156. package/dist/types/road.d.ts +382 -0
  157. package/dist/types/road.d.ts.map +1 -0
  158. package/dist/types/toolbar.d.ts +176 -0
  159. package/dist/types/toolbar.d.ts.map +1 -0
  160. package/dist/types/track.d.ts +386 -0
  161. package/dist/types/track.d.ts.map +1 -0
  162. package/dist/utils/area.d.ts +57 -0
  163. package/dist/utils/area.d.ts.map +1 -0
  164. package/dist/utils/clusterIcon.d.ts +16 -0
  165. package/dist/utils/clusterIcon.d.ts.map +1 -0
  166. package/dist/utils/createAntPath.d.ts +13 -0
  167. package/dist/utils/createAntPath.d.ts.map +1 -0
  168. package/dist/utils/geometry.d.ts +41 -0
  169. package/dist/utils/geometry.d.ts.map +1 -0
  170. package/dist/utils/iconCache.d.ts +49 -0
  171. package/dist/utils/iconCache.d.ts.map +1 -0
  172. package/dist/utils/iconUtils.d.ts +46 -0
  173. package/dist/utils/iconUtils.d.ts.map +1 -0
  174. package/dist/utils/index.d.ts +11 -0
  175. package/dist/utils/index.d.ts.map +1 -0
  176. package/dist/utils/leafletIcons.d.ts +40 -0
  177. package/dist/utils/leafletIcons.d.ts.map +1 -0
  178. package/dist/utils/mapAnimation.d.ts +14 -0
  179. package/dist/utils/mapAnimation.d.ts.map +1 -0
  180. package/dist/utils/markerSvg.d.ts +19 -0
  181. package/dist/utils/markerSvg.d.ts.map +1 -0
  182. package/dist/utils/pulseIcon.d.ts +28 -0
  183. package/dist/utils/pulseIcon.d.ts.map +1 -0
  184. package/dist/utils/spatialIndex.d.ts +56 -0
  185. package/dist/utils/spatialIndex.d.ts.map +1 -0
  186. package/dist/utils/toggleItemState.d.ts +15 -0
  187. package/dist/utils/toggleItemState.d.ts.map +1 -0
  188. package/dist/utils/trackSimplify.d.ts +23 -0
  189. package/dist/utils/trackSimplify.d.ts.map +1 -0
  190. package/package.json +2 -2
package/README.md CHANGED
@@ -184,6 +184,69 @@ const markers: MarkerData[] = [
184
184
  | `onCreate` | `(result) => void` | - | 新建回调 |
185
185
  | `onMove` | `(result) => void` | - | 移动回调 |
186
186
  | `onDelete` | `(result) => void` | - | 删除回调 |
187
+ | `cluster` | `boolean \| MarkerClusterConfig` | `false` | 聚合配置 |
188
+ | `onClusterClick` | `(count, markers) => void` | - | 聚合气泡点击回调 |
189
+ | `icons` | `MarkerIconsConfig` | - | 统一图标配置 |
190
+
191
+ #### 聚合功能
192
+
193
+ Marker 组件支持标注点聚合,在小缩放级别下将相近的标注点聚合为气泡显示,提升大量标注点时的渲染性能。
194
+
195
+ ```tsx
196
+ // 启用默认聚合
197
+ <Marker
198
+ dataSource={markers}
199
+ cluster={true}
200
+ />
201
+
202
+ // 自定义聚合配置
203
+ <Marker
204
+ dataSource={markers}
205
+ cluster={{
206
+ radius: 60, // 聚合半径(像素),默认 40
207
+ maxZoom: 16, // 最大聚合 zoom 级别,默认 18
208
+ minPoints: 3, // 最小聚合点数,默认 2
209
+ onClickBehavior: 'expand', // 点击行为:'zoom' 或 'expand'
210
+ }}
211
+ onClusterClick={(count, markers) => {
212
+ console.log(`点击了包含 ${count} 个点的聚合`);
213
+ }}
214
+ />
215
+
216
+ // 自定义聚合气泡图标
217
+ <Marker
218
+ dataSource={markers}
219
+ cluster={true}
220
+ icons={{
221
+ cluster: {
222
+ icon: 'marker-yellow',
223
+ colors: ['#1890ff', '#faad14', '#ff4d4f'],
224
+ animated: true,
225
+ showCount: true,
226
+ },
227
+ default: { icon: 'point', iconSize: [32, 32] },
228
+ selected: { icon: 'position-red' },
229
+ }}
230
+ />
231
+ ```
232
+
233
+ #### MarkerClusterConfig
234
+
235
+ | 属性 | 类型 | 默认值 | 说明 |
236
+ |------|------|--------|------|
237
+ | `radius` | `number` | `40` | 聚合半径(像素) |
238
+ | `maxZoom` | `number` | `18` | 聚合生效的最大 zoom 级别 |
239
+ | `minPoints` | `number` | `2` | 最小聚合点数 |
240
+ | `onClickBehavior` | `'zoom' \| 'expand'` | `'zoom'` | 点击聚合气泡后的行为 |
241
+
242
+ #### MarkerIconsConfig
243
+
244
+ | 属性 | 类型 | 说明 |
245
+ |------|------|------|
246
+ | `default` | `MarkerIconItemConfig` | 默认状态图标配置 |
247
+ | `selected` | `MarkerIconItemConfig` | 选中状态图标配置 |
248
+ | `editing` | `MarkerIconItemConfig` | 编辑中状态图标配置 |
249
+ | `cluster` | `ClusterIconConfig` | 聚合气泡图标配置 |
187
250
 
188
251
  ---
189
252
 
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 全局配置提供者组件
3
+ * @description 使用 React Context 为子组件提供统一的全局配置
4
+ */
5
+ import type { ConfigContextValue, ConfigProviderProps } from '../../types';
6
+ /**
7
+ * 获取配置上下文的 Hook
8
+ * @returns 配置对象
9
+ */
10
+ export declare const useConfig: () => ConfigContextValue;
11
+ /**
12
+ * 全局配置提供者组件
13
+ */
14
+ declare const ConfigProvider: ({ theme, dualScaleControl, tianDiTuLayer, mapSizeHandler, children }: ConfigProviderProps) => JSX.Element;
15
+ export default ConfigProvider;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConfigProvider/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAgD,MAAM,aAAa,CAAC;AASzH;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,kBAG5B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,cAAc,GAAI,sEAMrB,mBAAmB,KAAG,GAAG,CAAC,OAuC5B,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 双向标尺组件
3
+ * @description 在地图上同时显示水平和垂直两个标尺,覆盖整个地图窗口
4
+ */
5
+ import type { DualScaleControlProps } from '../../types';
6
+ /**
7
+ * 双向标尺组件
8
+ */
9
+ declare const DualScaleControl: ({ config: configProp, theme: themeProp, layerType, scaleColor: scaleColorProp, controlBg: controlBgProp, controlText: controlTextProp, }: DualScaleControlProps) => null;
10
+ export default DualScaleControl;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DualScaleControl/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,qBAAqB,EAA+C,MAAM,aAAa,CAAC;AAwBtG;;GAEG;AACH,QAAA,MAAM,gBAAgB,GAAI,0IAOvB,qBAAqB,KAAG,IAoa1B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * SelectIcon 图标选择器组件
3
+ * @description 兼容 antd Form 的 value/onChange 接口,用于选择预设地图图标
4
+ * @example
5
+ * // antd Form 中使用
6
+ * <Form.Item label="图标" name="icon">
7
+ * <SelectIcon />
8
+ * </Form.Item>
9
+ *
10
+ * // 独立使用
11
+ * const [icon, setIcon] = useState('marker-blue');
12
+ * <SelectIcon value={icon} onChange={setIcon} />
13
+ */
14
+ import { type CSSProperties } from 'react';
15
+ import type { PresetIconName } from '../../types/icon';
16
+ export interface IconGroupItem {
17
+ /** 图标名称(预设图标名称) */
18
+ type: PresetIconName;
19
+ /** 图标显示名称 */
20
+ name: string;
21
+ }
22
+ export interface IconGroup {
23
+ /** 分组标签 */
24
+ label: string;
25
+ /** 分组内图标列表 */
26
+ icons: IconGroupItem[];
27
+ }
28
+ /** 默认预设图标分组 */
29
+ export declare const DEFAULT_ICON_GROUPS: IconGroup[];
30
+ export interface IconPreviewProps {
31
+ /** 图标类型 */
32
+ iconType: string;
33
+ /** 图标尺寸,默认 24 */
34
+ size?: number;
35
+ /** 是否启用动画,默认 false */
36
+ animated?: boolean;
37
+ /** 样式 */
38
+ style?: CSSProperties;
39
+ }
40
+ /**
41
+ * 图标预览组件
42
+ * @description 根据图标类型渲染不同的预览效果
43
+ */
44
+ export declare function IconPreview({ iconType, size, animated, style }: IconPreviewProps): JSX.Element;
45
+ export interface SelectIconProps {
46
+ /** 当前选中值(兼容 antd Form) */
47
+ value?: string;
48
+ /** 选中变化回调(兼容 antd Form) */
49
+ onChange?: (value: string) => void;
50
+ /** 占位文本 */
51
+ placeholder?: string;
52
+ /** 是否禁用 */
53
+ disabled?: boolean;
54
+ /** 预览图标尺寸,默认 20 */
55
+ previewSize?: number;
56
+ /** 是否可清除 */
57
+ allowClear?: boolean;
58
+ /** 自定义样式 */
59
+ style?: CSSProperties;
60
+ /** 自定义 className */
61
+ className?: string;
62
+ /** 自定义图标分组(可选,默认使用预设分组) */
63
+ groups?: IconGroup[];
64
+ /** 主题模式,默认跟随系统浅色 */
65
+ theme?: 'light' | 'dark';
66
+ }
67
+ export declare function SelectIcon({ value, onChange, placeholder, disabled, previewSize, allowClear, style, className, groups, theme, }: SelectIconProps): JSX.Element;
68
+ export default SelectIcon;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectIcon.d.ts","sourceRoot":"","sources":["../../../src/components/Icons/SelectIcon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAcvD,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc;IACd,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,eAAe;AACf,eAAO,MAAM,mBAAmB,EAAE,SAAS,EA0C1C,CAAC;AAYF,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS;IACT,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAS,EAAE,QAAgB,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAgE3G;AAID,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY;IACZ,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,WAAqB,EACrB,QAAgB,EAChB,WAAgB,EAChB,UAAkB,EAClB,KAAK,EACL,SAAS,EACT,MAA4B,EAC5B,KAAK,GACN,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6L/B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * SVG 图标组件库
3
+ * @description 统一的 SVG 图标组件,用于工具栏等场景
4
+ */
5
+ /** 图标组件属性 */
6
+ interface IconProps {
7
+ size?: number;
8
+ color?: string;
9
+ /** 无障碍标签文本 */
10
+ ariaLabel?: string;
11
+ /** 是否对屏幕阅读器隐藏,默认 true */
12
+ ariaHidden?: boolean;
13
+ }
14
+ export declare const MarkerRedrawIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
15
+ export declare const PlotRedrawIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
16
+ export declare const RoadRedrawIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
17
+ export declare const IrrigationRedrawIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
18
+ export declare const ClipIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
19
+ export declare const MoveIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
20
+ export declare const DeleteIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
21
+ export declare const CancelIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
22
+ export declare const SaveIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
23
+ export declare const CreateIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
24
+ export declare const EditIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
25
+ export declare const ReverseIcon: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
26
+ /** 图标组件映射 */
27
+ declare const Icons: {
28
+ MarkerRedraw: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
29
+ PlotRedraw: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
30
+ RoadRedraw: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
31
+ IrrigationRedraw: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
32
+ Clip: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
33
+ Move: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
34
+ Delete: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
35
+ Cancel: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
36
+ Save: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
37
+ Create: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
38
+ Edit: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
39
+ Reverse: ({ size, color, ariaLabel, ariaHidden }: IconProps) => JSX.Element;
40
+ };
41
+ export default Icons;
42
+ export { SelectIcon, IconPreview, DEFAULT_ICON_GROUPS } from './SelectIcon';
43
+ export type { SelectIconProps, IconPreviewProps, IconGroup, IconGroupItem } from './SelectIcon';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Icons/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,aAAa;AACb,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,eAAO,MAAM,gBAAgB,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAIrH,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAInH,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAOnH,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAMzH,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAQ7G,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAS7G,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAO/G,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAK/G,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAM7G,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAK/G,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAK7G,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,wCAAqE,SAAS,KAAG,GAAG,CAAC,OAOhH,CAAC;AAEF,aAAa;AACb,QAAA,MAAM,KAAK;2DA7G2F,SAAS,KAAG,GAAG,CAAC,OAAO;yDAOzB,SAAS,KAAG,GAAG,CAAC,OAAO;yDAOvB,SAAS,KAAG,GAAG,CAAC,OAAO;+DAUjB,SAAS,KAAG,GAAG,CAAC,OAAO;mDASnC,SAAS,KAAG,GAAG,CAAC,OAAO;mDAWvB,SAAS,KAAG,GAAG,CAAC,OAAO;qDAYrB,SAAS,KAAG,GAAG,CAAC,OAAO;qDAUvB,SAAS,KAAG,GAAG,CAAC,OAAO;mDAQzB,SAAS,KAAG,GAAG,CAAC,OAAO;qDASrB,SAAS,KAAG,GAAG,CAAC,OAAO;mDAQzB,SAAS,KAAG,GAAG,CAAC,OAAO;sDAQpB,SAAS,KAAG,GAAG,CAAC,OAAO;CAuBvH,CAAC;AAIF,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 灌溉渠组件
3
+ */
4
+ import '@geoman-io/leaflet-geoman-free';
5
+ import 'leaflet-ant-path';
6
+ import type { IrrigationProps, IrrigationRef } from '../../types';
7
+ declare const Irrigation: import("react").ForwardRefExoticComponent<IrrigationProps & import("react").RefAttributes<IrrigationRef>>;
8
+ export default Irrigation;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Irrigation/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,gCAAgC,CAAC;AACxC,OAAO,kBAAkB,CAAC;AAmB1B,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EAKd,MAAM,aAAa,CAAC;AAsBrB,QAAA,MAAM,UAAU,2GA0uBd,CAAC;AAEH,eAAe,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 灌溉渠编辑工具栏组件
3
+ */
4
+ import type { IrrigationEditToolbarProps } from '../../types';
5
+ declare const IrrigationEditToolbar: ({ visible, selectedChannelId, currentMode, enabledButtons, pointCount, hintMessage, showHint, color, size, iconOnly, children, onCreate, onEdit, onRedraw, onCancel, onSave, onDelete, onReverse, }: IrrigationEditToolbarProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default IrrigationEditToolbar;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/Irrigation/toolbar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAY9D,QAAA,MAAM,qBAAqB,GAAI,qMAmB5B,0BAA0B,4CAqC5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview Loading 加载组件
3
+ * @description 显示加载状态的组件,支持多种加载图标和自定义配置
4
+ * @module components/Loading
5
+ */
6
+ import type { LoadingProps } from '../../types';
7
+ /**
8
+ * Loading 加载组件
9
+ *
10
+ * @description
11
+ * 显示加载状态,支持以下功能:
12
+ * - 多种加载图标:loading-spinner(旋转圆圈)、loading-dots(跳动圆点)
13
+ * - 自定义尺寸:small、default、large 或数字
14
+ * - 描述文案:可选的加载提示文字
15
+ * - 遮罩配置:支持自定义背景色、层级等
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * import { Loading } from 'agri-map-components';
20
+ *
21
+ * // 基础用法
22
+ * <Loading />
23
+ *
24
+ * // 自定义图标和描述
25
+ * <Loading icon="loading-dots" description="加载中..." />
26
+ *
27
+ * // 自定义尺寸
28
+ * <Loading size="large" />
29
+ * <Loading size={64} />
30
+ *
31
+ * // 带遮罩
32
+ * <Loading mask />
33
+ * <Loading mask={{ background: 'rgba(0, 0, 0, 0.5)', zIndex: 999 }} />
34
+ *
35
+ * // 在 Marker 中使用
36
+ * <Marker loading={true} />
37
+ * ```
38
+ */
39
+ declare const Loading: React.FC<LoadingProps>;
40
+ export default Loading;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Loading/index.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,aAAa,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAkGnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 地图内容组件
3
+ * @description 根据 ConfigProvider 配置自动渲染地图子组件
4
+ */
5
+ import type { MapContentProps } from '../../types';
6
+ /**
7
+ * 地图内容组件
8
+ * @description 放在 MapContainer 内部,自动渲染 ConfigProvider 配置的组件
9
+ * @example
10
+ * <ConfigProvider dualScaleControl tianDiTuLayer={{ apiKey: 'xxx' }} mapSizeHandler>
11
+ * <MapContainer>
12
+ * <MapContent />
13
+ * </MapContainer>
14
+ * </ConfigProvider>
15
+ */
16
+ declare const MapContent: ({ children }: MapContentProps) => JSX.Element;
17
+ export default MapContent;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MapContent/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,GAAI,cAAc,eAAe,KAAG,GAAG,CAAC,OAqCvD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 地图尺寸处理器组件
3
+ * @description 解决地图容器尺寸变化后(如抽屉/对话框打开),地图不自动刷新的问题
4
+ */
5
+ import type { MapSizeHandlerConfig } from '../../types';
6
+ /**
7
+ * 地图尺寸处理器组件
8
+ * @description 通过多次调用 invalidateSize 确保地图在容器尺寸变化后正确渲染
9
+ *
10
+ * @example
11
+ * // 在 MapContent 中自动使用,通过 ConfigProvider 配置
12
+ * <ConfigProvider mapSizeHandler>
13
+ * <MapContainer>
14
+ * <MapContent />
15
+ * </MapContainer>
16
+ * </ConfigProvider>
17
+ *
18
+ * // 自定义配置
19
+ * <ConfigProvider mapSizeHandler={{ delay: 200, retries: 5 }}>
20
+ * ...
21
+ * </ConfigProvider>
22
+ */
23
+ declare const MapSizeHandler: ({ enabled, delay, retries, }?: MapSizeHandlerConfig) => null;
24
+ export default MapSizeHandler;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MapSizeHandler/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,cAAc,GAAI,+BAIrB,oBAAyB,KAAG,IAiB9B,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview Marker 聚合模式渲染子组件
3
+ * @module components/Marker/ClusterView
4
+ */
5
+ import React from 'react';
6
+ import L from 'leaflet';
7
+ import Supercluster from 'supercluster';
8
+ import type { MarkerData, ClusterIconConfig } from '../../types';
9
+ interface ClusterViewProps {
10
+ /** 聚合结果数组(包含聚合气泡和单独点) */
11
+ clusterResults: Supercluster.ClusterFeature<any>[];
12
+ /** 单独 Marker 的图标 */
13
+ markerIcon: L.DivIcon;
14
+ /** 聚合气泡图标配置 */
15
+ clusterIconConfig?: ClusterIconConfig;
16
+ /** 是否永久显示 Tooltip,false 时悬停显示 */
17
+ showTooltip: boolean;
18
+ /** 聚合气泡点击处理 */
19
+ onClusterClick: (feature: Supercluster.ClusterFeature<Supercluster.AnyProps>) => void;
20
+ /** 单独 Marker 点击处理 */
21
+ onMarkerClick: (markerId: string | number) => void;
22
+ /** 获取 Marker 的 Tooltip 内容 */
23
+ getTooltipContent: (marker: MarkerData) => {
24
+ title?: string;
25
+ description?: string;
26
+ };
27
+ }
28
+ declare const _default: React.NamedExoticComponent<ClusterViewProps>;
29
+ export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterView.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/ClusterView.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,UAAU,gBAAgB;IACxB,yBAAyB;IACzB,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,oBAAoB;IACpB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;IACtB,eAAe;IACf,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iCAAiC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe;IACf,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACtF,qBAAqB;IACrB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACnD,6BAA6B;IAC7B,iBAAiB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrF;;AAgFD,wBAAuC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview 地图点击处理器组件
3
+ * @description 处理地图点击事件,用于创建模式下的标注点创建和 Tooltip 关闭
4
+ * @module components/Marker/MapClickHandler
5
+ */
6
+ import L from 'leaflet';
7
+ /**
8
+ * 地图点击处理器属性
9
+ */
10
+ interface MapClickHandlerProps {
11
+ /** 是否启用点击处理 */
12
+ enabled: boolean;
13
+ /** 是否存在临时标注点 */
14
+ hasTempMarker: boolean;
15
+ /** 地图点击回调 */
16
+ onMapClick: (latlng: L.LatLng) => void;
17
+ /** 点击非标注区域时的回调(用于关闭 Tooltip) */
18
+ onMapClickWithoutMarker?: () => void;
19
+ }
20
+ /**
21
+ * 地图点击处理器
22
+ * @description 处理地图点击事件,用于创建模式下的标注点创建和 Tooltip 关闭
23
+ */
24
+ declare function MapClickHandler({ enabled, hasTempMarker, onMapClick, onMapClickWithoutMarker }: MapClickHandlerProps): null;
25
+ export default MapClickHandler;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapClickHandler.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/MapClickHandler.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,CAAC,MAAM,SAAS,CAAC;AAExB;;GAEG;AACH,UAAU,oBAAoB;IAC5B,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;IACvC,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,uBAAuB,EAAE,EAAE,oBAAoB,QA0C7G;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @fileoverview Marker 标注组件
3
+ * @description 用于在地图上显示标注点,支持自定义图标、动画效果、编辑模式、聚合和 Tooltip 控制
4
+ * @module components/Marker
5
+ */
6
+ import type { MarkerProps, MarkerRef } from '../../types';
7
+ /**
8
+ * Marker 标注组件
9
+ *
10
+ * @description
11
+ * 用于在地图上显示标注点,支持以下功能:
12
+ * - 自定义图标:预设名称、SVG字符串、图片URL
13
+ * - 动画效果:脉冲动画
14
+ * - 编辑模式:创建、移动、删除标注点
15
+ * - Tooltip 控制:打开/关闭指定或所有标注点的 Tooltip
16
+ * - 选中状态:支持受控和非受控模式
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * import { Marker } from 'agri-map-components';
21
+ * import { useRef } from 'react';
22
+ *
23
+ * // 基础用法
24
+ * <Marker
25
+ * icon="marker-blue"
26
+ * dataSource={[
27
+ * { id: 1, position: [29.95, 117.98], title: '标注点A' },
28
+ * { id: 2, position: [29.96, 117.99], title: '标注点B' },
29
+ * ]}
30
+ * onClick={(item) => console.log('点击:', item)}
31
+ * />
32
+ *
33
+ * // 使用 ref 控制方法
34
+ * const markerRef = useRef(null);
35
+ * <Marker
36
+ * ref={markerRef}
37
+ * dataSource={data}
38
+ * value={value}
39
+ * onSelect={setValue}
40
+ * />
41
+ * <button onClick={() => markerRef.current?.openAllTooltips()}>显示所有 Tooltip</button>
42
+ *
43
+ * // 编辑模式
44
+ * <Marker
45
+ * editMode={['create', 'move', 'delete']}
46
+ * dataSource={data}
47
+ * onCreate={(result) => console.log('新建:', result)}
48
+ * onMove={(result) => console.log('移动:', result)}
49
+ * onDelete={(result) => console.log('删除:', result)}
50
+ * />
51
+ *
52
+ * // 自定义图标
53
+ * <Marker
54
+ * icon="<svg>...</svg>"
55
+ * dataSource={data}
56
+ * animated
57
+ * />
58
+ * ```
59
+ */
60
+ declare const Marker: import("react").ForwardRefExoticComponent<MarkerProps & import("react").RefAttributes<MarkerRef>>;
61
+ export default Marker;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/index.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAEV,WAAW,EACX,SAAS,EAGV,MAAM,aAAa,CAAC;AAWrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,QAAA,MAAM,MAAM,mGAiZV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Marker 聚合配置解析
3
+ * @description 将 boolean | MarkerClusterConfig 三态配置解析为统一的配置对象
4
+ * @module components/Marker/parseClusterConfig
5
+ */
6
+ import type { MarkerClusterConfig } from '../../types';
7
+ export interface ParsedClusterConfig {
8
+ /** 是否启用聚合 */
9
+ enabled: boolean;
10
+ /** 聚合半径(像素) */
11
+ radius: number;
12
+ /** 聚合生效的最大缩放级别 */
13
+ maxZoom: number;
14
+ /** 最小聚合数量 */
15
+ minPoints: number;
16
+ /** 点击聚合气泡后的行为 */
17
+ onClickBehavior: 'zoom' | 'expand';
18
+ }
19
+ /**
20
+ * 解析 cluster 配置
21
+ * - undefined / false → 关闭聚合
22
+ * - true → 启用默认聚合配置
23
+ * - object → 自定义聚合参数
24
+ */
25
+ export declare function parseClusterConfig(clusterConfig: boolean | MarkerClusterConfig | undefined): ParsedClusterConfig;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseClusterConfig.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/parseClusterConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,GACvD,mBAAmB,CA6BrB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 标注点编辑工具栏组件
3
+ */
4
+ import type { MarkerEditToolbarProps } from '../../types';
5
+ declare const MarkerEditToolbar: ({ visible, selectedMarkerId, currentMode, enabledButtons, hintMessage, showHint, color, size, iconOnly, children, onEdit, onMove, onCreate, onCancel, onSave, onDelete, }: MarkerEditToolbarProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default MarkerEditToolbar;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/toolbar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAW1D,QAAA,MAAM,iBAAiB,GAAI,2KAiBxB,sBAAsB,4CAiCxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview Marker 编辑事件处理 hook
3
+ * @description 将编辑模式的状态管理和事件处理提取为独立 hook
4
+ * @module components/Marker/useEditHandlers
5
+ */
6
+ import L from 'leaflet';
7
+ import type { MarkerData, MarkerCreateResult, MarkerMoveResult } from '../../types';
8
+ interface EditHandlersOptions {
9
+ enabledButtonsRef: React.MutableRefObject<('create' | 'edit' | 'move' | 'delete')[]>;
10
+ value: string | number | null;
11
+ dataSource: MarkerData[];
12
+ handleSelect: (id: string | number | null) => void;
13
+ onCreateRef: React.MutableRefObject<((result: MarkerCreateResult) => void) | undefined>;
14
+ onEditRef: React.MutableRefObject<((result: {
15
+ markerId: string | number;
16
+ marker: MarkerData;
17
+ }) => void) | undefined>;
18
+ onMoveRef: React.MutableRefObject<((result: MarkerMoveResult) => void) | undefined>;
19
+ onDeleteRef: React.MutableRefObject<((result: {
20
+ markerId: string | number;
21
+ }) => void) | undefined>;
22
+ onSaveRef: React.MutableRefObject<((result: {
23
+ mode: string;
24
+ } & (MarkerCreateResult | MarkerMoveResult)) => void) | undefined>;
25
+ closeTooltip: () => void;
26
+ }
27
+ /**
28
+ * Marker 编辑事件处理 hook
29
+ */
30
+ export declare function useEditHandlers({ enabledButtonsRef, value, dataSource, handleSelect, onCreateRef, onEditRef, onMoveRef, onDeleteRef, onSaveRef, closeTooltip, }: EditHandlersOptions): {
31
+ currentMode: "idle" | "move" | "create";
32
+ tempMarker: MarkerData | null;
33
+ handleCreate: () => void;
34
+ handleEdit: () => void;
35
+ handleMove: () => void;
36
+ handleDelete: () => void;
37
+ handleCancel: () => void;
38
+ handleSave: () => void;
39
+ handleDragEnd: (id: string | number, e: L.DragEndEvent) => void;
40
+ handleMapClick: (latlng: L.LatLng) => void;
41
+ exitCreateMode: () => void;
42
+ exitEditMode: () => void;
43
+ };
44
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditHandlers.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/useEditHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAGhG,UAAU,mBAAmB;IAC3B,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrF,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACxF,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACrH,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACpF,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACnG,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9H,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAClD,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,GACxE,EAAE,mBAAmB;;;;;;;;;wBAqKmB,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,YAAY;6BAlE7B,CAAC,CAAC,MAAM;;;EA2FrD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Marker 图标配置 hook
3
+ * @description 将图标解析、合并、生成逻辑抽取为独立 hook
4
+ * @module components/Marker/useIconConfig
5
+ */
6
+ import L from 'leaflet';
7
+ import type { MarkerData, MarkerIconsConfig } from '../../types';
8
+ interface UseIconConfigOptions {
9
+ icons?: MarkerIconsConfig;
10
+ editEnabled: boolean;
11
+ currentMode: 'idle' | 'create' | 'move';
12
+ permanent: boolean;
13
+ }
14
+ /**
15
+ * Marker 图标配置 hook
16
+ * @description 管理图标配置的解析、合并和生成
17
+ */
18
+ export declare function useIconConfig({ icons, editEnabled, currentMode, permanent }: UseIconConfigOptions): {
19
+ getItemIcon: (item: MarkerData, isSelected: boolean, isEditing: boolean, isTemp?: boolean) => L.DivIcon;
20
+ getItemPermanent: (item: MarkerData) => boolean;
21
+ getTooltipOffset: (item: MarkerData) => [number, number];
22
+ };
23
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIconConfig.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/useIconConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AAKhF,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;CACpB;AAmCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,oBAAoB;wBA4CzD,UAAU,cAAc,OAAO,aAAa,OAAO,uBAAmB,CAAC,CAAC,OAAO;6BAsI1E,UAAU;6BAQV,UAAU,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EAQ1E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview Marker 命令式方法 hook
3
+ * @description 将 useImperativeHandle 中的方法逻辑提取为独立 hook,便于维护
4
+ * @module components/Marker/useMarkerCommands
5
+ */
6
+ import L from 'leaflet';
7
+ import type { MarkerRef, MarkerData, MarkerEvents } from '../../types';
8
+ interface UseMarkerCommandsOptions {
9
+ map: L.Map | null;
10
+ value: string | number | null;
11
+ dataSource: MarkerData[];
12
+ handleSelect: (id: string | number | null, index?: number) => void;
13
+ onClickRef: React.MutableRefObject<((item: MarkerData) => void) | undefined>;
14
+ onRowRef: React.MutableRefObject<((item: MarkerData, index: number) => MarkerEvents) | undefined>;
15
+ setActiveTooltipId: (id: string | number | null) => void;
16
+ setTooltipContentMap: React.Dispatch<React.SetStateAction<Map<string | number, {
17
+ title?: string;
18
+ description?: string;
19
+ }>>>;
20
+ exitCreateMode: () => void;
21
+ exitEditMode: () => void;
22
+ closeTooltip: () => void;
23
+ }
24
+ /**
25
+ * Marker 命令式方法 hook
26
+ * @description activeTooltipId 和 tooltipContentMap 的状态由调用方管理,
27
+ * 本 hook 只负责将方法绑定到 ref 上
28
+ */
29
+ export declare function useMarkerCommands(ref: React.Ref<MarkerRef>, options: UseMarkerCommandsOptions): void;
30
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkerCommands.d.ts","sourceRoot":"","sources":["../../../src/components/Marker/useMarkerCommands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvE,UAAU,wBAAwB;IAChC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7E,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;IAClG,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC,CAAC;IAC3H,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EACzB,OAAO,EAAE,wBAAwB,GAChC,IAAI,CAkHN"}