UNPKG

@ant-design/pro-flow

Version:
81 lines 3.37 kB
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; } };