@univerjs/engine-render 0.1.17 → 0.2.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 (35) hide show
  1. package/lib/cjs/index.js +2 -2
  2. package/lib/es/index.js +20947 -20435
  3. package/lib/types/basics/i-document-skeleton-cached.d.ts +7 -16
  4. package/lib/types/basics/interfaces.d.ts +8 -4
  5. package/lib/types/basics/range.d.ts +2 -0
  6. package/lib/types/basics/tools.d.ts +5 -5
  7. package/lib/types/components/docs/document.d.ts +2 -1
  8. package/lib/types/components/docs/layout/block/paragraph/language-ruler.d.ts +4 -4
  9. package/lib/types/components/docs/layout/block/paragraph/linebreaking.d.ts +2 -1
  10. package/lib/types/components/docs/layout/doc-skeleton.d.ts +11 -6
  11. package/lib/types/components/docs/layout/shaping-engine/text-shaping.d.ts +1 -2
  12. package/lib/types/components/docs/layout/style/custom-decoration.d.ts +3 -0
  13. package/lib/types/components/docs/layout/style/custom-range.d.ts +3 -0
  14. package/lib/types/components/docs/layout/tools.d.ts +1 -1
  15. package/lib/types/components/docs/liquid.d.ts +1 -1
  16. package/lib/types/components/docs/text-selection/text-range.d.ts +6 -0
  17. package/lib/types/components/docs/text-selection/text-selection-render-manager.d.ts +10 -1
  18. package/lib/types/components/docs/view-model/document-view-model.d.ts +21 -2
  19. package/lib/types/components/sheets/extensions/sheet-extension.d.ts +1 -1
  20. package/lib/types/components/sheets/interfaces.d.ts +2 -2
  21. package/lib/types/components/sheets/sheet-skeleton.d.ts +7 -12
  22. package/lib/types/components/sheets/spreadsheet.d.ts +0 -1
  23. package/lib/types/engine.d.ts +2 -0
  24. package/lib/types/index.d.ts +2 -1
  25. package/lib/types/layer.d.ts +6 -0
  26. package/lib/types/render-manager/render-unit.d.ts +1 -1
  27. package/lib/types/scene.d.ts +7 -2
  28. package/lib/types/scene.input-manager.d.ts +3 -1
  29. package/lib/types/shape/dashedrect.d.ts +8 -0
  30. package/lib/types/shape/index.d.ts +1 -0
  31. package/lib/types/shape/shape.d.ts +2 -2
  32. package/lib/types/thin-scene.d.ts +2 -0
  33. package/lib/types/viewport.d.ts +35 -6
  34. package/lib/umd/index.js +2 -2
  35. package/package.json +8 -8
@@ -9,8 +9,8 @@ export interface IDocumentSkeletonCached extends ISkeletonResourceReference {
9
9
  ed?: number;
10
10
  }
11
11
  export interface ISkeletonResourceReference {
12
- skeHeaders: Map<string, Map<number, IDocumentSkeletonHeader>>;
13
- skeFooters: Map<string, Map<number, IDocumentSkeletonFooter>>;
12
+ skeHeaders: Map<string, Map<number, IDocumentSkeletonHeaderFooter>>;
13
+ skeFooters: Map<string, Map<number, IDocumentSkeletonHeaderFooter>>;
14
14
  skeListLevel?: Map<string, IDocumentSkeletonBullet[]>;
15
15
  drawingAnchor?: Map<number, IDocumentSkeletonDrawingAnchor>;
16
16
  }
@@ -19,20 +19,6 @@ export interface IDocumentSkeletonDrawingAnchor {
19
19
  paragraphIndex: number;
20
20
  top: number;
21
21
  }
