react-design-editor 0.0.50 → 0.0.51

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 (100) hide show
  1. package/dist/react-design-editor.js +7739 -7114
  2. package/dist/react-design-editor.min.js +1 -1
  3. package/dist/react-design-editor.min.js.LICENSE.txt +2 -0
  4. package/lib/Canvas.d.ts +18 -18
  5. package/lib/Canvas.js +172 -172
  6. package/lib/CanvasObject.d.ts +10 -10
  7. package/lib/CanvasObject.js +96 -96
  8. package/lib/constants/code.d.ts +19 -19
  9. package/lib/constants/code.js +22 -22
  10. package/lib/constants/defaults.d.ts +38 -38
  11. package/lib/constants/defaults.js +69 -69
  12. package/lib/constants/index.d.ts +3 -3
  13. package/lib/constants/index.js +26 -26
  14. package/lib/handlers/AlignmentHandler.d.ts +18 -18
  15. package/lib/handlers/AlignmentHandler.js +58 -58
  16. package/lib/handlers/AnimationHandler.d.ts +50 -50
  17. package/lib/handlers/AnimationHandler.js +346 -346
  18. package/lib/handlers/ChartHandler.d.ts +8 -8
  19. package/lib/handlers/ChartHandler.js +8 -8
  20. package/lib/handlers/ContextmenuHandler.d.ts +28 -28
  21. package/lib/handlers/ContextmenuHandler.js +65 -65
  22. package/lib/handlers/CropHandler.d.ts +43 -43
  23. package/lib/handlers/CropHandler.js +261 -261
  24. package/lib/handlers/CustomHandler.d.ts +7 -7
  25. package/lib/handlers/CustomHandler.js +10 -10
  26. package/lib/handlers/DrawingHandler.d.ts +28 -28
  27. package/lib/handlers/DrawingHandler.js +318 -318
  28. package/lib/handlers/ElementHandler.d.ts +80 -80
  29. package/lib/handlers/ElementHandler.js +154 -154
  30. package/lib/handlers/EventHandler.d.ts +170 -170
  31. package/lib/handlers/EventHandler.js +880 -880
  32. package/lib/handlers/FiberHandler.d.ts +6 -6
  33. package/lib/handlers/FiberHandler.js +23 -23
  34. package/lib/handlers/GridHandler.d.ts +19 -19
  35. package/lib/handlers/GridHandler.js +77 -77
  36. package/lib/handlers/GuidelineHandler.d.ts +61 -61
  37. package/lib/handlers/GuidelineHandler.js +315 -315
  38. package/lib/handlers/Handler.d.ts +618 -618
  39. package/lib/handlers/Handler.js +1645 -1645
  40. package/lib/handlers/ImageHandler.d.ts +307 -307
  41. package/lib/handlers/ImageHandler.js +528 -528
  42. package/lib/handlers/InteractionHandler.d.ts +45 -45
  43. package/lib/handlers/InteractionHandler.js +168 -164
  44. package/lib/handlers/LinkHandler.d.ts +115 -115
  45. package/lib/handlers/LinkHandler.js +247 -247
  46. package/lib/handlers/NodeHandler.d.ts +50 -50
  47. package/lib/handlers/NodeHandler.js +274 -274
  48. package/lib/handlers/PortHandler.d.ts +22 -22
  49. package/lib/handlers/PortHandler.js +179 -179
  50. package/lib/handlers/ShortcutHandler.d.ts +119 -119
  51. package/lib/handlers/ShortcutHandler.js +151 -151
  52. package/lib/handlers/TooltipHandler.d.ts +33 -33
  53. package/lib/handlers/TooltipHandler.js +91 -91
  54. package/lib/handlers/TransactionHandler.d.ts +59 -59
  55. package/lib/handlers/TransactionHandler.js +137 -137
  56. package/lib/handlers/WorkareaHandler.d.ts +43 -43
  57. package/lib/handlers/WorkareaHandler.js +354 -354
  58. package/lib/handlers/ZoomHandler.d.ts +48 -48
  59. package/lib/handlers/ZoomHandler.js +143 -143
  60. package/lib/handlers/index.d.ts +23 -23
  61. package/lib/handlers/index.js +48 -48
  62. package/lib/index.d.ts +6 -6
  63. package/lib/index.js +20 -20
  64. package/lib/objects/Arrow.d.ts +2 -2
  65. package/lib/objects/Arrow.js +40 -40
  66. package/lib/objects/Chart.d.ts +10 -10
  67. package/lib/objects/Chart.js +117 -117
  68. package/lib/objects/CirclePort.d.ts +2 -2
  69. package/lib/objects/CirclePort.js +28 -28
  70. package/lib/objects/Cube.d.ts +5 -5
  71. package/lib/objects/Cube.js +71 -71
  72. package/lib/objects/CurvedLink.d.ts +2 -2
  73. package/lib/objects/CurvedLink.js +51 -51
  74. package/lib/objects/Element.d.ts +13 -13
  75. package/lib/objects/Element.js +77 -77
  76. package/lib/objects/Gif.d.ts +3 -3
  77. package/lib/objects/Gif.js +41 -41
  78. package/lib/objects/Iframe.d.ts +9 -9
  79. package/lib/objects/Iframe.js +63 -63
  80. package/lib/objects/Line.d.ts +2 -2
  81. package/lib/objects/Line.js +24 -24
  82. package/lib/objects/Link.d.ts +15 -15
  83. package/lib/objects/Link.js +107 -107
  84. package/lib/objects/Node.d.ts +59 -59
  85. package/lib/objects/Node.js +271 -271
  86. package/lib/objects/OrthogonalLink.d.ts +2 -2
  87. package/lib/objects/OrthogonalLink.js +54 -54
  88. package/lib/objects/Port.d.ts +12 -12
  89. package/lib/objects/Port.js +28 -28
  90. package/lib/objects/Svg.d.ts +12 -12
  91. package/lib/objects/Svg.js +93 -93
  92. package/lib/objects/Video.d.ts +14 -14
  93. package/lib/objects/Video.js +113 -113
  94. package/lib/objects/index.d.ts +15 -15
  95. package/lib/objects/index.js +32 -32
  96. package/lib/utils/ObjectUtil.d.ts +408 -408
  97. package/lib/utils/ObjectUtil.js +13 -13
  98. package/lib/utils/index.d.ts +1 -1
  99. package/lib/utils/index.js +13 -13
  100. package/package.json +1 -1
