@logicflow/core 2.0.0-beta.4 → 2.0.0-beta.6

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 (246) hide show
  1. package/.turbo/turbo-build$colon$dev.log +2 -2
  2. package/.turbo/turbo-build.log +9 -15
  3. package/__tests__/bugs/1545-spec.test.ts +19 -15
  4. package/__tests__/util/edge.test.ts +57 -57
  5. package/dist/index.min.js +4 -4
  6. package/es/LogicFlow.d.ts +32 -6
  7. package/es/LogicFlow.js +15 -12
  8. package/es/LogicFlow.js.map +1 -1
  9. package/es/algorithm/edge.js.map +1 -1
  10. package/es/algorithm/index.d.ts +2 -0
  11. package/es/algorithm/index.js +2 -0
  12. package/es/algorithm/index.js.map +1 -1
  13. package/es/algorithm/outline.d.ts +1 -1
  14. package/es/common/drag.d.ts +2 -2
  15. package/es/common/drag.js.map +1 -1
  16. package/es/constant/index.d.ts +37 -1
  17. package/es/constant/index.js +40 -1
  18. package/es/constant/index.js.map +1 -1
  19. package/es/event/eventArgs.d.ts +88 -25
  20. package/es/index.d.ts +4 -0
  21. package/es/index.js +4 -0
  22. package/es/index.js.map +1 -1
  23. package/es/keyboard/shortcut.d.ts +4 -0
  24. package/es/keyboard/shortcut.js +9 -8
  25. package/es/keyboard/shortcut.js.map +1 -1
  26. package/es/model/BaseModel.d.ts +12 -16
  27. package/es/model/EditConfigModel.d.ts +97 -36
  28. package/es/model/EditConfigModel.js +166 -79
  29. package/es/model/EditConfigModel.js.map +1 -1
  30. package/es/model/GraphModel.d.ts +12 -1
  31. package/es/model/GraphModel.js +40 -9
  32. package/es/model/GraphModel.js.map +1 -1
  33. package/es/model/TransformModel.js +1 -1
  34. package/es/model/TransformModel.js.map +1 -1
  35. package/es/model/edge/BaseEdgeModel.d.ts +7 -1
  36. package/es/model/edge/BaseEdgeModel.js +33 -17
  37. package/es/model/edge/BaseEdgeModel.js.map +1 -1
  38. package/es/model/edge/BezierEdgeModel.d.ts +1 -1
  39. package/es/model/edge/BezierEdgeModel.js +5 -2
  40. package/es/model/edge/BezierEdgeModel.js.map +1 -1
  41. package/es/model/edge/PolylineEdgeModel.d.ts +3 -3
  42. package/es/model/edge/PolylineEdgeModel.js +20 -14
  43. package/es/model/edge/PolylineEdgeModel.js.map +1 -1
  44. package/es/model/node/BaseNodeModel.d.ts +7 -1
  45. package/es/model/node/BaseNodeModel.js +22 -11
  46. package/es/model/node/BaseNodeModel.js.map +1 -1
  47. package/es/model/node/CircleNodeModel.js.map +1 -1
  48. package/es/model/node/DiamondNodeModel.js.map +1 -1
  49. package/es/model/node/EllipseNodeModel.js.map +1 -1
  50. package/es/options.d.ts +4 -1
  51. package/es/options.js.map +1 -1
  52. package/es/tool/MultipleSelectTool.d.ts +1 -1
  53. package/es/tool/MultipleSelectTool.js +5 -5
  54. package/es/tool/MultipleSelectTool.js.map +1 -1
  55. package/es/tool/TextEditTool.d.ts +3 -3
  56. package/es/tool/TextEditTool.js +2 -2
  57. package/es/tool/TextEditTool.js.map +1 -1
  58. package/es/tool/index.d.ts +24 -2
  59. package/es/tool/index.js +82 -2
  60. package/es/tool/index.js.map +1 -1
  61. package/es/util/drag.d.ts +5 -5
  62. package/es/util/drag.js +3 -1
  63. package/es/util/drag.js.map +1 -1
  64. package/es/util/edge.d.ts +2 -1
  65. package/es/util/edge.js +9 -12
  66. package/es/util/edge.js.map +1 -1
  67. package/es/util/node.d.ts +2 -5
  68. package/es/util/node.js +1 -0
  69. package/es/util/node.js.map +1 -1
  70. package/es/view/Anchor.d.ts +1 -3
  71. package/es/view/Anchor.js +3 -0
  72. package/es/view/Anchor.js.map +1 -1
  73. package/es/view/Control.d.ts +1 -1
  74. package/es/view/Control.js +7 -7
  75. package/es/view/Control.js.map +1 -1
  76. package/es/view/Graph.d.ts +1 -1
  77. package/es/view/Rotate.js +2 -1
  78. package/es/view/Rotate.js.map +1 -1
  79. package/es/view/behavior/index.d.ts +2 -0
  80. package/es/view/behavior/index.js +3 -0
  81. package/es/view/behavior/index.js.map +1 -0
  82. package/es/view/behavior/snapline.d.ts +3 -0
  83. package/es/{tool → view/behavior}/snapline.js +0 -1
  84. package/es/view/behavior/snapline.js.map +1 -0
  85. package/es/view/edge/AdjustPoint.js +9 -20
  86. package/es/view/edge/AdjustPoint.js.map +1 -1
  87. package/es/view/edge/BaseEdge.js +25 -17
  88. package/es/view/edge/BaseEdge.js.map +1 -1
  89. package/es/view/node/BaseNode.js +14 -9
  90. package/es/view/node/BaseNode.js.map +1 -1
  91. package/es/view/node/HtmlNode.js +2 -2
  92. package/es/view/node/HtmlNode.js.map +1 -1
  93. package/es/view/overlay/CanvasOverlay.js +1 -0
  94. package/es/view/overlay/CanvasOverlay.js.map +1 -1
  95. package/es/view/overlay/ToolOverlay.d.ts +1 -1
  96. package/es/view/overlay/ToolOverlay.js +1 -1
  97. package/es/view/overlay/ToolOverlay.js.map +1 -1
  98. package/es/view/text/BaseText.js +7 -3
  99. package/es/view/text/BaseText.js.map +1 -1
  100. package/lib/LogicFlow.d.ts +32 -6
  101. package/lib/LogicFlow.js +17 -14
  102. package/lib/LogicFlow.js.map +1 -1
  103. package/lib/algorithm/edge.js.map +1 -1
  104. package/lib/algorithm/index.d.ts +2 -0
  105. package/lib/algorithm/index.js +17 -1
  106. package/lib/algorithm/index.js.map +1 -1
  107. package/lib/algorithm/outline.d.ts +1 -1
  108. package/lib/common/drag.d.ts +2 -2
  109. package/lib/common/drag.js.map +1 -1
  110. package/lib/constant/index.d.ts +37 -1
  111. package/lib/constant/index.js +41 -2
  112. package/lib/constant/index.js.map +1 -1
  113. package/lib/event/eventArgs.d.ts +88 -25
  114. package/lib/index.d.ts +4 -0
  115. package/lib/index.js +4 -0
  116. package/lib/index.js.map +1 -1
  117. package/lib/keyboard/shortcut.d.ts +4 -0
  118. package/lib/keyboard/shortcut.js +12 -9
  119. package/lib/keyboard/shortcut.js.map +1 -1
  120. package/lib/model/BaseModel.d.ts +12 -16
  121. package/lib/model/EditConfigModel.d.ts +97 -36
  122. package/lib/model/EditConfigModel.js +165 -78
  123. package/lib/model/EditConfigModel.js.map +1 -1
  124. package/lib/model/GraphModel.d.ts +12 -1
  125. package/lib/model/GraphModel.js +38 -7
  126. package/lib/model/GraphModel.js.map +1 -1
  127. package/lib/model/TransformModel.js +1 -1
  128. package/lib/model/TransformModel.js.map +1 -1
  129. package/lib/model/edge/BaseEdgeModel.d.ts +7 -1
  130. package/lib/model/edge/BaseEdgeModel.js +31 -15
  131. package/lib/model/edge/BaseEdgeModel.js.map +1 -1
  132. package/lib/model/edge/BezierEdgeModel.d.ts +1 -1
  133. package/lib/model/edge/BezierEdgeModel.js +4 -1
  134. package/lib/model/edge/BezierEdgeModel.js.map +1 -1
  135. package/lib/model/edge/PolylineEdgeModel.d.ts +3 -3
  136. package/lib/model/edge/PolylineEdgeModel.js +19 -13
  137. package/lib/model/edge/PolylineEdgeModel.js.map +1 -1
  138. package/lib/model/node/BaseNodeModel.d.ts +7 -1
  139. package/lib/model/node/BaseNodeModel.js +20 -9
  140. package/lib/model/node/BaseNodeModel.js.map +1 -1
  141. package/lib/model/node/CircleNodeModel.js.map +1 -1
  142. package/lib/model/node/DiamondNodeModel.js.map +1 -1
  143. package/lib/model/node/EllipseNodeModel.js.map +1 -1
  144. package/lib/options.d.ts +4 -1
  145. package/lib/options.js.map +1 -1
  146. package/lib/tool/MultipleSelectTool.d.ts +1 -1
  147. package/lib/tool/MultipleSelectTool.js +5 -5
  148. package/lib/tool/MultipleSelectTool.js.map +1 -1
  149. package/lib/tool/TextEditTool.d.ts +3 -3
  150. package/lib/tool/TextEditTool.js +4 -4
  151. package/lib/tool/TextEditTool.js.map +1 -1
  152. package/lib/tool/index.d.ts +24 -2
  153. package/lib/tool/index.js +85 -15
  154. package/lib/tool/index.js.map +1 -1
  155. package/lib/util/drag.d.ts +5 -5
  156. package/lib/util/drag.js +3 -1
  157. package/lib/util/drag.js.map +1 -1
  158. package/lib/util/edge.d.ts +2 -1
  159. package/lib/util/edge.js +11 -14
  160. package/lib/util/edge.js.map +1 -1
  161. package/lib/util/node.d.ts +2 -5
  162. package/lib/util/node.js +1 -0
  163. package/lib/util/node.js.map +1 -1
  164. package/lib/view/Anchor.d.ts +1 -3
  165. package/lib/view/Anchor.js +3 -0
  166. package/lib/view/Anchor.js.map +1 -1
  167. package/lib/view/Control.d.ts +1 -1
  168. package/lib/view/Control.js +7 -7
  169. package/lib/view/Control.js.map +1 -1
  170. package/lib/view/Graph.d.ts +1 -1
  171. package/lib/view/Rotate.js +2 -1
  172. package/lib/view/Rotate.js.map +1 -1
  173. package/lib/view/behavior/index.d.ts +2 -0
  174. package/lib/view/behavior/index.js +19 -0
  175. package/lib/view/behavior/index.js.map +1 -0
  176. package/lib/view/behavior/snapline.d.ts +3 -0
  177. package/lib/{tool → view/behavior}/snapline.js +0 -1
  178. package/lib/view/behavior/snapline.js.map +1 -0
  179. package/lib/view/edge/AdjustPoint.js +9 -20
  180. package/lib/view/edge/AdjustPoint.js.map +1 -1
  181. package/lib/view/edge/BaseEdge.js +24 -16
  182. package/lib/view/edge/BaseEdge.js.map +1 -1
  183. package/lib/view/node/BaseNode.js +13 -8
  184. package/lib/view/node/BaseNode.js.map +1 -1
  185. package/lib/view/node/HtmlNode.js +2 -2
  186. package/lib/view/node/HtmlNode.js.map +1 -1
  187. package/lib/view/overlay/CanvasOverlay.js +1 -0
  188. package/lib/view/overlay/CanvasOverlay.js.map +1 -1
  189. package/lib/view/overlay/ToolOverlay.d.ts +1 -1
  190. package/lib/view/overlay/ToolOverlay.js +1 -1
  191. package/lib/view/overlay/ToolOverlay.js.map +1 -1
  192. package/lib/view/text/BaseText.js +6 -2
  193. package/lib/view/text/BaseText.js.map +1 -1
  194. package/package.json +1 -1
  195. package/src/LogicFlow.tsx +52 -14
  196. package/src/algorithm/edge.ts +1 -0
  197. package/src/algorithm/index.ts +2 -0
  198. package/src/algorithm/outline.ts +2 -2
  199. package/src/common/drag.ts +16 -2
  200. package/src/constant/index.ts +42 -1
  201. package/src/event/eventArgs.ts +155 -34
  202. package/src/index.ts +4 -0
  203. package/src/keyboard/shortcut.ts +12 -8
  204. package/src/model/BaseModel.ts +15 -17
  205. package/src/model/EditConfigModel.ts +206 -94
  206. package/src/model/GraphModel.ts +43 -8
  207. package/src/model/TransformModel.ts +1 -1
  208. package/src/model/edge/BaseEdgeModel.ts +27 -18
  209. package/src/model/edge/BezierEdgeModel.ts +5 -6
  210. package/src/model/edge/PolylineEdgeModel.ts +22 -18
  211. package/src/model/node/BaseNodeModel.ts +19 -13
  212. package/src/model/node/CircleNodeModel.ts +0 -1
  213. package/src/model/node/DiamondNodeModel.ts +0 -1
  214. package/src/model/node/EllipseNodeModel.ts +0 -1
  215. package/src/options.ts +6 -1
  216. package/src/tool/MultipleSelectTool.tsx +6 -6
  217. package/src/tool/TextEditTool.tsx +3 -3
  218. package/src/tool/index.ts +96 -2
  219. package/src/util/drag.ts +22 -6
  220. package/src/util/edge.ts +14 -13
  221. package/src/util/node.ts +3 -5
  222. package/src/view/Anchor.tsx +3 -1
  223. package/src/view/Control.tsx +16 -7
  224. package/src/view/Graph.tsx +1 -1
  225. package/src/view/Rotate.tsx +2 -1
  226. package/src/view/behavior/index.ts +2 -0
  227. package/src/{tool → view/behavior}/snapline.ts +3 -4
  228. package/src/view/edge/AdjustPoint.tsx +32 -46
  229. package/src/view/edge/BaseEdge.tsx +58 -38
  230. package/src/view/node/BaseNode.tsx +24 -10
  231. package/src/view/node/HtmlNode.tsx +2 -2
  232. package/src/view/overlay/CanvasOverlay.tsx +1 -0
  233. package/src/view/overlay/ToolOverlay.tsx +1 -1
  234. package/src/view/text/BaseText.tsx +11 -3
  235. package/tsconfig.json +1 -1
  236. package/es/tool/snapline.d.ts +0 -3
  237. package/es/tool/snapline.js.map +0 -1
  238. package/es/tool/tool.d.ts +0 -22
  239. package/es/tool/tool.js +0 -43
  240. package/es/tool/tool.js.map +0 -1
  241. package/lib/tool/snapline.d.ts +0 -3
  242. package/lib/tool/snapline.js.map +0 -1
  243. package/lib/tool/tool.d.ts +0 -22
  244. package/lib/tool/tool.js +0 -49
  245. package/lib/tool/tool.js.map +0 -1
  246. package/src/tool/tool.ts +0 -66
