@univerjs/engine-render 0.1.16 → 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 (45) hide show
  1. package/lib/cjs/index.js +2 -2
  2. package/lib/es/index.js +10897 -10461
  3. package/lib/types/base-object.d.ts +19 -22
  4. package/lib/types/basics/const.d.ts +0 -12
  5. package/lib/types/basics/i-document-skeleton-cached.d.ts +7 -16
  6. package/lib/types/basics/interfaces.d.ts +8 -4
  7. package/lib/types/basics/range.d.ts +2 -0
  8. package/lib/types/basics/tools.d.ts +5 -5
  9. package/lib/types/components/docs/document.d.ts +5 -4
  10. package/lib/types/components/docs/layout/block/paragraph/language-ruler.d.ts +4 -4
  11. package/lib/types/components/docs/layout/block/paragraph/linebreaking.d.ts +2 -1
  12. package/lib/types/components/docs/layout/doc-skeleton.d.ts +11 -6
  13. package/lib/types/components/docs/layout/shaping-engine/text-shaping.d.ts +1 -2
  14. package/lib/types/components/docs/layout/style/custom-decoration.d.ts +3 -0
  15. package/lib/types/components/docs/layout/style/custom-range.d.ts +3 -0
  16. package/lib/types/components/docs/layout/tools.d.ts +1 -1
  17. package/lib/types/components/docs/liquid.d.ts +1 -1
  18. package/lib/types/components/docs/text-selection/text-range.d.ts +6 -0
  19. package/lib/types/components/docs/text-selection/text-selection-render-manager.d.ts +10 -3
  20. package/lib/types/components/docs/view-model/document-view-model.d.ts +21 -2
  21. package/lib/types/components/sheets/extensions/row-header-layout.d.ts +11 -0
  22. package/lib/types/components/sheets/extensions/sheet-extension.d.ts +1 -1
  23. package/lib/types/components/sheets/interfaces.d.ts +15 -2
  24. package/lib/types/components/sheets/row-header.d.ts +2 -1
  25. package/lib/types/components/sheets/sheet-skeleton.d.ts +13 -12
  26. package/lib/types/components/sheets/spreadsheet.d.ts +0 -1
  27. package/lib/types/components/slides/slide.d.ts +2 -2
  28. package/lib/types/engine.d.ts +6 -10
  29. package/lib/types/index.d.ts +3 -1
  30. package/lib/types/layer.d.ts +6 -0
  31. package/lib/types/render-manager/render-manager.service.d.ts +10 -6
  32. package/lib/types/render-manager/render-unit.d.ts +1 -1
  33. package/lib/types/scene-viewer.d.ts +1 -1
  34. package/lib/types/scene.d.ts +7 -3
  35. package/lib/types/scene.input-manager.d.ts +4 -2
  36. package/lib/types/scene.transformer.d.ts +15 -10
  37. package/lib/types/shape/dashedrect.d.ts +8 -0
  38. package/lib/types/shape/index.d.ts +1 -0
  39. package/lib/types/shape/scroll-bar.d.ts +5 -4
  40. package/lib/types/shape/shape.d.ts +2 -2
  41. package/lib/types/thin-engine.d.ts +3 -3
  42. package/lib/types/thin-scene.d.ts +23 -22
  43. package/lib/types/viewport.d.ts +42 -13
  44. package/lib/umd/index.js +2 -2
  45. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
- import { EventState, IKeyValue, ITransformState, Nullable, Observer, Disposable, Observable } from '@univerjs/core';
2
- import { EVENT_TYPE, CURSOR_TYPE, RENDER_CLASS_TYPE } from './basics/const';
1
+ import { IKeyValue, ITransformState, Nullable, Disposable, EventSubject } from '@univerjs/core';
2
+ import { CURSOR_TYPE, RENDER_CLASS_TYPE } from './basics/const';
3
3
  import { IDragEvent, IMouseEvent, IPointerEvent, IWheelEvent } from './basics/i-events';
4
4
  import { IObjectFullState, ITransformChangeState } from './basics/interfaces';
5
5
  import { Transform } from './basics/transform';
