@lincle/react-web-interactive 0.4.0-next.1 → 0.4.0-next.11
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/LICENSE.md +165 -0
- package/dist/base.d.ts +1 -1
- package/dist/base.js +1 -2
- package/dist/components/Edge/Path/index.d.ts +1 -0
- package/dist/components/{Path → Edge/Path}/index.js +1 -1
- package/dist/components/Edge/index.d.ts +2 -1
- package/dist/components/Edge/index.js +7 -2
- package/dist/components/Edges/Connections/index.d.ts +4 -0
- package/dist/components/Edges/Connections/index.js +37 -0
- package/dist/components/Edges/index.d.ts +4 -1
- package/dist/components/Edges/index.js +27 -3
- package/dist/components/{Grid → Graph/Grid}/index.d.ts +1 -1
- package/dist/components/Graph/Grid/index.js +57 -0
- package/dist/components/Graph/index.d.ts +2 -1
- package/dist/components/Graph/index.js +11 -5
- package/dist/components/Interaction/Controls/index.d.ts +4 -0
- package/dist/components/Interaction/Controls/index.js +99 -0
- package/dist/components/Interaction/index.d.ts +1 -2
- package/dist/components/Interaction/index.js +22 -125
- package/dist/components/Node/MoveNode/index.js +22 -3
- package/dist/components/Node/PullNode/index.js +60 -42
- package/dist/components/Node/index.d.ts +3 -1
- package/dist/components/Node/index.js +33 -19
- package/dist/components/Nodes/Interaction/index.d.ts +3 -0
- package/dist/components/Nodes/Interaction/index.js +65 -0
- package/dist/components/Nodes/index.d.ts +4 -1
- package/dist/components/Nodes/index.js +24 -3
- package/dist/components/index.d.ts +5 -9
- package/dist/components/index.js +18 -21
- package/dist/shared.d.ts +8 -12
- package/dist/shared.js +31 -15
- package/dist/styles.g.css +9 -106
- package/package.json +24 -25
- package/dist/components/GraphContexts/index.d.ts +0 -4
- package/dist/components/GraphContexts/index.js +0 -167
- package/dist/components/Grid/index.js +0 -13
- package/dist/components/Path/index.d.ts +0 -1
- package/dist/components/Pull/index.d.ts +0 -4
- package/dist/components/Pull/index.js +0 -153
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
7
|
const shared_1 = require("../../shared");
|
|
8
|
+
const Controls_1 = __importDefault(require("./Controls"));
|
|
5
9
|
const react_1 = require("react");
|
|
6
10
|
const react_map_interaction_1 = require("react-map-interaction");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
11
|
+
const controls = () => {
|
|
12
|
+
return (0, jsx_runtime_1.jsx)(Controls_1.default, {});
|
|
13
|
+
};
|
|
14
|
+
const Interaction = () => {
|
|
15
|
+
const scale = (0, shared_1.useScale)();
|
|
16
|
+
const onScale = (0, shared_1.useOnScale)();
|
|
17
|
+
const translate = (0, shared_1.useTranslate)();
|
|
18
|
+
const onTranslate = (0, shared_1.useOnTranslate)();
|
|
19
|
+
const givenMode = (0, shared_1.useModeGiven)();
|
|
20
|
+
const onMode = (0, shared_1.useOnMode)();
|
|
21
|
+
const maxScale = (0, shared_1.useMaxScale)();
|
|
22
|
+
const minScale = (0, shared_1.useMinScale)();
|
|
23
|
+
const pan = (0, shared_1.usePan)();
|
|
24
|
+
const zoom = (0, shared_1.useZoom)();
|
|
17
25
|
const keypress = (0, react_1.useRef)(false);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
privateMode.current !== mode) {
|
|
22
|
-
privateMode.current = mode;
|
|
23
|
-
onMode(mode);
|
|
26
|
+
const handleMode = (0, react_1.useCallback)((changedMode) => {
|
|
27
|
+
if (onMode) {
|
|
28
|
+
onMode(changedMode);
|
|
24
29
|
}
|
|
25
30
|
}, [
|
|
26
31
|
onMode
|
|
@@ -52,12 +57,6 @@ const Interaction = ({ children, onMouseDown, onMouseUp, onTouchEnd, onTouchStar
|
|
|
52
57
|
window.addEventListener('keyup', onKeyUp);
|
|
53
58
|
return () => {
|
|
54
59
|
keypress.current = false;
|
|
55
|
-
if (clickTimeout.current) {
|
|
56
|
-
clearTimeout(clickTimeout.current);
|
|
57
|
-
}
|
|
58
|
-
if (pressTimeout.current) {
|
|
59
|
-
clearTimeout(pressTimeout.current);
|
|
60
|
-
}
|
|
61
60
|
window.removeEventListener('keydown', onKeyDown);
|
|
62
61
|
window.removeEventListener('keyup', onKeyUp);
|
|
63
62
|
};
|
|
@@ -72,14 +71,6 @@ const Interaction = ({ children, onMouseDown, onMouseUp, onTouchEnd, onTouchStar
|
|
|
72
71
|
};
|
|
73
72
|
}, []);
|
|
74
73
|
const handleChange = (0, react_1.useCallback)(({ scale: z, translation: { x, y } }) => {
|
|
75
|
-
if (pressTimeout.current) {
|
|
76
|
-
clearTimeout(pressTimeout.current);
|
|
77
|
-
pressTimeout.current = undefined;
|
|
78
|
-
}
|
|
79
|
-
if (clickTimeout.current) {
|
|
80
|
-
clearTimeout(clickTimeout.current);
|
|
81
|
-
clickTimeout.current = undefined;
|
|
82
|
-
}
|
|
83
74
|
if (onTranslate) {
|
|
84
75
|
onTranslate({
|
|
85
76
|
x,
|
|
@@ -93,89 +84,6 @@ const Interaction = ({ children, onMouseDown, onMouseUp, onTouchEnd, onTouchStar
|
|
|
93
84
|
onScale,
|
|
94
85
|
onTranslate
|
|
95
86
|
]);
|
|
96
|
-
const handlePressStart = (0, react_1.useCallback)(() => {
|
|
97
|
-
if (!givenMode &&
|
|
98
|
-
onNodeSelect &&
|
|
99
|
-
!clickTimeout.current) {
|
|
100
|
-
pressTimeout.current = setTimeout(() => {
|
|
101
|
-
pressTimeout.current = undefined;
|
|
102
|
-
handleMode('select');
|
|
103
|
-
}, PRESS_TIME);
|
|
104
|
-
}
|
|
105
|
-
}, [
|
|
106
|
-
givenMode,
|
|
107
|
-
handleMode,
|
|
108
|
-
onNodeSelect
|
|
109
|
-
]);
|
|
110
|
-
const handleTapStart = (0, react_1.useCallback)(() => {
|
|
111
|
-
if (!givenMode) {
|
|
112
|
-
if (clickTimeout.current) {
|
|
113
|
-
clearTimeout(clickTimeout.current);
|
|
114
|
-
clickTimeout.current = setTimeout(() => {
|
|
115
|
-
clickTimeout.current = undefined;
|
|
116
|
-
handleMode('pull');
|
|
117
|
-
}, PRESS_TIME);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
clickTimeout.current = setTimeout(() => {
|
|
121
|
-
clickTimeout.current = undefined;
|
|
122
|
-
}, CLICK_TIME);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}, [
|
|
126
|
-
givenMode,
|
|
127
|
-
handleMode
|
|
128
|
-
]);
|
|
129
|
-
const handleTapEnd = (0, react_1.useCallback)(() => {
|
|
130
|
-
if (!givenMode) {
|
|
131
|
-
if (pressTimeout.current) {
|
|
132
|
-
clearTimeout(pressTimeout.current);
|
|
133
|
-
pressTimeout.current = undefined;
|
|
134
|
-
}
|
|
135
|
-
handleMode('move');
|
|
136
|
-
}
|
|
137
|
-
}, [
|
|
138
|
-
givenMode,
|
|
139
|
-
handleMode
|
|
140
|
-
]);
|
|
141
|
-
const handleMouseDown = (0, react_1.useCallback)((event) => {
|
|
142
|
-
if (onMouseDown) {
|
|
143
|
-
onMouseDown(event);
|
|
144
|
-
}
|
|
145
|
-
}, [
|
|
146
|
-
onMouseDown
|
|
147
|
-
]);
|
|
148
|
-
const handleMouseUp = (0, react_1.useCallback)((event) => {
|
|
149
|
-
if (onMouseUp) {
|
|
150
|
-
onMouseUp(event);
|
|
151
|
-
}
|
|
152
|
-
}, [
|
|
153
|
-
onMouseUp
|
|
154
|
-
]);
|
|
155
|
-
const handleTouchStart = (0, react_1.useCallback)((event) => {
|
|
156
|
-
if (keypress.current === false) {
|
|
157
|
-
handlePressStart();
|
|
158
|
-
handleTapStart();
|
|
159
|
-
}
|
|
160
|
-
if (onTouchStart) {
|
|
161
|
-
onTouchStart(event);
|
|
162
|
-
}
|
|
163
|
-
}, [
|
|
164
|
-
handlePressStart,
|
|
165
|
-
handleTapStart,
|
|
166
|
-
onTouchStart
|
|
167
|
-
]);
|
|
168
|
-
const handleTouchEnd = (0, react_1.useCallback)((event) => {
|
|
169
|
-
if (keypress.current === false) {
|
|
170
|
-
handleTapEnd();
|
|
171
|
-
}
|
|
172
|
-
if (onTouchEnd) {
|
|
173
|
-
onTouchEnd(event);
|
|
174
|
-
}
|
|
175
|
-
}, [
|
|
176
|
-
handleTapEnd,
|
|
177
|
-
onTouchEnd
|
|
178
|
-
]);
|
|
179
87
|
const transform = (0, react_1.useMemo)(() => {
|
|
180
88
|
return {
|
|
181
89
|
scale,
|
|
@@ -185,18 +93,7 @@ const Interaction = ({ children, onMouseDown, onMouseUp, onTouchEnd, onTouchStar
|
|
|
185
93
|
scale,
|
|
186
94
|
translate
|
|
187
95
|
]);
|
|
188
|
-
|
|
189
|
-
const { x, y } = translate;
|
|
190
|
-
return {
|
|
191
|
-
transform: `translateX(${x}px) translateY(${y}px) scale(${scale}) translateZ(0)`
|
|
192
|
-
};
|
|
193
|
-
}, [
|
|
194
|
-
scale,
|
|
195
|
-
translate
|
|
196
|
-
]);
|
|
197
|
-
return ((0, jsx_runtime_1.jsx)(react_map_interaction_1.MapInteraction, { defaultScale: scale, defaultTranslation: defaultTranslation, disablePan: disablePan, disableZoom: disableScale, maxScale: maxScale, minScale: minScale, onChange: handleChange, value: transform, children: () => {
|
|
198
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: 'lincle-interactive-graph', onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onTouchEnd: handleTouchEnd, onTouchStart: handleTouchStart, role: 'none', children: (0, jsx_runtime_1.jsx)("div", { className: 'lincle-interactive-transform', style: style, children: children }) }));
|
|
199
|
-
} }));
|
|
96
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: 'lincle-interactive-container', children: (0, jsx_runtime_1.jsx)(react_map_interaction_1.MapInteraction, { defaultScale: scale, defaultTranslation: defaultTranslation, disablePan: !pan, disableZoom: !zoom, maxScale: maxScale, minScale: minScale, onChange: handleChange, value: transform, children: controls }) }));
|
|
200
97
|
};
|
|
201
98
|
Interaction.displayName = 'LincleInteractiveInteraction';
|
|
202
99
|
exports.default = Interaction;
|
|
@@ -10,9 +10,28 @@ const emptySnap = [
|
|
|
10
10
|
1,
|
|
11
11
|
1
|
|
12
12
|
];
|
|
13
|
-
const MoveNode = ({ children, className, disabled, height, id, mode, onDrag, onSelect, onStart, onStop, shape, snap, style, width, x, y }) => {
|
|
14
|
-
const
|
|
15
|
-
const
|
|
13
|
+
const MoveNode = ({ children, className, disabled, height, id, mode, onDrag, onSelect, onStart, onStop, shape, snap: givenSnap, style, width, x, y }) => {
|
|
14
|
+
const scale = (0, shared_1.useScale)();
|
|
15
|
+
const snap = (0, shared_1.useSnap)();
|
|
16
|
+
const [snapX, snapY] = (0, react_1.useMemo)(() => {
|
|
17
|
+
if (givenSnap === undefined) {
|
|
18
|
+
if (Array.isArray(snap)) {
|
|
19
|
+
return snap;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return emptySnap;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (Array.isArray(givenSnap)) {
|
|
26
|
+
return givenSnap;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return emptySnap;
|
|
30
|
+
}
|
|
31
|
+
}, [
|
|
32
|
+
givenSnap,
|
|
33
|
+
snap
|
|
34
|
+
]);
|
|
16
35
|
const [position, setPosition] = (0, react_1.useState)({
|
|
17
36
|
x,
|
|
18
37
|
y
|
|
@@ -1,40 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
4
|
const shared_1 = require("../../../shared");
|
|
8
|
-
const Pull_1 = __importDefault(require("../../Pull"));
|
|
9
5
|
const react_1 = require("react");
|
|
10
6
|
const react_draggable_1 = require("react-draggable");
|
|
11
|
-
const PullNode = ({ className, disabled, height, line, onDrag, onEdgeDrop: givenOnEdgeDrop, onStart, onStop, shape, sourceId, style, width, x, y }) => {
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const onEdgeDrop = givenOnEdgeDrop !== null && givenOnEdgeDrop !== void 0 ? givenOnEdgeDrop :
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
pos.current = position;
|
|
7
|
+
const PullNode = ({ className, disabled, height = 0, line = 'direct', onDrag, onEdgeDrop: givenOnEdgeDrop, onStart, onStop, shape = 'oval', sourceId, style, width = 0, x = 0, y = 0 }) => {
|
|
8
|
+
const diagramId = (0, shared_1.useDiagramId)();
|
|
9
|
+
const nodePositions = (0, shared_1.useNodePositions)();
|
|
10
|
+
const setConnection = (0, shared_1.useSetConnection)(sourceId);
|
|
11
|
+
const onNodeEdgeDrop = (0, shared_1.useOnNodeEdgeDrop)();
|
|
12
|
+
const onEdgeDrop = givenOnEdgeDrop !== null && givenOnEdgeDrop !== void 0 ? givenOnEdgeDrop : onNodeEdgeDrop;
|
|
13
|
+
const scale = (0, shared_1.useScale)();
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
return () => {
|
|
16
|
+
setConnection();
|
|
17
|
+
};
|
|
18
|
+
}, []);
|
|
24
19
|
const handleStart = (0, react_1.useCallback)((event) => {
|
|
25
20
|
event.stopPropagation();
|
|
26
|
-
if (
|
|
21
|
+
if (!disabled &&
|
|
22
|
+
onStart) {
|
|
27
23
|
onStart(event);
|
|
28
24
|
}
|
|
29
25
|
}, [
|
|
26
|
+
disabled,
|
|
30
27
|
onStart
|
|
31
28
|
]);
|
|
32
29
|
const handleDrag = (0, react_1.useCallback)((event, data) => {
|
|
30
|
+
var _a, _b;
|
|
33
31
|
event.stopPropagation();
|
|
34
32
|
if (!disabled) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
setConnection({
|
|
34
|
+
line,
|
|
35
|
+
source: {
|
|
36
|
+
height,
|
|
37
|
+
id: sourceId,
|
|
38
|
+
shape,
|
|
39
|
+
width,
|
|
40
|
+
x,
|
|
41
|
+
y
|
|
42
|
+
},
|
|
43
|
+
target: {
|
|
44
|
+
height: 0,
|
|
45
|
+
id: sourceId,
|
|
46
|
+
shape,
|
|
47
|
+
width: 0,
|
|
48
|
+
x: (_a = data.x) !== null && _a !== void 0 ? _a : 0,
|
|
49
|
+
y: (_b = data.y) !== null && _b !== void 0 ? _b : 0
|
|
50
|
+
}
|
|
38
51
|
});
|
|
39
52
|
if (onDrag) {
|
|
40
53
|
onDrag(event, data);
|
|
@@ -42,48 +55,53 @@ const PullNode = ({ className, disabled, height, line, onDrag, onEdgeDrop: given
|
|
|
42
55
|
}
|
|
43
56
|
}, [
|
|
44
57
|
disabled,
|
|
45
|
-
|
|
58
|
+
height,
|
|
59
|
+
line,
|
|
60
|
+
onDrag,
|
|
61
|
+
setConnection,
|
|
62
|
+
shape,
|
|
63
|
+
sourceId,
|
|
64
|
+
width,
|
|
65
|
+
x,
|
|
66
|
+
y
|
|
46
67
|
]);
|
|
47
68
|
const handleStop = (0, react_1.useCallback)((event, data) => {
|
|
48
69
|
event.stopPropagation();
|
|
49
|
-
|
|
50
|
-
setPosition({
|
|
51
|
-
x: data.x,
|
|
52
|
-
y: data.y
|
|
53
|
-
});
|
|
54
|
-
}
|
|
70
|
+
setConnection();
|
|
55
71
|
if (onStop) {
|
|
56
72
|
onStop(event, data);
|
|
57
73
|
}
|
|
58
74
|
if (onEdgeDrop &&
|
|
59
|
-
nodePositions
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
nodePositions.match(position.x, position.y).then((match) => {
|
|
63
|
-
onEdgeDrop(sourceId, Boolean(match) || match === 0 ?
|
|
75
|
+
nodePositions) {
|
|
76
|
+
nodePositions.match(data.x, data.y).then((match) => {
|
|
77
|
+
onEdgeDrop(event, sourceId, Boolean(match) || match === 0 ?
|
|
64
78
|
match :
|
|
65
79
|
undefined);
|
|
66
80
|
}).catch(() => {
|
|
67
81
|
});
|
|
68
82
|
}
|
|
69
|
-
setPosition({
|
|
70
|
-
x,
|
|
71
|
-
y
|
|
72
|
-
});
|
|
73
83
|
}, [
|
|
74
|
-
disabled,
|
|
75
84
|
nodePositions,
|
|
76
85
|
onEdgeDrop,
|
|
77
86
|
onStop,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
setConnection,
|
|
88
|
+
sourceId
|
|
89
|
+
]);
|
|
90
|
+
const viewStyle = (0, react_1.useMemo)(() => {
|
|
91
|
+
return Object.assign({ borderRadius: shape === 'oval' ?
|
|
92
|
+
50 :
|
|
93
|
+
undefined, height, left: x, position: 'absolute', top: y, width }, style);
|
|
94
|
+
}, [
|
|
95
|
+
height,
|
|
96
|
+
shape,
|
|
97
|
+
style,
|
|
98
|
+
width,
|
|
81
99
|
x,
|
|
82
100
|
y
|
|
83
101
|
]);
|
|
84
102
|
const nodeRef = (0, react_1.useRef)(null);
|
|
85
103
|
return diagramId ?
|
|
86
|
-
((0, jsx_runtime_1.jsx)(react_draggable_1.DraggableCore, { disabled: disabled, nodeRef: nodeRef, onDrag: handleDrag, onStart: handleStart, onStop: handleStop, scale: scale, children: (0, jsx_runtime_1.jsx)(
|
|
104
|
+
((0, jsx_runtime_1.jsx)(react_draggable_1.DraggableCore, { disabled: disabled, nodeRef: nodeRef, onDrag: handleDrag, onStart: handleStart, onStop: handleStop, scale: scale, children: (0, jsx_runtime_1.jsx)("div", { className: className, ref: nodeRef, style: viewStyle }) })) :
|
|
87
105
|
null;
|
|
88
106
|
};
|
|
89
107
|
PullNode.displayName = 'LincleInteractivePullNode';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type NodeProps } from '../../shared';
|
|
2
2
|
import { type FunctionComponent } from 'react';
|
|
3
3
|
declare const Node: FunctionComponent<NodeProps>;
|
|
4
|
-
export
|
|
4
|
+
export { Node };
|
|
5
|
+
export { default as MoveNode } from './MoveNode';
|
|
6
|
+
export { default as PullNode } from './PullNode';
|
|
@@ -3,6 +3,7 @@ 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.PullNode = exports.MoveNode = exports.Node = void 0;
|
|
6
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
8
|
const shared_1 = require("../../shared");
|
|
8
9
|
const MoveNode_1 = __importDefault(require("./MoveNode"));
|
|
@@ -12,20 +13,29 @@ const emptySnap = [
|
|
|
12
13
|
1,
|
|
13
14
|
1
|
|
14
15
|
];
|
|
15
|
-
const Node = ({ children,
|
|
16
|
-
var _a, _b
|
|
17
|
-
const defaultHeight = (
|
|
18
|
-
const defaultLine = (
|
|
19
|
-
const defaultShape = (
|
|
20
|
-
const defaultWidth = (
|
|
21
|
-
const snap = (0,
|
|
22
|
-
const [snapX, snapY] = snap
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
16
|
+
const Node = ({ children, height: givenHeight, id, line: givenLine, mode: givenMode, move: givenMove, onDrag, onEdgeDrop: givenOnEdgeDrop, onSelect: givenOnSelect, onStart, onStop, pull: givenPull, shape: givenShape, style, width: givenWidth, x, y }) => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const defaultHeight = (0, shared_1.useDefaultNodeHeight)();
|
|
19
|
+
const defaultLine = (0, shared_1.useDefaultLine)();
|
|
20
|
+
const defaultShape = (0, shared_1.useDefaultShape)();
|
|
21
|
+
const defaultWidth = (0, shared_1.useDefaultNodeWidth)();
|
|
22
|
+
const snap = (0, shared_1.useSnap)();
|
|
23
|
+
const [snapX, snapY] = snap && Array.isArray(snap) ?
|
|
24
|
+
snap :
|
|
25
|
+
emptySnap;
|
|
26
|
+
const graphMode = (0, shared_1.useMode)();
|
|
27
|
+
const graphGivenMode = (0, shared_1.useModeGiven)();
|
|
28
|
+
const mode = (_a = givenMode !== null && givenMode !== void 0 ? givenMode : graphGivenMode) !== null && _a !== void 0 ? _a : graphMode;
|
|
29
|
+
const graphMove = (0, shared_1.useMove)();
|
|
30
|
+
const graphPull = (0, shared_1.usePull)();
|
|
31
|
+
const onNodeDrag = (0, shared_1.useOnNodeDrag)();
|
|
32
|
+
const onNodeEdgeDrop = (0, shared_1.useOnNodeEdgeDrop)();
|
|
33
|
+
const onNodeSelect = (0, shared_1.useOnNodeSelect)();
|
|
34
|
+
const onNodeStart = (0, shared_1.useOnNodeStart)();
|
|
35
|
+
const onNodeStop = (0, shared_1.useOnNodeStop)();
|
|
36
|
+
const move = givenMove !== null && givenMove !== void 0 ? givenMove : graphMove;
|
|
37
|
+
const pull = givenPull !== null && givenPull !== void 0 ? givenPull : graphPull;
|
|
38
|
+
const onEdgeDrop = givenOnEdgeDrop !== null && givenOnEdgeDrop !== void 0 ? givenOnEdgeDrop : onNodeEdgeDrop;
|
|
29
39
|
const onSelect = givenOnSelect !== null && givenOnSelect !== void 0 ? givenOnSelect : onNodeSelect;
|
|
30
40
|
const pullPosition = (0, react_1.useRef)({
|
|
31
41
|
x,
|
|
@@ -104,13 +114,13 @@ const Node = ({ children, className = '', disableMove: givenDisableMove, disable
|
|
|
104
114
|
handleOnStop
|
|
105
115
|
]);
|
|
106
116
|
const pullNode = (0, react_1.useMemo)(() => {
|
|
107
|
-
return mode === 'pull' &&
|
|
108
|
-
((0, jsx_runtime_1.jsx)(PullNode_1.default, {
|
|
117
|
+
return mode === 'pull' && pull ?
|
|
118
|
+
((0, jsx_runtime_1.jsx)(PullNode_1.default, { height: height, line: line, mode: mode, onEdgeDrop: onEdgeDrop, shape: shape, sourceId: id, style: style, width: width, x: pullPosition.current.x, y: pullPosition.current.y })) :
|
|
109
119
|
null;
|
|
110
120
|
}, [
|
|
111
121
|
mode
|
|
112
122
|
]);
|
|
113
|
-
const
|
|
123
|
+
const snapper = (0, react_1.useMemo)(() => {
|
|
114
124
|
return {
|
|
115
125
|
x: Math.ceil((x !== null && x !== void 0 ? x : 0) / snapX) * snapX,
|
|
116
126
|
y: Math.ceil((y !== null && y !== void 0 ? y : 0) / snapY) * snapY
|
|
@@ -121,7 +131,11 @@ const Node = ({ children, className = '', disableMove: givenDisableMove, disable
|
|
|
121
131
|
x,
|
|
122
132
|
y
|
|
123
133
|
]);
|
|
124
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MoveNode_1.default, {
|
|
134
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MoveNode_1.default, { disabled: (_b = mode === 'pull') !== null && _b !== void 0 ? _b : !move, height: height, id: id, mode: mode, onDrag: handleMoveDrag, onSelect: onSelect, onStart: handleMoveStart, onStop: handleMoveStop, shape: shape, snap: snap, style: style, width: width, x: snapper.x, y: snapper.y, children: children }), pullNode] }));
|
|
125
135
|
};
|
|
136
|
+
exports.Node = Node;
|
|
126
137
|
Node.displayName = 'LincleInteractiveNode';
|
|
127
|
-
|
|
138
|
+
var MoveNode_2 = require("./MoveNode");
|
|
139
|
+
Object.defineProperty(exports, "MoveNode", { enumerable: true, get: function () { return __importDefault(MoveNode_2).default; } });
|
|
140
|
+
var PullNode_2 = require("./PullNode");
|
|
141
|
+
Object.defineProperty(exports, "PullNode", { enumerable: true, get: function () { return __importDefault(PullNode_2).default; } });
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const shared_1 = require("../../../shared");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const Interaction = ({ children }) => {
|
|
7
|
+
const scale = (0, shared_1.useScale)();
|
|
8
|
+
const translate = (0, shared_1.useTranslate)();
|
|
9
|
+
const givenMode = (0, shared_1.useModeGiven)();
|
|
10
|
+
const onMode = (0, shared_1.useOnMode)();
|
|
11
|
+
const keypress = (0, react_1.useRef)(false);
|
|
12
|
+
const handleMode = (0, react_1.useCallback)((changedMode) => {
|
|
13
|
+
if (onMode) {
|
|
14
|
+
onMode(changedMode);
|
|
15
|
+
}
|
|
16
|
+
}, [
|
|
17
|
+
onMode
|
|
18
|
+
]);
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (givenMode) {
|
|
21
|
+
return () => {
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const onKeyDown = (event) => {
|
|
25
|
+
keypress.current = true;
|
|
26
|
+
if (event.shiftKey) {
|
|
27
|
+
handleMode('pull');
|
|
28
|
+
}
|
|
29
|
+
else if (event.ctrlKey) {
|
|
30
|
+
handleMode('select');
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const onKeyUp = (event) => {
|
|
34
|
+
keypress.current = false;
|
|
35
|
+
if (!event.shiftKey) {
|
|
36
|
+
handleMode('move');
|
|
37
|
+
}
|
|
38
|
+
else if (!event.ctrlKey) {
|
|
39
|
+
handleMode('move');
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
window.addEventListener('keydown', onKeyDown);
|
|
43
|
+
window.addEventListener('keyup', onKeyUp);
|
|
44
|
+
return () => {
|
|
45
|
+
keypress.current = false;
|
|
46
|
+
window.removeEventListener('keydown', onKeyDown);
|
|
47
|
+
window.removeEventListener('keyup', onKeyUp);
|
|
48
|
+
};
|
|
49
|
+
}, [
|
|
50
|
+
givenMode,
|
|
51
|
+
handleMode
|
|
52
|
+
]);
|
|
53
|
+
const style = (0, react_1.useMemo)(() => {
|
|
54
|
+
const { x, y } = translate;
|
|
55
|
+
return {
|
|
56
|
+
transform: `translateX(${x}px) translateY(${y}px) scale(${scale}) translateZ(0)`
|
|
57
|
+
};
|
|
58
|
+
}, [
|
|
59
|
+
scale,
|
|
60
|
+
translate
|
|
61
|
+
]);
|
|
62
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: 'lincle-interactive-graph', children: (0, jsx_runtime_1.jsx)("div", { className: 'lincle-interactive-transform', style: style, children: children }) }));
|
|
63
|
+
};
|
|
64
|
+
Interaction.displayName = 'LincleInteractiveInteraction';
|
|
65
|
+
exports.default = Interaction;
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
17
|
+
exports.Nodes = void 0;
|
|
18
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
|
+
const base_1 = require("../../base");
|
|
20
|
+
const Interaction_1 = __importDefault(require("./Interaction"));
|
|
21
|
+
const Nodes = (_a) => {
|
|
22
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)(Interaction_1.default, { children: (0, jsx_runtime_1.jsx)(base_1.Nodes, Object.assign({}, props, { children: children })) }));
|
|
24
|
+
};
|
|
25
|
+
exports.Nodes = Nodes;
|
|
26
|
+
Nodes.displayName = 'LincleInteractiveNodes';
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export { default as Node } from './Node';
|
|
7
|
-
export { default as Nodes } from './Nodes';
|
|
8
|
-
export { default as Path } from './Path';
|
|
9
|
-
export { default as Pull } from './Pull';
|
|
1
|
+
export * from './Edge';
|
|
2
|
+
export * from './Edges';
|
|
3
|
+
export * from './Graph';
|
|
4
|
+
export * from './Node';
|
|
5
|
+
export * from './Nodes';
|
package/dist/components/index.js
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
4
15
|
};
|
|
5
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var Graph_1 = require("./Graph");
|
|
12
|
-
Object.defineProperty(exports, "Graph", { enumerable: true, get: function () { return __importDefault(Graph_1).default; } });
|
|
13
|
-
var GraphContexts_1 = require("./GraphContexts");
|
|
14
|
-
Object.defineProperty(exports, "GraphContexts", { enumerable: true, get: function () { return __importDefault(GraphContexts_1).default; } });
|
|
15
|
-
var Grid_1 = require("./Grid");
|
|
16
|
-
Object.defineProperty(exports, "Grid", { enumerable: true, get: function () { return __importDefault(Grid_1).default; } });
|
|
17
|
-
var Node_1 = require("./Node");
|
|
18
|
-
Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return __importDefault(Node_1).default; } });
|
|
19
|
-
var Nodes_1 = require("./Nodes");
|
|
20
|
-
Object.defineProperty(exports, "Nodes", { enumerable: true, get: function () { return __importDefault(Nodes_1).default; } });
|
|
21
|
-
var Path_1 = require("./Path");
|
|
22
|
-
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return __importDefault(Path_1).default; } });
|
|
23
|
-
var Pull_1 = require("./Pull");
|
|
24
|
-
Object.defineProperty(exports, "Pull", { enumerable: true, get: function () { return __importDefault(Pull_1).default; } });
|
|
17
|
+
__exportStar(require("./Edge"), exports);
|
|
18
|
+
__exportStar(require("./Edges"), exports);
|
|
19
|
+
__exportStar(require("./Graph"), exports);
|
|
20
|
+
__exportStar(require("./Node"), exports);
|
|
21
|
+
__exportStar(require("./Nodes"), exports);
|