@ant-design/pro-flow
Version:
A React based Flow components
81 lines • 3.37 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _typeof from "@babel/runtime/helpers/esm/typeof";
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import { produce } from 'immer';
import { merge } from 'lodash-es';
export var nodeReducer = function nodeReducer(state, action) {
switch (action.type) {
case 'addNode':
return produce(state, function (draftState) {
if (!action.node || !action.node.id) return;
draftState[action.node.id] = action.node;
});
case 'addNodes':
return produce(state, function (draftState) {
var nodes = action.nodes;
if (!nodes) return;
if (Array.isArray(nodes)) {
nodes.forEach(function (node) {
draftState[node.id] = node;
});
} else if (_typeof(nodes) === 'object') {
Object.keys(nodes).forEach(function (id) {
if (!draftState[id]) {
draftState[id] = nodes[id];
}
});
}
});
case 'deleteNode':
return produce(state, function (draftState) {
delete draftState[action.id];
});
case 'updateNodePosition':
return produce(state, function (draftState) {
if (!draftState[action.id]) return;
if (!action.position) return;
draftState[action.id].position = action.position;
});
case 'updateNodeMeta':
return produce(state, function (draftState) {
if (!draftState[action.id]) return;
var node = draftState[action.id];
node.data.meta[action.key] = action.value;
});
case 'updateNodeState':
return produce(state, function (draftState) {
if (!draftState[action.id]) return;
var node = draftState[action.id];
node.data.state[action.key] = action.value;
});
case 'updateNodeContent':
return produce(state, function (draftState) {
var key = action.key,
id = action.id,
value = action.value;
if (!draftState[id]) return;
var node = draftState[id];
if (!node.data.content) {
node.data.content = _defineProperty({}, key, value);
} else {
node.data.content[key] = value;
}
});
case 'updateNodeData':
return produce(state, function (draftState) {
var newData = action.newData,
id = action.id,
deepReplace = action.deepReplace;
if (!draftState[id]) return;
var node = draftState[id];
if (!deepReplace) {
merge(node.data, newData);
} else {
node.data = _objectSpread(_objectSpread({}, node.data), newData);
}
});
default:
return state;
}
};