index.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { EditorModule } from "..";
  2. import { getOption } from "../config/compUIOptions/create";
  3. import { DesignTemp } from "../defines/DesignTemp";
  4. import { DesignComp } from "../defines/DesignTemp/DesignComp";
  5. import { ICompKeys } from "../typings";
  6. export const store = EditorModule.store({
  7. state: () => ({
  8. mode: "edit",
  9. currCompId: "",
  10. designData: new DesignTemp(),
  11. }),
  12. getters: {
  13. isEditMode(state) {
  14. return state.mode === "edit";
  15. },
  16. currComp(state) {
  17. const comp = state.designData.content.find(
  18. (d) => d.id === state.currCompId
  19. );
  20. return comp;
  21. },
  22. },
  23. actions: {
  24. setMode(v: string) {
  25. this.store.mode = v;
  26. },
  27. initDesignData(data: Partial<DesignTemp>) {
  28. this.store.designData = new DesignTemp(data);
  29. },
  30. insertDesignContent(compKey: ICompKeys, index?: number) {
  31. index || (index = this.store.designData.content.length);
  32. const comp = new DesignComp({
  33. compKey,
  34. value: getOption(this.config.compUIOptions, compKey)?.defaultValue,
  35. });
  36. this.store.designData.content.splice(index, 0, comp);
  37. return comp;
  38. },
  39. setCurrComp(compId: string) {
  40. this.store.currCompId = compId;
  41. },
  42. deleteComp(compId: string) {
  43. const index = this.store.designData.content.findIndex(
  44. (d) => d.id === compId
  45. );
  46. if (index !== -1) {
  47. this.store.designData.content.splice(index, 1);
  48. }
  49. },
  50. moveComp(selIndex: number, targetIndex: number) {
  51. const { content } = this.store.designData;
  52. const [selComp] = content.splice(selIndex, 1);
  53. content.splice(targetIndex, 0, selComp);
  54. },
  55. },
  56. });