lt-ppt 1.0.29 → 1.0.31

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.
@@ -1,6 +1,6 @@
1
1
  import { defineStore as Js } from "./pinia-CVat9nJz.js";
2
2
  import { customAlphabet as Uy } from "./index.browser-Wq18ov6h.js";
3
- import { c as Jy } from "./lib-DZHSlxO6.js";
3
+ import { c as Jy } from "./lib-BKX8gHfd.js";
4
4
  var Yf = /* @__PURE__ */ ((u) => (u.EL_ANIMATION = "elAnimation", u.EL_STYLE = "elStyle", u.EL_POSITION = "elPosition", u.SLIDE_DESIGN = "slideDesign", u.SLIDE_ANIMATION = "slideAnimation", u.MULTI_STYLE = "multiStyle", u.MULTI_POSITION = "multiPosition", u))(Yf || {});
5
5
  function it(u) {
6
6
  this.content = u;
@@ -12758,8 +12758,8 @@ export {
12758
12758
  si as c,
12759
12759
  tw as d,
12760
12760
  ii as e,
12761
- c0 as f,
12762
- U0 as g,
12761
+ U0 as f,
12762
+ c0 as g,
12763
12763
  fe as h,
12764
12764
  Ru as i,
12765
12765
  E0 as j,
@@ -1,5 +1,5 @@
1
- import { ImageAIEntryClickParams, InsertImageParams, LtPPTProps, ReplaceImageParams, SupportedLocale, ThemeMode } from './types/lt-ppt';
2
- import { PPTElement, PPTImageElement, Slide } from './types/slides';
1
+ import { ImageAIEntryClickParams, InsertImageParams, InsertVideoParams, LtPPTProps, ReplaceImageParams, ReplaceVideoParams, SupportedLocale, ThemeMode } from './types/lt-ppt';
2
+ import { PPTElement, PPTImageElement, PPTVideoElement, Slide } from './types/slides';
3
3
  declare const _default: import('vue').DefineComponent<LtPPTProps, {
4
4
  getSlides: () => Slide[];
5
5
  getSelectedElements: () => PPTElement[];
@@ -8,6 +8,8 @@ declare const _default: import('vue').DefineComponent<LtPPTProps, {
8
8
  getCurrentIndex: () => number;
9
9
  insertImage: (params: InsertImageParams) => Promise<PPTImageElement | null>;
10
10
  replaceImage: (params: ReplaceImageParams) => Promise<PPTImageElement | null>;
11
+ insertVideo: (params: InsertVideoParams) => Promise<PPTVideoElement | null>;
12
+ replaceVideo: (params: ReplaceVideoParams) => Promise<PPTVideoElement | null>;
11
13
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
12
14
  "image-ai-entry-click": (payload: ImageAIEntryClickParams) => any;
13
15
  }, string, import('vue').PublicProps, Readonly<LtPPTProps> & Readonly<{
@@ -20,7 +20,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
20
20
  color: string;
21
21
  model: "shape" | "pen" | "eraser" | "mark";
22
22
  blackboard: boolean;
23
- shapeType: "arrow" | "rect" | "circle";
23
+ shapeType: "rect" | "arrow" | "circle";
24
24
  penSize: number;
25
25
  markSize: number;
26
26
  rubberSize: number;
@@ -1,5 +1,5 @@
1
1
  import { default as LtPPT } from './LtPPT.vue';
2
2
  export { LtPPT };
3
- export type { LtPPTProps, LtPPTInstance, InitData, UploadFileParams, SaveCallbackParams, ImageAIEntryClickParams, InsertImageParams, ReplaceImageParams, SupportedLocale, ThemeMode } from './types/lt-ppt';
4
- export type { Slide, PPTElement, PPTImageElement, SlideTheme } from './types/slides';
3
+ export type { LtPPTProps, LtPPTInstance, InitData, UploadFileParams, SaveCallbackParams, ImageAIEntryElement, ImageAIEntryClickParams, InsertImageParams, ReplaceImageParams, InsertVideoParams, ReplaceVideoParams, SupportedLocale, ThemeMode } from './types/lt-ppt';
4
+ export type { Slide, PPTElement, PPTImageElement, PPTVideoElement, SlideTheme } from './types/slides';
5
5
  export { loadFonts } from './utils/fonts';
@@ -171,6 +171,13 @@ export declare const useMainStore: import('pinia').StoreDefinition<"main", MainS
171
171
  color: string;
172
172
  } | undefined;
173
173
  paragraphSpace?: number | undefined;
174
+ padding?: number | {
175
+ top: number;
176
+ right: number;
177
+ bottom: number;
178
+ left: number;
179
+ } | undefined;
180
+ nowrap?: boolean | undefined;
174
181
  vertical?: boolean | undefined;
175
182
  textType?: import('../types/slides').TextType | undefined;
176
183
  id: string;
@@ -272,6 +279,13 @@ export declare const useMainStore: import('pinia').StoreDefinition<"main", MainS
272
279
  lineHeight?: number | undefined;
273
280
  wordSpace?: number | undefined;
274
281
  paragraphSpace?: number | undefined;
282
+ padding?: number | {
283
+ top: number;
284
+ right: number;
285
+ bottom: number;
286
+ left: number;
287
+ } | undefined;
288
+ nowrap?: boolean | undefined;
275
289
  type?: import('../types/slides').TextType | undefined;
276
290
  } | undefined;
277
291
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -591,6 +605,13 @@ export declare const useMainStore: import('pinia').StoreDefinition<"main", MainS
591
605
  color: string;
592
606
  } | undefined;
593
607
  paragraphSpace?: number | undefined;
608
+ padding?: number | {
609
+ top: number;
610
+ right: number;
611
+ bottom: number;
612
+ left: number;
613
+ } | undefined;
614
+ nowrap?: boolean | undefined;
594
615
  vertical?: boolean | undefined;
595
616
  textType?: import('../types/slides').TextType | undefined;
596
617
  id: string;
@@ -692,6 +713,13 @@ export declare const useMainStore: import('pinia').StoreDefinition<"main", MainS
692
713
  lineHeight?: number | undefined;
693
714
  wordSpace?: number | undefined;
694
715
  paragraphSpace?: number | undefined;
716
+ padding?: number | {
717
+ top: number;
718
+ right: number;
719
+ bottom: number;
720
+ left: number;
721
+ } | undefined;
722
+ nowrap?: boolean | undefined;
695
723
  type?: import('../types/slides').TextType | undefined;
696
724
  } | undefined;
