Upload 6 files
Browse files- frontend/env.d.ts +2 -0
- frontend/index.html +63 -0
- frontend/package.json +75 -0
- frontend/tsconfig.app.json +13 -0
- frontend/tsconfig.json +11 -0
- frontend/vite.config.ts +37 -0
frontend/env.d.ts
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
// eslint-disable-next-line spaced-comment
|
2 |
+
/// <reference types="vite/client" />
|
frontend/index.html
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="zh-CN">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<link rel="icon" href="/favicon.ico">
|
6 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
7 |
+
<meta name="renderer" content="webkit">
|
8 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
9 |
+
<meta name="description" content="PPTist - 在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,实现在线PPT的编辑、演示,支持导出PPT文件,支持AI生成PPT。" />
|
10 |
+
<meta name="keywords" content="pptist,ppt,powerpoint,office powerpoint,在线ppt,幻灯片,演示文稿,ppt在线制作,aippt" />
|
11 |
+
<title>PPTist - 在线演示文稿</title>
|
12 |
+
|
13 |
+
<style>
|
14 |
+
.first-screen-loading {
|
15 |
+
width: 200px;
|
16 |
+
height: 200px;
|
17 |
+
position: fixed;
|
18 |
+
top: 50%;
|
19 |
+
left: 50%;
|
20 |
+
margin-top: -100px;
|
21 |
+
margin-left: -100px;
|
22 |
+
display: flex;
|
23 |
+
flex-direction: column;
|
24 |
+
justify-content: center;
|
25 |
+
align-items: center;
|
26 |
+
}
|
27 |
+
.first-screen-loading-spinner {
|
28 |
+
width: 36px;
|
29 |
+
height: 36px;
|
30 |
+
border: 3px solid #d14424;
|
31 |
+
border-top-color: transparent;
|
32 |
+
border-radius: 50%;
|
33 |
+
box-sizing: border-box;
|
34 |
+
animation: spinner .8s linear infinite;
|
35 |
+
}
|
36 |
+
.first-screen-loading-text {
|
37 |
+
margin-top: 20px;
|
38 |
+
color: #d14424;
|
39 |
+
}
|
40 |
+
@keyframes spinner {
|
41 |
+
0% {
|
42 |
+
transform: rotate(0deg);
|
43 |
+
}
|
44 |
+
100% {
|
45 |
+
transform: rotate(360deg);
|
46 |
+
}
|
47 |
+
}
|
48 |
+
</style>
|
49 |
+
</head>
|
50 |
+
<body>
|
51 |
+
<div id="app">
|
52 |
+
<div class="first-screen-loading">
|
53 |
+
<div class="first-screen-loading-spinner"></div>
|
54 |
+
<div class="first-screen-loading-text">正在加载中,请稍等 ...</div>
|
55 |
+
</div>
|
56 |
+
</div>
|
57 |
+
<script type="module" src="/src/main.ts"></script>
|
58 |
+
</body>
|
59 |
+
|
60 |
+
<script>
|
61 |
+
document.oncontextmenu = e => e.preventDefault()
|
62 |
+
</script>
|
63 |
+
</html>
|
frontend/package.json
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "pptist",
|
3 |
+
"version": "2.0.0",
|
4 |
+
"private": true,
|
5 |
+
"type": "module",
|
6 |
+
"scripts": {
|
7 |
+
"dev": "vite",
|
8 |
+
"build": "run-p type-check \"build-only {@}\" --",
|
9 |
+
"preview": "vite preview",
|
10 |
+
"build-only": "vite build",
|
11 |
+
"type-check": "vue-tsc --build --force",
|
12 |
+
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
13 |
+
"prepare": "husky install"
|
14 |
+
},
|
15 |
+
"dependencies": {
|
16 |
+
"@icon-park/vue-next": "^1.4.2",
|
17 |
+
"animate.css": "^4.1.1",
|
18 |
+
"axios": "^1.7.9",
|
19 |
+
"clipboard": "^2.0.11",
|
20 |
+
"crypto-js": "^4.2.0",
|
21 |
+
"dexie": "^4.0.11",
|
22 |
+
"echarts": "^5.5.1",
|
23 |
+
"file-saver": "^2.0.5",
|
24 |
+
"hfmath": "^0.0.2",
|
25 |
+
"html-to-image": "^1.11.11",
|
26 |
+
"lodash": "^4.17.21",
|
27 |
+
"mitt": "^3.0.1",
|
28 |
+
"nanoid": "^5.0.7",
|
29 |
+
"number-precision": "^1.6.0",
|
30 |
+
"pinia": "^3.0.2",
|
31 |
+
"pptxgenjs": "^3.12.0",
|
32 |
+
"pptxtojson": "^1.3.2",
|
33 |
+
"prosemirror-commands": "^1.6.0",
|
34 |
+
"prosemirror-dropcursor": "^1.8.1",
|
35 |
+
"prosemirror-gapcursor": "^1.3.2",
|
36 |
+
"prosemirror-history": "^1.3.2",
|
37 |
+
"prosemirror-inputrules": "^1.4.0",
|
38 |
+
"prosemirror-keymap": "^1.2.2",
|
39 |
+
"prosemirror-model": "^1.22.2",
|
40 |
+
"prosemirror-schema-basic": "^1.2.3",
|
41 |
+
"prosemirror-schema-list": "^1.4.1",
|
42 |
+
"prosemirror-state": "^1.4.3",
|
43 |
+
"prosemirror-view": "^1.33.9",
|
44 |
+
"svg-arc-to-cubic-bezier": "^3.2.0",
|
45 |
+
"svg-pathdata": "^7.1.0",
|
46 |
+
"tinycolor2": "^1.6.0",
|
47 |
+
"tippy.js": "^6.3.7",
|
48 |
+
"vue": "^3.4.34",
|
49 |
+
"vue-router": "^4.5.1",
|
50 |
+
"vuedraggable": "^4.1.0"
|
51 |
+
},
|
52 |
+
"devDependencies": {
|
53 |
+
"@commitlint/cli": "^18.4.3",
|
54 |
+
"@commitlint/config-conventional": "^18.4.3",
|
55 |
+
"@rushstack/eslint-patch": "^1.3.3",
|
56 |
+
"@tsconfig/node18": "^18.2.2",
|
57 |
+
"@types/crypto-js": "^4.2.1",
|
58 |
+
"@types/file-saver": "^2.0.7",
|
59 |
+
"@types/lodash": "^4.14.202",
|
60 |
+
"@types/node": "^18.19.3",
|
61 |
+
"@types/svg-arc-to-cubic-bezier": "^3.2.2",
|
62 |
+
"@types/tinycolor2": "^1.4.6",
|
63 |
+
"@vitejs/plugin-vue": "^5.1.0",
|
64 |
+
"@vue/eslint-config-typescript": "^12.0.0",
|
65 |
+
"@vue/tsconfig": "^0.5.0",
|
66 |
+
"eslint": "^8.49.0",
|
67 |
+
"eslint-plugin-vue": "^9.17.0",
|
68 |
+
"husky": "^8.0.3",
|
69 |
+
"npm-run-all2": "^6.1.1",
|
70 |
+
"sass": "^1.69.6",
|
71 |
+
"typescript": "~5.3.0",
|
72 |
+
"vite": "^5.3.5",
|
73 |
+
"vue-tsc": "^2.0.29"
|
74 |
+
}
|
75 |
+
}
|
frontend/tsconfig.app.json
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"extends": "@vue/tsconfig/tsconfig.dom.json",
|
3 |
+
"include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
|
4 |
+
"exclude": ["src/**/__tests__/*"],
|
5 |
+
"compilerOptions": {
|
6 |
+
"composite": true,
|
7 |
+
"noEmit": true,
|
8 |
+
"baseUrl": ".",
|
9 |
+
"paths": {
|
10 |
+
"@/*": ["./src/*"]
|
11 |
+
}
|
12 |
+
}
|
13 |
+
}
|
frontend/tsconfig.json
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"files": [],
|
3 |
+
"references": [
|
4 |
+
{
|
5 |
+
"path": "./tsconfig.node.json"
|
6 |
+
},
|
7 |
+
{
|
8 |
+
"path": "./tsconfig.app.json"
|
9 |
+
}
|
10 |
+
]
|
11 |
+
}
|
frontend/vite.config.ts
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { fileURLToPath, URL } from 'node:url'
|
2 |
+
|
3 |
+
import { defineConfig } from 'vite'
|
4 |
+
import vue from '@vitejs/plugin-vue'
|
5 |
+
|
6 |
+
// https://vitejs.dev/config/
|
7 |
+
export default defineConfig({
|
8 |
+
base: '',
|
9 |
+
plugins: [
|
10 |
+
vue(),
|
11 |
+
],
|
12 |
+
server: {
|
13 |
+
host: '127.0.0.1',
|
14 |
+
port: 5173,
|
15 |
+
proxy: {
|
16 |
+
'/api': {
|
17 |
+
target: 'http://localhost:7860', // 修改为后端实际运行的端口
|
18 |
+
changeOrigin: true,
|
19 |
+
}
|
20 |
+
}
|
21 |
+
},
|
22 |
+
css: {
|
23 |
+
preprocessorOptions: {
|
24 |
+
scss: {
|
25 |
+
additionalData: `
|
26 |
+
@import '@/assets/styles/variable.scss';
|
27 |
+
@import '@/assets/styles/mixin.scss';
|
28 |
+
`
|
29 |
+
},
|
30 |
+
},
|
31 |
+
},
|
32 |
+
resolve: {
|
33 |
+
alias: {
|
34 |
+
'@': fileURLToPath(new URL('./src', import.meta.url))
|
35 |
+
}
|
36 |
+
}
|
37 |
+
})
|