@fleet-frontend/mower-maps 0.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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/3900c861790f0a9d.png +0 -0
  4. package/dist/config/constants.d.ts +122 -0
  5. package/dist/config/constants.d.ts.map +1 -0
  6. package/dist/config/edit.d.ts +48 -0
  7. package/dist/config/edit.d.ts.map +1 -0
  8. package/dist/config/index.d.ts +21 -0
  9. package/dist/config/index.d.ts.map +1 -0
  10. package/dist/config/styles.d.ts +25 -0
  11. package/dist/config/styles.d.ts.map +1 -0
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.esm.js +6837 -0
  15. package/dist/index.js +6842 -0
  16. package/dist/processor/MapDataProcessor.d.ts +31 -0
  17. package/dist/processor/MapDataProcessor.d.ts.map +1 -0
  18. package/dist/processor/PathDataProcessor.d.ts +28 -0
  19. package/dist/processor/PathDataProcessor.d.ts.map +1 -0
  20. package/dist/processor/builder/AntennaDataBuilder.d.ts +18 -0
  21. package/dist/processor/builder/AntennaDataBuilder.d.ts.map +1 -0
  22. package/dist/processor/builder/BoundaryDataBuilder.d.ts +17 -0
  23. package/dist/processor/builder/BoundaryDataBuilder.d.ts.map +1 -0
  24. package/dist/processor/builder/ChannelDataBuilder.d.ts +48 -0
  25. package/dist/processor/builder/ChannelDataBuilder.d.ts.map +1 -0
  26. package/dist/processor/builder/ChargingPileDataBuilder.d.ts +16 -0
  27. package/dist/processor/builder/ChargingPileDataBuilder.d.ts.map +1 -0
  28. package/dist/processor/builder/ObstacleDataBuilder.d.ts +20 -0
  29. package/dist/processor/builder/ObstacleDataBuilder.d.ts.map +1 -0
  30. package/dist/processor/builder/PathDataBuilder.d.ts +35 -0
  31. package/dist/processor/builder/PathDataBuilder.d.ts.map +1 -0
  32. package/dist/processor/builder/PointDataBuilder.d.ts +11 -0
  33. package/dist/processor/builder/PointDataBuilder.d.ts.map +1 -0
  34. package/dist/processor/builder/SvgElementDataBuilder.d.ts +16 -0
  35. package/dist/processor/builder/SvgElementDataBuilder.d.ts.map +1 -0
  36. package/dist/processor/builder/VisionOffDataBuilder.d.ts +20 -0
  37. package/dist/processor/builder/VisionOffDataBuilder.d.ts.map +1 -0
  38. package/dist/processor/builder/index.d.ts +10 -0
  39. package/dist/processor/builder/index.d.ts.map +1 -0
  40. package/dist/processor/index.d.ts +4 -0
  41. package/dist/processor/index.d.ts.map +1 -0
  42. package/dist/render/AntennaManager.d.ts +118 -0
  43. package/dist/render/AntennaManager.d.ts.map +1 -0
  44. package/dist/render/BoundaryLabelsManager.d.ts +145 -0
  45. package/dist/render/BoundaryLabelsManager.d.ts.map +1 -0
  46. package/dist/render/ChargingPileManager.d.ts +77 -0
  47. package/dist/render/ChargingPileManager.d.ts.map +1 -0
  48. package/dist/render/MowerMapOverlay.d.ts +105 -0
  49. package/dist/render/MowerMapOverlay.d.ts.map +1 -0
  50. package/dist/render/MowerMapRenderer.d.ts +11 -0
  51. package/dist/render/MowerMapRenderer.d.ts.map +1 -0
  52. package/dist/render/MowerPostionManager.d.ts +91 -0
  53. package/dist/render/MowerPostionManager.d.ts.map +1 -0
  54. package/dist/render/SvgMapView.d.ts +196 -0
  55. package/dist/render/SvgMapView.d.ts.map +1 -0
  56. package/dist/render/layers/AntennaLayer.d.ts +21 -0
  57. package/dist/render/layers/AntennaLayer.d.ts.map +1 -0
  58. package/dist/render/layers/BaseLayer.d.ts +56 -0
  59. package/dist/render/layers/BaseLayer.d.ts.map +1 -0
  60. package/dist/render/layers/BoundaryBorderLayer.d.ts +34 -0
  61. package/dist/render/layers/BoundaryBorderLayer.d.ts.map +1 -0
  62. package/dist/render/layers/BoundaryLayer.d.ts +21 -0
  63. package/dist/render/layers/BoundaryLayer.d.ts.map +1 -0
  64. package/dist/render/layers/ChannelLayer.d.ts +23 -0
  65. package/dist/render/layers/ChannelLayer.d.ts.map +1 -0
  66. package/dist/render/layers/ChargingPileLayer.d.ts +21 -0
  67. package/dist/render/layers/ChargingPileLayer.d.ts.map +1 -0
  68. package/dist/render/layers/DrawLayer.d.ts +39 -0
  69. package/dist/render/layers/DrawLayer.d.ts.map +1 -0
  70. package/dist/render/layers/ObstacleLayer.d.ts +18 -0
  71. package/dist/render/layers/ObstacleLayer.d.ts.map +1 -0
  72. package/dist/render/layers/PathLayer.d.ts +24 -0
  73. package/dist/render/layers/PathLayer.d.ts.map +1 -0
  74. package/dist/render/layers/PointLayer.d.ts +18 -0
  75. package/dist/render/layers/PointLayer.d.ts.map +1 -0
  76. package/dist/render/layers/SvgElementLayer.d.ts +23 -0
  77. package/dist/render/layers/SvgElementLayer.d.ts.map +1 -0
  78. package/dist/render/layers/VisionOffLayer.d.ts +17 -0
  79. package/dist/render/layers/VisionOffLayer.d.ts.map +1 -0
  80. package/dist/render/layers/index.d.ts +5 -0
  81. package/dist/render/layers/index.d.ts.map +1 -0
  82. package/dist/render/layers/types.d.ts +79 -0
  83. package/dist/render/layers/types.d.ts.map +1 -0
  84. package/dist/store/useSubBoundaryBorderStore.d.ts +11 -0
  85. package/dist/store/useSubBoundaryBorderStore.d.ts.map +1 -0
  86. package/dist/types/antenna.d.ts +15 -0
  87. package/dist/types/antenna.d.ts.map +1 -0
  88. package/dist/types/common.d.ts +26 -0
  89. package/dist/types/common.d.ts.map +1 -0
  90. package/dist/types/edit.d.ts +34 -0
  91. package/dist/types/edit.d.ts.map +1 -0
  92. package/dist/types/elements.d.ts +67 -0
  93. package/dist/types/elements.d.ts.map +1 -0
  94. package/dist/types/index.d.ts +12 -0
  95. package/dist/types/index.d.ts.map +1 -0
  96. package/dist/types/map.d.ts +41 -0
  97. package/dist/types/map.d.ts.map +1 -0
  98. package/dist/types/path.d.ts +43 -0
  99. package/dist/types/path.d.ts.map +1 -0
  100. package/dist/types/realTime.d.ts +20 -0
  101. package/dist/types/realTime.d.ts.map +1 -0
  102. package/dist/types/renderer.d.ts +94 -0
  103. package/dist/types/renderer.d.ts.map +1 -0
  104. package/dist/types/ui.d.ts +35 -0
  105. package/dist/types/ui.d.ts.map +1 -0
  106. package/dist/utils/boundaryUtils.d.ts +85 -0
  107. package/dist/utils/boundaryUtils.d.ts.map +1 -0
  108. package/dist/utils/coordinates.d.ts +23 -0
  109. package/dist/utils/coordinates.d.ts.map +1 -0
  110. package/dist/utils/display.d.ts +2 -0
  111. package/dist/utils/display.d.ts.map +1 -0
  112. package/dist/utils/formatUtils.d.ts +62 -0
  113. package/dist/utils/formatUtils.d.ts.map +1 -0
  114. package/dist/utils/handleRealTime.d.ts +16 -0
  115. package/dist/utils/handleRealTime.d.ts.map +1 -0
  116. package/dist/utils/index.d.ts +10 -0
  117. package/dist/utils/index.d.ts.map +1 -0
  118. package/dist/utils/mapBounds.d.ts +41 -0
  119. package/dist/utils/mapBounds.d.ts.map +1 -0
  120. package/dist/utils/math.d.ts +11 -0
  121. package/dist/utils/math.d.ts.map +1 -0
  122. package/dist/utils/mower.d.ts +9 -0
  123. package/dist/utils/mower.d.ts.map +1 -0
  124. package/dist/utils/pathSegments.d.ts +21 -0
  125. package/dist/utils/pathSegments.d.ts.map +1 -0
  126. package/package.json +85 -0
