legacyUtil.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  3. var _excluded = ["children", "value"];
  4. import * as React from 'react';
  5. import toArray from "rc-util/es/Children/toArray";
  6. import warning from "rc-util/es/warning";
  7. import TreeNode from "../TreeNode";
  8. export function convertChildrenToData(nodes) {
  9. return toArray(nodes).map(function (node) {
  10. if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {
  11. return null;
  12. }
  13. var _ref = node,
  14. key = _ref.key,
  15. _ref$props = _ref.props,
  16. children = _ref$props.children,
  17. value = _ref$props.value,
  18. restProps = _objectWithoutProperties(_ref$props, _excluded);
  19. var data = _objectSpread({
  20. key: key,
  21. value: value
  22. }, restProps);
  23. var childData = convertChildrenToData(children);
  24. if (childData.length) {
  25. data.children = childData;
  26. }
  27. return data;
  28. }).filter(function (data) {
  29. return data;
  30. });
  31. }
  32. export function fillLegacyProps(dataNode) {
  33. if (!dataNode) {
  34. return dataNode;
  35. }
  36. var cloneNode = _objectSpread({}, dataNode);
  37. if (!('props' in cloneNode)) {
  38. Object.defineProperty(cloneNode, 'props', {
  39. get: function get() {
  40. warning(false, 'New `rc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.');
  41. return cloneNode;
  42. }
  43. });
  44. }
  45. return cloneNode;
  46. }
  47. export function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition, fieldNames) {
  48. var triggerNode = null;
  49. var nodeList = null;
  50. function generateMap() {
  51. function dig(list) {
  52. var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
  53. var parentIncluded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  54. return list.map(function (option, index) {
  55. var pos = "".concat(level, "-").concat(index);
  56. var value = option[fieldNames.value];
  57. var included = checkedValues.includes(value);
  58. var children = dig(option[fieldNames.children] || [], pos, included);
  59. var node = /*#__PURE__*/React.createElement(TreeNode, option, children.map(function (child) {
  60. return child.node;
  61. }));
  62. // Link with trigger node
  63. if (triggerValue === value) {
  64. triggerNode = node;
  65. }
  66. if (included) {
  67. var checkedNode = {
  68. pos: pos,
  69. node: node,
  70. children: children
  71. };
  72. if (!parentIncluded) {
  73. nodeList.push(checkedNode);
  74. }
  75. return checkedNode;
  76. }
  77. return null;
  78. }).filter(function (node) {
  79. return node;
  80. });
  81. }
  82. if (!nodeList) {
  83. nodeList = [];
  84. dig(treeData);
  85. // Sort to keep the checked node length
  86. nodeList.sort(function (_ref2, _ref3) {
  87. var val1 = _ref2.node.props.value;
  88. var val2 = _ref3.node.props.value;
  89. var index1 = checkedValues.indexOf(val1);
  90. var index2 = checkedValues.indexOf(val2);
  91. return index1 - index2;
  92. });
  93. }
  94. }
  95. Object.defineProperty(extra, 'triggerNode', {
  96. get: function get() {
  97. warning(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');
  98. generateMap();
  99. return triggerNode;
  100. }
  101. });
  102. Object.defineProperty(extra, 'allCheckedNodes', {
  103. get: function get() {
  104. warning(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');
  105. generateMap();
  106. if (showPosition) {
  107. return nodeList;
  108. }
  109. return nodeList.map(function (_ref4) {
  110. var node = _ref4.node;
  111. return node;
  112. });
  113. }
  114. });
  115. }