697
725
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -64,6 +64,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
64
64
  color: string;
65
65
  } | undefined;
66
66
  paragraphSpace?: number | undefined;
67
+ padding?: number | {
68
+ top: number;
69
+ right: number;
70
+ bottom: number;
71
+ left: number;
72
+ } | undefined;
73
+ nowrap?: boolean | undefined;
67
74
  vertical?: boolean | undefined;
68
75
  textType?: import('../types/slides').TextType | undefined;
69
76
  id: string;
@@ -165,6 +172,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
165
172
  lineHeight?: number | undefined;
166
173
  wordSpace?: number | undefined;
167
174
  paragraphSpace?: number | undefined;
175
+ padding?: number | {
176
+ top: number;
177
+ right: number;
178
+ bottom: number;
179
+ left: number;
180
+ } | undefined;
181
+ nowrap?: boolean | undefined;
168
182
  type?: import('../types/slides').TextType | undefined;
169
183
  } | undefined;
170
184
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -429,6 +443,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
429
443
  color: string;
430
444
  } | undefined;
431
445
  paragraphSpace?: number | undefined;
446
+ padding?: number | {
447
+ top: number;
448
+ right: number;
449
+ bottom: number;
450
+ left: number;
451
+ } | undefined;
452
+ nowrap?: boolean | undefined;
432
453
  vertical?: boolean | undefined;
433
454
  textType?: import('../types/slides').TextType | undefined;
434
455
  id: string;
@@ -530,6 +551,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
530
551
  lineHeight?: number | undefined;
531
552
  wordSpace?: number | undefined;
532
553
  paragraphSpace?: number | undefined;
554
+ padding?: number | {
555
+ top: number;
556
+ right: number;
557
+ bottom: number;
558
+ left: number;
559
+ } | undefined;
560
+ nowrap?: boolean | undefined;
533
561
  type?: import('../types/slides').TextType | undefined;
534
562
  } | undefined;
535
563
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -804,6 +832,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
804
832
  color: string;
805
833
  } | undefined;
806
834
  paragraphSpace?: number | undefined;
