@logicflow/core 2.2.0-alpha.7 → 2.2.1

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 (137) hide show
  1. package/package.json +6 -1
  2. package/.turbo/turbo-build$colon$dev.log +0 -10
  3. package/.turbo/turbo-build.log +0 -33
  4. package/CHANGELOG.md +0 -1901
  5. package/__tests__/algorithm/egde.test.ts +0 -131
  6. package/__tests__/algorithm/index.test.ts +0 -74
  7. package/__tests__/algorithm/outline.test.ts +0 -43
  8. package/__tests__/bugs/1545-spec.test.ts +0 -42
  9. package/__tests__/event/event.test.ts +0 -22
  10. package/__tests__/history/history.test.ts +0 -28
  11. package/__tests__/logicflow.test.ts +0 -575
  12. package/__tests__/model/graphmodel.test.ts +0 -87
  13. package/__tests__/util/compatible.test.ts +0 -48
  14. package/__tests__/util/edge.test.ts +0 -224
  15. package/__tests__/util/geometry.test.ts +0 -14
  16. package/__tests__/util/graph.test.ts +0 -16
  17. package/__tests__/util/matrix.test.ts +0 -41
  18. package/__tests__/util/node.test.ts +0 -68
  19. package/__tests__/util/sampling.test.ts +0 -12
  20. package/__tests__/util/vector.test.ts +0 -50
  21. package/__tests__/util/zIndex.test.ts +0 -10
  22. package/src/LogicFlow.tsx +0 -2017
  23. package/src/algorithm/edge.ts +0 -67
  24. package/src/algorithm/index.ts +0 -70
  25. package/src/algorithm/outline.ts +0 -77
  26. package/src/algorithm/rotate.ts +0 -55
  27. package/src/common/drag.ts +0 -219
  28. package/src/common/history.ts +0 -108
  29. package/src/common/index.ts +0 -6
  30. package/src/common/keyboard.ts +0 -108
  31. package/src/common/matrix.ts +0 -122
  32. package/src/common/vector.ts +0 -93
  33. package/src/constant/index.ts +0 -179
  34. package/src/constant/theme.ts +0 -708
  35. package/src/event/event.md +0 -66
  36. package/src/event/eventArgs.ts +0 -643
  37. package/src/event/eventEmitter.ts +0 -156
  38. package/src/history/index.ts +0 -119
  39. package/src/index.less +0 -1
  40. package/src/index.ts +0 -26
  41. package/src/keyboard/index.ts +0 -112
  42. package/src/keyboard/shortcut.ts +0 -200
  43. package/src/model/BaseModel.ts +0 -250
  44. package/src/model/EditConfigModel.ts +0 -334
  45. package/src/model/GraphModel.ts +0 -1824
  46. package/src/model/NestedTransformModel.ts +0 -121
  47. package/src/model/SnaplineModel.ts +0 -256
  48. package/src/model/TransformModel.ts +0 -258
  49. package/src/model/edge/BaseEdgeModel.ts +0 -785
  50. package/src/model/edge/BezierEdgeModel.ts +0 -197
  51. package/src/model/edge/LineEdgeModel.ts +0 -36
  52. package/src/model/edge/PolylineEdgeModel.ts +0 -817
  53. package/src/model/edge/index.ts +0 -4
  54. package/src/model/index.ts +0 -9
  55. package/src/model/node/BaseNodeModel.ts +0 -959
  56. package/src/model/node/CircleNodeModel.ts +0 -91
  57. package/src/model/node/DiamondNodeModel.ts +0 -132
  58. package/src/model/node/EllipseNodeModel.ts +0 -98
  59. package/src/model/node/HtmlNodeModel.ts +0 -64
  60. package/src/model/node/PolygonNodeModel.ts +0 -152
  61. package/src/model/node/RectNodeModel.ts +0 -69
  62. package/src/model/node/TextNodeModel.ts +0 -54
  63. package/src/model/node/index.ts +0 -8
  64. package/src/options.ts +0 -150
  65. package/src/style/index.less +0 -262
  66. package/src/style/raw.ts +0 -221
  67. package/src/tool/MultipleSelectTool.tsx +0 -140
  68. package/src/tool/TextEditTool.tsx +0 -193
  69. package/src/tool/index.ts +0 -101
  70. package/src/typings.d.ts +0 -5
  71. package/src/util/animation.ts +0 -29
  72. package/src/util/browser.ts +0 -4
  73. package/src/util/compatible.ts +0 -15
  74. package/src/util/drag.ts +0 -219
  75. package/src/util/edge.ts +0 -1094
  76. package/src/util/geometry.ts +0 -154
  77. package/src/util/graph.ts +0 -46
  78. package/src/util/index.ts +0 -17
  79. package/src/util/matrix.ts +0 -129
  80. package/src/util/mobx.ts +0 -23
  81. package/src/util/node.ts +0 -543
  82. package/src/util/raf.ts +0 -28
  83. package/src/util/resize.ts +0 -606
  84. package/src/util/sampling.ts +0 -85
  85. package/src/util/theme.ts +0 -84
  86. package/src/util/uuid.ts +0 -26
  87. package/src/util/vector.ts +0 -93
  88. package/src/util/zIndex.ts +0 -6
  89. package/src/view/Anchor.tsx +0 -462
  90. package/src/view/Control.tsx +0 -510
  91. package/src/view/Graph.tsx +0 -141
  92. package/src/view/Rotate.tsx +0 -113
  93. package/src/view/behavior/dnd.ts +0 -162
  94. package/src/view/behavior/index.ts +0 -2
  95. package/src/view/behavior/snapline.ts +0 -16
  96. package/src/view/edge/AdjustPoint.tsx +0 -425
  97. package/src/view/edge/Arrow.tsx +0 -54
  98. package/src/view/edge/BaseEdge.tsx +0 -660
  99. package/src/view/edge/BezierEdge.tsx +0 -101
  100. package/src/view/edge/LineEdge.tsx +0 -81
  101. package/src/view/edge/PolylineEdge.tsx +0 -311
  102. package/src/view/edge/index.ts +0 -6
  103. package/src/view/index.ts +0 -8
  104. package/src/view/node/BaseNode.tsx +0 -585
  105. package/src/view/node/CircleNode.tsx +0 -21
  106. package/src/view/node/DiamondNode.tsx +0 -24
  107. package/src/view/node/EllipseNode.tsx +0 -22
  108. package/src/view/node/HtmlNode.tsx +0 -112
  109. package/src/view/node/PolygonNode.tsx +0 -28
  110. package/src/view/node/RectNode.tsx +0 -30
  111. package/src/view/node/TextNode.tsx +0 -39
  112. package/src/view/node/index.ts +0 -8
  113. package/src/view/overlay/BackgroundOverlay.tsx +0 -34
  114. package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
  115. package/src/view/overlay/CanvasOverlay.tsx +0 -290
  116. package/src/view/overlay/Grid.tsx +0 -319
  117. package/src/view/overlay/ModificationOverlay.tsx +0 -31
  118. package/src/view/overlay/OutlineOverlay.tsx +0 -158
  119. package/src/view/overlay/SnaplineOverlay.tsx +0 -44
  120. package/src/view/overlay/ToolOverlay.tsx +0 -65
  121. package/src/view/overlay/getTransformHoc.tsx +0 -50
  122. package/src/view/overlay/gridConfig.ts +0 -103
  123. package/src/view/overlay/index.ts +0 -8
  124. package/src/view/shape/Circle.tsx +0 -41
  125. package/src/view/shape/Ellipse.tsx +0 -42
  126. package/src/view/shape/Line.tsx +0 -39
  127. package/src/view/shape/Path.tsx +0 -22
  128. package/src/view/shape/Polygon.tsx +0 -54
  129. package/src/view/shape/Polyline.tsx +0 -31
  130. package/src/view/shape/Rect.tsx +0 -44
  131. package/src/view/shape/Text.tsx +0 -168
  132. package/src/view/shape/index.ts +0 -8
  133. package/src/view/text/BaseText.tsx +0 -134
  134. package/src/view/text/LineText.tsx +0 -168
  135. package/src/view/text/index.ts +0 -2
  136. package/stats.html +0 -4842
  137. package/tsconfig.json +0 -18
