@officesdk/editor-sdk-core 0.0.0-11 → 0.0.0-13

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.
Files changed (87) hide show
  1. package/cjs/diagram/index.js +16 -1
  2. package/cjs/diagram/sdk.js +1 -1
  3. package/cjs/docs/index.js +21 -0
  4. package/cjs/docs/info.js +3 -0
  5. package/cjs/docs/range.js +7 -0
  6. package/cjs/docs/sdk.js +28 -0
  7. package/cjs/docs/selection.js +3 -0
  8. package/cjs/docx/context-menu.js +3 -0
  9. package/cjs/docx/index.js +16 -1
  10. package/cjs/docx/menu.js +1 -1
  11. package/cjs/docx/sdk.js +1 -1
  12. package/cjs/docx/selection.js +1 -1
  13. package/cjs/docx/theme.js +1 -1
  14. package/cjs/docx/window.js +1 -1
  15. package/cjs/pdf/index.js +16 -1
  16. package/cjs/pdf/menu.js +1 -1
  17. package/cjs/presentation/index.js +16 -1
  18. package/cjs/presentation/menu.js +1 -1
  19. package/cjs/presentation/sdk.js +1 -1
  20. package/cjs/presentation/toolbar.js +3 -0
  21. package/cjs/shared/attachment.js +1 -1
  22. package/cjs/shared/content.js +1 -1
  23. package/cjs/shared/context-menu.js +3 -0
  24. package/cjs/shared/editor.js +1 -1
  25. package/cjs/shared/index.js +1 -1
  26. package/cjs/shared/menu.js +1 -1
  27. package/cjs/shared/toolbar.js +1 -1
  28. package/cjs/shared/user.js +1 -1
  29. package/cjs/sheet/index.js +16 -1
  30. package/cjs/sheet/menu.js +1 -1
  31. package/cjs/sheet/sdk.js +1 -1
  32. package/cjs/sheet/toolbar.js +3 -0
  33. package/cjs/table/content.js +3 -0
  34. package/cjs/table/index.js +23 -0
  35. package/cjs/table/resource.js +3 -0
  36. package/cjs/table/sdk.js +11 -0
  37. package/cjs/table/selection.js +21 -0
  38. package/cjs/table/table.js +3 -0
  39. package/esm/diagram/index.js +2 -1
  40. package/esm/diagram/sdk.js +1 -1
  41. package/esm/docs/index.js +3 -0
  42. package/esm/docs/info.js +2 -0
  43. package/esm/docs/range.js +6 -0
  44. package/esm/docs/sdk.js +25 -0
  45. package/esm/docs/selection.js +2 -0
  46. package/esm/docx/context-menu.js +2 -0
  47. package/esm/docx/index.js +2 -1
  48. package/esm/docx/menu.js +1 -1
  49. package/esm/docx/sdk.js +1 -1
  50. package/esm/docx/selection.js +1 -1
  51. package/esm/docx/theme.js +1 -1
  52. package/esm/docx/window.js +1 -1
  53. package/esm/pdf/index.js +2 -1
  54. package/esm/pdf/menu.js +1 -1
  55. package/esm/presentation/index.js +2 -1
  56. package/esm/presentation/menu.js +1 -1
  57. package/esm/presentation/sdk.js +1 -1
  58. package/esm/presentation/toolbar.js +2 -0
  59. package/esm/shared/attachment.js +1 -1
  60. package/esm/shared/content.js +1 -1
  61. package/esm/shared/context-menu.js +2 -0
  62. package/esm/shared/editor.js +1 -1
  63. package/esm/shared/index.js +1 -1
  64. package/esm/shared/menu.js +1 -1
  65. package/esm/shared/toolbar.js +1 -1
  66. package/esm/shared/user.js +1 -1
  67. package/esm/sheet/index.js +2 -1
  68. package/esm/sheet/menu.js +1 -1
  69. package/esm/sheet/sdk.js +1 -1
  70. package/esm/sheet/toolbar.js +2 -0
  71. package/esm/table/content.js +2 -0
  72. package/esm/table/index.js +4 -0
  73. package/esm/table/resource.js +2 -0
  74. package/esm/table/sdk.js +8 -0
  75. package/esm/table/selection.js +18 -0
  76. package/esm/table/table.js +2 -0
  77. package/package.json +72 -7
  78. package/types/diagram.d.ts +1370 -0
  79. package/types/docs.d.ts +1497 -0
  80. package/{index.d.ts → types/docx.d.ts} +305 -1171
  81. package/types/pdf.d.ts +1579 -0
  82. package/types/presentation.d.ts +1624 -0
  83. package/types/shared.d.ts +1305 -0
  84. package/types/sheet.d.ts +1695 -0
  85. package/types/table.d.ts +1620 -0
  86. package/cjs/index.js +0 -18
  87. package/esm/index.js +0 -7