835
+ padding?: number | {
836
+ top: number;
837
+ right: number;
838
+ bottom: number;
839
+ left: number;
840
+ } | undefined;
841
+ nowrap?: boolean | undefined;
807
842
  vertical?: boolean | undefined;
808
843
  textType?: import('../types/slides').TextType | undefined;
809
844
  id: string;
@@ -905,6 +940,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
905
940
  lineHeight?: number | undefined;
906
941
  wordSpace?: number | undefined;
907
942
  paragraphSpace?: number | undefined;
943
+ padding?: number | {
944
+ top: number;
945
+ right: number;
946
+ bottom: number;
947
+ left: number;
948
+ } | undefined;
949
+ nowrap?: boolean | undefined;
908
950
  type?: import('../types/slides').TextType | undefined;
909
951
  } | undefined;
910
952
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -1196,6 +1238,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
1196
1238
  color: string;
1197
1239
  } | undefined;
1198
1240
  paragraphSpace?: number | undefined;
1241
+ padding?: number | {
1242
+ top: number;
1243
+ right: number;
1244
+ bottom: number;
1245
+ left: number;
1246
+ } | undefined;
1247
+ nowrap?: boolean | undefined;
1199
1248
  vertical?: boolean | undefined;
1200
1249
  textType?: import('../types/slides').TextType | undefined;
1201
1250
  id: string;
@@ -1297,6 +1346,13 @@ export declare const useSlidesStore: import('pinia').StoreDefinition<"slides", S
1297
1346
  lineHeight?: number | undefined;
1298
1347
  wordSpace?: number | undefined;
1299
1348
  paragraphSpace?: number | undefined;
1349
+ padding?: number | {
1350
+ top: number;
1351
+ right: number;
1352
+ bottom: number;
1353
+ left: number;
1354
+ } | undefined;
1355
+ nowrap?: boolean | undefined;
1300
1356
  type?: import('../types/slides').TextType | undefined;
1301
1357
  } | undefined;
1302
1358
  pathFormula?: import('../types/slides').ShapePathFormulasKeys | undefined;
@@ -1,4 +1,4 @@
1
- import { PPTElement, PPTImageElement, Slide } from './slides';
1
+ import { PPTElement, PPTImageElement, PPTVideoElement, Slide } from './slides';
2
2
  export type SupportedLocale = 'zh-CN' | 'en';
3
3
  export type ThemeMode = 'dark' | 'light';
