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",
|
"mitt": "^3.0.1",
|
||||||
"nanoid": "^4.0.2",
|
"nanoid": "^4.0.2",
|
||||||
"pinia": "^2.1.4",
|
"pinia": "^2.1.4",
|
||||||
"postcss-scss": "^4.0.6",
|
|
||||||
"pptxgenjs": "^3.12.0",
|
"pptxgenjs": "^3.12.0",
|
||||||
"pptxtojson": "^0.0.10",
|
"pptxtojson": "^0.0.11",
|
||||||
"prosemirror-commands": "^1.3.0",
|
"prosemirror-commands": "^1.3.0",
|
||||||
"prosemirror-dropcursor": "^1.6.0",
|
"prosemirror-dropcursor": "^1.6.0",
|
||||||
"prosemirror-gapcursor": "^1.3.1",
|
"prosemirror-gapcursor": "^1.3.1",
|
||||||
@ -67,6 +66,7 @@
|
|||||||
"eslint-plugin-vue": "^9.9.0",
|
"eslint-plugin-vue": "^9.9.0",
|
||||||
"husky": "8.0.3",
|
"husky": "8.0.3",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.5.0",
|
||||||
|
"postcss-scss": "^4.0.6",
|
||||||
"sass": "^1.32.13",
|
"sass": "^1.32.13",
|
||||||
"sass-loader": "^8.0.2",
|
"sass-loader": "^8.0.2",
|
||||||
"stylelint": "^15.10.2",
|
"stylelint": "^15.10.2",
|
||||||
@ -10739,6 +10739,7 @@
|
|||||||
"version": "4.0.6",
|
"version": "4.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
|
||||||
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
|
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0"
|
"node": ">=12.0"
|
||||||
},
|
},
|
||||||
@ -10824,9 +10825,9 @@
|
|||||||
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA=="
|
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA=="
|
||||||
},
|
},
|
||||||
"node_modules/pptxtojson": {
|
"node_modules/pptxtojson": {
|
||||||
"version": "0.0.10",
|
"version": "0.0.11",
|
||||||
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.10.tgz",
|
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.11.tgz",
|
||||||
"integrity": "sha512-OOVbl4y5tgnGkQIlSyZ742oBRivVSBYJV7dOwbhXEcnRZvPRVGBu8KPo7PE9QP2tDwpvuXJvqFrRaG7mbnfSfA==",
|
"integrity": "sha512-LzOtJEvl2rb++l/TnKxHxxviv1lSRJvwFs24vy53a8r5PmVmHRfPO8MfcNbOVK+tbxCrQMjz58354oPLS2jEpQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
@ -23098,6 +23099,7 @@
|
|||||||
"version": "4.0.6",
|
"version": "4.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.6.tgz",
|
||||||
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
|
"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-selector-parser": {
|
"postcss-selector-parser": {
|
||||||
@ -23154,9 +23156,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pptxtojson": {
|
"pptxtojson": {
|
||||||
"version": "0.0.10",
|
"version": "0.0.11",
|
||||||
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.10.tgz",
|
"resolved": "https://registry.npmmirror.com/pptxtojson/-/pptxtojson-0.0.11.tgz",
|
||||||
"integrity": "sha512-OOVbl4y5tgnGkQIlSyZ742oBRivVSBYJV7dOwbhXEcnRZvPRVGBu8KPo7PE9QP2tDwpvuXJvqFrRaG7mbnfSfA==",
|
"integrity": "sha512-LzOtJEvl2rb++l/TnKxHxxviv1lSRJvwFs24vy53a8r5PmVmHRfPO8MfcNbOVK+tbxCrQMjz58354oPLS2jEpQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"nanoid": "^4.0.2",
|
"nanoid": "^4.0.2",
|
||||||
"pinia": "^2.1.4",
|
"pinia": "^2.1.4",
|
||||||
"pptxgenjs": "^3.12.0",
|
"pptxgenjs": "^3.12.0",
|
||||||
"pptxtojson": "^0.0.10",
|
"pptxtojson": "^0.0.11",
|
||||||
"prosemirror-commands": "^1.3.0",
|
"prosemirror-commands": "^1.3.0",
|
||||||
"prosemirror-dropcursor": "^1.6.0",
|
"prosemirror-dropcursor": "^1.6.0",
|
||||||
"prosemirror-gapcursor": "^1.3.1",
|
"prosemirror-gapcursor": "^1.3.1",
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { computed } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { nanoid } from 'nanoid'
|
import { nanoid } from 'nanoid'
|
||||||
import { useSlidesStore, useMainStore } from '@/store'
|
import { useSlidesStore, useMainStore } from '@/store'
|
||||||
@ -8,7 +9,7 @@ import useHistorySnapshot from '@/hooks/useHistorySnapshot'
|
|||||||
export default () => {
|
export default () => {
|
||||||
const mainStore = useMainStore()
|
const mainStore = useMainStore()
|
||||||
const slidesStore = useSlidesStore()
|
const slidesStore = useSlidesStore()
|
||||||
const { currentSlide } = storeToRefs(slidesStore)
|
const { currentSlide, slides } = storeToRefs(slidesStore)
|
||||||
|
|
||||||
const { addHistorySnapshot } = useHistorySnapshot()
|
const { addHistorySnapshot } = useHistorySnapshot()
|
||||||
|
|
||||||
@ -77,8 +78,15 @@ export default () => {
|
|||||||
addHistorySnapshot()
|
addHistorySnapshot()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isEmptySlide = computed(() => {
|
||||||
|
if (slides.value.length > 1) return false
|
||||||
|
if (slides.value[0].elements.length > 0) return false
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
addElementsFromData,
|
addElementsFromData,
|
||||||
addSlidesFromData,
|
addSlidesFromData,
|
||||||
|
isEmptySlide,
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,7 +15,7 @@ export default () => {
|
|||||||
const slidesStore = useSlidesStore()
|
const slidesStore = useSlidesStore()
|
||||||
const { theme } = storeToRefs(useSlidesStore())
|
const { theme } = storeToRefs(useSlidesStore())
|
||||||
|
|
||||||
const { addSlidesFromData } = useAddSlidesOrElements()
|
const { addSlidesFromData, isEmptySlide } = useAddSlidesOrElements()
|
||||||
|
|
||||||
const exporting = ref(false)
|
const exporting = ref(false)
|
||||||
|
|
||||||
@ -28,6 +28,7 @@ export default () => {
|
|||||||
try {
|
try {
|
||||||
const slides = JSON.parse(decrypt(reader.result as string))
|
const slides = JSON.parse(decrypt(reader.result as string))
|
||||||
if (cover) slidesStore.setSlides(slides)
|
if (cover) slidesStore.setSlides(slides)
|
||||||
|
else if (isEmptySlide.value) slidesStore.setSlides(slides)
|
||||||
else addSlidesFromData(slides)
|
else addSlidesFromData(slides)
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
@ -101,6 +102,14 @@ export default () => {
|
|||||||
imageSize: 'cover',
|
imageSize: 'cover',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (type === 'gradient') {
|
||||||
|
background = {
|
||||||
|
type: 'gradient',
|
||||||
|
gradientType: 'linear',
|
||||||
|
gradientColor: [value.colors[0], value.colors[1]],
|
||||||
|
gradientRotate: value.rot,
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
background = {
|
background = {
|
||||||
type: 'solid',
|
type: 'solid',
|
||||||
@ -332,7 +341,8 @@ export default () => {
|
|||||||
parseElements(item.elements)
|
parseElements(item.elements)
|
||||||
slides.push(slide)
|
slides.push(slide)
|
||||||
}
|
}
|
||||||
addSlidesFromData(slides)
|
if (isEmptySlide.value) slidesStore.setSlides(slides)
|
||||||
|
else addSlidesFromData(slides)
|
||||||
exporting.value = false
|
exporting.value = false
|
||||||
}
|
}
|
||||||
reader.readAsArrayBuffer(file)
|
reader.readAsArrayBuffer(file)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user