package/src/util/drag.ts DELETED
@@ -1,219 +0,0 @@
1
- import { noop } from 'lodash-es'
2
- import { Model } from '../model'
3
- import { EventType } from '../constant'
4
- import EventEmitter from '../event/eventEmitter'
5
-
6
- // TODO:这种方式在同构项目中,会报错,该如何解决(是否要求用户控制在浏览器环境时才初始化)
7
- // const DOC: any = window?.document
8
- const LEFT_MOUSE_BUTTON_CODE = 0
9
-
10
- export type IDragParams = {
11
- deltaX: number
12
- deltaY: number
13
- event?: PointerEvent
14
- [key: string]: unknown
15
- }
16
-
17
- export type ICreateDragParams = {
18
- onDragStart?: (params: Partial<IDragParams>) => void
19
- onDragging?: (param: IDragParams) => void
20
- onDragEnd?: (param: Partial<IDragParams>) => void
21
- step?: number
22
- isStopPropagation?: boolean
23
- }
24
-
25
- export type IStepperDragProps = {
26
- eventType?:
27
- | 'NODE'
28
- | 'BLANK'
29
- | 'SELECTION'
30
- | 'ADJUST_POINT'
31
- | 'TEXT'
32
- | 'LABEL'
33
- | ''
34
- eventCenter?: EventEmitter
35
- model?: Model.BaseModel | unknown
36
- data?: Record<string, unknown>
37
- [key: string]: unknown
38
- } & Partial<ICreateDragParams>
39
-
40
- // 支持拖拽的时候,按照指定step进行。
41
- // 因为在绘制的过程中因为放大缩小,移动的真实的step则是变化的。
42
- export class StepDrag {
43
- onDragStart: (params: Partial<IDragParams>) => void
44
- onDragging: (params: IDragParams) => void
45
- onDragEnd: (params: Partial<IDragParams>) => void
46
-
47
- step: number
48
- isStopPropagation: boolean
49
- eventType:
50
- | 'NODE'
51
- | 'BLANK'
52
- | 'SELECTION'
53
- | 'ADJUST_POINT'
54
- | 'TEXT'
55
- | 'LABEL'
56
- | ''
57
- eventCenter?: EventEmitter
58
- model?: Model.BaseModel | any // TODO: 如何兼容 LabelModel 类型。 LabelModel 能否是 BaseModel 的实现呢?
59
- data?: Record<string, unknown>
60
-
61
- // 运行时
62
- isDragging = false
63
- isStartDragging = false
64
-
65
- startX = 0
66
- startY = 0
67
- sumDeltaX = 0
68
- sumDeltaY = 0
69
-
70
- startTime?: number
71
-
72
- constructor({
73
- onDragStart = noop,
74
- onDragging = noop,
75
- onDragEnd = noop,
76
- eventType = '',
77
- eventCenter,
78
- step = 1,
79
- isStopPropagation = true,
80
- model,
81
- data,
82
- }: IStepperDragProps) {
83
- this.onDragStart = onDragStart
84
- this.onDragging = onDragging
85
- this.onDragEnd = onDragEnd
86
- this.step = step
87
- this.isStopPropagation = isStopPropagation
88
- this.eventType = eventType
89
- this.eventCenter = eventCenter
90
- this.model = model
91
- this.data = data
92
- }
93
-
94
- setStep(step: number) {
95
- this.step = step
96
- }
97
-
98
- setModel(model: Model.BaseModel) {
99
- this.model = model
100
- }
101
-
102
- handleMouseDown = (e: PointerEvent) => {
103
- const DOC: any = window?.document
104
- if (e.button !== LEFT_MOUSE_BUTTON_CODE) return
105
- if (this.isStopPropagation) e.stopPropagation()
106
- this.isStartDragging = true
107
- this.startX = e.clientX
108
- this.startY = e.clientY
109
- DOC.addEventListener('pointermove', this.handleMouseMove, false)
110
- DOC.addEventListener('pointerup', this.handleMouseUp, false)
111
- const elementData = this.model?.getData()
112
- this.eventCenter?.emit(EventType[`${this.eventType}_MOUSEDOWN`], {
113
- e,
114
- data: this.data || elementData,
115
- })
116
- this.startTime = new Date().getTime()
117
- }
118
-
119
- handleMouseMove = (e: PointerEvent) => {
120
- if (this.isStopPropagation) e.stopPropagation()
121
- e.preventDefault()
122
- if (!this.isStartDragging) return
123
- this.sumDeltaX += e.clientX - this.startX
124
- this.sumDeltaY += e.clientY - this.startY
125
- this.startX = e.clientX
126
- this.startY = e.clientY
127
- if (
128
- this.step <= 1 ||
129
- Math.abs(this.sumDeltaX) > this.step ||
130
- Math.abs(this.sumDeltaY) > this.step
131
- ) {
132
- const remainderX = this.sumDeltaX % this.step
133
- const remainderY = this.sumDeltaY % this.step
134
- const deltaX = this.sumDeltaX - remainderX
135
- const deltaY = this.sumDeltaY - remainderY
136
- this.sumDeltaX = remainderX
137
- this.sumDeltaY = remainderY
138
- const elementData = this.model?.getData()
139
- /**
140
- * 为了区分点击和拖动,在鼠标没有拖动时,不触发dragstart。
141
- */
142
- if (!this.isDragging) {
143
- this.eventCenter?.emit(EventType[`${this.eventType}_DRAGSTART`], {
144
- e,
145
- data: this.data || elementData,
146
- })
147
- this.onDragStart({ event: e })
148
- }
149
- this.isDragging = true
150
- // 为了让dragstart和drag不在同一个事件循环中,使drag事件放到下一个消息队列中。
151
- // TODO: 放到下一个消息队列中是否会有延迟,比如
152
- // 限制某个元素的拖拽范围,如果在dragstart中设置了拖拽范围,那么在drag中就会有延迟。
153
- Promise.resolve().then(() => {
154
- this.onDragging({
155
- deltaX,
156
- deltaY,
157
- event: e,
158
- })
159
- this.eventCenter?.emit(EventType[`${this.eventType}_MOUSEMOVE`], {
160
- deltaX,
161
- deltaY,
162
- e,
163
- data: this.data || elementData,
164
- })
165
- this.eventCenter?.emit(EventType[`${this.eventType}_DRAG`], {
166
- e,
167
- data: this.data || elementData,
168
- })
169
- })
170
- }
171
- }
172
-
173
- handleMouseUp = (e: PointerEvent) => {
174
- const DOC = window.document
175
-
176
- this.isStartDragging = false
177
- if (this.isStopPropagation) e.stopPropagation()
178
- const target = e.target as any
179
- if (target && typeof target.releasePointerCapture === 'function') {
180
- target.releasePointerCapture(e.pointerId)
181
- }
182
- // fix #568: 如果onDragging在下一个事件循环中触发,而drop在当前事件循环,会出现问题。
183
- Promise.resolve().then(() => {
184
- DOC.removeEventListener('pointermove', this.handleMouseMove, false)
185
- DOC.removeEventListener('pointerup', this.handleMouseUp, false)
186
- const elementData = this.model?.getData()
187
- this.eventCenter?.emit(EventType[`${this.eventType}_MOUSEUP`], {
188
- e,
189
- data: this.data || elementData,
190
- })
191
- if (!this.isDragging) return
192
- this.isDragging = false
193
- this.onDragEnd({ event: e })
194
- this.eventCenter?.emit(EventType[`${this.eventType}_DROP`], {
195
- e,
196
- data: this.data || elementData,
197
- })
198
- })
199
- }
200
- cancelDrag = () => {
201
- const DOC: any = window?.document
202
- DOC.removeEventListener('pointermove', this.handleMouseMove, false)
203
- DOC.removeEventListener('pointerup', this.handleMouseUp, false)
204
- this.onDragEnd({ event: undefined })
205
- this.isDragging = false
206
- }
207
-
208
- destroy = () => {
209
- if (this.isStartDragging) {
210
- // https://github.com/didi/LogicFlow/issues/1934
211
- // https://github.com/didi/LogicFlow/issues/1926
212
- // cancelDrag()->onDragEnd()->updateEdgePointByAnchors()触发线的重新计算
213
- // 我们的本意是为了防止mousemove和mouseup没有及时被移除
214
- // 因此这里增加if(this.isStartDragging)的判断,isStartDragging=true代表没有触发handleMouseUp(),此时监听还没被移除
215
- // 在拖拽情况下(isStartDragging=true),此时注册了监听,在组件突然销毁时,强制触发cancelDrag进行监听事件的移除
216
- this.cancelDrag()
217
- }
218
- }
219
- }