123456789101112131415161718192021222324252627282930313233343536373839 |
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
- import * as React from 'react';
- import { convertDataToEntities } from "rc-tree/es/utils/treeUtil";
- import { VALUE_SPLIT } from "../utils/commonUtil";
- /** Lazy parse options data into conduct-able info to avoid perf issue in single mode */
- export default (function (options, fieldNames) {
- var cacheRef = React.useRef({
- options: [],
- info: {
- keyEntities: {},
- pathKeyEntities: {}
- }
- });
- var getEntities = React.useCallback(function () {
- if (cacheRef.current.options !== options) {
- cacheRef.current.options = options;
- cacheRef.current.info = convertDataToEntities(options, {
- fieldNames: fieldNames,
- initWrapper: function initWrapper(wrapper) {
- return _objectSpread(_objectSpread({}, wrapper), {}, {
- pathKeyEntities: {}
- });
- },
- processEntity: function processEntity(entity, wrapper) {
- var pathKey = entity.nodes.map(function (node) {
- return node[fieldNames.value];
- }).join(VALUE_SPLIT);
- wrapper.pathKeyEntities[pathKey] = entity;
- // Overwrite origin key.
- // this is very hack but we need let conduct logic work with connect path
- entity.key = pathKey;
- }
- });
- }
- return cacheRef.current.info.pathKeyEntities;
- }, [fieldNames, options]);
- return getEntities;
- });
|