valueUtil.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.getColumnsKey = getColumnsKey;
  7. exports.getPathValue = getPathValue;
  8. exports.mergeObject = mergeObject;
  9. exports.validateValue = validateValue;
  10. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  11. var INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';
  12. function toArray(arr) {
  13. if (arr === undefined || arr === null) {
  14. return [];
  15. }
  16. return Array.isArray(arr) ? arr : [arr];
  17. }
  18. function getPathValue(record, path) {
  19. // Skip if path is empty
  20. if (!path && typeof path !== 'number') {
  21. return record;
  22. }
  23. var pathList = toArray(path);
  24. var current = record;
  25. for (var i = 0; i < pathList.length; i += 1) {
  26. if (!current) {
  27. return null;
  28. }
  29. var prop = pathList[i];
  30. current = current[prop];
  31. }
  32. return current;
  33. }
  34. function getColumnsKey(columns) {
  35. var columnKeys = [];
  36. var keys = {};
  37. columns.forEach(function (column) {
  38. var _ref = column || {},
  39. key = _ref.key,
  40. dataIndex = _ref.dataIndex;
  41. var mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;
  42. while (keys[mergedKey]) {
  43. mergedKey = "".concat(mergedKey, "_next");
  44. }
  45. keys[mergedKey] = true;
  46. columnKeys.push(mergedKey);
  47. });
  48. return columnKeys;
  49. }
  50. function mergeObject() {
  51. var merged = {};
  52. /* eslint-disable no-param-reassign */
  53. function fillProps(obj, clone) {
  54. if (clone) {
  55. Object.keys(clone).forEach(function (key) {
  56. var value = clone[key];
  57. if (value && (0, _typeof2.default)(value) === 'object') {
  58. obj[key] = obj[key] || {};
  59. fillProps(obj[key], value);
  60. } else {
  61. obj[key] = value;
  62. }
  63. });
  64. }
  65. }
  66. /* eslint-enable */
  67. for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {
  68. objects[_key] = arguments[_key];
  69. }
  70. objects.forEach(function (clone) {
  71. fillProps(merged, clone);
  72. });
  73. return merged;
  74. }
  75. function validateValue(val) {
  76. return val !== null && val !== undefined;
  77. }