zent
Version:
一套前端设计语言和基于React的实现
57 lines (56 loc) • 2.21 kB
JavaScript
import { __assign } from "tslib";
import { DEFAULT_RENDER_KEY, } from './common';
import getJudgeInfo from './getJudgeInfo';
import correctMark from './correctMark';
export default function createStateByProps(_a) {
var data = _a.data, isRoot = _a.isRoot, propsRenderKey = _a.renderKey, dataType = _a.dataType, expandAll = _a.expandAll, loadMore = _a.loadMore, checkable = _a.checkable, _b = _a.disabledCheckedKeys, disabledCheckedKeys = _b === void 0 ? [] : _b, _c = _a.checkedKeys, checkedKeys = _c === void 0 ? [] : _c;
var renderKey = __assign(__assign({}, DEFAULT_RENDER_KEY), propsRenderKey);
var children = renderKey.children, parentId = renderKey.parentId, id = renderKey.id;
var roots = [];
if (dataType === 'plain') {
var map_1 = {};
data.forEach(function (node) {
map_1[node[id]] = __assign({}, node);
if (!node.isLeaf) {
map_1[node[id]][children] = [];
}
});
data.forEach(function (node) {
var isRootNode = (isRoot && isRoot(node)) ||
node[parentId] === 0 ||
node[parentId] === undefined ||
node[parentId] === '0';
var markNode = map_1[node[id]];
if (isRootNode) {
roots.push(markNode);
}
else if (map_1[markNode[parentId]]) {
map_1[markNode[parentId]][children].push(markNode);
}
});
}
else if (dataType === 'tree') {
roots = data;
}
var _d = getJudgeInfo({
expandAll: expandAll,
checkable: checkable,
loadMore: loadMore,
tree: roots,
renderKey: renderKey,
}), rootInfoMap = _d.rootInfoMap, expandNode = _d.expandNode;
var disabledNode = checkable
? correctMark(disabledCheckedKeys, rootInfoMap)
: disabledCheckedKeys;
var checkedNode = checkable
? correctMark(checkedKeys, rootInfoMap, disabledNode, true)
: checkedKeys;
return {
tree: roots,
renderKey: renderKey,
rootInfoMap: rootInfoMap,
expandNode: expandNode,
checkedNode: checkedNode,
disabledNode: disabledNode,
};
}