@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.
Files changed (39) hide show
  1. package/LICENSE.md +165 -0
  2. package/dist/base.d.ts +1 -1
  3. package/dist/base.js +1 -2
  4. package/dist/components/Edge/Path/index.d.ts +1 -0
  5. package/dist/components/{Path → Edge/Path}/index.js +1 -1
  6. package/dist/components/Edge/index.d.ts +2 -1
  7. package/dist/components/Edge/index.js +7 -2
  8. package/dist/components/Edges/Connections/index.d.ts +4 -0
  9. package/dist/components/Edges/Connections/index.js +37 -0
  10. package/dist/components/Edges/index.d.ts +4 -1
  11. package/dist/components/Edges/index.js +27 -3
  12. package/dist/components/{Grid → Graph/Grid}/index.d.ts +1 -1
  13. package/dist/components/Graph/Grid/index.js +57 -0
  14. package/dist/components/Graph/index.d.ts +2 -1
  15. package/dist/components/Graph/index.js +11 -5
  16. package/dist/components/Interaction/Controls/index.d.ts +4 -0
  17. package/dist/components/Interaction/Controls/index.js +99 -0
  18. package/dist/components/Interaction/index.d.ts +1 -2
  19. package/dist/components/Interaction/index.js +22 -125
  20. package/dist/components/Node/MoveNode/index.js +22 -3
  21. package/dist/components/Node/PullNode/index.js +60 -42
  22. package/dist/components/Node/index.d.ts +3 -1
  23. package/dist/components/Node/index.js +33 -19
  24. package/dist/components/Nodes/Interaction/index.d.ts +3 -0
  25. package/dist/components/Nodes/Interaction/index.js +65 -0
  26. package/dist/components/Nodes/index.d.ts +4 -1
  27. package/dist/components/Nodes/index.js +24 -3
  28. package/dist/components/index.d.ts +5 -9
  29. package/dist/components/index.js +18 -21
  30. package/dist/shared.d.ts +8 -12
  31. package/dist/shared.js +31 -15
  32. package/dist/styles.g.css +9 -106
  33. package/package.json +24 -25
  34. package/dist/components/GraphContexts/index.d.ts +0 -4
  35. package/dist/components/GraphContexts/index.js +0 -167
  36. package/dist/components/Grid/index.js +0 -13
  37. package/dist/components/Path/index.d.ts +0 -1
  38. package/dist/components/Pull/index.d.ts +0 -4
  39. 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 CLICK_TIME = 500;
