@lincle/react-web-interactive 0.4.0-next.17 → 0.4.0-next.18

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 (98) hide show
  1. package/dist/cjs/base.js +2 -0
  2. package/dist/cjs/base.js.map +1 -0
  3. package/dist/cjs/components/Edge/Path/index.js +2 -0
  4. package/dist/cjs/components/Edge/Path/index.js.map +1 -0
  5. package/dist/cjs/components/Edge/index.js +3 -0
  6. package/dist/cjs/components/Edge/index.js.map +1 -0
  7. package/dist/{components → cjs/components}/Edges/Connections/index.js +16 -13
  8. package/dist/cjs/components/Edges/Connections/index.js.map +1 -0
  9. package/dist/cjs/components/Edges/index.js +12 -0
  10. package/dist/cjs/components/Edges/index.js.map +1 -0
  11. package/dist/cjs/components/Graph/Grid/index.js +56 -0
  12. package/dist/cjs/components/Graph/Grid/index.js.map +1 -0
  13. package/dist/cjs/components/Graph/index.js +18 -0
  14. package/dist/cjs/components/Graph/index.js.map +1 -0
  15. package/dist/{components → cjs/components}/Interaction/Controls/index.js +21 -23
  16. package/dist/cjs/components/Interaction/Controls/index.js.map +1 -0
  17. package/dist/cjs/components/Interaction/index.js +95 -0
  18. package/dist/cjs/components/Interaction/index.js.map +1 -0
  19. package/dist/{components → cjs/components}/Node/MoveNode/index.js +34 -29
  20. package/dist/cjs/components/Node/MoveNode/index.js.map +1 -0
  21. package/dist/{components → cjs/components}/Node/PullNode/index.js +31 -25
  22. package/dist/cjs/components/Node/PullNode/index.js.map +1 -0
  23. package/dist/cjs/components/Node/index.js +135 -0
  24. package/dist/cjs/components/Node/index.js.map +1 -0
  25. package/dist/{components → cjs/components}/Nodes/Interaction/index.js +14 -15
  26. package/dist/cjs/components/Nodes/Interaction/index.js.map +1 -0
  27. package/dist/cjs/components/Nodes/index.js +9 -0
  28. package/dist/cjs/components/Nodes/index.js.map +1 -0
  29. package/dist/cjs/components/index.js +6 -0
  30. package/dist/cjs/components/index.js.map +1 -0
  31. package/dist/cjs/index.js +3 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/shared.js +3 -0
  34. package/dist/cjs/shared.js.map +1 -0
  35. package/dist/esm/base.js +2 -0
  36. package/dist/esm/base.js.map +1 -0
  37. package/dist/esm/components/Edge/Path/index.js +2 -0
  38. package/dist/esm/components/Edge/Path/index.js.map +1 -0
  39. package/dist/esm/components/Edge/index.js +3 -0
  40. package/dist/esm/components/Edge/index.js.map +1 -0
  41. package/dist/esm/components/Edges/Connections/index.js +44 -0
  42. package/dist/esm/components/Edges/Connections/index.js.map +1 -0
  43. package/dist/esm/components/Edges/index.js +12 -0
  44. package/dist/esm/components/Edges/index.js.map +1 -0
  45. package/dist/esm/components/Graph/Grid/index.js +56 -0
  46. package/dist/esm/components/Graph/Grid/index.js.map +1 -0
  47. package/dist/esm/components/Graph/index.js +18 -0
  48. package/dist/esm/components/Graph/index.js.map +1 -0
  49. package/dist/esm/components/Interaction/Controls/index.js +126 -0
  50. package/dist/esm/components/Interaction/Controls/index.js.map +1 -0
  51. package/dist/esm/components/Interaction/index.js +95 -0
  52. package/dist/esm/components/Interaction/index.js.map +1 -0
  53. package/dist/esm/components/Node/MoveNode/index.js +188 -0
  54. package/dist/esm/components/Node/MoveNode/index.js.map +1 -0
  55. package/dist/esm/components/Node/PullNode/index.js +114 -0
  56. package/dist/esm/components/Node/PullNode/index.js.map +1 -0
  57. package/dist/esm/components/Node/index.js +135 -0
  58. package/dist/esm/components/Node/index.js.map +1 -0
  59. package/dist/esm/components/Nodes/Interaction/index.js +65 -0
  60. package/dist/esm/components/Nodes/Interaction/index.js.map +1 -0
  61. package/dist/esm/components/Nodes/index.js +9 -0
  62. package/dist/esm/components/Nodes/index.js.map +1 -0
  63. package/dist/esm/components/index.js +6 -0
  64. package/dist/esm/components/index.js.map +1 -0
  65. package/dist/esm/index.js +3 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/shared.js +3 -0
  68. package/dist/esm/shared.js.map +1 -0
  69. package/package.json +24 -21
  70. package/dist/base.js +0 -11
  71. package/dist/components/Edge/Path/index.js +0 -5
  72. package/dist/components/Edge/index.js +0 -10
  73. package/dist/components/Edges/index.js +0 -29
  74. package/dist/components/Graph/Grid/index.js +0 -57
  75. package/dist/components/Graph/index.js +0 -24
  76. package/dist/components/Interaction/index.js +0 -99
  77. package/dist/components/Node/index.js +0 -143
  78. package/dist/components/Nodes/index.js +0 -26
  79. package/dist/components/index.js +0 -21
  80. package/dist/index.js +0 -18
  81. package/dist/shared.js +0 -34
  82. /package/dist/{base.d.ts → esm/base.d.ts} +0 -0
  83. /package/dist/{components → esm/components}/Edge/Path/index.d.ts +0 -0
  84. /package/dist/{components → esm/components}/Edge/index.d.ts +0 -0
  85. /package/dist/{components → esm/components}/Edges/Connections/index.d.ts +0 -0
  86. /package/dist/{components → esm/components}/Edges/index.d.ts +0 -0
  87. /package/dist/{components → esm/components}/Graph/Grid/index.d.ts +0 -0
  88. /package/dist/{components → esm/components}/Graph/index.d.ts +0 -0
  89. /package/dist/{components → esm/components}/Interaction/Controls/index.d.ts +0 -0
  90. /package/dist/{components → esm/components}/Interaction/index.d.ts +0 -0
  91. /package/dist/{components → esm/components}/Node/MoveNode/index.d.ts +0 -0
  92. /package/dist/{components → esm/components}/Node/PullNode/index.d.ts +0 -0
  93. /package/dist/{components → esm/components}/Node/index.d.ts +0 -0
  94. /package/dist/{components → esm/components}/Nodes/Interaction/index.d.ts +0 -0
  95. /package/dist/{components → esm/components}/Nodes/index.d.ts +0 -0
  96. /package/dist/{components → esm/components}/index.d.ts +0 -0
  97. /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
  98. /package/dist/{shared.d.ts → esm/shared.d.ts} +0 -0
