@hufe921/canvas-editor 1.0.5 → 1.1.0

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 (102) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +9 -8
  3. package/dist/assets/catalog-ezAM0r6o.js.map +1 -0
  4. package/dist/assets/group-BZtj1M7o.js.map +1 -1
  5. package/dist/assets/value-DKLIEqC1.js.map +1 -0
  6. package/dist/assets/wordCount-xSvDqE7d.js.map +1 -0
  7. package/dist/canvas-editor.js +4786 -2873
  8. package/dist/canvas-editor.js.map +1 -1
  9. package/dist/canvas-editor.umd.cjs +42 -42
  10. package/dist/canvas-editor.umd.cjs.map +1 -1
  11. package/dist/src/editor/core/command/Command.d.ts +9 -0
  12. package/dist/src/editor/core/command/CommandAdapt.d.ts +11 -2
  13. package/dist/src/editor/core/contextmenu/ContextMenu.d.ts +7 -0
  14. package/dist/src/editor/core/draw/Draw.d.ts +21 -10
  15. package/dist/src/editor/core/draw/column/ColumnManager.d.ts +2 -1
  16. package/dist/src/editor/core/draw/control/Control.d.ts +3 -2
  17. package/dist/src/editor/core/draw/control/interactive/ControlSearch.d.ts +2 -1
  18. package/dist/src/editor/core/draw/control/richtext/Border.d.ts +2 -1
  19. package/dist/src/editor/core/draw/frame/Background.d.ts +2 -1
  20. package/dist/src/editor/core/draw/frame/Badge.d.ts +3 -1
  21. package/dist/src/editor/core/draw/frame/Footer.d.ts +2 -1
  22. package/dist/src/editor/core/draw/frame/Header.d.ts +2 -1
  23. package/dist/src/editor/core/draw/frame/LineNumber.d.ts +2 -1
  24. package/dist/src/editor/core/draw/frame/Margin.d.ts +2 -1
  25. package/dist/src/editor/core/draw/frame/PageBorder.d.ts +2 -1
  26. package/dist/src/editor/core/draw/frame/PageNumber.d.ts +2 -1
  27. package/dist/src/editor/core/draw/frame/Placeholder.d.ts +2 -1
  28. package/dist/src/editor/core/draw/frame/Watermark.d.ts +4 -3
  29. package/dist/src/editor/core/draw/graffiti/Graffiti.d.ts +2 -1
  30. package/dist/src/editor/core/draw/interactive/Area.d.ts +14 -1
  31. package/dist/src/editor/core/draw/interactive/AreaTool.d.ts +18 -0
  32. package/dist/src/editor/core/draw/interactive/Group.d.ts +2 -1
  33. package/dist/src/editor/core/draw/interactive/Search.d.ts +2 -1
  34. package/dist/src/editor/core/draw/interactive/Spellcheck.d.ts +2 -1
  35. package/dist/src/editor/core/draw/particle/CheckboxParticle.d.ts +2 -1
  36. package/dist/src/editor/core/draw/particle/HyperlinkParticle.d.ts +2 -1
  37. package/dist/src/editor/core/draw/particle/ImageParticle.d.ts +3 -1
  38. package/dist/src/editor/core/draw/particle/LabelParticle.d.ts +2 -1
  39. package/dist/src/editor/core/draw/particle/LineBreakParticle.d.ts +2 -1
  40. package/dist/src/editor/core/draw/particle/ListParticle.d.ts +2 -1
  41. package/dist/src/editor/core/draw/particle/PageBreakParticle.d.ts +2 -1
  42. package/dist/src/editor/core/draw/particle/RadioParticle.d.ts +2 -1
  43. package/dist/src/editor/core/draw/particle/SeparatorParticle.d.ts +2 -1
  44. package/dist/src/editor/core/draw/particle/SubscriptParticle.d.ts +2 -1
  45. package/dist/src/editor/core/draw/particle/SuperscriptParticle.d.ts +2 -1
  46. package/dist/src/editor/core/draw/particle/TextParticle.d.ts +8 -2
  47. package/dist/src/editor/core/draw/particle/TraceParticle.d.ts +3 -2
  48. package/dist/src/editor/core/draw/particle/WhiteSpaceParticle.d.ts +2 -1
  49. package/dist/src/editor/core/draw/particle/block/BlockParticle.d.ts +3 -1
  50. package/dist/src/editor/core/draw/particle/block/modules/BaseBlock.d.ts +2 -1
  51. package/dist/src/editor/core/draw/particle/block/modules/VideoBlock.d.ts +2 -1
  52. package/dist/src/editor/core/draw/particle/date/DatePicker.d.ts +1 -0
  53. package/dist/src/editor/core/draw/particle/latex/LaTexParticle.d.ts +6 -1
  54. package/dist/src/editor/core/draw/particle/table/TableOperate.d.ts +2 -0
  55. package/dist/src/editor/core/draw/particle/table/TableParticle.d.ts +3 -2
  56. package/dist/src/editor/core/draw/richtext/AbstractRichText.d.ts +3 -2
  57. package/dist/src/editor/core/draw/richtext/Highlight.d.ts +2 -1
  58. package/dist/src/editor/core/draw/richtext/Strikeout.d.ts +2 -1
  59. package/dist/src/editor/core/draw/richtext/Underline.d.ts +2 -1
  60. package/dist/src/editor/core/draw/ruler/Ruler.d.ts +31 -2
  61. package/dist/src/editor/core/event/GlobalEvent.d.ts +1 -0
  62. package/dist/src/editor/core/event/pagePointer.d.ts +8 -0
  63. package/dist/src/editor/core/layout/LayoutEngine.d.ts +31 -0
  64. package/dist/src/editor/core/layout/TextMeasurer.d.ts +10 -0
  65. package/dist/src/editor/core/range/RangeManager.d.ts +2 -1
  66. package/dist/src/editor/core/render/BackendFactory.d.ts +3 -0
  67. package/dist/src/editor/core/render/RenderBackend.d.ts +24 -0
  68. package/dist/src/editor/core/render/canvas/CanvasBackend.d.ts +19 -0
  69. package/dist/src/editor/core/render/canvas/CanvasRenderer.d.ts +5 -0
  70. package/dist/src/editor/core/render/canvas/CanvasSurface.d.ts +17 -0
  71. package/dist/src/editor/core/render/model/DisplayList.d.ts +62 -0
  72. package/dist/src/editor/core/render/model/RenderContext.d.ts +48 -0
  73. package/dist/src/editor/core/render/svg/SvgBackend.d.ts +22 -0
  74. package/dist/src/editor/core/render/svg/SvgRenderer.d.ts +9 -0
  75. package/dist/src/editor/core/render/svg/SvgSurface.d.ts +13 -0
  76. package/dist/src/editor/core/render/svg/scene/PathCompiler.d.ts +16 -0
  77. package/dist/src/editor/core/render/svg/scene/ResourceKey.d.ts +7 -0
  78. package/dist/src/editor/core/render/svg/scene/SceneCompiler.d.ts +9 -0
  79. package/dist/src/editor/core/render/svg/scene/SceneKey.d.ts +28 -0
  80. package/dist/src/editor/core/render/svg/scene/SceneNode.d.ts +20 -0
  81. package/dist/src/editor/core/render/svg/scene/SceneReconciler.d.ts +12 -0
  82. package/dist/src/editor/core/render/svg/scene/SvgNodeFactory.d.ts +14 -0
  83. package/dist/src/editor/dataset/constant/Common.d.ts +1 -0
  84. package/dist/src/editor/dataset/enum/Common.d.ts +4 -0
  85. package/dist/src/editor/dataset/enum/Editor.d.ts +4 -0
  86. package/dist/src/editor/dataset/enum/TabStop.d.ts +11 -0
  87. package/dist/src/editor/index.d.ts +6 -5
  88. package/dist/src/editor/interface/Area.d.ts +8 -0
  89. package/dist/src/editor/interface/Checkbox.d.ts +3 -0
  90. package/dist/src/editor/interface/Control.d.ts +2 -1
  91. package/dist/src/editor/interface/Draw.d.ts +4 -0
  92. package/dist/src/editor/interface/Editor.d.ts +6 -0
  93. package/dist/src/editor/interface/Element.d.ts +12 -0
  94. package/dist/src/editor/interface/Listener.d.ts +7 -1
  95. package/dist/src/editor/interface/Row.d.ts +12 -0
  96. package/dist/src/editor/interface/table/Td.d.ts +2 -0
  97. package/dist/src/editor/utils/element.d.ts +1 -0
  98. package/dist/src/editor/utils/print.d.ts +1 -0
  99. package/package.json +14 -13
  100. package/dist/assets/catalog-B-cbxN0s.js.map +0 -1
  101. package/dist/assets/value-CLcLo2uw.js.map +0 -1
  102. package/dist/assets/wordCount-BWZRHbSB.js.map +0 -1
