mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
Merge branch 'chaoXxxxx-master'
This commit is contained in:
commit
8b818198be
@ -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,24 @@ 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]
|
||||
|
||||
// 若元素绑定了页面跳转链接
|
||||
if (element.link && element.link.type === 'slide') {
|
||||
|
||||
// 待添加页面中包含该页面,则替换相关绑定关系
|
||||
if (slideIdMap[element.link.target]) {
|
||||
element.link.target = slideIdMap[element.link.target]
|
||||
}
|
||||
// 待添加页面中不包含该页面,则删除该元素绑定的页面跳转
|
||||
else delete element.link
|
||||
}
|
||||
}
|
||||
// 动画id替换
|
||||
if (slide.animations) {
|
||||
@ -58,7 +70,7 @@ export default () => {
|
||||
}
|
||||
return {
|
||||
...slide,
|
||||
id: nanoid(10),
|
||||
id: slideIdMap[slide.id],
|
||||
}
|
||||
})
|
||||
slidesStore.addSlide(newSlides)
|
||||
|
@ -1,6 +1,6 @@
|
||||
import tinycolor from 'tinycolor2'
|
||||
import { nanoid } from 'nanoid'
|
||||
import { PPTElement, PPTLineElement } from '@/types/slides'
|
||||
import { PPTElement, PPTLineElement, Slide } from '@/types/slides'
|
||||
|
||||
interface RotatedElementData {
|
||||
left: number
|
||||
@ -152,6 +152,19 @@ export const uniqAlignLines = (lines: AlignLine[]) => {
|
||||
return uniqLines
|
||||
}
|
||||
|
||||
/**
|
||||
* 以页面列表为基础,为每一个页面生成新的ID,并关联到旧ID形成一个字典
|
||||
* 主要用于页面元素时,维持数据中各处页面ID原有的关系
|
||||
* @param slides 页面列表
|
||||
*/
|
||||
export const createSlideIdMap = (slides: Slide[]) => {
|
||||
const slideIdMap = {}
|
||||
for (const slide of slides) {
|
||||
slideIdMap[slide.id] = nanoid(10)
|
||||
}
|
||||
return slideIdMap
|
||||
}
|
||||
|
||||
/**
|
||||
* 以元素列表为基础,为每一个元素生成新的ID,并关联到旧ID形成一个字典
|
||||
* 主要用于复制元素时,维持数据中各处元素ID原有的关系
|
||||
|
Loading…
x
Reference in New Issue
Block a user