@vtx/ol-map 2.0.0-beta.2 → 2.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/README.md +205 -205
  2. package/lib/_util/EventEmitter.js.map +1 -1
  3. package/lib/_util/StyleCache.js.map +1 -1
  4. package/lib/_util/encryptParams.js +11 -11
  5. package/lib/_util/encryptParams.js.map +1 -1
  6. package/lib/_util/filterSpecialCharacters.js +6 -6
  7. package/lib/_util/filterSpecialCharacters.js.map +1 -1
  8. package/lib/_util/getComponentProps.js.map +1 -1
  9. package/lib/_util/getCookie.js +4 -4
  10. package/lib/_util/getCookie.js.map +1 -1
  11. package/lib/_util/getDefaultMapInfo.js.map +1 -1
  12. package/lib/_util/getSystemInfo.js.map +1 -1
  13. package/lib/_util/getToken.js.map +1 -1
  14. package/lib/_util/http.js +20 -20
  15. package/lib/_util/http.js.map +1 -1
  16. package/lib/_util/isFunction.js.map +1 -1
  17. package/lib/_util/isObject.js.map +1 -1
  18. package/lib/_util/layer.js +21 -21
  19. package/lib/_util/layer.js.map +1 -1
  20. package/lib/_util/mapTool.js +35 -35
  21. package/lib/_util/mapTool.js.map +1 -1
  22. package/lib/_util/projection.js +44 -0
  23. package/lib/_util/projection.js.map +1 -0
  24. package/lib/_util/projzh/datum/bd-09.js.map +1 -1
  25. package/lib/_util/projzh/datum/gcj-02.js.map +1 -1
  26. package/lib/_util/projzh/datum/index.js.map +1 -1
  27. package/lib/_util/projzh/index.js.map +1 -1
  28. package/lib/_util/projzh/projection/baidu-mercator.js.map +1 -1
  29. package/lib/_util/projzh/projection/index.js.map +1 -1
  30. package/lib/_util/projzh/projection/spherical-mercator.js.map +1 -1
  31. package/lib/_util/projzh/util.js.map +1 -1
  32. package/lib/_util/search.js +39 -45
  33. package/lib/_util/search.js.map +1 -1
  34. package/lib/_util/setCookie.js +4 -4
  35. package/lib/_util/setCookie.js.map +1 -1
  36. package/lib/_util/stringToFun.js.map +1 -1
  37. package/lib/_util/transform.js.map +1 -1
  38. package/lib/_util/useColSize.js.map +1 -1
  39. package/lib/_util/useInterval.js.map +1 -1
  40. package/lib/_util/useSet.js.map +1 -1
  41. package/lib/analysis-layer/index.js +23 -23
  42. package/lib/analysis-layer/index.js.map +1 -1
  43. package/lib/arrow-flow-layer/ArrowFlowLayer.js +438 -0
  44. package/lib/arrow-flow-layer/ArrowFlowLayer.js.map +1 -0
  45. package/lib/arrow-flow-layer/index.js +140 -0
  46. package/lib/arrow-flow-layer/index.js.map +1 -0
  47. package/lib/arrow-flow-layer/sampleArrowsAlongLine.js +87 -0
  48. package/lib/arrow-flow-layer/sampleArrowsAlongLine.js.map +1 -0
  49. package/lib/arrow-flow-layer/style/css.js +4 -0
  50. package/lib/arrow-flow-layer/style/css.js.map +1 -0
  51. package/lib/arrow-flow-layer/style/index.css +0 -0
  52. package/lib/arrow-flow-layer/style/index.js +4 -0
  53. package/lib/arrow-flow-layer/style/index.js.map +1 -0
  54. package/lib/arrow-flow-layer/style/index.less +0 -0
  55. package/lib/buffer-draw/BufferDraw.js +4 -3
  56. package/lib/buffer-draw/BufferDraw.js.map +1 -1
  57. package/lib/buffer-draw/index.js +3 -1
  58. package/lib/buffer-draw/index.js.map +1 -1
  59. package/lib/config.js.map +1 -1
  60. package/lib/convertCamelToCSS.js.map +1 -1
  61. package/lib/dom/Dom.js.map +1 -1
  62. package/lib/dom/index.js.map +1 -1
  63. package/lib/dom-layer/index.js.map +1 -1
  64. package/lib/dom-layer/style/css.js.map +1 -1
  65. package/lib/dom-layer/style/index.js.map +1 -1
  66. package/lib/dom-layer/style/index.less +3 -3
  67. package/lib/events/index.js.map +1 -1
  68. package/lib/feature-draw/FeatureDraw.js +8 -7
  69. package/lib/feature-draw/FeatureDraw.js.map +1 -1
  70. package/lib/feature-draw/index.js +4 -1
  71. package/lib/feature-draw/index.js.map +1 -1
  72. package/lib/feature-layer/FeatureLayer.js +63 -27
  73. package/lib/feature-layer/FeatureLayer.js.map +1 -1
  74. package/lib/feature-layer/MyCluster.js +7 -7
  75. package/lib/feature-layer/MyCluster.js.map +1 -1
  76. package/lib/feature-layer/createFeatureCollection.js +13 -13
  77. package/lib/feature-layer/createFeatureCollection.js.map +1 -1
  78. package/lib/feature-layer/index.js +3 -3
  79. package/lib/feature-layer/index.js.map +1 -1
  80. package/lib/feature-layer/style/css.js.map +1 -1
  81. package/lib/feature-layer/style/index.js.map +1 -1
  82. package/lib/flow-line-layer/FlowLineLayer.js.map +1 -1
  83. package/lib/flow-line-layer/index.js.map +1 -1
  84. package/lib/flow-line-layer/style/css.js.map +1 -1
  85. package/lib/flow-line-layer/style/index.js.map +1 -1
  86. package/lib/fly-line-layer/FlyLineLayer.js.map +1 -1
  87. package/lib/fly-line-layer/index.js.map +1 -1
  88. package/lib/fly-line-layer/style/css.js.map +1 -1
  89. package/lib/fly-line-layer/style/index.js.map +1 -1
  90. package/lib/group-layer/GroupLayer.js +8 -6
  91. package/lib/group-layer/GroupLayer.js.map +1 -1
  92. package/lib/group-layer/index.js.map +1 -1
  93. package/lib/group-layer/style/css.js.map +1 -1
  94. package/lib/group-layer/style/index.js.map +1 -1
  95. package/lib/heatmap-layer/HeatmapLayer.js.map +1 -1
  96. package/lib/heatmap-layer/index.js +12 -3
  97. package/lib/heatmap-layer/index.js.map +1 -1
  98. package/lib/heatmap-layer/style/css.js.map +1 -1
  99. package/lib/heatmap-layer/style/index.js.map +1 -1
  100. package/lib/high-layer/HighLayer.js +9 -7
  101. package/lib/high-layer/HighLayer.js.map +1 -1
  102. package/lib/high-layer/index.js +4 -2
  103. package/lib/high-layer/index.js.map +1 -1
  104. package/lib/image-layer/ImageLayer.js +1 -1
  105. package/lib/image-layer/ImageLayer.js.map +1 -1
  106. package/lib/image-layer/ImageTileLayer.js +1 -1
  107. package/lib/image-layer/ImageTileLayer.js.map +1 -1
  108. package/lib/image-layer/index.js.map +1 -1
  109. package/lib/image-layer/style/css.js.map +1 -1
  110. package/lib/image-layer/style/index.js.map +1 -1
  111. package/lib/index.js +7 -0
  112. package/lib/index.js.map +1 -1
  113. package/lib/legend/index.js +17 -15
  114. package/lib/legend/index.js.map +1 -1
  115. package/lib/legend/style/css.js.map +1 -1
  116. package/lib/legend/style/index.js.map +1 -1
  117. package/lib/legend/style/index.less +100 -100
  118. package/lib/map/Analysis.js.map +1 -1
  119. package/lib/map/Layers.js +11 -10
  120. package/lib/map/Layers.js.map +1 -1
  121. package/lib/map/Popup.js +16 -11
  122. package/lib/map/Popup.js.map +1 -1
  123. package/lib/map/ScaleDenominator.js.map +1 -1
  124. package/lib/map/Test.js.map +1 -1
  125. package/lib/map/defaultTextEnum.js +187 -0
  126. package/lib/map/defaultTextEnum.js.map +1 -0
  127. package/lib/map/defaultTextEnumEN.js +223 -0
  128. package/lib/map/defaultTextEnumEN.js.map +1 -0
  129. package/lib/map/getBaseLayers/imagery/amap/AmapImageryProvider.js.map +1 -1
  130. package/lib/map/getBaseLayers/imagery/baidu/BaiduImageryProvider.js.map +1 -1
  131. package/lib/map/getBaseLayers/imagery/geoq/GeoQImageryProvider.js.map +1 -1
  132. package/lib/map/getBaseLayers/imagery/tdt/TdtImageryProvider.js.map +1 -1
  133. package/lib/map/getBaseLayers/index.js.map +1 -1
  134. package/lib/map/index.js +48 -33
  135. package/lib/map/index.js.map +1 -1
  136. package/lib/map/style/css.js.map +1 -1
  137. package/lib/map/style/index.js.map +1 -1
  138. package/lib/map/style/index.less +152 -152
  139. package/lib/map-icon/svg/index.js.map +1 -1
  140. package/lib/marker/Marker.js.map +1 -1
  141. package/lib/marker/index.js.map +1 -1
  142. package/lib/path-line-layer/PathLineLayer.js.map +1 -1
  143. package/lib/path-line-layer/getPathLineStyles.js.map +1 -1
  144. package/lib/path-line-layer/index.js +3 -3
  145. package/lib/path-line-layer/index.js.map +1 -1
  146. package/lib/path-line-layer/style/css.js.map +1 -1
  147. package/lib/path-line-layer/style/index.js.map +1 -1
  148. package/lib/path-play-back/PathPlayBack.js +10 -10
  149. package/lib/path-play-back/PathPlayBack.js.map +1 -1
  150. package/lib/path-play-back/index.js +2 -2
  151. package/lib/path-play-back/index.js.map +1 -1
  152. package/lib/poi-search/Location.js.map +1 -1
  153. package/lib/poi-search/PoiList.js +18 -10
  154. package/lib/poi-search/PoiList.js.map +1 -1
  155. package/lib/poi-search/Search.js +10 -4
  156. package/lib/poi-search/Search.js.map +1 -1
  157. package/lib/poi-search/index.js +11 -5
  158. package/lib/poi-search/index.js.map +1 -1
  159. package/lib/poi-search/style/css.js.map +1 -1
  160. package/lib/poi-search/style/index.js.map +1 -1
  161. package/lib/poi-search/style/index.less +97 -97
  162. package/lib/point/Point.js.map +1 -1
  163. package/lib/point/index.js.map +1 -1
  164. package/lib/polygon/Polygon.js.map +1 -1
  165. package/lib/polygon/index.js.map +1 -1
  166. package/lib/polyline/Polyline.js.map +1 -1
  167. package/lib/polyline/index.js.map +1 -1
  168. package/lib/popup/index.js.map +1 -1
  169. package/lib/popup/style/css.js.map +1 -1
  170. package/lib/popup/style/index.js.map +1 -1
  171. package/lib/popup/style/index.less +129 -129
  172. package/lib/provider/index.js.map +1 -1
  173. package/lib/renderer/Fill.js.map +1 -1
  174. package/lib/renderer/Stroke.js.map +1 -1
  175. package/lib/renderer/index.js +2 -2
  176. package/lib/renderer/index.js.map +1 -1
  177. package/lib/renderer/style/css.js.map +1 -1
  178. package/lib/renderer/style/index.js.map +1 -1
  179. package/lib/renderer/transformRgb.js.map +1 -1
  180. package/lib/search-map/VtxModal.js +16 -9
  181. package/lib/search-map/VtxModal.js.map +1 -1
  182. package/lib/search-map/index.js +74 -19
  183. package/lib/search-map/index.js.map +1 -1
  184. package/lib/search-map/style/css.js.map +1 -1
  185. package/lib/search-map/style/index.css +16 -3
  186. package/lib/search-map/style/index.js.map +1 -1
  187. package/lib/search-map/style/index.less +96 -80
  188. package/lib/search-map/style/modal.css +14 -12
  189. package/lib/search-map/style/modal.less +66 -56
  190. package/lib/style/index.less +2 -2
  191. package/lib/style/themes/compact.less +1 -1
  192. package/lib/style/themes/dark.less +7 -7
  193. package/lib/style/themes/default.less +7 -7
  194. package/lib/style/themes/index.less +1 -1
  195. package/lib/style/themes/variable.less +5 -5
  196. package/lib/tile-layer/TileLayer.js.map +1 -1
  197. package/lib/tile-layer/index.js +4 -2
  198. package/lib/tile-layer/index.js.map +1 -1
  199. package/lib/tile-layer/style/css.js.map +1 -1
  200. package/lib/tile-layer/style/index.js.map +1 -1
  201. package/lib/tools/Layer/LayerService.js.map +1 -1
  202. package/lib/tools/Layer/LayersCheckService.js +2 -2
  203. package/lib/tools/Layer/LayersCheckService.js.map +1 -1
  204. package/lib/tools/Layer/index.js +2 -2
  205. package/lib/tools/Layer/index.js.map +1 -1
  206. package/lib/tools/Layer/index.less +43 -43
  207. package/lib/tools/Search/index.js +50 -40
  208. package/lib/tools/Search/index.js.map +1 -1
  209. package/lib/tools/Toolbox/BoxSelect/index.js +6 -3
  210. package/lib/tools/Toolbox/BoxSelect/index.js.map +1 -1
  211. package/lib/tools/Toolbox/CircleSelect/index.js +6 -3
  212. package/lib/tools/Toolbox/CircleSelect/index.js.map +1 -1
  213. package/lib/tools/Toolbox/EagleEye/index.js +5 -4
  214. package/lib/tools/Toolbox/EagleEye/index.js.map +1 -1
  215. package/lib/tools/Toolbox/MapBookmark/Bookmark.js +1 -1
  216. package/lib/tools/Toolbox/MapBookmark/Bookmark.js.map +1 -1
  217. package/lib/tools/Toolbox/MapBookmark/index.js +43 -42
  218. package/lib/tools/Toolbox/MapBookmark/index.js.map +1 -1
  219. package/lib/tools/Toolbox/MapBookmark/index.less +20 -20
  220. package/lib/tools/Toolbox/MapDownload/index.js.map +1 -1
  221. package/lib/tools/Toolbox/MapPrint/index.css +62 -3
  222. package/lib/tools/Toolbox/MapPrint/index.js +186 -31
  223. package/lib/tools/Toolbox/MapPrint/index.js.map +1 -1
  224. package/lib/tools/Toolbox/MapPrint/index.less +73 -4
  225. package/lib/tools/Toolbox/MapSheetPrint/assets/lock.png +0 -0
  226. package/lib/tools/Toolbox/MapSheetPrint/index.css +25 -0
  227. package/lib/tools/Toolbox/MapSheetPrint/index.js +1640 -0
  228. package/lib/tools/Toolbox/MapSheetPrint/index.js.map +1 -0
  229. package/lib/tools/Toolbox/MapSheetPrint/index.less +34 -0
  230. package/lib/tools/Toolbox/Measure/Area/index.js.map +1 -1
  231. package/lib/tools/Toolbox/Measure/Distance/index.js.map +1 -1
  232. package/lib/tools/Toolbox/Measure/Measure.js +24 -15
  233. package/lib/tools/Toolbox/Measure/Measure.js.map +1 -1
  234. package/lib/tools/Toolbox/Measure/index.js +7 -5
  235. package/lib/tools/Toolbox/Measure/index.js.map +1 -1
  236. package/lib/tools/Toolbox/PolygonSelect/index.js +2 -2
  237. package/lib/tools/Toolbox/PolygonSelect/index.js.map +1 -1
  238. package/lib/tools/Toolbox/ScaleLine/index.js +3 -2
  239. package/lib/tools/Toolbox/ScaleLine/index.js.map +1 -1
  240. package/lib/tools/Toolbox/SelectTools/index.js +88 -76
  241. package/lib/tools/Toolbox/SelectTools/index.js.map +1 -1
  242. package/lib/tools/Toolbox/SelectTools/index.less +87 -87
  243. package/lib/tools/Toolbox/SpaceQuery/index.js +56 -51
  244. package/lib/tools/Toolbox/SpaceQuery/index.js.map +1 -1
  245. package/lib/tools/Toolbox/SpaceQuery/index.less +16 -16
  246. package/lib/tools/Toolbox/ZoomInput/index.js +4 -1
  247. package/lib/tools/Toolbox/ZoomInput/index.js.map +1 -1
  248. package/lib/tools/Toolbox/ZoomInput/index.less +5 -5
  249. package/lib/tools/Toolbox/draftingPrint/index.css +26 -0
  250. package/lib/tools/Toolbox/draftingPrint/index.js +366 -0
  251. package/lib/tools/Toolbox/draftingPrint/index.js.map +1 -0
  252. package/lib/tools/Toolbox/draftingPrint/index.less +34 -0
  253. package/lib/tools/Toolbox/index.js +118 -63
  254. package/lib/tools/Toolbox/index.js.map +1 -1
  255. package/lib/tools/Toolbox/index.less +2 -2
  256. package/lib/tools/Utils/CreateOverlay.js +2 -2
  257. package/lib/tools/Utils/CreateOverlay.js.map +1 -1
  258. package/lib/tools/Utils/Draw.js +4 -4
  259. package/lib/tools/Utils/Draw.js.map +1 -1
  260. package/lib/tools/Utils/HighLayer.js +6 -5
  261. package/lib/tools/Utils/HighLayer.js.map +1 -1
  262. package/lib/tools/Utils/measure.js.map +1 -1
  263. package/lib/tools/Utils/utils.js +17 -17
  264. package/lib/tools/Utils/utils.js.map +1 -1
  265. package/lib/tools/View/index.js +58 -43
  266. package/lib/tools/View/index.js.map +1 -1
  267. package/lib/tools/View/index.less +28 -28
  268. package/lib/tools/analysis-tool/index.js.map +1 -1
  269. package/lib/tools/base-map-switch/index.js +44 -40
  270. package/lib/tools/base-map-switch/index.js.map +1 -1
  271. package/lib/tools/components/Chart/index.js +93 -89
  272. package/lib/tools/components/Chart/index.js.map +1 -1
  273. package/lib/tools/components/Icon/index.js.map +1 -1
  274. package/lib/tools/components/Info/index.js.map +1 -1
  275. package/lib/tools/components/Info/index.less +26 -26
  276. package/lib/tools/components/ItemWrap/index.js.map +1 -1
  277. package/lib/tools/components/ItemWrap/index.less +41 -41
  278. package/lib/tools/components/Modal/index.js +2 -2
  279. package/lib/tools/components/Modal/index.js.map +1 -1
  280. package/lib/tools/components/Modal/index.less +33 -33
  281. package/lib/tools/components/MyTabs/index.js.map +1 -1
  282. package/lib/tools/components/RequiredLabel/index.js.map +1 -1
  283. package/lib/tools/components/RequiredLabel/index.less +5 -5
  284. package/lib/tools/components/Select/index.js.map +1 -1
  285. package/lib/tools/components/Table/index.js +7 -4
  286. package/lib/tools/components/Table/index.js.map +1 -1
  287. package/lib/tools/components/Table/index.less +13 -13
  288. package/lib/tools/components/ToolItem/index.js.map +1 -1
  289. package/lib/tools/components/ToolItem/index.less +27 -27
  290. package/lib/tools/components/ToolsSelect/index.js.map +1 -1
  291. package/lib/tools/components/ToolsSelect/index.less +10 -10
  292. package/lib/tools/full-screen/index.js.map +1 -1
  293. package/lib/tools/index.js +52 -41
  294. package/lib/tools/index.js.map +1 -1
  295. package/lib/tools/layer-control/index.js +12 -11
  296. package/lib/tools/layer-control/index.js.map +1 -1
  297. package/lib/tools/refresh/index.js.map +1 -1
  298. package/lib/tools/style/css.js.map +1 -1
  299. package/lib/tools/style/index.js.map +1 -1
  300. package/lib/tools/style/index.less +154 -154
  301. package/lib/tools-item/index.js +2 -2
  302. package/lib/tools-item/index.js.map +1 -1
  303. package/lib/use-props/index.js.map +1 -1
  304. package/lib/wms-layer/WmsLayer.js +1 -1
  305. package/lib/wms-layer/WmsLayer.js.map +1 -1
  306. package/lib/wms-layer/index.js.map +1 -1
  307. package/lib/wms-layer/style/css.js.map +1 -1
  308. package/lib/wms-layer/style/index.js.map +1 -1
  309. package/package.json +138 -121
  310. package/lib/_util/getUrlParam.js +0 -15
  311. package/lib/_util/getUrlParam.js.map +0 -1
