react-design-editor 0.0.61 → 0.0.62
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.
- package/README.md +7 -0
- package/dist/react-design-editor.js +176486 -168263
- package/dist/react-design-editor.min.js +1 -1
- package/dist/react-design-editor.min.js.LICENSE.txt +0 -9
- package/lib/Canvas.js +3 -3
- package/lib/CanvasObject.js +3 -0
- package/lib/constants/code.d.ts +1 -0
- package/lib/constants/code.js +2 -1
- package/lib/handlers/AbstractHandler.d.ts +6 -0
- package/lib/handlers/AbstractHandler.js +10 -0
- package/lib/handlers/DrawingHandler.js +5 -5
- package/lib/handlers/EventHandler.d.ts +1 -1
- package/lib/handlers/EventHandler.js +4 -7
- package/lib/handlers/GridHandler.d.ts +1 -1
- package/lib/handlers/GridHandler.js +44 -24
- package/lib/handlers/GuidelineHandler.d.ts +1 -1
- package/lib/handlers/Handler.d.ts +23 -2
- package/lib/handlers/Handler.js +56 -40
- package/lib/handlers/LayoutHandler.d.ts +15 -0
- package/lib/handlers/LayoutHandler.js +110 -0
- package/lib/handlers/LinkHandler.d.ts +3 -12
- package/lib/handlers/LinkHandler.js +19 -40
- package/lib/handlers/PortHandler.d.ts +1 -1
- package/lib/handlers/PortHandler.js +12 -30
- package/lib/handlers/ShortcutHandler.d.ts +1 -1
- package/lib/handlers/TransactionHandler.js +8 -15
- package/lib/handlers/ZoomHandler.d.ts +1 -1
- package/lib/handlers/index.d.ts +2 -22
- package/lib/handlers/index.js +5 -45
- package/lib/objects/LineLink.d.ts +15 -0
- package/lib/objects/LineLink.js +107 -0
- package/lib/objects/Link.d.ts +8 -1
- package/lib/objects/Link.js +152 -44
- package/lib/objects/Node.js +3 -3
- package/lib/objects/index.d.ts +4 -0
- package/lib/objects/index.js +3 -1
- package/package.json +22 -15
- package/lib/handlers/FiberHandler.d.ts +0 -6
- package/lib/handlers/FiberHandler.js +0 -23
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LinkObject } from '../objects
|
|
1
|
+
import { LinkObject } from '../objects';
|
|
2
2
|
import { PortObject } from '../objects/Port';
|
|
3
3
|
import Handler from './Handler';
|
|
4
4
|
export interface LinkOption {
|
|
@@ -53,20 +53,11 @@ declare class LinkHandler {
|
|
|
53
53
|
generate: (port: PortObject) => void;
|
|
54
54
|
/**
|
|
55
55
|
* Add link in Canvas
|
|
56
|
-
* @param {LinkOption}
|
|
56
|
+
* @param {LinkOption} option
|
|
57
57
|
* @param {boolean} [loaded=false]
|
|
58
58
|
* @returns
|
|
59
59
|
*/
|
|
60
|
-
create: (
|
|
61
|
-
/**
|
|
62
|
-
* Set coordinate of link
|
|
63
|
-
* @param {number} x1
|
|
64
|
-
* @param {number} y1
|
|
65
|
-
* @param {number} x2
|
|
66
|
-
* @param {number} y2
|
|
67
|
-
* @param {LinkObject} link
|
|
68
|
-
*/
|
|
69
|
-
setCoords: (x1: number, y1: number, x2: number, y2: number, link: LinkObject) => void;
|
|
60
|
+
create: (option: LinkOption, loaded?: boolean) => LinkObject;
|
|
70
61
|
/**
|
|
71
62
|
* When the link is deleted, linked FromNode delete
|
|
72
63
|
* @param {LinkObject} link
|
|
@@ -25,15 +25,13 @@ class LinkHandler {
|
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
27
|
this.port = port;
|
|
28
|
-
this.port.set({
|
|
29
|
-
fill: port.selectFill,
|
|
30
|
-
});
|
|
28
|
+
this.port.set({ fill: port.selectFill });
|
|
31
29
|
this.handler.interactionHandler.linking();
|
|
32
30
|
const { left, top, nodeId, id } = port;
|
|
33
31
|
const fromPort = { left, top, id };
|
|
34
32
|
const toPort = { left, top };
|
|
35
33
|
const fromNode = this.handler.objectMap[nodeId];
|
|
36
|
-
this.handler.activeLine = new objects_1.
|
|
34
|
+
this.handler.activeLine = new objects_1.Link(fromNode, fromPort, toPort, toPort, {
|
|
37
35
|
strokeWidth: 4,
|
|
38
36
|
fill: '#999999',
|
|
39
37
|
stroke: '#999999',
|
|
@@ -52,9 +50,7 @@ class LinkHandler {
|
|
|
52
50
|
*/
|
|
53
51
|
this.finish = (link) => {
|
|
54
52
|
if (!link) {
|
|
55
|
-
this.port.set({
|
|
56
|
-
fill: this.port.originFill,
|
|
57
|
-
});
|
|
53
|
+
this.port.set({ fill: this.port.originFill });
|
|
58
54
|
}
|
|
59
55
|
this.handler.interactionHandler.selection();
|
|
60
56
|
this.handler.canvas.remove(this.handler.activeLine);
|
|
@@ -76,15 +72,14 @@ class LinkHandler {
|
|
|
76
72
|
if (this.isSameNode(port)) {
|
|
77
73
|
return;
|
|
78
74
|
}
|
|
79
|
-
const link = {
|
|
80
|
-
type: '
|
|
75
|
+
const link = this.create({
|
|
76
|
+
type: 'link',
|
|
81
77
|
fromNodeId: this.handler.activeLine.fromNode.id,
|
|
82
78
|
fromPortId: this.handler.activeLine.fromPort.id,
|
|
83
79
|
toNodeId: port.nodeId,
|
|
84
80
|
toPortId: port.id,
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
this.finish(createdLink);
|
|
81
|
+
});
|
|
82
|
+
this.finish(link);
|
|
88
83
|
// TODO...
|
|
89
84
|
// Save transactions unconditionally
|
|
90
85
|
if (!this.handler.transactionHandler.active) {
|
|
@@ -93,47 +88,31 @@ class LinkHandler {
|
|
|
93
88
|
};
|
|
94
89
|
/**
|
|
95
90
|
* Add link in Canvas
|
|
96
|
-
* @param {LinkOption}
|
|
91
|
+
* @param {LinkOption} option
|
|
97
92
|
* @param {boolean} [loaded=false]
|
|
98
93
|
* @returns
|
|
99
94
|
*/
|
|
100
|
-
this.create = (
|
|
101
|
-
const fromNode = this.handler.objectMap[
|
|
102
|
-
const fromPort = fromNode.fromPort.filter(port => port.id ===
|
|
103
|
-
const toNode = this.handler.objectMap[
|
|
95
|
+
this.create = (option, loaded = false) => {
|
|
96
|
+
const fromNode = this.handler.objectMap[option.fromNodeId];
|
|
97
|
+
const fromPort = fromNode.fromPort.filter(port => port.id === option.fromPortId || !port.id)[0];
|
|
98
|
+
const toNode = this.handler.objectMap[option.toNodeId];
|
|
104
99
|
const { toPort } = toNode;
|
|
105
|
-
const
|
|
106
|
-
...
|
|
100
|
+
const link = this.handler.fabricObjects[option.type].create(fromNode, fromPort, toNode, toPort, {
|
|
101
|
+
...option,
|
|
107
102
|
});
|
|
108
|
-
this.handler.canvas.add(
|
|
103
|
+
this.handler.canvas.add(link);
|
|
109
104
|
this.handler.objects = this.handler.getObjects();
|
|
110
105
|
const { editable } = this.handler;
|
|
111
106
|
if (this.handler.onAdd && editable && !loaded) {
|
|
112
|
-
this.handler.onAdd(
|
|
107
|
+
this.handler.onAdd(link);
|
|
113
108
|
}
|
|
114
109
|
this.handler.canvas.renderAll();
|
|
115
|
-
|
|
110
|
+
link.setPort(fromNode, fromPort, toNode, toPort);
|
|
116
111
|
this.handler.portHandler.setCoords(fromNode);
|
|
117
112
|
this.handler.portHandler.setCoords(toNode);
|
|
118
113
|
this.handler.canvas.requestRenderAll();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Set coordinate of link
|
|
123
|
-
* @param {number} x1
|
|
124
|
-
* @param {number} y1
|
|
125
|
-
* @param {number} x2
|
|
126
|
-
* @param {number} y2
|
|
127
|
-
* @param {LinkObject} link
|
|
128
|
-
*/
|
|
129
|
-
this.setCoords = (x1, y1, x2, y2, link) => {
|
|
130
|
-
link.set({
|
|
131
|
-
x1,
|
|
132
|
-
y1,
|
|
133
|
-
x2,
|
|
134
|
-
y2,
|
|
135
|
-
});
|
|
136
|
-
link.setCoords();
|
|
114
|
+
this.handler.canvas.sendToBack(link);
|
|
115
|
+
return link;
|
|
137
116
|
};
|
|
138
117
|
/**
|
|
139
118
|
* When the link is deleted, linked FromNode delete
|
|
@@ -17,22 +17,16 @@ class PortHandler {
|
|
|
17
17
|
this.handler.activeLine &&
|
|
18
18
|
this.handler.activeLine.class === 'line') {
|
|
19
19
|
if (toPort.links.some(link => link.fromNode === this.handler.activeLine.fromNode)) {
|
|
20
|
-
toPort.set({
|
|
21
|
-
fill: 'red',
|
|
22
|
-
});
|
|
20
|
+
toPort.set({ fill: 'red' });
|
|
23
21
|
this.handler.canvas.renderAll();
|
|
24
22
|
return;
|
|
25
23
|
}
|
|
26
|
-
toPort.set({
|
|
27
|
-
fill: 'green',
|
|
28
|
-
});
|
|
24
|
+
toPort.set({ fill: 'green' });
|
|
29
25
|
this.handler.canvas.renderAll();
|
|
30
26
|
}
|
|
31
27
|
});
|
|
32
28
|
toPort.on('mouseout', () => {
|
|
33
|
-
toPort.set({
|
|
34
|
-
fill: toPort.originFill,
|
|
35
|
-
});
|
|
29
|
+
toPort.set({ fill: toPort.originFill });
|
|
36
30
|
this.handler.canvas.renderAll();
|
|
37
31
|
});
|
|
38
32
|
this.handler.canvas.add(toPort);
|
|
@@ -47,29 +41,21 @@ class PortHandler {
|
|
|
47
41
|
if (this.handler.interactionMode !== 'link') {
|
|
48
42
|
if (port.enabled) {
|
|
49
43
|
if (this.handler.activeLine) {
|
|
50
|
-
port.set({
|
|
51
|
-
fill: 'red',
|
|
52
|
-
});
|
|
44
|
+
port.set({ fill: 'red' });
|
|
53
45
|
this.handler.canvas.renderAll();
|
|
54
46
|
return;
|
|
55
47
|
}
|
|
56
|
-
port.set({
|
|
57
|
-
fill: 'green',
|
|
58
|
-
});
|
|
48
|
+
port.set({ fill: 'green' });
|
|
59
49
|
this.handler.canvas.renderAll();
|
|
60
50
|
return;
|
|
61
51
|
}
|
|
62
|
-
port.set({
|
|
63
|
-
fill: 'red',
|
|
64
|
-
});
|
|
52
|
+
port.set({ fill: 'red' });
|
|
65
53
|
this.handler.canvas.renderAll();
|
|
66
54
|
}
|
|
67
55
|
});
|
|
68
56
|
port.on('mouseout', () => {
|
|
69
57
|
if (this.handler.interactionMode !== 'link') {
|
|
70
|
-
port.set({
|
|
71
|
-
fill: port.enabled ? port.originFill : port.hoverFill,
|
|
72
|
-
});
|
|
58
|
+
port.set({ fill: port.enabled ? port.originFill : port.hoverFill });
|
|
73
59
|
}
|
|
74
60
|
this.handler.canvas.renderAll();
|
|
75
61
|
});
|
|
@@ -90,14 +76,12 @@ class PortHandler {
|
|
|
90
76
|
left: target.left + target.width / 2,
|
|
91
77
|
top: target.top,
|
|
92
78
|
};
|
|
93
|
-
target.toPort.set({
|
|
94
|
-
...toCoords,
|
|
95
|
-
});
|
|
79
|
+
target.toPort.set({ ...toCoords });
|
|
96
80
|
target.toPort.setCoords();
|
|
97
81
|
if (target.toPort.links.length) {
|
|
98
82
|
target.toPort.links.forEach(link => {
|
|
99
83
|
const fromPort = link.fromNode.fromPort.filter(port => port.id === link.fromPort.id)[0];
|
|
100
|
-
|
|
84
|
+
link.update({ left: fromPort.left, top: fromPort.top }, { left: toCoords.left, top: toCoords.top });
|
|
101
85
|
});
|
|
102
86
|
}
|
|
103
87
|
}
|
|
@@ -109,14 +93,12 @@ class PortHandler {
|
|
|
109
93
|
target.fromPort.forEach(port => {
|
|
110
94
|
const left = port.leftDiff ? fromCoords.left + port.leftDiff : fromCoords.left;
|
|
111
95
|
const top = port.topDiff ? fromCoords.top + port.topDiff : fromCoords.top;
|
|
112
|
-
port.set({
|
|
113
|
-
left,
|
|
114
|
-
top,
|
|
115
|
-
});
|
|
96
|
+
port.set({ left, top });
|
|
116
97
|
port.setCoords();
|
|
117
98
|
if (port.links.length) {
|
|
99
|
+
console.log(port.links);
|
|
118
100
|
port.links.forEach(link => {
|
|
119
|
-
|
|
101
|
+
link.update({ left, top }, { left: link.toNode.toPort.left, top: link.toNode.toPort.top });
|
|
120
102
|
});
|
|
121
103
|
}
|
|
122
104
|
});
|
|
@@ -44,9 +44,6 @@ class TransactionHandler {
|
|
|
44
44
|
if (obj.id === 'workarea') {
|
|
45
45
|
return false;
|
|
46
46
|
}
|
|
47
|
-
else if (obj.id === 'grid') {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
47
|
else if (obj.superType === 'port') {
|
|
51
48
|
return false;
|
|
52
49
|
}
|
|
@@ -94,6 +91,7 @@ class TransactionHandler {
|
|
|
94
91
|
*/
|
|
95
92
|
this.replay = (transaction) => {
|
|
96
93
|
const objects = JSON.parse(transaction.json);
|
|
94
|
+
console.log(objects);
|
|
97
95
|
this.state = objects;
|
|
98
96
|
this.active = true;
|
|
99
97
|
this.handler.canvas.renderOnAddRemove = false;
|
|
@@ -103,28 +101,23 @@ class TransactionHandler {
|
|
|
103
101
|
enlivenObjects.forEach(obj => {
|
|
104
102
|
const targetIndex = this.handler.canvas._objects.length;
|
|
105
103
|
if (obj.superType === 'node') {
|
|
106
|
-
|
|
107
|
-
this.handler.
|
|
104
|
+
const node = obj;
|
|
105
|
+
this.handler.canvas.insertAt(node, targetIndex, false);
|
|
106
|
+
this.handler.portHandler.create(node);
|
|
107
|
+
this.handler.portHandler.setCoords(node);
|
|
108
108
|
}
|
|
109
109
|
else if (obj.superType === 'link') {
|
|
110
|
-
|
|
111
|
-
this.handler.objects = this.handler.getObjects();
|
|
112
|
-
this.handler.linkHandler.create({
|
|
113
|
-
type: 'curvedLink',
|
|
114
|
-
fromNodeId: link.fromNode?.id,
|
|
115
|
-
fromPortId: link.fromPort?.id,
|
|
116
|
-
toNodeId: link.toNode?.id,
|
|
117
|
-
toPortId: link.toPort?.id,
|
|
118
|
-
});
|
|
110
|
+
this.handler.canvas.insertAt(obj, targetIndex, false);
|
|
119
111
|
}
|
|
120
112
|
else {
|
|
121
113
|
this.handler.canvas.insertAt(obj, targetIndex, false);
|
|
122
114
|
}
|
|
123
115
|
});
|
|
116
|
+
this.handler.objects = this.handler.getObjects();
|
|
117
|
+
1;
|
|
124
118
|
this.handler.canvas.renderOnAddRemove = true;
|
|
125
119
|
this.active = false;
|
|
126
120
|
this.handler.canvas.renderAll();
|
|
127
|
-
this.handler.objects = this.handler.getObjects();
|
|
128
121
|
if (this.handler.onTransaction) {
|
|
129
122
|
this.handler.onTransaction(transaction);
|
|
130
123
|
}
|
package/lib/handlers/index.d.ts
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as ImageHandler } from './ImageHandler';
|
|
3
|
-
export { default as ChartHandler } from './ChartHandler';
|
|
4
|
-
export { default as ElementHandler } from './ElementHandler';
|
|
5
|
-
export { default as CropHandler } from './CropHandler';
|
|
6
|
-
export { default as AnimationHandler } from './AnimationHandler';
|
|
7
|
-
export { default as ContextmenuHandler } from './ContextmenuHandler';
|
|
8
|
-
export { default as TooltipHandler } from './TooltipHandler';
|
|
9
|
-
export { default as TransactionHandler } from './TransactionHandler';
|
|
10
|
-
export { default as ZoomHandler } from './ZoomHandler';
|
|
11
|
-
export { default as WorkareaHandler } from './WorkareaHandler';
|
|
12
|
-
export { default as InteractionHandler } from './InteractionHandler';
|
|
13
|
-
export { default as GridHandler } from './GridHandler';
|
|
14
|
-
export { default as PortHandler } from './PortHandler';
|
|
15
|
-
export { default as LinkHandler } from './LinkHandler';
|
|
16
|
-
export { default as NodeHandler } from './NodeHandler';
|
|
17
|
-
export { default as AlignmentHandler } from './AlignmentHandler';
|
|
18
|
-
export { default as GuidelineHandler } from './GuidelineHandler';
|
|
19
|
-
export { default as EventHandler } from './EventHandler';
|
|
20
|
-
export { default as DrawingHandler } from './DrawingHandler';
|
|
21
|
-
export { default as ShortcutHandler } from './ShortcutHandler';
|
|
22
|
-
export { default as FiberHandler } from './FiberHandler';
|
|
1
|
+
export { default as AbstractHandler } from './AbstractHandler';
|
|
23
2
|
export { default as CustomHandler } from './CustomHandler';
|
|
3
|
+
export { default as Handler } from './Handler';
|
package/lib/handlers/index.js
CHANGED
|
@@ -3,50 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
8
|
-
Object.defineProperty(exports, "
|
|
9
|
-
var ImageHandler_1 = require("./ImageHandler");
|
|
10
|
-
Object.defineProperty(exports, "ImageHandler", { enumerable: true, get: function () { return __importDefault(ImageHandler_1).default; } });
|
|
11
|
-
var ChartHandler_1 = require("./ChartHandler");
|
|
12
|
-
Object.defineProperty(exports, "ChartHandler", { enumerable: true, get: function () { return __importDefault(ChartHandler_1).default; } });
|
|
13
|
-
var ElementHandler_1 = require("./ElementHandler");
|
|
14
|
-
Object.defineProperty(exports, "ElementHandler", { enumerable: true, get: function () { return __importDefault(ElementHandler_1).default; } });
|
|
15
|
-
var CropHandler_1 = require("./CropHandler");
|
|
16
|
-
Object.defineProperty(exports, "CropHandler", { enumerable: true, get: function () { return __importDefault(CropHandler_1).default; } });
|
|
17
|
-
var AnimationHandler_1 = require("./AnimationHandler");
|
|
18
|
-
Object.defineProperty(exports, "AnimationHandler", { enumerable: true, get: function () { return __importDefault(AnimationHandler_1).default; } });
|
|
19
|
-
var ContextmenuHandler_1 = require("./ContextmenuHandler");
|
|
20
|
-
Object.defineProperty(exports, "ContextmenuHandler", { enumerable: true, get: function () { return __importDefault(ContextmenuHandler_1).default; } });
|
|
21
|
-
var TooltipHandler_1 = require("./TooltipHandler");
|
|
22
|
-
Object.defineProperty(exports, "TooltipHandler", { enumerable: true, get: function () { return __importDefault(TooltipHandler_1).default; } });
|
|
23
|
-
var TransactionHandler_1 = require("./TransactionHandler");
|
|
24
|
-
Object.defineProperty(exports, "TransactionHandler", { enumerable: true, get: function () { return __importDefault(TransactionHandler_1).default; } });
|
|
25
|
-
var ZoomHandler_1 = require("./ZoomHandler");
|
|
26
|
-
Object.defineProperty(exports, "ZoomHandler", { enumerable: true, get: function () { return __importDefault(ZoomHandler_1).default; } });
|
|
27
|
-
var WorkareaHandler_1 = require("./WorkareaHandler");
|
|
28
|
-
Object.defineProperty(exports, "WorkareaHandler", { enumerable: true, get: function () { return __importDefault(WorkareaHandler_1).default; } });
|
|
29
|
-
var InteractionHandler_1 = require("./InteractionHandler");
|
|
30
|
-
Object.defineProperty(exports, "InteractionHandler", { enumerable: true, get: function () { return __importDefault(InteractionHandler_1).default; } });
|
|
31
|
-
var GridHandler_1 = require("./GridHandler");
|
|
32
|
-
Object.defineProperty(exports, "GridHandler", { enumerable: true, get: function () { return __importDefault(GridHandler_1).default; } });
|
|
33
|
-
var PortHandler_1 = require("./PortHandler");
|
|
34
|
-
Object.defineProperty(exports, "PortHandler", { enumerable: true, get: function () { return __importDefault(PortHandler_1).default; } });
|
|
35
|
-
var LinkHandler_1 = require("./LinkHandler");
|
|
36
|
-
Object.defineProperty(exports, "LinkHandler", { enumerable: true, get: function () { return __importDefault(LinkHandler_1).default; } });
|
|
37
|
-
var NodeHandler_1 = require("./NodeHandler");
|
|
38
|
-
Object.defineProperty(exports, "NodeHandler", { enumerable: true, get: function () { return __importDefault(NodeHandler_1).default; } });
|
|
39
|
-
var AlignmentHandler_1 = require("./AlignmentHandler");
|
|
40
|
-
Object.defineProperty(exports, "AlignmentHandler", { enumerable: true, get: function () { return __importDefault(AlignmentHandler_1).default; } });
|
|
41
|
-
var GuidelineHandler_1 = require("./GuidelineHandler");
|
|
42
|
-
Object.defineProperty(exports, "GuidelineHandler", { enumerable: true, get: function () { return __importDefault(GuidelineHandler_1).default; } });
|
|
43
|
-
var EventHandler_1 = require("./EventHandler");
|
|
44
|
-
Object.defineProperty(exports, "EventHandler", { enumerable: true, get: function () { return __importDefault(EventHandler_1).default; } });
|
|
45
|
-
var DrawingHandler_1 = require("./DrawingHandler");
|
|
46
|
-
Object.defineProperty(exports, "DrawingHandler", { enumerable: true, get: function () { return __importDefault(DrawingHandler_1).default; } });
|
|
47
|
-
var ShortcutHandler_1 = require("./ShortcutHandler");
|
|
48
|
-
Object.defineProperty(exports, "ShortcutHandler", { enumerable: true, get: function () { return __importDefault(ShortcutHandler_1).default; } });
|
|
49
|
-
var FiberHandler_1 = require("./FiberHandler");
|
|
50
|
-
Object.defineProperty(exports, "FiberHandler", { enumerable: true, get: function () { return __importDefault(FiberHandler_1).default; } });
|
|
6
|
+
exports.Handler = exports.CustomHandler = exports.AbstractHandler = void 0;
|
|
7
|
+
var AbstractHandler_1 = require("./AbstractHandler");
|
|
8
|
+
Object.defineProperty(exports, "AbstractHandler", { enumerable: true, get: function () { return __importDefault(AbstractHandler_1).default; } });
|
|
51
9
|
var CustomHandler_1 = require("./CustomHandler");
|
|
52
10
|
Object.defineProperty(exports, "CustomHandler", { enumerable: true, get: function () { return __importDefault(CustomHandler_1).default; } });
|
|
11
|
+
var Handler_1 = require("./Handler");
|
|
12
|
+
Object.defineProperty(exports, "Handler", { enumerable: true, get: function () { return __importDefault(Handler_1).default; } });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fabric } from 'fabric';
|
|
2
|
+
import { FabricObject } from '../utils';
|
|
3
|
+
import { NodeObject } from './Node';
|
|
4
|
+
import { PortObject } from './Port';
|
|
5
|
+
export interface LineLinkObject extends FabricObject<fabric.Line> {
|
|
6
|
+
fromNode?: NodeObject;
|
|
7
|
+
toNode?: NodeObject;
|
|
8
|
+
fromPort?: PortObject;
|
|
9
|
+
toPort?: PortObject;
|
|
10
|
+
fromPortIndex?: number;
|
|
11
|
+
setPort?: (fromNode: NodeObject, fromPort: PortObject, toNode: NodeObject, toPort: PortObject) => void;
|
|
12
|
+
setPortEnabled?: (node: NodeObject, port: PortObject, enabled: boolean) => void;
|
|
13
|
+
}
|
|
14
|
+
declare const LineLink: any;
|
|
15
|
+
export default LineLink;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fabric_1 = require("fabric");
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const Node_1 = require("./Node");
|
|
6
|
+
const LineLink = fabric_1.fabric.util.createClass(fabric_1.fabric.Line, {
|
|
7
|
+
type: 'lineLink',
|
|
8
|
+
superType: 'link',
|
|
9
|
+
initialize(fromNode, fromPort, toNode, toPort, options) {
|
|
10
|
+
options = options || {};
|
|
11
|
+
const coords = [fromPort.left, fromPort.top, toPort.left, toPort.top];
|
|
12
|
+
Object.assign(options, {
|
|
13
|
+
strokeWidth: 4,
|
|
14
|
+
id: options.id || (0, uuid_1.v4)(),
|
|
15
|
+
originX: 'center',
|
|
16
|
+
originY: 'center',
|
|
17
|
+
lockScalingX: true,
|
|
18
|
+
lockScalingY: true,
|
|
19
|
+
lockRotation: true,
|
|
20
|
+
hasRotatingPoint: false,
|
|
21
|
+
hasControls: false,
|
|
22
|
+
hasBorders: false,
|
|
23
|
+
perPixelTargetFind: true,
|
|
24
|
+
lockMovementX: true,
|
|
25
|
+
lockMovementY: true,
|
|
26
|
+
selectable: false,
|
|
27
|
+
fromNode,
|
|
28
|
+
fromPort,
|
|
29
|
+
toNode,
|
|
30
|
+
toPort,
|
|
31
|
+
hoverCursor: 'pointer',
|
|
32
|
+
});
|
|
33
|
+
this.callSuper('initialize', coords, options);
|
|
34
|
+
},
|
|
35
|
+
setPort(fromNode, fromPort, _toNode, toPort) {
|
|
36
|
+
if (fromNode.type === 'BroadcastNode') {
|
|
37
|
+
fromPort = fromNode.fromPort[0];
|
|
38
|
+
}
|
|
39
|
+
fromPort.links.push(this);
|
|
40
|
+
toPort.links.push(this);
|
|
41
|
+
this.setPortEnabled(fromNode, fromPort, false);
|
|
42
|
+
},
|
|
43
|
+
setPortEnabled(node, port, enabled) {
|
|
44
|
+
if (node.descriptor.outPortType !== Node_1.OUT_PORT_TYPE.BROADCAST) {
|
|
45
|
+
port.set({
|
|
46
|
+
enabled,
|
|
47
|
+
fill: enabled ? port.originFill : port.selectFill,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (node.toPort.id === port.id) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
port.links.forEach((link, index) => {
|
|
55
|
+
link.set({
|
|
56
|
+
fromPort: port,
|
|
57
|
+
fromPortIndex: index,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
node.set({
|
|
61
|
+
configuration: {
|
|
62
|
+
outputCount: port.links.length,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
toObject() {
|
|
68
|
+
return fabric_1.fabric.util.object.extend(this.callSuper('toObject'), {
|
|
69
|
+
id: this.get('id'),
|
|
70
|
+
name: this.get('name'),
|
|
71
|
+
superType: this.get('superType'),
|
|
72
|
+
configuration: this.get('configuration'),
|
|
73
|
+
fromNode: this.get('fromNode'),
|
|
74
|
+
fromPort: this.get('fromPort'),
|
|
75
|
+
toNode: this.get('toNode'),
|
|
76
|
+
toPort: this.get('toPort'),
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
_render(ctx) {
|
|
80
|
+
this.callSuper('_render', ctx);
|
|
81
|
+
ctx.save();
|
|
82
|
+
const xDiff = this.x2 - this.x1;
|
|
83
|
+
const yDiff = this.y2 - this.y1;
|
|
84
|
+
const angle = Math.atan2(yDiff, xDiff);
|
|
85
|
+
ctx.translate((this.x2 - this.x1) / 2, (this.y2 - this.y1) / 2);
|
|
86
|
+
ctx.rotate(angle);
|
|
87
|
+
ctx.beginPath();
|
|
88
|
+
if (this.arrow) {
|
|
89
|
+
// Move 5px in front of line to start the arrow so it does not have the square line end showing in front (0,0)
|
|
90
|
+
ctx.moveTo(5, 0);
|
|
91
|
+
ctx.lineTo(-5, 5);
|
|
92
|
+
ctx.lineTo(-5, -5);
|
|
93
|
+
}
|
|
94
|
+
ctx.closePath();
|
|
95
|
+
ctx.lineWidth = this.strokeWidth;
|
|
96
|
+
ctx.fillStyle = this.stroke;
|
|
97
|
+
ctx.fill();
|
|
98
|
+
ctx.restore();
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
LineLink.fromObject = (options, callback) => {
|
|
102
|
+
const { fromNode, fromPort, toNode, toPort } = options;
|
|
103
|
+
return callback(new LineLink(fromNode, fromPort, toNode, toPort, options));
|
|
104
|
+
};
|
|
105
|
+
// @ts-ignore
|
|
106
|
+
window.fabric.LineLink = LineLink;
|
|
107
|
+
exports.default = LineLink;
|
package/lib/objects/Link.d.ts
CHANGED
|
@@ -2,7 +2,13 @@ import { fabric } from 'fabric';
|
|
|
2
2
|
import { FabricObject } from '../utils';
|
|
3
3
|
import { NodeObject } from './Node';
|
|
4
4
|
import { PortObject } from './Port';
|
|
5
|
-
export interface
|
|
5
|
+
export interface LinkedNodePropeties {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface LinkObject extends FabricObject<fabric.Path> {
|
|
6
12
|
fromNode?: NodeObject;
|
|
7
13
|
toNode?: NodeObject;
|
|
8
14
|
fromPort?: PortObject;
|
|
@@ -10,6 +16,7 @@ export interface LinkObject extends FabricObject<fabric.Line> {
|
|
|
10
16
|
fromPortIndex?: number;
|
|
11
17
|
setPort?: (fromNode: NodeObject, fromPort: PortObject, toNode: NodeObject, toPort: PortObject) => void;
|
|
12
18
|
setPortEnabled?: (node: NodeObject, port: PortObject, enabled: boolean) => void;
|
|
19
|
+
update?: (fromPort: Partial<PortObject>, toPort: Partial<PortObject>) => void;
|
|
13
20
|
}
|
|
14
21
|
declare const Link: any;
|
|
15
22
|
export default Link;
|