useCache.js 972 B

12345678910111213141516171819202122232425262728
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import * as React from 'react';
  3. /**
  4. * This function will try to call requestIdleCallback if available to save performance.
  5. * No need `getLabel` here since already fetch on `rawLabeledValue`.
  6. */
  7. export default (function (values) {
  8. var cacheRef = React.useRef({
  9. valueLabels: new Map()
  10. });
  11. return React.useMemo(function () {
  12. var valueLabels = cacheRef.current.valueLabels;
  13. var valueLabelsCache = new Map();
  14. var filledValues = values.map(function (item) {
  15. var value = item.value,
  16. label = item.label;
  17. var mergedLabel = label !== null && label !== void 0 ? label : valueLabels.get(value);
  18. // Save in cache
  19. valueLabelsCache.set(value, mergedLabel);
  20. return _objectSpread(_objectSpread({}, item), {}, {
  21. label: mergedLabel
  22. });
  23. });
  24. cacheRef.current.valueLabels = valueLabelsCache;
  25. return [filledValues];
  26. }, [values]);
  27. });