@hufe921/canvas-editor 1.0.6 → 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.
- package/CHANGELOG.md +32 -0
- package/README.md +9 -8
- package/dist/assets/catalog-ezAM0r6o.js.map +1 -0
- package/dist/assets/group-BZtj1M7o.js.map +1 -1
- package/dist/assets/value-DKLIEqC1.js.map +1 -0
- package/dist/assets/wordCount-xSvDqE7d.js.map +1 -0
- package/dist/canvas-editor.js +4446 -2824
- package/dist/canvas-editor.js.map +1 -1
- package/dist/canvas-editor.umd.cjs +42 -42
- package/dist/canvas-editor.umd.cjs.map +1 -1
- package/dist/src/editor/core/command/Command.d.ts +5 -0
- package/dist/src/editor/core/command/CommandAdapt.d.ts +7 -2
- package/dist/src/editor/core/contextmenu/ContextMenu.d.ts +7 -0
- package/dist/src/editor/core/draw/Draw.d.ts +17 -10
- package/dist/src/editor/core/draw/column/ColumnManager.d.ts +2 -1
- package/dist/src/editor/core/draw/control/Control.d.ts +3 -2
- package/dist/src/editor/core/draw/control/interactive/ControlSearch.d.ts +2 -1
- package/dist/src/editor/core/draw/control/richtext/Border.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Background.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Badge.d.ts +3 -1
- package/dist/src/editor/core/draw/frame/Footer.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Header.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/LineNumber.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Margin.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/PageBorder.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/PageNumber.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Placeholder.d.ts +2 -1
- package/dist/src/editor/core/draw/frame/Watermark.d.ts +4 -3
- package/dist/src/editor/core/draw/graffiti/Graffiti.d.ts +2 -1
- package/dist/src/editor/core/draw/interactive/Area.d.ts +2 -1
- package/dist/src/editor/core/draw/interactive/Group.d.ts +2 -1
- package/dist/src/editor/core/draw/interactive/Search.d.ts +2 -1
- package/dist/src/editor/core/draw/interactive/Spellcheck.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/CheckboxParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/HyperlinkParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/ImageParticle.d.ts +3 -1
- package/dist/src/editor/core/draw/particle/LabelParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/LineBreakParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/ListParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/PageBreakParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/RadioParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/SeparatorParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/SubscriptParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/SuperscriptParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/TextParticle.d.ts +8 -2
- package/dist/src/editor/core/draw/particle/TraceParticle.d.ts +3 -2
- package/dist/src/editor/core/draw/particle/WhiteSpaceParticle.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/block/BlockParticle.d.ts +3 -1
- package/dist/src/editor/core/draw/particle/block/modules/BaseBlock.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/block/modules/VideoBlock.d.ts +2 -1
- package/dist/src/editor/core/draw/particle/latex/LaTexParticle.d.ts +6 -1
- package/dist/src/editor/core/draw/particle/table/TableParticle.d.ts +3 -2
- package/dist/src/editor/core/draw/richtext/AbstractRichText.d.ts +3 -2
- package/dist/src/editor/core/draw/richtext/Highlight.d.ts +2 -1
- package/dist/src/editor/core/draw/richtext/Strikeout.d.ts +2 -1
- package/dist/src/editor/core/draw/richtext/Underline.d.ts +2 -1
- package/dist/src/editor/core/draw/ruler/Ruler.d.ts +31 -2
- package/dist/src/editor/core/event/pagePointer.d.ts +8 -0
- package/dist/src/editor/core/layout/LayoutEngine.d.ts +31 -0
- package/dist/src/editor/core/layout/TextMeasurer.d.ts +10 -0
- package/dist/src/editor/core/range/RangeManager.d.ts +2 -1
- package/dist/src/editor/core/render/BackendFactory.d.ts +3 -0
- package/dist/src/editor/core/render/RenderBackend.d.ts +24 -0
- package/dist/src/editor/core/render/canvas/CanvasBackend.d.ts +19 -0
- package/dist/src/editor/core/render/canvas/CanvasRenderer.d.ts +5 -0
- package/dist/src/editor/core/render/canvas/CanvasSurface.d.ts +17 -0
- package/dist/src/editor/core/render/model/DisplayList.d.ts +62 -0
- package/dist/src/editor/core/render/model/RenderContext.d.ts +48 -0
- package/dist/src/editor/core/render/svg/SvgBackend.d.ts +22 -0
- package/dist/src/editor/core/render/svg/SvgRenderer.d.ts +9 -0
- package/dist/src/editor/core/render/svg/SvgSurface.d.ts +13 -0
- package/dist/src/editor/core/render/svg/scene/PathCompiler.d.ts +16 -0
- package/dist/src/editor/core/render/svg/scene/ResourceKey.d.ts +7 -0
- package/dist/src/editor/core/render/svg/scene/SceneCompiler.d.ts +9 -0
- package/dist/src/editor/core/render/svg/scene/SceneKey.d.ts +28 -0
- package/dist/src/editor/core/render/svg/scene/SceneNode.d.ts +20 -0
- package/dist/src/editor/core/render/svg/scene/SceneReconciler.d.ts +12 -0
- package/dist/src/editor/core/render/svg/scene/SvgNodeFactory.d.ts +14 -0
- package/dist/src/editor/dataset/constant/Common.d.ts +1 -0
- package/dist/src/editor/dataset/enum/Editor.d.ts +4 -0
- package/dist/src/editor/dataset/enum/TabStop.d.ts +11 -0
- package/dist/src/editor/index.d.ts +5 -4
- package/dist/src/editor/interface/Draw.d.ts +4 -0
- package/dist/src/editor/interface/Editor.d.ts +6 -0
- package/dist/src/editor/interface/Element.d.ts +10 -0
- package/dist/src/editor/interface/Listener.d.ts +5 -1
- package/dist/src/editor/interface/Row.d.ts +3 -0
- package/dist/src/editor/utils/element.d.ts +1 -0
- package/dist/src/editor/utils/print.d.ts +1 -0
- package/package.json +10 -10
- package/dist/assets/catalog-B-cbxN0s.js.map +0 -1
- package/dist/assets/value-93HzxRrf.js.map +0 -1
- package/dist/assets/wordCount-BWZRHbSB.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IElement } from '../../..';
|
|
2
2
|
import { IRowElement } from '../../../interface/Row';
|
|
3
3
|
import { ITextMetrics } from '../../../interface/Text';
|
|
4
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
4
5
|
import { Draw } from '../Draw';
|
|
5
6
|
export interface IMeasureWordResult {
|
|
6
7
|
width: number;
|
|
@@ -15,7 +16,10 @@ export declare class TextParticle {
|
|
|
15
16
|
private text;
|
|
16
17
|
private curStyle;
|
|
17
18
|
private curColor?;
|
|
18
|
-
|
|
19
|
+
private curSourceElement?;
|
|
20
|
+
private sourceKeys;
|
|
21
|
+
private sourceKeyId;
|
|
22
|
+
private textMeasurer;
|
|
19
23
|
constructor(draw: Draw);
|
|
20
24
|
measureBasisWord(ctx: CanvasRenderingContext2D, font: string): ITextMetrics;
|
|
21
25
|
measureWord(ctx: CanvasRenderingContext2D, elementList: IElement[], curIndex: number): IMeasureWordResult;
|
|
@@ -23,7 +27,9 @@ export declare class TextParticle {
|
|
|
23
27
|
measureText(ctx: CanvasRenderingContext2D, element: IElement): ITextMetrics;
|
|
24
28
|
getBasisWordBoundingBoxAscent(ctx: CanvasRenderingContext2D, font: string): number;
|
|
25
29
|
complete(): void;
|
|
26
|
-
|
|
30
|
+
renderTabLeader(ctx: IRenderContext, element: IRowElement, x: number, y: number): void;
|
|
31
|
+
record(ctx: IRenderContext, element: IRowElement, x: number, y: number): void;
|
|
27
32
|
private _setCurXY;
|
|
33
|
+
private _getSourceKey;
|
|
28
34
|
private _render;
|
|
29
35
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { IElement, IElementMetrics, IElementPosition } from '../../../interface/Element';
|
|
2
2
|
import { IRow, IRowElement } from '../../../interface/Row';
|
|
3
3
|
import { IMarkElementListDeletedOption } from '../../../interface/Trace';
|
|
4
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
4
5
|
import { Draw } from '../Draw';
|
|
5
6
|
interface ITraceRenderContext {
|
|
6
|
-
ctx:
|
|
7
|
+
ctx: IRenderContext;
|
|
7
8
|
element: IRowElement;
|
|
8
9
|
x: number;
|
|
9
10
|
y: number;
|
|
@@ -29,7 +30,7 @@ export declare class TraceParticle {
|
|
|
29
30
|
handleMouseMove(evt: MouseEvent): void;
|
|
30
31
|
private _getTraceFlags;
|
|
31
32
|
render(context: ITraceRenderContext): void;
|
|
32
|
-
flush(ctx:
|
|
33
|
+
flush(ctx: IRenderContext): void;
|
|
33
34
|
private _flushStrikeout;
|
|
34
35
|
private _flushUnderline;
|
|
35
36
|
isTraceHidden(element: IElement): boolean;
|
|
@@ -1,7 +1,8 @@
|
|
|
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 WhiteSpaceParticle {
|
|
4
5
|
private options;
|
|
5
6
|
constructor(draw: Draw);
|
|
6
|
-
render(ctx:
|
|
7
|
+
render(ctx: IRenderContext, element: IRowElement, x: number, y: number): void;
|
|
7
8
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IIframeInfo } from '../../../../interface/Block';
|
|
2
2
|
import { IRowElement } from '../../../../interface/Row';
|
|
3
|
+
import type { IRenderContext } from '../../../render/model/RenderContext';
|
|
3
4
|
import { Draw } from '../../Draw';
|
|
4
5
|
export declare class BlockParticle {
|
|
5
6
|
private draw;
|
|
@@ -11,9 +12,10 @@ export declare class BlockParticle {
|
|
|
11
12
|
private _createBlockContainer;
|
|
12
13
|
getDraw(): Draw;
|
|
13
14
|
getBlockContainer(): HTMLDivElement;
|
|
14
|
-
render(ctx:
|
|
15
|
+
render(ctx: IRenderContext, pageNo: number, element: IRowElement, x: number, y: number): void;
|
|
15
16
|
clear(): void;
|
|
16
17
|
update(): void;
|
|
17
18
|
drawIframeToPage(pageList: HTMLCanvasElement[], snapDomFunction: (iframe: HTMLIFrameElement) => Promise<string>): Promise<void>;
|
|
19
|
+
drawIframeToSvgPage(pageList: SVGSVGElement[], snapDomFunction: (iframe: HTMLIFrameElement) => Promise<string>): Promise<void>;
|
|
18
20
|
pickIframeInfo(): IIframeInfo[][];
|
|
19
21
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IRowElement } from '../../../../../interface/Row';
|
|
2
|
+
import type { IRenderContext } from '../../../../render/model/RenderContext';
|
|
2
3
|
import { BlockParticle } from '../BlockParticle';
|
|
3
4
|
import { IFrameBlock } from './IFrameBlock';
|
|
4
5
|
import { VideoBlock } from './VideoBlock';
|
|
@@ -33,7 +34,7 @@ export declare class BaseBlock {
|
|
|
33
34
|
private _updateResizerRect;
|
|
34
35
|
private _mousedown;
|
|
35
36
|
private _mousemove;
|
|
36
|
-
snapshot(ctx:
|
|
37
|
+
snapshot(ctx: IRenderContext, pageNo: number, x: number, y: number): void;
|
|
37
38
|
render(): void;
|
|
38
39
|
setClientRects(pageNo: number, x: number, y: number): void;
|
|
39
40
|
setStatus(): void;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IRowElement } from '../../../../../interface/Row';
|
|
2
|
+
import type { IRenderContext } from '../../../../render/model/RenderContext';
|
|
2
3
|
export declare class VideoBlock {
|
|
3
4
|
private element;
|
|
4
5
|
protected videoCache: Map<string, HTMLVideoElement>;
|
|
5
6
|
constructor(element: IRowElement);
|
|
6
|
-
snapshot(ctx:
|
|
7
|
+
snapshot(ctx: IRenderContext, x: number, y: number): Promise<unknown>;
|
|
7
8
|
render(blockItemContainer: HTMLDivElement): void;
|
|
8
9
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { IElement } from '../../../../interface/Element';
|
|
2
|
+
import { IRenderContext } from '../../../render/model/RenderContext';
|
|
3
|
+
import { Draw } from '../../Draw';
|
|
2
4
|
import { ImageParticle } from '../ImageParticle';
|
|
3
5
|
import { LaTexSVG } from './utils/LaTexUtils';
|
|
4
6
|
export declare class LaTexParticle extends ImageParticle {
|
|
7
|
+
private latexDraw;
|
|
8
|
+
private pendingLaTexMap;
|
|
9
|
+
constructor(draw: Draw);
|
|
5
10
|
static convertLaTextToSVG(laTex: string): LaTexSVG;
|
|
6
|
-
render(ctx:
|
|
11
|
+
render(ctx: IRenderContext, element: IElement, x: number, y: number): void;
|
|
7
12
|
}
|
|
@@ -3,6 +3,7 @@ import { ITableRowFragment } from '../../../../interface/Element';
|
|
|
3
3
|
import { IRow } from '../../../../interface/Row';
|
|
4
4
|
import { ITd } from '../../../../interface/table/Td';
|
|
5
5
|
import { ITr } from '../../../../interface/table/Tr';
|
|
6
|
+
import { IRenderContext } from '../../../render/model/RenderContext';
|
|
6
7
|
import { Draw } from '../../Draw';
|
|
7
8
|
export declare class TableParticle {
|
|
8
9
|
private draw;
|
|
@@ -36,6 +37,6 @@ export declare class TableParticle {
|
|
|
36
37
|
getTdListByColIndex(trList: ITr[], colIndex: number): ITd[];
|
|
37
38
|
getTdListByRowIndex(trList: ITr[], rowIndex: number): ITd[];
|
|
38
39
|
computeRowColInfo(element: IElement): void;
|
|
39
|
-
drawRange(ctx:
|
|
40
|
-
render(ctx:
|
|
40
|
+
drawRange(ctx: IRenderContext, element: IElement, startX: number, startY: number, fragment?: ITableRowFragment): void;
|
|
41
|
+
render(ctx: IRenderContext, element: IElement, startX: number, startY: number, fragment?: ITableRowFragment): void;
|
|
41
42
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { TextDecorationStyle } from '../../../dataset/enum/Text';
|
|
2
2
|
import { IElementFillRect } from '../../../interface/Element';
|
|
3
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
3
4
|
export declare abstract class AbstractRichText {
|
|
4
5
|
protected fillRect: IElementFillRect;
|
|
5
6
|
protected fillColor?: string;
|
|
6
7
|
protected fillDecorationStyle?: TextDecorationStyle;
|
|
7
8
|
constructor();
|
|
8
9
|
clearFillInfo(): IElementFillRect;
|
|
9
|
-
recordFillInfo(ctx:
|
|
10
|
-
abstract render(ctx:
|
|
10
|
+
recordFillInfo(ctx: IRenderContext, x: number, y: number, width: number, height?: number, color?: string, decorationStyle?: TextDecorationStyle): void;
|
|
11
|
+
abstract render(ctx: IRenderContext): void;
|
|
11
12
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { AbstractRichText } from './AbstractRichText';
|
|
2
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
2
3
|
import { Draw } from '../Draw';
|
|
3
4
|
export declare class Highlight extends AbstractRichText {
|
|
4
5
|
private options;
|
|
5
6
|
constructor(draw: Draw);
|
|
6
|
-
render(ctx:
|
|
7
|
+
render(ctx: IRenderContext): void;
|
|
7
8
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { AbstractRichText } from './AbstractRichText';
|
|
2
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
2
3
|
import { Draw } from '../Draw';
|
|
3
4
|
export declare class Strikeout extends AbstractRichText {
|
|
4
5
|
private options;
|
|
5
6
|
constructor(draw: Draw);
|
|
6
|
-
render(ctx:
|
|
7
|
+
render(ctx: IRenderContext): void;
|
|
7
8
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AbstractRichText } from './AbstractRichText';
|
|
2
|
+
import type { IRenderContext } from '../../render/model/RenderContext';
|
|
2
3
|
import { Draw } from '../Draw';
|
|
3
4
|
export declare class Underline extends AbstractRichText {
|
|
4
5
|
private options;
|
|
@@ -6,5 +7,5 @@ export declare class Underline extends AbstractRichText {
|
|
|
6
7
|
private _drawLine;
|
|
7
8
|
private _drawDouble;
|
|
8
9
|
private _drawWave;
|
|
9
|
-
render(ctx:
|
|
10
|
+
render(ctx: IRenderContext): void;
|
|
10
11
|
}
|
|
@@ -3,6 +3,7 @@ export declare class Ruler {
|
|
|
3
3
|
private readonly MM_PX;
|
|
4
4
|
private readonly HANDLE_HIT_TOLERANCE;
|
|
5
5
|
private readonly MIN_INNER_SIZE;
|
|
6
|
+
private readonly MIN_INNER_SIZE_INDENT;
|
|
6
7
|
private draw;
|
|
7
8
|
private options;
|
|
8
9
|
private container;
|
|
@@ -14,6 +15,17 @@ export declare class Ruler {
|
|
|
14
15
|
private dragSide;
|
|
15
16
|
private dragStartPosition;
|
|
16
17
|
private dragOriginMargins;
|
|
18
|
+
private dragIndentTarget;
|
|
19
|
+
private dragOriginIndents;
|
|
20
|
+
private isIndentApplied;
|
|
21
|
+
private dragTabStopIndex;
|
|
22
|
+
private dragOriginTabStops;
|
|
23
|
+
private dragOriginTabStopX;
|
|
24
|
+
private isTabStopApplied;
|
|
25
|
+
private isTabStopDragOutside;
|
|
26
|
+
private guideline;
|
|
27
|
+
private indentMarkerPositionCache;
|
|
28
|
+
private tabStopPositionCache;
|
|
17
29
|
private mousemoveHandler;
|
|
18
30
|
private mouseupHandler;
|
|
19
31
|
constructor(draw: Draw);
|
|
@@ -24,18 +36,35 @@ export declare class Ruler {
|
|
|
24
36
|
render(): void;
|
|
25
37
|
private _renderX;
|
|
26
38
|
private _renderY;
|
|
27
|
-
private
|
|
28
|
-
private
|
|
39
|
+
private _getParagraphElementList;
|
|
40
|
+
private _getParagraphIndents;
|
|
41
|
+
private _getFirstParagraphElementList;
|
|
42
|
+
private _getIndentAnchor;
|
|
43
|
+
private _getParagraphTabStops;
|
|
44
|
+
private _getIndentMarkerPositions;
|
|
45
|
+
private _drawIndentMarker;
|
|
46
|
+
private _drawTabStopMark;
|
|
47
|
+
private _getHitIndentTarget;
|
|
48
|
+
private _getHitTabStopIndex;
|
|
49
|
+
private _addTabStop;
|
|
50
|
+
private _showGuideline;
|
|
51
|
+
private _removeGuideline;
|
|
29
52
|
private _getHitMarginSideX;
|
|
30
53
|
private _getHitMarginSideY;
|
|
31
54
|
private _getRelativeX;
|
|
32
55
|
private _getRelativeY;
|
|
56
|
+
private _getRelativeYOnCanvasX;
|
|
33
57
|
private _isMarginDragDisabled;
|
|
34
58
|
private _startDrag;
|
|
59
|
+
private _startIndentDrag;
|
|
60
|
+
private _startTabStopDrag;
|
|
35
61
|
private _mousedownX;
|
|
36
62
|
private _mousedownY;
|
|
37
63
|
private _updateCursorX;
|
|
38
64
|
private _updateCursorY;
|
|
65
|
+
private _resetCursor;
|
|
66
|
+
private _dragIndent;
|
|
67
|
+
private _dragTabStop;
|
|
39
68
|
private _dragMargin;
|
|
40
69
|
private _stopDrag;
|
|
41
70
|
clampMargin(value: number, max: number): number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RenderPage } from '../render/RenderBackend';
|
|
2
|
+
export interface IPagePointer {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
pageNo: number;
|
|
6
|
+
page: RenderPage;
|
|
7
|
+
}
|
|
8
|
+
export declare function getPagePointer(evt: MouseEvent, pageContainer: HTMLElement): IPagePointer | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PageMode, PaperDirection } from '../../dataset/enum/Editor';
|
|
2
|
+
import { IComputeRowListPayload } from '../../interface/Draw';
|
|
3
|
+
import { IElement } from '../../interface/Element';
|
|
4
|
+
import { IRow } from '../../interface/Row';
|
|
5
|
+
import type { Draw } from '../draw/Draw';
|
|
6
|
+
export interface IComputePageListPayload {
|
|
7
|
+
rowList: IRow[];
|
|
8
|
+
elementList: IElement[];
|
|
9
|
+
pageMode: PageMode;
|
|
10
|
+
paperDirection: PaperDirection;
|
|
11
|
+
maxPageNo?: number | null;
|
|
12
|
+
}
|
|
13
|
+
export interface IComputePageListResult {
|
|
14
|
+
pageRowList: IRow[][];
|
|
15
|
+
pageDirectionList: PaperDirection[];
|
|
16
|
+
elementList: IElement[];
|
|
17
|
+
isElementListTruncated: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare class LayoutEngine {
|
|
20
|
+
private draw;
|
|
21
|
+
private controlMinWidthPlaceholderElementListSet;
|
|
22
|
+
constructor(draw: Draw);
|
|
23
|
+
consumeControlMinWidthPlaceholders(elementList: IElement[]): void;
|
|
24
|
+
markControlMinWidthPlaceholders(elementList: IElement[]): void;
|
|
25
|
+
getIsControlMinWidthPlaceholder(elementList: IElement[]): boolean;
|
|
26
|
+
computeRowList(payload: IComputeRowListPayload): IRow[];
|
|
27
|
+
computePageList(payload: IComputePageListPayload): IComputePageListResult;
|
|
28
|
+
private _getHitTabStop;
|
|
29
|
+
private _isHangPunctuation;
|
|
30
|
+
private _getTabRunWidth;
|
|
31
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IElement } from '../../interface/Element';
|
|
2
|
+
import { ITextMetrics } from '../../interface/Text';
|
|
3
|
+
export declare class TextMeasurer {
|
|
4
|
+
private ctx;
|
|
5
|
+
private cache;
|
|
6
|
+
constructor(ctx?: CanvasRenderingContext2D);
|
|
7
|
+
measure(element: IElement, font: string, ctx?: CanvasRenderingContext2D): ITextMetrics;
|
|
8
|
+
measureText(value: string, font: string, ctx?: CanvasRenderingContext2D): ITextMetrics;
|
|
9
|
+
measureBasis(font: string, ctx?: CanvasRenderingContext2D): ITextMetrics;
|
|
10
|
+
}
|
|
@@ -2,6 +2,7 @@ import { IControlContext } from '../../interface/Control';
|
|
|
2
2
|
import { IElement } from '../../interface/Element';
|
|
3
3
|
import { IRange, IRangeElementStyle, IRangeParagraphInfo, RangeRowArray, RangeRowMap } from '../../interface/Range';
|
|
4
4
|
import { Draw } from '../draw/Draw';
|
|
5
|
+
import type { IRenderContext } from '../render/model/RenderContext';
|
|
5
6
|
export declare class RangeManager {
|
|
6
7
|
private draw;
|
|
7
8
|
private options;
|
|
@@ -40,6 +41,6 @@ export declare class RangeManager {
|
|
|
40
41
|
setRangeStyle(): void;
|
|
41
42
|
recoveryRangeStyle(): void;
|
|
42
43
|
shrinkBoundary(context?: IControlContext): void;
|
|
43
|
-
render(ctx:
|
|
44
|
+
render(ctx: IRenderContext, x: number, y: number, width: number, height: number): void;
|
|
44
45
|
toString(): string;
|
|
45
46
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DisplayList } from './model/DisplayList';
|
|
2
|
+
export type RenderPage = HTMLElement | SVGSVGElement;
|
|
3
|
+
export interface IPageResizeOption {
|
|
4
|
+
gap?: number;
|
|
5
|
+
updateCssHeight?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ICanvasCapability {
|
|
8
|
+
getPage(pageNo: number): HTMLCanvasElement;
|
|
9
|
+
getPageList(): HTMLCanvasElement[];
|
|
10
|
+
getContext(pageNo: number): CanvasRenderingContext2D;
|
|
11
|
+
}
|
|
12
|
+
export interface IRenderBackend {
|
|
13
|
+
readonly canvas: ICanvasCapability | null;
|
|
14
|
+
create(pageNo: number, width: number, height: number, gap: number, dpr: number): void;
|
|
15
|
+
resize(pageNo: number, width: number, height: number, dpr: number, options?: IPageResizeOption): void;
|
|
16
|
+
resizeHeight(pageNo: number, height: number, dpr: number): void;
|
|
17
|
+
renderPage(pageNo: number, displayList: DisplayList): void;
|
|
18
|
+
flush?(): void;
|
|
19
|
+
observeVisibility(callback: (pageNo: number) => void): void;
|
|
20
|
+
disconnectVisibility(): void;
|
|
21
|
+
getPage(pageNo: number): RenderPage;
|
|
22
|
+
getPageList(): RenderPage[];
|
|
23
|
+
destroy(): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DisplayList } from '../model/DisplayList';
|
|
2
|
+
import type { ICanvasCapability, IPageResizeOption, IRenderBackend } from '../RenderBackend';
|
|
3
|
+
export declare class CanvasBackend implements IRenderBackend, ICanvasCapability {
|
|
4
|
+
readonly canvas: ICanvasCapability;
|
|
5
|
+
private surface;
|
|
6
|
+
private renderer;
|
|
7
|
+
private pageList;
|
|
8
|
+
constructor(pageContainer: HTMLElement);
|
|
9
|
+
create(pageNo: number, width: number, height: number, gap: number, dpr: number): void;
|
|
10
|
+
resize(pageNo: number, width: number, height: number, dpr: number, options?: IPageResizeOption): void;
|
|
11
|
+
resizeHeight(pageNo: number, height: number, dpr: number): void;
|
|
12
|
+
renderPage(pageNo: number, displayList: DisplayList): void;
|
|
13
|
+
observeVisibility(callback: (pageNo: number) => void): void;
|
|
14
|
+
disconnectVisibility(): void;
|
|
15
|
+
getPage(pageNo: number): HTMLCanvasElement;
|
|
16
|
+
getPageList(): HTMLCanvasElement[];
|
|
17
|
+
getContext(pageNo: number): CanvasRenderingContext2D;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class CanvasSurface {
|
|
2
|
+
private pageContainer;
|
|
3
|
+
private visibilityObserver;
|
|
4
|
+
constructor(pageContainer: HTMLElement);
|
|
5
|
+
create(pageNo: number, width: number, height: number, gap: number, dpr: number): {
|
|
6
|
+
page: HTMLCanvasElement;
|
|
7
|
+
ctx: CanvasRenderingContext2D;
|
|
8
|
+
};
|
|
9
|
+
private initializeContext;
|
|
10
|
+
resize(page: HTMLCanvasElement, ctx: CanvasRenderingContext2D, width: number, height: number, dpr: number, options?: {
|
|
11
|
+
gap?: number;
|
|
12
|
+
updateCssHeight?: boolean;
|
|
13
|
+
}): void;
|
|
14
|
+
resizeHeight(page: HTMLCanvasElement, ctx: CanvasRenderingContext2D, height: number, dpr: number): void;
|
|
15
|
+
observeVisibility(pageList: Element[], callback: (pageNo: number) => void): void;
|
|
16
|
+
disconnectVisibility(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ISceneResourceIdentity, SceneGroupKind } from '../svg/scene/SceneNode';
|
|
2
|
+
import { IRenderContext, IRenderPattern, IRenderSource } from './RenderContext';
|
|
3
|
+
export type IRenderMethodName = 'save' | 'restore' | 'fillRect' | 'beginPath' | 'moveTo' | 'lineTo' | 'arc' | 'quadraticCurveTo' | 'bezierCurveTo' | 'rect' | 'closePath' | 'fill' | 'strokeRect' | 'scale' | 'rotate' | 'clip' | 'fillText' | 'translate' | 'stroke' | 'drawImage' | 'setLineDash';
|
|
4
|
+
export type IRenderOperation = {
|
|
5
|
+
type: 'set';
|
|
6
|
+
property: string;
|
|
7
|
+
value: unknown;
|
|
8
|
+
} | {
|
|
9
|
+
type: IRenderMethodName;
|
|
10
|
+
args: unknown[];
|
|
11
|
+
} | {
|
|
12
|
+
type: 'beginGroup';
|
|
13
|
+
key: string;
|
|
14
|
+
kind: SceneGroupKind;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'endGroup';
|
|
17
|
+
};
|
|
18
|
+
export declare class DisplayList implements IRenderContext {
|
|
19
|
+
private operations;
|
|
20
|
+
private state;
|
|
21
|
+
private stateStack;
|
|
22
|
+
constructor();
|
|
23
|
+
getOperations(): readonly IRenderOperation[];
|
|
24
|
+
get lineWidth(): number;
|
|
25
|
+
set lineWidth(value: number);
|
|
26
|
+
set fillStyle(value: string | CanvasGradient | CanvasPattern | IRenderPattern);
|
|
27
|
+
set strokeStyle(value: string | CanvasGradient | CanvasPattern);
|
|
28
|
+
set font(value: string);
|
|
29
|
+
set globalAlpha(value: number);
|
|
30
|
+
set textAlign(value: 'center' | 'end' | 'left' | 'right' | 'start');
|
|
31
|
+
set textBaseline(value: CanvasTextBaseline);
|
|
32
|
+
set lineCap(value: 'butt' | 'round' | 'square');
|
|
33
|
+
set lineJoin(value: 'bevel' | 'miter' | 'round');
|
|
34
|
+
setLineDash(segments: number[]): void;
|
|
35
|
+
getLineDash(): number[];
|
|
36
|
+
createPattern(image: CanvasImageSource, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat', resource?: ISceneResourceIdentity): IRenderPattern;
|
|
37
|
+
beginGroup(key: string, kind: SceneGroupKind): void;
|
|
38
|
+
endGroup(): void;
|
|
39
|
+
save(): void;
|
|
40
|
+
restore(): void;
|
|
41
|
+
fillRect(x: number, y: number, width: number, height: number): void;
|
|
42
|
+
beginPath(): void;
|
|
43
|
+
moveTo(x: number, y: number): void;
|
|
44
|
+
lineTo(x: number, y: number): void;
|
|
45
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
46
|
+
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
|
|
47
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
48
|
+
rect(x: number, y: number, width: number, height: number): void;
|
|
49
|
+
closePath(): void;
|
|
50
|
+
fill(): void;
|
|
51
|
+
strokeRect(x: number, y: number, width: number, height: number): void;
|
|
52
|
+
scale(x: number, y: number): void;
|
|
53
|
+
rotate(angle: number): void;
|
|
54
|
+
clip(): void;
|
|
55
|
+
fillText(text: string, x: number, y: number): void;
|
|
56
|
+
fillTextWithSource(text: string, x: number, y: number, source: IRenderSource): void;
|
|
57
|
+
translate(x: number, y: number): void;
|
|
58
|
+
stroke(): void;
|
|
59
|
+
drawImage(image: CanvasImageSource, ...args: [number, number, number, number] | [number, number, number, number, number, number, number, number]): void;
|
|
60
|
+
private set;
|
|
61
|
+
private record;
|
|
62
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ISceneResourceIdentity, SceneGroupKind } from '../svg/scene/SceneNode';
|
|
2
|
+
export interface IRenderPattern {
|
|
3
|
+
type: 'pattern';
|
|
4
|
+
image: CanvasImageSource;
|
|
5
|
+
repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';
|
|
6
|
+
resource?: ISceneResourceIdentity;
|
|
7
|
+
}
|
|
8
|
+
export interface IRenderSource {
|
|
9
|
+
key: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IRenderContext {
|
|
12
|
+
fillStyle: any;
|
|
13
|
+
strokeStyle: string | CanvasGradient | CanvasPattern;
|
|
14
|
+
font: string;
|
|
15
|
+
globalAlpha: number;
|
|
16
|
+
textAlign: 'center' | 'end' | 'left' | 'right' | 'start';
|
|
17
|
+
textBaseline: CanvasTextBaseline;
|
|
18
|
+
lineWidth: number;
|
|
19
|
+
lineCap: 'butt' | 'round' | 'square';
|
|
20
|
+
lineJoin: 'bevel' | 'miter' | 'round';
|
|
21
|
+
beginGroup?(key: string, kind: SceneGroupKind): void;
|
|
22
|
+
endGroup?(): void;
|
|
23
|
+
save(): void;
|
|
24
|
+
restore(): void;
|
|
25
|
+
setLineDash(segments: number[]): void;
|
|
26
|
+
getLineDash(): number[];
|
|
27
|
+
createPattern(image: CanvasImageSource, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat', resource?: ISceneResourceIdentity): CanvasPattern | IRenderPattern | null;
|
|
28
|
+
fillRect(x: number, y: number, width: number, height: number): void;
|
|
29
|
+
strokeRect(x: number, y: number, width: number, height: number): void;
|
|
30
|
+
beginPath(): void;
|
|
31
|
+
closePath(): void;
|
|
32
|
+
moveTo(x: number, y: number): void;
|
|
33
|
+
lineTo(x: number, y: number): void;
|
|
34
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
35
|
+
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
|
|
36
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
37
|
+
rect(x: number, y: number, width: number, height: number): void;
|
|
38
|
+
fill(): void;
|
|
39
|
+
stroke(): void;
|
|
40
|
+
clip(): void;
|
|
41
|
+
fillText(text: string, x: number, y: number): void;
|
|
42
|
+
fillTextWithSource?(text: string, x: number, y: number, source: IRenderSource): void;
|
|
43
|
+
translate(x: number, y: number): void;
|
|
44
|
+
scale(x: number, y: number): void;
|
|
45
|
+
rotate(angle: number): void;
|
|
46
|
+
drawImage(image: CanvasImageSource, x: number, y: number, width: number, height: number): void;
|
|
47
|
+
drawImage(image: CanvasImageSource, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number): void;
|
|
48
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DisplayList } from '../model/DisplayList';
|
|
2
|
+
import type { IPageResizeOption, IRenderBackend } from '../RenderBackend';
|
|
3
|
+
export declare class SvgBackend implements IRenderBackend {
|
|
4
|
+
readonly canvas: null;
|
|
5
|
+
private surface;
|
|
6
|
+
private renderer;
|
|
7
|
+
private pageList;
|
|
8
|
+
private renderedPages;
|
|
9
|
+
private pendingPages;
|
|
10
|
+
private frameId;
|
|
11
|
+
constructor(pageContainer: HTMLElement);
|
|
12
|
+
create(pageNo: number, width: number, height: number, gap: number, dpr: number): void;
|
|
13
|
+
resize(pageNo: number, width: number, height: number, dpr: number, options?: IPageResizeOption): void;
|
|
14
|
+
resizeHeight(pageNo: number, height: number, dpr: number): void;
|
|
15
|
+
renderPage(pageNo: number, displayList: DisplayList): void;
|
|
16
|
+
flush(): void;
|
|
17
|
+
observeVisibility(callback: (pageNo: number) => void): void;
|
|
18
|
+
disconnectVisibility(): void;
|
|
19
|
+
getPage(pageNo: number): SVGSVGElement;
|
|
20
|
+
getPageList(): SVGSVGElement[];
|
|
21
|
+
destroy(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DisplayList } from '../model/DisplayList';
|
|
2
|
+
export declare class SvgRenderer {
|
|
3
|
+
private compiler;
|
|
4
|
+
private reconciler;
|
|
5
|
+
private resourceScopes;
|
|
6
|
+
constructor();
|
|
7
|
+
render(host: SVGSVGElement, displayList: DisplayList): void;
|
|
8
|
+
private _getResourceScope;
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IPageResizeOption } from '../RenderBackend';
|
|
2
|
+
export declare class SvgSurface {
|
|
3
|
+
private pageContainer;
|
|
4
|
+
private visibilityObserver;
|
|
5
|
+
constructor(pageContainer: HTMLElement);
|
|
6
|
+
create(pageNo: number, width: number, height: number, gap: number): {
|
|
7
|
+
page: SVGSVGElement;
|
|
8
|
+
};
|
|
9
|
+
resize(page: SVGSVGElement, width: number, height: number, options?: IPageResizeOption): void;
|
|
10
|
+
resizeHeight(page: SVGSVGElement, height: number): void;
|
|
11
|
+
observeVisibility(pageList: Element[], callback: (pageNo: number) => void): void;
|
|
12
|
+
disconnectVisibility(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PathCompiler {
|
|
2
|
+
private commands;
|
|
3
|
+
private currentPoint;
|
|
4
|
+
private subpathStart;
|
|
5
|
+
moveTo(x: number, y: number): void;
|
|
6
|
+
lineTo(x: number, y: number): void;
|
|
7
|
+
rect(x: number, y: number, width: number, height: number): void;
|
|
8
|
+
closePath(): void;
|
|
9
|
+
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
|
|
10
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
|
|
11
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
12
|
+
getPathData(): string;
|
|
13
|
+
private _connectTo;
|
|
14
|
+
private _arcTo;
|
|
15
|
+
private _number;
|
|
16
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IRenderPattern } from '../../model/RenderContext';
|
|
2
|
+
export declare function buildPatternResourceKey(pattern: IRenderPattern): string;
|
|
3
|
+
export declare function createResourceId(kind: string, resourceKey: string, scope?: string): string;
|
|
4
|
+
export declare function getImageSize(image: CanvasImageSource): {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DisplayList } from '../../model/DisplayList';
|
|
2
|
+
import type { SceneNode } from './SceneNode';
|
|
3
|
+
export declare class SceneCompiler {
|
|
4
|
+
compile(displayList: DisplayList, resourceScope?: string): SceneNode;
|
|
5
|
+
private _createInitialState;
|
|
6
|
+
private _isRenderPattern;
|
|
7
|
+
private _multiplyMatrix;
|
|
8
|
+
private _serializeMatrix;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EditorZone } from '../../../../dataset/enum/Editor';
|
|
2
|
+
export interface IRowKeyPayload {
|
|
3
|
+
zoneKey: string;
|
|
4
|
+
containerKey: string;
|
|
5
|
+
occurrence: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ITableFragmentKeyPayload {
|
|
8
|
+
containerKey: string;
|
|
9
|
+
tableId?: string;
|
|
10
|
+
tablePath: string[];
|
|
11
|
+
startTrIndex: number;
|
|
12
|
+
endTrIndex: number;
|
|
13
|
+
startSplitTrOffset?: number;
|
|
14
|
+
endSplitTrHeight?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface IRepeatHeaderKeyPayload {
|
|
17
|
+
fragmentKey: string;
|
|
18
|
+
trIndex: number;
|
|
19
|
+
tdIndex: number;
|
|
20
|
+
tdId?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function buildSourceTextKey(sourceKeyId: number): string;
|
|
23
|
+
export declare function buildPageKey(pageNo: number): string;
|
|
24
|
+
export declare function buildLayerKey(pageNo: number, layer: string): string;
|
|
25
|
+
export declare function buildZoneKey(zone: EditorZone, pageNo: number): string;
|
|
26
|
+
export declare function buildRowKey(payload: IRowKeyPayload): string;
|
|
27
|
+
export declare function buildTableFragmentKey(payload: ITableFragmentKeyPayload): string;
|
|
28
|
+
export declare function buildRepeatHeaderKey(payload: IRepeatHeaderKeyPayload): string;
|