@@ -0,0 +1,135 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useDefaultLine, useDefaultNodeHeight, useDefaultNodeWidth, useDefaultShape, useMode, useModeGiven, useMove, useOnNodeDrag, useOnNodeEdgeDrop, useOnNodeSelect, useOnNodeStart, useOnNodeStop, usePull, useSnap } from '../../shared';
3
+ import MoveNode from './MoveNode';
4
+ import PullNode from './PullNode';
5
+ import { useCallback, useMemo, useRef } from 'react';
6
+ const emptySnap = [
7
+ 1,
8
+ 1
9
+ ];
10
+ 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 }) => {
11
+ const defaultHeight = useDefaultNodeHeight();
12
+ const defaultLine = useDefaultLine();
13
+ const defaultShape = useDefaultShape();
14
+ const defaultWidth = useDefaultNodeWidth();
15
+ const snap = useSnap();
16
+ const [snapX = 1, snapY = 1] = snap && Array.isArray(snap) ?
17
+ snap :
18
+ emptySnap;
19
+ const graphMode = useMode();
20
+ const graphGivenMode = useModeGiven();
21
+ const mode = givenMode ?? graphGivenMode ?? graphMode;
22
+ const graphMove = useMove();
23
+ const graphPull = usePull();
24
+ const onNodeDrag = useOnNodeDrag();
25
+ const onNodeEdgeDrop = useOnNodeEdgeDrop();
26
+ const onNodeSelect = useOnNodeSelect();
27
+ const onNodeStart = useOnNodeStart();
28
+ const onNodeStop = useOnNodeStop();
29
+ const move = givenMove ?? graphMove;
30
+ const pull = givenPull ?? graphPull;
31
+ const onEdgeDrop = givenOnEdgeDrop ?? onNodeEdgeDrop;
32
+ const onSelect = givenOnSelect ?? onNodeSelect;
33
+ const pullPosition = useRef({
34
+ x,
35
+ y
36
+ });
37
+ const { height, line, shape, width } = useMemo(() => {
38
+ return {
39
+ height: givenHeight ?? defaultHeight,
40
+ line: givenLine ?? defaultLine,
41
+ shape: givenShape ?? defaultShape,
42
+ width: givenWidth ?? defaultWidth
43
+ };
44
+ }, [
45
+ defaultHeight,
46
+ defaultLine,
47
+ defaultShape,
48
+ defaultWidth,
49
+ givenHeight,
50
+ givenLine,
51
+ givenShape,
52
+ givenWidth
53
+ ]);
54
+ const handleOnStart = useCallback((event) => {
55
+ if (onStart) {
56
+ onStart(event);
57
+ }
58
+ else if (onNodeStart) {
59
+ onNodeStart(event, id);
60
+ }
61
+ }, [
62
+ id,
63
+ onNodeStart,
64
+ onStart
65
+ ]);
66
+ const handleOnDrag = useCallback((event, data) => {
67
+ if (onDrag) {
68
+ onDrag(event, data);
69
+ }
70
+ else if (onNodeDrag) {
71
+ onNodeDrag(event, id, data);
72
+ }
73
+ }, [
74
+ id,
75
+ onDrag,
76
+ onNodeDrag
77
+ ]);
78
+ const handleOnStop = useCallback((event, data) => {
79
+ if (onStop) {
80
+ onStop(event, data);
81
+ }
82
+ else if (onNodeStop) {
83
+ onNodeStop(event, id, data);
84
+ }
85
+ }, [
86
+ id,
87
+ onNodeStop,
88
+ onStop
89
+ ]);
90
+ const handleMoveStart = useCallback((event) => {
91
+ handleOnStart(event);
92
+ }, [
93
+ handleOnStart
94
+ ]);
95
+ const handleMoveDrag = useCallback((event, data, position) => {
96
+ pullPosition.current = {
97
+ x: position.x,
98
+ y: position.y
99
+ };
100
+ handleOnDrag(event, data);
101
+ }, [
102
+ handleOnDrag
103
+ ]);
104
+ const handleMoveStop = useCallback((event, data) => {
105
+ handleOnStop(event, data);
106
+ }, [
107
+ handleOnStop
108
+ ]);
109
+ const pullNode = useMemo(() => {
110
+ return mode === 'pull' && pull ?
111
+ _jsx(PullNode, { height: height, line: line, mode: mode, onEdgeDrop: onEdgeDrop, shape: shape, sourceId: id, style: style, width: width, x: pullPosition.current.x, y: pullPosition.current.y }) :
112
+ null;
113
+ }, [
114
+ mode
115
+ ]);
116
+ const snapper = useMemo(() => {
117
+ return {
118
+ x: Math.ceil((x ?? 0) / snapX) * snapX,
119
+ y: Math.ceil((y ?? 0) / snapY) * snapY
120
+ };
121
+ }, [
122
+ snapX,
123
+ snapY,
124
+ x,
125
+ y
126
+ ]);
127
+ return (_jsxs(_Fragment, { children: [_jsx(MoveNode, { disabled: mode === 'pull' ?
128
+ true :
129
+ !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] }));
130
+ };
131
+ Node.displayName = 'LincleInteractiveNode';
132
+ export { Node };
133
+ export { default as MoveNode } from './MoveNode';
134
+ export { default as PullNode } from './PullNode';
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Node/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useModeGiven, useOnMode, useScale, useTranslate } from '../../../shared';
3
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
4
+ const Interaction = ({ children }) => {
5
+ const scale = useScale();
6
+ const translate = useTranslate();
7
+ const givenMode = useModeGiven();
8
+ const onMode = useOnMode();
9
+ const keypress = useRef(false);
10
+ const handleMode = useCallback((changedMode) => {
11
+ if (onMode) {
12
+ onMode(changedMode);
13
+ }
14
+ }, [
15
+ onMode
16
+ ]);
17
+ useEffect(() => {
18
+ if (givenMode) {
19
+ return () => {
20
+ };
21
+ }
22
+ const onKeyDown = (event) => {
23
+ keypress.current = true;
24
+ if (event.shiftKey) {
25
+ handleMode('pull');
26
+ }
27
+ else if (event.ctrlKey) {
28
+ handleMode('select');
29
+ }
30
+ };
31
+ const onKeyUp = (event) => {
32
+ keypress.current = false;
33
+ if (!event.shiftKey) {
34
+ handleMode('move');
35
+ }
36
+ else if (!event.ctrlKey) {
37
+ handleMode('move');
38
+ }
39
+ };
40
+ window.addEventListener('keydown', onKeyDown);
41
+ window.addEventListener('keyup', onKeyUp);
42
+ return () => {
43
+ keypress.current = false;
44
+ window.removeEventListener('keydown', onKeyDown);
45
+ window.removeEventListener('keyup', onKeyUp);
46
+ };
47
+ }, [
48
+ givenMode,
49
+ handleMode
50
+ ]);
51
+ const style = useMemo(() => {
52
+ const { x, y } = translate;
53
+ return {
54
+ transform: `translateX(${x / scale}px) translateY(${y / scale}px)`,
55
+ zoom: scale
56
+ };
57
+ }, [
58
+ scale,
59
+ translate
60
+ ]);
61
+ return (_jsx("div", { className: 'lincle-interactive-graph', children: _jsx("div", { className: 'lincle-interactive-transform', style: style, children: children }) }));
62
+ };
63
+ Interaction.displayName = 'LincleInteractiveInteraction';
64
+ export default Interaction;
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Nodes/Interaction/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACP,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,GAAiD,CAAC,EACjE,QAAQ,EACT,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,WAAqB,EAAE,EAAE;QACxB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,WAAW,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD;QACE,MAAM;KACP,CACF,CAAC;IAEF,SAAS,CACP,GAAG,EAAE;QACH,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAS,EAAE;YAElB,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,CAChB,KAAoB,EACd,EAAE;YACR,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAExB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,UAAU,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CACd,KAAoB,EACd,EAAE;YACR,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpB,UAAU,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC1B,UAAU,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CACrB,SAAS,EACT,SAAS,CACV,CAAC;QAEF,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,OAAO,CACR,CAAC;QAEF,OAAO,GAAS,EAAE;YAChB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;YAEzB,MAAM,CAAC,mBAAmB,CACxB,SAAS,EACT,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,mBAAmB,CACxB,OAAO,EACP,OAAO,CACR,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,EACD;QACE,SAAS;QACT,UAAU;KACX,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE;QACH,MAAM,EACJ,CAAC,EACD,CAAC,EACF,GAAG,SAAS,CAAC;QAEd,OAAO;YAEL,SAAS,EAAE,cAAc,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,KAAK,KAAK;YAElE,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC,EACD;QACE,KAAK;QACL,SAAS;KACV,CACF,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAC,0BAA0B,YAEpC,cACE,SAAS,EAAC,8BAA8B,EACxC,KAAK,EAAE,KAAK,YAEX,QAAQ,GACL,GACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,8BAA8B,CAAC;AAEzD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Nodes as BaseNodes } from '../../base';
3
+ import Interaction from './Interaction';
4
+ const Nodes = ({ children, ...props }) => {
5
+ return (_jsx(Interaction, { children: _jsx(BaseNodes, { ...props, children: children }) }));
6
+ };
7
+ Nodes.displayName = 'LincleInteractiveNodes';
8
+ export { Nodes };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Nodes/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,IAAI,SAAS,EACnB,MAAM,YAAY,CAAC;AAIpB,OAAO,WAAW,MAAM,eAAe,CAAC;AAKxC,MAAM,KAAK,GAAkC,CAAC,EAC5C,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,EAAE;IACH,OAAO,CACL,KAAC,WAAW,cACV,KAAC,SAAS,OACJ,KAAK,YAER,QAAQ,GACC,GACA,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,wBAAwB,CAAC;AAE7C,OAAO,EACL,KAAK,EACN,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './Edge';
2
+ export * from './Edges';
3
+ export * from './Graph';
4
+ export * from './Node';
5
+ export * from './Nodes';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './shared';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Providers, useConnections, useDefaultLine, useDefaultNodeHeight, useDefaultNodeWidth, useDefaultShape, useDiagramId, useMaxScale, useMinScale, useMode, useModeGiven, useMove, useNodePositions, useOnMode, useOnNodeDrag, useOnNodeEdgeDrop, useOnNodeSelect, useOnNodeStart, useOnNodeStop, useOnScale, useOnTranslate, usePan, usePull, useScale, useSetConnection, useSnap, useTranslate, useZoom } from '@lincle/react-interactive-shared';
2
+ export { Graph as GraphBase } from '@lincle/react-web-base';
3
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"AAmHA,OAAO,EASL,SAAS,EACT,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,OAAO,EACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,IAAI,SAAS,EACnB,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@lincle/react-web-interactive",
3
3
  "title": "lincle react web interactive",
