sample-ui-component-library 0.0.44-dev → 0.0.46-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sample-ui-component-library",
3
- "version": "0.0.44-dev",
3
+ "version": "0.0.46-dev",
4
4
  "description": "A library which contains sample UI elements that can be used for populating layouts.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useState, useRef, useImperativeHandle, forwardRef, useMemo, useCallback } from "react";
2
- import { Canvas, Node, Edge, removeAndUpsertNodes } from 'reaflow';
2
+ import { Canvas, Node, Edge } from 'reaflow';
3
3
  import PropTypes from 'prop-types';
4
4
 
5
5
  import { designToNodes } from "./helper";
@@ -11,7 +11,7 @@ import "./BehavioralGraphBuilder.scss";
11
11
  *
12
12
  * @return {JSX}
13
13
  */
14
- export const BehavioralGraphBuilder = forwardRef(({connectBehaviors, deleteTransition, deleteBehavior}, ref) => {
14
+ export const BehavioralGraphBuilder = forwardRef(({connectBehaviors, deleteTransition, deleteBehavior, selectBehavior}, ref) => {
15
15
  const canvasRef = useRef();
16
16
 
17
17
  // Resizer to set canvas size to match container
@@ -28,15 +28,12 @@ export const BehavioralGraphBuilder = forwardRef(({connectBehaviors, deleteTrans
28
28
  return () => observer.disconnect();
29
29
  }, []);
30
30
 
31
-
31
+ // States
32
32
  const [edges, setEdges] = useState([]);
33
33
  const [nodes, setNodes] = useState([]);
34
34
  const [selections, setSelections] = useState([]);
35
- '1'
36
- const onNodeLink =(_event, from, to) => {
37
- connectBehaviors(from, to);
38
- }
39
35
 
36
+ // API Methods and Imperative Handle
40
37
  const updateEngine = useCallback((engine) => {
41
38
  if (engine) {
42
39
  const { nodes, edges } = designToNodes(engine);
@@ -53,49 +50,57 @@ export const BehavioralGraphBuilder = forwardRef(({connectBehaviors, deleteTrans
53
50
 
54
51
  useImperativeHandle(ref, () => api, [api]);
55
52
 
53
+
54
+ // Callbacks
56
55
  const handleWheel = useCallback((e) => {
57
- if (e.deltaY < 0) {
58
- canvasRef.current.zoomIn()
59
- } else {
60
- canvasRef.current.zoomOut();
61
- }
56
+ (e.deltaY < 0)?canvasRef.current.zoomIn():canvasRef.current.zoomOut();
62
57
  }, [canvasRef]);
63
58
 
59
+ const nodeClick = useCallback((e, node) => {
60
+ setSelections([node.id]);
61
+ selectBehavior(node.id);
62
+ }, [selectBehavior]);
63
+
64
+ const nodeRemove = useCallback((e, node) => {
65
+ deleteBehavior(node);
66
+ setSelections([]);
67
+ }, [deleteBehavior]);
68
+
69
+ const edgeClick = useCallback((e, edge) => {
70
+ setSelections([edge.id]);
71
+ }, []);
72
+
73
+ const edgeRemove = useCallback((e, edge) => {
74
+ deleteTransition(edge);
75
+ setSelections([]);
76
+ }, [deleteTransition]);
77
+
78
+ const canvasClick = useCallback((e) => {
79
+ selectBehavior(null);
80
+ setSelections([]);
81
+ }, [selectBehavior]);
82
+
83
+ const nodeLink = useCallback((e, from, to) => {
84
+ if (!to) return;
85
+ connectBehaviors(from, to);
86
+ }, [connectBehaviors]);
87
+
64
88
  return (
65
89
  <div onWheel={handleWheel} ref={containerRef} className="canvas-wrapper">
66
90
  <Canvas
91
+ panType="drag"
92
+ fit
93
+ center
67
94
  ref={canvasRef}
68
95
  nodes={nodes}
69
96
  edges={edges}
70
97
  width={size.width}
71
98
  height={size.height}
72
- onNodeLink={onNodeLink}
73
- panType="drag"
74
- selections={selections}node={
75
- <Node
76
- onClick={(event, node) => {
77
- setSelections([node.id]);
78
- }}
79
- onRemove={(event, node) => {
80
- deleteBehavior(node);
81
- setSelections([]);
82
- }}
83
- />
84
- }
85
- edge={
86
- <Edge
87
- onClick={(event, edge) => {
88
- setSelections([edge.id]);
89
- }}
90
- onRemove={(event, edge) => {
91
- deleteTransition(edge);
92
- setSelections([]);
93
- }}
94
- />
95
- }
96
- onCanvasClick={(event) => {setSelections([]);}}
97
- fit
98
- center
99
+ selections={selections}
100
+ onNodeLink={nodeLink}
101
+ node={ <Node onClick={nodeClick} onRemove={nodeRemove} /> }
102
+ edge={ <Edge onClick={edgeClick} onRemove={edgeRemove}/> }
103
+ onCanvasClick={canvasClick}
99
104
  />
100
105
  </div>
101
106
  )
@@ -103,5 +108,7 @@ export const BehavioralGraphBuilder = forwardRef(({connectBehaviors, deleteTrans
103
108
 
104
109
  BehavioralGraphBuilder.propTypes = {
105
110
  connectBehaviors: PropTypes.func.isRequired,
106
- deleteBehavior: PropTypes.func.isRequired
111
+ deleteTransition: PropTypes.func.isRequired,
112
+ deleteBehavior: PropTypes.func.isRequired,
113
+ selectBehavior: PropTypes.func.isRequired,
107
114
  }
@@ -90,6 +90,14 @@ const Template = (args) => {
90
90
  },
91
91
  [engine, editorRef],
92
92
  );
93
+
94
+ const selectBehavior = useCallback(
95
+ (nodeId) => {
96
+ action("Select Behavior")(nodeId);
97
+ },
98
+ [],
99
+ );
100
+
93
101
  return (
94
102
  <div className="graphBuilderRootContainer">
95
103
  <div className="toolbar">
@@ -102,6 +110,7 @@ const Template = (args) => {
102
110
  connectBehaviors={connectBehaviors}
103
111
  deleteTransition={deleteTransition}
104
112
  deleteBehavior={deleteBehavior}
113
+ selectBehavior={selectBehavior}
105
114
  />
106
115
  </div>
107
116
  </div>