@wenle_2523097/agri-map 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/components/ColorSwatch/__tests__/index.test.d.ts +5 -0
  2. package/dist/components/FullscreenControl/__tests__/index.test.d.ts +5 -0
  3. package/dist/components/Marker/useEditHandlers.d.ts +2 -2
  4. package/dist/components/Measurement/__tests__/toolbar.test.d.ts +2 -2
  5. package/dist/components/Notification/__tests__/index.test.d.ts +1 -1
  6. package/dist/components/PerformanceDashboard/__tests__/index.test.d.ts +1 -1
  7. package/dist/components/PlotLayer/__tests__/index.test.d.ts +2 -3
  8. package/dist/components/Popup/__tests__/index.test.d.ts +5 -0
  9. package/dist/components/Road/hooks/useRoadEvents.d.ts +4 -0
  10. package/dist/components/SelectIcon/__tests__/index.test.d.ts +4 -0
  11. package/dist/components/StyleSelector/__tests__/index.test.d.ts +5 -0
  12. package/dist/components/TrackPlayer/__tests__/index.test.d.ts +5 -0
  13. package/dist/components/irrigation.esm.js +12 -2
  14. package/dist/components/irrigation.esm.js.map +1 -1
  15. package/dist/components/marker.esm.js.map +1 -1
  16. package/dist/components/plotgrouplayer.esm.js +3 -1
  17. package/dist/components/plotgrouplayer.esm.js.map +1 -1
  18. package/dist/components/road.esm.js +41 -13
  19. package/dist/components/road.esm.js.map +1 -1
  20. package/dist/hooks/__tests__/useRenderOptimization.test.d.ts +0 -1
  21. package/dist/hooks/index.esm.js +3 -2
  22. package/dist/hooks/index.esm.js.map +1 -1
  23. package/dist/hooks/usePolylineDraw.d.ts +75 -0
  24. package/dist/hooks/usePolylineEdit.d.ts +70 -0
  25. package/dist/hooks/usePolylineRenderer.d.ts +1 -1
  26. package/dist/hooks/useSnapManager.d.ts +50 -0
  27. package/dist/hooks/useVertexMarkers.d.ts +51 -0
  28. package/dist/index.esm.js +53 -14
  29. package/dist/index.esm.js.map +1 -1
  30. package/dist/index.js +53 -14
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.umd.js +53 -14
  33. package/dist/index.umd.js.map +1 -1
  34. package/dist/tests/setup/antd-mock.d.ts +34 -0
  35. package/dist/tests/setup/browser-mock.d.ts +53 -0
  36. package/dist/tests/setup/index.d.ts +22 -0
  37. package/dist/tests/setup/leaflet-mock.d.ts +28 -0
  38. package/dist/types/index.d.ts +1 -0
  39. package/dist/types/irrigation.d.ts +4 -123
  40. package/dist/types/marker.d.ts +12 -113
  41. package/dist/types/mixins/DataSourceMixin.d.ts +56 -0
  42. package/dist/types/mixins/EditableMixin.d.ts +124 -0
  43. package/dist/types/mixins/InteractionMixin.d.ts +43 -0
  44. package/dist/types/mixins/LifecycleMixin.d.ts +23 -0
  45. package/dist/types/mixins/LoadingMixin.d.ts +44 -0
  46. package/dist/types/mixins/SelectableMixin.d.ts +52 -0
  47. package/dist/types/mixins/StyleMixin.d.ts +49 -0
  48. package/dist/types/mixins/ViewControlMixin.d.ts +36 -0
  49. package/dist/types/mixins/index.d.ts +13 -0
  50. package/dist/types/plot.d.ts +13 -67
  51. package/dist/types/road.d.ts +11 -157
  52. package/dist/types/track.d.ts +5 -15
  53. package/dist/utils/__tests__/RTreeIndex.test.d.ts +0 -1
  54. package/dist/utils/drawContext.d.ts +65 -0
  55. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ /**
2
+ * ColorSwatch 组件单元测试
3
+ * @description 测试 HSV 颜色选择器组件的渲染、交互和状态管理
4
+ */
5
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * FullscreenControl 组件单元测试
3
+ * @description 测试全屏控件组件的渲染、功能和交互
4
+ */
5
+ export {};
@@ -30,10 +30,10 @@ interface EditHandlersOptions {
30
30
  * @description 管理编辑模式的状态和事件处理,添加完整的边界检查和错误处理
31
31
  */
32
32
  export declare function useEditHandlers({ enabledButtonsRef, value, dataSource, handleSelect, onCreateRef, onEditRef, onMoveRef: _onMoveRef, onDeleteRef, onSaveRef, closeTooltip, }: EditHandlersOptions): {
33
- currentMode: "move" | "idle" | "create";
33
+ currentMode: "move" | "create" | "idle";
34
34
  tempMarker: MarkerData | null;
35
35
  dragPosition: Coordinate | null;
36
- setCurrentMode: import("react").Dispatch<import("react").SetStateAction<"move" | "idle" | "create">>;
36
+ setCurrentMode: import("react").Dispatch<import("react").SetStateAction<"move" | "create" | "idle">>;
37
37
  setTempMarker: import("react").Dispatch<import("react").SetStateAction<MarkerData | null>>;
38
38
  setDragPosition: import("react").Dispatch<import("react").SetStateAction<Coordinate | null>>;
39
39
  setDragStartPos: (position: Coordinate) => void;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Measurement 测量工具栏组件单元测试
3
- * @description 测试测量工具栏组件的渲染和交互功能
2
+ * MeasurementToolbar 组件单元测试
3
+ * @description 测试测量工具栏的单位配置和格式化逻辑
4
4
  */
5
5
  export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Notification 组件单元测试
3
- * @description 测试通知组件的渲染和交互功能
3
+ * @description 测试通知提醒组件的 open/close/clear 方法、自动关闭和快捷方法
4
4
  */
5
5
  export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * PerformanceDashboard 组件单元测试
3
- * @description 测试性能监控面板组件的渲染和功能
3
+ * @description 测试性能监控面板的渲染、指标计算、等级判定和定时更新
4
4
  */
5
5
  export {};
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * @fileoverview PlotLayer 组件集成测试
3
- * @description 测试组件的真实功能行为,而非仅验证 props 传递
3
+ * @description 测试组件的真实功能行为
4
4
  * @note 此文件包含完整的组件集成测试,但由于 PlotLayer 组件依赖大量 Leaflet API,
5
5
  * 在测试环境中需要完整 mock 才能正常运行。
6
- * 目前这些测试被跳过,建议在真实浏览器环境(E2E)中测试这些功能。
7
- * @module components/PlotLayer/__tests__/index.test
6
+ * 这些测试在单元测试环境中跳过,建议在 E2E 测试中验证。
8
7
  */
9
8
  export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Popup 组件单元测试
3
+ * @description 测试地图弹出窗口组件的渲染和配置
4
+ */
5
+ export {};
@@ -7,6 +7,10 @@
7
7
  * - click 模式:点击道路切换 Popup 显示/隐藏(toggle)
8
8
  * - hover 模式:鼠标进入道路延迟显示 Popup,离开立即隐藏(带防抖)
9
9
  * - 地图点击:点击地图空白区域自动关闭 Popup
10
+ *
11
+ * 【稳定性优化】
12
+ * handleRoadClick 和 handleRoadHover 通过 useRef 保持稳定引用,
13
+ * 避免因内部状态变化导致回调函数引用改变。
10
14
  */
11
15
  import type L from 'leaflet';
12
16
  import type { RoadData } from '../../../types';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * SelectIcon 组件单元测试
3
+ */
4
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * StyleSelector 组件单元测试
3
+ * @description 测试样式选择器组件的渲染、状态管理和配置
4
+ */
5
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * TrackPlayer 组件单元测试
3
+ * @description 测试轨迹播放组件的渲染、播放控制和状态管理
4
+ */
5
+ export {};
@@ -6542,7 +6542,7 @@ function useEditMode(editModeProp, defaultButtons) {
6542
6542
  * 管理线要素图层的创建与清理
6543
6543
  *
6544
6544
  * 负责:
6545
- * 1. 编辑模式下过滤数据(create/edit 模式不渲染已有要素)
6545
+ * 1. 编辑模式下过滤数据(create/redraw 模式不渲染已有要素)
6546
6546
  * 2. 创建 LayerGroup 并将数据渲染进去
6547
6547
  * 3. 组件卸载时移除 editingLayerRef
6548
6548
  *
@@ -6595,7 +6595,8 @@ function usePolylineRenderer(options) {
6595
6595
  return renderItem(item, layerGroup, index);
6596
6596
  });
6597
6597
  // 数据变化时清理编辑图层(新建保存后数据源更新时,移除临时的编辑图层避免重复)
6598
- if (dataChanged && editingLayerRef.current) {
6598
+ // 注意:在 redraw 模式下 editingLayerRef 不应被清理(可能在编辑过程中)
6599
+ if (dataChanged && editingLayerRef.current && currentMode !== 'redraw') {
6599
6600
  currentMap.removeLayer(editingLayerRef.current);
6600
6601
  editingLayerRef.current = null;
6601
6602
  }
@@ -7790,6 +7791,15 @@ var Irrigation = /*#__PURE__*/forwardRef(function (props, ref) {
7790
7791
  }, animated, detected.type === 'svg' ? detected.config : null, detected.type === 'url' ? detected.src : null, 'irrigation-port-marker');
7791
7792
  }, []);
7792
7793
  var renderItem = useCallback(function (channel, layerGroup, _index) {
7794
+ // ========== 方案一修复:redraw 模式下跳过正在编辑的渠道 ==========
7795
+ // 修复描述:当进入重绘模式时,被选中的渠道(id === value)不应该被 renderItem 渲染
7796
+ // 原因:被选中的渠道已经通过 editingLayerRef 在地图上以编辑样式渲染
7797
+ // 如果 renderItem 仍然渲染,会导致同一渠道以两种样式同时显示
7798
+ // 撤销方法:删除以下 if 块及其注释即可恢复到修改前的状态
7799
+ // ========== 方案一修复结束 ==========================================
7800
+ if (currentModeRef.current === 'redraw' && channel.id === valueRef.current) {
7801
+ return; // 跳过渲染,由 editingLayerRef 处理该渠道的显示
7802
+ }
7793
7803
  var isSelected = channel.id === value;
7794
7804
  var style = getChannelStyle(channel, isSelected);
7795
7805
  var hitArea = L$1.polyline(channel.points, {