@hailin-zheng/editor-core 1.0.32 → 1.0.35

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 (79) hide show
  1. package/index-cjs.d.ts +1 -1
  2. package/index-cjs.js +9895 -9067
  3. package/index.d.ts +1 -1
  4. package/index.js +9888 -9069
  5. package/med_editor/controls/button.d.ts +10 -0
  6. package/med_editor/controls/core.d.ts +175 -0
  7. package/med_editor/controls/data-grid.d.ts +115 -0
  8. package/med_editor/controls/editor.d.ts +7 -0
  9. package/med_editor/controls/event.d.ts +22 -0
  10. package/med_editor/controls/grid.d.ts +11 -0
  11. package/med_editor/controls/label.d.ts +10 -0
  12. package/med_editor/controls/panel.d.ts +8 -0
  13. package/med_editor/controls/render-context.d.ts +59 -0
  14. package/med_editor/controls/report-sheet.d.ts +10 -0
  15. package/med_editor/controls/rule.d.ts +39 -0
  16. package/med_editor/controls/scroll-viewer.d.ts +60 -0
  17. package/med_editor/controls/surface.d.ts +23 -0
  18. package/med_editor/doc-ruler.d.ts +5 -6
  19. package/med_editor/framework/common-util.d.ts +2 -1
  20. package/med_editor/framework/document-change.d.ts +8 -7
  21. package/med_editor/framework/document-context.d.ts +4 -5
  22. package/med_editor/framework/document-event.d.ts +15 -4
  23. package/med_editor/framework/document-input-cursor.d.ts +1 -9
  24. package/med_editor/framework/document-paint.d.ts +21 -5
  25. package/med_editor/framework/document-print-offscreen.d.ts +5 -11
  26. package/med_editor/framework/document-print.d.ts +1 -11
  27. package/med_editor/framework/document-selection.d.ts +1 -2
  28. package/med_editor/framework/document-textline-mode.d.ts +2 -2
  29. package/med_editor/framework/element-define.d.ts +18 -10
  30. package/med_editor/framework/element-measure.d.ts +2 -2
  31. package/med_editor/framework/element-paint.d.ts +11 -11
  32. package/med_editor/framework/element-props.d.ts +8 -10
  33. package/med_editor/framework/element-reader.d.ts +3 -6
  34. package/med_editor/framework/element-render-cut.d.ts +2 -2
  35. package/med_editor/framework/element-trace-manage.d.ts +97 -0
  36. package/med_editor/framework/element-trace-tracking.d.ts +89 -0
  37. package/med_editor/framework/element-util.d.ts +20 -1
  38. package/med_editor/framework/event-subject.d.ts +43 -0
  39. package/med_editor/framework/impl/checkbox/checkbox-impl.d.ts +4 -8
  40. package/med_editor/framework/impl/comments/comment-content-impl.d.ts +7 -7
  41. package/med_editor/framework/impl/comments/comment-element-impl.d.ts +5 -8
  42. package/med_editor/framework/impl/comments/comments-container-impl.d.ts +6 -7
  43. package/med_editor/framework/impl/comments/comments-util.d.ts +2 -2
  44. package/med_editor/framework/impl/comments/validate-msg-impl.d.ts +5 -6
  45. package/med_editor/framework/impl/data-element/data-decorate-impl.d.ts +4 -14
  46. package/med_editor/framework/impl/data-element/data-element-barcode.d.ts +6 -9
  47. package/med_editor/framework/impl/data-element/data-element-base-impl.d.ts +18 -11
  48. package/med_editor/framework/impl/data-element/data-element-check-impl.d.ts +4 -14
  49. package/med_editor/framework/impl/data-element/data-element-date-impl.d.ts +5 -5
  50. package/med_editor/framework/impl/data-element/data-element-group-impl.d.ts +10 -10
  51. package/med_editor/framework/impl/data-element/data-element-image-impl.d.ts +8 -10
  52. package/med_editor/framework/impl/data-element/data-element-list-impl.d.ts +5 -5
  53. package/med_editor/framework/impl/data-element/data-element-text-impl.d.ts +5 -5
  54. package/med_editor/framework/impl/decorate/fill-null-space-imple.d.ts +4 -7
  55. package/med_editor/framework/impl/document/doc-body-impl.d.ts +4 -11
  56. package/med_editor/framework/impl/document/doc-body-part-impl.d.ts +4 -11
  57. package/med_editor/framework/impl/document/doc-container-impl.d.ts +2 -10
  58. package/med_editor/framework/impl/document/doc-footer-impl.d.ts +4 -11
  59. package/med_editor/framework/impl/document/doc-header-impl.d.ts +4 -11
  60. package/med_editor/framework/impl/document/doc-impl.d.ts +5 -12
  61. package/med_editor/framework/impl/index.d.ts +1 -1
  62. package/med_editor/framework/impl/media-formula/menstrual-history.d.ts +5 -8
  63. package/med_editor/framework/impl/paragraph/p-impl.d.ts +11 -20
  64. package/med_editor/framework/impl/picture/image-impl.d.ts +8 -10
  65. package/med_editor/framework/impl/radio/radio-impl.d.ts +5 -8
  66. package/med_editor/framework/impl/symbol/br-symbol-impl.d.ts +4 -7
  67. package/med_editor/framework/impl/symbol/p-symbol-impl.d.ts +3 -6
  68. package/med_editor/framework/impl/table/table-cell-impl.d.ts +4 -12
  69. package/med_editor/framework/impl/table/table-impl.d.ts +12 -17
  70. package/med_editor/framework/impl/table/table-row-impl.d.ts +4 -11
  71. package/med_editor/framework/impl/table/table-split-cell.d.ts +8 -6
  72. package/med_editor/framework/impl/text/text-impl.d.ts +11 -9
  73. package/med_editor/framework/impl/text/track-run-impl.d.ts +6 -7
  74. package/med_editor/framework/render-context.d.ts +42 -39
  75. package/med_editor/framework/render-define.d.ts +14 -13
  76. package/med_editor/texteditor.d.ts +42 -60
  77. package/package.json +2 -12
  78. package/lib/index-cjs.d.ts +0 -34
  79. package/med_editor/framework/document-history.d.ts +0 -26