@@ -12,23 +12,23 @@ export declare const BASE_OBJECT_ARRAY: string[];
12
12
  export declare abstract class BaseObject extends Disposable {
13
13
  groupKey?: string;
14
14
  isInGroup: boolean;
15
- onTransformChangeObservable: Observable<ITransformChangeState>;
16
- onPointerDownObserver: Observable<IMouseEvent | IPointerEvent>;
17
- onPointerMoveObserver: Observable<IMouseEvent | IPointerEvent>;
18
- onPointerUpObserver: Observable<IMouseEvent | IPointerEvent>;
19
- onDblclickObserver: Observable<IMouseEvent | IPointerEvent>;
20
- onTripleClickObserver: Observable<IMouseEvent | IPointerEvent>;
21
- onMouseWheelObserver: Observable<IWheelEvent>;
22
- onPointerOutObserver: Observable<IMouseEvent | IPointerEvent>;
23
- onPointerLeaveObserver: Observable<IMouseEvent | IPointerEvent>;
24
- onPointerOverObserver: Observable<IMouseEvent | IPointerEvent>;
25
- onPointerEnterObserver: Observable<IMouseEvent | IPointerEvent>;
26
- onDragLeaveObserver: Observable<IMouseEvent | IDragEvent>;
27
- onDragOverObserver: Observable<IMouseEvent | IDragEvent>;
28
- onDragEnterObserver: Observable<IMouseEvent | IDragEvent>;
29
- onDropObserver: Observable<IMouseEvent | IDragEvent>;
30
- onIsAddedToParentObserver: Observable<any>;
31
- onDisposeObserver: Observable<BaseObject>;
15
+ onTransformChange$: EventSubject<ITransformChangeState>;
16
+ onPointerDown$: EventSubject<IMouseEvent | IPointerEvent>;
17
+ onPointerMove$: EventSubject<IMouseEvent | IPointerEvent>;
18
+ onPointerUp$: EventSubject<IMouseEvent | IPointerEvent>;
19
+ onPointerOut$: EventSubject<IMouseEvent | IPointerEvent>;
20
+ onPointerOver$: EventSubject<IMouseEvent | IPointerEvent>;
21
+ onPointerLeave$: EventSubject<IMouseEvent | IPointerEvent>;
22
+ onPointerEnter$: EventSubject<IMouseEvent | IPointerEvent>;
23
+ onDblclick$: EventSubject<IMouseEvent | IPointerEvent>;
24
+ onTripleClick$: EventSubject<IMouseEvent | IPointerEvent>;
25
+ onMouseWheel$: EventSubject<IWheelEvent>;
26
+ onDragLeave$: EventSubject<IMouseEvent | IDragEvent>;
27
+ onDragOver$: EventSubject<IMouseEvent | IDragEvent>;
28
+ onDragEnter$: EventSubject<IMouseEvent | IDragEvent>;
29
+ onDrop$: EventSubject<IMouseEvent | IDragEvent>;
30
+ onIsAddedToParent$: EventSubject<any>;
31
+ onDispose$: EventSubject<BaseObject>;
32
32
  protected _oKey: string;
33
33
  protected _dirty: boolean;
34
34
  protected _forceDirty: boolean;
@@ -133,9 +133,6 @@ export declare abstract class BaseObject extends Disposable {
133
133
  show(): void;
134
134
  render(ctx: UniverRenderingContext, bounds: IViewportInfo): void;
135
135
  isHit(coord: Vector2): boolean;
136
- on(eventType: EVENT_TYPE, func: (evt: unknown, state: EventState) => void): Nullable<Observer<unknown>>;
137
- off(eventType: EVENT_TYPE, observer: Nullable<Observer<unknown>>): void;
138
- clear(eventType: EVENT_TYPE): void;
139
136
  triggerPointerMove(evt: IPointerEvent | IMouseEvent): boolean;
140
137
  triggerPointerDown(evt: IPointerEvent | IMouseEvent): boolean;
141
138
  triggerPointerUp(evt: IPointerEvent | IMouseEvent): boolean;
@@ -18,18 +18,6 @@ export declare enum SHAPE_TYPE {
18
18
  CIRCLE = "circle",
19
19
  PATH = "path"
20
20
  }
21
- export declare enum EVENT_TYPE {
22
- PointerMove = "PointerMove",
23
- PointerDown = "PointerDown",
24
- PointerUp = "PointerUp",
25
- PointerOut = "PointerOut",
26
- PointerLeave = "PointerLeave",
27
- PointerOver = "PointerOver",
28
- PointerEnter = "PointerEnter",
29
- wheel = "MouseWheel",
30
- KeyDown = "KeyDown",
31
- KeyUp = "KeyUp"
32
- }
33
21
  export declare enum LINK_VIEW_PORT_TYPE {
34
22
  XY = 0,
35
23
  X = 1,
@@ -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
  };
@@ -1,4 +1,4 @@
1
- import { Nullable, Observable } from '@univerjs/core';
1
+ import { Nullable } from '@univerjs/core';
2
2
  import { IDocumentSkeletonPage } from '../../basics/i-document-skeleton-cached';
3
3
  import { Transform } from '../../basics/transform';
4
4
  import { IViewportInfo } from '../../basics/vector2';
@@ -19,19 +19,20 @@ export interface IDocumentOffsetConfig extends IPageMarginLayout {
19
19
  documentTransform: Transform;
20
20
  }
21
21
  export declare class Documents extends DocComponent {
22
- onPageRenderObservable: Observable<IPageRenderConfig>;
22
+ private readonly _pageRender$;
23
+ readonly pageRender$: import('rxjs').Observable<IPageRenderConfig>;
23
24
  docsLeft: number;
24
25
  docsTop: number;
25
26
  private _drawLiquid;
26
- private _skeletonObserver;
27
27
  constructor(oKey: string, documentSkeleton?: DocumentSkeleton, config?: IDocumentsConfig);
28
28
  static create(oKey: string, documentSkeleton?: DocumentSkeleton, config?: IDocumentsConfig): Documents;
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;
@@ -97,13 +101,12 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
97
101
  private _container;
98
102
  private _inputParent;
99
103
  private _input;
100
- private _moveObservers;
101
- private _upObservers;
102
104
  private _scrollTimers;
103
105
  private _viewportScrollX;
104
106
  private _viewportScrollY;
105
107
  private _rangeList;
106
108
  private _currentSegmentId;
109
+ private _currentSegmentPage;
107
110
  private _selectionStyle;
108
111
  private _isSelectionEnabled;
109
112
  private _viewPortObserverMap;
@@ -112,15 +115,20 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
112
115
  private _docSkeleton;
113
116
  private _scene;
114
117
  private _document;
118
+ private _scenePointerMoveSubs;
119
+ private _scenePointerUpSubs;
115
120
  constructor(_logService: ILogService);
116
121
  __getEditorContainer(): HTMLElement;
117
122
  getViewPort(): Viewport;
118
123
  setSegment(id: string): void;
124
+ setSegmentPage(pageIndex: number): void;
125
+ getSegmentPage(): number;
119
126
  setStyle(style?: ITextSelectionStyle): void;
120
127
  resetStyle(): void;
121
128
  enableSelection(): void;
122
129
  disableSelection(): void;
123
130
  addTextRanges(ranges: ISuccinctTextRangeParam[], isEditing?: boolean): void;
131
+ setCursorManually(evtOffsetX: number, evtOffsetY: number): void;
124
132
  sync(): void;
125
133
  activate(x: number, y: number): void;
126
134
  hasFocus(): boolean;
@@ -130,7 +138,6 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
130
138
  changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, document: Documents): void;
131
139
  handleDblClick(evt: IPointerEvent | IMouseEvent): void;
132
140
  handleTripleClick(evt: IPointerEvent | IMouseEvent): void;
133
- setCursorManually(evtOffsetX: number, evtOffsetY: number): void;
134
141
  eventTrigger(evt: IPointerEvent | IMouseEvent): void;
135
142
  removeAllTextRanges(): void;
136
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;
@@ -1,10 +1,21 @@
1
1
  import { IScale } from '@univerjs/core';
2
2
  import { UniverRenderingContext } from '../../../context';
3
3
  import { SpreadsheetSkeleton } from '../sheet-skeleton';
4
+ import { IARowCfg, IARowCfgObj, IColumnStyleCfg, IRowStyleCfg } from '../interfaces.ts';
4
5
  import { SheetExtension } from './sheet-extension';
5
6
 
7
+ export interface IRowsHeaderCfgParam {
8
+ headerStyle?: Partial<IRowStyleCfg>;
9
+ rowsCfg?: IARowCfg[];
10
+ }
6
11
  export declare class RowHeaderLayout extends SheetExtension {
7
12
  uKey: string;
8
13
  Z_INDEX: number;
14
+ rowsCfg: IARowCfg[];
15
+ headerStyle: IRowStyleCfg;
16
+ constructor(cfg?: IRowsHeaderCfgParam);
17
+ configHeaderRow(cfg: IRowsHeaderCfgParam): void;
18
+ getCfgOfCurrentRow(rowIndex: number): [IARowCfgObj, boolean];
19
+ setStyleToCtx(ctx: UniverRenderingContext, rowStyle: Partial<IColumnStyleCfg>): void;
9
20
  draw(ctx: UniverRenderingContext, parentScale: IScale, spreadsheetSkeleton: SpreadsheetSkeleton): void;
10
21
  }
@@ -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
  }
@@ -82,4 +82,17 @@ export type IAColumnCfgObj = IColumnStyleCfg & {
82
82
  text: string;
83
83
  };
84
84
  export type IAColumnCfg = undefined | null | string | Partial<IAColumnCfgObj>;
85
+ export interface IRowStyleCfg {
86
+ fontFamily: string;
87
+ fontColor: string;
88
+ fontSize: number;
89
+ borderColor: string;
90
+ textAlign: CanvasTextAlign;
91
+ textBaseline: CanvasTextBaseline;
92
+ backgroundColor: string;
93
+ }
94
+ export type IARowCfgObj = IColumnStyleCfg & {
95
+ text: string;
96
+ };
97
+ export type IARowCfg = undefined | null | string | Partial<IARowCfgObj>;
85
98
  export {};
@@ -1,7 +1,7 @@
1
1
  import { Nullable } from '@univerjs/core';
2
2
  import { IViewportInfo, Vector2 } from '../../basics/vector2';
3
3
  import { UniverRenderingContext } from '../../context';
4
- import { RowHeaderLayout } from './extensions/row-header-layout';
4
+ import { IRowsHeaderCfgParam, RowHeaderLayout } from './extensions/row-header-layout';
5
5
  import { SpreadsheetHeader } from './sheet-component';
6
6
  import { SpreadsheetSkeleton } from './sheet-skeleton';
7
7
 
@@ -25,4 +25,5 @@ export declare class SpreadsheetRowHeader extends SpreadsheetHeader {
25
25
  draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
26
26
  isHit(coord: Vector2): boolean;
27
27
  private _initialDefaultExtension;
28
+ setCustomHeader(cfg: IRowsHeaderCfgParam): void;
28
29
  }
@@ -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';
@@ -29,6 +29,12 @@ export interface IDocumentLayoutObject {
29
29
  paddingData: IPaddingData;
30
30
  fill?: Nullable<string>;
31
31
  }
32
+ export declare const DEFAULT_PADDING_DATA: {
33
+ t: number;
34
+ b: number;
35
+ l: number;
36
+ r: number;
37
+ };
32
38
  export declare const RENDER_RAW_FORMULA_KEY = "RENDER_RAW_FORMULA";
33
39
  export declare class SpreadsheetSkeleton extends Skeleton {
34
40
  private _worksheet;
@@ -159,7 +165,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
159
165
  calculateCellIndexByPosition(offsetX: number, offsetY: number, scaleX: number, scaleY: number, scrollXY: {
160
166
  x: number;
161
167
  y: number;
162
- }): Nullable<ISelectionCellWithCoord>;
168
+ }): Nullable<ISelectionCellWithMergeInfo>;
163
169
  /**
164
170
  *
165
171
  * @param offsetX HTML coordinate system, mouse position x.
@@ -216,7 +222,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
216
222
  * @param row Specified Row Coordinate
217
223
  * @param column Specified Column Coordinate
218
224
  */
