@logicflow/core 2.2.0 → 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 (236) hide show
  1. package/dist/index.css +3 -2
  2. package/dist/index.min.js +1 -1
  3. package/dist/index.min.js.map +1 -1
  4. package/es/LogicFlow.d.ts +9 -0
  5. package/es/LogicFlow.js +0 -1
  6. package/es/constant/index.d.ts +1 -1
  7. package/es/constant/index.js +1 -1
  8. package/es/constant/theme.d.ts +136 -0
  9. package/es/constant/theme.js +680 -0
  10. package/es/index.css +3 -2
  11. package/es/model/GraphModel.d.ts +10 -2
  12. package/es/model/GraphModel.js +48 -14
  13. package/es/model/TransformModel.js +9 -9
  14. package/es/model/edge/BaseEdgeModel.js +7 -2
  15. package/es/model/edge/PolylineEdgeModel.d.ts +7 -0
  16. package/es/model/edge/PolylineEdgeModel.js +136 -7
  17. package/es/model/node/BaseNodeModel.d.ts +12 -1
  18. package/es/model/node/BaseNodeModel.js +9 -2
  19. package/es/model/node/HtmlNodeModel.d.ts +12 -0
  20. package/es/model/node/HtmlNodeModel.js +19 -0
  21. package/es/model/node/PolygonNodeModel.js +3 -3
  22. package/es/options.d.ts +4 -2
  23. package/es/style/index.css +3 -2
  24. package/es/style/index.less +3 -2
  25. package/es/style/raw.d.ts +1 -1
  26. package/es/style/raw.js +1 -1
  27. package/es/tool/MultipleSelectTool.js +10 -5
  28. package/es/util/drag.js +0 -1
  29. package/es/util/edge.d.ts +40 -1
  30. package/es/util/edge.js +43 -9
  31. package/es/util/geometry.d.ts +8 -0
  32. package/es/util/geometry.js +79 -0
  33. package/es/util/theme.d.ts +2 -65
  34. package/es/util/theme.js +4 -281
  35. package/es/view/Anchor.d.ts +1 -0
  36. package/es/view/Anchor.js +24 -21
  37. package/es/view/Control.d.ts +5 -0
  38. package/es/view/Control.js +44 -57
  39. package/es/view/edge/BaseEdge.js +9 -0
  40. package/es/view/edge/PolylineEdge.js +13 -2
  41. package/es/view/node/BaseNode.d.ts +1 -0
  42. package/es/view/node/BaseNode.js +23 -11
  43. package/es/view/node/HtmlNode.js +2 -4
  44. package/es/view/overlay/CanvasOverlay.js +5 -2
  45. package/es/view/overlay/Grid.d.ts +12 -1
  46. package/es/view/overlay/Grid.js +85 -23
  47. package/es/view/overlay/OutlineOverlay.d.ts +1 -0
  48. package/es/view/overlay/OutlineOverlay.js +18 -17
  49. package/es/view/overlay/gridConfig.d.ts +46 -0
  50. package/es/view/overlay/gridConfig.js +99 -0
  51. package/es/view/shape/Polygon.d.ts +0 -7
  52. package/es/view/shape/Polygon.js +12 -43
  53. package/lib/LogicFlow.d.ts +9 -0
  54. package/lib/LogicFlow.js +0 -1
  55. package/lib/constant/index.d.ts +1 -1
  56. package/lib/constant/index.js +16 -2
  57. package/lib/constant/theme.d.ts +136 -0
  58. package/lib/constant/theme.js +683 -0
  59. package/lib/index.css +3 -2
  60. package/lib/model/GraphModel.d.ts +10 -2
  61. package/lib/model/GraphModel.js +49 -15
  62. package/lib/model/TransformModel.js +9 -9
  63. package/lib/model/edge/BaseEdgeModel.js +7 -2
  64. package/lib/model/edge/PolylineEdgeModel.d.ts +7 -0
  65. package/lib/model/edge/PolylineEdgeModel.js +136 -7
  66. package/lib/model/node/BaseNodeModel.d.ts +12 -1
  67. package/lib/model/node/BaseNodeModel.js +9 -2
  68. package/lib/model/node/HtmlNodeModel.d.ts +12 -0
  69. package/lib/model/node/HtmlNodeModel.js +19 -0
  70. package/lib/model/node/PolygonNodeModel.js +3 -3
  71. package/lib/options.d.ts +4 -2
  72. package/lib/style/index.css +3 -2
  73. package/lib/style/index.less +3 -2
  74. package/lib/style/raw.d.ts +1 -1
  75. package/lib/style/raw.js +1 -1
  76. package/lib/tool/MultipleSelectTool.js +10 -5
  77. package/lib/util/drag.js +0 -1
  78. package/lib/util/edge.d.ts +40 -1
  79. package/lib/util/edge.js +43 -9
  80. package/lib/util/geometry.d.ts +8 -0
  81. package/lib/util/geometry.js +81 -1
  82. package/lib/util/theme.d.ts +2 -65
  83. package/lib/util/theme.js +15 -292
  84. package/lib/view/Anchor.d.ts +1 -0
  85. package/lib/view/Anchor.js +24 -21
  86. package/lib/view/Control.d.ts +5 -0
  87. package/lib/view/Control.js +44 -57
  88. package/lib/view/edge/BaseEdge.js +9 -0
  89. package/lib/view/edge/PolylineEdge.js +13 -2
  90. package/lib/view/node/BaseNode.d.ts +1 -0
  91. package/lib/view/node/BaseNode.js +22 -10
  92. package/lib/view/node/HtmlNode.js +1 -3
  93. package/lib/view/overlay/CanvasOverlay.js +5 -2
  94. package/lib/view/overlay/Grid.d.ts +12 -1
  95. package/lib/view/overlay/Grid.js +83 -21
  96. package/lib/view/overlay/OutlineOverlay.d.ts +1 -0
  97. package/lib/view/overlay/OutlineOverlay.js +18 -17
  98. package/lib/view/overlay/gridConfig.d.ts +46 -0
  99. package/lib/view/overlay/gridConfig.js +104 -0
  100. package/lib/view/shape/Polygon.d.ts +0 -7
  101. package/lib/view/shape/Polygon.js +13 -45
  102. package/package.json +6 -1
  103. package/.turbo/turbo-build$colon$dev.log +0 -10
  104. package/.turbo/turbo-build.log +0 -33
  105. package/CHANGELOG.md +0 -1849
  106. package/__tests__/algorithm/egde.test.ts +0 -131
  107. package/__tests__/algorithm/index.test.ts +0 -74
  108. package/__tests__/algorithm/outline.test.ts +0 -43
  109. package/__tests__/bugs/1545-spec.test.ts +0 -42
  110. package/__tests__/event/event.test.ts +0 -22
  111. package/__tests__/history/history.test.ts +0 -28
  112. package/__tests__/logicflow.test.ts +0 -575
  113. package/__tests__/model/graphmodel.test.ts +0 -87
  114. package/__tests__/util/compatible.test.ts +0 -48
  115. package/__tests__/util/edge.test.ts +0 -224
  116. package/__tests__/util/geometry.test.ts +0 -14
  117. package/__tests__/util/graph.test.ts +0 -16
  118. package/__tests__/util/matrix.test.ts +0 -41
  119. package/__tests__/util/node.test.ts +0 -68
  120. package/__tests__/util/sampling.test.ts +0 -12
  121. package/__tests__/util/vector.test.ts +0 -50
  122. package/__tests__/util/zIndex.test.ts +0 -10
  123. package/src/LogicFlow.tsx +0 -2008
  124. package/src/algorithm/edge.ts +0 -67
  125. package/src/algorithm/index.ts +0 -70
  126. package/src/algorithm/outline.ts +0 -77
  127. package/src/algorithm/rotate.ts +0 -55
  128. package/src/common/drag.ts +0 -219
  129. package/src/common/history.ts +0 -108
  130. package/src/common/index.ts +0 -6
  131. package/src/common/keyboard.ts +0 -108
  132. package/src/common/matrix.ts +0 -122
  133. package/src/common/vector.ts +0 -93
  134. package/src/constant/index.ts +0 -179
  135. package/src/event/event.md +0 -66
  136. package/src/event/eventArgs.ts +0 -643
  137. package/src/event/eventEmitter.ts +0 -156
  138. package/src/history/index.ts +0 -119
  139. package/src/index.less +0 -1
  140. package/src/index.ts +0 -26
  141. package/src/keyboard/index.ts +0 -112
  142. package/src/keyboard/shortcut.ts +0 -200
  143. package/src/model/BaseModel.ts +0 -250
  144. package/src/model/EditConfigModel.ts +0 -334
  145. package/src/model/GraphModel.ts +0 -1788
  146. package/src/model/NestedTransformModel.ts +0 -121
  147. package/src/model/SnaplineModel.ts +0 -256
  148. package/src/model/TransformModel.ts +0 -258
  149. package/src/model/edge/BaseEdgeModel.ts +0 -777
  150. package/src/model/edge/BezierEdgeModel.ts +0 -197
  151. package/src/model/edge/LineEdgeModel.ts +0 -36
  152. package/src/model/edge/PolylineEdgeModel.ts +0 -672
  153. package/src/model/edge/index.ts +0 -4
  154. package/src/model/index.ts +0 -9
  155. package/src/model/node/BaseNodeModel.ts +0 -949
  156. package/src/model/node/CircleNodeModel.ts +0 -91
  157. package/src/model/node/DiamondNodeModel.ts +0 -132
  158. package/src/model/node/EllipseNodeModel.ts +0 -98
  159. package/src/model/node/HtmlNodeModel.ts +0 -50
  160. package/src/model/node/PolygonNodeModel.ts +0 -150
  161. package/src/model/node/RectNodeModel.ts +0 -69
  162. package/src/model/node/TextNodeModel.ts +0 -54
  163. package/src/model/node/index.ts +0 -8
  164. package/src/options.ts +0 -145
  165. package/src/style/index.less +0 -261
  166. package/src/style/raw.ts +0 -220
  167. package/src/tool/MultipleSelectTool.tsx +0 -132
  168. package/src/tool/TextEditTool.tsx +0 -193
  169. package/src/tool/index.ts +0 -101
  170. package/src/typings.d.ts +0 -5
  171. package/src/util/animation.ts +0 -29
  172. package/src/util/browser.ts +0 -4
  173. package/src/util/compatible.ts +0 -15
  174. package/src/util/drag.ts +0 -220
  175. package/src/util/edge.ts +0 -1060
  176. package/src/util/geometry.ts +0 -55
  177. package/src/util/graph.ts +0 -46
  178. package/src/util/index.ts +0 -17
  179. package/src/util/matrix.ts +0 -129
  180. package/src/util/mobx.ts +0 -23
  181. package/src/util/node.ts +0 -543
  182. package/src/util/raf.ts +0 -28
  183. package/src/util/resize.ts +0 -606
  184. package/src/util/sampling.ts +0 -85
  185. package/src/util/theme.ts +0 -375
  186. package/src/util/uuid.ts +0 -26
  187. package/src/util/vector.ts +0 -93
  188. package/src/util/zIndex.ts +0 -6
  189. package/src/view/Anchor.tsx +0 -445
  190. package/src/view/Control.tsx +0 -512
  191. package/src/view/Graph.tsx +0 -141
  192. package/src/view/Rotate.tsx +0 -113
  193. package/src/view/behavior/dnd.ts +0 -162
  194. package/src/view/behavior/index.ts +0 -2
  195. package/src/view/behavior/snapline.ts +0 -16
  196. package/src/view/edge/AdjustPoint.tsx +0 -425
  197. package/src/view/edge/Arrow.tsx +0 -54
  198. package/src/view/edge/BaseEdge.tsx +0 -650
  199. package/src/view/edge/BezierEdge.tsx +0 -101
  200. package/src/view/edge/LineEdge.tsx +0 -81
  201. package/src/view/edge/PolylineEdge.tsx +0 -299
  202. package/src/view/edge/index.ts +0 -6
  203. package/src/view/index.ts +0 -8
  204. package/src/view/node/BaseNode.tsx +0 -571
  205. package/src/view/node/CircleNode.tsx +0 -21
  206. package/src/view/node/DiamondNode.tsx +0 -24
  207. package/src/view/node/EllipseNode.tsx +0 -22
  208. package/src/view/node/HtmlNode.tsx +0 -95
  209. package/src/view/node/PolygonNode.tsx +0 -28
  210. package/src/view/node/RectNode.tsx +0 -30
  211. package/src/view/node/TextNode.tsx +0 -39
  212. package/src/view/node/index.ts +0 -8
  213. package/src/view/overlay/BackgroundOverlay.tsx +0 -34
  214. package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
  215. package/src/view/overlay/CanvasOverlay.tsx +0 -288
  216. package/src/view/overlay/Grid.tsx +0 -162
  217. package/src/view/overlay/ModificationOverlay.tsx +0 -31
  218. package/src/view/overlay/OutlineOverlay.tsx +0 -170
  219. package/src/view/overlay/SnaplineOverlay.tsx +0 -44
  220. package/src/view/overlay/ToolOverlay.tsx +0 -65
  221. package/src/view/overlay/getTransformHoc.tsx +0 -50
  222. package/src/view/overlay/index.ts +0 -8
  223. package/src/view/shape/Circle.tsx +0 -41
  224. package/src/view/shape/Ellipse.tsx +0 -42
  225. package/src/view/shape/Line.tsx +0 -39
  226. package/src/view/shape/Path.tsx +0 -22
  227. package/src/view/shape/Polygon.tsx +0 -91
  228. package/src/view/shape/Polyline.tsx +0 -31
  229. package/src/view/shape/Rect.tsx +0 -44
  230. package/src/view/shape/Text.tsx +0 -169
  231. package/src/view/shape/index.ts +0 -8
  232. package/src/view/text/BaseText.tsx +0 -134
  233. package/src/view/text/LineText.tsx +0 -168
  234. package/src/view/text/index.ts +0 -2
  235. package/stats.html +0 -4842
  236. package/tsconfig.json +0 -18
