@fleet-frontend/mower-maps 0.2.6-beta.2 → 0.2.6-beta.4

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 CHANGED
@@ -22956,9 +22956,9 @@ const VertexElement = React__default.memo(({ r, stroke, fill, ...props }) => {
22956
22956
  });
22957
22957
 
22958
22958
  var _path$1;
22959
- function _extends$8() { return _extends$8 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$8.apply(null, arguments); }
22959
+ function _extends$5() { return _extends$5 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$5.apply(null, arguments); }
22960
22960
  var SvgDelete = function SvgDelete(props) {
22961
- return /*#__PURE__*/React.createElement("svg", _extends$8({
22961
+ return /*#__PURE__*/React.createElement("svg", _extends$5({
22962
22962
  xmlns: "http://www.w3.org/2000/svg",
22963
22963
  width: 16,
22964
22964
  height: 16,
@@ -23548,15 +23548,13 @@ function computePolygonScreenWidthPx(points, viewBox, containerWidth, containerH
23548
23548
  const scale = getViewBoxMeetScale(viewBox, containerWidth, containerHeight);
23549
23549
  return mapWidth * scale;
23550
23550
  }
23551
- function scaleStrokeWidthForViewBox(baseStrokeWidth, viewBox, fitViewBox, options) {
23552
- const { containerWidth, containerHeight, minScreenStrokePx = 2 } = options;
23551
+ function scaleStrokeWidthForViewBox(viewBox, options) {
23552
+ const { containerWidth, containerHeight, targetScreenStrokePx = 2 } = options;
23553
23553
  const meetScale = getViewBoxMeetScale(viewBox, containerWidth, containerHeight);
23554
- const fitMeetScale = getViewBoxMeetScale(fitViewBox, containerWidth, containerHeight);
23555
- if (meetScale <= 0 || fitMeetScale <= 0 || !Number.isFinite(baseStrokeWidth)) {
23556
- return baseStrokeWidth;
23554
+ if (meetScale <= 0 || !Number.isFinite(targetScreenStrokePx)) {
23555
+ return targetScreenStrokePx;
23557
23556
  }
23558
- const targetScreenPx = Math.max(baseStrokeWidth * fitMeetScale, minScreenStrokePx);
23559
- return targetScreenPx / meetScale;
23557
+ return targetScreenStrokePx / meetScale;
23560
23558
  }
23561
23559
  /** 屏幕拖拽像素 → viewBox 坐标增量(与 mapPointToContainerPercent 互逆,供 applyPan 使用) */
23562
23560
  function containerDeltaToViewBoxDelta(deltaXPx, deltaYPx, viewBox, containerWidth, containerHeight, mapRotationDeg = 0) {
@@ -26274,15 +26272,15 @@ const useVisionOffTransform = (data, scaleConstraints
26274
26272
  };
26275
26273
  };
26276
26274
 
26277
- var _g$6, _defs$6;
26278
- function _extends$7() { return _extends$7 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$7.apply(null, arguments); }
26275
+ var _g$3, _defs$3;
26276
+ function _extends$4() { return _extends$4 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$4.apply(null, arguments); }
26279
26277
  var SvgTransformDelete = function SvgTransformDelete(props) {
26280
- return /*#__PURE__*/React.createElement("svg", _extends$7({
26278
+ return /*#__PURE__*/React.createElement("svg", _extends$4({
26281
26279
  xmlns: "http://www.w3.org/2000/svg",
26282
26280
  width: 20,
26283
26281
  height: 20,
26284
26282
  fill: "none"
26285
- }, props), _g$6 || (_g$6 = /*#__PURE__*/React.createElement("g", {
26283
+ }, props), _g$3 || (_g$3 = /*#__PURE__*/React.createElement("g", {
26286
26284
  clipPath: "url(#transform-delete_svg__a)"
26287
26285
  }, /*#__PURE__*/React.createElement("circle", {
26288
26286
  cx: 10,
@@ -26305,7 +26303,7 @@ var SvgTransformDelete = function SvgTransformDelete(props) {
26305
26303
  fill: "#fff",
26306
26304
  rx: 0.8,
26307
26305
  transform: "rotate(45 6.323 5.191)"
26308
- }))), _defs$6 || (_defs$6 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26306
+ }))), _defs$3 || (_defs$3 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26309
26307
  id: "transform-delete_svg__b",
26310
26308
  x1: 17.727,
26311
26309
  x2: -1.215,
@@ -26325,15 +26323,15 @@ var SvgTransformDelete = function SvgTransformDelete(props) {
26325
26323
  })))));
26326
26324
  };
26327
26325
 
26328
- var _g$5, _defs$5;
26329
- function _extends$6() { return _extends$6 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$6.apply(null, arguments); }
26326
+ var _g$2, _defs$2;
26327
+ function _extends$3() { return _extends$3 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$3.apply(null, arguments); }
26330
26328
  var SvgTransformRotate = function SvgTransformRotate(props) {
26331
- return /*#__PURE__*/React.createElement("svg", _extends$6({
26329
+ return /*#__PURE__*/React.createElement("svg", _extends$3({
26332
26330
  xmlns: "http://www.w3.org/2000/svg",
26333
26331
  width: 21,
26334
26332
  height: 20,
26335
26333
  fill: "none"
26336
- }, props), _g$5 || (_g$5 = /*#__PURE__*/React.createElement("g", {
26334
+ }, props), _g$2 || (_g$2 = /*#__PURE__*/React.createElement("g", {
26337
26335
  clipPath: "url(#transform-rotate_svg__a)"
26338
26336
  }, /*#__PURE__*/React.createElement("path", {
26339
26337
  fill: "url(#transform-rotate_svg__b)",
@@ -26341,7 +26339,7 @@ var SvgTransformRotate = function SvgTransformRotate(props) {
26341
26339
  }), /*#__PURE__*/React.createElement("path", {
26342
26340
  fill: "#fff",
26343
26341
  d: "M11.602 14.719a5.447 5.447 0 0 1-6.608-5.116l-.004-.205a.818.818 0 0 1 1.633-.084l.004.084.01.285a3.81 3.81 0 0 0 2.127 3.137l.26.115a3.8 3.8 0 0 0 2.227.184l.276-.071q.29-.088.561-.219l-1.147-.441a.817.817 0 0 1 .587-1.525l2.54.977a.817.817 0 0 1 .316 1.308l.001.001a5.45 5.45 0 0 1-2.783 1.57M8.623 4.548a5.447 5.447 0 0 1 6.608 5.116l.004.204a.818.818 0 0 1-1.633.084l-.004-.084-.01-.284a3.81 3.81 0 0 0-2.127-3.138l-.26-.115a3.8 3.8 0 0 0-2.227-.184l-.276.072q-.29.087-.561.218l1.147.442a.817.817 0 0 1-.586 1.524l-2.542-.976a.817.817 0 0 1-.315-1.309 5.45 5.45 0 0 1 2.782-1.57"
26344
- }))), _defs$5 || (_defs$5 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26342
+ }))), _defs$2 || (_defs$2 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26345
26343
  id: "transform-rotate_svg__b",
26346
26344
  x1: 17.84,
26347
26345
  x2: -1.103,
@@ -26361,15 +26359,15 @@ var SvgTransformRotate = function SvgTransformRotate(props) {
26361
26359
  })))));
26362
26360
  };
26363
26361
 
26364
- var _g$4, _defs$4;
26365
- function _extends$5() { return _extends$5 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$5.apply(null, arguments); }
26362
+ var _g$1, _defs$1;
26363
+ function _extends$2() { return _extends$2 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$2.apply(null, arguments); }
26366
26364
  var SvgTransformScale = function SvgTransformScale(props) {
26367
- return /*#__PURE__*/React.createElement("svg", _extends$5({
26365
+ return /*#__PURE__*/React.createElement("svg", _extends$2({
26368
26366
  xmlns: "http://www.w3.org/2000/svg",
26369
26367
  width: 21,
26370
26368
  height: 20,
26371
26369
  fill: "none"
26372
- }, props), _g$4 || (_g$4 = /*#__PURE__*/React.createElement("g", {
26370
+ }, props), _g$1 || (_g$1 = /*#__PURE__*/React.createElement("g", {
26373
26371
  clipPath: "url(#transform-scale_svg__a)"
26374
26372
  }, /*#__PURE__*/React.createElement("path", {
26375
26373
  fill: "url(#transform-scale_svg__b)",
@@ -26377,7 +26375,7 @@ var SvgTransformScale = function SvgTransformScale(props) {
26377
26375
  }), /*#__PURE__*/React.createElement("path", {
26378
26376
  fill: "#fff",
26379
26377
  d: "M5.078 8.265a.8.8 0 0 0 1.6.001v-.544l5.69 5.69h-.494a.8.8 0 0 0 0 1.6l2.474-.002a.8.8 0 0 0 .311-.062.8.8 0 0 0 .49-.738v-2.474a.8.8 0 1 0-1.6 0v.594L7.81 6.59h.544a.8.8 0 0 0 0-1.6H5.879a.8.8 0 0 0-.8.8z"
26380
- }))), _defs$4 || (_defs$4 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26378
+ }))), _defs$1 || (_defs$1 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26381
26379
  id: "transform-scale_svg__b",
26382
26380
  x1: 17.84,
26383
26381
  x2: -1.103,
@@ -26397,15 +26395,15 @@ var SvgTransformScale = function SvgTransformScale(props) {
26397
26395
  })))));
26398
26396
  };
26399
26397
 
26400
- var _g$3, _defs$3;
26401
- function _extends$4() { return _extends$4 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$4.apply(null, arguments); }
26398
+ var _g, _defs;
26399
+ function _extends$1() { return _extends$1 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$1.apply(null, arguments); }
26402
26400
  var SvgTransformTranslate = function SvgTransformTranslate(props) {
26403
- return /*#__PURE__*/React.createElement("svg", _extends$4({
26401
+ return /*#__PURE__*/React.createElement("svg", _extends$1({
26404
26402
  xmlns: "http://www.w3.org/2000/svg",
26405
26403
  width: 20,
26406
26404
  height: 20,
26407
26405
  fill: "none"
26408
- }, props), _g$3 || (_g$3 = /*#__PURE__*/React.createElement("g", {
26406
+ }, props), _g || (_g = /*#__PURE__*/React.createElement("g", {
26409
26407
  clipPath: "url(#transform-translate_svg__a)"
26410
26408
  }, /*#__PURE__*/React.createElement("circle", {
26411
26409
  cx: 10,
@@ -26415,7 +26413,7 @@ var SvgTransformTranslate = function SvgTransformTranslate(props) {
26415
26413
  }), /*#__PURE__*/React.createElement("path", {
26416
26414
  fill: "#fff",
26417
26415
  d: "M16.18 10.758a.8.8 0 0 0-.105-1.218l-1.66-1.66a.801.801 0 0 0-1.132 1.132l.383.381h-2.96V6.418l.385.386a.8.8 0 1 0 1.131-1.13l-1.75-1.75a.8.8 0 0 0-1.222.11L7.594 5.689a.8.8 0 0 0 1.131 1.13l.381-.38v2.954H6.137l.381-.38a.8.8 0 1 0-1.13-1.132l-1.752 1.75a.8.8 0 0 0 .106 1.22l1.66 1.66a.801.801 0 0 0 1.132-1.133l-.386-.385h2.958v2.972l-.38-.38a.8.8 0 0 0-1.132 1.131l1.751 1.75a.8.8 0 0 0 1.223-.11l1.654-1.655a.8.8 0 1 0-1.13-1.131l-.386.386v-2.963h2.978l-.385.384a.8.8 0 1 0 1.131 1.131z"
26418
- }))), _defs$3 || (_defs$3 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26416
+ }))), _defs || (_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
26419
26417
  id: "transform-translate_svg__b",
26420
26418
  x1: 17.727,
26421
26419
  x2: -1.215,
@@ -27089,97 +27087,6 @@ const useDoodleTransform = (data, onTransformChange, options) => {
27089
27087
  };
27090
27088
  };
27091
27089
 
27092
- var _g$2, _defs$2;
27093
- function _extends$3() { return _extends$3 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$3.apply(null, arguments); }
27094
- var SvgDisabledRotate = function SvgDisabledRotate(props) {
27095
- return /*#__PURE__*/React.createElement("svg", _extends$3({
27096
- xmlns: "http://www.w3.org/2000/svg",
27097
- width: 16,
27098
- height: 16,
27099
- fill: "none"
27100
- }, props), _g$2 || (_g$2 = /*#__PURE__*/React.createElement("g", {
27101
- clipPath: "url(#disabled-rotate_svg__a)"
27102
- }, /*#__PURE__*/React.createElement("path", {
27103
- fill: "#fff",
27104
- d: "M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"
27105
- }), /*#__PURE__*/React.createElement("path", {
27106
- fill: "#211F1F",
27107
- fillOpacity: 0.4,
27108
- d: "M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"
27109
- }), /*#__PURE__*/React.createElement("path", {
27110
- fill: "#fff",
27111
- fillOpacity: 0.7,
27112
- d: "M9.192 11.775a4.36 4.36 0 0 1-5.277-3.93l-.013-.326v-.002a.655.655 0 0 1 1.31 0v.002a3.05 3.05 0 0 0 1.71 2.738l.208.091a3.05 3.05 0 0 0 1.781.147l.22-.057q.234-.07.451-.175l-.919-.354a.653.653 0 1 1 .47-1.22l2.033.782a.654.654 0 0 1 .251 1.047l.002.001a4.36 4.36 0 0 1-2.227 1.256M6.809 3.639a4.36 4.36 0 0 1 5.289 4.256v.002a.654.654 0 1 1-1.309 0v-.002a3.05 3.05 0 0 0-1.71-2.738l-.208-.091a3.05 3.05 0 0 0-1.781-.147l-.22.057a3 3 0 0 0-.451.175l.919.354a.654.654 0 0 1-.47 1.22l-2.033-.782a.654.654 0 0 1-.251-1.046l-.002-.002a4.36 4.36 0 0 1 2.227-1.256"
27113
- }))), _defs$2 || (_defs$2 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
27114
- id: "disabled-rotate_svg__a"
27115
- }, /*#__PURE__*/React.createElement("path", {
27116
- fill: "#fff",
27117
- d: "M16 0H0v16h16z"
27118
- })))));
27119
- };
27120
-
27121
- var _g$1, _defs$1;
27122
- function _extends$2() { return _extends$2 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$2.apply(null, arguments); }
27123
- var SvgDisabledScale = function SvgDisabledScale(props) {
27124
- return /*#__PURE__*/React.createElement("svg", _extends$2({
27125
- xmlns: "http://www.w3.org/2000/svg",
27126
- width: 16,
27127
- height: 16,
27128
- fill: "none"
27129
- }, props), _g$1 || (_g$1 = /*#__PURE__*/React.createElement("g", {
27130
- clipPath: "url(#disabled-scale_svg__a)"
27131
- }, /*#__PURE__*/React.createElement("path", {
27132
- fill: "#fff",
27133
- d: "M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"
27134
- }), /*#__PURE__*/React.createElement("path", {
27135
- fill: "#211F1F",
27136
- fillOpacity: 0.4,
27137
- d: "M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"
27138
- }), /*#__PURE__*/React.createElement("path", {
27139
- fill: "#fff",
27140
- fillOpacity: 0.7,
27141
- d: "M3.972 6.612a.64.64 0 0 0 1.28 0v-.437l4.554 4.554H9.41a.64.64 0 0 0 0 1.28h1.979a.64.64 0 0 0 .636-.606l.003-.036.001-1.98a.64.64 0 1 0-1.28.001v.474L6.158 5.27h.435a.64.64 0 0 0 0-1.28h-1.98a.64.64 0 0 0-.64.64z"
27142
- }))), _defs$1 || (_defs$1 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
27143
- id: "disabled-scale_svg__a"
27144
- }, /*#__PURE__*/React.createElement("path", {
27145
- fill: "#fff",
27146
- d: "M0 16h16V0H0z"
27147
- })))));
27148
- };
27149
-
27150
- var _g, _defs;
27151
- function _extends$1() { return _extends$1 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$1.apply(null, arguments); }
27152
- var SvgDisabledTranslate = function SvgDisabledTranslate(props) {
27153
- return /*#__PURE__*/React.createElement("svg", _extends$1({
27154
- xmlns: "http://www.w3.org/2000/svg",
27155
- width: 16,
27156
- height: 16,
27157
- fill: "none"
27158
- }, props), _g || (_g = /*#__PURE__*/React.createElement("g", {
27159
- clipPath: "url(#disabled-translate_svg__a)"
27160
- }, /*#__PURE__*/React.createElement("circle", {
27161
- cx: 8,
27162
- cy: 8,
27163
- r: 8,
27164
- fill: "#fff"
27165
- }), /*#__PURE__*/React.createElement("circle", {
27166
- cx: 8,
27167
- cy: 8,
27168
- r: 8,
27169
- fill: "#211F1F",
27170
- fillOpacity: 0.4
27171
- }), /*#__PURE__*/React.createElement("path", {
27172
- fill: "#fff",
27173
- fillOpacity: 0.7,
27174
- d: "M12.944 8.608a.64.64 0 0 0-.079-.97l-1.333-1.334a.64.64 0 0 0-.905.905l.305.305H8.564V5.136l.308.308a.642.642 0 0 0 .906-.906l-1.4-1.399a.64.64 0 0 0-.906 0q-.036.037-.064.08L6.075 4.55a.64.64 0 0 0 .905.905l.305-.304v2.362H4.91l.306-.306a.64.64 0 0 0-.904-.904l-1.4 1.4a.64.64 0 0 0 .077.97l1.334 1.333a.64.64 0 0 0 .906-.905l-.31-.309h2.367v2.38l-.304-.305a.64.64 0 1 0-.905.906l1.4 1.4a.64.64 0 0 0 .97-.08l1.332-1.333a.64.64 0 0 0-.905-.905l-.309.308v-2.37h2.385l-.31.309a.64.64 0 1 0 .905.904z"
27175
- }))), _defs || (_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
27176
- id: "disabled-translate_svg__a"
27177
- }, /*#__PURE__*/React.createElement("path", {
27178
- fill: "#fff",
27179
- d: "M16 0H0v16h16z"
27180
- })))));
27181
- };
27182
-
27183
27090
  var css_248z$6 = ".index-module_doodleHover__jIZHV path {\n fill: #00B3A1;\n}";
27184
27091
  var styles$6 = {"doodleHover":"index-module_doodleHover__jIZHV"};
27185
27092
  styleInject(css_248z$6);
@@ -27378,8 +27285,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
27378
27285
  const infoBoxWidth = 300 * overlayScale; // 信息框宽度
27379
27286
  const infoBoxHeight = 40 * overlayScale; // 信息框高度
27380
27287
  const infoBoxX = centerX - infoBoxWidth / 2; // 居中对齐
27381
- const circleScale = platform === PlatformType.H5 ? 1.5 * overlayScale : 3 * overlayScale;
27382
- const disacledScale = circleScale * 1.2;
27288
+ const circleScale = platform === PlatformType.H5 ? 1.5 * overlayScale : 2 * overlayScale;
27383
27289
  return (jsxs(Fragment, { children: [jsx("polygon", { points: selectionBoxPoints.map((point) => `${point.x},${point.y}`).join(' '), fill: "none", stroke: "#B2B4B9", strokeWidth: "2", strokeDasharray: "5,5", vectorEffect: "non-scaling-stroke", ...(platform === PlatformType.H5
27384
27290
  ? {
27385
27291
  onTouchStart: createReactEventHandler((e) => {
@@ -27388,7 +27294,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
27388
27294
  }
27389
27295
  : {
27390
27296
  // onMouseDown: handleMouseDownWithDisabled,
27391
- }) }), jsx("g", { transform: `translate(${selectionBoxPoints[3].x}, ${selectionBoxPoints[3].y})`, children: jsx("g", { transformOrigin: "center", transform: `translate(-${10 * circleScale}, -${10 * circleScale}) scale(${disacledScale})`, children: jsx(SvgDisabledRotate, {}) }) }), jsx("g", { transform: `translate(${selectionBoxPoints[1].x}, ${selectionBoxPoints[1].y})`, children: jsx("g", { transformOrigin: "center", transform: `translate(-${10 * circleScale}, -${10 * circleScale}) scale(${disacledScale})`, children: jsx(SvgDisabledTranslate, {}) }) }), jsx("g", { transform: `translate(${selectionBoxPoints[2].x}, ${selectionBoxPoints[2].y})`, children: jsx("g", { transformOrigin: "center", transform: `translate(-${10 * circleScale}, -${10 * circleScale}) scale(${disacledScale})`, children: jsx(SvgDisabledScale, {}) }) }), platform === PlatformType.H5 && (jsx("foreignObject", { x: infoBoxX, y: infoBoxY, width: infoBoxWidth, height: infoBoxHeight, style: { textAlign: 'center' }, onClick: () => {
27297
+ }) }), jsx("circle", { cx: selectionBoxPoints[0].x, cy: selectionBoxPoints[0].y, r: 10 * circleScale, fill: "#B2B4B9", stroke: "none" }), jsx("circle", { cx: selectionBoxPoints[3].x, cy: selectionBoxPoints[3].y, r: 10 * circleScale, fill: "#B2B4B9", stroke: "none" }), jsx("circle", { cx: selectionBoxPoints[1].x, cy: selectionBoxPoints[1].y, r: 10 * circleScale, fill: "#B2B4B9", stroke: "none" }), jsx("circle", { cx: selectionBoxPoints[2].x, cy: selectionBoxPoints[2].y, r: 10 * circleScale, fill: "#B2B4B9", stroke: "none" }), platform === PlatformType.H5 && (jsx("foreignObject", { x: infoBoxX, y: infoBoxY, width: infoBoxWidth, height: infoBoxHeight, style: { textAlign: 'center' }, onClick: () => {
27392
27298
  onClickInfo?.();
27393
27299
  }, children: jsx("div", { style: {
27394
27300
  padding: `5px ${10 * overlayScale}px`,
@@ -27408,7 +27314,7 @@ const DoodleTransformWrapper = ({ data, isSelected = false, isSelectedWithoutOpe
27408
27314
  justifyContent: 'center',
27409
27315
  gap: '10px',
27410
27316
  color: '#325069',
27411
- }, children: jsxs("div", { children: [locale?.['map.renderer.remainingTime'] || 'Remaining time', ": ", remainingTime] }) }) }) }))] }));
27317
+ }, children: jsxs("div", { children: [locale?.['map.renderer.remainTime'] || 'Remaining time', ": ", remainingTime] }) }) }) }))] }));
27412
27318
  };
