| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 | | import React, { useRef, useEffect } from "react"; |  | import { Stencil } from '@antv/x6-plugin-stencil'; |  |   |  | export const StencilComponent = (({ graphRef, isReady, stencilContainer }) => { |  |   |  |     useEffect(() => { |  |         if (isReady) { |  |             const graph = graphRef.current; |  |   |  |             const stencil = new Stencil({ |  |                 title: 'Stencil', |  |                 target: graphRef.current, |  |                 search(cell, keyword) { |  |                     return cell.shape.indexOf(keyword) !== -1 |  |                 }, |  |                 placeholder: 'Search by shape name', |  |                 notFoundText: 'Not Found', |  |                 collapsable: true, |  |                 stencilGraphHeight: 0, |  |                 groups: [ |  |                     { |  |                         name: 'group1', |  |                         title: 'Group(Collapsable)', |  |                     }, |  |                     { |  |                         name: 'group2', |  |                         title: 'Group', |  |                         collapsable: false, |  |                     }, |  |                 ], |  |             }) |  |   |  |             stencilContainer.current.appendChild(stencil.container) |  |   |  |             const commonAttrs = { |  |                 body: { |  |                     fill: '#fff', |  |                     stroke: '#8f8f8f', |  |                     strokeWidth: 1, |  |                 }, |  |             } |  |   |  |             const n1 = graph.createNode({ |  |                 shape: 'rect', |  |                 x: 40, |  |                 y: 40, |  |                 width: 80, |  |                 height: 40, |  |                 label: 'rect', |  |                 attrs: commonAttrs, |  |             }) |  |   |  |             const n2 = graph.createNode({ |  |                 shape: 'circle', |  |                 x: 180, |  |                 y: 40, |  |                 width: 40, |  |                 height: 40, |  |                 label: 'circle', |  |                 attrs: commonAttrs, |  |             }) |  |   |  |             const n3 = graph.createNode({ |  |                 shape: 'ellipse', |  |                 x: 280, |  |                 y: 40, |  |                 width: 80, |  |                 height: 40, |  |                 label: 'ellipse', |  |                 attrs: commonAttrs, |  |             }) |  |   |  |             const n4 = graph.createNode({ |  |                 shape: 'path', |  |                 x: 420, |  |                 y: 40, |  |                 width: 40, |  |                 height: 40, |  |                 // https://www.svgrepo.com/svg/13653/like |  |                 path: 'M24.85,10.126c2.018-4.783,6.628-8.125,11.99-8.125c7.223,0,12.425,6.179,13.079,13.543c0,0,0.353,1.828-0.424,5.119c-1.058,4.482-3.545,8.464-6.898,11.503L24.85,48L7.402,32.165c-3.353-3.038-5.84-7.021-6.898-11.503c-0.777-3.291-0.424-5.119-0.424-5.119C0.734,8.179,5.936,2,13.159,2C18.522,2,22.832,5.343,24.85,10.126z', |  |                 attrs: commonAttrs, |  |                 label: 'path123', |  |             }) |  |   |  |             stencil.load([n1, n2], 'group1') |  |             stencil.load([n3, n4], 'group2') |  |         } |  |   |  |     }) |  |   |  |     return <div className="app-stencil" ref={stencilContainer} /> |  | }) | 
 |