@logicflow/core 2.0.13 → 2.0.14

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 (58) hide show
  1. package/.turbo/turbo-build$colon$dev.log +2 -2
  2. package/.turbo/turbo-build.log +6 -6
  3. package/CHANGELOG.md +6 -0
  4. package/__tests__/algorithm/index.test.ts +22 -17
  5. package/__tests__/algorithm/outline.test.ts +9 -9
  6. package/__tests__/event/event.test.ts +18 -18
  7. package/__tests__/history/history.test.ts +23 -23
  8. package/__tests__/logicflow.test.ts +236 -228
  9. package/__tests__/model/graphmodel.test.ts +51 -31
  10. package/__tests__/util/compatible.test.ts +5 -5
  11. package/__tests__/util/geometry.test.ts +10 -10
  12. package/__tests__/util/graph.test.ts +12 -12
  13. package/__tests__/util/matrix.test.ts +26 -26
  14. package/__tests__/util/node.test.ts +22 -22
  15. package/__tests__/util/sampling.test.ts +6 -10
  16. package/__tests__/util/vector.test.ts +36 -36
  17. package/__tests__/util/zIndex.test.ts +6 -6
  18. package/dist/index.min.js +1 -1
  19. package/dist/index.min.js.map +1 -1
  20. package/es/LogicFlow.d.ts +24 -4
  21. package/es/LogicFlow.js +28 -6
  22. package/es/model/GraphModel.d.ts +34 -1
  23. package/es/model/GraphModel.js +36 -5
  24. package/es/model/node/RectNodeModel.js +3 -0
  25. package/es/options.d.ts +1 -0
  26. package/es/util/theme.d.ts +67 -2
  27. package/es/util/theme.js +189 -2
  28. package/es/view/edge/BaseEdge.d.ts +4 -0
  29. package/es/view/edge/BaseEdge.js +45 -3
  30. package/es/view/overlay/Grid.js +3 -2
  31. package/es/view/shape/Polygon.d.ts +8 -0
  32. package/es/view/shape/Polygon.js +50 -3
  33. package/lib/LogicFlow.d.ts +24 -4
  34. package/lib/LogicFlow.js +27 -5
  35. package/lib/model/GraphModel.d.ts +34 -1
  36. package/lib/model/GraphModel.js +34 -3
  37. package/lib/model/node/RectNodeModel.js +3 -0
  38. package/lib/options.d.ts +1 -0
  39. package/lib/util/theme.d.ts +67 -2
  40. package/lib/util/theme.js +192 -2
  41. package/lib/view/edge/BaseEdge.d.ts +4 -0
  42. package/lib/view/edge/BaseEdge.js +45 -3
  43. package/lib/view/overlay/Grid.js +3 -2
  44. package/lib/view/shape/Polygon.d.ts +8 -0
  45. package/lib/view/shape/Polygon.js +52 -4
  46. package/package.json +1 -1
  47. package/src/LogicFlow.tsx +48 -6
  48. package/src/model/GraphModel.ts +48 -3
  49. package/src/model/edge/index.ts +4 -4
  50. package/src/model/index.ts +7 -7
  51. package/src/model/node/RectNodeModel.ts +2 -1
  52. package/src/model/node/index.ts +8 -8
  53. package/src/options.ts +1 -0
  54. package/src/util/theme.ts +198 -3
  55. package/src/view/edge/BaseEdge.tsx +96 -12
  56. package/src/view/overlay/Grid.tsx +2 -1
  57. package/src/view/shape/Polygon.tsx +56 -4
  58. package/stats.html +1 -1
@@ -1,38 +1,42 @@
1
- import { BaseNode, BaseNodeModel, Keyboard } from '../src';
2
- import LogicFlow from '../src/LogicFlow';
3
- import Tool from '../src/tool';
1
+ import { BaseNode, BaseNodeModel, Keyboard } from '../src'
2
+ import LogicFlow from '../src/LogicFlow'
3
+ // import Tool from '../src/tool'
4
4
  /**
5
5
  * @jest-environment jsdom
6
6
  */
