@hailin-zheng/editor-core 2.2.43 → 2.2.44

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 (96) hide show
  1. package/editor.css +679 -679
  2. package/index.d.ts +32 -32
  3. package/index.js +24553 -24460
  4. package/med_editor/doc-editor.d.ts +553 -547
  5. package/med_editor/doc-rule.d.ts +174 -174
  6. package/med_editor/editor-core.d.ts +18 -18
  7. package/med_editor/framework/code-interpreter/ast-parser.d.ts +4 -4
  8. package/med_editor/framework/code-interpreter/document-eval-func.d.ts +18 -18
  9. package/med_editor/framework/code-interpreter/dynamic-execute.d.ts +42 -42
  10. package/med_editor/framework/doc-layout/arrange-manager.d.ts +96 -0
  11. package/med_editor/framework/doc-layout/document-arrange.d.ts +95 -95
  12. package/med_editor/framework/doc-layout/paragraph-arrange.d.ts +110 -110
  13. package/med_editor/framework/document-change.d.ts +346 -346
  14. package/med_editor/framework/document-combine.d.ts +24 -24
  15. package/med_editor/framework/document-comment.d.ts +38 -38
  16. package/med_editor/framework/document-context.d.ts +162 -162
  17. package/med_editor/framework/document-event.d.ts +261 -261
  18. package/med_editor/framework/document-input-cursor.d.ts +32 -32
  19. package/med_editor/framework/document-paginator.d.ts +46 -46
  20. package/med_editor/framework/document-svg.d.ts +36 -36
  21. package/med_editor/framework/document-template.d.ts +13 -13
  22. package/med_editor/framework/document-textline-mode.d.ts +6 -6
  23. package/med_editor/framework/element-define.d.ts +439 -440
  24. package/med_editor/framework/element-event-define.d.ts +101 -102
  25. package/med_editor/framework/element-props.d.ts +344 -344
  26. package/med_editor/framework/element-reader.d.ts +20 -20
  27. package/med_editor/framework/element-serialize.d.ts +39 -39
  28. package/med_editor/framework/element-type-handler.d.ts +8 -8
  29. package/med_editor/framework/history/element-trace-manage.d.ts +107 -107
  30. package/med_editor/framework/history/element-trace-tracking.d.ts +89 -89
  31. package/med_editor/framework/impl/checkbox/checkbox-impl.d.ts +19 -19
  32. package/med_editor/framework/impl/comments/comment-content-impl.d.ts +39 -39
  33. package/med_editor/framework/impl/comments/comment-element-impl.d.ts +24 -24
  34. package/med_editor/framework/impl/comments/comments-container-impl.d.ts +19 -19
  35. package/med_editor/framework/impl/comments/validate-msg-impl.d.ts +19 -19
  36. package/med_editor/framework/impl/data-element/data-container-impl.d.ts +25 -25
  37. package/med_editor/framework/impl/data-element/data-decorate-impl.d.ts +16 -16
  38. package/med_editor/framework/impl/data-element/data-element-barcode.d.ts +32 -32
  39. package/med_editor/framework/impl/data-element/data-element-base-impl.d.ts +122 -122
  40. package/med_editor/framework/impl/data-element/data-element-check-impl.d.ts +26 -26
  41. package/med_editor/framework/impl/data-element/data-element-date-impl.d.ts +23 -23
  42. package/med_editor/framework/impl/data-element/data-element-group-impl.d.ts +28 -28
  43. package/med_editor/framework/impl/data-element/data-element-image-impl.d.ts +23 -23
  44. package/med_editor/framework/impl/data-element/data-element-list-impl.d.ts +21 -21
  45. package/med_editor/framework/impl/data-element/data-element-text-impl.d.ts +22 -22
  46. package/med_editor/framework/impl/data-element/qrcode.d.ts +93 -93
  47. package/med_editor/framework/impl/decorate/fill-null-space-imple.d.ts +16 -16
  48. package/med_editor/framework/impl/document/doc-body-impl.d.ts +19 -19
  49. package/med_editor/framework/impl/document/doc-body-part-impl.d.ts +22 -22
  50. package/med_editor/framework/impl/document/doc-container-impl.d.ts +7 -7
  51. package/med_editor/framework/impl/document/doc-footer-impl.d.ts +19 -19
  52. package/med_editor/framework/impl/document/doc-header-impl.d.ts +19 -19
  53. package/med_editor/framework/impl/document/doc-impl.d.ts +85 -85
  54. package/med_editor/framework/impl/index.d.ts +41 -41
  55. package/med_editor/framework/impl/media-formula/menstrual-history.d.ts +31 -31
  56. package/med_editor/framework/impl/media-formula/permanent-teeth.d.ts +34 -34
  57. package/med_editor/framework/impl/paragraph/p-impl.d.ts +38 -38
  58. package/med_editor/framework/impl/picture/RectEle.d.ts +44 -44
  59. package/med_editor/framework/impl/picture/image-impl.d.ts +24 -24
  60. package/med_editor/framework/impl/radio/radio-impl.d.ts +17 -17
  61. package/med_editor/framework/impl/shape/line-impl.d.ts +31 -31
  62. package/med_editor/framework/impl/svg/svg-impl.d.ts +20 -20
  63. package/med_editor/framework/impl/symbol/br-symbol-impl.d.ts +18 -18
  64. package/med_editor/framework/impl/symbol/p-symbol-impl.d.ts +16 -16
  65. package/med_editor/framework/impl/symbol/page-br-symbol-impl.d.ts +20 -20
  66. package/med_editor/framework/impl/symbol/tab-symbol-impl.d.ts +15 -15
  67. package/med_editor/framework/impl/table/table-cell-impl.d.ts +34 -34
  68. package/med_editor/framework/impl/table/table-impl.d.ts +49 -49
  69. package/med_editor/framework/impl/table/table-row-impl.d.ts +27 -27
  70. package/med_editor/framework/impl/table/table-split-cell-patch.d.ts +20 -20
  71. package/med_editor/framework/impl/table/table-split-cell.d.ts +93 -93
  72. package/med_editor/framework/impl/table/table-util.d.ts +180 -180
  73. package/med_editor/framework/impl/text/text-impl.d.ts +34 -34
  74. package/med_editor/framework/impl/text/track-run-impl.d.ts +27 -27
  75. package/med_editor/framework/infrastructure/event-subject.d.ts +57 -57
  76. package/med_editor/framework/infrastructure/notify.d.ts +13 -13
  77. package/med_editor/framework/print/document-print-offscreen.d.ts +59 -59
  78. package/med_editor/framework/print/document-print.d.ts +19 -19
  79. package/med_editor/framework/render-context.d.ts +111 -111
  80. package/med_editor/framework/render-define.d.ts +169 -169
  81. package/med_editor/framework/search/search-panel.d.ts +31 -31
  82. package/med_editor/framework/selection/document-selection.d.ts +92 -92
  83. package/med_editor/framework/selection/range-util.d.ts +36 -36
  84. package/med_editor/framework/selection/selection-overlays.d.ts +36 -36
  85. package/med_editor/framework/suggestions/input-suggestions.d.ts +29 -29
  86. package/med_editor/framework/util/adjust-viewport-elements.d.ts +12 -12
  87. package/med_editor/framework/util/common-util.d.ts +78 -78
  88. package/med_editor/framework/util/document-segmenter.d.ts +2 -2
  89. package/med_editor/framework/util/element-util.d.ts +419 -417
  90. package/med_editor/framework/vnode/editor-calendar-vnode.d.ts +44 -44
  91. package/med_editor/framework/vnode/editor-list-vnode.d.ts +18 -18
  92. package/package.json +18 -18
  93. package/index-cjs.d.ts +0 -32
  94. package/index-cjs.js +0 -29731
  95. package/index-cjs.js.map +0 -1
  96. package/index.js.map +0 -1
