import { EditorModule } from ".."; import { DesignTemp } from "../../objects/DesignTemp"; import { EditorMode } from "../../typings"; export const store = EditorModule.store({ state: () => ({ textEditingState: false, mode: "editPage" as EditorMode, isWk: false, //作品集内作品 croppImage: "", //裁剪图片 compEditMode: false, //组件编辑模式 compEditReslut: 0, // -1 取消, 1 确定 tplCategory: undefined, filesCacheUrl: new Map(), }), getters: { currCompId() { return this.controls.pageCtrl.state.currCompId; }, isEditMode(): boolean { return !this.store.isPreview && !this.store.isDisplay; }, isEditPage(state) { return state.mode === "editPage"; }, isEditComp(state) { return state.mode === "editComp"; }, isPreview(state) { return state.mode === "preview"; }, isDisplay(state) { return state.mode === "display"; }, compMap(state) { return this.controls.pageCtrl.compMap; }, currComp(state) { return this.controls.pageCtrl.currComp; }, currStreamCard(state) { return this.controls.pageCtrl.currStreamCard; }, previewImageList(state) { const res: string[] = []; let scope = this; function deepChild(item: any) { if (typeof item == "string") { const comp = scope.controls.pageCtrl.compMap[item]; if (comp.compKey === "Image") { res.push(comp.value.url); } else if (comp.children) { deepChild(comp.children); } } else if (item instanceof Object) { if (item instanceof Array) { item.forEach((d) => { deepChild(d); }); } else { Object.values(item).forEach((d) => { deepChild(d); }); } } } deepChild(this.controls.pageCtrl.compMap["root"].children); return res; }, }, actions: { setCompData(id: string, data: any) { this.controls.pageCtrl.compMap[id] = data; }, setMode(v: EditorMode) { this.store.mode = v; }, setWk(v: boolean) { this.store.isWk = v; }, setTplCategory(data) { this.store.tplCategory = data; }, setDesignData(data: Partial) { this.controls.pageCtrl.designData = new DesignTemp(data); }, setTextEditingState(state: boolean) { this.store.textEditingState = state; }, }, });