useMaxLevel.js 969 B

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