UNPKG

label-print-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

1 lines 8.37 kB
{"version":3,"file":"historyUtil.mjs","sources":["../../../../src/utils/historyUtil.ts"],"sourcesContent":["import { ref } from 'vue-demi';\nimport { elementTypeFormat, MyElement, Panel } from '@myprint/design/types/entity';\nimport { useManualRefHistory } from '@vueuse/core';\nimport { getCurrentPanel, installPanelParentElement } from './elementUtil';\nimport { useAppStoreHook as appStore } from '@myprint/design/stores/app';\nimport { updatePanel } from '@myprint/design/plugins/moveable/moveable';\nimport { parse } from '@myprint/design/utils/utils';\n\nexport enum ActionEnum {\n INIT = '加载',\n ADD = '添加<{element}>',\n RESIZE = '修改<{element}>尺寸',\n ROTATE = '旋转<{element}>',\n REMOVE = '删除<{element}>',\n PASTE = '粘贴<{element}>',\n CUT = '剪切<{element}>',\n CLEAR = '清空面板',\n MOVE = '移动<{element}>',\n BATCH_MOVE = '移动<多个元素>',\n UPDATE_STYLE = '修改<{element}>的[{content}]',\n BATCH_UPDATE_STYLE = '修改<多个元素>的[{content}]',\n}\n\nlet max = 50;\n\nexport interface History {\n label: string,\n content: string\n}\n\nexport interface Snapshot {\n panel?: Panel\n elementList?: MyElement[]\n content?: string\n action: ActionEnum,\n type?: 'Element' | 'PANEL'\n}\n\nconst historyRecord = ref<History>({} as History);\nconst {\n undoStack,\n redoStack,\n commit,\n history,\n undo,\n redo,\n clear,\n canUndo,\n canRedo\n} = useManualRefHistory(historyRecord, { capacity: max });\n\nfunction init() {\n record(<Snapshot>{\n type: 'PANEL',\n action: ActionEnum.INIT,\n elementList: appStore().currentElement\n });\n clear();\n}\n\nfunction record(snapshot: Snapshot) {\n let action = snapshot.action as any;\n let label = '';\n if (snapshot.elementList) {\n for (let myElement of snapshot.elementList) {\n label = label + (myElement.label ? myElement.label : elementTypeFormat[myElement.type]) + ',';\n }\n label = label.slice(0, -1);\n } else {\n label = '面板';\n }\n\n snapshot.panel = getCurrentPanel();\n if (action == ActionEnum.UPDATE_STYLE) {\n if (snapshot.elementList != null) {\n action = action.replace('{element}', label).replace('{content}', snapshot.content);\n } else {\n action = action.replace('{element}', label).replace('{content}', snapshot.content);\n }\n } else if ([ActionEnum.REMOVE, ActionEnum.ADD, ActionEnum.RESIZE, ActionEnum.ROTATE, ActionEnum.MOVE, ActionEnum.CUT, ActionEnum.PASTE].includes(action)) {\n action = action.replace('{element}', label);\n }\n\n delete snapshot.elementList;\n delete snapshot.content;\n\n snapshot.action = action;\n historyRecord.value = {\n content: JSON.stringify(snapshot, (key, value) => {\n if ('parent' == key) return undefined;\n if ('target' == key) return undefined;\n if ('nestColumnList' == key) return undefined;\n return value;\n }),\n label: action\n };\n commit();\n}\n\nfunction undoPanel() {\n if (!canUndo.value) {\n return;\n }\n undo();\n const snapshot = {} as Snapshot;\n parse(historyRecord.value.content, snapshot);\n const panel = getCurrentPanel();\n // panel.elementList = [];\n panel.elementList = snapshot.panel!.elementList;\n panel.pageHeader = snapshot.panel!.pageHeader;\n panel.pageFooter = snapshot.panel!.pageFooter;\n installPanelParentElement(panel);\n updatePanel();\n}\n\nfunction redoPanel() {\n if (!canRedo.value) {\n return;\n }\n const panel = getCurrentPanel();\n redo();\n const snapshot = {} as Snapshot;\n parse(historyRecord.value.content, snapshot);\n // panel.elementList = [];\n panel.elementList = snapshot.panel!.elementList;\n panel.pageHeader = snapshot.panel!.pageHeader;\n panel.pageFooter = snapshot.panel!.pageFooter;\n installPanelParentElement(panel);\n updatePanel();\n}\n\nexport function changeWrapper(val: string | number, title?: string, callback?: (arg: typeof val) => void) {\n record({\n elementList: appStore().currentElement,\n content: title,\n action: ActionEnum.UPDATE_STYLE\n } as Snapshot);\n if (callback) {\n callback(val);\n }\n}\n\nexport {\n init,\n record,\n canUndo,\n canRedo,\n undoStack,\n redoStack,\n undoPanel,\n redoPanel,\n redo,\n history,\n clear\n};\n"],"names":["ActionEnum","appStore"],"mappings":"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"}