@logicflow/core 2.0.9 → 2.0.10

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 (77) hide show
  1. package/.turbo/turbo-build$colon$dev.log +2 -2
  2. package/.turbo/turbo-build.log +6 -6
  3. package/CHANGELOG.md +16 -0
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/es/LogicFlow.js +14 -1
  7. package/es/event/eventEmitter.d.ts +1 -0
  8. package/es/event/eventEmitter.js +3 -0
  9. package/es/history/index.d.ts +1 -0
  10. package/es/history/index.js +6 -0
  11. package/es/keyboard/index.d.ts +1 -0
  12. package/es/keyboard/index.js +3 -0
  13. package/es/model/EditConfigModel.d.ts +3 -1
  14. package/es/model/EditConfigModel.js +5 -0
  15. package/es/model/GraphModel.d.ts +13 -1
  16. package/es/model/GraphModel.js +41 -41
  17. package/es/model/edge/BaseEdgeModel.js +6 -3
  18. package/es/model/edge/PolylineEdgeModel.d.ts +1 -0
  19. package/es/model/edge/PolylineEdgeModel.js +7 -0
  20. package/es/model/node/BaseNodeModel.js +3 -2
  21. package/es/tool/index.d.ts +1 -0
  22. package/es/tool/index.js +4 -0
  23. package/es/util/geometry.d.ts +1 -1
  24. package/es/util/geometry.js +4 -1
  25. package/es/view/Graph.js +19 -2
  26. package/es/view/behavior/dnd.js +3 -2
  27. package/es/view/edge/BaseEdge.js +9 -2
  28. package/es/view/node/BaseNode.js +19 -6
  29. package/es/view/node/HtmlNode.js +1 -0
  30. package/es/view/overlay/CanvasOverlay.js +6 -4
  31. package/es/view/text/BaseText.js +1 -0
  32. package/lib/LogicFlow.js +13 -0
  33. package/lib/event/eventEmitter.d.ts +1 -0
  34. package/lib/event/eventEmitter.js +3 -0
  35. package/lib/history/index.d.ts +1 -0
  36. package/lib/history/index.js +6 -0
  37. package/lib/keyboard/index.d.ts +1 -0
  38. package/lib/keyboard/index.js +3 -0
  39. package/lib/model/EditConfigModel.d.ts +3 -1
  40. package/lib/model/EditConfigModel.js +5 -0
  41. package/lib/model/GraphModel.d.ts +13 -1
  42. package/lib/model/GraphModel.js +40 -40
  43. package/lib/model/edge/BaseEdgeModel.js +6 -3
  44. package/lib/model/edge/PolylineEdgeModel.d.ts +1 -0
  45. package/lib/model/edge/PolylineEdgeModel.js +7 -0
  46. package/lib/model/node/BaseNodeModel.js +3 -2
  47. package/lib/tool/index.d.ts +1 -0
  48. package/lib/tool/index.js +4 -0
  49. package/lib/util/geometry.d.ts +1 -1
  50. package/lib/util/geometry.js +4 -1
  51. package/lib/view/Graph.js +19 -2
  52. package/lib/view/behavior/dnd.js +3 -2
  53. package/lib/view/edge/BaseEdge.js +9 -2
  54. package/lib/view/node/BaseNode.js +19 -6
  55. package/lib/view/node/HtmlNode.js +1 -0
  56. package/lib/view/overlay/CanvasOverlay.js +6 -4
  57. package/lib/view/text/BaseText.js +1 -0
  58. package/package.json +1 -1
  59. package/src/LogicFlow.tsx +19 -1
  60. package/src/event/eventEmitter.ts +4 -0
  61. package/src/history/index.ts +7 -0
  62. package/src/keyboard/index.ts +4 -0
  63. package/src/model/EditConfigModel.ts +4 -0
  64. package/src/model/GraphModel.ts +62 -70
  65. package/src/model/edge/BaseEdgeModel.ts +7 -2
  66. package/src/model/edge/PolylineEdgeModel.ts +8 -0
  67. package/src/model/node/BaseNodeModel.ts +5 -2
  68. package/src/tool/index.ts +5 -0
  69. package/src/util/geometry.ts +3 -1
  70. package/src/view/Graph.tsx +19 -2
  71. package/src/view/behavior/dnd.ts +5 -2
  72. package/src/view/edge/BaseEdge.tsx +9 -2
  73. package/src/view/node/BaseNode.tsx +20 -6
  74. package/src/view/node/HtmlNode.tsx +1 -0
  75. package/src/view/overlay/CanvasOverlay.tsx +6 -5
  76. package/src/view/text/BaseText.tsx +1 -0
  77. package/stats.html +1 -1
@@ -80,6 +80,13 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
80
80
  if (this.modelDisposer) {
81
81
  this.modelDisposer()
82
82
  }
83
+
84
+ // 以下是 mobx-preact 中 componentWillUnmount 的回调逻辑,但是不知道出于什么考虑,mobx-preact 没有混入这一段逻辑
85
+ // @ts-ignore
86
+ if (this.render.$mobx) {
87
+ // @ts-ignore
88
+ this.render.$mobx.dispose()
89
+ }
83
90
  }