@@ -1,547 +1,553 @@
1
- import { ContentMenuItem } from './framework/element-event-define';
2
- import { ElementReader } from './framework/element-reader';
3
- import { SelectionState } from './framework/selection/document-selection';
4
- import { BlockContainerElement, Element, ICancelTokenFn, LeafElement, MarginProps, OrientType, PageLayoutMode, Position, Rect, SerializeProps, ViewOptions } from './framework/element-define';
5
- import { DataElementGroupElement, DataElementInlineGroup, DataElementLeaf, DocumentElement, ParagraphElement, TableCellElement, TableElement, TableRowElement } from './framework/impl';
6
- import { CellDiagonal, ParagraphNumberType, ParagraphProps, TextProps } from './framework/element-props';
7
- import { EditorContext } from './framework/document-context';
8
- import { ElementTrackManage } from './framework/history/element-trace-manage';
9
- import { Subject } from './framework/infrastructure/event-subject';
10
- import { init, VNode } from "snabbdom";
11
- import { IVNodeRenderFunc } from "./editor-core";
12
- import { DocRule } from "./doc-rule";
13
- import { ISuggestionData, ISuggestionProvider } from './framework/suggestions/input-suggestions';
14
- export declare class DocEditor {
15
- private svgContainer;
16
- __v_skip: boolean;
17
- private contentCtx;
18
- viewOptions: ViewOptions;
19
- docCtx: EditorContext;
20
- private docComment;
21
- private renderContext;
22
- private documentPaginator;
23
- elementReader: ElementReader;
24
- private documentEvent;
25
- private documentSelection;
26
- private documentInput;
27
- private documentChange;
28
- private selectionOverlays;
29
- historyMange: ElementTrackManage;
30
- selectionChanged: Subject<SelectionState>;
31
- beforeRenderSubject: Subject<void>;
32
- afterRenderSubject: Subject<void>;
33
- onBeforeSetCursorSubject: Subject<{
34
- result: boolean;
35
- ss: SelectionState;
36
- }>;
37
- onPatchVNodeSubject: Subject<void>;
38
- selectionState: SelectionState;
39
- onDblClickEvent: Subject<Event>;
40
- onClickEvent: Subject<Event>;
41
- onDocChangedEvent: Subject<void>;
42
- onBeforeRefreshDocument: Subject<void>;
43
- onDocViewSizeChanged: Subject<void>;
44
- onDestroy: Subject<void>;
45
- beforeNodePatch: Subject<void>;
46
- afterNodePatch: Subject<void>;
47
- onTextChanged: Subject<void>;
48
- onSuggestionsProcess: Subject<ISuggestionProvider>;
49
- private eventBus;
50
- private editInput;
51
- private scrollContainer;
52
- onKeyDownEvent: Subject<KeyboardEvent>;
53
- private searchPanel;
54
- constructor(svgContainer: HTMLElement);
55
- private createCanvasContext;
56
- private renderRoot;
57
- private updateViewOption;
58
- adjustPageLayout(): void;
59
- private destroyDOM;
60
- createDocViewer(): void;
61
- measureMMToPixs(): number;
62
- flushTask: (() => void) | null;
63
- private trackChangeState;
64
- flushToSchedule(): Promise<void> | null;
65
- /**
66
- * 触发文档改变事件
67
- * @returns
68
- */
69
- triggerDocChange(): void;
70
- /**
71
- * fn函数执行时,不触发onDocChange
72
- * @param fn
73
- */
74
- noEffectChange(fn: () => void): void;
75
- /**
76
- * 载入文档
77
- * @param data json对象、json字符串、DocumentElement对象
78
- */
79
- loadDoc(data: any | DocumentElement, options?: {
80
- autoScrollToTop?: boolean;
81
- }): void;
82
- /**
83
- * 刷新文档,重新测量并设置光标等
84
- * @returns
85
- */
86
- private refreshDocument;
87
- /**
88
- * 计算选区内容对象
89
- * @private
90
- */
91
- private updateSelection;
92
- /**
93
- * 根据当前选区,更新待输入文本字体信息
94
- * @private
95
- */
96
- private updateInputFont;
97
- private hitInfoChanged;
98
- /**
99
- * 设置光标
100
- */
101
- setCursor(): void;
102
- private getCursorRect;
103
- /**
104
- * 设置虚拟光标的可见性
105
- * @param visibility
106
- */
107
- setCursorVisibility(visibility: boolean): void;
108
- hiddenInput(reset?: boolean, pos?: Omit<Rect, 'width'> | null): void;
109
- /**
110
- * 设置光标位置
111
- * @param position
112
- */
113
- setCursorPosition(position: {
114
- x: number;
115
- y: number;
116
- height: number;
117
- }): void;
118
- /**
119
- * 判断是否光标可以设置接受编辑
120
- * @returns
121
- */
122
- private canSetCursor;
123
- /**
124
- * 修改光标
125
- * @param newCursor
126
- */
127
- private changeCursor;
128
- /**
129
- * 文档点击事件
130
- */
131
- private docClickHandle;
132
- /**
133
- * 文档双击事件
134
- * 处理全选当前段落
135
- */
136
- private docDblClickHandle;
137
- /**
138
- * 获取当前光标所在的数据元
139
- * @returns
140
- */
141
- getCurrentDataElement(): DataElementInlineGroup | DataElementLeaf | null;
142
- /**
143
- * 获取当前光标所在数据组
144
- * @returns
145
- */
146
- getCurrentDataGroupElement(): DataElementGroupElement | null;
147
- /**
148
- * 移动光标到下一个数据元素上
149
- */
150
- moveFocusToNextDataElement(): void;
151
- /**
152
- * 设置当前光标所在的数据元的值
153
- * @param val
154
- */
155
- setCurrentDataElementValue(val: any): void;
156
- /**
157
- * 获取数据元位置
158
- * @param element
159
- * @returns
160
- */
161
- getDataElementPosition(element: LeafElement): Omit<Rect, 'width'> | null;
162
- /**
163
- * 获取文档模型
164
- * @returns
165
- */
166
- getDocSchema(): any;
167
- /**
168
- * 获取元素模型
169
- * @param ele
170
- * @returns
171
- */
172
- getEleSchemaJSON(ele: Element): any;
173
- getDocSchemaJSON(): string;
174
- private menusData;
175
- /**
176
- * 右键菜单
177
- * @param evt
178
- */
179
- onContextMenu(evt: MouseEvent): void;
180
- resetViewer(): void;
181
- /**
182
- * 缩放视图
183
- * @param scale
184
- * @returns
185
- */
186
- scale(scale: number): void;
187
- /**
188
- * 自适应计算缩放
189
- * @private
190
- */
191
- private adaptiveScale;
192
- /**
193
- * 缩放视图
194
- * @param scale
195
- * @returns
196
- */
197
- private _scaleView;
198
- /**
199
- * 在当前位置插入表格
200
- * @param rows
201
- * @param cols
202
- */
203
- insertTable(rows: number, cols: number): TableElement;
204
- insertLayoutContainer(ele: BlockContainerElement): void;
205
- /**
206
- * 插入软换行符
207
- */
208
- insertSoftBr(): void;
209
- /**
210
- * 清除文档
211
- */
212
- clearDoc(): void;
213
- /**
214
- * 新建文档
215
- * @param doc
216
- * @param name
217
- */
218
- createNewDoc(doc?: DocumentElement | null, name?: string): void;
219
- destroy(): void;
220
- /**
221
- * 将元素序列化为字符串,和serialize方法不同的是,该方法区别在于对留痕信息的处理
222
- * @param ele
223
- */
224
- serializeString(ele: Element): string;
225
- /**
226
- * 将元素序列化为JSON对象,可进一步操作该对象序列化为JSON对象
227
- * @param ele
228
- */
229
- serialize(ele: Element): SerializeProps | null;
230
- /**
231
- * 获取选区文本属性
232
- * @returns
233
- */
234
- getSelectionTextGroupProps(): TextProps | null;
235
- getSelectionParaProps(): ParagraphProps | null;
236
- setTextFormat(newProps: Partial<TextProps>): void;
237
- /**
238
- * 设置文本格式
239
- * @param newProps
240
- */
241
- setTextFormatByFn(setterFunc: (textProps: TextProps) => void): void;
242
- /**
243
- * 开启格式刷
244
- */
245
- enableFormatBrush(once?: boolean): ICancelTokenFn | null;
246
- /**
247
- * 设置段落样式
248
- * @param newProps
249
- */
250
- setParaStyle(newProps: Partial<ParagraphProps>): void;
251
- /**
252
- * 设置段落样式
253
- * @param setterFunc
254
- */
255
- setParaStyleByFn(setterFunc: (paraProps: ParagraphProps) => void): void;
256
- combineCell(): void;
257
- /**
258
- * 切换当前段落项目符号状态
259
- */
260
- setParagraphNumberType(numType: ParagraphNumberType): void;
261
- /**
262
- * 删除当前批注
263
- * @param id
264
- */
265
- removeComment(id: string): void;
266
- /**
267
- * 移除焦点所在的批注
268
- */
269
- removeCurrentComment(): void;
270
- /**
271
- * 插入批注
272
- */
273
- insertComment(text: string): void;
274
- /**
275
- * 清除所有批注
276
- */
277
- clearAllComments(): void;
278
- /**
279
- * 插入分页符
280
- */
281
- insertPageBreakSymbol(): void;
282
- cutTable(): void;
283
- /**
284
- * 初始化当前文档创建用户信息
285
- * 一份文档只需要设置一次
286
- */
287
- initCurrentDocUser(userId: string, userName: string, date: string): void;
288
- /**
289
- * 验证文档内容
290
- * @returns
291
- */
292
- validate(): boolean;
293
- /**
294
- * 撤销
295
- */
296
- undo(): void;
297
- /**
298
- * 恢复
299
- */
300
- redo(): void;
301
- /**
302
- * 是否可以撤销
303
- */
304
- canUndo(): boolean;
305
- /**
306
- * 是否可以恢复
307
- */
308
- canRedo(): boolean;
309
- /**
310
- * 切换文档留痕开关
311
- */
312
- switchTrackChanges(): void;
313
- get trackTipsChanged(): Subject<{
314
- pos: Position;
315
- tips: import("./framework/element-event-define").ITrackTips;
316
- }>;
317
- switchFullViewPage(): void;
318
- getSelectedJSON(): string;
319
- getSelectedItems(): Array<Element>;
320
- getSelectedText(): string;
321
- /**
322
- * 执行编辑器内部复制事件
323
- * @param evt
324
- */
325
- execCopy(evt: ClipboardEvent): void;
326
- /**
327
- * 设置纸张方向
328
- * @param orientation
329
- */
330
- setPaperOrient(orientation: OrientType): void;
331
- /**
332
- * 设置纸张大小,单位为毫米(mm)
333
- * @param width
334
- * @param height
335
- */
336
- setPaperSize(width: string): any;
337
- setPaperSize(width: number, height: number): any;
338
- /**
339
- * 显示当前元素到视图中
340
- * @param element
341
- */
342
- bringToView(element: Element): void;
343
- scrollToPosition(pos: Position): void;
344
- /**
345
- * 设置当前文档页边距
346
- */
347
- setDocumentMargin(pageMargin: Partial<MarginProps>): void;
348
- /**
349
- * 插入元素
350
- * @param targetElement
351
- * @param targetOffset
352
- * @param destEleArray
353
- * @returns
354
- */
355
- insertElement(targetElement: Element, targetOffset: number, destEleArray: Array<Element>): Element | null;
356
- /**
357
- * 插入新元素
358
- * @param ele
359
- */
360
- insertNewElement(ele: Element): void;
361
- switchPageLayout(mode: PageLayoutMode): void;
362
- /**
363
- * 获取当前光标位置所在的段落
364
- */
365
- getParagraphAtCursor(): ParagraphElement | null;
366
- /**
367
- * 获取当前光标位置的表格
368
- */
369
- getTableAtCursor(): TableElement | null;
370
- /**
371
- * 获取当前光标位置的表格行
372
- */
373
- getTableRowAtCursor(): TableRowElement | null;
374
- /**
375
- * 获取当前光标位置的单元格
376
- */
377
- getTableCellAtCursor(): TableCellElement | null;
378
- /**
379
- * 当前光标处上方插入新行
380
- */
381
- insertRowAboveAtCursor(): void;
382
- /**
383
- * 当前光标处下方插入新行
384
- */
385
- insertRowBelowAtCursor(): void;
386
- /**
387
- * 当前光标处右方插入新列
388
- */
389
- insertColToRightAtCursor(): void;
390
- /**
391
- * 当前光标处左方插入新列
392
- */
393
- insertColToLeftAtCursor(): void;
394
- /**
395
- * 移除当前光标处的行
396
- */
397
- removeCurrRowAtCursor(): void;
398
- /**
399
- * 移除当前光标处的列
400
- */
401
- removeCurrColAtCursor(): void;
402
- /**
403
- * 合并单元格
404
- */
405
- mergeCellsBySelection(): void;
406
- /**
407
- * 拆分单元格
408
- * @param rows
409
- * @param cols
410
- */
411
- splitCell(rows: number, cols: number): void;
412
- /**
413
- * 删除当前光标所在的表格
414
- */
415
- removeTableAtCursor(): void;
416
- /**
417
- * 设置单元格对角线
418
- * @param diagonal
419
- */
420
- setCellDiagonal(diagonal: CellDiagonal): void;
421
- /**
422
- * 设置选区范围内的单元格背景颜色
423
- */
424
- setTableCellBgColorAtSelection(color: string): void;
425
- /**
426
- * 还原光标处已合并的单元格
427
- */
428
- restoreMergeCellsAtCursor(): void;
429
- /**
430
- * 表格在指定位置插入新行
431
- * @param tb
432
- * @param insertRowIndex
433
- */
434
- insertNewRow(tb: TableElement, insertRowIndex: number): TableRowElement;
435
- /**
436
- * 开启打印区域
437
- */
438
- startPrintArea(): void;
439
- onChange(): void;
440
- nodePatch: ReturnType<typeof init>;
441
- vNodeDocContent: VNode;
442
- createPatch(): void;
443
- private onNextView;
444
- /**
445
- * 留痕提示的容器框,用于渲染后重新计算纵向位置
446
- * @private
447
- */
448
- private tipContainer;
449
- getVNode(): IVNodeRenderFunc;
450
- /**
451
- * 更新提示区域布局宽度,根据渲染的节点,判断是否需要设置提示区域宽度
452
- * @private
453
- */
454
- private updateTipLayoutWidth;
455
- /**
456
- * 更新留痕提示框位置在文档渲染后
457
- * @private
458
- */
459
- private updateTipLayoutAfterPatch;
460
- private createChangeTipContainer;
461
- /**
462
- * 设置光标在数据元内容末尾
463
- */
464
- setDataElemEndFocus(ele: DataElementInlineGroup): void;
465
- /**
466
- * 渲染下拉框数据元
467
- * @private
468
- */
469
- private renderDataListVNode;
470
- private renderCalendar;
471
- private renderContextmenu;
472
- /**
473
- * 设置标尺
474
- */
475
- refreshDocRule(rule: DocRule): void;
476
- version(): string;
477
- switchPageHeaderEditor(): void;
478
- getTextContent(ele?: BlockContainerElement): string;
479
- emit(event: string, args: any): void;
480
- createResizableElement(): VNode;
481
- /**
482
- * 读取操作日志,并返回是否修改的标志
483
- * @returns
484
- */
485
- private readDocChangeLog;
486
- /**
487
- * 处理候选词
488
- * @private
489
- */
490
- private processSuggestionsHandle;
491
- createAutoCompleteOptions(): void;
492
- private processKeyDownEvent;
493
- /**
494
- * 处理候选词,键盘选择定位
495
- * @private
496
- */
497
- private onSuggestionsKeydown;
498
- /**
499
- * 渲染联想、候选词
500
- * @private
501
- */
502
- private renderSuggestions;
503
- insertSuggestion(suggestion: ISuggestionData): void;
504
- parser(code: string, returnProcess?: boolean): string;
505
- /**
506
- * 返回当前光标处是否允许截断段落生成新的段落
507
- * @returns
508
- */
509
- allowSplitParagraph(): boolean;
510
- /**
511
- * 设置元素属性(attribute)
512
- * @param ele
513
- * @param attr
514
- * @param value
515
- */
516
- setEleAttribute(ele: Element, attr: string, value: any): void;
517
- /**
518
- * 获取元素属性(attribute)
519
- * @param ele
520
- * @param attr
521
- * @returns
522
- */
523
- getEleAttribute(ele: Element, attr: string): any;
524
- /**
525
- * 删除元素属性(attribute)
526
- * @param ele
527
- * @param attr
528
- */
529
- removeEleAttribute(ele: Element, attr: string): void;
530
- /**
531
- * 在光标处插入内容
532
- * @param data
533
- */
534
- insertContent(data: {
535
- text: string;
536
- doc: string;
537
- }): void;
538
- }
539
- export declare type EditorCurrentPos = {
540
- pos: Position;
541
- };
542
- export declare type EditorContextProps = {
543
- menus: Array<ContentMenuItem>;
544
- } & EditorCurrentPos;
545
- export declare type EditorPanelProps = {
546
- type: string;
547
- } & EditorCurrentPos;
1
+ import { ContentMenuItem } from './framework/element-event-define';
2
+ import { ElementReader } from './framework/element-reader';
3
+ import { SelectionState } from './framework/selection/document-selection';
4
+ import { RenderObject } from './framework/render-define';
5
+ import { BlockContainerElement, Element, ICancelTokenFn, LeafElement, MarginProps, OrientType, PageLayoutMode, Position, Rect, SerializeProps, ViewOptions } from './framework/element-define';
6
+ import { DataElementGroupElement, DataElementInlineGroup, DataElementLeaf, DocumentElement, ParagraphElement, TableCellElement, TableElement, TableRowElement } from './framework/impl';
7
+ import { CellDiagonal, ParagraphNumberType, ParagraphProps, TextProps } from './framework/element-props';
8
+ import { EditorContext } from './framework/document-context';
9
+ import { ElementTrackManage } from './framework/history/element-trace-manage';
10
+ import { Subject } from './framework/infrastructure/event-subject';
11
+ import { init, VNode } from "snabbdom";
12
+ import { IVNodeRenderFunc } from "./editor-core";
13
+ import { DocRule } from "./doc-rule";
14
+ import { ISuggestionData, ISuggestionProvider } from './framework/suggestions/input-suggestions';
15
+ export declare class DocEditor {
16
+ private svgContainer;
17
+ __v_skip: boolean;
18
+ private contentCtx;
19
+ viewOptions: ViewOptions;
20
+ docCtx: EditorContext;
21
+ private docComment;
22
+ private renderContext;
23
+ private documentPaginator;
24
+ elementReader: ElementReader;
25
+ private documentEvent;
26
+ private documentSelection;
27
+ private documentInput;
28
+ private documentChange;
29
+ private selectionOverlays;
30
+ historyMange: ElementTrackManage;
31
+ selectionChanged: Subject<SelectionState>;
32
+ beforeRenderSubject: Subject<void>;
33
+ afterRenderSubject: Subject<void>;
34
+ onBeforeSetCursorSubject: Subject<{
35
+ result: boolean;
36
+ ss: SelectionState;
37
+ }>;
38
+ onPatchVNodeSubject: Subject<void>;
39
+ selectionState: SelectionState;
40
+ onDblClickEvent: Subject<Event>;
41
+ onClickEvent: Subject<Event>;
42
+ onDocChangedEvent: Subject<void>;
43
+ onBeforeRefreshDocument: Subject<void>;
44
+ onDocViewSizeChanged: Subject<void>;
45
+ onDestroy: Subject<void>;
46
+ beforeNodePatch: Subject<void>;
47
+ afterNodePatch: Subject<void>;
48
+ onTextChanged: Subject<void>;
49
+ onSuggestionsProcess: Subject<ISuggestionProvider>;
50
+ private eventBus;
51
+ private editInput;
52
+ private scrollContainer;
53
+ onKeyDownEvent: Subject<KeyboardEvent>;
54
+ private searchPanel;
55
+ constructor(svgContainer: HTMLElement);
56
+ private createCanvasContext;
57
+ private renderRoot;
58
+ private updateViewOption;
59
+ adjustPageLayout(): void;
60
+ private destroyDOM;
61
+ createDocViewer(): void;
62
+ measureMMToPixs(): number;
63
+ flushTask: (() => void) | null;
64
+ private trackChangeState;
65
+ flushToSchedule(): Promise<void> | null;
66
+ /**
67
+ * 触发文档改变事件
68
+ * @returns
69
+ */
70
+ triggerDocChange(): void;
71
+ /**
72
+ * fn函数执行时,不触发onDocChange
73
+ * @param fn
74
+ */
75
+ noEffectChange(fn: () => void): void;
76
+ /**
77
+ * 载入文档
78
+ * @param data json对象、json字符串、DocumentElement对象
79
+ */
80
+ loadDoc(data: any | DocumentElement, options?: {
81
+ autoScrollToTop?: boolean;
82
+ }): void;
83
+ /**
84
+ * 刷新文档,重新测量并设置光标等
85
+ * @returns
86
+ */
87
+ private refreshDocument;
88
+ /**
89
+ * 计算选区内容对象
90
+ * @private
91
+ */
92
+ private updateSelection;
93
+ /**
94
+ * 根据当前选区,更新待输入文本字体信息
95
+ * @private
96
+ */
97
+ private updateInputFont;
98
+ private hitInfoChanged;
99
+ /**
100
+ * 设置光标
101
+ */
102
+ setCursor(): void;
103
+ private getCursorRect;
104
+ /**
105
+ * 设置虚拟光标的可见性
106
+ * @param visibility
107
+ */
108
+ setCursorVisibility(visibility: boolean): void;
109
+ hiddenInput(reset?: boolean, pos?: Omit<Rect, 'width'> | null): void;
110
+ /**
111
+ * 设置光标位置
112
+ * @param position
113
+ */
114
+ setCursorPosition(position: {
115
+ x: number;
116
+ y: number;
117
+ height: number;
118
+ }): void;
119
+ /**
120
+ * 判断是否光标可以设置接受编辑
121
+ * @returns
122
+ */
123
+ private canSetCursor;
124
+ /**
125
+ * 修改光标
126
+ * @param newCursor
127
+ */
128
+ private changeCursor;
129
+ /**
130
+ * 文档点击事件
131
+ */
132
+ private docClickHandle;
133
+ /**
134
+ * 文档双击事件
135
+ * 处理全选当前段落
136
+ */
137
+ private docDblClickHandle;
138
+ /**
139
+ * 获取当前光标所在的数据元
140
+ * @returns
141
+ */
142
+ getCurrentDataElement(): DataElementInlineGroup | DataElementLeaf | null;
143
+ /**
144
+ * 获取当前光标所在数据组
145
+ * @returns
146
+ */
147
+ getCurrentDataGroupElement(): DataElementGroupElement | null;
148
+ /**
149
+ * 移动光标到下一个数据元素上
150
+ */
151
+ moveFocusToNextDataElement(): void;
152
+ /**
153
+ * 设置当前光标所在的数据元的值
154
+ * @param val
155
+ */
156
+ setCurrentDataElementValue(val: any): void;
157
+ /**
158
+ * 获取数据元位置
159
+ * @param element
160
+ * @returns
161
+ */
162
+ getDataElementPosition(element: LeafElement): Omit<Rect, 'width'> | null;
163
+ getPaintRenders(ele: Element): Array<RenderObject>;
164
+ /**
165
+ * 获取文档模型
166
+ * @returns
167
+ */
168
+ getDocSchema(): any;
169
+ /**
170
+ * 获取元素模型
171
+ * @param ele
172
+ * @returns
173
+ */
174
+ getEleSchemaJSON(ele: Element): any;
175
+ getDocSchemaJSON(): string;
176
+ private menusData;
177
+ /**
178
+ * 右键菜单
179
+ * @param evt
180
+ */
181
+ onContextMenu(evt: MouseEvent): void;
182
+ resetViewer(): void;
183
+ /**
184
+ * 缩放视图
185
+ * @param scale
186
+ * @returns
187
+ */
188
+ scale(scale: number): void;
189
+ /**
190
+ * 自适应计算缩放
191
+ * @private
192
+ */
193
+ private adaptiveScale;
194
+ /**
195
+ * 缩放视图
196
+ * @param scale
197
+ * @returns
198
+ */
199
+ private _scaleView;
200
+ /**
201
+ * 在当前位置插入表格
202
+ * @param rows
203
+ * @param cols
204
+ */
205
+ insertTable(rows: number, cols: number): TableElement;
206
+ insertLayoutContainer(ele: BlockContainerElement): void;
207
+ /**
208
+ * 插入软换行符
209
+ */
210
+ insertSoftBr(): void;
211
+ /**
212
+ * 清除文档
213
+ */
214
+ clearDoc(): void;
215
+ /**
216
+ * 新建文档
217
+ * @param doc
218
+ * @param name
219
+ */
220
+ createNewDoc(doc?: DocumentElement | null, name?: string): void;
221
+ destroy(): void;
222
+ /**
223
+ * 将元素序列化为字符串,和serialize方法不同的是,该方法区别在于对留痕信息的处理
224
+ * @param ele
225
+ */
226
+ serializeString(ele: Element): string;
227
+ /**
228
+ * 将元素序列化为JSON对象,可进一步操作该对象序列化为JSON对象
229
+ * @param ele
230
+ */
231
+ serialize(ele: Element): SerializeProps | null;
232
+ /**
233
+ * 获取选区文本属性
234
+ * @returns
235
+ */
236
+ getSelectionTextGroupProps(): TextProps | null;
237
+ getSelectionParaProps(): ParagraphProps | null;
238
+ setTextFormat(newProps: Partial<TextProps>): void;
239
+ /**
240
+ * 设置文本格式
241
+ * @param newProps
242
+ */
243
+ setTextFormatByFn(setterFunc: (textProps: TextProps) => void): void;
244
+ /**
245
+ * 开启格式刷
246
+ */
247
+ enableFormatBrush(once?: boolean): ICancelTokenFn | null;
248
+ /**
249
+ * 设置段落样式
250
+ * @param newProps
251
+ */
252
+ setParaStyle(newProps: Partial<ParagraphProps>): void;
253
+ /**
254
+ * 设置段落样式
255
+ * @param setterFunc
256
+ */
257
+ setParaStyleByFn(setterFunc: (paraProps: ParagraphProps) => void): void;
258
+ combineCell(): void;
259
+ /**
260
+ * 切换当前段落项目符号状态
261
+ */
262
+ setParagraphNumberType(numType: ParagraphNumberType): void;
263
+ /**
264
+ * 删除当前批注
265
+ * @param id
266
+ */
267
+ removeComment(id: string): void;
268
+ /**
269
+ * 移除焦点所在的批注
270
+ */
271
+ removeCurrentComment(): void;
272
+ /**
273
+ * 插入批注
274
+ */
275
+ insertComment(text: string): void;
276
+ /**
277
+ * 清除所有批注
278
+ */
279
+ clearAllComments(): void;
280
+ /**
281
+ * 插入分页符
282
+ */
283
+ insertPageBreakSymbol(): void;
284
+ cutTable(): void;
285
+ /**
286
+ * 初始化当前文档创建用户信息
287
+ * 一份文档只需要设置一次
288
+ */
289
+ initCurrentDocUser(userId: string, userName: string, date: string): void;
290
+ /**
291
+ * 验证文档内容
292
+ * @returns
293
+ */
294
+ validate(): boolean;
295
+ /**
296
+ * 撤销
297
+ */
298
+ undo(): void;
299
+ /**
300
+ * 恢复
301
+ */
302
+ redo(): void;
303
+ /**
304
+ * 是否可以撤销
305
+ */
306
+ canUndo(): boolean;
307
+ /**
308
+ * 是否可以恢复
309
+ */
310
+ canRedo(): boolean;
311
+ /**
312
+ * 切换文档留痕开关
313
+ */
314
+ switchTrackChanges(): void;
315
+ get trackTipsChanged(): Subject<{
316
+ pos: Position;
317
+ tips: import("./framework/element-event-define").ITrackTips;
318
+ }>;
319
+ switchFullViewPage(): void;
320
+ getSelectedJSON(): string;
321
+ getSelectedItems(): Array<Element>;
322
+ getSelectedText(): string;
323
+ /**
324
+ * 执行编辑器内部复制事件
325
+ * @param evt
326
+ */
327
+ execCopy(evt: ClipboardEvent): void;
328
+ /**
329
+ * 设置纸张方向
330
+ * @param orientation
331
+ */
332
+ setPaperOrient(orientation: OrientType): void;
333
+ /**
334
+ * 设置纸张大小,单位为毫米(mm)
335
+ * @param width
336
+ * @param height
337
+ */
338
+ setPaperSize(width: string): any;
339
+ setPaperSize(width: number, height: number): any;
340
+ /**
341
+ * 显示当前元素到视图中
342
+ * @param element
343
+ */
344
+ bringToView(element: Element): void;
345
+ scrollToPosition(pos: Position): void;
346
+ /**
347
+ * 设置当前文档页边距
348
+ */
349
+ setDocumentMargin(pageMargin: Partial<MarginProps>): void;
350
+ /**
351
+ * 插入元素
352
+ * @param targetElement
353
+ * @param targetOffset
354
+ * @param destEleArray
355
+ * @returns
356
+ */
357
+ insertElement(targetElement: Element, targetOffset: number, destEleArray: Array<Element>): Element | null;
358
+ /**
359
+ * 插入新元素
360
+ * @param ele
361
+ */
362
+ insertNewElement(ele: Element): void;
363
+ switchPageLayout(mode: PageLayoutMode): void;
364
+ /**
365
+ * 获取当前光标位置所在的段落
366
+ */
367
+ getParagraphAtCursor(): ParagraphElement | null;
368
+ /**
369
+ * 获取当前光标位置的表格
370
+ */
371
+ getTableAtCursor(): TableElement | null;
372
+ /**
373
+ * 获取当前光标位置的表格行
374
+ */
375
+ getTableRowAtCursor(): TableRowElement | null;
376
+ /**
377
+ * 获取当前光标位置的单元格
378
+ */
379
+ getTableCellAtCursor(): TableCellElement | null;
380
+ /**
381
+ * 当前光标处上方插入新行
382
+ */
383
+ insertRowAboveAtCursor(): void;
384
+ /**
385
+ * 当前光标处下方插入新行
386
+ */
387
+ insertRowBelowAtCursor(): void;
388
+ /**
389
+ * 当前光标处右方插入新列
390
+ */
391
+ insertColToRightAtCursor(): void;
392
+ /**
393
+ * 当前光标处左方插入新列
394
+ */
395
+ insertColToLeftAtCursor(): void;
396
+ /**
397
+ * 移除当前光标处的行
398
+ */
399
+ removeCurrRowAtCursor(): void;
400
+ /**
401
+ * 移除当前光标处的列
402
+ */
403
+ removeCurrColAtCursor(): void;
404
+ /**
405
+ * 合并单元格
406
+ */
407
+ mergeCellsBySelection(): void;
408
+ /**
409
+ * 拆分单元格
410
+ * @param rows
411
+ * @param cols
412
+ */
413
+ splitCell(rows: number, cols: number): void;
414
+ /**
415
+ * 删除当前光标所在的表格
416
+ */
417
+ removeTableAtCursor(): void;
418
+ /**
419
+ * 设置单元格对角线
420
+ * @param diagonal
421
+ */
422
+ setCellDiagonal(diagonal: CellDiagonal): void;
423
+ /**
424
+ * 设置选区范围内的单元格背景颜色
425
+ */
426
+ setTableCellBgColorAtSelection(color: string): void;
427
+ /**
428
+ * 还原光标处已合并的单元格
429
+ */
430
+ restoreMergeCellsAtCursor(): void;
431
+ /**
432
+ * 表格在指定位置插入新行
433
+ * @param tb
434
+ * @param insertRowIndex
435
+ */
436
+ insertNewRow(tb: TableElement, insertRowIndex: number): TableRowElement;
437
+ /**
438
+ * 开启打印区域
439
+ */
440
+ startPrintArea(): void;
441
+ onChange(): void;
442
+ nodePatch: ReturnType<typeof init>;
443
+ vNodeDocContent: VNode;
444
+ createPatch(): void;
445
+ private onNextView;
446
+ /**
447
+ * 留痕提示的容器框,用于渲染后重新计算纵向位置
448
+ * @private
449
+ */
450
+ private tipContainer;
451
+ getVNode(): IVNodeRenderFunc;
452
+ /**
453
+ * 更新提示区域布局宽度,根据渲染的节点,判断是否需要设置提示区域宽度
454
+ * @private
455
+ */
456
+ private updateTipLayoutWidth;
457
+ /**
458
+ * 更新留痕提示框位置在文档渲染后
459
+ * @private
460
+ */
461
+ private updateTipLayoutAfterPatch;
462
+ private createChangeTipContainer;
463
+ /**
464
+ * 设置光标在数据元内容末尾
465
+ */
466
+ setDataElemEndFocus(ele: DataElementInlineGroup): void;
467
+ /**
468
+ * 渲染下拉框数据元
469
+ * @private
470
+ */
471
+ private renderDataListVNode;
472
+ private renderCalendar;
473
+ private renderContextmenu;
474
+ /**
475
+ * 设置标尺
476
+ */
477
+ refreshDocRule(rule: DocRule): void;
478
+ version(): string;
479
+ switchPageHeaderEditor(): void;
480
+ getTextContent(ele?: BlockContainerElement): string;
481
+ emit(event: string, args: any): void;
482
+ createResizableElement(): VNode;
483
+ /**
484
+ * 读取操作日志,并返回是否修改的标志
485
+ * @returns
486
+ */
487
+ private readDocChangeLog;
488
+ /**
489
+ * 处理候选词
490
+ * @private
491
+ */
492
+ private processSuggestionsHandle;
493
+ createAutoCompleteOptions(): void;
494
+ private processKeyDownEvent;
495
+ /**
496
+ * 处理候选词,键盘选择定位
497
+ * @private
498
+ */
499
+ private onSuggestionsKeydown;
500
+ /**
501
+ * 渲染联想、候选词
502
+ * @private
503
+ */
504
+ private renderSuggestions;
505
+ insertSuggestion(suggestion: ISuggestionData): void;
506
+ parser(code: string, returnProcess?: boolean): string;
507
+ /**
508
+ * 返回当前光标处是否允许截断段落生成新的段落
509
+ * @returns
510
+ */
511
+ allowSplitParagraph(): boolean;
512
+ /**
513
+ * 设置元素属性(attribute)
514
+ * @param ele
515
+ * @param attr
516
+ * @param value
517
+ */
518
+ setEleAttribute(ele: Element, attr: string, value: any): void;
519
+ /**
520
+ * 获取元素属性(attribute)
521
+ * @param ele
522
+ * @param attr
523
+ * @returns
524
+ */
525
+ getEleAttribute(ele: Element, attr: string): any;
526
+ /**
527
+ * 删除元素属性(attribute)
528
+ * @param ele
529
+ * @param attr
530
+ */
531
+ removeEleAttribute(ele: Element, attr: string): void;
532
+ /**
533
+ * 在光标处插入内容
534
+ * @param data
535
+ */
536
+ insertContent(data: {
537
+ text: string;
538
+ doc: string;
539
+ }): void;
540
+ /**
541
+ * 遍历文档节点执行任务
542
+ */
543
+ iterateChildren(cb: (ele: Element) => void): void;
544
+ }
545
+ export declare type EditorCurrentPos = {
546
+ pos: Position;
547
+ };
548
+ export declare type EditorContextProps = {
549
+ menus: Array<ContentMenuItem>;
550
+ } & EditorCurrentPos;
551
+ export declare type EditorPanelProps = {
552
+ type: string;
553
+ } & EditorCurrentPos;