@@ -12,7 +12,7 @@ export declare class ToolOverlay extends Component<IProps> {
12
12
  /**
13
13
  * 外部传入的一般是HTMLElement
14
14
  */
15
- getTools(): import("preact").VNode<import("../../tool").IToolProps>[];
15
+ getTools(): import("preact").VNode<import("../..").IToolProps>[];
16
16
  triggerToolRender(): void;
17
17
  render(): h.JSX.Element;
18
18
  }
@@ -52,7 +52,7 @@ var ToolOverlay = /** @class */ (function (_super) {
52
52
  return (0, compat_1.createElement)(t, {
53
53
  textEditElement: textEditElement,
54
54
  graphModel: graphModel,
55
- logicFlow: tool.instance,
55
+ lf: tool.instance,
56
56
  });
57
57
  });
58
58
  tool.components = components;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolOverlay.js","sourceRoot":"","sources":["../../../src/view/overlay/ToolOverlay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAA6D;AAC7D,sBAAkC;AAClC,2BAAgC;AAWhC;IAAiC,+BAAiB;IAAlD;;IAiDA,CAAC;IAhDC,yFAAyF;IACzF,+DAA+D;IAC/D,6DAA6D;IAC7D,6DAA6D;IAC7D,uCAAiB,GAAjB;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,wCAAkB,GAAlB;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,8BAAQ,GAAR;QACQ,IAAA,KAAuB,IAAI,CAAC,KAAK,EAA/B,IAAI,UAAA,EAAE,UAAU,gBAAe,CAAA;QAC/B,IAAA,eAAe,GAAK,UAAU,gBAAf,CAAe;QACtC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC7B,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC;YAC7B,OAAA,IAAA,sBAAC,EAAC,CAAC,EAAE;gBACH,eAAe,iBAAA;gBACf,UAAU,YAAA;gBACV,SAAS,EAAE,IAAI,CAAC,QAAQ;aACzB,CAAC;QAJF,CAIE,CACH,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,uCAAiB,GAAjB;QACQ,IAAA,KAAuB,IAAI,CAAC,KAAK,EAA/B,IAAI,UAAA,EAAE,UAAU,gBAAe,CAAA;QACvC,IAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAC/C,uBAAgB,UAAU,CAAC,MAAM,CAAE,CACrB,CAAA;QAChB,IAAM,EAAE,GAAc,IAAI,CAAC,WAAW,EAAE,CAAA;QACxC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC,EAA9B,CAA8B,CAAC,CAAA;QACjE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,4BAA4B;IACjD,CAAC;IAED,4BAAM,GAAN;QACU,IAAA,UAAU,GAAK,IAAI,CAAC,KAAK,WAAf,CAAe;QACjC,OAAO,CACL,gCAAK,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,sBAAe,UAAU,CAAC,MAAM,CAAE,YACpE,IAAI,CAAC,QAAQ,EAAE,GACZ,CACP,CAAA;IACH,CAAC;IAhDU,WAAW;QADvB,YAAQ;OACI,WAAW,CAiDvB;IAAD,kBAAC;CAAA,AAjDD,CAAiC,kBAAS,GAiDzC;AAjDY,kCAAW;AAmDxB,kBAAe,iBAAc,CAAA"}
