useCache.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  8. var _vue = require("vue");
  9. /**
  10. * Cache `value` related LabeledValue & options.
  11. */
  12. var _default = function _default(labeledValues, valueOptions) {
  13. var cacheRef = (0, _vue.shallowRef)({
  14. values: new Map(),
  15. options: new Map()
  16. });
  17. var filledLabeledValues = (0, _vue.computed)(function () {
  18. var _cacheRef$value = cacheRef.value,
  19. prevValueCache = _cacheRef$value.values,
  20. prevOptionCache = _cacheRef$value.options;
  21. // Fill label by cache
  22. var patchedValues = labeledValues.value.map(function (item) {
  23. if (item.label === undefined) {
  24. var _prevValueCache$get;
  25. return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
  26. label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label
  27. });
  28. }
  29. return item;
  30. });
  31. // Refresh cache
  32. var valueCache = new Map();
  33. var optionCache = new Map();
  34. patchedValues.forEach(function (item) {
  35. valueCache.set(item.value, item);
  36. optionCache.set(item.value, valueOptions.value.get(item.value) || prevOptionCache.get(item.value));
  37. });
  38. cacheRef.value.values = valueCache;
  39. cacheRef.value.options = optionCache;
  40. return patchedValues;
  41. });
  42. var getOption = function getOption(val) {
  43. return valueOptions.value.get(val) || cacheRef.value.options.get(val);
  44. };
  45. return [filledLabeledValues, getOption];
  46. };
  47. exports.default = _default;