index.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { useEditor } from "@/modules/editor";
  2. import { defineUI } from "queenjs";
  3. import { TipIcons } from "../../TipIcons";
  4. import { css } from "@linaria/core";
  5. import { useLauncher } from "@/modules/launcher";
  6. export default defineUI({
  7. setup() {
  8. const { actions, controls } = useEditor();
  9. const launcher = useLauncher();
  10. const { history } = controls.historyCtrl;
  11. return () => (
  12. <>
  13. <div class="absolute top-20px left-20px space-x-10px z-999">
  14. <TipIcons.Undo
  15. disable={!history.state.canUndo}
  16. class={btnCls}
  17. onClick={() => history.undo()}
  18. />
  19. <TipIcons.Redo
  20. disable={!history.state.canRedo}
  21. class={btnCls}
  22. onClick={() => history.redo()}
  23. />
  24. </div>
  25. <div class="absolute top-20px right-20px space-x-10px z-999">
  26. <TipIcons.AiText
  27. class={btnCls}
  28. onClick={() => {
  29. console.log(1);
  30. }}
  31. />
  32. <TipIcons.Screenshot
  33. class={btnCls}
  34. onClick={() => actions.updateThumbnailByScreenshot(true)}
  35. />
  36. </div>
  37. <div class="absolute bottom-20px right-20px z-999">
  38. <TipIcons.QueenService
  39. class={btnCls}
  40. onClick={() => {
  41. launcher.showModal(<launcher.components.Viewport />, {
  42. width: "400px",
  43. });
  44. }}
  45. />
  46. </div>
  47. </>
  48. );
  49. },
  50. });
  51. const btnCls = css`
  52. padding: 10px;
  53. border-radius: 50%;
  54. background-color: #333;
  55. @apply shadow;
  56. `;