@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
package/dist/shared.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import { type DraggableData, type EdgeControlProps, type EdgeProps, type EdgesProps, type Mode, type MoveNodeProps as SharedMoveNodeProps, type NodeProps as SharedNodeProps, type NodesProps, type Position, type PullNodeProps as SharedPullNodeProps, type PullProps as SharedPullProps, type ScaleProps, type SnapProps, type TransformProps, type TranslateProps } from '@lincle/react-interactive-shared';
2
- import { type GraphContextsProps as BaseGraphContextsProps, type GraphProps as BaseGraphProps, type NodeProps as BaseNodeProps } from '@lincle/react-web-base';
3
- import { type CSSProperties, type MouseEvent, type ReactElement, type ReactNode, type TouchEvent } from 'react';
4
- export { defaultScale, defaultSettings, disableMove, disablePull, type DraggableData, type EdgeNodeProps, GraphContext, GridContext, type GridProps, ModeContext, type ModeType, NodeContext, type Position, ScaleContext, SnapContext, TransformContext, transformDefaults, TranslateContext, translateDefaults } from '@lincle/react-interactive-shared';
1
+ import { type DraggableData, type EdgeProps, type GraphProps as InteractiveGraphProps, type MoveNodeProps as SharedMoveNodeProps, type NodeProps as SharedNodeProps, type Position, type PullNodeProps as SharedPullNodeProps, type PullProps as SharedPullProps } from '@lincle/react-interactive-shared';
2
+ import { type NodeProps as BaseNodeProps } from '@lincle/react-web-base';
3
+ import { type CSSProperties, type MouseEvent, type PropsWithChildren, type TouchEvent } from 'react';
5
4
  export type DraggableEvent = MouseEvent | MouseEvent<HTMLElement | SVGElement> | TouchEvent | TouchEvent<HTMLElement | SVGElement>;
6
5
  export type NodeControlProps = {
7
6
  onDrag?: (event: DraggableEvent, data: DraggableData) => void;
8
- onEdgeDrop?: (sourceId: number | string, targetId?: number | string) => void;
7
+ onEdgeDrop?: (event: DraggableEvent, sourceId: number | string, targetId?: number | string) => void;
9
8
  onSelect?: () => void;
10
9
  onStart?: (event: DraggableEvent) => void;
11
10
  onStop?: (event: DraggableEvent, data: DraggableData) => void;
@@ -30,19 +29,16 @@ export type PullNodeProps = Omit<NodeProps, 'id'> & SharedPullNodeProps & {
30
29
  };
31
30
  };
32
31
  export type NodeProps = SharedNodeProps & BaseNodeProps & NodeControlProps;
33
- export type NodeContextProps = EdgeControlProps & GraphNodeControlProps;
34
- export type GraphContextsProps = BaseGraphContextsProps & EdgeControlProps & GraphNodeControlProps & Partial<Mode> & ScaleProps & SnapProps & TransformProps & TranslateProps;
35
32
  export type InteractionControlProps = {
36
33
  onMouseDown?: (event: MouseEvent<HTMLDivElement>) => void;
37
34
  onMouseUp?: (event: MouseEvent<HTMLDivElement>) => void;
38
35
  onTouchEnd?: (event: TouchEvent<HTMLDivElement>) => void;
39
36
  onTouchStart?: (event: TouchEvent<HTMLDivElement>) => void;
40
37
  };
41
- export type InteractionProps = InteractionControlProps & Pick<GraphProps, 'children'>;
42
- export type GraphProps = EdgeControlProps & GraphNodeControlProps & InteractionControlProps & Omit<BaseGraphProps, 'children' | 'id'> & Partial<Mode> & ScaleProps & SnapProps & TransformProps & TranslateProps & {
43
- children?: Array<ReactElement<EdgesProps | NodesProps>> | ReactNode | ReactNode[];
44
- id?: number | string;
45
- };
38
+ export type InteractionProps = PropsWithChildren<{} & InteractionControlProps>;
46
39
  export type MoveNodeProps = Omit<NodeProps, 'onDrag' | 'onSelect'> & SharedMoveNodeProps & BaseNodeProps & {
47
40
  readonly onDrag?: (event: DraggableEvent, data: DraggableData, position: Position) => void;
48
41
  };