84
91
 
85
92
  componentDidMount() {}
@@ -234,7 +241,7 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
234
241
  onDragging = ({ event }: IDragParams) => {
235
242
  const { model, graphModel } = this.props
236
243
  const {
237
- editConfigModel: { stopMoveGraph, autoExpand },
244
+ editConfigModel: { stopMoveGraph, autoExpand, snapGrid },
238
245
  transformModel,
239
246
  selectNodes,
240
247
  width,
@@ -254,9 +261,9 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
254
261
  // 2. 考虑鼠标位置不再节点中心
255
262
  x = x + (this.moveOffset?.dx ?? 0)
256
263
  y = y + (this.moveOffset?.dy ?? 0)
257
- // 将x, y移动到grid上
258
- x = snapToGrid(x, gridSize)
259
- y = snapToGrid(y, gridSize)
264
+ // 校准坐标
265
+ x = snapToGrid(x, gridSize, snapGrid)
266
+ y = snapToGrid(y, gridSize, snapGrid)
260
267
  if (!width || !height) {
261
268
  graphModel.moveNode2Coordinate(model.id, x, y)
262
269
  return
@@ -371,7 +378,10 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
371
378
  } else {
372
379
  graphModel.selectNodeById(model.id, isMultiple)
373
380
  eventOptions.isSelected = true
374
- this.toFront()
381
+ // 静默模式下点击节点不变更节点层级
382
+ if (!editConfigModel.isSilentMode) {
383
+ this.toFront()
384
+ }
375
385
  }
376
386
 
377
387
  // 不是双击的,默认都是单击
@@ -392,6 +402,7 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
392
402
  handleContextMenu = (ev: MouseEvent) => {
393
403
  ev.preventDefault()
394
404
  const { model, graphModel } = this.props
405
+ const { editConfigModel } = graphModel
395
406
  // 节点数据,多为事件对象数据抛出
396
407
  const nodeData = model.getData()
397
408
 
@@ -412,7 +423,10 @@ export abstract class BaseNode<P extends IProps = IProps> extends Component<
412
423
  e: ev,
413
424
  position,
414
425
  })
415
- this.toFront()
426
+ // 静默模式下点击节点不变更节点层级
427
+ if (!editConfigModel.isSilentMode) {
428
+ this.toFront()
429
+ }
416
430
  }
417
431
 
418
432
  handleMouseDown = (ev: MouseEvent) => {
@@ -70,6 +70,7 @@ export class HtmlNode<
70
70
  }
71
71
 
72
72
  componentWillUnmount() {
73
+ super.componentWillUnmount()
73
74
  this.rootEl.innerHTML = ''
74
75
  }
75
76
 
@@ -65,8 +65,9 @@ export class CanvasOverlay extends Component<IProps, IState> {
65
65
  graphModel,
66
66
  } = this.props
67
67
  const { deltaX: eX, deltaY: eY } = ev
68
+ const { stopScrollGraph, stopZoomGraph } = editConfigModel
68
69
  // 如果没有禁止滚动移动画布, 并且当前触发的时候ctrl键、cmd键没有按住, 那么移动画布
69
- if (!editConfigModel.stopScrollGraph && !ev.ctrlKey && !ev.metaKey) {
70
+ if (!stopScrollGraph && !ev.ctrlKey && !ev.metaKey) {
70
71
  ev.preventDefault()
71
72
  this.stepScrollX += eX
72
73
  this.stepScrollY += eY
@@ -85,7 +86,7 @@ export class CanvasOverlay extends Component<IProps, IState> {
85
86
  return
86
87
  }
87
88
  // 如果没有禁止缩放画布,那么进行缩放. 在禁止缩放画布后,按住 ctrl、cmd 键也不能缩放了。
88
- if (!editConfigModel.stopZoomGraph) {
89
+ if (!stopZoomGraph) {
89
90
  ev.preventDefault()
90
91
  const position = graphModel.getPointByClient({
91
92
  x: ev.clientX,
@@ -133,11 +134,11 @@ export class CanvasOverlay extends Component<IProps, IState> {
133
134
  gridSize,
134
135
  },
135
136
  } = this.props
137
+ const { adjustEdge, adjustNodePosition, stopMoveGraph } = editConfigModel
136
138
  const target = ev.target as HTMLElement
137
- const isFrozenElement =
138
- !editConfigModel.adjustEdge && !editConfigModel.adjustNodePosition
139
+ const isFrozenElement = !adjustEdge && !adjustNodePosition
139
140
  if (target.getAttribute('name') === 'canvas-overlay' || isFrozenElement) {
140
- if (editConfigModel.stopMoveGraph !== true) {
141
+ if (stopMoveGraph !== true) {
141
142
  this.stepDrag.setStep(gridSize * SCALE_X)
142
143
  this.stepDrag.handleMouseDown(ev)
143
144
  } else {
@@ -80,6 +80,7 @@ export class BaseText<
80
80
  } = graphModel
81
81
 
82
82
  if (draggable ?? nodeTextDraggable) {
83
+ e.stopPropagation()
83
84
  this.stepperDrag.model = model
84
85
  this.stepperDrag.handleMouseDown(e)
85
86
  }