1
+ {"version":3,"file":"ToolOverlay.js","sourceRoot":"","sources":["../../../src/view/overlay/ToolOverlay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAA6D;AAC7D,sBAAkC;AAClC,2BAAgC;AAWhC;IAAiC,+BAAiB;IAAlD;;IAiDA,CAAC;IAhDC,yFAAyF;IACzF,+DAA+D;IAC/D,6DAA6D;IAC7D,6DAA6D;IAC7D,uCAAiB,GAAjB;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,wCAAkB,GAAlB;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,8BAAQ,GAAR;QACQ,IAAA,KAAuB,IAAI,CAAC,KAAK,EAA/B,IAAI,UAAA,EAAE,UAAU,gBAAe,CAAA;QAC/B,IAAA,eAAe,GAAK,UAAU,gBAAf,CAAe;QACtC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC7B,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC;YAC7B,OAAA,IAAA,sBAAC,EAAC,CAAC,EAAE;gBACH,eAAe,iBAAA;gBACf,UAAU,YAAA;gBACV,EAAE,EAAE,IAAI,CAAC,QAAQ;aAClB,CAAC;QAJF,CAIE,CACH,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,uCAAiB,GAAjB;QACQ,IAAA,KAAuB,IAAI,CAAC,KAAK,EAA/B,IAAI,UAAA,EAAE,UAAU,gBAAe,CAAA;QACvC,IAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAC/C,uBAAgB,UAAU,CAAC,MAAM,CAAE,CACrB,CAAA;QAChB,IAAM,EAAE,GAAc,IAAI,CAAC,WAAW,EAAE,CAAA;QACxC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC,EAA9B,CAA8B,CAAC,CAAA;QACjE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,4BAA4B;IACjD,CAAC;IAED,4BAAM,GAAN;QACU,IAAA,UAAU,GAAK,IAAI,CAAC,KAAK,WAAf,CAAe;QACjC,OAAO,CACL,gCAAK,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,sBAAe,UAAU,CAAC,MAAM,CAAE,YACpE,IAAI,CAAC,QAAQ,EAAE,GACZ,CACP,CAAA;IACH,CAAC;IAhDU,WAAW;QADvB,YAAQ;OACI,WAAW,CAiDvB;IAAD,kBAAC;CAAA,AAjDD,CAAiC,kBAAS,GAiDzC;AAjDY,kCAAW;AAmDxB,kBAAe,iBAAc,CAAA"}
@@ -74,11 +74,14 @@ var BaseText = /** @class */ (function (_super) {
74
74
  };
75
75
  _this.dbClickHandler = function () {
76
76
  // 静默模式下,双击不更改状态,不可编辑
77
- var editable = _this.props.editable;
77
+ var _a = _this.props, editable = _a.editable, eventCenter = _a.graphModel.eventCenter, model = _a.model;
78
78
  if (editable) {
79
- var model = _this.props.model;
80
79
  model.setElementState(constant_1.ElementState.TEXT_EDIT);
81
80
  }
81
+ eventCenter.emit(constant_1.EventType.TEXT_DBCLICK, {
82
+ data: model.text,
83
+ model: model,
84
+ });
82
85
  };
83
86
  var draggable = props.draggable;
84
87
  // TODO: 确认为什么不在 new 的时候传入 model,而在下面使用的时候赋值
@@ -86,6 +89,7 @@ var BaseText = /** @class */ (function (_super) {
86
89
  onDragging: _this.onDragging,
87
90
  step: 1,
88
91
  // model,
92
+ eventType: 'TEXT',
89
93
  isStopPropagation: draggable,
90
94
  });
91
95
  return _this;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseText.js","sourceRoot":"","sources":["../../../src/view/text/BaseText.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseText.js","sourceRoot":"","sources":["../../../src/view/text/BaseText.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/core",
3
- "version": "2.0.0-beta.4",
3
+ "version": "2.0.0-beta.6",
4
4
  "description": "LogicFlow, help you quickly create flowcharts",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
package/src/LogicFlow.tsx CHANGED
@@ -6,7 +6,7 @@ import * as _Model from './model'
6
6
  import {
7
7
  BaseEdgeModel,
8
8
  BaseNodeModel,
9
- EditConfigInterface,
9
+ IEditConfigType,
10
10
  GraphModel,
11
11
  SnaplineModel,
12
12
  ZoomParamType,
@@ -16,11 +16,10 @@ import Graph from './view/Graph'
16
16
  import * as _View from './view'
17
17
  import { formatData } from './util'
18
18
 
19
- import Dnd from './view/behavior/dnd'
20
- import Tool from './tool/tool'
21
- import { snapline } from './tool'
22
- import Keyboard from './keyboard'
19
+ import { Dnd, snapline } from './view/behavior'
20
+ import Tool from './tool'
23
21
  import History from './history'
22
+ import Keyboard from './keyboard'
24
23
  import { EventCallback, CallbackArgs, EventArgs } from './event/eventEmitter'
25
24
  import { ElementType, EventType, SegmentDirection } from './constant'
26
25
  import { initDefaultShortcut } from './keyboard/shortcut'
@@ -698,8 +697,8 @@ export class LogicFlow {
698
697
  distance = 40,
699
698
  ): GraphElements | undefined {
700
699
  // TODO: 1. 解决下面方法中 distance 传参缺未使用的问题;该方法在快捷键中有调用
701
- console.log('addElements', nodes, edges, distance)
702
700
  // TODO: 2. review 一下本函数代码逻辑,确认 nodeIdMap 的作用,看是否有优化的空间
701
+ console.log('distance', distance)
703
702
  const nodeIdMap: Record<string, string> = {}
704
703
  const elements: GraphElements = {
705
704
  nodes: [],
@@ -708,11 +707,9 @@ export class LogicFlow {
708
707
  forEach(nodes, (node) => {
709
708
  const nodeId = node.id
710
709
  const nodeModel = this.addNode(node)
711
-
712
710
  if (nodeId) nodeIdMap[nodeId] = nodeModel.id
713
711
  elements.nodes.push(nodeModel)
714
712
  })
715
-
716
713
  forEach(edges, (edge) => {
717
714
  let { sourceNodeId, targetNodeId } = edge
718
715
  if (nodeIdMap[sourceNodeId]) sourceNodeId = nodeIdMap[sourceNodeId]
@@ -890,7 +887,7 @@ export class LogicFlow {
890
887
  * @param {object} config 编辑配置
891
888
  * @see todo docs link
892
889
  */
893
- updateEditConfig(config: EditConfigInterface) {
890
+ updateEditConfig(config: Partial<IEditConfigType>) {
894
891
  const { editConfigModel, transformModel } = this.graphModel
895
892
  editConfigModel.updateEditConfig(config)
896
893
  if (config?.stopMoveGraph !== undefined) {
@@ -1074,6 +1071,7 @@ export class LogicFlow {
1074
1071
  )
1075
1072
  this.emit(EventType.GRAPH_RENDERED, {
1076
1073
  data: this.graphModel.modelToGraphData(),
1074
+ graphModel: this.graphModel,
1077
1075
  })
1078
1076
  }
1079
1077
 
@@ -1324,7 +1322,7 @@ export class LogicFlow {
1324
1322
  ([, extension]) => extension,
1325
1323
  )
1326
1324
  // 安装插件,优先使用个性插件
1327
- const extensions = [...extensionsAddByUse, ...this.plugins]
1325
+ const extensions = [...this.plugins, ...extensionsAddByUse]
1328
1326
  forEach(extensions, (ext) => {
1329
1327
  let extension: ExtensionConstructor | ExtensionDefinition
1330
1328
  let props: Record<string, any> | undefined
@@ -1362,15 +1360,18 @@ export class LogicFlow {
1362
1360
  }
1363
1361
 
1364
1362
  const ExtensionCtor = extension as ExtensionConstructor
1363
+ const pluginName = ExtensionCtor.pluginName
1365
1364
  const extensionIns = new ExtensionCtor({
1366
1365
  lf: this,
1367
1366
  LogicFlow,
1368
1367
  props,
1369
- options: this.options.pluginsOptions ?? {},
1368
+ // TODO: 这里的 options 应该传入插件对应的 options,而不是全局的 options
1369
+ // 所以应该这么写 this.options.pluginsOptions[ExtensionCtor.pluginName] ?? {}
1370
+ options: this.options.pluginsOptions?.[pluginName] ?? {},
1370
1371
  })
1371
1372
  extensionIns.render &&
1372
1373
  this.components.push(extensionIns.render.bind(extensionIns))
1373
- this.extension[ExtensionCtor.pluginName] = extensionIns
1374
+ this.extension[pluginName] = extensionIns
1374
1375
  }
1375
1376
  }
1376
1377
 
@@ -1442,9 +1443,48 @@ export namespace LogicFlow {
1442
1443
  y: number
1443
1444
  editable?: boolean
1444
1445
  draggable?: boolean
1446
+ // 直接在这儿设置文本模式
1445
1447
  // overflowMode?: 'default' | 'autoWrap' | 'ellipsis'
1446
1448
  }
1447
1449
 
1450
+ // label数据类型声明
1451
+ export type LabelConfig = {
1452
+ id?: string // label唯一标识
1453
+ x: number
1454
+ y: number
1455
+ content?: string // 富文本内容
1456
+ value: string // 纯文本内容
1457
+ rotate?: number // 旋转角度
1458
+ // 样式属性
1459
+ style?: h.JSX.CSSProperties // label自定义样式
1460
+
1461
+ // 编辑状态属性
1462
+ editable?: boolean
1463
+ draggable?: boolean
1464
+ labelWidth?: number
1465
+ textOverflowMode?: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default'
1466
+
1467
+ // 当前 Label 是否渲染纵向文本
1468
+ vertical?: boolean
1469
+ }
1470
+
1471
+ export type LabelOption = {
1472
+ // 节点的所有 Label 是否纵向展示
1473
+ isVertical: boolean
1474
+ // 是否支持多个 label
1475
+ isMultiple: boolean
1476
+ // 允许设置多个 label 时最大个数
1477
+ maxCount?: number
1478
+ }
1479
+
1480
+ export interface LabelData extends LabelConfig {
1481
+ id: string
1482
+ x: number
1483
+ y: number
1484
+ content: string
1485
+ value: string
1486
+ }
1487
+
1448
1488
  export type AppendConfig = {
1449
1489
  startIndex: number
1450
1490
  endIndex: number
@@ -1507,7 +1547,6 @@ export namespace LogicFlow {
1507
1547
  export interface NodeData extends NodeConfig {
1508
1548
  id: string
1509
1549
  text?: TextConfig
1510
-
1511
1550
  [key: string]: unknown
1512
1551
  }
1513
1552
 
@@ -1519,7 +1558,6 @@ export namespace LogicFlow {
1519
1558
  sourceAnchorId?: string
1520
1559
  targetNodeId: string
1521
1560
  targetAnchorId?: string
1522
-
1523
1561
  startPoint?: Point
1524
1562
  endPoint?: Point
1525
1563
  text?: TextConfig | string
@@ -1,4 +1,5 @@
1
1
  import LogicFlow from '../LogicFlow'
2
+
2
3
  import Point = LogicFlow.Point
3
4
 
4
5
  /**
@@ -1,4 +1,6 @@
1
1
  // 各类算法的实现
2
+ export * from './outline'
3
+ export * from './edge'
2
4
 
3
5
  /*
4
6
  * 计算垂直边的与起始点有一定距离对称,边垂直于边的点
@@ -1,11 +1,11 @@
1
1
  import { ModelType } from '../constant'
2
2
  import {
3
3
  Model,
4
- PolylineEdgeModel,
5
- BezierEdgeModel,
6
4
  BaseNodeModel,
7
5
  BaseEdgeModel,
8
6
  LineEdgeModel,
7
+ BezierEdgeModel,
8
+ PolylineEdgeModel,
9
9
  } from '../model'
10
10
  import { points2PointsList, getBBoxOfPoints, getBezierPoints } from '../util'
11
11
 
@@ -23,7 +23,14 @@ export type ICreateDragParams = {
23
23
  }
24
24
 
25
25
  export type IStepperDragProps = {
26
- eventType?: 'NODE' | 'BLANK' | 'SELECTION' | 'ADJUST_POINT' | ''
26
+ eventType?:
27
+ | 'NODE'
28
+ | 'BLANK'
29
+ | 'SELECTION'
30
+ | 'ADJUST_POINT'
31
+ | 'TEXT'
32
+ | 'LABEL'
33
+ | ''
27
34
  eventCenter?: EventEmitter
28
35
  model?: Model.BaseModel
29
36
  data?: Record<string, unknown>
@@ -41,7 +48,14 @@ export class StepperDrag {
41
48
 
42
49
  step: number
43
50
  isStopPropagation: boolean
44
- eventType: 'NODE' | 'BLANK' | 'SELECTION' | 'ADJUST_POINT' | ''
51
+ eventType:
52
+ | 'NODE'
53
+ | 'BLANK'
54
+ | 'SELECTION'
55
+ | 'ADJUST_POINT'
56
+ | 'TEXT'
57
+ | 'LABEL'
58
+ | ''
45
59
  eventCenter?: EventEmitter
46
60
  model?: Model.BaseModel
47
61
  data?: Record<string, unknown>
@@ -109,9 +109,45 @@ export enum EventType {
109
109
  SELECTION_CONTEXTMENU = 'selection:contextmenu',
110
110
  CONNECTION_NOT_ALLOWED = 'connection:not-allowed',
111
111
 
112
+ // Text events
113
+ TEXT_MOUSEDOWN = 'text:mousedown',
114
+ TEXT_DRAGSTART = 'text:dragstart',
115
+ TEXT_DRAG = 'text:drag',
116
+ TEXT_DROP = 'text:drop',
117
+ TEXT_CLICK = 'text:click',
118
+ TEXT_DBCLICK = 'text:dbclick',
119
+ TEXT_BLUR = 'text:blur',
120
+ TEXT_MOUSEMOVE = 'text:mousemove',
121
+ TEXT_MOUSEUP = 'text:mouseup',
122
+ TEXT_FOCUS = 'text:focus',
123
+ TEXT_ADD = 'text:add',
124
+ TEXT_UPDATE = 'text:update',
125
+ TEXT_CLEAR = 'text:clear',
126
+
127
+ // label events
128
+ LABEL_MOUSEDOWN = 'label:mousedown',
129
+ LABEL_DRAGSTART = 'label:dragstart',
130
+ LABEL_DRAG = 'label:drag',
131
+ LABEL_DROP = 'label:drop',
132
+ LABEL_CLICK = 'label:click',
133
+ LABEL_DBCLICK = 'label:dbclick',
134
+ LABEL_BLUR = 'label:blur',
135
+ LABEL_MOUSEMOVE = 'label:mousemove',
136
+ LABEL_MOUSEUP = 'label:mouseup',
137
+ LABEL_FOCUS = 'label:focus',
138
+ LABEL_ADD = 'label:add',
139
+ LABEL_UPDATE = 'label:update',
140
+ LABEL_CLEAR = 'label:clear',
141
+ LABEL_DELETE = 'label:delete',
142
+ LABEL_SHOULD_ADD = 'label:should-add',
143
+ LABEL_BATCH_ADD = 'label:batch-add',
144
+ LABEL_SHOULD_UPDATE = 'label:should-update',
145
+ LABEL_SHOULD_DELETE = 'label:should-delete',
146
+ LABEL_BATCH_DELETE = 'label:batch-delete',
147
+ LABEL_NOT_ALLOWED_ADD = 'label:not-allowed-add',
148
+
112
149
  // Other events
113
150
  HISTORY_CHANGE = 'history:change',
114
- TEXT_UPDATE = 'text:update',
115
151
  GRAPH_TRANSFORM = 'graph:transform',
116
152
  GRAPH_RENDERED = 'graph:rendered',
117
153
  GRAPH_UPDATED = 'graph:updated',
@@ -126,3 +162,8 @@ export enum SegmentDirection {
126
162
  HORIZONTAL = 'horizontal',
127
163
  VERTICAL = 'vertical',
128
164
  }
165
+
166
+ export enum TextMode {
167
+ TEXT = 'text',
168
+ LABEL = 'label',
169
+ }
@@ -1,8 +1,8 @@
1
- import {
2
- LogicFlow,
1
+ import LogicFlow, {
3
2
  BaseNodeModel,
4
3
  BaseEdgeModel,
5
4
  Model,
5
+ GraphModel,
6
6
  TransformData,
7
7
  TransformType,
8
8
  } from '..'
@@ -24,12 +24,29 @@ type ClickEventArgs = {
24
24
  isMultiple: boolean
25
25
  }
26
26
 
27
- type NodeEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
27
+ type NodeEventArgsPick<
28
+ T extends
29
+ | 'preData'
30
+ | 'data'
31
+ | 'model'
32
+ | 'e'
33
+ | 'position'
34
+ | 'deltaX'
35
+ | 'deltaY',
36
+ > = Pick<
28
37
  {
38
+ /**
39
+ * 上一个状态的节点数据
40
+ */
41
+ preData: NodeData
29
42
  /**
30
43
  * 节点数据
31
44
  */
32
45
  data: NodeData
46
+ /**
47
+ * 节点 model
48
+ */
49
+ model: BaseNodeModel
33
50
  /**
34
51
  * 原生鼠标事件对象
35
52
  */
@@ -38,6 +55,35 @@ type NodeEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
38
55
  * 鼠标触发点相对于画布左上角的坐标
39
56
  */
40
57
  position: ClientPosition
58
+ /**
59
+ * 鼠标 X轴移动的距离
60
+ */
61
+ deltaX: number
62
+ /**
63
+ * 鼠标Y轴移动的距离
64
+ */
65
+ deltaY: number
66
+ },
67
+ T
68
+ >
69
+
70
+ type TextEventArgsPick<
71
+ T extends 'data' | 'e' | 'model' | 'element' | 'position',
72
+ > = Pick<
73
+ {
74
+ // 节点数据
75
+ data?: any
76
+ // 原生鼠标事件对象
77
+ e?: MouseEvent | FocusEvent
78
+ // 文本所在元素model
79
+ model?: BaseNodeModel | BaseEdgeModel | unknown
80
+ // 文本dom
81
+ element?: HTMLElement | null
82
+ // 文本位置
83
+ position?: {
84
+ x: number
85
+ y: number
86
+ }
41
87
  },
42
88
  T
43
89
  >
@@ -65,7 +111,7 @@ interface NodeEventArgs {
65
111
  /**
66
112
  * 鼠标移动节点
67
113
  */
68
- 'node:mousemove': NodeEventArgsPick<'data' | 'e'>
114
+ 'node:mousemove': NodeEventArgsPick<'data' | 'e' | 'deltaX' | 'deltaY'>
69
115
  /**
70
116
  * 鼠标进入节点
71
117
  */
@@ -97,7 +143,7 @@ interface NodeEventArgs {
97
143
  /**
98
144
  * 拖拽节点
99
145
  */
100
- 'node:drag': NodeEventArgsPick<'data' | 'e'>
146
+ 'node:drag': NodeEventArgsPick<'data' | 'e' | 'deltaX' | 'deltaY'>
101
147
  /**
102
148
  * 拖拽节点结束
103
149
  */
@@ -106,6 +152,14 @@ interface NodeEventArgs {
106
152
  * 右键点击节点
107
153
  */
108
154
  'node:contextmenu': NodeEventArgsPick<'data' | 'e' | 'position'>
155
+ /**
156
+ * 节点旋转
157
+ */
158
+ 'node:rotate': NodeEventArgsPick<'data' | 'e' | 'model'>
159
+ /**
160
+ * 节点缩放
161
+ */
162
+ 'node:resize': NodeEventArgsPick<'preData' | 'data' | 'model'>
109
163
  }
110
164
 
111
165
  type EdgeEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
@@ -179,6 +233,88 @@ interface EdgeEventArgs {
179
233
  }
180
234
  }
181
235
 
236
+ /**
237
+ * 文本事件
238
+ */
239
+ interface TextEventArgs {
240
+ // 鼠标按下文本
241
+ 'text:mousedown': TextEventArgsPick<'data' | 'e' | 'model'>
242
+ // 开始拖拽文本
243
+ 'text:dragstart': TextEventArgsPick<'data' | 'e' | 'model'>
244
+ // 文本拖拽
245
+ 'text:drag': TextEventArgsPick<'data' | 'e' | 'model'>
246
+ // 文本拖拽结束
247
+ 'text:drop': TextEventArgsPick<'data' | 'e' | 'model'>
248
+ // 文本单击
249
+ 'text:click': TextEventArgsPick<'data' | 'e' | 'model'>
250
+ // 文本双击
251
+ 'text:dbclick': TextEventArgsPick<'data' | 'e' | 'model'>
252
+ // 文本失焦
253
+ 'text:blur': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
254
+ // 鼠标移动文本
255
+ 'text:mousemove': TextEventArgsPick<'data' | 'e' | 'model'>
256
+ // 鼠标抬起
257
+ 'text:mouseup': TextEventArgsPick<'data' | 'e' | 'model'>
258
+ // 文本获焦
259
+ 'text:focus': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
260
+ // 文本新增
261
+ 'text:add': TextEventArgsPick<'data' | 'e' | 'model'>
262
+ // 文本更新
263
+ 'text:update': TextEventArgsPick<'data' | 'e' | 'model'>
264
+ // 文本清空
265
+ 'text:clear': TextEventArgsPick<'data' | 'e' | 'model'>
266
+ // 文本删除
267
+ 'text:delete': TextEventArgsPick<'data' | 'e' | 'model'>
268
+ // 不允许增加文本
269
+ 'text:not-allowed-add': TextEventArgsPick<'data' | 'e' | 'model'>
270
+ }
271
+
272
+ /**
273
+ * label插件文本事件
274
+ */
275
+ interface TextEventArgs {
276
+ // 鼠标按下文本
277
+ 'label:mousedown': TextEventArgsPick<'data' | 'e' | 'model'>
278
+ // 开始拖拽文本
279
+ 'label:dragstart': TextEventArgsPick<'data' | 'e' | 'model'>
280
+ // 文本拖拽
281
+ 'label:drag': TextEventArgsPick<'data' | 'e' | 'model'>
282
+ // 文本拖拽结束
283
+ 'label:drop': TextEventArgsPick<'data' | 'e' | 'model'>
284
+ // 文本单击
285
+ 'label:click': TextEventArgsPick<'data' | 'e' | 'model'>
286
+ // 文本双击
287
+ 'label:dbclick': TextEventArgsPick<'data' | 'e' | 'model'>
288
+ // 文本失焦
289
+ 'label:blur': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
290
+ // 鼠标移动文本
291
+ 'label:mousemove': TextEventArgsPick<'data' | 'e' | 'model'>
292
+ // 鼠标抬起
293
+ 'label:mouseup': TextEventArgsPick<'data' | 'e' | 'model'>
294
+ // 文本获焦
295
+ 'label:focus': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
296
+ // 文本新增
297
+ 'label:add': TextEventArgsPick<'data' | 'e' | 'model'>
298
+ // 文本更新
299
+ 'label:update': TextEventArgsPick<'data' | 'e' | 'model'>
300
+ // 文本清空
301
+ 'label:clear': TextEventArgsPick<'data' | 'e' | 'model'>
302
+ // 文本删除
303
+ 'label:delete': TextEventArgsPick<'data' | 'e' | 'model'>
304
+ // 文本新增
305
+ 'label:should-add': TextEventArgsPick<'data' | 'e' | 'model' | 'position'>
306
+ // 文本批量新增
307
+ 'label:batch-add': TextEventArgsPick<'data' | 'e' | 'model'>
308
+ // 文本更新
309
+ 'label:should-update': TextEventArgsPick<'data' | 'e' | 'model'>
310
+ // 文本删除
311
+ 'label:should-delete': TextEventArgsPick<'data' | 'e' | 'model'>
312
+ // 文本批量删除
313
+ 'label:batch-delete': TextEventArgsPick<'data' | 'e' | 'model'>
314
+ // 不允许增加文本
315
+ 'label:not-allowed-add': TextEventArgsPick<'data' | 'e' | 'model'>
316
+ }
317
+
182
318
  /**
183
319
  * 连线事件
184
320
  */
@@ -240,26 +376,6 @@ interface CommonEventArgs {
240
376
  properties: Record<string, any>
241
377
  }
242
378
  }
243
- /**
244
- * 节点/边的文本更新
245
- */
246
- // TODO: 更新文本事件抛出的对象是否需要更详细?
247
- 'text:update': {
248
- data: {
249
- /**
250
- * 更新的文本
251
- */
252
- text: string
253
- /**
254
- * 节点/边的 id
255
- */
256
- id: string
257
- /**
258
- * 节点/边的类型
259
- */
260
- type: string
261
- }
262
- }
263
379
  /**
264
380
  * 进行画布平移或缩放等变化操作时触发
265
381
  */
@@ -281,6 +397,10 @@ interface CommonEventArgs {
281
397
  * 渲染后的画布数据
282
398
  */
283
399
  data: GraphData
400
+ /**
401
+ * 渲染后的画布 model
402
+ */
403
+ graphModel: GraphModel
284
404
  }
285
405
  /**
286
406
  * 画布重新更新后触发. 即 lf.render(graphData)方法被调用后或者改变画布(garphModel)上的属性后触发。
@@ -471,12 +591,13 @@ interface SelectionEventArgs {
471
591
  'selection:contextmenu': SelectionEventArgsPick<'data' | 'e' | 'position'>
472
592
  }
473
593
 
474
- export interface EventArgs
475
- extends NodeEventArgs,
476
- EdgeEventArgs,
477
- ConnectionEventArgs,
478
- CommonEventArgs,
479
- AnchorEventArgs,
480
- BlankEventArgs,
481
- HistoryEventArgs,
482
- SelectionEventArgs {}
594
+ // 此处主要是对事件参数进行聚合
595
+ export type EventArgs = NodeEventArgs &
596
+ EdgeEventArgs &
597
+ ConnectionEventArgs &
598
+ CommonEventArgs &
599
+ AnchorEventArgs &
600
+ BlankEventArgs &
601
+ HistoryEventArgs &
602
+ SelectionEventArgs &
603
+ TextEventArgs
package/src/index.ts CHANGED
@@ -10,10 +10,14 @@ export function observer<P>(props: P) {
10
10
 
11
11
  export { LogicFlow, h, createRef, Component, LogicFlowUtil }
12
12
 
13
+ export * from './util'
14
+ export * from './tool'
13
15
  export * from './view'
14
16
  export * from './model'
15
17
  export * from './options'
16
18
  export * from './keyboard'
19
+ export * from './constant'
20
+ export * from './algorithm'
17
21
  export { ElementState, ModelType, ElementType, EventType } from './constant'
18
22
 
19
23
  export { formatAnchorConnectValidateData } from './util/node'