index.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { css } from "@linaria/core";
  2. import { defineUI } from "queenjs";
  3. import { onUnmounted } from "vue";
  4. import { Container, Draggable } from "vue-dndrop";
  5. import { useEditor } from "../../..";
  6. import { HotKeyCtrl } from "../../../controllers/HotKeyCtrl";
  7. import Canvas from "../../Canvas";
  8. export default defineUI({
  9. setup() {
  10. const editor = useEditor();
  11. const { store, actions, config } = editor;
  12. const hotKeyCtrl = new HotKeyCtrl(editor);
  13. hotKeyCtrl.init();
  14. onUnmounted(() => {
  15. hotKeyCtrl.destroy();
  16. });
  17. return () => (
  18. <div class={contentStyle}>
  19. {store.isEditMode ? (
  20. <Container
  21. style={store.designData.pageStyle}
  22. onDrop={(e: any) => actions.moveComp(e.removedIndex, e.addedIndex)}
  23. non-drag-area-selector={".drag-disable"}
  24. >
  25. {store.designData.content.map((d) => {
  26. const Comp: any = config.compUI[d.compKey]?.Component;
  27. return Comp ? (
  28. <Draggable key={d.id}>
  29. <Comp compId={d.id} />
  30. </Draggable>
  31. ) : undefined;
  32. })}
  33. </Container>
  34. ) : (
  35. <Canvas />
  36. )}
  37. </div>
  38. );
  39. },
  40. });
  41. const contentStyle = css`
  42. border: 1px solid transparent;
  43. @apply min-h-750px bg-white;
  44. .dndrop-container.vertical > .dndrop-draggable-wrapper {
  45. overflow: unset;
  46. }
  47. `;