7
7
  describe('logicflow/initialize', () => {
8
8
  test('init', () => {
9
- const initContainer = jest.fn();
10
- LogicFlow.prototype.initContainer = initContainer;
11
- const dom = document.createElement('div');
12
- dom.id = 'main-graph';
13
- document.body.appendChild(dom);
9
+ const initContainerSpy = jest.spyOn(
10
+ LogicFlow.prototype as any,
11
+ 'initContainer' as any,
12
+ )
13
+ const dom = document.createElement('div')
14
+ dom.id = 'main-graph'
15
+ document.body.appendChild(dom)
14
16
  const lf = new LogicFlow({
15
17
  container: dom,
16
- });
17
- expect(initContainer).toBeCalled();
18
- expect(lf).toBeDefined();
19
- });
18
+ })
19
+ expect(initContainerSpy).toBeCalled()
20
+ expect(lf).toBeDefined()
21
+ })
20
22
 
21
23
  test('elements register', () => {
22
- const defaultRegister = jest.fn();
23
- LogicFlow.prototype.defaultRegister = defaultRegister;
24
-
25
- const dom = document.createElement('div');
26
- dom.id = 'main-graph';
27
- document.body.appendChild(dom);
24
+ const defaultRegister = jest.fn()
25
+ jest
26
+ .spyOn(LogicFlow.prototype as any, 'defaultRegister')
27
+ .mockImplementation(defaultRegister)
28
+
29
+ const dom = document.createElement('div')
30
+ dom.id = 'main-graph'
31
+ document.body.appendChild(dom)
28
32
  const lf = new LogicFlow({
29
33
  container: dom,
30
- });
34
+ })
31
35
  lf.register({
32
36
  type: 'test',
33
37
  view: BaseNode,
34
38
  model: BaseNodeModel,
35
- });
39
+ })
36
40
 
37
41
  lf.register('custom', ({ RectNode, RectNodeModel }) => {
38
42
  class CustomView extends RectNode {}
@@ -40,57 +44,61 @@ describe('logicflow/initialize', () => {
40
44
  return {
41
45
  view: CustomView,
42
46
  model: CustomModel,
43
- };
44
- });
47
+ }
48
+ })
45
49
 
46
- expect(defaultRegister).toBeCalled();
47
- expect(lf.getView('test')).toBeDefined();
48
- expect(lf.getView('custom')).toBeDefined();
49
- expect(lf.graphModel.getModel('test')).toBeDefined();
50
- expect(lf.graphModel.getModel('custom')).toBeDefined();
51
- });
50
+ expect(defaultRegister).toBeCalled()
51
+ expect(lf.getView('test')).toBeDefined()
52
+ expect(lf.getView('custom')).toBeDefined()
53
+ expect(lf.graphModel.getModel('test')).toBeDefined()
54
+ expect(lf.graphModel.getModel('custom')).toBeDefined()
55
+ })
52
56
 
53
57
  test('register plugin by Logicflow.use', () => {
54
58
  class Plugin {
55
- static pluginName = 'test-use';
56
- lf: LogicFlow;
59
+ static pluginName = 'test-use'
60
+ lf: LogicFlow
57
61
  constructor(lf: LogicFlow) {
58
- this.lf = lf;
62
+ this.lf = lf
59
63
  }
60
64
  init() {}
61
65
  }
62
- LogicFlow.use(Plugin);
63
- expect(LogicFlow.extensions.get('test-use')).toBeDefined();
64
- });
66
+ LogicFlow.use(Plugin)
67
+ expect(LogicFlow.extensions.get('test-use')).toBeDefined()
68
+ })
65
69
 
66
70
  test('shortcut', () => {
67
- const initShortcuts = jest.fn();
68
- const on = jest.fn();
69
- Keyboard.prototype.initShortcuts = initShortcuts;
70
- Keyboard.prototype.on = on;
71
- const dom = document.createElement('div');
72
- dom.id = 'main-graph';
73
- document.body.appendChild(dom);
71
+ const initShortcuts = jest.fn()
72
+ const on = jest.fn()
73
+ Keyboard.prototype.initShortcuts = initShortcuts
74
+ Keyboard.prototype.on = on
75
+ const dom = document.createElement('div')
76
+ dom.id = 'main-graph'
77
+ document.body.appendChild(dom)
78
+
79
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
80
  const lf = new LogicFlow({
75
81
  container: dom,
76
- });
77
- expect(initShortcuts).toBeCalled();
78
- expect(on).toBeCalledTimes(5);
79
- });
82
+ })
83
+ expect(initShortcuts).toBeCalled()
84
+ expect(on).toBeCalledTimes(5)
85
+ })
80
86
 