4
4
  export interface InitData {
@@ -21,9 +21,13 @@ export interface SaveCallbackParams {
21
21
  /** 幻灯片图片 URL 列表 */
22
22
  slideImages: string[];
23
23
  }
24
+ export type ImageAIEntryElement = PPTImageElement & {
25
+ /** 按当前裁剪范围和裁剪形状生成的图片;导出失败时回退为 src */
26
+ clipSrc: string;
27
+ };
24
28
  export interface ImageAIEntryClickParams {
25
- /** 当前触发 AI 入口的图片元素 */
26
- element: PPTImageElement;
29
+ /** 当前触发 AI 入口的图片元素;src 为原图,clipSrc 为裁剪后的图 */
30
+ element: ImageAIEntryElement;
27
31
  }
28
32
  export interface InsertImageParams {
29
33
  /** 图片地址,支持 URL、base64 dataURL、blob URL */
@@ -69,6 +73,56 @@ export interface ReplaceImageParams {
69
73
  /** 替换后是否选中该图片,默认 true */
70
74
  select?: boolean;
71
75
  }
76
+ export interface InsertVideoParams {
77
+ /** 视频地址,支持 URL、base64 dataURL、blob URL */
78
+ src: string;
79
+ /** 目标页面 ID;优先级高于 slideIndex */
80
+ slideId?: string;
81
+ /** 目标页面索引,默认当前页 */
82
+ slideIndex?: number;
83
+ /** 视频左上角横坐标,默认居中 */
84
+ left?: number;
85
+ /** 视频左上角纵坐标,默认居中 */
86
+ top?: number;
87
+ /** 视频宽度,未传时使用视频原始宽度并自动适配画布 */
88
+ width?: number;
89
+ /** 视频高度,未传时按视频比例计算或自动适配画布 */
90
+ height?: number;
91
+ /** 旋转角度,默认 0 */
92
+ rotate?: number;
93
+ /** 是否自动播放,默认 false */
94
+ autoplay?: boolean;
95
+ /** 视频封面 */
96
+ poster?: string;
97
+ /** 视频后缀,当资源链接缺少后缀时用该字段确认资源类型 */
98
+ ext?: string;
99
+ /** 插入后是否选中该视频,默认 true */
100
+ select?: boolean;
101
+ }
102
+ export interface ReplaceVideoParams {
103
+ /** 新视频地址,支持 URL、base64 dataURL、blob URL */
104
+ src: string;
105
+ /** 被替换的视频元素 ID;不传则替换当前选中的视频 */
106
+ elementId?: string;
107
+ /** 目标页面 ID;优先级高于 slideIndex */
108
+ slideId?: string;
109
+ /** 目标页面索引,默认当前页;当传入 elementId 且未传页面信息时会自动查找 */
110
+ slideIndex?: number;
111
+ /** 是否保持原视频元素尺寸和位置,默认 false;默认保持左上角和宽度,高度按新视频比例自适应 */
112
+ keepSize?: boolean;
113
+ /** 新宽度;默认使用原视频元素宽度 */
114
+ width?: number;
115
+ /** 新高度;不传时按新视频比例自适应 */
116
+ height?: number;
117
+ /** 是否自动播放,不传则沿用原元素配置 */
118
+ autoplay?: boolean;
119
+ /** 视频封面;传入空字符串可清空原封面 */
120
+ poster?: string;
121
+ /** 视频后缀,当资源链接缺少后缀时用该字段确认资源类型 */
122
+ ext?: string;
123
+ /** 替换后是否选中该视频,默认 true */
124
+ select?: boolean;
125
+ }
72
126
  export interface LtPPTProps {
73
127
  /** 初始化数据 */
74
128
  initData?: InitData;
@@ -110,4 +164,8 @@ export interface LtPPTInstance {
110
164
  insertImage: (params: InsertImageParams) => Promise<PPTImageElement | null>;
111
165
  /** 替换指定图片元素,未指定元素时替换当前选中图片 */
112
166
  replaceImage: (params: ReplaceImageParams) => Promise<PPTImageElement | null>;
167
+ /** 向指定页面插入视频 */
168
+ insertVideo: (params: InsertVideoParams) => Promise<PPTVideoElement | null>;
169
+ /** 替换指定视频元素,未指定元素时替换当前选中视频 */
170
+ replaceVideo: (params: ReplaceVideoParams) => Promise<PPTVideoElement | null>;
113
171
  }
@@ -83,6 +83,12 @@ export interface PPTElementOutline {
83
83
  width?: number;
84
84
  color?: string;
85
85
  }
86
+ export interface PPTTextPadding {
87
+ top: number;
88
+ right: number;
89
+ bottom: number;
90
+ left: number;
91
+ }
86
92
  export type ElementLinkType = 'web' | 'slide';
87
93
  /**
88
94
  * 元素超链接
@@ -156,6 +162,10 @@ export type TextType = 'title' | 'subtitle' | 'content' | 'item' | 'itemTitle' |
156
162
  *
157
163
  * paragraphSpace?: 段间距,默认 5px
158
164
  *
165
+ * padding?: 文本内边距,默认 10px
166
+ *
167
+ * nowrap?: 禁止自动换行
168
+ *
159
169
  * vertical?: 竖向文本
160
170
  *
161
171
  * textType?: 文本类型
@@ -172,6 +182,8 @@ export interface PPTTextElement extends PPTBaseElement {
172
182
  opacity?: number;
173
183
  shadow?: PPTElementShadow;
174
184
  paragraphSpace?: number;
185
+ padding?: number | PPTTextPadding;
186
+ nowrap?: boolean;
175
187
  vertical?: boolean;
176
188
  textType?: TextType;
177
189
  }
@@ -289,6 +301,10 @@ export type ShapeTextAlign = 'top' | 'middle' | 'bottom';
289
301
  *
290
302
  * paragraphSpace?: 段间距,默认 5px
291
303
  *
304
+ * padding?: 文本内边距,默认 10px
305
+ *
306
+ * nowrap?: 禁止自动换行
307
+ *
292
308
  * type: 文本类型
293
309
  */
294
310
  export interface ShapeText {
@@ -299,6 +315,8 @@ export interface ShapeText {
299
315
  lineHeight?: number;
300
316
  wordSpace?: number;
301
317
  paragraphSpace?: number;
318
+ padding?: number | PPTTextPadding;
319
+ nowrap?: boolean;
302
320
  type?: TextType;
303
321
  }
304
322
  /**
@@ -0,0 +1,13 @@
1
+ import { Gradient } from '../types/slides';
2
+ export declare const PPTX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
3
+ export interface NativeGradientShapeMeta {
4
+ marker: string;
5
+ name: string;
6
+ gradient: Gradient;
7
+ opacity: number;
8
+ }
9
+ export interface NativeGradientSlideMeta {
10
+ background?: Gradient;
11
+ shapes: NativeGradientShapeMeta[];
12
+ }
13
+ export declare const applyNativeGradientsToPPTX: (blob: Blob, slidesMeta: NativeGradientSlideMeta[]) => Promise<Blob>;
@@ -13,6 +13,7 @@ export declare const schemaMarks: {
13
13
  fontsize: import('prosemirror-model').MarkSpec;
14
14
  fontname: import('prosemirror-model').MarkSpec;
15
15
  code: import('prosemirror-model').MarkSpec;
16
+ textbackgroundclip: import('prosemirror-model').MarkSpec;
16
17
  forecolor: import('prosemirror-model').MarkSpec;
17
18
  backcolor: import('prosemirror-model').MarkSpec;
18
19
  subscript: import('prosemirror-model').MarkSpec;
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  fontsize: MarkSpec;
6
6
  fontname: MarkSpec;
7
7
  code: MarkSpec;
8
+ textbackgroundclip: MarkSpec;
8
9
  forecolor: MarkSpec;
9
10
  backcolor: MarkSpec;
10
11
  subscript: MarkSpec;
@@ -0,0 +1,3 @@
1
+ import { PPTTextPadding } from '../types/slides';
2
+ export declare const getTextPadding: (padding?: number | PPTTextPadding) => PPTTextPadding;
3
+ export declare const getTextPaddingStyle: (padding?: number | PPTTextPadding) => string;
@@ -1,4 +1,5 @@
1
1
  declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
2
+ titleInputRef: unknown;
2
3
  offscreenCoverRef: HTMLDivElement;
3
4
  }, HTMLDivElement>;
4
5
  export default _default;
@@ -15,7 +15,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
15
15
  writingBoardRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
16
16
  color?: string | undefined;
17
17
  model?: "shape" | "pen" | "eraser" | "mark" | undefined;
18
- shapeType?: "arrow" | "rect" | "circle" | undefined;
18
+ shapeType?: "rect" | "arrow" | "circle" | undefined;
19
19
  blackboard?: boolean | undefined;
20
20
  penSize?: number | undefined;
21
21
  markSize?: number | undefined;
@@ -33,7 +33,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
33
33
  color: string;
34
34
  model: "shape" | "pen" | "eraser" | "mark";
35
35
  blackboard: boolean;
36
- shapeType: "arrow" | "rect" | "circle";
36
+ shapeType: "rect" | "arrow" | "circle";
37
37
  penSize: number;
38
38
  markSize: number;
39
39
  rubberSize: number;
@@ -51,7 +51,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
51
51
  }, Readonly<{
52
52
  color?: string | undefined;
53
53
  model?: "shape" | "pen" | "eraser" | "mark" | undefined;
54
- shapeType?: "arrow" | "rect" | "circle" | undefined;
54
+ shapeType?: "rect" | "arrow" | "circle" | undefined;
55
55
  blackboard?: boolean | undefined;
56
56
  penSize?: number | undefined;
57
57
  markSize?: number | undefined;
@@ -67,7 +67,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
67
67
  color: string;
68
68
  model: "shape" | "pen" | "eraser" | "mark";
69
69
  blackboard: boolean;
70
- shapeType: "arrow" | "rect" | "circle";
70
+ shapeType: "rect" | "arrow" | "circle";
71
71
  penSize: number;
72
72
  markSize: number;
73
73
  rubberSize: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lt-ppt",
3
- "version": "1.0.29",
3
+ "version": "1.0.31",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/lt-ppt.umd.js",
@@ -47,6 +47,7 @@
47
47
  "hfmath": "^0.0.2",
48
48
  "html-to-image": "^1.11.13",
49
49
  "jsonrepair": "^3.13.2",
50
+ "jszip": "^3.10.1",
50
51
  "lodash": "^4.17.21",
51
52
  "mitt": "^3.0.1",
52
53
  "nanoid": "^5.0.7",