@hailin-zheng/editor-core 2.2.3 → 2.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. package/editor.css +694 -610
  2. package/index-cjs.d.ts +32 -31
  3. package/index-cjs.js +22649 -22205
  4. package/index-cjs.js.map +1 -1
  5. package/index.d.ts +32 -31
  6. package/index.js +22647 -22207
  7. package/index.js.map +1 -1
  8. package/med_editor/doc-editor.d.ts +493 -464
  9. package/med_editor/doc-rule.d.ts +46 -46
  10. package/med_editor/editor-core.d.ts +21 -21
  11. package/med_editor/framework/code-interpreter/ast-parser.d.ts +4 -4
  12. package/med_editor/framework/code-interpreter/document-eval-func.d.ts +18 -18
  13. package/med_editor/framework/code-interpreter/dynamic-execute.d.ts +23 -23
  14. package/med_editor/framework/doc-layout/document-arrange.d.ts +86 -86
  15. package/med_editor/framework/doc-layout/paragraph-arrange.d.ts +107 -107
  16. package/med_editor/framework/document-change.d.ts +314 -295
  17. package/med_editor/framework/document-combine.d.ts +24 -24
  18. package/med_editor/framework/document-comment.d.ts +38 -38
  19. package/med_editor/framework/document-context.d.ts +138 -133
  20. package/med_editor/framework/document-event.d.ts +251 -251
  21. package/med_editor/framework/document-input-cursor.d.ts +32 -43
  22. package/med_editor/framework/document-paginator.d.ts +46 -46
  23. package/med_editor/framework/document-svg.d.ts +36 -36
  24. package/med_editor/framework/document-template.d.ts +13 -13
  25. package/med_editor/framework/document-textline-mode.d.ts +6 -6
  26. package/med_editor/framework/element-define.d.ts +413 -409
  27. package/med_editor/framework/element-event-define.d.ts +104 -107
  28. package/med_editor/framework/element-props.d.ts +343 -343
  29. package/med_editor/framework/element-reader.d.ts +20 -20
  30. package/med_editor/framework/element-serialize.d.ts +36 -36
  31. package/med_editor/framework/element-type-handler.d.ts +8 -9
  32. package/med_editor/framework/history/element-trace-manage.d.ts +107 -107
  33. package/med_editor/framework/history/element-trace-tracking.d.ts +89 -89
  34. package/med_editor/framework/impl/checkbox/checkbox-impl.d.ts +19 -19
  35. package/med_editor/framework/impl/comments/comment-content-impl.d.ts +39 -39
  36. package/med_editor/framework/impl/comments/comment-element-impl.d.ts +24 -24
  37. package/med_editor/framework/impl/comments/comments-container-impl.d.ts +19 -19
  38. package/med_editor/framework/impl/comments/validate-msg-impl.d.ts +19 -19
  39. package/med_editor/framework/impl/data-element/data-container-impl.d.ts +25 -0
  40. package/med_editor/framework/impl/data-element/data-decorate-impl.d.ts +15 -15
  41. package/med_editor/framework/impl/data-element/data-element-barcode.d.ts +32 -32
  42. package/med_editor/framework/impl/data-element/data-element-base-impl.d.ts +96 -96
  43. package/med_editor/framework/impl/data-element/data-element-check-impl.d.ts +26 -26
  44. package/med_editor/framework/impl/data-element/data-element-date-impl.d.ts +23 -23
  45. package/med_editor/framework/impl/data-element/data-element-group-impl.d.ts +17 -17
  46. package/med_editor/framework/impl/data-element/data-element-image-impl.d.ts +23 -23
  47. package/med_editor/framework/impl/data-element/data-element-list-impl.d.ts +21 -21
  48. package/med_editor/framework/impl/data-element/data-element-text-impl.d.ts +22 -22
  49. package/med_editor/framework/impl/data-element/qrcode.d.ts +93 -93
  50. package/med_editor/framework/impl/decorate/fill-null-space-imple.d.ts +16 -16
  51. package/med_editor/framework/impl/document/doc-body-impl.d.ts +19 -19
  52. package/med_editor/framework/impl/document/doc-body-part-impl.d.ts +22 -22
  53. package/med_editor/framework/impl/document/doc-container-impl.d.ts +7 -7
  54. package/med_editor/framework/impl/document/doc-footer-impl.d.ts +19 -19
  55. package/med_editor/framework/impl/document/doc-header-impl.d.ts +19 -19
  56. package/med_editor/framework/impl/document/doc-impl.d.ts +72 -72
  57. package/med_editor/framework/impl/index.d.ts +40 -39
  58. package/med_editor/framework/impl/media-formula/menstrual-history.d.ts +31 -31
  59. package/med_editor/framework/impl/media-formula/permanent-teeth.d.ts +34 -34
  60. package/med_editor/framework/impl/paragraph/p-impl.d.ts +38 -38
  61. package/med_editor/framework/impl/picture/RectEle.d.ts +44 -44
  62. package/med_editor/framework/impl/picture/image-impl.d.ts +24 -24
  63. package/med_editor/framework/impl/radio/radio-impl.d.ts +17 -17
  64. package/med_editor/framework/impl/svg/svg-impl.d.ts +20 -20
  65. package/med_editor/framework/impl/symbol/br-symbol-impl.d.ts +18 -18
  66. package/med_editor/framework/impl/symbol/p-symbol-impl.d.ts +16 -16
  67. package/med_editor/framework/impl/symbol/page-br-symbol-impl.d.ts +20 -20
  68. package/med_editor/framework/impl/symbol/tab-symbol-impl.d.ts +15 -15
  69. package/med_editor/framework/impl/table/table-cell-impl.d.ts +34 -34
  70. package/med_editor/framework/impl/table/table-impl.d.ts +49 -49
  71. package/med_editor/framework/impl/table/table-row-impl.d.ts +27 -27
  72. package/med_editor/framework/impl/table/table-split-cell-patch.d.ts +20 -20
  73. package/med_editor/framework/impl/table/table-split-cell.d.ts +93 -92
  74. package/med_editor/framework/impl/table/table-util.d.ts +180 -180
  75. package/med_editor/framework/impl/text/text-impl.d.ts +34 -34
  76. package/med_editor/framework/impl/text/track-run-impl.d.ts +27 -27
  77. package/med_editor/framework/infrastructure/event-subject.d.ts +57 -56
  78. package/med_editor/framework/infrastructure/notify.d.ts +13 -13
  79. package/med_editor/framework/print/document-print-offscreen.d.ts +58 -58
  80. package/med_editor/framework/print/document-print.d.ts +18 -18
  81. package/med_editor/framework/render-context.d.ts +111 -111
  82. package/med_editor/framework/render-define.d.ts +141 -141
  83. package/med_editor/framework/selection/document-selection.d.ts +92 -91
  84. package/med_editor/framework/selection/range-util.d.ts +36 -36
  85. package/med_editor/framework/selection/selection-overlays.d.ts +32 -32
  86. package/med_editor/framework/suggestions/input-suggestions.d.ts +29 -0
  87. package/med_editor/framework/util/adjust-viewport-elements.d.ts +12 -12
  88. package/med_editor/framework/util/common-util.d.ts +76 -76
  89. package/med_editor/framework/util/document-segmenter.d.ts +2 -2
  90. package/med_editor/framework/util/element-util.d.ts +410 -410
  91. package/med_editor/framework/vnode/editor-calendar-vnode.d.ts +42 -42
  92. package/package.json +19 -19