81
87
  test('not silent mode', () => {
82
- const initShortcuts = jest.fn();
83
- Keyboard.prototype.initShortcuts = initShortcuts;
84
- const dom = document.createElement('div');
85
- dom.id = 'main-graph';
86
- document.body.appendChild(dom);
88
+ const initShortcuts = jest.fn()
89
+ Keyboard.prototype.initShortcuts = initShortcuts
90
+ const dom = document.createElement('div')
91
+ dom.id = 'main-graph'
92
+ document.body.appendChild(dom)
93
+
94
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
87
95
  const lf = new LogicFlow({
88
96
  container: dom,
89
97
  isSilentMode: false,
90
- });
91
- expect(initShortcuts).toBeCalledTimes(1);
92
- });
93
- });
98
+ })
99
+ expect(initShortcuts).toBeCalledTimes(1)
100
+ })
101
+ })
94
102
 
95
103
  describe('logicflow/apis', () => {
96
104
  const rawData = {
@@ -146,12 +154,12 @@ describe('logicflow/apis', () => {
146
154
  targetNodeId: 'node4',
147
155
  },
148
156
  ],
149
- };
157
+ }
150
158
 
151
159
  describe('operations on node/edge model ', () => {
152
- const dom = document.createElement('div');
153
- dom.id = 'main-graph';
154
- document.body.appendChild(dom);
160
+ const dom = document.createElement('div')
161
+ dom.id = 'main-graph'
162
+ document.body.appendChild(dom)
155
163
  const lf = new LogicFlow({
156
164
  container: dom,
157
165
  width: 1000,
@@ -170,30 +178,30 @@ describe('logicflow/apis', () => {
170
178
  beforeClone: (data: any) => !['node1'].includes(data.id),
171
179
  beforeDelete: (data: any) => !['node1', 'edge1'].includes(data.id),
172
180
  },
173
- });
181
+ })
174
182
 
175
183
  test('render', () => {
176
- lf.render(rawData);
177
- expect(lf.graphModel.nodes.length).toBe(4);
178
- expect(lf.graphModel.edges.length).toBe(3);
179
- });
184
+ lf.render(rawData)
185
+ expect(lf.graphModel.nodes.length).toBe(4)
186
+ expect(lf.graphModel.edges.length).toBe(3)
187
+ })
180
188
 
181
189
  test('set default edge type', () => {
182
- lf.setDefaultEdgeType('line');
183
- expect(lf.graphModel.edgeType).toBe('line');
184
- });
190
+ lf.setDefaultEdgeType('line')
191
+ expect(lf.graphModel.edgeType).toBe('line')
192
+ })
185
193
 
186
194
  test('delete elements with guards', () => {
187
- lf.render(rawData);
188
- expect(lf.deleteElement('node1')).toBeFalsy();
189
- expect(lf.deleteElement('node2')).toBeTruthy();
190
- expect(lf.deleteElement('node5')).toBeFalsy();
195
+ lf.render(rawData)
196
+ expect(lf.deleteElement('node1')).toBeFalsy()
197
+ expect(lf.deleteElement('node2')).toBeTruthy()
198
+ expect(lf.deleteElement('node5')).toBeFalsy()
191
199
 
192
- expect(lf.graphModel.nodes.length).toBe(3);
193
- });
200
+ expect(lf.graphModel.nodes.length).toBe(3)
201
+ })
194
202
 
195
203
  test('add elements', () => {
196
- lf.render(rawData);
204
+ lf.render(rawData)
197
205
  lf.addElements({
198
206
  nodes: [
199
207
  {
@@ -217,76 +225,76 @@ describe('logicflow/apis', () => {
217
225
  targetNodeId: 'node_2_1',
218
226
  },
219
227
  ],
220
- });
221
- expect(lf.graphModel.nodes.length).toBe(6);
222
- expect(lf.graphModel.edges.length).toBe(4);
223
- });
228
+ })
229
+ expect(lf.graphModel.nodes.length).toBe(6)
230
+ expect(lf.graphModel.edges.length).toBe(4)
231
+ })
224
232
 
