aldehyde 0.2.487 → 0.2.489

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 (717) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +2 -2
  3. package/lib/controls/2dEditor/2dEditor/index.less +5 -5
  4. package/lib/controls/2dEditor/2dView/index.less +8 -8
  5. package/lib/controls/2dEditor/components/component.less +83 -83
  6. package/lib/controls/action/index.css +8 -8
  7. package/lib/controls/action/index.d.ts.map +1 -1
  8. package/lib/controls/chemstruc/graph.d.ts.map +1 -1
  9. package/lib/controls/chemstruc/index.css +28 -28
  10. package/lib/controls/collapse-card/index.css +8 -8
  11. package/lib/controls/collapse-card/index.d.ts.map +1 -1
  12. package/lib/controls/cquery/cquick-button.d.ts.map +1 -1
  13. package/lib/controls/direct-file-view/index.d.ts.map +1 -1
  14. package/lib/controls/direct-file-view/index.js +2 -1
  15. package/lib/controls/direct-file-view/index.js.map +1 -1
  16. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  17. package/lib/controls/entity-select/index.css +7 -7
  18. package/lib/controls/entity-select/lab-tree-select.d.ts.map +1 -1
  19. package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
  20. package/lib/controls/file-view/index.less +9 -9
  21. package/lib/controls/html-editor/index.less +67 -67
  22. package/lib/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  23. package/lib/controls/password-setter/index.css +2 -2
  24. package/lib/controls/password-setter/index.d.ts.map +1 -1
  25. package/lib/controls/qr-code/index.less +28 -28
  26. package/lib/controls/relation-existion/index.css +3 -3
  27. package/lib/controls/relation-existion/index.d.ts.map +1 -1
  28. package/lib/controls/rfield/index.css +4 -4
  29. package/lib/controls/rfield/index.d.ts.map +1 -1
  30. package/lib/controls/select/index.d.ts.map +1 -1
  31. package/lib/controls/signature/index.d.ts.map +1 -1
  32. package/lib/controls/text/ellipsis-text.d.ts.map +1 -1
  33. package/lib/controls/text/index.less +7 -7
  34. package/lib/controls/upload/index.d.ts.map +1 -1
  35. package/lib/controls/upload/mult-file-upload.d.ts.map +1 -1
  36. package/lib/custom-page/dtmpl-custom-edit-modal-page.d.ts.map +1 -1
  37. package/lib/detail/button/bottom-submit-button-bar.d.ts.map +1 -1
  38. package/lib/detail/button/cquery-button-bar.d.ts.map +1 -1
  39. package/lib/detail/button/fix-right-submit-button-bar.d.ts.map +1 -1
  40. package/lib/detail/button/index.css +42 -42
  41. package/lib/detail/dtmpl.css +72 -72
  42. package/lib/detail/edit/fields-edit-card.d.ts.map +1 -1
  43. package/lib/detail/edit/modal-row-edit.d.ts.map +1 -1
  44. package/lib/detail/edit/popover-edit-card.d.ts.map +1 -1
  45. package/lib/detail/rightbar/index.css +34 -34
  46. package/lib/detail/rightbar/index.d.ts.map +1 -1
  47. package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
  48. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  49. package/lib/detail/view/modal-dtmpl-view.d.ts.map +1 -1
  50. package/lib/detail/view/snapshot-timeline.d.ts.map +1 -1
  51. package/lib/detail/view/tab-act-dtmpl-view.d.ts.map +1 -1
  52. package/lib/draw-canvas-edit/components/main-header/index.js +1 -1
  53. package/lib/draw-canvas-edit/components/render/components/index.less +60 -60
  54. package/lib/draw-canvas-edit/components/render/components/workstation-component.js +6 -6
  55. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts +1 -0
  56. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts.map +1 -1
  57. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js +3 -2
  58. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js.map +1 -1
  59. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts +1 -0
  60. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts.map +1 -1
  61. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js +2 -1
  62. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js.map +1 -1
  63. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts +1 -0
  64. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts.map +1 -1
  65. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js +9 -8
  66. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js.map +1 -1
  67. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts +1 -0
  68. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts.map +1 -1
  69. package/lib/draw-canvas-edit/components/render/draws/link-draw.js +24 -23
  70. package/lib/draw-canvas-edit/components/render/draws/link-draw.js.map +1 -1
  71. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts +1 -0
  72. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts.map +1 -1
  73. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js +6 -5
  74. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js.map +1 -1
  75. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts +1 -0
  76. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts.map +1 -1
  77. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js +3 -2
  78. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js.map +1 -1
  79. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts +1 -0
  80. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts.map +1 -1
  81. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js +8 -7
  82. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js.map +1 -1
  83. package/lib/draw-canvas-edit/components/render/graphs/base-graph.js +3 -3
  84. package/lib/draw-canvas-edit/components/render/graphs/bezier.js +5 -5
  85. package/lib/draw-canvas-edit/components/render/graphs/circle.js +4 -4
  86. package/lib/draw-canvas-edit/components/render/graphs/curve.js +5 -5
  87. package/lib/draw-canvas-edit/components/render/graphs/line.js +5 -5
  88. package/lib/draw-canvas-edit/components/render/graphs/rect.js +4 -4
  89. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts +1 -0
  90. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts.map +1 -1
  91. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js +7 -6
  92. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js.map +1 -1
  93. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts +1 -0
  94. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -1
  95. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +4 -3
  96. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -1
  97. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts +1 -0
  98. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts.map +1 -1
  99. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js +2 -1
  100. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js.map +1 -1
  101. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts +1 -0
  102. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts.map +1 -1
  103. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js +5 -4
  104. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js.map +1 -1
  105. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts +1 -0
  106. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts.map +1 -1
  107. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js +3 -2
  108. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js.map +1 -1
  109. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts +1 -0
  110. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
  111. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +5 -4
  112. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
  113. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts +1 -0
  114. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts.map +1 -1
  115. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js +1 -0
  116. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js.map +1 -1
  117. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts +1 -0
  118. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts.map +1 -1
  119. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js +1 -0
  120. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js.map +1 -1
  121. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts +1 -0
  122. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts.map +1 -1
  123. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js +7 -6
  124. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js.map +1 -1
  125. package/lib/draw-canvas-edit/components/render/index.js +48 -48
  126. package/lib/draw-canvas-edit/components/render/tools/align-tool.js +4 -4
  127. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js +1 -1
  128. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js +4 -4
  129. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js +7 -7
  130. package/lib/draw-canvas-edit/components/render/tools/link-tool.js +9 -9
  131. package/lib/draw-canvas-edit/components/render/tools/position-tool.js +18 -18
  132. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js +2 -2
  133. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.js +16 -16
  134. package/lib/draw-canvas-edit/index.less +48 -48
  135. package/lib/draw-canvas-view/index.less +66 -66
  136. package/lib/export/export-frame.css +2 -2
  137. package/lib/export/export-frame.d.ts.map +1 -1
  138. package/lib/export/select-code-export-frame.d.ts.map +1 -1
  139. package/lib/form/dtmpl-form.css +3 -3
  140. package/lib/form/dtmpl-form.d.ts.map +1 -1
  141. package/lib/form/field-group-form.d.ts.map +1 -1
  142. package/lib/form/form-Item-group.d.ts.map +1 -1
  143. package/lib/form/index.css +12 -12
  144. package/lib/import/excel-import.d.ts.map +1 -1
  145. package/lib/import/index.css +53 -53
  146. package/lib/import/template.css +50 -50
  147. package/lib/layout/common.css +64 -64
  148. package/lib/layout/coverstyle.css +51 -51
  149. package/lib/layout/footer/index.css +5 -5
  150. package/lib/layout/header/index.css +122 -122
  151. package/lib/layout/menu/block.css +7 -7
  152. package/lib/layout/menu/block.d.ts.map +1 -1
  153. package/lib/layout/menu/l2menu-quick-bar.d.ts.map +1 -1
  154. package/lib/layout/menu/menu-2layers.d.ts.map +1 -1
  155. package/lib/layout/menu/message-bar.less +73 -73
  156. package/lib/layout/menu/reset-password.d.ts.map +1 -1
  157. package/lib/layout/menu/user-bar.d.ts.map +1 -1
  158. package/lib/layout/menu/userinfo-bar.d.ts.map +1 -1
  159. package/lib/layout/sidebar/index.css +57 -57
  160. package/lib/layout2/css/header.css +41 -41
  161. package/lib/layout2/css/sider.less +17 -17
  162. package/lib/layout2/css/tabs-layout.less +18 -18
  163. package/lib/layout3/css/header.less +195 -195
  164. package/lib/layout3/css/main.less +161 -161
  165. package/lib/layout3/css/sider.less +32 -32
  166. package/lib/layout3/css/tabs-layout.less +38 -38
  167. package/lib/layout4/css/header.less +196 -196
  168. package/lib/layout4/css/main.less +154 -154
  169. package/lib/layout4/css/sider.less +37 -37
  170. package/lib/layout4/css/tabs-layout.less +42 -42
  171. package/lib/layout5/css/header.less +35 -35
  172. package/lib/layout5/css/sider.less +18 -18
  173. package/lib/list/calendar/index.less +20 -20
  174. package/lib/list/card-list/index.less +154 -154
  175. package/lib/list/gantt/index.less +8 -8
  176. package/lib/list/vertical-list/index.less +208 -208
  177. package/lib/login/index.css +19 -19
  178. package/lib/login/login.d.ts.map +1 -1
  179. package/lib/login/vertify/index.css +143 -143
  180. package/lib/login3/index.less +136 -136
  181. package/lib/lowcode-components/act-table/index.less +26 -26
  182. package/lib/lowcode-components/bar-chart/index.d.ts +4 -1
  183. package/lib/lowcode-components/bar-chart/index.d.ts.map +1 -1
  184. package/lib/lowcode-components/bar-chart/index.js +3 -0
  185. package/lib/lowcode-components/bar-chart/index.js.map +1 -1
  186. package/lib/lowcode-components/base-button/index.less +7 -7
  187. package/lib/lowcode-components/base-map/index.js +6 -6
  188. package/lib/lowcode-components/base-radio/index.less +23 -23
  189. package/lib/lowcode-components/base-tabs/index.less +14 -14
  190. package/lib/lowcode-components/border/border10/index.less +26 -26
  191. package/lib/lowcode-components/border/border11/index.js +46 -46
  192. package/lib/lowcode-components/border/border11/index.less +17 -17
  193. package/lib/lowcode-components/border/border12/index.js +13 -13
  194. package/lib/lowcode-components/border/border12/index.less +13 -13
  195. package/lib/lowcode-components/border/border13/index.js +5 -5
  196. package/lib/lowcode-components/border/border13/index.less +13 -13
  197. package/lib/lowcode-components/border/border2/index.less +17 -17
  198. package/lib/lowcode-components/border/border3/index.less +25 -25
  199. package/lib/lowcode-components/border/border4/index.js +2 -2
  200. package/lib/lowcode-components/border/border4/index.less +72 -72
  201. package/lib/lowcode-components/border/border5/index.js +2 -2
  202. package/lib/lowcode-components/border/border5/index.less +35 -35
  203. package/lib/lowcode-components/border/border6/index.less +17 -17
  204. package/lib/lowcode-components/border/border7/index.less +26 -26
  205. package/lib/lowcode-components/border/border8/index.less +13 -13
  206. package/lib/lowcode-components/border/border9/index.js +14 -14
  207. package/lib/lowcode-components/border/border9/index.less +13 -13
  208. package/lib/lowcode-components/column-3d-chart/index.d.ts +4 -1
  209. package/lib/lowcode-components/column-3d-chart/index.d.ts.map +1 -1
  210. package/lib/lowcode-components/column-3d-chart/index.js +3 -0
  211. package/lib/lowcode-components/column-3d-chart/index.js.map +1 -1
  212. package/lib/lowcode-components/column-chart/index.d.ts +6 -3
  213. package/lib/lowcode-components/column-chart/index.d.ts.map +1 -1
  214. package/lib/lowcode-components/column-chart/index.js +4 -1
  215. package/lib/lowcode-components/column-chart/index.js.map +1 -1
  216. package/lib/lowcode-components/decoration/decoration1/index.less +7 -7
  217. package/lib/lowcode-components/decoration/decoration10/index.js +3 -3
  218. package/lib/lowcode-components/decoration/decoration10/index.less +5 -5
  219. package/lib/lowcode-components/decoration/decoration11/index.less +5 -5
  220. package/lib/lowcode-components/decoration/decoration2/index.less +6 -6
  221. package/lib/lowcode-components/decoration/decoration3/index.less +7 -7
  222. package/lib/lowcode-components/decoration/decoration4/index.less +29 -29
  223. package/lib/lowcode-components/decoration/decoration5/index.less +3 -3
  224. package/lib/lowcode-components/decoration/decoration6/index.less +7 -7
  225. package/lib/lowcode-components/decoration/decoration7/index.less +4 -4
  226. package/lib/lowcode-components/decoration/decoration8/index.less +14 -14
  227. package/lib/lowcode-components/decoration/decoration9/index.less +4 -4
  228. package/lib/lowcode-components/effectScatter-map/index.js +6 -6
  229. package/lib/lowcode-components/effectScatter-map-3d/index.js +6 -6
  230. package/lib/lowcode-components/line-bar-chart/index.d.ts +4 -1
  231. package/lib/lowcode-components/line-bar-chart/index.d.ts.map +1 -1
  232. package/lib/lowcode-components/line-bar-chart/index.js +3 -0
  233. package/lib/lowcode-components/line-bar-chart/index.js.map +1 -1
  234. package/lib/lowcode-components/line-chart/index.d.ts +5 -2
  235. package/lib/lowcode-components/line-chart/index.d.ts.map +1 -1
  236. package/lib/lowcode-components/line-chart/index.js +6 -2
  237. package/lib/lowcode-components/line-chart/index.js.map +1 -1
  238. package/lib/lowcode-components/lowcode-view/index.less +19 -19
  239. package/lib/lowcode-components/pie-chart/index.d.ts +4 -1
  240. package/lib/lowcode-components/pie-chart/index.d.ts.map +1 -1
  241. package/lib/lowcode-components/pie-chart/index.js +3 -0
  242. package/lib/lowcode-components/pie-chart/index.js.map +1 -1
  243. package/lib/lowcode-components/search-form/index.less +25 -25
  244. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  245. package/lib/module/dtmpl-edit-card.js +15 -5
  246. package/lib/module/dtmpl-edit-card.js.map +1 -1
  247. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  248. package/lib/module/dtmpl-edit-page.js +15 -5
  249. package/lib/module/dtmpl-edit-page.js.map +1 -1
  250. package/lib/module/index.less +4 -4
  251. package/lib/module/ltmpl-modal.d.ts.map +1 -1
  252. package/lib/module/ltmpl-table.d.ts.map +1 -1
  253. package/lib/routable/index.less +25 -25
  254. package/lib/table/act-table.d.ts +2 -0
  255. package/lib/table/act-table.d.ts.map +1 -1
  256. package/lib/table/act-table.js +20 -17
  257. package/lib/table/act-table.js.map +1 -1
  258. package/lib/table/column/index.less +85 -85
  259. package/lib/table/index.css +211 -211
  260. package/lib/table/modal-select-table.d.ts.map +1 -1
  261. package/lib/table/page-chart.d.ts +15 -0
  262. package/lib/table/page-chart.d.ts.map +1 -0
  263. package/lib/table/page-chart.js +150 -0
  264. package/lib/table/page-chart.js.map +1 -0
  265. package/lib/table/page-chart.less +10 -0
  266. package/lib/table/pagination.css +14 -14
  267. package/lib/table/pagination.d.ts.map +1 -1
  268. package/lib/table/relation-table.d.ts +2 -0
  269. package/lib/table/relation-table.d.ts.map +1 -1
  270. package/lib/table/row-table.d.ts +11 -0
  271. package/lib/table/row-table.d.ts.map +1 -0
  272. package/lib/table/row-table.js +11 -0
  273. package/lib/table/row-table.js.map +1 -0
  274. package/lib/table/selected-rows-card.d.ts.map +1 -1
  275. package/lib/table/stat/restat.d.ts.map +1 -1
  276. package/lib/tmpl/interface.d.ts +12 -1
  277. package/lib/tmpl/interface.d.ts.map +1 -1
  278. package/lib/tmpl/interface.js.map +1 -1
  279. package/lib/tmpl/tmpl-config-analysis.js +1 -1
  280. package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
  281. package/lib/tree/act-tree.d.ts.map +1 -1
  282. package/lib/tree/block-menu-auth-tree.d.ts.map +1 -1
  283. package/lib/tree/index.css +22 -22
  284. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  285. package/lib/welcome/components/menu-card.less +96 -96
  286. package/lib/welcome/components/page-card.less +49 -49
  287. package/lib/welcome/components/quick-entrance.less +120 -120
  288. package/lib/welcome/components/user-menus.less +192 -192
  289. package/lib/welcome/components/workbench.less +118 -118
  290. package/lib/welcome/index.css +13 -13
  291. package/package.json +224 -224
  292. package/src/aldehyde/controls/2dEditor/2dEditor/index.less +5 -5
  293. package/src/aldehyde/controls/2dEditor/2dEditor/index.tsx +270 -270
  294. package/src/aldehyde/controls/2dEditor/2dView/index.less +8 -8
  295. package/src/aldehyde/controls/2dEditor/2dView/index.tsx +110 -110
  296. package/src/aldehyde/controls/2dEditor/components/card.tsx +256 -256
  297. package/src/aldehyde/controls/2dEditor/components/component.less +83 -83
  298. package/src/aldehyde/controls/2dEditor/components/data.d.ts +32 -32
  299. package/src/aldehyde/controls/2dEditor/components/hotspot.tsx +80 -80
  300. package/src/aldehyde/controls/2dEditor/components/html-box.tsx +101 -101
  301. package/src/aldehyde/controls/2dEditor/components/image.tsx +99 -99
  302. package/src/aldehyde/controls/2dEditor/components/line.tsx +73 -73
  303. package/src/aldehyde/controls/action/index.css +8 -8
  304. package/src/aldehyde/controls/action/index.tsx +406 -406
  305. package/src/aldehyde/controls/action/utils.tsx +306 -306
  306. package/src/aldehyde/controls/auto-complete/index.tsx +82 -82
  307. package/src/aldehyde/controls/cascader/index.tsx +112 -112
  308. package/src/aldehyde/controls/chemstruc/graph.tsx +185 -185
  309. package/src/aldehyde/controls/chemstruc/index.css +28 -28
  310. package/src/aldehyde/controls/code-editor/sql-code-editor.tsx +73 -73
  311. package/src/aldehyde/controls/collapse-card/index.css +8 -8
  312. package/src/aldehyde/controls/collapse-card/index.tsx +109 -109
  313. package/src/aldehyde/controls/color-picker/index.tsx +21 -21
  314. package/src/aldehyde/controls/counting-tag/index.tsx +53 -53
  315. package/src/aldehyde/controls/cquery/cquick-button.tsx +145 -145
  316. package/src/aldehyde/controls/date-picker/index.tsx +199 -199
  317. package/src/aldehyde/controls/direct-file-view/drawer-file-view.tsx +54 -54
  318. package/src/aldehyde/controls/direct-file-view/index.tsx +147 -146
  319. package/src/aldehyde/controls/direct-upload/index.tsx +140 -140
  320. package/src/aldehyde/controls/entity-select/entity-select.tsx +791 -791
  321. package/src/aldehyde/controls/entity-select/index.css +7 -7
  322. package/src/aldehyde/controls/entity-select/lab-tree-select.tsx +154 -154
  323. package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +205 -205
  324. package/src/aldehyde/controls/entry-control.tsx +431 -431
  325. package/src/aldehyde/controls/enum-badge/index.tsx +42 -42
  326. package/src/aldehyde/controls/enum-tag/index.tsx +45 -45
  327. package/src/aldehyde/controls/field-history/index.tsx +81 -81
  328. package/src/aldehyde/controls/file-export/select-code-export.tsx +40 -40
  329. package/src/aldehyde/controls/file-view/drawer-file-view.tsx +117 -117
  330. package/src/aldehyde/controls/file-view/index.less +9 -9
  331. package/src/aldehyde/controls/file-view/index.tsx +148 -148
  332. package/src/aldehyde/controls/file-view/multi-file-view.tsx +39 -39
  333. package/src/aldehyde/controls/file-view/newin-file-view.tsx +40 -40
  334. package/src/aldehyde/controls/html-editor/draft.tsx +136 -136
  335. package/src/aldehyde/controls/html-editor/index.less +67 -67
  336. package/src/aldehyde/controls/icon-selector/app-icon-selector.tsx +68 -68
  337. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  338. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.json +240 -240
  339. package/src/aldehyde/controls/icon-selector/pc-icon-selector.tsx +68 -68
  340. package/src/aldehyde/controls/input-number/index.tsx +148 -148
  341. package/src/aldehyde/controls/input-range/index.tsx +59 -59
  342. package/src/aldehyde/controls/password-setter/index.css +2 -2
  343. package/src/aldehyde/controls/password-setter/index.js +88 -88
  344. package/src/aldehyde/controls/progress/index.tsx +74 -74
  345. package/src/aldehyde/controls/qr-code/index.less +28 -28
  346. package/src/aldehyde/controls/qr-code/index.tsx +40 -40
  347. package/src/aldehyde/controls/relation-existion/index.css +3 -3
  348. package/src/aldehyde/controls/relation-existion/index.tsx +144 -144
  349. package/src/aldehyde/controls/rfield/index.css +4 -4
  350. package/src/aldehyde/controls/rfield/index.tsx +225 -225
  351. package/src/aldehyde/controls/select/index.tsx +226 -226
  352. package/src/aldehyde/controls/signature/index.tsx +226 -226
  353. package/src/aldehyde/controls/single-checkbox/index.tsx +18 -18
  354. package/src/aldehyde/controls/steps/index.tsx +59 -59
  355. package/src/aldehyde/controls/text/ellipsis-text.tsx +98 -98
  356. package/src/aldehyde/controls/text/index.less +7 -7
  357. package/src/aldehyde/controls/tree-select/navigation-tree.tsx +122 -122
  358. package/src/aldehyde/controls/tree-select/tree-entity-select.tsx +121 -121
  359. package/src/aldehyde/controls/upload/index.tsx +128 -128
  360. package/src/aldehyde/controls/upload/mult-file-upload.tsx +240 -240
  361. package/src/aldehyde/controls/upload-read-excel/index.tsx +43 -43
  362. package/src/aldehyde/controls/view-control.tsx +289 -289
  363. package/src/aldehyde/custom-page/custom-detail-modal-page.tsx +69 -69
  364. package/src/aldehyde/custom-page/custom-page-router.tsx +64 -64
  365. package/src/aldehyde/custom-page/def-custom-page.tsx +17 -17
  366. package/src/aldehyde/custom-page/dtmpl-custom-edit-modal-page.tsx +88 -88
  367. package/src/aldehyde/detail/button/bottom-submit-button-bar.tsx +91 -91
  368. package/src/aldehyde/detail/button/cquery-button-bar.tsx +144 -144
  369. package/src/aldehyde/detail/button/edit-button.tsx +61 -61
  370. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +186 -186
  371. package/src/aldehyde/detail/button/index.css +42 -42
  372. package/src/aldehyde/detail/button/inline-edit-button.tsx +40 -40
  373. package/src/aldehyde/detail/button/submit-button-bar.tsx +57 -57
  374. package/src/aldehyde/detail/button/view-button.tsx +64 -64
  375. package/src/aldehyde/detail/dtmpl.css +72 -72
  376. package/src/aldehyde/detail/edit/dtmpl-edit.tsx +279 -279
  377. package/src/aldehyde/detail/edit/fields-edit-card.tsx +145 -145
  378. package/src/aldehyde/detail/edit/modal-row-edit.tsx +95 -95
  379. package/src/aldehyde/detail/edit/popover-edit-card.tsx +167 -167
  380. package/src/aldehyde/detail/edit/popover-editor.tsx +70 -70
  381. package/src/aldehyde/detail/edit/post-result/index.tsx +86 -86
  382. package/src/aldehyde/detail/rightbar/index.css +34 -34
  383. package/src/aldehyde/detail/rightbar/index.tsx +92 -92
  384. package/src/aldehyde/detail/tooltipbar/index.tsx +32 -32
  385. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +288 -288
  386. package/src/aldehyde/detail/view/dtmpl-view.tsx +334 -334
  387. package/src/aldehyde/detail/view/field-view-group.tsx +88 -88
  388. package/src/aldehyde/detail/view/modal-dtmpl-view.tsx +73 -73
  389. package/src/aldehyde/detail/view/snapshot-timeline.tsx +231 -231
  390. package/src/aldehyde/detail/view/tab-act-dtmpl-view.tsx +304 -304
  391. package/src/aldehyde/detail/view/view-compare-panel.tsx +57 -57
  392. package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +1 -1
  393. package/src/aldehyde/draw-canvas-edit/components/render/components/index.less +60 -60
  394. package/src/aldehyde/draw-canvas-edit/components/render/components/index.ts +3 -3
  395. package/src/aldehyde/draw-canvas-edit/components/render/components/workstation-component.tsx +220 -220
  396. package/src/aldehyde/draw-canvas-edit/components/render/draws/bg-draw.ts +177 -176
  397. package/src/aldehyde/draw-canvas-edit/components/render/draws/contextmenu-draw.ts +330 -329
  398. package/src/aldehyde/draw-canvas-edit/components/render/draws/graph-draw.ts +249 -249
  399. package/src/aldehyde/draw-canvas-edit/components/render/draws/link-draw.ts +1415 -1414
  400. package/src/aldehyde/draw-canvas-edit/components/render/draws/preview-draw.ts +274 -273
  401. package/src/aldehyde/draw-canvas-edit/components/render/draws/ref-line-draw.ts +71 -70
  402. package/src/aldehyde/draw-canvas-edit/components/render/draws/ruler-draw.ts +166 -165
  403. package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +3 -3
  404. package/src/aldehyde/draw-canvas-edit/components/render/graphs/bezier.ts +542 -542
  405. package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +4 -4
  406. package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +5 -5
  407. package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +5 -5
  408. package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +4 -4
  409. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +7 -6
  410. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +77 -76
  411. package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +2 -1
  412. package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +5 -4
  413. package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +3 -2
  414. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +410 -409
  415. package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +1 -0
  416. package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +1 -0
  417. package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +7 -6
  418. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +817 -817
  419. package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +4 -4
  420. package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +1 -1
  421. package/src/aldehyde/draw-canvas-edit/components/render/tools/attract-tool.ts +457 -457
  422. package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +269 -269
  423. package/src/aldehyde/draw-canvas-edit/components/render/tools/copy-tool.ts +244 -244
  424. package/src/aldehyde/draw-canvas-edit/components/render/tools/import-export-tool.ts +588 -588
  425. package/src/aldehyde/draw-canvas-edit/components/render/tools/index.ts +10 -10
  426. package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +9 -9
  427. package/src/aldehyde/draw-canvas-edit/components/render/tools/position-tool.ts +191 -191
  428. package/src/aldehyde/draw-canvas-edit/components/render/tools/selection-tool.ts +140 -140
  429. package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +16 -16
  430. package/src/aldehyde/draw-canvas-edit/components/render/types.ts +298 -298
  431. package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +305 -305
  432. package/src/aldehyde/draw-canvas-edit/constant.ts +5 -5
  433. package/src/aldehyde/draw-canvas-edit/index.less +48 -48
  434. package/src/aldehyde/draw-canvas-edit/index.tsx +213 -213
  435. package/src/aldehyde/draw-canvas-view/index.less +66 -66
  436. package/src/aldehyde/draw-canvas-view/index.tsx +49 -49
  437. package/src/aldehyde/draw-canvas-view/view.tsx +237 -237
  438. package/src/aldehyde/export/export-frame.css +2 -2
  439. package/src/aldehyde/export/export-frame.tsx +301 -301
  440. package/src/aldehyde/export/select-code-export-frame.tsx +212 -212
  441. package/src/aldehyde/form/criteria-form.tsx +604 -604
  442. package/src/aldehyde/form/dtmpl-form.css +3 -3
  443. package/src/aldehyde/form/dtmpl-form.tsx +571 -571
  444. package/src/aldehyde/form/field-group-form.tsx +103 -103
  445. package/src/aldehyde/form/fields-form.tsx +45 -45
  446. package/src/aldehyde/form/form-Item-group.tsx +246 -246
  447. package/src/aldehyde/form/index.css +12 -12
  448. package/src/aldehyde/hooks/use-match-route/index.tsx +62 -62
  449. package/src/aldehyde/hooks/use-tabs/index.tsx +139 -139
  450. package/src/aldehyde/hooks/useVarCssColor.ts +6 -6
  451. package/src/aldehyde/icon/aliIcon.tsx +9 -9
  452. package/src/aldehyde/icon/index.tsx +28 -28
  453. package/src/aldehyde/import/excel-import.tsx +450 -450
  454. package/src/aldehyde/import/index.css +53 -53
  455. package/src/aldehyde/import/template.css +50 -50
  456. package/src/aldehyde/index.tsx +220 -220
  457. package/src/aldehyde/layout/MainPage.tsx +334 -334
  458. package/src/aldehyde/layout/common.css +64 -64
  459. package/src/aldehyde/layout/coverstyle.css +51 -51
  460. package/src/aldehyde/layout/footer/index.css +5 -5
  461. package/src/aldehyde/layout/footer/index.js +17 -17
  462. package/src/aldehyde/layout/header/index.css +122 -122
  463. package/src/aldehyde/layout/header/index.tsx +152 -152
  464. package/src/aldehyde/layout/menu/block.css +7 -7
  465. package/src/aldehyde/layout/menu/block.tsx +174 -174
  466. package/src/aldehyde/layout/menu/l2menu-message-bar.tsx +160 -160
  467. package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +175 -175
  468. package/src/aldehyde/layout/menu/menu-2layers.tsx +117 -117
  469. package/src/aldehyde/layout/menu/menu-render.tsx +168 -168
  470. package/src/aldehyde/layout/menu/message-bar.less +73 -73
  471. package/src/aldehyde/layout/menu/reset-password.tsx +255 -255
  472. package/src/aldehyde/layout/menu/user-bar.tsx +259 -259
  473. package/src/aldehyde/layout/menu/userinfo-bar.tsx +69 -69
  474. package/src/aldehyde/layout/sidebar/index.css +57 -57
  475. package/src/aldehyde/layout/sidebar/index.tsx +84 -84
  476. package/src/aldehyde/layout2/components/icon-font.tsx +7 -7
  477. package/src/aldehyde/layout2/components/screenfull-button.tsx +21 -21
  478. package/src/aldehyde/layout2/components/search-menu.tsx +85 -85
  479. package/src/aldehyde/layout2/components/system-messages.tsx +75 -75
  480. package/src/aldehyde/layout2/components/theme-button.tsx +65 -65
  481. package/src/aldehyde/layout2/components/user-button.tsx +258 -258
  482. package/src/aldehyde/layout2/components/user-notification.tsx +74 -74
  483. package/src/aldehyde/layout2/css/header.css +41 -41
  484. package/src/aldehyde/layout2/css/sider.less +17 -17
  485. package/src/aldehyde/layout2/css/tabs-layout.less +18 -18
  486. package/src/aldehyde/layout2/header.tsx +278 -278
  487. package/src/aldehyde/layout2/layout-context.tsx +95 -95
  488. package/src/aldehyde/layout2/main.tsx +30 -30
  489. package/src/aldehyde/layout2/page.tsx +315 -315
  490. package/src/aldehyde/layout2/sider.tsx +230 -230
  491. package/src/aldehyde/layout2/tabs/tabs-context.tsx +37 -37
  492. package/src/aldehyde/layout2/tabs/tabs-layout.tsx +146 -146
  493. package/src/aldehyde/layout2/type/layout-type.ts +15 -15
  494. package/src/aldehyde/layout2/util/menu-util.tsx +125 -125
  495. package/src/aldehyde/layout3/components/tabs-layout.tsx +110 -110
  496. package/src/aldehyde/layout3/components/time.tsx +25 -25
  497. package/src/aldehyde/layout3/css/header.less +195 -195
  498. package/src/aldehyde/layout3/css/main.less +161 -161
  499. package/src/aldehyde/layout3/css/sider.less +32 -32
  500. package/src/aldehyde/layout3/css/tabs-layout.less +38 -38
  501. package/src/aldehyde/layout3/header.tsx +187 -187
  502. package/src/aldehyde/layout3/main.tsx +29 -29
  503. package/src/aldehyde/layout3/page.tsx +110 -110
  504. package/src/aldehyde/layout3/sider.tsx +198 -198
  505. package/src/aldehyde/layout4/components/tabs-layout.tsx +110 -110
  506. package/src/aldehyde/layout4/css/header.less +196 -196
  507. package/src/aldehyde/layout4/css/main.less +154 -154
  508. package/src/aldehyde/layout4/css/sider.less +37 -37
  509. package/src/aldehyde/layout4/css/tabs-layout.less +42 -42
  510. package/src/aldehyde/layout4/header.tsx +190 -190
  511. package/src/aldehyde/layout4/main.tsx +29 -29
  512. package/src/aldehyde/layout4/page.tsx +125 -125
  513. package/src/aldehyde/layout4/sider.tsx +201 -201
  514. package/src/aldehyde/layout5/css/header.less +35 -35
  515. package/src/aldehyde/layout5/css/sider.less +18 -18
  516. package/src/aldehyde/layout5/header.tsx +204 -204
  517. package/src/aldehyde/layout5/page.tsx +107 -107
  518. package/src/aldehyde/layout5/sider.tsx +235 -235
  519. package/src/aldehyde/list/calendar/index.less +20 -20
  520. package/src/aldehyde/list/calendar/index.tsx +157 -157
  521. package/src/aldehyde/list/card-list/card-list-item.tsx +112 -112
  522. package/src/aldehyde/list/card-list/index.less +154 -154
  523. package/src/aldehyde/list/card-list/index.tsx +83 -83
  524. package/src/aldehyde/list/gantt/index.less +8 -8
  525. package/src/aldehyde/list/gantt/index.tsx +508 -508
  526. package/src/aldehyde/list/vertical-list/index.less +208 -208
  527. package/src/aldehyde/list/vertical-list/index.tsx +55 -55
  528. package/src/aldehyde/list/vertical-list/item.tsx +136 -136
  529. package/src/aldehyde/locale/LocaleButton.tsx +48 -48
  530. package/src/aldehyde/locale/LocaleProvider.tsx +265 -265
  531. package/src/aldehyde/locale/langMp.ts +45 -45
  532. package/src/aldehyde/locale/translate.ts +80 -80
  533. package/src/aldehyde/locale/useLocale.ts +72 -72
  534. package/src/aldehyde/login/context-setter.tsx +130 -130
  535. package/src/aldehyde/login/index.css +19 -19
  536. package/src/aldehyde/login/login.tsx +255 -255
  537. package/src/aldehyde/login/router-login.tsx +107 -107
  538. package/src/aldehyde/login/vertify/index.css +143 -143
  539. package/src/aldehyde/login/vertify/index.tsx +360 -360
  540. package/src/aldehyde/login/vertify/tool.ts +13 -13
  541. package/src/aldehyde/login2/login-page.tsx +92 -92
  542. package/src/aldehyde/login2/login.tsx +227 -227
  543. package/src/aldehyde/login3/index.less +136 -136
  544. package/src/aldehyde/login3/login-page.tsx +71 -71
  545. package/src/aldehyde/lowcode-components/act-table/index.less +26 -26
  546. package/src/aldehyde/lowcode-components/act-table/index.tsx +139 -139
  547. package/src/aldehyde/lowcode-components/assets/lowcode-constant.tsx +12 -12
  548. package/src/aldehyde/lowcode-components/bar-chart/index.tsx +272 -268
  549. package/src/aldehyde/lowcode-components/base-button/index.less +7 -7
  550. package/src/aldehyde/lowcode-components/base-button/index.tsx +197 -197
  551. package/src/aldehyde/lowcode-components/base-image/index.tsx +220 -220
  552. package/src/aldehyde/lowcode-components/base-map/index.tsx +292 -292
  553. package/src/aldehyde/lowcode-components/base-radio/index.less +23 -23
  554. package/src/aldehyde/lowcode-components/base-radio/index.tsx +157 -157
  555. package/src/aldehyde/lowcode-components/base-table/index.tsx +268 -268
  556. package/src/aldehyde/lowcode-components/base-tabs/index.less +14 -14
  557. package/src/aldehyde/lowcode-components/base-tabs/index.tsx +183 -183
  558. package/src/aldehyde/lowcode-components/base-text/index.tsx +58 -58
  559. package/src/aldehyde/lowcode-components/border/border1/index.tsx +70 -70
  560. package/src/aldehyde/lowcode-components/border/border10/index.less +26 -26
  561. package/src/aldehyde/lowcode-components/border/border10/index.tsx +45 -45
  562. package/src/aldehyde/lowcode-components/border/border11/index.less +17 -17
  563. package/src/aldehyde/lowcode-components/border/border11/index.tsx +232 -232
  564. package/src/aldehyde/lowcode-components/border/border12/index.less +13 -13
  565. package/src/aldehyde/lowcode-components/border/border12/index.tsx +115 -115
  566. package/src/aldehyde/lowcode-components/border/border13/index.less +13 -13
  567. package/src/aldehyde/lowcode-components/border/border13/index.tsx +69 -69
  568. package/src/aldehyde/lowcode-components/border/border2/index.less +17 -17
  569. package/src/aldehyde/lowcode-components/border/border2/index.tsx +51 -51
  570. package/src/aldehyde/lowcode-components/border/border3/index.less +25 -25
  571. package/src/aldehyde/lowcode-components/border/border3/index.tsx +61 -61
  572. package/src/aldehyde/lowcode-components/border/border4/index.less +72 -72
  573. package/src/aldehyde/lowcode-components/border/border4/index.tsx +79 -79
  574. package/src/aldehyde/lowcode-components/border/border5/index.less +35 -35
  575. package/src/aldehyde/lowcode-components/border/border5/index.tsx +75 -75
  576. package/src/aldehyde/lowcode-components/border/border6/index.less +17 -17
  577. package/src/aldehyde/lowcode-components/border/border6/index.tsx +60 -60
  578. package/src/aldehyde/lowcode-components/border/border7/index.less +26 -26
  579. package/src/aldehyde/lowcode-components/border/border7/index.tsx +75 -75
  580. package/src/aldehyde/lowcode-components/border/border8/index.less +13 -13
  581. package/src/aldehyde/lowcode-components/border/border8/index.tsx +84 -84
  582. package/src/aldehyde/lowcode-components/border/border9/index.less +13 -13
  583. package/src/aldehyde/lowcode-components/border/border9/index.tsx +154 -154
  584. package/src/aldehyde/lowcode-components/capsule-bar-chart/index.tsx +290 -290
  585. package/src/aldehyde/lowcode-components/carousel/index.tsx +218 -218
  586. package/src/aldehyde/lowcode-components/circular-progress-chart/index.tsx +263 -263
  587. package/src/aldehyde/lowcode-components/column-3d-chart/index.tsx +442 -438
  588. package/src/aldehyde/lowcode-components/column-chart/index.tsx +297 -293
  589. package/src/aldehyde/lowcode-components/data-number/index.tsx +219 -219
  590. package/src/aldehyde/lowcode-components/data.d.ts +19 -19
  591. package/src/aldehyde/lowcode-components/decoration/decoration1/index.less +7 -7
  592. package/src/aldehyde/lowcode-components/decoration/decoration1/index.tsx +153 -153
  593. package/src/aldehyde/lowcode-components/decoration/decoration10/index.less +5 -5
  594. package/src/aldehyde/lowcode-components/decoration/decoration10/index.tsx +89 -89
  595. package/src/aldehyde/lowcode-components/decoration/decoration11/index.less +5 -5
  596. package/src/aldehyde/lowcode-components/decoration/decoration11/index.tsx +133 -133
  597. package/src/aldehyde/lowcode-components/decoration/decoration2/index.less +6 -6
  598. package/src/aldehyde/lowcode-components/decoration/decoration2/index.tsx +61 -61
  599. package/src/aldehyde/lowcode-components/decoration/decoration3/index.less +7 -7
  600. package/src/aldehyde/lowcode-components/decoration/decoration3/index.tsx +87 -87
  601. package/src/aldehyde/lowcode-components/decoration/decoration4/index.less +29 -29
  602. package/src/aldehyde/lowcode-components/decoration/decoration4/index.tsx +53 -53
  603. package/src/aldehyde/lowcode-components/decoration/decoration5/index.less +3 -3
  604. package/src/aldehyde/lowcode-components/decoration/decoration5/index.tsx +116 -116
  605. package/src/aldehyde/lowcode-components/decoration/decoration6/index.less +7 -7
  606. package/src/aldehyde/lowcode-components/decoration/decoration6/index.tsx +121 -121
  607. package/src/aldehyde/lowcode-components/decoration/decoration7/index.less +4 -4
  608. package/src/aldehyde/lowcode-components/decoration/decoration7/index.tsx +70 -70
  609. package/src/aldehyde/lowcode-components/decoration/decoration8/index.less +14 -14
  610. package/src/aldehyde/lowcode-components/decoration/decoration8/index.tsx +122 -122
  611. package/src/aldehyde/lowcode-components/decoration/decoration9/index.less +4 -4
  612. package/src/aldehyde/lowcode-components/decoration/decoration9/index.tsx +196 -196
  613. package/src/aldehyde/lowcode-components/effectScatter-map/index.tsx +315 -315
  614. package/src/aldehyde/lowcode-components/effectScatter-map-3d/index.tsx +419 -419
  615. package/src/aldehyde/lowcode-components/gauge-chart/index.tsx +254 -254
  616. package/src/aldehyde/lowcode-components/index.ts +130 -130
  617. package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +304 -300
  618. package/src/aldehyde/lowcode-components/line-chart/index.tsx +294 -290
  619. package/src/aldehyde/lowcode-components/liquid-chart/index.tsx +250 -250
  620. package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +478 -478
  621. package/src/aldehyde/lowcode-components/lowcode-view/component/component-controller.ts +153 -153
  622. package/src/aldehyde/lowcode-components/lowcode-view/component/component-definition.ts +23 -23
  623. package/src/aldehyde/lowcode-components/lowcode-view/component/loading.tsx +20 -20
  624. package/src/aldehyde/lowcode-components/lowcode-view/component/util.ts +27 -27
  625. package/src/aldehyde/lowcode-components/lowcode-view/index.less +19 -19
  626. package/src/aldehyde/lowcode-components/lowcode-view/index.tsx +277 -277
  627. package/src/aldehyde/lowcode-components/lowcode-view/interface.ts +189 -189
  628. package/src/aldehyde/lowcode-components/pie-chart/index.tsx +353 -349
  629. package/src/aldehyde/lowcode-components/progress-chart/index.tsx +295 -295
  630. package/src/aldehyde/lowcode-components/radar-chart/index.tsx +322 -322
  631. package/src/aldehyde/lowcode-components/search-form/index.less +25 -25
  632. package/src/aldehyde/lowcode-components/search-form/index.tsx +121 -121
  633. package/src/aldehyde/lowcode-components/stroke-animation/index.tsx +219 -219
  634. package/src/aldehyde/module/block-menu-tree-drawer.tsx +118 -118
  635. package/src/aldehyde/module/criteria-page.tsx1 +175 -175
  636. package/src/aldehyde/module/draggable-modal.tsx +66 -66
  637. package/src/aldehyde/module/dtmpl-edit-card.tsx +477 -467
  638. package/src/aldehyde/module/dtmpl-edit-drawer.tsx +23 -23
  639. package/src/aldehyde/module/dtmpl-edit-modal.tsx +25 -25
  640. package/src/aldehyde/module/dtmpl-edit-page.tsx +597 -588
  641. package/src/aldehyde/module/dtmpl-editor.tsx +165 -165
  642. package/src/aldehyde/module/dtmpl-view-card.tsx +64 -64
  643. package/src/aldehyde/module/dtmpl-view-drawer.tsx +71 -71
  644. package/src/aldehyde/module/dtmpl-view-modal.tsx +56 -56
  645. package/src/aldehyde/module/embed-dtmpl-edit-page.tsx +137 -137
  646. package/src/aldehyde/module/index.less +4 -4
  647. package/src/aldehyde/module/ltmpl-drawer.tsx +60 -60
  648. package/src/aldehyde/module/ltmpl-modal.tsx +63 -63
  649. package/src/aldehyde/module/ltmpl-table.tsx +379 -379
  650. package/src/aldehyde/module/ttmpl-tree.tsx +47 -47
  651. package/src/aldehyde/routable/dtmpl-route.tsx +173 -173
  652. package/src/aldehyde/routable/import-route.tsx +35 -35
  653. package/src/aldehyde/routable/index.less +25 -25
  654. package/src/aldehyde/routable/ltmpl-route.tsx +539 -539
  655. package/src/aldehyde/routable/splitview-ltmpl-route.tsx +377 -377
  656. package/src/aldehyde/routable/ttmpl-route.tsx +93 -93
  657. package/src/aldehyde/routable/withroute.tsx +36 -36
  658. package/src/aldehyde/sso-Login/index.tsx +73 -73
  659. package/src/aldehyde/sso-Login/service/index.js +16 -16
  660. package/src/aldehyde/sso-Login/service/login.js +75 -75
  661. package/src/aldehyde/table/act-table.tsx +1844 -1838
  662. package/src/aldehyde/table/column/column-builder.tsx +876 -876
  663. package/src/aldehyde/table/column/column-selector.tsx +130 -130
  664. package/src/aldehyde/table/column/index.less +85 -85
  665. package/src/aldehyde/table/column/summary-builder.tsx +712 -712
  666. package/src/aldehyde/table/column/theme-color-getter.tsx +25 -25
  667. package/src/aldehyde/table/control-table-x-axis-wrapper.tsx +80 -80
  668. package/src/aldehyde/table/index.css +211 -211
  669. package/src/aldehyde/table/l2-act-table.tsx +91 -91
  670. package/src/aldehyde/table/modal-select-table.tsx +308 -308
  671. package/src/aldehyde/table/page-chart.less +10 -0
  672. package/src/aldehyde/table/page-chart.tsx +196 -0
  673. package/src/aldehyde/table/page-config-button.tsx +203 -203
  674. package/src/aldehyde/table/pagination.css +14 -14
  675. package/src/aldehyde/table/pagination.tsx +81 -81
  676. package/src/aldehyde/table/query-table.tsx +668 -668
  677. package/src/aldehyde/table/relation-table.tsx +1078 -1078
  678. package/src/aldehyde/table/report-table.tsx +125 -125
  679. package/src/aldehyde/table/resizable-table.tsx +97 -97
  680. package/src/aldehyde/table/row-table.tsx +23 -0
  681. package/src/aldehyde/table/select-table.tsx +559 -559
  682. package/src/aldehyde/table/selected-rows-card.tsx +78 -78
  683. package/src/aldehyde/table/stat/restat.tsx +122 -122
  684. package/src/aldehyde/table/table-util.tsx +25 -25
  685. package/src/aldehyde/tmpl/control-type-supportor.tsx +154 -154
  686. package/src/aldehyde/tmpl/hc-data-source.tsx +574 -574
  687. package/src/aldehyde/tmpl/hcservice-v3.tsx +1590 -1590
  688. package/src/aldehyde/tmpl/interface.tsx +936 -924
  689. package/src/aldehyde/tmpl/model-struc-v3.tsx +111 -111
  690. package/src/aldehyde/tmpl/superagent.js +146 -146
  691. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +585 -585
  692. package/src/aldehyde/tmpl/web-socket.ts +366 -366
  693. package/src/aldehyde/tree/act-tree.tsx +217 -217
  694. package/src/aldehyde/tree/block-menu-auth-tree.tsx +189 -189
  695. package/src/aldehyde/tree/index.css +22 -22
  696. package/src/aldehyde/tree/navigation-tree.tsx +39 -39
  697. package/src/aldehyde/tree/tmpl-tree.tsx +751 -751
  698. package/src/aldehyde/tree/tree-node.tsx +73 -73
  699. package/src/aldehyde/tree/tree-utils.tsx +317 -317
  700. package/src/aldehyde/units/EncryptUtils.js +37 -37
  701. package/src/aldehyde/units/image.d.ts +7 -7
  702. package/src/aldehyde/units/index.tsx +1367 -1367
  703. package/src/aldehyde/units/storage.js +2 -2
  704. package/src/aldehyde/utils/dsu.ts +27 -27
  705. package/src/aldehyde/welcome/HCWelcome.js +404 -404
  706. package/src/aldehyde/welcome/HCWelcome1.js +259 -259
  707. package/src/aldehyde/welcome/components/menu-card.less +96 -96
  708. package/src/aldehyde/welcome/components/menu-card.tsx +70 -70
  709. package/src/aldehyde/welcome/components/page-card.less +49 -49
  710. package/src/aldehyde/welcome/components/page-card.tsx +97 -97
  711. package/src/aldehyde/welcome/components/quick-entrance.less +120 -120
  712. package/src/aldehyde/welcome/components/quick-entrance.tsx +80 -80
  713. package/src/aldehyde/welcome/components/user-menus.less +192 -192
  714. package/src/aldehyde/welcome/components/user-menus.tsx +279 -279
  715. package/src/aldehyde/welcome/components/workbench.less +118 -118
  716. package/src/aldehyde/welcome/components/workbench.tsx +146 -146
  717. package/src/aldehyde/welcome/index.css +13 -13