42
+ export type GraphProps = Omit<InteractiveGraphProps, 'onNodeDrag' | 'onNodeSelect' | 'onNodeStart' | 'onNodeStop'> & InteractionProps & GraphNodeControlProps;
43
+ export { type ConnectionsProps, type DraggableData, type EdgeNodeProps, type EdgesProps, type GridProps, type ModeType, type NodesProps, type Position, 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';
44
+ export { Graph as GraphBase } from '@lincle/react-web-base';
package/dist/shared.js CHANGED
@@ -1,18 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.translateDefaults = exports.TranslateContext = exports.transformDefaults = exports.TransformContext = exports.SnapContext = exports.ScaleContext = exports.NodeContext = exports.ModeContext = exports.GridContext = exports.GraphContext = exports.disablePull = exports.disableMove = exports.defaultSettings = exports.defaultScale = void 0;
3
+ exports.GraphBase = exports.useZoom = exports.useTranslate = exports.useSnap = exports.useSetConnection = exports.useScale = exports.usePull = exports.usePan = exports.useOnTranslate = exports.useOnScale = exports.useOnNodeStop = exports.useOnNodeStart = exports.useOnNodeSelect = exports.useOnNodeEdgeDrop = exports.useOnNodeDrag = exports.useOnMode = exports.useNodePositions = exports.useMove = exports.useModeGiven = exports.useMode = exports.useMinScale = exports.useMaxScale = exports.useDiagramId = exports.useDefaultShape = exports.useDefaultNodeWidth = exports.useDefaultNodeHeight = exports.useDefaultLine = exports.useConnections = exports.Providers = void 0;
4
4
  var react_interactive_shared_1 = require("@lincle/react-interactive-shared");
5
- Object.defineProperty(exports, "defaultScale", { enumerable: true, get: function () { return react_interactive_shared_1.defaultScale; } });
6
- Object.defineProperty(exports, "defaultSettings", { enumerable: true, get: function () { return react_interactive_shared_1.defaultSettings; } });
7
- Object.defineProperty(exports, "disableMove", { enumerable: true, get: function () { return react_interactive_shared_1.disableMove; } });
8
- Object.defineProperty(exports, "disablePull", { enumerable: true, get: function () { return react_interactive_shared_1.disablePull; } });
9
- Object.defineProperty(exports, "GraphContext", { enumerable: true, get: function () { return react_interactive_shared_1.GraphContext; } });
10
- Object.defineProperty(exports, "GridContext", { enumerable: true, get: function () { return react_interactive_shared_1.GridContext; } });
11
- Object.defineProperty(exports, "ModeContext", { enumerable: true, get: function () { return react_interactive_shared_1.ModeContext; } });
12
- Object.defineProperty(exports, "NodeContext", { enumerable: true, get: function () { return react_interactive_shared_1.NodeContext; } });
13
- Object.defineProperty(exports, "ScaleContext", { enumerable: true, get: function () { return react_interactive_shared_1.ScaleContext; } });
14
- Object.defineProperty(exports, "SnapContext", { enumerable: true, get: function () { return react_interactive_shared_1.SnapContext; } });
15
- Object.defineProperty(exports, "TransformContext", { enumerable: true, get: function () { return react_interactive_shared_1.TransformContext; } });
16
- Object.defineProperty(exports, "transformDefaults", { enumerable: true, get: function () { return react_interactive_shared_1.transformDefaults; } });
17
- Object.defineProperty(exports, "TranslateContext", { enumerable: true, get: function () { return react_interactive_shared_1.TranslateContext; } });
18
- Object.defineProperty(exports, "translateDefaults", { enumerable: true, get: function () { return react_interactive_shared_1.translateDefaults; } });
5
+ Object.defineProperty(exports, "Providers", { enumerable: true, get: function () { return react_interactive_shared_1.Providers; } });
6
+ Object.defineProperty(exports, "useConnections", { enumerable: true, get: function () { return react_interactive_shared_1.useConnections; } });
7
+ Object.defineProperty(exports, "useDefaultLine", { enumerable: true, get: function () { return react_interactive_shared_1.useDefaultLine; } });
8
+ Object.defineProperty(exports, "useDefaultNodeHeight", { enumerable: true, get: function () { return react_interactive_shared_1.useDefaultNodeHeight; } });
9
+ Object.defineProperty(exports, "useDefaultNodeWidth", { enumerable: true, get: function () { return react_interactive_shared_1.useDefaultNodeWidth; } });
10
+ Object.defineProperty(exports, "useDefaultShape", { enumerable: true, get: function () { return react_interactive_shared_1.useDefaultShape; } });
11
+ Object.defineProperty(exports, "useDiagramId", { enumerable: true, get: function () { return react_interactive_shared_1.useDiagramId; } });
12
+ Object.defineProperty(exports, "useMaxScale", { enumerable: true, get: function () { return react_interactive_shared_1.useMaxScale; } });
13
+ Object.defineProperty(exports, "useMinScale", { enumerable: true, get: function () { return react_interactive_shared_1.useMinScale; } });
14
+ Object.defineProperty(exports, "useMode", { enumerable: true, get: function () { return react_interactive_shared_1.useMode; } });
15
+ Object.defineProperty(exports, "useModeGiven", { enumerable: true, get: function () { return react_interactive_shared_1.useModeGiven; } });
16
+ Object.defineProperty(exports, "useMove", { enumerable: true, get: function () { return react_interactive_shared_1.useMove; } });
17
+ Object.defineProperty(exports, "useNodePositions", { enumerable: true, get: function () { return react_interactive_shared_1.useNodePositions; } });
18
+ Object.defineProperty(exports, "useOnMode", { enumerable: true, get: function () { return react_interactive_shared_1.useOnMode; } });
19
+ Object.defineProperty(exports, "useOnNodeDrag", { enumerable: true, get: function () { return react_interactive_shared_1.useOnNodeDrag; } });
20
+ Object.defineProperty(exports, "useOnNodeEdgeDrop", { enumerable: true, get: function () { return react_interactive_shared_1.useOnNodeEdgeDrop; } });
21
+ Object.defineProperty(exports, "useOnNodeSelect", { enumerable: true, get: function () { return react_interactive_shared_1.useOnNodeSelect; } });
22
+ Object.defineProperty(exports, "useOnNodeStart", { enumerable: true, get: function () { return react_interactive_shared_1.useOnNodeStart; } });
23
+ Object.defineProperty(exports, "useOnNodeStop", { enumerable: true, get: function () { return react_interactive_shared_1.useOnNodeStop; } });
24
+ Object.defineProperty(exports, "useOnScale", { enumerable: true, get: function () { return react_interactive_shared_1.useOnScale; } });
25
+ Object.defineProperty(exports, "useOnTranslate", { enumerable: true, get: function () { return react_interactive_shared_1.useOnTranslate; } });
26
+ Object.defineProperty(exports, "usePan", { enumerable: true, get: function () { return react_interactive_shared_1.usePan; } });
27
+ Object.defineProperty(exports, "usePull", { enumerable: true, get: function () { return react_interactive_shared_1.usePull; } });
28
+ Object.defineProperty(exports, "useScale", { enumerable: true, get: function () { return react_interactive_shared_1.useScale; } });
29
+ Object.defineProperty(exports, "useSetConnection", { enumerable: true, get: function () { return react_interactive_shared_1.useSetConnection; } });
30
+ Object.defineProperty(exports, "useSnap", { enumerable: true, get: function () { return react_interactive_shared_1.useSnap; } });
31
+ Object.defineProperty(exports, "useTranslate", { enumerable: true, get: function () { return react_interactive_shared_1.useTranslate; } });
32
+ Object.defineProperty(exports, "useZoom", { enumerable: true, get: function () { return react_interactive_shared_1.useZoom; } });
33
+ var react_web_base_1 = require("@lincle/react-web-base");
34
+ Object.defineProperty(exports, "GraphBase", { enumerable: true, get: function () { return react_web_base_1.Graph; } });
package/dist/styles.g.css CHANGED
@@ -1,107 +1,6 @@
1
- /* edge */
2
-
3
- .lincle-base-edges {
4
- position: absolute;
5
- z-index: -1;
6
- overflow: visible;
7
-
8
- /* width: 1px; */
9
-
10
- /* height: 1px; */
11
- filter: drop-shadow(0 3px 6px rgba(0 0 0 / 16%)) drop-shadow(0 3px 6px rgba(0 0 0 23%));
12
- backface-visibility: hidden;
13
- }
14
-
15
- .lincle-base-edges > :not(path) {
16
- cursor: unset;
17
- }
18
-
19
- .lincle-base-edge-marker-arrow {
20
- fill: black;
21
- }
22
-
23
- .lincle-base-edge-marker-circle {
24
- fill: black;
25
- }
26
-
27
- /* grid */
28
-
29
- .lincle-base-grid {
30
- position: absolute;
31
- width: 100%;
32
- height: 100%;
33
- }
34
-
35
- /* node */
36
-
37
- .lincle-base-node {
38
- position: absolute;
39
- transform-origin: 0 0;
40
- }
41
-
42
- /* path */
43
-
44
- .lincle-base-edge-path {
45
- stroke: black;
46
- }
47
-
48
- .lincle-base-edge-path:hover {
49
- animation: lincle-base-edgedash 1.5s linear reverse infinite;
50
- stroke-dasharray: 5 5;
51
- }
52
-
53
- .lincle-base-edge-dash-all .lincle-base-edge-path {
54
- animation: lincle-base-edgedash 1.5s linear reverse infinite;
55
- stroke-dasharray: 5 5;
56
- }
57
-
58
- .lincle-base-edge-dash-none .lincle-base-edge-path {
59
- animation: none;
60
- stroke-dasharray: none;
61
- }
62
-
63
- .lincle-base-edge-dash-on {
64
- animation: lincle-base-edgedash 1.5s linear reverse infinite;
65
- stroke-dasharray: 5 5;
66
- }
67
-
68
- .lincle-base-edge-dash-off.lincle-base-edge-path:hover {
69
- animation: none;
70
- stroke-dasharray: none;
71
- }
72
-
73
- .lincle-base-edge-path-border {
74
- stroke-width: 30px;
75
- stroke: black;
76
- opacity: 0;
77
- pointer-events: all;
78
- }
79
-
80
- .lincle-base-edge-path-border:hover + .lincle-base-edge-path {
81
- animation: lincle-base-edgedash 1.5s linear reverse infinite;
82
- stroke-dasharray: 5 5;
83
- }
84
-
85
- .lincle-base-edge-path-border:hover + .lincle-base-edge-dash-off.lincle-base-edge-path {
86
- animation: none;
87
- stroke-dasharray: none;
88
- }
89
-
90
- .lincle-base-edge-dash-none .lincle-base-edge-path-border:hover + .lincle-base-edge-path {
91
- animation: none;
92
- stroke-dasharray: none;
93
- }
94
-
95
- @keyframes lincle-base-edgedash {
96
- to {
97
- stroke-dashoffset: 30;
98
- }
99
- }
100
-
101
1
  /* Interaction */
102
2
 
103
3
  .lincle-interactive-graph {
104
- position: relative;
105
4
  width: 100%;
106
5
  height: 100%;
107
6
  overflow: hidden;
@@ -114,6 +13,15 @@
114
13
  cursor: all-scroll;
115
14
  }
116
15
 
16
+ .lincle-interactive-container {
17
+ position: absolute;
18
+ inset: 0;
19
+ }
20
+
21
+ .lincle-interactive-container > div {
22
+ position: initial !important;
23
+ }
24
+
117
25
  .lincle-interactive-transform {
118
26
  transform-origin: 0 0;
119
27
  will-change: transform;
@@ -146,11 +54,6 @@
146
54
  pointer-events: none;
147
55
  }
148
56
 
149
- .lincle-interactive-drag + svg > path {
150
- animation: lincle-interactive-dash 20s linear reverse infinite;
151
- stroke-dasharray: 5 5;
152
- }
153
-
154
57
  .lincle-interactive-hidden {
155
58
  opacity: 0;
156
59
  }
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.1",
5
+ "version": "0.4.0-next.11",
6
6
  "private": false,
7
7
  "description": "A 'reactive' React node and edge generator",
8
8
  "author": "wallzero @wallzeroblog (http://wallzero.com)",
@@ -20,13 +20,13 @@
20
20
  "COPYING.md",
21
21
  "COPYING.LESSER.md"
22
22
  ],
