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 { nanoid } from 'nanoid'
|
||||||
import { useSlidesStore, useMainStore } from '@/store'
|
import { useSlidesStore, useMainStore } from '@/store'
|
||||||
import { PPTElement, Slide } from '@/types/slides'
|
import { PPTElement, Slide } from '@/types/slides'
|
||||||
import { createElementIdMap } from '@/utils/element'
|
import { createSlideIdMap, createElementIdMap } from '@/utils/element'
|
||||||
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
|
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
@ -42,12 +42,24 @@ export default () => {
|
|||||||
* @param slide 页面数据
|
* @param slide 页面数据
|
||||||
*/
|
*/
|
||||||
const addSlidesFromData = (slides: Slide[]) => {
|
const addSlidesFromData = (slides: Slide[]) => {
|
||||||
|
const slideIdMap = createSlideIdMap(slides)
|
||||||
const newSlides = slides.map(slide => {
|
const newSlides = slides.map(slide => {
|
||||||
const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)
|
const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)
|
||||||
|
|
||||||
for (const element of slide.elements) {
|
for (const element of slide.elements) {
|
||||||
element.id = elIdMap[element.id]
|
element.id = elIdMap[element.id]
|
||||||
if (element.groupId) element.groupId = groupIdMap[element.groupId]
|
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替换
|
// 动画id替换
|
||||||
if (slide.animations) {
|
if (slide.animations) {
|
||||||
@ -58,7 +70,7 @@ export default () => {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
...slide,
|
...slide,
|
||||||
id: nanoid(10),
|
id: slideIdMap[slide.id],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
slidesStore.addSlide(newSlides)
|
slidesStore.addSlide(newSlides)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import tinycolor from 'tinycolor2'
|
import tinycolor from 'tinycolor2'
|
||||||
import { nanoid } from 'nanoid'
|
import { nanoid } from 'nanoid'
|
||||||
import { PPTElement, PPTLineElement } from '@/types/slides'
|
import { PPTElement, PPTLineElement, Slide } from '@/types/slides'
|
||||||
|
|
||||||
interface RotatedElementData {
|
interface RotatedElementData {
|
||||||
left: number
|
left: number
|
||||||
@ -152,6 +152,19 @@ export const uniqAlignLines = (lines: AlignLine[]) => {
|
|||||||
return uniqLines
|
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,并关联到旧ID形成一个字典
|
||||||
* 主要用于复制元素时,维持数据中各处元素ID原有的关系
|
* 主要用于复制元素时,维持数据中各处元素ID原有的关系
|
||||||
|
Loading…
x
Reference in New Issue
Block a user