fix: 修改复制页面时若element存在link检查并替换

This commit is contained in:
ChaoXxxx 2022-08-05 18:23:53 +08:00
parent 00ee84bfb5
commit 160240d2db
2 changed files with 25 additions and 1 deletions

View File

@ -2,7 +2,7 @@ import { storeToRefs } from 'pinia'
import { nanoid } from 'nanoid'
import { useSlidesStore, useMainStore } from '@/store'
import { PPTElement, Slide } from '@/types/slides'
import { createElementIdMap } from '@/utils/element'
import { createSlideIdMap, createElementIdMap } from '@/utils/element'
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
export default () => {
@ -42,12 +42,23 @@ export default () => {
* @param slide
*/
const addSlidesFromData = (slides: Slide[]) => {
const slideIdMap = createSlideIdMap(slides)
const newSlides = slides.map(slide => {
const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)
for (const element of slide.elements) {
element.id = elIdMap[element.id]
if (element.groupId) element.groupId = groupIdMap[element.groupId]
// 判断element跳转链接,如为slide且复制页面含target则替换,否则重置为undefined
if (element?.link && element.link.type === 'slide') {
if (slideIdMap[element.link.target]) {
element.link.target = slideIdMap[element.link.target]
}
else {
element.link = undefined
}
}
}
// 动画id替换
if (slide.animations) {

View File

@ -152,6 +152,19 @@ export const uniqAlignLines = (lines: AlignLine[]) => {
return uniqLines
}
/**
* IDID形成一个字典
* ID原有的关系
* @param slides
*/
export const createSlideIdMap = (slides: Slide[]) => {
const slideIdMap = {}
for (const slide of slides) {
slideIdMap[slide.id] = nanoid(10)
}
return slideIdMap
}
/**
* IDID形成一个字典
* ID原有的关系