23
- "homepage": "https://gitlab.com//tree/master/packages/react-web-interactive/",
23
+ "homepage": "https://gitlab.com/tree/master/packages/react-web-interactive/",
24
24
  "repository": {
25
25
  "type": "git",
26
26
  "url": "https://gitlab.com/.git"
27
27
  },
28
28
  "bugs": {
29
- "url": "https://gitlab.com//issues"
29
+ "url": "https://gitlab.com/issues"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "run-s clean:dist build:prod build:styles",
@@ -44,35 +44,33 @@
44
44
  "clean:dist": "rimraf dist"
45
45
  },
46
46
  "devDependencies": {
47
- "@digest/eslint-config-jest": "^4.3.0",
48
- "@digest/eslint-config-react": "^4.3.0",
49
- "@digest/eslint-config-typescript": "^4.3.0",
50
- "@digest/jest-junit": "^4.3.0",
51
- "@digest/jest-react": "^4.3.0",
52
- "@digest/jest-typescript": "^4.3.0",
53
- "@digest/typescript": "^4.3.0",
54
- "@types/bezier-js": "^4.1.3",
47
+ "@digest/eslint-config-jest": "^4.4.3",
48
+ "@digest/eslint-config-react": "^4.4.3",
49
+ "@digest/eslint-config-typescript": "^4.4.3",
50
+ "@digest/jest-junit": "^4.4.3",
51
+ "@digest/jest-react": "^4.4.3",
52
+ "@digest/jest-typescript": "^4.4.3",
53
+ "@digest/stylelint-config": "^4.4.3",
54
+ "@digest/typescript": "^4.4.3",
55
55
  "@types/jest": "^29.5.12",
56
- "@types/lodash.throttle": "^4.1.9",
57
- "@types/lodash.debounce": "^4.0.9",
58
- "@types/node": "^20.12.4",
59
- "@types/react": "^18.2.74",
60
- "@types/react-dom": "^18.2.24",
61
- "@types/react-test-renderer": "^18.0.7",
56
+ "@types/node": "^22.1.0",
57
+ "@types/react": "^18.3.3",
58
+ "@types/react-dom": "^18.3.0",
59
+ "@types/react-test-renderer": "^18.3.0",
62
60
  "cross-env": "^7.0.3",
63
61
  "jest-environment-jsdom": "^29.7.0",
64
62
  "jest-environment-jsdom-global": "^4.0.0",
65
63
  "ncp": "^2.0.0",
66
64
  "npm-run-all": "^4.1.5",
67
- "react": "^18.2.0",
68
- "react-dom": "^18.2.0",
69
- "react-test-renderer": "^18.2.0",
70
- "rimraf": "^5.0.5"
65
+ "react": "^18.3.1",
66
+ "react-dom": "^18.3.1",
67
+ "react-test-renderer": "^18.3.1",
68
+ "rimraf": "^6.0.1"
71
69
  },