4
4
  "license": "LGPL-3.0-or-later",
5
- "version": "0.4.0-next.17",
5
+ "version": "0.4.0-next.18",
6
6
  "private": false,
7
7
  "description": "A 'reactive' React node and edge generator",
8
8
  "author": "wallzero @wallzeroblog (http://wallzero.com)",
@@ -13,8 +13,9 @@
13
13
  "position": "Initial and Lead Developer"
14
14
  }
15
15
  ],
16
- "main": "dist/index.js",
17
- "types": "dist/index.d.ts",
16
+ "main": "dist/cjs/index.js",
17
+ "module": "dist/esm/index.js",
18
+ "types": "dist/esm/index.d.ts",
18
19
  "files": [
19
20
  "dist/",
20
21
  "COPYING.md",
@@ -30,7 +31,9 @@
30
31
  },
31
32
  "scripts": {
32
33
  "build": "run-s clean:dist build:prod build:styles",
33
- "build:prod": "tsc -p ./tsconfig.json",
34
+ "build:prod": "run-p build:cjs:prod build:esm:prod",
35
+ "build:cjs:prod": "tsc -p ./tsconfig.cjs.json",
36
+ "build:esm:prod": "tsc -p ./tsconfig.json",
34
37
  "build:watch": "run-s clean:dist build:prod build:styles build:watch:tsc",
35
38
  "build:watch:tsc": "tsc -p ./tsconfig.json --watch --pretty --preserveWatchOutput",
36
39
  "build:styles": "ncp src/styles.g.css dist/styles.g.css",
@@ -44,17 +47,17 @@
44
47
  "clean:dist": "rimraf dist"
45
48
  },