225
233
  test('add node', () => {
226
- lf.render(rawData);
234
+ lf.render(rawData)
227
235
  lf.addNode({
228
236
  id: 'node5',
229
237
  type: 'text',
230
238
  x: 100,
231
239
  y: 100,
232
240
  text: 'node5',
233
- });
234
- expect(lf.graphModel.nodes.length).toBe(5);
235
- lf.updateText('node5', 'node5_1');
236
- lf.updateText('edge1', 'edge1');
237
- expect(lf.getNodeModelById('node5').text.value).toBe('node5_1');
238
- expect(lf.getEdgeModelById('edge1').text.value).toBe('edge1');
239
- });
241
+ })
242
+ expect(lf.graphModel.nodes.length).toBe(5)
243
+ lf.updateText('node5', 'node5_1')
244
+ lf.updateText('edge1', 'edge1')
245
+ expect(lf.getNodeModelById('node5').text.value).toBe('node5_1')
246
+ expect(lf.getEdgeModelById('edge1').text.value).toBe('edge1')
247
+ })
240
248
 
241
249
  test('change node id', () => {
242
- lf.render(rawData);
243
- expect(lf.changeNodeId('node1', 'node1_1')).toBe('node1_1');
244
- expect(lf.changeNodeId('node1_1', 'node2')).toBeFalsy();
245
- expect(lf.changeNodeId('node1_1_1', 'node1_1_2')).toBeFalsy();
246
- });
250
+ lf.render(rawData)
251
+ expect(lf.changeNodeId('node1', 'node1_1')).toBe('node1_1')
252
+ expect(lf.changeNodeId('node1_1', 'node2')).toBeFalsy()
253
+ expect(lf.changeNodeId('node1_1_1', 'node1_1_2')).toBeFalsy()
254
+ })
247
255
 
248
256
  test('clone node with guards', () => {
249
- lf.render(rawData);
250
- expect(lf.cloneNode('node1')).toBeFalsy();
251
- expect(lf.cloneNode('node2')).toBeTruthy();
252
- expect(lf.graphModel.nodes.length).toBe(5);
253
- });
257
+ lf.render(rawData)
258
+ expect(lf.cloneNode('node1')).toBeFalsy()
259
+ expect(lf.cloneNode('node2')).toBeTruthy()
260
+ expect(lf.graphModel.nodes.length).toBe(5)
261
+ })
254
262
 
255
263
  test('get data by id', () => {
256
- lf.render(rawData);
257
- expect(lf.getDataById('node1')).toBeDefined();
258
- expect(lf.getDataById('edge1')).toBeDefined();
259
- });
264
+ lf.render(rawData)
265
+ expect(lf.getDataById('node1')).toBeDefined()
266
+ expect(lf.getDataById('edge1')).toBeDefined()
267
+ })
260
268
 
261
269
  test('get node data by id', () => {
262
- lf.render(rawData);
263
- expect(lf.getNodeDataById('node1')).toBeDefined();
264
- expect(lf.getNodeDataById('node6')).toBeUndefined();
265
- });
270
+ lf.render(rawData)
271
+ expect(lf.getNodeDataById('node1')).toBeDefined()
272
+ expect(lf.getNodeDataById('node6')).toBeUndefined()
273
+ })
266
274
 
267
275
  test('get edge data by id', () => {
268
- lf.render(rawData);
269
- expect(lf.getEdgeDataById('edge1')).toBeDefined();
270
- expect(lf.getEdgeDataById('edge4')).toBeUndefined();
271
- });
276
+ lf.render(rawData)
277
+ expect(lf.getEdgeDataById('edge1')).toBeDefined()
278
+ expect(lf.getEdgeDataById('edge4')).toBeUndefined()
279
+ })
272
280
 
273
281
  test('add edge', () => {
274
- lf.render(rawData);
282
+ lf.render(rawData)
275
283
  lf.addEdge({
276
284
  id: 'edge4',
277
285
  type: 'polyline',
278
286
  sourceNodeId: 'node1',
279
287
  targetNodeId: 'node2',
280
- });
281
- expect(lf.graphModel.edges.length).toBe(4);
282
- });
288
+ })
289
+ expect(lf.graphModel.edges.length).toBe(4)
290
+ })
283
291
 
