perf: 导入pptx demo优化

This commit is contained in:
pipipi-pikachu 2023-09-10 10:56:11 +08:00
parent 2db1454f16
commit a4c1b39f22
4 changed files with 32 additions and 12 deletions

18
package-lock.json generated
View File

@ -23,9 +23,8 @@
"mitt": "^3.0.1",
"nanoid": "^4.0.2",
"pinia": "^2.1.4",
"postcss-scss": "^4.0.6",
"pptxgenjs": "^3.12.0",
"pptxtojson": "^0.0.10",
"pptxtojson": "^0.0.11",
"prosemirror-commands": "^1.3.0",
"prosemirror-dropcursor": "^1.6.0",
"prosemirror-gapcursor": "^1.3.1",
@ -67,6 +66,7 @@
"eslint-plugin-vue": "^9.9.0",
"husky": "8.0.3",
"postcss-html": "^1.5.0",
"postcss-scss": "^4.0.6",
"sass": "^1.32.13",
"sass-loader": "^8.0.2",
"stylelint": "^15.10.2",
@ -10739,6 +10739,7 @@
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
"dev": true,
"engines": {
"node": ">=12.0"
},
@ -10824,9 +10825,9 @@
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA=="
},
"node_modules/pptxtojson": {
"version": "0.0.10",
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.10.tgz",
"integrity": "sha512-OOVbl4y5tgnGkQIlSyZ742oBRivVSBYJV7dOwbhXEcnRZvPRVGBu8KPo7PE9QP2tDwpvuXJvqFrRaG7mbnfSfA==",
"version": "0.0.11",
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.11.tgz",
"integrity": "sha512-LzOtJEvl2rb++l/TnKxHxxviv1lSRJvwFs24vy53a8r5PmVmHRfPO8MfcNbOVK+tbxCrQMjz58354oPLS2jEpQ==",
"dependencies": {
"jszip": "^3.10.1",
"tinycolor2": "1.6.0",
@ -23098,6 +23099,7 @@
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
"dev": true,
"requires": {}
},
"postcss-selector-parser": {
@ -23154,9 +23156,9 @@
}
},
"pptxtojson": {
"version": "0.0.10",
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.10.tgz",
"integrity": "sha512-OOVbl4y5tgnGkQIlSyZ742oBRivVSBYJV7dOwbhXEcnRZvPRVGBu8KPo7PE9QP2tDwpvuXJvqFrRaG7mbnfSfA==",
"version": "0.0.11",
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.11.tgz",
"integrity": "sha512-LzOtJEvl2rb++l/TnKxHxxviv1lSRJvwFs24vy53a8r5PmVmHRfPO8MfcNbOVK+tbxCrQMjz58354oPLS2jEpQ==",
"requires": {
"jszip": "^3.10.1",
"tinycolor2": "1.6.0",

View File

@ -25,7 +25,7 @@
"nanoid": "^4.0.2",
"pinia": "^2.1.4",
"pptxgenjs": "^3.12.0",
"pptxtojson": "^0.0.10",
"pptxtojson": "^0.0.11",
"prosemirror-commands": "^1.3.0",
"prosemirror-dropcursor": "^1.6.0",
"prosemirror-gapcursor": "^1.3.1",

View File

@ -1,3 +1,4 @@
import { computed } from 'vue'
import { storeToRefs } from 'pinia'
import { nanoid } from 'nanoid'
import { useSlidesStore, useMainStore } from '@/store'
@ -8,7 +9,7 @@ import useHistorySnapshot from '@/hooks/useHistorySnapshot'
export default () => {
const mainStore = useMainStore()
const slidesStore = useSlidesStore()
const { currentSlide } = storeToRefs(slidesStore)
const { currentSlide, slides } = storeToRefs(slidesStore)
const { addHistorySnapshot } = useHistorySnapshot()
@ -77,8 +78,15 @@ export default () => {
addHistorySnapshot()
}
const isEmptySlide = computed(() => {
if (slides.value.length > 1) return false
if (slides.value[0].elements.length > 0) return false
return true
})
return {
addElementsFromData,
addSlidesFromData,
isEmptySlide,
}
}

View File

@ -15,7 +15,7 @@ export default () => {
const slidesStore = useSlidesStore()
const { theme } = storeToRefs(useSlidesStore())
const { addSlidesFromData } = useAddSlidesOrElements()
const { addSlidesFromData, isEmptySlide } = useAddSlidesOrElements()
const exporting = ref(false)
@ -28,6 +28,7 @@ export default () => {
try {
const slides = JSON.parse(decrypt(reader.result as string))
if (cover) slidesStore.setSlides(slides)
else if (isEmptySlide.value) slidesStore.setSlides(slides)
else addSlidesFromData(slides)
}
catch {
@ -101,6 +102,14 @@ export default () => {
imageSize: 'cover',
}
}
else if (type === 'gradient') {
background = {
type: 'gradient',
gradientType: 'linear',
gradientColor: [value.colors[0], value.colors[1]],
gradientRotate: value.rot,
}
}
else {
background = {
type: 'solid',
@ -332,7 +341,8 @@ export default () => {
parseElements(item.elements)
slides.push(slide)
}
addSlidesFromData(slides)
if (isEmptySlide.value) slidesStore.setSlides(slides)
else addSlidesFromData(slides)
exporting.value = false
}
reader.readAsArrayBuffer(file)