@@ -33,6 +33,12 @@ export declare class Command {
33
33
  executeList: CommandAdapt['list'];
34
34
  executeRowFlex: CommandAdapt['rowFlex'];
35
35
  executeRowMargin: CommandAdapt['rowMargin'];
36
+ executeSpacingBefore: CommandAdapt['spacingBefore'];
37
+ executeSpacingAfter: CommandAdapt['spacingAfter'];
38
+ executeIndentLeft: CommandAdapt['indentLeft'];
39
+ executeIndentRight: CommandAdapt['indentRight'];
40
+ executeIndentFirstLine: CommandAdapt['indentFirstLine'];
41
+ executeSetTabStops: CommandAdapt['setTabStops'];
36
42
  executeInsertTable: CommandAdapt['insertTable'];
37
43
  executeInsertTableTopRow: CommandAdapt['insertTableTopRow'];
38
44
  executeInsertTableBottomRow: CommandAdapt['insertTableBottomRow'];
@@ -49,6 +55,8 @@ export declare class Command {
49
55
  executeTableBorderType: CommandAdapt['tableBorderType'];
50
56
  executeTableBorderColor: CommandAdapt['tableBorderColor'];
51
57
  executeTableTdBorderType: CommandAdapt['tableTdBorderType'];
58
+ executeTableTdBorderColor: CommandAdapt['tableTdBorderColor'];
59
+ executeTableTdBorderWidth: CommandAdapt['tableTdBorderWidth'];
52
60
  executeTableTdSlashType: CommandAdapt['tableTdSlashType'];
53
61
  executeTableTdBackgroundColor: CommandAdapt['tableTdBackgroundColor'];
54
62
  executeTableAutoFitToContent: CommandAdapt['tableAutoFitToContent'];
@@ -123,6 +131,7 @@ export declare class Command {
123
131
  executeInsertControl: CommandAdapt['insertControl'];
124
132
  executeJumpControl: CommandAdapt['jumpControl'];
125
133
  executeUpdateOptions: CommandAdapt['updateOptions'];
134
+ executeSetBackend: CommandAdapt['setBackend'];
126
135
  executeInsertTitle: CommandAdapt['insertTitle'];
127
136
  executeFocus: CommandAdapt['focus'];
128
137
  executeComputeElementListHeight: CommandAdapt['computeElementListHeight'];
@@ -1,5 +1,5 @@
1
1
  import { ImageDisplay } from '../../dataset/enum/Common';
2
- import { EditorMode, EditorZone, PageMode, PaperDirection } from '../../dataset/enum/Editor';
2
+ import { BackendType, EditorMode, EditorZone, PageMode, PaperDirection } from '../../dataset/enum/Editor';
3
3
  import { ListStyle, ListType } from '../../dataset/enum/List';
4
4
  import { MoveDirection } from '../../dataset/enum/Observer';
5
5
  import { RowFlex } from '../../dataset/enum/Row';
@@ -13,7 +13,7 @@ import { IControlValidateResult, IGetControlValueOption, IGetControlValueResult,
13
13
  import { IAppendElementListOption, IDrawImagePayload, IForceUpdateOption, IGetImageOption, IGetValueOption, IPainterOption } from '../../interface/Draw';
14
14
  import { IEditorData, IEditorHTML, IEditorOption, IEditorResult, IEditorText, IFocusOption, ISetValueOption, IUpdateOption } from '../../interface/Editor';
15
15
  import { IColumnOption } from '../../interface/Column';
16
- import { IDeleteElementByIdOption, IElement, IElementPosition, IGetElementByIdOption, IImageCaption, IImageCrop, IInsertElementListOption, IUpdateElementByIdOption } from '../../interface/Element';
16
+ import { IDeleteElementByIdOption, IElement, IElementPosition, IGetElementByIdOption, IImageCaption, IImageCrop, IInsertElementListOption, ITabStop, IUpdateElementByIdOption } from '../../interface/Element';
17
17
  import { ICopyOption, IPasteOption, IPositionContextByEventOption, IPositionContextByEventResult } from '../../interface/Event';
18
18
  import { IMargin } from '../../interface/Margin';
19
19
  import { IGetSurroundElementListOption, IRange, RangeContext, RangeRect } from '../../interface/Range';
@@ -75,6 +75,12 @@ export declare class CommandAdapt {
75
75
  list(listType: ListType | null, listStyle?: ListStyle): void;
76
76
  rowFlex(payload: RowFlex): void;
77
77
  rowMargin(payload: number): void;
78
+ spacingBefore(payload: number): void;
79
+ spacingAfter(payload: number): void;
80
+ indentLeft(payload: number): void;
81
+ indentRight(payload: number): void;
82
+ indentFirstLine(payload: number): void;
83
+ setTabStops(payload: ITabStop[]): void;
78
84
  insertTable(row: number, col: number): void;
79
85
  insertTableTopRow(): void;
80
86
  insertTableBottomRow(): void;
@@ -91,6 +97,8 @@ export declare class CommandAdapt {
91
97
  tableBorderType(payload: TableBorder): void;
92
98
  tableBorderColor(payload: string): void;
93
99
  tableTdBorderType(payload: TdBorder): void;
100
+ tableTdBorderColor(payload: string): void;
101
+ tableTdBorderWidth(payload: number): void;
94
102
  tableTdSlashType(payload: TdSlash): void;
95
103
  tableTdBackgroundColor(payload: string): void;
96
104
  tableAutoFitToContent(): void;
@@ -185,6 +193,7 @@ export declare class CommandAdapt {
185
193
  validate(payload?: IValidateOption): IControlValidateResult[];
186
194
  clearValidate(): void;
187
195
  setControlHighlight(payload: ISetControlHighlightOption): void;
196
+ setBackend(payload: BackendType): void;
188
197
  updateOptions(payload: IUpdateOption): void;
189
198
  getControlList(): IElement[];
190
199
  locationControl(controlId: string, options?: ILocationControlOption): void;
@@ -23,6 +23,13 @@ export declare class ContextMenu {
23
23
  private _getContext;
24
24
  private _createContextMenuContainer;
25
25
  private _render;
26
+ /**
27
+ * 按点击位置摆放菜单(left/top 为视口坐标):
28
+ * 纵向优先往下展开;下方放不下而上方放得下则往上展开;
29
+ * 两侧都放不下时取空间大的一侧,并把菜单限高为该侧可用空间(容器自带纵向滚动)。
30
+ * 横向同理,右侧放不下往左,仍放不下贴视口边。
31
+ */
32
+ private _placeContextMenu;
26
33
  private _removeSubMenu;
27
34
  private _setHoverStatus;
28
35
  private _formatName;
@@ -6,6 +6,9 @@ import { IRow } from '../../interface/Row';
6
6
  import { IColumnLayout, IColumnOption } from '../../interface/Column';
7
7
  import { ColumnManager } from './column/ColumnManager';
8
8
  import { IncrementalRowComputer } from './IncrementalRowComputer';
9
+ import { TextMeasurer } from '../layout/TextMeasurer';
10
+ import type { RenderPage } from '../render/RenderBackend';
11
+ import { IRenderContext } from '../render/model/RenderContext';
9
12
  import { Cursor } from '../cursor/Cursor';
10
13
  import { CanvasEvent } from '../event/CanvasEvent';
11
14
  import { GlobalEvent } from '../event/GlobalEvent';
@@ -20,6 +23,7 @@ import { Underline } from './richtext/Underline';
20
23
  import { ImageParticle } from './particle/ImageParticle';
21
24
  import { TextParticle } from './particle/TextParticle';
22
25
  import { TableParticle } from './particle/table/TableParticle';
26
+ import { TablePaging } from './particle/table/TablePaging';
23
27
  import { TableTool } from './particle/table/TableTool';
24
28
  import { Ruler } from './ruler/Ruler';
25
29
  import { HyperlinkParticle } from './particle/HyperlinkParticle';
@@ -28,7 +32,7 @@ import { TraceParticle } from './particle/TraceParticle';
28
32
  import { Header } from './frame/Header';
29
33
  import { SuperscriptParticle } from './particle/SuperscriptParticle';
30
34
  import { SubscriptParticle } from './particle/SubscriptParticle';
31
- import { EditorMode, PageMode, PaperDirection } from '../../dataset/enum/Editor';
35
+ import { BackendType, EditorMode, PageMode, PaperDirection } from '../../dataset/enum/Editor';
32
36
  import { Control } from './control/Control';
33
37
  import { CascadeManager } from '../cascade/CascadeManager';
34
38
  import { Validate } from '../validate/Validate';
@@ -53,6 +57,7 @@ import { LineBreakParticle } from './particle/LineBreakParticle';
53
57
  import { ITd } from '../../interface/table/Td';
54
58
  import { TableOperate } from './particle/table/TableOperate';
55
59
  import { Area } from './interactive/Area';
60
+ import { AreaTool } from './interactive/AreaTool';
56
61
  import { Badge } from './frame/Badge';
57
62
  import { Graffiti } from './graffiti/Graffiti';
58
63
  import { Magnifier } from './interactive/Magnifier';
@@ -60,8 +65,7 @@ import { Accessibility } from '../accessibility/Accessibility';
60
65
  export declare class Draw {
61
66
  private container;
62
67
  private pageContainer;
63
- private pageList;
64
- private ctxList;
68
+ private backend;
65
69
  private pageNo;
66
70
  private renderCount;
67
71
  private pagePixelRatio;
@@ -86,6 +90,7 @@ export declare class Draw {
86
90
  private spellcheck;
87
91
  private group;
88
92
  private area;
93
+ private areaTool;
89
94
  private underline;
90
95
  private strikeout;
91
96
  private highlight;
@@ -93,6 +98,7 @@ export declare class Draw {
93
98
  private previewer;
94
99
  private imageParticle;
95
100
  private laTexParticle;
101
+ private textMeasurer;
96
102
  private textParticle;
97
103
  private tableParticle;
98
104
  private tablePaging;
@@ -134,6 +140,7 @@ export declare class Draw {
134
140
  private rowList;
135
141
  private rawRowList;
136
142
  private incrementalRowComputer;
143
+ private layoutEngine;
137
144
  private isElementListTruncated;
138
145
  private pageRowList;
139
146
  private pageDirectionList;
@@ -141,15 +148,14 @@ export declare class Draw {
141
148
  private painterOptions;
142
149
  private visiblePageNoList;
143
150
  private intersectionPageNo;
144
- private lazyRenderIntersectionObserver;
145
151
  private printModeData;
146
- private controlMinWidthPlaceholderElementListSet;
147
152
  private columnManager;
148
153
  private ruler;
149
154
  constructor(rootContainer: HTMLElement, options: DeepRequired<IEditorOption>, data: IEditorData, listener: Listener, eventBus: EventBus<EventBusMap>, override: Override);
150
155
  setPrintData(): void;
151
156
  clearPrintData(): void;
152
157
  getLetterReg(): RegExp;
158
+ isWordLike(word: string): boolean;
153
159
  getMode(): EditorMode;
154
160
  setMode(payload: EditorMode): void;
155
161
  isReadonly(): boolean;
@@ -206,19 +212,19 @@ export declare class Draw {
206
212
  getPageNo(): number;
207
213
  setPageNo(payload: number): void;
208
214
  getRenderCount(): number;
209
- getPage(pageNo?: number): HTMLCanvasElement;
210
- getPageList(): HTMLCanvasElement[];
215
+ getPage(pageNo?: number): RenderPage;
216
+ getPageList(): RenderPage[];
211
217
  getPageCount(): number;
212
218
  getTableRowList(sourceElementList: IElement[]): IRow[];
213
219
  getOriginalRowList(): IRow[];
214
220
  getRowList(): IRow[];
215
221
  getPageRowList(): IRow[][];
216
- getCtx(): CanvasRenderingContext2D;
217
222
  getOptions(): DeepRequired<IEditorOption>;
218
223
  getSearch(): Search;
219
224
  getSpellcheck(): Spellcheck;
220
225
  getGroup(): Group;
221
226
  getArea(): Area;
227
+ getAreaTool(): AreaTool;
222
228
  getBadge(): Badge;
223
229
  getMagnifier(): Magnifier;
224
230
  getHistoryManager(): HistoryManager;
@@ -227,6 +233,7 @@ export declare class Draw {
227
233
  getColumnManager(): ColumnManager;
228
234
  getRange(): RangeManager;
229
235
  getLineBreakParticle(): LineBreakParticle;
236
+ getTextMeasurer(): TextMeasurer;
230
237
  getTextParticle(): TextParticle;
231
238
  getStrikeout(): Strikeout;
232
239
  getUnderline(): Underline;
@@ -236,7 +243,9 @@ export declare class Draw {
236
243
  getTableElementList(sourceElementList: IElement[]): IElement[];
237
244
  getElementList(): IElement[];
238
245
  getMainElementList(): IElement[];
246
+ isMainElementList(elementList: IElement[]): boolean;
239
247
  getRawRowList(): IRow[];
248
+ getMainRowList(): IRow[];
240
249
  getIncrementalRowComputer(): IncrementalRowComputer;
241
250
  getIsElementListTruncated(): boolean;
242
251
  getIsControlMinWidthPlaceholder(): boolean;
@@ -261,6 +270,7 @@ export declare class Draw {
261
270
  getRuler(): Ruler;
262
271
  getTableOperate(): TableOperate;
263
272
  getTableParticle(): TableParticle;
273
+ getTablePaging(): TablePaging;
264
274
  getBlockParticle(): BlockParticle;
265
275
  getHeader(): Header;
266
276
  getFooter(): Footer;
@@ -281,11 +291,13 @@ export declare class Draw {
281
291
  getAccessibility(): Accessibility;
282
292
  getRowCount(): number;
283
293
  getDataURL(payload?: IGetImageOption): Promise<string[]>;
294
+ getSvgPageList(mode: EditorMode): Promise<SVGSVGElement[]>;
284
295
  getPainterStyle(): IElementStyle | null;
285
296
  getPainterOptions(): IPainterOption | null;
286
297
  setPainterStyle(payload: IElementStyle | null, options?: IPainterOption): void;
287
298
  setDefaultRange(): void;
288
299
  getIsPagingMode(): boolean;
300
+ setBackend(payload: BackendType): void;
289
301
  setPageMode(payload: PageMode): void;
290
302
  setPageScale(payload: number): void;
291
303
  getPagePixelRatio(): number;
@@ -304,14 +316,13 @@ export declare class Draw {
304
316
  private _createPageContainer;
305
317
  private _createPage;
306
318
  private _updatePageSizes;
307
- private _initPageContext;
308
319
  getElementFont(el: IElement, scale?: number): string;
309
320
  getElementSize(el: IElement): number;
310
321
  getElementRowMargin(el: IElement): number;
311
322
  computeRowList(payload: IComputeRowListPayload): IRow[];
312
323
  private _computePageList;
313
324
  private _drawHighlight;
314
- drawRow(ctx: CanvasRenderingContext2D, payload: IDrawRowPayload): void;
325
+ drawRow(ctx: IRenderContext, payload: IDrawRowPayload): void;
315
326
  private _drawFloat;
316
327
  private _clearPage;
317
328
  private _drawPage;
@@ -1,5 +1,6 @@
1
1
  import { IColumnLayout, IColumnOption } from '../../../interface/Column';
2
2
  import { PaperDirection } from '../../../dataset/enum/Editor';
3
+ import type { IRenderContext } from '../../render/model/RenderContext';
3
4
  import { Draw } from '../Draw';
4
5
  export declare class ColumnManager {
5
6
  private draw;
@@ -11,5 +12,5 @@ export declare class ColumnManager {
11
12
  getLayout(direction?: PaperDirection): IColumnLayout | null;
12
13
  setConfig(config: IColumnOption | null | undefined): void;
13
14
  getOffset(columnIndex: number | undefined, direction?: PaperDirection): number;
14
- drawSeparator(ctx: CanvasRenderingContext2D, pageNo: number): void;
15
+ drawSeparator(ctx: IRenderContext, pageNo: number): void;
15
16
  }
@@ -2,6 +2,7 @@ import { ControlState } from '../../../dataset/enum/Control';
2
2
  import { IControl, IControlChangeOption, IControlContext, IControlHighlight, IControlInitOption, IControlInstance, IDestroyControlOption, IGetControlValueOption, IGetControlValueResult, IInitNextControlOption, INextControlContext, IRepaintControlOption, ISetControlExtensionOption, ISetControlProperties, ISetControlRowFlexOption, ISetControlValueOption } from '../../../interface/Control';
3
3
  import { IElement, IElementPosition } from '../../../interface/Element';
4
4
  import { IRange } from '../../../interface/Range';
5
+ import type { IRenderContext } from '../../render/model/RenderContext';
5
6
  import { Draw } from '../Draw';
6
7
  interface IMoveCursorResult {
7
8
  newIndex: number;
@@ -22,7 +23,7 @@ export declare class Control {
22
23
  constructor(draw: Draw);
23
24
  setHighlightList(payload: IControlHighlight[]): void;
24
25
  computeHighlightList(): void;
25
- renderHighlightList(ctx: CanvasRenderingContext2D, pageNo: number): void;
26
+ renderHighlightList(ctx: IRenderContext, pageNo: number): void;
26
27
  getDraw(): Draw;
27
28
  filterAssistElement(elementList: IElement[]): IElement[];
28
29
  getIsRangeCanCaptureEvent(): boolean;
@@ -68,7 +69,7 @@ export declare class Control {
68
69
  setPropertiesListById(payload: ISetControlProperties[]): void;
69
70
  getList(): IElement[];
70
71
  recordBorderInfo(x: number, y: number, width: number, height: number): void;
71
- drawBorder(ctx: CanvasRenderingContext2D): void;
72
+ drawBorder(ctx: IRenderContext): void;
72
73
  getPreControlContext(): INextControlContext | null;
73
74
  getNextControlContext(): INextControlContext | null;
74
75
  initNextControl(option?: IInitNextControlOption): void;
@@ -1,6 +1,7 @@
1
1
  import { IControlHighlight, IControlHighlightRule } from '../../../../interface/Control';
2
2
  import { IElement } from '../../../../interface/Element';
3
3
  import { ISearchResult } from '../../../../interface/Search';
4
+ import type { IRenderContext } from '../../../render/model/RenderContext';
4
5
  import { Control } from '../Control';
5
6
  type IHighlightMatchResult = (ISearchResult & IControlHighlightRule)[];
6
7
  export declare class ControlSearch {
@@ -15,6 +16,6 @@ export declare class ControlSearch {
15
16
  getHighlightList(): IControlHighlight[];
16
17
  setHighlightList(payload: IControlHighlight[]): void;
17
18
  computeHighlightList(): void;
18
- renderHighlightList(ctx: CanvasRenderingContext2D, pageIndex: number): void;
19
+ renderHighlightList(ctx: IRenderContext, pageIndex: number): void;
19
20
  }
20
21
  export {};
@@ -1,4 +1,5 @@
1
1
  import { IElementFillRect } from '../../../../interface/Element';
2
+ import type { IRenderContext } from '../../../render/model/RenderContext';
2
3
  import { Draw } from '../../Draw';
3
4
  export declare class ControlBorder {
4
5
  protected borderRect: IElementFillRect;
@@ -6,5 +7,5 @@ export declare class ControlBorder {
6
7
  constructor(draw: Draw);
7
8
  clearBorderInfo(): IElementFillRect;
8
9
  recordBorderInfo(x: number, y: number, width: number, height: number): void;
9
- render(ctx: CanvasRenderingContext2D): void;
10
+ render(ctx: IRenderContext): void;
10
11
  }
@@ -1,3 +1,4 @@
1
+ import type { IRenderContext } from '../../render/model/RenderContext';
1
2
  import { Draw } from '../Draw';
2
3
  export declare class Background {
3
4
  private draw;
@@ -7,5 +8,5 @@ export declare class Background {
7
8
  private _renderBackgroundColor;
8
9
  private _drawImage;
9
10
  private _renderBackgroundImage;
10
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
11
+ render(ctx: IRenderContext, pageNo: number): void;
11
12
  }
@@ -1,14 +1,16 @@
1
1
  import { IAreaBadge, IBadge } from '../../../interface/Badge';
2
+ import type { IRenderContext } from '../../render/model/RenderContext';
2
3
  import { Draw } from '../Draw';
3
4
  export declare class Badge {
4
5
  private draw;
5
6
  private options;
6
7
  private imageCache;
8
+ private pendingImageMap;
7
9
  private mainBadge;
8
10
  private areaBadgeMap;
9
11
  constructor(draw: Draw);
10
12
  setMainBadge(payload: IBadge | null): void;
11
13
  setAreaBadgeMap(payload: IAreaBadge[]): void;
12
14
  private _drawImage;
13
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
15
+ render(ctx: IRenderContext, pageNo: number): void;
14
16
  }
@@ -1,6 +1,7 @@
1
1
  import { PaperDirection } from '../../../dataset/enum/Editor';
2
2
  import { IElement, IElementPosition } from '../../../interface/Element';
3
3
  import { IRow } from '../../../interface/Row';
4
+ import type { IRenderContext } from '../../render/model/RenderContext';
4
5
  import { Draw } from '../Draw';
5
6
  export declare class Footer {
6
7
  private draw;
@@ -26,5 +27,5 @@ export declare class Footer {
26
27
  getExtraHeight(pageNo?: number, direction?: PaperDirection): number;
27
28
  private _resolveDirection;
28
29
  isDisabled(pageNo?: number): boolean;
29
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
30
+ render(ctx: IRenderContext, pageNo: number): void;
30
31
  }
@@ -1,6 +1,7 @@
1
1
  import { PaperDirection } from '../../../dataset/enum/Editor';
2
2
  import { IElement, IElementPosition } from '../../../interface/Element';
3
3
  import { IRow } from '../../../interface/Row';
4
+ import type { IRenderContext } from '../../render/model/RenderContext';
4
5
  import { Draw } from '../Draw';
5
6
  export declare class Header {
6
7
  private draw;
@@ -26,5 +27,5 @@ export declare class Header {
26
27
  getExtraHeight(pageNo?: number, direction?: PaperDirection): number;
27
28
  private _resolveDirection;
28
29
  isDisabled(pageNo?: number): boolean;
29
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
30
+ render(ctx: IRenderContext, pageNo: number): void;
30
31
  }
@@ -1,7 +1,8 @@
1
+ import type { IRenderContext } from '../../render/model/RenderContext';
1
2
  import { Draw } from '../Draw';
2
3
  export declare class LineNumber {
3
4
  private draw;
4
5
  private options;
5
6
  constructor(draw: Draw);
6
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
7
+ render(ctx: IRenderContext, pageNo: number): void;
7
8
  }
@@ -1,7 +1,8 @@
1
+ import type { IRenderContext } from '../../render/model/RenderContext';
1
2
  import { Draw } from '../Draw';
2
3
  export declare class Margin {
3
4
  private draw;
4
5
  private options;
5
6
  constructor(draw: Draw);
6
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
7
+ render(ctx: IRenderContext, pageNo: number): void;
7
8
  }
@@ -1,3 +1,4 @@
1
+ import type { IRenderContext } from '../../render/model/RenderContext';
1
2
  import { Draw } from '../Draw';
2
3
  export declare class PageBorder {
3
4
  private draw;
@@ -5,5 +6,5 @@ export declare class PageBorder {
5
6
  private footer;
6
7
  private options;
7
8
  constructor(draw: Draw);
8
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
9
+ render(ctx: IRenderContext, pageNo: number): void;
9
10
  }
@@ -1,9 +1,10 @@
1
1
  import { NumberType } from '../../../dataset/enum/Common';
2
+ import type { IRenderContext } from '../../render/model/RenderContext';
2
3
  import { Draw } from '../Draw';
3
4
  export declare class PageNumber {
4
5
  private draw;
5
6
  private options;
6
7
  constructor(draw: Draw);
7
8
  static formatNumberPlaceholder(text: string, pageNo: number, replaceReg: RegExp, numberType: NumberType): string;
8
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
9
+ render(ctx: IRenderContext, pageNo: number): void;
9
10
  }
@@ -1,4 +1,5 @@
1
1
  import { IPlaceholder } from '../../../interface/Placeholder';
2
+ import type { IRenderContext } from '../../render/model/RenderContext';
2
3
  import { Draw } from '../Draw';
3
4
  export interface IPlaceholderRenderOption {
4
5
  placeholder: Required<IPlaceholder>;
@@ -16,5 +17,5 @@ export declare class Placeholder {
16
17
  _compute(options?: IPlaceholderRenderOption): void;
17
18
  private _computeRowList;
18
19
  private _computePositionList;
19
- render(ctx: CanvasRenderingContext2D, options?: IPlaceholderRenderOption): void;
20
+ render(ctx: IRenderContext, options?: IPlaceholderRenderOption): void;
20
21
  }
@@ -1,10 +1,11 @@
1
+ import type { IRenderContext } from '../../render/model/RenderContext';
1
2
  import { Draw } from '../Draw';
2
3
  export declare class Watermark {
3
4
  private draw;
4
5
  private options;
5
6
  private imageCache;
6
7
  constructor(draw: Draw);
7
- renderText(ctx: CanvasRenderingContext2D, pageNo: number): void;
8
- renderImage(ctx: CanvasRenderingContext2D, pageNo: number): void;
9
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
8
+ renderText(ctx: IRenderContext, pageNo: number): void;
9
+ renderImage(ctx: IRenderContext, pageNo: number): void;
10
+ render(ctx: IRenderContext, pageNo: number): void;
10
11
  }
@@ -1,4 +1,5 @@
1
1
  import { IGraffitiData } from '../../../interface/Graffiti';
2
+ import type { IRenderContext } from '../../render/model/RenderContext';
2
3
  import { Draw } from '../Draw';
3
4
  export declare class Graffiti {
4
5
  private draw;
@@ -15,5 +16,5 @@ export declare class Graffiti {
15
16
  getValue(): IGraffitiData[];
16
17
  compute(): void;
17
18
  clear(): void;
18
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
19
+ render(ctx: IRenderContext, pageNo: number): void;
19
20
  }
@@ -1,6 +1,8 @@
1
1
  import { Draw } from '../Draw';
2
2
  import { IAreaInfo, IDeleteAreaOption, IGetAreaValueOption, IGetAreaValueResult, IInsertAreaOption, ILocationAreaOption, ISetAreaPropertiesOption, ISetAreaValueOption } from '../../../interface/Area';
3
+ import type { IRenderContext } from '../../render/model/RenderContext';
3
4
  import { IRange } from '../../../interface/Range';
5
+ import { IRow } from '../../../interface/Row';
4
6
  import { IElementPosition } from '../../../interface/Element';
5
7
  export declare class Area {
6
8
  private draw;
@@ -15,10 +17,21 @@ export declare class Area {
15
17
  getActiveAreaInfo(): IAreaInfo | null;
16
18
  isReadonly(): boolean;
17
19
  insertArea(payload: IInsertAreaOption): string | null;
18
- render(ctx: CanvasRenderingContext2D, pageNo: number): void;
20
+ render(ctx: IRenderContext, pageNo: number): void;
19
21
  compute(): void;
22
+ /**
23
+ * 收集区域补高的跨页延续段:
24
+ * 结转标记在区域后续行时,起点 = 结转行内容顶部 - 本行全部偏移(即页内容区顶部);
25
+ * 结转标记在区域末行自身时(区域位于文档末尾),延续段位于下一空白页顶部
26
+ */
27
+ private computePaddingSegmentList;
20
28
  private computeAreaInfo;
21
29
  private computeTableAreaInfo;
30
+ /**
31
+ * 应用区域最小高度:按区域分组连续行累计内容高度,
32
+ * 不足 minHeight 时将差值补充到区域末行行高(区域顶部间距不计入内容高度)
33
+ */
34
+ applyMinHeight(rowList: IRow[]): void;
22
35
  getAreaValue(options?: IGetAreaValueOption): IGetAreaValueResult | null;
23
36
  getContextByAreaId(areaId: string, options?: ILocationAreaOption): {
24
37
  range: IRange;
@@ -0,0 +1,18 @@
1
+ import { Draw } from '../Draw';
2
+ export declare class AreaTool {
3
+ private readonly BORDER_VALUE;
4
+ private readonly MIN_AREA_HEIGHT;
5
+ private draw;
6
+ private canvas;
7
+ private options;
8
+ private container;
9
+ private toolBorder;
10
+ private anchorLine;
11
+ private mousedownY;
12
+ private lastAnchorKey;
13
+ constructor(draw: Draw);
14
+ dispose(): void;
15
+ render(): void;
16
+ private _mousedown;
17
+ private _mousemove;
18
+ }
@@ -1,6 +1,7 @@
1
1
  import { IElement } from '../../../interface/Element';
2
2
  import { IPositionContext } from '../../../interface/Position';
3
3
  import { IRange } from '../../../interface/Range';
4
+ import type { IRenderContext } from '../../render/model/RenderContext';
4
5
  import { Draw } from '../Draw';
5
6
  export declare class Group {
6
7
  private draw;
@@ -14,5 +15,5 @@ export declare class Group {
14
15
  getContextByGroupId(elementList: IElement[], groupId: string): (IRange & IPositionContext) | null;
15
16
  clearFillInfo(): void;
16
17
  recordFillInfo(element: IElement, x: number, y: number, width: number, height: number): void;
17
- render(ctx: CanvasRenderingContext2D): void;
18
+ render(ctx: IRenderContext): void;
18
19
  }
@@ -1,5 +1,6 @@
1
1
  import { IElement, IElementPosition } from '../../../interface/Element';
2
2
  import { IReplaceOption, ISearchOption, ISearchResult } from '../../../interface/Search';
3
+ import type { IRenderContext } from '../../render/model/RenderContext';
3
4
  import { Draw } from '../Draw';
4
5
  export interface INavigateInfo {
5
6
  index: number;
@@ -26,7 +27,7 @@ export declare class Search {
26
27
  getSearchNavigateInfo(): null | INavigateInfo;
27
28
  getMatchList(payload: string, originalElementList: IElement[]): ISearchResult[];
28
29
  compute(payload: string): void;
29
- render(ctx: CanvasRenderingContext2D, pageIndex: number): void;
30
+ render(ctx: IRenderContext, pageIndex: number): void;
30
31
  replace(payload: string, option?: IReplaceOption): void;
31
32
  private replaceWithTrace;
32
33
  }
@@ -1,4 +1,5 @@
1
1
  import type { ISpellcheckContext, ISpellcheckRange, ISpellcheckWord } from '../../../interface/Spellcheck';
2
+ import type { IRenderContext } from '../../render/model/RenderContext';
2
3
  import type { Draw } from '../Draw';
3
4
  export declare class Spellcheck {
4
5
  private options;
@@ -16,5 +17,5 @@ export declare class Spellcheck {
16
17
  private _isSameTablePath;
17
18
  getRangeByIndex(index: number, context?: ISpellcheckContext): ISpellcheckRange | null;
18
19
  private _drawWave;
19
- render(ctx: CanvasRenderingContext2D, pageIndex: number): void;
20
+ render(ctx: IRenderContext, pageIndex: number): void;
20
21
  }
@@ -1,8 +1,9 @@
1
1
  import { IElement } from '../../../interface/Element';
2
2
  import { IRow } from '../../../interface/Row';
3
+ import { IRenderContext } from '../../render/model/RenderContext';
3
4
  import { Draw } from '../Draw';
4
5
  interface ICheckboxRenderOption {
5
- ctx: CanvasRenderingContext2D;
6
+ ctx: IRenderContext;
6
7
  x: number;
7
8
  y: number;
8
9
  row: IRow;
@@ -1,6 +1,7 @@
1
1
  import { IElement } from '../../..';
2
2
  import { IElementPosition } from '../../../interface/Element';
3
3
  import { IRowElement } from '../../../interface/Row';
4
+ import { IRenderContext } from '../../render/model/RenderContext';
4
5
  import { Draw } from '../Draw';
5
6
  export declare class HyperlinkParticle {
6
7
  private draw;
@@ -13,5 +14,5 @@ export declare class HyperlinkParticle {
13
14
  drawHyperlinkPopup(element: IElement, position: IElementPosition): void;
14
15
  clearHyperlinkPopup(): void;
15
16
  openHyperlink(element: IElement): void;
16
- render(ctx: CanvasRenderingContext2D, element: IRowElement, x: number, y: number): void;
17
+ render(ctx: IRenderContext, element: IRowElement, x: number, y: number): void;
17
18
  }
@@ -1,11 +1,13 @@
1
1
  import { DeepRequired } from '../../../interface/Common';
2
2
  import { IEditorOption } from '../../../interface/Editor';
3
3
  import { IElement } from '../../../interface/Element';
4
+ import type { IRenderContext } from '../../render/model/RenderContext';
4
5
  import { Draw } from '../Draw';
5
6
  export declare class ImageParticle {
6
7
  private draw;
7
8
  protected options: DeepRequired<IEditorOption>;
8
9
  protected imageCache: Map<string, HTMLImageElement>;
10
+ private pendingImageMap;
9
11
  private container;
10
12
  private floatImageContainer;
11
13
  private floatImage;
@@ -19,5 +21,5 @@ export declare class ImageParticle {
19
21
  protected getFallbackImage(width: number, height: number): HTMLImageElement;
20
22
  private _drawImageWithCrop;
21
23
  private _renderCaption;
22
- render(ctx: CanvasRenderingContext2D, element: IElement, x: number, y: number): void;
24
+ render(ctx: IRenderContext, element: IElement, x: number, y: number): void;
23
25
  }
@@ -1,8 +1,9 @@
1
1
  import { IRowElement } from '../../../interface/Row';
2
+ import { IRenderContext } from '../../render/model/RenderContext';
2
3
  import { Draw } from '../Draw';
3
4
  export declare class LabelParticle {
4
5
  private options;
5
6
  constructor(draw: Draw);
6
- render(ctx: CanvasRenderingContext2D, element: IRowElement, x: number, y: number): void;
7
+ render(ctx: IRenderContext, element: IRowElement, x: number, y: number): void;
7
8
  private _drawRoundedRect;
8
9
  }