@@ -1,458 +1,458 @@
1
- import Konva from 'konva';
2
- import { Render } from '../index';
3
- import { SortItem } from '../types';
4
-
5
- interface AlignRect {
6
- x: number;
7
- y: number;
8
- width: number;
9
- height: number;
10
- }
11
-
12
- type SortItemPair = [SortItem, SortItem];
13
-
14
- export class AttractTool {
15
-
16
- private render: Render;
17
- constructor(render: Render) {
18
- this.render = render;
19
- }
20
- // 对齐线
21
- alignLines: Konva.Line[] = [];
22
-
23
- // 对齐线清除
24
- alignLinesClear() {
25
- for (const line of this.alignLines) {
26
- line.destroy();
27
- }
28
- this.alignLines = [];
29
- }
30
-
31
- // 从选中节点 getClientRect 计算真实边界框,绕过 back rect 的 padding
32
- private getSelectingNodesRect(nodes: Konva.Node[]): AlignRect | null {
33
- if (nodes.length === 0) return null;
34
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
35
- for (const node of nodes) {
36
- const r = node.getClientRect();
37
- if (r.x < minX) minX = r.x;
38
- if (r.y < minY) minY = r.y;
39
- if (r.x + r.width > maxX) maxX = r.x + r.width;
40
- if (r.y + r.height > maxY) maxY = r.y + r.height;
41
- }
42
- return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
43
- }
44
-
45
- getSortItems(rect: AlignRect, targetPadding?: number) {
46
- const stageState = this.render.getStageState();
47
- const padding = targetPadding ?? this.render.transformer.padding();
48
- // 横向所有需要判断对齐的 x 坐标
49
- const sortX: Array<SortItem> = [];
50
- // 纵向向所有需要判断对齐的 y 坐标
51
- const sortY: Array<SortItem> = [];
52
- // 选择目标所有的对齐 x(使用实际节点边缘而非 back rect,补偿 padding)
53
- sortX.push(
54
- { value: this.render.toStageValue(rect.x - stageState.x + padding) },
55
- { value: this.render.toStageValue(rect.x - stageState.x + rect.width / 2) },
56
- { value: this.render.toStageValue(rect.x - stageState.x + rect.width - padding) }
57
- );
58
- // 选择目标所有的对齐 y(使用实际节点边缘而非 back rect,补偿 padding)
59
- sortY.push(
60
- { value: this.render.toStageValue(rect.y - stageState.y + padding) },
61
- { value: this.render.toStageValue(rect.y - stageState.y + rect.height / 2) },
62
- { value: this.render.toStageValue(rect.y - stageState.y + rect.height - padding) }
63
- );
64
- // 拖动目标
65
- const targetIds = this.render.selectionTool.selectingNodes.map((o) => o._id);
66
- // 除拖动目标的其他
67
- const otherNodes = this.render.layer.find('.asset').filter((node) => !targetIds.includes(node._id));
68
- // 其他节点所有的 x / y 坐标
69
- for (const node of otherNodes) {
70
- const nodeRect = node.getClientRect();
71
- sortX.push(
72
- { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x) },
73
- { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x + nodeRect.width / 2) },
74
- { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x + nodeRect.width) }
75
- );
76
- sortY.push(
77
- { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y) },
78
- { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y + nodeRect.height / 2) },
79
- { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y + nodeRect.height) }
80
- );
81
- }
82
- sortX.sort((a, b) => a.value - b.value);
83
- sortY.sort((a, b) => a.value - b.value);
84
- return { sortX, sortY };
85
- }
86
-
87
- attractPoint = (pos: Konva.Vector2d) => {
88
- this.alignLinesClear(); // 对齐线清除
89
- const stageState = this.render.getStageState();
90
- const showGrid = this.render.showGrid; // 是否显示网格,不显示网格则不网格吸附
91
- let newPosX = pos.x;
92
- let newPosY = pos.y;
93
- let isAttract = false;
94
- let pairX: SortItemPair | null = null;
95
- let pairY: SortItemPair | null = null;
96
- // 对齐线 磁吸逻辑
97
- if (!this.render.config.readonly && this.render.config.attractNode) {
98
- const sortX = [{ value: this.render.toStageValue(newPosX - stageState.x) }] as SortItem[],
99
- sortY = [{ value: this.render.toStageValue(newPosY - stageState.y) }] as SortItem[];
100
- // x 最短距离
101
- let XMin = Infinity;
102
- // x 最短距离的【对】(多个)
103
- let pairXMin: Array<SortItemPair> = [];
104
- // y 最短距离
105
- let YMin = Infinity;
106
- // y 最短距离的【对】(多个)
107
- let pairYMin: Array<SortItemPair> = [];
108
- // 一对对比较距离,记录最短距离的【对】
109
- // 必须是 选择目标 与 其他节点 成【对】
110
- // 可能有多个这样的【对】
111
- for (let i = 0; i < sortX.length - 1; i++) {
112
- // 相邻两个点,必须为 目标节点 + 非目标节点
113
- if ((sortX[i].id === void 0 && sortX[i + 1].id !== void 0) || (sortX[i].id !== void 0 && sortX[i + 1].id === void 0)) {
114
- // 相邻两个点的 x 距离
115
- const offset = Math.abs(sortX[i].value - sortX[i + 1].value);
116
- if (offset < XMin) {
117
- // 更新 x 最短距离 记录
118
- XMin = offset;
119
- // 更新 x 最短距离的【对】 记录
120
- pairXMin = [[sortX[i], sortX[i + 1]]];
121
- } else if (offset === XMin) {
122
- // 存在多个 x 最短距离
123
- pairXMin.push([sortX[i], sortX[i + 1]]);
124
- }
125
- }
126
- }
127
- for (let i = 0; i < sortY.length - 1; i++) {
128
- // 相邻两个点,必须为 目标节点 + 非目标节点
129
- if ((sortY[i].id === void 0 && sortY[i + 1].id !== void 0) || (sortY[i].id !== void 0 && sortY[i + 1].id === void 0)) {
130
- // 相邻两个点的 y 距离
131
- const offset = Math.abs(sortY[i].value - sortY[i + 1].value);
132
- if (offset < YMin) {
133
- // 更新 y 最短距离 记录
134
- YMin = offset;
135
- // 更新 y 最短距离的【对】 记录
136
- pairYMin = [[sortY[i], sortY[i + 1]]];
137
- } else if (offset === YMin) {
138
- // 存在多个 y 最短距离
139
- pairYMin.push([sortY[i], sortY[i + 1]]);
140
- }
141
- }
142
- }
143
- // 取第一【对】,用于判断距离是否在阈值内
144
- if (pairXMin[0]) {
145
- if (Math.abs(pairXMin[0][0].value - pairXMin[0][1].value) < this.render.bgSize / 2) {
146
- pairX = pairXMin[0];
147
- }
148
- }
149
- if (pairYMin[0]) {
150
- if (Math.abs(pairYMin[0][0].value - pairYMin[0][1].value) < this.render.bgSize / 2) {
151
- pairY = pairYMin[0];
152
- }
153
- }
154
- // 优先对齐节点
155
- // 存在 1或多个 x 最短距离 满足阈值
156
- if (pairX?.length === 2) {
157
- for (const pair of pairXMin) {
158
- // 【对】里的那个非目标节点
159
- const other = pair.find((o) => o.id !== void 0);
160
- if (other) { // x 对齐线
161
- const line = new Konva.Line({
162
- points: [[other.value, this.render.toStageValue(-stageState.y)], [other.value, this.render.toStageValue(this.render.stage.height() - stageState.y)]].flat(),
163
- stroke: 'blue',
164
- strokeWidth: this.render.toStageValue(1),
165
- dash: [4, 4],
166
- listening: false
167
- });
168
- this.alignLines.push(line);
169
- this.render.layerCover.add(line);
170
- }
171
- }
172
- // 磁贴第一个【对】
173
- const target = pairX.find((o) => o.id === void 0);
174
- const other = pairX.find((o) => o.id !== void 0);
175
- if (target && other) {
176
- // 磁铁坐标值
177
- newPosX = newPosX - this.render.toBoardValue(target.value - other.value);
178
- isAttract = true;
179
- }
180
- }
181
- // 存在 1或多个 y 最短距离 满足阈值
182
- if (pairY?.length === 2) {
183
- for (const pair of pairYMin) {
184
- // 【对】里的那个非目标节点
185
- const other = pair.find((o) => o.id !== void 0);
186
- if (other) {
187
- // y 对齐线
188
- const line = new Konva.Line({
189
- points: [[this.render.toStageValue(-stageState.x), other.value], [this.render.toStageValue(this.render.stage.width() - stageState.x), other.value]].flat(),
190
- stroke: 'blue',
191
- strokeWidth: this.render.toStageValue(1),
192
- dash: [4, 4],
193
- listening: false
194
- });
195
- this.alignLines.push(line);
196
- this.render.layerCover.add(line);
197
- }
198
- }
199
- // 磁贴第一个【对】
200
- const target = pairY.find((o) => o.id === void 0);
201
- const other = pairY.find((o) => o.id !== void 0);
202
- if (target && other) {
203
- // 磁铁坐标值
204
- newPosY = newPosY - this.render.toBoardValue(target.value - other.value);
205
- isAttract = true;
206
- }
207
- }
208
- }
209
- if (!this.render.config.readonly && this.render.config.attractBg && showGrid) {
210
- // 没有 x 对齐节点
211
- if (pairX === null) {
212
- const logicLeftX = this.render.toStageValue(newPosX - stageState.x); // x坐标
213
- const logicNumLeftX = Math.round(logicLeftX / this.render.bgSize); // x单元格个数
214
- const logicClosestLeftX = logicNumLeftX * this.render.bgSize; // x磁贴目标坐标
215
- const logicDiffLeftX = Math.abs(logicLeftX - logicClosestLeftX); // x磁贴偏移量
216
- const logicRightX = this.render.toStageValue(newPosX - stageState.x); // x坐标
217
- const logicNumRightX = Math.round(logicRightX / this.render.bgSize); // x单元格个数
218
- const logicClosestRightX = logicNumRightX * this.render.bgSize; // x磁贴目标坐标
219
- const logicDiffRightX = Math.abs(logicRightX - logicClosestRightX); // x磁贴偏移量
220
- // stage 逻辑边界磁贴
221
- const logicStageRightX = stageState.width;
222
- const logicDiffStageRightX = Math.abs(logicRightX - logicStageRightX);
223
- // 距离近优先
224
- for (const diff of [{ type: 'leftX', value: logicDiffLeftX }, { type: 'rightX', value: logicDiffRightX }, { type: 'stageRightX', value: logicDiffStageRightX }].sort((a, b) => a.value - b.value)) {
225
- if (diff.value < 5) {
226
- if (diff.type === 'stageRightX') {
227
- newPosX = this.render.toBoardValue(logicStageRightX) + stageState.x;
228
- } else if (diff.type === 'leftX') {
229
- newPosX = this.render.toBoardValue(logicClosestLeftX) + stageState.x;
230
- } else if (diff.type === 'rightX') {
231
- newPosX = this.render.toBoardValue(logicClosestRightX) + stageState.x;
232
- }
233
- isAttract = true;
234
- break;
235
- }
236
- }
237
- }
238
- // 没有 y 对齐节点
239
- if (pairY === null) {
240
- const logicTopY = this.render.toStageValue(newPosY - stageState.y); // y坐标
241
- const logicNumTopY = Math.round(logicTopY / this.render.bgSize); // y单元格个数
242
- const logicClosestTopY = logicNumTopY * this.render.bgSize; // y磁贴目标坐标
243
- const logicDiffTopY = Math.abs(logicTopY - logicClosestTopY); // y磁贴偏移量
244
- const logicBottomY = this.render.toStageValue(newPosY - stageState.y); // y坐标
245
- const logicNumBottomY = Math.round(logicBottomY / this.render.bgSize); // y单元格个数
246
- const logicClosestBottomY = logicNumBottomY * this.render.bgSize; // y磁贴目标坐标
247
- const logicDiffBottomY = Math.abs(logicBottomY - logicClosestBottomY); // y磁贴偏移量
248
- // stage 逻辑边界磁贴
249
- const logicStageBottomY = stageState.height;
250
- const logicDiffStageBottomY = Math.abs(logicBottomY - logicStageBottomY);
251
- // 距离近优先
252
- for (const diff of [{ type: 'topY', value: logicDiffTopY }, { type: 'bottomY', value: logicDiffBottomY }, { type: 'stageBottomY', value: logicDiffStageBottomY }].sort((a, b) => a.value - b.value)) {
253
- if (diff.value < 5) {
254
- if (diff.type === 'stageBottomY') {
255
- newPosY = this.render.toBoardValue(logicStageBottomY) + stageState.y;
256
- } else if (diff.type === 'topY') {
257
- newPosY = this.render.toBoardValue(logicClosestTopY) + stageState.y;
258
- } else if (diff.type === 'bottomY') {
259
- newPosY = this.render.toBoardValue(logicClosestBottomY) + stageState.y;
260
- }
261
- isAttract = true;
262
- break;
263
- }
264
- }
265
- }
266
- }
267
- return { pos: { x: newPosX, y: newPosY }, isAttract };
268
- }
269
- // 磁吸逻辑
270
- attractTransformer = (rect: AlignRect) => {
271
- // 对齐线清除
272
- this.alignLinesClear();
273
- const stageState = this.render.getStageState();
274
- const width = this.render.transformer.width();
275
- const height = this.render.transformer.height();
276
- const showGrid = this.render.showGrid; // 是否显示网格,不显示网格则不网格吸附
277
- let newPosX = rect.x;
278
- let newPosY = rect.y;
279
- let isAttract = false;
280
- let pairX: SortItemPair | null = null;
281
- let pairY: SortItemPair | null = null;
282
- // 对齐线 磁吸逻辑
283
- if (!this.render.config.readonly && this.render.config.attractNode) {
284
- // 从选中节点的真实 getClientRect 计算边界框,避免 back rect 的 padding 补偿引入亚像素偏差
285
- const selectingNodes = this.render.selectionTool.selectingNodes;
286
- const nodeRect = this.getSelectingNodesRect(selectingNodes) ?? rect;
287
- const { sortX, sortY } = this.getSortItems(nodeRect, 0);
288
- // x 最短距离
289
- let XMin = Infinity;
290
- // x 最短距离的【对】(多个)
291
- let pairXMin: Array<SortItemPair> = [];
292
- // y 最短距离
293
- let YMin = Infinity;
294
- // y 最短距离的【对】(多个)
295
- let pairYMin: Array<SortItemPair> = [];
296
- // 一对对比较距离,记录最短距离的【对】
297
- // 必须是 选择目标 与 其他节点 成【对】
298
- // 可能有多个这样的【对】
299
- for (let i = 0; i < sortX.length - 1; i++) {
300
- // 相邻两个点,必须为 目标节点 + 非目标节点
301
- if ((sortX[i].id === void 0 && sortX[i + 1].id !== void 0) || (sortX[i].id !== void 0 && sortX[i + 1].id === void 0)) {
302
- // 相邻两个点的 x 距离
303
- const offset = Math.abs(sortX[i].value - sortX[i + 1].value)
304
- if (offset < XMin) {
305
- // 更新 x 最短距离 记录
306
- XMin = offset;
307
- // 更新 x 最短距离的【对】 记录
308
- pairXMin = [[sortX[i], sortX[i + 1]]];
309
- } else if (offset === XMin) {
310
- // 存在多个 x 最短距离
311
- pairXMin.push([sortX[i], sortX[i + 1]]);
312
- }
313
- }
314
- }
315
- for (let i = 0; i < sortY.length - 1; i++) {
316
- // 相邻两个点,必须为 目标节点 + 非目标节点
317
- if ((sortY[i].id === void 0 && sortY[i + 1].id !== void 0) || (sortY[i].id !== void 0 && sortY[i + 1].id === void 0)) {
318
- // 相邻两个点的 y 距离
319
- const offset = Math.abs(sortY[i].value - sortY[i + 1].value);
320
- if (offset < YMin) {
321
- // 更新 y 最短距离 记录
322
- YMin = offset;
323
- // 更新 y 最短距离的【对】 记录
324
- pairYMin = [[sortY[i], sortY[i + 1]]];
325
- } else if (offset === YMin) {
326
- // 存在多个 y 最短距离
327
- pairYMin.push([sortY[i], sortY[i + 1]]);
328
- }
329
- }
330
- }
331
- // 取第一【对】,用于判断距离是否在阈值内
332
- if (pairXMin[0]) {
333
- if (Math.abs(pairXMin[0][0].value - pairXMin[0][1].value) < this.render.bgSize / 2) {
334
- pairX = pairXMin[0];
335
- }
336
- }
337
- if (pairYMin[0]) {
338
- if (Math.abs(pairYMin[0][0].value - pairYMin[0][1].value) < this.render.bgSize / 2) {
339
- pairY = pairYMin[0];
340
- }
341
- }
342
- // 优先对齐节点
343
- // 存在 1或多个 x 最短距离 满足阈值
344
- if (pairX?.length === 2) {
345
- for (const pair of pairXMin) {
346
- // 【对】里的那个非目标节点
347
- const other = pair.find((o) => o.id !== void 0);
348
- if (other) {
349
- // x 对齐线
350
- const line = new Konva.Line({
351
- points: [[other.value, this.render.toStageValue(-stageState.y)], [other.value, this.render.toStageValue(this.render.stage.height() - stageState.y)]].flat(),
352
- stroke: 'blue',
353
- strokeWidth: this.render.toStageValue(1),
354
- dash: [4, 4],
355
- listening: false
356
- });
357
- this.alignLines.push(line);
358
- this.render.layerCover.add(line);
359
- }
360
- }
361
- // 磁贴第一个【对】
362
- const target = pairX.find((o) => o.id === void 0);
363
- const other = pairX.find((o) => o.id !== void 0);
364
- if (target && other) {
365
- // 磁贴坐标值
366
- newPosX = newPosX - this.render.toBoardValue(target.value - other.value);
367
- isAttract = true;
368
- }
369
- }
370
- // 存在 1或多个 y 最短距离 满足阈值
371
- if (pairY?.length === 2) {
372
- for (const pair of pairYMin) {
373
- // 【对】里的那个非目标节点
374
- const other = pair.find((o) => o.id !== void 0);
375
- if (other) {
376
- // y 对齐线
377
- const line = new Konva.Line({
378
- points: [[this.render.toStageValue(-stageState.x), other.value], [this.render.toStageValue(this.render.stage.width() - stageState.x), other.value]].flat(),
379
- stroke: 'blue',
380
- strokeWidth: this.render.toStageValue(1),
381
- dash: [4, 4],
382
- listening: false
383
- });
384
- this.alignLines.push(line);
385
- this.render.layerCover.add(line);
386
- }
387
- }
388
- // 磁贴第一个【对】
389
- const target = pairY.find((o) => o.id === void 0);
390
- const other = pairY.find((o) => o.id !== void 0);
391
- if (target && other) {
392
- // 磁贴坐标值
393
- newPosY = newPosY - this.render.toBoardValue(target.value - other.value);
394
- isAttract = true;
395
- }
396
- }
397
- }
398
- if (!this.render.config.readonly && this.render.config.attractBg && showGrid) { // 显示网格则执行网格磁吸
399
- // 没有 x 对齐节点
400
- if (pairX === null) {
401
- const logicLeftX = this.render.toStageValue(newPosX - stageState.x); // x坐标
402
- const logicNumLeftX = Math.round(logicLeftX / this.render.bgSize); // x单元格个数
403
- const logicClosestLeftX = logicNumLeftX * this.render.bgSize; // x磁贴目标坐标
404
- const logicDiffLeftX = Math.abs(logicLeftX - logicClosestLeftX); // x磁贴偏移量
405
- const logicRightX = this.render.toStageValue(newPosX + width - stageState.x); // x坐标
406
- const logicNumRightX = Math.round(logicRightX / this.render.bgSize); // x单元格个数
407
- const logicClosestRightX = logicNumRightX * this.render.bgSize; // x磁贴目标坐标
408
- const logicDiffRightX = Math.abs(logicRightX - logicClosestRightX); // x磁贴偏移量
409
- // stage 逻辑边界磁贴
410
- const logicStageRightX = stageState.width;
411
- const logicDiffStageRightX = Math.abs(logicRightX - logicStageRightX);
412
- // 距离近优先
413
- for (const diff of [{ type: 'leftX', value: logicDiffLeftX }, { type: 'rightX', value: logicDiffRightX }, { type: 'stageRightX', value: logicDiffStageRightX }].sort((a, b) => a.value - b.value)) {
414
- if (diff.value < 5) {
415
- if (diff.type === 'stageRightX') {
416
- newPosX = this.render.toBoardValue(logicStageRightX) + stageState.x - width;
417
- } else if (diff.type === 'leftX') {
418
- newPosX = this.render.toBoardValue(logicClosestLeftX) + stageState.x;
419
- } else if (diff.type === 'rightX') {
420
- newPosX = this.render.toBoardValue(logicClosestRightX) + stageState.x - width;
421
- }
422
- isAttract = true;
423
- break;
424
- }
425
- }
426
- }
427
- // 没有 y 对齐节点
428
- if (pairY === null) {
429
- const logicTopY = this.render.toStageValue(newPosY - stageState.y); // y坐标
430
- const logicNumTopY = Math.round(logicTopY / this.render.bgSize); // y单元格个数
431
- const logicClosestTopY = logicNumTopY * this.render.bgSize; // y磁贴目标坐标
432
- const logicDiffTopY = Math.abs(logicTopY - logicClosestTopY); // y磁贴偏移量
433
- const logicBottomY = this.render.toStageValue(newPosY + height - stageState.y); // y坐标
434
- const logicNumBottomY = Math.round(logicBottomY / this.render.bgSize); // y单元格个数
435
- const logicClosestBottomY = logicNumBottomY * this.render.bgSize; // y磁贴目标坐标
436
- const logicDiffBottomY = Math.abs(logicBottomY - logicClosestBottomY); // y磁贴偏移量
437
- // stage 逻辑边界磁贴
438
- const logicStageBottomY = stageState.height;
439
- const logicDiffStageBottomY = Math.abs(logicBottomY - logicStageBottomY);
440
- // 距离近优先
441
- for (const diff of [{ type: 'topY', value: logicDiffTopY }, { type: 'bottomY', value: logicDiffBottomY }, { type: 'stageBottomY', value: logicDiffStageBottomY }].sort((a, b) => a.value - b.value)) {
442
- if (diff.value < 5) {
443
- if (diff.type === 'stageBottomY') {
444
- newPosY = this.render.toBoardValue(logicStageBottomY) + stageState.y - height;
445
- } else if (diff.type === 'topY') {
446
- newPosY = this.render.toBoardValue(logicClosestTopY) + stageState.y;
447
- } else if (diff.type === 'bottomY') {
448
- newPosY = this.render.toBoardValue(logicClosestBottomY) + stageState.y - height;
449
- }
450
- isAttract = true;
451
- break;
452
- }
453
- }
454
- }
455
- }
456
- return { pos: { x: newPosX, y: newPosY }, isAttract };
457
- }
1
+ import Konva from 'konva';
2
+ import { Render } from '../index';
3
+ import { SortItem } from '../types';
4
+
5
+ interface AlignRect {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ }
11
+
12
+ type SortItemPair = [SortItem, SortItem];
13
+
14
+ export class AttractTool {
15
+
16
+ private render: Render;
17
+ constructor(render: Render) {
18
+ this.render = render;
19
+ }
20
+ // 对齐线
21
+ alignLines: Konva.Line[] = [];
22
+
23
+ // 对齐线清除
24
+ alignLinesClear() {
25
+ for (const line of this.alignLines) {
26
+ line.destroy();
27
+ }
28
+ this.alignLines = [];
29
+ }
30
+
31
+ // 从选中节点 getClientRect 计算真实边界框,绕过 back rect 的 padding
32
+ private getSelectingNodesRect(nodes: Konva.Node[]): AlignRect | null {
33
+ if (nodes.length === 0) return null;
34
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
35
+ for (const node of nodes) {
36
+ const r = node.getClientRect();
37
+ if (r.x < minX) minX = r.x;
38
+ if (r.y < minY) minY = r.y;
39
+ if (r.x + r.width > maxX) maxX = r.x + r.width;
40
+ if (r.y + r.height > maxY) maxY = r.y + r.height;
41
+ }
42
+ return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
43
+ }
44
+
45
+ getSortItems(rect: AlignRect, targetPadding?: number) {
46
+ const stageState = this.render.getStageState();
47
+ const padding = targetPadding ?? this.render.transformer.padding();
48
+ // 横向所有需要判断对齐的 x 坐标
49
+ const sortX: Array<SortItem> = [];
50
+ // 纵向向所有需要判断对齐的 y 坐标
51
+ const sortY: Array<SortItem> = [];
52
+ // 选择目标所有的对齐 x(使用实际节点边缘而非 back rect,补偿 padding)
53
+ sortX.push(
54
+ { value: this.render.toStageValue(rect.x - stageState.x + padding) },
55
+ { value: this.render.toStageValue(rect.x - stageState.x + rect.width / 2) },
56
+ { value: this.render.toStageValue(rect.x - stageState.x + rect.width - padding) }
57
+ );
58
+ // 选择目标所有的对齐 y(使用实际节点边缘而非 back rect,补偿 padding)
59
+ sortY.push(
60
+ { value: this.render.toStageValue(rect.y - stageState.y + padding) },
61
+ { value: this.render.toStageValue(rect.y - stageState.y + rect.height / 2) },
62
+ { value: this.render.toStageValue(rect.y - stageState.y + rect.height - padding) }
63
+ );
64
+ // 拖动目标
65
+ const targetIds = this.render.selectionTool.selectingNodes.map((o) => o._id);
66
+ // 除拖动目标的其他
67
+ const otherNodes = this.render.layer.find('.asset').filter((node) => !targetIds.includes(node._id));
68
+ // 其他节点所有的 x / y 坐标
69
+ for (const node of otherNodes) {
70
+ const nodeRect = node.getClientRect();
71
+ sortX.push(
72
+ { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x) },
73
+ { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x + nodeRect.width / 2) },
74
+ { id: node._id, value: this.render.toStageValue(nodeRect.x - stageState.x + nodeRect.width) }
75
+ );
76
+ sortY.push(
77
+ { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y) },
78
+ { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y + nodeRect.height / 2) },
79
+ { id: node._id, value: this.render.toStageValue(nodeRect.y - stageState.y + nodeRect.height) }
80
+ );
81
+ }
82
+ sortX.sort((a, b) => a.value - b.value);
83
+ sortY.sort((a, b) => a.value - b.value);
84
+ return { sortX, sortY };
85
+ }
86
+
87
+ attractPoint = (pos: Konva.Vector2d) => {
88
+ this.alignLinesClear(); // 对齐线清除
89
+ const stageState = this.render.getStageState();
90
+ const showGrid = this.render.showGrid; // 是否显示网格,不显示网格则不网格吸附
91
+ let newPosX = pos.x;
92
+ let newPosY = pos.y;
93
+ let isAttract = false;
94
+ let pairX: SortItemPair | null = null;
95
+ let pairY: SortItemPair | null = null;
96
+ // 对齐线 磁吸逻辑
97
+ if (!this.render.config.readonly && this.render.config.attractNode) {
98
+ const sortX = [{ value: this.render.toStageValue(newPosX - stageState.x) }] as SortItem[],
99
+ sortY = [{ value: this.render.toStageValue(newPosY - stageState.y) }] as SortItem[];
100
+ // x 最短距离
101
+ let XMin = Infinity;
102
+ // x 最短距离的【对】(多个)
103
+ let pairXMin: Array<SortItemPair> = [];
104
+ // y 最短距离
105
+ let YMin = Infinity;
106
+ // y 最短距离的【对】(多个)
107
+ let pairYMin: Array<SortItemPair> = [];
108
+ // 一对对比较距离,记录最短距离的【对】
109
+ // 必须是 选择目标 与 其他节点 成【对】
110
+ // 可能有多个这样的【对】
111
+ for (let i = 0; i < sortX.length - 1; i++) {
112
+ // 相邻两个点,必须为 目标节点 + 非目标节点
113
+ if ((sortX[i].id === void 0 && sortX[i + 1].id !== void 0) || (sortX[i].id !== void 0 && sortX[i + 1].id === void 0)) {
114
+ // 相邻两个点的 x 距离
115
+ const offset = Math.abs(sortX[i].value - sortX[i + 1].value);
116
+ if (offset < XMin) {
117
+ // 更新 x 最短距离 记录
118
+ XMin = offset;
119
+ // 更新 x 最短距离的【对】 记录
120
+ pairXMin = [[sortX[i], sortX[i + 1]]];
121
+ } else if (offset === XMin) {
122
+ // 存在多个 x 最短距离
123
+ pairXMin.push([sortX[i], sortX[i + 1]]);
124
+ }
125
+ }
126
+ }
127
+ for (let i = 0; i < sortY.length - 1; i++) {
128
+ // 相邻两个点,必须为 目标节点 + 非目标节点
129
+ if ((sortY[i].id === void 0 && sortY[i + 1].id !== void 0) || (sortY[i].id !== void 0 && sortY[i + 1].id === void 0)) {
130
+ // 相邻两个点的 y 距离
131
+ const offset = Math.abs(sortY[i].value - sortY[i + 1].value);
132
+ if (offset < YMin) {
133
+ // 更新 y 最短距离 记录
134
+ YMin = offset;
135
+ // 更新 y 最短距离的【对】 记录
136
+ pairYMin = [[sortY[i], sortY[i + 1]]];
137
+ } else if (offset === YMin) {
138
+ // 存在多个 y 最短距离
139
+ pairYMin.push([sortY[i], sortY[i + 1]]);
140
+ }
141
+ }
142
+ }
143
+ // 取第一【对】,用于判断距离是否在阈值内
144
+ if (pairXMin[0]) {
145
+ if (Math.abs(pairXMin[0][0].value - pairXMin[0][1].value) < this.render.bgSize / 2) {
146
+ pairX = pairXMin[0];
147
+ }
148
+ }
149
+ if (pairYMin[0]) {
150
+ if (Math.abs(pairYMin[0][0].value - pairYMin[0][1].value) < this.render.bgSize / 2) {
151
+ pairY = pairYMin[0];
152
+ }
153
+ }
154
+ // 优先对齐节点
155
+ // 存在 1或多个 x 最短距离 满足阈值
156
+ if (pairX?.length === 2) {
157
+ for (const pair of pairXMin) {
158
+ // 【对】里的那个非目标节点
159
+ const other = pair.find((o) => o.id !== void 0);
160
+ if (other) { // x 对齐线
161
+ const line = new Konva.Line({
162
+ points: [[other.value, this.render.toStageValue(-stageState.y)], [other.value, this.render.toStageValue(this.render.stage.height() - stageState.y)]].flat(),
163
+ stroke: 'blue',
164
+ strokeWidth: this.render.toStageValue(1),
165
+ dash: [4, 4],
166
+ listening: false
167
+ });
168
+ this.alignLines.push(line);
169
+ this.render.layerCover.add(line);
170
+ }
171
+ }
172
+ // 磁贴第一个【对】
173
+ const target = pairX.find((o) => o.id === void 0);
174
+ const other = pairX.find((o) => o.id !== void 0);
175
+ if (target && other) {
176
+ // 磁铁坐标值
177
+ newPosX = newPosX - this.render.toBoardValue(target.value - other.value);
178
+ isAttract = true;
179
+ }
180
+ }
181
+ // 存在 1或多个 y 最短距离 满足阈值
182
+ if (pairY?.length === 2) {
183
+ for (const pair of pairYMin) {
184
+ // 【对】里的那个非目标节点
185
+ const other = pair.find((o) => o.id !== void 0);
186
+ if (other) {
187
+ // y 对齐线
188
+ const line = new Konva.Line({
189
+ points: [[this.render.toStageValue(-stageState.x), other.value], [this.render.toStageValue(this.render.stage.width() - stageState.x), other.value]].flat(),
190
+ stroke: 'blue',
191
+ strokeWidth: this.render.toStageValue(1),
192
+ dash: [4, 4],
193
+ listening: false
194
+ });
195
+ this.alignLines.push(line);
196
+ this.render.layerCover.add(line);
197
+ }
198
+ }
199
+ // 磁贴第一个【对】
200
+ const target = pairY.find((o) => o.id === void 0);
201
+ const other = pairY.find((o) => o.id !== void 0);
202
+ if (target && other) {
203
+ // 磁铁坐标值
204
+ newPosY = newPosY - this.render.toBoardValue(target.value - other.value);
205
+ isAttract = true;
206
+ }
207
+ }
208
+ }
209
+ if (!this.render.config.readonly && this.render.config.attractBg && showGrid) {
210
+ // 没有 x 对齐节点
211
+ if (pairX === null) {
212
+ const logicLeftX = this.render.toStageValue(newPosX - stageState.x); // x坐标
213
+ const logicNumLeftX = Math.round(logicLeftX / this.render.bgSize); // x单元格个数
214
+ const logicClosestLeftX = logicNumLeftX * this.render.bgSize; // x磁贴目标坐标
215
+ const logicDiffLeftX = Math.abs(logicLeftX - logicClosestLeftX); // x磁贴偏移量
216
+ const logicRightX = this.render.toStageValue(newPosX - stageState.x); // x坐标
217
+ const logicNumRightX = Math.round(logicRightX / this.render.bgSize); // x单元格个数
218
+ const logicClosestRightX = logicNumRightX * this.render.bgSize; // x磁贴目标坐标
219
+ const logicDiffRightX = Math.abs(logicRightX - logicClosestRightX); // x磁贴偏移量
220
+ // stage 逻辑边界磁贴
221
+ const logicStageRightX = stageState.width;
222
+ const logicDiffStageRightX = Math.abs(logicRightX - logicStageRightX);
223
+ // 距离近优先
224
+ for (const diff of [{ type: 'leftX', value: logicDiffLeftX }, { type: 'rightX', value: logicDiffRightX }, { type: 'stageRightX', value: logicDiffStageRightX }].sort((a, b) => a.value - b.value)) {
225
+ if (diff.value < 5) {
226
+ if (diff.type === 'stageRightX') {
227
+ newPosX = this.render.toBoardValue(logicStageRightX) + stageState.x;
228
+ } else if (diff.type === 'leftX') {
229
+ newPosX = this.render.toBoardValue(logicClosestLeftX) + stageState.x;
230
+ } else if (diff.type === 'rightX') {
231
+ newPosX = this.render.toBoardValue(logicClosestRightX) + stageState.x;
232
+ }
233
+ isAttract = true;
234
+ break;
235
+ }
236
+ }
237
+ }
238
+ // 没有 y 对齐节点
239
+ if (pairY === null) {
240
+ const logicTopY = this.render.toStageValue(newPosY - stageState.y); // y坐标
241
+ const logicNumTopY = Math.round(logicTopY / this.render.bgSize); // y单元格个数
242
+ const logicClosestTopY = logicNumTopY * this.render.bgSize; // y磁贴目标坐标
243
+ const logicDiffTopY = Math.abs(logicTopY - logicClosestTopY); // y磁贴偏移量
244
+ const logicBottomY = this.render.toStageValue(newPosY - stageState.y); // y坐标
245
+ const logicNumBottomY = Math.round(logicBottomY / this.render.bgSize); // y单元格个数
246
+ const logicClosestBottomY = logicNumBottomY * this.render.bgSize; // y磁贴目标坐标
247
+ const logicDiffBottomY = Math.abs(logicBottomY - logicClosestBottomY); // y磁贴偏移量
248
+ // stage 逻辑边界磁贴
249
+ const logicStageBottomY = stageState.height;
250
+ const logicDiffStageBottomY = Math.abs(logicBottomY - logicStageBottomY);
251
+ // 距离近优先
252
+ for (const diff of [{ type: 'topY', value: logicDiffTopY }, { type: 'bottomY', value: logicDiffBottomY }, { type: 'stageBottomY', value: logicDiffStageBottomY }].sort((a, b) => a.value - b.value)) {
253
+ if (diff.value < 5) {
254
+ if (diff.type === 'stageBottomY') {
255
+ newPosY = this.render.toBoardValue(logicStageBottomY) + stageState.y;
256
+ } else if (diff.type === 'topY') {
257
+ newPosY = this.render.toBoardValue(logicClosestTopY) + stageState.y;
258
+ } else if (diff.type === 'bottomY') {
259
+ newPosY = this.render.toBoardValue(logicClosestBottomY) + stageState.y;
260
+ }
261
+ isAttract = true;
262
+ break;
263
+ }
264
+ }
265
+ }
266
+ }
267
+ return { pos: { x: newPosX, y: newPosY }, isAttract };
268
+ }
269
+ // 磁吸逻辑
270
+ attractTransformer = (rect: AlignRect) => {
271
+ // 对齐线清除
272
+ this.alignLinesClear();
273
+ const stageState = this.render.getStageState();
274
+ const width = this.render.transformer.width();
275
+ const height = this.render.transformer.height();
276
+ const showGrid = this.render.showGrid; // 是否显示网格,不显示网格则不网格吸附
277
+ let newPosX = rect.x;
278
+ let newPosY = rect.y;
279
+ let isAttract = false;
280
+ let pairX: SortItemPair | null = null;
281
+ let pairY: SortItemPair | null = null;
282
+ // 对齐线 磁吸逻辑
283
+ if (!this.render.config.readonly && this.render.config.attractNode) {
284
+ // 从选中节点的真实 getClientRect 计算边界框,避免 back rect 的 padding 补偿引入亚像素偏差
285
+ const selectingNodes = this.render.selectionTool.selectingNodes;
286
+ const nodeRect = this.getSelectingNodesRect(selectingNodes) ?? rect;
287
+ const { sortX, sortY } = this.getSortItems(nodeRect, 0);
288
+ // x 最短距离
289
+ let XMin = Infinity;
290
+ // x 最短距离的【对】(多个)
291
+ let pairXMin: Array<SortItemPair> = [];
292
+ // y 最短距离
293
+ let YMin = Infinity;
294
+ // y 最短距离的【对】(多个)
295
+ let pairYMin: Array<SortItemPair> = [];
296
+ // 一对对比较距离,记录最短距离的【对】
297
+ // 必须是 选择目标 与 其他节点 成【对】
298
+ // 可能有多个这样的【对】
299
+ for (let i = 0; i < sortX.length - 1; i++) {
300
+ // 相邻两个点,必须为 目标节点 + 非目标节点
301
+ if ((sortX[i].id === void 0 && sortX[i + 1].id !== void 0) || (sortX[i].id !== void 0 && sortX[i + 1].id === void 0)) {
302
+ // 相邻两个点的 x 距离
303
+ const offset = Math.abs(sortX[i].value - sortX[i + 1].value)
304
+ if (offset < XMin) {
305
+ // 更新 x 最短距离 记录
306
+ XMin = offset;
307
+ // 更新 x 最短距离的【对】 记录
308
+ pairXMin = [[sortX[i], sortX[i + 1]]];
309
+ } else if (offset === XMin) {
310
+ // 存在多个 x 最短距离
311
+ pairXMin.push([sortX[i], sortX[i + 1]]);
312
+ }
313
+ }
314
+ }
315
+ for (let i = 0; i < sortY.length - 1; i++) {
316
+ // 相邻两个点,必须为 目标节点 + 非目标节点
317
+ if ((sortY[i].id === void 0 && sortY[i + 1].id !== void 0) || (sortY[i].id !== void 0 && sortY[i + 1].id === void 0)) {
318
+ // 相邻两个点的 y 距离
319
+ const offset = Math.abs(sortY[i].value - sortY[i + 1].value);
320
+ if (offset < YMin) {
321
+ // 更新 y 最短距离 记录
322
+ YMin = offset;
323
+ // 更新 y 最短距离的【对】 记录
324
+ pairYMin = [[sortY[i], sortY[i + 1]]];
325
+ } else if (offset === YMin) {
326
+ // 存在多个 y 最短距离
327
+ pairYMin.push([sortY[i], sortY[i + 1]]);
328
+ }
329
+ }
330
+ }
331
+ // 取第一【对】,用于判断距离是否在阈值内
332
+ if (pairXMin[0]) {
333
+ if (Math.abs(pairXMin[0][0].value - pairXMin[0][1].value) < this.render.bgSize / 2) {
334
+ pairX = pairXMin[0];
335
+ }
336
+ }
337
+ if (pairYMin[0]) {
338
+ if (Math.abs(pairYMin[0][0].value - pairYMin[0][1].value) < this.render.bgSize / 2) {
339
+ pairY = pairYMin[0];
340
+ }
341
+ }
342
+ // 优先对齐节点
343
+ // 存在 1或多个 x 最短距离 满足阈值
344
+ if (pairX?.length === 2) {
345
+ for (const pair of pairXMin) {
346
+ // 【对】里的那个非目标节点
347
+ const other = pair.find((o) => o.id !== void 0);
348
+ if (other) {
349
+ // x 对齐线
350
+ const line = new Konva.Line({
351
+ points: [[other.value, this.render.toStageValue(-stageState.y)], [other.value, this.render.toStageValue(this.render.stage.height() - stageState.y)]].flat(),
352
+ stroke: 'blue',
353
+ strokeWidth: this.render.toStageValue(1),
354
+ dash: [4, 4],
355
+ listening: false
356
+ });
357
+ this.alignLines.push(line);
358
+ this.render.layerCover.add(line);
359
+ }
360
+ }
361
+ // 磁贴第一个【对】
362
+ const target = pairX.find((o) => o.id === void 0);
363
+ const other = pairX.find((o) => o.id !== void 0);
364
+ if (target && other) {
365
+ // 磁贴坐标值
366
+ newPosX = newPosX - this.render.toBoardValue(target.value - other.value);
367
+ isAttract = true;
368
+ }
369
+ }
370
+ // 存在 1或多个 y 最短距离 满足阈值
371
+ if (pairY?.length === 2) {
372
+ for (const pair of pairYMin) {
373
+ // 【对】里的那个非目标节点
374
+ const other = pair.find((o) => o.id !== void 0);
375
+ if (other) {
376
+ // y 对齐线
377
+ const line = new Konva.Line({
378
+ points: [[this.render.toStageValue(-stageState.x), other.value], [this.render.toStageValue(this.render.stage.width() - stageState.x), other.value]].flat(),
379
+ stroke: 'blue',
380
+ strokeWidth: this.render.toStageValue(1),
381
+ dash: [4, 4],
382
+ listening: false
383
+ });
384
+ this.alignLines.push(line);
385
+ this.render.layerCover.add(line);
386
+ }
387
+ }
388
+ // 磁贴第一个【对】
389
+ const target = pairY.find((o) => o.id === void 0);
390
+ const other = pairY.find((o) => o.id !== void 0);
391
+ if (target && other) {
392
+ // 磁贴坐标值
393
+ newPosY = newPosY - this.render.toBoardValue(target.value - other.value);
394
+ isAttract = true;
395
+ }
396
+ }
397
+ }
398
+ if (!this.render.config.readonly && this.render.config.attractBg && showGrid) { // 显示网格则执行网格磁吸
399
+ // 没有 x 对齐节点
400
+ if (pairX === null) {
401
+ const logicLeftX = this.render.toStageValue(newPosX - stageState.x); // x坐标
402
+ const logicNumLeftX = Math.round(logicLeftX / this.render.bgSize); // x单元格个数
403
+ const logicClosestLeftX = logicNumLeftX * this.render.bgSize; // x磁贴目标坐标
404
+ const logicDiffLeftX = Math.abs(logicLeftX - logicClosestLeftX); // x磁贴偏移量
405
+ const logicRightX = this.render.toStageValue(newPosX + width - stageState.x); // x坐标
406
+ const logicNumRightX = Math.round(logicRightX / this.render.bgSize); // x单元格个数
407
+ const logicClosestRightX = logicNumRightX * this.render.bgSize; // x磁贴目标坐标
408
+ const logicDiffRightX = Math.abs(logicRightX - logicClosestRightX); // x磁贴偏移量
409
+ // stage 逻辑边界磁贴
410
+ const logicStageRightX = stageState.width;
411
+ const logicDiffStageRightX = Math.abs(logicRightX - logicStageRightX);
412
+ // 距离近优先
413
+ for (const diff of [{ type: 'leftX', value: logicDiffLeftX }, { type: 'rightX', value: logicDiffRightX }, { type: 'stageRightX', value: logicDiffStageRightX }].sort((a, b) => a.value - b.value)) {
414
+ if (diff.value < 5) {
415
+ if (diff.type === 'stageRightX') {
416
+ newPosX = this.render.toBoardValue(logicStageRightX) + stageState.x - width;
417
+ } else if (diff.type === 'leftX') {
418
+ newPosX = this.render.toBoardValue(logicClosestLeftX) + stageState.x;
419
+ } else if (diff.type === 'rightX') {
420
+ newPosX = this.render.toBoardValue(logicClosestRightX) + stageState.x - width;
421
+ }
422
+ isAttract = true;
423
+ break;
424
+ }
425
+ }
426
+ }
427
+ // 没有 y 对齐节点
428
+ if (pairY === null) {
429
+ const logicTopY = this.render.toStageValue(newPosY - stageState.y); // y坐标
430
+ const logicNumTopY = Math.round(logicTopY / this.render.bgSize); // y单元格个数
431
+ const logicClosestTopY = logicNumTopY * this.render.bgSize; // y磁贴目标坐标
432
+ const logicDiffTopY = Math.abs(logicTopY - logicClosestTopY); // y磁贴偏移量
433
+ const logicBottomY = this.render.toStageValue(newPosY + height - stageState.y); // y坐标
434
+ const logicNumBottomY = Math.round(logicBottomY / this.render.bgSize); // y单元格个数
435
+ const logicClosestBottomY = logicNumBottomY * this.render.bgSize; // y磁贴目标坐标
436
+ const logicDiffBottomY = Math.abs(logicBottomY - logicClosestBottomY); // y磁贴偏移量
437
+ // stage 逻辑边界磁贴
438
+ const logicStageBottomY = stageState.height;
439
+ const logicDiffStageBottomY = Math.abs(logicBottomY - logicStageBottomY);
440
+ // 距离近优先
441
+ for (const diff of [{ type: 'topY', value: logicDiffTopY }, { type: 'bottomY', value: logicDiffBottomY }, { type: 'stageBottomY', value: logicDiffStageBottomY }].sort((a, b) => a.value - b.value)) {
442
+ if (diff.value < 5) {
443
+ if (diff.type === 'stageBottomY') {
444
+ newPosY = this.render.toBoardValue(logicStageBottomY) + stageState.y - height;
445
+ } else if (diff.type === 'topY') {
446
+ newPosY = this.render.toBoardValue(logicClosestTopY) + stageState.y;
447
+ } else if (diff.type === 'bottomY') {
448
+ newPosY = this.render.toBoardValue(logicClosestBottomY) + stageState.y - height;
449
+ }
450
+ isAttract = true;
451
+ break;
452
+ }
453
+ }
454
+ }
455
+ }
456
+ return { pos: { x: newPosX, y: newPosY }, isAttract };
457
+ }
458
458
  }