284
292
  test('delete edge with guards', () => {
285
- lf.render(rawData);
286
- expect(lf.deleteEdge('edge1')).toBeFalsy();
287
- expect(lf.deleteEdge('edge2')).toBeTruthy();
288
- expect(lf.graphModel.edges.length).toBe(2);
289
- });
293
+ lf.render(rawData)
294
+ expect(lf.deleteEdge('edge1')).toBeFalsy()
295
+ expect(lf.deleteEdge('edge2')).toBeTruthy()
296
+ expect(lf.graphModel.edges.length).toBe(2)
297
+ })
290
298
 
291
299
  test('delete edge by nodeId', () => {
292
300
  lf.render({
@@ -353,89 +361,89 @@ describe('logicflow/apis', () => {
353
361
  targetNodeId: 'node5',
354
362
  },
355
363
  ],
356
- });
364
+ })
357
365
 
358
366
  lf.deleteEdgeByNodeId({
359
367
  targetNodeId: 'node3',
360
- });
361
- expect(lf.graphModel.edges.length).toBe(3);
368
+ })
369
+ expect(lf.graphModel.edges.length).toBe(3)
362
370
  lf.deleteEdgeByNodeId({
363
371
  sourceNodeId: 'node1',
364
372
  targetNodeId: 'node2',
365
- });
366
- expect(lf.graphModel.edges.length).toBe(2);
373
+ })
374
+ expect(lf.graphModel.edges.length).toBe(2)
367
375
  lf.deleteEdgeByNodeId({
368
376
  sourceNodeId: 'node2',
369
- });
370
- expect(lf.graphModel.edges.length).toBe(0);
371
- });
377
+ })
378
+ expect(lf.graphModel.edges.length).toBe(0)
379
+ })
372
380
 
373
381
  test('change node type', () => {
374
- lf.render(rawData);
375
- lf.changeNodeType('node1', 'circle');
376
- expect(lf.getNodeModelById('node1').type).toBe('circle');
377
- });
382
+ lf.render(rawData)
383
+ lf.changeNodeType('node1', 'circle')
384
+ expect(lf.getNodeModelById('node1').type).toBe('circle')
385
+ })
378
386
 
379
387
  test('change edge type', () => {
380
- lf.render(rawData);
381
- lf.changeEdgeType('edge1', 'line');
382
- expect(lf.getEdgeModelById('edge1').type).toBe('line');
383
- });
388
+ lf.render(rawData)
389
+ lf.changeEdgeType('edge1', 'line')
390
+ expect(lf.getEdgeModelById('edge1').type).toBe('line')
391
+ })
384
392
 
385
393
  test('get incoming and outgoing edges of node', () => {
386
- lf.render(rawData);
387
- expect(lf.getNodeEdges('node2').length).toBe(3);
388
- });
394
+ lf.render(rawData)
395
+ expect(lf.getNodeEdges('node2').length).toBe(3)
396
+ })
389
397
 
390
398
  test('get incoming edges', () => {
391
- lf.render(rawData);
392
- expect(lf.getNodeIncomingEdge('node2').length).toBe(1);
393
- });
399
+ lf.render(rawData)
400
+ expect(lf.getNodeIncomingEdge('node2').length).toBe(1)
401
+ })
394
402
 
395
403
  test('get outgoing edges', () => {
396
- lf.renderRawData(rawData);
397
- expect(lf.getNodeOutgoingEdge('node2').length).toBe(2);
398
- });
404
+ lf.renderRawData(rawData)
405
+ expect(lf.getNodeOutgoingEdge('node2').length).toBe(2)
406
+ })
399
407
 
400
408
  test('get incoming node', () => {
401
- lf.renderRawData(rawData);
402
- expect(lf.getNodeIncomingNode('node2').length).toBe(1);
403
- });
409
+ lf.renderRawData(rawData)
410
+ expect(lf.getNodeIncomingNode('node2').length).toBe(1)
411
+ })
404
412
 
405
413
  test('get outgoing node', () => {
406
- lf.renderRawData(rawData);
407
- expect(lf.getNodeOutgoingNode('node2').length).toBe(2);
408
- });
414
+ lf.renderRawData(rawData)
415
+ expect(lf.getNodeOutgoingNode('node2').length).toBe(2)
416
+ })
409
417
 
