@fleet-frontend/mower-maps 0.2.0-beta.8 → 0.2.0-beta.9
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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +24 -23
- package/dist/index.js +76 -75
- package/dist/render/MowerMapRenderer.d.ts.map +1 -1
- package/dist/render/boundaryLabels/useBoundaryLabels.d.ts.map +1 -1
- package/dist/types/renderer.d.ts +3 -1
- package/dist/types/renderer.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as MowerMapRenderer } from './render/MowerMapRenderer';
|
|
2
2
|
export { default as BoundarySvgRender } from './render/BoundarySvgRender';
|
|
3
3
|
export type { MapConfig, AntennaConfig, MowerPositionConfig, MowerMapRendererProps, MowerMapRendererRef, DragState, DragCallbacks, } from './types/renderer';
|
|
4
|
+
export { PlatformType } from './types/renderer';
|
|
4
5
|
export type { PathConfig } from './types/processor';
|
|
5
6
|
export { CreateStatus, MobileEditMode, RecordTypeEnum, RecordFunctionEnum, } from './context/mapEdit';
|
|
6
7
|
export type { EditMapInfo, ElementRecordParams } from './context/mapEdit';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,YAAY,EACV,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,YAAY,EACV,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,YAAY,EACV,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAElE,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -14756,7 +14756,7 @@ const useBoundaryLabels = ({ mapData, pathData, unitType, viewBox, mowPartitionD
|
|
|
14756
14756
|
}
|
|
14757
14757
|
}, [mapData, pathData, realTimeData]);
|
|
14758
14758
|
const items = useMemo(() => {
|
|
14759
|
-
console.log('boundartItme->', viewBox, mapData)
|
|
14759
|
+
// console.log('boundartItme->', viewBox, mapData)
|
|
14760
14760
|
if (!mapData || !viewBox)
|
|
14761
14761
|
return [];
|
|
14762
14762
|
// 构建边界数据
|
|
@@ -14799,7 +14799,7 @@ const useBoundaryLabels = ({ mapData, pathData, unitType, viewBox, mowPartitionD
|
|
|
14799
14799
|
function computePolygonCentroid(points) {
|
|
14800
14800
|
if (!points || points.length < 3)
|
|
14801
14801
|
return null;
|
|
14802
|
-
const valid = points.filter(p => p.length >= 2);
|
|
14802
|
+
const valid = points.filter((p) => p.length >= 2);
|
|
14803
14803
|
if (valid.length < 3)
|
|
14804
14804
|
return null;
|
|
14805
14805
|
const polygon = [...valid];
|
|
@@ -16351,7 +16351,7 @@ const ChannelElement = ({ data }) => {
|
|
|
16351
16351
|
* @returns
|
|
16352
16352
|
*/
|
|
16353
16353
|
const useHistoryHandle = (props) => {
|
|
16354
|
-
const { maxHistoryCount =
|
|
16354
|
+
const { maxHistoryCount = 16 } = {};
|
|
16355
16355
|
const { setEditMapInfo } = useMapEditContext();
|
|
16356
16356
|
// redo
|
|
16357
16357
|
const redo = () => {
|
|
@@ -16386,7 +16386,12 @@ const useHistoryHandle = (props) => {
|
|
|
16386
16386
|
const addHistory = useCallback((history) => {
|
|
16387
16387
|
// 添加历史记录的时候,应该把当前的索引之后的所有历史记录都清空
|
|
16388
16388
|
setEditMapInfo((prev) => {
|
|
16389
|
-
console.log(
|
|
16389
|
+
// console.log(
|
|
16390
|
+
// 'addHistory->',
|
|
16391
|
+
// JSON.stringify(prev?.historyList),
|
|
16392
|
+
// prev?.historyList,
|
|
16393
|
+
// prev.currentHistoryIndex
|
|
16394
|
+
// );
|
|
16390
16395
|
if (!prev?.historyList || prev?.historyList?.length === 0) {
|
|
16391
16396
|
return {
|
|
16392
16397
|
...prev,
|
|
@@ -16395,13 +16400,13 @@ const useHistoryHandle = (props) => {
|
|
|
16395
16400
|
};
|
|
16396
16401
|
}
|
|
16397
16402
|
let newHistoryList = prev.historyList.slice(0, prev.currentHistoryIndex + 1);
|
|
16398
|
-
console.log('newHistoryList->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16403
|
+
// console.log('newHistoryList->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16399
16404
|
// 保持历史记录的条数不超过maxHistoryCount
|
|
16400
16405
|
if (newHistoryList.length >= maxHistoryCount) {
|
|
16401
16406
|
newHistoryList.shift();
|
|
16402
16407
|
}
|
|
16403
16408
|
newHistoryList = [...newHistoryList, history];
|
|
16404
|
-
console.log('newHistoryList result->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16409
|
+
// console.log('newHistoryList result->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16405
16410
|
return {
|
|
16406
16411
|
...prev,
|
|
16407
16412
|
historyList: newHistoryList,
|
|
@@ -17249,7 +17254,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17249
17254
|
const infoBoxX = centerX - infoBoxWidth / 2; // 居中对齐
|
|
17250
17255
|
const scale = (isWeb ? 2 : 1) * overlayScale;
|
|
17251
17256
|
const offsetLeft = 10 * scale;
|
|
17252
|
-
return (jsxs(Fragment, { children: [jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#
|
|
17257
|
+
return (jsxs(Fragment, { children: [jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#9EA6BA", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === PlatformType.H5
|
|
17253
17258
|
? {
|
|
17254
17259
|
onTouchStart: createReactEventHandler((e) => {
|
|
17255
17260
|
handleMouseDownWithDisabled(e);
|
|
@@ -17300,7 +17305,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17300
17305
|
color: 'white',
|
|
17301
17306
|
fontWeight: '400',
|
|
17302
17307
|
// transform: `translate(0, ${50 * overlayScale}px) scale(${overlayScale})`,
|
|
17303
|
-
}, children: [dimensions.height, "m \u00D7 ", dimensions.width, "m"] }) }))] }));
|
|
17308
|
+
}, children: [dimensions.height, " m \u00D7 ", dimensions.width, " m"] }) }))] }));
|
|
17304
17309
|
})()] }));
|
|
17305
17310
|
};
|
|
17306
17311
|
|
|
@@ -18088,7 +18093,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18088
18093
|
color: 'white',
|
|
18089
18094
|
fontWeight: '400',
|
|
18090
18095
|
// transform: `translate(0, ${50 * overlayScale}px) scale(${overlayScale})`,
|
|
18091
|
-
}, children: [jsxs("div", { children: [dimensions.
|
|
18096
|
+
}, children: [jsxs("div", { children: [dimensions.width, " m \u00D7 ", dimensions.height, " m"] }), jsxs("div", { style: {
|
|
18092
18097
|
display: 'flex',
|
|
18093
18098
|
alignItems: 'center',
|
|
18094
18099
|
justifyContent: 'center',
|
|
@@ -20109,10 +20114,7 @@ modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, on
|
|
|
20109
20114
|
return {
|
|
20110
20115
|
minDistance,
|
|
20111
20116
|
editMapInfo,
|
|
20112
|
-
setEditMapInfo
|
|
20113
|
-
setEditMapInfo(editMapInfo);
|
|
20114
|
-
onEditInfoMapChange?.(editMapInfo);
|
|
20115
|
-
},
|
|
20117
|
+
setEditMapInfo,
|
|
20116
20118
|
onHandleEnterRecord,
|
|
20117
20119
|
onHandleCompleteRecord,
|
|
20118
20120
|
onHandleStopRecord,
|
|
@@ -20425,15 +20427,14 @@ modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, on
|
|
|
20425
20427
|
// 基于固定的参考zoom级别计算overlayScale
|
|
20426
20428
|
const zoomDiff = currentZoom - REFERENCE_ZOOM;
|
|
20427
20429
|
const scale = Math.pow(2, -zoomDiff); // 负数实现反向缩放
|
|
20428
|
-
|
|
20429
|
-
|
|
20430
|
-
|
|
20431
|
-
else if (scale > 4) {
|
|
20432
|
-
|
|
20433
|
-
}
|
|
20434
|
-
|
|
20435
|
-
|
|
20436
|
-
}
|
|
20430
|
+
setOverlayScale(scale < 1 ? 1 : scale);
|
|
20431
|
+
// if (scale < 1) {
|
|
20432
|
+
// setOverlayScale(1);
|
|
20433
|
+
// } else if (scale > 4) {
|
|
20434
|
+
// setOverlayScale(4);
|
|
20435
|
+
// } else {
|
|
20436
|
+
// setOverlayScale(scale);
|
|
20437
|
+
// }
|
|
20437
20438
|
};
|
|
20438
20439
|
// 使用lodash throttle进行节流处理: 100ms内只执行一次
|
|
20439
20440
|
const handleZoomChanged = throttle$2(updateScale, 50);
|
|
@@ -20626,4 +20627,4 @@ const BoundarySvgRender = React__default.memo(({ mapJson, id, maxWidth = 300 })
|
|
|
20626
20627
|
}) }), jsx(CharginPile, { mapData: mapJson, mapConfig: DEFAULT_STYLES, viewBox: boundaryViewBox || null, rotation: 0 })] }));
|
|
20627
20628
|
});
|
|
20628
20629
|
|
|
20629
|
-
export { ALL_DIRECTION_SELECTED, AntennaData, AntennaDataBuilder, BaseData, BoundaryData, BoundarySvgRender, ChannelData, ChargingPileData, CreateStatus, DataType, DoodleData, MAX_DIRECTION_ANGLE, MIN_DIRECTION_ANGLE, MapDataProcessor, MobileEditMode, MowerMapRenderer, ObstacleData, PathData, PathDataProcessor, RecordFunctionEnum, RecordTypeEnum, RenderType, SCALE_FACTOR, SvgParserNative, UnifiedMapDataProcessor, VisionOffData, calculateMapGpsCenter, estimateGpsFromMapBounds, initBoundary, initChannel, initDoodle, initObstacle, initVisionOff, restorePointsFormat };
|
|
20630
|
+
export { ALL_DIRECTION_SELECTED, AntennaData, AntennaDataBuilder, BaseData, BoundaryData, BoundarySvgRender, ChannelData, ChargingPileData, CreateStatus, DataType, DoodleData, MAX_DIRECTION_ANGLE, MIN_DIRECTION_ANGLE, MapDataProcessor, MobileEditMode, MowerMapRenderer, ObstacleData, PathData, PathDataProcessor, PlatformType, RecordFunctionEnum, RecordTypeEnum, RenderType, SCALE_FACTOR, SvgParserNative, UnifiedMapDataProcessor, VisionOffData, calculateMapGpsCenter, estimateGpsFromMapBounds, initBoundary, initChannel, initDoodle, initObstacle, initVisionOff, restorePointsFormat };
|
package/dist/index.js
CHANGED
|
@@ -7997,11 +7997,11 @@ class SvgParserNative {
|
|
|
7997
7997
|
}
|
|
7998
7998
|
SvgParserNative.cache = new Map();
|
|
7999
7999
|
|
|
8000
|
-
|
|
8000
|
+
exports.PlatformType = void 0;
|
|
8001
8001
|
(function (PlatformType) {
|
|
8002
8002
|
PlatformType["WEB"] = "web";
|
|
8003
8003
|
PlatformType["H5"] = "h5";
|
|
8004
|
-
})(PlatformType || (PlatformType = {}));
|
|
8004
|
+
})(exports.PlatformType || (exports.PlatformType = {}));
|
|
8005
8005
|
|
|
8006
8006
|
/**
|
|
8007
8007
|
* 触摸事件工具函数
|
|
@@ -8039,7 +8039,7 @@ const normalizeTouchEvent = (event) => {
|
|
|
8039
8039
|
* 根据平台获取正确的事件类型
|
|
8040
8040
|
*/
|
|
8041
8041
|
const getEventTypes = (platform) => {
|
|
8042
|
-
if (platform === PlatformType.H5) {
|
|
8042
|
+
if (platform === exports.PlatformType.H5) {
|
|
8043
8043
|
return {
|
|
8044
8044
|
start: 'touchstart',
|
|
8045
8045
|
move: 'touchmove',
|
|
@@ -14069,7 +14069,7 @@ const useCurrentMowingDataStore = create((set) => ({
|
|
|
14069
14069
|
|
|
14070
14070
|
const CommonContext = React.createContext({
|
|
14071
14071
|
sn: '',
|
|
14072
|
-
platform: PlatformType.WEB,
|
|
14072
|
+
platform: exports.PlatformType.WEB,
|
|
14073
14073
|
svgViewBox: null,
|
|
14074
14074
|
unitType: UnitsType.Metric,
|
|
14075
14075
|
mapRef: null,
|
|
@@ -14776,7 +14776,7 @@ const useBoundaryLabels = ({ mapData, pathData, unitType, viewBox, mowPartitionD
|
|
|
14776
14776
|
}
|
|
14777
14777
|
}, [mapData, pathData, realTimeData]);
|
|
14778
14778
|
const items = React.useMemo(() => {
|
|
14779
|
-
console.log('boundartItme->', viewBox, mapData)
|
|
14779
|
+
// console.log('boundartItme->', viewBox, mapData)
|
|
14780
14780
|
if (!mapData || !viewBox)
|
|
14781
14781
|
return [];
|
|
14782
14782
|
// 构建边界数据
|
|
@@ -14819,7 +14819,7 @@ const useBoundaryLabels = ({ mapData, pathData, unitType, viewBox, mowPartitionD
|
|
|
14819
14819
|
function computePolygonCentroid(points) {
|
|
14820
14820
|
if (!points || points.length < 3)
|
|
14821
14821
|
return null;
|
|
14822
|
-
const valid = points.filter(p => p.length >= 2);
|
|
14822
|
+
const valid = points.filter((p) => p.length >= 2);
|
|
14823
14823
|
if (valid.length < 3)
|
|
14824
14824
|
return null;
|
|
14825
14825
|
const polygon = [...valid];
|
|
@@ -16170,7 +16170,7 @@ const PolygonElement = ({ points, fillColor = 'rgba(0, 0, 0, 0.1)', fillOpacity
|
|
|
16170
16170
|
renderCoordinates.map((coord, index) => {
|
|
16171
16171
|
const nextCoord = renderCoordinates[(index + 1) % renderCoordinates.length];
|
|
16172
16172
|
const isDashPath = coord[2] === 1;
|
|
16173
|
-
return (jsxRuntime.jsx("line", { x1: coord[0], y1: coord[1], x2: nextCoord[0], y2: nextCoord[1], stroke: isDashPath ? 'transparent' : strokeColor, strokeWidth: strokeWidth, className: styles$2.addVertex, vectorEffect: "non-scaling-stroke", ...(platform === PlatformType.H5
|
|
16173
|
+
return (jsxRuntime.jsx("line", { x1: coord[0], y1: coord[1], x2: nextCoord[0], y2: nextCoord[1], stroke: isDashPath ? 'transparent' : strokeColor, strokeWidth: strokeWidth, className: styles$2.addVertex, vectorEffect: "non-scaling-stroke", ...(platform === exports.PlatformType.H5
|
|
16174
16174
|
? {
|
|
16175
16175
|
onTouchStart: createReactEventHandler((e) => handleEdgeClick(e, index)),
|
|
16176
16176
|
}
|
|
@@ -16220,7 +16220,7 @@ const PolygonElement = ({ points, fillColor = 'rgba(0, 0, 0, 0.1)', fillOpacity
|
|
|
16220
16220
|
setTimeout(() => {
|
|
16221
16221
|
isDoubleClickingRef.current = false;
|
|
16222
16222
|
}, 300);
|
|
16223
|
-
if (platform === PlatformType.H5) {
|
|
16223
|
+
if (platform === exports.PlatformType.H5) {
|
|
16224
16224
|
if (onVertexDelete && coordinates.length > 3) {
|
|
16225
16225
|
onVertexDelete(idx);
|
|
16226
16226
|
}
|
|
@@ -16230,7 +16230,7 @@ const PolygonElement = ({ points, fillColor = 'rgba(0, 0, 0, 0.1)', fillOpacity
|
|
|
16230
16230
|
if (editMode || (createMode && completed)) {
|
|
16231
16231
|
setTooltipIndex(idx);
|
|
16232
16232
|
}
|
|
16233
|
-
}, ...(platform === PlatformType.H5
|
|
16233
|
+
}, ...(platform === exports.PlatformType.H5
|
|
16234
16234
|
? {
|
|
16235
16235
|
onTouchStart: createReactEventHandler((e) => {
|
|
16236
16236
|
// 拖拽逻辑:编辑模式或创建完成后
|
|
@@ -16312,7 +16312,7 @@ const BoundaryElement = ({ data }) => {
|
|
|
16312
16312
|
*/
|
|
16313
16313
|
const onPathClick = React.useCallback(() => {
|
|
16314
16314
|
onSelectElement?.(exports.DataType.BOUNDARY);
|
|
16315
|
-
if (platform === PlatformType.H5) {
|
|
16315
|
+
if (platform === exports.PlatformType.H5) {
|
|
16316
16316
|
// 对于地块来说,如果当前有元素是在编辑和创建模式下,则不进行选中
|
|
16317
16317
|
if (editMapInfo.mobileMode === exports.MobileEditMode.EDIT ||
|
|
16318
16318
|
editMapInfo.mobileMode === exports.MobileEditMode.CREATE) {
|
|
@@ -16371,7 +16371,7 @@ const ChannelElement = ({ data }) => {
|
|
|
16371
16371
|
* @returns
|
|
16372
16372
|
*/
|
|
16373
16373
|
const useHistoryHandle = (props) => {
|
|
16374
|
-
const { maxHistoryCount =
|
|
16374
|
+
const { maxHistoryCount = 16 } = {};
|
|
16375
16375
|
const { setEditMapInfo } = useMapEditContext();
|
|
16376
16376
|
// redo
|
|
16377
16377
|
const redo = () => {
|
|
@@ -16406,7 +16406,12 @@ const useHistoryHandle = (props) => {
|
|
|
16406
16406
|
const addHistory = React.useCallback((history) => {
|
|
16407
16407
|
// 添加历史记录的时候,应该把当前的索引之后的所有历史记录都清空
|
|
16408
16408
|
setEditMapInfo((prev) => {
|
|
16409
|
-
console.log(
|
|
16409
|
+
// console.log(
|
|
16410
|
+
// 'addHistory->',
|
|
16411
|
+
// JSON.stringify(prev?.historyList),
|
|
16412
|
+
// prev?.historyList,
|
|
16413
|
+
// prev.currentHistoryIndex
|
|
16414
|
+
// );
|
|
16410
16415
|
if (!prev?.historyList || prev?.historyList?.length === 0) {
|
|
16411
16416
|
return {
|
|
16412
16417
|
...prev,
|
|
@@ -16415,13 +16420,13 @@ const useHistoryHandle = (props) => {
|
|
|
16415
16420
|
};
|
|
16416
16421
|
}
|
|
16417
16422
|
let newHistoryList = prev.historyList.slice(0, prev.currentHistoryIndex + 1);
|
|
16418
|
-
console.log('newHistoryList->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16423
|
+
// console.log('newHistoryList->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16419
16424
|
// 保持历史记录的条数不超过maxHistoryCount
|
|
16420
16425
|
if (newHistoryList.length >= maxHistoryCount) {
|
|
16421
16426
|
newHistoryList.shift();
|
|
16422
16427
|
}
|
|
16423
16428
|
newHistoryList = [...newHistoryList, history];
|
|
16424
|
-
console.log('newHistoryList result->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16429
|
+
// console.log('newHistoryList result->', JSON.stringify(newHistoryList), newHistoryList);
|
|
16425
16430
|
return {
|
|
16426
16431
|
...prev,
|
|
16427
16432
|
historyList: newHistoryList,
|
|
@@ -16483,7 +16488,7 @@ const ObstacleElement = ({ data }) => {
|
|
|
16483
16488
|
const strokeWidth = React.useMemo(() => {
|
|
16484
16489
|
// 如果是h5选中的情况下,禁区只有在start模式下才需要加粗
|
|
16485
16490
|
// 其他模式展示的是其他的样式
|
|
16486
|
-
if (platform === PlatformType.H5 &&
|
|
16491
|
+
if (platform === exports.PlatformType.H5 &&
|
|
16487
16492
|
editMapInfo?.selectElement?.id === data.id &&
|
|
16488
16493
|
editMapInfo.mobileMode === exports.MobileEditMode.START) {
|
|
16489
16494
|
return (style.lineWidth || 2) * 3;
|
|
@@ -16491,7 +16496,7 @@ const ObstacleElement = ({ data }) => {
|
|
|
16491
16496
|
return style.lineWidth || 2;
|
|
16492
16497
|
}, [platform, style, editMapInfo]);
|
|
16493
16498
|
const onPathClick = React.useCallback(() => {
|
|
16494
|
-
if (platform === PlatformType.H5) {
|
|
16499
|
+
if (platform === exports.PlatformType.H5) {
|
|
16495
16500
|
// h5编辑模式下,禁区只有在start模式下才需要选中
|
|
16496
16501
|
if (editMapInfo.mobileMode === exports.MobileEditMode.EDIT ||
|
|
16497
16502
|
editMapInfo.mobileMode === exports.MobileEditMode.CREATE) {
|
|
@@ -16527,18 +16532,18 @@ const ObstacleElement = ({ data }) => {
|
|
|
16527
16532
|
});
|
|
16528
16533
|
}, [disabledObstacles, data, onHandleEnterRecord, editMapInfo]);
|
|
16529
16534
|
const editMode = React.useMemo(() => {
|
|
16530
|
-
if (platform === PlatformType.H5) {
|
|
16535
|
+
if (platform === exports.PlatformType.H5) {
|
|
16531
16536
|
return (editMapInfo?.mobileMode === exports.MobileEditMode.EDIT &&
|
|
16532
16537
|
editMapInfo?.selectElement?.id === data.id);
|
|
16533
16538
|
}
|
|
16534
16539
|
return editMapInfo?.selectElement?.id === data.id;
|
|
16535
16540
|
}, [editMapInfo, data, platform]);
|
|
16536
16541
|
return (jsxRuntime.jsx(PolygonElement, { points: currentPoints, fillColor: style.fillColor, fillOpacity: style.fillOpacity, strokeColor: style.lineColor, strokeWidth: strokeWidth, editMode: editMode, showPoints: editMapInfo?.selectElement?.id === data.id, onPathClick: onPathClick, onPolygonClick: () => {
|
|
16537
|
-
if (platform === PlatformType.H5) {
|
|
16542
|
+
if (platform === exports.PlatformType.H5) {
|
|
16538
16543
|
onPathClick();
|
|
16539
16544
|
}
|
|
16540
16545
|
}, onVertexDelete: (vertexIndex) => handleCreateVertexDelete(vertexIndex), onCoordinatesChange: (coordinates) => {
|
|
16541
|
-
if (platform === PlatformType.H5 && editMapInfo.mobileMode === exports.MobileEditMode.CREATE) {
|
|
16546
|
+
if (platform === exports.PlatformType.H5 && editMapInfo.mobileMode === exports.MobileEditMode.CREATE) {
|
|
16542
16547
|
return;
|
|
16543
16548
|
}
|
|
16544
16549
|
setEditMapInfo((prev) => ({
|
|
@@ -17144,7 +17149,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17144
17149
|
}, [data, currentPoints]);
|
|
17145
17150
|
const style = data.style || {};
|
|
17146
17151
|
const strokeWidth = React.useMemo(() => {
|
|
17147
|
-
if (platform === PlatformType.H5) {
|
|
17152
|
+
if (platform === exports.PlatformType.H5) {
|
|
17148
17153
|
if (editMapInfo?.mobileMode === exports.MobileEditMode.START &&
|
|
17149
17154
|
editMapInfo?.selectElement?.id === data.id) {
|
|
17150
17155
|
return (style.lineWidth || 2) * 2;
|
|
@@ -17160,7 +17165,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17160
17165
|
// 添加全局事件监听(支持触摸和鼠标事件)
|
|
17161
17166
|
React.useEffect(() => {
|
|
17162
17167
|
if (isDragging || isRotating || isScaling) {
|
|
17163
|
-
if (platform === PlatformType.H5) {
|
|
17168
|
+
if (platform === exports.PlatformType.H5) {
|
|
17164
17169
|
// H5平台使用触摸事件
|
|
17165
17170
|
const cleanup = addEventListeners(document, {
|
|
17166
17171
|
onMove: (event) => {
|
|
@@ -17241,10 +17246,10 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17241
17246
|
return (jsxRuntime.jsxs("g", { ref: containerRef, className: `vision-off-transform-wrapper ${className} ${isSelected ? 'selected' : ''}`, "data-transform-wrapper": "true", children: [jsxRuntime.jsx(PolygonElement, { points: visionOffData?.points, fillColor: style.fillColor, fillOpacity: style.fillOpacity, strokeColor: style.lineColor, strokeWidth: strokeWidth, editMode: false, onPathClick: () => {
|
|
17242
17247
|
onSelect?.();
|
|
17243
17248
|
}, onPolygonClick: () => {
|
|
17244
|
-
if (platform === PlatformType.H5) {
|
|
17249
|
+
if (platform === exports.PlatformType.H5) {
|
|
17245
17250
|
onSelect?.();
|
|
17246
17251
|
}
|
|
17247
|
-
} }), isSelected && currentPoints.length === 4 && (jsxRuntime.jsx("polygon", { points: currentPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "transparent", stroke: "none", style: { cursor: 'move' }, ...(platform === PlatformType.H5
|
|
17252
|
+
} }), isSelected && currentPoints.length === 4 && (jsxRuntime.jsx("polygon", { points: currentPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "transparent", stroke: "none", style: { cursor: 'move' }, ...(platform === exports.PlatformType.H5
|
|
17248
17253
|
? {
|
|
17249
17254
|
onTouchStart: createReactEventHandler((e) => {
|
|
17250
17255
|
handleMouseDownWithDisabled(e);
|
|
@@ -17269,7 +17274,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17269
17274
|
const infoBoxX = centerX - infoBoxWidth / 2; // 居中对齐
|
|
17270
17275
|
const scale = (isWeb ? 2 : 1) * overlayScale;
|
|
17271
17276
|
const offsetLeft = 10 * scale;
|
|
17272
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#
|
|
17277
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#9EA6BA", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === exports.PlatformType.H5
|
|
17273
17278
|
? {
|
|
17274
17279
|
onTouchStart: createReactEventHandler((e) => {
|
|
17275
17280
|
handleMouseDownWithDisabled(e);
|
|
@@ -17277,7 +17282,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17277
17282
|
}
|
|
17278
17283
|
: {
|
|
17279
17284
|
onMouseDown: handleMouseDownWithDisabled,
|
|
17280
|
-
}) }), isWeb ? undefined : (jsxRuntime.jsx("g", { className: "control-point cancel-point", ...(platform === PlatformType.H5
|
|
17285
|
+
}) }), isWeb ? undefined : (jsxRuntime.jsx("g", { className: "control-point cancel-point", ...(platform === exports.PlatformType.H5
|
|
17281
17286
|
? {
|
|
17282
17287
|
onTouchStart: createReactEventHandler((e) => {
|
|
17283
17288
|
handleCancel(e);
|
|
@@ -17285,7 +17290,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17285
17290
|
}
|
|
17286
17291
|
: {
|
|
17287
17292
|
onMouseDown: handleCancel,
|
|
17288
|
-
}), transform: `translate(${selectionBoxPoints[0].x}, ${selectionBoxPoints[0].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformDelete, {}) }) })), jsxRuntime.jsx("g", { className: "control-point rotate-point", ...(platform === PlatformType.H5
|
|
17293
|
+
}), transform: `translate(${selectionBoxPoints[0].x}, ${selectionBoxPoints[0].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformDelete, {}) }) })), jsxRuntime.jsx("g", { className: "control-point rotate-point", ...(platform === exports.PlatformType.H5
|
|
17289
17294
|
? {
|
|
17290
17295
|
onTouchStart: createReactEventHandler((e) => {
|
|
17291
17296
|
handleRotateStartWithDisabled(e);
|
|
@@ -17293,7 +17298,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17293
17298
|
}
|
|
17294
17299
|
: {
|
|
17295
17300
|
onMouseDown: handleRotateStartWithDisabled,
|
|
17296
|
-
}), transform: `translate(${selectionBoxPoints[3].x}, ${selectionBoxPoints[3].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformRotate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point move-point", ...(platform === PlatformType.H5
|
|
17301
|
+
}), transform: `translate(${selectionBoxPoints[3].x}, ${selectionBoxPoints[3].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformRotate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point move-point", ...(platform === exports.PlatformType.H5
|
|
17297
17302
|
? {
|
|
17298
17303
|
onTouchStart: createReactEventHandler((e) => {
|
|
17299
17304
|
handleMouseDownWithDisabled(e);
|
|
@@ -17301,7 +17306,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17301
17306
|
}
|
|
17302
17307
|
: {
|
|
17303
17308
|
onMouseDown: handleMouseDownWithDisabled,
|
|
17304
|
-
}), transform: `translate(${selectionBoxPoints[1].x}, ${selectionBoxPoints[1].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformTranslate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point scale-point", ...(platform === PlatformType.H5
|
|
17309
|
+
}), transform: `translate(${selectionBoxPoints[1].x}, ${selectionBoxPoints[1].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformTranslate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point scale-point", ...(platform === exports.PlatformType.H5
|
|
17305
17310
|
? {
|
|
17306
17311
|
onTouchStart: createReactEventHandler((e) => {
|
|
17307
17312
|
handleScaleStartWithDisabled(e);
|
|
@@ -17320,7 +17325,7 @@ const VisionOffTransformWrapper = ({ data, isSelected = false, onSelect, onCance
|
|
|
17320
17325
|
color: 'white',
|
|
17321
17326
|
fontWeight: '400',
|
|
17322
17327
|
// transform: `translate(0, ${50 * overlayScale}px) scale(${overlayScale})`,
|
|
17323
|
-
}, children: [dimensions.height, "m \u00D7 ", dimensions.width, "m"] }) }))] }));
|
|
17328
|
+
}, children: [dimensions.height, " m \u00D7 ", dimensions.width, " m"] }) }))] }));
|
|
17324
17329
|
})()] }));
|
|
17325
17330
|
};
|
|
17326
17331
|
|
|
@@ -17329,7 +17334,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17329
17334
|
const { addHistory } = useHistoryHandle();
|
|
17330
17335
|
const { platform } = useCommonContext();
|
|
17331
17336
|
const isSelected = React.useMemo(() => {
|
|
17332
|
-
if (platform === PlatformType.H5) {
|
|
17337
|
+
if (platform === exports.PlatformType.H5) {
|
|
17333
17338
|
// h5编辑模式下,想要展示操作框,需要是选中并且非start模式
|
|
17334
17339
|
return (editMapInfo?.mobileMode !== exports.MobileEditMode.START &&
|
|
17335
17340
|
editMapInfo?.selectElement?.id === data.id &&
|
|
@@ -17338,7 +17343,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17338
17343
|
return editMapInfo?.selectElement?.id === data.id;
|
|
17339
17344
|
}, [editMapInfo, data, platform]);
|
|
17340
17345
|
const handleSelect = React.useCallback(() => {
|
|
17341
|
-
if (platform === PlatformType.H5) {
|
|
17346
|
+
if (platform === exports.PlatformType.H5) {
|
|
17342
17347
|
// h5编辑模式下,
|
|
17343
17348
|
// start模式可以任意选
|
|
17344
17349
|
// create或者是edit模式的话,只有选中的是visionOff的时候才能选中
|
|
@@ -17389,7 +17394,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17389
17394
|
});
|
|
17390
17395
|
}, [data, onHandleEnterRecord, platform, editMapInfo]);
|
|
17391
17396
|
const onCancel = React.useCallback(() => {
|
|
17392
|
-
if (platform === PlatformType.H5) {
|
|
17397
|
+
if (platform === exports.PlatformType.H5) {
|
|
17393
17398
|
// 在h5中,这里的取消其实对应的是删除元素
|
|
17394
17399
|
const allVisionOffPoints = editMapInfo.allVisionOffPoints || [];
|
|
17395
17400
|
const newAllVisionOffPoints = allVisionOffPoints.filter((item) => item.id !== editMapInfo?.selectElement?.id);
|
|
@@ -17412,7 +17417,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17412
17417
|
}, [editMapInfo]);
|
|
17413
17418
|
const visionOffData = React.useMemo(() => {
|
|
17414
17419
|
// console.log('------->', editMapInfo?.selectElement, data);
|
|
17415
|
-
if (platform === PlatformType.H5) {
|
|
17420
|
+
if (platform === exports.PlatformType.H5) {
|
|
17416
17421
|
return { ...data, style: data.style };
|
|
17417
17422
|
}
|
|
17418
17423
|
else {
|
|
@@ -17424,7 +17429,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17424
17429
|
}, [data, editMapInfo?.selectElement]);
|
|
17425
17430
|
const onDragEnd = React.useCallback((points) => {
|
|
17426
17431
|
console.log('VisionOffElement: onDragEnd', points);
|
|
17427
|
-
if (platform === PlatformType.H5) {
|
|
17432
|
+
if (platform === exports.PlatformType.H5) {
|
|
17428
17433
|
// 在h5中,需要更新的是allVisionOffPoints
|
|
17429
17434
|
const allVisionOffPoints = editMapInfo.allVisionOffPoints || [];
|
|
17430
17435
|
const newAllVisionOffPoints = allVisionOffPoints.map((item) => {
|
|
@@ -17466,7 +17471,7 @@ const VisionOffElement = ({ data, onSelect }) => {
|
|
|
17466
17471
|
},
|
|
17467
17472
|
});
|
|
17468
17473
|
}, [editMapInfo]);
|
|
17469
|
-
return (jsxRuntime.jsx(VisionOffTransformWrapper, { isSelected: isSelected, data: visionOffData, onSelect: handleSelect, onCancel: onCancel, onDragEnd: onDragEnd, showInfo: platform === PlatformType.H5 }));
|
|
17474
|
+
return (jsxRuntime.jsx(VisionOffTransformWrapper, { isSelected: isSelected, data: visionOffData, onSelect: handleSelect, onCancel: onCancel, onDragEnd: onDragEnd, showInfo: platform === exports.PlatformType.H5 }));
|
|
17470
17475
|
};
|
|
17471
17476
|
|
|
17472
17477
|
// 操作类型常量
|
|
@@ -17795,7 +17800,7 @@ const DoodleTransform = ({ data, isSelected: _isSelected, onSelect }) => {
|
|
|
17795
17800
|
const { editMapInfo } = useMapEditContext();
|
|
17796
17801
|
const { platform } = useCommonContext();
|
|
17797
17802
|
const canSelect = React.useMemo(() => {
|
|
17798
|
-
if (platform === PlatformType.H5) {
|
|
17803
|
+
if (platform === exports.PlatformType.H5) {
|
|
17799
17804
|
return editMapInfo?.elementType === exports.DataType.DOODLE;
|
|
17800
17805
|
}
|
|
17801
17806
|
return editMapInfo?.elementType;
|
|
@@ -17889,7 +17894,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
17889
17894
|
// 添加全局事件监听(支持触摸和鼠标事件)
|
|
17890
17895
|
React.useEffect(() => {
|
|
17891
17896
|
if (isDragging || isRotating || isScaling) {
|
|
17892
|
-
if (platform === PlatformType.H5) {
|
|
17897
|
+
if (platform === exports.PlatformType.H5) {
|
|
17893
17898
|
// H5平台使用触摸事件
|
|
17894
17899
|
const cleanup = addEventListeners(document, {
|
|
17895
17900
|
onMove: (event) => {
|
|
@@ -17973,7 +17978,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
17973
17978
|
const infoBoxWidth = 140 * overlayScale; // 信息框宽度
|
|
17974
17979
|
const infoBoxHeight = 100 * overlayScale; // 信息框高度
|
|
17975
17980
|
const infoBoxX = centerX - infoBoxWidth / 2; // 居中对齐
|
|
17976
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#B2B4B9", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === PlatformType.H5
|
|
17981
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#B2B4B9", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === exports.PlatformType.H5
|
|
17977
17982
|
? {
|
|
17978
17983
|
onTouchStart: createReactEventHandler((e) => {
|
|
17979
17984
|
handleMouseDownWithDisabled(e);
|
|
@@ -18029,7 +18034,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18029
18034
|
// 创建一个覆盖整个 doodle 区域的矩形
|
|
18030
18035
|
const width = maxX - minX;
|
|
18031
18036
|
const height = maxY - minY;
|
|
18032
|
-
return (jsxRuntime.jsx("rect", { x: minX, y: minY, width: width, height: height, fill: "transparent", stroke: "none", style: { cursor: 'move' }, ...(platform === PlatformType.H5
|
|
18037
|
+
return (jsxRuntime.jsx("rect", { x: minX, y: minY, width: width, height: height, fill: "transparent", stroke: "none", style: { cursor: 'move' }, ...(platform === exports.PlatformType.H5
|
|
18033
18038
|
? {
|
|
18034
18039
|
onTouchStart: createReactEventHandler((e) => {
|
|
18035
18040
|
handleMouseDownWithDisabled(e);
|
|
@@ -18054,7 +18059,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18054
18059
|
const infoBoxX = centerX - infoBoxWidth / 2; // 居中对齐
|
|
18055
18060
|
const scale = (isWeb ? 2 : 1) * overlayScale;
|
|
18056
18061
|
const offsetLeft = 10 * scale;
|
|
18057
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#9EA6BA", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === PlatformType.H5
|
|
18062
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#9EA6BA", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", style: { cursor: 'move' }, ...(platform === exports.PlatformType.H5
|
|
18058
18063
|
? {
|
|
18059
18064
|
onTouchStart: createReactEventHandler((e) => {
|
|
18060
18065
|
handleMouseDownWithDisabled(e);
|
|
@@ -18062,7 +18067,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18062
18067
|
}
|
|
18063
18068
|
: {
|
|
18064
18069
|
onMouseDown: handleMouseDownWithDisabled,
|
|
18065
|
-
}) }), isWeb ? undefined : (jsxRuntime.jsx("g", { className: "control-point cancel-point", ...(platform === PlatformType.H5
|
|
18070
|
+
}) }), isWeb ? undefined : (jsxRuntime.jsx("g", { className: "control-point cancel-point", ...(platform === exports.PlatformType.H5
|
|
18066
18071
|
? {
|
|
18067
18072
|
onTouchStart: createReactEventHandler((e) => {
|
|
18068
18073
|
handleCancel(e);
|
|
@@ -18070,7 +18075,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18070
18075
|
}
|
|
18071
18076
|
: {
|
|
18072
18077
|
onMouseDown: handleCancel,
|
|
18073
|
-
}), transform: `translate(${selectionBoxPoints[0].x}, ${selectionBoxPoints[0].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformDelete, {}) }) })), jsxRuntime.jsx("g", { className: "control-point rotate-point", ...(platform === PlatformType.H5
|
|
18078
|
+
}), transform: `translate(${selectionBoxPoints[0].x}, ${selectionBoxPoints[0].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformDelete, {}) }) })), jsxRuntime.jsx("g", { className: "control-point rotate-point", ...(platform === exports.PlatformType.H5
|
|
18074
18079
|
? {
|
|
18075
18080
|
onTouchStart: createReactEventHandler((e) => {
|
|
18076
18081
|
handleRotateStartWithDisabled(e);
|
|
@@ -18078,7 +18083,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18078
18083
|
}
|
|
18079
18084
|
: {
|
|
18080
18085
|
onMouseDown: handleRotateStartWithDisabled,
|
|
18081
|
-
}), transform: `translate(${selectionBoxPoints[3].x}, ${selectionBoxPoints[3].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformRotate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point move-point", ...(platform === PlatformType.H5
|
|
18086
|
+
}), transform: `translate(${selectionBoxPoints[3].x}, ${selectionBoxPoints[3].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformRotate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point move-point", ...(platform === exports.PlatformType.H5
|
|
18082
18087
|
? {
|
|
18083
18088
|
onTouchStart: createReactEventHandler((e) => {
|
|
18084
18089
|
handleMouseDownWithDisabled(e);
|
|
@@ -18086,7 +18091,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18086
18091
|
}
|
|
18087
18092
|
: {
|
|
18088
18093
|
onMouseDown: handleMouseDownWithDisabled,
|
|
18089
|
-
}), transform: `translate(${selectionBoxPoints[1].x}, ${selectionBoxPoints[1].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformTranslate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point scale-point", ...(platform === PlatformType.H5
|
|
18094
|
+
}), transform: `translate(${selectionBoxPoints[1].x}, ${selectionBoxPoints[1].y})`, children: jsxRuntime.jsx("g", { style: { cursor: 'pointer' }, transformOrigin: "center", transform: `translate(-${offsetLeft}, -${offsetLeft}) scale(${scale})`, children: jsxRuntime.jsx(SvgTransformTranslate, {}) }) }), jsxRuntime.jsx("g", { className: "control-point scale-point", ...(platform === exports.PlatformType.H5
|
|
18090
18095
|
? {
|
|
18091
18096
|
onTouchStart: createReactEventHandler((e) => {
|
|
18092
18097
|
handleScaleStartWithDisabled(e);
|
|
@@ -18108,7 +18113,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
|
|
|
18108
18113
|
color: 'white',
|
|
18109
18114
|
fontWeight: '400',
|
|
18110
18115
|
// transform: `translate(0, ${50 * overlayScale}px) scale(${overlayScale})`,
|
|
18111
|
-
}, children: [jsxRuntime.jsxs("div", { children: [dimensions.
|
|
18116
|
+
}, children: [jsxRuntime.jsxs("div", { children: [dimensions.width, " m \u00D7 ", dimensions.height, " m"] }), jsxRuntime.jsxs("div", { style: {
|
|
18112
18117
|
display: 'flex',
|
|
18113
18118
|
alignItems: 'center',
|
|
18114
18119
|
justifyContent: 'center',
|
|
@@ -18122,7 +18127,7 @@ const DoodleElement = ({ data }) => {
|
|
|
18122
18127
|
const { addHistory } = useHistoryHandle();
|
|
18123
18128
|
const { platform, doodleList } = useCommonContext();
|
|
18124
18129
|
const isSelected = React.useMemo(() => {
|
|
18125
|
-
if (platform === PlatformType.H5) {
|
|
18130
|
+
if (platform === exports.PlatformType.H5) {
|
|
18126
18131
|
if (editMapInfo.mobileMode !== exports.MobileEditMode.START &&
|
|
18127
18132
|
editMapInfo?.selectElement?.id === data.id) {
|
|
18128
18133
|
return true;
|
|
@@ -18155,7 +18160,7 @@ const DoodleElement = ({ data }) => {
|
|
|
18155
18160
|
return minLength / svgMinLength;
|
|
18156
18161
|
}, [doodleList, originData]);
|
|
18157
18162
|
const isSelectedWithoutOperation = React.useMemo(() => {
|
|
18158
|
-
if (platform === PlatformType.H5) {
|
|
18163
|
+
if (platform === exports.PlatformType.H5) {
|
|
18159
18164
|
if (editMapInfo.mobileMode === exports.MobileEditMode.START &&
|
|
18160
18165
|
editMapInfo?.selectElement?.id === data.id) {
|
|
18161
18166
|
return true;
|
|
@@ -18168,7 +18173,7 @@ const DoodleElement = ({ data }) => {
|
|
|
18168
18173
|
}, [data]);
|
|
18169
18174
|
const handleTransformChange = (transform) => { };
|
|
18170
18175
|
const handleSelect = React.useCallback(() => {
|
|
18171
|
-
if (platform === PlatformType.H5) {
|
|
18176
|
+
if (platform === exports.PlatformType.H5) {
|
|
18172
18177
|
// h5编辑模式下,
|
|
18173
18178
|
// 如果是创建,只能选择新建的doodle
|
|
18174
18179
|
if (editMapInfo.mobileMode === exports.MobileEditMode.CREATE ||
|
|
@@ -18213,7 +18218,7 @@ const DoodleElement = ({ data }) => {
|
|
|
18213
18218
|
});
|
|
18214
18219
|
}, [data, onHandleEnterRecord, platform, editMapInfo]);
|
|
18215
18220
|
const handleCancel = React.useCallback(() => {
|
|
18216
|
-
if (platform === PlatformType.H5) {
|
|
18221
|
+
if (platform === exports.PlatformType.H5) {
|
|
18217
18222
|
setEditMapInfo((prev) => ({
|
|
18218
18223
|
...prev,
|
|
18219
18224
|
selectElement: null,
|
|
@@ -18261,7 +18266,7 @@ const DoodleElement = ({ data }) => {
|
|
|
18261
18266
|
},
|
|
18262
18267
|
});
|
|
18263
18268
|
}, [transformedElements]);
|
|
18264
|
-
return (jsxRuntime.jsx(DoodleTransformWrapper, { data: originData, onTransformChange: handleTransformChange, isSelected: isSelected, isSelectedWithoutOperation: isSelectedWithoutOperation, onSelect: handleSelect, onCancel: handleCancel, onDragEnd: handleDragEnd, showInfo: platform === PlatformType.H5, onClickInfo: handleClickInfo, minScale: minScale }));
|
|
18269
|
+
return (jsxRuntime.jsx(DoodleTransformWrapper, { data: originData, onTransformChange: handleTransformChange, isSelected: isSelected, isSelectedWithoutOperation: isSelectedWithoutOperation, onSelect: handleSelect, onCancel: handleCancel, onDragEnd: handleDragEnd, showInfo: platform === exports.PlatformType.H5, onClickInfo: handleClickInfo, minScale: minScale }));
|
|
18265
18270
|
};
|
|
18266
18271
|
|
|
18267
18272
|
const SvgElement = React.memo(({ type, data, interactive = false }) => {
|
|
@@ -18280,7 +18285,7 @@ const SvgElement = React.memo(({ type, data, interactive = false }) => {
|
|
|
18280
18285
|
return jsxRuntime.jsx(ObstacleElement, { data: data });
|
|
18281
18286
|
}
|
|
18282
18287
|
else if (type === 'visionOff') {
|
|
18283
|
-
if (platform === PlatformType.H5 &&
|
|
18288
|
+
if (platform === exports.PlatformType.H5 &&
|
|
18284
18289
|
(editMapInfo.mobileMode === exports.MobileEditMode.CREATE ||
|
|
18285
18290
|
editMapInfo.mobileMode === exports.MobileEditMode.EDIT) &&
|
|
18286
18291
|
editMapInfo.elementType === exports.DataType.VISION_OFF) {
|
|
@@ -19745,7 +19750,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19745
19750
|
newDoodle.scale = minLength / svgMinLength;
|
|
19746
19751
|
newDoodle.direction = 0;
|
|
19747
19752
|
newDoodle.center = restorePoint(centerPoint);
|
|
19748
|
-
if (platform === PlatformType.H5) {
|
|
19753
|
+
if (platform === exports.PlatformType.H5) {
|
|
19749
19754
|
setEditMapInfo((prev) => ({
|
|
19750
19755
|
...prev,
|
|
19751
19756
|
currentHistoryIndex: 0,
|
|
@@ -19870,7 +19875,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19870
19875
|
transform: 'translate(-50%, -50%)',
|
|
19871
19876
|
// cursor: createMode ? 'crosshair' : editMode ? 'default' : 'move',
|
|
19872
19877
|
// pointerEvents: 'auto', // 关键:允许接收鼠标事件
|
|
19873
|
-
}, xmlns: "http://www.w3.org/2000/svg", "shape-rendering": "geometricPrecision", "text-rendering": "geometricPrecision", "image-rendering": "optimizeQuality", ref: svgRef, onClick: editMapInfo.createMode && platform !== PlatformType.H5 ? onSvgClick : undefined, onMouseMove: editMapInfo.createMode && platform !== PlatformType.H5 ? onSvgMouseMove : undefined, children: [jsxRuntime.jsxs("defs", { children: [jsxRuntime.jsx("filter", { id: "vertex-tooltip-shadow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: jsxRuntime.jsx("feDropShadow", { dx: "2", dy: "2", stdDeviation: "2", floodColor: "#000", floodOpacity: "0.12" }) }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.BOUNDARY}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: BOUNDARY_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.VISION_OFF}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: VISION_OFF_AREA_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.OBSTACLE}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: OBSTACLE_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] })] }), Object.keys(svgElementDatas)
|
|
19878
|
+
}, xmlns: "http://www.w3.org/2000/svg", "shape-rendering": "geometricPrecision", "text-rendering": "geometricPrecision", "image-rendering": "optimizeQuality", ref: svgRef, onClick: editMapInfo.createMode && platform !== exports.PlatformType.H5 ? onSvgClick : undefined, onMouseMove: editMapInfo.createMode && platform !== exports.PlatformType.H5 ? onSvgMouseMove : undefined, children: [jsxRuntime.jsxs("defs", { children: [jsxRuntime.jsx("filter", { id: "vertex-tooltip-shadow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: jsxRuntime.jsx("feDropShadow", { dx: "2", dy: "2", stdDeviation: "2", floodColor: "#000", floodOpacity: "0.12" }) }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.BOUNDARY}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: BOUNDARY_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.VISION_OFF}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: VISION_OFF_AREA_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] }), jsxRuntime.jsxs("filter", { id: `path-hover-${exports.DataType.OBSTACLE}`, x: "-10%", y: "-10%", width: "120%", height: "120%", children: [jsxRuntime.jsx("feMorphology", { operator: "dilate", radius: "1", in: "SourceGraphic", result: "border" }), jsxRuntime.jsx("feFlood", { floodColor: OBSTACLE_STYLES.lineColor, floodOpacity: "1", result: "borderColor" }), jsxRuntime.jsx("feComposite", { in: "borderColor", in2: "border", operator: "in", result: "coloredBorder" }), jsxRuntime.jsxs("feMerge", { children: [jsxRuntime.jsx("feMergeNode", { in: "coloredBorder" }), jsxRuntime.jsx("feMergeNode", { in: "SourceGraphic" })] })] })] }), Object.keys(svgElementDatas)
|
|
19874
19879
|
?.sort?.((a, b) => {
|
|
19875
19880
|
if (a === exports.DataType.BOUNDARY || b === exports.DataType.BOUNDARY) {
|
|
19876
19881
|
return 0;
|
|
@@ -19882,7 +19887,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19882
19887
|
?.map((key) => {
|
|
19883
19888
|
const elements = svgElementDatas[key] || [];
|
|
19884
19889
|
return (jsxRuntime.jsxs(GElement, { type: key, data: elements, children: [key === 'channel' && jsxRuntime.jsx(ChannelClipPath, {}), elements.map((item) => (jsxRuntime.jsx(SvgElement, { type: key, data: item }, item?.id)))] }, key));
|
|
19885
|
-
}), platform === PlatformType.WEB &&
|
|
19890
|
+
}), platform === exports.PlatformType.WEB &&
|
|
19886
19891
|
editMapInfo.createMode &&
|
|
19887
19892
|
editMapInfo.elementType !== exports.DataType.DOODLE &&
|
|
19888
19893
|
editMapInfo.elementType !== exports.DataType.VISION_OFF &&
|
|
@@ -19892,7 +19897,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19892
19897
|
// 创建模式下的坐标变化(拖拽时)
|
|
19893
19898
|
// 实时更新当前绘制的多边形
|
|
19894
19899
|
updatePoints(newCoords.map((coord) => ({ x: coord[0], y: coord[1] })));
|
|
19895
|
-
}, svgRef: svgRef })), platform === PlatformType.WEB &&
|
|
19900
|
+
}, svgRef: svgRef })), platform === exports.PlatformType.WEB &&
|
|
19896
19901
|
editMapInfo.createMode &&
|
|
19897
19902
|
editMapInfo.elementType === exports.DataType.VISION_OFF &&
|
|
19898
19903
|
(points.length > 0 || editMapInfo?.selectElement?.points?.length > 0) && (jsxRuntime.jsx(VisionOffElement, { data: {
|
|
@@ -19902,9 +19907,9 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19902
19907
|
lineColor: createElementStyle.lineColor,
|
|
19903
19908
|
lineWidth: createElementStyle.lineWidth,
|
|
19904
19909
|
},
|
|
19905
|
-
} })), platform === PlatformType.WEB &&
|
|
19910
|
+
} })), platform === exports.PlatformType.WEB &&
|
|
19906
19911
|
editMapInfo.createMode &&
|
|
19907
|
-
editMapInfo?.selectElement?.svg && (jsxRuntime.jsx(DoodleElement, { data: { ...editMapInfo?.selectElement } })), platform === PlatformType.H5 &&
|
|
19912
|
+
editMapInfo?.selectElement?.svg && (jsxRuntime.jsx(DoodleElement, { data: { ...editMapInfo?.selectElement } })), platform === exports.PlatformType.H5 &&
|
|
19908
19913
|
editMapInfo.elementType === exports.DataType.OBSTACLE &&
|
|
19909
19914
|
editMapInfo.mobileMode === exports.MobileEditMode.CREATE && (jsxRuntime.jsx(CreateObstacleElement, { ref: pointManagerRef, styles: {
|
|
19910
19915
|
fillColor: '#FF7133',
|
|
@@ -19928,7 +19933,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19928
19933
|
addHistory({
|
|
19929
19934
|
selectElement: { ...editMapInfo?.selectElement, points: new_points },
|
|
19930
19935
|
});
|
|
19931
|
-
} })), platform === PlatformType.H5 &&
|
|
19936
|
+
} })), platform === exports.PlatformType.H5 &&
|
|
19932
19937
|
editMapInfo.elementType === exports.DataType.VISION_OFF &&
|
|
19933
19938
|
(editMapInfo.mobileMode === exports.MobileEditMode.CREATE ||
|
|
19934
19939
|
editMapInfo.mobileMode === exports.MobileEditMode.EDIT) &&
|
|
@@ -19951,7 +19956,7 @@ const SvgEditMap = React.forwardRef(({ mapJson, mapConfig, editMap, onEditInfoMa
|
|
|
19951
19956
|
},
|
|
19952
19957
|
points: item.points,
|
|
19953
19958
|
id: item.id,
|
|
19954
|
-
} }))), platform === PlatformType.H5 &&
|
|
19959
|
+
} }))), platform === exports.PlatformType.H5 &&
|
|
19955
19960
|
editMapInfo.elementType === exports.DataType.DOODLE &&
|
|
19956
19961
|
editMapInfo.mobileMode === exports.MobileEditMode.CREATE &&
|
|
19957
19962
|
editMapInfo?.selectElement?.svg && (jsxRuntime.jsx(DoodleElement, { data: { ...editMapInfo?.selectElement } }))] }) }));
|
|
@@ -19987,7 +19992,7 @@ const Crosshair = () => {
|
|
|
19987
19992
|
const { platform } = useCommonContext();
|
|
19988
19993
|
const { editMapInfo } = useMapEditContext();
|
|
19989
19994
|
const isVisible = React.useMemo(() => {
|
|
19990
|
-
if (platform === PlatformType.H5 &&
|
|
19995
|
+
if (platform === exports.PlatformType.H5 &&
|
|
19991
19996
|
editMapInfo?.mobileMode === exports.MobileEditMode.CREATE &&
|
|
19992
19997
|
editMapInfo?.elementType === exports.DataType.OBSTACLE) {
|
|
19993
19998
|
return true;
|
|
@@ -20079,7 +20084,7 @@ const getValidGpsBounds = (mapData, rotation = 0) => {
|
|
|
20079
20084
|
// 默认配置
|
|
20080
20085
|
const defaultMapConfig = DEFAULT_STYLES;
|
|
20081
20086
|
// 地图渲染器组件
|
|
20082
|
-
const MowerMapRenderer = React.forwardRef(({ sn, platform = PlatformType.WEB, edger = false, unitType = UnitsType.Imperial, language = 'en', onlyRead = false, mapConfig,
|
|
20087
|
+
const MowerMapRenderer = React.forwardRef(({ sn, platform = exports.PlatformType.WEB, edger = false, unitType = UnitsType.Imperial, language = 'en', onlyRead = false, mapConfig,
|
|
20083
20088
|
// pathConfig,
|
|
20084
20089
|
modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, onPathLoad, onError, className, style, googleMapInstance: _googleMapInstance, dragMap = false, dragCallbacks, defaultTransform, debug: _debug = false, doodleList = [], editMap = false, unStructMapData, disabledObstacles = false, onHandleEnterRecord, onHandleCompleteRecord, onHandleStopRecord, onHandleDeleteElement, onSaveBoundaryData, onSaveMap, onEditInfoMapChange, onUpdateBoundary, heightOptions, globalHeight, onHandleEvent, onSelectElement, }, ref) => {
|
|
20085
20090
|
const [currentError, setCurrentError] = React.useState(null);
|
|
@@ -20129,10 +20134,7 @@ modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, on
|
|
|
20129
20134
|
return {
|
|
20130
20135
|
minDistance,
|
|
20131
20136
|
editMapInfo,
|
|
20132
|
-
setEditMapInfo
|
|
20133
|
-
setEditMapInfo(editMapInfo);
|
|
20134
|
-
onEditInfoMapChange?.(editMapInfo);
|
|
20135
|
-
},
|
|
20137
|
+
setEditMapInfo,
|
|
20136
20138
|
onHandleEnterRecord,
|
|
20137
20139
|
onHandleCompleteRecord,
|
|
20138
20140
|
onHandleStopRecord,
|
|
@@ -20445,15 +20447,14 @@ modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, on
|
|
|
20445
20447
|
// 基于固定的参考zoom级别计算overlayScale
|
|
20446
20448
|
const zoomDiff = currentZoom - REFERENCE_ZOOM;
|
|
20447
20449
|
const scale = Math.pow(2, -zoomDiff); // 负数实现反向缩放
|
|
20448
|
-
|
|
20449
|
-
|
|
20450
|
-
|
|
20451
|
-
else if (scale > 4) {
|
|
20452
|
-
|
|
20453
|
-
}
|
|
20454
|
-
|
|
20455
|
-
|
|
20456
|
-
}
|
|
20450
|
+
setOverlayScale(scale < 1 ? 1 : scale);
|
|
20451
|
+
// if (scale < 1) {
|
|
20452
|
+
// setOverlayScale(1);
|
|
20453
|
+
// } else if (scale > 4) {
|
|
20454
|
+
// setOverlayScale(4);
|
|
20455
|
+
// } else {
|
|
20456
|
+
// setOverlayScale(scale);
|
|
20457
|
+
// }
|
|
20457
20458
|
};
|
|
20458
20459
|
// 使用lodash throttle进行节流处理: 100ms内只执行一次
|
|
20459
20460
|
const handleZoomChanged = throttle$2(updateScale, 50);
|
|
@@ -20566,7 +20567,7 @@ modelType, mapRef, mapJson, pathJson, realTimeData, antennaConfig, onMapLoad, on
|
|
|
20566
20567
|
}
|
|
20567
20568
|
// console.log('mowerrender------->', svgViewBox);
|
|
20568
20569
|
// 使用goole maps自定义叠加层,返回debug信息(如果启用)
|
|
20569
|
-
return (jsxRuntime.jsx(CommonContextProvider, { value: commonValue, children: jsxRuntime.jsx(SvgEditContextProvider, { value: svgEditValue, children: jsxRuntime.jsxs(MapEditContextProvider, { value: mapEditValue, children: [platform !== PlatformType.H5 && (jsxRuntime.jsx(jsxRuntime.Fragment, {})), platform === PlatformType.H5 && jsxRuntime.jsx(Crosshair, {}), jsxRuntime.jsxs(OverlayViewF, { onLoad: (lay) => {
|
|
20570
|
+
return (jsxRuntime.jsx(CommonContextProvider, { value: commonValue, children: jsxRuntime.jsx(SvgEditContextProvider, { value: svgEditValue, children: jsxRuntime.jsxs(MapEditContextProvider, { value: mapEditValue, children: [platform !== exports.PlatformType.H5 && (jsxRuntime.jsx(jsxRuntime.Fragment, {})), platform === exports.PlatformType.H5 && jsxRuntime.jsx(Crosshair, {}), jsxRuntime.jsxs(OverlayViewF, { onLoad: (lay) => {
|
|
20570
20571
|
setOverlay(lay);
|
|
20571
20572
|
}, onDraw: (style) => {
|
|
20572
20573
|
const layout = Object.keys(style).reduce((pre, cur) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MowerMapRenderer.d.ts","sourceRoot":"","sources":["../../src/render/MowerMapRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAcf,OAAO,EAGL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AA6B3B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAgGD,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"MowerMapRenderer.d.ts","sourceRoot":"","sources":["../../src/render/MowerMapRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAcf,OAAO,EAGL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AA6B3B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAgGD,eAAO,MAAM,gBAAgB,mGA0sB5B,CAAC;AAIF,eAAe,gBAAgB,CAAC;AAChC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBoundaryLabels.d.ts","sourceRoot":"","sources":["../../../src/render/boundaryLabels/useBoundaryLabels.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBoundaryLabels.d.ts","sourceRoot":"","sources":["../../../src/render/boundaryLabels/useBoundaryLabels.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,wBAAwB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,GAAI,2EAO/B,wBAAwB;;;CA0F1B,CAAC"}
|
package/dist/types/renderer.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { RobotStatus } from '../config';
|
|
|
5
5
|
import { RealTimeLocationType, RealTimePartitionType, RealTimeProcessType, RealTimeStatusType } from './realTime';
|
|
6
6
|
import { Point, UnitsType } from './utils';
|
|
7
7
|
import { DataType } from '@/processor/unified';
|
|
8
|
-
import { ClickEventType, EditMapInfo, ElementRecordParams } from '@/context/mapEdit';
|
|
8
|
+
import { ClickEventType, EditMapInfo, ElementRecordParams, MobileEditMode } from '@/context/mapEdit';
|
|
9
9
|
import { DoodleItem } from '../render/svgEditMap/components/AddEntry/components/DoodleModal';
|
|
10
10
|
export interface DragState {
|
|
11
11
|
x?: number;
|
|
@@ -181,6 +181,8 @@ export interface MowerMapRendererRef {
|
|
|
181
181
|
undoCreateObstaclePoint?: () => void;
|
|
182
182
|
getCreateObstaclePoints?: () => Point[];
|
|
183
183
|
getCreateObstaclePointCount?: () => number;
|
|
184
|
+
addVisionOffPoint?: () => void;
|
|
185
|
+
enterVisionOffEditMode?: (mode: MobileEditMode) => void;
|
|
184
186
|
addHistory?: (history: any) => void;
|
|
185
187
|
redo?: () => void;
|
|
186
188
|
undo?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/types/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/types/renderer.ts"],"names":[],"mappings":"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"}
|