index.ts 713 B

123456789101112131415161718192021222324
  1. import { markRaw, reactive } from "vue";
  2. import { images } 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"],
  7. image: images,
  8. };
  9. Object.entries(componentLoads).map(([name, fn]) => {
  10. name = name.substring(2, name.lastIndexOf(".vue"));
  11. fn().then((mudule) => {
  12. const component = (mudule as any).default;
  13. markRaw(component as any);
  14. const keys = [name, ...(map[name] ? map[name] : [])];
  15. keys.forEach((name) => {
  16. components[name] = component;
  17. components[name.slice(0, 1).toUpperCase() + name.slice(1)] = component;
  18. });
  19. });
  20. });