72
70
  "dependencies": {
73
- "@lincle/react-interactive-shared": "^0.0.1",
74
- "@lincle/react-shared": "^0.0.1",
75
- "@lincle/react-web-base": "^0.0.1",
71
+ "@lincle/react-interactive-shared": "^0.4.0-next.11",
72
+ "@lincle/react-shared": "^0.4.0-next.11",
73
+ "@lincle/react-web-base": "^0.4.0-next.11",
76
74
  "react-draggable": "^4.4.6",
77
75
  "react-map-interaction": "^2.1.0"
78
76
  },
@@ -98,5 +96,6 @@
98
96
  "cyclical graph",
99
97
  "dragndrop",
100
98
  "drag"
101
- ]
99
+ ],
100
+ "gitHead": "9dd90674f5195c828749f2b171eee3dda0cc85b6"
102
101
  }
@@ -1,4 +0,0 @@
1
- import { type GraphContextsProps } from '../../shared';
2
- import { type FunctionComponent } from 'react';
3
- declare const GraphContexts: FunctionComponent<GraphContextsProps>;
4
- export default GraphContexts;
@@ -1,167 +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 base_1 = require("../../base");
8
- const shared_1 = require("../../shared");
9
- const Grid_1 = __importDefault(require("../Grid"));
10
- const react_1 = require("react");
11
- const noGrid = [
12
- 1,
13
- 1
14
- ];
15
- const GraphContexts = ({ children, disableMove = shared_1.disableMove, disablePan = shared_1.transformDefaults.disablePan, disablePull = shared_1.disablePull, disableScale = shared_1.transformDefaults.disableScale, edgeFrequency = shared_1.defaultSettings.edgeFrequency, grid: givenGrid, id, line = shared_1.defaultSettings.line, maxScale = shared_1.transformDefaults.maxScale, minScale = shared_1.transformDefaults.minScale, mode: givenMode, nodeFrequency = shared_1.defaultSettings.nodeFrequency, nodeHeight = shared_1.defaultSettings.height, nodeWidth = shared_1.defaultSettings.width, onEdgeDrop, onNodeDrag, onNodeSelect, onNodeStart, onNodeStop, onScale, onTranslate, scale: givenScale = shared_1.defaultScale, shape = shared_1.defaultSettings.shape, snap, xOffset = shared_1.translateDefaults.x, yOffset = shared_1.translateDefaults.y }) => {
16
- const [nodeControls, setNodeControls] = (0, react_1.useState)({
17
- onEdgeDrop,
18
- onNodeDrag,
19
- onNodeSelect,
20
- onNodeStart,
21
- onNodeStop
22
- });
23
- const NodeControls = (0, react_1.useMemo)(() => {
24
- return {
25
- onEdgeDrop,
26
- onNodeDrag,
27
- onNodeSelect,
28
- onNodeStart,
29
- onNodeStop,
30
- setNodeControls
31
- };
32
- }, [
33
- onEdgeDrop,
34
- onNodeDrag,
35
- onNodeSelect,
36
- onNodeStart,
37
- onNodeStop,
38
- setNodeControls
39
- ]);
40
- const transform = (0, react_1.useMemo)(() => {
41
- return {
42
- disablePan,
43
- disableScale,
44
- maxScale,
45
- minScale
46
- };
47
- }, [
48
- disablePan,
49
- disableScale,
50
- maxScale,
51
- minScale
52
- ]);
53
- const [mode, setMode] = (0, react_1.useState)(givenMode);
54
- const handleMode = (0, react_1.useCallback)((newMode) => {
55
- setMode(newMode);
56
- }, []);
57
- const Mode = (0, react_1.useMemo)(() => {
58
- return {
59
- disableMove,
60
- disablePull,
61
- givenMode,
62
- mode,
63
- onMode: handleMode
64
- };
65
- }, [
66
- disableMove,
67
- disablePull,
68
- givenMode,
69
- handleMode,
70
- mode
71
- ]);
72
- (0, react_1.useEffect)(() => {
73
- handleMode(givenMode);
74
- }, [
75
- givenMode,
76
- handleMode
77
- ]);
78
- const [scale, setScale] = (0, react_1.useState)(givenScale);
79
- const handleScale = (0, react_1.useCallback)((newScale) => {
80
- if (onScale) {
81
- onScale(newScale);
82
- }
83
- setScale(newScale);
84
- }, [
85
- onScale
86
- ]);
87
- const Scale = (0, react_1.useMemo)(() => {
88
- return {
89
- onScale: handleScale,
90
- scale
91
- };
92
- }, [
93
- handleScale,
94
- scale
95
- ]);
96
- (0, react_1.useEffect)(() => {
97
- setScale(givenScale);
98
- }, [
99
- givenScale
100
- ]);
101
- const [translate, setTranslate] = (0, react_1.useState)({
102
- x: xOffset,
103
- y: yOffset
104
- });
105
- const handleTranslate = (0, react_1.useCallback)((newTranslate) => {
106
- if (onTranslate) {
107
- onTranslate(newTranslate);
108
- }
109
- setTranslate(newTranslate);
110
- }, [
111
- onTranslate
112
- ]);
113
- const Translate = (0, react_1.useMemo)(() => {
114
- return {
115
- onTranslate: handleTranslate,
116
- translate
117
- };
118
- }, [
119
- handleTranslate,
120
- translate
121
- ]);
122
- (0, react_1.useEffect)(() => {
123
- setTranslate({
124
- x: xOffset,
125
- y: yOffset
126
- });
127
- }, [
128
- xOffset,
129
- yOffset
130
- ]);
131
- const grid = (0, react_1.useMemo)(() => {
132
- var _a;
133
- return (_a = (givenGrid === false ?
134
- noGrid :
135
- givenGrid)) !== null && _a !== void 0 ? _a : shared_1.defaultSettings.grid;
136
- }, [
137
- givenGrid
138
- ]);
139
- const derivedSnap = (0, react_1.useMemo)(() => {
140
- if (snap === undefined) {
141
- return givenGrid === undefined ?
142
- noGrid :
143
- grid;
144
- }
145
- if (snap === false) {
146
- return noGrid;
147
- }
148
- if (snap === true) {
149
- return grid;
150
- }
151
- return snap;
152
- }, [
153
- givenGrid,
154
- grid,
155
- snap
156
- ]);
157
- const hiddenGrid = givenGrid === false ?
158
- null :
159
- ((0, jsx_runtime_1.jsx)(Grid_1.default, {}));
160
- const staticContexts = ((0, jsx_runtime_1.jsx)(shared_1.NodeContext.Provider, { value: NodeControls, children: (0, jsx_runtime_1.jsx)(shared_1.SnapContext.Provider, { value: derivedSnap, children: (0, jsx_runtime_1.jsx)(shared_1.TransformContext.Provider, { value: transform, children: (0, jsx_runtime_1.jsx)(shared_1.ModeContext.Provider, { value: Mode, children: (0, jsx_runtime_1.jsx)(shared_1.ScaleContext.Provider, { value: Scale, children: (0, jsx_runtime_1.jsxs)(shared_1.TranslateContext.Provider, { value: Translate, children: [hiddenGrid, children] }) }) }) }) }) }));
161
- const gridContext = givenGrid === false ?
162
- staticContexts :
163
- ((0, jsx_runtime_1.jsx)(shared_1.GridContext.Provider, { value: givenGrid !== null && givenGrid !== void 0 ? givenGrid : shared_1.defaultSettings.grid, children: staticContexts }));
164
- return ((0, jsx_runtime_1.jsx)(base_1.GraphContexts, { edgeFrequency: edgeFrequency, grid: false, id: id, line: line, nodeFrequency: nodeFrequency, nodeHeight: nodeHeight, nodeWidth: nodeWidth, shape: shape, children: gridContext }));
165
- };
166
- GraphContexts.displayName = 'LincleInteractiveGraphContexts';
167
- exports.default = GraphContexts;
@@ -1,13 +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 Grid = ({ children }) => {
8
- const { scale } = (0, react_1.useContext)(shared_1.ScaleContext);
9
- const { translate } = (0, react_1.useContext)(shared_1.TranslateContext);
10
- return ((0, jsx_runtime_1.jsx)(base_1.Grid, { scale: scale, xOffset: translate.x, yOffset: translate.y, children: children }));
11
- };
12
- Grid.displayName = 'LincleInteractiveGrid';
13
- exports.default = Grid;
@@ -1 +0,0 @@
1
- export { Path as default } from '../../base';
@@ -1,4 +0,0 @@
1
- /// <reference types="react" />
2
- import { type PullProps } from '../../shared';
3
- declare const _default: import("react").ForwardRefExoticComponent<Omit<PullProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
4
- export default _default;
@@ -1,153 +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
- Object.defineProperty(exports, "__esModule", { value: true });
14
- const jsx_runtime_1 = require("react/jsx-runtime");
15
- const base_1 = require("../../base");
16
- const shared_1 = require("../../shared");
17
- const react_1 = require("react");
18
- const emptyTranslation = [
19
- undefined,
20
- undefined
21
- ];
22
- const Pull = (_a, ref) => {
23
- var _b, _c, _d, _e, _f, _g;
24
- var { className = '', diagramId, height = 0, line: givenLine, markerEnd, markerStart, onDrag, path, shape: givenShape, sourceId, style, width = 0, x: givenX, y: givenY } = _a, additionalProps = __rest(_a, ["className", "diagramId", "height", "line", "markerEnd", "markerStart", "onDrag", "path", "shape", "sourceId", "style", "width", "x", "y"]);
25
- const defaultLine = (_c = (_b = (0, react_1.useContext)(shared_1.GraphContext)) === null || _b === void 0 ? void 0 : _b.defaultSettings) === null || _c === void 0 ? void 0 : _c.line;
26
- const defaultShape = (_e = (_d = (0, react_1.useContext)(shared_1.GraphContext)) === null || _d === void 0 ? void 0 : _d.defaultSettings) === null || _e === void 0 ? void 0 : _e.shape;
27
- const line = (_f = givenLine !== null && givenLine !== void 0 ? givenLine : defaultLine) !== null && _f !== void 0 ? _f : shared_1.defaultSettings.line;
28
- const shape = (_g = givenShape !== null && givenShape !== void 0 ? givenShape : defaultShape) !== null && _g !== void 0 ? _g : shared_1.defaultSettings.shape;
29
- const { x, y } = (0, react_1.useMemo)(() => {
30
- var _a, _b, _c, _d;
31
- if (!(givenX || givenY)) {
32
- const getNumber = /(-?\d+(\.\d+)?)/ug;
33
- const [translateX, translateY] = ((_a = style === null || style === void 0 ? void 0 : style.pull) === null || _a === void 0 ? void 0 : _a.transform) ?
34
- (_b = style.pull.transform.match(getNumber)) !== null && _b !== void 0 ? _b : emptyTranslation :
35
- emptyTranslation;
36
- const left = ((_c = style === null || style === void 0 ? void 0 : style.pull) === null || _c === void 0 ? void 0 : _c.left) ?
37
- style.pull.left :
38
- undefined;
39
- const top = ((_d = style === null || style === void 0 ? void 0 : style.pull) === null || _d === void 0 ? void 0 : _d.top) ?
40
- style.pull.top :
41
- undefined;
42
- return {
43
- x: Number(translateX) || Number(left) || 0,
44
- y: Number(translateY) || Number(top) || 0
45
- };
46
- }
47
- return {
48
- x: givenX !== null && givenX !== void 0 ? givenX : 0,
49
- y: givenY !== null && givenY !== void 0 ? givenY : 0
50
- };
51
- }, [
52
- givenX,
53
- givenY,
54
- style
55
- ]);
56
- const start = (0, react_1.useRef)({
57
- x,
58
- y
59
- });
60
- const position = (0, react_1.useRef)({
61
- moved: false,
62
- x,
63
- y
64
- });
65
- position.current = {
66
- moved: x !== start.current.x ||
67
- y !== start.current.y,
68
- x,
69
- y
70
- };
71
- const adjustedStyle = (0, react_1.useMemo)(() => {
72
- var _a;
73
- const transform = ((_a = style === null || style === void 0 ? void 0 : style.pull) === null || _a === void 0 ? void 0 : _a.transform) ?
74
- style.pull.transform :
75
- `translate(${x}px, ${y}px)`;
76
- return Object.assign(Object.assign(Object.assign({}, style), position.current.moved ?
77
- undefined :
78
- {
79
- height,
80
- width
81
- }), { transform });
82
- }, [
83
- height,
84
- style,
85
- width,
86
- x,
87
- y
88
- ]);
89
- const source = (0, react_1.useMemo)(() => {
90
- return {
91
- height,
92
- id: sourceId,
93
- shape,
94
- width,
95
- x: start.current.x,
96
- y: start.current.y
97
- };
98
- }, [
99
- height,
100
- shape,
101
- sourceId,
102
- width
103
- ]);
104
- const target = (0, react_1.useMemo)(() => {
105
- return {
106
- height: 0,
107
- id: '',
108
- shape: 'rectangle',
109
- width: 0,
110
- x,
111
- y
112
- };
113
- }, [
114
- x,
115
- y
116
- ]);
117
- const markerId = (0, react_1.useMemo)(() => {
118
- return diagramId ?
119
- `${diagramId}-` :
120
- '';
121
- }, [
122
- diagramId
123
- ]);
124
- const svg = (0, react_1.useMemo)(() => {
125
- if (position.current.moved) {
126
- if (path) {
127
- return path('potential', source, target);
128
- }
129
- return ((0, jsx_runtime_1.jsx)(base_1.Path, { id: 'potential', line: line, markerEnd: markerEnd || diagramId ?
130
- `url(#diagram-${markerId}marker-arrow)` :
131
- undefined, markerStart: markerStart || diagramId ?
132
- `url(#diagram-${markerId}marker-circle)` :
133
- undefined, source: source, target: target }));
134
- }
135
- return null;
136
- }, [
137
- diagramId,
138
- line,
139
- markerEnd,
140
- markerId,
141
- markerStart,
142
- path,
143
- source,
144
- target
145
- ]);
146
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ className: `${className} ${position.current.moved ?
147
- 'lincle-interactive-moved' :
148
- 'lincle-interactive-hidden'} lincle-interactive-drag`, onDrag: onDrag, ref: ref, style: adjustedStyle }, additionalProps)), (0, jsx_runtime_1.jsx)("svg", { className: position.current.moved ?
149
- '' :
150
- 'lincle-interactive-hidden', children: svg })] }));
151
- };
152
- Pull.displayName = 'LincleInteractivePull';
153
- exports.default = (0, react_1.forwardRef)(Pull);