index.ts 773 B

12345678910111213141516171819202122232425
  1. import { markRaw, reactive } from "vue";
  2. import { images, customImage } from "../board/useBoard";
  3. const componentLoads = import.meta.glob("./*.vue");
  4. export const components: { [key in string]: any } = reactive({});
  5. const map = {
  6. label: ["Circle", "Rectangle", "Wall", "Arrow"],
  7. image: [...images, customImage],
  8. delete: ["Icon"],
  9. };
  10. Object.entries(componentLoads).map(([name, fn]) => {
  11. name = name.substring(2, name.lastIndexOf(".vue"));
  12. fn().then((mudule) => {
  13. const component = (mudule as any).default;
  14. markRaw(component as any);
  15. const keys = [name, ...(map[name] ? map[name] : [])];
  16. keys.forEach((name) => {
  17. components[name] = component;
  18. components[name.slice(0, 1).toUpperCase() + name.slice(1)] = component;
  19. });
  20. });
  21. });