46
49
  "devDependencies": {
47
- "@digest/eslint-config-jest": "^4.14.9",
48
- "@digest/eslint-config-react": "^4.14.9",
49
- "@digest/eslint-config-typescript": "^4.14.9",
50
- "@digest/jest-junit": "^4.14.9",
51
- "@digest/jest-react": "^4.14.9",
52
- "@digest/jest-typescript": "^4.14.9",
53
- "@digest/stylelint-config": "^4.14.9",
54
- "@digest/typescript": "^4.14.9",
50
+ "@digest/eslint-config-jest": "^4.14.14",
51
+ "@digest/eslint-config-react": "^4.14.14",
52
+ "@digest/eslint-config-typescript": "^4.14.14",
53
+ "@digest/jest-junit": "^4.14.14",
54
+ "@digest/jest-react": "^4.14.14",
55
+ "@digest/jest-typescript": "^4.14.14",
56
+ "@digest/stylelint-config": "^4.14.14",
57
+ "@digest/typescript": "^4.14.14",
55
58
  "@types/jest": "^30.0.0",
56
- "@types/node": "^25.0.3",
57
- "@types/react": "^19.2.7",
59
+ "@types/node": "^25.2.1",
60
+ "@types/react": "^19.2.13",
58
61
  "@types/react-dom": "^19.2.3",
59
62
  "@types/react-test-renderer": "^19.1.0",
60
63
  "cross-env": "^10.1.0",
@@ -62,15 +65,15 @@
62
65
  "jest-environment-jsdom-global": "^4.0.0",
63
66
  "ncp": "^2.0.0",
64
67
  "npm-run-all": "^4.1.5",
65
- "react": "^19.2.3",
66
- "react-dom": "^19.2.3",
67
- "react-test-renderer": "^19.2.3",
68
+ "react": "^19.2.4",
69
+ "react-dom": "^19.2.4",
70
+ "react-test-renderer": "^19.2.4",
68
71
  "rimraf": "^6.1.2"
69
72
  },
