@lofcz/pptist 2.0.18 → 2.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -13
- package/dist/embed/agentic-manifest.json +3 -3
- package/dist/embed/fonts/LXGWNeoXiHei.woff2 +0 -0
- package/dist/embed/fonts/LXGWNeoZhiSong.woff2 +0 -0
- package/dist/embed/fonts/Lato.woff2 +0 -0
- package/dist/embed/mocks/slides.json +332 -179
- package/dist/embed/mocks/template_8.json +1 -1
- package/dist/embed/pptist-embed.css +1 -1
- package/dist/embed/pptist-embed.js +16220 -16061
- package/dist/types/configs/font.d.ts +3 -0
- package/dist/types/i18n/i18n-types.d.ts +32 -0
- package/dist/types/store/main.d.ts +4 -0
- package/dist/types/store/slides.d.ts +8 -0
- package/dist/types/types/slides.d.ts +6 -0
- package/dist/types/utils/element.d.ts +2 -0
- package/dist/types/utils/font.d.ts +1 -0
- package/package.json +1 -1
- package/dist/embed/fonts/CangerXiaowanzi.woff2 +0 -0
- package/dist/embed/fonts/FengguangMingrui.woff2 +0 -0
- package/dist/embed/fonts/RuiziZhenyan.woff2 +0 -0
- package/dist/embed/fonts/ShetuModernSquare.woff2 +0 -0
- package/dist/embed/fonts/SucaiJishiCoolSquare.woff2 +0 -0
- package/dist/embed/fonts/SucaiJishiKangkang.woff2 +0 -0
- package/dist/embed/fonts/TuniuRounded.woff2 +0 -0
- package/dist/embed/fonts/YousheTitleBlack.woff2 +0 -0
- package/dist/embed/fonts/ZcoolHappy.woff2 +0 -0
- package/dist/embed/fonts/ZizhiQuXiMai.woff2 +0 -0
package/README.md
CHANGED
|
@@ -21,9 +21,10 @@
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
# ✨ Highlights
|
|
24
|
-
1. **Easy Development**: Built with Vue 3.x and TypeScript, it does not rely on UI component libraries
|
|
25
|
-
2. **User Friendly**: It offers
|
|
26
|
-
3. **Feature Rich**: Supports most
|
|
24
|
+
1. **Easy Development**: Built with Vue 3.x and TypeScript, it does not rely on UI component libraries, making styling customization easier and functionality extension more convenient.
|
|
25
|
+
2. **User Friendly**: It offers context menus everywhere, dozens of shortcut operations, and continuously refined editing details, striving to replicate a desktop application-level experience.
|
|
26
|
+
3. **Feature Rich**: Supports most commonly used Office PPT elements and features, supports template-based AIPPT, supports exporting in various formats, and offers basic editing and previewing on mobile devices.
|
|
27
|
+
4. **Controllable Code**: Not a temporary product of vibe coding. The code is robust, controllable, easy to maintain, and leaves no technical debt.
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
# 👀 Front-Row Reminder
|
|
@@ -36,9 +37,9 @@
|
|
|
36
37
|
> This project is strictly positioned as a Web Slide Editing/Presentation Application. It is not intended to be an ~~AI PPT generator, low-code platform, or image editor~~. The following are the recommendation levels for common use cases:
|
|
37
38
|
|
|
38
39
|
- **Low-code Platforms / H5 Editors / Image Editors / Whiteboards** (Recommendation: Not Recommended): We suggest choosing open-source projects specifically designed for those purposes.
|
|
39
|
-
- **PPT File Preview Tool** (Recommendation: ⭐): The ability to import .pptx files is limited (roughly
|
|
40
|
-
- **AI PPT Generation Tool** (Recommendation: ⭐⭐): While the project provides basic template-based
|
|
41
|
-
- **Office PPT Authoring Tool** (Recommendation: ⭐⭐): PPTist supports many common Office features and basic .pptx export. However, exports
|
|
40
|
+
- **PPT File Preview Tool** (Recommendation: ⭐): The ability to import .pptx files is limited (roughly 80% fidelity). Unless your requirements for preview accuracy are low and you only need basic content display, this is not recommended.
|
|
41
|
+
- **AI PPT Generation Tool** (Recommendation: ⭐⭐): While the project provides basic template-based AIPPT generation, it is not the core focus. As AI technology evolves, the form of AIPPT will continue to change (templates -> HTML webpages -> pure images -> SVG -> ...), and this project will not follow those trends. However, if you only want to build a template-based AIPPT generator, or are willing to extend better generation solutions yourself, PPTist's complete Schema and editing capabilities may be helpful.
|
|
42
|
+
- **Office PPT Authoring Tool** (Recommendation: ⭐⭐): PPTist supports many common Office PPT features and basic local .pptx export. However, exports cannot be 100% faithful, and this scenario generally has high requirements for importing .pptx files, while the import capability mentioned above is limited. Choose cautiously unless you can accept imperfect import capabilities.
|
|
42
43
|
- **Web Slide Editing/Presentation App** (Recommendation: ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐): This is the primary use case. The core strengths of PPTist are its editing capabilities and user experience. You can build upon this project to customize or add unique nodes and features tailored to your specific needs, where Office compatibility is not the ultimate goal. **Summary: Our vision is for you to use PPTist to create a presentation product that is distinct from Microsoft Office, rather than just using it as a middleman for editing Office files.**
|
|
43
44
|
|
|
44
45
|
|
|
@@ -58,10 +59,9 @@ Browser access: http://127.0.0.1:5173/
|
|
|
58
59
|
- History (undo, redo)
|
|
59
60
|
- Shortcuts
|
|
60
61
|
- Right-click menu
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
- AI PPT
|
|
62
|
+
- Import: PPTX (overall fidelity ~80%), JSON, pptist files
|
|
63
|
+
- Export: PPTX (overall fidelity ~95%+), JSON, images, PDF (print), pptist files
|
|
64
|
+
- Template-based AI PPT generation
|
|
65
65
|
### Slide Page Editing
|
|
66
66
|
- Add/delete pages
|
|
67
67
|
- Copy/paste pages
|
|
@@ -113,6 +113,8 @@ Browser access: http://127.0.0.1:5173/
|
|
|
113
113
|
- Shadow
|
|
114
114
|
- Transparency
|
|
115
115
|
- Vertical text
|
|
116
|
+
- Text box margins
|
|
117
|
+
- Auto-fit/fixed height (vertical alignment can be selected when fixed)
|
|
116
118
|
- AI Rewrite/Expand/Abbreviate
|
|
117
119
|
#### Images
|
|
118
120
|
- Crop (custom, shape, aspect ratio)
|
|
@@ -126,8 +128,9 @@ Browser access: http://127.0.0.1:5173/
|
|
|
126
128
|
- Reset image
|
|
127
129
|
- Set as background
|
|
128
130
|
#### Shapes
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
+
- Freehand draw any polygon
|
|
132
|
+
- Freehand draw any line (unclosed shape simulation)
|
|
133
|
+
- Visual path creation method
|
|
131
134
|
- Replace shape
|
|
132
135
|
- Fill (solid color, gradient, image)
|
|
133
136
|
- Border
|
|
@@ -136,6 +139,8 @@ Browser access: http://127.0.0.1:5173/
|
|
|
136
139
|
- Flip
|
|
137
140
|
- Shape format painter
|
|
138
141
|
- Edit text (supports rich text, similar to text element’s rich text editing)
|
|
142
|
+
- Text box margins
|
|
143
|
+
- Text vertical alignment
|
|
139
144
|
#### Lines
|
|
140
145
|
- Straight lines, polylines, curves
|
|
141
146
|
- Color
|
|
@@ -264,4 +269,4 @@ If you wish to use this project for commercial gain, I hope you will respect ope
|
|
|
264
269
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=pipipi-pikachu/PPTist&type=date&legend=top-left" />
|
|
265
270
|
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=pipipi-pikachu/PPTist&type=date&legend=top-left" />
|
|
266
271
|
</picture>
|
|
267
|
-
</a>
|
|
272
|
+
</a>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@lofcz/pptist",
|
|
4
|
-
"packageVersion": "2.0.
|
|
5
|
-
"generatedAt": "2026-06-
|
|
4
|
+
"packageVersion": "2.0.20",
|
|
5
|
+
"generatedAt": "2026-06-21T10:08:02.395Z",
|
|
6
6
|
"summary": "Authoring guidance for the PPTist agentic bridge. The recommended way to build a deck from scratch: (1) pick ONE visual identity with styles.catalog -> deck.applyStyle (academic | minimal | bold | playful), then (2) for each slide pick a recipe from layouts.catalog and add it with slides.createFromLayout({ layoutId, slots }) — the engine themes, positions AND auto-fits every text box (via responsive measurement) so content never overflows. Author slot content as Markdown/plain text or structured values (arrays for bullets, { labels, series } for charts) — never hand-written HTML. Alternative: for pixel-perfect branded decks, use the built-in templates flow (deck.applyTemplate + slides.insertFromTemplate). Avoid blank slides.create / hand-placed elements unless neither a layout nor a template slide fits. Pair this with the machine schema (command payload/return types) in the same manifest.",
|
|
7
7
|
"commandCount": 177,
|
|
8
8
|
"designSystem": {
|
|
@@ -2061,7 +2061,7 @@
|
|
|
2061
2061
|
"PPTLineElement": "export interface PPTLineElement extends Omit<PPTBaseElement, 'height' | 'rotate'> { type: 'line'; start: [number, number]; end: [number, number]; style: LineStyleType; color: string; points: [LinePoint, LinePoint]; shadow?: PPTElementShadow; broken?: [number, number]; broken2?: [number, number]; broken2Direction?: Broken2LineDirection; curve?: [number, number]; cubic?: [[number, number], [number, number]] }",
|
|
2062
2062
|
"PPTShapeElement": "export interface PPTShapeElement extends PPTBaseElement { type: 'shape'; viewBox: [number, number]; path: string; fixedRatio: boolean; fill: string; gradient?: Gradient; pattern?: string; outline?: PPTElementOutline; opacity?: number; flipH?: boolean; flipV?: boolean; shadow?: PPTElementShadow; special?: boolean; text?: ShapeText; pathFormula?: ShapePathFormulasKeys; keypoints?: number[] }",
|
|
2063
2063
|
"PPTTableElement": "export interface PPTTableElement extends PPTBaseElement { type: 'table'; outline: PPTElementOutline; theme?: TableTheme; colWidths: number[]; cellMinHeight: number; data: TableCell[][] }",
|
|
2064
|
-
"PPTTextElement": "export interface PPTTextElement extends PPTBaseElement { type: 'text'; content: string; defaultFontName: string; defaultColor: string; placeholder?: string; placeholderFontSize?: number; placeholderColor?: string; placeholderAlign?: TextAlign; outline?: PPTElementOutline; fill?: string; lineHeight?: number; wordSpace?: number; opacity?: number; shadow?: PPTElementShadow; paragraphSpace?: number; vertical?: boolean; textType?: TextType; inset?: TextInset }",
|
|
2064
|
+
"PPTTextElement": "export interface PPTTextElement extends PPTBaseElement { type: 'text'; content: string; defaultFontName: string; defaultColor: string; placeholder?: string; placeholderFontSize?: number; placeholderColor?: string; placeholderAlign?: TextAlign; outline?: PPTElementOutline; fill?: string; lineHeight?: number; wordSpace?: number; opacity?: number; shadow?: PPTElementShadow; paragraphSpace?: number; vertical?: boolean; textType?: TextType; inset?: TextInset; fixedHeight?: boolean; vAlign?: TextAlignVertical }",
|
|
2065
2065
|
"PPTVideoElement": "export interface PPTVideoElement extends PPTBaseElement { type: 'video'; src: string; autoplay: boolean; poster?: string; ext?: string }",
|
|
2066
2066
|
"SectionTag": "export interface SectionTag { id: string; title?: string }",
|
|
2067
2067
|
"ShapePathFormulasKeys": "export declare const enum ShapePathFormulasKeys { ROUND_RECT = \"roundRect\", ROUND_RECT_DIAGONAL = \"roundRectDiagonal\", ROUND_RECT_SINGLE = \"roundRectSingle\", ROUND_RECT_SAMESIDE = \"roundRectSameSide\", CUT_RECT_DIAGONAL = \"cutRectDiagonal\", CUT_RECT_SINGLE = \"cutRectSingle\", CUT_RECT_SAMESIDE = \"cutRectSameSide\", CUT_ROUND_RECT = \"cutRoundRect\", MESSAGE = \"message\", ROUND_MESSAGE = \"roundMessage\", L = \"L\", RING_RECT = \"ringRect\", PLUS = \"plus\", TRIANGLE = \"triangle\", PARALLELOGRAM_LEFT = \"parallelogramLeft\", PARALLELOGRAM_RIGHT = \"parallelogramRight\", TRAPEZOID = \"trapezoid\", BULLET = \"bullet\", INDICATOR = \"indicator\", DONUT = \"donut\", DIAGSTRIPE = \"diagStripe\" }",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,184 +1,337 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
2
|
+
{
|
|
3
|
+
"id": "test-slide-1",
|
|
4
|
+
"elements": [
|
|
5
|
+
{
|
|
6
|
+
"type": "shape",
|
|
7
|
+
"id": "4cbRxp",
|
|
8
|
+
"left": 0,
|
|
9
|
+
"top": 200,
|
|
10
|
+
"width": 546,
|
|
11
|
+
"height": 362.5,
|
|
12
|
+
"viewBox": [
|
|
13
|
+
200,
|
|
14
|
+
200
|
|
15
|
+
],
|
|
16
|
+
"path": "M 0 0 L 0 200 L 200 200 Z",
|
|
17
|
+
"fill": "#5b9bd5",
|
|
18
|
+
"fixedRatio": false,
|
|
19
|
+
"opacity": 0.5,
|
|
20
|
+
"rotate": 0
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "shape",
|
|
24
|
+
"id": "ookHrf",
|
|
25
|
+
"left": 0,
|
|
26
|
+
"top": 0,
|
|
27
|
+
"width": 300,
|
|
28
|
+
"height": 320,
|
|
29
|
+
"viewBox": [
|
|
30
|
+
200,
|
|
31
|
+
200
|
|
32
|
+
],
|
|
33
|
+
"path": "M 0 0 L 0 200 L 200 200 Z",
|
|
34
|
+
"fill": "#5b9bd5",
|
|
35
|
+
"fixedRatio": false,
|
|
36
|
+
"flipV": true,
|
|
37
|
+
"rotate": 0
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "text",
|
|
41
|
+
"id": "idn7Mx",
|
|
42
|
+
"left": 355,
|
|
43
|
+
"top": 65,
|
|
44
|
+
"width": 585,
|
|
45
|
+
"height": 154.390625,
|
|
46
|
+
"lineHeight": 1.2,
|
|
47
|
+
"content": "<p><strong><span style=\"font-size: 112px;\">PPTist</span></strong></p>",
|
|
48
|
+
"rotate": 0,
|
|
49
|
+
"defaultFontName": "",
|
|
50
|
+
"defaultColor": "#333"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "text",
|
|
54
|
+
"id": "7stmVP",
|
|
55
|
+
"left": 355,
|
|
56
|
+
"top": 238,
|
|
57
|
+
"width": 585,
|
|
58
|
+
"height": 86,
|
|
59
|
+
"content": "<p><strong><span style=\"font-size: 22px;\">PowerPoint-ist</span></strong><span style=\"font-size: 22px;\"> </span><em><span style=\"font-size: 22px;\">(/'pauəpɔintist/)</span></em><span style=\"font-size: 22px;\">,基于 Web 的开源演示文稿(幻灯片)应用,可以在浏览器中编辑/演示幻灯片。</span></p>",
|
|
60
|
+
"rotate": 0,
|
|
61
|
+
"defaultFontName": "",
|
|
62
|
+
"defaultColor": "#333"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "line",
|
|
66
|
+
"id": "FnpZs4",
|
|
67
|
+
"left": 367,
|
|
68
|
+
"top": 220,
|
|
69
|
+
"start": [
|
|
70
|
+
0,
|
|
71
|
+
0
|
|
72
|
+
],
|
|
73
|
+
"end": [
|
|
74
|
+
555.6725978647687,
|
|
75
|
+
0
|
|
76
|
+
],
|
|
77
|
+
"points": [
|
|
78
|
+
"",
|
|
79
|
+
""
|
|
80
|
+
],
|
|
81
|
+
"color": "#5b9bd5",
|
|
82
|
+
"style": "solid",
|
|
83
|
+
"width": 2
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"background": {
|
|
87
|
+
"type": "solid",
|
|
88
|
+
"color": "#ffffff"
|
|
69
89
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "T2flB5Ms6N",
|
|
93
|
+
"elements": [
|
|
94
|
+
{
|
|
95
|
+
"type": "shape",
|
|
96
|
+
"id": "tgOHYFL9OJ",
|
|
97
|
+
"left": 0,
|
|
98
|
+
"top": 0,
|
|
99
|
+
"width": 1000,
|
|
100
|
+
"height": 281.25,
|
|
101
|
+
"viewBox": [
|
|
102
|
+
200,
|
|
103
|
+
200
|
|
104
|
+
],
|
|
105
|
+
"path": "M 0 0 L 200 0 L 200 200 L 0 200 Z",
|
|
106
|
+
"fill": "rgb(91, 155, 213)",
|
|
107
|
+
"fixedRatio": false,
|
|
108
|
+
"rotate": 0,
|
|
109
|
+
"lock": false
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"type": "shape",
|
|
113
|
+
"id": "7GFmEv6oB_",
|
|
114
|
+
"left": 0,
|
|
115
|
+
"top": 281.25,
|
|
116
|
+
"width": 1000,
|
|
117
|
+
"height": 281.25,
|
|
118
|
+
"viewBox": [
|
|
119
|
+
200,
|
|
120
|
+
200
|
|
121
|
+
],
|
|
122
|
+
"path": "M 0 0 L 200 0 L 200 200 L 0 200 Z",
|
|
123
|
+
"fill": "rgb(242, 242, 242)",
|
|
124
|
+
"fixedRatio": false,
|
|
125
|
+
"rotate": 0,
|
|
126
|
+
"lock": false
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"type": "shape",
|
|
130
|
+
"id": "rdxiACCJuV",
|
|
131
|
+
"left": 40,
|
|
132
|
+
"top": 39,
|
|
133
|
+
"width": 920,
|
|
134
|
+
"height": 482,
|
|
135
|
+
"viewBox": [
|
|
136
|
+
920,
|
|
137
|
+
482
|
|
138
|
+
],
|
|
139
|
+
"path": "M 25.40421115065243 0 L 894.5957888493476 0 Q 920 0 920 25.40421115065243 L 920 456.59578884934757 Q 920 482 894.5957888493476 482 L 25.40421115065243 482 Q 0 482 0 456.59578884934757 L 0 25.40421115065243 Q 0 0 25.40421115065243 0 Z",
|
|
140
|
+
"fill": "#ffffff",
|
|
141
|
+
"fixedRatio": false,
|
|
142
|
+
"rotate": 0,
|
|
143
|
+
"shadow": {
|
|
144
|
+
"h": 4,
|
|
145
|
+
"v": 4,
|
|
146
|
+
"blur": 8,
|
|
147
|
+
"color": "rgba(128, 128, 128, 0.13)"
|
|
148
|
+
},
|
|
149
|
+
"lock": false,
|
|
150
|
+
"pathFormula": "roundRect",
|
|
151
|
+
"keypoints": [
|
|
152
|
+
0.052705832262764374
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"type": "text",
|
|
157
|
+
"id": "Tn6kkOFntr",
|
|
158
|
+
"left": 80,
|
|
159
|
+
"top": 71.5,
|
|
160
|
+
"width": 716.9,
|
|
161
|
+
"height": 74,
|
|
162
|
+
"content": "<p><span style=\"font-size: 36px;\">✨项目特点</span></p>",
|
|
163
|
+
"rotate": 0,
|
|
164
|
+
"defaultFontName": "",
|
|
165
|
+
"defaultColor": "#333",
|
|
166
|
+
"vertical": false,
|
|
167
|
+
"textType": "title"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"type": "text",
|
|
171
|
+
"id": "oU7uzQkPpO",
|
|
172
|
+
"left": 80,
|
|
173
|
+
"top": 160,
|
|
174
|
+
"width": 830,
|
|
175
|
+
"height": 213,
|
|
176
|
+
"content": "<ul style=\"font-size: 18px;color: rgb(51, 51, 51);\"><li><p style=\"text-align: justify;\"><strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">易开发:</span></span></strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">基于 </span><code><span style=\"color: rgb(51, 51, 51);\">Vue3.x</span></code><span style=\"color: rgb(51, 51, 51);\"> + </span><code><span style=\"color: rgb(51, 51, 51);\">TypeScript</span></code><span style=\"color: rgb(51, 51, 51);\"> 构建,不依赖UI组件库,样式定制、功能扩展更方便;</span></span></p></li><li><p style=\"text-align: justify;\"><strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">易使用:</span></span></strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">随处可见的右键菜单、数十种快捷操作方式、持续深入打磨编辑细节,力求还原桌面应用级的交互体验;</span></span></p></li><li><p style=\"text-align: justify;\"><strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">功能丰富:</span></span></strong><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">支持 </span></span><em><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\">Office PPT</span></span></em><span style=\"font-size: 18px;\"><span style=\"color: rgb(51, 51, 51);\"> 大部分常用元素和功能,支持模板式AIPPT、支持多种格式导出、支持移动端基础编辑和预览;</span></span></p></li><li><p style=\"\"><strong>代码可控:</strong>非 <em>vibe coding</em> 的临时产物,代码稳健、可控、易维护,不留技术债。</p></li></ul>",
|
|
177
|
+
"rotate": 0,
|
|
178
|
+
"defaultFontName": "",
|
|
179
|
+
"defaultColor": "#333",
|
|
180
|
+
"vertical": false,
|
|
181
|
+
"textType": "content",
|
|
182
|
+
"paragraphSpace": 10,
|
|
183
|
+
"lineHeight": 1.5
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"type": "line",
|
|
187
|
+
"id": "0pCV4mHRO5",
|
|
188
|
+
"left": 140,
|
|
189
|
+
"top": 138,
|
|
190
|
+
"start": [
|
|
191
|
+
0,
|
|
192
|
+
0
|
|
193
|
+
],
|
|
194
|
+
"end": [
|
|
195
|
+
140.12455516014234,
|
|
196
|
+
0
|
|
197
|
+
],
|
|
198
|
+
"points": [
|
|
199
|
+
"",
|
|
200
|
+
""
|
|
201
|
+
],
|
|
202
|
+
"color": "rgb(91, 155, 213)",
|
|
203
|
+
"style": "solid",
|
|
204
|
+
"width": 2,
|
|
205
|
+
"lock": false
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"type": "shape",
|
|
209
|
+
"id": "-5LJXtU4dt",
|
|
210
|
+
"left": 0,
|
|
211
|
+
"top": 450,
|
|
212
|
+
"width": 1000,
|
|
213
|
+
"height": 150,
|
|
214
|
+
"viewBox": [
|
|
215
|
+
200,
|
|
216
|
+
200
|
|
217
|
+
],
|
|
218
|
+
"path": "M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z",
|
|
219
|
+
"fill": "rgb(91, 155, 213)",
|
|
220
|
+
"fixedRatio": false,
|
|
221
|
+
"rotate": 0,
|
|
222
|
+
"lock": false,
|
|
223
|
+
"opacity": 0.2
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"background": {
|
|
227
|
+
"type": "solid",
|
|
228
|
+
"color": "#fff"
|
|
103
229
|
},
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
230
|
+
"type": "cover"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id": "iqg6iGnei-",
|
|
234
|
+
"elements": [
|
|
235
|
+
{
|
|
236
|
+
"type": "shape",
|
|
237
|
+
"id": "78IHuud1fL",
|
|
238
|
+
"left": 850,
|
|
239
|
+
"top": 412.5,
|
|
240
|
+
"width": 300,
|
|
241
|
+
"height": 300,
|
|
242
|
+
"viewBox": [
|
|
243
|
+
200,
|
|
244
|
+
200
|
|
245
|
+
],
|
|
246
|
+
"path": "M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",
|
|
247
|
+
"fill": "rgb(91, 155, 213)",
|
|
248
|
+
"fixedRatio": true,
|
|
249
|
+
"rotate": 0,
|
|
250
|
+
"lock": false,
|
|
251
|
+
"opacity": 0.2
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"type": "shape",
|
|
255
|
+
"id": "qBDphekubT",
|
|
256
|
+
"left": -180,
|
|
257
|
+
"top": -180,
|
|
258
|
+
"width": 360,
|
|
259
|
+
"height": 360,
|
|
260
|
+
"viewBox": [
|
|
261
|
+
200,
|
|
262
|
+
200
|
|
263
|
+
],
|
|
264
|
+
"path": "M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",
|
|
265
|
+
"fill": "rgb(91, 155, 213)",
|
|
266
|
+
"fixedRatio": true,
|
|
267
|
+
"rotate": 0,
|
|
268
|
+
"lock": false
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"type": "text",
|
|
272
|
+
"id": "2y_IZ-pmfY",
|
|
273
|
+
"width": 500,
|
|
274
|
+
"height": 101,
|
|
275
|
+
"left": 250,
|
|
276
|
+
"top": 160,
|
|
277
|
+
"rotate": 0,
|
|
278
|
+
"defaultFontName": "",
|
|
279
|
+
"defaultColor": "#333",
|
|
280
|
+
"content": "<p style=\"text-align: center;\"><strong><span style=\"font-size: 54px;\"><span style=\"color: rgb(91, 155, 213);\">谢谢观看</span></span></strong></p>",
|
|
281
|
+
"vertical": false
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"type": "text",
|
|
285
|
+
"id": "pOa5by-tWB",
|
|
286
|
+
"width": 500,
|
|
287
|
+
"height": 56,
|
|
288
|
+
"left": 250,
|
|
289
|
+
"top": 250,
|
|
290
|
+
"rotate": 0,
|
|
291
|
+
"defaultFontName": "",
|
|
292
|
+
"defaultColor": "#333",
|
|
293
|
+
"content": "<p style=\"text-align: center;\"><em><span style=\"font-size: 24px;\"><span style=\"color: rgb(51, 51, 51);\">-THANKS-</span></span></em></p>",
|
|
294
|
+
"vertical": false
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"type": "shape",
|
|
298
|
+
"id": "dQo7Qrwmqd",
|
|
299
|
+
"width": 500,
|
|
300
|
+
"height": 44,
|
|
301
|
+
"left": 250,
|
|
302
|
+
"top": 316,
|
|
303
|
+
"viewBox": [
|
|
304
|
+
500,
|
|
305
|
+
44
|
|
306
|
+
],
|
|
307
|
+
"path": "M 5.5 0 L 494.5 0 Q 500 0 500 5.5 L 500 38.5 Q 500 44 494.5 44 L 5.5 44 Q 0 44 0 38.5 L 0 5.5 Q 0 0 5.5 0 Z",
|
|
308
|
+
"fill": "rgb(91, 155, 213)",
|
|
309
|
+
"fixedRatio": false,
|
|
310
|
+
"rotate": 0,
|
|
311
|
+
"text": {
|
|
312
|
+
"content": "<p style=\"text-align: center;\"><span style=\"font-size: 16px;\"><span style=\"color: rgb(255, 255, 255);\">AGPL-3.0 License | Copyright © 2020-PRESENT pipipi-pikachu</span></span></p>",
|
|
313
|
+
"defaultFontName": "",
|
|
314
|
+
"defaultColor": "#333",
|
|
315
|
+
"align": "middle"
|
|
316
|
+
},
|
|
317
|
+
"flipH": false,
|
|
318
|
+
"flipV": false,
|
|
319
|
+
"pathFormula": "roundRect",
|
|
320
|
+
"keypoints": [
|
|
321
|
+
0.125
|
|
322
|
+
],
|
|
323
|
+
"opacity": 0.5,
|
|
324
|
+
"link": {
|
|
325
|
+
"type": "web",
|
|
326
|
+
"target": "https://github.com/pipipi-pikachu"
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
"background": {
|
|
331
|
+
"type": "solid",
|
|
332
|
+
"color": "#FFFFFF"
|
|
115
333
|
},
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
"id": "09wqWw",
|
|
119
|
-
"left": -27.648148148148138,
|
|
120
|
-
"top": 432.73148148148147,
|
|
121
|
-
"width": 1056.2962962962963,
|
|
122
|
-
"height": 162.96296296296296,
|
|
123
|
-
"viewBox": [200, 200],
|
|
124
|
-
"path": "M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z",
|
|
125
|
-
"fill": "#5b9bd5",
|
|
126
|
-
"fixedRatio": false,
|
|
127
|
-
"rotate": 0
|
|
128
|
-
}
|
|
129
|
-
],
|
|
130
|
-
"background": {
|
|
131
|
-
"type": "solid",
|
|
132
|
-
"color": "#fff"
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"id": "test-slide-3",
|
|
137
|
-
"elements": [
|
|
138
|
-
{
|
|
139
|
-
"type": "shape",
|
|
140
|
-
"id": "vSheCJ",
|
|
141
|
-
"left": 183.5185185185185,
|
|
142
|
-
"top": 175.5092592592593,
|
|
143
|
-
"width": 605.1851851851851,
|
|
144
|
-
"height": 185.18518518518516,
|
|
145
|
-
"viewBox": [200, 200],
|
|
146
|
-
"path": "M 0 0 L 200 0 L 200 200 L 0 200 Z",
|
|
147
|
-
"fill": "#5b9bd5",
|
|
148
|
-
"fixedRatio": false,
|
|
149
|
-
"rotate": 0
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
"type": "shape",
|
|
153
|
-
"id": "Mpwv7x",
|
|
154
|
-
"left": 211.29629629629628,
|
|
155
|
-
"top": 201.80555555555557,
|
|
156
|
-
"width": 605.1851851851851,
|
|
157
|
-
"height": 185.18518518518516,
|
|
158
|
-
"viewBox": [200, 200],
|
|
159
|
-
"path": "M 0 0 L 200 0 L 200 200 L 0 200 Z",
|
|
160
|
-
"fill": "#5b9bd5",
|
|
161
|
-
"fixedRatio": false,
|
|
162
|
-
"rotate": 0,
|
|
163
|
-
"opacity": 0.7
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"type": "text",
|
|
167
|
-
"id": "WQOTAp",
|
|
168
|
-
"left": 304.9074074074074,
|
|
169
|
-
"top": 198.10185185185182,
|
|
170
|
-
"width": 417.9629629629629,
|
|
171
|
-
"height": 140,
|
|
172
|
-
"content": "<p style=\"text-align: center;\"><strong><span style=\"font-size: 80px;\"><span style=\"color: rgb(255, 255, 255);\">Thank you</span></span></strong></p>",
|
|
173
|
-
"rotate": 0,
|
|
174
|
-
"defaultFontName": "",
|
|
175
|
-
"defaultColor": "#333",
|
|
176
|
-
"wordSpace": 5
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
"background": {
|
|
180
|
-
"type": "solid",
|
|
181
|
-
"color": "#fff"
|
|
334
|
+
"remark": "",
|
|
335
|
+
"type": "end"
|
|
182
336
|
}
|
|
183
|
-
|
|
184
|
-
]
|
|
337
|
+
]
|