@fleet-frontend/mower-maps 0.2.5-beta.10 → 0.2.5-beta.12
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.esm.js +60 -25
- package/dist/index.js +60 -25
- package/dist/render/charginPile/index.d.ts +3 -1
- package/dist/render/charginPile/index.d.ts.map +1 -1
- package/dist/render/svgElement/ObstacleElement/index.d.ts.map +1 -1
- package/dist/render/svgElement/PolygonELement/components/Magnifier/index.d.ts.map +1 -1
- package/dist/render/svgElement/PolygonELement/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -23197,7 +23197,7 @@ const useChargingPile = ({ viewBox, rotation = 0 }) => {
|
|
|
23197
23197
|
return items;
|
|
23198
23198
|
};
|
|
23199
23199
|
|
|
23200
|
-
const CharginPile = React__default.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSvgUnits = false, isHighlight = true, }) => {
|
|
23200
|
+
const CharginPile = React__default.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSvgUnits = false, minDisplaySizePx, isHighlight = true, }) => {
|
|
23201
23201
|
const items = useChargingPile({ viewBox: viewBox || null, rotation });
|
|
23202
23202
|
const containerStyle = useMemo(() => ({
|
|
23203
23203
|
position: 'absolute',
|
|
@@ -23209,13 +23209,18 @@ const CharginPile = React__default.memo(({ viewBox, rotation = 0, sizeScale = 1,
|
|
|
23209
23209
|
zIndex: 750,
|
|
23210
23210
|
opacity: isHighlight ? SvgMapOpacity.HIGHLIGHT : SvgMapOpacity.UN_HIGHLIGHT,
|
|
23211
23211
|
}), [isHighlight]);
|
|
23212
|
+
const useMinPx = Boolean(sizeInSvgUnits && viewBox && minDisplaySizePx != null && minDisplaySizePx > 0);
|
|
23212
23213
|
return (jsx("div", { style: containerStyle, children: items?.map((item, idx) => (jsx("div", { className: "charging-pile", style: {
|
|
23213
23214
|
position: 'absolute',
|
|
23214
23215
|
width: sizeInSvgUnits && viewBox
|
|
23215
|
-
?
|
|
23216
|
+
? useMinPx
|
|
23217
|
+
? `max(${minDisplaySizePx}px, ${(item.size / Math.max(viewBox.width, 1)) * 100 * sizeScale}%)`
|
|
23218
|
+
: `${(item.size / Math.max(viewBox.width, 1)) * 100 * sizeScale}%`
|
|
23216
23219
|
: item.size * sizeScale,
|
|
23217
23220
|
height: sizeInSvgUnits && viewBox
|
|
23218
|
-
?
|
|
23221
|
+
? useMinPx
|
|
23222
|
+
? `max(${minDisplaySizePx}px, ${(item.size / Math.max(viewBox.height, 1)) * 100 * sizeScale}%)`
|
|
23223
|
+
: `${(item.size / Math.max(viewBox.height, 1)) * 100 * sizeScale}%`
|
|
23219
23224
|
: item.size * sizeScale,
|
|
23220
23225
|
left: `${item.leftPct}%`,
|
|
23221
23226
|
top: `${item.topPct}%`,
|
|
@@ -23228,6 +23233,8 @@ const CharginPile = React__default.memo(({ viewBox, rotation = 0, sizeScale = 1,
|
|
|
23228
23233
|
const MAX_STATIC_SIZE = 640;
|
|
23229
23234
|
const MAX_STATIC_MAP_RETRY = 3;
|
|
23230
23235
|
const STATIC_MAP_RETRY_COOLDOWN_MS = 5000;
|
|
23236
|
+
/** 放大镜内充电桩屏幕像素下限,避免过小导致通道与桩视觉错位 */
|
|
23237
|
+
const MAGNIFIER_CHARGING_PILE_MIN_DISPLAY_PX = 20;
|
|
23231
23238
|
const Magnifier = ({ visible, dragState, polygonPoints, fillColor = 'rgba(255, 122, 51, 0.1)', strokeColor = 'rgba(255, 122, 51, 1)', strokeWidth = 2, zoom = 3, size = 200, }) => {
|
|
23232
23239
|
const { svgViewBox, mapRef, googleMapStaticApiKey, drag } = useCommonContext();
|
|
23233
23240
|
const { svgElementDatas, svgRef } = useSvgEditContext();
|
|
@@ -23581,7 +23588,7 @@ const Magnifier = ({ visible, dragState, polygonPoints, fillColor = 'rgba(255, 1
|
|
|
23581
23588
|
? 3.6 / styleZoomFactor
|
|
23582
23589
|
: 3 / styleZoomFactor;
|
|
23583
23590
|
return (jsx("circle", { cx: x, cy: y, r: pointRadius, fill: pointFill, stroke: pointStroke, strokeWidth: pointStrokeWidth }, idx));
|
|
23584
|
-
})] })), dragState.dragType === 'new' && dragState.edgeInfo && (jsx(Fragment, { children: jsx("line", { x1: dragState.edgeInfo.startPoint.x, y1: dragState.edgeInfo.startPoint.y, x2: dragState.edgeInfo.endPoint.x, y2: dragState.edgeInfo.endPoint.y, stroke: "#999", strokeWidth: (strokeWidth * 3.2) / styleZoomFactor, strokeDasharray: `${6 / styleZoomFactor},${6 / styleZoomFactor}` }) }))] }), jsx(CharginPile, { viewBox: magnifierViewBox || null, rotation: actureRotate, sizeInSvgUnits: true,
|
|
23591
|
+
})] })), dragState.dragType === 'new' && dragState.edgeInfo && (jsx(Fragment, { children: jsx("line", { x1: dragState.edgeInfo.startPoint.x, y1: dragState.edgeInfo.startPoint.y, x2: dragState.edgeInfo.endPoint.x, y2: dragState.edgeInfo.endPoint.y, stroke: "#999", strokeWidth: (strokeWidth * 3.2) / styleZoomFactor, strokeDasharray: `${6 / styleZoomFactor},${6 / styleZoomFactor}` }) }))] }), jsx(CharginPile, { viewBox: magnifierViewBox || null, rotation: actureRotate, sizeInSvgUnits: true, minDisplaySizePx: MAGNIFIER_CHARGING_PILE_MIN_DISPLAY_PX,
|
|
23585
23592
|
// 充电桩最多保持原始尺寸,不允许放大超过 1 倍
|
|
23586
23593
|
sizeScale: Math.min(1, 1 / styleZoomFactor) })] }));
|
|
23587
23594
|
// 使用 Portal 渲染到 body,避免层级问题
|
|
@@ -24132,7 +24139,7 @@ const createPathData = (points) => {
|
|
|
24132
24139
|
};
|
|
24133
24140
|
const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor = 'rgba(0, 0, 0, 0.1)', hoverFillColor = '', fillOpacity = 1, strokeColor = '#000', strokeWidth = 2, strokeOpacity = 1, createMode = false, showPoints = false, onPointClick, completed = false, mousePos = null, editMode = false, onCoordinatesChange, onPathClick, onPolygonClick, onVertexDelete, draggable = true, // 新增参数,如果未指定则根据createMode和editMode自动判断
|
|
24134
24141
|
}) => {
|
|
24135
|
-
const { overlayScale, unitType, showStraddleBoundaryBorder, platform, onH5FirstSelectObstaclePoint } = useCommonContext();
|
|
24142
|
+
const { overlayScale, unitType, showStraddleBoundaryBorder, platform, onH5FirstSelectObstaclePoint, } = useCommonContext();
|
|
24136
24143
|
const { onHandleEvent } = useMapEditContext();
|
|
24137
24144
|
const { svgRef } = useSvgEditContext();
|
|
24138
24145
|
const [dragState, setDragState] = useState({
|
|
@@ -24184,7 +24191,7 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24184
24191
|
const rect = target.getBoundingClientRect();
|
|
24185
24192
|
setTooltipPos({
|
|
24186
24193
|
x: rect.left + rect.width + 4,
|
|
24187
|
-
y: rect.top - 10
|
|
24194
|
+
y: rect.top - 10,
|
|
24188
24195
|
});
|
|
24189
24196
|
};
|
|
24190
24197
|
// 处理顶点点击(仅透出点击;不触发删除)
|
|
@@ -24319,6 +24326,10 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24319
24326
|
edgeInfo: edgeInfo,
|
|
24320
24327
|
dragType: 'new',
|
|
24321
24328
|
});
|
|
24329
|
+
// H5 禁区:边上长按/点击插入新顶点后与「长按选中顶点」共用震动(pending + useLayoutEffect)
|
|
24330
|
+
if (platform === PlatformType.H5 && editMapInfo?.elementType === DataType.OBSTACLE) {
|
|
24331
|
+
pendingH5ObstacleSelectHapticRef.current = true;
|
|
24332
|
+
}
|
|
24322
24333
|
// 将新创建的点设为选中态,便于后续直接拖拽
|
|
24323
24334
|
setSelectedVertexIndex(insertIndex);
|
|
24324
24335
|
}, [
|
|
@@ -24329,6 +24340,8 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24329
24340
|
coordinates,
|
|
24330
24341
|
getSVGCoordinates,
|
|
24331
24342
|
calculatePerpendicularFoot$1,
|
|
24343
|
+
platform,
|
|
24344
|
+
editMapInfo?.elementType,
|
|
24332
24345
|
]);
|
|
24333
24346
|
// H5平台长按边线创建新顶点
|
|
24334
24347
|
const handleEdgeLongPressStart = useCallback((e, edgeStartIndex) => {
|
|
@@ -24730,7 +24743,7 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24730
24743
|
WebkitTouchCallout: 'none',
|
|
24731
24744
|
touchAction: 'none',
|
|
24732
24745
|
} })] }));
|
|
24733
|
-
})()] })), renderCoordinates.length >= 2 && (jsx("polygon", { className: canSelect ? styles$6.pointerCursor : '', points: polygonPoints, fill: isHover ?
|
|
24746
|
+
})()] })), renderCoordinates.length >= 2 && (jsx("polygon", { className: canSelect ? styles$6.pointerCursor : '', points: polygonPoints, fill: isHover ? hoverFillColor || fillColor : fillColor, fillOpacity: fillOpacity, stroke: "none" // 边框透明
|
|
24734
24747
|
, onClick: onPolygonClick })), jsx("g", { children: renderCoordinates.length >= 2 &&
|
|
24735
24748
|
pathSegments.map((segment, index) => {
|
|
24736
24749
|
if (segment.points.length < 2)
|
|
@@ -24756,12 +24769,27 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24756
24769
|
renderCoordinates.map((coord, index) => {
|
|
24757
24770
|
const nextCoord = renderCoordinates[(index + 1) % renderCoordinates.length];
|
|
24758
24771
|
const isDashPath = coord[2] === 1;
|
|
24759
|
-
|
|
24760
|
-
|
|
24761
|
-
|
|
24762
|
-
|
|
24763
|
-
|
|
24764
|
-
|
|
24772
|
+
const edgeLineCommon = {
|
|
24773
|
+
x1: coord[0],
|
|
24774
|
+
y1: coord[1],
|
|
24775
|
+
x2: nextCoord[0],
|
|
24776
|
+
y2: nextCoord[1],
|
|
24777
|
+
};
|
|
24778
|
+
const edgeLineStyle = {
|
|
24779
|
+
userSelect: 'none',
|
|
24780
|
+
WebkitUserSelect: 'none',
|
|
24781
|
+
WebkitTouchCallout: 'none',
|
|
24782
|
+
touchAction: 'none',
|
|
24783
|
+
};
|
|
24784
|
+
// H5 实线:透明粗线仅作长按热区,描边只看上方 path;H5 虚线/Web:沿用透明或主题色边线 + 对应事件(合并为一个 line,避免两段重复)
|
|
24785
|
+
const isH5SolidHitOnly = platform === PlatformType.H5 && ((editMode && !isDashPath) || createMode);
|
|
24786
|
+
const edgeStroke = isH5SolidHitOnly || isDashPath ? 'transparent' : strokeColor;
|
|
24787
|
+
const edgeStrokeWidth = isH5SolidHitOnly
|
|
24788
|
+
? strokeWidth * 12
|
|
24789
|
+
: platform === PlatformType.H5
|
|
24790
|
+
? strokeWidth * 2
|
|
24791
|
+
: strokeWidth;
|
|
24792
|
+
return (jsx("line", { ...edgeLineCommon, stroke: edgeStroke, strokeWidth: edgeStrokeWidth, ...(isH5SolidHitOnly ? { strokeLinecap: 'round' } : {}), className: editMode ? styles$6.pointerCursor : '', style: edgeLineStyle, vectorEffect: "non-scaling-stroke", ...(platform === PlatformType.H5
|
|
24765
24793
|
? {
|
|
24766
24794
|
onTouchStart: createReactEventHandler((e) => handleEdgeLongPressStart(e, index)),
|
|
24767
24795
|
onTouchEnd: createReactEventHandler(() => handleEdgeLongPressEnd()),
|
|
@@ -24908,13 +24936,17 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24908
24936
|
}
|
|
24909
24937
|
}
|
|
24910
24938
|
},
|
|
24911
|
-
onMouseEnter: canComplete
|
|
24912
|
-
|
|
24913
|
-
|
|
24914
|
-
|
|
24915
|
-
|
|
24916
|
-
|
|
24917
|
-
|
|
24939
|
+
onMouseEnter: canComplete
|
|
24940
|
+
? (e) => {
|
|
24941
|
+
setCompleteTooltipOpen(true);
|
|
24942
|
+
updateTooltipPos(e.target);
|
|
24943
|
+
}
|
|
24944
|
+
: undefined,
|
|
24945
|
+
onMouseLeave: canComplete
|
|
24946
|
+
? () => {
|
|
24947
|
+
setCompleteTooltipOpen(false);
|
|
24948
|
+
}
|
|
24949
|
+
: undefined,
|
|
24918
24950
|
}) }), platform === PlatformType.H5 && tooltipIndex === idx && coordinates.length > 3 && (jsxs("g", { transform: `translate(${coord[0] + 4 * overlayScale * 2}, ${coord[1] - 4 * overlayScale * 2}) scale(${overlayScale * 2})`, onClick: (e) => {
|
|
24919
24951
|
e.preventDefault();
|
|
24920
24952
|
e.stopPropagation();
|
|
@@ -24939,7 +24971,9 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24939
24971
|
// </rect>
|
|
24940
24972
|
)] }, `vertex-${idx}`));
|
|
24941
24973
|
}), platform === PlatformType.WEB && tooltipIndex !== null && (jsx(Tooltip, { open: true, x: tooltipPos.x, y: tooltipPos.y, text: "Remove", onClick: () => {
|
|
24942
|
-
if (onVertexDelete &&
|
|
24974
|
+
if (onVertexDelete &&
|
|
24975
|
+
(editMode || (createMode && completed)) &&
|
|
24976
|
+
coordinates.length > 3) {
|
|
24943
24977
|
onVertexDelete(renderCoordinates?.length - 1 - tooltipIndex);
|
|
24944
24978
|
}
|
|
24945
24979
|
setTooltipIndex(null);
|
|
@@ -25159,10 +25193,11 @@ const ObstacleElement = ({ data, isHover }) => {
|
|
|
25159
25193
|
const strokeWidth = useMemo(() => {
|
|
25160
25194
|
// 如果是h5选中的情况下,禁区只有在start模式下才需要加粗
|
|
25161
25195
|
// 其他模式展示的是其他的样式
|
|
25162
|
-
if (platform === PlatformType.H5 &&
|
|
25196
|
+
if ((platform === PlatformType.H5 &&
|
|
25163
25197
|
editMapInfo?.selectElement?.id === data.id &&
|
|
25164
|
-
editMapInfo.mobileMode === MobileEditMode.START)
|
|
25165
|
-
|
|
25198
|
+
editMapInfo.mobileMode === MobileEditMode.START) ||
|
|
25199
|
+
editMapInfo.mobileMode === MobileEditMode.EDIT) {
|
|
25200
|
+
return dp2px((style.lineWidth || 1) * 2.2);
|
|
25166
25201
|
// return dp2px(((style.lineWidth as number) || 3) * 3);
|
|
25167
25202
|
}
|
|
25168
25203
|
return dp2px(style.lineWidth || 3);
|
|
@@ -29075,7 +29110,7 @@ const CreateObstacleElement = forwardRef(({ enabled = false, svgElement, onPoint
|
|
|
29075
29110
|
if (!enabled || points.length === 0) {
|
|
29076
29111
|
return null;
|
|
29077
29112
|
}
|
|
29078
|
-
return (jsx(PolygonElement, { points: points.map((p) => [p.x, p.y, 2]), fillColor: styles.fillColor, fillOpacity: 0.3, strokeColor: styles.strokeColor, strokeWidth: 1, strokeOpacity: 1, createMode: true, showPoints: true, editMode: false, completed: true, draggable: false }));
|
|
29113
|
+
return (jsx(PolygonElement, { points: points.map((p) => [p.x, p.y, 2]), fillColor: styles.fillColor, fillOpacity: 0.3, strokeColor: styles.strokeColor, strokeWidth: 1.8, strokeOpacity: 1, createMode: true, showPoints: true, editMode: false, completed: true, draggable: false }));
|
|
29079
29114
|
});
|
|
29080
29115
|
CreateObstacleElement.displayName = 'CreateObstacleElement';
|
|
29081
29116
|
|
package/dist/index.js
CHANGED
|
@@ -23217,7 +23217,7 @@ const useChargingPile = ({ viewBox, rotation = 0 }) => {
|
|
|
23217
23217
|
return items;
|
|
23218
23218
|
};
|
|
23219
23219
|
|
|
23220
|
-
const CharginPile = React.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSvgUnits = false, isHighlight = true, }) => {
|
|
23220
|
+
const CharginPile = React.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSvgUnits = false, minDisplaySizePx, isHighlight = true, }) => {
|
|
23221
23221
|
const items = useChargingPile({ viewBox: viewBox || null, rotation });
|
|
23222
23222
|
const containerStyle = React.useMemo(() => ({
|
|
23223
23223
|
position: 'absolute',
|
|
@@ -23229,13 +23229,18 @@ const CharginPile = React.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSv
|
|
|
23229
23229
|
zIndex: 750,
|
|
23230
23230
|
opacity: isHighlight ? SvgMapOpacity.HIGHLIGHT : SvgMapOpacity.UN_HIGHLIGHT,
|
|
23231
23231
|
}), [isHighlight]);
|
|
23232
|
+
const useMinPx = Boolean(sizeInSvgUnits && viewBox && minDisplaySizePx != null && minDisplaySizePx > 0);
|
|
23232
23233
|
return (jsxRuntime.jsx("div", { style: containerStyle, children: items?.map((item, idx) => (jsxRuntime.jsx("div", { className: "charging-pile", style: {
|
|
23233
23234
|
position: 'absolute',
|
|
23234
23235
|
width: sizeInSvgUnits && viewBox
|
|
23235
|
-
?
|
|
23236
|
+
? useMinPx
|
|
23237
|
+
? `max(${minDisplaySizePx}px, ${(item.size / Math.max(viewBox.width, 1)) * 100 * sizeScale}%)`
|
|
23238
|
+
: `${(item.size / Math.max(viewBox.width, 1)) * 100 * sizeScale}%`
|
|
23236
23239
|
: item.size * sizeScale,
|
|
23237
23240
|
height: sizeInSvgUnits && viewBox
|
|
23238
|
-
?
|
|
23241
|
+
? useMinPx
|
|
23242
|
+
? `max(${minDisplaySizePx}px, ${(item.size / Math.max(viewBox.height, 1)) * 100 * sizeScale}%)`
|
|
23243
|
+
: `${(item.size / Math.max(viewBox.height, 1)) * 100 * sizeScale}%`
|
|
23239
23244
|
: item.size * sizeScale,
|
|
23240
23245
|
left: `${item.leftPct}%`,
|
|
23241
23246
|
top: `${item.topPct}%`,
|
|
@@ -23248,6 +23253,8 @@ const CharginPile = React.memo(({ viewBox, rotation = 0, sizeScale = 1, sizeInSv
|
|
|
23248
23253
|
const MAX_STATIC_SIZE = 640;
|
|
23249
23254
|
const MAX_STATIC_MAP_RETRY = 3;
|
|
23250
23255
|
const STATIC_MAP_RETRY_COOLDOWN_MS = 5000;
|
|
23256
|
+
/** 放大镜内充电桩屏幕像素下限,避免过小导致通道与桩视觉错位 */
|
|
23257
|
+
const MAGNIFIER_CHARGING_PILE_MIN_DISPLAY_PX = 20;
|
|
23251
23258
|
const Magnifier = ({ visible, dragState, polygonPoints, fillColor = 'rgba(255, 122, 51, 0.1)', strokeColor = 'rgba(255, 122, 51, 1)', strokeWidth = 2, zoom = 3, size = 200, }) => {
|
|
23252
23259
|
const { svgViewBox, mapRef, googleMapStaticApiKey, drag } = useCommonContext();
|
|
23253
23260
|
const { svgElementDatas, svgRef } = useSvgEditContext();
|
|
@@ -23601,7 +23608,7 @@ const Magnifier = ({ visible, dragState, polygonPoints, fillColor = 'rgba(255, 1
|
|
|
23601
23608
|
? 3.6 / styleZoomFactor
|
|
23602
23609
|
: 3 / styleZoomFactor;
|
|
23603
23610
|
return (jsxRuntime.jsx("circle", { cx: x, cy: y, r: pointRadius, fill: pointFill, stroke: pointStroke, strokeWidth: pointStrokeWidth }, idx));
|
|
23604
|
-
})] })), dragState.dragType === 'new' && dragState.edgeInfo && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("line", { x1: dragState.edgeInfo.startPoint.x, y1: dragState.edgeInfo.startPoint.y, x2: dragState.edgeInfo.endPoint.x, y2: dragState.edgeInfo.endPoint.y, stroke: "#999", strokeWidth: (strokeWidth * 3.2) / styleZoomFactor, strokeDasharray: `${6 / styleZoomFactor},${6 / styleZoomFactor}` }) }))] }), jsxRuntime.jsx(CharginPile, { viewBox: magnifierViewBox || null, rotation: actureRotate, sizeInSvgUnits: true,
|
|
23611
|
+
})] })), dragState.dragType === 'new' && dragState.edgeInfo && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("line", { x1: dragState.edgeInfo.startPoint.x, y1: dragState.edgeInfo.startPoint.y, x2: dragState.edgeInfo.endPoint.x, y2: dragState.edgeInfo.endPoint.y, stroke: "#999", strokeWidth: (strokeWidth * 3.2) / styleZoomFactor, strokeDasharray: `${6 / styleZoomFactor},${6 / styleZoomFactor}` }) }))] }), jsxRuntime.jsx(CharginPile, { viewBox: magnifierViewBox || null, rotation: actureRotate, sizeInSvgUnits: true, minDisplaySizePx: MAGNIFIER_CHARGING_PILE_MIN_DISPLAY_PX,
|
|
23605
23612
|
// 充电桩最多保持原始尺寸,不允许放大超过 1 倍
|
|
23606
23613
|
sizeScale: Math.min(1, 1 / styleZoomFactor) })] }));
|
|
23607
23614
|
// 使用 Portal 渲染到 body,避免层级问题
|
|
@@ -24152,7 +24159,7 @@ const createPathData = (points) => {
|
|
|
24152
24159
|
};
|
|
24153
24160
|
const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor = 'rgba(0, 0, 0, 0.1)', hoverFillColor = '', fillOpacity = 1, strokeColor = '#000', strokeWidth = 2, strokeOpacity = 1, createMode = false, showPoints = false, onPointClick, completed = false, mousePos = null, editMode = false, onCoordinatesChange, onPathClick, onPolygonClick, onVertexDelete, draggable = true, // 新增参数,如果未指定则根据createMode和editMode自动判断
|
|
24154
24161
|
}) => {
|
|
24155
|
-
const { overlayScale, unitType, showStraddleBoundaryBorder, platform, onH5FirstSelectObstaclePoint } = useCommonContext();
|
|
24162
|
+
const { overlayScale, unitType, showStraddleBoundaryBorder, platform, onH5FirstSelectObstaclePoint, } = useCommonContext();
|
|
24156
24163
|
const { onHandleEvent } = useMapEditContext();
|
|
24157
24164
|
const { svgRef } = useSvgEditContext();
|
|
24158
24165
|
const [dragState, setDragState] = React.useState({
|
|
@@ -24204,7 +24211,7 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24204
24211
|
const rect = target.getBoundingClientRect();
|
|
24205
24212
|
setTooltipPos({
|
|
24206
24213
|
x: rect.left + rect.width + 4,
|
|
24207
|
-
y: rect.top - 10
|
|
24214
|
+
y: rect.top - 10,
|
|
24208
24215
|
});
|
|
24209
24216
|
};
|
|
24210
24217
|
// 处理顶点点击(仅透出点击;不触发删除)
|
|
@@ -24339,6 +24346,10 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24339
24346
|
edgeInfo: edgeInfo,
|
|
24340
24347
|
dragType: 'new',
|
|
24341
24348
|
});
|
|
24349
|
+
// H5 禁区:边上长按/点击插入新顶点后与「长按选中顶点」共用震动(pending + useLayoutEffect)
|
|
24350
|
+
if (platform === exports.PlatformType.H5 && editMapInfo?.elementType === exports.DataType.OBSTACLE) {
|
|
24351
|
+
pendingH5ObstacleSelectHapticRef.current = true;
|
|
24352
|
+
}
|
|
24342
24353
|
// 将新创建的点设为选中态,便于后续直接拖拽
|
|
24343
24354
|
setSelectedVertexIndex(insertIndex);
|
|
24344
24355
|
}, [
|
|
@@ -24349,6 +24360,8 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24349
24360
|
coordinates,
|
|
24350
24361
|
getSVGCoordinates,
|
|
24351
24362
|
calculatePerpendicularFoot$1,
|
|
24363
|
+
platform,
|
|
24364
|
+
editMapInfo?.elementType,
|
|
24352
24365
|
]);
|
|
24353
24366
|
// H5平台长按边线创建新顶点
|
|
24354
24367
|
const handleEdgeLongPressStart = React.useCallback((e, edgeStartIndex) => {
|
|
@@ -24750,7 +24763,7 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24750
24763
|
WebkitTouchCallout: 'none',
|
|
24751
24764
|
touchAction: 'none',
|
|
24752
24765
|
} })] }));
|
|
24753
|
-
})()] })), renderCoordinates.length >= 2 && (jsxRuntime.jsx("polygon", { className: canSelect ? styles$6.pointerCursor : '', points: polygonPoints, fill: isHover ?
|
|
24766
|
+
})()] })), renderCoordinates.length >= 2 && (jsxRuntime.jsx("polygon", { className: canSelect ? styles$6.pointerCursor : '', points: polygonPoints, fill: isHover ? hoverFillColor || fillColor : fillColor, fillOpacity: fillOpacity, stroke: "none" // 边框透明
|
|
24754
24767
|
, onClick: onPolygonClick })), jsxRuntime.jsx("g", { children: renderCoordinates.length >= 2 &&
|
|
24755
24768
|
pathSegments.map((segment, index) => {
|
|
24756
24769
|
if (segment.points.length < 2)
|
|
@@ -24776,12 +24789,27 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24776
24789
|
renderCoordinates.map((coord, index) => {
|
|
24777
24790
|
const nextCoord = renderCoordinates[(index + 1) % renderCoordinates.length];
|
|
24778
24791
|
const isDashPath = coord[2] === 1;
|
|
24779
|
-
|
|
24780
|
-
|
|
24781
|
-
|
|
24782
|
-
|
|
24783
|
-
|
|
24784
|
-
|
|
24792
|
+
const edgeLineCommon = {
|
|
24793
|
+
x1: coord[0],
|
|
24794
|
+
y1: coord[1],
|
|
24795
|
+
x2: nextCoord[0],
|
|
24796
|
+
y2: nextCoord[1],
|
|
24797
|
+
};
|
|
24798
|
+
const edgeLineStyle = {
|
|
24799
|
+
userSelect: 'none',
|
|
24800
|
+
WebkitUserSelect: 'none',
|
|
24801
|
+
WebkitTouchCallout: 'none',
|
|
24802
|
+
touchAction: 'none',
|
|
24803
|
+
};
|
|
24804
|
+
// H5 实线:透明粗线仅作长按热区,描边只看上方 path;H5 虚线/Web:沿用透明或主题色边线 + 对应事件(合并为一个 line,避免两段重复)
|
|
24805
|
+
const isH5SolidHitOnly = platform === exports.PlatformType.H5 && ((editMode && !isDashPath) || createMode);
|
|
24806
|
+
const edgeStroke = isH5SolidHitOnly || isDashPath ? 'transparent' : strokeColor;
|
|
24807
|
+
const edgeStrokeWidth = isH5SolidHitOnly
|
|
24808
|
+
? strokeWidth * 12
|
|
24809
|
+
: platform === exports.PlatformType.H5
|
|
24810
|
+
? strokeWidth * 2
|
|
24811
|
+
: strokeWidth;
|
|
24812
|
+
return (jsxRuntime.jsx("line", { ...edgeLineCommon, stroke: edgeStroke, strokeWidth: edgeStrokeWidth, ...(isH5SolidHitOnly ? { strokeLinecap: 'round' } : {}), className: editMode ? styles$6.pointerCursor : '', style: edgeLineStyle, vectorEffect: "non-scaling-stroke", ...(platform === exports.PlatformType.H5
|
|
24785
24813
|
? {
|
|
24786
24814
|
onTouchStart: createReactEventHandler((e) => handleEdgeLongPressStart(e, index)),
|
|
24787
24815
|
onTouchEnd: createReactEventHandler(() => handleEdgeLongPressEnd()),
|
|
@@ -24928,13 +24956,17 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24928
24956
|
}
|
|
24929
24957
|
}
|
|
24930
24958
|
},
|
|
24931
|
-
onMouseEnter: canComplete
|
|
24932
|
-
|
|
24933
|
-
|
|
24934
|
-
|
|
24935
|
-
|
|
24936
|
-
|
|
24937
|
-
|
|
24959
|
+
onMouseEnter: canComplete
|
|
24960
|
+
? (e) => {
|
|
24961
|
+
setCompleteTooltipOpen(true);
|
|
24962
|
+
updateTooltipPos(e.target);
|
|
24963
|
+
}
|
|
24964
|
+
: undefined,
|
|
24965
|
+
onMouseLeave: canComplete
|
|
24966
|
+
? () => {
|
|
24967
|
+
setCompleteTooltipOpen(false);
|
|
24968
|
+
}
|
|
24969
|
+
: undefined,
|
|
24938
24970
|
}) }), platform === exports.PlatformType.H5 && tooltipIndex === idx && coordinates.length > 3 && (jsxRuntime.jsxs("g", { transform: `translate(${coord[0] + 4 * overlayScale * 2}, ${coord[1] - 4 * overlayScale * 2}) scale(${overlayScale * 2})`, onClick: (e) => {
|
|
24939
24971
|
e.preventDefault();
|
|
24940
24972
|
e.stopPropagation();
|
|
@@ -24959,7 +24991,9 @@ const PolygonElement = ({ canSelect = false, isHover = false, points, fillColor
|
|
|
24959
24991
|
// </rect>
|
|
24960
24992
|
)] }, `vertex-${idx}`));
|
|
24961
24993
|
}), platform === exports.PlatformType.WEB && tooltipIndex !== null && (jsxRuntime.jsx(Tooltip, { open: true, x: tooltipPos.x, y: tooltipPos.y, text: "Remove", onClick: () => {
|
|
24962
|
-
if (onVertexDelete &&
|
|
24994
|
+
if (onVertexDelete &&
|
|
24995
|
+
(editMode || (createMode && completed)) &&
|
|
24996
|
+
coordinates.length > 3) {
|
|
24963
24997
|
onVertexDelete(renderCoordinates?.length - 1 - tooltipIndex);
|
|
24964
24998
|
}
|
|
24965
24999
|
setTooltipIndex(null);
|
|
@@ -25179,10 +25213,11 @@ const ObstacleElement = ({ data, isHover }) => {
|
|
|
25179
25213
|
const strokeWidth = React.useMemo(() => {
|
|
25180
25214
|
// 如果是h5选中的情况下,禁区只有在start模式下才需要加粗
|
|
25181
25215
|
// 其他模式展示的是其他的样式
|
|
25182
|
-
if (platform === exports.PlatformType.H5 &&
|
|
25216
|
+
if ((platform === exports.PlatformType.H5 &&
|
|
25183
25217
|
editMapInfo?.selectElement?.id === data.id &&
|
|
25184
|
-
editMapInfo.mobileMode === exports.MobileEditMode.START)
|
|
25185
|
-
|
|
25218
|
+
editMapInfo.mobileMode === exports.MobileEditMode.START) ||
|
|
25219
|
+
editMapInfo.mobileMode === exports.MobileEditMode.EDIT) {
|
|
25220
|
+
return dp2px((style.lineWidth || 1) * 2.2);
|
|
25186
25221
|
// return dp2px(((style.lineWidth as number) || 3) * 3);
|
|
25187
25222
|
}
|
|
25188
25223
|
return dp2px(style.lineWidth || 3);
|
|
@@ -29095,7 +29130,7 @@ const CreateObstacleElement = React.forwardRef(({ enabled = false, svgElement, o
|
|
|
29095
29130
|
if (!enabled || points.length === 0) {
|
|
29096
29131
|
return null;
|
|
29097
29132
|
}
|
|
29098
|
-
return (jsxRuntime.jsx(PolygonElement, { points: points.map((p) => [p.x, p.y, 2]), fillColor: styles.fillColor, fillOpacity: 0.3, strokeColor: styles.strokeColor, strokeWidth: 1, strokeOpacity: 1, createMode: true, showPoints: true, editMode: false, completed: true, draggable: false }));
|
|
29133
|
+
return (jsxRuntime.jsx(PolygonElement, { points: points.map((p) => [p.x, p.y, 2]), fillColor: styles.fillColor, fillOpacity: 0.3, strokeColor: styles.strokeColor, strokeWidth: 1.8, strokeOpacity: 1, createMode: true, showPoints: true, editMode: false, completed: true, draggable: false }));
|
|
29099
29134
|
});
|
|
29100
29135
|
CreateObstacleElement.displayName = 'CreateObstacleElement';
|
|
29101
29136
|
|
|
@@ -9,8 +9,10 @@ interface ChargingPileProps {
|
|
|
9
9
|
rotation?: number;
|
|
10
10
|
sizeScale?: number;
|
|
11
11
|
sizeInSvgUnits?: boolean;
|
|
12
|
+
/** 放大镜等场景:屏幕像素下限,避免图标过小与通道线错位感(仅与 sizeInSvgUnits 一起生效) */
|
|
13
|
+
minDisplaySizePx?: number;
|
|
12
14
|
isHighlight?: boolean;
|
|
13
15
|
}
|
|
14
|
-
declare const CharginPile: React.MemoExoticComponent<({ viewBox, rotation, sizeScale, sizeInSvgUnits, isHighlight, }: ChargingPileProps) => import("react/jsx-runtime").JSX.Element>;
|
|
16
|
+
declare const CharginPile: React.MemoExoticComponent<({ viewBox, rotation, sizeScale, sizeInSvgUnits, minDisplaySizePx, isHighlight, }: ChargingPileProps) => import("react/jsx-runtime").JSX.Element>;
|
|
15
17
|
export default CharginPile;
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/render/charginPile/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,UAAU,iBAAiB;IACzB,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/render/charginPile/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,UAAU,iBAAiB;IACzB,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,QAAA,MAAM,WAAW,+GAQZ,iBAAiB,6CAwDrB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/render/svgElement/ObstacleElement/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAW7D,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,eAAe,GAAI,mBAAmB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/render/svgElement/ObstacleElement/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAW7D,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,eAAe,GAAI,mBAAmB,oBAAoB,4CAkI/D,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/render/svgElement/PolygonELement/components/Magnifier/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/render/svgElement/PolygonELement/components/Magnifier/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAiB5E,UAAU,SAAS;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE;QACR,UAAU,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,QAAQ,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;IACT,QAAQ,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;CACrC;AAED,UAAU,cAAc;IACtB,cAAc;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB;IACjB,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2evC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/render/svgElement/PolygonELement/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAC;AAsBlG;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,EAAE,EAAE,KAAG,MAE7D,CAAC;AA+BF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EAAE,EAAE,EACvB,YAAW,OAAc,KACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAyC5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,EAAE,KAAG,MAUnD,CAAC;AAgBF,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;IACxD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/render/svgElement/PolygonELement/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAC;AAsBlG;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,EAAE,EAAE,KAAG,MAE7D,CAAC;AA+BF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EAAE,EAAE,EACvB,YAAW,OAAc,KACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAyC5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,EAAE,KAAG,MAUnD,CAAC;AAgBF,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;IACxD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqyCxD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|