969538ffc27c7e5dcca95da37b8160e4ec0311837545c264f17c8108a83ffcbd14dbb20cd94e73455dd2585b43835a9ad7602a0de6ff7c58c047a12a81fb17 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import { shallowReactive } from 'vue';
  2. const placementInstances = shallowReactive({});
  3. const getOrCreatePlacementInstances = (placement) => {
  4. if (!placementInstances[placement]) {
  5. placementInstances[placement] = shallowReactive([]);
  6. }
  7. return placementInstances[placement];
  8. };
  9. const getInstance = (id, placement) => {
  10. const instances = placementInstances[placement] || [];
  11. const idx = instances.findIndex((instance) => instance.id === id);
  12. const current = instances[idx];
  13. let prev;
  14. if (idx > 0) {
  15. prev = instances[idx - 1];
  16. }
  17. return { current, prev };
  18. };
  19. const getLastOffset = (id, placement) => {
  20. const { prev } = getInstance(id, placement);
  21. if (!prev)
  22. return 0;
  23. return prev.vm.exposed.bottom.value;
  24. };
  25. const getOffsetOrSpace = (id, offset, placement) => {
  26. const instances = placementInstances[placement] || [];
  27. const idx = instances.findIndex((instance) => instance.id === id);
  28. return idx > 0 ? 16 : offset;
  29. };
  30. export { getInstance, getLastOffset, getOffsetOrSpace, getOrCreatePlacementInstances, placementInstances };
  31. //# sourceMappingURL=instance.mjs.map