instance.mjs 1.1 KB

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