@@ -0,0 +1,1624 @@
1
+ export declare abstract class AbstractedEditorFileUploader {
2
+ /**
3
+ * 开始上传
4
+ * @param options
5
+ */
6
+ abstract start(options: EditorUploadStartOptions): EditorUploadTaskInfo[];
7
+ /**
8
+ * 暂停上传,不传参数则取消所有上传任务
9
+ * @param taskIds
10
+ */
11
+ abstract pause(taskIds?: string[]): void;
12
+ /**
13
+ * 暂停上传,不传参数则暂停所有上传任务
14
+ * @param taskIds
15
+ */
16
+ abstract abort(taskIds?: string[]): void;
17
+ /**
18
+ * 恢复上传,不传参数则恢复所有上传任务
19
+ * @param taskIds
20
+ */
21
+ abstract resume(taskIds?: string[]): void;
22
+ }
23
+
24
+ export declare abstract class AbstractedPresentationSDK extends EditorSDK {
25
+ /**
26
+ * 幻灯片准备就绪
27
+ */
28
+ abstract ready(): Promise<void>;
29
+ /**
30
+ * 打印幻灯片
31
+ */
32
+ abstract print(): Promise<void>;
33
+ /**
34
+ * 幻灯片集合接口
35
+ */
36
+ abstract get slides(): PresentationSlides;
37
+ /**
38
+ * 幻灯片选区接口,用于获取、操作当前 slide 的选区
39
+ */
40
+ abstract get selection(): PresentationSelection;
41
+ /**
42
+ * 幻灯片缩放接口
43
+ * @param scale
44
+ */
45
+ abstract get zoom(): PresentationZoom;
46
+ /**
47
+ * 文本格式接口
48
+ */
49
+ abstract get text(): PresentationText;
50
+ }
51
+
52
+ /**
53
+ * 匿名用户信息
54
+ * 当前用户信息未知时的缺省值
55
+ */
56
+ export declare interface EditorAnonymousOptions {
57
+ /**
58
+ * 匿名用户默认显示名称
59
+ */
60
+ name: string;
61
+ /**
62
+ * 匿名用户默认头像
63
+ */
64
+ avatar: string;
65
+ }
66
+
67
+ /**
68
+ * 编辑器内部资源请求配置
69
+ */
70
+ export declare interface EditorAssetsOptions {
71
+ /**
72
+ * 通用资源请求代理配置,
73
+ * 用于套件内部资源请求时代理请求
74
+ */
75
+ proxy: HTTPProxy;
76
+ /**
77
+ * 资源文件 URL 转换和解析
78
+ */
79
+ resolver: EditorAssetsResolver;
80
+ /**
81
+ * 图片处理器
82
+ */
83
+ imageProcessing: EditorAssetsOssImageProcessing;
84
+ }
85
+
86
+ /**
87
+ * 基于对象存储的图片处理抽象
88
+ */
89
+ export declare interface EditorAssetsOssImageProcessing {
90
+ /**
91
+ * 压缩图片的方法
92
+ * @param imageUrl 图片的 URL
93
+ * @param compressOptions 压缩配置,例如质量、最大宽度和最大高度
94
+ * @returns 压缩后的图片 URL
95
+ */
96
+ compress: (imageUrl: string, compressOptions?: {
97
+ quality?: number;
98
+ maxWidth?: number;
99
+ maxHeight?: number;
100
+ }) => Promise<string>;
101
+ /**
102
+ * 裁切图片的方法
103
+ * @param imageUrl 图片的 URL
104
+ * @param cropOptions 裁切配置,例如宽度、高度和起始点
105
+ * @returns 裁切后的图片 URL
106
+ */
107
+ crop: (imageUrl: string, cropOptions: {
108
+ x?: number;
109
+ y?: number;
110
+ w: number;
111
+ h: number;
112
+ g?: EditorImageCropPoint;
113
+ }) => Promise<string>;
114
+ }
115
+
116
+ export declare interface EditorAssetsResolver {
117
+ /**
118
+ * 将资源文件 ID 转换为 URL 的方法
119
+ * @param assetId 资源文件 ID
120
+ * @returns 转换后的资源 URL ,如果无法转换则返回 null
121
+ */
122
+ resolveUrl: (assetId: string) => Promise<string | null>;
123
+ /**
124
+ * 从 URL 中解析资源文件 ID 的方法
125
+ * @param url 资源 URL
126
+ * @returns 解析出的资源文件 ID
127
+ */
128
+ parseId: (url: string) => Promise<string | null>;
129
+ /**
130
+ * 检查资源文件 ID 对应的文件是否准备就绪,
131
+ * 在部分环境中,资源文件需要异步导入,在编辑器加载的时候可能还未准备就绪
132
+ * @param assetId 资源文件 ID
133
+ * @returns
134
+ */
135
+ checkAssetReady: (assetId: string) => Promise<boolean> | boolean;
136
+ }
137
+
138
+ /**
139
+ * 编辑器附件限制配置,sdk中会使用在不同的场景下使用不同的限制规则组合
140
+ */
141
+ export declare interface EditorAttachmentLimitationOptions {
142
+ /**
143
+ * 检查附件大小的规则
144
+ * @param file
145
+ * @returns
146
+ */
147
+ checkFile: (params: EditorAttachmentLimitationOptionsCheckFunctionParams) => Promise<{
148
+ limited: true;
149
+ message: string;
150
+ } | {
151
+ limited: false;
152
+ }>;
153
+ }
154
+
155
+ /**
156
+ * 编辑器附件限制配置检查函数参数
157
+ */
158
+ export declare interface EditorAttachmentLimitationOptionsCheckFunctionParams {
159
+ /**
160
+ * 文件名称,带后缀名
161
+ */
162
+ name: string;
163
+ /**
164
+ * 文件大小,单位为Byte
165
+ */
166
+ size: number;
167
+ /**
168
+ * 文件的mime类型,例如image/jpeg、application/vnd.ms-excel等
169
+ */
170
+ mime?: string;
171
+ }
172
+
173
+ /**
174
+ * 编辑器附件限制配置
175
+ * @deprecated 使用limitations代替
176
+ */
177
+ export declare interface EditorAttachmentMaxSizeOptions {
178
+ /**
179
+ * 图片大小上限值,单位为Byte
180
+ * 设置为Infinity时表示不限制图片大小
181
+ */
182
+ value?: number;
183
+ /**
184
+ * 超限警告相关配置
185
+ */
186
+ warning?: {
187
+ /**
188
+ * 超限警告文本
189
+ */
190
+ text?: string;
191
+ };
192
+ }
193
+
194
+ /**
195
+ * 编辑器附件信息
196
+ */
197
+ export declare interface EditorAttachmentOptions {
198
+ uploader: AbstractedEditorFileUploader;
199
+ download: (url: string) => void;
200
+ /**
201
+ * 图片附件相关配置
202
+ */
203
+ image?: {
204
+ /**
205
+ * 图片大小上限相关配置
206
+ * @deprecated 使用limitations代替
207
+ */
208
+ maxSize?: EditorAttachmentMaxSizeOptions;
209
+ /**
210
+ * 支持的图片格式列表,例如jpg,png等
211
+ */
212
+ supportTypes?: string[];
213
+ /**
214
+ * 图片附件的限制配置
215
+ */
216
+ limitations?: EditorAttachmentLimitationOptions;
217
+ };
218
+ /**
219
+ * 其他附件相关配置
220
+ */
221
+ attachment?: {
222
+ /**
223
+ * 图片大小上限相关配置
224
+ * @deprecated 使用limitations代替
225
+ */
226
+ maxSize?: EditorAttachmentMaxSizeOptions;
227
+ /**
228
+ * 支持的附件格式列表,例如doc,docx等
229
+ */
230
+ supportTypes?: string[];
231
+ /**
232
+ * 附件的限制配置
233
+ */
234
+ limitations?: EditorAttachmentLimitationOptions;
235
+ };
236
+ }
237
+
238
+ /**
239
+ * 基础文件属性
240
+ */
241
+ export declare interface EditorBaseUploadableFile {
242
+ secretly?: boolean;
243
+ bucket: 'images' | 'attachments';
244
+ encrypt: string;
245
+ fileGuid: string;
246
+ }
247
+
248
+ /**
249
+ * 品牌相关设置,
250
+ * 用于在套件中展示品牌外露信息
251
+ */
252
+ export declare interface EditorBrandOptions {
253
+ /**
254
+ * 需要显示在品牌展示位的内容,按数组顺序显示
255
+ */
256
+ content: Array<{
257
+ type: 'image';
258
+ src: string;
259
+ } | {
260
+ type: 'text';
261
+ content: string;
262
+ color?: string;
263
+ }>;
264
+ /**
265
+ * 品牌展示位的布局信息
266
+ */
267
+ layout: {
268
+ width: string;
269
+ height: string;
270
+ };
271
+ }
272
+
273
+ /**
274
+ * 单条评论数据
275
+ */
276
+ export declare interface EditorCommentItem {
277
+ /**
278
+ * 评论 ID
279
+ */
280
+ id: string;
281
+ /**
282
+ * 评论用户信息
283
+ */
284
+ user: {
285
+ id: string;
286
+ name: string;
287
+ };
288
+ content: {
289
+ text: string;
290
+ };
291
+ }
292
+
293
+ export declare interface EditorComments {
294
+ /**
295
+ * 检查是否有评论
296
+ * @returns
297
+ */
298
+ hasAny: () => Promise<boolean>;
299
+ /**
300
+ * 获取评论列表
301
+ * @returns
302
+ */
303
+ getAll: () => Promise<EditorCommentItem[]>;
304
+ /**
305
+ * 获取单个评论
306
+ * @param commentId
307
+ * @returns
308
+ */
309
+ getOne: (commentId: string) => Promise<EditorCommentItem | null>;
310
+ /**
311
+ * 添加内容
312
+ * @param options
313
+ * @returns
314
+ */
315
+ add: (options: {
316
+ /**
317
+ * 评论内容
318
+ */
319
+ text: string;
320
+ /**
321
+ * 默认评论是添加到当前选区上,也可以指定一个区域
322
+ */
323
+ range?: string;
324
+ }) => Promise<string | null>;
325
+ /**
326
+ * 删除所有评论
327
+ * @returns
328
+ */
329
+ deleteAll: () => Promise<boolean>;
330
+ /**
331
+ * 删除单条评论
332
+ */
333
+ deleteOne: (commentId: string) => Promise<boolean>;
334
+ }
335
+
336
+ /**
337
+ * 编辑器评论初始化配置
338
+ */
339
+ export declare interface EditorCommentsOptions {
340
+ /**
341
+ * 评论作者信息,如果这里的信息为空,将会使用 user 信息
342
+ */
343
+ author?: {
344
+ /**
345
+ * 评论作者 ID
346
+ */
347
+ id: string;
348
+ /**
349
+ * 评论作者信息
350
+ */
351
+ name: string;
352
+ /**
353
+ * 评论作者头像
354
+ */
355
+ avatar?: string;
356
+ };
357
+ /**
358
+ * 显示的视图配置
359
+ */
360
+ view?: {
361
+ /**
362
+ * 评论显示模式,
363
+ * none: 不显示评论,默认值。
364
+ * card: 评论以卡片形式显示。
365
+ */
366
+ mode: 'none' | 'card';
367
+ };
368
+ }
369
+
370
+ export declare interface EditorContent<Delta = EditorDelta> {
371
+ /**
372
+ * 设置编辑器内容
373
+ * @param content
374
+ */
375
+ setContent: (content: string | ArrayBuffer) => Promise<void>;
376
+ /**
377
+ * 获取编辑器内容
378
+ */
379
+ getContent: () => Promise<Delta>;
380
+ /**
381
+ * 添加监听,当内容发生变化时触发监听,传入 Delta
382
+ * @param listener
383
+ */
384
+ addChangeListener: (listener: (change: Delta) => void) => () => void;
385
+ }
386
+
387
+ /**
388
+ * 右键菜单栏相关配置
389
+ * 右键菜单栏是指的编辑器中点击右键弹出的菜单栏。目前等于菜单栏配置,可扩展
390
+ */
391
+ export declare type EditorContextMenuOptions<TName extends string> = EditorMenuOptions<TName>;
392
+
393
+ export declare interface EditorDelta {
394
+ compose: (other: EditorDelta, isDocument?: boolean) => EditorDelta;
395
+ transform: (other: EditorDelta, priority?: boolean) => EditorDelta;
396
+ stringify: () => string;
397
+ length: number;
398
+ }
399
+
400
+ /**
401
+ * 编辑器嵌入对象
402
+ */
403
+ export declare interface EditorEmbeddedObject {
404
+ /**
405
+ * 嵌入的对象 url
406
+ */
407
+ url: string;
408
+ /**
409
+ * 嵌入对象的类型描述
410
+ */
411
+ type?: string;
412
+ /**
413
+ * 嵌入对象的名
414
+ */
415
+ name?: string;
416
+ }
417
+
418
+ /**
419
+ * 编辑器嵌入对象抽象类
420
+ */
421
+ export declare interface EditorEmbeddedObjectOptions {
422
+ /**
423
+ * 执行打开嵌入对象操作,
424
+ * 如果已经处理了打开操作,返回 true,否则返回 false,
425
+ * 如果返回 false,编辑器会继续后续默认的打开操作。
426
+ * @param object
427
+ * @returns
428
+ */
429
+ open: (object: EditorEmbeddedObject) => Promise<boolean>;
430
+ /**
431
+ * 嵌入对象的页面功能
432
+ */
433
+ ui?: {
434
+ /**
435
+ * 预览功能
436
+ */
437
+ preview?: {
438
+ disabled?: boolean;
439
+ };
440
+ /**
441
+ * 下载功能
442
+ */
443
+ download?: {
444
+ disabled?: boolean;
445
+ };
446
+ };
447
+ }
448
+
449
+ export declare interface EditorExportOptions {
450
+ /**
451
+ * 可导出类型
452
+ * @description
453
+ */
454
+ supportedTypes?: string[];
455
+ /**
456
+ * 导出文件
457
+ * @description
458
+ */
459
+ exportFile: (type: string) => Promise<void>;
460
+ }
461
+
462
+ export declare interface EditorFontFace {
463
+ /**
464
+ * 字体的名称,用于在用户界面上显示的名称
465
+ */
466
+ name: string;
467
+ /**
468
+ * 字体族
469
+ */
470
+ family: string;
471
+ /**
472
+ * 用于加载字体的 URL
473
+ */
474
+ url?: string;
475
+ /**
476
+ * 是否为受版权保护的字体,如果是在用户界面上会有所标识。
477
+ */
478
+ isCopyrightProtected: boolean;
479
+ /**
480
+ * 字体元数据
481
+ */
482
+ meta: EditorFontMeta;
483
+ }
484
+
485
+ /**
486
+ * 字体元数据
487
+ */
488
+ export declare interface EditorFontMeta {
489
+ head: {
490
+ unitsPerEm: number;
491
+ };
492
+ hhea: {
493
+ ascender: number;
494
+ descender: number;
495
+ lineGap: number;
496
+ };
497
+ vhea?: {
498
+ ascender: number;
499
+ descender: number;
500
+ lineGap: number;
501
+ };
502
+ os2: {
503
+ usWeightClass?: number;
504
+ usWidthClass?: number;
505
+ italic?: boolean;
506
+ isSymbol?: boolean;
507
+ ulCodePageRange: [number, number];
508
+ };
509
+ /**
510
+ * opentype中没有强制要求必须有en条目,只能确定name下的value的类型是对象
511
+ */
512
+ name: {
513
+ preferredFamily?: Record<string, string>;
514
+ preferredSubfamily?: Record<string, string>;
515
+ fontFamily?: Record<string, string>;
516
+ fontSubfamily?: Record<string, string>;
517
+ fullName?: Record<string, string>;
518
+ postScriptName?: Record<string, string>;
519
+ };
520
+ }
521
+
522
+ /**
523
+ * 字体列表
524
+ */
525
+ export declare interface EditorFontsList {
526
+ /**
527
+ * 返回解析为字体的列表的 Promise。
528
+ */
529
+ getAll: () => Promise<EditorFontFace[]>;
530
+ }
531
+
532
+ export declare interface EditorFontsOptions {
533
+ /**
534
+ * 服务器字体列表,用于获取服务器端配置的字体列表,
535
+ * 并提供可用于字体的加载 URL 和字体元数据。
536
+ */
537
+ list: EditorFontsList;
538
+ }
539
+
540
+ /**
541
+ * i18n 相关设置
542
+ */
543
+ export declare interface EditorI18nOptions {
544
+ /**
545
+ * 语言,默认使用浏览器当前环境中的语言
546
+ */
547
+ language?: string;
548
+ /**
549
+ * 文本方向,默认根据语言自动适配
550
+ */
551
+ direction?: 'ltr' | 'rtl';
552
+ }
553
+
554
+ export declare type EditorImageCropPoint = 'nw' | 'north' | 'ne' | 'west' | 'center' | 'east' | 'sw' | 'south' | 'se';
555
+
556
+ /**
557
+ * 链接配置,抽象打开链接等操作
558
+ */
559
+ export declare interface EditorLinkOptions {
560
+ /**
561
+ * 打开链接,如果取消了打开链接操作,返回 false
562
+ * @param url
563
+ * @param target
564
+ * @returns
565
+ */
566
+ open: (url: string, target: string) => Promise<boolean>;
567
+ }
568
+
569
+ /**
570
+ * 可上传文件
571
+ */
572
+ export declare interface EditorLocalUploadableFile extends EditorBaseUploadableFile {
573
+ name: string;
574
+ size: number;
575
+ mime: string;
576
+ raw: File;
577
+ }
578
+
579
+ /**
580
+ * 基础菜单项配置,所有菜单项类型都包含这些属性
581
+ */
582
+ declare interface EditorMenuBaseMenuItemConfig<TName extends string> {
583
+ /**
584
+ * 菜单项的唯一标识,用以确定配置的是哪个菜单
585
+ */
586
+ name: TName;
587
+ /**
588
+ * 菜单项类型
589
+ */
590
+ type?: EditorMenuItemType;
591
+ }
592
+
593
+ /**
594
+ * 按钮菜单项配置
595
+ */
596
+ export declare interface EditorMenuButtonMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> {
597
+ type?: 'button';
598
+ /**
599
+ * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击
600
+ */
601
+ disabled?: boolean;
602
+ /**
603
+ * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案
604
+ */
605
+ label?: string;
606
+ /**
607
+ * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url
608
+ * 配置为空字符串则可以隐藏菜单项默认的图标
609
+ */
610
+ icon?: string;
611
+ /**
612
+ * 菜单项点击事件,接受一个函数,可以自定义点击事件
613
+ */
614
+ callback?: () => void;
615
+ }
616
+
617
+ /**
618
+ * 编辑器菜单配置类型
619
+ * 联合类型,表示可以是任意一种菜单项配置
620
+ */
621
+ export declare type EditorMenuEntryConfig<TName extends string> = EditorMenuHiddenMenuItemConfig<TName> | EditorMenuButtonMenuItemConfig<TName> | EditorMenuLinkMenuItemConfig<TName> | EditorMenuEntryMenuItemConfig<TName>;
622
+
623
+ /**
624
+ * 子菜单入口配置
625
+ */
626
+ export declare interface EditorMenuEntryMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> {
627
+ type?: 'entry';
628
+ /**
629
+ * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击
630
+ */
631
+ disabled?: boolean;
632
+ /**
633
+ * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案
634
+ */
635
+ label?: string;
636
+ /**
637
+ * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url
638
+ * 配置为空字符串则可以隐藏菜单项默认的图标
639
+ */
640
+ icon?: string;
641
+ /**
642
+ * 下一级菜单配置,下一级菜单配置项和上一级相同
643
+ * 如果下一级仍然是 entry 类型,可以无限向下扩展
644
+ */
645
+ children?: EditorMenuEntryConfig<TName>[];
646
+ }
647
+
648
+ /**
649
+ * 隐藏菜单项配置
650
+ */
651
+ export declare interface EditorMenuHiddenMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> {
652
+ type?: 'hidden';
653
+ }
654
+
655
+ /**
656
+ * 菜单项类型
657
+ */
658
+ export declare type EditorMenuItemType = 'hidden' | 'button' | 'link' | 'entry';
659
+
660
+ /**
661
+ * 链接菜单项配置
662
+ */
663
+ export declare interface EditorMenuLinkMenuItemConfig<TName extends string> extends EditorMenuBaseMenuItemConfig<TName> {
664
+ type?: 'link';
665
+ /**
666
+ * 是否禁用菜单项,禁用后菜单项依旧显示不过变为灰色,不可点击
667
+ */
668
+ disabled?: boolean;
669
+ /**
670
+ * 菜单项显示文本,修改该值可以替换此菜单项默认显示文案
671
+ */
672
+ label?: string;
673
+ /**
674
+ * 菜单项图标,可以是 base64 的图片信息,也可以是图片 url
675
+ * 配置为空字符串则可以隐藏菜单项默认的图标
676
+ */
677
+ icon?: string;
678
+ /**
679
+ * 跳转链接地址
680
+ */
681
+ url?: string;
682
+ }
683
+
684
+ /**
685
+ * 菜单栏相关配置,目前菜单栏不是所有套件都支持,
686
+ * 菜单栏是指的编辑器最上放可以展开二级菜单的那一栏。
687
+ */
688
+ export declare interface EditorMenuOptions<TName extends string> {
689
+ /**
690
+ * 菜单栏是否隐藏,设置为true, 则整个菜单栏不显示
691
+ */
692
+ hidden?: boolean;
693
+ /**
694
+ * 是否禁用菜单栏所有功能。设置为true,菜单栏依旧显示,但所有菜单项为灰色不可点击
695
+ */
696
+ disabled?: boolean;
697
+ /**
698
+ * 菜单栏一级菜单配置,指显示在菜单栏上的菜单项。
699
+ */
700
+ entries?: EditorMenuEntryConfig<TName>[];
701
+ /**
702
+ * 菜单栏功能按钮配置
703
+ * TODO 此配置目前没有用到,后续看是保留还是和custom合并
704
+ */
705
+ features?: EditorMenuEntryConfig<TName>[];
706
+ /**
707
+ * 自定义按钮配置
708
+ */
709
+ custom?: EditorMenuEntryConfig<TName>[];
710
+ }
711
+
712
+ /**
713
+ * 编辑器基础模式接口
714
+ */
715
+ export declare interface EditorMode {
716
+ /**
717
+ * 获取当前编辑器模式
718
+ */
719
+ getModeType: () => EditorModeType;
720
+ /**
721
+ * 设置编辑器权限模式,仅在 `standard` 模式下有效
722
+ * @param permission
723
+ */
724
+ setStandardRole: (standardRole: EditorStandardRole) => Promise<void>;
725
+ /**
726
+ * 获取当前编辑器权限模式,仅在 `standard` 模式下有效
727
+ */
728
+ getStandardRole: () => EditorStandardRole;
729
+ }
730
+
731
+ /**
732
+ * 编辑器初始化的时相关的模式配置
733
+ */
734
+ export declare type EditorModeOptions = {
735
+ type: 'standard';
736
+ /**
737
+ * 当 mode 为 `standard` 时,可以设置当前编辑器的权限模式
738
+ */
739
+ role?: EditorStandardRole;
740
+ } | {
741
+ type: 'preview';
742
+ } | {
743
+ type: 'presentation';
744
+ };
745
+
746
+ /**
747
+ * 编辑器模式
748
+ * - `standard` 标准模式,会根据用户权限配置不同的功能
749
+ * - `preview` 预览模式,只能查看内容
750
+ * - `presentation` 演示模式,用作演示场景,演示模式下部分套件可以进行一些简单的编辑操作
751
+ */
752
+ export declare type EditorModeType = 'standard' | 'preview' | 'presentation';
753
+
754
+ /**
755
+ * 编辑器初始化通用参数
756
+ */
757
+ export declare interface EditorOptions {
758
+ /**
759
+ * 编辑器初始化内容,可以是 string 或者 ArrayBuffer,
760
+ * 也可以通过异步 Promise 加载
761
+ */
762
+ content: MaybePromiseValue<string | ArrayBuffer>;
763
+ /**
764
+ * 初始化时的编辑模式,默认为 `preview`
765
+ */
766
+ mode?: EditorModeOptions;
767
+ /**
768
+ * 当前操作编辑器的用户信息
769
+ */
770
+ user?: EditorUserOptions;
771
+ /**
772
+ * 匿名用户的缺省信息
773
+ */
774
+ anonymous?: EditorAnonymousOptions;
775
+ /**
776
+ * i18n 相关设置
777
+ */
778
+ i18n?: EditorI18nOptions;
779
+ /**
780
+ * 品牌相关设置
781
+ */
782
+ brand?: EditorBrandOptions;
783
+ /**
784
+ * 编辑器内部资源请求配置
785
+ */
786
+ assets?: EditorAssetsOptions;
787
+ /**
788
+ * 编辑器内部超链接设置
789
+ */
790
+ link?: EditorLinkOptions;
791
+ /**
792
+ * 嵌入对象相关配置
793
+ */
794
+ embeddedObject?: EditorEmbeddedObjectOptions;
795
+ /**
796
+ * 初始化水印配置
797
+ */
798
+ watermark?: EditorWatermarkOptions;
799
+ /**
800
+ * 编辑器打印设置
801
+ */
802
+ print?: EditorPrintOptions;
803
+ /**
804
+ * 编辑器评论设置
805
+ */
806
+ comments?: EditorCommentsOptions;
807
+ /**
808
+ * 附件设置
809
+ */
810
+ attachment?: EditorAttachmentOptions;
811
+ /**
812
+ * 导出设置
813
+ */
814
+ export?: EditorExportOptions;
815
+ }
816
+
817
+ /**
818
+ * 大纲目录接口
819
+ */
820
+ export declare interface EditorOutline<Content = unknown> {
821
+ /**
822
+ * 设置大纲目录是否可见
823
+ * @param visible 是否可见
824
+ */
825
+ setVisible: (visible: boolean) => void;
826
+ /**
827
+ * 获取目录信息
828
+ * @returns 目录信息
829
+ */
830
+ getContent: () => Promise<EditorOutlineItem<Content>[]>;
831
+ /**
832
+ * 添加目录信息改变时的监听器
833
+ * @param listener 监听器
834
+ * @returns 取消监听器的函数
835
+ */
836
+ addChangedListener: (listener: (content: EditorOutlineItem<Content>[]) => void) => () => void;
837
+ /**
838
+ * 跳转到指定条目对应的正文位置
839
+ * @param id 条目id
840
+ * @returns 跳转是否成功
841
+ */
842
+ goto: (id: string) => Promise<boolean>;
843
+ }
844
+
845
+ /**
846
+ * 大纲目录项条目
847
+ */
848
+ export declare interface EditorOutlineItem<Content = unknown> {
849
+ /**
850
+ * 目录项 ID
851
+ */
852
+ id: string;
853
+ /**
854
+ * 目录项层级
855
+ */
856
+ level: number;
857
+ /**
858
+ * 目录项内容
859
+ */
860
+ content: Content;
861
+ }
862
+
863
+ /**
864
+ * 大纲目录初始化参数,
865
+ * 用于配置大纲目录的行为和外观。
866
+ */
867
+ export declare interface EditorOutlineOptions {
868
+ /**
869
+ * 初始化编辑器时是否显示大纲目录,
870
+ * 默认为 false。
871
+ */
872
+ visible?: boolean;
873
+ }
874
+
875
+ /**
876
+ * 编辑器打印设置
877
+ */
878
+ export declare interface EditorPrintOptions {
879
+ /**
880
+ * 部分套件如果绕过了编辑器预设的打印接口,直接通过拉起了浏览器的打印页面,这时打印页面无法获取到编辑器的内容,
881
+ * 这种情况下就会 fallback 到这个 options 上,显示一个提示信息。
882
+ */
883
+ fallback?: {
884
+ message: string;
885
+ };
886
+ /**
887
+ * 是否禁用打印功能
888
+ */
889
+ disabled?: boolean;
890
+ }
891
+
892
+ /**
893
+ * 远程文件上传
894
+ */
895
+ export declare interface EditorRemoteUploadableFile extends EditorBaseUploadableFile {
896
+ src: string;
897
+ name?: never;
898
+ size?: never;
899
+ mime?: never;
900
+ raw?: never;
901
+ }
902
+
903
+ /**
904
+ * 编辑器通用接口
905
+ */
906
+ export declare abstract class EditorSDK {
907
+ protected options: EditorOptions;
908
+ constructor(options: EditorOptions);
909
+ /**
910
+ * 初始化编辑器、加载插件等操作。
911
+ */
912
+ abstract init(): Promise<void>;
913
+ /**
914
+ * 销毁编辑器
915
+ */
916
+ abstract destroy(): Promise<void>;
917
+ /**
918
+ * 将编辑器挂载到指定的根节点上,并渲染,
919
+ * mount 应该在 init 之后调用。
920
+ * @param root
921
+ */
922
+ abstract mount(root: HTMLElement): Promise<void>;
923
+ /**
924
+ * 从根节点卸载编辑器,对应 `mount` 操作
925
+ */
926
+ abstract unmount(): Promise<void>;
927
+ /**
928
+ * 编辑器内容相关接口
929
+ */
930
+ abstract get content(): EditorContent;
931
+ /**
932
+ * 编辑器模式相关接口
933
+ */
934
+ abstract get mode(): EditorMode;
935
+ /**
936
+ * 编辑器评论相关接口
937
+ */
938
+ abstract get comments(): EditorComments;
939
+ }
940
+
941
+ /**
942
+ * 编辑器在 `standard` 模式下的权限模式
943
+ * - `editor` 编辑模式
944
+ * - `viewer` 阅读模式
945
+ * - `reviewer` 评论模式
946
+ */
947
+ export declare type EditorStandardRole = 'editor' | 'viewer' | 'reviewer';
948
+
949
+ /**
950
+ * 上传任务回调
951
+ */
952
+ export declare interface EditorTaskCallbacks {
953
+ /**
954
+ * 上传进度回调
955
+ * @param taskId
956
+ * @param loaded
957
+ * @param total
958
+ * @param progress
959
+ * @param data
960
+ * @returns
961
+ */
962
+ onProgress?: (taskId: string, loaded: number, total: number, progress: number, data?: unknown) => void;
963
+ /**
964
+ * 上传错误回调
965
+ * @param taskId
966
+ * @param error
967
+ * @returns
968
+ */
969
+ onError?: (taskId: string, error: Error) => void;
970
+ /**
971
+ * 上传暂停回调
972
+ * @param taskId
973
+ * @returns
974
+ */
975
+ onPause?: (taskId: string) => void;
976
+ /**
977
+ * 上传取消
978
+ * @param taskId
979
+ * @returns
980
+ */
981
+ onAbort?: (taskId: string) => void;
982
+ /**
983
+ * 上传恢复
984
+ * @param taskId
985
+ * @returns
986
+ */
987
+ onResume?: (taskId: string) => void;
988
+ /**
989
+ * 上传完成回调
990
+ * @param taskId
991
+ * @param status
992
+ * @param data
993
+ * @returns
994
+ */
995
+ onEnd?: (taskId: string, status: 'Error' | 'Finished' | 'Canceled', data: unknown) => void;
996
+ }
997
+
998
+ /**
999
+ * 文本格式接口,
1000
+ * 包括设置、读取选区内文本的 BIUS、family、大小、颜色等
1001
+ */
1002
+ export declare interface EditorText<Color = string, TRangeValue = unknown> {
1003
+ /**
1004
+ * 获取当前选区或指定选区内的文本格式状态
1005
+ */
1006
+ get: (range?: TRangeValue) => Partial<EditorTextFormat<Color>>;
1007
+ /**
1008
+ * 将文本的格式应用到当前选区或指定选区上,
1009
+ * 传入的非空字段会覆盖对应的属性,其他没有传入的属性会保持不变。
1010
+ * @param range
1011
+ * @param format
1012
+ * @returns
1013
+ */
1014
+ apply: (format: Partial<EditorTextFormat<Color>>, range?: TRangeValue) => Partial<EditorTextFormat<Color>>;
1015
+ /**
1016
+ * 清空当前选区或指定选区内文本的格式,将文本格式恢复到默认状态
1017
+ * @param range
1018
+ * @returns
1019
+ */
1020
+ clear: (range: TRangeValue) => void;
1021
+ }
1022
+
1023
+ /**
1024
+ * 文本格式状态
1025
+ */
1026
+ export declare interface EditorTextFormat<Color = string> {
1027
+ /**
1028
+ * 粗体
1029
+ */
1030
+ bold: boolean;
1031
+ /**
1032
+ * 斜体
1033
+ */
1034
+ italic: boolean;
1035
+ /**
1036
+ * 下划线
1037
+ */
1038
+ underline: boolean;
1039
+ /**
1040
+ * 删除线
1041
+ */
1042
+ strike: boolean;
1043
+ /**
1044
+ * 文本颜色
1045
+ */
1046
+ color: Color;
1047
+ /**
1048
+ * 文本背景高亮颜色
1049
+ */
1050
+ highlight: Color;
1051
+ /**
1052
+ * 文本大小
1053
+ */
1054
+ size: number | string;
1055
+ /**
1056
+ * 文本名称
1057
+ */
1058
+ family: string;
1059
+ }
1060
+
1061
+ /**
1062
+ * 文本格式初始化选项
1063
+ */
1064
+ export declare interface EditorTextOptions<Color = string> {
1065
+ /**
1066
+ * 当前编辑器默认的文本格式
1067
+ */
1068
+ defaultFormat?: Partial<EditorTextFormat<Color>>;
1069
+ }
1070
+
1071
+ /**
1072
+ * 工具栏功能按钮配置(包括内置按钮和自定义按钮)
1073
+ */
1074
+ export declare interface EditorToolbarFeatureButton<TName extends string> {
1075
+ /**
1076
+ * 按钮的唯一标识,用以确定配置的是哪个按钮。
1077
+ */
1078
+ name: TName;
1079
+ /**
1080
+ * 按钮标签(显示文本)一般工具栏上的按钮不会显示文本,如果需要显示文本,配置此项。
1081
+ */
1082
+ label?: string;
1083
+ /**
1084
+ * 按钮图标,可以是 base64 的图片信息,也可以是图片 url
1085
+ */
1086
+ icon?: string;
1087
+ /**
1088
+ * 按钮是否隐藏,设置为true则隐藏按钮
1089
+ */
1090
+ hidden?: boolean;
1091
+ /**
1092
+ * 按钮是否禁用,设置为true则变为灰色不可点击
1093
+ */
1094
+ disabled?: boolean;
1095
+ /**
1096
+ * 按钮点击事件.接受一个函数,可以自定义点击事件。
1097
+ */
1098
+ callback?: () => void;
1099
+ /**
1100
+ * 按钮提示文本,鼠标悬浮到按钮上时显示的tooltip文字
1101
+ */
1102
+ tooltip?: string;
1103
+ /**
1104
+ * 按钮在工具栏中位置,不设置则按照默认位置
1105
+ */
1106
+ index?: number;
1107
+ }
1108
+
1109
+ /**
1110
+ * 工具栏内置功能按钮配置
1111
+ */
1112
+ export declare type EditorToolbarFeatureButtonConfig<TName extends string> = {
1113
+ [key in TName]?: EditorToolbarFeatureButton<key>;
1114
+ };
1115
+
1116
+ /**
1117
+ * 工具栏相关设置,可以控制工具栏的显示内容
1118
+ */
1119
+ export declare interface EditorToolbarOptions<TName extends string> {
1120
+ /**
1121
+ * 控制工具栏显隐状态
1122
+ */
1123
+ hidden?: boolean;
1124
+ /**
1125
+ * 是否禁用工具栏所有功能
1126
+ */
1127
+ disabled?: boolean;
1128
+ /**
1129
+ * 现有按钮的功能配置
1130
+ */
1131
+ features?: EditorToolbarFeatureButtonConfig<TName>;
1132
+ /**
1133
+ * 自定义按钮
1134
+ */
1135
+ custom?: EditorToolbarFeatureButtonConfig<string>;
1136
+ }
1137
+
1138
+ export declare type EditorUploadableFile = EditorLocalUploadableFile;
1139
+
1140
+ /**
1141
+ * 文件开始上传入参
1142
+ */
1143
+ export declare interface EditorUploadStartOptions extends EditorUploadTaskCallbacks {
1144
+ files: EditorUploadableFile[];
1145
+ }
1146
+
1147
+ /**
1148
+ * 上传状态
1149
+ */
1150
+ export declare enum EditorUploadStatus {
1151
+ Waiting = "Waiting",
1152
+ Uploading = "Uploading",
1153
+ Paused = "Paused",
1154
+ Canceled = "Canceled",
1155
+ Error = "Error",
1156
+ Finished = "Finished"
1157
+ }
1158
+
1159
+ export declare type EditorUploadTaskCallbacks = Omit<EditorTaskCallbacks, 'onEnd'> & {
1160
+ onLoadend: (results: {
1161
+ taskId: string;
1162
+ status: 'Error' | 'Finished' | 'Canceled';
1163
+ data?: unknown;
1164
+ }[]) => void;
1165
+ };
1166
+
1167
+ /**
1168
+ * 上传任务信息
1169
+ */
1170
+ export declare interface EditorUploadTaskInfo {
1171
+ taskId: string;
1172
+ fileInfo: EditorUploadableFile;
1173
+ total: number;
1174
+ readonly loaded: number;
1175
+ readonly progress: number;
1176
+ readonly status: EditorUploadStatus;
1177
+ }
1178
+
1179
+ /**
1180
+ * 操作当前编辑器的用户信息
1181
+ */
1182
+ export declare interface EditorUserOptions {
1183
+ /**
1184
+ * 用户 ID,用于标识用户
1185
+ */
1186
+ uid: string;
1187
+ /**
1188
+ * 用户名
1189
+ */
1190
+ name: string;
1191
+ /**
1192
+ * 用户头像
1193
+ */
1194
+ avatar?: string;
1195
+ /**
1196
+ * 用户默认头像,当用户未设置头像时显示
1197
+ */
1198
+ defaultAvatar?: string;
1199
+ }
1200
+
1201
+ /**
1202
+ * 编辑器外部水印信息
1203
+ */
1204
+ export declare interface EditorWatermarkOptions {
1205
+ /**
1206
+ * 获取用作初始化使用的默认水印
1207
+ */
1208
+ getWatermark: () => MaybePromiseValue<EditorWatermarkResource | null>;
1209
+ /**
1210
+ * 是否必须,如果为 true,编辑器将在初始化时强制渲染水印,
1211
+ * 水印配置信息加载失败将导致编辑器初始化失败
1212
+ */
1213
+ required?: boolean;
1214
+ }
1215
+
1216
+ export declare type EditorWatermarkResource = {
1217
+ type: 'data-url';
1218
+ url: string;
1219
+ } | {
1220
+ type: 'object-url';
1221
+ url: string;
1222
+ };
1223
+
1224
+ /**
1225
+ * 请求、响应头
1226
+ */
1227
+ export declare type HTTPHeaders = Record<string, string | number | boolean | undefined>;
1228
+
1229
+ /**
1230
+ * 请求方法
1231
+ */
1232
+ export declare type HTTPMethod = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH';
1233
+
1234
+ /**
1235
+ * HTTP 代理,用于抽象 HTTP 请求,
1236
+ * 将请求代理编辑器外部
1237
+ */
1238
+ export declare interface HTTPProxy {
1239
+ /**
1240
+ * 发送请求,如果需要做请求、响应拦截,需要在 proxy.interceptors 中实现,
1241
+ * 套件内使用 proxy 发送请求的方式应该为类似如下方式:
1242
+ * ```ts
1243
+ * const raw = await proxy.request(proxy.interceptors?.request?.intercept(requestConfig) ?? requestConfig);
1244
+ * const response = proxy.interceptors?.response?.intercept(raw) ?? raw;
1245
+ * ```
1246
+ *
1247
+ * 套件内如果需要通过其他方式发送请求,比如通过浏览器的 Image API 加载,可以使用 proxy.interceptors?.request?.intercept(requestConfig) 处理请求配置
1248
+ * @param config
1249
+ * @returns
1250
+ */
1251
+ request: <D = unknown, T = unknown>(config: HTTPRequestConfig<D>) => Promise<HTTPResponse<T>>;
1252
+ /**
1253
+ * 请求、响应拦截器,
1254
+ *
1255
+ */
1256
+ interceptors?: {
1257
+ request?: {
1258
+ /**
1259
+ * 请求拦截器,传入请求配置,返回处理后的请求配置
1260
+ * @param requestConfig 请求配置
1261
+ * @returns
1262
+ */
1263
+ intercept: <D = unknown>(requestConfig: HTTPRequestConfig<D>) => HTTPRequestConfig<D>;
1264
+ };
1265
+ response?: {
1266
+ /**
1267
+ * 响应拦截器,传入响应,返回处理后的响应
1268
+ * @param response
1269
+ * @returns
1270
+ */
1271
+ intercept: <T = unknown>(response: HTTPResponse<T>) => HTTPResponse<T>;
1272
+ };
1273
+ };
1274
+ /**
1275
+ * 创建一个新的 HTTP 代理,用于为不同请求场景创建不同的代理
1276
+ * @param id
1277
+ * @returns
1278
+ */
1279
+ create: (id: string) => Promise<HTTPProxy>;
1280
+ }
1281
+
1282
+ /**
1283
+ * 请求配置
1284
+ */
1285
+ export declare interface HTTPRequestConfig<Data = unknown> {
1286
+ /**
1287
+ * 请求地址
1288
+ */
1289
+ url: string;
1290
+ /**
1291
+ * 请求方法
1292
+ */
1293
+ method?: HTTPMethod;
1294
+ /**
1295
+ * 请求携带数据,主要是 POST、PUT、PATCH 等方法的请求数据
1296
+ */
1297
+ data?: Data;
1298
+ /**
1299
+ * 期望的响应数据类型
1300
+ */
1301
+ responseType?: HTTPResponseType;
1302
+ /**
1303
+ * 请求头
1304
+ */
1305
+ headers?: HTTPHeaders;
1306
+ }
1307
+
1308
+ /**
1309
+ * 响应数据
1310
+ */
1311
+ export declare interface HTTPResponse<Data = unknown> {
1312
+ /**
1313
+ * 响应数据 body
1314
+ */
1315
+ data: Data;
1316
+ /**
1317
+ * 响应状态码
1318
+ */
1319
+ status: number;
1320
+ /**
1321
+ * 响应头
1322
+ */
1323
+ headers: HTTPHeaders;
1324
+ }
1325
+
1326
+ /**
1327
+ * 请求返回类型
1328
+ */
1329
+ export declare type HTTPResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream';
1330
+
1331
+ export declare type MaybePromiseValue<T> = T | Promise<T>;
1332
+
1333
+ export declare type PresentationFontFace = EditorFontFace;
1334
+
1335
+ export declare type PresentationFontMeta = EditorFontMeta;
1336
+
1337
+ export declare interface PresentationFontsList {
1338
+ getAll: () => Promise<PresentationFontFace[]>;
1339
+ }
1340
+
1341
+ export declare interface PresentationFontsOptions {
1342
+ list: PresentationFontsList;
1343
+ }
1344
+
1345
+ /**
1346
+ * 幻灯片工具栏一级菜单
1347
+ */
1348
+ export declare type PresentationMenuEntryConfig = EditorMenuEntryConfig<PresentationMenuFeatureButtonName>;
1349
+
1350
+ /**
1351
+ * 幻灯片工具栏功能按钮
1352
+ */
1353
+ export declare type PresentationMenuFeatureButtonConfig = EditorMenuEntryConfig<PresentationMenuFeatureButtonName>;
1354
+
1355
+ /**
1356
+ * 幻灯片工具栏内置功能按钮
1357
+ */
1358
+ export declare type PresentationMenuFeatureButtonName = 'undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll';
1359
+
1360
+ export declare type PresentationMenuOptions = EditorMenuOptions<PresentationMenuFeatureButtonName>;
1361
+
1362
+ export declare interface PresentationSDKOptions extends EditorOptions {
1363
+ /**
1364
+ * 字体配置
1365
+ */
1366
+ fonts?: PresentationFontsOptions;
1367
+ /**
1368
+ * 菜单栏相关设置
1369
+ */
1370
+ menu?: PresentationMenuOptions;
1371
+ /**
1372
+ * 工具栏相关设置
1373
+ */
1374
+ toolbar?: PresentationToolbarOptions;
1375
+ /**
1376
+ * 文本格式相关设置
1377
+ */
1378
+ text?: PresentationTextOptions;
1379
+ }
1380
+
1381
+ /**
1382
+ * 选区(Selection)
1383
+ * 表示窗口中的当前选定内容。
1384
+ * 选定内容表示幻灯片中的选定(或突出显示)区域,或者代表插入点(如果未选择幻灯片中的任何内容)。
1385
+ */
1386
+ export declare interface PresentationSelection {
1387
+ /**
1388
+ * 获取选区的区域范围,
1389
+ * 如果没有指定范围,则返回当前选区的范围。
1390
+ * 如果指定了范围,则返回指定范围的选区。
1391
+ * 如果选区不存在,则返回 null。
1392
+ * @returns
1393
+ */
1394
+ getTextRange: (value?: PresentationTextRangeValue) => PresentationTextRange | null;
1395
+ /**
1396
+ * 设置选区的区域范围,
1397
+ * 设置后,选区会自动选中指定范围。
1398
+ * 如果设置为 null,则清空选区。
1399
+ * @param value
1400
+ */
1401
+ setTextRange: (value: PresentationTextRangeValue | null) => void;
1402
+ /**
1403
+ * 获取当前选中的形状,
1404
+ * 如果没有选中形状,则返回 null。
1405
+ * 如果指定了 value,则返回指定形状。
1406
+ * @param ids 指定的形状 id
1407
+ * @returns
1408
+ */
1409
+ getSelectedShapes: (ids?: string[]) => PresentationShape[] | null;
1410
+ /**
1411
+ * 选中指定的形状,选中形状后会清空文字选区。
1412
+ * 如果 value 为 null,则清空选中的形状。
1413
+ * @param ids 指定的形状 id
1414
+ * @returns
1415
+ */
1416
+ setSelectedShapes: (ids: string[] | null) => void;
1417
+ /**
1418
+ * 添加选区变化监听器,当选区发生变化时,会触发回调。
1419
+ * @param listener
1420
+ * @returns
1421
+ */
1422
+ addRangeListener: (listener: (value: PresentationTextRangeValue | null) => void) => void;
1423
+ }
1424
+
1425
+ /**
1426
+ * 幻灯片形状(Shape)接口
1427
+ */
1428
+ export declare interface PresentationShape {
1429
+ /**
1430
+ * 获取形状的 id
1431
+ */
1432
+ readonly id: string;
1433
+ }
1434
+
1435
+ /**
1436
+ * 幻灯片页面(Slide)对象,
1437
+ * 是幻灯片的基础操作单元,包含幻灯片的基本信息和操作方法。
1438
+ */
1439
+ export declare interface PresentationSlide {
1440
+ /**
1441
+ * 当前幻灯片的 id
1442
+ */
1443
+ readonly id: string;
1444
+ /**
1445
+ * 获取当前幻灯片在所有幻灯片中的索引
1446
+ * @returns
1447
+ */
1448
+ getIndex: () => number;
1449
+ /**
1450
+ * 获取当前页面所有的形状
1451
+ * @returns
1452
+ */
1453
+ getShapes: () => PresentationShape[];
1454
+ }
1455
+
1456
+ /**
1457
+ * 幻灯片集合对象,
1458
+ * 该接口和 PresentationSlide 负责不同的功能,
1459
+ * PresentationSlide 是一个幻灯片页面的抽象,而 PresentationSlides 是对整个文件中所有页面的操作。
1460
+ */
1461
+ export declare interface PresentationSlides {
1462
+ /**
1463
+ * 获取当前幻灯片
1464
+ */
1465
+ getCurrentSlide: () => PresentationSlide;
1466
+ /**
1467
+ * 切换当前幻灯片
1468
+ * @param slideId
1469
+ */
1470
+ setCurrentSlideIndex: (slideId: string) => void;
1471
+ /**
1472
+ * 获取幻灯片索引
1473
+ * @param slideId
1474
+ * @returns
1475
+ */
1476
+ getSlideIndex: (slideId: string) => number;
1477
+ /**
1478
+ * 获取幻灯片总数
1479
+ */
1480
+ getSlidesCount: () => number;
1481
+ /**
1482
+ * 获取所有幻灯片
1483
+ * @returns
1484
+ */
1485
+ getSlides: () => PresentationSlide[];
1486
+ /**
1487
+ * 获取指定幻灯片
1488
+ * @param slideId
1489
+ */
1490
+ getSlideById: (slideId: string) => PresentationSlide;
1491
+ /**
1492
+ * 获取当前选中的幻灯片。
1493
+ * 至少存在一个选中的幻灯片。
1494
+ * @returns
1495
+ */
1496
+ getSelectedSlides: (ids?: string[]) => PresentationSlide[];
1497
+ /**
1498
+ * 设置
1499
+ * @param ids
1500
+ * @returns
1501
+ */
1502
+ setSelectedSlides: (ids: string[]) => void;
1503
+ }
1504
+
1505
+ /**
1506
+ * 演示文稿文本接口
1507
+ */
1508
+ export declare type PresentationText = EditorText<string, PresentationTextRangeValue>;
1509
+
1510
+ /**
1511
+ * 演示文稿文本格式
1512
+ */
1513
+ export declare type PresentationTextFormat = EditorTextFormat;
1514
+
1515
+ /**
1516
+ * 演示文稿文本格式初始化选项
1517
+ */
1518
+ export declare type PresentationTextOptions = EditorTextOptions<string>;
1519
+
1520
+ /**
1521
+ * 区域(Range)
1522
+ * 区域对象,表示幻灯片页面中的一个连续的文字区域,每个 Range 对象包含起始字符位置和终止字符位置。
1523
+ * 区域信息是一个临时状态,当内容发生变化后,或切换了幻灯片 slide 区域信息可能会失效。
1524
+ */
1525
+ /**
1526
+ * 幻灯片区域对象,
1527
+ * 用于表示页面中的一个连续区域,
1528
+ * 每个选区值包含了起始位置和结束位置信息的字符串。
1529
+ */
1530
+ export declare interface PresentationTextRange {
1531
+ /**
1532
+ * 区域的开始位置,
1533
+ * 当内容发生变化后,区域的标识可能会失效。
1534
+ */
1535
+ readonly start: string;
1536
+ /**
1537
+ * 区域的结束位置,
1538
+ * 当内容发生变化后,区域的标识可能会失效。
1539
+ */
1540
+ readonly end: string;
1541
+ /**
1542
+ * 获取该区域对应的纯文本信息。
1543
+ * @returns
1544
+ */
1545
+ getText: () => string;
1546
+ /**
1547
+ * 设置该区域的内容
1548
+ * @param text 内容
1549
+ */
1550
+ setText: (text: string) => void;
1551
+ /**
1552
+ * 将区域中的内容以 HTML 格式返回
1553
+ */
1554
+ getHtml: () => string;
1555
+ /**
1556
+ * 设置该区域的内容为 HTML 格式
1557
+ * @param html 内容
1558
+ */
1559
+ setHtml: (html: string) => void;
1560
+ }
1561
+
1562
+ export declare interface PresentationTextRangeValue {
1563
+ start: string;
1564
+ end: string;
1565
+ }
1566
+
1567
+ /**
1568
+ * 幻灯片工具栏功能按钮
1569
+ */
1570
+ export declare type PresentationToolbarFeatureButton = EditorToolbarFeatureButton<PresentationToolbarFeatureButtonName>;
1571
+
1572
+ /**
1573
+ * 幻灯片工具栏功能按钮配置
1574
+ */
1575
+ export declare type PresentationToolbarFeatureButtonConfig = EditorToolbarFeatureButtonConfig<PresentationToolbarFeatureButtonName>;
1576
+
1577
+ /**
1578
+ * 幻灯片工具栏按钮名称
1579
+ */
1580
+ export declare type PresentationToolbarFeatureButtonName = 'insertImage' | 'insertShape' | 'insertChart' | 'insertTable' | 'insertTextbox' | 'insertSymbol' | 'insertDiagram' | 'insertAudio' | 'insertAttachment' | 'insertVideo' | 'insertLink' | 'changeTheme' | 'presentationSize' | 'backgroundSetting' | 'pageTransitionAnimation' | 'elementAnimation' | 'searchAndReplace' | 'addComment';
1581
+
1582
+ /**
1583
+ * 幻灯片工具栏
1584
+ */
1585
+ export declare type PresentationToolbarOptions = EditorToolbarOptions<PresentationToolbarFeatureButtonName>;
1586
+
1587
+ /**
1588
+ * 幻灯片缩放接口
1589
+ */
1590
+ export declare interface PresentationZoom {
1591
+ /**
1592
+ * 获取当前缩放比例。
1593
+ * @returns
1594
+ */
1595
+ getPercentage: () => number;
1596
+ /**
1597
+ * 设置缩放比例,
1598
+ * 有效范围 10 ~ 500。
1599
+ * @param percentage
1600
+ */
1601
+ setPercentage: (percentage: number) => void;
1602
+ /**
1603
+ * 设置自动缩放模式,
1604
+ * none: 不自动缩放,默认值。
1605
+ * window: 根据窗口宽度自动缩放,页面宽度随着窗口宽度变化而变化
1606
+ * @param mode 缩放模式,可以是 'window'
1607
+ */
1608
+ setFitMode: (mode: 'none' | 'window') => void;
1609
+ /**
1610
+ * 获取当前缩放模式。
1611
+ * @returns
1612
+ */
1613
+ getFitMode: () => 'none' | 'window';
1614
+ /**
1615
+ * 放大。
1616
+ */
1617
+ zoomIn: () => void;
1618
+ /**
1619
+ * 缩小。
1620
+ */
1621
+ zoomOut: () => void;
1622
+ }
1623
+
1624
+ export { }