@univerjs/engine-render 0.1.0-beta.5 → 0.1.2

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.
@@ -56,6 +56,8 @@ export declare function precisionTo(num: number, accurate: number): number;
56
56
  * var time = performance.now(); for(let i=0;i<100000000;i++){ fixLineWidthByScale(i, 0.666); }; console.log(performance.now()-time);
57
57
  */
58
58
  export declare function fixLineWidthByScale(num: number, scale: number): number;
59
+ export declare const UNIVER_GLOBAL_DEFAULT_FONT_SIZE = 11;
60
+ export declare const UNIVER_GLOBAL_DEFAULT_FONT_FAMILY = "Arial";
59
61
  export declare function getFontStyleString(textStyle?: IStyleBase, localeService?: LocaleService): {
60
62
  fontCache: string;
61
63
  fontString: string;
@@ -120,3 +122,5 @@ export declare function getSizeForDom(dom: HTMLElement): {
120
122
  width: number;
121
123
  height: number;
122
124
  };
125
+ export declare function ptToPixel(pt: number): number;
126
+ export declare function pixelToPt(px: number): number;
@@ -17,12 +17,20 @@ import type { Nullable } from '@univerjs/core';
17
17
  import type { INodePosition } from '../../../basics/interfaces';
18
18
  import type { ISuccinctTextRangeParam, ITextSelectionStyle } from '../../../basics/range';
19
19
  import { RANGE_DIRECTION } from '../../../basics/range';
20
+ import type { IPoint } from '../../../basics/vector2';
20
21
  import type { Scene } from '../../../scene';
21
22
  import { Rect } from '../../../shape/rect';
22
23
  import type { ThinScene } from '../../../thin-scene';
23
24
  import type { DocumentSkeleton } from '../doc-skeleton';
24
25
  import type { Documents } from '../document';
26
+ export declare const TEXT_RANGE_LAYER_INDEX = 1;
25
27
  export declare function cursorConvertToTextRange(scene: Scene, range: ISuccinctTextRangeParam, docSkeleton: DocumentSkeleton, document: Documents): Nullable<TextRange>;
28
+ export declare function getAnchorBounding(pointsGroup: IPoint[][]): {
29
+ left: number;
30
+ top: number;
31
+ width: number;
32
+ height: number;
33
+ };
26
34
  export declare class TextRange {
27
35
  private _scene;
28
36
  private _document;
@@ -34,7 +42,9 @@ export declare class TextRange {
34
42
  private _rangeShape;
35
43
  private _anchorShape;
36
44
  private _cursorList;
45
+ private _anchorBlinkTimer;
37
46
  constructor(_scene: ThinScene, _document: Documents, _docSkeleton: DocumentSkeleton, anchorNodePosition?: Nullable<INodePosition>, focusNodePosition?: Nullable<INodePosition>, style?: ITextSelectionStyle);
47
+ private _anchorBlink;
38
48
  get startOffset(): number | undefined;
39
49
  get endOffset(): number | undefined;
40
50
  get collapsed(): boolean;
@@ -53,7 +63,6 @@ export declare class TextRange {
53
63
  private _isEmpty;
54
64
  private _isCollapsed;
55
65
  private _createOrUpdateRange;
56
- private _getAnchorBounding;
57
66
  private _createOrUpdateAnchor;
58
67
  private _setCursorList;
59
68
  }
@@ -43,7 +43,6 @@ export declare function getLastSpan(page: IDocumentSkeletonPage): IDocumentSkele
43
43
  export declare function isColumnFull(page: IDocumentSkeletonPage): boolean;
44
44
  export declare function isBlankPage(page: IDocumentSkeletonPage): boolean;
45
45
  export declare function isBlankColumn(column: IDocumentSkeletonColumn): boolean;
46
- export declare function reCalculateLineDivide(): void;
47
46
  export declare function getNumberUnitValue(unitValue: number | INumberUnit, benchMark: number): number;
48
47
  export declare function getCharSpaceApply(charSpace: number | undefined, defaultTabStop: number, gridType?: GridType, snapToGrid?: BooleanNumber): number;
49
48
  export declare function validationGrid(gridType?: GridType, snapToGrid?: BooleanNumber): boolean;
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import './extensions';
16
17
  import type { Nullable } from '@univerjs/core';
17
18
  import { Observable } from '@univerjs/core';
18
19
  import type { IDocumentSkeletonPage } from '../../basics/i-document-skeleton-cached';
@@ -24,19 +24,15 @@ import type { Scene } from '../../scene';
24
24
  import type { Viewport } from '../../viewport';
25
25
  import { TextRange } from './common/text-range';
26
26
  import type { DocumentSkeleton } from './doc-skeleton';
27
- import type { Documents, IDocumentOffsetConfig } from './document';
27
+ import type { Documents } from './document';
28
28
  export declare function getCanvasOffsetByEngine(engine: Nullable<Engine>): {
29
29
  left: number;
30
30
  top: number;
31
31
  };
32
- interface IAddTextRangesConfig {
33
- scene: Scene;
34
- skeleton: DocumentSkeleton;
35
- documentOffsetConfig: IDocumentOffsetConfig;
36
- }
37
32
  export interface ITextSelectionInnerParam {
38
33
  textRanges: TextRange[];
39
34
  segmentId: string;
35
+ isEditing: boolean;
40
36
  style: ITextSelectionStyle;
41
37
  }
42
38
  export interface IActiveTextRange {
@@ -58,6 +54,8 @@ export interface ITextSelectionRenderManager {
58
54
  readonly onCompositionend$: Observable<Nullable<IEditorInputConfig>>;
59
55
  readonly onSelectionStart$: Observable<Nullable<INodePosition>>;
60
56
  readonly onPaste$: Observable<Nullable<IEditorInputConfig>>;
57
+ readonly onFocus$: Observable<Nullable<IEditorInputConfig>>;
58
+ readonly onBlur$: Observable<Nullable<IEditorInputConfig>>;
61
59
  readonly textSelectionInner$: Observable<Nullable<ITextSelectionInnerParam>>;
62
60
  __getEditorContainer(): HTMLElement;
63
61
  getViewPort(): Viewport;
@@ -67,12 +65,13 @@ export interface ITextSelectionRenderManager {
67
65
  setStyle(style: ITextSelectionStyle): void;
68
66
  resetStyle(): void;
69
67
  removeAllTextRanges(): void;
70
- addTextRanges(ranges: ISuccinctTextRangeParam[], config?: IAddTextRangesConfig): void;
68
+ addTextRanges(ranges: ISuccinctTextRangeParam[], isEditing?: boolean): void;
71
69
  sync(): void;
72
70
  activate(x: number, y: number): void;
71
+ deactivate(): void;
72
+ hasFocus(): boolean;
73
73
  focus(): void;
74
74
  blur(): void;
75
- deactivate(): void;
76
75
  changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, document: Documents): void;
77
76
  dispose(): void;
78
77
  handleDblClick(evt: IPointerEvent | IMouseEvent): void;
@@ -105,10 +104,13 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
105
104
  readonly onPaste$: Observable<Nullable<IEditorInputConfig>>;
106
105
  private readonly _textSelectionInner$;
107
106
  readonly textSelectionInner$: Observable<Nullable<ITextSelectionInnerParam>>;
107
+ private readonly _onFocus$;
108
+ readonly onFocus$: Observable<Nullable<IEditorInputConfig>>;
109
+ private readonly _onBlur$;
110
+ readonly onBlur$: Observable<Nullable<IEditorInputConfig>>;
108
111
  private _container;
109
112
  private _inputParent;
110
113
  private _input;
111
- private _cursor;
112
114
  private _moveObserver;
113
115
  private _upObserver;
114
116
  private _viewportScrollX;
@@ -131,9 +133,10 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
131
133
  resetStyle(): void;
132
134
  enableSelection(): void;
133
135
  disableSelection(): void;
134
- addTextRanges(ranges: ISuccinctTextRangeParam[]): void;
136
+ addTextRanges(ranges: ISuccinctTextRangeParam[], isEditing?: boolean): void;
135
137
  sync(): void;
136
138
  activate(x: number, y: number): void;
139
+ hasFocus(): boolean;
137
140
  focus(): void;
138
141
  blur(): void;
139
142
  deactivate(): void;
@@ -149,7 +152,6 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
149
152
  dispose(): void;
150
153
  private _initDOM;
151
154
  private _initInput;
152
- private _initDOMCursor;
153
155
  private _getNodePosition;
154
156
  private _interactTextRange;
155
157
  private _removeAllTextRanges;
@@ -159,8 +161,7 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
159
161
  private _updateActiveRangeFocusPosition;
160
162
  private _isEmpty;
161
163
  private _getCanvasOffset;
162
- private _scrollToSelection;
163
- private _updateDomCursorPositionAndSize;
164
+ private _updateInputPosition;
164
165
  private _moving;
165
166
  private _attachScrollEvent;
166
167
  private _initInputEvents;
@@ -171,4 +172,3 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
171
172
  private _activeSelectionRefresh;
172
173
  }
173
174
  export declare const ITextSelectionRenderManager: import("@wendellhu/redi").IdentifierDecorator<TextSelectionRenderManager>;
174
- export {};
@@ -23,7 +23,6 @@ import type { IStylesCache } from './interfaces';
23
23
  * Obtain the height and width of a cell's text, taking into account scenarios with rotated text.
24
24
  * @param documentSkeleton Data of the document's ViewModel
25
25
  * @param angleInDegree The rotation angle of an Excel cell, it's **degree**
26
- * @returns
27
26
  */
28
27
  export declare function getDocsSkeletonPageSize(documentSkeleton: DocumentSkeleton, angleInDegree?: number): {
29
28
  width: number;
@@ -85,26 +84,18 @@ export declare class SpreadsheetSkeleton extends Skeleton {
85
84
  get columnHeaderHeightAndMarginTop(): number;
86
85
  /**
87
86
  * @deprecated
88
- * @param config
89
- * @param cellData
90
- * @param styles
91
- * @param LocaleService
92
- * @returns
93
87
  */
94
88
  static create(worksheet: Worksheet | undefined, config: IWorksheetData, cellData: ObjectMatrix<Nullable<ICellData>>, styles: Styles, LocaleService: LocaleService): SpreadsheetSkeleton;
95
89
  /**
96
90
  * @deprecated should never expose a property that is provided by another module!
97
- * @returns
98
91
  */
99
92
  getWorksheetConfig(): IWorksheetData;
100
93
  /**
101
94
  * @deprecated should never expose a property that is provided by another module!
102
- * @returns
103
95
  */
104
96
  getCellData(): ObjectMatrix<Nullable<ICellData>>;
105
97
  /**
106
98
  * @deprecated should never expose a property that is provided by another module!
107
- * @returns
108
99
  */
109
100
  getsStyles(): Styles;
110
101
  setOverflowCache(value: ObjectMatrix<IRange>): void;
@@ -116,6 +107,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
116
107
  calculateAutoHeightInRange(ranges: Nullable<IRange[]>): IRowAutoHeightInfo[];
117
108
  private _calculateRowAutoHeight;
118
109
  updateLayout(): this | undefined;
110
+ private _dynamicallyUpdateRowHeaderWidth;
119
111
  getRowColumnSegment(bounds?: IViewportBound): {
120
112
  startRow: number;
121
113
  endRow: number;
@@ -162,7 +154,9 @@ export declare class SpreadsheetSkeleton extends Skeleton {
162
154
  * @param offsetY HTML coordinate system, mouse position y.
163
155
  * @param scaleX render scene scale x-axis, scene.getAncestorScale
164
156
  * @param scaleY render scene scale y-axis, scene.getAncestorScale
165
- * @param scrollXY render viewport scroll {x, y}, scene.getScrollXYByRelativeCoords, scene.getScrollXY
157
+ * @param scrollXY render viewport scroll {x, y}, scene.getScrollXYByRelativeCoords, scene.getScrollXY
158
+ * @param scrollXY.x
159
+ * @param scrollXY.y
166
160
  * @returns Selection data with coordinates
167
161
  */
168
162
  calculateCellIndexByPosition(offsetX: number, offsetY: number, scaleX: number, scaleY: number, scrollXY: {
@@ -176,6 +170,8 @@ export declare class SpreadsheetSkeleton extends Skeleton {
176
170
  * @param scaleX render scene scale x-axis, scene.getAncestorScale
177
171
  * @param scaleY render scene scale y-axis, scene.getAncestorScale
178
172
  * @param scrollXY render viewport scroll {x, y}, scene.getScrollXYByRelativeCoords, scene.getScrollXY
173
+ * @param scrollXY.x
174
+ * @param scrollXY.y
179
175
  * @returns Hit cell coordinates
180
176
  */
181
177
  getCellPositionByOffset(offsetX: number, offsetY: number, scaleX: number, scaleY: number, scrollXY: {
@@ -201,7 +197,8 @@ export declare class SpreadsheetSkeleton extends Skeleton {
201
197
  * @param offsetY scaled offset y
202
198
  * @param scaleY scale y
203
199
  * @param scrollXY
204
- * @returns
200
+ * @param scrollXY.x
201
+ * @param scrollXY.y
205
202
  */
206
203
  getRowPositionByOffsetY(offsetY: number, scaleY: number, scrollXY: {
207
204
  x: number;
@@ -221,8 +218,6 @@ export declare class SpreadsheetSkeleton extends Skeleton {
221
218
  * Return cell information corresponding to the current coordinates, including the merged cell object.
222
219
  * @param row Specified Row Coordinate
223
220
  * @param column Specified Column Coordinate
224
- * @param scaleX render scene scale x-axis, current Horizontal Scale, scene.getAncestorScale
225
- * @param scaleY render scene scale y-axis, current Vertical Scale, scene.getAncestorScale
226
221
  */
227
222
  getCellByIndex(row: number, column: number): ISelectionCellWithCoord;
228
223
  getCellByIndexWithNoHeader(row: number, column: number): {
@@ -281,7 +276,7 @@ export declare class SpreadsheetSkeleton extends Skeleton {
281
276
  *
282
277
  * @param rowHeightAccumulation Row layout information
283
278
  * @param columnWidthAccumulation Column layout information
284
- * @param bounds The range of the visible area of the canvas
279
+ * @param viewBound The range of the visible area of the canvas
285
280
  * @returns The range cell index of the canvas visible area
286
281
  */
287
282
  protected _getBounding(rowHeightAccumulation: number[], columnWidthAccumulation: number[], viewBound?: IBoundRectNoAngle): {
@@ -307,7 +302,6 @@ export declare class SpreadsheetSkeleton extends Skeleton {
307
302
  * Cache the merged cells on the current screen to improve computational performance.
308
303
  * @param mergeData all marge data
309
304
  * @param rowColumnSegment current screen range, include row and column
310
- * @returns
311
305
  */
312
306
  private _getMergeCells;
313
307
  }
@@ -13,10 +13,11 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { Disposable } from '@univerjs/core';
16
17
  import { BaseObject } from './base-object';
17
18
  import type { UniverRenderingContext } from './context';
18
19
  import type { ThinScene } from './thin-scene';
19
- export declare class Layer {
20
+ export declare class Layer extends Disposable {
20
21
  private _scene;
21
22
  private _zIndex;
22
23
  private _allowCache;
@@ -23,16 +23,20 @@ import { Engine } from './engine';
23
23
  import { Scene } from './scene';
24
24
  export interface IRenderManagerService {
25
25
  currentRender$: Observable<Nullable<string>>;
26
+ createRender$: Observable<Nullable<string>>;
26
27
  dispose(): void;
27
28
  createRenderWithParent(unitId: string, parentUnitId: string): IRender;
28
29
  createRender(unitId: string): IRender;
29
30
  addItem(unitId: string, item: IRender): void;
30
31
  removeItem(unitId: string): void;
31
32
  setCurrent(unitId: string): void;
32
- getCurrent(): Nullable<IRender>;
33
33
  getRenderById(unitId: string): Nullable<IRender>;
34
34
  getRenderAll(): Map<string, IRender>;
35
35
  defaultEngine: Engine;
36
+ create(unitId: Nullable<string>): void;
37
+ getCurrent(): Nullable<IRender>;
38
+ getFirst(): Nullable<IRender>;
39
+ has(unitId: string): boolean;
36
40
  }
37
41
  export type RenderComponentType = SheetComponent | DocComponent | Slide | BaseObject;
38
42
  export interface IRender {
@@ -49,15 +53,20 @@ export declare class RenderManagerService implements IRenderManagerService {
49
53
  private _renderMap;
50
54
  private readonly _currentRender$;
51
55
  readonly currentRender$: Observable<Nullable<string>>;
56
+ private readonly _createRender$;
57
+ readonly createRender$: Observable<Nullable<string>>;
52
58
  get defaultEngine(): Engine;
53
59
  dispose(): void;
54
60
  createRenderWithParent(unitId: string, parentUnitId: string): IRender;
61
+ create(unitId: Nullable<string>): void;
55
62
  createRender(unitId: string): IRender;
56
63
  private _createRender;
57
64
  addItem(unitId: string, item: IRender): void;
58
65
  removeItem(unitId: string): void;
66
+ has(unitId: string): boolean;
59
67
  setCurrent(unitId: string): void;
60
- getCurrent(): Nullable<IRender>;
68
+ getCurrent(): IRender | undefined;
69
+ getFirst(): IRender;
61
70
  getRenderById(unitId: string): Nullable<IRender>;
62
71
  getRenderAll(): Map<string, IRender>;
63
72
  private _disposeItem;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import type { Nullable } from '@univerjs/core';
17
- import { Observable } from '@univerjs/core';
17
+ import { Disposable, Observable } from '@univerjs/core';
18
18
  import type { BaseObject } from './base-object';
19
19
  import type { IMouseEvent, IPointerEvent } from './basics/i-events';
20
20
  import { Group } from './group';
@@ -65,7 +65,7 @@ export interface ITransformerConfig {
65
65
  * primitives and shapes. Transforming tool is not changing `width` and `height` properties of nodes
66
66
  * when you resize them. Instead it changes `scaleX` and `scaleY` properties.
67
67
  */
68
- export declare class Transformer implements ITransformerConfig {
68
+ export declare class Transformer extends Disposable implements ITransformerConfig {
69
69
  private _scene;
70
70
  hoverEnabled: boolean;
71
71
  hoverEnterFunc: Nullable<(e: IPointerEvent | IMouseEvent) => void>;
@@ -13,9 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { Disposable } from '@univerjs/core';
16
17
  import type { IMouseEvent } from './basics/i-events';
17
18
  import type { ThinScene } from './thin-scene';
18
- export declare class InputManager {
19
+ export declare class InputManager extends Disposable {
19
20
  /** The distance in pixel that you have to move to prevent some events */
20
21
  static DragMovementThreshold: number;
21
22
  /** Time in milliseconds to wait to raise long press events if button is still pressed */
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { Nullable } from '@univerjs/core';
16
+ import { Disposable, type Nullable } from '@univerjs/core';
17
17
  import type { Vector2 } from '../basics/vector2';
18
18
  import type { UniverRenderingContext } from '../context';
19
19
  import type { ThinScene } from '../thin-scene';
@@ -32,7 +32,7 @@ export interface IScrollBarProps {
32
32
  enableVertical?: boolean;
33
33
  mainScene?: ThinScene;
34
34
  }
35
- export declare class BaseScrollBar {
35
+ export declare class BaseScrollBar extends Disposable {
36
36
  enableHorizontal: boolean;
37
37
  enableVertical: boolean;
38
38
  horizontalThumbWidth: number;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import type { EventState, Nullable, Observer } from '@univerjs/core';
17
- import { Observable } from '@univerjs/core';
17
+ import { Disposable, Observable } from '@univerjs/core';
18
18
  import type { BaseObject } from './base-object';
19
19
  import type { EVENT_TYPE } from './basics/const';
20
20
  import { RENDER_CLASS_TYPE } from './basics/const';
@@ -23,7 +23,7 @@ import type { ITransformChangeState } from './basics/interfaces';
23
23
  import { Transform } from './basics/transform';
24
24
  import type { IViewportBound, Vector2 } from './basics/vector2';
25
25
  import type { UniverRenderingContext } from './context';
26
- export declare abstract class ThinScene {
26
+ export declare abstract class ThinScene extends Disposable {
27
27
  onTransformChangeObservable: Observable<ITransformChangeState>;
28
28
  onPointerDownObserver: Observable<IMouseEvent | IPointerEvent>;
29
29
  onPointerMoveObserver: Observable<IMouseEvent | IPointerEvent>;