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", "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",

View File

@ -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",

View File

@ -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,
} }
} }

View File

@ -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)