8
- const PRESS_TIME = 350;
9
- const Interaction = ({ children, onMouseDown, onMouseUp, onTouchEnd, onTouchStart }) => {
10
- const { givenMode, onMode } = (0, react_1.useContext)(shared_1.ModeContext);
11
- const { onNodeSelect } = (0, react_1.useContext)(shared_1.NodeContext);
12
- const { disablePan, disableScale, maxScale, minScale } = (0, react_1.useContext)(shared_1.TransformContext);
13
- const { onScale, scale } = (0, react_1.useContext)(shared_1.ScaleContext);
14
- const { onTranslate, translate } = (0, react_1.useContext)(shared_1.TranslateContext);
15
- const clickTimeout = (0, react_1.useRef)();
16
- const pressTimeout = (0, react_1.useRef)();
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 privateMode = (0, react_1.useRef)(givenMode);
19
- const handleMode = (0, react_1.useCallback)((mode) => {
20
- if (onMode &&
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
- const style = (0, react_1.useMemo)(() => {
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 { scale } = (0, react_1.useContext)(shared_1.ScaleContext);
15
- const [snapX, snapY] = snap !== null && snap !== void 0 ? snap : emptySnap;
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
- var _a, _b;
13
- const diagramId = (_a = (0, react_1.useContext)(shared_1.GraphContext)) === null || _a === void 0 ? void 0 : _a.diagramId;
14
- const nodePositions = (_b = (0, react_1.useContext)(shared_1.GraphContext)) === null || _b === void 0 ? void 0 : _b.nodePositions;
15
- const { onEdgeDrop: defaultOnEdgeDrop } = (0, react_1.useContext)(shared_1.NodeContext);
16
- const onEdgeDrop = givenOnEdgeDrop !== null && givenOnEdgeDrop !== void 0 ? givenOnEdgeDrop : defaultOnEdgeDrop;
17
- const { scale } = (0, react_1.useContext)(shared_1.ScaleContext);
18
- const [position, setPosition] = (0, react_1.useState)({
19
- x,
20
- y
21
- });
22
- const pos = (0, react_1.useRef)(position);
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 (onStart) {
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
- setPosition({
36
- x: data.x,
37
- y: data.y
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
- onDrag
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
- if (!disabled) {
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
- position.x &&
61
- position.y) {
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
- position.x,
79
- position.y,
80
- sourceId,
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)(Pull_1.default, { className: className, diagramId: diagramId, height: height, line: line, ref: nodeRef, shape: shape, sourceId: sourceId, style: style, width: width, x: position.x, y: position.y }) })) :
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 default Node;
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, className = '', disableMove: givenDisableMove, disablePull: givenDisablePull, height: givenHeight, id, line: givenLine, mode: givenMode, onDrag, onEdgeDrop: givenOnEdgeDrop, onSelect: givenOnSelect, onStart, onStop, shape: givenShape, style, width: givenWidth, x, y }) => {
16
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
17
- const defaultHeight = (_b = (_a = (0, react_1.useContext)(shared_1.GraphContext)) === null || _a === void 0 ? void 0 : _a.defaultSettings) === null || _b === void 0 ? void 0 : _b.height;
18
- const defaultLine = (_d = (_c = (0, react_1.useContext)(shared_1.GraphContext)) === null || _c === void 0 ? void 0 : _c.defaultSettings) === null || _d === void 0 ? void 0 : _d.line;
19
- const defaultShape = (_f = (_e = (0, react_1.useContext)(shared_1.GraphContext)) === null || _e === void 0 ? void 0 : _e.defaultSettings) === null || _f === void 0 ? void 0 : _f.shape;
20
- const defaultWidth = (_h = (_g = (0, react_1.useContext)(shared_1.GraphContext)) === null || _g === void 0 ? void 0 : _g.defaultSettings) === null || _h === void 0 ? void 0 : _h.width;
21
- const snap = (0, react_1.useContext)(shared_1.SnapContext);
22
- const [snapX, snapY] = snap !== null && snap !== void 0 ? snap : emptySnap;
23
- const { disableMove: graphDisableMove, disablePull: graphDisablePull, givenMode: graphGivenMode, mode: graphMode } = (0, react_1.useContext)(shared_1.ModeContext);
24
- const mode = (_j = givenMode !== null && givenMode !== void 0 ? givenMode : graphGivenMode) !== null && _j !== void 0 ? _j : graphMode;
25
- const { onEdgeDrop: defaultOnEdgeDrop, onNodeDrag, onNodeSelect, onNodeStart, onNodeStop } = (0, react_1.useContext)(shared_1.NodeContext);
26
- const disableMove = givenDisableMove !== null && givenDisableMove !== void 0 ? givenDisableMove : graphDisableMove;
27
- const disablePull = givenDisablePull !== null && givenDisablePull !== void 0 ? givenDisablePull : graphDisablePull;
28
- const onEdgeDrop = givenOnEdgeDrop !== null && givenOnEdgeDrop !== void 0 ? givenOnEdgeDrop : defaultOnEdgeDrop;
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' && !disablePull ?
108
- ((0, jsx_runtime_1.jsx)(PullNode_1.default, { disabled: disablePull !== null && disablePull !== void 0 ? disablePull : mode !== 'pull', height: height, line: line, mode: mode, onEdgeDrop: onEdgeDrop, shape: shape, sourceId: id, style: style, width: width, x: pullPosition.current.x, y: pullPosition.current.y })) :
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 test = (0, react_1.useMemo)(() => {
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, { className: className, disabled: disableMove !== null && disableMove !== void 0 ? disableMove : mode === 'pull', height: height, id: id, mode: mode, onDrag: handleMoveDrag, onSelect: onSelect, onStart: handleMoveStart, onStop: handleMoveStop, shape: shape, snap: snap, style: style, width: width, x: test.x, y: test.y, children: children }), pullNode] }));
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
- exports.default = Node;
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,3 @@
1
+ import { type FunctionComponent, type PropsWithChildren } from 'react';
2
+ declare const Interaction: FunctionComponent<PropsWithChildren<{}>>;
3
+ export default Interaction;
@@ -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 +1,4 @@
1
- export { Nodes as default } from '../../base';
1
+ import { type NodesProps } from '../../shared';
2
+ import { type FunctionComponent } from 'react';
3
+ declare const Nodes: FunctionComponent<NodesProps>;
4
+ export { Nodes };
@@ -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.default = void 0;
4
- var base_1 = require("../../base");
5
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return base_1.Nodes; } });
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 { default as Edge } from './Edge';
2
- export { default as Edges } from './Edges';
3
- export { default as Graph } from './Graph';
4
- export { default as GraphContexts } from './GraphContexts';
5
- export { default as Grid } from './Grid';
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';
@@ -1,24 +1,21 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
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
- exports.Pull = exports.Path = exports.Nodes = exports.Node = exports.Grid = exports.GraphContexts = exports.Graph = exports.Edges = exports.Edge = void 0;
7
- var Edge_1 = require("./Edge");
8
- Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return __importDefault(Edge_1).default; } });
9
- var Edges_1 = require("./Edges");
10
- Object.defineProperty(exports, "Edges", { enumerable: true, get: function () { return __importDefault(Edges_1).default; } });
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);