22
- export interface IDocumentSkeletonHeaderFooterBase {
23
- lines: IDocumentSkeletonLine[];
24
- skeDrawings: Map<string, IDocumentSkeletonDrawing>;
25
- height: number;
26
- st: number;
27
- ed: number;
28
- marginLeft: number;
29
- }
30
- export interface IDocumentSkeletonHeader extends IDocumentSkeletonHeaderFooterBase {
31
- marginTop: number;
32
- }
33
- export interface IDocumentSkeletonFooter extends IDocumentSkeletonHeaderFooterBase {
34
- marginBottom: number;
35
- }
36
22
  export interface IDocumentSkeletonPage {
37
23
  sections: IDocumentSkeletonSection[];
38
24
  headerId: string;
@@ -42,7 +28,9 @@ export interface IDocumentSkeletonPage {
42
28
  pageOrient: PageOrientType;
43
29
  marginLeft: number;
44
30
  marginRight: number;
31
+ originMarginTop: number;
45
32
  marginTop: number;
33
+ originMarginBottom: number;
46
34
  marginBottom: number;
47
35
  pageNumber: number;
48
36
  pageNumberStart: number;
@@ -57,6 +45,8 @@ export interface IDocumentSkeletonPage {
57
45
  renderConfig?: IDocumentRenderConfig;
58
46
  parent?: IDocumentSkeletonCached;
59
47
  }
48
+ export interface IDocumentSkeletonHeaderFooter extends IDocumentSkeletonPage {
49
+ }
60
50
  export interface IDocumentSkeletonSection {
61
51
  columns: IDocumentSkeletonColumn[];
62
52
  colCount: number;
@@ -127,6 +117,7 @@ export interface IDocumentSkeletonGlyph {
127
117
  left: number;
128
118
  count: number;
129
119
  content: string;
120
+ raw: string;
130
121
  adjustability: IAdjustability;
131
122
  isJustifiable: boolean;
132
123
  ts?: ITextStyle;
@@ -1,6 +1,6 @@
1
1
  import { BooleanNumber, GridType, IDocStyleBase, IDocumentLayout, IOffset, IParagraphStyle, IReferenceSource, IScale, ISectionBreakBase, ISize, ITextStyle, ITransformState, LocaleService } from '@univerjs/core';
2
2
  import { DocumentViewModel } from '../components/docs/view-model/document-view-model';
3
- import { IDocumentSkeletonBullet, IDocumentSkeletonDrawing, IDocumentSkeletonDrawingAnchor, IDocumentSkeletonFontStyle, IDocumentSkeletonFooter, IDocumentSkeletonGlyph, IDocumentSkeletonHeader } from './i-document-skeleton-cached';
3
+ import { IDocumentSkeletonBullet, IDocumentSkeletonDrawing, IDocumentSkeletonDrawingAnchor, IDocumentSkeletonFontStyle, IDocumentSkeletonGlyph, IDocumentSkeletonHeaderFooter } from './i-document-skeleton-cached';
4
4
  import { Vector2 } from './vector2';
5
5
  import { ITransformerConfig } from './transformer-config';
6
6
 
@@ -54,7 +54,7 @@ export interface ISectionBreakConfig extends IDocStyleBase, ISectionBreakBase, I
54
54
  headerIds?: IHeaderIds;
55
55
  footerIds?: IFooterIds;
56
56
  useFirstPageHeaderFooter?: BooleanNumber;
57
- useEvenPageHeaderFooter?: BooleanNumber;
57
+ evenAndOddHeaders?: BooleanNumber;
58
58
  }
59
59
  export interface IParagraphConfig {
60
60
  paragraphIndex: number;
@@ -62,8 +62,8 @@ export interface IParagraphConfig {
62
62
  paragraphInlineSkeDrawings?: Map<string, IDocumentSkeletonDrawing>;
63
63
  bulletSkeleton?: IDocumentSkeletonBullet;
64
64
  paragraphStyle?: IParagraphStyle;
65
- skeHeaders: Map<string, Map<number, IDocumentSkeletonHeader>>;
66
- skeFooters: Map<string, Map<number, IDocumentSkeletonFooter>>;
65
+ skeHeaders: Map<string, Map<number, IDocumentSkeletonHeaderFooter>>;
66
+ skeFooters: Map<string, Map<number, IDocumentSkeletonHeaderFooter>>;
67
67
  drawingAnchor?: Map<number, IDocumentSkeletonDrawingAnchor>;
68
68
  }
69
69
  export interface IFontCreateConfig {
@@ -78,6 +78,8 @@ export interface INodeInfo {
78
78
  node: IDocumentSkeletonGlyph;
79
79
  ratioX: number;
80
80
  ratioY: number;
81
+ segmentId: string;
82
+ segmentPage: number;
81
83
  }
82
84
  export interface INodeSearch {
83
85
  glyph: number;
@@ -86,6 +88,8 @@ export interface INodeSearch {
86
88
  column: number;
87
89
  section: number;
88
90
  page: number;
91
+ segmentPage: number;
92
+ isInBody: boolean;
89
93
  }
90
94
  export interface INodePosition extends INodeSearch {
91
95
  isBack: boolean;
@@ -13,6 +13,8 @@ export interface ITextRangeWithStyle extends ITextRangeParam {
13
13
  export interface ISuccinctTextRangeParam {
14
14
  startOffset: number;
15
15
  endOffset: number;
16
+ segmentId?: string;
17
+ segmentPage?: number;
16
18
  style?: ITextSelectionStyle;
17
19
  }
18
20
  export declare enum RANGE_DIRECTION {
@@ -1,4 +1,4 @@
1
- import { IRange, IRangeWithCoord, IScale, ISelectionCellWithCoord, IStyleBase, LocaleService, Nullable } from '@univerjs/core';
1
+ import { IRange, IRangeWithCoord, IScale, ISelectionCellWithMergeInfo, IStyleBase, LocaleService, Nullable } from '@univerjs/core';
2
2
  import { IBoundRectNoAngle } from './vector2';
3
3
  import { IDocumentSkeletonFontStyle } from './i-document-skeleton-cached';
4
4
 
@@ -72,7 +72,7 @@ export declare function getCellPositionByIndex(row: number, column: number, rowH
72
72
  startX: number;
73
73
  endX: number;
74
74
  };
75
- export declare function getCellByIndex(row: number, column: number, rowHeightAccumulation: number[], columnWidthAccumulation: number[], mergeData: IRange[]): ISelectionCellWithCoord;
75
+ export declare function getCellByIndex(row: number, column: number, rowHeightAccumulation: number[], columnWidthAccumulation: number[], mergeData: IRange[]): ISelectionCellWithMergeInfo;
76
76
  /**
77
77
  * Determine whether there are any cells in a row that are not in the merged cells, mainly used for the calculation of auto height
78
78
  */
@@ -84,9 +84,9 @@ export declare function mergeInfoOffset(mergeInfo: IRangeWithCoord, offsetX: num
84
84
  endY: number;
85
85
  startColumn: number;
86
86
  endColumn: number;
87
- rangeType?: import('@univerjs/core').RANGE_TYPE | undefined;
88
- startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType | undefined;
89
- endAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType | undefined;
87
+ rangeType?: import('@univerjs/core').RANGE_TYPE;
88
+ startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
89
+ endAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
90
90
  startRow: number;
91
91
  endRow: number;
92
92
  };
@@ -29,9 +29,10 @@ export declare class Documents extends DocComponent {
29
29
  dispose(): void;
30
30
  getOffsetConfig(): IDocumentOffsetConfig;
31
31
  getEngine(): Nullable<import('../..').ThinEngine<Scene>>;
32
- draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
33
32
  changeSkeleton(newSkeleton: DocumentSkeleton): this;
34
33
  protected _draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
34
+ draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
35
+ private _drawHeaderFooter;
35
36
  private _horizontalHandler;
36
37
  private _verticalHandler;
37
38
  private _startRotation;
@@ -3,19 +3,19 @@ import { ISectionBreakConfig } from '../../../../../basics/interfaces';
3
3
  import { DataStreamTreeNode } from '../../../view-model/data-stream-tree-node';
4
4
  import { DocumentViewModel } from '../../../view-model/document-view-model';
5
5
 
6
- export declare function otherHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
6
+ export declare function otherHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
7
7
  step: number;
8
8
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
9
9
  };
10
- export declare function ArabicHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
10
+ export declare function ArabicHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
11
11
  step: number;
12
12
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
13
13
  };
14
- export declare function emojiHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
14
+ export declare function emojiHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
15
15
  step: number;
16
16
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
17
17
  };
18
- export declare function TibetanHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
18
+ export declare function TibetanHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
19
19
  step: number;
20
20
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
21
21
  };
@@ -2,6 +2,7 @@ import { IDocumentSkeletonPage } from '../../../../../basics/i-document-skeleton
2
2
  import { ILayoutContext } from '../../tools';
3
3
  import { DataStreamTreeNode } from '../../../view-model/data-stream-tree-node';
4
4
  import { ISectionBreakConfig } from '../../../../../basics/interfaces';
5
+ import { DocumentViewModel } from '../../../view-model/document-view-model';
5
6
  import { IShapedText } from './shaping';
6
7
 
7
- export declare function lineBreaking(ctx: ILayoutContext, shapedTextList: IShapedText[], curPage: IDocumentSkeletonPage, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig): IDocumentSkeletonPage[];
8
+ export declare function lineBreaking(ctx: ILayoutContext, viewModel: DocumentViewModel, shapedTextList: IShapedText[], curPage: IDocumentSkeletonPage, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig): IDocumentSkeletonPage[];
@@ -1,9 +1,9 @@
1
1
  import { LocaleService, Nullable } from '@univerjs/core';
2
- import { IDocumentSkeletonCached, IDocumentSkeletonGlyph, PageLayoutType } from '../../../basics/i-document-skeleton-cached';
2
+ import { IDocumentSkeletonCached, IDocumentSkeletonGlyph, IDocumentSkeletonPage, PageLayoutType } from '../../../basics/i-document-skeleton-cached';
3
3
  import { INodeInfo, INodePosition, INodeSearch } from '../../../basics/interfaces';
4
4
  import { IViewportInfo, Vector2 } from '../../../basics/vector2';
5
5
  import { Skeleton } from '../../skeleton';
6
- import { DocumentViewModel } from '../view-model/document-view-model';
6
+ import { DocumentViewModel, DocumentEditArea } from '../view-model/document-view-model';
7
7
 
8
8
  export declare enum DocumentSkeletonState {
9
9
  PENDING = "pending",
@@ -30,10 +30,15 @@ export declare class DocumentSkeleton extends Skeleton {
30
30
  };
31
31
  private _getPageActualWidth;
32
32
  getPageSize(): import('@univerjs/core').ISize | undefined;
33
- findPositionByGlyph(glyph: IDocumentSkeletonGlyph): Nullable<INodeSearch>;
34
- findNodePositionByCharIndex(charIndex: number, isBack?: boolean): Nullable<INodePosition>;
35
- findNodeByCharIndex(charIndex: number): Nullable<IDocumentSkeletonGlyph>;
33
+ findPositionByGlyph(glyph: IDocumentSkeletonGlyph, segmentPage: number): Nullable<INodeSearch>;
34
+ findNodePositionByCharIndex(charIndex: number, isBack?: boolean, segmentId?: string, segmentPIndex?: number): Nullable<INodePosition>;
35
+ findNodeByCharIndex(charIndex: number, segmentId?: string, segmentPageIndex?: number): Nullable<IDocumentSkeletonGlyph>;
36
36
  findGlyphByPosition(position: Nullable<INodePosition>): IDocumentSkeletonGlyph | undefined;
37
+ findEditAreaByCoord(coord: Vector2, pageLayoutType: PageLayoutType, pageMarginLeft: number, pageMarginTop: number): {
38
+ editArea: DocumentEditArea;
39
+ pageNumber: number;
40
+ page: Nullable<IDocumentSkeletonPage>;
41
+ };
37
42
  findNodeByCoord(coord: Vector2, pageLayoutType: PageLayoutType, pageMarginLeft: number, pageMarginTop: number): Nullable<INodeInfo>;
38
43
  private _getNearestNode;
39
44
  private _getPageBoundingBox;
@@ -68,5 +73,5 @@ export declare class DocumentSkeleton extends Skeleton {
68
73
  */
69
74
  private _createSkeleton;
70
75
  private _addNewSectionByContinuous;
71
- private _findNodeIterator;
76
+ private _findNodeByIndex;
72
77
  }
@@ -1,6 +1,5 @@
1
- import { IDocumentBody } from '@univerjs/core';
1
+ import { IDocumentBody, Nullable } from '@univerjs/core';
2
2
  import { default as Opentype } from 'opentype.js';
3
- import { Nullable } from 'vitest';
4
3
 
5
4
  interface IBoundingBox {
6
5
  x1: number;
@@ -0,0 +1,3 @@
1
+ import { ICustomDecorationForInterceptor, ITextStyle, Nullable } from '@univerjs/core';
2
+
3
+ export declare function getCustomDecorationStyle(customDecoration: ICustomDecorationForInterceptor): Nullable<ITextStyle>;
@@ -0,0 +1,3 @@
1
+ import { ICustomRangeForInterceptor, ITextStyle, Nullable } from '@univerjs/core';
2
+
3
+ export declare function getCustomRangeStyle(customRange: ICustomRangeForInterceptor): Nullable<ITextStyle>;
@@ -72,7 +72,7 @@ export declare function getFontConfigFromLastGlyph(glyph: IDocumentSkeletonGlyph
72
72
  snapToGrid: BooleanNumber;
73
73
  pageWidth: number;
74
74
  };
75
- export declare function getFontCreateConfig(index: number, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): IFontCreateConfig;
75
+ export declare function getFontCreateConfig(index: number, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): IFontCreateConfig;
76
76
  export declare function getNullSkeleton(): IDocumentSkeletonCached;
77
77
  export declare function setPageParent(pages: IDocumentSkeletonPage[], parent: IDocumentSkeletonCached): void;
78
78
  export interface ILayoutContext {
@@ -33,7 +33,7 @@ export declare class Liquid {
33
33
  x: number;
34
34
  y: number;
35
35
  };
36
- translateSpan(glyph: IDocumentSkeletonGlyph): {
36
+ translateGlyph(glyph: IDocumentSkeletonGlyph): {
37
37
  x: number;
38
38
  y: number;
39
39
  };
@@ -16,6 +16,12 @@ export declare function getAnchorBounding(pointsGroup: IPoint[][]): {
16
16
  width: number;
17
17
  height: number;
18
18
  };
19
+ export declare function getLineBounding(pointsGroup: IPoint[][]): {
20
+ left: number;
21
+ right: number;
22
+ top: number;
23
+ bottom: number;
24
+ }[];
19
25
  export declare class TextRange {
20
26
  private _scene;
21
27
  private _document;
@@ -19,6 +19,7 @@ export interface ITextSelectionInnerParam {
19
19
  segmentId: string;
20
20
  isEditing: boolean;
21
21
  style: ITextSelectionStyle;
22
+ segmentPage: number;
22
23
  }
23
24
  export interface IActiveTextRange {
24
25
  startOffset: number;
@@ -28,6 +29,7 @@ export interface IActiveTextRange {
28
29
  endNodePosition: Nullable<INodePosition>;
29
30
  direction: RANGE_DIRECTION;
30
31
  segmentId: string;
32
+ segmentPage: number;
31
33
  style: ITextSelectionStyle;
32
34
  }
33
35
  export interface ITextSelectionRenderManager {
@@ -47,6 +49,8 @@ export interface ITextSelectionRenderManager {
47
49
  enableSelection(): void;
48
50
  disableSelection(): void;
49
51
  setSegment(id: string): void;
52
+ setSegmentPage(pageIndex: number): void;
53
+ getSegmentPage(): number;
50
54
  setStyle(style: ITextSelectionStyle): void;
51
55
  resetStyle(): void;
52
56
  removeAllTextRanges(): void;
@@ -98,8 +102,11 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
98
102
  private _inputParent;
99
103
  private _input;
100
104
  private _scrollTimers;
105
+ private _viewportScrollX;
106
+ private _viewportScrollY;
101
107
  private _rangeList;
102
108
  private _currentSegmentId;
109
+ private _currentSegmentPage;
103
110
  private _selectionStyle;
104
111
  private _isSelectionEnabled;
105
112
  private _viewPortObserverMap;
@@ -114,11 +121,14 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
114
121
  __getEditorContainer(): HTMLElement;
115
122
  getViewPort(): Viewport;
116
123
  setSegment(id: string): void;
124
+ setSegmentPage(pageIndex: number): void;
125
+ getSegmentPage(): number;
117
126
  setStyle(style?: ITextSelectionStyle): void;
118
127
  resetStyle(): void;
119
128
  enableSelection(): void;
120
129
  disableSelection(): void;
121
130
  addTextRanges(ranges: ISuccinctTextRangeParam[], isEditing?: boolean): void;
131
+ setCursorManually(evtOffsetX: number, evtOffsetY: number): void;
122
132
  sync(): void;
123
133
  activate(x: number, y: number): void;
124
134
  hasFocus(): boolean;
@@ -128,7 +138,6 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
128
138
  changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, document: Documents): void;
129
139
  handleDblClick(evt: IPointerEvent | IMouseEvent): void;
130
140
  handleTripleClick(evt: IPointerEvent | IMouseEvent): void;
131
- setCursorManually(evtOffsetX: number, evtOffsetY: number): void;
132
141
  eventTrigger(evt: IPointerEvent | IMouseEvent): void;
133
142
  removeAllTextRanges(): void;
134
143
  private _setSystemHighlightColorToStyle;
@@ -1,9 +1,19 @@
1
- import { IDocumentBody, ITextRun, DocumentDataModel } from '@univerjs/core';
1
+ import { ICustomDecorationForInterceptor, ICustomRangeForInterceptor, IDocumentBody, ITextRun, Nullable, DocumentDataModel } from '@univerjs/core';
2
2
  import { IDisposable } from '@wendellhu/redi';
3
3
  import { DataStreamTreeNode } from './data-stream-tree-node';
4
4
 
5
+ export interface ICustomRangeInterceptor {
6
+ getCustomRange: (index: number) => Nullable<ICustomRangeForInterceptor>;
7
+ getCustomDecoration: (index: number) => Nullable<ICustomDecorationForInterceptor>;
8
+ }
9
+ export declare enum DocumentEditArea {
10
+ BODY = "BODY",
11
+ HEADER = "HEADER",
12
+ FOOTER = "FOOTER"
13
+ }
5
14
  export declare class DocumentViewModel implements IDisposable {
6
15
  private _documentDataModel;
16
+ private _interceptor;
7
17
  children: DataStreamTreeNode[];
8
18
  private _sectionBreakCurrentIndex;
9
19
  private _paragraphCurrentIndex;
@@ -11,11 +21,17 @@ export declare class DocumentViewModel implements IDisposable {
11
21
  private _customBlockCurrentIndex;
12
22
  private _tableBlockCurrentIndex;
13
23
  private _customRangeCurrentIndex;
24
+ private _editArea;
25
+ private readonly _editAreaChange$;
26
+ readonly editAreaChange$: import('rxjs').Observable<Nullable<DocumentEditArea>>;
14
27
  headerTreeMap: Map<string, DocumentViewModel>;
15
28
  footerTreeMap: Map<string, DocumentViewModel>;
16
29
  constructor(_documentDataModel: DocumentDataModel);
30
+ registerCustomRangeInterceptor(interceptor: ICustomRangeInterceptor): IDisposable;
17
31
  dispose(): void;
18
32
  selfPlus(len: number, index: number): void;
33
+ getEditArea(): DocumentEditArea;
34
+ setEditArea(editArea: DocumentEditArea): void;
19
35
  getPositionInParent(): number;
20
36
  getLastIndex(): number;
21
37
  getBody(): IDocumentBody | undefined;
@@ -36,7 +52,10 @@ export declare class DocumentViewModel implements IDisposable {
36
52
  getTextRun(index: number): ITextRun | undefined;
37
53
  getCustomBlock(index: number): import('@univerjs/core').ICustomBlock | undefined;
38
54
  getTable(index: number): import('@univerjs/core').ITable | undefined;
39
- getCustomRange(index: number): import('@univerjs/core').ICustomRange | undefined;
55
+ getCustomRangeRaw(index: number): import('@univerjs/core').ICustomRange | undefined;
56
+ getCustomRange(index: number): Nullable<ICustomRangeForInterceptor>;
57
+ getCustomDecorationRaw(index: number): import('@univerjs/core').ICustomDecoration | undefined;
58
+ getCustomDecoration(index: number): Nullable<ICustomDecorationForInterceptor>;
40
59
  protected _transformToTree(dataStream: string): DataStreamTreeNode[];
41
60
  private _processPreviousNodesUntil;
42
61
  private _batchParent;
@@ -7,7 +7,7 @@ export declare enum SHEET_EXTENSION_TYPE {
7
7
  }
8
8
  export declare class SheetExtension extends ComponentExtension<SpreadsheetSkeleton, SHEET_EXTENSION_TYPE, IRange[]> {
9
9
  type: SHEET_EXTENSION_TYPE;
10
- getCellIndex(rowIndex: number, columnIndex: number, rowHeightAccumulation: number[], columnWidthAccumulation: number[], dataMergeCache: IRange[]): import('@univerjs/core').ISelectionCellWithCoord;
10
+ getCellIndex(rowIndex: number, columnIndex: number, rowHeightAccumulation: number[], columnWidthAccumulation: number[], dataMergeCache: IRange[]): import('@univerjs/core').ISelectionCellWithMergeInfo;
11
11
  isRenderDiffRangesByCell(rangeP: IRange, diffRanges?: IRange[]): boolean;
12
12
  isRenderDiffRangesByColumn(curStartColumn: number, curEndColumn: number, diffRanges?: IRange[]): boolean;
13
13
  isRenderDiffRangesByRow(curStartRow: number, curEndRow: number, diffRanges?: IRange[]): boolean;
@@ -1,4 +1,4 @@
1
- import { BorderStyleTypes, HorizontalAlign, ISelectionCellWithCoord, ObjectMatrix, VerticalAlign, WrapStrategy } from '@univerjs/core';
1
+ import { BorderStyleTypes, HorizontalAlign, ISelectionCellWithMergeInfo, ObjectMatrix, VerticalAlign, WrapStrategy } from '@univerjs/core';
2
2
  import { BORDER_TYPE } from '../../basics/const';
3
3
  import { DocumentSkeleton } from '../docs/layout/doc-skeleton';
4
4
  import { Canvas } from '../../canvas';
@@ -28,7 +28,7 @@ interface fontCache {
28
28
  }
29
29
  export interface IStylesCache {
30
30
  background?: backgroundCache;
31
- backgroundPositions?: ObjectMatrix<ISelectionCellWithCoord>;
31
+ backgroundPositions?: ObjectMatrix<ISelectionCellWithMergeInfo>;
32
32
  font?: fontCache;
33
33
  border?: ObjectMatrix<BorderCache>;
34
34
  }
@@ -1,4 +1,4 @@
1
- import { BooleanNumber, DocumentDataModel, HorizontalAlign, IContextService, LocaleService, ObjectMatrix, VerticalAlign, WrapStrategy, ICellData, IPaddingData, IRange, IRowAutoHeightInfo, ISelectionCellWithCoord, ITextRotation, IWorksheetData, Nullable, Styles, Worksheet } from '@univerjs/core';
1
+ import { BooleanNumber, DocumentDataModel, HorizontalAlign, IContextService, LocaleService, ObjectMatrix, VerticalAlign, WrapStrategy, ICellData, IPaddingData, IRange, IRowAutoHeightInfo, ISelectionCellWithMergeInfo, ITextRotation, IWorksheetData, Nullable, Styles, Worksheet } from '@univerjs/core';
2
2
  import { IBoundRectNoAngle, IViewportInfo } from '../../basics/vector2';
3
3
  import { DocumentSkeleton } from '../docs/layout/doc-skeleton';
4
4
  import { Skeleton } from '../skeleton';
@@ -165,7 +165,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
165
165
  calculateCellIndexByPosition(offsetX: number, offsetY: number, scaleX: number, scaleY: number, scrollXY: {
166
166
  x: number;
167
167
  y: number;
168
- }): Nullable<ISelectionCellWithCoord>;
168
+ }): Nullable<ISelectionCellWithMergeInfo>;
169
169
  /**
170
170
  *
171
171
  * @param offsetX HTML coordinate system, mouse position x.
@@ -222,7 +222,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
222
222
  * @param row Specified Row Coordinate
223
223
  * @param column Specified Column Coordinate
224
224
  */
225
- getCellByIndex(row: number, column: number): ISelectionCellWithCoord;
225
+ getCellByIndex(row: number, column: number): ISelectionCellWithMergeInfo;
226
226
  getCellByIndexWithNoHeader(row: number, column: number): {
227
227
  actualRow: number;
228
228
  actualColumn: number;
@@ -239,9 +239,9 @@ export declare class SpreadsheetSkeleton extends Skeleton {
239
239
  endY: number;
240
240
  startColumn: number;
241
241
  endColumn: number;
242
- rangeType?: import('@univerjs/core').RANGE_TYPE | undefined;
243
- startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType | undefined;
244
- endAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType | undefined;
242
+ rangeType?: import('@univerjs/core').RANGE_TYPE;
243
+ startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
244
+ endAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
245
245
  startRow: number;
246
246
  endRow: number;
247
247
  };
@@ -254,12 +254,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
254
254
  x: number;
255
255
  y: number;
256
256
  }): number;
257
- getSelectionBounding(startRow: number, startColumn: number, endRow: number, endColumn: number): {
258
- startRow: number;
259
- startColumn: number;
260
- endRow: number;
261
- endColumn: number;
262
- };
257
+ getSelectionBounding(startRow: number, startColumn: number, endRow: number, endColumn: number): IRange;
263
258
  getBlankCellDocumentModel(cell: Nullable<ICellData>): IDocumentLayoutObject;
264
259
  getCellDocumentModelWithFormula(cell: ICellData): Nullable<IDocumentLayoutObject>;
265
260
  private _getCellDocumentModel;
@@ -65,7 +65,6 @@ export declare class Spreadsheet extends SheetComponent {
65
65
  /**
66
66
  * Since multiple controllers, not just the sheet-render.controller, invoke spreadsheet.makeDirty() — for instance, the cf.render-controller — it's essential to also call viewport.markDirty() whenever spreadsheet.makeDirty() is triggered.
67
67
  * @param state
68
- * @returns
69
68
  */
70
69
  makeDirty(state?: boolean): this;
71
70
  setDirtyArea(dirtyBounds: IBoundRectNoAngle[]): void;
@@ -24,6 +24,8 @@ export declare class Engine extends ThinEngine<Scene> {
24
24
  private _pointerMoveEvent;
25
25
  private _pointerDownEvent;
26
26
  private _pointerUpEvent;
27
+ private _pointerOutEvent;
28
+ private _pointerCancelEvent;
27
29
  private _pointerBlurEvent;
28
30
  private _pointerWheelEvent;
29
31
  private _pointerEnterEvent;
@@ -31,7 +31,7 @@ export * from './scroll-timer';
31
31
  export * from './shape';
32
32
  export * from './viewport';
33
33
  export { DocumentViewModel } from './components/docs/view-model/document-view-model';
34
- export { getAnchorBounding, TEXT_RANGE_LAYER_INDEX, TextRange } from './components/docs/text-selection/text-range';
34
+ export { getAnchorBounding, TEXT_RANGE_LAYER_INDEX, TextRange, getLineBounding } from './components/docs/text-selection/text-range';
35
35
  export { NodePositionConvertToCursor } from './components/docs/text-selection/convert-cursor';
36
36
  export { Liquid } from './components/docs/liquid';
37
37
  export { ITextSelectionRenderManager, TextSelectionRenderManager, getCanvasOffsetByEngine, } from './components/docs/text-selection/text-selection-render-manager';
@@ -44,3 +44,4 @@ export { ThinEngine } from './thin-engine';
44
44
  export { getCharSpaceApply, getNumberUnitValue } from './components/docs/layout/tools';
45
45
  export { type IChangeObserverConfig } from './scene.transformer';
46
46
  export { DEFAULT_PADDING_DATA } from './components/sheets/sheet-skeleton';
47
+ export { DocumentEditArea } from './components/docs/view-model/document-view-model';
@@ -20,6 +20,12 @@ export declare class Layer extends Disposable {
20
20
  getObjectsByOrder(): BaseObject[];
21
21
  getObjectsByOrderForPick(): BaseObject[];
22
22
  getObjects(): BaseObject[];
23
+ /**
24
+ * insert o to _objects[]
25
+ * if o is a group, insert all its children and group itself to _objects[]
26
+ * @param o
27
+ * @returns
28
+ */
23
29
  addObject(o: BaseObject): this;
24
30
  removeObject(object: BaseObject | string): void;
25
31
  addObjects(objects: BaseObject[]): this;
@@ -29,7 +29,7 @@ export interface IRenderContext<T extends UnitModel = UnitModel> extends Omit<IR
29
29
  * This class is responsible
30
30
  */
31
31
  export declare class RenderUnit extends Disposable implements IRender {
32
- readonly isRenderUnit: true;
32
+ readonly isRenderUnit: boolean;
33
33
  get unitId(): string;
34
34
  get type(): UnitType;
35
35
  private readonly _injector;
@@ -70,11 +70,16 @@ export declare class Scene extends ThinScene {
70
70
  getLayer(zIndex?: number): Layer;
71
71
  getLayerMaxZIndex(): number;
72
72
  addLayer(...argument: Layer[]): void;
73
+ addObjects(objects: BaseObject[], zIndex?: number): this;
73
74
  addObject(o: BaseObject, zIndex?: number): this;
75
+ /**
76
+ * make object parent to scene
77
+ * @param o
78
+ */
74
79
  setObjectBehavior(o: BaseObject): void;
75
- addObjects(objects: BaseObject[], zIndex?: number): this;
76
80
  removeObject(object?: BaseObject | string): this | undefined;
77
81
  removeObjects(objects?: BaseObject[] | string[]): this | undefined;
82
+ getObjectsByLayer(zIndex: number): BaseObject[];
78
83
  getAllObjects(): BaseObject[];
79
84
  getAllObjectsByOrder(isDesc?: boolean): BaseObject[];
80
85
  getAllObjectsByOrderForPick(isDesc?: boolean): BaseObject[];
@@ -119,7 +124,7 @@ export declare class Scene extends ThinScene {
119
124
  scaleY: number;
120
125
  };
121
126
  dispose(): void;
122
- pick(coord: Vector2): Nullable<BaseObject | Scene | ThinScene>;
127
+ pick(vec: Vector2): Nullable<BaseObject | Scene | ThinScene>;
123
128
  triggerKeyDown(evt: IKeyboardEvent): void;
124
129
  triggerKeyUp(evt: IKeyboardEvent): void;
125
130
  triggerPointerUp(evt: IPointerEvent | IMouseEvent): boolean;
@@ -18,6 +18,8 @@ export declare class InputManager extends Disposable {
18
18
  private _onPointerMove;
19
19
  private _onPointerDown;
20
20
  private _onPointerUp;
21
+ private _onPointerOut;
22
+ private _onPointerCancel;
21
23
  private _onPointerEnter;
22
24
  private _onPointerLeave;
23
25
  private _onMouseWheel;
@@ -42,7 +44,7 @@ export declare class InputManager extends Disposable {
42
44
  dispose(): void;
43
45
  mouseLeaveEnterHandler(evt: IMouseEvent): void;
44
46
  dragLeaveEnterHandler(evt: IMouseEvent): void;
45
- attachControl(hasDown?: boolean, hasUp?: boolean, hasMove?: boolean, hasWheel?: boolean, hasEnter?: boolean, hasLeave?: boolean): void;
47
+ attachControl(hasDown?: boolean, hasUp?: boolean, enableMove?: boolean, hasWheel?: boolean, hasEnter?: boolean, hasLeave?: boolean): void;
46
48
  /**
47
49
  * Detaches all event handlers
48
50
  */
@@ -0,0 +1,8 @@
1
+ import { IViewportInfo } from '../basics/vector2';
2
+ import { UniverRenderingContext } from '../context';
3
+ import { IRectProps, Rect } from './rect';
4
+
5
+ export declare class DashedRect extends Rect {
6
+ static drawWith(ctx: UniverRenderingContext, props: IRectProps | Rect): void;
7
+ protected _draw(ctx: UniverRenderingContext, viewportInfo?: IViewportInfo): void;
8
+ }
@@ -24,3 +24,4 @@ export * from './rich-text';
24
24
  export * from './scroll-bar';
25
25
  export * from './shape';
26
26
  export * from './checkbox';
27
+ export * from './dashedrect';
@@ -1,4 +1,4 @@
1
- import { IScale, Nullable } from '@univerjs/core';
1
+ import { IOffset, IScale, ISize, Nullable } from '@univerjs/core';
2
2
  import { BaseObject } from '../base-object';
3
3
  import { IObjectFullState } from '../basics/interfaces';
4
4
  import { IViewportInfo, Vector2 } from '../basics/vector2';
@@ -7,7 +7,7 @@ import { UniverRenderingContext } from '../context';
7
7
  export type LineJoin = 'round' | 'bevel' | 'miter';
8
8
  export type LineCap = 'butt' | 'round' | 'square';
9
9
  export type PaintFirst = 'fill' | 'stroke';
10
- export interface IShapeProps extends IObjectFullState {
10
+ export interface IShapeProps extends IObjectFullState, ISize, IOffset, IScale {
11
11
  hoverCursor?: Nullable<string>;
12
12
  moveCursor?: string | null;
13
13
  fillRule?: string;
@@ -16,6 +16,8 @@ export declare abstract class ThinScene extends Disposable {
16
16
  onPointerMove$: EventSubject<IMouseEvent | IPointerEvent>;
17
17
  onPointerUp$: EventSubject<IMouseEvent | IPointerEvent>;
18
18
  onPointerEnter$: EventSubject<IMouseEvent | IPointerEvent>;
19
+ onPointerOut$: EventSubject<IMouseEvent | IPointerEvent>;
20
+ onPointerCancel$: EventSubject<IMouseEvent | IPointerEvent>;
19
21
  onPointerLeave$: EventSubject<IMouseEvent | IPointerEvent>;
20
22
  onDragEnter$: EventSubject<IDragEvent>;
21
23
  onDragOver$: EventSubject<IDragEvent>;