@@ -3,10 +3,7 @@ import { SelectionState } from "./document-selection";
3
3
  import { BranchElement, Element, ImgLoadStatus, Rect, RefreshType, ViewOptions } from "./element-define";
4
4
  import { ElementEvent, EventTypes } from "./element-event-define";
5
5
  import { DataElementValueStruct } from "./element-serialize";
6
- import { DataElementInlineGroup, DataElementLeaf } from "./impl/data-element/data-element-base-impl";
7
- import { DataElementCheck } from "./impl/data-element/data-element-check-impl";
8
- import { DocumentElement } from "./impl/document/doc-impl";
9
- import { TrackRunElement, TrackRunTypeEnum } from "./impl/text/track-run-impl";
6
+ import { DataElementInlineGroup, DataElementLeaf, DataElementCheck, DocumentElement, TrackRunElement, TrackRunTypeEnum } from "./impl";
10
7
  import { DocumentChange } from "./document-change";
11
8
  /**
12
9
  * 当前打开的文档的上下文信息,当前文档所有的属性设置都暴露在上下文中
@@ -22,7 +19,9 @@ export declare class EditorContext {
22
19
  dynamicFunc: DocumentEvalFunc;
23
20
  docChange: DocumentChange;
24
21
  clearPrevDocCb: (() => void) | null;
22
+ paintedCallback: (() => void) | null;
25
23
  constructor(selectionState: SelectionState, viewOptions: ViewOptions);
24
+ setPaintedCallback(cb: (() => void) | null): void;
26
25
  get document(): DocumentElement;
27
26
  set document(value: DocumentElement);
28
27
  clear(): void;
@@ -51,7 +50,7 @@ export declare class EditorContext {
51
50
  * 替换数据元
52
51
  */
53
52
  replaceDataElement(oldDataElement: DataElementLeaf | DataElementInlineGroup, newElement: DataElementLeaf | DataElementInlineGroup, ss: SelectionState): void;
54
- get refreshType(): RefreshType;
53
+ get refreshType(): RefreshType | null;
55
54
  }
