aldehyde 0.2.475 → 0.2.476

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 (268) hide show
  1. package/lib/draw-canvas-edit/components/asset-bar/index.d.ts.map +1 -0
  2. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/asset-bar/index.js +1 -1
  3. package/lib/draw-canvas-edit/components/asset-bar/index.js.map +1 -0
  4. package/lib/draw-canvas-edit/components/main-header/index.d.ts.map +1 -0
  5. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/main-header/index.js +2 -2
  6. package/lib/draw-canvas-edit/components/main-header/index.js.map +1 -0
  7. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts +26 -0
  8. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts.map +1 -0
  9. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js +135 -0
  10. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js.map +1 -0
  11. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts +26 -0
  12. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts.map +1 -0
  13. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js +293 -0
  14. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js.map +1 -0
  15. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts +30 -0
  16. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts.map +1 -0
  17. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js +182 -0
  18. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js.map +1 -0
  19. package/lib/draw-canvas-edit/components/render/draws/index.d.ts +8 -0
  20. package/lib/draw-canvas-edit/components/render/draws/index.d.ts.map +1 -0
  21. package/lib/draw-canvas-edit/components/render/draws/index.js +8 -0
  22. package/lib/draw-canvas-edit/components/render/draws/index.js.map +1 -0
  23. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts +42 -0
  24. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts.map +1 -0
  25. package/lib/draw-canvas-edit/components/render/draws/link-draw.js +1376 -0
  26. package/lib/draw-canvas-edit/components/render/draws/link-draw.js.map +1 -0
  27. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts +15 -0
  28. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts.map +1 -0
  29. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js +245 -0
  30. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js.map +1 -0
  31. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts +18 -0
  32. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts.map +1 -0
  33. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js +59 -0
  34. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js.map +1 -0
  35. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts +12 -0
  36. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts.map +1 -0
  37. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js +151 -0
  38. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js.map +1 -0
  39. package/lib/draw-canvas-edit/components/render/graphs/base-graph.d.ts +112 -0
  40. package/lib/draw-canvas-edit/components/render/graphs/base-graph.d.ts.map +1 -0
  41. package/lib/draw-canvas-edit/components/render/graphs/base-graph.js +199 -0
  42. package/lib/draw-canvas-edit/components/render/graphs/base-graph.js.map +1 -0
  43. package/lib/draw-canvas-edit/components/render/graphs/bezier.d.ts +80 -0
  44. package/lib/draw-canvas-edit/components/render/graphs/bezier.d.ts.map +1 -0
  45. package/lib/draw-canvas-edit/components/render/graphs/bezier.js +485 -0
  46. package/lib/draw-canvas-edit/components/render/graphs/bezier.js.map +1 -0
  47. package/lib/draw-canvas-edit/components/render/graphs/circle.d.ts +48 -0
  48. package/lib/draw-canvas-edit/components/render/graphs/circle.d.ts.map +1 -0
  49. package/lib/draw-canvas-edit/components/render/graphs/circle.js +735 -0
  50. package/lib/draw-canvas-edit/components/render/graphs/circle.js.map +1 -0
  51. package/lib/draw-canvas-edit/components/render/graphs/curve.d.ts +80 -0
  52. package/lib/draw-canvas-edit/components/render/graphs/curve.d.ts.map +1 -0
  53. package/lib/draw-canvas-edit/components/render/graphs/curve.js +451 -0
  54. package/lib/draw-canvas-edit/components/render/graphs/curve.js.map +1 -0
  55. package/lib/draw-canvas-edit/components/render/graphs/index.d.ts +7 -0
  56. package/lib/draw-canvas-edit/components/render/graphs/index.d.ts.map +1 -0
  57. package/lib/draw-canvas-edit/components/render/graphs/index.js +7 -0
  58. package/lib/draw-canvas-edit/components/render/graphs/index.js.map +1 -0
  59. package/lib/draw-canvas-edit/components/render/graphs/line.d.ts +80 -0
  60. package/lib/draw-canvas-edit/components/render/graphs/line.d.ts.map +1 -0
  61. package/lib/draw-canvas-edit/components/render/graphs/line.js +444 -0
  62. package/lib/draw-canvas-edit/components/render/graphs/line.js.map +1 -0
  63. package/lib/draw-canvas-edit/components/render/graphs/rect.d.ts +48 -0
  64. package/lib/draw-canvas-edit/components/render/graphs/rect.d.ts.map +1 -0
  65. package/lib/draw-canvas-edit/components/render/graphs/rect.js +716 -0
  66. package/lib/draw-canvas-edit/components/render/graphs/rect.js.map +1 -0
  67. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts +25 -0
  68. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts.map +1 -0
  69. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js +67 -0
  70. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js.map +1 -0
  71. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts +15 -0
  72. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -0
  73. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +146 -0
  74. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -0
  75. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts +28 -0
  76. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts.map +1 -0
  77. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js +97 -0
  78. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js.map +1 -0
  79. package/lib/draw-canvas-edit/components/render/handlers/index.d.ts +10 -0
  80. package/lib/draw-canvas-edit/components/render/handlers/index.d.ts.map +1 -0
  81. package/lib/draw-canvas-edit/components/render/handlers/index.js +10 -0
  82. package/lib/draw-canvas-edit/components/render/handlers/index.js.map +1 -0
  83. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts +18 -0
  84. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts.map +1 -0
  85. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js +51 -0
  86. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js.map +1 -0
  87. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts +14 -0
  88. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts.map +1 -0
  89. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js +42 -0
  90. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js.map +1 -0
  91. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts +62 -0
  92. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -0
  93. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +396 -0
  94. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -0
  95. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts +13 -0
  96. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts.map +1 -0
  97. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js +50 -0
  98. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js.map +1 -0
  99. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts +24 -0
  100. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts.map +1 -0
  101. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js +82 -0
  102. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js.map +1 -0
  103. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts +17 -0
  104. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts.map +1 -0
  105. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js +55 -0
  106. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js.map +1 -0
  107. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/render/index.d.ts +7 -1
  108. package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -0
  109. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/render/index.js +22 -0
  110. package/lib/draw-canvas-edit/components/render/index.js.map +1 -0
  111. package/lib/draw-canvas-edit/components/render/tools/align-tool.d.ts +19 -0
  112. package/lib/draw-canvas-edit/components/render/tools/align-tool.d.ts.map +1 -0
  113. package/lib/draw-canvas-edit/components/render/tools/align-tool.js +84 -0
  114. package/lib/draw-canvas-edit/components/render/tools/align-tool.js.map +1 -0
  115. package/lib/draw-canvas-edit/components/render/tools/asset-tool.d.ts +12 -0
  116. package/lib/draw-canvas-edit/components/render/tools/asset-tool.d.ts.map +1 -0
  117. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js +152 -0
  118. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js.map +1 -0
  119. package/lib/draw-canvas-edit/components/render/tools/attract-tool.d.ts +36 -0
  120. package/lib/draw-canvas-edit/components/render/tools/attract-tool.d.ts.map +1 -0
  121. package/lib/draw-canvas-edit/components/render/tools/attract-tool.js +419 -0
  122. package/lib/draw-canvas-edit/components/render/tools/attract-tool.js.map +1 -0
  123. package/lib/draw-canvas-edit/components/render/tools/copy-tool.d.ts +20 -0
  124. package/lib/draw-canvas-edit/components/render/tools/copy-tool.d.ts.map +1 -0
  125. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js +237 -0
  126. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js.map +1 -0
  127. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.d.ts +43 -0
  128. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.d.ts.map +1 -0
  129. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js +559 -0
  130. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js.map +1 -0
  131. package/lib/draw-canvas-edit/components/render/tools/index.d.ts +10 -0
  132. package/lib/draw-canvas-edit/components/render/tools/index.d.ts.map +1 -0
  133. package/lib/draw-canvas-edit/components/render/tools/index.js +10 -0
  134. package/lib/draw-canvas-edit/components/render/tools/index.js.map +1 -0
  135. package/lib/draw-canvas-edit/components/render/tools/link-tool.d.ts +15 -0
  136. package/lib/draw-canvas-edit/components/render/tools/link-tool.d.ts.map +1 -0
  137. package/lib/draw-canvas-edit/components/render/tools/link-tool.js +202 -0
  138. package/lib/draw-canvas-edit/components/render/tools/link-tool.js.map +1 -0
  139. package/lib/draw-canvas-edit/components/render/tools/position-tool.d.ts +11 -0
  140. package/lib/draw-canvas-edit/components/render/tools/position-tool.d.ts.map +1 -0
  141. package/lib/draw-canvas-edit/components/render/tools/position-tool.js +183 -0
  142. package/lib/draw-canvas-edit/components/render/tools/position-tool.js.map +1 -0
  143. package/lib/draw-canvas-edit/components/render/tools/selection-tool.d.ts +13 -0
  144. package/lib/draw-canvas-edit/components/render/tools/selection-tool.d.ts.map +1 -0
  145. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js +116 -0
  146. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js.map +1 -0
  147. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.d.ts +18 -0
  148. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.d.ts.map +1 -0
  149. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.js +203 -0
  150. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.js.map +1 -0
  151. package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -0
  152. package/lib/draw-canvas-edit/components/render/types.js.map +1 -0
  153. package/lib/draw-canvas-edit/components/render/utils/a-star.d.ts +13 -0
  154. package/lib/draw-canvas-edit/components/render/utils/a-star.d.ts.map +1 -0
  155. package/lib/draw-canvas-edit/components/render/utils/a-star.js +101 -0
  156. package/lib/draw-canvas-edit/components/render/utils/a-star.js.map +1 -0
  157. package/lib/draw-canvas-edit/components/render/utils/bezier-scene-func.d.ts +3 -0
  158. package/lib/draw-canvas-edit/components/render/utils/bezier-scene-func.d.ts.map +1 -0
  159. package/lib/draw-canvas-edit/components/render/utils/bezier-scene-func.js +69 -0
  160. package/lib/draw-canvas-edit/components/render/utils/bezier-scene-func.js.map +1 -0
  161. package/lib/draw-canvas-edit/components/setting-form/imag-upload.d.ts.map +1 -0
  162. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/imag-upload.js +2 -2
  163. package/lib/draw-canvas-edit/components/setting-form/imag-upload.js.map +1 -0
  164. package/lib/draw-canvas-edit/components/setting-form/index.d.ts.map +1 -0
  165. package/lib/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/index.js +7 -8
  166. package/lib/draw-canvas-edit/components/setting-form/index.js.map +1 -0
  167. package/lib/draw-canvas-edit/constant.d.ts.map +1 -0
  168. package/lib/draw-canvas-edit/constant.js.map +1 -0
  169. package/lib/draw-canvas-edit/index.d.ts.map +1 -0
  170. package/lib/{draw-canvas/edit → draw-canvas-edit}/index.js +1 -1
  171. package/lib/draw-canvas-edit/index.js.map +1 -0
  172. package/lib/draw-canvas-view/index.d.ts.map +1 -0
  173. package/lib/{draw-canvas/view → draw-canvas-view}/index.js +1 -1
  174. package/lib/draw-canvas-view/index.js.map +1 -0
  175. package/lib/{draw-canvas/view → draw-canvas-view}/view.d.ts +4 -1
  176. package/lib/draw-canvas-view/view.d.ts.map +1 -0
  177. package/lib/draw-canvas-view/view.js +208 -0
  178. package/lib/draw-canvas-view/view.js.map +1 -0
  179. package/lib/routable/ltmpl-route.js +2 -2
  180. package/package.json +1 -1
  181. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/asset-bar/index.tsx +1 -1
  182. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/main-header/index.tsx +2 -2
  183. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/index.ts +24 -0
  184. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/imag-upload.tsx +2 -2
  185. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/index.tsx +8 -9
  186. package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/index.tsx +1 -1
  187. package/src/aldehyde/{draw-canvas/view → draw-canvas-view}/index.tsx +1 -1
  188. package/src/aldehyde/draw-canvas-view/view.tsx +212 -0
  189. package/src/aldehyde/routable/ltmpl-route.tsx +2 -2
  190. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +0 -1
  191. package/lib/draw-canvas/edit/components/asset-bar/index.js.map +0 -1
  192. package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +0 -1
  193. package/lib/draw-canvas/edit/components/main-header/index.js.map +0 -1
  194. package/lib/draw-canvas/edit/components/render/index.d.ts.map +0 -1
  195. package/lib/draw-canvas/edit/components/render/index.js.map +0 -1
  196. package/lib/draw-canvas/edit/components/render/types.d.ts.map +0 -1
  197. package/lib/draw-canvas/edit/components/render/types.js.map +0 -1
  198. package/lib/draw-canvas/edit/components/setting-form/imag-upload.d.ts.map +0 -1
  199. package/lib/draw-canvas/edit/components/setting-form/imag-upload.js.map +0 -1
  200. package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +0 -1
  201. package/lib/draw-canvas/edit/components/setting-form/index.js.map +0 -1
  202. package/lib/draw-canvas/edit/constant.d.ts.map +0 -1
  203. package/lib/draw-canvas/edit/constant.js.map +0 -1
  204. package/lib/draw-canvas/edit/index.d.ts.map +0 -1
  205. package/lib/draw-canvas/edit/index.js.map +0 -1
  206. package/lib/draw-canvas/view/index.d.ts.map +0 -1
  207. package/lib/draw-canvas/view/index.js.map +0 -1
  208. package/lib/draw-canvas/view/view.d.ts.map +0 -1
  209. package/lib/draw-canvas/view/view.js +0 -104
  210. package/lib/draw-canvas/view/view.js.map +0 -1
  211. package/src/aldehyde/draw-canvas/view/view.tsx +0 -114
  212. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/asset-bar/index.d.ts +0 -0
  213. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/asset-bar/index.less +0 -0
  214. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/main-header/index.d.ts +0 -0
  215. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/main-header/index.less +0 -0
  216. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/render/types.d.ts +0 -0
  217. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/render/types.js +0 -0
  218. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/imag-upload.d.ts +0 -0
  219. /package/lib/{draw-canvas/edit → draw-canvas-edit}/components/setting-form/index.d.ts +0 -0
  220. /package/lib/{draw-canvas/edit → draw-canvas-edit}/constant.d.ts +0 -0
  221. /package/lib/{draw-canvas/edit → draw-canvas-edit}/constant.js +0 -0
  222. /package/lib/{draw-canvas/edit → draw-canvas-edit}/index.d.ts +0 -0
  223. /package/lib/{draw-canvas/edit → draw-canvas-edit}/index.less +0 -0
  224. /package/lib/{draw-canvas/view → draw-canvas-view}/index.d.ts +0 -0
  225. /package/lib/{draw-canvas/view → draw-canvas-view}/index.less +0 -0
  226. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/asset-bar/index.less +0 -0
  227. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/main-header/index.less +0 -0
  228. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/bg-draw.ts +0 -0
  229. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/contextmenu-draw.ts +0 -0
  230. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/graph-draw.ts +0 -0
  231. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/index.ts +0 -0
  232. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/link-draw.ts +0 -0
  233. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/preview-draw.ts +0 -0
  234. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/ref-line-draw.ts +0 -0
  235. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/draws/ruler-draw.ts +0 -0
  236. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/base-graph.ts +0 -0
  237. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/bezier.ts +0 -0
  238. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/circle.ts +0 -0
  239. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/curve.ts +0 -0
  240. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/index.ts +0 -0
  241. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/line.ts +0 -0
  242. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/graphs/rect.ts +0 -0
  243. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/drag-handlers.ts +0 -0
  244. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/drag-outside-handlers.ts +0 -0
  245. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/graph-handlers.ts +0 -0
  246. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/index.ts +0 -0
  247. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/key-move-handlers.ts +0 -0
  248. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/link-handlers.ts +0 -0
  249. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/selection-handlers.ts +0 -0
  250. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/shutcut-handlers.ts +0 -0
  251. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/text-handlers.ts +0 -0
  252. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/handlers/zoom-handlers.ts +0 -0
  253. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/align-tool.ts +0 -0
  254. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/asset-tool.ts +0 -0
  255. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/attract-tool.ts +0 -0
  256. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/copy-tool.ts +0 -0
  257. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/import-export-tool.ts +0 -0
  258. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/index.ts +0 -0
  259. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/link-tool.ts +0 -0
  260. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/position-tool.ts +0 -0
  261. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/selection-tool.ts +0 -0
  262. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/tools/z-index-tool.ts +0 -0
  263. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/types.ts +0 -0
  264. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/utils/a-star.ts +0 -0
  265. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/components/render/utils/bezier-scene-func.ts +0 -0
  266. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/constant.ts +0 -0
  267. /package/src/aldehyde/{draw-canvas/edit → draw-canvas-edit}/index.less +0 -0
  268. /package/src/aldehyde/{draw-canvas/view → draw-canvas-view}/index.less +0 -0