410
418
  test('get edge model by filter', () => {
411
- lf.render(rawData);
419
+ lf.render(rawData)
412
420
  expect(
413
421
  lf.getEdgeModels({
414
422
  sourceNodeId: 'node2',
415
423
  }).length,
416
- ).toBe(2);
424
+ ).toBe(2)
417
425
 
418
426
  expect(
419
427
  lf.getEdgeModels({
420
428
  targetNodeId: 'node2',
421
429
  }).length,
422
- ).toBe(1);
430
+ ).toBe(1)
423
431
 
424
432
  expect(
425
433
  lf.getEdgeModels({
426
434
  sourceNodeId: 'node2',
427
435
  targetNodeId: 'node3',
428
436
  }).length,
429
- ).toBe(1);
430
- });
437
+ ).toBe(1)
438
+ })
431
439
 
432
440
  test('get elements in certain area', () => {
433
- lf.render(rawData);
434
- expect(lf.getAreaElement([0, 0], [1000, 1000]).length).toBe(7);
435
- });
441
+ lf.render(rawData)
442
+ expect(lf.getAreaElement([0, 0], [1000, 1000]).length).toBe(7)
443
+ })
436
444
 
437
445
  test('set properties', () => {
438
- lf.renderRawData(rawData);
446
+ lf.renderRawData(rawData)
439
447
  lf.setProperties('node1', {
440
448
  a: {
441
449
  b: undefined,
@@ -445,7 +453,7 @@ describe('logicflow/apis', () => {
445
453
  f: null,
446
454
  },
447
455
  },
448
- });
456
+ })
449
457
  expect((lf.getProperties('node1') as any).a).toEqual({
450
458
  b: undefined,
451
459
  c: [],
@@ -453,56 +461,56 @@ describe('logicflow/apis', () => {
453
461
  e: 1,
454
462
  f: null,
455
463
  },
456
- });
457
- });
464
+ })
465
+ })
458
466
 
459
467
  test('delete properties', () => {
460
- lf.renderRawData(rawData);
461
- lf.deleteProperty('node1', 'a');
462
- expect(lf.getNodeModelById('node1').properties.a).toBeUndefined();
463
- });
468
+ lf.renderRawData(rawData)
469
+ lf.deleteProperty('node1', 'a')
470
+ expect(lf.getNodeModelById('node1').properties.a).toBeUndefined()
471
+ })
464
472
 
465
473
  test('select and to front in overlapMode 0', () => {
466
- lf.render(rawData);
467
- lf.selectElementById('node1');
468
- lf.selectElementById('node2', true);
469
- const selectElements = lf.getSelectElements();
470
- expect(selectElements.nodes.length).toBe(2);
471
- expect(selectElements.nodes[0].id).toBe('node1');
472
- expect(lf.getNodeModelById('node1').zIndex).toBe(9999);
473
- lf.clearSelectElements();
474
- expect(lf.getNodeModelById('node1').zIndex).toBe(1);
475
- });
474
+ lf.render(rawData)
475
+ lf.selectElementById('node1')
476
+ lf.selectElementById('node2', true)
477
+ const selectElements = lf.getSelectElements()
478
+ expect(selectElements.nodes.length).toBe(2)
479
+ expect(selectElements.nodes[0].id).toBe('node1')
480
+ expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
481
+ lf.clearSelectElements()
482
+ expect(lf.getNodeModelById('node1').zIndex).toBe(1)
483
+ })
476
484
 
477
485
  test('to front in overlapMode 0', () => {
478
- lf.render(rawData);
479
- lf.toFront('node1');
480
- expect(lf.getNodeModelById('node1').zIndex).toBe(9999);
481
- });
486
+ lf.render(rawData)
487
+ lf.toFront('node1')
488
+ expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
489
+ })
482
490
 
483
491
  test('get graph data', () => {
484
- lf.render(rawData);
485
- const graphData = lf.getGraphData();
486
- expect(lf.getGraphData()).toBeDefined();
487
- expect(graphData.nodes.length).toBe(4);
488
- expect(graphData.edges.length).toBe(3);
489
- });
492
+ lf.render(rawData)
493
+ const graphData = lf.getGraphData()
494
+ expect(lf.getGraphData()).toBeDefined()
495
+ expect(graphData.nodes.length).toBe(4)
496
+ expect(graphData.edges.length).toBe(3)
497
+ })
490
498
 
