perf: 一些代码优化

This commit is contained in:
zxc 2025-03-21 21:16:09 +08:00
parent ad2a7cb32d
commit 83e9871c80
4 changed files with 24 additions and 20 deletions

View File

@ -198,22 +198,24 @@ If you wish to use this project for commercial gain, I hope you will respect ope
- 你给本项目提交过重要的 PR 并且被合并(由作者主观判断);
- 你长期参与到本项目的维护/推进工作中,如为本项目:提供了有效的周边工具、制作了大量模板等(由作者主观判断);
3. [邮件联系作者](mailto:pipipi_pikachu@163.com)付费获取独立的商业授权。独立授权价格:
- 一年1999
- 三年2999
- 一年1999(无发票)
- 三年2999(无发票)
- 永久5499无发票
- 永久6999可开电子发票
- 如需付费获取独立的商业授权,请注意:
- 仅授权,不提供额外的商业化版本和技术支持
- 务必提前做好调研判断PPTist是否符合需求无论功能还是开发
- 独立商业授权的意思是:单独授权您将代码用于商业行为,且不必执行 AGPL-3.0 协议;
- 不提供额外的“高级版本”和技术支持,也不提供可直接交付的产品;
- 如有需要可提供AIPPT相关后台逻辑和当前模板数据但都非常简单建议自己实现
- 务必提前做好调研判断PPTist是否符合需求无论功能还是开发
---
# 🔔 其他说明
## 什么是 AGPL-3.0 协议
协议的核心要求用通俗的语言解释如下:
- **开源义务**:如果你用了 AGPL 的代码,无论你或你的下游怎么使用/修改,都必须把你最终的代码全部完整公开出来(不只是给出修改的部分),并继续以 AGPL 协议开源,保持传染性。
- **网络服务也要开源**即使你只是用 AGPL 的代码做了一个网站或网络服务,别人通过网络用你的服务时,你也需要遵守上一条**开源义务**。
- **开源义务**:如果你用了 AGPL 的代码,无论你或你的下游怎么使用/修改,都必须把你最终的代码全部完整公开出来(不只是给出修改的部分),并继续以 AGPL 协议开源,保持开源的传染性。
- **网络服务也要开源**哪怕你只是用 AGPL 的代码做了一个网站或网络服务,别人通过网络用你的服务时,你也需要遵守上一条**开源义务**。
- **保留版权声明**:你不能删掉代码里原来的作者信息和许可证声明,得告诉大家这代码是从哪儿来的。
- **不能加额外限制**:你不能在 AGPL 代码上加一些限制,比如不让别人再分发,或者要求别人付费才能用。
- **不能加额外限制**:你不能在 AGPL 代码上加一些限制,比如不让别人再分发,或者要求别人付费才能使代码
- **免责声明**:作者不保证代码没有 bug也不对使用后果负责。
详细协议内容见官方文档:[AGPL-3.0 协议](https://www.gnu.org/licenses/agpl-3.0.html)

View File

@ -182,22 +182,24 @@ npm run dev
- 你给本项目提交过重要的 PR 并且被合并(由作者主观判断);
- 你长期参与到本项目的维护/推进工作中,如为本项目:提供了有效的周边工具、制作了大量模板等(由作者主观判断);
3. [邮件联系作者](mailto:pipipi_pikachu@163.com)付费获取独立的商业授权。独立授权价格:
- 一年1999
- 三年2999
- 一年1999(无发票)
- 三年2999(无发票)
- 永久5499无发票
- 永久6999可开电子发票
- 如需付费获取独立的商业授权,请注意:
- 仅授权,不提供额外的商业化版本和技术支持
- 务必提前做好调研判断PPTist是否符合需求无论功能还是开发
- 独立商业授权的意思是:单独授权您将代码用于商业行为,且不必执行 AGPL-3.0 协议;
- 不提供额外的“高级版本”和技术支持,也不提供可直接交付的产品;
- 如有需要可提供AIPPT相关后台逻辑和当前模板数据但都非常简单建议自己实现
- 务必提前做好调研判断PPTist是否符合需求无论功能还是开发
---
# 🔔 其他说明
## 什么是 AGPL-3.0 协议
协议的核心要求用通俗的语言解释如下:
- **开源义务**:如果你用了 AGPL 的代码,无论你或你的下游怎么使用/修改,都必须把你最终的代码全部完整公开出来(不只是给出修改的部分),并继续以 AGPL 协议开源,保持传染性。
- **网络服务也要开源**即使你只是用 AGPL 的代码做了一个网站或网络服务,别人通过网络用你的服务时,你也需要遵守上一条**开源义务**。
- **开源义务**:如果你用了 AGPL 的代码,无论你或你的下游怎么使用/修改,都必须把你最终的代码全部完整公开出来(不只是给出修改的部分),并继续以 AGPL 协议开源,保持开源的传染性。
- **网络服务也要开源**哪怕你只是用 AGPL 的代码做了一个网站或网络服务,别人通过网络用你的服务时,你也需要遵守上一条**开源义务**。
- **保留版权声明**:你不能删掉代码里原来的作者信息和许可证声明,得告诉大家这代码是从哪儿来的。
- **不能加额外限制**:你不能在 AGPL 代码上加一些限制,比如不让别人再分发,或者要求别人付费才能用。
- **不能加额外限制**:你不能在 AGPL 代码上加一些限制,比如不让别人再分发,或者要求别人付费才能使代码
- **免责声明**:作者不保证代码没有 bug也不对使用后果负责。
详细协议内容见官方文档:[AGPL-3.0 协议](https://www.gnu.org/licenses/agpl-3.0.html)

View File

@ -6,7 +6,7 @@ import { useSlidesStore } from '@/store'
import useAddSlidesOrElements from './useAddSlidesOrElements'
import useSlideHandler from './useSlideHandler'
interface PexelsImage {
interface ImgPoolItem {
id: string
src: string
width: number
@ -18,7 +18,7 @@ export default () => {
const { addSlidesFromData } = useAddSlidesOrElements()
const { isEmptySlide } = useSlideHandler()
const imgPool = ref<PexelsImage[]>([])
const imgPool = ref<ImgPoolItem[]>([])
const transitionIndex = ref(0)
const transitionTemplate = ref<Slide | null>(null)
@ -169,8 +169,8 @@ export default () => {
return el.type === 'text' ? { ...el, content, lineHeight: size < 15 ? 1.2 : el.lineHeight } : { ...el, text: { ...el.text!, content } }
}
const getUseableImage = (el: PPTImageElement): PexelsImage | null => {
let img: PexelsImage | null = null
const getUseableImage = (el: PPTImageElement): ImgPoolItem | null => {
let img: ImgPoolItem | null = null
let imgs = []
@ -227,7 +227,7 @@ export default () => {
return content.replace('```json', '').replace('```', '')
}
const AIPPT = (templateSlides: Slide[], _AISlides: AIPPTSlide[], imgs?: PexelsImage[]) => {
const AIPPT = (templateSlides: Slide[], _AISlides: AIPPTSlide[], imgs?: ImgPoolItem[]) => {
slidesStore.updateSlideIndex(slidesStore.slides.length - 1)
if (imgs) imgPool.value = imgs

View File

@ -7,7 +7,7 @@
<div class="tool-btn" :class="{ 'active': timerlVisible }" @click="timerlVisible = !timerlVisible"><IconStopwatchStart class="tool-icon" /><span>计时器</span></div>
<div class="tool-btn" @click="() => fullscreenState ? manualExitFullscreen() : enterFullscreen()">
<IconOffScreenOne class="tool-icon" v-if="fullscreenState" />
<IconOffScreenOne class="tool-icon" v-else />
<IconFullScreenOne class="tool-icon" v-else />
<span>{{ fullscreenState ? '退出全屏' : '全屏' }}</span>
</div>
<Divider class="divider" />