@@ -0,0 +1,94 @@
1
+ import React from 'react';
2
+ import { PathData } from './path';
3
+ import { MapData } from './map';
4
+ import { RobotStatus } from '../config';
5
+ export interface DragState {
6
+ offsetX: number;
7
+ offsetY: number;
8
+ rotation: number;
9
+ isDragging: boolean;
10
+ isRotating: boolean;
11
+ }
12
+ export interface DragCallbacks {
13
+ onDragStart?: (state: DragState) => void;
14
+ onDragMove?: (state: DragState) => void;
15
+ onDragEnd?: (state: DragState) => void;
16
+ }
17
+ export interface MapConfig {
18
+ showScale?: boolean;
19
+ fitToView?: boolean;
20
+ initialZoom?: number;
21
+ enableDrag?: boolean;
22
+ width?: number;
23
+ height?: number;
24
+ backgroundColor?: string;
25
+ borderRadius?: string;
26
+ border?: string;
27
+ useGoogleMaps?: boolean;
28
+ googleMapsApiKey?: string;
29
+ mapId?: string;
30
+ }
31
+ export interface PathConfig {
32
+ lineWidth?: number;
33
+ showEdgePaths?: boolean;
34
+ showTransPaths?: boolean;
35
+ showMowingPaths?: boolean;
36
+ edgePathColor?: string;
37
+ transPathColor?: string;
38
+ mowingPathColor?: string;
39
+ edgePathOpacity?: number;
40
+ transPathOpacity?: number;
41
+ mowingPathOpacity?: number;
42
+ }
43
+ export interface AntennaConfig {
44
+ id: number;
45
+ location_x: number;
46
+ location_y: number;
47
+ pn: string;
48
+ status: number;
49
+ timestamp: string;
50
+ type: number;
51
+ valid: number;
52
+ version: string;
53
+ }
54
+ export interface MowerPositonConfig {
55
+ postureTheta: number;
56
+ postureX: number;
57
+ postureY: number;
58
+ vehicleState: RobotStatus;
59
+ vehicleModel: string;
60
+ }
61
+ export interface MowerMapRendererProps {
62
+ mapJson?: MapData;
63
+ pathJson?: PathData;
64
+ mapConfig?: MapConfig;
65
+ pathConfig?: PathConfig;
66
+ antennaConfig?: AntennaConfig[];
67
+ mowerPositonConfig?: MowerPositonConfig;
68
+ onMapLoad?: (elementCount: number) => void;
69
+ onPathLoad?: (elementCount: number) => void;
70
+ onZoomChange?: (zoomLevel: number) => void;
71
+ onError?: (error: string) => void;
72
+ className?: string;
73
+ style?: React.CSSProperties;
74
+ googleMapInstance?: any;
75
+ isEditMode?: boolean;
76
+ dragCallbacks?: DragCallbacks;
77
+ }
78
+ export interface MowerMapRendererRef {
79
+ setZoom?: (zoom: number) => void;
80
+ getZoom?: () => number;
81
+ resetView?: () => void;
82
+ clear?: () => void;
83
+ getSvgElement?: () => SVGSVGElement | null;
84
+ fitToView?: () => void;
85
+ getOverlay?: () => any;
86
+ toggleOverlay?: (visible: boolean) => void;
87
+ setEditMode?: (enabled: boolean) => void;
88
+ getCurrentDragState?: () => DragState | null;
89
+ getElementCount?: () => number;
90
+ getPathCount?: () => number;
91
+ isGoogleMapsReady?: () => boolean;
92
+ handleRealTimeData?: (data: any) => any;
93
+ }
94
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/types/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * UI组件相关类型定义
3
+ */
4
+ import * as React from 'react';
5
+ import { MapData } from './map';
6
+ import { PathData, MowerPath } from './path';
7
+ import { LatLng } from './common';
8
+ export interface MowerMapVisualizerProps {
9
+ mapJson: MapData;
10
+ pathJson: PathData;
11
+ width?: number;
12
+ height?: number;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ onMapReady?: (canvas: HTMLCanvasElement) => void;
16
+ }
17
+ export interface MowerMapTrackerProps {
18
+ paths: MowerPath[];
19
+ showCurrentPosition?: boolean;
20
+ animationSpeed?: number;
21
+ pathWidth?: number;
22
+ onPositionChange?: (position: LatLng) => void;
23
+ className?: string;
24
+ style?: React.CSSProperties;
25
+ }
26
+ export interface MowerPathRendererProps {
27
+ path: MowerPath;
28
+ showDirection?: boolean;
29
+ animated?: boolean;
30
+ pathWidth?: number;
31
+ pathColor?: string;
32
+ className?: string;
33
+ style?: React.CSSProperties;
34
+ }
35
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/types/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
@@ -0,0 +1,85 @@
1
+ import { MapData } from '../types/map';
2
+ import { PathData } from '../types/path';
3
+ /**
4
+ * 边界数据接口
5
+ */
6
+ export interface BoundaryData {
7
+ id: number;
8
+ name: string;
9
+ area: number;
10
+ points: number[][];
11
+ type: string;
12
+ avai_segs?: number;
13
+ base_angle?: number;
14
+ edge_vf?: number;
15
+ height_set?: number;
16
+ mow_edge?: number;
17
+ obstacle_mow_edge?: number;
18
+ rec_base_angle?: number;
19
+ finishedArea?: number;
20
+ partitionPercentage?: number;
21
+ partitionId?: number;
22
+ endTimeAlias?: number;
23
+ startTime?: number;
24
+ endTime?: number;
25
+ list?: any[];
26
+ subMapId?: number;
27
+ subMapName?: string;
28
+ subMapArea?: number;
29
+ containObstaclesId?: number[];
30
+ isIsolated?: boolean;
31
+ }
32
+ /**
33
+ * 通过 mapData 和 pathData 生成所有 boundary 的数据
34
+ * @param mapData 地图数据
35
+ * @param pathData 路径数据
36
+ * @returns boundary 数据数组
37
+ */
38
+ export declare function generateBoundaryData(mapData: MapData, pathData?: PathData): BoundaryData[];
39
+ /**
40
+ * 根据边界ID获取特定的边界数据
41
+ * @param mapData 地图数据
42
+ * @param pathData 路径数据
43
+ * @param boundaryId 边界ID
44
+ * @returns 边界数据或 null
45
+ */
46
+ export declare function getBoundaryById(mapData: MapData, pathData: PathData | undefined, boundaryId: number): BoundaryData | null;
47
+ /**
48
+ * 获取所有边界的ID列表
49
+ * @param mapData 地图数据
50
+ * @returns 边界ID数组
51
+ */
52
+ export declare function getBoundaryIds(mapData: MapData): number[];
53
+ /**
54
+ * 检查边界是否有路径数据
55
+ * @param boundary 边界数据
56
+ * @returns 是否有路径数据
57
+ */
58
+ export declare function hasBoundaryPathData(boundary: BoundaryData): boolean;
59
+ /**
60
+ * 获取边界的完成进度
61
+ * @param boundary 边界数据
62
+ * @returns 完成进度(百分比)
63
+ */
64
+ export declare function getBoundaryProgress(boundary: BoundaryData): number;
65
+ /**
66
+ * 检查边界是否为孤立子区域
67
+ * @param boundary 边界数据
68
+ * @returns 是否为孤立子区域
69
+ */
70
+ export declare function isBoundaryIsolated(boundary: BoundaryData): boolean;
71
+ /**
72
+ * 获取所有孤立的边界数据
73
+ * @param mapData 地图数据
74
+ * @param pathData 路径数据
75
+ * @returns 孤立的边界数据数组
76
+ */
77
+ export declare function getIsolatedBoundaries(mapData: MapData, pathData?: PathData): BoundaryData[];
78
+ /**
79
+ * 获取所有连接的边界数据
80
+ * @param mapData 地图数据
81
+ * @param pathData 路径数据
82
+ * @returns 连接的边界数据数组
83
+ */
84
+ export declare function getConnectedBoundaries(mapData: MapData, pathData?: PathData): BoundaryData[];
85
+ //# sourceMappingURL=boundaryUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundaryUtils.d.ts","sourceRoot":"","sources":["../../src/utils/boundaryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAGb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAsG1F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQzH;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAUlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAG3F;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAG5F"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 坐标点接口
3
+ */
4
+ export interface Point {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ /**
9
+ * 转换点格式,为坐标点添加缩放因子
10
+ * 保持原数组格式,只对前两个元素(x, y 坐标)应用缩放因子
11
+ * 支持二维或三维数组 [x, y] 或 [x, y, other]
12
+ */
13
+ export declare function convertPointsFormat(points?: number[][]): number[][] | null;
14
+ /**
15
+ * 转换位置格式从 [number, number] 到 {x: number, y: number}
16
+ * 添加缩放因子将米转换为像素
17
+ */
18
+ export declare function convertPositionFormat(position?: [number, number]): Point | null;
19
+ /**
20
+ * 转换单个坐标点
21
+ */
22
+ export declare function convertCoordinate(x: number, y: number): Point;
23
+ //# sourceMappingURL=coordinates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates.d.ts","sourceRoot":"","sources":["../../src/utils/coordinates.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,IAAI,CAc1E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAO/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAK7D"}
@@ -0,0 +1,2 @@
1
+ export declare function dp2px(dp: number, customDensity?: number | null): number;
2
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,GAAG,IAAW,UAIpE"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * 数据格式化转换类 - TypeScript版本
3
+ * 对应Java FormatUtils.java中的bytes2Int函数
4
+ */
5
+ export declare class FormatUtils {
6
+ private static readonly TAG;
7
+ /**
8
+ * 从data数组的第0位开始取4个字节组成一个int型数
9
+ * 对应Java: public static int bytes2Int(byte[] data)
10
+ *
11
+ * @param data 源字节数组
12
+ * @returns 返回int型数
13
+ */
14
+ /**
15
+ * 从data数组的第position位置开始取4个字节组成int型数
16
+ * 对应Java: public static int bytes2Int(byte[] data, int offset, boolean bigEndian)
17
+ *
18
+ * @param data 源字节数组
19
+ * @param offset 要组成int型数据的起始位置
20
+ * @param bigEndian 是否为大端
21
+ * @returns 返回int型数
22
+ */
23
+ static bytes2Int(data: Uint8Array, offset: number, bigEndian: boolean): number;
24
+ /**
25
+ * 从data数组的第position位置开始取几个字节组成int型数
26
+ * 对应Java: public static int bytes2Int(byte[] data, int offset, boolean bigEndian, int length)
27
+ *
28
+ * @param data 源字节数组
29
+ * @param offset 要组成int型数据的起始位置
30
+ * @param bigEndian 是否为大端
31
+ * @param length 取的字节长度
32
+ * @returns 返回int型数
33
+ */
34
+ static bytes2IntWidthLength(data: Uint8Array, offset: number, bigEndian: boolean, length: number): number;
35
+ /**
36
+ * 手动处理字节到整数的转换(用于非标准长度)
37
+ *
38
+ * @param data 源字节数组
39
+ * @param offset 起始位置
40
+ * @param bigEndian 是否为大端
41
+ * @param length 字节长度
42
+ * @returns 转换后的整数
43
+ */
44
+ private static manualBytes2Int;
45
+ /**
46
+ * 将字节数组转换为十六进制字符串
47
+ * 对应Java: public static String bytesToHex(byte[] bytes)
48
+ *
49
+ * @param bytes 字节数组
50
+ * @returns 十六进制字符串
51
+ */
52
+ static bytesToHex(bytes: Uint8Array | null): string;
53
+ /**
54
+ * 将十六进制字符串转换为字节数组
55
+ * 对应Java: public static byte[] hexStringToByteArray(String s)
56
+ *
57
+ * @param s 十六进制字符串
58
+ * @returns 字节数组
59
+ */
60
+ static hexStringToByteArray(s: string): Uint8Array | null;
61
+ }
62
+ //# sourceMappingURL=formatUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUtils.d.ts","sourceRoot":"","sources":["../../src/utils/formatUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAiB;IAE5C;;;;;;OAMG;IAKH;;;;;;;;OAQG;WACW,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM;IAIrF;;;;;;;;;OASG;WACW,oBAAoB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,GACb,MAAM;IAwCT;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAyB9B;;;;;;OAMG;WACW,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM;IAiB1D;;;;;;OAMG;WACW,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;CAuBjE"}
@@ -0,0 +1,16 @@
1
+ import { RealTimeLocationType, RealTimeProcessType } from '../types/realTime';
2
+ import { MapData, PathData } from '../types';
3
+ export interface HandleRealTimeDataProps {
4
+ realTimeData: (RealTimeLocationType | RealTimeProcessType)[];
5
+ isMowing?: boolean;
6
+ mapData?: MapData;
7
+ pathData?: PathData;
8
+ partitionId?: string;
9
+ }
10
+ declare const handleRealTimeData: ({ realTimeData, isMowing, mapData, pathData, partitionId, }: HandleRealTimeDataProps) => {
11
+ pathData: PathData;
12
+ isMowing: boolean;
13
+ currentPartitionId: string;
14
+ };
15
+ export { handleRealTimeData };
16
+ //# sourceMappingURL=handleRealTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleRealTime.d.ts","sourceRoot":"","sources":["../../src/utils/handleRealTime.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,EAAE,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8ED,QAAA,MAAM,kBAAkB,GAAI,6DAMzB,uBAAuB;;;;CA6EzB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from '../config';
2
+ export * from './coordinates';
3
+ export * from './pathSegments';
4
+ export * from './mapBounds';
5
+ export * from './display';
6
+ export * from './boundaryUtils';
7
+ export * from './handleRealTime';
8
+ export * from './mower';
9
+ export * from './math';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { Point } from './coordinates';
2
+ import { MapData, PathData } from '../types';
3
+ /**
4
+ * 地图边界接口
5
+ */
6
+ export interface MapBounds {
7
+ minX: number;
8
+ minY: number;
9
+ maxX: number;
10
+ maxY: number;
11
+ }
12
+ /**
13
+ * 计算地图边界
14
+ */
15
+ export declare function calculateMapBounds(mapData: MapData, pathData?: PathData): MapBounds;
16
+ /**
17
+ * 扩展边界(添加边距)
18
+ */
19
+ export declare function expandBounds(bounds: MapBounds, margin: number): MapBounds;
20
+ /**
21
+ * 获取边界的中心点
22
+ */
23
+ export declare function getBoundsCenter(bounds: MapBounds): Point;
24
+ /**
25
+ * 获取边界的尺寸
26
+ */
27
+ export declare function getBoundsSize(bounds: MapBounds): {
28
+ width: number;
29
+ height: number;
30
+ };
31
+ /**
32
+ * 计算地图的GPS中心点
33
+ * 如果地图数据包含center_gps字段,则直接使用
34
+ * 否则,使用sw_gps和ne_gps计算中心点
35
+ * 如果GPS坐标无效,则尝试从几何边界估算,最后使用默认坐标
36
+ */
37
+ export declare function calculateMapGpsCenter(mapData: MapData): {
38
+ lat: number;
39
+ lng: number;
40
+ };
41
+ //# sourceMappingURL=mapBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapBounds.d.ts","sourceRoot":"","sources":["../../src/utils/mapBounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAA8C,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAmGnF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAOzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAKxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKlF;AAyDD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAkDpF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 矫正deltaTheta的范围,防止iot通道下因为车端theta接近π值时跳变造成app显示小车图标旋转的问题
3
+ *
4
+ * @param postureTheta
5
+ * @return
6
+ */
7
+ export declare function radNormalize(radian: number): number;
8
+ export declare function radToDegree(radian: number): number;
9
+ export declare function distance(x1: number, y1: number, x2: number, y2: number): number;
10
+ export declare function calAngle(x1: number, y1: number, x2: number, y2: number): number;
11
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UAO1C;AAGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,UAEzC;AAID,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAEtE;AAID,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAEtE"}
@@ -0,0 +1,9 @@
1
+ import { MowerPositonConfig } from '../types/renderer';
2
+ export declare function getMowerImageByModal(mowerModal: string): string;
3
+ export declare function getDisabledMowerImageByModal(mowerModal: string): string;
4
+ export declare function getNoPositionMowerImageByModal(mowerModal: string): string;
5
+ export declare function getMowerImage(positonConfig: MowerPositonConfig): string;
6
+ export declare function isNoPosture(posture?: number): boolean;
7
+ export declare function isInvalidPosition(positonConfig: MowerPositonConfig): boolean;
8
+ export declare function isOutOfRange(positonConfig: MowerPositonConfig): boolean;
9
+ //# sourceMappingURL=mower.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mower.d.ts","sourceRoot":"","sources":["../../src/utils/mower.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,UAStD;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,UAS9D;AAED,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,UAShE;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,kBAAkB,UAiB9D;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,WAY3C;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,kBAAkB,WAMlE;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,kBAAkB,WAO7D"}
@@ -0,0 +1,21 @@
1
+ import { Point } from './coordinates';
2
+ import { PathDataItem } from '../types';
3
+ /**
4
+ * 路径段接口
5
+ */
6
+ export interface PathSegment {
7
+ points: Point[];
8
+ }
9
+ /**
10
+ * 路径段集合接口
11
+ */
12
+ export interface PathSegmentsByType {
13
+ edge: PathSegment[];
14
+ mowing: PathSegment[];
15
+ trans: PathSegment[];
16
+ }
17
+ /**
18
+ * 按Python逻辑创建路径段:根据连续的两点之间的关系确定线段类型
19
+ */
20
+ export declare function createPathSegmentsByType(list: PathDataItem[]): PathSegmentsByType;
21
+ //# sourceMappingURL=pathSegments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathSegments.d.ts","sourceRoot":"","sources":["../../src/utils/pathSegments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAgEjF"}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@fleet-frontend/mower-maps",
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "description": "a mower maps in google maps",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "scripts": {
15
+ "build": "rollup -c",
16
+ "test": "jest",
17
+ "lint": "eslint src",
18
+ "type-check": "tsc --noEmit",
19
+ "dev": "vite",
20
+ "dev:5173": "vite --port 5173",
21
+ "dev:build": "vite build",
22
+ "preview": "vite preview",
23
+ "clean": "rimraf dist",
24
+ "prepublishOnly": "pnpm run clean && pnpm run build",
25
+ "preversion": "pnpm run lint && pnpm run test",
26
+ "version": "git add -A src",
27
+ "postversion": "git push && git push --tags"
28
+ },
29
+ "keywords": [
30
+ "mower",
31
+ "maps",
32
+ "react",
33
+ "google-maps",
34
+ "canvas",
35
+ "visualization",
36
+ "typescript"
37
+ ],
38
+ "author": "",
39
+ "license": "MIT",
40
+ "devDependencies": {
41
+ "@rollup/plugin-commonjs": "^25.0.7",
42
+ "@rollup/plugin-node-resolve": "^15.2.3",
43
+ "@rollup/plugin-typescript": "^11.1.5",
44
+ "@rollup/plugin-url": "^8.0.2",
45
+ "@testing-library/jest-dom": "^6.1.4",
46
+ "@testing-library/react": "^13.4.0",
47
+ "@testing-library/user-event": "^14.5.1",
48
+ "@types/jest": "^29.5.8",
49
+ "@types/react": "^18.2.38",
50
+ "@types/react-dom": "^18.2.17",
51
+ "@typescript-eslint/eslint-plugin": "^8.33.1",
52
+ "@typescript-eslint/parser": "^8.33.1",
53
+ "@vis.gl/react-google-maps": "^1.0.0",
54
+ "@vitejs/plugin-react": "^4.1.0",
55
+ "eslint": "^8.53.0",
56
+ "jest": "^29.7.0",
57
+ "jest-environment-jsdom": "^29.7.0",
58
+ "react": "^18.2.0",
59
+ "react-dom": "^18.2.0",
60
+ "rimraf": "^6.0.1",
61
+ "rollup": "^4.4.0",
62
+ "rollup-plugin-terser": "^7.0.2",
63
+ "ts-jest": "^29.3.4",
64
+ "tslib": "^2.6.2",
65
+ "typescript": "^5.2.2",
66
+ "vite": "^5.0.0"
67
+ },
68
+ "peerDependencies": {
69
+ "@vis.gl/react-google-maps": ">=1.0.0",
70
+ "react": ">=16.8.0",
71
+ "react-dom": ">=16.8.0",
72
+ "@types/react": "^18.2.38",
73
+ "@types/react-dom": "^18.2.17"
74
+ },
75
+ "engines": {
76
+ "node": ">=14.0.0"
77
+ },
78
+ "publishConfig": {
79
+ "access": "public"
80
+ },
81
+ "dependencies": {
82
+ "tslib": "^2.6.2",
83
+ "zustand": "^5.0.6"
84
+ }
85
+ }