mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
perf: 导入pptx demo优化
This commit is contained in:
parent
2db1454f16
commit
a4c1b39f22
18
package-lock.json
generated
18
package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user