@@ -0,0 +1,1376 @@
1
+ import Konva from 'konva';
2
+ import { BaseDraw } from '../types';
3
+ import * as Draws from '../draws';
4
+ import { nanoid } from 'nanoid';
5
+ import aStar from '../utils/a-star';
6
+ import { BezierSceneFunc } from '../utils/bezier-scene-func';
7
+ export class LinkDraw extends BaseDraw {
8
+ constructor(render, layer, option) {
9
+ super(render, layer);
10
+ this.state = {
11
+ linkingLine: null,
12
+ linkType: "curve",
13
+ linkManualing: false
14
+ };
15
+ this.option = option;
16
+ this.group.name(this.constructor.name);
17
+ }
18
+ // 元素(连接点们)最小区域(绝对值)
19
+ getGroupLinkArea(group) {
20
+ let area = { x1: 0, y1: 0, x2: 0, y2: 0 };
21
+ if (group) {
22
+ const stageState = this.render.getStageState(); // stage 状态
23
+ const anchors = group.find('.link-anchor');
24
+ const positions = anchors.map((o) => o.absolutePosition());
25
+ area = {
26
+ x1: Math.min(...positions.map((o) => o.x)) - stageState.x,
27
+ y1: Math.min(...positions.map((o) => o.y)) - stageState.y,
28
+ x2: Math.max(...positions.map((o) => o.x)) - stageState.x,
29
+ y2: Math.max(...positions.map((o) => o.y)) - stageState.y
30
+ };
31
+ }
32
+ return area;
33
+ }
34
+ // 连线不可通过区域
35
+ getGroupForbiddenArea(groupArea, gap) {
36
+ const area = {
37
+ x1: groupArea.x1 - gap,
38
+ y1: groupArea.y1 - gap,
39
+ x2: groupArea.x2 + gap,
40
+ y2: groupArea.y2 + gap
41
+ };
42
+ return area;
43
+ }
44
+ // 连线通过区域
45
+ getGroupAccessArea(groupArea, gap) {
46
+ const area = {
47
+ x1: groupArea.x1 - gap,
48
+ y1: groupArea.y1 - gap,
49
+ x2: groupArea.x2 + gap,
50
+ y2: groupArea.y2 + gap
51
+ };
52
+ return area;
53
+ }
54
+ // 两区域扩展
55
+ getGroupPairArea(groupArea1, groupArea2) {
56
+ const area = {
57
+ x1: Math.min(groupArea1.x1, groupArea2.x1),
58
+ y1: Math.min(groupArea1.y1, groupArea2.y1),
59
+ x2: Math.max(groupArea1.x2, groupArea2.x2),
60
+ y2: Math.max(groupArea1.y2, groupArea2.y2)
61
+ };
62
+ return area;
63
+ }
64
+ // 两区域最短距离
65
+ getGroupPairDistance(groupArea1, groupArea2) {
66
+ const xs = [groupArea1.x1, groupArea1.x2, groupArea2.x1, groupArea2.x2];
67
+ const maxX = Math.max(...xs);
68
+ const minX = Math.min(...xs);
69
+ const dx = maxX - minX - (groupArea1.x2 - groupArea1.x1 + (groupArea2.x2 - groupArea2.x1));
70
+ const ys = [groupArea1.y1, groupArea1.y2, groupArea2.y1, groupArea2.y2];
71
+ const maxY = Math.max(...ys);
72
+ const minY = Math.min(...ys);
73
+ const dy = maxY - minY - (groupArea1.y2 - groupArea1.y1 + (groupArea2.y2 - groupArea2.y1));
74
+ return this.render.toBoardValue(Math.min(this.render.bgSize * 0.5, Math.max(dx < 6 ? 6 : dx, dy < 6 ? 6 : dy) * 0.5));
75
+ }
76
+ // 两区域空隙中点
77
+ getGroupPairCenter(groupArea1, groupArea2) {
78
+ return { x: (groupArea2.x1 + groupArea1.x2) * 0.5, y: (groupArea2.y1 + groupArea1.y2) * 0.5 };
79
+ }
80
+ // 连接出入口
81
+ getEntry(anchor, groupForbiddenArea, gap) {
82
+ const stageState = this.render.getStageState();
83
+ const fromPos = anchor.absolutePosition();
84
+ // 默认为 起点/终点 位置(无 direction 时的值)
85
+ let x = fromPos.x - stageState.x;
86
+ let y = fromPos.y - stageState.y;
87
+ const direction = anchor.attrs.direction;
88
+ // 定义了 direction 的时候
89
+ if (direction) {
90
+ // 取整 连接点 锚点 旋转角度(保留 1 位小数点)
91
+ const rotate = Math.round(anchor.getAbsoluteRotation() * 10) / 10;
92
+ if (rotate === -45) {
93
+ if (direction === 'top') {
94
+ x = groupForbiddenArea.x1;
95
+ y = groupForbiddenArea.y1;
96
+ }
97
+ else if (direction === 'bottom') {
98
+ x = groupForbiddenArea.x2;
99
+ y = groupForbiddenArea.y2;
100
+ }
101
+ else if (direction === 'left') {
102
+ x = groupForbiddenArea.x1;
103
+ y = groupForbiddenArea.y2;
104
+ }
105
+ else if (direction === 'right') {
106
+ x = groupForbiddenArea.x2;
107
+ y = groupForbiddenArea.y1;
108
+ }
109
+ }
110
+ else if (rotate === 45) {
111
+ if (direction === 'top') {
112
+ x = groupForbiddenArea.x2;
113
+ y = groupForbiddenArea.y1;
114
+ }
115
+ else if (direction === 'bottom') {
116
+ x = groupForbiddenArea.x1;
117
+ y = groupForbiddenArea.y2;
118
+ }
119
+ else if (direction === 'left') {
120
+ x = groupForbiddenArea.x1;
121
+ y = groupForbiddenArea.y1;
122
+ }
123
+ else if (direction === 'right') {
124
+ x = groupForbiddenArea.x2;
125
+ y = groupForbiddenArea.y2;
126
+ }
127
+ }
128
+ else if (rotate === 135) {
129
+ if (direction === 'top') {
130
+ x = groupForbiddenArea.x2;
131
+ y = groupForbiddenArea.y2;
132
+ }
133
+ else if (direction === 'bottom') {
134
+ x = groupForbiddenArea.x1;
135
+ y = groupForbiddenArea.y1;
136
+ }
137
+ else if (direction === 'left') {
138
+ x = groupForbiddenArea.x2;
139
+ y = groupForbiddenArea.y1;
140
+ }
141
+ else if (direction === 'right') {
142
+ x = groupForbiddenArea.x1;
143
+ y = groupForbiddenArea.y2;
144
+ }
145
+ }
146
+ else if (rotate === -135) {
147
+ if (direction === 'top') {
148
+ x = groupForbiddenArea.x1;
149
+ y = groupForbiddenArea.y2;
150
+ }
151
+ else if (direction === 'bottom') {
152
+ x = groupForbiddenArea.x2;
153
+ y = groupForbiddenArea.y1;
154
+ }
155
+ else if (direction === 'left') {
156
+ x = groupForbiddenArea.x2;
157
+ y = groupForbiddenArea.y2;
158
+ }
159
+ else if (direction === 'right') {
160
+ x = groupForbiddenArea.x1;
161
+ y = groupForbiddenArea.y1;
162
+ }
163
+ }
164
+ else if (rotate > -45 && rotate < 45) {
165
+ const offset = gap * Math.tan((rotate * Math.PI) / 180);
166
+ if (direction === 'top') {
167
+ x = fromPos.x - stageState.x + offset;
168
+ y = groupForbiddenArea.y1;
169
+ }
170
+ else if (direction === 'bottom') {
171
+ x = fromPos.x - stageState.x - offset;
172
+ y = groupForbiddenArea.y2;
173
+ }
174
+ else if (direction === 'left') {
175
+ x = groupForbiddenArea.x1;
176
+ y = fromPos.y - stageState.y - offset;
177
+ }
178
+ else if (direction === 'right') {
179
+ x = groupForbiddenArea.x2;
180
+ y = fromPos.y - stageState.y + offset;
181
+ }
182
+ }
183
+ else if (rotate > 45 && rotate < 135) {
184
+ const offset = gap * Math.atan(((90 - rotate) * Math.PI) / 180);
185
+ if (direction === 'top') {
186
+ x = groupForbiddenArea.x2;
187
+ y = fromPos.y - stageState.y - offset;
188
+ }
189
+ else if (direction === 'bottom') {
190
+ x = groupForbiddenArea.x1;
191
+ y = fromPos.y - stageState.y + offset;
192
+ }
193
+ else if (direction === 'left') {
194
+ x = fromPos.x - stageState.x - offset;
195
+ y = groupForbiddenArea.y1;
196
+ }
197
+ else if (direction === 'right') {
198
+ x = fromPos.x - stageState.x + offset;
199
+ y = groupForbiddenArea.y2;
200
+ }
201
+ }
202
+ else if ((rotate > 135 && rotate <= 180) || (rotate >= -180 && rotate < -135)) {
203
+ const offset = gap * Math.tan((rotate * Math.PI) / 180);
204
+ if (direction === 'top') {
205
+ x = fromPos.x - stageState.x - offset;
206
+ y = groupForbiddenArea.y2;
207
+ }
208
+ else if (direction === 'bottom') {
209
+ x = fromPos.x - stageState.x + offset;
210
+ y = groupForbiddenArea.y1;
211
+ }
212
+ else if (direction === 'left') {
213
+ x = groupForbiddenArea.x2;
214
+ y = fromPos.y - stageState.y + offset;
215
+ }
216
+ else if (direction === 'right') {
217
+ x = groupForbiddenArea.x1;
218
+ y = fromPos.y - stageState.y - offset;
219
+ }
220
+ }
221
+ else if (rotate > -135 && rotate < -45) {
222
+ const offset = gap * Math.atan(((90 + rotate) * Math.PI) / 180);
223
+ if (direction === 'top') {
224
+ x = groupForbiddenArea.x1;
225
+ y = fromPos.y - stageState.y - offset;
226
+ }
227
+ else if (direction === 'bottom') {
228
+ x = groupForbiddenArea.x2;
229
+ y = fromPos.y - stageState.y + offset;
230
+ }
231
+ else if (direction === 'left') {
232
+ x = fromPos.x - stageState.x - offset;
233
+ y = groupForbiddenArea.y2;
234
+ }
235
+ else if (direction === 'right') {
236
+ x = fromPos.x - stageState.x + offset;
237
+ y = groupForbiddenArea.y1;
238
+ }
239
+ }
240
+ }
241
+ return { x, y };
242
+ }
243
+ // 连接点信息
244
+ getAnchorPos(anchor) {
245
+ const stageState = this.render.getStageState();
246
+ return anchor ? { x: anchor.absolutePosition().x - stageState.x, y: anchor.absolutePosition().y - stageState.y } : { x: 0, y: 0 };
247
+ }
248
+ /**
249
+ * 修改当前连接线类型
250
+ * @param linkType LinkType
251
+ */
252
+ changeLinkType(linkType) {
253
+ this.state.linkType = linkType;
254
+ this.render.emit('link-type-change', this.state.linkType);
255
+ }
256
+ draw() {
257
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
258
+ this.clear();
259
+ const stageState = this.render.getStageState();
260
+ // 所有层级的素材
261
+ const groups = [
262
+ ...this.render.layer.find('.asset'),
263
+ ...this.render.layer.find('.sub-asset')
264
+ ];
265
+ const points = groups.reduce((ps, group) => ps.concat(Array.isArray(group.getAttr('points')) ? group.getAttr('points') : []), []);
266
+ const pairs = points.reduce((ps, point) => ps.concat(point.pairs ? point.pairs.filter((o) => !o.disabled) : []), []);
267
+ // 连接线
268
+ for (const pair of pairs) {
269
+ // 多层素材,需要排除内部 pair 对
270
+ // pair 也不能为 disabled
271
+ if (pair.from.groupId !== pair.to.groupId && !pair.disabled) {
272
+ const fromGroup = groups.find((o) => o.id() === pair.from.groupId);
273
+ const fromPoint = points.find((o) => o.id === pair.from.pointId);
274
+ const toGroup = groups.find((o) => o.id() === pair.to.groupId);
275
+ const toPoint = points.find((o) => o.id === pair.to.pointId);
276
+ if (pair.linkType === "manual") {
277
+ // 折线
278
+ if (fromGroup && toGroup && fromPoint && toPoint) {
279
+ const fromAnchor = fromGroup.findOne(`#${fromPoint.id}`);
280
+ const toAnchor = toGroup.findOne(`#${toPoint.id}`);
281
+ // 锚点信息
282
+ const fromAnchorPos = this.getAnchorPos(fromAnchor);
283
+ const toAnchorPos = this.getAnchorPos(toAnchor);
284
+ // 拐点(已拐)记录
285
+ const manualPointsMap = (_a = fromGroup.getAttr('manualPointsMap')) !== null && _a !== void 0 ? _a : {};
286
+ const manualPoints = (_b = manualPointsMap[pair.id]) !== null && _b !== void 0 ? _b : [];
287
+ // 连接点 + 拐点
288
+ const linkPoints = [
289
+ [this.render.toStageValue(fromAnchorPos.x), this.render.toStageValue(fromAnchorPos.y)],
290
+ ...manualPoints.map((o) => [o.x, o.y]),
291
+ [this.render.toStageValue(toAnchorPos.x), this.render.toStageValue(toAnchorPos.y)]
292
+ ];
293
+ // 连接线
294
+ const linkLine = new Konva.Arrow({
295
+ name: 'link-line',
296
+ // 用于删除连接线
297
+ groupId: fromGroup.id(),
298
+ pointId: fromPoint.id,
299
+ pairId: pair.id,
300
+ linkType: pair.linkType,
301
+ points: linkPoints.flat(),
302
+ pointerAtBeginning: false,
303
+ pointerAtEnding: false
304
+ });
305
+ linkLine.stroke(this.render.getLinkSettings(linkLine).stroke);
306
+ linkLine.strokeWidth(this.render.getLinkSettings(linkLine).strokeWidth);
307
+ linkLine.hitStrokeWidth(Math.max(this.render.getLinkSettings().strokeWidth, 10));
308
+ linkLine.dash(((_c = this.render.linkTool.linkCurrent) === null || _c === void 0 ? void 0 : _c.attrs.pairId) === pair.id ? [1, 1] : []);
309
+ linkLine.fill(this.render.getLinkSettings(linkLine).stroke);
310
+ linkLine.pointerAtBeginning(this.render.getLinkSettings(linkLine).arrowStart);
311
+ linkLine.pointerAtEnding(this.render.getLinkSettings(linkLine).arrowEnd);
312
+ if (!this.render.config.readonly) {
313
+ linkLine.on('pointerclick', () => this.render.linkTool.select(linkLine));
314
+ linkLine.on('mouseenter', () => {
315
+ linkLine.opacity(0.5);
316
+ document.body.style.cursor = 'pointer';
317
+ });
318
+ linkLine.on('mouseleave', () => {
319
+ linkLine.opacity(1);
320
+ document.body.style.cursor = 'default';
321
+ });
322
+ }
323
+ this.group.add(linkLine);
324
+ if (!this.render.config.readonly) {
325
+ // 正在拖动效果
326
+ const manualingLine = new Konva.Line({
327
+ name: 'manualing-line',
328
+ stroke: '#ff0000',
329
+ strokeWidth: 2,
330
+ points: [],
331
+ dash: [4, 4]
332
+ });
333
+ this.group.add(manualingLine);
334
+ for (let i = 0; i < linkPoints.length - 1; i++) {
335
+ const circle = new Konva.Circle({
336
+ name: 'link-manual-point',
337
+ id: nanoid(),
338
+ pairId: pair.id,
339
+ x: (linkPoints[i][0] + linkPoints[i + 1][0]) / 2,
340
+ y: (linkPoints[i][1] + linkPoints[i + 1][1]) / 2,
341
+ radius: this.render.toStageValue(this.render.bgSize / 2),
342
+ stroke: 'rgba(0,0,255,0.2)',
343
+ strokeWidth: this.render.toStageValue(1),
344
+ linkManualIndex: i // 当前拐点位置
345
+ });
346
+ // hover 效果
347
+ circle.on('mouseenter', () => {
348
+ circle.stroke('rgba(0,0,255,0.8)');
349
+ document.body.style.cursor = 'pointer';
350
+ });
351
+ circle.on('mouseleave', () => {
352
+ if (!circle.attrs.dragStart) {
353
+ circle.stroke('rgba(0,0,255,0.1)');
354
+ document.body.style.cursor = 'default';
355
+ }
356
+ });
357
+ // 拐点操作
358
+ circle.on('mousedown', () => {
359
+ const pos = circle.getAbsolutePosition();
360
+ // 记录操作开始状态
361
+ circle.setAttrs({
362
+ // 开始坐标
363
+ dragStartX: pos.x,
364
+ dragStartY: pos.y,
365
+ // 正在操作
366
+ dragStart: true
367
+ });
368
+ // 标记状态 - 正在操作拐点
369
+ this.state.linkManualing = true;
370
+ });
371
+ this.render.stage.on('mousemove', () => {
372
+ if (circle.attrs.dragStart) {
373
+ // 正在操作
374
+ const pos = this.render.stage.getPointerPosition();
375
+ if (pos) {
376
+ // 磁贴
377
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
378
+ // 移动拐点
379
+ circle.setAbsolutePosition(transformerPos);
380
+ // 正在拖动效果
381
+ const tempPoints = [...linkPoints];
382
+ tempPoints.splice(circle.attrs.linkManualIndex + 1, 0, [
383
+ this.render.toStageValue(transformerPos.x - stageState.x),
384
+ this.render.toStageValue(transformerPos.y - stageState.y)
385
+ ]);
386
+ manualingLine.points(tempPoints.flat());
387
+ }
388
+ }
389
+ });
390
+ circle.on('mouseup', () => {
391
+ const pos = circle.getAbsolutePosition();
392
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
393
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
394
+ // 操作移动距离达到阈值
395
+ const stageState = this.render.getStageState();
396
+ // 记录(插入)拐点
397
+ manualPoints.splice(circle.attrs.linkManualIndex, 0, {
398
+ x: this.render.toStageValue(pos.x - stageState.x),
399
+ y: this.render.toStageValue(pos.y - stageState.y)
400
+ });
401
+ manualPointsMap[pair.id] = manualPoints;
402
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
403
+ }
404
+ // 操作结束
405
+ circle.setAttrs({ dragStart: false });
406
+ // state 操作结束
407
+ this.state.linkManualing = false;
408
+ // 销毁
409
+ circle.destroy();
410
+ manualingLine.destroy();
411
+ // 更新历史
412
+ this.render.updateHistory();
413
+ // 对齐线清除
414
+ this.render.attractTool.alignLinesClear();
415
+ // 重绘
416
+ this.render.redraw([
417
+ Draws.LinkDraw.name,
418
+ Draws.RulerDraw.name,
419
+ Draws.PreviewDraw.name
420
+ ]);
421
+ });
422
+ this.group.add(circle);
423
+ }
424
+ // 拐点(已拐)
425
+ for (let i = 1; i < linkPoints.length - 1; i++) {
426
+ const circle = new Konva.Circle({
427
+ name: 'link-manual-point',
428
+ id: nanoid(),
429
+ pairId: pair.id,
430
+ x: linkPoints[i][0],
431
+ y: linkPoints[i][1],
432
+ radius: this.render.toStageValue(this.render.bgSize / 2),
433
+ stroke: 'rgba(0,100,0,0.2)',
434
+ strokeWidth: this.render.toStageValue(1),
435
+ linkManualIndex: i // 当前拐点位置
436
+ });
437
+ // hover 效果
438
+ circle.on('mouseenter', () => {
439
+ circle.stroke('rgba(0,100,0,1)');
440
+ document.body.style.cursor = 'pointer';
441
+ });
442
+ circle.on('mouseleave', () => {
443
+ if (!circle.attrs.dragStart) {
444
+ circle.stroke('rgba(0,100,0,0.1)');
445
+ document.body.style.cursor = 'default';
446
+ }
447
+ });
448
+ // 拐点操作
449
+ circle.on('mousedown', () => {
450
+ const pos = circle.getAbsolutePosition();
451
+ // 记录操作开始状态
452
+ circle.setAttrs({
453
+ dragStartX: pos.x,
454
+ dragStartY: pos.y,
455
+ dragStart: true
456
+ });
457
+ // 标记状态 - 正在操作拐点
458
+ this.state.linkManualing = true;
459
+ });
460
+ this.render.stage.on('mousemove', () => {
461
+ if (circle.attrs.dragStart) {
462
+ // 正在操作
463
+ const pos = this.render.stage.getPointerPosition();
464
+ if (pos) {
465
+ // 磁贴
466
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
467
+ // 移动拐点
468
+ circle.setAbsolutePosition(transformerPos);
469
+ // 正在拖动效果
470
+ const tempPoints = [...linkPoints];
471
+ tempPoints[circle.attrs.linkManualIndex] = [
472
+ this.render.toStageValue(transformerPos.x - stageState.x),
473
+ this.render.toStageValue(transformerPos.y - stageState.y)
474
+ ];
475
+ manualingLine.points(tempPoints.flat());
476
+ }
477
+ }
478
+ });
479
+ circle.on('mouseup', () => {
480
+ const pos = circle.getAbsolutePosition();
481
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
482
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
483
+ // 操作移动距离达到阈值
484
+ const stageState = this.render.getStageState();
485
+ // 记录(更新)拐点
486
+ manualPoints[circle.attrs.linkManualIndex - 1] = {
487
+ x: this.render.toStageValue(pos.x - stageState.x),
488
+ y: this.render.toStageValue(pos.y - stageState.y)
489
+ };
490
+ manualPointsMap[pair.id] = manualPoints;
491
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
492
+ }
493
+ // 操作结束
494
+ circle.setAttrs({ dragStart: false });
495
+ // state 操作结束
496
+ this.state.linkManualing = false;
497
+ // 销毁
498
+ circle.destroy();
499
+ manualingLine.destroy();
500
+ // 更新历史
501
+ this.render.updateHistory();
502
+ // 对齐线清除
503
+ this.render.attractTool.alignLinesClear();
504
+ // 重绘
505
+ this.render.redraw([
506
+ Draws.LinkDraw.name,
507
+ Draws.RulerDraw.name,
508
+ Draws.PreviewDraw.name
509
+ ]);
510
+ });
511
+ this.group.add(circle);
512
+ }
513
+ }
514
+ }
515
+ }
516
+ else if (pair.linkType === "curve") {
517
+ // 曲线
518
+ if (fromGroup && toGroup && fromPoint && toPoint) {
519
+ const fromAnchor = fromGroup.findOne(`#${fromPoint.id}`);
520
+ const toAnchor = toGroup.findOne(`#${toPoint.id}`);
521
+ // 锚点信息
522
+ const fromAnchorPos = this.getAnchorPos(fromAnchor);
523
+ const toAnchorPos = this.getAnchorPos(toAnchor);
524
+ // 拐点(已拐)记录
525
+ const manualPointsMap = (_d = fromGroup.getAttr('manualPointsMap')) !== null && _d !== void 0 ? _d : {};
526
+ const manualPoints = (_e = manualPointsMap[pair.id]) !== null && _e !== void 0 ? _e : [];
527
+ // 连接点 + 拐点
528
+ const linkPoints = [
529
+ [
530
+ this.render.toStageValue(fromAnchorPos.x),
531
+ this.render.toStageValue(fromAnchorPos.y)
532
+ ],
533
+ ...manualPoints.map((o) => [o.x, o.y]),
534
+ [this.render.toStageValue(toAnchorPos.x), this.render.toStageValue(toAnchorPos.y)]
535
+ ];
536
+ // 连接线
537
+ const linkLine = new Konva.Arrow({
538
+ name: 'link-line',
539
+ // 用于删除连接线
540
+ groupId: fromGroup.id(),
541
+ pointId: fromPoint.id,
542
+ pairId: pair.id,
543
+ linkType: pair.linkType,
544
+ points: linkPoints.flat(),
545
+ pointerAtBeginning: false,
546
+ pointerAtEnding: false
547
+ });
548
+ linkLine.stroke(this.render.getLinkSettings(linkLine).stroke);
549
+ linkLine.strokeWidth(this.render.getLinkSettings(linkLine).strokeWidth);
550
+ linkLine.hitStrokeWidth(Math.max(this.render.getLinkSettings().strokeWidth, 10));
551
+ linkLine.dash(((_f = this.render.linkTool.linkCurrent) === null || _f === void 0 ? void 0 : _f.attrs.pairId) === pair.id ? [1, 1] : []);
552
+ linkLine.fill(this.render.getLinkSettings(linkLine).stroke);
553
+ linkLine.pointerAtBeginning(this.render.getLinkSettings(linkLine).arrowStart);
554
+ linkLine.pointerAtEnding(this.render.getLinkSettings(linkLine).arrowEnd);
555
+ linkLine.tension(this.render.getLinkSettings(linkLine).tension || 0);
556
+ if (!this.render.config.readonly) {
557
+ linkLine.on('pointerclick', () => this.render.linkTool.select(linkLine));
558
+ linkLine.on('mouseenter', () => {
559
+ linkLine.opacity(0.5);
560
+ document.body.style.cursor = 'pointer';
561
+ });
562
+ linkLine.on('mouseleave', () => {
563
+ linkLine.opacity(1);
564
+ document.body.style.cursor = 'default';
565
+ });
566
+ }
567
+ this.group.add(linkLine);
568
+ if (!this.render.config.readonly) {
569
+ // 正在拖动效果
570
+ const manualingLine = new Konva.Arrow({
571
+ name: 'manualing-line',
572
+ stroke: '#ff0000',
573
+ strokeWidth: 2,
574
+ points: [],
575
+ dash: [4, 4],
576
+ pointerAtBeginning: false,
577
+ pointerAtEnding: false,
578
+ tension: this.render.getLinkSettings(linkLine).tension
579
+ });
580
+ this.group.add(manualingLine);
581
+ // 拐点(待拐)
582
+ for (let i = 0; i < linkPoints.length - 1; i++) {
583
+ const circle = new Konva.Circle({
584
+ name: 'link-manual-point',
585
+ id: nanoid(),
586
+ pairId: pair.id,
587
+ x: (linkPoints[i][0] + linkPoints[i + 1][0]) / 2,
588
+ y: (linkPoints[i][1] + linkPoints[i + 1][1]) / 2,
589
+ radius: this.render.toStageValue(this.render.bgSize / 2),
590
+ stroke: 'rgba(0,0,255,0.2)',
591
+ strokeWidth: this.render.toStageValue(1),
592
+ linkManualIndex: i // 当前拐点位置
593
+ });
594
+ // hover 效果
595
+ circle.on('mouseenter', () => {
596
+ circle.stroke('rgba(0,0,255,0.8)');
597
+ document.body.style.cursor = 'pointer';
598
+ });
599
+ circle.on('mouseleave', () => {
600
+ if (!circle.attrs.dragStart) {
601
+ circle.stroke('rgba(0,0,255,0.1)');
602
+ document.body.style.cursor = 'default';
603
+ }
604
+ });
605
+ // 拐点操作
606
+ circle.on('mousedown', () => {
607
+ const pos = circle.getAbsolutePosition();
608
+ // 记录操作开始状态
609
+ circle.setAttrs({
610
+ // 开始坐标
611
+ dragStartX: pos.x,
612
+ dragStartY: pos.y,
613
+ // 正在操作
614
+ dragStart: true
615
+ });
616
+ // 标记状态 - 正在操作拐点
617
+ this.state.linkManualing = true;
618
+ });
619
+ this.render.stage.on('mousemove', () => {
620
+ if (circle.attrs.dragStart) {
621
+ // 正在操作
622
+ const pos = this.render.stage.getPointerPosition();
623
+ if (pos) {
624
+ // 磁贴
625
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
626
+ // 移动拐点
627
+ circle.setAbsolutePosition(transformerPos);
628
+ // 正在拖动效果
629
+ const tempPoints = [...linkPoints];
630
+ tempPoints.splice(circle.attrs.linkManualIndex + 1, 0, [
631
+ this.render.toStageValue(transformerPos.x - stageState.x),
632
+ this.render.toStageValue(transformerPos.y - stageState.y)
633
+ ]);
634
+ manualingLine.points(tempPoints.flat());
635
+ }
636
+ }
637
+ });
638
+ circle.on('mouseup', () => {
639
+ const pos = circle.getAbsolutePosition();
640
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
641
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
642
+ // 操作移动距离达到阈值
643
+ const stageState = this.render.getStageState();
644
+ // 记录(插入)拐点
645
+ manualPoints.splice(circle.attrs.linkManualIndex, 0, {
646
+ x: this.render.toStageValue(pos.x - stageState.x),
647
+ y: this.render.toStageValue(pos.y - stageState.y)
648
+ });
649
+ manualPointsMap[pair.id] = manualPoints;
650
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
651
+ }
652
+ // 操作结束
653
+ circle.setAttrs({ dragStart: false });
654
+ // state 操作结束
655
+ this.state.linkManualing = false;
656
+ // 销毁
657
+ circle.destroy();
658
+ manualingLine.destroy();
659
+ // 更新历史
660
+ this.render.updateHistory();
661
+ // 对齐线清除
662
+ this.render.attractTool.alignLinesClear();
663
+ // 重绘
664
+ this.render.redraw([
665
+ Draws.LinkDraw.name,
666
+ Draws.RulerDraw.name,
667
+ Draws.PreviewDraw.name
668
+ ]);
669
+ });
670
+ this.group.add(circle);
671
+ }
672
+ // 拐点(已拐)
673
+ for (let i = 1; i < linkPoints.length - 1; i++) {
674
+ const circle = new Konva.Circle({
675
+ name: 'link-manual-point',
676
+ id: nanoid(),
677
+ pairId: pair.id,
678
+ x: linkPoints[i][0],
679
+ y: linkPoints[i][1],
680
+ radius: this.render.toStageValue(this.render.bgSize / 2),
681
+ stroke: 'rgba(0,100,0,0.2)',
682
+ strokeWidth: this.render.toStageValue(1),
683
+ linkManualIndex: i // 当前拐点位置
684
+ });
685
+ // hover 效果
686
+ circle.on('mouseenter', () => {
687
+ circle.stroke('rgba(0,100,0,1)');
688
+ document.body.style.cursor = 'pointer';
689
+ });
690
+ circle.on('mouseleave', () => {
691
+ if (!circle.attrs.dragStart) {
692
+ circle.stroke('rgba(0,100,0,0.1)');
693
+ document.body.style.cursor = 'default';
694
+ }
695
+ });
696
+ // 拐点操作
697
+ circle.on('mousedown', () => {
698
+ const pos = circle.getAbsolutePosition();
699
+ // 记录操作开始状态
700
+ circle.setAttrs({
701
+ dragStartX: pos.x,
702
+ dragStartY: pos.y,
703
+ dragStart: true
704
+ });
705
+ // 标记状态 - 正在操作拐点
706
+ this.state.linkManualing = true;
707
+ });
708
+ this.render.stage.on('mousemove', () => {
709
+ if (circle.attrs.dragStart) {
710
+ // 正在操作
711
+ const pos = this.render.stage.getPointerPosition();
712
+ if (pos) {
713
+ // 磁贴
714
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
715
+ // 移动拐点
716
+ circle.setAbsolutePosition(transformerPos);
717
+ // 正在拖动效果
718
+ const tempPoints = [...linkPoints];
719
+ tempPoints[circle.attrs.linkManualIndex] = [
720
+ this.render.toStageValue(transformerPos.x - stageState.x),
721
+ this.render.toStageValue(transformerPos.y - stageState.y)
722
+ ];
723
+ manualingLine.points(tempPoints.flat());
724
+ }
725
+ }
726
+ });
727
+ circle.on('mouseup', () => {
728
+ const pos = circle.getAbsolutePosition();
729
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
730
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
731
+ // 操作移动距离达到阈值
732
+ const stageState = this.render.getStageState();
733
+ // 记录(更新)拐点
734
+ manualPoints[circle.attrs.linkManualIndex - 1] = {
735
+ x: this.render.toStageValue(pos.x - stageState.x),
736
+ y: this.render.toStageValue(pos.y - stageState.y)
737
+ };
738
+ manualPointsMap[pair.id] = manualPoints;
739
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
740
+ }
741
+ // 操作结束
742
+ circle.setAttrs({ dragStart: false });
743
+ // state 操作结束
744
+ this.state.linkManualing = false;
745
+ // 销毁
746
+ circle.destroy();
747
+ manualingLine.destroy();
748
+ // 更新历史
749
+ this.render.updateHistory();
750
+ // 对齐线清除
751
+ this.render.attractTool.alignLinesClear();
752
+ // 重绘
753
+ this.render.redraw([
754
+ Draws.LinkDraw.name,
755
+ Draws.RulerDraw.name,
756
+ Draws.PreviewDraw.name
757
+ ]);
758
+ });
759
+ this.group.add(circle);
760
+ }
761
+ }
762
+ }
763
+ }
764
+ else if (pair.linkType === "bezier") {
765
+ if (fromGroup && toGroup && fromPoint && toPoint) {
766
+ const fromAnchor = fromGroup.findOne(`#${fromPoint.id}`);
767
+ const toAnchor = toGroup.findOne(`#${toPoint.id}`);
768
+ // 锚点信息
769
+ const fromAnchorPos = this.getAnchorPos(fromAnchor);
770
+ const toAnchorPos = this.getAnchorPos(toAnchor);
771
+ // 拐点(已拐)记录
772
+ const manualPointsMap = (_g = fromGroup.getAttr('manualPointsMap')) !== null && _g !== void 0 ? _g : {};
773
+ const manualPoints = (_h = manualPointsMap[pair.id]) !== null && _h !== void 0 ? _h : [];
774
+ // 连接点 + 拐点
775
+ const linkPoints = [
776
+ [this.render.toStageValue(fromAnchorPos.x), this.render.toStageValue(fromAnchorPos.y)],
777
+ ...manualPoints.map((o) => [o.x, o.y]),
778
+ [this.render.toStageValue(toAnchorPos.x), this.render.toStageValue(toAnchorPos.y)]
779
+ ];
780
+ // 连接线
781
+ const linkLine = new Konva.Arrow({
782
+ name: 'link-line',
783
+ // 用于删除连接线
784
+ groupId: fromGroup.id(),
785
+ pointId: fromPoint.id,
786
+ pairId: pair.id,
787
+ linkType: pair.linkType,
788
+ points: linkPoints.flat(),
789
+ pointerAtBeginning: false,
790
+ pointerAtEnding: false,
791
+ sceneFunc: BezierSceneFunc
792
+ });
793
+ linkLine.stroke(this.render.getLinkSettings(linkLine).stroke);
794
+ linkLine.strokeWidth(this.render.getLinkSettings(linkLine).strokeWidth);
795
+ linkLine.hitStrokeWidth(Math.max(this.render.getLinkSettings().strokeWidth, 10));
796
+ linkLine.dash(((_j = this.render.linkTool.linkCurrent) === null || _j === void 0 ? void 0 : _j.attrs.pairId) === pair.id ? [1, 1] : []);
797
+ linkLine.fill(this.render.getLinkSettings(linkLine).stroke);
798
+ linkLine.pointerAtBeginning(this.render.getLinkSettings(linkLine).arrowStart);
799
+ linkLine.pointerAtEnding(this.render.getLinkSettings(linkLine).arrowEnd);
800
+ if (!this.render.config.readonly) {
801
+ linkLine.on('pointerclick', () => this.render.linkTool.select(linkLine));
802
+ linkLine.on('mouseenter', () => {
803
+ linkLine.opacity(0.5);
804
+ document.body.style.cursor = 'pointer';
805
+ });
806
+ linkLine.on('mouseleave', () => {
807
+ linkLine.opacity(1);
808
+ document.body.style.cursor = 'default';
809
+ });
810
+ }
811
+ this.group.add(linkLine);
812
+ if (!this.render.config.readonly) {
813
+ // 正在拖动效果
814
+ const manualingLine = new Konva.Arrow({
815
+ name: 'manualing-line',
816
+ stroke: '#ff0000',
817
+ strokeWidth: 2,
818
+ points: [],
819
+ dash: [4, 4],
820
+ pointerAtBeginning: false,
821
+ pointerAtEnding: false,
822
+ sceneFunc: BezierSceneFunc
823
+ });
824
+ this.group.add(manualingLine);
825
+ // 拐点
826
+ if (linkPoints.length <= 3) {
827
+ // 拐点(待拐)
828
+ for (let i = 0; i < linkPoints.length - 1; i++) {
829
+ const circle = new Konva.Circle({
830
+ name: 'link-manual-point',
831
+ id: nanoid(),
832
+ pairId: pair.id,
833
+ x: (linkPoints[i][0] + linkPoints[i + 1][0]) / 2,
834
+ y: (linkPoints[i][1] + linkPoints[i + 1][1]) / 2,
835
+ radius: this.render.toStageValue(this.render.bgSize / 2),
836
+ stroke: 'rgba(0,0,255,0.2)',
837
+ strokeWidth: this.render.toStageValue(1),
838
+ linkManualIndex: i // 当前拐点位置
839
+ });
840
+ // hover 效果
841
+ circle.on('mouseenter', () => {
842
+ circle.stroke('rgba(0,0,255,0.8)');
843
+ document.body.style.cursor = 'pointer';
844
+ });
845
+ circle.on('mouseleave', () => {
846
+ if (!circle.attrs.dragStart) {
847
+ circle.stroke('rgba(0,0,255,0.1)');
848
+ document.body.style.cursor = 'default';
849
+ }
850
+ });
851
+ // 拐点操作
852
+ circle.on('mousedown', () => {
853
+ const pos = circle.getAbsolutePosition();
854
+ // 记录操作开始状态
855
+ circle.setAttrs({
856
+ // 开始坐标
857
+ dragStartX: pos.x,
858
+ dragStartY: pos.y,
859
+ // 正在操作
860
+ dragStart: true
861
+ });
862
+ // 标记状态 - 正在操作拐点
863
+ this.state.linkManualing = true;
864
+ });
865
+ this.render.stage.on('mousemove', () => {
866
+ if (circle.attrs.dragStart) {
867
+ // 正在操作
868
+ const pos = this.render.stage.getPointerPosition();
869
+ if (pos) {
870
+ // 磁贴
871
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
872
+ // 移动拐点
873
+ circle.setAbsolutePosition(transformerPos);
874
+ // 正在拖动效果
875
+ const tempPoints = [...linkPoints];
876
+ tempPoints.splice(circle.attrs.linkManualIndex + 1, 0, [
877
+ this.render.toStageValue(transformerPos.x - stageState.x),
878
+ this.render.toStageValue(transformerPos.y - stageState.y)
879
+ ]);
880
+ manualingLine.points(tempPoints.flat());
881
+ }
882
+ }
883
+ });
884
+ circle.on('mouseup', () => {
885
+ const pos = circle.getAbsolutePosition();
886
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
887
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
888
+ // 操作移动距离达到阈值
889
+ const stageState = this.render.getStageState();
890
+ // 记录(插入)拐点
891
+ manualPoints.splice(circle.attrs.linkManualIndex, 0, {
892
+ x: this.render.toStageValue(pos.x - stageState.x),
893
+ y: this.render.toStageValue(pos.y - stageState.y)
894
+ });
895
+ manualPointsMap[pair.id] = manualPoints;
896
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
897
+ }
898
+ // 操作结束
899
+ circle.setAttrs({ dragStart: false });
900
+ // state 操作结束
901
+ this.state.linkManualing = false;
902
+ // 销毁
903
+ circle.destroy();
904
+ manualingLine.destroy();
905
+ // 更新历史
906
+ this.render.updateHistory();
907
+ // 对齐线清除
908
+ this.render.attractTool.alignLinesClear();
909
+ // 重绘
910
+ this.render.redraw([
911
+ Draws.LinkDraw.name,
912
+ Draws.RulerDraw.name,
913
+ Draws.PreviewDraw.name
914
+ ]);
915
+ });
916
+ this.group.add(circle);
917
+ }
918
+ }
919
+ // 拐点(已拐)
920
+ for (let i = 1; i < linkPoints.length - 1; i++) {
921
+ const circle = new Konva.Circle({
922
+ name: 'link-manual-point',
923
+ id: nanoid(),
924
+ pairId: pair.id,
925
+ x: linkPoints[i][0],
926
+ y: linkPoints[i][1],
927
+ radius: this.render.toStageValue(this.render.bgSize / 2),
928
+ stroke: 'rgba(0,100,0,0.2)',
929
+ strokeWidth: this.render.toStageValue(1),
930
+ linkManualIndex: i // 当前拐点位置
931
+ });
932
+ // hover 效果
933
+ circle.on('mouseenter', () => {
934
+ circle.stroke('rgba(0,100,0,1)');
935
+ document.body.style.cursor = 'pointer';
936
+ });
937
+ circle.on('mouseleave', () => {
938
+ if (!circle.attrs.dragStart) {
939
+ circle.stroke('rgba(0,100,0,0.1)');
940
+ document.body.style.cursor = 'default';
941
+ }
942
+ });
943
+ // 拐点操作
944
+ circle.on('mousedown', () => {
945
+ const pos = circle.getAbsolutePosition();
946
+ // 记录操作开始状态
947
+ circle.setAttrs({
948
+ dragStartX: pos.x,
949
+ dragStartY: pos.y,
950
+ dragStart: true
951
+ });
952
+ // 标记状态 - 正在操作拐点
953
+ this.state.linkManualing = true;
954
+ });
955
+ this.render.stage.on('mousemove', () => {
956
+ if (circle.attrs.dragStart) {
957
+ // 正在操作
958
+ const pos = this.render.stage.getPointerPosition();
959
+ if (pos) {
960
+ // 磁贴
961
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
962
+ // 移动拐点
963
+ circle.setAbsolutePosition(transformerPos);
964
+ // 正在拖动效果
965
+ const tempPoints = [...linkPoints];
966
+ tempPoints[circle.attrs.linkManualIndex] = [
967
+ this.render.toStageValue(transformerPos.x - stageState.x),
968
+ this.render.toStageValue(transformerPos.y - stageState.y)
969
+ ];
970
+ manualingLine.points(tempPoints.flat());
971
+ }
972
+ }
973
+ });
974
+ circle.on('mouseup', () => {
975
+ const pos = circle.getAbsolutePosition();
976
+ if (Math.abs(pos.x - circle.attrs.dragStartX) > this.option.size ||
977
+ Math.abs(pos.y - circle.attrs.dragStartY) > this.option.size) {
978
+ // 操作移动距离达到阈值
979
+ const stageState = this.render.getStageState();
980
+ // 记录(更新)拐点
981
+ manualPoints[circle.attrs.linkManualIndex - 1] = {
982
+ x: this.render.toStageValue(pos.x - stageState.x),
983
+ y: this.render.toStageValue(pos.y - stageState.y)
984
+ };
985
+ manualPointsMap[pair.id] = manualPoints;
986
+ fromGroup.setAttr('manualPointsMap', manualPointsMap);
987
+ }
988
+ // 操作结束
989
+ circle.setAttrs({ dragStart: false });
990
+ // state 操作结束
991
+ this.state.linkManualing = false;
992
+ // 销毁
993
+ circle.destroy();
994
+ manualingLine.destroy();
995
+ // 更新历史
996
+ this.render.updateHistory();
997
+ // 对齐线清除
998
+ this.render.attractTool.alignLinesClear();
999
+ // 重绘
1000
+ this.render.redraw([
1001
+ Draws.LinkDraw.name,
1002
+ Draws.RulerDraw.name,
1003
+ Draws.PreviewDraw.name
1004
+ ]);
1005
+ });
1006
+ this.group.add(circle);
1007
+ }
1008
+ }
1009
+ }
1010
+ }
1011
+ else if (pair.linkType === "straight") {
1012
+ // 直线
1013
+ if (fromGroup && toGroup && fromPoint && toPoint) {
1014
+ const fromAnchor = fromGroup.findOne(`#${fromPoint.id}`);
1015
+ const toAnchor = toGroup.findOne(`#${toPoint.id}`);
1016
+ // 锚点信息
1017
+ const fromAnchorPos = this.getAnchorPos(fromAnchor);
1018
+ const toAnchorPos = this.getAnchorPos(toAnchor);
1019
+ const linkLine = new Konva.Arrow({
1020
+ name: 'link-line',
1021
+ // 用于删除连接线
1022
+ groupId: fromGroup.id(),
1023
+ pointId: fromPoint.id,
1024
+ pairId: pair.id,
1025
+ linkType: pair.linkType,
1026
+ points: [
1027
+ [this.render.toStageValue(fromAnchorPos.x), this.render.toStageValue(fromAnchorPos.y)],
1028
+ [this.render.toStageValue(toAnchorPos.x), this.render.toStageValue(toAnchorPos.y)]
1029
+ ].flat(),
1030
+ pointerAtBeginning: false,
1031
+ pointerAtEnding: false
1032
+ });
1033
+ linkLine.stroke(this.render.getLinkSettings(linkLine).stroke);
1034
+ linkLine.strokeWidth(this.render.getLinkSettings(linkLine).strokeWidth);
1035
+ linkLine.hitStrokeWidth(Math.max(this.render.getLinkSettings().strokeWidth, 10));
1036
+ linkLine.dash(((_k = this.render.linkTool.linkCurrent) === null || _k === void 0 ? void 0 : _k.attrs.pairId) === pair.id ? [1, 1] : []);
1037
+ linkLine.fill(this.render.getLinkSettings(linkLine).stroke);
1038
+ linkLine.pointerAtBeginning(this.render.getLinkSettings(linkLine).arrowStart);
1039
+ linkLine.pointerAtEnding(this.render.getLinkSettings(linkLine).arrowEnd);
1040
+ if (!this.render.config.readonly) {
1041
+ linkLine.on('pointerclick', () => this.render.linkTool.select(linkLine));
1042
+ linkLine.on('mouseenter', () => {
1043
+ linkLine.opacity(0.5);
1044
+ document.body.style.cursor = 'pointer';
1045
+ });
1046
+ linkLine.on('mouseleave', () => {
1047
+ linkLine.opacity(1);
1048
+ document.body.style.cursor = 'default';
1049
+ });
1050
+ }
1051
+ this.group.add(linkLine);
1052
+ }
1053
+ }
1054
+ else {
1055
+ // 自动
1056
+ // 最小区域
1057
+ const fromGroupLinkArea = this.getGroupLinkArea(fromGroup);
1058
+ const toGroupLinkArea = this.getGroupLinkArea(toGroup);
1059
+ // 两区域的最短距离
1060
+ const groupDistance = this.getGroupPairDistance(fromGroupLinkArea, toGroupLinkArea);
1061
+ // 不可通过区域
1062
+ const fromGroupForbiddenArea = this.getGroupForbiddenArea(fromGroupLinkArea, groupDistance - 2);
1063
+ const toGroupForbiddenArea = this.getGroupForbiddenArea(toGroupLinkArea, groupDistance - 2);
1064
+ // 两区域扩展
1065
+ const groupForbiddenArea = this.getGroupPairArea(fromGroupForbiddenArea, toGroupForbiddenArea);
1066
+ // 连线通过区域
1067
+ const groupAccessArea = this.getGroupPairArea(this.getGroupAccessArea(fromGroupForbiddenArea, groupDistance), this.getGroupAccessArea(toGroupForbiddenArea, groupDistance));
1068
+ if (fromGroup && toGroup && fromPoint && toPoint) {
1069
+ const fromAnchor = fromGroup.findOne(`#${fromPoint.id}`);
1070
+ const toAnchor = toGroup.findOne(`#${toPoint.id}`);
1071
+ // 锚点信息
1072
+ const fromAnchorPos = this.getAnchorPos(fromAnchor);
1073
+ const toAnchorPos = this.getAnchorPos(toAnchor);
1074
+ if (fromAnchor && toAnchor) {
1075
+ // 连接出入口
1076
+ const fromEntry = this.getEntry(fromAnchor, fromGroupForbiddenArea, groupDistance);
1077
+ const toEntry = this.getEntry(toAnchor, toGroupForbiddenArea, groupDistance);
1078
+ // 可能点
1079
+ let matrixPoints = [];
1080
+ // 通过区域 四角
1081
+ matrixPoints.push({ x: groupAccessArea.x1, y: groupAccessArea.y1 });
1082
+ matrixPoints.push({ x: groupAccessArea.x2, y: groupAccessArea.y2 });
1083
+ matrixPoints.push({ x: groupAccessArea.x1, y: groupAccessArea.y2 });
1084
+ matrixPoints.push({ x: groupAccessArea.x2, y: groupAccessArea.y1 });
1085
+ // 最小区域 四角
1086
+ matrixPoints.push({ x: groupForbiddenArea.x1, y: groupForbiddenArea.y1 });
1087
+ matrixPoints.push({ x: groupForbiddenArea.x2, y: groupForbiddenArea.y2 });
1088
+ matrixPoints.push({ x: groupForbiddenArea.x1, y: groupForbiddenArea.y2 });
1089
+ matrixPoints.push({ x: groupForbiddenArea.x2, y: groupForbiddenArea.y1 });
1090
+ // 起点
1091
+ matrixPoints.push(Object.assign(Object.assign({}, fromAnchorPos), { type: 'from' }));
1092
+ // 起点 出口
1093
+ matrixPoints.push(Object.assign(Object.assign({}, fromEntry), { type: 'from-entry' }));
1094
+ // 终点
1095
+ matrixPoints.push(Object.assign(Object.assign({}, toAnchorPos), { type: 'to' }));
1096
+ // 终点 入口
1097
+ matrixPoints.push(Object.assign(Object.assign({}, toEntry), { type: 'to-entry' }));
1098
+ // 通过区域 中点
1099
+ matrixPoints.push(this.getGroupPairCenter(fromGroupForbiddenArea, toGroupForbiddenArea));
1100
+ // 去重
1101
+ matrixPoints = matrixPoints.reduce((arr, item) => {
1102
+ if (item.type === void 0) {
1103
+ if (arr.findIndex((o) => o.x === item.x && o.y === item.y) < 0) {
1104
+ arr.push(item);
1105
+ }
1106
+ }
1107
+ else {
1108
+ const idx = arr.findIndex((o) => o.x === item.x && o.y === item.y);
1109
+ if (idx > -1) {
1110
+ arr.splice(idx, 1);
1111
+ }
1112
+ arr.push(item);
1113
+ }
1114
+ return arr;
1115
+ }, []);
1116
+ const columns = [
1117
+ ...matrixPoints.map((o) => o.x),
1118
+ // 增加列
1119
+ fromGroupForbiddenArea.x1,
1120
+ fromGroupForbiddenArea.x2,
1121
+ toGroupForbiddenArea.x1,
1122
+ toGroupForbiddenArea.x2
1123
+ ].sort((a, b) => a - b);
1124
+ // 去重
1125
+ for (let x = columns.length - 1; x > 0; x--) {
1126
+ if (columns[x] === columns[x - 1]) {
1127
+ columns.splice(x, 1);
1128
+ }
1129
+ }
1130
+ const rows = [
1131
+ ...matrixPoints.map((o) => o.y),
1132
+ // 增加行
1133
+ fromGroupForbiddenArea.y1,
1134
+ fromGroupForbiddenArea.y2,
1135
+ toGroupForbiddenArea.y1,
1136
+ toGroupForbiddenArea.y2
1137
+ ].sort((a, b) => a - b);
1138
+ // 去重
1139
+ for (let y = rows.length - 1; y > 0; y--) {
1140
+ if (rows[y] === rows[y - 1]) {
1141
+ rows.splice(y, 1);
1142
+ }
1143
+ }
1144
+ // 屏蔽区域(序号)
1145
+ const columnFromStart = columns.findIndex((o) => o === fromGroupForbiddenArea.x1);
1146
+ const columnFromEnd = columns.findIndex((o) => o === fromGroupForbiddenArea.x2);
1147
+ const rowFromStart = rows.findIndex((o) => o === fromGroupForbiddenArea.y1);
1148
+ const rowFromEnd = rows.findIndex((o) => o === fromGroupForbiddenArea.y2);
1149
+ const columnToStart = columns.findIndex((o) => o === toGroupForbiddenArea.x1);
1150
+ const columnToEnd = columns.findIndex((o) => o === toGroupForbiddenArea.x2);
1151
+ const rowToStart = rows.findIndex((o) => o === toGroupForbiddenArea.y1);
1152
+ const rowToEnd = rows.findIndex((o) => o === toGroupForbiddenArea.y2);
1153
+ // 算法矩阵起点、终点
1154
+ let matrixStart = null;
1155
+ let matrixEnd = null;
1156
+ // 算法地图矩阵
1157
+ const matrix = [];
1158
+ for (let y = 0; y < rows.length; y++) {
1159
+ // 新增行
1160
+ if (matrix[y] === void 0) {
1161
+ matrix[y] = [];
1162
+ }
1163
+ for (let x = 0; x < columns.length; x++) {
1164
+ // 不可通过区域
1165
+ if (x >= columnFromStart &&
1166
+ x <= columnFromEnd &&
1167
+ y >= rowFromStart &&
1168
+ y <= rowFromEnd) {
1169
+ matrix[y][x] = 2;
1170
+ }
1171
+ else if (x >= columnToStart &&
1172
+ x <= columnToEnd &&
1173
+ y >= rowToStart &&
1174
+ y <= rowToEnd) {
1175
+ matrix[y][x] = 2;
1176
+ }
1177
+ else {
1178
+ // 可通过区域
1179
+ matrix[y][x] = 0;
1180
+ }
1181
+ // 出口、入口 -> 算法 起点、终点
1182
+ if (columns[x] === fromEntry.x && rows[y] === fromEntry.y) {
1183
+ matrix[y][x] = 1;
1184
+ matrixStart = { x, y };
1185
+ }
1186
+ if (columns[x] === toEntry.x && rows[y] === toEntry.y) {
1187
+ matrix[y][x] = 1;
1188
+ matrixEnd = { x, y };
1189
+ }
1190
+ // 没有定义方向(给于十字可通过区域)
1191
+ // 如,从:
1192
+ // 1 1 1
1193
+ // 1 0 1
1194
+ // 1 1 1
1195
+ // 变成:
1196
+ // 1 0 1
1197
+ // 0 0 0
1198
+ // 1 0 1
1199
+ if (!fromAnchor.attrs.direction) {
1200
+ if (columns[x] === fromEntry.x || rows[y] === fromEntry.y) {
1201
+ if (x >= columnFromStart &&
1202
+ x <= columnFromEnd &&
1203
+ y >= rowFromStart &&
1204
+ y <= rowFromEnd) {
1205
+ matrix[y][x] = 1;
1206
+ }
1207
+ }
1208
+ }
1209
+ if (!toAnchor.attrs.direction) {
1210
+ if (columns[x] === toEntry.x || rows[y] === toEntry.y) {
1211
+ if (x >= columnToStart &&
1212
+ x <= columnToEnd &&
1213
+ y >= rowToStart &&
1214
+ y <= rowToEnd) {
1215
+ matrix[y][x] = 1;
1216
+ }
1217
+ }
1218
+ }
1219
+ }
1220
+ }
1221
+ if (matrixStart && matrixEnd) {
1222
+ const way = aStar({ from: matrixStart, to: matrixEnd, matrix, maxCost: 2 });
1223
+ const linkLine = new Konva.Arrow({
1224
+ name: 'link-line',
1225
+ // 用于删除连接线
1226
+ groupId: fromGroup.id(),
1227
+ pointId: fromPoint.id,
1228
+ pairId: pair.id,
1229
+ linkType: pair.linkType, // 记录 连接线 类型
1230
+ points: [
1231
+ [this.render.toStageValue(fromAnchorPos.x), this.render.toStageValue(fromAnchorPos.y)], // 补充 起点
1232
+ ...way.map((o) => [this.render.toStageValue(columns[o.x]), this.render.toStageValue(rows[o.y])]),
1233
+ [this.render.toStageValue(toAnchorPos.x), this.render.toStageValue(toAnchorPos.y)] // 补充 终点
1234
+ ].flat(),
1235
+ pointerAtBeginning: false,
1236
+ pointerAtEnding: false
1237
+ });
1238
+ linkLine.stroke(this.render.getLinkSettings(linkLine).stroke);
1239
+ linkLine.strokeWidth(this.render.getLinkSettings(linkLine).strokeWidth);
1240
+ linkLine.hitStrokeWidth(Math.max(this.render.getLinkSettings().strokeWidth, 10));
1241
+ linkLine.dash(((_l = this.render.linkTool.linkCurrent) === null || _l === void 0 ? void 0 : _l.attrs.pairId) === pair.id ? [1, 1] : []);
1242
+ linkLine.fill(this.render.getLinkSettings(linkLine).stroke);
1243
+ linkLine.pointerAtBeginning(this.render.getLinkSettings(linkLine).arrowStart);
1244
+ linkLine.pointerAtEnding(this.render.getLinkSettings(linkLine).arrowEnd);
1245
+ if (!this.render.config.readonly) {
1246
+ linkLine.on('pointerclick', () => this.render.linkTool.select(linkLine));
1247
+ linkLine.on('mouseenter', () => {
1248
+ linkLine.opacity(0.5);
1249
+ document.body.style.cursor = 'pointer';
1250
+ });
1251
+ linkLine.on('mouseleave', () => {
1252
+ linkLine.opacity(1);
1253
+ document.body.style.cursor = 'default';
1254
+ });
1255
+ }
1256
+ this.group.add(linkLine);
1257
+ }
1258
+ }
1259
+ }
1260
+ }
1261
+ }
1262
+ }
1263
+ if (!this.render.config.readonly) {
1264
+ // 连接点
1265
+ for (const point of points) {
1266
+ const group = groups.find((o) => o.id() === point.groupId);
1267
+ // 非 选择中
1268
+ if (group && !group.getAttr('selected')) {
1269
+ const anchor = this.render.layer.findOne(`#${point.id}`);
1270
+ if (anchor) {
1271
+ const circle = new Konva.Circle({
1272
+ name: 'link-point',
1273
+ id: point.id,
1274
+ groupId: group.id(),
1275
+ x: this.render.toStageValue(anchor.absolutePosition().x - stageState.x),
1276
+ y: this.render.toStageValue(anchor.absolutePosition().y - stageState.y),
1277
+ radius: this.render.toStageValue(this.option.size),
1278
+ stroke: 'rgba(255,0,0,0.2)',
1279
+ strokeWidth: this.render.toStageValue(1),
1280
+ // 调整中,不显示连接点
1281
+ opacity: point.visible && !this.render.draws[Draws.GraphDraw.name].state.adjusting ? 1 : 0
1282
+ });
1283
+ // hover 效果
1284
+ circle.on('mouseenter', () => {
1285
+ circle.stroke('rgba(255,0,0,0.5)');
1286
+ circle.opacity(1);
1287
+ document.body.style.cursor = 'pointer';
1288
+ });
1289
+ circle.on('mouseleave', () => {
1290
+ circle.stroke('rgba(255,0,0,0.2)');
1291
+ circle.opacity(0);
1292
+ document.body.style.cursor = 'default';
1293
+ });
1294
+ circle.on('mousedown', () => {
1295
+ this.render.selectionTool.selectingClear();
1296
+ this.render.linkTool.selectingClear();
1297
+ const pos = this.render.stage.getPointerPosition();
1298
+ if (pos) {
1299
+ // 临时 连接线 画
1300
+ this.state.linkingLine = {
1301
+ group: group,
1302
+ circle: circle,
1303
+ line: new Konva.Line({
1304
+ name: 'linking-line',
1305
+ points: [
1306
+ [circle.x(), circle.y()],
1307
+ [
1308
+ this.render.toStageValue(pos.x - stageState.x),
1309
+ this.render.toStageValue(pos.y - stageState.y)
1310
+ ]
1311
+ ].flat(),
1312
+ stroke: 'blue',
1313
+ strokeWidth: 1
1314
+ })
1315
+ };
1316
+ this.layer.add(this.state.linkingLine.line);
1317
+ }
1318
+ });
1319
+ circle.on('mouseup', () => {
1320
+ var _a;
1321
+ if (this.state.linkingLine) {
1322
+ const line = this.state.linkingLine;
1323
+ // 不同连接点
1324
+ if (line.circle.id() !== circle.id()) {
1325
+ const toGroup = groups.find((o) => o.id() === circle.getAttr('groupId'));
1326
+ if (toGroup) {
1327
+ const fromPoint = points.find((o) => o.id === line.circle.id());
1328
+ if (fromPoint) {
1329
+ const toPoint = points.find((o) => o.id === line.circle.id());
1330
+ if (toPoint) {
1331
+ if (Array.isArray(fromPoint.pairs)) {
1332
+ fromPoint.pairs = [
1333
+ ...fromPoint.pairs,
1334
+ {
1335
+ id: nanoid(),
1336
+ from: {
1337
+ groupId: line.group.id(),
1338
+ pointId: line.circle.id()
1339
+ },
1340
+ to: {
1341
+ groupId: circle.getAttr('groupId'),
1342
+ pointId: circle.id()
1343
+ },
1344
+ linkType: this.state.linkType // 记录 连接线 类型
1345
+ }
1346
+ ];
1347
+ }
1348
+ // 更新历史
1349
+ this.render.updateHistory();
1350
+ // 对齐线清除
1351
+ this.render.attractTool.alignLinesClear();
1352
+ // 重绘
1353
+ this.render.redraw([
1354
+ Draws.LinkDraw.name,
1355
+ Draws.RulerDraw.name,
1356
+ Draws.PreviewDraw.name
1357
+ ]);
1358
+ }
1359
+ }
1360
+ }
1361
+ }
1362
+ // 临时 连接线 移除
1363
+ (_a = this.state.linkingLine) === null || _a === void 0 ? void 0 : _a.line.destroy();
1364
+ this.state.linkingLine = null;
1365
+ }
1366
+ });
1367
+ this.group.add(circle);
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ }
1373
+ }
1374
+ // @ts-ignore
1375
+ LinkDraw.name = 'Link';
1376
+ //# sourceMappingURL=link-draw.js.map