70
73
  "dependencies": {
71
- "@lincle/react-interactive-shared": "^0.4.0-next.17",
72
- "@lincle/react-shared": "^0.4.0-next.17",
73
- "@lincle/react-web-base": "^0.4.0-next.17",
74
+ "@lincle/react-interactive-shared": "^0.4.0-next.18",
75
+ "@lincle/react-shared": "^0.4.0-next.18",
76
+ "@lincle/react-web-base": "^0.4.0-next.18",
74
77
  "react-draggable": "^4.5.0",
75
78
  "react-map-interaction": "^2.1.0"
76
79
  },
@@ -97,5 +100,5 @@
97
100
  "dragndrop",
98
101
  "drag"
99
102
  ],
100
- "gitHead": "25bbe98ceef3b13ee0ee23ea3b261d8a115c0771"
103
+ "gitHead": "8c8017797cadc70f9c4a7665982040b192c8e357"
101
104
  }
package/dist/base.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Path = exports.Nodes = exports.Node = exports.Grid = exports.Graph = exports.Edges = exports.Edge = void 0;
4
- var react_web_base_1 = require("@lincle/react-web-base");
5
- Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return react_web_base_1.Edge; } });
6
- Object.defineProperty(exports, "Edges", { enumerable: true, get: function () { return react_web_base_1.Edges; } });
7
- Object.defineProperty(exports, "Graph", { enumerable: true, get: function () { return react_web_base_1.Graph; } });
8
- Object.defineProperty(exports, "Grid", { enumerable: true, get: function () { return react_web_base_1.Grid; } });
9
- Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return react_web_base_1.Node; } });
10
- Object.defineProperty(exports, "Nodes", { enumerable: true, get: function () { return react_web_base_1.Nodes; } });
11
- Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return react_web_base_1.Path; } });
@@ -1,5 +0,0 @@
1
- "use strict";
2
- 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.Path; } });
@@ -1,10 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Path = exports.Edge = void 0;
7
- var base_1 = require("../../base");
8
- Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return base_1.Edge; } });
9
- var Path_1 = require("./Path");
10
- Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return __importDefault(Path_1).default; } });
@@ -1,29 +0,0 @@
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
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Edges = void 0;
18
- const jsx_runtime_1 = require("react/jsx-runtime");
19
- const base_1 = require("../../base");
20
- const shared_1 = require("../../shared");
21
- const Connections_1 = __importDefault(require("./Connections"));
22
- const Edges = (_a) => {
23
- var { children } = _a, props = __rest(_a, ["children"]);
24
- const scale = (0, shared_1.useScale)();
25
- const translate = (0, shared_1.useTranslate)();
26
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(base_1.Edges, Object.assign({ scale: scale, translate: translate }, props, { children: children })), (0, jsx_runtime_1.jsx)(Connections_1.default, { scale: scale, translate: translate })] }));
27
- };
28
- exports.Edges = Edges;
29
- Edges.displayName = 'LincleInteractiveEdges';
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const base_1 = require("../../../base");
5
- const shared_1 = require("../../../shared");
6
- const react_1 = require("react");
7
- const WIDTH = 0.4;
8
- const Grid = ({ children }) => {
9
- const scale = (0, shared_1.useScale)();
10
- const translate = (0, shared_1.useTranslate)();
11
- const mode = (0, shared_1.useMode)();
12
- const line = (0, react_1.useMemo)(() => {
13
- const t1 = 1 + scale;
14
- const t2 = 4 * scale;
15
- return ((0, jsx_runtime_1.jsx)("line", { stroke: 'black', strokeWidth: WIDTH, x1: t1, x2: t2, y1: t1, y2: t2 }));
16
- }, [
17
- scale
18
- ]);
19
- const plus = (0, react_1.useMemo)(() => {
20
- const t1 = scale;
21
- const t2 = 4 * scale;
22
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("line", { stroke: 'black', strokeWidth: WIDTH, x1: t1, x2: t2, y1: t2, y2: t2 }), (0, jsx_runtime_1.jsx)("line", { stroke: 'black', strokeWidth: WIDTH, x1: t2, x2: t2, y1: t1, y2: t2 })] }));
23
- }, [
24
- scale
25
- ]);
26
- const circle = (0, react_1.useMemo)(() => {
27
- const t2 = 4 * scale;
28
- return ((0, jsx_runtime_1.jsx)("circle", { cx: t2, cy: t2, fill: 'black', r: WIDTH }));
29
- }, [
30
- scale
31
- ]);
32
- const child = (0, react_1.useMemo)(() => {
33
- if (!children) {
34
- switch (mode) {
35
- case 'move': {
36
- return circle;
37
- }
38
- case 'pull': {
39
- return line;
40
- }
41
- case 'select': {
42
- return plus;
43
- }
44
- }
45
- }
46
- return children;
47
- }, [
48
- children,
49
- circle,
50
- line,
51
- mode,
52
- plus
53
- ]);
54
- return ((0, jsx_runtime_1.jsx)(base_1.Grid, { scale: scale, xOffset: translate.x, yOffset: translate.y, children: child }));
55
- };
56
- Grid.displayName = 'LincleInteractiveGrid';
57
- exports.default = Grid;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Grid = exports.Graph = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const shared_1 = require("../../shared");
9
- const Interaction_1 = __importDefault(require("../Interaction"));
10
- const Grid_1 = __importDefault(require("./Grid"));
11
- const Graph = ({ children, edgeFrequency, grid, id, line, maxScale, minScale, mode, move, nodeFrequency, nodeHeight, nodeWidth, onNodeDrag, onNodeEdgeDrop, onNodeSelect, onNodeStart, onNodeStop, onScale, onTranslate, pan, pull, scale, shape, showGrid, snap, translate, zoom }) => {
12
- if (!id) {
13
- console.error('No ID provided to @lincle/interactive Graph!');
14
- return null;
15
- }
16
- const gird = showGrid === false ?
17
- null :
18
- (0, jsx_runtime_1.jsx)(Grid_1.default, {});
19
- return ((0, jsx_runtime_1.jsx)(shared_1.GraphBase, { edgeFrequency: edgeFrequency, grid: grid, id: id, line: line, nodeFrequency: nodeFrequency, nodeHeight: nodeHeight, nodeWidth: nodeWidth, shape: shape, showGrid: false, children: (0, jsx_runtime_1.jsxs)(shared_1.Providers, { maxScale: maxScale, minScale: minScale, mode: mode, move: move, onNodeDrag: onNodeDrag, onNodeEdgeDrop: onNodeEdgeDrop, onNodeSelect: onNodeSelect, onNodeStart: onNodeStart, onNodeStop: onNodeStop, onScale: onScale, onTranslate: onTranslate, pan: pan, pull: pull, scale: scale, snap: snap, translate: translate, zoom: zoom, children: [gird, (0, jsx_runtime_1.jsx)(Interaction_1.default, {}), children] }) }));
20
- };
21
- exports.Graph = Graph;
22
- Graph.displayName = 'LincleInteractiveGraph';
23
- var Grid_2 = require("./Grid");
24
- Object.defineProperty(exports, "Grid", { enumerable: true, get: function () { return __importDefault(Grid_2).default; } });
@@ -1,99 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const shared_1 = require("../../shared");
8
- const Controls_1 = __importDefault(require("./Controls"));
9
- const react_1 = require("react");
10
- const react_map_interaction_1 = require("react-map-interaction");
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)();
25
- const keypress = (0, react_1.useRef)(false);
26
- const handleMode = (0, react_1.useCallback)((changedMode) => {
27
- if (onMode) {
28
- onMode(changedMode);
29
- }
30
- }, [
31
- onMode
32
- ]);
33
- (0, react_1.useEffect)(() => {
34
- if (givenMode) {
35
- return () => {
36
- };
37
- }
38
- const onKeyDown = (event) => {
39
- keypress.current = true;
40
- if (event.shiftKey) {
41
- handleMode('pull');
42
- }
43
- else if (event.ctrlKey) {
44
- handleMode('select');
45
- }
46
- };
47
- const onKeyUp = (event) => {
48
- keypress.current = false;
49
- if (!event.shiftKey) {
50
- handleMode('move');
51
- }
52
- else if (!event.ctrlKey) {
53
- handleMode('move');
54
- }
55
- };
56
- window.addEventListener('keydown', onKeyDown);
57
- window.addEventListener('keyup', onKeyUp);
58
- return () => {
59
- keypress.current = false;
60
- window.removeEventListener('keydown', onKeyDown);
61
- window.removeEventListener('keyup', onKeyUp);
62
- };
63
- }, [
64
- givenMode,
65
- handleMode
66
- ]);
67
- const defaultTranslation = (0, react_1.useMemo)(() => {
68
- return {
69
- x: Math.round(translate.x),
70
- y: Math.round(translate.y)
71
- };
72
- }, []);
73
- const handleChange = (0, react_1.useCallback)(({ scale: z, translation: { x, y } }) => {
74
- if (onTranslate) {
75
- onTranslate({
76
- x,
77
- y
78
- });
79
- }
80
- if (onScale) {
81
- onScale(z);
82
- }
83
- }, [
84
- onScale,
85
- onTranslate
86
- ]);
87
- const transform = (0, react_1.useMemo)(() => {
88
- return {
89
- scale,
90
- translation: translate
91
- };
92
- }, [
93
- scale,
94
- translate
95
- ]);
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 }) }));
97
- };
98
- Interaction.displayName = 'LincleInteractiveInteraction';
99
- exports.default = Interaction;