@@ -1,274 +1,274 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fabric_1 = require("fabric");
4
- class NodeHandler {
5
- constructor(handler) {
6
- /**
7
- * Get the node path by target object
8
- * @param {NodeObject} target
9
- * @param {NodeObject[]} [nodes=[]]
10
- * @param {string} [direction='init']
11
- */
12
- this.getNodePath = (target, nodes = [], direction = 'init') => {
13
- if (target) {
14
- if (direction === 'to' || direction === 'init') {
15
- if (target.toPort) {
16
- target.toPort.links.forEach(link => {
17
- if (link.fromNode) {
18
- nodes.push(link.fromNode);
19
- this.getNodePath(link.fromNode, nodes, 'to');
20
- }
21
- });
22
- }
23
- if (direction === 'init') {
24
- nodes.push(target);
25
- }
26
- }
27
- if (direction === 'from' || direction === 'init') {
28
- target.fromPort.forEach(port => {
29
- port.links.forEach(link => {
30
- if (link.toNode) {
31
- nodes.push(link.toNode);
32
- this.getNodePath(link.toNode, nodes, 'from');
33
- }
34
- });
35
- });
36
- }
37
- }
38
- };
39
- /**
40
- * Select the node path
41
- * @param {string[]} [path]
42
- */
43
- this.selectByPath = (path) => {
44
- if (!path || !path.length) {
45
- return;
46
- }
47
- const targetObjects = this.handler.objects.filter(object => path.some(id => id === object.id));
48
- const nonTargetObjects = this.handler.objects.filter(object => path.some(id => id !== object.id));
49
- nonTargetObjects.forEach((object) => {
50
- if (object.superType === 'link') {
51
- const { fromNode, toNode } = object;
52
- if (fromNode && toNode) {
53
- const fromIndex = targetObjects.findIndex(obj => obj.id === fromNode.id);
54
- const toIndex = targetObjects.findIndex(obj => obj.id === toNode.id);
55
- if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {
56
- object.set({
57
- opacity: 1,
58
- shadow: {
59
- color: object.stroke,
60
- },
61
- });
62
- this.highlightingNode(object, 300);
63
- this.handler.canvas.requestRenderAll();
64
- return;
65
- }
66
- }
67
- }
68
- object.set({
69
- opacity: 0.2,
70
- });
71
- if (object.superType === 'node') {
72
- if (object.toPort) {
73
- object.toPort.set({
74
- opacity: 0.2,
75
- });
76
- }
77
- object.fromPort.forEach((port) => {
78
- port.set({
79
- opacity: 0.2,
80
- });
81
- });
82
- }
83
- if (!object.animating) {
84
- object.set('shadow', {
85
- blur: 0,
86
- });
87
- }
88
- });
89
- targetObjects.forEach((object) => {
90
- object.set({
91
- opacity: 1,
92
- shadow: {
93
- color: object.stroke,
94
- },
95
- });
96
- this.highlightingNode(object, 300);
97
- if (object.toPort) {
98
- object.toPort.set({
99
- opacity: 1,
100
- });
101
- }
102
- if (object.fromPort) {
103
- object.fromPort.forEach((port) => {
104
- port.set({
105
- opacity: 1,
106
- });
107
- });
108
- }
109
- });
110
- this.handler.canvas.requestRenderAll();
111
- };
112
- /**
113
- * Select node by id
114
- * @param {string} id
115
- */
116
- this.selectById = (id) => {
117
- this.handler.objects.forEach((object) => {
118
- if (id === object.id) {
119
- object.set('shadow', {
120
- color: object.stroke,
121
- blur: 50,
122
- });
123
- return;
124
- }
125
- else if (id === object.nodeId) {
126
- return;
127
- }
128
- object.set('shadow', {
129
- blur: 0,
130
- });
131
- });
132
- this.handler.canvas.requestRenderAll();
133
- };
134
- /**
135
- * Deselect nodes
136
- */
137
- this.deselect = () => {
138
- this.handler.objects.forEach((object) => {
139
- object.set({
140
- opacity: 1,
141
- });
142
- if (object.superType === 'node') {
143
- const node = object;
144
- if (node.toPort) {
145
- node.toPort.set({
146
- opacity: 1,
147
- });
148
- }
149
- node.fromPort.forEach(port => {
150
- port.set({
151
- opacity: 1,
152
- });
153
- });
154
- }
155
- if (!object.animating) {
156
- const node = object;
157
- node.set('shadow', {
158
- blur: 0,
159
- });
160
- }
161
- });
162
- this.handler.canvas.renderAll();
163
- };
164
- /**
165
- * Highlight path by ids
166
- * @param {string[]} [path]
167
- */
168
- this.highlightingByPath = (path) => {
169
- if (!path || !path.length) {
170
- return;
171
- }
172
- const targetObjects = this.handler.objects.filter((obj) => path.some(id => id === obj.id));
173
- const nonTargetObjects = this.handler.objects.filter((obj) => path.some(id => id !== obj.id));
174
- const lastObject = targetObjects.filter((obj) => obj.id === path[path.length - 1])[0];
175
- targetObjects.forEach((object) => {
176
- if (lastObject) {
177
- object.set('shadow', {
178
- color: lastObject.stroke,
179
- });
180
- }
181
- else {
182
- object.set('shadow', {
183
- color: object.stroke,
184
- });
185
- }
186
- this.highlightingNode(object);
187
- this.handler.canvas.requestRenderAll();
188
- });
189
- nonTargetObjects.forEach((object) => {
190
- if (object.superType === 'link') {
191
- const { fromNode, toNode } = object;
192
- if (fromNode && toNode) {
193
- const fromIndex = targetObjects.findIndex((obj) => obj.id === fromNode.id);
194
- const toIndex = targetObjects.findIndex((obj) => obj.id === toNode.id);
195
- if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {
196
- if (lastObject) {
197
- object.set('shadow', {
198
- color: lastObject.stroke,
199
- });
200
- }
201
- else {
202
- object.set('shadow', {
203
- color: object.stroke,
204
- });
205
- }
206
- this.highlightingNode(object);
207
- this.highlightingLink(object, lastObject);
208
- return;
209
- }
210
- }
211
- }
212
- });
213
- this.handler.canvas.requestRenderAll();
214
- };
215
- /**
216
- * Highlight link
217
- * @param {FabricObject} object
218
- * @param {FabricObject} targetObject
219
- * @param {number} [duration=500]
220
- */
221
- this.highlightingLink = (object, targetObject, duration = 500) => {
222
- object.animation = {
223
- duration,
224
- type: 'flash',
225
- stroke: targetObject ? targetObject.stroke : object.stroke,
226
- loop: 1,
227
- delay: 0,
228
- };
229
- this.handler.animationHandler.play(object.id, false);
230
- };
231
- /**
232
- * Highlight node
233
- *
234
- * @param {*} object
235
- * @param {number} [duration=500]
236
- * @param {number} [minBlur=0]
237
- * @param {number} [maxBlur=50]
238
- */
239
- this.highlightingNode = (object, duration = 500, minBlur = 0, maxBlur = 50) => {
240
- const onComplete = () => {
241
- if (object.shadow.blur === maxBlur) {
242
- object.animating = true;
243
- object.animate('shadow.blur', minBlur, {
244
- easing: fabric_1.fabric.util.ease.easeInOutQuad,
245
- onChange: (value) => {
246
- object.shadow.blur = value;
247
- this.handler.canvas.requestRenderAll();
248
- },
249
- onComplete: () => {
250
- object.animating = false;
251
- if (object.superType === 'link') {
252
- object.set({
253
- stroke: object.originStroke || object.stroke,
254
- });
255
- }
256
- },
257
- });
258
- }
259
- };
260
- object.animating = true;
261
- object.animate('shadow.blur', maxBlur, {
262
- easing: fabric_1.fabric.util.ease.easeInOutQuad,
263
- duration,
264
- onChange: (value) => {
265
- object.shadow.blur = value;
266
- this.handler.canvas.requestRenderAll();
267
- },
268
- onComplete,
269
- });
270
- };
271
- this.handler = handler;
272
- }
273
- }
274
- exports.default = NodeHandler;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fabric_1 = require("fabric");
4
+ class NodeHandler {
5
+ constructor(handler) {
6
+ /**
7
+ * Get the node path by target object
8
+ * @param {NodeObject} target
9
+ * @param {NodeObject[]} [nodes=[]]
10
+ * @param {string} [direction='init']
11
+ */
12
+ this.getNodePath = (target, nodes = [], direction = 'init') => {
13
+ if (target) {
14
+ if (direction === 'to' || direction === 'init') {
15
+ if (target.toPort) {
16
+ target.toPort.links.forEach(link => {
17
+ if (link.fromNode) {
18
+ nodes.push(link.fromNode);
19
+ this.getNodePath(link.fromNode, nodes, 'to');
20
+ }
21
+ });
22
+ }
23
+ if (direction === 'init') {
24
+ nodes.push(target);
25
+ }
26
+ }
27
+ if (direction === 'from' || direction === 'init') {
28
+ target.fromPort.forEach(port => {
29
+ port.links.forEach(link => {
30
+ if (link.toNode) {
31
+ nodes.push(link.toNode);
32
+ this.getNodePath(link.toNode, nodes, 'from');
33
+ }
34
+ });
35
+ });
36
+ }
37
+ }
38
+ };
39
+ /**
40
+ * Select the node path
41
+ * @param {string[]} [path]
42
+ */
43
+ this.selectByPath = (path) => {
44
+ if (!path || !path.length) {
45
+ return;
46
+ }
47
+ const targetObjects = this.handler.objects.filter(object => path.some(id => id === object.id));
48
+ const nonTargetObjects = this.handler.objects.filter(object => path.some(id => id !== object.id));
49
+ nonTargetObjects.forEach((object) => {
50
+ if (object.superType === 'link') {
51
+ const { fromNode, toNode } = object;
52
+ if (fromNode && toNode) {
53
+ const fromIndex = targetObjects.findIndex(obj => obj.id === fromNode.id);
54
+ const toIndex = targetObjects.findIndex(obj => obj.id === toNode.id);
55
+ if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {
56
+ object.set({
57
+ opacity: 1,
58
+ shadow: {
59
+ color: object.stroke,
60
+ },
61
+ });
62
+ this.highlightingNode(object, 300);
63
+ this.handler.canvas.requestRenderAll();
64
+ return;
65
+ }
66
+ }
67
+ }
68
+ object.set({
69
+ opacity: 0.2,
70
+ });
71
+ if (object.superType === 'node') {
72
+ if (object.toPort) {
73
+ object.toPort.set({
74
+ opacity: 0.2,
75
+ });
76
+ }
77
+ object.fromPort.forEach((port) => {
78
+ port.set({
79
+ opacity: 0.2,
80
+ });
81
+ });
82
+ }
83
+ if (!object.animating) {
84
+ object.set('shadow', {
85
+ blur: 0,
86
+ });
87
+ }
88
+ });
89
+ targetObjects.forEach((object) => {
90
+ object.set({
91
+ opacity: 1,
92
+ shadow: {
93
+ color: object.stroke,
94
+ },
95
+ });
96
+ this.highlightingNode(object, 300);
97
+ if (object.toPort) {
98
+ object.toPort.set({
99
+ opacity: 1,
100
+ });
101
+ }
102
+ if (object.fromPort) {
103
+ object.fromPort.forEach((port) => {
104
+ port.set({
105
+ opacity: 1,
106
+ });
107
+ });
108
+ }
109
+ });
110
+ this.handler.canvas.requestRenderAll();
111
+ };
112
+ /**
113
+ * Select node by id
114
+ * @param {string} id
115
+ */
116
+ this.selectById = (id) => {
117
+ this.handler.objects.forEach((object) => {
118
+ if (id === object.id) {
119
+ object.set('shadow', {
120
+ color: object.stroke,
121
+ blur: 50,
122
+ });
123
+ return;
124
+ }
125
+ else if (id === object.nodeId) {
126
+ return;
127
+ }
128
+ object.set('shadow', {
129
+ blur: 0,
130
+ });
131
+ });
132
+ this.handler.canvas.requestRenderAll();
133
+ };
134
+ /**
135
+ * Deselect nodes
136
+ */
137
+ this.deselect = () => {
138
+ this.handler.objects.forEach((object) => {
139
+ object.set({
140
+ opacity: 1,
141
+ });
142
+ if (object.superType === 'node') {
143
+ const node = object;
144
+ if (node.toPort) {
145
+ node.toPort.set({
146
+ opacity: 1,
147
+ });
148
+ }
149
+ node.fromPort.forEach(port => {
150
+ port.set({
151
+ opacity: 1,
152
+ });
153
+ });
154
+ }
155
+ if (!object.animating) {
156
+ const node = object;
157
+ node.set('shadow', {
158
+ blur: 0,
159
+ });
160
+ }
161
+ });
162
+ this.handler.canvas.renderAll();
163
+ };
164
+ /**
165
+ * Highlight path by ids
166
+ * @param {string[]} [path]
167
+ */
168
+ this.highlightingByPath = (path) => {
169
+ if (!path || !path.length) {
170
+ return;
171
+ }
172
+ const targetObjects = this.handler.objects.filter((obj) => path.some(id => id === obj.id));
173
+ const nonTargetObjects = this.handler.objects.filter((obj) => path.some(id => id !== obj.id));
174
+ const lastObject = targetObjects.filter((obj) => obj.id === path[path.length - 1])[0];
175
+ targetObjects.forEach((object) => {
176
+ if (lastObject) {
177
+ object.set('shadow', {
178
+ color: lastObject.stroke,
179
+ });
180
+ }
181
+ else {
182
+ object.set('shadow', {
183
+ color: object.stroke,
184
+ });
185
+ }
186
+ this.highlightingNode(object);
187
+ this.handler.canvas.requestRenderAll();
188
+ });
189
+ nonTargetObjects.forEach((object) => {
190
+ if (object.superType === 'link') {
191
+ const { fromNode, toNode } = object;
192
+ if (fromNode && toNode) {
193
+ const fromIndex = targetObjects.findIndex((obj) => obj.id === fromNode.id);
194
+ const toIndex = targetObjects.findIndex((obj) => obj.id === toNode.id);
195
+ if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {
196
+ if (lastObject) {
197
+ object.set('shadow', {
198
+ color: lastObject.stroke,
199
+ });
200
+ }
201
+ else {
202
+ object.set('shadow', {
203
+ color: object.stroke,
204
+ });
205
+ }
206
+ this.highlightingNode(object);
207
+ this.highlightingLink(object, lastObject);
208
+ return;
209
+ }
210
+ }
211
+ }
212
+ });
213
+ this.handler.canvas.requestRenderAll();
214
+ };
215
+ /**
216
+ * Highlight link
217
+ * @param {FabricObject} object
218
+ * @param {FabricObject} targetObject
219
+ * @param {number} [duration=500]
220
+ */
221
+ this.highlightingLink = (object, targetObject, duration = 500) => {
222
+ object.animation = {
223
+ duration,
224
+ type: 'flash',
225
+ stroke: targetObject ? targetObject.stroke : object.stroke,
226
+ loop: 1,
227
+ delay: 0,
228
+ };
229
+ this.handler.animationHandler.play(object.id, false);
230
+ };
231
+ /**
232
+ * Highlight node
233
+ *
234
+ * @param {*} object
235
+ * @param {number} [duration=500]
236
+ * @param {number} [minBlur=0]
237
+ * @param {number} [maxBlur=50]
238
+ */
239
+ this.highlightingNode = (object, duration = 500, minBlur = 0, maxBlur = 50) => {
240
+ const onComplete = () => {
241
+ if (object.shadow.blur === maxBlur) {
242
+ object.animating = true;
243
+ object.animate('shadow.blur', minBlur, {
244
+ easing: fabric_1.fabric.util.ease.easeInOutQuad,
245
+ onChange: (value) => {
246
+ object.shadow.blur = value;
247
+ this.handler.canvas.requestRenderAll();
248
+ },
249
+ onComplete: () => {
250
+ object.animating = false;
251
+ if (object.superType === 'link') {
252
+ object.set({
253
+ stroke: object.originStroke || object.stroke,
254
+ });
255
+ }
256
+ },
257
+ });
258
+ }
259
+ };
260
+ object.animating = true;
261
+ object.animate('shadow.blur', maxBlur, {
262
+ easing: fabric_1.fabric.util.ease.easeInOutQuad,
263
+ duration,
264
+ onChange: (value) => {
265
+ object.shadow.blur = value;
266
+ this.handler.canvas.requestRenderAll();
267
+ },
268
+ onComplete,
269
+ });
270
+ };
271
+ this.handler = handler;
272
+ }
273
+ }
274
+ exports.default = NodeHandler;
@@ -1,22 +1,22 @@
1
- import Handler from './Handler';
2
- import { NodeObject } from '../objects/Node';
3
- declare class PortHandler {
4
- handler?: Handler;
5
- constructor(handler: Handler);
6
- /**
7
- * Create port
8
- * @param {NodeObject} target
9
- */
10
- create: (target: NodeObject) => void;
11
- /**
12
- * Set coords port
13
- * @param {NodeObject} target
14
- */
15
- setCoords: (target: NodeObject) => void;
16
- /**
17
- * Recreate port
18
- * @param {NodeObject} target
19
- */
20
- recreate: (target: NodeObject) => void;
21
- }
22
- export default PortHandler;
1
+ import Handler from './Handler';
2
+ import { NodeObject } from '../objects/Node';
3
+ declare class PortHandler {
4
+ handler?: Handler;
5
+ constructor(handler: Handler);
6
+ /**
7
+ * Create port
8
+ * @param {NodeObject} target
9
+ */
10
+ create: (target: NodeObject) => void;
11
+ /**
12
+ * Set coords port
13
+ * @param {NodeObject} target
14
+ */
15
+ setCoords: (target: NodeObject) => void;
16
+ /**
17
+ * Recreate port
18
+ * @param {NodeObject} target
19
+ */
20
+ recreate: (target: NodeObject) => void;
21
+ }
22
+ export default PortHandler;