219
- getCellByIndex(row: number, column: number): ISelectionCellWithCoord;
225
+ getCellByIndex(row: number, column: number): ISelectionCellWithMergeInfo;
220
226
  getCellByIndexWithNoHeader(row: number, column: number): {
221
227
  actualRow: number;
222
228
  actualColumn: number;
@@ -233,9 +239,9 @@ export declare class SpreadsheetSkeleton extends Skeleton {
233
239
  endY: number;
234
240
  startColumn: number;
235
241
  endColumn: number;
236
- rangeType?: import('@univerjs/core').RANGE_TYPE | undefined;
237
- startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType | undefined;
238
- 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;
239
245
  startRow: number;
240
246
  endRow: number;
241
247
  };
@@ -248,12 +254,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
248
254
  x: number;
249
255
  y: number;
250
256
  }): number;
251
- getSelectionBounding(startRow: number, startColumn: number, endRow: number, endColumn: number): {
252
- startRow: number;
253
- startColumn: number;
254
- endRow: number;
255
- endColumn: number;
256
- };
257
+ getSelectionBounding(startRow: number, startColumn: number, endRow: number, endColumn: number): IRange;
257
258
  getBlankCellDocumentModel(cell: Nullable<ICellData>): IDocumentLayoutObject;
258
259
  getCellDocumentModelWithFormula(cell: ICellData): Nullable<IDocumentLayoutObject>;
259
260
  private _getCellDocumentModel;