27413
27319
  useEffect(() => {
27414
27320
  const isMove = isDragging || isRotating || isScaling;
@@ -30844,15 +30750,27 @@ const BoundarySvgRender = React__default.memo(({ mapJson, unStructMapData, id, m
30844
30750
  });
30845
30751
 
30846
30752
  /** ChannelClipPath 等内容裁剪使用的 SVG 坐标边距(与用户传入的屏幕 padding 无关) */
30847
- const PARTITION_PICKER_CONTENT_CLIP_PADDING = 50;
30753
+ const PARTITION_PICKER_CONTENT_CLIP_PADDING = 0;
30848
30754
  /** H5:子区域屏幕宽度超过该值才展示名称标签(px) */
30849
- const H5_PARTITION_LABEL_MIN_SCREEN_WIDTH_PX = 72;
30755
+ const H5_PARTITION_LABEL_MIN_SCREEN_WIDTH_PX = 92;
30850
30756
  /** H5:名称气泡总宽度(px) */
30851
- const H5_PARTITION_LABEL_WIDTH_PX = 72;
30852
- /** 边界线目标屏幕像素宽度(默认态,全缩放级别保持一致) */
30853
- const PARTITION_BOUNDARY_TARGET_SCREEN_STROKE_PX = 2;
30854
- /** 边界线目标屏幕像素宽度(hover / 选中态) */
30855
- const PARTITION_BOUNDARY_EMPHASIZED_TARGET_SCREEN_STROKE_PX = 2.5;
30757
+ const H5_PARTITION_LABEL_WIDTH_PX = 92;
30758
+ /** Web:序号徽章与名称标签间距(px) */
30759
+ const WEB_SELECTION_ORDER_GAP_PX = 8;
30760
+ /** H5:序号徽章与名称标签间距(px) */
30761
+ const H5_SELECTION_ORDER_GAP_PX = 4;
30762
+ /** Standalone:充电桩图标最小屏幕尺寸(px),缩小全图 fit 时避免过小;放大时随 viewBox 同比缩放 */
30763
+ const PARTITION_PICKER_CHARGING_PILE_MIN_DISPLAY_PX = 16;
30764
+ /** Web 地块描边屏幕像素宽度:未选中 2px,选中 3px */
30765
+ const WEB_PARTITION_BOUNDARY_STROKE_PX = {
30766
+ default: 2,
30767
+ selected: 3,
30768
+ };
30769
+ /** H5 地块描边屏幕像素宽度:选中与否均为 1px */
30770
+ const H5_PARTITION_BOUNDARY_STROKE_PX = {
30771
+ default: 1,
30772
+ selected: 1,
30773
+ };
30856
30774
  /**
30857
30775
  * Figma bg/mapping 地图网格背景(Standalone SVG 层)
30858
30776
  * @see https://www.figma.com/design/j0DdUYf8VFkXQ8ikkA6ZzP — node 20490:84886
@@ -30860,17 +30778,17 @@ const PARTITION_BOUNDARY_EMPHASIZED_TARGET_SCREEN_STROKE_PX = 2.5;
30860
30778
  /** 网格区域底色,也用于容器 letterbox 留白 */
30861
30779
  const PARTITION_PICKER_GRID_BASE_COLOR = '#E3E5EB';
30862
30780
  /** 网格单元边长(SVG 地图坐标,与 viewBox 一致;zoom 时间距同比缩放) */
30863
- const PARTITION_PICKER_GRID_TILE_SIZE = 100;
30781
+ const PARTITION_PICKER_GRID_TILE_SIZE = 10;
30864
30782
  /** 网格线宽(地图坐标;随 zoom 同比缩放,不做屏幕像素恒定) */
30865
- const PARTITION_PICKER_GRID_LINE_WIDTH = 2;
30783
+ const PARTITION_PICKER_GRID_LINE_WIDTH = 0.5;
30866
30784
  /** 网格交点圆点半径(地图坐标) */
30867
- const PARTITION_PICKER_GRID_DOT_RADIUS = 4;
30785
+ const PARTITION_PICKER_GRID_DOT_RADIUS = 0.5;
30868
30786
  /** 网格层整体不透明度(Figma 约 80%) */
30869
- const PARTITION_PICKER_GRID_OPACITY = 0.8;
30787
+ const PARTITION_PICKER_GRID_OPACITY = 0.4;
30870
30788
  /** 网格线与交点颜色 */
30871
30789
  const PARTITION_PICKER_GRID_STROKE = '#FFFFFF';
30872
30790
  /** 可见范围内交点超过该数量时跳过圆点,仅保留网格线(缩小视野时减轻 DOM 压力) */
30873
- const PARTITION_PICKER_GRID_MAX_INTERSECTION_DOTS = 800;
30791
+ const PARTITION_PICKER_GRID_MAX_INTERSECTION_DOTS = 2000;
30874
30792
  /**
30875
30793
  * 分区选择地图专用样式
30876
30794
  *
@@ -30895,37 +30813,27 @@ const PARTITION_PICKER_MAP_CONFIG = {
30895
30813
  const PARTITION_PICKER_COLORS_WEB = {
30896
30814
  defaultFill: 'rgba(222, 225, 231, 1)',
30897
30815
  defaultStroke: 'rgba(132, 152, 169, 1)',
30898
- defaultStrokeWidth: 2,
30899
30816
  hoverFill: 'rgba(211, 216, 226, 1)',
30900
30817
  hoverStroke: 'rgba(132, 152, 169, 1)',
30901
- hoverStrokeWidth: 3,
30902
30818
  selectedFill: 'rgba(202, 214, 238, 1)',
30903
30819
  selectedStroke: 'rgba(132, 152, 169, 1)',
30904
- selectedStrokeWidth: 3,
30905
30820
  selectedHoverFill: 'rgba(202, 214, 238, 1)',
30906
30821
  selectedHoverStroke: 'rgba(132, 152, 169, 1)',
30907
- selectedHoverStrokeWidth: 3,
30908
30822
  isolatedFill: 'rgba(225, 227, 233, 1)',
30909
30823
  isolatedStroke: 'rgba(189, 198, 208, 1)',
30910
- isolatedStrokeWidth: 2,
30911
30824
  };
30912
30825
  /** H5 端地块配色 */
30913
30826
  const PARTITION_PICKER_COLORS_H5 = {
30914
30827
  defaultFill: 'rgba(222, 225, 231, 1)',
30915
30828
  defaultStroke: 'rgba(132, 152, 169, 1)',
30916
- defaultStrokeWidth: 1,
30917
30829
  hoverFill: 'rgba(222, 225, 231, 1)',
30918
30830
  hoverStroke: 'rgba(132, 152, 169, 1)',
30919
- hoverStrokeWidth: 1,
30920
30831
  selectedFill: 'rgba(202, 214, 238, 1)',
30921
30832
  selectedStroke: 'rgba(132, 152, 169, 1)',
30922
- selectedStrokeWidth: 1,
30923
30833
  selectedHoverFill: 'rgba(202, 214, 238, 1)',
30924
30834
  selectedHoverStroke: 'rgba(132, 152, 169, 1)',
30925
- selectedHoverStrokeWidth: 1,
30926
30835
  isolatedFill: 'rgba(225, 227, 233, 1)',
30927
30836
  isolatedStroke: 'rgba(189, 198, 208, 1)',
30928
- isolatedStrokeWidth: 1,
30929
30837
  };
30930
30838
  function getPartitionPickerMapConfig(platform = PlatformType.WEB) {
30931
30839
  return platform === PlatformType.WEB
@@ -30935,6 +30843,11 @@ function getPartitionPickerMapConfig(platform = PlatformType.WEB) {
30935
30843
  function getPartitionPickerColors(platform = PlatformType.WEB) {
30936
30844
  return platform === PlatformType.WEB ? PARTITION_PICKER_COLORS_WEB : PARTITION_PICKER_COLORS_H5;
30937
30845
  }
30846
+ function getPartitionPickerBoundaryStrokePx(platform = PlatformType.WEB) {
30847
+ return platform === PlatformType.WEB
30848
+ ? { ...WEB_PARTITION_BOUNDARY_STROKE_PX }
30849
+ : { ...H5_PARTITION_BOUNDARY_STROKE_PX };
30850
+ }
30938
30851
  /** Web 分区名气泡(Figma「地块名称」/ 选中区域) */
30939
30852
  const PARTITION_PICKER_LABEL_STYLES_WEB = {
30940
30853
  default: {
@@ -30975,6 +30888,7 @@ const PARTITION_PICKER_LABEL_STYLES_H5 = {
30975
30888
  fontWeight: 400,
30976
30889
  padding: '6px',
30977
30890
  width: `${H5_PARTITION_LABEL_WIDTH_PX}px`,
30891
+ maxWidth: `${H5_PARTITION_LABEL_WIDTH_PX}px`,
30978
30892
  borderRadius: 100,
30979
30893
  boxSizing: 'border-box',
30980
30894
  },
@@ -30985,6 +30899,7 @@ const PARTITION_PICKER_LABEL_STYLES_H5 = {
30985
30899
  fontWeight: 400,
30986
30900
  padding: '6px',
30987
30901
  width: `${H5_PARTITION_LABEL_WIDTH_PX}px`,
30902
+ maxWidth: `${H5_PARTITION_LABEL_WIDTH_PX}px`,
30988
30903
  borderRadius: 100,
30989
30904
  boxSizing: 'border-box',
30990
30905
  },
@@ -31022,10 +30937,6 @@ const DEFAULT_PARTITION_PICKER_GRID_STYLE = {
31022
30937
  opacity: PARTITION_PICKER_GRID_OPACITY,
31023
30938
  maxIntersectionDots: PARTITION_PICKER_GRID_MAX_INTERSECTION_DOTS,
31024
30939
  };
31025
- const DEFAULT_PARTITION_PICKER_BOUNDARY_STROKE_PX = {
31026
- default: PARTITION_BOUNDARY_TARGET_SCREEN_STROKE_PX,
31027
- emphasized: PARTITION_BOUNDARY_EMPHASIZED_TARGET_SCREEN_STROKE_PX,
31028
- };
31029
30940
  /**
31030
30941
  * 将 platform 内置默认值与外部 pickerStyleConfig 深度合并。
31031
30942
  * 调用方只需覆盖变化的字段,无需改组件源码。
@@ -31042,8 +30953,7 @@ function resolvePartitionPickerStyles(platform = PlatformType.WEB, config) {
31042
30953
  }
31043
30954
  : baseLabels,
31044
30955
  grid: merge$1({}, DEFAULT_PARTITION_PICKER_GRID_STYLE, config?.grid),
31045
- boundaryStrokePx: merge$1({}, DEFAULT_PARTITION_PICKER_BOUNDARY_STROKE_PX, config?.boundaryStrokePx),
31046
- labelMinScreenWidthPx: config?.labelMinScreenWidthPx ?? H5_PARTITION_LABEL_MIN_SCREEN_WIDTH_PX,
30956
+ boundaryStrokePx: merge$1({}, getPartitionPickerBoundaryStrokePx(platform), config?.boundaryStrokePx),
31047
30957
  };
31048
30958
  }
31049
30959
 
@@ -31057,7 +30967,7 @@ function resolvePartitionPickerStyles(platform = PlatformType.WEB, config) {
31057
30967
  *
31058
30968
  * 平移可在地块/分区名等任意区域发起;仅当位移小于阈值时才视为点击
31059
30969
  */
31060
- function useMapViewport({ mapJson, containerRef: externalContainerRef, width, height, padding, minZoom = 0.5, maxZoom = 4, enablePanZoom = true, refitOnResize = true, onViewportTap, mapRotationDeg = 0, }) {
30970
+ function useMapViewport({ mapJson, containerRef: externalContainerRef, width, height, padding, minZoom = 0.5, maxZoom = 3, enablePanZoom = true, refitOnResize = true, onViewportTap, mapRotationDeg = 0, }) {
31061
30971
  /** 地图容器 DOM,用于绑定 wheel/pointer/touch 事件 */
31062
30972
  const internalContainerRef = useRef(null);
31063
30973
  const containerRef = externalContainerRef ?? internalContainerRef;
@@ -31476,7 +31386,17 @@ function useMapViewport({ mapJson, containerRef: externalContainerRef, width, he
31476
31386
  window.removeEventListener('mouseup', handleWindowPointerUp);
31477
31387
  window.removeEventListener('blur', handleWindowPointerUp);
31478
31388
  };
31479
- }, [applyPan, applyZoom, clearPanState, enablePanZoom, height, maxZoom, minZoom, scheduleViewBox, width]);
31389
+ }, [
31390
+ applyPan,
31391
+ applyZoom,
31392
+ clearPanState,
31393
+ enablePanZoom,
31394
+ height,
31395
+ maxZoom,
31396
+ minZoom,
31397
+ scheduleViewBox,
31398
+ width,
31399
+ ]);
31480
31400
  return {
31481
31401
  /** 绑定到地图外层容器的 ref */
31482
31402
  containerRef,
@@ -31879,19 +31799,16 @@ function usePartitionLabelItems(mapData, viewBox, containerWidth, containerHeigh
31879
31799
  ]);
31880
31800
  }
31881
31801
 
31882
- var css_248z = "@charset \"UTF-8\";\n/* 地图容器:裁剪溢出,禁用浏览器默认 touch 手势以便自定义 pinch */\n.index-module_container__nNYv7 {\n position: relative;\n overflow: hidden;\n touch-action: none;\n user-select: none;\n cursor: grab;\n /* H5 点击时不出现矩形 tap 高亮 */\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n}\n\n/* 网格 + 地块双层 SVG 叠放,共用 viewBox 保证平移/缩放同步 */\n.index-module_mapSvgStack__nz2s2 {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 1;\n}\n\n.index-module_gridSvg__MoJD6 {\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n}\n\n/* 地图 SVG:地块/通道,可绕 viewBox 中心旋转 */\n.index-module_mapSvg__vN0LV {\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n}\n\n/* 可点击地块:点击选中由 viewport 统一处理,此处保留 hover */\n.index-module_boundaryPolygon__uHe-E {\n cursor: grab;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n outline: none;\n -webkit-touch-callout: none;\n}\n\n.index-module_container__nNYv7:active {\n cursor: grabbing;\n}\n\n.index-module_boundaryPolygon__uHe-E:active {\n cursor: grabbing;\n}\n\n/* Map 模式:OverlayViewF 内根节点,铺满 overlay 像素区域 */\n.index-module_googleOverlayRoot__TQ3II {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n overflow: visible;\n}\n\n/* HTML overlay 层:CSS rotate 与 MowerMapRenderer OverlayViewF 一致,子元素自行反向补偿 */\n.index-module_mapOverlayLayer__7jTDy {\n position: absolute;\n inset: 0;\n transform-origin: 50% 50%;\n pointer-events: none;\n z-index: 2;\n}\n\n/* 分区名气泡层,绝对定位覆盖在 SVG 之上 */\n.index-module_labelsLayer__Rcikw {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.index-module_label__xo3Kc {\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: auto;\n cursor: grab;\n white-space: nowrap;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n outline: none;\n -webkit-touch-callout: none;\n}\n\n.index-module_label__xo3Kc:active {\n cursor: grabbing;\n}\n\n.index-module_labelWithOrder__uiHNo {\n gap: 8px;\n}\n\n.index-module_labelWithOrderH5__fg3nU {\n gap: 4px;\n}\n\n.index-module_labelOrderOnly__TDLBU {\n gap: 0;\n}\n\n/* H5 名称标签:总宽 72px,文案最大 60px 可换行 */\n.index-module_labelH5Wrap__Es5cA {\n white-space: normal;\n}\n\n.index-module_labelPill__7jnOo {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n}\n\n.index-module_labelPillH5__iPeHi {\n width: 72px;\n max-width: 72px;\n box-sizing: border-box;\n}\n\n.index-module_labelText__ialST {\n word-break: break-word;\n text-align: center;\n}\n\n.index-module_labelTextH5__jz8SO {\n max-width: 60px;\n white-space: normal;\n overflow-wrap: anywhere;\n line-height: 1.33;\n}\n\n/* 选中序号徽章:尺寸与颜色由 constants 按 platform 注入 */\n.index-module_selectionOrderBadge__uj7LX {\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.index-module_boundaryPolygonIsolated__syN4V {\n cursor: not-allowed;\n}\n\n.index-module_boundaryPolygonIsolated__syN4V:active {\n cursor: grabbing;\n}\n\n.index-module_labelIsolated__K3WAB {\n cursor: not-allowed;\n pointer-events: auto;\n}\n\n.index-module_labelIsolated__K3WAB:active {\n cursor: grabbing;\n}\n\n.index-module_labelIsolatedLayout__k-rwI {\n gap: 4px;\n}\n\n.index-module_isolatedIconBelow__PuVIF {\n position: static;\n transform: none;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.index-module_isolatedIconBelow__PuVIF.index-module_isolatedIconWeb__iPkYp {\n width: 20px;\n height: 20px;\n}\n\n.index-module_isolatedIcon__Vbxl0 {\n position: absolute;\n width: 24px;\n height: 24px;\n left: 50%;\n bottom: calc(100% + 4px);\n transform: translateX(-50%);\n}\n\n.index-module_isolatedIconWeb__iPkYp {\n width: 20px;\n height: 20px;\n bottom: calc(100% + 2px);\n}";
31883
- var styles = {"container":"index-module_container__nNYv7","mapSvgStack":"index-module_mapSvgStack__nz2s2","gridSvg":"index-module_gridSvg__MoJD6","mapSvg":"index-module_mapSvg__vN0LV","boundaryPolygon":"index-module_boundaryPolygon__uHe-E","googleOverlayRoot":"index-module_googleOverlayRoot__TQ3II","mapOverlayLayer":"index-module_mapOverlayLayer__7jTDy","labelsLayer":"index-module_labelsLayer__Rcikw","label":"index-module_label__xo3Kc","labelWithOrder":"index-module_labelWithOrder__uiHNo","labelWithOrderH5":"index-module_labelWithOrderH5__fg3nU","labelOrderOnly":"index-module_labelOrderOnly__TDLBU","labelH5Wrap":"index-module_labelH5Wrap__Es5cA","labelPill":"index-module_labelPill__7jnOo","labelPillH5":"index-module_labelPillH5__iPeHi","labelText":"index-module_labelText__ialST","labelTextH5":"index-module_labelTextH5__jz8SO","selectionOrderBadge":"index-module_selectionOrderBadge__uj7LX","boundaryPolygonIsolated":"index-module_boundaryPolygonIsolated__syN4V","labelIsolated":"index-module_labelIsolated__K3WAB","labelIsolatedLayout":"index-module_labelIsolatedLayout__k-rwI","isolatedIconBelow":"index-module_isolatedIconBelow__PuVIF","isolatedIconWeb":"index-module_isolatedIconWeb__iPkYp"};
31802
+ var css_248z = "@charset \"UTF-8\";\n/* 地图容器:裁剪溢出,禁用浏览器默认 touch 手势以便自定义 pinch */\n.index-module_container__nNYv7 {\n position: relative;\n overflow: hidden;\n touch-action: none;\n user-select: none;\n cursor: grab;\n /* H5 点击时不出现矩形 tap 高亮 */\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n}\n\n/* 网格 + 地块双层 SVG 叠放,共用 viewBox 保证平移/缩放同步 */\n.index-module_mapSvgStack__nz2s2 {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 1;\n}\n\n.index-module_gridSvg__MoJD6 {\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n}\n\n/* 地图 SVG:地块/通道,可绕 viewBox 中心旋转 */\n.index-module_mapSvg__vN0LV {\n position: absolute;\n inset: 0;\n display: block;\n pointer-events: none;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n}\n\n/* 可点击地块:点击选中由 viewport 统一处理,此处保留 hover */\n.index-module_boundaryPolygon__uHe-E {\n cursor: grab;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n outline: none;\n -webkit-touch-callout: none;\n}\n\n.index-module_container__nNYv7:active {\n cursor: grabbing;\n}\n\n.index-module_boundaryPolygon__uHe-E:active {\n cursor: grabbing;\n}\n\n/* Map 模式:OverlayViewF 内根节点,铺满 overlay 像素区域 */\n.index-module_googleOverlayRoot__TQ3II {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n overflow: visible;\n}\n\n/* HTML overlay 层:CSS rotate 与 MowerMapRenderer OverlayViewF 一致,子元素自行反向补偿 */\n.index-module_mapOverlayLayer__7jTDy {\n position: absolute;\n inset: 0;\n transform-origin: 50% 50%;\n pointer-events: none;\n z-index: 2;\n}\n\n/* 分区名气泡层,绝对定位覆盖在 SVG 之上 */\n.index-module_labelsLayer__Rcikw {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.index-module_label__xo3Kc {\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n pointer-events: auto;\n cursor: grab;\n white-space: nowrap;\n -webkit-tap-highlight-color: transparent;\n tap-highlight-color: transparent;\n outline: none;\n -webkit-touch-callout: none;\n}\n\n.index-module_label__xo3Kc:active {\n cursor: grabbing;\n}\n\n.index-module_labelOrderOnly__TDLBU {\n gap: 0;\n}\n\n/* H5 名称标签:气泡宽度 / 文案最大宽度由 constants.ts 内联样式控制 */\n.index-module_labelH5Wrap__Es5cA {\n white-space: normal;\n}\n\n.index-module_labelPill__7jnOo {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n}\n\n.index-module_labelPillH5__iPeHi {\n box-sizing: border-box;\n}\n\n.index-module_labelText__ialST {\n word-break: break-word;\n text-align: center;\n}\n\n.index-module_labelTextH5__jz8SO {\n max-width: 100%;\n white-space: normal;\n overflow-wrap: anywhere;\n line-height: 1.33;\n}\n\n/* 选中序号徽章:尺寸与颜色由 constants 按 platform 注入 */\n.index-module_selectionOrderBadge__uj7LX {\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.index-module_boundaryPolygonIsolated__syN4V {\n cursor: not-allowed;\n}\n\n.index-module_boundaryPolygonIsolated__syN4V:active {\n cursor: grabbing;\n}\n\n.index-module_labelIsolated__K3WAB {\n cursor: not-allowed;\n pointer-events: auto;\n}\n\n.index-module_labelIsolated__K3WAB:active {\n cursor: grabbing;\n}\n\n.index-module_labelIsolatedLayout__k-rwI {\n gap: 4px;\n}\n\n.index-module_isolatedIconBelow__PuVIF {\n position: static;\n transform: none;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.index-module_isolatedIconBelow__PuVIF.index-module_isolatedIconWeb__iPkYp {\n width: 20px;\n height: 20px;\n}\n\n.index-module_isolatedIcon__Vbxl0 {\n position: absolute;\n width: 24px;\n height: 24px;\n left: 50%;\n bottom: calc(100% + 4px);\n transform: translateX(-50%);\n}\n\n.index-module_isolatedIconWeb__iPkYp {\n width: 20px;\n height: 20px;\n bottom: calc(100% + 2px);\n}";
31803
+ var styles = {"container":"index-module_container__nNYv7","mapSvgStack":"index-module_mapSvgStack__nz2s2","gridSvg":"index-module_gridSvg__MoJD6","mapSvg":"index-module_mapSvg__vN0LV","boundaryPolygon":"index-module_boundaryPolygon__uHe-E","googleOverlayRoot":"index-module_googleOverlayRoot__TQ3II","mapOverlayLayer":"index-module_mapOverlayLayer__7jTDy","labelsLayer":"index-module_labelsLayer__Rcikw","label":"index-module_label__xo3Kc","labelOrderOnly":"index-module_labelOrderOnly__TDLBU","labelH5Wrap":"index-module_labelH5Wrap__Es5cA","labelPill":"index-module_labelPill__7jnOo","labelPillH5":"index-module_labelPillH5__iPeHi","labelText":"index-module_labelText__ialST","labelTextH5":"index-module_labelTextH5__jz8SO","selectionOrderBadge":"index-module_selectionOrderBadge__uj7LX","boundaryPolygonIsolated":"index-module_boundaryPolygonIsolated__syN4V","labelIsolated":"index-module_labelIsolated__K3WAB","labelIsolatedLayout":"index-module_labelIsolatedLayout__k-rwI","isolatedIconBelow":"index-module_isolatedIconBelow__PuVIF","isolatedIconWeb":"index-module_isolatedIconWeb__iPkYp"};
31884
31804
  styleInject(css_248z);
31885
31805
 
31886
31806
  const PARTITION_BOUNDARY_ID_ATTR$1 = 'data-partition-boundary-id';
31887
- const SelectableBoundaryElement = ({ data, boundaryColors, boundaryStrokePx, isIsolated = false, selected, hovered, viewBoxWidth, viewBoxHeight, fitViewBox, containerWidth, containerHeight, onHoverChange, onBoundaryClick, }) => {
31807
+ const SelectableBoundaryElement = ({ data, boundaryColors, boundaryStrokePx, isIsolated = false, selected, hovered, viewBoxWidth, viewBoxHeight, containerWidth, containerHeight, onHoverChange, onBoundaryClick, }) => {
31888
31808
  const style = data.style || {};
31889
31809
  const boundaryId = Number(data.id);
31890
31810
  const colors = boundaryColors;
31891
- const strokePx = boundaryStrokePx ?? {
31892
- default: PARTITION_BOUNDARY_TARGET_SCREEN_STROKE_PX,
31893
- emphasized: PARTITION_BOUNDARY_EMPHASIZED_TARGET_SCREEN_STROKE_PX,
31894
- };
31811
+ const strokePx = boundaryStrokePx ?? { ...WEB_PARTITION_BOUNDARY_STROKE_PX };
31895
31812
  const pointsString = useMemo(() => data.points.map((point) => `${point[0]},${point[1]}`).join(' '), [data.points]);
31896
31813
  const fillColor = useMemo(() => {
31897
31814
  if (isIsolated)
@@ -31914,31 +31831,16 @@ const SelectableBoundaryElement = ({ data, boundaryColors, boundaryStrokePx, isI
31914
31831
  return style.lineColor || colors.defaultStroke;
31915
31832
  }, [colors, hovered, isIsolated, selected, style.lineColor]);
31916
31833
  const strokeWidth = useMemo(() => {
31917
- let baseWidth;
31918
- let emphasized = false;
31919
- if (isIsolated)
31920
- baseWidth = colors.isolatedStrokeWidth;
31921
- else if (selected) {
31922
- emphasized = true;
31923
- baseWidth = hovered ? colors.selectedHoverStrokeWidth : colors.selectedStrokeWidth;
31924
- }
31925
- else if (hovered) {
31926
- emphasized = true;
31927
- baseWidth = colors.hoverStrokeWidth;
31928
- }
31929
- else
31930
- baseWidth = colors.defaultStrokeWidth;
31931
31834
  const viewBox = { width: viewBoxWidth, height: viewBoxHeight };
31932
- return scaleStrokeWidthForViewBox(baseWidth, viewBox, fitViewBox, {
31835
+ const targetScreenStrokePx = !isIsolated && (selected || hovered) ? strokePx.selected : strokePx.default;
31836
+ return scaleStrokeWidthForViewBox(viewBox, {
31933
31837
  containerWidth,
31934
31838
  containerHeight,
31935
- minScreenStrokePx: emphasized ? strokePx.emphasized : strokePx.default,
31839
+ targetScreenStrokePx,
31936
31840
  });
31937
31841
  }, [
31938
- colors,
31939
31842
  containerHeight,
31940
31843
  containerWidth,
31941
- fitViewBox,
31942
31844
  hovered,
31943
31845
  isIsolated,
31944
31846
  selected,
@@ -31958,7 +31860,7 @@ const SelectableBoundaryElement = ({ data, boundaryColors, boundaryStrokePx, isI
31958
31860
  };
31959
31861
  var SelectableBoundaryElement$1 = memo(SelectableBoundaryElement);
31960
31862
 
31961
- const PartitionPickerSvg = ({ svgElementDatas, viewBox, fitViewBox, containerWidth, containerHeight, mapRotation = 0, boundaryColors, boundaryStrokePx, isolatedBoundaryIds, selectedIds, hoveredId, onHoverChange, onBoundaryClick, }) => {
31863
+ const PartitionPickerSvg = ({ svgElementDatas, viewBox, containerWidth, containerHeight, mapRotation = 0, boundaryColors, boundaryStrokePx, isolatedBoundaryIds, selectedIds, hoveredId, onHoverChange, onBoundaryClick, }) => {
31962
31864
  const boundaries = (svgElementDatas[DataType.BOUNDARY] || []);
31963
31865
  const channels = (svgElementDatas[DataType.CHANNEL] || []);
31964
31866
  const selectedIdSet = useMemo(() => new Set(selectedIds), [selectedIds]);
@@ -31970,7 +31872,7 @@ const PartitionPickerSvg = ({ svgElementDatas, viewBox, fitViewBox, containerWid
31970
31872
  }, [mapRotation, viewBox.x, viewBox.y, viewBox.width, viewBox.height]);
31971
31873
  const mapContent = (jsxs(Fragment, { children: [jsx(GElement, { type: "boundary", children: boundaries.map((item) => {
31972
31874
  const boundaryId = Number(item.id);
31973
- return (jsx(SelectableBoundaryElement$1, { data: item, boundaryColors: boundaryColors, boundaryStrokePx: boundaryStrokePx, isIsolated: isolatedBoundaryIds.has(boundaryId), selected: selectedIdSet.has(boundaryId), hovered: hoveredId === boundaryId, viewBoxWidth: viewBox.width, viewBoxHeight: viewBox.height, fitViewBox: fitViewBox, containerWidth: containerWidth, containerHeight: containerHeight, onHoverChange: onHoverChange, onBoundaryClick: onBoundaryClick }, item.id));
31875
+ return (jsx(SelectableBoundaryElement$1, { data: item, boundaryColors: boundaryColors, boundaryStrokePx: boundaryStrokePx, isIsolated: isolatedBoundaryIds.has(boundaryId), selected: selectedIdSet.has(boundaryId), hovered: hoveredId === boundaryId, viewBoxWidth: viewBox.width, viewBoxHeight: viewBox.height, containerWidth: containerWidth, containerHeight: containerHeight, onHoverChange: onHoverChange, onBoundaryClick: onBoundaryClick }, item.id));
31974
31876
  }) }), jsxs(GElement, { type: "channel", children: [jsx(ChannelClipPath, {}), channels.map((item) => (jsx(ChannelElement, { data: item }, item.id)))] })] }));
31975
31877
  return (jsx("svg", { className: styles.mapSvg, xmlns: "http://www.w3.org/2000/svg", viewBox: viewBoxToString(viewBox), width: "100%", height: "100%", preserveAspectRatio: "xMidYMid meet", shapeRendering: "geometricPrecision", children: mapContentTransform ? (jsx("g", { transform: mapContentTransform, children: mapContent })) : (mapContent) }));
31976
31878
  };
@@ -32010,10 +31912,21 @@ const MapGridBackground = ({ viewBox, gridStyle }) => {
32010
31912
  var MapGridBackground$1 = memo(MapGridBackground);
32011
31913
 
32012
31914
  const PartitionPickerGridSvg = ({ viewBox, gridStyle }) => {
32013
- return (jsx("svg", { className: styles.gridSvg, "data-viewport-background": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: viewBoxToString(viewBox), width: "100%", height: "100%", preserveAspectRatio: "xMidYMid meet", shapeRendering: "geometricPrecision", "aria-hidden": true, children: jsx(MapGridBackground$1, { viewBox: viewBox, gridStyle: gridStyle }) }));
31915
+ return (jsx("svg", { className: styles.gridSvg, "data-viewport-background": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: viewBoxToString(viewBox), width: "100%", height: "100%",
31916
+ // 设置缩放的规则
31917
+ //等比缩放 viewBox 内容,使其完整落在容器内;
31918
+ //水平、垂直都居中;
31919
+ //比例不一致时,上下或左右留空(letterboxing),不裁切、不拉伸变形。
31920
+ preserveAspectRatio: "xMidYMid meet",
31921
+ /**
31922
+ * 控制浏览器如何绘制路径/线条:
31923
+ * geometricPrecision:优先几何精度,线条更平滑、对齐更稳,缩放时不易发虚或抖动。
31924
+ * 网格是大量细线,用这个属性能让缩放/平移时网格更清晰稳定。
31925
+ */
31926
+ shapeRendering: "geometricPrecision", "aria-hidden": true, children: jsx(MapGridBackground$1, { viewBox: viewBox, gridStyle: gridStyle }) }));
32014
31927
  };
32015
31928
 
32016
- const PartitionNameLabels = ({ items, selectedIds, labelStyles, labelMinScreenWidthPx = 72, platform = PlatformType.WEB, showSelectionOrder = false, rotation = 0, onHoverChange, onBoundaryClick, }) => {
31929
+ const PartitionNameLabels = ({ items, selectedIds, labelStyles, platform = PlatformType.WEB, showSelectionOrder = false, rotation = 0, onHoverChange, onBoundaryClick, }) => {
32017
31930
  const isWeb = platform === PlatformType.WEB;
32018
31931
  const orderBadgeStyle = useMemo(() => ({
32019
31932
  width: labelStyles.selectionOrderBadge.width,
@@ -32023,18 +31936,18 @@ const PartitionNameLabels = ({ items, selectedIds, labelStyles, labelMinScreenWi
32023
31936
  color: labelStyles.selectionOrderBadge.color,
32024
31937
  fontSize: `${labelStyles.selectionOrderBadge.fontSize}px`,
32025
31938
  fontWeight: labelStyles.selectionOrderBadge.fontWeight,
31939
+ fontFamily: labelStyles.selectionOrderBadge.fontFamily,
32026
31940
  lineHeight: labelStyles.selectionOrderBadge.lineHeight,
32027
31941
  }), [labelStyles]);
32028
31942
  return (jsx("div", { className: styles.labelsLayer, children: items.map((item) => {
32029
31943
  const isIsolated = item.isIsolated === true;
32030
31944
  const selected = !isIsolated && selectedIds.includes(item.id);
32031
31945
  const selectionOrder = selected ? selectedIds.indexOf(item.id) + 1 : null;
32032
- const isLargeEnough = item.screenWidthPx > labelMinScreenWidthPx;
31946
+ const isLargeEnough = item.screenWidthPx > H5_PARTITION_LABEL_MIN_SCREEN_WIDTH_PX;
32033
31947
  // Web 始终展示名称;H5 按屏幕宽度决定
32034
31948
  const showNameLabel = isWeb || isLargeEnough;
32035
31949
  const showOrderBadge = showSelectionOrder && selected && selectionOrder != null;
32036
31950
  const h5OrderOnly = !isWeb && showOrderBadge && !isLargeEnough;
32037
- const h5OrderWithName = !isWeb && showOrderBadge && isLargeEnough;
32038
31951
  if (!showNameLabel && !showOrderBadge && !isIsolated) {
32039
31952
  return null;
32040
31953
  }
@@ -32043,18 +31956,21 @@ const PartitionNameLabels = ({ items, selectedIds, labelStyles, labelMinScreenWi
32043
31956
  styles.label,
32044
31957
  !isWeb && showNameLabel ? styles.labelH5Wrap : '',
32045
31958
  isIsolated ? styles.labelIsolated : '',
32046
- isWeb && showOrderBadge ? styles.labelWithOrder : '',
32047
- h5OrderWithName ? styles.labelWithOrderH5 : '',
32048
31959
  h5OrderOnly ? styles.labelOrderOnly : '',
32049
31960
  isIsolated ? styles.labelIsolatedLayout : '',
32050
31961
  ]
32051
31962
  .filter(Boolean)
32052
31963
  .join(' ');
31964
+ const showOrderWithName = showOrderBadge && showNameLabel;
31965
+ const selectionOrderGapPx = isWeb
31966
+ ? WEB_SELECTION_ORDER_GAP_PX
31967
+ : H5_SELECTION_ORDER_GAP_PX;
32053
31968
  const boundaryIdProps = isIsolated ? {} : { [PARTITION_BOUNDARY_ID_ATTR$1]: item.id };
32054
31969
  return (jsxs("div", { className: labelClassName, style: {
32055
31970
  left: `${item.leftPct}%`,
32056
31971
  top: `${item.topPct}%`,
32057
31972
  transform: `translate(-50%, -50%) rotate(${-rotation}deg)`,
31973
+ ...(showOrderWithName ? { gap: selectionOrderGapPx } : undefined),
32058
31974
  }, ...boundaryIdProps, onMouseEnter: isIsolated ? undefined : () => onHoverChange(item.id), onMouseLeave: isIsolated ? undefined : () => onHoverChange(null), onClick: onBoundaryClick && !isIsolated
32059
31975
  ? (event) => {
32060
31976
  event.stopPropagation();
@@ -32069,7 +31985,7 @@ const DEFAULT_BACKGROUND = PARTITION_PICKER_GRID_BASE_COLOR;
32069
31985
  const PARTITION_BOUNDARY_ID_ATTR = 'data-partition-boundary-id';
32070
31986
  /** Map 模式下 OverlayViewF 默认 z-index */
32071
31987
  const DEFAULT_OVERLAY_Z_INDEX = 100;
32072
- const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleConfig, sn = '', platform = PlatformType.WEB, width, height, padding = 50, backgroundColor = DEFAULT_BACKGROUND, defaultTransform, mapRef, minZoom = 0.5, maxZoom = 4, enablePanZoom = true, refitOnResize = true, onSizeChange, selectedBoundaryIds, defaultSelectedBoundaryIds, onSelectionChange, hoveredBoundaryId, defaultHoveredBoundaryId, onBoundaryHoverChange, showSelectionOrder = false, zIndex = DEFAULT_OVERLAY_Z_INDEX, className, style, }, ref) => {
31988
+ const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleConfig, sn = '', platform = PlatformType.WEB, width, height, padding = 0, backgroundColor = DEFAULT_BACKGROUND, defaultTransform, mapRef, minZoom = 0.5, maxZoom = 3, enablePanZoom = true, refitOnResize = true, onSizeChange, selectedBoundaryIds, defaultSelectedBoundaryIds, onSelectionChange, hoveredBoundaryId, defaultHoveredBoundaryId, onBoundaryHoverChange, showSelectionOrder = false, zIndex = DEFAULT_OVERLAY_Z_INDEX, className, style, }, ref) => {
32073
31989
  /**
32074
31990
  * 是否为 Map 模式(传入 mapRef 时为 true):
32075
31991
  * - true:Google Maps 底图 + OverlayViewF,平移/缩放/fit 由底图负责
@@ -32080,8 +31996,34 @@ const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleCon
32080
31996
  const channelClipPathId = useMemo(() => createChannelClipPathId({ sn, reactId: reactInstanceId }), [sn, reactInstanceId]);
32081
31997
  /** 外部 pickerStyleConfig 与内置 platform 默认值合并后的最终外观(地块/标签/网格等) */
32082
31998
  const mergedPickerStyles = useMemo(() => resolvePartitionPickerStyles(platform, pickerStyleConfig), [pickerStyleConfig, platform]);
32083
- /** Standalone 容器留白与网格底色;pickerStyleConfig.grid.baseColor 优先于 backgroundColor */
32084
- const resolvedBackgroundColor = pickerStyleConfig?.grid?.baseColor ?? backgroundColor ?? DEFAULT_BACKGROUND;
31999
+ /** Standalone 容器背景与 grid.baseColor 对齐(合并后的最终值) */
32000
+ const resolvedBackgroundColor = useMemo(() => {
32001
+ if (isMapMode)
32002
+ return undefined;
32003
+ if (pickerStyleConfig?.grid?.baseColor != null) {
32004
+ return mergedPickerStyles.grid.baseColor;
32005
+ }
32006
+ return backgroundColor ?? mergedPickerStyles.grid.baseColor;
32007
+ }, [
32008
+ backgroundColor,
32009
+ isMapMode,
32010
+ mergedPickerStyles.grid.baseColor,
32011
+ pickerStyleConfig?.grid?.baseColor,
32012
+ ]);
32013
+ /** Standalone 网格层:backgroundColor 未显式指定 grid.baseColor 时与容器背景同步 */
32014
+ const standaloneGridStyle = useMemo(() => {
32015
+ if (pickerStyleConfig?.grid?.baseColor != null) {
32016
+ return mergedPickerStyles.grid;
32017
+ }
32018
+ if (backgroundColor != null) {
32019
+ return { ...mergedPickerStyles.grid, baseColor: backgroundColor };
32020
+ }
32021
+ return mergedPickerStyles.grid;
32022
+ }, [
32023
+ backgroundColor,
32024
+ mergedPickerStyles.grid,
32025
+ pickerStyleConfig?.grid?.baseColor,
32026
+ ]);
32085
32027
  const mergedMapConfig = useMemo(() => merge$1({}, DEFAULT_STYLES, getPartitionPickerMapConfig(platform), mapConfig), [mapConfig, platform]);
32086
32028
  const svgElementDatas = useMemo(() => UnifiedMapDataProcessor.processMapData(mapJson, mergedMapConfig) || {}, [mapJson, mergedMapConfig]);
32087
32029
  /** 地图 Y 轴相对正北的偏移(度),与 MowerMapRenderer.originNorthRotate 一致 */
@@ -32156,7 +32098,7 @@ const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleCon
32156
32098
  }
32157
32099
  }, [isMapMode, isReady, onSizeChange, pxWidth, pxHeight]);
32158
32100
  /** Standalone:平移/缩放 viewBox;Map 模式 enablePanZoom 关闭,仅保留 hook 结构 */
32159
- const { viewBox: standaloneViewBox, gridViewBox, fitViewBox: standaloneFitViewBox, resetView: standaloneResetView, fitToView: standaloneFitToView, } = useMapViewport({
32101
+ const { viewBox: standaloneViewBox, gridViewBox, resetView: standaloneResetView, fitToView: standaloneFitToView, } = useMapViewport({
32160
32102
  mapJson,
32161
32103
  containerRef,
32162
32104
  width: pxWidth,
@@ -32171,7 +32113,6 @@ const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleCon
32171
32113
  });
32172
32114
  /** 按模式选取 viewBox / 尺寸 / 旋转 / 就绪状态(Map 与 Standalone 数据源不同) */
32173
32115
  const viewBox = isMapMode ? googleOverlay.svgViewBox : standaloneViewBox;
32174
- const fitViewBox = isMapMode ? googleOverlay.fitViewBox : standaloneFitViewBox;
32175
32116
  const overlayWidth = isMapMode ? googleOverlay.overlayWidth : pxWidth;
32176
32117
  const overlayHeight = isMapMode ? googleOverlay.overlayHeight : pxHeight;
32177
32118
  const actureRotate = isMapMode ? googleOverlay.actureRotate : standaloneActureRotate;
@@ -32245,18 +32186,18 @@ const MowerPartitionPickerMap = forwardRef(({ mapJson, mapConfig, pickerStyleCon
32245
32186
  ...(isMapMode ? {} : layoutStyle),
32246
32187
  }), [isMapMode, layoutStyle, resolvedBackgroundColor, style]);
32247
32188
  /** 地块 + 通道 SVG;Map 模式不在 SVG 内旋转(由 OverlayViewF rotate 处理) */
32248
- const mapSvgLayer = viewBox && isLayersReady ? (jsx(PartitionPickerSvg, { svgElementDatas: svgElementDatas, viewBox: viewBox, fitViewBox: fitViewBox ?? viewBox, containerWidth: overlayWidth, containerHeight: overlayHeight, mapRotation: isMapMode ? 0 : actureRotate, boundaryColors: mergedPickerStyles.boundary, boundaryStrokePx: mergedPickerStyles.boundaryStrokePx, isolatedBoundaryIds: isolatedBoundaryIds, selectedIds: selectedIds, hoveredId: hoveredId, onHoverChange: handleHoverChange, onBoundaryClick: isMapMode ? handleBoundaryClick : undefined })) : null;
32189
+ const mapSvgLayer = viewBox && isLayersReady ? (jsx(PartitionPickerSvg, { svgElementDatas: svgElementDatas, viewBox: viewBox, containerWidth: overlayWidth, containerHeight: overlayHeight, mapRotation: isMapMode ? 0 : actureRotate, boundaryColors: mergedPickerStyles.boundary, boundaryStrokePx: mergedPickerStyles.boundaryStrokePx, isolatedBoundaryIds: isolatedBoundaryIds, selectedIds: selectedIds, hoveredId: hoveredId, onHoverChange: handleHoverChange, onBoundaryClick: isMapMode ? handleBoundaryClick : undefined })) : null;
32249
32190
  /**
32250
32191
  * 分区标签 + 充电桩 HTML 层。
32251
32192
  * Map 模式:平铺于 overlay 根节点;Standalone:包在 mapOverlayLayer 内做 CSS 旋转。
32252
32193
  */
32253
- const overlayLayers = viewBox && isLayersReady ? (isMapMode ? (jsxs(Fragment, { children: [jsx(PartitionNameLabels, { items: labelItems, selectedIds: selectedIds, labelStyles: mergedPickerStyles.labels, labelMinScreenWidthPx: mergedPickerStyles.labelMinScreenWidthPx, platform: platform, showSelectionOrder: showSelectionOrder, rotation: actureRotate, onHoverChange: handleHoverChange, onBoundaryClick: handleBoundaryClick }), jsx(CharginPile, { viewBox: viewBox, rotation: actureRotate })] })) : (jsxs("div", { className: styles.mapOverlayLayer, style: mapOverlayLayerStyle, children: [jsx(PartitionNameLabels, { items: labelItems, selectedIds: selectedIds, labelStyles: mergedPickerStyles.labels, labelMinScreenWidthPx: mergedPickerStyles.labelMinScreenWidthPx, platform: platform, showSelectionOrder: showSelectionOrder, rotation: actureRotate, onHoverChange: handleHoverChange }), jsx(CharginPile, { viewBox: viewBox, rotation: actureRotate, viewRotationMode: "overlay-parent", containerWidth: overlayWidth, containerHeight: overlayHeight })] }))) : null;
32194
+ const overlayLayers = viewBox && isLayersReady ? (isMapMode ? (jsxs(Fragment, { children: [jsx(PartitionNameLabels, { items: labelItems, selectedIds: selectedIds, labelStyles: mergedPickerStyles.labels, platform: platform, showSelectionOrder: showSelectionOrder, rotation: actureRotate, onHoverChange: handleHoverChange, onBoundaryClick: handleBoundaryClick }), jsx(CharginPile, { viewBox: viewBox, rotation: actureRotate })] })) : (jsxs("div", { className: styles.mapOverlayLayer, style: mapOverlayLayerStyle, children: [jsx(PartitionNameLabels, { items: labelItems, selectedIds: selectedIds, labelStyles: mergedPickerStyles.labels, platform: platform, showSelectionOrder: showSelectionOrder, rotation: actureRotate, onHoverChange: handleHoverChange }), jsx(CharginPile, { viewBox: viewBox, rotation: actureRotate, viewRotationMode: "overlay-parent", containerWidth: overlayWidth, containerHeight: overlayHeight, sizeInSvgUnits: true, minDisplaySizePx: PARTITION_PICKER_CHARGING_PILE_MIN_DISPLAY_PX })] }))) : null;
32254
32195
  /** Map 模式:渲染 OverlayViewF,底图为 Google Maps */
32255
32196
  if (isMapMode && mapRef) {
32256
32197
  return (jsx(CommonContextProvider, { value: commonValue, children: jsx(SvgEditContextProvider, { value: svgEditValue, children: jsx(OverlayViewF, { map: mapRef, mapPaneName: "overlayMouseTarget", bounds: googleOverlay.bounds ?? undefined, rotate: actureRotate, zIndex: zIndex, onDraw: googleOverlay.handleOverlayDraw, children: jsxs("div", { className: `${styles.googleOverlayRoot} ${className || ''}`, style: containerStyle, onMouseLeave: () => setHoveredId(null), children: [mapSvgLayer, overlayLayers] }) }) }) }));
32257
32198
  }
32258
32199
  /** Standalone 模式:固定容器 + 网格底图 + 双层 SVG / HTML overlay */
32259
- return (jsx(CommonContextProvider, { value: commonValue, children: jsx(SvgEditContextProvider, { value: svgEditValue, children: jsx("div", { ref: containerRef, className: `${styles.container} ${className || ''}`, "data-viewport-background": "true", style: containerStyle, onMouseLeave: () => setHoveredId(null), children: isLayersReady && (jsxs(Fragment, { children: [jsxs("div", { className: styles.mapSvgStack, children: [jsx(PartitionPickerGridSvg, { viewBox: gridViewBox, gridStyle: mergedPickerStyles.grid }), mapSvgLayer] }), overlayLayers] })) }) }) }));
32200
+ return (jsx(CommonContextProvider, { value: commonValue, children: jsx(SvgEditContextProvider, { value: svgEditValue, children: jsx("div", { ref: containerRef, className: `${styles.container} ${className || ''}`, "data-viewport-background": "true", style: containerStyle, onMouseLeave: () => setHoveredId(null), children: isLayersReady && (jsxs(Fragment, { children: [jsxs("div", { className: styles.mapSvgStack, children: [jsx(PartitionPickerGridSvg, { viewBox: gridViewBox, gridStyle: standaloneGridStyle }), mapSvgLayer] }), overlayLayers] })) }) }) }));
32260
32201
  });
32261
32202
  MowerPartitionPickerMap.displayName = 'MowerPartitionPickerMap';
32262
32203