|
@@ -36,9 +36,11 @@ export function jsonToPpt(jsonData: Record<string, any>) {
|
|
|
const { width, theme, slides } = jsonData
|
|
|
slidesStore.updateSlideIndex(0)
|
|
|
slidesStore.setViewportSize(width || 1920)
|
|
|
- slidesStore.setViewportRatio(theme.viewportRatio)
|
|
|
+ slidesStore.setViewportRatio(theme.viewportRatio || 0.5625)
|
|
|
+
|
|
|
+ const newSlides = formatSlides(slides)
|
|
|
slidesStore.setTheme(theme)
|
|
|
- slidesStore.setSlides(slides.length ? slides : slidesData)
|
|
|
+ slidesStore.setSlides(newSlides.length ? newSlides : slidesData)
|
|
|
}
|
|
|
|
|
|
export function getJsonToBlob() {
|
|
@@ -55,3 +57,33 @@ export function getJsonToBlob() {
|
|
|
title
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+function formatSlides(slides: any[]): any[] {
|
|
|
+ return slides.map(item => {
|
|
|
+
|
|
|
+ if (item.background?.type === "gradient") {
|
|
|
+ if (item.background.gradientType === "linear" && !item.background?.gradient) {
|
|
|
+ item.background.gradient = {
|
|
|
+ colors: [
|
|
|
+ { pos: 0, color: (item.background.gradientColor && item.background.gradientColor[0]) || "rgba(255,255,255,1)" },
|
|
|
+ { pos: 100, color: (item.background.gradientColor && item.background.gradientColor[1]) || "rgba(255,255,255,1)" }
|
|
|
+ ],
|
|
|
+ rotate: item.background.gradientRotate || 0,
|
|
|
+ type: item.background.gradientType
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ;(item.elements || []).map((el: any) => {
|
|
|
+
|
|
|
+ if (el.type === "shape") {
|
|
|
+ if (el.gradient?.type == "linear" && !el.gradient?.colors) {
|
|
|
+ el.gradient.colors = [
|
|
|
+ { pos: 0, color: (el.gradient.color && el.gradient.color[0]) || "rgba(255,255,255,1)" },
|
|
|
+ { pos: 100, color: (el.gradient.color && el.gradient.color[1]) || "rgba(255,255,255,1)" }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return item
|
|
|
+ })
|
|
|
+}
|