useMaxLevel.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. const maxLevel = (0, _vue.ref)(0);
  9. const levelEntities = (0, _vue.shallowRef)();
  10. (0, _vue.watchEffect)(() => {
  11. const newLevelEntities = new Map();
  12. let newMaxLevel = 0;
  13. const keyEntitiesValue = keyEntities.value || {};
  14. // Convert entities by level for calculation
  15. for (const key in keyEntitiesValue) {
  16. if (Object.prototype.hasOwnProperty.call(keyEntitiesValue, key)) {
  17. const entity = keyEntitiesValue[key];
  18. const {
  19. level
  20. } = entity;
  21. let levelSet = newLevelEntities.get(level);
  22. if (!levelSet) {
  23. levelSet = new Set();
  24. newLevelEntities.set(level, levelSet);
  25. }
  26. levelSet.add(entity);
  27. newMaxLevel = Math.max(newMaxLevel, level);
  28. }
  29. }
  30. maxLevel.value = newMaxLevel;
  31. levelEntities.value = newLevelEntities;
  32. });
  33. return {
  34. maxLevel,
  35. levelEntities
  36. };
  37. }