useDataEntities.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { convertDataToEntities } from '../../vc-tree/utils/treeUtil';
  3. import { isNil } from '../utils/valueUtil';
  4. import { shallowRef, watchEffect } from 'vue';
  5. import { warning } from '../../vc-util/warning';
  6. export default (function (treeData, fieldNames) {
  7. var valueEntities = shallowRef(new Map());
  8. var keyEntities = shallowRef({});
  9. watchEffect(function () {
  10. var fieldNamesValue = fieldNames.value;
  11. var collection = convertDataToEntities(treeData.value, {
  12. fieldNames: fieldNamesValue,
  13. initWrapper: function initWrapper(wrapper) {
  14. return _objectSpread(_objectSpread({}, wrapper), {}, {
  15. valueEntities: new Map()
  16. });
  17. },
  18. processEntity: function processEntity(entity, wrapper) {
  19. var val = entity.node[fieldNamesValue.value];
  20. // Check if exist same value
  21. if (process.env.NODE_ENV !== 'production') {
  22. var key = entity.node.key;
  23. warning(!isNil(val), 'TreeNode `value` is invalidate: undefined');
  24. warning(!wrapper.valueEntities.has(val), "Same `value` exist in the tree: ".concat(val));
  25. warning(!key || String(key) === String(val), "`key` or `value` with TreeNode must be the same or you can remove one of them. key: ".concat(key, ", value: ").concat(val, "."));
  26. }
  27. wrapper.valueEntities.set(val, entity);
  28. }
  29. });
  30. valueEntities.value = collection.valueEntities;
  31. keyEntities.value = collection.keyEntities;
  32. });
  33. return {
  34. valueEntities: valueEntities,
  35. keyEntities: keyEntities
  36. };
  37. });