valueUtil.js 1.9 KB

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