createCompStyle.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { EditorModule } from "@/modules/editor/module";
  2. import { Layout } from "@/modules/editor/typings";
  3. import { compMasks } from "./CompMasks";
  4. import { Matrix } from "@/modules/editor/controllers/TransferCtrl/Matrix";
  5. export function createCompStyle(module: EditorModule, layout: Layout) {
  6. const { designToNaturalSize } = module.helper;
  7. const style: any = {};
  8. const transform: any = {};
  9. // if (layout.alignSelf) {
  10. // style.alignSelf = layout.alignSelf;
  11. // }
  12. if (layout.visible === false) {
  13. style.display = "none";
  14. }
  15. if (layout.opacity !== undefined) {
  16. style["opacity"] = layout.opacity;
  17. }
  18. if (layout.radius !== undefined) {
  19. style["border-radius"] = layout.radius / 2 + "%";
  20. style["overflow"] = "hidden";
  21. }
  22. if (layout.zIndex) {
  23. style["zIndex"] = layout.zIndex;
  24. }
  25. // if (layout.margin) {
  26. // style.margin = layout.margin;
  27. // }
  28. if (layout.padding) {
  29. style.padding = layout.padding;
  30. }
  31. if (layout.mask) {
  32. style.clipPath = compMasks[layout.mask]?.value || layout.mask;
  33. }
  34. if (layout.transform) {
  35. if (layout.transform.x) {
  36. transform.translateX = designToNaturalSize(layout.transform.x);
  37. }
  38. if (layout.transform.y) {
  39. transform.translateY = designToNaturalSize(layout.transform.y);
  40. }
  41. if (layout.transform.r) {
  42. transform.rotate = layout.transform.r + "deg";
  43. }
  44. if (layout.transform.s) {
  45. transform.scale = layout.transform.s;
  46. }
  47. }
  48. if (layout.size) {
  49. const [w, h] = layout.size;
  50. if (w) style.width = designToNaturalSize(w);
  51. if (h) style.height = designToNaturalSize(h);
  52. }
  53. if (layout.position) {
  54. style.position = layout.position;
  55. }
  56. if (layout.transformMatrix) {
  57. style.transform = layout.transformMatrix;
  58. style.transformOrigin = "0 0";
  59. } else {
  60. const v = parseTransform(transform);
  61. if (v) style.transform = v;
  62. }
  63. if (layout.background) {
  64. if (layout.background.color) {
  65. style.backgroundColor = layout.background.color;
  66. }
  67. }
  68. return style;
  69. }
  70. export function parseTransform(trans: any) {
  71. let transform = "";
  72. if (trans.translateX || trans.translateY) {
  73. transform = `translate(${trans.translateX || 0}, ${trans.translateY || 0})`;
  74. }
  75. if (trans.scale) {
  76. transform += ` scale(${trans.scale})`;
  77. }
  78. if (trans.rotate) {
  79. transform += ` rotate(${trans.rotate})`;
  80. }
  81. return transform;
  82. }