@hailin-zheng/editor-core 2.1.18 → 2.1.19

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.
@@ -44,6 +44,7 @@ export declare class DocEditor {
44
44
  onDestroy: Subject<void>;
45
45
  beforeNodePatch: Subject<void>;
46
46
  afterNodePatch: Subject<void>;
47
+ private eventBus;
47
48
  private editInput;
48
49
  private scrollContainer;
49
50
  constructor(svgContainer: HTMLElement);
@@ -434,6 +435,7 @@ export declare class DocEditor {
434
435
  version(): string;
435
436
  switchPageHeaderEditor(): void;
436
437
  getTextContent(): string;
438
+ emit(event: string, args: any): void;
437
439
  }
438
440
  export interface IReaderManager {
439
441
  }
@@ -1,9 +1,13 @@
1
1
  import { EditorVNodeObject } from "./framework/render-define";
2
+ import { SelectionState } from "./framework/document-selection";
2
3
  export declare type EditorContext = {
3
4
  onChange: () => void;
5
+ emit: (event: string, ...args: any[]) => void;
6
+ selectionState: SelectionState;
4
7
  };
5
8
  export declare let activeEditorContext: EditorContext | null;
6
9
  export declare function setActiveEditorContext(ctx: EditorContext | null): void;
10
+ export declare function getActiveEditorContext(): EditorContext | null;
7
11
  export declare type IVNodeRenderFunc = {
8
12
  render: () => EditorVNodeObject | null;
9
13
  };
@@ -37,6 +37,7 @@ export declare class CommonUtil {
37
37
  static resharpPoints(points: Array<Position>): Array<Position>;
38
38
  static getOffsetX(node: HTMLElement): number;
39
39
  static randomColor(): string;
40
+ static randomRgbColor(opacity?: number): string;
40
41
  /**
41
42
  * 判断一个数值是否在另一个数值的增益区间中
42
43
  * @param val
@@ -1,13 +1,15 @@
1
1
  import { Element, IBeginMeasureData, ViewOptions } from "./element-define";
2
2
  import { EditorContext } from "./document-context";
3
3
  import { RenderContextType } from "./render-context";
4
- import { CommsContainerRenderObject, DocumentRenderObject, ParagraphElement, TableCellRenderObject, TableRenderObject, TableRowRenderObject } from "./impl";
4
+ import { DocumentRenderObject, ParagraphElement, TableCellRenderObject, TableRenderObject, TableRowRenderObject } from "./impl";
5
5
  import { BlockContentRenderObject, BranchRenderObject } from "./render-define";
6
+ import { SelectionEffectObject } from "./element-props";
6
7
  export declare class DocumentArrange {
7
8
  docCtx: EditorContext;
8
9
  renderCtx: RenderContextType;
10
+ seo: SelectionEffectObject;
9
11
  options: ViewOptions;
10
- constructor(docCtx: EditorContext, renderCtx: RenderContextType);
12
+ constructor(docCtx: EditorContext, renderCtx: RenderContextType, seo: SelectionEffectObject);
11
13
  /**
12
14
  * 测量排版过程
13
15
  * 1.先测量排版页眉、页脚
@@ -18,7 +20,6 @@ export declare class DocumentArrange {
18
20
  * 3.2完成页体子内容测量,并分页切分
19
21
  */
20
22
  measureDoc(): Array<DocumentRenderObject>;
21
- commentsRender: CommsContainerRenderObject;
22
23
  private arrangeDoc;
23
24
  private createEmptyBodyRender;
24
25
  private measureControl;
@@ -36,7 +37,6 @@ export declare class DocumentArrange {
36
37
  * 切割渲染元素
37
38
  * @param tbRender 被切割的对象
38
39
  * @param limitHeight
39
- * @param addFunc
40
40
  * @returns
41
41
  */
42
42
  cutTable(tbRender: TableRenderObject, limitHeight: number): BlockContentRenderObject | null;
@@ -66,6 +66,11 @@ export declare class DocumentArrange {
66
66
  identifyComment(ele: Element): void;
67
67
  private cacheDoc;
68
68
  cacheDocRenders(docs: Array<DocumentRenderObject>): void;
69
+ /**
70
+ * 生成批注区间信息
71
+ * @param renderTree
72
+ */
73
+ generateCommRange(): void;
69
74
  cacheRenders(renderTree: BranchRenderObject): void;
70
75
  /**
71
76
  * 缓存批注标志
@@ -15,7 +15,6 @@ export declare class EditorContext {
15
15
  cursorRect: Rect | null;
16
16
  private _document;
17
17
  syncRefresh: () => void;
18
- imageLoader: IImageLoader;
19
18
  dynamicFunc: DocumentEvalFunc;
20
19
  docChange: DocumentChange;
21
20
  clearPrevDocCb: (() => void) | null;
@@ -55,13 +54,6 @@ export interface ImageSourceItem {
55
54
  ele: HTMLImageElement;
56
55
  loadStatus: ImgLoadStatus;
57
56
  }
58
- export interface IImageLoader {
59
- clear(): void;
60
- loadImage(src: string, onCallback: (status: ImgLoadStatus) => void): void;
61
- getImage(src: string): HTMLImageElement | undefined;
62
- imagesLoadCompleted(): boolean;
63
- getLoadTasks(): Array<Promise<void>>;
64
- }
65
57
  /**
66
58
  * 文档上下文
67
59
  */
@@ -1,22 +1,22 @@
1
1
  import { ElementPaint } from "./element-paint";
2
2
  import { DocumentRenderObject } from "./impl";
3
3
  import { RenderContextType } from "./render-context";
4
- import { Element, SelectionContentRange } from "./element-define";
5
4
  import { DocumentContainerRender } from "./impl";
6
5
  import { EditorContext } from "./document-context";
7
6
  import { ElementMeasure } from "./element-measure";
8
7
  import { ElementRenderCut } from "./element-render-cut";
8
+ import { SelectionEffectObject } from "./element-props";
9
9
  export declare class DocumentPaint {
10
10
  private renderContext;
11
11
  private docCtx;
12
- private selectedSets;
12
+ private seo;
13
13
  elementMeasure: ElementMeasure;
14
14
  elementRenderCut: ElementRenderCut;
15
15
  elementPaint: ElementPaint;
16
16
  docPages: Array<DocumentRenderObject>;
17
17
  docContainer: DocumentContainerRender;
18
18
  private viewOptions;
19
- constructor(renderContext: RenderContextType, docCtx: EditorContext, selectedSets: Map<Element, SelectionContentRange>);
19
+ constructor(renderContext: RenderContextType, docCtx: EditorContext, seo: SelectionEffectObject);
20
20
  rePages(): void;
21
21
  /**
22
22
  * 文档页面显示布局
@@ -26,21 +26,21 @@ export declare abstract class DocumentPrintOffscreenBase {
26
26
  beforePrint: Subject<void>;
27
27
  afterPrint: Subject<void>;
28
28
  constructor();
29
- print(data: any | DocumentElement, ranges?: Array<number> | null): Promise<void>;
29
+ print(data: any | DocumentElement, ranges?: Array<number> | null): void;
30
30
  /**
31
31
  * 续打
32
32
  */
33
33
  printForContinuation(data: any | DocumentElement, options: {
34
34
  startY: number;
35
35
  startDocIndex: number;
36
- }): Promise<void>;
37
- getPrintNodes(data: any | DocumentElement, ranges?: Array<number> | null): Promise<Array<string>>;
36
+ }): void;
37
+ getPrintNodes(data: any | DocumentElement, ranges?: Array<number> | null): Array<string>;
38
38
  Encode64(str: any): string;
39
39
  /**
40
40
  * 读取数据,排版
41
41
  * @param data
42
42
  */
43
- private prepare;
43
+ prepare(data: any | DocumentElement): void;
44
44
  getSvgNodes(docRenders: Array<DocumentRenderObject>, printRanges?: Array<number> | null): Array<string>;
45
45
  abstract createCanvas(width: number, height: number): {
46
46
  canvas: HTMLCanvasElement;
@@ -1,16 +1,18 @@
1
- import { Element, Position, Rect, SelectionContentRange, ViewOptions } from "./element-define";
1
+ import { Position, Rect, ViewOptions } from "./element-define";
2
2
  import { DocumentRenderObject } from "./impl";
3
3
  import { EditorVNodeObject, RenderObject } from "./render-define";
4
4
  import { RenderContext } from "./render-context";
5
+ import { SelectionEffectObject } from "./element-props";
5
6
  export declare class DocumentSvg {
6
7
  viewOptions: ViewOptions;
7
- selectedSets: Map<Element, SelectionContentRange>;
8
+ sso: SelectionEffectObject;
8
9
  renderCtx: RenderContext;
9
10
  highlights: Array<EditorVNodeObject>;
10
11
  mode: 'view' | 'print';
11
12
  pagePos: Position;
12
- constructor(viewOptions: ViewOptions, selectedSets: Map<Element, SelectionContentRange>, renderCtx: RenderContext);
13
- getVNode(render: RenderObject, selectionRects: Array<Rect>, parentPos: Position): EditorVNodeObject | Array<EditorVNodeObject> | null | string;
13
+ constructor(viewOptions: ViewOptions, sso: SelectionEffectObject, renderCtx: RenderContext);
14
+ getVNode(render: RenderObject, selectionRects: Array<SelectionMaskRect>, parentPos: Position): EditorVNodeObject | Array<EditorVNodeObject> | null | string;
15
+ createSelectionRect(render: RenderObject, selectionRects: Array<SelectionMaskRect>, currPos: Rect): void;
14
16
  getHTMLVNode(docRenders: Array<DocumentRenderObject>): Array<EditorVNodeObject>;
15
17
  /**
16
18
  * 判断当前元素是否在视窗内
@@ -24,3 +26,7 @@ export declare class DocumentSvg {
24
26
  changeTips: Array<EditorVNodeObject>;
25
27
  addChangeTips(tipVNode: EditorVNodeObject): void;
26
28
  }
29
+ interface SelectionMaskRect extends Rect {
30
+ color?: string;
31
+ }
32
+ export {};
@@ -300,9 +300,7 @@ export declare class ViewOptions {
300
300
  */
301
301
  get ContentWidth(): number;
302
302
  docSpace: number;
303
- private _showReviewWindow;
304
- get showReviewWindow(): boolean;
305
- set showReviewWindow(value: boolean);
303
+ showReviewWindow: boolean;
306
304
  reviewWindowWidth: number;
307
305
  private _scale;
308
306
  get scale(): number;
@@ -1,4 +1,4 @@
1
- import { NullableType, OrientType, PaddingProps, TextAlign, ViewOptions } from "./element-define";
1
+ import { Element, NullableType, OrientType, PaddingProps, SelectionContentRange, TextAlign, ViewOptions } from "./element-define";
2
2
  import { TrackRunTypeEnum } from "./impl/text/track-run-impl";
3
3
  export declare type TextVertAlign = 'superscript' | 'subscript';
4
4
  export declare abstract class INotifyPropertyChanged {
@@ -208,18 +208,28 @@ export declare class CommContentProps extends INotifyPropertyChanged {
208
208
  createId: string;
209
209
  createName: string;
210
210
  createDate: Date;
211
+ text: string;
211
212
  clone(dest: CommContentProps): CommContentProps;
212
213
  getSerializeProps(viewOptions: ViewOptions): {
213
214
  id: string;
215
+ text: string;
214
216
  };
215
217
  }
216
218
  export declare class CommProps extends INotifyPropertyChanged {
217
219
  id: string;
218
220
  markType: "start" | "end";
221
+ text: string;
222
+ userId: string;
223
+ userName: string;
224
+ date: string;
219
225
  clone(dest: CommProps): CommProps;
220
226
  getSerializeProps(viewOptions: ViewOptions): {
221
227
  id: string;
222
228
  markType: "start" | "end";
229
+ text: string;
230
+ userId: string;
231
+ userName: string;
232
+ date: string;
223
233
  };
224
234
  }
225
235
  export declare const trueChar = "\u2713";
@@ -323,4 +333,8 @@ export declare class BodyPartProps extends INotifyPropertyChanged {
323
333
  partId: string;
324
334
  getSerializeProps(viewOptions: ViewOptions): any;
325
335
  }
336
+ export interface SelectionEffectObject {
337
+ selectionEleSets: Map<Element, SelectionContentRange>;
338
+ commRangeSets: Map<Element, SelectionContentRange>;
339
+ }
326
340
  export {};
@@ -9,6 +9,11 @@ export declare class ElementReader {
9
9
  private initFactory;
10
10
  read(data: any | DocumentElement): void;
11
11
  setDocument(document: DocumentElement): void;
12
- readElement(data: any): Element;
12
+ readElement(data: any, strictMode?: boolean): Element | null;
13
+ /**
14
+ * 读取扩展属性
15
+ * @param data
16
+ * @param element
17
+ */
13
18
  readExtendsProps(data: any, element: Element): void;
14
19
  }
@@ -1,3 +1,4 @@
1
+ declare type EventHandler<T = void> = (data: T) => void;
1
2
  /**
2
3
  * 订阅者
3
4
  */
@@ -45,3 +46,11 @@ export declare class SubjectSubscription extends Subscription {
45
46
  unsubscribe(): void;
46
47
  }
47
48
  export declare function fromEvent<T extends Event>(dom: Node, type: string): DOMEventSource<T>;
49
+ export declare class EventBus {
50
+ private subs;
51
+ on(event: string, handler: EventHandler): void;
52
+ off(event: string): void;
53
+ emit(event: string, data: any): void;
54
+ clear(): void;
55
+ }
56
+ export {};
@@ -2,6 +2,7 @@ import { Element, ElementFactory, LeafElement, readElementProps, SerializeProps,
2
2
  import { CommProps } from "../../element-props";
3
3
  import { IEditorVNodeOptions, IRenderData, LeafRenderObject, RenderObject } from "../../render-define";
4
4
  export declare class CommentElement extends LeafElement<CommProps> {
5
+ color: string;
5
6
  constructor();
6
7
  createRenderObject(): RenderObject;
7
8
  serialize(viewOptions: ViewOptions): SerializeProps | null;
@@ -11,6 +12,12 @@ export declare class CommentRenderObject extends LeafRenderObject<CommentElement
11
12
  render(e: IRenderData): void;
12
13
  exportHTML(event: IEditorVNodeOptions): any;
13
14
  clone(): RenderObject;
15
+ private createCommentTips;
16
+ /**
17
+ * 显示批注范围
18
+ * @private
19
+ */
20
+ private showCommentRange;
14
21
  }
15
22
  export declare class CommentFactory extends ElementFactory<CommProps> {
16
23
  match(type: string): boolean;
@@ -1,32 +1,12 @@
1
1
  import { BlockContainerElement, Element, ElementFactory, ICreateRenderData, SelectionContentRange, SerializeProps, ViewOptions } from "../../element-define";
2
2
  import { BlockContainerRenderObject, IEditorVNodeOptions, IRenderData, RenderObject } from "../../render-define";
3
- import { CommContentElement, CommentRangeStatus } from "./comment-content-impl";
4
- import { CommentElement, CommentRenderObject } from "./comment-element-impl";
3
+ import { CommentRangeStatus } from "./comment-content-impl";
4
+ import { CommentRenderObject } from "./comment-element-impl";
5
5
  export declare class CommsContainerElement extends BlockContainerElement {
6
6
  constructor();
7
7
  createRenderObject(data: ICreateRenderData): RenderObject;
8
8
  serialize(viewOptions: ViewOptions): SerializeProps;
9
9
  clone(data: boolean): Element;
10
- markPairs: Array<{
11
- id: string;
12
- start?: CommentElement;
13
- end?: CommentElement;
14
- }>;
15
- /**
16
- * 清除所有的批注标识组合
17
- */
18
- clearMarkItems(): void;
19
- identifyCommMark(markElement: CommentElement): void;
20
- /**
21
- * 根据id,移除批注标记以及批注内容
22
- * @param id
23
- */
24
- removeCommMark(id: string): void;
25
- /**
26
- * 清除所有批注
27
- */
28
- clearAllComms(): void;
29
- getCommContent(id: string): CommContentElement | null;
30
10
  }
31
11
  export declare class CommsContainerRenderObject extends BlockContainerRenderObject {
32
12
  isMeasureComm: boolean;
@@ -2,7 +2,6 @@ import { Element, ElementFactory, ImgLoadStatus, readElementProps, ResizeLeafRen
2
2
  import { DataEleImageProps } from "../../element-props";
3
3
  import { IEditorVNodeOptions, IRenderData, LeafRenderObject, RenderObject } from "../../render-define";
4
4
  import { DataElementLeaf } from "./data-element-base-impl";
5
- import { EditorContext } from "../../document-context";
6
5
  export declare class DataElementImage extends DataElementLeaf<DataEleImageProps> {
7
6
  status: ImgLoadStatus;
8
7
  resizeable: boolean;
@@ -10,7 +9,6 @@ export declare class DataElementImage extends DataElementLeaf<DataEleImageProps>
10
9
  createRenderObject(): LeafRenderObject;
11
10
  serialize(options: ViewOptions): SerializeProps;
12
11
  clone(data: boolean): Element;
13
- loadImage(ctx: EditorContext): void;
14
12
  destroy(): void;
15
13
  setValue(val: any): void;
16
14
  getValue(): string;
@@ -5,14 +5,13 @@ import { DocumentBodyElement } from "./doc-body-impl";
5
5
  import { DocumentHeaderElement } from "./doc-header-impl";
6
6
  import { BlockContainerRenderObject, IEditorVNodeOptions, IRenderData, RenderObject } from "../../render-define";
7
7
  import { DocumentFooterElement } from "./doc-footer-impl";
8
- import { CommsContainerElement } from "../comments/comments-container-impl";
9
8
  import { SelectionState } from "../../document-selection";
9
+ import { CommentElement } from "../comments/comment-element-impl";
10
10
  export declare class DocumentElement extends BlockContainerElement<DocumentProps> {
11
11
  viewOptions: ViewOptions;
12
12
  bodyElement: DocumentBodyElement;
13
13
  headerElement: DocumentHeaderElement;
14
14
  footerElement: DocumentFooterElement;
15
- commentsContainerElement: CommsContainerElement;
16
15
  headerEditState: boolean;
17
16
  constructor();
18
17
  createRenderObject(): DocumentRenderObject;
@@ -27,6 +26,25 @@ export declare class DocumentElement extends BlockContainerElement<DocumentProps
27
26
  * 切换开启页眉页脚编辑功能
28
27
  */
29
28
  switchPageHeaderEditor(ss: SelectionState, ele: Element | null): void;
29
+ markPairs: Array<{
30
+ id: string;
31
+ start?: CommentElement;
32
+ end?: CommentElement;
33
+ }>;
34
+ /**
35
+ * 清除所有的批注标识组合
36
+ */
37
+ clearMarkItems(): void;
38
+ identifyCommMark(markElement: CommentElement): void;
39
+ /**
40
+ * 根据id,移除批注标记以及批注内容
41
+ * @param id
42
+ */
43
+ removeCommMark(id: string): void;
44
+ /**
45
+ * 清除所有批注
46
+ */
47
+ clearAllComms(): void;
30
48
  }
31
49
  export declare class DocumentRenderObject extends BlockContainerRenderObject {
32
50
  constructor(ele: Element);
@@ -1,7 +1,6 @@
1
1
  import { Element, ElementFactory, ImgLoadStatus, LeafElement, ResizeLeafRenderObject, SerializeProps, ViewOptions } from "../../element-define";
2
2
  import { PictureProps } from "../../element-props";
3
3
  import { IEditorVNodeOptions, IRenderData, LeafRenderObject, RenderObject } from "../../render-define";
4
- import { EditorContext } from "../../document-context";
5
4
  interface IResizeElement {
6
5
  resizeable: boolean;
7
6
  }
@@ -12,7 +11,6 @@ export declare class PictureElement extends LeafElement<PictureProps> implements
12
11
  createRenderObject(): LeafRenderObject;
13
12
  serialize(options: ViewOptions): SerializeProps;
14
13
  clone(data: boolean): Element;
15
- loadImage(ctx: EditorContext): void;
16
14
  destroy(): void;
17
15
  }
18
16
  export declare class PictureRenderObject extends ResizeLeafRenderObject {
@@ -2,7 +2,7 @@ import { BranchElement, Element, LeafElement, SelectionContentRange } from "./el
2
2
  import { TableElement } from "./impl/table/table-impl";
3
3
  import { SelectionState } from './document-selection';
4
4
  export declare class RangeUtil {
5
- static getSelctionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange;
5
+ static getSectionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange;
6
6
  static getCollapsedRange(startControl: LeafElement, startOffset: number, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange;
7
7
  /**
8
8
  * 获取表格选区的内容
@@ -6,7 +6,8 @@ import { Element, SelectionContentRange } from "./element-define";
6
6
  export declare class SelectionOverlays {
7
7
  private selectionState;
8
8
  private selectionRange;
9
- selectedSets: Map<Element, SelectionContentRange>;
9
+ selectionEleSets: Map<Element, SelectionContentRange>;
10
+ commRangeSets: Map<Element, SelectionContentRange>;
10
11
  constructor(selectionState: SelectionState);
11
12
  getSelectionTreeData(): void;
12
13
  private convertSelectRangeToSet;
@@ -15,8 +16,9 @@ export declare class SelectionOverlays {
15
16
  * 添加到批注集合
16
17
  * @param range
17
18
  * @param set
19
+ * @param rangeColor 用以显示批注区间的颜色
18
20
  */
19
- static addToCommentSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>): void;
21
+ static addToCommentSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>, rangeColor: string): void;
20
22
  /**
21
23
  * 修正开始选区内容
22
24
  * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": "hailin-zheng",
5
5
  "private": false,
6
6
  "license": "ISC",
7
- "version": "2.1.18",
7
+ "version": "2.1.19",
8
8
  "scripts": {},
9
9
  "dependencies": {
10
10
  "moment": "^2.29.3",
@@ -1,20 +0,0 @@
1
- import { IImageLoader, ImageSourceItem } from "./document-context";
2
- import { ImgLoadStatus } from "./element-define";
3
- export declare abstract class DocumentImagesBaseLoader implements IImageLoader {
4
- images: Array<ImageSourceItem>;
5
- clear(): void;
6
- loadImage(src: string, onCallback: (status: ImgLoadStatus) => void): void;
7
- abstract createRequestImage(url: string): Promise<void>;
8
- invokeImgLoad(src: string, status: ImgLoadStatus, data: any): void;
9
- getLoadTasks(): Array<Promise<void>>;
10
- getImage(src: string): HTMLImageElement | undefined;
11
- /**
12
- * 判断图片是否都已经加载完毕
13
- * 用于打印时判断,如果当前图片没有加载完毕就打印,图片是打印不出来
14
- * @returns
15
- */
16
- imagesLoadCompleted(): boolean;
17
- }
18
- export declare class DocumentImagesLoader extends DocumentImagesBaseLoader {
19
- createRequestImage(url: string): Promise<void>;
20
- }