@@ -1,410 +1,410 @@
1
- import { EditorContext } from "../document-context";
2
- import { BranchElement, Element, LeafElement, Position, Rect, SelectionContentRange, ViewOptions } from "../element-define";
3
- import { HitRegion } from "../element-event-define";
4
- import { DataEleBaseProps, TextProps } from "../element-props";
5
- import { DataElementInlineGroup } from "../impl/data-element/data-element-base-impl";
6
- import { ParagraphElement, ParagraphLineRectRenderObject } from "../impl/paragraph/p-impl";
7
- import { TableCellRenderObject } from "../impl/table/table-cell-impl";
8
- import { TableElement, TableRenderObject } from "../impl/table/table-impl";
9
- import { TableRowRenderObject } from "../impl/table/table-row-impl";
10
- import { TextGroupElement, TextGroupRenderObject } from "../impl/text/text-impl";
11
- import { TrackRunElement, TrackRunTypeEnum } from "../impl/text/track-run-impl";
12
- import { BlockContainerRenderObject, BlockContentRenderObject, BorderType, BranchRenderObject, CursorType, InlineGroupRenderObject, LeafRenderObject, RenderObject } from "../render-define";
13
- declare type PAIR = {
14
- x: number;
15
- y: number;
16
- };
17
- export declare class ElementUtil {
18
- static setCanvasProps(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, viewOptions: {
19
- width: number;
20
- height: number;
21
- }): void;
22
- static getDpr(): number;
23
- static getDprNumber(val: number, scale?: number): number;
24
- static readTextProps(dest: TextProps | null, props: TextProps | undefined, options: ViewOptions): TextProps;
25
- static readEleBaseProps(dest: DataEleBaseProps, props: DataEleBaseProps): DataEleBaseProps;
26
- /**
27
- * 获取内容区域最大高度
28
- * @param render
29
- * @param renderHeight
30
- * @returns
31
- */
32
- static innerRectMaxHeight(render: RenderObject, renderHeight: number): number;
33
- /**
34
- * 根据内框内容高度,更新外框框体高度
35
- * @param render
36
- * @param innerRect
37
- */
38
- static updateRenderHeightByInnerRect(render: RenderObject, innerRect: Rect): void;
39
- /**
40
- * 克隆框体
41
- * @param rect
42
- * @returns
43
- */
44
- static cloneRect(rect: Rect): Rect;
45
- /**
46
- * 重新限定子元素以及当前高度值,并返回内边框内容高度
47
- * @param render
48
- * @param resetX 测量段落外框时,内框不需要重置x,因为内框已经存在对齐
49
- * @returns
50
- */
51
- static remeasure(render: BlockContainerRenderObject | BlockContentRenderObject, resetX?: boolean): number;
52
- static remeasureTableRow(rowRender: TableRowRenderObject, forceColIndex?: number): number;
53
- /**
54
- * 获取表格行绘制元素的内容高度,用于缩放行高度时,获取最小内容高度,缩放的高度不能小于内容最小高度
55
- */
56
- static getTableRowRenderContentHeight(rowRender: TableRowRenderObject): number;
57
- /**
58
- * 获取单元格内容高度
59
- * 单元格暂不处理上下margin、padding
60
- * @param cellRender
61
- * @returns
62
- */
63
- static getTableCellRenderContentHeight(cellRender: TableCellRenderObject): number;
64
- /**
65
- * 处理单元格内容纵向对齐
66
- * @param render
67
- */
68
- private static measureCellVAlign;
69
- /**
70
- * 设置横向排列方式
71
- * @private
72
- * @param render
73
- * @param limitRect
74
- */
75
- static setHorizontalAlign(render: RenderObject, limitRect: Rect): void;
76
- /**
77
- * 重新测量合并单元格高度
78
- * @param tbRender
79
- * @returns
80
- */
81
- static remeasureTableMerge(tbRender: TableRenderObject): void;
82
- /**
83
- * 获取向下纵向合并的行
84
- * @param render
85
- * @param rowIndex
86
- * @param colIndex
87
- * @returns
88
- */
89
- private static getContinueVMergeRenderRows;
90
- /**
91
- * 根据横向当前被合并的单元格
92
- * @param tb
93
- * @param rowIndex
94
- * @param colIndex
95
- */
96
- static getHorizontalRestartCellIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
97
- /**
98
- * 根据横向当前被合并的单元格
99
- * @param tb
100
- * @param rowIndex
101
- * @param colIndex
102
- */
103
- static getVerticalRestartCellIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
104
- /**
105
- * 获取合并单元格主单元格
106
- * @param tb
107
- * @param rowIndex
108
- * @param colIndex
109
- * @returns
110
- */
111
- static getRestartCellPosition(tb: TableElement, rowIndex: number, colIndex: number): {
112
- rowIndex: number;
113
- colIndex: number;
114
- };
115
- /**
116
- * 调整单元格高度填满整个行的高度
117
- */
118
- private static resizeCellToFillRow;
119
- /**
120
- * 获取元素的全局索引位置
121
- * @param control
122
- * @returns
123
- */
124
- static getControlIndex(control: Element): number;
125
- static getControlIndex(control: Element, pure: boolean): number;
126
- static getControlByIndex(control: Element, counter: {
127
- currIndex: number;
128
- index: number;
129
- }, pure: boolean): Element | null;
130
- /**
131
- * 获取元素的全局索引位置,不统计段落符号
132
- * @param pure
133
- * @param control
134
- * @returns
135
- */
136
- private static _getControlIndex;
137
- /**
138
- * 根据全局索引位置获取元素,不统计段落符号
139
- * @param control
140
- * @param counter
141
- * @returns
142
- */
143
- private static _getControlByIndex;
144
- /**
145
- * 获取同级紧挨前方的兄弟元素
146
- * @param element
147
- * @returns
148
- */
149
- static getPrevSiblingElement(element: Element): Element | null;
150
- /**
151
- * 获取同级紧挨下方的元素
152
- * @param element
153
- * @returns
154
- */
155
- static getNextSiblingElement(element: Element): Element | null;
156
- static getNextSiblingTrackElement(element: Element, type: TrackRunTypeEnum, userId: string): TrackRunElement | null;
157
- static getPrevSiblingTrackElement(element: Element, type: TrackRunTypeEnum, userId: string): TrackRunElement | null;
158
- /**
159
- * 根据默认配置创建长文本
160
- * @param viewOptions
161
- * @returns
162
- */
163
- static getNewTextGroup(textProps: TextProps): TextGroupElement;
164
- static createTextProps(dest: TextProps | null, viewOptions: ViewOptions): TextProps;
165
- /**
166
- * 获取容器内的最小渲染元素集合
167
- * @param parPos
168
- * @param array
169
- */
170
- static getAvailHitLeafRenderObjects(render: RenderObject, parPos: Position): Array<{
171
- render: LeafRenderObject;
172
- rect: Rect;
173
- }>;
174
- /**
175
- * 获取容器内的最小渲染元素集合
176
- * @param parPos
177
- * @param array
178
- */
179
- static getAvailHitRenderObjects(render: RenderObject, parPos: Position): Array<{
180
- render: RenderObject;
181
- rect: Rect;
182
- }>;
183
- /**
184
- * 获取绘制元素的绝对位置框
185
- */
186
- static getRenderObjectAbsoluteRect(render: RenderObject, parPos: Position): Rect;
187
- /**
188
- * 检查当前绘制元素是否属于有效点击元素
189
- */
190
- static checkAvailHitRender(render: RenderObject): boolean;
191
- /**
192
- * 验证点击可操作性
193
- * 主要限制页眉页脚的编辑模式
194
- */
195
- static verifyHitable(sourceElement: LeafElement | null | undefined): boolean;
196
- /**
197
- * 获取一个点到一个矩形最短的距离
198
- * @param rect
199
- * @param p
200
- * @returns
201
- */
202
- static getDistanceToRect(rect: Rect, p: Position): number;
203
- static minDistance(A: PAIR, B: PAIR, E: PAIR): number;
204
- /**
205
- * 获取父级层级渲染对象
206
- * @param render
207
- * @returns
208
- */
209
- static getParentRenders(render: RenderObject): Array<RenderObject>;
210
- static getRenderMapElements(render: RenderObject): Array<Element>;
211
- static getParentRender<T extends BranchRenderObject>(child: RenderObject, parentType: {
212
- new (...args: any): T;
213
- }): T | null;
214
- static getParentRenderByPredicate(child: RenderObject, predicate: (item: RenderObject) => boolean): RenderObject | null;
215
- /**
216
- * 获取父级层级元素对象
217
- * @param element
218
- * @returns
219
- */
220
- static getParentElements(element: Element | null | undefined): Array<Element>;
221
- /**
222
- * 获取最后一个子元素
223
- * @param element
224
- * @returns
225
- */
226
- static getLastLeafElement(element: Element, predicate?: null | ((item: Element) => boolean)): LeafElement | null;
227
- /**
228
- * 获取第一个子元素
229
- * @param element
230
- * @returns
231
- */
232
- static getFirstLeafElement(element: Element): LeafElement | null;
233
- /**
234
- * 校验两个元素是否在同一个段落中
235
- * @param element1
236
- * @param element2
237
- */
238
- static isInSameParagraph(element1: Element, element2: Element): boolean;
239
- static getBorderCursor(borderType: BorderType): CursorType;
240
- static getParentByType<P extends Element, T>(child: P | null, parentType: {
241
- new (...args: any): T;
242
- }): T | null;
243
- static getParent(child: Element | null, predicate: (item: Element) => boolean): Element | null;
244
- /**
245
- * 修正段落内容
246
- * @returns
247
- */
248
- static fixParagraphContent(control: ParagraphElement): void;
249
- /**
250
- * 获取绘制元素相对于整个画布的绝对位置
251
- * 整个画布绘制的时候不一定从x=0,y=0时绘制的,下拉滚动时,上面从负y坐标开始绘制
252
- * 如果计算某个元素相对画布的左上角的绝对坐标位置,需要childPos的y值减去translateY
253
- * @param render
254
- * @param refPos 参照位置
255
- * @returns
256
- */
257
- static getRenderAbsolutePaintPos(render: RenderObject, refPos?: Position | null): Position;
258
- static getRenderAbsolutePaintRect(render: RenderObject, childPos?: Position | null): Rect;
259
- /**
260
- * 获取选中区域的开始区域
261
- * @param range
262
- * @returns
263
- */
264
- static getFirstSelectedRange(range: SelectionContentRange): SelectionContentRange;
265
- /**
266
- * 获取选中区域的开始区域
267
- * @param range \
268
- * @returns
269
- */
270
- static getLastSelectedRange(range: SelectionContentRange): SelectionContentRange;
271
- /**
272
- * 克隆选区内容
273
- * @param range
274
- * @param isDelete
275
- * @returns
276
- */
277
- static cloneRange(range: SelectionContentRange, isDelete: boolean, cloneMode?: 'clone' | 'source' | 'copy'): Element | null;
278
- /**
279
- * 获取所有的子级元素
280
- * @param branchEle
281
- * @returns
282
- */
283
- static getChildrenElements(branchEle: BranchElement): Array<Element>;
284
- /**
285
- * 递归向前寻找最近的元素
286
- * @param currElement
287
- * @param inPara 是否在同一段落中寻找
288
- * @param forCursor 查找结果是否用于光标定位
289
- * @param viewOptions
290
- * @returns
291
- */
292
- static getRecursionPrevSiblingElement(currElement: Element | null, inPara: boolean | undefined, forCursor: boolean | undefined, viewOptions: ViewOptions): LeafElement | null;
293
- /**
294
- * 循环向前寻找可定位的数据元
295
- * @param currElement
296
- */
297
- static getPrevDataElement(ctx: EditorContext, currElement: DataElementInlineGroup): DataElementInlineGroup | null;
298
- /**
299
- * 递归向后寻找最近的元素
300
- */
301
- static getRecursionNextSiblingElement(currElement: Element | null, inPara: boolean | undefined, forCursor: boolean | undefined, viewOptions: ViewOptions): LeafElement | null;
302
- /**
303
- * 获取行内最大渲染单元格高度,主要处理纵向合并单元格问题
304
- * @param row
305
- * @returns
306
- */
307
- static getRowMaxCellHeight(row: TableRowRenderObject): number;
308
- /**
309
- * 校验是否为空内容
310
- * @param ele
311
- */
312
- static checkEmptyRenderContent(ele: BranchRenderObject): boolean;
313
- /**
314
- * 测量行内编组元素
315
- * @param render
316
- */
317
- static remeasureInlineGroupRender(render: InlineGroupRenderObject): void;
318
- static getParaLinePos(childRender: RenderObject, childRenderPos: Position): Rect;
319
- static getParentRenderPos(parentRender: RenderObject, childRender: RenderObject, childRenderPos: Position): Rect;
320
- /**
321
- * 获取绘制元素所在的区域
322
- */
323
- static getRenderObjectRegion(render: RenderObject): HitRegion | undefined;
324
- /**
325
- * 获取文档元素所在的区域
326
- * @param element
327
- * @returns
328
- */
329
- static getElementRegion(element: Element): HitRegion | undefined;
330
- static getElementRegionTarget(element: Element | null): {
331
- type: HitRegion;
332
- target: BranchElement;
333
- } | null;
334
- /**
335
- * 根据坐标系统偏移位获取所在的文本偏移位置
336
- * @param textRender
337
- * @param x
338
- * @returns
339
- */
340
- static getTextRenderOffset(textRender: TextGroupRenderObject, x: number): number;
341
- static getHitRenderOffset(render: LeafRenderObject, x: number): number;
342
- static getTextRenderHorX(currRender: TextGroupRenderObject, startOffset: number, endOffset: number): {
343
- startX: number;
344
- endX: number;
345
- };
346
- /**
347
- * 获取一个元素结尾偏移量
348
- * 文本以字符长度进行确定
349
- * @param ele
350
- * @returns
351
- */
352
- static getElementEndOffset(ele: LeafElement): number;
353
- /**
354
- * 判断当前偏移量是否是最终偏移量
355
- * @param ele
356
- * @param offset
357
- */
358
- static isElementEndOffset(ele: LeafElement, offset: number): boolean;
359
- /**
360
- * 获取直接子节点的所有渲染元素
361
- * @param ele
362
- * @returns
363
- */
364
- static getChildRenders<T extends RenderObject>(ele: BranchRenderObject): Array<T>;
365
- /**
366
- * 获取当前单元格内所有的段落行
367
- * @param cell
368
- * @returns
369
- */
370
- static getCellParaLines(cell: TableCellRenderObject): Array<ParagraphLineRectRenderObject>;
371
- static getRandomColor(seed: number): string;
372
- static getSeedRandom(seed: number): number;
373
- static findChildRender(render: BranchRenderObject, predicate: (child: RenderObject) => boolean): RenderObject | null;
374
- /**
375
- * 向上查找类型为数据元的父级
376
- * @param ele
377
- * @returns
378
- */
379
- static getDataElement(ele: Element): DataElementInlineGroup | null;
380
- static getOSPlatform(): 'Windows' | 'Mac' | 'Linux';
381
- static getCheckboxPath(x: number, y: number, width: number, height: number): Array<Position>;
382
- static getStrokeSvgPath(pathPoints: Array<Position> | string, stroke: string, width: number): any;
383
- static createLine(x1: number, y1: number, x2: number, y2: number, stroke: string, width: number): any;
384
- static getRectPath(x: number, y: number, width: number, height: number): string;
385
- static getFillSvgPath(pathPoints: Array<Position> | string, fill: string, width: number): any;
386
- static createSvgLine(attrs: any): any;
387
- static createSvgPath(attrs: any): any;
388
- static getFillSvgRect(x: number, y: number, width: number, height: number, fill: string): any;
389
- static getMousePos(e: MouseEvent, scale?: number): Position;
390
- static createSvgEle(sel: string, attrs: any, children?: Array<any>): any;
391
- static createSvgText(text: string, attrs: any): any;
392
- static createClipPath(id: string, width: number, height: number, x?: number, y?: number): any;
393
- /**
394
- * 判断是否光标可以设置接受编辑
395
- * @returns
396
- */
397
- static canSetCursor(startControl: LeafElement, startOffset: number, editable: boolean, viewOptions: ViewOptions): boolean;
398
- static fixedOffset(control: LeafElement, offset: number): number;
399
- /**
400
- * 设置光标在数据元内容末尾
401
- */
402
- static setDataElemEndFocus(ss: {
403
- resetRange: (ele: any, offset: any) => void;
404
- }, ele: DataElementInlineGroup): void;
405
- static setEleAttribute(ele: Element, attr: string, value: any): void;
406
- static getEleAttribute(ele: Element, attr: string): any;
407
- static removeEleAttribute(ele: Element, attr: string): void;
408
- static getMatchItems(item: Element, predicate: (item: Element) => boolean): Element<any>[];
409
- }
410
- export {};
1
+ import { EditorContext } from "../document-context";
2
+ import { BranchElement, Element, LeafElement, Position, Rect, SelectionContentRange, ViewOptions } from "../element-define";
3
+ import { HitRegion } from "../element-event-define";
4
+ import { DataEleBaseProps, TextProps } from "../element-props";
5
+ import { DataElementInlineGroup } from "../impl/data-element/data-element-base-impl";
6
+ import { ParagraphElement, ParagraphLineRectRenderObject } from "../impl/paragraph/p-impl";
7
+ import { TableCellRenderObject } from "../impl/table/table-cell-impl";
8
+ import { TableElement, TableRenderObject } from "../impl/table/table-impl";
9
+ import { TableRowRenderObject } from "../impl/table/table-row-impl";
10
+ import { TextGroupElement, TextGroupRenderObject } from "../impl/text/text-impl";
11
+ import { TrackRunElement, TrackRunTypeEnum } from "../impl/text/track-run-impl";
12
+ import { BlockContainerRenderObject, BlockContentRenderObject, BorderType, BranchRenderObject, CursorType, InlineGroupRenderObject, LeafRenderObject, RenderObject } from "../render-define";
13
+ declare type PAIR = {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ export declare class ElementUtil {
18
+ static setCanvasProps(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, viewOptions: {
19
+ width: number;
20
+ height: number;
21
+ }): void;
22
+ static getDpr(): number;
23
+ static getDprNumber(val: number, scale?: number): number;
24
+ static readTextProps(dest: TextProps | null, props: TextProps | undefined, options: ViewOptions): TextProps;
25
+ static readEleBaseProps(dest: DataEleBaseProps, props: DataEleBaseProps): DataEleBaseProps;
26
+ /**
27
+ * 获取内容区域最大高度
28
+ * @param render
29
+ * @param renderHeight
30
+ * @returns
31
+ */
32
+ static innerRectMaxHeight(render: RenderObject, renderHeight: number): number;
33
+ /**
34
+ * 根据内框内容高度,更新外框框体高度
35
+ * @param render
36
+ * @param innerRect
37
+ */
38
+ static updateRenderHeightByInnerRect(render: RenderObject, innerRect: Rect): void;
39
+ /**
40
+ * 克隆框体
41
+ * @param rect
42
+ * @returns
43
+ */
44
+ static cloneRect(rect: Rect): Rect;
45
+ /**
46
+ * 重新限定子元素以及当前高度值,并返回内边框内容高度
47
+ * @param render
48
+ * @param resetX 测量段落外框时,内框不需要重置x,因为内框已经存在对齐
49
+ * @returns
50
+ */
51
+ static remeasure(render: BlockContainerRenderObject | BlockContentRenderObject, resetX?: boolean): number;
52
+ static remeasureTableRow(rowRender: TableRowRenderObject, forceColIndex?: number): number;
53
+ /**
54
+ * 获取表格行绘制元素的内容高度,用于缩放行高度时,获取最小内容高度,缩放的高度不能小于内容最小高度
55
+ */
56
+ static getTableRowRenderContentHeight(rowRender: TableRowRenderObject): number;
57
+ /**
58
+ * 获取单元格内容高度
59
+ * 单元格暂不处理上下margin、padding
60
+ * @param cellRender
61
+ * @returns
62
+ */
63
+ static getTableCellRenderContentHeight(cellRender: TableCellRenderObject): number;
64
+ /**
65
+ * 处理单元格内容纵向对齐
66
+ * @param render
67
+ */
68
+ private static measureCellVAlign;
69
+ /**
70
+ * 设置横向排列方式
71
+ * @private
72
+ * @param render
73
+ * @param limitRect
74
+ */
75
+ static setHorizontalAlign(render: RenderObject, limitRect: Rect): void;
76
+ /**
77
+ * 重新测量合并单元格高度
78
+ * @param tbRender
79
+ * @returns
80
+ */
81
+ static remeasureTableMerge(tbRender: TableRenderObject): void;
82
+ /**
83
+ * 获取向下纵向合并的行
84
+ * @param render
85
+ * @param rowIndex
86
+ * @param colIndex
87
+ * @returns
88
+ */
89
+ private static getContinueVMergeRenderRows;
90
+ /**
91
+ * 根据横向当前被合并的单元格
92
+ * @param tb
93
+ * @param rowIndex
94
+ * @param colIndex
95
+ */
96
+ static getHorizontalRestartCellIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
97
+ /**
98
+ * 根据横向当前被合并的单元格
99
+ * @param tb
100
+ * @param rowIndex
101
+ * @param colIndex
102
+ */
103
+ static getVerticalRestartCellIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
104
+ /**
105
+ * 获取合并单元格主单元格
106
+ * @param tb
107
+ * @param rowIndex
108
+ * @param colIndex
109
+ * @returns
110
+ */
111
+ static getRestartCellPosition(tb: TableElement, rowIndex: number, colIndex: number): {
112
+ rowIndex: number;
113
+ colIndex: number;
114
+ };
115
+ /**
116
+ * 调整单元格高度填满整个行的高度
117
+ */
118
+ private static resizeCellToFillRow;
119
+ /**
120
+ * 获取元素的全局索引位置
121
+ * @param control
122
+ * @returns
123
+ */
124
+ static getControlIndex(control: Element): number;
125
+ static getControlIndex(control: Element, pure: boolean): number;
126
+ static getControlByIndex(control: Element, counter: {
127
+ currIndex: number;
128
+ index: number;
129
+ }, pure: boolean): Element | null;
130
+ /**
131
+ * 获取元素的全局索引位置,不统计段落符号
132
+ * @param pure
133
+ * @param control
134
+ * @returns
135
+ */
136
+ private static _getControlIndex;
137
+ /**
138
+ * 根据全局索引位置获取元素,不统计段落符号
139
+ * @param control
140
+ * @param counter
141
+ * @returns
142
+ */
143
+ private static _getControlByIndex;
144
+ /**
145
+ * 获取同级紧挨前方的兄弟元素
146
+ * @param element
147
+ * @returns
148
+ */
149
+ static getPrevSiblingElement(element: Element): Element | null;
150
+ /**
151
+ * 获取同级紧挨下方的元素
152
+ * @param element
153
+ * @returns
154
+ */
155
+ static getNextSiblingElement(element: Element): Element | null;
156
+ static getNextSiblingTrackElement(element: Element, type: TrackRunTypeEnum, userId: string): TrackRunElement | null;
157
+ static getPrevSiblingTrackElement(element: Element, type: TrackRunTypeEnum, userId: string): TrackRunElement | null;
158
+ /**
159
+ * 根据默认配置创建长文本
160
+ * @param viewOptions
161
+ * @returns
162
+ */
163
+ static getNewTextGroup(textProps: TextProps): TextGroupElement;
164
+ static createTextProps(dest: TextProps | null, viewOptions: ViewOptions): TextProps;
165
+ /**
166
+ * 获取容器内的最小渲染元素集合
167
+ * @param parPos
168
+ * @param array
169
+ */
170
+ static getAvailHitLeafRenderObjects(render: RenderObject, parPos: Position): Array<{
171
+ render: LeafRenderObject;
172
+ rect: Rect;
173
+ }>;
174
+ /**
175
+ * 获取容器内的最小渲染元素集合
176
+ * @param parPos
177
+ * @param array
178
+ */
179
+ static getAvailHitRenderObjects(render: RenderObject, parPos: Position): Array<{
180
+ render: RenderObject;
181
+ rect: Rect;
182
+ }>;
183
+ /**
184
+ * 获取绘制元素的绝对位置框
185
+ */
186
+ static getRenderObjectAbsoluteRect(render: RenderObject, parPos: Position): Rect;
187
+ /**
188
+ * 检查当前绘制元素是否属于有效点击元素
189
+ */
190
+ static checkAvailHitRender(render: RenderObject): boolean;
191
+ /**
192
+ * 验证点击可操作性
193
+ * 主要限制页眉页脚的编辑模式
194
+ */
195
+ static verifyHitable(sourceElement: LeafElement | null | undefined): boolean;
196
+ /**
197
+ * 获取一个点到一个矩形最短的距离
198
+ * @param rect
199
+ * @param p
200
+ * @returns
201
+ */
202
+ static getDistanceToRect(rect: Rect, p: Position): number;
203
+ static minDistance(A: PAIR, B: PAIR, E: PAIR): number;
204
+ /**
205
+ * 获取父级层级渲染对象
206
+ * @param render
207
+ * @returns
208
+ */
209
+ static getParentRenders(render: RenderObject): Array<RenderObject>;
210
+ static getRenderMapElements(render: RenderObject): Array<Element>;
211
+ static getParentRender<T extends BranchRenderObject>(child: RenderObject, parentType: {
212
+ new (...args: any): T;
213
+ }): T | null;
214
+ static getParentRenderByPredicate(child: RenderObject, predicate: (item: RenderObject) => boolean): RenderObject | null;
215
+ /**
216
+ * 获取父级层级元素对象
217
+ * @param element
218
+ * @returns
219
+ */
220
+ static getParentElements(element: Element | null | undefined): Array<Element>;
221
+ /**
222
+ * 获取最后一个子元素
223
+ * @param element
224
+ * @returns
225
+ */
226
+ static getLastLeafElement(element: Element, predicate?: null | ((item: Element) => boolean)): LeafElement | null;
227
+ /**
228
+ * 获取第一个子元素
229
+ * @param element
230
+ * @returns
231
+ */
232
+ static getFirstLeafElement(element: Element): LeafElement | null;
233
+ /**
234
+ * 校验两个元素是否在同一个段落中
235
+ * @param element1
236
+ * @param element2
237
+ */
238
+ static isInSameParagraph(element1: Element, element2: Element): boolean;
239
+ static getBorderCursor(borderType: BorderType): CursorType;
240
+ static getParentByType<P extends Element, T>(child: P | null, parentType: {
241
+ new (...args: any): T;
242
+ }): T | null;
243
+ static getParent(child: Element | null, predicate: (item: Element) => boolean): Element | null;
244
+ /**
245
+ * 修正段落内容
246
+ * @returns
247
+ */
248
+ static fixParagraphContent(control: ParagraphElement): void;
249
+ /**
250
+ * 获取绘制元素相对于整个画布的绝对位置
251
+ * 整个画布绘制的时候不一定从x=0,y=0时绘制的,下拉滚动时,上面从负y坐标开始绘制
252
+ * 如果计算某个元素相对画布的左上角的绝对坐标位置,需要childPos的y值减去translateY
253
+ * @param render
254
+ * @param refPos 参照位置
255
+ * @returns
256
+ */
257
+ static getRenderAbsolutePaintPos(render: RenderObject, refPos?: Position | null): Position;
258
+ static getRenderAbsolutePaintRect(render: RenderObject, childPos?: Position | null): Rect;
259
+ /**
260
+ * 获取选中区域的开始区域
261
+ * @param range
262
+ * @returns
263
+ */
264
+ static getFirstSelectedRange(range: SelectionContentRange): SelectionContentRange;
265
+ /**
266
+ * 获取选中区域的开始区域
267
+ * @param range \
268
+ * @returns
269
+ */
270
+ static getLastSelectedRange(range: SelectionContentRange): SelectionContentRange;
271
+ /**
272
+ * 克隆选区内容
273
+ * @param range
274
+ * @param isDelete
275
+ * @returns
276
+ */
277
+ static cloneRange(range: SelectionContentRange, isDelete: boolean, cloneMode?: 'clone' | 'source' | 'copy'): Element | null;
278
+ /**
279
+ * 获取所有的子级元素
280
+ * @param branchEle
281
+ * @returns
282
+ */
283
+ static getChildrenElements(branchEle: BranchElement): Array<Element>;
284
+ /**
285
+ * 递归向前寻找最近的元素
286
+ * @param currElement
287
+ * @param inPara 是否在同一段落中寻找
288
+ * @param forCursor 查找结果是否用于光标定位
289
+ * @param viewOptions
290
+ * @returns
291
+ */
292
+ static getRecursionPrevSiblingElement(currElement: Element | null, inPara: boolean | undefined, forCursor: boolean | undefined, viewOptions: ViewOptions): LeafElement | null;
293
+ /**
294
+ * 循环向前寻找可定位的数据元
295
+ * @param currElement
296
+ */
297
+ static getPrevDataElement(ctx: EditorContext, currElement: DataElementInlineGroup): DataElementInlineGroup | null;
298
+ /**
299
+ * 递归向后寻找最近的元素
300
+ */
301
+ static getRecursionNextSiblingElement(currElement: Element | null, inPara: boolean | undefined, forCursor: boolean | undefined, viewOptions: ViewOptions): LeafElement | null;
302
+ /**
303
+ * 获取行内最大渲染单元格高度,主要处理纵向合并单元格问题
304
+ * @param row
305
+ * @returns
306
+ */
307
+ static getRowMaxCellHeight(row: TableRowRenderObject): number;
308
+ /**
309
+ * 校验是否为空内容
310
+ * @param ele
311
+ */
312
+ static checkEmptyRenderContent(ele: BranchRenderObject): boolean;
313
+ /**
314
+ * 测量行内编组元素
315
+ * @param render
316
+ */
317
+ static remeasureInlineGroupRender(render: InlineGroupRenderObject): void;
318
+ static getParaLinePos(childRender: RenderObject, childRenderPos: Position): Rect;
319
+ static getParentRenderPos(parentRender: RenderObject, childRender: RenderObject, childRenderPos: Position): Rect;
320
+ /**
321
+ * 获取绘制元素所在的区域
322
+ */
323
+ static getRenderObjectRegion(render: RenderObject): HitRegion | undefined;
324
+ /**
325
+ * 获取文档元素所在的区域
326
+ * @param element
327
+ * @returns
328
+ */
329
+ static getElementRegion(element: Element): HitRegion | undefined;
330
+ static getElementRegionTarget(element: Element | null): {
331
+ type: HitRegion;
332
+ target: BranchElement;
333
+ } | null;
334
+ /**
335
+ * 根据坐标系统偏移位获取所在的文本偏移位置
336
+ * @param textRender
337
+ * @param x
338
+ * @returns
339
+ */
340
+ static getTextRenderOffset(textRender: TextGroupRenderObject, x: number): number;
341
+ static getHitRenderOffset(render: LeafRenderObject, x: number): number;
342
+ static getTextRenderHorX(currRender: TextGroupRenderObject, startOffset: number, endOffset: number): {
343
+ startX: number;
344
+ endX: number;
345
+ };
346
+ /**
347
+ * 获取一个元素结尾偏移量
348
+ * 文本以字符长度进行确定
349
+ * @param ele
350
+ * @returns
351
+ */
352
+ static getElementEndOffset(ele: LeafElement): number;
353
+ /**
354
+ * 判断当前偏移量是否是最终偏移量
355
+ * @param ele
356
+ * @param offset
357
+ */
358
+ static isElementEndOffset(ele: LeafElement, offset: number): boolean;
359
+ /**
360
+ * 获取直接子节点的所有渲染元素
361
+ * @param ele
362
+ * @returns
363
+ */
364
+ static getChildRenders<T extends RenderObject>(ele: BranchRenderObject): Array<T>;
365
+ /**
366
+ * 获取当前单元格内所有的段落行
367
+ * @param cell
368
+ * @returns
369
+ */
370
+ static getCellParaLines(cell: TableCellRenderObject): Array<ParagraphLineRectRenderObject>;
371
+ static getRandomColor(seed: number): string;
372
+ static getSeedRandom(seed: number): number;
373
+ static findChildRender(render: BranchRenderObject, predicate: (child: RenderObject) => boolean): RenderObject | null;
374
+ /**
375
+ * 向上查找类型为数据元的父级
376
+ * @param ele
377
+ * @returns
378
+ */
379
+ static getDataElement(ele: Element): DataElementInlineGroup | null;
380
+ static getOSPlatform(): 'Windows' | 'Mac' | 'Linux';
381
+ static getCheckboxPath(x: number, y: number, width: number, height: number): Array<Position>;
382
+ static getStrokeSvgPath(pathPoints: Array<Position> | string, stroke: string, width: number): any;
383
+ static createLine(x1: number, y1: number, x2: number, y2: number, stroke: string, width: number): any;
384
+ static getRectPath(x: number, y: number, width: number, height: number): string;
385
+ static getFillSvgPath(pathPoints: Array<Position> | string, fill: string, width: number): any;
386
+ static createSvgLine(attrs: any): any;
387
+ static createSvgPath(attrs: any): any;
388
+ static getFillSvgRect(x: number, y: number, width: number, height: number, fill: string): any;
389
+ static getMousePos(e: MouseEvent, scale?: number): Position;
390
+ static createSvgEle(sel: string, attrs: any, children?: Array<any>): any;
391
+ static createSvgText(text: string, attrs: any): any;
392
+ static createClipPath(id: string, width: number, height: number, x?: number, y?: number): any;
393
+ /**
394
+ * 判断是否光标可以设置接受编辑
395
+ * @returns
396
+ */
397
+ static canSetCursor(startControl: LeafElement, startOffset: number, editable: boolean, viewOptions: ViewOptions): boolean;
398
+ static fixedOffset(control: LeafElement, offset: number): number;
399
+ /**
400
+ * 设置光标在数据元内容末尾
401
+ */
402
+ static setDataElemEndFocus(ss: {
403
+ resetRange: (ele: any, offset: any) => void;
404
+ }, ele: DataElementInlineGroup): void;
405
+ static setEleAttribute(ele: Element, attr: string, value: any): void;
406
+ static getEleAttribute(ele: Element, attr: string): any;
407
+ static removeEleAttribute(ele: Element, attr: string): void;
408
+ static getMatchItems(item: Element, predicate: (item: Element) => boolean): Element<any>[];
409
+ }
410
+ export {};