|
|
|
|
@@ -146,10 +146,26 @@
|
|
|
|
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _toConsumableArray(arr) {
|
|
|
|
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _arrayWithoutHoles(arr) {
|
|
|
|
|
if (Array.isArray(arr)) {
|
|
|
|
|
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
|
|
|
|
|
|
|
|
|
return arr2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _arrayWithHoles(arr) {
|
|
|
|
|
if (Array.isArray(arr)) return arr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _iterableToArray(iter) {
|
|
|
|
|
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _iterableToArrayLimit(arr, i) {
|
|
|
|
|
var _arr = [];
|
|
|
|
|
var _n = true;
|
|
|
|
|
@@ -176,12 +192,16 @@
|
|
|
|
|
return _arr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _nonIterableSpread() {
|
|
|
|
|
throw new TypeError("Invalid attempt to spread non-iterable instance");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _nonIterableRest() {
|
|
|
|
|
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var isEdge = function isEdge(element) {
|
|
|
|
|
return element.data.source && element.data.target;
|
|
|
|
|
return element.data && element.data.source && element.data.target;
|
|
|
|
|
};
|
|
|
|
|
var parseElements = function parseElements(e) {
|
|
|
|
|
return _objectSpread2({}, e, {
|
|
|
|
|
@@ -256,6 +276,14 @@
|
|
|
|
|
return position.x > bboxPos.x && position.x + width < bboxPos.x + bboxWidth && position.y > bboxPos.y && position.y + height < bboxPos.y + bboxHeight;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
var getConnectedEdges = function getConnectedEdges(nodes, edges) {
|
|
|
|
|
var nodeIds = nodes.map(function (n) {
|
|
|
|
|
return n.data.id;
|
|
|
|
|
});
|
|
|
|
|
return edges.filter(function (e) {
|
|
|
|
|
return nodeIds.includes(e.data.source) || nodeIds.includes(e.data.target);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var noop = {value: function() {}};
|
|
|
|
|
|
|
|
|
|
@@ -29798,7 +29826,7 @@
|
|
|
|
|
var UPDATE_SELECTION = 'UPDATE_SELECTION';
|
|
|
|
|
var SET_SELECTION = 'SET_SELECTION';
|
|
|
|
|
var SET_NODES_SELECTION = 'SET_NODES_SELECTION';
|
|
|
|
|
var SET_SELECTED_NODES_IDS = 'SET_SELECTED_NODES_IDS';
|
|
|
|
|
var SET_SELECTED_ELEMENTS = 'SET_SELECTED_ELEMENTS';
|
|
|
|
|
var REMOVE_NODES = 'REMOVE_NODES';
|
|
|
|
|
var initialState = {
|
|
|
|
|
width: 0,
|
|
|
|
|
@@ -29806,7 +29834,7 @@
|
|
|
|
|
transform: [0, 0, 1],
|
|
|
|
|
nodes: [],
|
|
|
|
|
edges: [],
|
|
|
|
|
selectedNodeIds: [],
|
|
|
|
|
selectedElements: [],
|
|
|
|
|
selectedNodesBbox: {
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
@@ -29865,11 +29893,9 @@
|
|
|
|
|
case UPDATE_SELECTION:
|
|
|
|
|
{
|
|
|
|
|
var selectedNodes = getNodesInside(state.nodes, action.payload.selection, state.transform);
|
|
|
|
|
var selectedNodeIds = selectedNodes.map(function (n) {
|
|
|
|
|
return n.data.id;
|
|
|
|
|
});
|
|
|
|
|
var selectedEdges = getConnectedEdges(selectedNodes, state.edges);
|
|
|
|
|
return _objectSpread2({}, state, {}, action.payload, {
|
|
|
|
|
selectedNodeIds: selectedNodeIds
|
|
|
|
|
selectedElements: [].concat(_toConsumableArray(selectedNodes), _toConsumableArray(selectedEdges))
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -29878,7 +29904,7 @@
|
|
|
|
|
if (!action.payload.nodesSelectionActive) {
|
|
|
|
|
return _objectSpread2({}, state, {
|
|
|
|
|
nodesSelectionActive: false,
|
|
|
|
|
selectedNodeIds: []
|
|
|
|
|
selectedElements: []
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -29889,6 +29915,7 @@
|
|
|
|
|
selectedNodesBbox: selectedNodesBbox
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// unused
|
|
|
|
|
|
|
|
|
|
case REMOVE_NODES:
|
|
|
|
|
{
|
|
|
|
|
@@ -29911,7 +29938,7 @@
|
|
|
|
|
case INIT_D3:
|
|
|
|
|
case UPDATE_SIZE:
|
|
|
|
|
case SET_SELECTION:
|
|
|
|
|
case SET_SELECTED_NODES_IDS:
|
|
|
|
|
case SET_SELECTED_ELEMENTS:
|
|
|
|
|
return _objectSpread2({}, state, {}, action.payload);
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
@@ -30003,12 +30030,12 @@
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
var setSelectedNodesIds = function setSelectedNodesIds(ids) {
|
|
|
|
|
var idArray = Array.isArray(ids) ? ids : [ids];
|
|
|
|
|
var setSelectedElements = function setSelectedElements(elements) {
|
|
|
|
|
var elementsArray = Array.isArray(elements) ? elements : [elements];
|
|
|
|
|
return {
|
|
|
|
|
type: SET_SELECTED_NODES_IDS,
|
|
|
|
|
type: SET_SELECTED_ELEMENTS,
|
|
|
|
|
payload: {
|
|
|
|
|
selectedNodeIds: idArray,
|
|
|
|
|
selectedElements: elementsArray,
|
|
|
|
|
nodesSelectionActive: false
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
@@ -30025,7 +30052,7 @@
|
|
|
|
|
var GraphContext = React.createContext({});
|
|
|
|
|
|
|
|
|
|
var Provider = function Provider(props) {
|
|
|
|
|
var onNodeClick = props.onNodeClick,
|
|
|
|
|
var onElementClick = props.onElementClick,
|
|
|
|
|
children = props.children;
|
|
|
|
|
|
|
|
|
|
var _useReducer = React.useReducer(reducer, initialState),
|
|
|
|
|
@@ -30059,7 +30086,7 @@
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
var graphContext = {
|
|
|
|
|
onNodeClick: onNodeClick,
|
|
|
|
|
onElementClick: onElementClick,
|
|
|
|
|
state: state,
|
|
|
|
|
dispatch: dispatch
|
|
|
|
|
};
|
|
|
|
|
@@ -30090,7 +30117,7 @@
|
|
|
|
|
|
|
|
|
|
_createClass(NodeRenderer, [{
|
|
|
|
|
key: "renderNode",
|
|
|
|
|
value: function renderNode(d, onNodeClick) {
|
|
|
|
|
value: function renderNode(d, onElementClick) {
|
|
|
|
|
var nodeType = d.data.type || 'default';
|
|
|
|
|
|
|
|
|
|
if (!this.props.nodeTypes[nodeType]) {
|
|
|
|
|
@@ -30100,7 +30127,7 @@
|
|
|
|
|
var NodeComponent = this.props.nodeTypes[nodeType] || this.props.nodeTypes["default"];
|
|
|
|
|
return React__default.createElement(NodeComponent, _extends({
|
|
|
|
|
key: d.data.id,
|
|
|
|
|
onNodeClick: onNodeClick
|
|
|
|
|
onClick: onElementClick
|
|
|
|
|
}, d));
|
|
|
|
|
}
|
|
|
|
|
}, {
|
|
|
|
|
@@ -30109,7 +30136,7 @@
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
return React__default.createElement(Consumer, null, function (_ref) {
|
|
|
|
|
var onNodeClick = _ref.onNodeClick,
|
|
|
|
|
var onElementClick = _ref.onElementClick,
|
|
|
|
|
state = _ref.state;
|
|
|
|
|
return React__default.createElement("div", {
|
|
|
|
|
className: "react-graph__nodes",
|
|
|
|
|
@@ -30117,7 +30144,7 @@
|
|
|
|
|
transform: "translate(".concat(state.transform[0], "px,").concat(state.transform[1], "px) scale(").concat(state.transform[2], ")")
|
|
|
|
|
}
|
|
|
|
|
}, state.nodes.map(function (d) {
|
|
|
|
|
return _this.renderNode(d, onNodeClick);
|
|
|
|
|
return _this.renderNode(d, onElementClick);
|
|
|
|
|
}));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@@ -30126,42 +30153,6 @@
|
|
|
|
|
return NodeRenderer;
|
|
|
|
|
}(React.PureComponent);
|
|
|
|
|
|
|
|
|
|
var Edge = (function (props) {
|
|
|
|
|
var targetNode = props.targetNode,
|
|
|
|
|
sourceNode = props.sourceNode;
|
|
|
|
|
var sourceX = sourceNode.__rg.position.x + sourceNode.__rg.width / 2;
|
|
|
|
|
var sourceY = sourceNode.__rg.position.y + sourceNode.__rg.height;
|
|
|
|
|
var targetX = targetNode.__rg.position.x + targetNode.__rg.width / 2;
|
|
|
|
|
var targetY = targetNode.__rg.position.y;
|
|
|
|
|
return React__default.createElement("path", {
|
|
|
|
|
className: "react-graph__edge",
|
|
|
|
|
d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(targetX, ",").concat(targetY)
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function renderEdge(e, nodes) {
|
|
|
|
|
var sourceNode = nodes.find(function (n) {
|
|
|
|
|
return n.data.id === e.data.source;
|
|
|
|
|
});
|
|
|
|
|
var targetNode = nodes.find(function (n) {
|
|
|
|
|
return n.data.id === e.data.target;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!sourceNode) {
|
|
|
|
|
throw new Error("couldn't create edge for source id: ".concat(e.data.source));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!targetNode) {
|
|
|
|
|
throw new Error("couldn't create edge for source id: ".concat(e.data.target));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React__default.createElement(Edge, {
|
|
|
|
|
key: "".concat(e.data.source, "-").concat(e.data.target),
|
|
|
|
|
sourceNode: sourceNode,
|
|
|
|
|
targetNode: targetNode
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var EdgeRenderer =
|
|
|
|
|
/*#__PURE__*/
|
|
|
|
|
function (_PureComponent) {
|
|
|
|
|
@@ -30174,8 +30165,37 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_createClass(EdgeRenderer, [{
|
|
|
|
|
key: "renderEdge",
|
|
|
|
|
value: function renderEdge(e, nodes, onElementClick) {
|
|
|
|
|
var edgeType = e.data.type || 'default';
|
|
|
|
|
var sourceNode = nodes.find(function (n) {
|
|
|
|
|
return n.data.id === e.data.source;
|
|
|
|
|
});
|
|
|
|
|
var targetNode = nodes.find(function (n) {
|
|
|
|
|
return n.data.id === e.data.target;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!sourceNode) {
|
|
|
|
|
throw new Error("couldn't create edge for source id: ".concat(e.data.source));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!targetNode) {
|
|
|
|
|
throw new Error("couldn't create edge for source id: ".concat(e.data.target));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var EdgeComponent = this.props.edgeTypes[edgeType] || this.props.edgeTypes["default"];
|
|
|
|
|
return React__default.createElement(EdgeComponent, _extends({
|
|
|
|
|
key: "".concat(e.data.source, "-").concat(e.data.target),
|
|
|
|
|
sourceNode: sourceNode,
|
|
|
|
|
targetNode: targetNode,
|
|
|
|
|
onClick: onElementClick
|
|
|
|
|
}, e));
|
|
|
|
|
}
|
|
|
|
|
}, {
|
|
|
|
|
key: "render",
|
|
|
|
|
value: function render() {
|
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
|
|
var _this$props = this.props,
|
|
|
|
|
width = _this$props.width,
|
|
|
|
|
height = _this$props.height;
|
|
|
|
|
@@ -30185,7 +30205,8 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return React__default.createElement(Consumer, null, function (_ref) {
|
|
|
|
|
var state = _ref.state;
|
|
|
|
|
var state = _ref.state,
|
|
|
|
|
onElementClick = _ref.onElementClick;
|
|
|
|
|
return React__default.createElement("svg", {
|
|
|
|
|
width: width,
|
|
|
|
|
height: height,
|
|
|
|
|
@@ -30193,7 +30214,7 @@
|
|
|
|
|
}, React__default.createElement("g", {
|
|
|
|
|
transform: "translate(".concat(state.transform[0], ",").concat(state.transform[1], ") scale(").concat(state.transform[2], ")")
|
|
|
|
|
}, state.edges.map(function (e) {
|
|
|
|
|
return renderEdge(e, state.nodes);
|
|
|
|
|
return _this.renderEdge(e, state.nodes, onElementClick);
|
|
|
|
|
})));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@@ -30234,8 +30255,8 @@
|
|
|
|
|
React.useEffect(function () {
|
|
|
|
|
function onMouseDown(evt) {
|
|
|
|
|
var mousePos = getMousePosition(evt);
|
|
|
|
|
setRect(function (r) {
|
|
|
|
|
return _objectSpread2({}, r, {
|
|
|
|
|
setRect(function (currentRect) {
|
|
|
|
|
return _objectSpread2({}, currentRect, {
|
|
|
|
|
startX: mousePos.x,
|
|
|
|
|
startY: mousePos.y,
|
|
|
|
|
x: mousePos.x,
|
|
|
|
|
@@ -30247,20 +30268,20 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onMouseMove(evt) {
|
|
|
|
|
setRect(function (r) {
|
|
|
|
|
if (!r.draw) {
|
|
|
|
|
return r;
|
|
|
|
|
setRect(function (currentRect) {
|
|
|
|
|
if (!currentRect.draw) {
|
|
|
|
|
return currentRect;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var mousePos = getMousePosition(evt);
|
|
|
|
|
var negativeX = mousePos.x < r.startX;
|
|
|
|
|
var negativeY = mousePos.y < r.startY;
|
|
|
|
|
var negativeX = mousePos.x < currentRect.startX;
|
|
|
|
|
var negativeY = mousePos.y < currentRect.startY;
|
|
|
|
|
|
|
|
|
|
var nextRect = _objectSpread2({}, r, {
|
|
|
|
|
x: negativeX ? mousePos.x : r.x,
|
|
|
|
|
y: negativeY ? mousePos.y : r.y,
|
|
|
|
|
width: negativeX ? r.startX - mousePos.x : mousePos.x - r.startX,
|
|
|
|
|
height: negativeY ? r.startY - mousePos.y : mousePos.y - r.startY
|
|
|
|
|
var nextRect = _objectSpread2({}, currentRect, {
|
|
|
|
|
x: negativeX ? mousePos.x : currentRect.x,
|
|
|
|
|
y: negativeY ? mousePos.y : currentRect.y,
|
|
|
|
|
width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX,
|
|
|
|
|
height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
dispatch(updateSelection(nextRect));
|
|
|
|
|
@@ -30269,17 +30290,15 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onMouseUp() {
|
|
|
|
|
setRect(function (r) {
|
|
|
|
|
var nextRect = _objectSpread2({}, r, {
|
|
|
|
|
fixed: true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
setRect(function (currentRect) {
|
|
|
|
|
dispatch(setNodesSelection({
|
|
|
|
|
isActive: true,
|
|
|
|
|
selection: nextRect
|
|
|
|
|
selection: currentRect
|
|
|
|
|
}));
|
|
|
|
|
dispatch(setSelection(false));
|
|
|
|
|
return nextRect;
|
|
|
|
|
return _objectSpread2({}, currentRect, {
|
|
|
|
|
draw: false
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -30420,7 +30439,8 @@
|
|
|
|
|
nodeTypes: props.nodeTypes
|
|
|
|
|
}), React__default.createElement(EdgeRenderer, {
|
|
|
|
|
width: state.width,
|
|
|
|
|
height: state.height
|
|
|
|
|
height: state.height,
|
|
|
|
|
edgeTypes: props.edgeTypes
|
|
|
|
|
}), shiftPressed && React__default.createElement(UserSelection, null), state.nodesSelectionActive && React__default.createElement(NodesSelection, null), React__default.createElement("div", {
|
|
|
|
|
className: "react-graph__zoompane",
|
|
|
|
|
onClick: function onClick() {
|
|
|
|
|
@@ -30443,8 +30463,15 @@
|
|
|
|
|
|
|
|
|
|
var removePressed = useKeyPress('Backspace');
|
|
|
|
|
React.useEffect(function () {
|
|
|
|
|
if (removePressed && state.selectedNodeIds.length) {
|
|
|
|
|
props.onNodeRemove(state.selectedNodeIds);
|
|
|
|
|
if (removePressed && state.selectedElements.length) {
|
|
|
|
|
var elementsToRemove = state.selectedElements; // we also want to remove the edges if only one node is selected
|
|
|
|
|
|
|
|
|
|
if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {
|
|
|
|
|
var connectedEdges = getConnectedEdges(state.selectedElements, state.edges);
|
|
|
|
|
elementsToRemove = [].concat(_toConsumableArray(state.selectedElements), _toConsumableArray(connectedEdges));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
props.onElementsRemove(elementsToRemove);
|
|
|
|
|
dispatch(setNodesSelection({
|
|
|
|
|
isActive: false
|
|
|
|
|
}));
|
|
|
|
|
@@ -32804,7 +32831,7 @@
|
|
|
|
|
setOffset = _useState2[1];
|
|
|
|
|
|
|
|
|
|
var data = props.data,
|
|
|
|
|
onNodeClick = props.onNodeClick,
|
|
|
|
|
_onClick = props.onClick,
|
|
|
|
|
__rg = props.__rg;
|
|
|
|
|
var position = __rg.position;
|
|
|
|
|
var id = data.id;
|
|
|
|
|
@@ -32814,7 +32841,11 @@
|
|
|
|
|
y = _state$transform[1],
|
|
|
|
|
k = _state$transform[2];
|
|
|
|
|
|
|
|
|
|
var selected = state.selectedNodeIds.includes(id);
|
|
|
|
|
var selected = state.selectedElements.filter(function (e) {
|
|
|
|
|
return !isEdge(e);
|
|
|
|
|
}).map(function (e) {
|
|
|
|
|
return e.data.id;
|
|
|
|
|
}).includes(id);
|
|
|
|
|
var nodeClasses = classnames('react-graph__node', {
|
|
|
|
|
selected: selected
|
|
|
|
|
});
|
|
|
|
|
@@ -32869,8 +32900,11 @@
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispatch(setSelectedNodesIds(id));
|
|
|
|
|
onNodeClick({
|
|
|
|
|
dispatch(setSelectedElements({
|
|
|
|
|
data: data
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
_onClick({
|
|
|
|
|
data: data,
|
|
|
|
|
position: position
|
|
|
|
|
});
|
|
|
|
|
@@ -32894,6 +32928,70 @@
|
|
|
|
|
return _objectSpread2({}, standardTypes, {}, specialTypes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var DefaultEdge = (function (props) {
|
|
|
|
|
var targetNode = props.targetNode,
|
|
|
|
|
sourceNode = props.sourceNode;
|
|
|
|
|
var sourceX = sourceNode.__rg.position.x + sourceNode.__rg.width / 2;
|
|
|
|
|
var sourceY = sourceNode.__rg.position.y + sourceNode.__rg.height;
|
|
|
|
|
var targetX = targetNode.__rg.position.x + targetNode.__rg.width / 2;
|
|
|
|
|
var targetY = targetNode.__rg.position.y;
|
|
|
|
|
return React__default.createElement("path", {
|
|
|
|
|
d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(targetX, ",").concat(targetY)
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var isInputTarget$1 = function isInputTarget(e) {
|
|
|
|
|
return ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var wrapEdge = (function (EdgeComponent) {
|
|
|
|
|
return function (props) {
|
|
|
|
|
var _useContext = React.useContext(GraphContext),
|
|
|
|
|
state = _useContext.state,
|
|
|
|
|
dispatch = _useContext.dispatch;
|
|
|
|
|
|
|
|
|
|
var data = props.data,
|
|
|
|
|
_onClick = props.onClick;
|
|
|
|
|
var selected = state.selectedElements.filter(function (e) {
|
|
|
|
|
return isEdge(e);
|
|
|
|
|
}).find(function (e) {
|
|
|
|
|
return e.data.source === data.source && e.data.target === data.target;
|
|
|
|
|
});
|
|
|
|
|
var edgeClasses = classnames('react-graph__edge', {
|
|
|
|
|
selected: selected
|
|
|
|
|
});
|
|
|
|
|
return React__default.createElement("g", {
|
|
|
|
|
className: edgeClasses,
|
|
|
|
|
onClick: function onClick(e) {
|
|
|
|
|
if (isInputTarget$1(e)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispatch(setSelectedElements({
|
|
|
|
|
data: data
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
_onClick({
|
|
|
|
|
data: data
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}, React__default.createElement(EdgeComponent, props));
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function createEdgeTypes(edgeTypes) {
|
|
|
|
|
var standardTypes = {
|
|
|
|
|
"default": wrapEdge(edgeTypes["default"] || DefaultEdge)
|
|
|
|
|
};
|
|
|
|
|
var specialTypes = Object.keys(DefaultEdge).filter(function (k) {
|
|
|
|
|
return !['default'].includes(k);
|
|
|
|
|
}).reduce(function (res, key) {
|
|
|
|
|
res[key] = wrapEdge(nodeTypes[key] || DefaultEdge);
|
|
|
|
|
return res;
|
|
|
|
|
}, {});
|
|
|
|
|
return _objectSpread2({}, standardTypes, {}, specialTypes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function styleInject(css, ref) {
|
|
|
|
|
if ( ref === void 0 ) ref = {};
|
|
|
|
|
var insertAt = ref.insertAt;
|
|
|
|
|
@@ -32921,7 +33019,7 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var css = ".react-graph {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.react-graph__renderer {\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.react-graph__zoompane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.react-graph__selectionpane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n}\n\n.react-graph__selection {\n position: absolute;\n top: 0;\n left: 0;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}\n\n.react-graph__edges {\n pointer-events: none;\n}\n\n.react-graph__edge {\n fill: none;\n stroke: #333;\n stroke-width: 2;\n}\n\n.react-graph__nodes {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 2;\n pointer-events: none;\n transform-origin: 0 0;\n}\n\n.react-graph__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n cursor: -webkit-grab;\n cursor: grab;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n}\n\n.react-graph__node:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n}\n\n.react-graph__node.selected > * {\n box-shadow: 0 0 0 2px #000;\n}\n\n.react-graph__handle {\n position: absolute;\n width: 12px;\n height: 12px;\n transform: translate(-50%, -50%);\n background: #222;\n left: 50%;\n border-radius: 50%;\n}\n\n.react-graph__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-graph__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}";
|
|
|
|
|
var css = ".react-graph {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.react-graph__renderer {\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.react-graph__zoompane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.react-graph__selectionpane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n}\n\n.react-graph__selection {\n position: absolute;\n top: 0;\n left: 0;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}\n\n.react-graph__edges {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.react-graph__edge {\n fill: none;\n stroke: #333;\n stroke-width: 2;\n pointer-events: all;\n}\n\n.react-graph__edge.selected {\n stroke: #ff5050;\n}\n\n.react-graph__nodes {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 2;\n pointer-events: none;\n transform-origin: 0 0;\n}\n\n.react-graph__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n cursor: -webkit-grab;\n cursor: grab;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n}\n\n.react-graph__node:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n}\n\n.react-graph__node.selected > * {\n box-shadow: 0 0 0 2px #000;\n}\n\n.react-graph__handle {\n position: absolute;\n width: 12px;\n height: 12px;\n transform: translate(-50%, -50%);\n background: #222;\n left: 50%;\n border-radius: 50%;\n}\n\n.react-graph__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-graph__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}";
|
|
|
|
|
styleInject(css);
|
|
|
|
|
|
|
|
|
|
var ReactGraph =
|
|
|
|
|
@@ -32936,6 +33034,7 @@
|
|
|
|
|
|
|
|
|
|
_this = _possibleConstructorReturn(this, _getPrototypeOf(ReactGraph).call(this, props));
|
|
|
|
|
_this.nodeTypes = createNodeTypes(props.nodeTypes);
|
|
|
|
|
_this.edgeTypes = createEdgeTypes(props.edgeTypes);
|
|
|
|
|
return _this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -32944,13 +33043,13 @@
|
|
|
|
|
value: function render() {
|
|
|
|
|
var _this$props = this.props,
|
|
|
|
|
style = _this$props.style,
|
|
|
|
|
onNodeClick = _this$props.onNodeClick,
|
|
|
|
|
onElementClick = _this$props.onElementClick,
|
|
|
|
|
children = _this$props.children,
|
|
|
|
|
onLoad = _this$props.onLoad,
|
|
|
|
|
onMove = _this$props.onMove,
|
|
|
|
|
onChange = _this$props.onChange,
|
|
|
|
|
elements = _this$props.elements,
|
|
|
|
|
onNodeRemove = _this$props.onNodeRemove;
|
|
|
|
|
onElementsRemove = _this$props.onElementsRemove;
|
|
|
|
|
|
|
|
|
|
var _elements$map$reduce = elements.map(parseElements).reduce(separateElements, {}),
|
|
|
|
|
nodes = _elements$map$reduce.nodes,
|
|
|
|
|
@@ -32962,14 +33061,15 @@
|
|
|
|
|
}, React__default.createElement(Provider, {
|
|
|
|
|
nodes: nodes,
|
|
|
|
|
edges: edges,
|
|
|
|
|
onNodeClick: onNodeClick
|
|
|
|
|
onElementClick: onElementClick
|
|
|
|
|
}, React__default.createElement(GraphView$1, {
|
|
|
|
|
onLoad: onLoad,
|
|
|
|
|
onMove: onMove,
|
|
|
|
|
onChange: onChange,
|
|
|
|
|
nodeTypes: this.nodeTypes
|
|
|
|
|
nodeTypes: this.nodeTypes,
|
|
|
|
|
edgeTypes: this.edgeTypes
|
|
|
|
|
}), React__default.createElement(GlobalKeyHandler, {
|
|
|
|
|
onNodeRemove: onNodeRemove
|
|
|
|
|
onElementsRemove: onElementsRemove
|
|
|
|
|
}), children));
|
|
|
|
|
}
|
|
|
|
|
}]);
|
|
|
|
|
@@ -32978,8 +33078,8 @@
|
|
|
|
|
}(React.PureComponent);
|
|
|
|
|
|
|
|
|
|
ReactGraph.defaultProps = {
|
|
|
|
|
onNodeClick: function onNodeClick() {},
|
|
|
|
|
onNodeRemove: function onNodeRemove() {},
|
|
|
|
|
onElementClick: function onElementClick() {},
|
|
|
|
|
onElementsRemove: function onElementsRemove() {},
|
|
|
|
|
onLoad: function onLoad() {},
|
|
|
|
|
onMove: function onMove() {},
|
|
|
|
|
onChange: function onChange() {},
|
|
|
|
|
@@ -32987,6 +33087,9 @@
|
|
|
|
|
input: InputNode,
|
|
|
|
|
"default": DefaultNode,
|
|
|
|
|
output: OutputNode
|
|
|
|
|
},
|
|
|
|
|
edgeTypes: {
|
|
|
|
|
"default": DefaultEdge
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|