useCache.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var React = _interopRequireWildcard(require("react"));
  10. /**
  11. * This function will try to call requestIdleCallback if available to save performance.
  12. * No need `getLabel` here since already fetch on `rawLabeledValue`.
  13. */
  14. var _default = exports.default = function _default(values) {
  15. var cacheRef = React.useRef({
  16. valueLabels: new Map()
  17. });
  18. return React.useMemo(function () {
  19. var valueLabels = cacheRef.current.valueLabels;
  20. var valueLabelsCache = new Map();
  21. var filledValues = values.map(function (item) {
  22. var value = item.value,
  23. label = item.label;
  24. var mergedLabel = label !== null && label !== void 0 ? label : valueLabels.get(value);
  25. // Save in cache
  26. valueLabelsCache.set(value, mergedLabel);
  27. return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
  28. label: mergedLabel
  29. });
  30. });
  31. cacheRef.current.valueLabels = valueLabelsCache;
  32. return [filledValues];
  33. }, [values]);
  34. };