factory.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { nanoid } from "nanoid";
  2. import { CompArcObj } from "../../components/CompUI/basicUI/Arc";
  3. import { CompCardObj } from "../../components/CompUI/basicUI/Container";
  4. import { CompCurveObj } from "../../components/CompUI/basicUI/Curve";
  5. import { CompEllipseObj } from "../../components/CompUI/basicUI/Ellipse";
  6. import { CompGroupObj } from "../../components/CompUI/basicUI/Group";
  7. import { CompImageObj } from "../../components/CompUI/basicUI/Image2";
  8. import { CompLineObj } from "../../components/CompUI/basicUI/Line";
  9. import { CompMapObj } from "../../components/CompUI/basicUI/Map";
  10. import { CompPageObj } from "../../components/CompUI/basicUI/Page";
  11. import { CompPolygonObj } from "../../components/CompUI/basicUI/Polygon";
  12. import { CompPolygonNormalObj } from "../../components/CompUI/basicUI/PolygonNormal";
  13. import { CompRectObj } from "../../components/CompUI/basicUI/Rectage";
  14. import { CompTextObj } from "../../components/CompUI/basicUI/Text";
  15. import { CompTriangleObj } from "../../components/CompUI/basicUI/Triangle";
  16. import { CompVideoObj } from "../../components/CompUI/basicUI/Video";
  17. import { CompWeb3DObj } from "../../components/CompUI/basicUI/Web3D";
  18. import { HistoryController } from "../../controllers/ReactCtrl/history";
  19. import { ICompKeys } from "../../typings";
  20. import { DesignComp, DesignCompObj } from "./DesignComp";
  21. import { CompCardListObj } from "../../components/CompUI/customUI/Cards/CardList";
  22. import { CompCover2Obj, createCompCover2 } from "../../components/CompUI/customUI/Covers/Cover2";
  23. const history = new HistoryController();
  24. export function createObj( data:any, init = true) :DesignComp {
  25. const compKey = data.compKey as ICompKeys
  26. let obj :any = null;
  27. switch(compKey) {
  28. case "Container":
  29. obj = new CompCardObj();
  30. break;
  31. case "Image":
  32. obj = new CompImageObj();
  33. break;
  34. case "Text":
  35. obj = new CompTextObj();
  36. break;
  37. case "Group":
  38. obj = new CompGroupObj();
  39. break;
  40. case "Page":
  41. obj = new CompPageObj();
  42. break;
  43. case "Video":
  44. obj = new CompVideoObj();
  45. break;
  46. case "Web3D":
  47. obj = new CompWeb3DObj();
  48. break;
  49. case "Rectage":
  50. obj = new CompRectObj();
  51. break;
  52. case "Line":
  53. obj = new CompLineObj();
  54. break;
  55. case "Arc":
  56. obj = new CompArcObj();
  57. break;
  58. case "Ellipse":
  59. obj = new CompEllipseObj();
  60. break;
  61. case "Triangle":
  62. obj = new CompTriangleObj();
  63. break;
  64. case "Polygon":
  65. obj = new CompPolygonObj();
  66. break;
  67. case "PolygonNormal":
  68. obj = new CompPolygonNormalObj();
  69. break;
  70. case "Curve":
  71. obj = new CompCurveObj();
  72. break;
  73. case "Map":
  74. obj = new CompMapObj();
  75. break;
  76. case "CardList":
  77. obj = new CompCardListObj();
  78. break;
  79. case "Cover2":
  80. obj = new CompCover2Obj();
  81. if (!init) {
  82. obj = createCompCover2();
  83. }
  84. break;
  85. }
  86. if (obj) {
  87. obj.compKey = compKey;
  88. obj.value.setHistory( history );
  89. obj.layout.setHistory(history);
  90. obj.layout.background.setHistory(history);
  91. obj.layout.border.setHistory(history);
  92. obj.children.setHistory(history);
  93. if (init) obj.fromJson(data);
  94. if (compKey == "CardList") {
  95. obj.children.list = data.children.list;
  96. }
  97. return obj;
  98. }
  99. //兼容老数据
  100. if (compKey == "Cover") {
  101. console.log( data );
  102. debugger;
  103. }
  104. return data;
  105. }
  106. export function cloneObj(o: DesignComp ) {
  107. const data = o.toJson();
  108. data.id = nanoid();
  109. const obj = createObj({compKey: o.compKey}, false)
  110. obj.fromJson(data);
  111. return obj;
  112. }
  113. export {history};