@@ -1,55 +0,0 @@
1
- import LogicFlow from '../LogicFlow'
2
- import PointTuple = LogicFlow.PointTuple
3
-
4
- export function snapToGrid(point: number, gridSize: number, snapGrid: boolean) {
5
- // 开启节网格对齐时才根据网格尺寸校准坐标
6
- if (!snapGrid) return point
7
- // 保证 x, y 的值为 gridSize 的整数倍
8
- return gridSize * Math.round(point / gridSize) || point
9
- }
10
-
11
- // 获取节点偏移时,产生的偏移量。当节点基于gridSize进行了偏移后,
12
- // 节点上的文本可以基于此方法移动对应的距离来保持与节点相对位置不变。
13
- export function getGridOffset(distance: number, gridSize: number) {
14
- return distance % gridSize
15
- }
16
-
17
- /**
18
- * 多边形设置 points 后,坐标平移至原点 并 根据 width、height 缩放
19
- * @param points
20
- * @param width
21
- * @param height
22
- */
23
- export function normalizePolygon(
24
- points?: PointTuple[],
25
- width?: number,
26
- height?: number,
27
- ): PointTuple[] {
28
- if (!points) return []
29
-
30
- // 计算边界框
31
- const minX = Math.min(...points.map((p) => p[0]))
32
- const maxX = Math.max(...points.map((p) => p[0]))
33
- const minY = Math.min(...points.map((p) => p[1]))
34
- const maxY = Math.max(...points.map((p) => p[1]))
35
-
36
- // 平移至原点
37
- const dx = -minX
38
- const dy = -minY
39
- const translatedPoints: PointTuple[] = points.map(([x, y]) => [
40
- x + dx,
41
- y + dy,
42
- ])
43
-
44
- // 计算边界框的宽度和高度
45
- const bboxWidth = maxX - minX
46
- const bboxHeight = maxY - minY
47
-
48
- // 计算缩放因子
49
- const scaleX = width ? width / bboxWidth : 1
50
- const scaleY = height ? height / bboxHeight : 1
51
- const scaleFactor = Math.min(scaleX, scaleY)
52
-
53
- // 缩放顶点
54
- return translatedPoints.map(([x, y]) => [x * scaleFactor, y * scaleFactor])
55
- }
package/src/util/graph.ts DELETED
@@ -1,46 +0,0 @@
1
- import LogicFlow from '..'
2
- import { EditConfigModel } from '..'
3
-
4
- import PointTuple = LogicFlow.PointTuple
5
-
6
- /**
7
- * 判断一个点是否在指定区域
8
- * @param point 当前点
9
- * @param leftTopPoint 区域左上角点
10
- * @param rightBottomPoint 区域的右下角点
11
- */
12
- export const isPointInArea = (
13
- [x, y]: PointTuple,
14
- [leftTopX, leftTopY]: PointTuple,
15
- [rightBottomX, rightBottomY]: PointTuple,
16
- ): boolean =>
17
- x > leftTopX && x < rightBottomX && y > leftTopY && y < rightBottomY
18
-
19
- /**
20
- * 判断鼠标点击选中元素的时候,是否为多选
21
- */
22
- export const isMultipleSelect = (
23
- e: MouseEvent,
24
- editConfigModel: EditConfigModel,
25
- ): boolean => {
26
- const { multipleSelectKey } = editConfigModel
27
- let isMultiple = false
28
- switch (multipleSelectKey) {
29
- case 'meta':
30
- isMultiple = e.metaKey
31
- break
32
- case 'alt':
33
- isMultiple = e.altKey
34
- break
35
- case 'shift':
36
- isMultiple = e.shiftKey
37
- break
38
- case 'ctrl':
39
- isMultiple = e.ctrlKey // Mac上ctrl + 点击节点会触发上下文菜单,所以ctrl尽量用在非Mac系统
40
- break
41
- default:
42
- isMultiple = false
43
- break
44
- }
45
- return isMultiple
46
- }
package/src/util/index.ts DELETED
@@ -1,17 +0,0 @@
1
- export * from './animation'
2
- export * from './browser'
3
- export * from './compatible'
4
- export * from './drag'
5
- export * from './edge'
6
- export * from './geometry'
7
- export * from './graph'
8
- export * from './matrix'
9
- export * from './mobx'
10
- export * from './node'
11
- export * from './raf'
12
- export * from './resize'
13
- export * from './sampling'
14
- export * from './theme'
15
- export * from './uuid'
16
- export * from './vector'
17
- export * from './zIndex'
@@ -1,129 +0,0 @@
1
- import { Vector, Point } from './vector'
2
-
3
- export class Matrix extends Array {
4
- rows: number
5
- columns: number
6
-
7
- constructor(...vectors: any[]) {
8
- super(vectors.length)
9
- this.fill(new Array(3))
10
- vectors.forEach((v: any, index: number) => {
11
- this[index] = v
12
- })
13
- this.columns = vectors[0].length
14
- this.rows = vectors.length
15
- Object.setPrototypeOf(this, Matrix.prototype)
16
- }
17
-
18
- getRow(index: number) {
19
- return this[index]
20
- }
21
-
22
- getColumn(index: number) {
23
- return [...this.map((row: Vector) => row[index])]
24
- }
25
-
26
- // 转置
27
- transpose() {
28
- const vectors: any[] = []
29
- for (let i = 0; i < this.columns; i++) {
30
- vectors.push(this.getColumn(i))
31
- }
32
- return new Matrix(...vectors)
33
- }
34
-
35
- // 叉乘
36
- cross(m1: Matrix) {
37
- const arr = new Array(this.rows).fill('').map((): any => [])
38
- if (this.columns === m1.rows) {
39
- for (let i = 0; i < this.rows; i++) {
40
- const row = this.getRow(i)
41
- for (let j = 0; j < m1.columns; j++) {
42
- const column = m1.getColumn(j)
43
- // eslint-disable-next-line max-len
44
- arr[i][j] = row.reduce(
45
- (prev: number, r: number, index: number) =>
46
- prev + r * column[index],
47
- 0,
48
- )
49
- }
50
- }
51
- }
52
- return new Matrix(...arr)
53
- }
54
-
55
- // 返回二维坐标(降维)
56
- to2D() {
57
- return this.map((item: any) => [item[0], item[1]])
58
- }
59
-
60
- toPoints() {
61
- return this.map((item: any) => new Point(item[0], item[1]))
62
- }
63
-
64
- toString(): string {
65
- const [a, b] = this[0]
66
- const [c, d] = this[1]
67
- const [e, f] = this[2]
68
- return `matrix(${a} ${b} ${c} ${d} ${e} ${f})`
69
- }
70
-
71
- translate(tx: number, ty: number): Matrix {
72
- return this.cross(new TranslateMatrix(tx, ty))
73
- }
74
-
75
- rotate(angle: number): Matrix {
76
- return this.cross(new RotateMatrix(angle))
77
- }
78
-
79
- scale(sx: number, sy: number): Matrix {
80
- return this.cross(new ScaleMatrix(sx, sy))
81
- }
82
- }
83
-
84
- export class RotateMatrix extends Matrix {
85
- constructor(theta: number) {
86
- super(
87
- new Vector(+Math.cos(theta).toFixed(2), +Math.sin(theta).toFixed(2), 0),
88
- new Vector(-Math.sin(theta).toFixed(2), +Math.cos(theta).toFixed(2), 0),
89
- new Vector(0, 0, 1),
90
- )
91
- Object.setPrototypeOf(this, RotateMatrix.prototype)
92
- }
93
-
94
- inverse() {
95
- return this.transpose()
96
- }
97
- }
98
-
99
- export class ScaleMatrix extends Matrix {
100
- private sx: number
101
- private sy: number
102
-
103
- constructor(sx: number, sy: number) {
104
- super(new Vector(sx, 0, 0), new Vector(0, sy, 0), new Vector(0, 0, 1))
105
- this.sx = sx
106
- this.sy = sy
107
- Object.setPrototypeOf(this, ScaleMatrix.prototype)
108
- }
109
-
110
- inverse() {
111
- return new ScaleMatrix(1 / this.sx, 1 / this.sy)
112
- }
113
- }
114
-
115
- export class TranslateMatrix extends Matrix {
116
- private tx: number
117
- private ty: number
118
-
119
- constructor(tx: number, ty: number) {
120
- super(new Vector(1, 0, 0), new Vector(0, 1, 0), new Vector(tx, ty, 1))
121
- this.tx = tx
122
- this.ty = ty
123
- Object.setPrototypeOf(this, TranslateMatrix.prototype)
124
- }
125
-
126
- inverse() {
127
- return new TranslateMatrix(-this.tx, -this.ty)
128
- }
129
- }
package/src/util/mobx.ts DELETED
@@ -1,23 +0,0 @@
1
- import {
2
- action,
3
- observable,
4
- computed,
5
- toJS,
6
- isObservable,
7
- configure,
8
- reaction,
9
- IReactionDisposer,
10
- } from 'mobx'
11
-
12
- configure({ isolateGlobalState: true })
13
-
14
- export {
15
- action,
16
- observable,
17
- computed,
18
- isObservable,
19
- toJS,
20
- configure,
21
- reaction,
22
- IReactionDisposer,
23
- }