@univerjs/engine-render 0.2.8 → 0.2.10

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.
@@ -7,6 +7,8 @@ import { IViewportInfo, Vector2 } from './basics/vector2';
7
7
  import { UniverRenderingContext } from './context';
8
8
  import { Layer } from './layer';
9
9
  import { ITransformerConfig } from './basics/transformer-config';
10
+ import { Scene } from './scene';
11
+ import { Engine } from './engine';
10
12
  export declare const BASE_OBJECT_ARRAY: string[];
11
13
  export declare enum ObjectType {
12
14
  UNKNOWN = 0,
@@ -161,10 +163,10 @@ export declare abstract class BaseObject extends Disposable {
161
163
  triggerDrop(evt: IDragEvent | IMouseEvent): boolean;
162
164
  dispose(): void;
163
165
  toJson(): IKeyValue;
164
- getScene(): any;
166
+ getScene(): Nullable<Scene>;
165
167
  resetCursor(): void;
166
168
  setCursor(val: CURSOR_TYPE): void;
167
- getEngine(): any;
169
+ getEngine(): Nullable<Engine>;
168
170
  getObjects(): BaseObject[];
169
171
  getLayerIndex(): number;
170
172
  applyTransform(): void;
@@ -3,7 +3,6 @@ import { IDocumentSkeletonPage } from '../../basics/i-document-skeleton-cached';
3
3
  import { Transform } from '../../basics/transform';
4
4
  import { IViewportInfo } from '../../basics/vector2';
5
5
  import { UniverRenderingContext } from '../../context';
6
- import { Scene } from '../../scene';
7
6
  import { IDocumentsConfig, IPageMarginLayout, DocComponent } from './doc-component';
8
7
  import { DocumentSkeleton } from './layout/doc-skeleton';
9
8
  export interface IPageRenderConfig {
@@ -27,7 +26,7 @@ export declare class Documents extends DocComponent {
27
26
  static create(oKey: string, documentSkeleton?: DocumentSkeleton, config?: IDocumentsConfig): Documents;
28
27
  dispose(): void;
29
28
  getOffsetConfig(): IDocumentOffsetConfig;
30
- getEngine(): Nullable<import('../..').ThinEngine<Scene>>;
29
+ getEngine(): Nullable<import('../..').Engine>;
31
30
  changeSkeleton(newSkeleton: DocumentSkeleton): this;
32
31
  protected _draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
33
32
  draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
@@ -1,20 +1,20 @@
1
- import { IParagraphStyle } from '@univerjs/core';
1
+ import { IParagraph } from '@univerjs/core';
2
2
  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
- export declare function otherHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
5
+ export declare function otherHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraph: IParagraph): {
6
6
  step: number;
7
7
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
8
8
  };
9
- export declare function ArabicHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
9
+ export declare function ArabicHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraph: IParagraph): {
10
10
  step: number;
11
11
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
12
12
  };
13
- export declare function emojiHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
13
+ export declare function emojiHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraph: IParagraph): {
14
14
  step: number;
15
15
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
16
16
  };
17
- export declare function TibetanHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
17
+ export declare function TibetanHandler(index: number, charArray: string, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraph: IParagraph): {
18
18
  step: number;
19
19
  glyphGroup: import('../../../../..').IDocumentSkeletonGlyph[];
20
20
  };
@@ -2,5 +2,5 @@ import { IDocumentSkeletonDrawing, IDocumentSkeletonGlyph, IDocumentSkeletonLine
2
2
  import { IParagraphConfig, ISectionBreakConfig } from '../../../../../basics/interfaces';
3
3
  import { ILayoutContext } from '../../tools';
4
4
  import { BreakPointType } from '../../line-breaker/break';
5
- export declare function layoutParagraph(ctx: ILayoutContext, glyphGroup: IDocumentSkeletonGlyph[], pages: IDocumentSkeletonPage[], sectionBreakConfig: ISectionBreakConfig, paragraphConfig: IParagraphConfig, paragraphStart?: boolean, breakPointType?: BreakPointType): IDocumentSkeletonPage[];
5
+ export declare function layoutParagraph(ctx: ILayoutContext, glyphGroup: IDocumentSkeletonGlyph[], pages: IDocumentSkeletonPage[], sectionBreakConfig: ISectionBreakConfig, paragraphConfig: IParagraphConfig, isParagraphFirstShapedText: boolean, breakPointType?: BreakPointType): IDocumentSkeletonPage[];
6
6
  export declare function updateInlineDrawingPosition(line: IDocumentSkeletonLine, paragraphInlineSkeDrawings?: Map<string, IDocumentSkeletonDrawing>, blockAnchorTop?: number): void;
@@ -17,6 +17,8 @@ export interface IFindNodeRestrictions {
17
17
  }
18
18
  export declare class DocumentSkeleton extends Skeleton {
19
19
  private _docViewModel;
20
+ private _dirty$;
21
+ readonly dirty$: import('rxjs').Observable<boolean>;
20
22
  private _skeletonData;
21
23
  private _findLiquid;
22
24
  private _hyphen;
@@ -1,4 +1,4 @@
1
- import { DocumentDataModel, INumberUnit, IObjectPositionH, IObjectPositionV, IParagraphStyle, ITextStyle, Nullable, BooleanNumber, GridType, SpacingRule } from '@univerjs/core';
1
+ import { DocumentDataModel, INumberUnit, IObjectPositionH, IObjectPositionV, IParagraph, IParagraphStyle, ITextStyle, Nullable, BooleanNumber, GridType, SpacingRule } from '@univerjs/core';
2
2
  import { IDocumentSkeletonCached, IDocumentSkeletonColumn, IDocumentSkeletonDivide, IDocumentSkeletonDrawing, IDocumentSkeletonFontStyle, IDocumentSkeletonGlyph, IDocumentSkeletonLine, IDocumentSkeletonPage, IDocumentSkeletonSection, ISkeletonResourceReference } from '../../../basics/i-document-skeleton-cached';
3
3
  import { IDocsConfig, IParagraphConfig, ISectionBreakConfig } from '../../../basics/interfaces';
4
4
  import { DataStreamTreeNode } from '../view-model/data-stream-tree-node';
@@ -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, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): IFontCreateConfig;
75
+ export declare function getFontCreateConfig(index: number, viewModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraph: IParagraph): IFontCreateConfig;
76
76
  export declare function getNullSkeleton(): IDocumentSkeletonCached;
77
77
  export declare function setPageParent(pages: IDocumentSkeletonPage[], parent: IDocumentSkeletonCached): void;
78
78
  export interface ILayoutContext {
@@ -24,7 +24,7 @@ export declare class Liquid {
24
24
  x: number;
25
25
  y: number;
26
26
  };
27
- translateLine(line: IDocumentSkeletonLine, isDraw?: boolean): {
27
+ translateLine(line: IDocumentSkeletonLine, includeMarginTop?: boolean, includePaddingTop?: boolean): {
28
28
  x: number;
29
29
  y: number;
30
30
  };
@@ -1,11 +1,11 @@
1
1
  import { Nullable, ILogService, RxDisposable } from '@univerjs/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { IMouseEvent, IPointerEvent } from '../../../basics/i-events';
4
- import { INodeInfo, INodePosition } from '../../../basics/interfaces';
4
+ import { INodePosition } from '../../../basics/interfaces';
5
5
  import { ISuccinctDocRangeParam, ITextRangeWithStyle, ITextSelectionStyle, RANGE_DIRECTION } from '../../../basics/range';
6
6
  import { Scene } from '../../../scene';
7
7
  import { Viewport } from '../../../viewport';
8
- import { DocumentSkeleton, IFindNodeRestrictions } from '../layout/doc-skeleton';
8
+ import { DocumentSkeleton } from '../layout/doc-skeleton';
9
9
  import { Documents } from '../document';
10
10
  import { TextRange } from './text-range';
11
11
  import { RectRange } from './rect-range';
@@ -177,7 +177,7 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
177
177
  private _addTextRange;
178
178
  private _addRectRangesToCache;
179
179
  private _addRectRanges;
180
- private _updateTextRangeAnchorPosition;
180
+ private _createTextRangeByAnchorPosition;
181
181
  private _updateActiveRangePosition;
182
182
  private _isEmpty;
183
183
  private _getCanvasOffset;
@@ -187,9 +187,7 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
187
187
  private _initInputEvents;
188
188
  private _eventHandle;
189
189
  private _getTransformCoordForDocumentOffset;
190
- findNodeByCoord(evtOffsetX: number, evtOffsetY: number, restrictions: IFindNodeRestrictions): Nullable<INodeInfo>;
191
- private _getNodeIndex;
190
+ private _findNodeByCoord;
192
191
  private _detachEvent;
193
- private _activeSelectionRefresh;
194
192
  }
195
193
  export declare const ITextSelectionRenderManager: import('@univerjs/core').IdentifierDecorator<TextSelectionRenderManager>;
@@ -25,6 +25,8 @@ export declare class DocumentViewModel implements IDisposable {
25
25
  readonly editAreaChange$: import('rxjs').Observable<Nullable<DocumentEditArea>>;
26
26
  headerTreeMap: Map<string, DocumentViewModel>;
27
27
  footerTreeMap: Map<string, DocumentViewModel>;
28
+ private readonly _segmentViewModels$;
29
+ readonly segmentViewModels$: import('rxjs').Observable<DocumentViewModel[]>;
28
30
  constructor(_documentDataModel: DocumentDataModel);
29
31
  registerCustomRangeInterceptor(interceptor: ICustomRangeInterceptor): IDisposable;
30
32
  dispose(): void;
@@ -24,5 +24,9 @@ export declare class SpreadsheetColumnHeader extends SpreadsheetHeader {
24
24
  draw(ctx: UniverRenderingContext, bounds?: IViewportInfo): void;
25
25
  isHit(coord: Vector2): boolean;
26
26
  private _initialDefaultExtension;
27
+ /**
28
+ * Custimize column header, such as custom header text and background.
29
+ * @param cfg
30
+ */
27
31
  setCustomHeader(cfg: IColumnsHeaderCfgParam): void;
28
32
  }
@@ -7,6 +7,9 @@ export interface IColumnsHeaderCfgParam {
7
7
  headerStyle?: Partial<IColumnStyleCfg>;
8
8
  columnsCfg?: IAColumnCfg[];
9
9
  }
10
+ /**
11
+ * Column Header Bar, include a lot of columns header
12
+ */
10
13
  export declare class ColumnHeaderLayout extends SheetExtension {
11
14
  uKey: string;
12
15
  Z_INDEX: number;
@@ -6,6 +6,16 @@ export declare enum SHEET_EXTENSION_TYPE {
6
6
  }
7
7
  export declare class SheetExtension extends ComponentExtension<SpreadsheetSkeleton, SHEET_EXTENSION_TYPE, IRange[]> {
8
8
  type: SHEET_EXTENSION_TYPE;
9
+ /**
10
+ * Get ISelectionCellWithMergeInfo by cell rowIndex and cell columnIndex.
11
+ * The startXY in return value does not include rowHeader and columnHeader.
12
+ * @param rowIndex
13
+ * @param columnIndex
14
+ * @param rowHeightAccumulation
15
+ * @param columnWidthAccumulation
16
+ * @param dataMergeCache
17
+ * @returns ISelectionCellWithMergeInfo
18
+ */
9
19
  getCellIndex(rowIndex: number, columnIndex: number, rowHeightAccumulation: number[], columnWidthAccumulation: number[], dataMergeCache: IRange[]): import('@univerjs/core').ISelectionCellWithMergeInfo;
10
20
  isRenderDiffRangesByCell(rangeP: IRange, diffRanges?: IRange[]): boolean;
11
21
  isRenderDiffRangesByColumn(curStartColumn: number, curEndColumn: number, diffRanges?: IRange[]): boolean;
@@ -1,4 +1,4 @@
1
- import { BooleanNumber, DocumentDataModel, HorizontalAlign, IContextService, LocaleService, ObjectMatrix, VerticalAlign, WrapStrategy, ICellData, IPaddingData, IRange, IRowAutoHeightInfo, ISelectionCellWithMergeInfo, ITextRotation, IWorksheetData, Nullable, Styles, Worksheet } from '@univerjs/core';
1
+ import { BooleanNumber, DocumentDataModel, HorizontalAlign, IContextService, LocaleService, ObjectMatrix, VerticalAlign, WrapStrategy, ICellData, IColumnRange, IPaddingData, IPosition, IRange, IRowAutoHeightInfo, ISelectionCellWithMergeInfo, ISize, 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';
@@ -8,10 +8,7 @@ import { IStylesCache } from './interfaces';
8
8
  * @param documentSkeleton Data of the document's ViewModel
9
9
  * @param angleInDegree The rotation angle of an Excel cell, it's **degree**
10
10
  */
11
- export declare function getDocsSkeletonPageSize(documentSkeleton: DocumentSkeleton, angleInDegree?: number): {
12
- width: number;
13
- height: number;
14
- } | undefined;
11
+ export declare function getDocsSkeletonPageSize(documentSkeleton: DocumentSkeleton, angleInDegree?: number): Nullable<Required<ISize>>;
15
12
  interface IRowColumnSegment {
16
13
  startRow: number;
17
14
  endRow: number;
@@ -35,6 +32,10 @@ export declare const DEFAULT_PADDING_DATA: {
35
32
  r: number;
36
33
  };
37
34
  export declare const RENDER_RAW_FORMULA_KEY = "RENDER_RAW_FORMULA";
35
+ export interface ICacheItem {
36
+ bg: boolean;
37
+ border: boolean;
38
+ }
38
39
  export declare class SpreadsheetSkeleton extends Skeleton {
39
40
  readonly worksheet: Worksheet;
40
41
  /**
@@ -101,11 +102,14 @@ export declare class SpreadsheetSkeleton extends Skeleton {
101
102
  setOverflowCache(value: ObjectMatrix<IRange>): void;
102
103
  setMarginLeft(left: number): void;
103
104
  setMarginTop(top: number): void;
104
- calculateSegment(bounds?: IViewportInfo): true | undefined;
105
- calculateWithoutClearingCache(bounds?: IViewportInfo): this | undefined;
106
- calculate(bounds?: IViewportInfo): this;
105
+ calculateSegment(bounds?: IViewportInfo): boolean;
106
+ calculateWithoutClearingCache(bounds?: IViewportInfo): Nullable<SpreadsheetSkeleton>;
107
+ calculate(bounds?: IViewportInfo): Nullable<SpreadsheetSkeleton>;
107
108
  calculateAutoHeightInRange(ranges: Nullable<IRange[]>): IRowAutoHeightInfo[];
108
109
  private _calculateRowAutoHeight;
110
+ /**
111
+ * Calculate data for row col & cell position, then update position value to this._rowHeaderWidth & this._rowHeightAccumulation & this._columnHeaderHeight & this._columnWidthAccumulation.
112
+ */
109
113
  private _updateLayout;
110
114
  private _dynamicallyUpdateRowHeaderWidth;
111
115
  getRowColumnSegment(bounds?: IViewportInfo): IRange;
@@ -119,27 +123,11 @@ export declare class SpreadsheetSkeleton extends Skeleton {
119
123
  appendToOverflowCache(row: number, column: number, startColumn: number, endColumn: number): void;
120
124
  getColumnCount(): number;
121
125
  getRowCount(): number;
122
- getOverflowPosition(contentSize: {
123
- width: number;
124
- height: number;
125
- }, horizontalAlign: HorizontalAlign, row: number, column: number, columnCount: number): {
126
- startColumn: number;
127
- endColumn: number;
128
- };
129
- getNoMergeCellPositionByIndex(rowIndex: number, columnIndex: number): {
130
- startY: number;
131
- endY: number;
132
- startX: number;
133
- endX: number;
134
- };
135
- getNoMergeCellPositionByIndexWithNoHeader(rowIndex: number, columnIndex: number): {
136
- startY: number;
137
- endY: number;
138
- startX: number;
139
- endX: number;
140
- };
126
+ getOverflowPosition(contentSize: Required<ISize>, horizontalAlign: HorizontalAlign, row: number, column: number, columnCount: number): IColumnRange;
127
+ getNoMergeCellPositionByIndex(rowIndex: number, columnIndex: number): IPosition;
128
+ getNoMergeCellPositionByIndexWithNoHeader(rowIndex: number, columnIndex: number): IPosition;
141
129
  /**
142
- *
130
+ * Get cell by pos(offsetX, offsetY).
143
131
  * @param offsetX HTML coordinate system, mouse position x.
144
132
  * @param offsetY HTML coordinate system, mouse position y.
145
133
  * @param scaleX render scene scale x-axis, scene.getAncestorScale
@@ -210,31 +198,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
210
198
  * @param column Specified Column Coordinate
211
199
  */
212
200
  getCellByIndex(row: number, column: number): ISelectionCellWithMergeInfo;
213
- getCellByIndexWithNoHeader(row: number, column: number): {
214
- actualRow: number;
215
- actualColumn: number;
216
- startY: number;
217
- endY: number;
218
- startX: number;
219
- endX: number;
220
- isMerged: boolean;
221
- isMergedMainCell: boolean;
222
- mergeInfo: {
223
- startX: number;
224
- startY: number;
225
- endX: number;
226
- endY: number;
227
- rangeType?: import('@univerjs/core').RANGE_TYPE;
228
- startAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
229
- endAbsoluteRefType?: import('@univerjs/core').AbsoluteRefType;
230
- startRow: number;
231
- endRow: number;
232
- unitId?: string;
233
- sheetId?: string;
234
- startColumn: number;
235
- endColumn: number;
236
- };
237
- };
201
+ getCellByIndexWithNoHeader(row: number, column: number): ISelectionCellWithMergeInfo;
238
202
  convertTransformToOffsetX(offsetX: number, scaleX: number, scrollXY: {
239
203
  x: number;
240
204
  y: number;
@@ -275,7 +239,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
275
239
  private _resetCache;
276
240
  resetCache(): void;
277
241
  private _makeDocumentSkeletonDirty;
278
- private _setCellCache;
242
+ private _setCellStylesCache;
279
243
  private _updateConfigAndGetDocumentModel;
280
244
  private _getDocumentDataByStyle;
281
245
  /**
@@ -32,8 +32,6 @@ export declare class Spreadsheet extends SheetComponent {
32
32
  dispose(): void;
33
33
  /**
34
34
  * draw by viewport
35
- * cacheBound ---> viewBound
36
- * diffCacheBounds ---> diffRange
37
35
  * @param ctx
38
36
  * @param viewportInfo
39
37
  */
@@ -38,7 +38,7 @@ export declare class Engine extends ThinEngine<Scene> {
38
38
  private _dropEvent;
39
39
  private _remainCapture;
40
40
  /** previous pointer position */
41
- private pointer;
41
+ private _pointer;
42
42
  private _mouseId;
43
43
  private _isUsingFirefox;
44
44
  private _previousWidth;
@@ -17,21 +17,29 @@ export declare class Layer extends Disposable {
17
17
  disableCache(): void;
18
18
  isAllowCache(): boolean;
19
19
  /**
20
- * get objects which is visible and not in a group.
21
- * @returns BaseObject[]
20
+ * Get direct visible children in order. (direct means object is not in group), default order is ascending by z-index.
21
+ * @returns {BaseObject[]} objects
22
22
  */
23
23
  getObjectsByOrder(): BaseObject[];
24
+ /**
25
+ * Get visible and evented objects.
26
+ * @returns {BaseObject[]} objects
27
+ */
24
28
  getObjectsByOrderForPick(): BaseObject[];
25
29
  getObjects(): BaseObject[];
26
30
  /**
27
- * insert o to _objects[]
28
- * if o is a group, insert all its children and group itself to _objects[]
31
+ * Insert object to this._objects, if object is a group, insert all its children and group itself to _objects[]
29
32
  * @param o
30
- * @returns this
33
+ * @returns {Layer} this
31
34
  */
32
- addObject(o: BaseObject): this;
35
+ addObject(o: BaseObject): Layer;
33
36
  removeObject(object: BaseObject | string): void;
34
- addObjects(objects: BaseObject[]): this;
37
+ /**
38
+ * Insert objects to this._objects, if object is a group, insert all its children and group itself to _objects[]
39
+ * @param objects
40
+ * @returns {Layer} this
41
+ */
42
+ addObjects(objects: BaseObject[]): Layer;
35
43
  removeObjects(objects: BaseObject[] | string[]): void;
36
44
  makeDirty(state?: boolean): this;
37
45
  makeDirtyWithDebounce(state?: boolean): void;
@@ -43,7 +43,7 @@ export interface IRenderManagerService extends IDisposable {
43
43
  /**
44
44
  * add dep to _renderDependencies(type, dep)
45
45
  * @param type
46
- * @param depCtor
46
+ * @param dep
47
47
  */
48
48
  registerRenderModule<T extends UnitModel>(type: UnitType, dep: Dependency<T>): IDisposable;
49
49
  }
@@ -103,13 +103,13 @@ export declare class RenderManagerService extends Disposable implements IRenderM
103
103
  * @returns renderUnit:IRender
104
104
  */
105
105
  private _createRender;
106
- addRender(unitId: string, item: IRender): void;
106
+ addRender(unitId: string, renderUnit: IRender): void;
107
107
  private _addRenderUnit;
108
108
  removeRender(unitId: string): void;
109
109
  has(unitId: string): boolean;
110
110
  setCurrent(unitId: string): void;
111
- getCurrent(): IRender | undefined;
112
- getFirst(): IRender;
111
+ getCurrent(): Nullable<IRender>;
112
+ getFirst(): Nullable<IRender>;
113
113
  /**
114
114
  * get RenderUnit from this._renderMap
115
115
  * @param unitId
@@ -2,6 +2,11 @@ import { Dependency, DependencyIdentifier, IDisposable, Nullable, UnitModel, Uni
2
2
  import { Engine } from '../engine';
3
3
  import { Scene } from '../scene';
4
4
  import { RenderComponentType } from './render-manager.service';
5
+ /**
6
+ * Public interface of a {@link RenderUnit}.
7
+ *
8
+ * @property {string} unitId - The id of the RenderUnit.
9
+ */
5
10
  export interface IRender {
6
11
  unitId: string;
7
12
  type: UniverInstanceType;
@@ -13,17 +18,22 @@ export interface IRender {
13
18
  isThumbNail?: boolean;
14
19
  with<T>(dependency: DependencyIdentifier<T>): T;
15
20
  }
21
+ /**
22
+ * Every render module should implement this interface.
23
+ */
16
24
  export interface IRenderModule extends IDisposable {
17
25
  }
18
26
  /**
19
- * This object encapsulates methods or properties to render each element.
27
+ * Necessary context for a render module.This interface would be the first argument of render modules' constructor
28
+ * functions.
20
29
  */
21
30
  export interface IRenderContext<T extends UnitModel = UnitModel> extends Omit<IRender, 'with'> {
22
31
  unit: T;
23
32
  type: UnitType;
24
33
  }
25
34
  /**
26
- * RenderUnit impl IRender
35
+ * This class is necessary for Univer to render several units in the same webpage. It encapsulates the rendering
36
+ * context and rendering modules for a specific unit.
27
37
  */
28
38
  export declare class RenderUnit extends Disposable implements IRender {
29
39
  readonly isRenderUnit: boolean;
@@ -43,9 +53,13 @@ export declare class RenderUnit extends Disposable implements IRender {
43
53
  constructor(init: Pick<IRenderContext, 'engine' | 'scene' | 'isMainScene' | 'unit'>, parentInjector: Injector);
44
54
  dispose(): void;
45
55
  /**
46
- * Get render controller hold by this render unit.
56
+ * Get a dependency from the RenderUnit's injector.
47
57
  */
48
58
  with<T>(dependency: DependencyIdentifier<T>): T;
59
+ /**
60
+ * Add render dependencies to the RenderUnit's injector. Note that the dependencies would be initialized immediately
61
+ * after being added.
62
+ */
49
63
  addRenderDependencies(dependencies: Dependency[]): void;
50
64
  private _initDependencies;
51
65
  }
@@ -12,6 +12,7 @@ import { ThinEngine } from './thin-engine';
12
12
  import { ThinScene } from './thin-scene';
13
13
  import { Viewport } from './viewport';
14
14
  import { ITransformerConfig } from './basics/transformer-config';
15
+ import { Engine } from './engine';
15
16
  export declare class Scene extends ThinScene {
16
17
  private _parent;
17
18
  private _layers;
@@ -48,8 +49,10 @@ export declare class Scene extends ThinScene {
48
49
  resize(width?: number, height?: number): this;
49
50
  setScaleValue(scaleX: number, scaleY: number): void;
50
51
  /**
51
- * scale to value, absolute
52
- * setTransform ---> viewport._updateScrollBarPosByViewportScroll ---> scrollTo
52
+ * Set scale, and then emit event to update Viewport scroll state.
53
+ * @param scaleX
54
+ * @param scaleY
55
+ * @returns Scene
53
56
  */
54
57
  scale(scaleX?: number, scaleY?: number): this;
55
58
  /**
@@ -57,42 +60,65 @@ export declare class Scene extends ThinScene {
57
60
  */
58
61
  scaleBy(scaleX?: number, scaleY?: number): this;
59
62
  /**
60
- * This sequence will initiate a series of updates:
61
- * scene._setTransForm --> viewport@resetCanvasSizeAndUpdateScrollBar ---> scrollTo ---> limitedScroll ---> onScrollBeforeObserver ---> setScrollInfo
62
- * scrollInfo needs accurate scene width & height, limitedScroll depends on scene & engine's width & height
63
+ * Reset canvas size and update scroll
63
64
  * @param state
64
65
  */
65
66
  transformByState(state: ISceneTransformState): void;
66
67
  getParent(): ThinEngine<Scene> | SceneViewer;
67
- getEngine(): Nullable<ThinEngine<Scene>>;
68
+ getEngine(): Nullable<Engine>;
68
69
  getLayers(): Layer[];
69
70
  getLayer(zIndex?: number): Layer;
70
71
  getLayerMaxZIndex(): number;
71
72
  addLayer(...argument: Layer[]): void;
72
- addObjects(objects: BaseObject[], zIndex?: number): this;
73
- addObject(o: BaseObject, zIndex?: number): this;
74
73
  /**
75
- * make object parent to scene
74
+ * Add objects to Layer( Layer is specfied by zIndex)
75
+ * If object is a group, insert all its children and group itself to _objects[].
76
+ * @param objects
77
+ * @param zIndex
78
+ * @returns {Scene} this
79
+ */
80
+ addObjects(objects: BaseObject[], zIndex?: number): Scene;
81
+ /**
82
+ * Add object to Layer (Layer is specified by zIndex).
83
+ * If object is a group, insert all its children and group itself to _objects[].
84
+ * @param o
85
+ * @param zIndex layer index
86
+ * @returns {Scene} scene
87
+ */
88
+ addObject(o: BaseObject, zIndex?: number): Scene;
89
+ /**
90
+ * Set Scene as object parent, if object has no parent.
76
91
  * @param o
92
+ * @returns {void}
77
93
  */
78
94
  setObjectBehavior(o: BaseObject): void;
79
- removeObject(object?: BaseObject | string): this | undefined;
80
- removeObjects(objects?: BaseObject[] | string[]): this | undefined;
95
+ removeObject(object?: BaseObject | string): Nullable<Scene>;
96
+ removeObjects(objects?: BaseObject[] | string[]): Nullable<Scene>;
81
97
  getObjectsByLayer(zIndex: number): BaseObject[];
82
98
  /**
83
- * get objects which is visible and not in a group in each layer.
84
- * @returns BaseObject[]
99
+ * Get all objects of each Layer.
100
+ * @returns {BaseObject[]} objects
85
101
  */
86
102
  getAllObjects(): BaseObject[];
103
+ /**
104
+ * Get objects which is visible and not in a group in each layer.
105
+ * @returns BaseObject[]
106
+ */
107
+ getAllObjectsByOrder(): BaseObject[];
87
108
  /**
88
109
  * get objects which is visible and not in a group.
89
110
  * @param isDesc
90
111
  * @returns BaseObject[]
91
112
  */
92
- getAllObjectsByOrder(isDesc?: boolean): BaseObject[];
113
+ getAllObjectsByDescOrder(isDesc?: boolean): BaseObject[];
114
+ /**
115
+ * Get visible and evented objects.
116
+ * @param isDesc
117
+ * @returns {BaseObject[]} objects
118
+ */
93
119
  getAllObjectsByOrderForPick(isDesc?: boolean): BaseObject[];
94
- getObject(oKey: string): BaseObject | undefined;
95
- getObjectIncludeInGroup(oKey: string): BaseObject | undefined;
120
+ getObject(oKey: string): Nullable<BaseObject>;
121
+ getObjectIncludeInGroup(oKey: string): Nullable<BaseObject>;
96
122
  fuzzyMathObjects(oKey: string, matchStart?: boolean): BaseObject[];
97
123
  addViewport(...viewport: Viewport[]): this;
98
124
  removeViewport(key: string): Viewport | undefined;
@@ -90,11 +90,7 @@ export declare class RichText extends BaseObject {
90
90
  private _convertToDocumentData;
91
91
  private _initialProps;
92
92
  /**
93
- *
94
- * it should be invoked when _documentData changed.
95
- * _documentData changed ---> update _documentSkeleton & _documentSkeleton
96
- *
97
- * now it is invoked when transformByState(change editor size) & end of editing
93
+ * After changing editor size & end of editing, update skeleton of doc.
98
94
  */
99
95
  refreshDocumentByDocData(): void;
100
96
  /**
@@ -102,7 +102,11 @@ export declare abstract class Shape<T extends IShapeProps> extends BaseObject {
102
102
  private static _setFillStyles;
103
103
  private static _setStrokeStyles;
104
104
  render(mainCtx: UniverRenderingContext, bounds?: IViewportInfo): this;
105
- setProps(props?: T): this | undefined;
105
+ /**
106
+ * this[_key] = props[key]
107
+ * @param props
108
+ */
109
+ setProps(props?: T): Shape<T>;
106
110
  toJson(): {
107
111
  [x: string]: any;
108
112
  };