491
499
  test('clear graph data', () => {
492
- lf.render(rawData);
493
- lf.clearData();
500
+ lf.render(rawData)
501
+ lf.clearData()
494
502
  expect(lf.getGraphData()).toEqual({
495
503
  nodes: [],
496
504
  edges: [],
497
- });
498
- });
499
- });
505
+ })
506
+ })
507
+ })
500
508
 
501
509
  describe('transform', () => {
502
- const resize = jest.fn();
503
- const dom = document.createElement('div');
504
- dom.id = 'main-graph';
505
- document.body.appendChild(dom);
510
+ const resize = jest.fn()
511
+ const dom = document.createElement('div')
512
+ dom.id = 'main-graph'
513
+ document.body.appendChild(dom)
506
514
  const lf = new LogicFlow({
507
515
  container: dom,
508
516
  stopScrollGraph: true,
@@ -511,8 +519,8 @@ describe('logicflow/apis', () => {
511
519
  width: 1000,
512
520
  height: 1000,
513
521
  overlapMode: 1,
514
- });
515
- lf.graphModel.resize = resize;
522
+ })
523
+ lf.graphModel.resize = resize
516
524
 
517
525
  test('get transform information', () => {
518
526
  expect(lf.getTransform()).toEqual({
@@ -520,48 +528,48 @@ describe('logicflow/apis', () => {
520
528
  SCALE_Y: 1,
521
529
  TRANSLATE_X: 0,
522
530
  TRANSLATE_Y: 0,
523
- });
524
- });
531
+ })
532
+ })
525
533
 
526
534
  test('resize', () => {
527
- lf.resize(100, 100);
528
- expect(resize).toBeCalled();
535
+ lf.resize(100, 100)
536
+ expect(resize).toBeCalled()
529
537
  setTimeout(() => {
530
- expect(lf.graphModel.width).toBe(100);
531
- expect(lf.graphModel.height).toBe(100);
532
- });
533
- });
538
+ expect(lf.graphModel.width).toBe(100)
539
+ expect(lf.graphModel.height).toBe(100)
540
+ })
541
+ })
534
542
 
535
543
  test('zoom', () => {
536
- lf.zoom(0.5);
537
- expect(lf.graphModel.transformModel.SCALE_X).toBe(0.5);
538
- expect(lf.graphModel.transformModel.SCALE_Y).toBe(0.5);
539
- lf.resetZoom();
540
- expect(lf.graphModel.transformModel.SCALE_X).toBe(1);
541
- expect(lf.graphModel.transformModel.SCALE_Y).toBe(1);
542
- });
544
+ lf.zoom(0.5)
545
+ expect(lf.graphModel.transformModel.SCALE_X).toBe(0.5)
546
+ expect(lf.graphModel.transformModel.SCALE_Y).toBe(0.5)
547
+ lf.resetZoom()
548
+ expect(lf.graphModel.transformModel.SCALE_X).toBe(1)
549
+ expect(lf.graphModel.transformModel.SCALE_Y).toBe(1)
550
+ })
543
551
 
544
552
  test('translate', () => {
545
- lf.translate(100, 100);
546
- expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(100);
547
- expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(100);
548
- lf.resetTranslate();
549
- expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(0);
550
- expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(0);
551
- });
553
+ lf.translate(100, 100)
554
+ expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(100)
555
+ expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(100)
556
+ lf.resetTranslate()
557
+ expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(0)
558
+ expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(0)
559
+ })
552
560
 
553
561
  test('select and to front in overlapMode 1', () => {
554
- lf.render(rawData);
555
- lf.selectElementById('node1');
556
- expect(lf.getNodeModelById('node1').zIndex).toBe(1008);
557
- lf.clearSelectElements();
558
- expect(lf.getNodeModelById('node1').zIndex).toBe(1008);
559
- });
562
+ lf.render(rawData)
563
+ lf.selectElementById('node1')
564
+ expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
565
+ lf.clearSelectElements()
566
+ expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
567
+ })
560
568
 
561
569
  test('to front in overlapMode 1', () => {
562
- lf.render(rawData);
563
- lf.toFront('node1');
564
- expect(lf.getNodeModelById('node1').zIndex).toBe(1016);
565
- });
566
- });
567
- });
570
+ lf.render(rawData)
571
+ lf.toFront('node1')
572
+ expect(lf.getNodeModelById('node1').zIndex).toBe(1016)
573
+ })
574
+ })
575
+ })