@xrenders/xflow
Version:
一款功能强大、易用灵活的流程编辑器框架,帮助你轻松构建复杂的工作流和流程产品
113 lines (112 loc) • 3.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createStore = void 0;
var _utils = require("../utils");
var _react = require("@xyflow/react");
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
var _zundo = require("zundo");
var _traditional = require("zustand/traditional");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var createStore = exports.createStore = function createStore(initProps) {
var DEFAULT_PROPS = {
layout: 'LR',
panOnDrag: true,
nodes: [],
edges: []
};
return (0, _traditional.createWithEqualityFn)()((0, _zundo.temporal)(function (set, get) {
return Object.assign(Object.assign(Object.assign({}, DEFAULT_PROPS), initProps), {
copyNodes: [],
copyEdges: [],
isAddingNode: false,
candidateNode: null,
// nodeMenus: [],
mousePosition: {
pageX: 0,
pageY: 0,
elementX: 0,
elementY: 0
},
onNodesChange: function onNodesChange(changes) {
set({
nodes: (0, _react.applyNodeChanges)(changes, get().nodes)
});
},
onEdgesChange: function onEdgesChange(changes) {
set({
edges: (0, _react.applyEdgeChanges)(changes, get().edges)
});
},
onConnect: function onConnect(connection) {
set({
edges: (0, _react.addEdge)(connection, get().edges)
});
},
setNodes: function setNodes(nodes) {
set({
nodes: (0, _utils.transformNodes)(nodes)
});
},
setEdges: function setEdges(edges) {
set({
edges: edges
});
},
addNodes: function addNodes(payload) {
var isTransform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var newNodes = get().nodes.concat((0, _utils.transformNodes)(Array.isArray(payload) ? payload : [payload]));
set({
nodes: newNodes
});
},
addEdges: function addEdges(payload) {
set({
edges: get().edges.concat(payload)
});
},
// setNodeMenus: (nodeMenus: any) => {
// set({ nodeMenus });
// },
setIsAddingNode: function setIsAddingNode(payload) {
set({
isAddingNode: payload
});
},
setCandidateNode: function setCandidateNode(candidateNode) {
set({
candidateNode: candidateNode
});
},
setMousePosition: function setMousePosition(mousePosition) {
set({
mousePosition: mousePosition
});
},
setLayout: function setLayout(layout) {
if (!layout) {
return;
}
set({
layout: layout
});
}
});
}, {
// nodes 和 edges 是引用类型,所以使用深比较
equality: _fastDeepEqual.default,
// 偏函数
partialize: function partialize(state) {
var nodes = state.nodes,
edges = state.edges;
return {
edges: edges,
nodes: nodes
};
},
onSave: function onSave(pastState, currentState) {
console.log('onSave', pastState, currentState);
}
}), Object.is);
};