lsc 1 hafta önce
ebeveyn
işleme
3b3d71904b
2 değiştirilmiş dosya ile 18 ekleme ve 20 silme
  1. 0 17
      src/hooks/useExport.ts
  2. 18 3
      src/hooks/useImport.ts

+ 0 - 17
src/hooks/useExport.ts

@@ -87,23 +87,6 @@ export default () => {
     saveAs(blob, `${title.value}.json`)
   }
 
-  // 导出JSON文件
-  const exportJSON2 = () => {
-    const json = {
-      title: title.value,
-      width: viewportSize.value,
-      height: viewportSize.value * viewportRatio.value,
-      theme: theme.value,
-      slides: slides.value,
-    }
-    return json
-  }
-
-  // 暴露到window对象
-  if (typeof window !== 'undefined') {
-    (window as any).exportJSON = exportJSON2
-  }
-
   // 格式化颜色值为 透明度 + HexString,供pptxgenjs使用
   const formatColor = (_color: string) => {
     if (!_color) {

+ 18 - 3
src/hooks/useImport.ts

@@ -33,7 +33,7 @@ const convertFontSizePtToPx = (html: string, ratio: number) => {
 
 export default () => {
   const slidesStore = useSlidesStore()
-  const { theme } = storeToRefs(useSlidesStore())
+  const { slides, theme, viewportRatio, title, viewportSize } = storeToRefs(useSlidesStore())
 
   const { addHistorySnapshot } = useHistorySnapshot()
   const { addSlidesFromData } = useAddSlidesOrElements()
@@ -101,9 +101,23 @@ export default () => {
     }
   }
 
-  // 暴露到window对象
+  // 导出JSON文件
+  const exportJSON2 = () => {
+    const json = {
+      title: title.value,
+      width: viewportSize.value,
+      height: viewportSize.value * viewportRatio.value,
+      theme: theme.value,
+      slides: slides.value,
+    }
+    return json
+  }
+
+  // 优化暴露到 window 对象的方式,避免重复赋值
   if (typeof window !== 'undefined') {
-    (window as any).readJSON = readJSON
+    const win = window as any
+    if (!win.exportJSON) win.exportJSON = exportJSON2
+    if (!win.readJSON) win.readJSON = readJSON
   }
 
   // 导入pptist文件
@@ -808,6 +822,7 @@ export default () => {
     importJSON,
     importPPTXFile,
     readJSON,
+    exportJSON2,
     exporting,
   }
 }