56
55
  export interface ImageSourceItem {
57
56
  src: string;
@@ -1,10 +1,11 @@
1
- import { Subject, Subscription } from "rxjs";
2
1
  import { DocumentPaint } from "./document-paint";
3
2
  import { SelectionState } from "./document-selection";
4
3
  import { LeafElement, Rect, Element, Position, ViewOptions } from "./element-define";
5
4
  import { ElementEvent, EventStage, EventTypes, HitEventInfo, HitRegion, ITrackTips, MouseElementEvent } from "./element-event-define";
6
5
  import { BorderType, CursorType, RenderObject } from "./render-define";
7
6
  import { EditorContext } from "./document-context";
7
+ import { Subject, Subscription } from "./event-subject";
8
+ import { DocumentInput } from "./document-input-cursor";
8
9
  interface EdgeRenderInfo {
9
10
  renderElement: Element;
10
11
  relativePos: Position;
@@ -18,9 +19,8 @@ interface EdgeRenderInfo {
18
19
  export declare class DocumentEvent {
19
20
  private canvas;
20
21
  private documentPaint;
21
- private viewOptions;
22
- private selectionState;
23
22
  private docCtx;
23
+ private documentInput;
24
24
  private ismousedown;
25
25
  startHitInfo: HitEventInfo | null;
26
26
  endHitInfo: HitEventInfo | null;
@@ -46,7 +46,9 @@ export declare class DocumentEvent {
46
46
  currentPos: Position;
47
47
  mousedownPos: Position;
48
48
  subs: Array<Subscription>;
49
- constructor(canvas: HTMLCanvasElement, documentPaint: DocumentPaint, viewOptions: ViewOptions, selectionState: SelectionState, docCtx: EditorContext);
49
+ selectionState: SelectionState;
50
+ viewOptions: ViewOptions;
51
+ constructor(canvas: HTMLCanvasElement, documentPaint: DocumentPaint, docCtx: EditorContext, documentInput: DocumentInput);
50
52
  private bindEvent;
51
53
  addSubEvent(sub: Subscription): void;
52
54
  clearSubEvent(): void;
@@ -54,6 +56,12 @@ export declare class DocumentEvent {
54
56
  private mousedown;
55
57
  private mouseup;
56
58
  private mousemove;
59
+ /**
60
+ * 根据缩放值,设置在绘制对象上的坐标位置
61
+ * @param evt
62
+ * @param viewEvt
63
+ */
64
+ private setEventViewPos;
57
65
  private prevTrackInfo;
58
66
  /**
59
67
  * 显示提示信息
@@ -138,6 +146,9 @@ export declare class DocumentEvent {
138
146
  * 触发事件
139
147
  * @param type
140
148
  * @param sourceElement
149
+ * @param event
150
+ * @param eventStage
151
+ * @param docCtx
141
152
  */
142
153
  static invokeEvent(type: EventTypes, sourceElement: Element, event: ElementEvent, eventStage: EventStage, docCtx: EditorContext): ElementEvent | null;
143
154
  /**
@@ -1,6 +1,6 @@
1
- import { Subject } from "rxjs";
2
1
  import { LeafElement } from "./element-define";
3
2
  import { EditorContext } from "./document-context";
3
+ import { Subject } from "./event-subject";
4
4
  export interface ICompositionStartInfo {
5
5
  element: LeafElement;
6
6
  offset: number;
@@ -19,10 +19,6 @@ export declare class DocumentInput {
19
19
  private editCursor;
20
20
  private cursorWrapper;
21
21
  private docCtx;
22
- /**
23
- * 光标是否可见
24
- */
25
- private _cursorVisibility;
26
22
  /**
27
23
  * 光标闪烁状态
28
24
  */
@@ -47,10 +43,6 @@ export declare class DocumentInput {
47
43
  onUpEvent: Subject<void>;
48
44
  onDownEvent: Subject<void>;
49
45
  constructor(editInput: HTMLInputElement, editCursor: HTMLSpanElement, cursorWrapper: HTMLDivElement, docCtx: EditorContext);
50
- /**
51
- * 设置光标闪烁
52
- */
53
- startCursorBlinks(): void;
54
46
  destroy(): void;
55
47
  /**
56
48
  * 设置光标闪烁
@@ -2,13 +2,12 @@ import { ElementMeasure } from "./element-measure";
2
2
  import { ElementPaint } from "./element-paint";
3
3
  import { ElementRenderCut } from "./element-render-cut";
4
4
  import { DocumentRenderObject } from "./impl/document/doc-impl";
5
- import { RenderContenxtType } from "./render-context";
6
- import { Element, SelectionContentRange, ViewOptions } from "./element-define";
5
+ import { RenderContextType } from "./render-context";
6
+ import { Element, SelectionContentRange } from "./element-define";
7
7
  import { DocumentContainerRender } from "./impl/document/doc-container-impl";
8
8
  import { CommsContainerRenderObject } from "./impl/comments/comments-container-impl";
9
9
  import { EditorContext } from "./document-context";
10
10
  export declare class DocumentPaint {
11
- private viewOptions;
12
11
  private renderContext;
13
12
  private docCtx;
14
13
  private selectedSets;
@@ -18,8 +17,25 @@ export declare class DocumentPaint {
18
17
  docPages: Array<DocumentRenderObject>;
19
18
  docContainer: DocumentContainerRender;
20
19
  commsContainer: CommsContainerRenderObject;
21
- constructor(viewOptions: ViewOptions, renderContext: RenderContenxtType, docCtx: EditorContext, selectedSets: Map<Element, SelectionContentRange>);
20
+ private viewOptions;
21
+ constructor(renderContext: RenderContextType, docCtx: EditorContext, selectedSets: Map<Element, SelectionContentRange>);
22
22
  rePages(): void;
23
+ /**
24
+ * 文档页面显示布局
25
+ * @param pages
26
+ */
27
+ layoutPages(): void;
28
+ /**
29
+ * 单页模式:完成文档页断页后,文档页排版
30
+ * 1.根据页面视图缩放设置
31
+ * 2.根据页面视窗总宽度,设置页面居中
32
+ */
33
+ private layoutSinglePages;
34
+ /**
35
+ * 多页模式
36
+ * @private
37
+ */
38
+ private layoutMultiPages;
23
39
  /**
24
40
  * 获取设置文档容器的总高度
25
41
  */
@@ -30,5 +46,5 @@ export declare class DocumentPaint {
30
46
  /***
31
47
  * 设置审阅区间样式痕迹
32
48
  */
33
- setCommRangeMark(): void;
49
+ private setCommRangeMark;
34
50
  }
@@ -3,7 +3,7 @@ import { DocumentPaint } from "./document-paint";
3
3
  import { ViewOptions } from "./element-define";
4
4
  import { ElementReader } from "./element-reader";
5
5
  import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
6
- import { RenderContenxt } from "./render-context";
6
+ import { RenderContextType } from "./render-context";
7
7
  /**
8
8
  * 离屏打印
9
9
  */
@@ -11,23 +11,15 @@ export declare abstract class DocumentPrintOffscreenBase {
11
11
  documentPaint: DocumentPaint;
12
12
  viewOptions: ViewOptions;
13
13
  docCtx: EditorContext;
14
- renderCtx: RenderContenxt;
14
+ renderCtx: RenderContextType;
15
15
  elementReader: ElementReader;
16
16
  constructor();
17
17
  print(data: any | DocumentElement, ranges?: Array<number> | null): Promise<void>;
18
- /**
19
- * 导出PDF
20
- * @param fileName
21
- * @param ss
22
- * @param viewOptions
23
- * @param docCtx
24
- * @param ranges
25
- */
26
- exportToPDF(data: any | DocumentElement, fileName: string, ranges?: Array<number> | null): Promise<void>;
27
18
  /**
28
19
  * 获取绘制的图片,格式为Base64编码
29
20
  */
30
21
  getImagesContent(data: any | DocumentElement, ranges?: Array<number> | null): Promise<Array<string>>;
22
+ getPrintNodes(data: any | DocumentElement, ranges?: Array<number> | null): Promise<Array<any>>;
31
23
  /**
32
24
  * 读取数据,排版
33
25
  * @param data
@@ -38,8 +30,10 @@ export declare abstract class DocumentPrintOffscreenBase {
38
30
  canvas: HTMLCanvasElement;
39
31
  ctx: CanvasRenderingContext2D;
40
32
  };
33
+ abstract createRenderCtx(mainCtx: CanvasRenderingContext2D, viewOptions: ViewOptions, docCtx: EditorContext): RenderContextType;
41
34
  }
42
35
  export declare class DocumentPrintOffscreen extends DocumentPrintOffscreenBase {
36
+ createRenderCtx(mainCtx: CanvasRenderingContext2D, viewOptions: ViewOptions, docCtx: EditorContext): RenderContextType;
43
37
  createCanvas(width: number, height: number): {
44
38
  canvas: HTMLCanvasElement;
45
39
  ctx: CanvasRenderingContext2D;
@@ -21,15 +21,6 @@ export declare class documentPrint {
21
21
  * @returns
22
22
  */
23
23
  static exportCanvasNodes(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges?: Array<number> | null): Array<HTMLCanvasElement>;
24
- /**
25
- * 导出PDF
26
- * @param fileName
27
- * @param ss
28
- * @param viewOptions
29
- * @param docCtx
30
- * @param printRanges
31
- */
32
- static exportPDF(fileName: string, ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges?: Array<number> | null): void;
33
24
  /**
34
25
  * 当前当前页
35
26
  * @param ss
@@ -50,11 +41,10 @@ declare type PrintPaperOptions = {
50
41
  * @returns
51
42
  */
52
43
  export declare function printNodes(printNodes: Array<Node>, options: PrintPaperOptions): void;
44
+ export {};
53
45
  /**
54
46
  * canvas节点导出到PDF
55
47
  * @param fileName
56
48
  * @param nodes
57
49
  * @param options
58
50
  */
59
- export declare function exportCanvasToPDF(fileName: string, nodes: Array<HTMLCanvasElement>, options: PrintPaperOptions): void;
60
- export {};
@@ -1,8 +1,8 @@
1
- import { Subject } from "rxjs";
2
1
  import { BranchElement, LeafElement, Rect, Element, SelectionContentRange } from "./element-define";
3
2
  import { HitEventInfo, HitRegion } from "./element-event-define";
4
3
  import { DocumentContainerRender } from "./impl/document/doc-container-impl";
5
4
  import { RenderObject } from "./render-define";
5
+ import { Subject } from "./event-subject";
6
6
  export declare class DocumentSelection {
7
7
  constructor();
8
8
  selectionState: SelectionState;
@@ -57,7 +57,6 @@ export declare class SelectionState {
57
57
  editable: boolean;
58
58
  renderContainer: DocumentContainerRender;
59
59
  cursorPos: Rect | null;
60
- afterSelectionChanged: ((newVal: SelectionState) => boolean) | null;
61
60
  enableTrackChanges: boolean;
62
61
  constructor();
63
62
  clear(): void;
@@ -1,7 +1,7 @@
1
1
  import { ViewOptions, Element } from "./element-define";
2
- import { RenderContenxtType } from "./render-context";
2
+ import { RenderContextType } from "./render-context";
3
3
  /**
4
4
  * 文字行渲染模式
5
5
  用于医嘱打印模式
6
6
  */
7
- export declare function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContenxtType): void;
7
+ export declare function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContextType): void;
@@ -1,7 +1,7 @@
1
- import { Subject, Subscription } from "rxjs";
2
1
  import { ElementEvent, EventTypes } from "./element-event-define";
3
- import { RenderContenxtType } from "./render-context";
2
+ import { RenderContextType } from "./render-context";
4
3
  import { CursorType, LeafRenderObject, RenderObject } from "./render-define";
4
+ import { Subject, Subscription } from "./event-subject";
5
5
  export declare class Rect {
6
6
  x: number;
7
7
  y: number;
@@ -57,6 +57,8 @@ export declare abstract class Element<P extends object = any> {
57
57
  * 2.编辑页眉页脚的能力
58
58
  */
59
59
  disableClick: boolean;
60
+ disposed: boolean;
61
+ loaded: boolean;
60
62
  private _parent;
61
63
  get parent(): BranchElement;
62
64
  set parent(val: BranchElement);
@@ -65,11 +67,11 @@ export declare abstract class Element<P extends object = any> {
65
67
  set props(value: P);
66
68
  private notifyChanged;
67
69
  constructor(type: string);
68
- abstract createRenderObject(options: ViewOptions, renderCtx: RenderContenxtType): RenderObject | null;
70
+ abstract createRenderObject(options: ViewOptions, renderCtx: RenderContextType): RenderObject | null;
69
71
  abstract serialize(viewOptions: ViewOptions): SerializeProps | null;
70
72
  abstract clone(data: boolean): Element;
71
73
  abstract getChildLength(): number;
72
- abstract getSelfLength(): number;
74
+ abstract getSelfLength(pure: boolean): number;
73
75
  destroy(): void;
74
76
  addEvent<T extends ElementEvent>(event: EventTypes, handle: (evt: T) => void, useCapture?: boolean): string;
75
77
  removeEvent(eventId: string): void;
@@ -95,7 +97,7 @@ export declare abstract class LeafElement<P extends object = any> extends Elemen
95
97
  cursorType: CursorType;
96
98
  getChildLength(): number;
97
99
  destroy(): void;
98
- getSelfLength(): number;
100
+ getSelfLength(pure: boolean): number;
99
101
  pubOnChange(selfChange: pubChangeType): void;
100
102
  }
101
103
  /**
@@ -115,7 +117,7 @@ export declare abstract class BranchElement<P extends object = any> extends Elem
115
117
  getChild<T extends Element = Element>(index: number): T;
116
118
  getChildIndex(child: Element): number;
117
119
  getChildLength(): number;
118
- getSelfLength(): number;
120
+ getSelfLength(pure: boolean): number;
119
121
  treeFilter(predicate: (item: Element, index: number) => boolean): Array<Element>;
120
122
  treeFind(predicate: (item: Element, index: number) => boolean): Element | null;
121
123
  pubOnChange(selfChange: pubChangeType): void;
@@ -145,7 +147,8 @@ export interface readElementProps<T> {
145
147
  export declare abstract class ElementFactory<T = null> {
146
148
  options: ViewOptions;
147
149
  abstract match(type: string): boolean;
148
- abstract createElement(data: readElementProps<T>, renderCtx: RenderContenxtType): Element;
150
+ abstract createElement(data: readElementProps<T>, renderCtx: RenderContextType): Element;
151
+ readCompleted(ele: Element, children: Array<Element>): void;
149
152
  }
150
153
  export interface SelectionContentRange {
151
154
  target: Element;
@@ -239,9 +242,10 @@ export declare class ViewOptions {
239
242
  devMode: boolean;
240
243
  showDebug: boolean;
241
244
  resourceMode: 'lazy' | 'immediate';
242
- serverMode: boolean;
243
245
  secretBrowse: boolean;
244
246
  chineseLayout: boolean;
247
+ enableTrackHistory: boolean;
248
+ trackHistoryMaxLength: number;
245
249
  private _fullPageView;
246
250
  get fullPageView(): boolean;
247
251
  set fullPageView(value: boolean);
@@ -254,7 +258,9 @@ export declare class ViewOptions {
254
258
  height: number;
255
259
  };
256
260
  pageNumFormat: string;
257
- get viewPaintHeight(): number;
261
+ pageNumOffset: number;
262
+ pageLayoutMode: 'singlePage' | 'multiPage' | 'fit-page';
263
+ get contentWidth(): number;
258
264
  /**
259
265
  * 内容区域的高度
260
266
  * 同时限定canvas的最小宽度
@@ -269,7 +275,6 @@ export declare class ViewOptions {
269
275
  get scale(): number;
270
276
  set scale(val: number);
271
277
  docMode: DocMode;
272
- enableUndo: boolean;
273
278
  private _showTrackChanges;
274
279
  get showTrackChanges(): boolean;
275
280
  set showTrackChanges(value: boolean);
@@ -317,3 +322,6 @@ export interface ICancelTokenFn {
317
322
  cancel?: () => void;
318
323
  onFinish?: () => void;
319
324
  }
325
+ declare type IVoidFn = () => void;
326
+ export declare function onceTask(fn: IVoidFn): IVoidFn;
327
+ export {};
@@ -3,7 +3,7 @@ import { FillNullSpaceRenderObject } from "./impl/decorate/fill-null-space-imple
3
3
  import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
4
4
  import { ParagraphElement, ParagraphLineRectRenderObject, ParagraphRenderObject } from "./impl/paragraph/p-impl";
5
5
  import { TextGroupRenderObject } from "./impl/text/text-impl";
6
- import { RenderContenxtType } from "./render-context";
6
+ import { RenderContextType } from "./render-context";
7
7
  import { InlineGroupRenderObject, RenderObject } from "./render-define";
8
8
  interface ICutLineData {
9
9
  firstItem: RenderObject | null;
@@ -16,7 +16,7 @@ interface ICutLineData {
16
16
  export declare class ElementMeasure {
17
17
  private options;
18
18
  private renderCtx;
19
- constructor(options: ViewOptions, renderCtx: RenderContenxtType);
19
+ constructor(options: ViewOptions, renderCtx: RenderContextType);
20
20
  measureDocument(document: DocumentElement): DocumentRenderObject;
21
21
  measureControl(element: Element, maxWidth: number): RenderObject | null;
22
22
  /**
@@ -1,20 +1,22 @@
1
- import { RenderContenxtType } from "./render-context";
2
- import { Element, LeafElement, Position, SelectionContentRange, ViewOptions } from "./element-define";
3
- import { LeafRenderObject, RenderObject } from "./render-define";
4
- import { DocumentContainerRender } from "./impl/document/doc-container-impl";
5
- import { CommentElement } from "./impl/comments/comment-element-impl";
6
- import { CommsContainerRenderObject } from "./impl/comments/comments-container-impl";
1
+ import { RenderContextType } from "./render-context";
2
+ import { Element, Position, SelectionContentRange, ViewOptions } from "./element-define";
3
+ import { RenderObject } from "./render-define";
4
+ import { DocumentContainerRender } from "./impl";
5
+ import { CommentElement } from "./impl";
6
+ import { CommsContainerRenderObject } from "./impl";
7
+ import { EditorContext } from "./document-context";
7
8
  export interface PrintOptions {
8
9
  beforePrintPage: (pageIndex: number, pageCount: number) => void;
9
10
  afterPrintPage: (pageIndex: number, pageCount: number) => void;
10
11
  }
11
12
  export declare class ElementPaint {
12
- private viewOptions;
13
13
  private renderCtx;
14
+ private docCtx;
14
15
  private selectedSets;
15
16
  private measureCommContainer;
16
17
  private rePaint;
17
- constructor(viewOptions: ViewOptions, renderCtx: RenderContenxtType);
18
+ viewOptions: ViewOptions;
19
+ constructor(renderCtx: RenderContextType, docCtx: EditorContext);
18
20
  paintCommMap: Array<{
19
21
  ele: CommentElement;
20
22
  render: RenderObject;
@@ -33,10 +35,8 @@ export declare class ElementPaint {
33
35
  x: number;
34
36
  y: number;
35
37
  }): void;
36
- static drawPage(renderCtx: RenderContenxtType, renderObject: RenderObject, parent: {
38
+ static drawPage(renderCtx: RenderContextType, docCtx: EditorContext, renderObject: RenderObject, parent: {
37
39
  x: number;
38
40
  y: number;
39
41
  }): void;
40
- getLeafElementPaintMap(element: LeafElement, shadowRenderIndex?: number): LeafRenderObject;
41
- getShadowRenderIndex(element: LeafElement, render: LeafRenderObject): number;
42
42
  }
@@ -3,10 +3,10 @@ import { TrackRunTypeEnum } from "./impl/text/track-run-impl";
3
3
  export declare type TextVertAlign = 'superscript' | 'subscript';
4
4
  export declare abstract class INotifyPropertyChanged {
5
5
  abstract getSerializeProps(viewOptions: ViewOptions): any;
6
- private __attatchProperty;
7
- registerProperty<T>(propertyName: string, value: T): void;
6
+ private __attachedProperty;
7
+ setProperty<T>(propertyName: string, value: T): void;
8
8
  removeProperty(propertyName: string): void;
9
- getProperty<T>(propertyName: string): T;
9
+ getProperty<T>(propertyName: string): T | null;
10
10
  }
11
11
  export declare class TextProps extends INotifyPropertyChanged {
12
12
  constructor();
@@ -89,21 +89,19 @@ export declare class TableRowProps extends INotifyPropertyChanged {
89
89
  }
90
90
  export declare type TableAlignment = 'start' | 'end' | 'center';
91
91
  export declare class TableProps extends INotifyPropertyChanged {
92
+ id: string;
92
93
  width: number | string;
93
- cols: Array<{
94
- width: number | string;
95
- }>;
94
+ cols: Array<number | string>;
96
95
  alignment: TableAlignment;
97
96
  border: 'all' | 'none';
98
97
  allowBreakRow: boolean;
99
98
  clone(dest: TableProps): TableProps;
100
99
  getSerializeProps(viewOptions: ViewOptions): {
100
+ id: string;
101
101
  width: string | number;
102
- cols: {
103
- width: string | number;
104
- }[];
102
+ cols: (string | number)[];
105
103
  alignment: TableAlignment;
106
- border: "all" | "none";
104
+ border: "none" | "all";
107
105
  };
108
106
  }
109
107
  export declare type CellMergeType = 'col-merge' | 'row-merge';
@@ -1,19 +1,16 @@
1
1
  import { EditorContext } from "./document-context";
2
- import { ElementFactory, Element, ViewOptions } from "./element-define";
2
+ import { ElementFactory, Element } from "./element-define";
3
3
  import { DocumentElement } from "./impl/document/doc-impl";
4
- import { RenderContenxtType } from "./render-context";
4
+ import { RenderContextType } from "./render-context";
5
5
  export declare class ElementReader {
6
6
  private docCtx;
7
- private viewOptions;
8
7
  private renderCtx;
9
- constructor(docCtx: EditorContext, viewOptions: ViewOptions, renderCtx: RenderContenxtType);
8
+ constructor(docCtx: EditorContext, renderCtx: RenderContextType);
10
9
  factories: Array<ElementFactory>;
11
10
  addFactory<U extends null | object, T extends ElementFactory<U>>(c: new () => T): void;
12
11
  private initFactory;
13
12
  read(data: any | DocumentElement): void;
14
13
  setDocument(document: DocumentElement): void;
15
14
  readElement(data: any): Element;
16
- propsReadFuncs: Map<string, (data: any) => any>;
17
- registerReadFunc<T>(propName: string, func: (data: T) => T): void;
18
15
  readExtendsProps(data: any, element: Element): void;
19
16
  }
@@ -1,6 +1,6 @@
1
1
  import { DocumentBodyRenderObject } from "./impl/document/doc-body-impl";
2
2
  import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
3
- import { RenderContenxtType } from "./render-context";
3
+ import { RenderContextType } from "./render-context";
4
4
  import { BlockContentRenderObject } from "./render-define";
5
5
  import { Rect, ViewOptions } from "./element-define";
6
6
  import { TableRowRenderObject } from "./impl/table/table-row-impl";
@@ -9,7 +9,7 @@ import { TableRenderObject } from "./impl/table/table-impl";
9
9
  export declare class ElementRenderCut {
10
10
  private options;
11
11
  private renderContext;
12
- constructor(options: ViewOptions, renderContext: RenderContenxtType);
12
+ constructor(options: ViewOptions, renderContext: RenderContextType);
13
13
  cutPage(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject>;
14
14
  private checkPageBreak;
15
15
  getFullViewDocRender(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject>;
@@ -0,0 +1,97 @@
1
+ import { EditorContext } from './document-context';
2
+ import { Element } from './element-define';
3
+ import { ElementReader } from './element-reader';
4
+ import { DeleteEleOpsDelta, DeleteTextOpsDelta, FormatOpsDelta, InsertOpsDelta, InsertTextOpsDelta, opsTrackModel } from './element-trace-tracking';
5
+ declare type HistoryCommand = 'undo' | 'redo';
6
+ declare type HistoryChanges = {
7
+ date: Date;
8
+ ops: Array<opsTrackModel>;
9
+ beforeSelection: SelectionLog | null;
10
+ afterSelection: SelectionLog | null;
11
+ };
12
+ /**
13
+ * 处理撤销回滚等行为
14
+ */
15
+ export declare class ElementTrackManage {
16
+ docCtx: EditorContext;
17
+ reader: ElementReader;
18
+ actions: Array<HistoryChanges>;
19
+ index: number;
20
+ selectionLog: SelectionLog | null;
21
+ constructor(docCtx: EditorContext, reader: ElementReader);
22
+ /**
23
+ * 生成变更之前的选区数据
24
+ */
25
+ generateSelectionLog(): void;
26
+ clear(): void;
27
+ /**
28
+ * 生成留痕的信息
29
+ */
30
+ generateTrack(): void;
31
+ private getSelection;
32
+ /**
33
+ * 执行撤销
34
+ */
35
+ undo(): void;
36
+ /**
37
+ * 是否可以撤销
38
+ */
39
+ get canUndo(): boolean;
40
+ /**
41
+ * 是否可以重做
42
+ */
43
+ get canRedo(): boolean;
44
+ /**
45
+ * 执行重做
46
+ */
47
+ redo(): void;
48
+ private executeCommand;
49
+ /**
50
+ * 还原光标
51
+ * @param ssLog
52
+ * @returns
53
+ */
54
+ restoreSelection(ssLog: SelectionLog | null): void;
55
+ /**
56
+ * 撤销文本输入操作
57
+ */
58
+ commandForInsertTextOp(command: HistoryCommand, data: opsTrackModel<InsertTextOpsDelta>): void;
59
+ /**
60
+ * 撤销文本删除操作
61
+ * @param command
62
+ * @param data
63
+ */
64
+ commandForDeleteTextOp(command: HistoryCommand, data: opsTrackModel<DeleteTextOpsDelta>): void;
65
+ /**
66
+ * 撤销元素属性修改操作
67
+ */
68
+ commandForEleFormat(command: HistoryCommand, data: opsTrackModel<FormatOpsDelta>): void;
69
+ /**
70
+ * 撤销删除元素的操作
71
+ * @param command
72
+ * @param data
73
+ */
74
+ commandForDeleteEleOp(command: HistoryCommand, data: opsTrackModel<DeleteEleOpsDelta>): void;
75
+ /**
76
+ * 撤销插入的元素
77
+ * @param command
78
+ * @param data
79
+ */
80
+ commandForInsertEleOp(command: HistoryCommand, data: opsTrackModel<InsertOpsDelta>): void;
81
+ private restoreToInsert;
82
+ /**
83
+ * 更新属性
84
+ * @param currProps
85
+ * @param newProps
86
+ */
87
+ updateProps(currProps: object, newProps: object): void;
88
+ getControl<T extends Element>(index: number, pure?: boolean): T;
89
+ }
90
+ interface SelectionLog {
91
+ startIndex: number;
92
+ startOffset: number;
93
+ endIndex: number;
94
+ endOffset: number;
95
+ editable: boolean;
96
+ }
97
+ export {};