useMaxLevel.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = useMaxLevel;
  6. var _vue = require("vue");
  7. function useMaxLevel(keyEntities) {
  8. var maxLevel = (0, _vue.ref)(0);
  9. var levelEntities = (0, _vue.shallowRef)();
  10. (0, _vue.watchEffect)(function () {
  11. var newLevelEntities = new Map();
  12. var newMaxLevel = 0;
  13. var keyEntitiesValue = keyEntities.value || {};
  14. // Convert entities by level for calculation
  15. for (var key in keyEntitiesValue) {
  16. if (Object.prototype.hasOwnProperty.call(keyEntitiesValue, key)) {
  17. var entity = keyEntitiesValue[key];
  18. var level = entity.level;
  19. var levelSet = newLevelEntities.get(level);
  20. if (!levelSet) {
  21. levelSet = new Set();
  22. newLevelEntities.set(level, levelSet);
  23. }
  24. levelSet.add(entity);
  25. newMaxLevel = Math.max(newMaxLevel, level);
  26. }
  27. }
  28. maxLevel.value = newMaxLevel;
  29. levelEntities.value = newLevelEntities;
  30. });
  31. return {
  32. maxLevel: maxLevel,
  33. levelEntities: levelEntities
  34. };
  35. }