UNPKG

zent

Version:

一套前端设计语言和基于React的实现

57 lines (56 loc) 2.21 kB
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, }; }