@@ -0,0 +1,1640 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = _default;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _antd = require("antd");
10
+ var _Modal = _interopRequireDefault(require("../../components/Modal"));
11
+ var _jspdf = require("jspdf");
12
+ var _html2canvas = _interopRequireDefault(require("html2canvas"));
13
+ var _interaction = require("ol/interaction");
14
+ var _Vector = _interopRequireDefault(require("ol/layer/Vector"));
15
+ var _Tile = _interopRequireDefault(require("ol/layer/Tile"));
16
+ var _Image = _interopRequireDefault(require("ol/layer/Image"));
17
+ var _Vector2 = _interopRequireDefault(require("ol/source/Vector"));
18
+ var _Draw = require("ol/interaction/Draw");
19
+ var _Draw2 = require("../../Utils/Draw");
20
+ var _useProps2 = _interopRequireDefault(require("../../../use-props"));
21
+ var _olMap = require("@vtx/ol-map");
22
+ var _FeatureLayer = _interopRequireDefault(require("../../../feature-layer/FeatureLayer"));
23
+ var _ImageLayer = _interopRequireDefault(require("../../../image-layer/ImageLayer"));
24
+ var _lock = _interopRequireDefault(require("./assets/lock.png"));
25
+ require("./index.less");
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
27
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
28
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
30
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
31
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
32
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
33
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
34
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o("next", 0), o("throw", 1), o("return", 2); } }, _regeneratorDefine2(e, r, n, t); }
35
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
36
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
37
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
40
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
41
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
42
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
43
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
44
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
45
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
46
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
47
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // import { snapdom } from '@zumer/snapdom';
48
+ var pageSizeOptions = ['A4', 'A3', 'A2', 'A1', 'A0'];
49
+ var pageSizeMap = {
50
+ A4: {
51
+ width: 210,
52
+ height: 297
53
+ },
54
+ A3: {
55
+ width: 297,
56
+ height: 420
57
+ },
58
+ A2: {
59
+ width: 420,
60
+ height: 594
61
+ },
62
+ A1: {
63
+ width: 594,
64
+ height: 841
65
+ },
66
+ A0: {
67
+ width: 841,
68
+ height: 1189
69
+ }
70
+ };
71
+ var DIMENSION_DPI = 96;
72
+ var EXPORT_DPI = 144;
73
+ var PREVIEW_HEIGHT = 610;
74
+ var PREVIEW_WIDTH = 980;
75
+ var pxToMm = function pxToMm(px) {
76
+ var dpi = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIMENSION_DPI;
77
+ return px * 25.4 / dpi;
78
+ };
79
+ var mmToPx = function mmToPx(mm) {
80
+ var dpi = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EXPORT_DPI;
81
+ return mm * dpi / 25.4;
82
+ };
83
+ var isValidExtent = function isValidExtent(extent) {
84
+ return Array.isArray(extent) && extent.length === 4 && extent.every(function (item) {
85
+ return Number.isFinite(item);
86
+ }) && extent[2] > extent[0] && extent[3] > extent[1];
87
+ };
88
+
89
+ // 按指定层级把地理范围换算成屏幕像素和毫米尺寸。
90
+ // 这里算出来的宽高是后面分幅、预览和导出的统一基础数据。
91
+ var calcMetricsFromZoom = function calcMetricsFromZoom(extent, view, zoom) {
92
+ if (!isValidExtent(extent)) {
93
+ return null;
94
+ }
95
+ var resolution = view.getResolutionForZoom(zoom) || view.getResolution();
96
+ var geoWidth = extent[2] - extent[0];
97
+ var geoHeight = extent[3] - extent[1];
98
+ var pixelWidth = geoWidth / resolution;
99
+ var pixelHeight = geoHeight / resolution;
100
+ var widthMm = pxToMm(pixelWidth, DIMENSION_DPI);
101
+ var heightMm = pxToMm(pixelHeight, DIMENSION_DPI);
102
+ return {
103
+ extent: extent,
104
+ zoom: zoom,
105
+ resolution: resolution,
106
+ geoWidth: geoWidth,
107
+ geoHeight: geoHeight,
108
+ pixelWidth: pixelWidth,
109
+ pixelHeight: pixelHeight,
110
+ widthMm: widthMm,
111
+ heightMm: heightMm,
112
+ ratio: heightMm / widthMm
113
+ };
114
+ };
115
+
116
+ // 根据总宽高、纸张尺寸和重叠边距,计算需要切成多少张纸,
117
+ // 以及每一张纸在整幅图中的毫米位置。
118
+ var calcSplitPlan = function calcSplitPlan(_ref) {
119
+ var totalWidthMm = _ref.totalWidthMm,
120
+ totalHeightMm = _ref.totalHeightMm,
121
+ pageSize = _ref.pageSize,
122
+ _ref$overlapMargin = _ref.overlapMargin,
123
+ overlapMargin = _ref$overlapMargin === void 0 ? 0 : _ref$overlapMargin;
124
+ var paper = pageSizeMap[pageSize];
125
+ if (!paper || !totalWidthMm || !totalHeightMm) {
126
+ return null;
127
+ }
128
+ var safeOverlap = Math.max(0, Number(overlapMargin) || 0);
129
+ var stepX = Math.max(1, paper.width - safeOverlap);
130
+ var stepY = Math.max(1, paper.height - safeOverlap);
131
+ var cols = Math.max(1, Math.ceil(totalWidthMm / stepX));
132
+ var rows = Math.max(1, Math.ceil(totalHeightMm / stepY));
133
+ var sheets = [];
134
+ for (var row = 0; row < rows; row++) {
135
+ for (var col = 0; col < cols; col++) {
136
+ var xMm = col * stepX;
137
+ var yMm = row * stepY;
138
+ var widthMm = Math.min(paper.width, totalWidthMm - xMm);
139
+ var heightMm = Math.min(paper.height, totalHeightMm - yMm);
140
+ sheets.push({
141
+ id: "".concat(row + 1, "-").concat(col + 1),
142
+ index: row * cols + col + 1,
143
+ row: row + 1,
144
+ col: col + 1,
145
+ xMm: xMm,
146
+ yMm: yMm,
147
+ widthMm: widthMm,
148
+ heightMm: heightMm,
149
+ isPartial: widthMm < paper.width || heightMm < paper.height
150
+ });
151
+ }
152
+ }
153
+ return {
154
+ paperWidthMm: paper.width,
155
+ paperHeightMm: paper.height,
156
+ overlapMargin: safeOverlap,
157
+ totalWidthMm: totalWidthMm,
158
+ totalHeightMm: totalHeightMm,
159
+ stepX: stepX,
160
+ stepY: stepY,
161
+ cols: cols,
162
+ rows: rows,
163
+ totalSheets: sheets.length,
164
+ sheets: sheets
165
+ };
166
+ };
167
+
168
+ // 把某一张分幅纸在整幅图中的毫米位置,映射回真实地图 extent。
169
+ var buildSheetExtent = function buildSheetExtent(sheet, plan, totalExtent) {
170
+ var _totalExtent = _slicedToArray(totalExtent, 4),
171
+ minX = _totalExtent[0],
172
+ minY = _totalExtent[1],
173
+ maxX = _totalExtent[2],
174
+ maxY = _totalExtent[3];
175
+ var xScale = (maxX - minX) / plan.totalWidthMm;
176
+ var yScale = (maxY - minY) / plan.totalHeightMm;
177
+ var left = minX + sheet.xMm * xScale;
178
+ var right = left + sheet.widthMm * xScale;
179
+ var top = maxY - sheet.yMm * yScale;
180
+ var bottom = top - sheet.heightMm * yScale;
181
+ return [left, bottom, right, top];
182
+ };
183
+
184
+ // 预览区显示的是“完整纸张网格”的外框,不是仅仅显示用户选中的蓝框范围。
185
+ // 这样最后一张纸即使没铺满,虚线纸张尺寸也仍然是完整的。
186
+ var buildPreviewFrameExtent = function buildPreviewFrameExtent(plan, totalExtent) {
187
+ if (!plan || !isValidExtent(totalExtent)) {
188
+ return null;
189
+ }
190
+ var _totalExtent2 = _slicedToArray(totalExtent, 4),
191
+ minX = _totalExtent2[0],
192
+ minY = _totalExtent2[1],
193
+ maxX = _totalExtent2[2],
194
+ maxY = _totalExtent2[3];
195
+ var xScale = (maxX - minX) / plan.totalWidthMm;
196
+ var yScale = (maxY - minY) / plan.totalHeightMm;
197
+ var frameWidthMm = plan.paperWidthMm + Math.max(0, plan.cols - 1) * plan.stepX;
198
+ var frameHeightMm = plan.paperHeightMm + Math.max(0, plan.rows - 1) * plan.stepY;
199
+ return [minX, maxY - frameHeightMm * yScale, minX + frameWidthMm * xScale, maxY];
200
+ };
201
+ var getPreviewFrameSizeMm = function getPreviewFrameSizeMm(plan) {
202
+ if (!plan) {
203
+ return null;
204
+ }
205
+ return {
206
+ width: plan.paperWidthMm + Math.max(0, plan.cols - 1) * plan.stepX,
207
+ height: plan.paperHeightMm + Math.max(0, plan.rows - 1) * plan.stepY
208
+ };
209
+ };
210
+ var getExtentCenter = function getExtentCenter(extent) {
211
+ return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];
212
+ };
213
+
214
+ // 预览/导出地图会复用原地图的图层源。
215
+ // 矢量图层这里做一份克隆,避免直接操作原图层上的 feature。
216
+ var cloneVectorSource = function cloneVectorSource(source) {
217
+ if (!(source !== null && source !== void 0 && source.getFeatures)) {
218
+ return source;
219
+ }
220
+ return new _Vector2["default"]({
221
+ features: source.getFeatures().map(function (feature) {
222
+ return feature.clone();
223
+ })
224
+ });
225
+ };
226
+
227
+ // 这里只同步常见业务图层到隐藏导出地图中,
228
+ // 不把框选图层、高亮层和底图标注层混进去,避免预览污染。
229
+ var cloneLayer = function cloneLayer(layer) {
230
+ var _layer$getOpacity, _layer$getVisible, _layer$getZIndex, _layer$getExtent;
231
+ var common = {
232
+ opacity: (_layer$getOpacity = layer.getOpacity) === null || _layer$getOpacity === void 0 ? void 0 : _layer$getOpacity.call(layer),
233
+ visible: (_layer$getVisible = layer.getVisible) === null || _layer$getVisible === void 0 ? void 0 : _layer$getVisible.call(layer),
234
+ zIndex: (_layer$getZIndex = layer.getZIndex) === null || _layer$getZIndex === void 0 ? void 0 : _layer$getZIndex.call(layer),
235
+ extent: (_layer$getExtent = layer.getExtent) === null || _layer$getExtent === void 0 ? void 0 : _layer$getExtent.call(layer)
236
+ };
237
+ if (layer instanceof _Vector["default"]) {
238
+ var clonedLayer = new _Vector["default"](_objectSpread(_objectSpread({}, common), {}, {
239
+ source: cloneVectorSource(layer.getSource()),
240
+ style: layer.getStyle()
241
+ }));
242
+ clonedLayer.set('__sheetPrintClone', true);
243
+ return clonedLayer;
244
+ }
245
+ if (layer instanceof _Tile["default"]) {
246
+ var _clonedLayer = new _Tile["default"](_objectSpread(_objectSpread({}, common), {}, {
247
+ source: layer.getSource()
248
+ }));
249
+ _clonedLayer.set('__sheetPrintClone', true);
250
+ return _clonedLayer;
251
+ }
252
+ if (layer instanceof _Image["default"]) {
253
+ var _clonedLayer2 = new _Image["default"](_objectSpread(_objectSpread({}, common), {}, {
254
+ source: layer.getSource()
255
+ }));
256
+ _clonedLayer2.set('__sheetPrintClone', true);
257
+ return _clonedLayer2;
258
+ }
259
+ return null;
260
+ };
261
+ var clearClonedLayers = function clearClonedLayers(mapInstance) {
262
+ if (!mapInstance) {
263
+ return;
264
+ }
265
+ mapInstance.getLayers().getArray().filter(function (layer) {
266
+ return layer.get('__sheetPrintClone');
267
+ }).forEach(function (layer) {
268
+ return mapInstance.removeLayer(layer);
269
+ });
270
+ };
271
+
272
+ // 隐藏导出地图和主地图不是同一个实例,所以需要把当前可见业务图层同步过去。
273
+ var syncBusinessLayers = function syncBusinessLayers(sourceMap, targetMap, excludeLayer) {
274
+ if (!sourceMap || !targetMap) {
275
+ return;
276
+ }
277
+ clearClonedLayers(targetMap);
278
+ sourceMap.getLayers().getArray().filter(function (layer) {
279
+ var _layer$getVisible2;
280
+ if (layer === excludeLayer) {
281
+ return false;
282
+ }
283
+ if (!(layer !== null && layer !== void 0 && (_layer$getVisible2 = layer.getVisible) !== null && _layer$getVisible2 !== void 0 && _layer$getVisible2.call(layer))) {
284
+ return false;
285
+ }
286
+ if (layer.get('key') === 'Highlight') {
287
+ return false;
288
+ }
289
+ if (layer.get('key') === '__TDT_TILE' || layer.get('key') === '__TDT_MARK') {
290
+ return false;
291
+ }
292
+ return true;
293
+ }).forEach(function (layer) {
294
+ var clonedLayer = cloneLayer(layer);
295
+ if (clonedLayer) {
296
+ targetMap.addLayer(clonedLayer);
297
+ }
298
+ });
299
+ };
300
+ var waitNextFrame = function waitNextFrame() {
301
+ return new Promise(function (resolve) {
302
+ requestAnimationFrame(function () {
303
+ requestAnimationFrame(resolve);
304
+ });
305
+ });
306
+ };
307
+ var waitMapRender = function waitMapRender(mapInstance) {
308
+ return new Promise(function (resolve) {
309
+ var _mapInstance$renderSy;
310
+ if (!mapInstance) {
311
+ resolve();
312
+ return;
313
+ }
314
+ var done = false;
315
+ var finish = function finish() {
316
+ if (done) {
317
+ return;
318
+ }
319
+ done = true;
320
+ resolve();
321
+ };
322
+ mapInstance.once('rendercomplete', finish);
323
+ setTimeout(finish, 600);
324
+ (_mapInstance$renderSy = mapInstance.renderSync) === null || _mapInstance$renderSy === void 0 || _mapInstance$renderSy.call(mapInstance);
325
+ });
326
+ };
327
+
328
+ // 业务图层经常是 WMS/WFS 异步请求,rendercomplete 加上固定 600ms 还不够稳。
329
+ // 这里额外等待图层 source 进入一段“空闲期”后再截图,避免外面图层还在加载时就提前截空白图。
330
+ var waitLayerSourcesSettled = function waitLayerSourcesSettled(mapInstance) {
331
+ var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4000;
332
+ return new Promise(function (resolve) {
333
+ var _mapInstance$renderSy3;
334
+ if (!mapInstance) {
335
+ resolve();
336
+ return;
337
+ }
338
+ var disposers = [];
339
+ var pending = 0;
340
+ var done = false;
341
+ var idleTimer = null;
342
+ var finish = function finish() {
343
+ if (done) {
344
+ return;
345
+ }
346
+ done = true;
347
+ if (idleTimer) {
348
+ clearTimeout(idleTimer);
349
+ }
350
+ disposers.forEach(function (dispose) {
351
+ return dispose();
352
+ });
353
+ resolve();
354
+ };
355
+ var scheduleFinish = function scheduleFinish(delay) {
356
+ if (idleTimer) {
357
+ clearTimeout(idleTimer);
358
+ }
359
+ idleTimer = setTimeout(function () {
360
+ if (pending <= 0) {
361
+ finish();
362
+ }
363
+ }, delay);
364
+ };
365
+ var onStart = function onStart() {
366
+ pending += 1;
367
+ if (idleTimer) {
368
+ clearTimeout(idleTimer);
369
+ idleTimer = null;
370
+ }
371
+ };
372
+ var onEnd = function onEnd() {
373
+ pending = Math.max(0, pending - 1);
374
+ if (pending === 0) {
375
+ scheduleFinish(250);
376
+ }
377
+ };
378
+ var bind = function bind(target, type, handler) {
379
+ if (!(target !== null && target !== void 0 && target.on)) {
380
+ return;
381
+ }
382
+ target.on(type, handler);
383
+ disposers.push(function () {
384
+ var _target$un;
385
+ return (_target$un = target.un) === null || _target$un === void 0 ? void 0 : _target$un.call(target, type, handler);
386
+ });
387
+ };
388
+ mapInstance.getLayers().getArray().filter(function (layer) {
389
+ return layer.get('__sheetPrintClone');
390
+ }).forEach(function (layer) {
391
+ var _layer$getSource;
392
+ var source = (_layer$getSource = layer.getSource) === null || _layer$getSource === void 0 ? void 0 : _layer$getSource.call(layer);
393
+ if (!source) {
394
+ return;
395
+ }
396
+ ['tileloadstart', 'imageloadstart', 'featuresloadstart', 'vectorloadstart'].forEach(function (type) {
397
+ return bind(source, type, onStart);
398
+ });
399
+ ['tileloadend', 'tileloaderror', 'imageloadend', 'imageloaderror', 'featuresloadend', 'featuresloaderror', 'vectorloadend', 'vectorloaderror'].forEach(function (type) {
400
+ return bind(source, type, onEnd);
401
+ });
402
+
403
+ // 业务 ImageLayer 第一次进入预览时,经常是 source 已经创建但首张 WMS 图还没真正画进地图。
404
+ // 这里额外盯一下当前 image state,等它从 idle/loading 走到可用状态后再继续截图。
405
+ if (layer instanceof _ImageLayer["default"] && typeof source.getImage === 'function') {
406
+ var _mapInstance$getView, _mapInstance$getSize, _view$calculateExtent, _view$getResolution, _view$getProjection, _image$getState;
407
+ var view = (_mapInstance$getView = mapInstance.getView) === null || _mapInstance$getView === void 0 ? void 0 : _mapInstance$getView.call(mapInstance);
408
+ var size = (_mapInstance$getSize = mapInstance.getSize) === null || _mapInstance$getSize === void 0 ? void 0 : _mapInstance$getSize.call(mapInstance);
409
+ var extent = view === null || view === void 0 || (_view$calculateExtent = view.calculateExtent) === null || _view$calculateExtent === void 0 ? void 0 : _view$calculateExtent.call(view, size);
410
+ var resolution = view === null || view === void 0 || (_view$getResolution = view.getResolution) === null || _view$getResolution === void 0 ? void 0 : _view$getResolution.call(view);
411
+ var projection = view === null || view === void 0 || (_view$getProjection = view.getProjection) === null || _view$getProjection === void 0 ? void 0 : _view$getProjection.call(view);
412
+ var image = extent && resolution && projection ? source.getImage(extent, resolution, 1, projection) : null;
413
+ var imageState = image === null || image === void 0 || (_image$getState = image.getState) === null || _image$getState === void 0 ? void 0 : _image$getState.call(image);
414
+ if (image && (imageState === 0 || imageState === 1)) {
415
+ var _image$on;
416
+ onStart();
417
+ var _handleImageChange = function handleImageChange() {
418
+ var _image$getState2, _image$un, _mapInstance$renderSy2;
419
+ var nextState = (_image$getState2 = image.getState) === null || _image$getState2 === void 0 ? void 0 : _image$getState2.call(image);
420
+ if (nextState === 0 || nextState === 1) {
421
+ return;
422
+ }
423
+ (_image$un = image.un) === null || _image$un === void 0 || _image$un.call(image, 'change', _handleImageChange);
424
+ onEnd();
425
+ (_mapInstance$renderSy2 = mapInstance.renderSync) === null || _mapInstance$renderSy2 === void 0 || _mapInstance$renderSy2.call(mapInstance);
426
+ };
427
+ (_image$on = image.on) === null || _image$on === void 0 || _image$on.call(image, 'change', _handleImageChange);
428
+ disposers.push(function () {
429
+ var _image$un2;
430
+ return (_image$un2 = image.un) === null || _image$un2 === void 0 ? void 0 : _image$un2.call(image, 'change', _handleImageChange);
431
+ });
432
+ if (imageState === 0 && image.load) {
433
+ image.load();
434
+ }
435
+ }
436
+ }
437
+ });
438
+ scheduleFinish(500);
439
+ setTimeout(finish, timeout);
440
+ (_mapInstance$renderSy3 = mapInstance.renderSync) === null || _mapInstance$renderSy3 === void 0 || _mapInstance$renderSy3.call(mapInstance);
441
+ });
442
+ };
443
+ var parseCanvasTransform = function parseCanvasTransform(canvas) {
444
+ var transformText = canvas.style.transform || window.getComputedStyle(canvas).transform || '';
445
+ var match = transformText.match(/^matrix\(([^)]+)\)$/);
446
+ if (!match) {
447
+ return [1, 0, 0, 1, 0, 0];
448
+ }
449
+ return match[1].split(',').map(function (item) {
450
+ return Number(item.trim());
451
+ }).filter(function (item) {
452
+ return Number.isFinite(item);
453
+ });
454
+ };
455
+ var snapdomPromise = null;
456
+ var dynamicImport = function dynamicImport(specifier) {
457
+ return new Function('s', 'return import(s)')(specifier);
458
+ };
459
+ var getSnapdom = /*#__PURE__*/function () {
460
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
461
+ return _regenerator().w(function (_context) {
462
+ while (1) switch (_context.n) {
463
+ case 0:
464
+ if (!snapdomPromise) {
465
+ snapdomPromise = dynamicImport('@zumer/snapdom').then(function (mod) {
466
+ return mod.snapdom;
467
+ });
468
+ }
469
+ return _context.a(2, snapdomPromise);
470
+ }
471
+ }, _callee);
472
+ }));
473
+ return function getSnapdom() {
474
+ return _ref2.apply(this, arguments);
475
+ };
476
+ }();
477
+
478
+ // 优先直接合成 OpenLayers 实际渲染出来的各层 canvas,
479
+ // 避免 html2canvas 再截图 DOM 时把地图细节压糊。
480
+ var captureDomCanvas = /*#__PURE__*/function () {
481
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(dom, width, height) {
482
+ var canvas, ctx, layerCanvases, snapdom, snapshot;
483
+ return _regenerator().w(function (_context2) {
484
+ while (1) switch (_context2.n) {
485
+ case 0:
486
+ canvas = document.createElement('canvas');
487
+ canvas.width = Math.max(1, Math.round(width));
488
+ canvas.height = Math.max(1, Math.round(height));
489
+ ctx = canvas.getContext('2d');
490
+ ctx.fillStyle = '#fff';
491
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
492
+ layerCanvases = Array.from(dom.querySelectorAll('.ol-layer canvas, canvas.ol-layer, canvas')).filter(function (item) {
493
+ return item.width > 0 && item.height > 0;
494
+ });
495
+ if (!layerCanvases.length) {
496
+ _context2.n = 1;
497
+ break;
498
+ }
499
+ layerCanvases.forEach(function (layerCanvas) {
500
+ var parentStyle = window.getComputedStyle(layerCanvas.parentElement || layerCanvas);
501
+ var canvasStyle = window.getComputedStyle(layerCanvas);
502
+ var opacity = Number(parentStyle.opacity || canvasStyle.opacity || 1);
503
+ var transform = parseCanvasTransform(layerCanvas);
504
+ var backgroundColor = parentStyle.backgroundColor;
505
+ ctx.save();
506
+ ctx.globalAlpha = Number.isFinite(opacity) ? opacity : 1;
507
+ if (backgroundColor && backgroundColor !== 'rgba(0, 0, 0, 0)' && backgroundColor !== 'transparent') {
508
+ ctx.fillStyle = backgroundColor;
509
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
510
+ }
511
+ if (transform.length === 6) {
512
+ ctx.setTransform.apply(ctx, _toConsumableArray(transform));
513
+ } else {
514
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
515
+ }
516
+ ctx.drawImage(layerCanvas, 0, 0);
517
+ ctx.restore();
518
+ });
519
+ return _context2.a(2, canvas);
520
+ case 1:
521
+ _context2.n = 2;
522
+ return getSnapdom();
523
+ case 2:
524
+ snapdom = _context2.v;
525
+ _context2.n = 3;
526
+ return snapdom.toCanvas(dom, {
527
+ scale: 1,
528
+ backgroundColor: '#ffffff'
529
+ });
530
+ case 3:
531
+ snapshot = _context2.v;
532
+ // const snapshot = await snapdom.toCanvas(dom, {
533
+ // scale: 1,
534
+ // backgroundColor: '#ffffff',
535
+ // });
536
+ ctx.drawImage(snapshot, 0, 0, canvas.width, canvas.height);
537
+ return _context2.a(2, canvas);
538
+ }
539
+ }, _callee2);
540
+ }));
541
+ return function captureDomCanvas(_x, _x2, _x3) {
542
+ return _ref3.apply(this, arguments);
543
+ };
544
+ }();
545
+ var loadImage = function loadImage(src) {
546
+ return new Promise(function (resolve, reject) {
547
+ var img = new Image();
548
+ img.onload = function () {
549
+ return resolve(img);
550
+ };
551
+ img.onerror = reject;
552
+ img.src = src;
553
+ });
554
+ };
555
+ var createPdfFromImages = function createPdfFromImages(_ref4) {
556
+ var images = _ref4.images,
557
+ pageWidthMm = _ref4.pageWidthMm,
558
+ pageHeightMm = _ref4.pageHeightMm,
559
+ title = _ref4.title;
560
+ if (!(images !== null && images !== void 0 && images.length)) {
561
+ return;
562
+ }
563
+ var orientation = pageWidthMm > pageHeightMm ? 'landscape' : 'portrait';
564
+ var pdf = new _jspdf.jsPDF({
565
+ orientation: orientation,
566
+ unit: 'mm',
567
+ format: [pageWidthMm, pageHeightMm],
568
+ compress: true
569
+ });
570
+ images.forEach(function (item, index) {
571
+ if (index > 0) {
572
+ pdf.addPage([pageWidthMm, pageHeightMm], orientation);
573
+ }
574
+ pdf.addImage(item.url, 'PNG', 0, 0, pageWidthMm, pageHeightMm, undefined, 'FAST');
575
+ });
576
+ pdf.save(decodeURIComponent("".concat(title || 'map-sheet-print', ".pdf")));
577
+ };
578
+ function _default(props) {
579
+ var _splitPlan$sheets2;
580
+ var _onClose = props.onClose;
581
+ var _useProps = (0, _useProps2["default"])(),
582
+ map = _useProps.map,
583
+ TextEnum = _useProps.TextEnum;
584
+ var _Form$useForm = _antd.Form.useForm(),
585
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
586
+ form = _Form$useForm2[0];
587
+ var _useState = (0, _react.useState)(false),
588
+ _useState2 = _slicedToArray(_useState, 2),
589
+ previewVisible = _useState2[0],
590
+ setPreviewVisible = _useState2[1];
591
+ var _useState3 = (0, _react.useState)(false),
592
+ _useState4 = _slicedToArray(_useState3, 2),
593
+ sheetVisible = _useState4[0],
594
+ setSheetVisible = _useState4[1];
595
+ var _useState5 = (0, _react.useState)({}),
596
+ _useState6 = _slicedToArray(_useState5, 2),
597
+ formVal = _useState6[0],
598
+ setFormVal = _useState6[1];
599
+ var _useState7 = (0, _react.useState)('A4'),
600
+ _useState8 = _slicedToArray(_useState7, 2),
601
+ pageSizeValue = _useState8[0],
602
+ setPageSizeValue = _useState8[1];
603
+ var _useState9 = (0, _react.useState)(0),
604
+ _useState0 = _slicedToArray(_useState9, 2),
605
+ overlapMarginValue = _useState0[0],
606
+ setOverlapMarginValue = _useState0[1];
607
+ var _useState1 = (0, _react.useState)(null),
608
+ _useState10 = _slicedToArray(_useState1, 2),
609
+ metrics = _useState10[0],
610
+ setMetrics = _useState10[1];
611
+ var _useState11 = (0, _react.useState)(null),
612
+ _useState12 = _slicedToArray(_useState11, 2),
613
+ totalWidthMm = _useState12[0],
614
+ setTotalWidthMm = _useState12[1];
615
+ var _useState13 = (0, _react.useState)(null),
616
+ _useState14 = _slicedToArray(_useState13, 2),
617
+ totalHeightMm = _useState14[0],
618
+ setTotalHeightMm = _useState14[1];
619
+ var _useState15 = (0, _react.useState)(false),
620
+ _useState16 = _slicedToArray(_useState15, 2),
621
+ previewReady = _useState16[0],
622
+ setPreviewReady = _useState16[1];
623
+ var _useState17 = (0, _react.useState)(TextEnum.generatingPreviewText),
624
+ _useState18 = _slicedToArray(_useState17, 2),
625
+ previewLoadingText = _useState18[0],
626
+ setPreviewLoadingText = _useState18[1];
627
+ var _useState19 = (0, _react.useState)(''),
628
+ _useState20 = _slicedToArray(_useState19, 2),
629
+ previewImage = _useState20[0],
630
+ setPreviewImage = _useState20[1];
631
+ var _useState21 = (0, _react.useState)([]),
632
+ _useState22 = _slicedToArray(_useState21, 2),
633
+ sheetImages = _useState22[0],
634
+ setSheetImages = _useState22[1];
635
+ var _useState23 = (0, _react.useState)([]),
636
+ _useState24 = _slicedToArray(_useState23, 2),
637
+ selectedSheetIds = _useState24[0],
638
+ setSelectedSheetIds = _useState24[1];
639
+ var _useState25 = (0, _react.useState)(false),
640
+ _useState26 = _slicedToArray(_useState25, 2),
641
+ generating = _useState26[0],
642
+ setGenerating = _useState26[1];
643
+ var drawTool = (0, _react.useRef)(null);
644
+ var boxExtentRef = (0, _react.useRef)(null);
645
+ var boxLayerRef = (0, _react.useRef)(null);
646
+ var exportMapRef = (0, _react.useRef)(null);
647
+ var previewMapRef = (0, _react.useRef)(null);
648
+ var exportStageRef = (0, _react.useRef)(null);
649
+ var previewMasterCanvasRef = (0, _react.useRef)(null);
650
+ var previewMasterFramePixelsRef = (0, _react.useRef)(null);
651
+ var cleanupInternalMaps = function cleanupInternalMaps() {
652
+ if (previewRenderTimerRef.current) {
653
+ clearTimeout(previewRenderTimerRef.current);
654
+ previewRenderTimerRef.current = null;
655
+ }
656
+ clearClonedLayers(exportMapRef.current);
657
+ clearClonedLayers(previewMapRef.current);
658
+ renderLayersSyncedRef.current = false;
659
+ };
660
+ var renderLayersSyncedRef = (0, _react.useRef)(false);
661
+ var previewRenderSeqRef = (0, _react.useRef)(0);
662
+ var previewRenderTimerRef = (0, _react.useRef)(null);
663
+ var _useState27 = (0, _react.useState)({
664
+ width: 1,
665
+ height: 1
666
+ }),
667
+ _useState28 = _slicedToArray(_useState27, 2),
668
+ exportSize = _useState28[0],
669
+ setExportSize = _useState28[1];
670
+ (0, _react.useEffect)(function () {
671
+ form.setFieldsValue({
672
+ range: '1',
673
+ pageSize: 'A4',
674
+ overlapMargin: 0
675
+ });
676
+ }, []);
677
+ (0, _react.useEffect)(function () {
678
+ var boxSource = new _Vector2["default"]();
679
+ var boxLayer = new _Vector["default"]({
680
+ source: boxSource,
681
+ style: (0, _Draw2.drawStyle)(),
682
+ zIndex: 9999
683
+ });
684
+ var tool = new _interaction.Draw({
685
+ source: boxSource,
686
+ type: 'Circle',
687
+ style: function style(feature) {
688
+ return (0, _Draw2.drawStyle)(feature);
689
+ },
690
+ geometryFunction: (0, _Draw.createBox)()
691
+ });
692
+ boxLayerRef.current = boxLayer;
693
+ drawTool.current = tool;
694
+ tool.setActive(false);
695
+ tool.on('drawstart', function () {
696
+ boxSource.clear();
697
+ map.showTip(TextEnum.clickAgainToEnd);
698
+ });
699
+ tool.on('drawend', function (event) {
700
+ var extent = event.feature.getGeometry().getExtent();
701
+ boxExtentRef.current = extent;
702
+ map.showTip(TextEnum.leftClickToStart);
703
+ map.getView().fit(extent, {
704
+ duration: 500
705
+ });
706
+ });
707
+ map.addLayer(boxLayer);
708
+ map.addInteraction(tool);
709
+ return function () {
710
+ if (previewRenderTimerRef.current) {
711
+ clearTimeout(previewRenderTimerRef.current);
712
+ }
713
+ boxSource.clear();
714
+ map.removeLayer(boxLayer);
715
+ map.removeInteraction(tool);
716
+ map.hideTip();
717
+ };
718
+ }, []);
719
+ var splitPlan = (0, _react.useMemo)(function () {
720
+ return calcSplitPlan({
721
+ totalWidthMm: totalWidthMm,
722
+ totalHeightMm: totalHeightMm,
723
+ pageSize: pageSizeValue,
724
+ overlapMargin: overlapMarginValue
725
+ });
726
+ }, [totalWidthMm, totalHeightMm, pageSizeValue, overlapMarginValue]);
727
+ var previewFrameExtent = (0, _react.useMemo)(function () {
728
+ return buildPreviewFrameExtent(splitPlan, metrics === null || metrics === void 0 ? void 0 : metrics.extent);
729
+ }, [splitPlan, metrics === null || metrics === void 0 ? void 0 : metrics.extent]);
730
+ var mapProjection = (0, _react.useMemo)(function () {
731
+ try {
732
+ var _map$getView, _map$getView$getProje, _map$getView$getProje2;
733
+ return (map === null || map === void 0 || (_map$getView = map.getView) === null || _map$getView === void 0 || (_map$getView = _map$getView.call(map)) === null || _map$getView === void 0 || (_map$getView$getProje = _map$getView.getProjection) === null || _map$getView$getProje === void 0 || (_map$getView$getProje = _map$getView$getProje.call(_map$getView)) === null || _map$getView$getProje === void 0 || (_map$getView$getProje2 = _map$getView$getProje.getCode) === null || _map$getView$getProje2 === void 0 ? void 0 : _map$getView$getProje2.call(_map$getView$getProje)) || 'EPSG:4326';
734
+ } catch (error) {
735
+ return 'EPSG:4326';
736
+ }
737
+ }, [map]);
738
+ var inheritedMapProps = (0, _react.useMemo)(function () {
739
+ var baseLayerParams = (map === null || map === void 0 ? void 0 : map.baseLayerParams) || {};
740
+ return {
741
+ projection: mapProjection,
742
+ mapStyle: baseLayerParams.mapStyle,
743
+ baseMapStyle: baseLayerParams.baseMapStyle,
744
+ dark: baseLayerParams.dark,
745
+ tk: (map === null || map === void 0 ? void 0 : map.tk) || baseLayerParams.tk || '1adbb6e47668cb33757cd799548bf1f4'
746
+ };
747
+ }, [map, mapProjection]);
748
+
749
+ // 预览里的“单张纸大小”应该只由纸张尺寸本身决定,
750
+ // 不应该因为修改总宽高而把 A4/A3 的纸张框一起缩放掉。
751
+ var previewScale = (0, _react.useMemo)(function () {
752
+ if (!(splitPlan !== null && splitPlan !== void 0 && splitPlan.paperWidthMm) || !(splitPlan !== null && splitPlan !== void 0 && splitPlan.paperHeightMm)) {
753
+ return 1;
754
+ }
755
+ var scaleX = splitPlan.paperWidthMm / PREVIEW_WIDTH;
756
+ var scaleY = splitPlan.paperHeightMm / PREVIEW_HEIGHT;
757
+ return Math.max(scaleX, scaleY, 0.0001);
758
+ }, [splitPlan]);
759
+ var selectedMapPixels = (0, _react.useMemo)(function () {
760
+ if (!totalWidthMm || !totalHeightMm || !previewScale) {
761
+ return null;
762
+ }
763
+ return {
764
+ width: Math.max(1, totalWidthMm / previewScale),
765
+ height: Math.max(1, totalHeightMm / previewScale)
766
+ };
767
+ }, [totalWidthMm, totalHeightMm, previewScale]);
768
+ var previewFramePixels = (0, _react.useMemo)(function () {
769
+ var frameSizeMm = getPreviewFrameSizeMm(splitPlan);
770
+ if (!frameSizeMm || !previewScale) {
771
+ return null;
772
+ }
773
+ return {
774
+ width: Math.max(1, frameSizeMm.width / previewScale),
775
+ height: Math.max(1, frameSizeMm.height / previewScale)
776
+ };
777
+ }, [splitPlan, previewScale]);
778
+ var selectedRangeCoverage = (0, _react.useMemo)(function () {
779
+ var frameSizeMm = getPreviewFrameSizeMm(splitPlan);
780
+ if (!frameSizeMm || !totalWidthMm || !totalHeightMm) {
781
+ return null;
782
+ }
783
+ return {
784
+ widthPercent: totalWidthMm / frameSizeMm.width * 100,
785
+ heightPercent: totalHeightMm / frameSizeMm.height * 100
786
+ };
787
+ }, [splitPlan, totalWidthMm, totalHeightMm]);
788
+ (0, _react.useEffect)(function () {
789
+ if (splitPlan) {
790
+ setSelectedSheetIds(splitPlan.sheets.map(function (item) {
791
+ return item.id;
792
+ }));
793
+ }
794
+ }, [splitPlan]);
795
+ var handleRangeChange = function handleRangeChange(value) {
796
+ var _drawTool$current;
797
+ if (value === '1') {
798
+ var _boxLayerRef$current;
799
+ map.hideTip();
800
+ (_boxLayerRef$current = boxLayerRef.current) === null || _boxLayerRef$current === void 0 || (_boxLayerRef$current = _boxLayerRef$current.getSource()) === null || _boxLayerRef$current === void 0 || _boxLayerRef$current.clear();
801
+ boxExtentRef.current = null;
802
+ } else {
803
+ map.showTip(TextEnum.leftClickToStart);
804
+ }
805
+ (_drawTool$current = drawTool.current) === null || _drawTool$current === void 0 || _drawTool$current.setActive(value === '2');
806
+ };
807
+ var handlePageSizeChange = function handlePageSizeChange(value) {
808
+ var nextPageSize = value || 'A4';
809
+ setPageSizeValue(nextPageSize);
810
+ form.setFieldValue('pageSize', nextPageSize);
811
+ };
812
+ var handleExportMapCreated = function handleExportMapCreated(exportMap) {
813
+ exportMapRef.current = exportMap;
814
+ renderLayersSyncedRef.current = false;
815
+ };
816
+ var handlePreviewMapCreated = function handlePreviewMapCreated(previewMap) {
817
+ previewMapRef.current = previewMap;
818
+ };
819
+
820
+ // 隐藏导出地图只在第一次真正需要时补同步业务图层,
821
+ // 后面同一轮预览/导出尽量复用,避免频繁清空重建。
822
+ var ensureRenderMapLayers = function ensureRenderMapLayers() {
823
+ if (!exportMapRef.current) {
824
+ return false;
825
+ }
826
+ if (!renderLayersSyncedRef.current) {
827
+ syncBusinessLayers(map, exportMapRef.current, boxLayerRef.current);
828
+ renderLayersSyncedRef.current = true;
829
+ }
830
+ return true;
831
+ };
832
+ var syncPreviewMapLayers = function syncPreviewMapLayers() {
833
+ if (!previewMapRef.current) {
834
+ return false;
835
+ }
836
+ syncBusinessLayers(map, previewMapRef.current, boxLayerRef.current);
837
+ return true;
838
+ };
839
+
840
+ // 点击“执行分幅”时,直接读取外部主地图当前层级,
841
+ // 也就是“外面地图是什么层级,进去就按什么层级算”。
842
+ var handleSubmit = function handleSubmit(values) {
843
+ var _values$overlapMargin, _map$getView$getZoom, _map$getView2;
844
+ var pageSize = values.pageSize || form.getFieldValue('pageSize');
845
+ var overlapMargin = Number((_values$overlapMargin = values.overlapMargin) !== null && _values$overlapMargin !== void 0 ? _values$overlapMargin : form.getFieldValue('overlapMargin')) || 0;
846
+ // const overlapMargin = 10
847
+
848
+ console.log('overlapMargin', values.overlapMargin, form.getFieldValue('overlapMargin'), overlapMargin);
849
+ var extent = values.range === '1' ? map.getView().calculateExtent(map.getSize()) : boxExtentRef.current;
850
+ if (!isValidExtent(extent)) {
851
+ return;
852
+ }
853
+ var zoom = Math.round(((_map$getView$getZoom = (_map$getView2 = map.getView()).getZoom) === null || _map$getView$getZoom === void 0 ? void 0 : _map$getView$getZoom.call(_map$getView2)) || 0);
854
+ var nextMetrics = calcMetricsFromZoom(extent, map.getView(), zoom);
855
+ if (!nextMetrics) {
856
+ return;
857
+ }
858
+ console.log('[MapSheetPrint] 执行分幅参数', {
859
+ rangeMode: values.range,
860
+ extent: extent,
861
+ zoom: zoom,
862
+ pageSize: pageSize,
863
+ overlapMargin: overlapMargin,
864
+ metrics: {
865
+ geoWidth: nextMetrics.geoWidth,
866
+ geoHeight: nextMetrics.geoHeight,
867
+ pixelWidth: nextMetrics.pixelWidth,
868
+ pixelHeight: nextMetrics.pixelHeight,
869
+ widthMm: nextMetrics.widthMm,
870
+ heightMm: nextMetrics.heightMm,
871
+ ratio: nextMetrics.ratio
872
+ }
873
+ });
874
+ setFormVal(_objectSpread(_objectSpread({}, values), {}, {
875
+ pageSize: pageSize,
876
+ overlapMargin: overlapMargin,
877
+ printZoom: zoom
878
+ }));
879
+ setPageSizeValue(pageSize);
880
+ setOverlapMarginValue(overlapMargin);
881
+ setMetrics(nextMetrics);
882
+ setTotalWidthMm(Number(nextMetrics.widthMm.toFixed(3)));
883
+ setTotalHeightMm(Number(nextMetrics.heightMm.toFixed(3)));
884
+ setPreviewReady(false);
885
+ setPreviewLoadingText(TextEnum.generatingPreviewText);
886
+ setPreviewImage('');
887
+ previewMasterCanvasRef.current = null;
888
+ previewMasterFramePixelsRef.current = null;
889
+ renderLayersSyncedRef.current = false;
890
+ setSheetImages([]);
891
+ setSheetVisible(false);
892
+ setPreviewVisible(true);
893
+ };
894
+ var handleWidthChange = function handleWidthChange(value) {
895
+ if (!metrics || !value) {
896
+ return;
897
+ }
898
+ var nextWidth = Number(value);
899
+ setTotalWidthMm(nextWidth);
900
+ setTotalHeightMm(Number((nextWidth * metrics.ratio).toFixed(3)));
901
+ };
902
+ var handleHeightChange = function handleHeightChange(value) {
903
+ if (!metrics || !value) {
904
+ return;
905
+ }
906
+ var nextHeight = Number(value);
907
+ setTotalHeightMm(nextHeight);
908
+ setTotalWidthMm(Number((nextHeight / metrics.ratio).toFixed(3)));
909
+ };
910
+ var renderSheetImage = /*#__PURE__*/function () {
911
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(sheet) {
912
+ var previewMasterCanvas, previewMasterFramePixels, frameSizeMm, frameTotalWidthMm, frameTotalHeightMm, sourceX, sourceY, sourceWidth, sourceHeight, pageWidthPx, pageHeightPx, pageCanvas, ctx;
913
+ return _regenerator().w(function (_context3) {
914
+ while (1) switch (_context3.n) {
915
+ case 0:
916
+ if (!(!splitPlan || !previewMasterCanvasRef.current || !previewMasterFramePixelsRef.current)) {
917
+ _context3.n = 1;
918
+ break;
919
+ }
920
+ return _context3.a(2, null);
921
+ case 1:
922
+ previewMasterCanvas = previewMasterCanvasRef.current;
923
+ previewMasterFramePixels = previewMasterFramePixelsRef.current;
924
+ frameSizeMm = getPreviewFrameSizeMm(splitPlan);
925
+ frameTotalWidthMm = frameSizeMm.width;
926
+ frameTotalHeightMm = frameSizeMm.height;
927
+ sourceX = sheet.xMm / frameTotalWidthMm * previewMasterFramePixels.width;
928
+ sourceY = sheet.yMm / frameTotalHeightMm * previewMasterFramePixels.height;
929
+ sourceWidth = splitPlan.paperWidthMm / frameTotalWidthMm * previewMasterFramePixels.width;
930
+ sourceHeight = splitPlan.paperHeightMm / frameTotalHeightMm * previewMasterFramePixels.height;
931
+ pageWidthPx = Math.max(1, Math.round(mmToPx(splitPlan.paperWidthMm, EXPORT_DPI)));
932
+ pageHeightPx = Math.max(1, Math.round(mmToPx(splitPlan.paperHeightMm, EXPORT_DPI)));
933
+ console.log('[MapSheetPrint] 生成单张图幅', {
934
+ sheetId: sheet.id,
935
+ sheetIndex: sheet.index,
936
+ sheetWidthMm: sheet.widthMm,
937
+ sheetHeightMm: sheet.heightMm,
938
+ sourceX: sourceX,
939
+ sourceY: sourceY,
940
+ sourceWidth: sourceWidth,
941
+ sourceHeight: sourceHeight,
942
+ pageWidthPx: pageWidthPx,
943
+ pageHeightPx: pageHeightPx
944
+ });
945
+ pageCanvas = document.createElement('canvas');
946
+ pageCanvas.width = pageWidthPx;
947
+ pageCanvas.height = pageHeightPx;
948
+ ctx = pageCanvas.getContext('2d');
949
+ ctx.fillStyle = '#fff';
950
+ ctx.fillRect(0, 0, pageWidthPx, pageHeightPx);
951
+ ctx.drawImage(previewMasterCanvas, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, pageWidthPx, pageHeightPx);
952
+ return _context3.a(2, _objectSpread(_objectSpread({}, sheet), {}, {
953
+ url: pageCanvas.toDataURL('image/png'),
954
+ pixelWidth: pageWidthPx,
955
+ pixelHeight: pageHeightPx
956
+ }));
957
+ }
958
+ }, _callee3);
959
+ }));
960
+ return function renderSheetImage(_x4) {
961
+ return _ref5.apply(this, arguments);
962
+ };
963
+ }();
964
+
965
+ // 预览始终裁同一个原始 extent。
966
+ // 宽高变大时,不改 extent,而是先把隐藏地图按更大的像素尺寸重新渲染,
967
+ // 相当于“放大地图层级”,再把同一个 extent 裁成预览图。
968
+ var renderPreviewImage = /*#__PURE__*/function () {
969
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(seq) {
970
+ var _exportMapRef$current, _exportMapRef$current2;
971
+ var widthScale, heightScale, captureWidthPx, captureHeightPx, targetResolution, targetCenter, view, _previewMapRef$curren, _previewMapRef$curren2, previewView, sourceCanvas, previewCanvas, masterScaleX, masterScaleY, previewMasterCanvas, masterCtx, ctx;
972
+ return _regenerator().w(function (_context4) {
973
+ while (1) switch (_context4.n) {
974
+ case 0:
975
+ if (!(!previewVisible || !(metrics !== null && metrics !== void 0 && metrics.extent) || !selectedMapPixels || !previewFramePixels || !exportMapRef.current || !exportStageRef.current)) {
976
+ _context4.n = 1;
977
+ break;
978
+ }
979
+ return _context4.a(2);
980
+ case 1:
981
+ widthScale = totalWidthMm / metrics.widthMm;
982
+ heightScale = totalHeightMm / metrics.heightMm;
983
+ captureWidthPx = Math.max(1, Math.round(metrics.pixelWidth * widthScale));
984
+ captureHeightPx = Math.max(1, Math.round(metrics.pixelHeight * heightScale));
985
+ targetResolution = Math.max(metrics.geoWidth / captureWidthPx, metrics.geoHeight / captureHeightPx);
986
+ targetCenter = getExtentCenter(metrics.extent);
987
+ console.log('[MapSheetPrint] 生成预览裁图', {
988
+ seq: seq,
989
+ extent: metrics.extent,
990
+ zoom: metrics.zoom,
991
+ totalWidthMm: totalWidthMm,
992
+ totalHeightMm: totalHeightMm,
993
+ previewScale: previewScale,
994
+ previewFrameExtent: previewFrameExtent,
995
+ previewFramePixels: previewFramePixels,
996
+ selectedMapPixels: selectedMapPixels,
997
+ captureWidthPx: captureWidthPx,
998
+ captureHeightPx: captureHeightPx,
999
+ targetResolution: targetResolution,
1000
+ targetCenter: targetCenter,
1001
+ splitPlan: splitPlan ? {
1002
+ cols: splitPlan.cols,
1003
+ rows: splitPlan.rows,
1004
+ totalSheets: splitPlan.totalSheets,
1005
+ paperWidthMm: splitPlan.paperWidthMm,
1006
+ paperHeightMm: splitPlan.paperHeightMm,
1007
+ stepX: splitPlan.stepX,
1008
+ stepY: splitPlan.stepY
1009
+ } : null
1010
+ });
1011
+ setPreviewReady(false);
1012
+ setPreviewLoadingText(TextEnum.syncingLayersText);
1013
+ _context4.n = 2;
1014
+ return waitNextFrame();
1015
+ case 2:
1016
+ if (!(seq !== previewRenderSeqRef.current)) {
1017
+ _context4.n = 3;
1018
+ break;
1019
+ }
1020
+ return _context4.a(2);
1021
+ case 3:
1022
+ if (ensureRenderMapLayers()) {
1023
+ _context4.n = 4;
1024
+ break;
1025
+ }
1026
+ return _context4.a(2);
1027
+ case 4:
1028
+ syncPreviewMapLayers();
1029
+ setExportSize({
1030
+ width: captureWidthPx,
1031
+ height: captureHeightPx
1032
+ });
1033
+ _context4.n = 5;
1034
+ return waitNextFrame();
1035
+ case 5:
1036
+ if (!(seq !== previewRenderSeqRef.current)) {
1037
+ _context4.n = 6;
1038
+ break;
1039
+ }
1040
+ return _context4.a(2);
1041
+ case 6:
1042
+ (_exportMapRef$current = (_exportMapRef$current2 = exportMapRef.current).updateSize) === null || _exportMapRef$current === void 0 || _exportMapRef$current.call(_exportMapRef$current2);
1043
+ view = exportMapRef.current.getView();
1044
+ view.setCenter(targetCenter);
1045
+ view.setResolution(targetResolution);
1046
+ if (previewMapRef.current) {
1047
+ (_previewMapRef$curren = (_previewMapRef$curren2 = previewMapRef.current).updateSize) === null || _previewMapRef$curren === void 0 || _previewMapRef$curren.call(_previewMapRef$curren2);
1048
+ previewView = previewMapRef.current.getView();
1049
+ previewView.setCenter(targetCenter);
1050
+ previewView.setResolution(targetResolution);
1051
+ }
1052
+ _context4.n = 7;
1053
+ return waitMapRender(exportMapRef.current);
1054
+ case 7:
1055
+ setPreviewLoadingText(TextEnum.waitingBusinessLayersText);
1056
+ _context4.n = 8;
1057
+ return waitLayerSourcesSettled(exportMapRef.current);
1058
+ case 8:
1059
+ _context4.n = 9;
1060
+ return waitMapRender(exportMapRef.current);
1061
+ case 9:
1062
+ if (!previewMapRef.current) {
1063
+ _context4.n = 10;
1064
+ break;
1065
+ }
1066
+ _context4.n = 10;
1067
+ return waitMapRender(previewMapRef.current);
1068
+ case 10:
1069
+ _context4.n = 11;
1070
+ return waitNextFrame();
1071
+ case 11:
1072
+ if (!(seq !== previewRenderSeqRef.current)) {
1073
+ _context4.n = 12;
1074
+ break;
1075
+ }
1076
+ return _context4.a(2);
1077
+ case 12:
1078
+ _context4.n = 13;
1079
+ return captureDomCanvas(exportStageRef.current, captureWidthPx, captureHeightPx);
1080
+ case 13:
1081
+ sourceCanvas = _context4.v;
1082
+ if (!(seq !== previewRenderSeqRef.current)) {
1083
+ _context4.n = 14;
1084
+ break;
1085
+ }
1086
+ return _context4.a(2);
1087
+ case 14:
1088
+ previewCanvas = document.createElement('canvas');
1089
+ previewCanvas.width = Math.max(1, Math.round(previewFramePixels.width));
1090
+ previewCanvas.height = Math.max(1, Math.round(previewFramePixels.height));
1091
+ masterScaleX = captureWidthPx / Math.max(1, selectedMapPixels.width);
1092
+ masterScaleY = captureHeightPx / Math.max(1, selectedMapPixels.height);
1093
+ previewMasterCanvas = document.createElement('canvas');
1094
+ previewMasterCanvas.width = Math.max(1, Math.round(previewFramePixels.width * masterScaleX));
1095
+ previewMasterCanvas.height = Math.max(1, Math.round(previewFramePixels.height * masterScaleY));
1096
+ masterCtx = previewMasterCanvas.getContext('2d');
1097
+ masterCtx.fillStyle = '#fff';
1098
+ masterCtx.fillRect(0, 0, previewMasterCanvas.width, previewMasterCanvas.height);
1099
+ masterCtx.drawImage(sourceCanvas, 0, 0, captureWidthPx, captureHeightPx);
1100
+ previewMasterCanvasRef.current = previewMasterCanvas;
1101
+ previewMasterFramePixelsRef.current = {
1102
+ width: previewMasterCanvas.width,
1103
+ height: previewMasterCanvas.height
1104
+ };
1105
+ ctx = previewCanvas.getContext('2d');
1106
+ ctx.fillStyle = '#fff';
1107
+ ctx.fillRect(0, 0, previewCanvas.width, previewCanvas.height);
1108
+ ctx.drawImage(previewMasterCanvas, 0, 0, previewCanvas.width, previewCanvas.height);
1109
+ setPreviewImage(previewCanvas.toDataURL('image/png'));
1110
+ setPreviewReady(true);
1111
+ setPreviewLoadingText(TextEnum.generatingPreviewText);
1112
+ case 15:
1113
+ return _context4.a(2);
1114
+ }
1115
+ }, _callee4);
1116
+ }));
1117
+ return function renderPreviewImage(_x5) {
1118
+ return _ref6.apply(this, arguments);
1119
+ };
1120
+ }();
1121
+ (0, _react.useEffect)(function () {
1122
+ if (previewRenderTimerRef.current) {
1123
+ clearTimeout(previewRenderTimerRef.current);
1124
+ }
1125
+ if (!previewVisible) {
1126
+ return;
1127
+ }
1128
+ var seq = previewRenderSeqRef.current + 1;
1129
+ previewRenderSeqRef.current = seq;
1130
+ previewRenderTimerRef.current = setTimeout(function () {
1131
+ renderPreviewImage(seq);
1132
+ }, 120);
1133
+ return function () {
1134
+ if (previewRenderTimerRef.current) {
1135
+ clearTimeout(previewRenderTimerRef.current);
1136
+ }
1137
+ };
1138
+ }, [previewVisible, metrics === null || metrics === void 0 ? void 0 : metrics.extent, previewFrameExtent, previewFramePixels, selectedMapPixels, totalWidthMm, totalHeightMm]);
1139
+ (0, _react.useEffect)(function () {
1140
+ if (!previewVisible && !sheetVisible) {
1141
+ cleanupInternalMaps();
1142
+ }
1143
+ }, [previewVisible, sheetVisible]);
1144
+ (0, _react.useEffect)(function () {
1145
+ if (!splitPlan) {
1146
+ return;
1147
+ }
1148
+ console.log('[MapSheetPrint] 分幅计算结果', {
1149
+ totalWidthMm: totalWidthMm,
1150
+ totalHeightMm: totalHeightMm,
1151
+ pageSize: pageSizeValue,
1152
+ overlapMargin: overlapMarginValue,
1153
+ cols: splitPlan.cols,
1154
+ rows: splitPlan.rows,
1155
+ totalSheets: splitPlan.totalSheets,
1156
+ paperWidthMm: splitPlan.paperWidthMm,
1157
+ paperHeightMm: splitPlan.paperHeightMm,
1158
+ sheets: splitPlan.sheets.map(function (item) {
1159
+ return {
1160
+ id: item.id,
1161
+ index: item.index,
1162
+ xMm: item.xMm,
1163
+ yMm: item.yMm,
1164
+ widthMm: item.widthMm,
1165
+ heightMm: item.heightMm,
1166
+ isPartial: item.isPartial
1167
+ };
1168
+ })
1169
+ });
1170
+ }, [splitPlan, totalWidthMm, totalHeightMm, pageSizeValue, overlapMarginValue]);
1171
+ var handleGenerateSheets = /*#__PURE__*/function () {
1172
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
1173
+ var _splitPlan$sheets;
1174
+ var images, _iterator, _step, sheet, image, _t;
1175
+ return _regenerator().w(function (_context5) {
1176
+ while (1) switch (_context5.p = _context5.n) {
1177
+ case 0:
1178
+ if (splitPlan !== null && splitPlan !== void 0 && (_splitPlan$sheets = splitPlan.sheets) !== null && _splitPlan$sheets !== void 0 && _splitPlan$sheets.length) {
1179
+ _context5.n = 1;
1180
+ break;
1181
+ }
1182
+ return _context5.a(2);
1183
+ case 1:
1184
+ setGenerating(true);
1185
+ _context5.p = 2;
1186
+ images = [];
1187
+ _iterator = _createForOfIteratorHelper(splitPlan.sheets);
1188
+ _context5.p = 3;
1189
+ _iterator.s();
1190
+ case 4:
1191
+ if ((_step = _iterator.n()).done) {
1192
+ _context5.n = 7;
1193
+ break;
1194
+ }
1195
+ sheet = _step.value;
1196
+ _context5.n = 5;
1197
+ return renderSheetImage(sheet);
1198
+ case 5:
1199
+ image = _context5.v;
1200
+ if (image) {
1201
+ images.push(image);
1202
+ }
1203
+ case 6:
1204
+ _context5.n = 4;
1205
+ break;
1206
+ case 7:
1207
+ _context5.n = 9;
1208
+ break;
1209
+ case 8:
1210
+ _context5.p = 8;
1211
+ _t = _context5.v;
1212
+ _iterator.e(_t);
1213
+ case 9:
1214
+ _context5.p = 9;
1215
+ _iterator.f();
1216
+ return _context5.f(9);
1217
+ case 10:
1218
+ setSheetImages(images);
1219
+ setSelectedSheetIds(images.map(function (item) {
1220
+ return item.id;
1221
+ }));
1222
+ setPreviewVisible(false);
1223
+ setSheetVisible(true);
1224
+ case 11:
1225
+ _context5.p = 11;
1226
+ setGenerating(false);
1227
+ return _context5.f(11);
1228
+ case 12:
1229
+ return _context5.a(2);
1230
+ }
1231
+ }, _callee5, null, [[3, 8, 9, 10], [2,, 11, 12]]);
1232
+ }));
1233
+ return function handleGenerateSheets() {
1234
+ return _ref7.apply(this, arguments);
1235
+ };
1236
+ }();
1237
+ var handleExportPdf = function handleExportPdf() {
1238
+ var selectedImages = sheetImages.filter(function (item) {
1239
+ return selectedSheetIds.includes(item.id);
1240
+ });
1241
+ if (!selectedImages.length || !splitPlan) {
1242
+ return;
1243
+ }
1244
+ createPdfFromImages({
1245
+ images: selectedImages,
1246
+ pageWidthMm: splitPlan.paperWidthMm,
1247
+ pageHeightMm: splitPlan.paperHeightMm,
1248
+ title: formVal.title
1249
+ });
1250
+ };
1251
+ return /*#__PURE__*/_react["default"].createElement(_Modal["default"], {
1252
+ title: TextEnum.toolMapSheetPrint,
1253
+ onClose: function onClose() {
1254
+ cleanupInternalMaps();
1255
+ _onClose === null || _onClose === void 0 || _onClose();
1256
+ }
1257
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Form, {
1258
+ form: form,
1259
+ name: "mapSheetPrint",
1260
+ labelCol: {
1261
+ span: 8
1262
+ },
1263
+ wrapperCol: {
1264
+ span: 16
1265
+ },
1266
+ onFinish: handleSubmit
1267
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1268
+ label: TextEnum.mapPrintTitle,
1269
+ name: "title",
1270
+ rules: [{
1271
+ required: true,
1272
+ message: TextEnum.pleaseInput
1273
+ }]
1274
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Input, {
1275
+ placeholder: TextEnum.pleaseInput
1276
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1277
+ label: TextEnum.printRange,
1278
+ name: "range",
1279
+ rules: [{
1280
+ required: true,
1281
+ message: TextEnum.pleaseSelect
1282
+ }]
1283
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Select, {
1284
+ placeholder: TextEnum.pleaseSelect,
1285
+ allowClear: true,
1286
+ onChange: handleRangeChange,
1287
+ options: [{
1288
+ value: '1',
1289
+ label: TextEnum.currentView
1290
+ }, {
1291
+ value: '2',
1292
+ label: TextEnum.manualBoxSelect
1293
+ }]
1294
+ })), /*#__PURE__*/_react["default"].createElement("div", {
1295
+ style: {
1296
+ marginLeft: 12,
1297
+ marginBottom: 12,
1298
+ color: '#333',
1299
+ fontSize: 14,
1300
+ fontWeight: 500
1301
+ }
1302
+ }, TextEnum.sheetPrintParams), /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1303
+ label: TextEnum.pageSize,
1304
+ name: "pageSize",
1305
+ rules: [{
1306
+ required: true,
1307
+ message: TextEnum.pleaseSelect
1308
+ }]
1309
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Select, {
1310
+ placeholder: TextEnum.pleaseSelect,
1311
+ allowClear: true,
1312
+ onChange: handlePageSizeChange,
1313
+ options: pageSizeOptions.map(function (item) {
1314
+ return {
1315
+ value: item,
1316
+ label: item
1317
+ };
1318
+ })
1319
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1320
+ label: TextEnum.overlapMargin,
1321
+ required: true
1322
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1323
+ style: {
1324
+ display: 'flex',
1325
+ alignItems: 'center',
1326
+ gap: 8
1327
+ }
1328
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1329
+ name: "overlapMargin",
1330
+ rules: [{
1331
+ required: true,
1332
+ message: TextEnum.pleaseInput
1333
+ }, {
1334
+ type: 'integer',
1335
+ transform: function transform(value) {
1336
+ return value === undefined || value === null || value === '' ? value : Number(value);
1337
+ },
1338
+ message: TextEnum.pleaseInputInteger
1339
+ }],
1340
+ style: {
1341
+ flex: 1,
1342
+ marginBottom: 0,
1343
+ minWidth: 0
1344
+ }
1345
+ }, /*#__PURE__*/_react["default"].createElement(_antd.InputNumber, {
1346
+ min: 0,
1347
+ precision: 0,
1348
+ changeOnBlur: false,
1349
+ step: 1,
1350
+ style: {
1351
+ width: '100%'
1352
+ }
1353
+ })), /*#__PURE__*/_react["default"].createElement("span", {
1354
+ style: {
1355
+ whiteSpace: 'nowrap',
1356
+ flexShrink: 0
1357
+ }
1358
+ }, "\uFF08mm\uFF09"))), /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, {
1359
+ wrapperCol: {
1360
+ offset: 8,
1361
+ span: 16
1362
+ }
1363
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Button, {
1364
+ type: "primary",
1365
+ htmlType: "submit"
1366
+ }, TextEnum.executeSheetPrint))), /*#__PURE__*/_react["default"].createElement(_antd.Modal, {
1367
+ open: previewVisible,
1368
+ title: TextEnum.preview,
1369
+ onCancel: function onCancel() {
1370
+ return setPreviewVisible(false);
1371
+ },
1372
+ onOk: handleGenerateSheets,
1373
+ okText: TextEnum.ok,
1374
+ cancelText: TextEnum.cancel,
1375
+ width: map.getViewport().clientWidth - 80,
1376
+ centered: true,
1377
+ wrapClassName: "ol-mapprint-modal",
1378
+ confirmLoading: generating,
1379
+ destroyOnHidden: false
1380
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1381
+ style: {
1382
+ display: 'flex',
1383
+ gap: 12,
1384
+ alignItems: 'center',
1385
+ marginBottom: 12
1386
+ }
1387
+ }, /*#__PURE__*/_react["default"].createElement("span", null, TextEnum.widthText), /*#__PURE__*/_react["default"].createElement(_antd.InputNumber, {
1388
+ min: 0.001,
1389
+ precision: 3,
1390
+ value: totalWidthMm,
1391
+ onChange: handleWidthChange
1392
+ }), /*#__PURE__*/_react["default"].createElement("span", null, "mm"), /*#__PURE__*/_react["default"].createElement("img", {
1393
+ src: _lock["default"],
1394
+ alt: TextEnum.fixedRatioText,
1395
+ style: {
1396
+ width: 16,
1397
+ height: 16,
1398
+ objectFit: 'contain'
1399
+ }
1400
+ }), /*#__PURE__*/_react["default"].createElement("span", null, TextEnum.heightText), /*#__PURE__*/_react["default"].createElement(_antd.InputNumber, {
1401
+ precision: 0,
1402
+ step: 1,
1403
+ min: 0,
1404
+ value: totalHeightMm,
1405
+ onChange: handleHeightChange
1406
+ }), /*#__PURE__*/_react["default"].createElement("span", null, "mm"), splitPlan && /*#__PURE__*/_react["default"].createElement("span", {
1407
+ style: {
1408
+ marginLeft: 'auto',
1409
+ color: '#666'
1410
+ }
1411
+ }, splitPlan.cols, " ", TextEnum.colText, " x ", splitPlan.rows, " ", TextEnum.rowText, "\uFF0C", TextEnum.totalText, " ", splitPlan.totalSheets, " ", TextEnum.sheetText)), /*#__PURE__*/_react["default"].createElement("div", {
1412
+ style: {
1413
+ position: 'relative',
1414
+ height: PREVIEW_HEIGHT,
1415
+ overflow: 'auto',
1416
+ background: '#f5f5f5',
1417
+ border: '1px solid #e5e5e5'
1418
+ }
1419
+ }, !previewReady && /*#__PURE__*/_react["default"].createElement("div", {
1420
+ style: {
1421
+ position: 'absolute',
1422
+ left: 0,
1423
+ top: 0,
1424
+ right: 0,
1425
+ bottom: 0,
1426
+ display: 'flex',
1427
+ flexDirection: 'column',
1428
+ alignItems: 'center',
1429
+ justifyContent: 'center',
1430
+ zIndex: 10,
1431
+ background: 'rgba(255,255,255,0.82)',
1432
+ gap: 12,
1433
+ pointerEvents: 'none'
1434
+ }
1435
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Spin, null), /*#__PURE__*/_react["default"].createElement("div", {
1436
+ style: {
1437
+ color: '#666',
1438
+ fontSize: 13
1439
+ }
1440
+ }, previewLoadingText)), metrics && previewFramePixels && splitPlan && selectedMapPixels && /*#__PURE__*/_react["default"].createElement("div", {
1441
+ style: {
1442
+ position: 'relative',
1443
+ width: previewFramePixels.width,
1444
+ height: previewFramePixels.height,
1445
+ transformOrigin: 'top left'
1446
+ }
1447
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1448
+ style: {
1449
+ position: 'absolute',
1450
+ left: 0,
1451
+ top: 0,
1452
+ width: selectedMapPixels.width,
1453
+ height: selectedMapPixels.height,
1454
+ overflow: 'hidden',
1455
+ zIndex: 0,
1456
+ display: 'none'
1457
+ }
1458
+ }, /*#__PURE__*/_react["default"].createElement(_olMap.Map, {
1459
+ width: "".concat(Math.max(1, Math.round(selectedMapPixels.width)), "px"),
1460
+ height: "".concat(Math.max(1, Math.round(selectedMapPixels.height)), "px"),
1461
+ projection: inheritedMapProps.projection,
1462
+ mapStyle: inheritedMapProps.mapStyle,
1463
+ baseMapStyle: inheritedMapProps.baseMapStyle,
1464
+ dark: inheritedMapProps.dark,
1465
+ tk: inheritedMapProps.tk,
1466
+ hidePopupTable: true,
1467
+ createdMap: handlePreviewMapCreated
1468
+ })), /*#__PURE__*/_react["default"].createElement("div", {
1469
+ style: {
1470
+ position: 'absolute',
1471
+ left: 0,
1472
+ top: 0,
1473
+ width: previewFramePixels.width,
1474
+ height: previewFramePixels.height,
1475
+ zIndex: 1,
1476
+ pointerEvents: 'none'
1477
+ }
1478
+ }, /*#__PURE__*/_react["default"].createElement("img", {
1479
+ src: previewImage,
1480
+ alt: "sheet-preview",
1481
+ style: {
1482
+ width: '100%',
1483
+ height: '100%',
1484
+ display: previewImage ? 'block' : 'none',
1485
+ pointerEvents: 'none',
1486
+ opacity: 1
1487
+ }
1488
+ })), selectedRangeCoverage && selectedRangeCoverage.widthPercent < 100 && /*#__PURE__*/_react["default"].createElement("div", {
1489
+ style: {
1490
+ position: 'absolute',
1491
+ top: 0,
1492
+ right: 0,
1493
+ width: "".concat(100 - selectedRangeCoverage.widthPercent, "%"),
1494
+ height: "".concat(selectedRangeCoverage.heightPercent, "%"),
1495
+ background: 'rgba(255,255,255,0.96)',
1496
+ pointerEvents: 'none',
1497
+ zIndex: 2
1498
+ }
1499
+ }), selectedRangeCoverage && selectedRangeCoverage.heightPercent < 100 && /*#__PURE__*/_react["default"].createElement("div", {
1500
+ style: {
1501
+ position: 'absolute',
1502
+ left: 0,
1503
+ bottom: 0,
1504
+ width: '100%',
1505
+ height: "".concat(100 - selectedRangeCoverage.heightPercent, "%"),
1506
+ background: 'rgba(255,255,255,0.96)',
1507
+ pointerEvents: 'none',
1508
+ zIndex: 2
1509
+ }
1510
+ }), selectedRangeCoverage && /*#__PURE__*/_react["default"].createElement("div", {
1511
+ style: {
1512
+ position: 'absolute',
1513
+ left: 0,
1514
+ top: 0,
1515
+ width: "".concat(selectedRangeCoverage.widthPercent, "%"),
1516
+ height: "".concat(selectedRangeCoverage.heightPercent, "%"),
1517
+ border: '2px solid rgba(24, 144, 255, 0.9)',
1518
+ boxSizing: 'border-box',
1519
+ pointerEvents: 'none',
1520
+ zIndex: 3
1521
+ }
1522
+ }), splitPlan === null || splitPlan === void 0 || (_splitPlan$sheets2 = splitPlan.sheets) === null || _splitPlan$sheets2 === void 0 ? void 0 : _splitPlan$sheets2.map(function (sheet) {
1523
+ return /*#__PURE__*/_react["default"].createElement("div", {
1524
+ key: sheet.id,
1525
+ style: {
1526
+ position: 'absolute',
1527
+ left: "".concat(sheet.xMm / getPreviewFrameSizeMm(splitPlan).width * 100, "%"),
1528
+ top: "".concat(sheet.yMm / getPreviewFrameSizeMm(splitPlan).height * 100, "%"),
1529
+ width: "".concat(splitPlan.paperWidthMm / getPreviewFrameSizeMm(splitPlan).width * 100, "%"),
1530
+ height: "".concat(splitPlan.paperHeightMm / getPreviewFrameSizeMm(splitPlan).height * 100, "%"),
1531
+ border: '2px dashed #333',
1532
+ boxSizing: 'border-box',
1533
+ pointerEvents: 'none',
1534
+ zIndex: 4
1535
+ }
1536
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1537
+ style: {
1538
+ position: 'absolute',
1539
+ top: 4,
1540
+ left: 4,
1541
+ background: 'rgba(255,255,255,0.92)',
1542
+ padding: '0 4px',
1543
+ fontSize: 12
1544
+ }
1545
+ }, sheet.index));
1546
+ })))), /*#__PURE__*/_react["default"].createElement(_antd.Modal, {
1547
+ open: sheetVisible,
1548
+ title: TextEnum.sheetResultText,
1549
+ onCancel: function onCancel() {
1550
+ return setSheetVisible(false);
1551
+ },
1552
+ onOk: handleExportPdf,
1553
+ okText: TextEnum.printText,
1554
+ cancelText: TextEnum.cancel,
1555
+ width: map.getViewport().clientWidth - 80,
1556
+ centered: true,
1557
+ wrapClassName: "ol-mapprint-modal"
1558
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1559
+ style: {
1560
+ marginBottom: 12
1561
+ }
1562
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Checkbox, {
1563
+ indeterminate: selectedSheetIds.length > 0 && selectedSheetIds.length < sheetImages.length,
1564
+ checked: sheetImages.length > 0 && selectedSheetIds.length === sheetImages.length,
1565
+ onChange: function onChange(e) {
1566
+ return setSelectedSheetIds(e.target.checked ? sheetImages.map(function (item) {
1567
+ return item.id;
1568
+ }) : []);
1569
+ }
1570
+ }, TextEnum.selectAllText)), /*#__PURE__*/_react["default"].createElement("div", {
1571
+ style: {
1572
+ display: 'grid',
1573
+ gridTemplateColumns: 'repeat(auto-fill, minmax(240px, 1fr))',
1574
+ gap: 16,
1575
+ maxHeight: '70vh',
1576
+ overflow: 'auto'
1577
+ }
1578
+ }, sheetImages.map(function (item) {
1579
+ return /*#__PURE__*/_react["default"].createElement("label", {
1580
+ key: item.id,
1581
+ style: {
1582
+ display: 'block',
1583
+ border: '1px solid #ddd',
1584
+ borderRadius: 6,
1585
+ padding: 12,
1586
+ background: '#fff'
1587
+ }
1588
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1589
+ style: {
1590
+ marginBottom: 8,
1591
+ display: 'flex',
1592
+ alignItems: 'center',
1593
+ gap: 8
1594
+ }
1595
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Checkbox, {
1596
+ checked: selectedSheetIds.includes(item.id),
1597
+ onChange: function onChange(e) {
1598
+ setSelectedSheetIds(function (current) {
1599
+ return e.target.checked ? [].concat(_toConsumableArray(current), [item.id]) : current.filter(function (id) {
1600
+ return id !== item.id;
1601
+ });
1602
+ });
1603
+ }
1604
+ }), /*#__PURE__*/_react["default"].createElement("span", null, TextEnum.sheetIndexPrefix, " ", item.index, " ", TextEnum.sheetText, " (", item.row, "-", item.col, ")")), /*#__PURE__*/_react["default"].createElement("img", {
1605
+ src: item.url,
1606
+ alt: "sheet-".concat(item.index),
1607
+ style: {
1608
+ width: '100%',
1609
+ display: 'block',
1610
+ border: '1px solid #eee'
1611
+ }
1612
+ }));
1613
+ }))), /*#__PURE__*/_react["default"].createElement("div", {
1614
+ style: {
1615
+ position: 'absolute',
1616
+ left: '-100000px',
1617
+ top: 0,
1618
+ width: exportSize.width,
1619
+ height: exportSize.height,
1620
+ overflow: 'hidden'
1621
+ }
1622
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1623
+ ref: exportStageRef,
1624
+ style: {
1625
+ width: exportSize.width,
1626
+ height: exportSize.height
1627
+ }
1628
+ }, /*#__PURE__*/_react["default"].createElement(_olMap.Map, {
1629
+ width: "".concat(exportSize.width, "px"),
1630
+ height: "".concat(exportSize.height, "px"),
1631
+ projection: inheritedMapProps.projection,
1632
+ mapStyle: inheritedMapProps.mapStyle,
1633
+ baseMapStyle: inheritedMapProps.baseMapStyle,
1634
+ dark: inheritedMapProps.dark,
1635
+ tk: inheritedMapProps.tk,
1636
+ hidePopupTable: true,
1637
+ createdMap: handleExportMapCreated
1638
+ }))));
1639
+ }
1640
+ //# sourceMappingURL=index.js.map