@univerjs/engine-render 0.1.0-alpha.2 → 0.1.0-beta.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 (44) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/index.js +3 -3
  3. package/lib/es/index.js +6576 -5218
  4. package/lib/types/base-object.d.ts +6 -5
  5. package/lib/types/basics/const.d.ts +8 -154
  6. package/lib/types/basics/draw.d.ts +1 -0
  7. package/lib/types/basics/range.d.ts +5 -0
  8. package/lib/types/basics/tools.d.ts +4 -3
  9. package/lib/types/basics/vector2.d.ts +8 -0
  10. package/lib/types/components/component.d.ts +7 -7
  11. package/lib/types/components/docs/block/paragraph/bullet.d.ts +1 -1
  12. package/lib/types/components/docs/block/paragraph/language-ruler.d.ts +17 -8
  13. package/lib/types/components/docs/common/index.d.ts +1 -1
  14. package/lib/types/components/docs/common/{range.d.ts → text-range.d.ts} +2 -2
  15. package/lib/types/components/docs/doc-component.d.ts +6 -10
  16. package/lib/types/components/docs/doc-extension.d.ts +2 -1
  17. package/lib/types/components/docs/doc-skeleton.d.ts +2 -2
  18. package/lib/types/components/docs/document.d.ts +3 -4
  19. package/lib/types/components/docs/text-selection-render-manager.d.ts +40 -38
  20. package/lib/types/components/extension.d.ts +2 -2
  21. package/lib/types/components/sheets/column-header.d.ts +2 -2
  22. package/lib/types/components/sheets/extensions/background.d.ts +2 -2
  23. package/lib/types/components/sheets/extensions/border.d.ts +2 -2
  24. package/lib/types/components/sheets/extensions/font.d.ts +2 -2
  25. package/lib/types/components/sheets/extensions/index.d.ts +0 -1
  26. package/lib/types/components/sheets/extensions/sheet-extension.d.ts +4 -1
  27. package/lib/types/components/sheets/interfaces.d.ts +2 -1
  28. package/lib/types/components/sheets/row-header.d.ts +2 -2
  29. package/lib/types/components/sheets/sheet-component.d.ts +8 -8
  30. package/lib/types/components/sheets/sheet-skeleton.d.ts +28 -10
  31. package/lib/types/components/sheets/spreadsheet.d.ts +18 -21
  32. package/lib/types/custom/custom-object.d.ts +2 -2
  33. package/lib/types/engine.d.ts +3 -3
  34. package/lib/types/group.d.ts +2 -2
  35. package/lib/types/layer.d.ts +14 -2
  36. package/lib/types/scene-viewer.d.ts +2 -2
  37. package/lib/types/scene.d.ts +3 -4
  38. package/lib/types/shape/rich-text.d.ts +2 -5
  39. package/lib/types/shape/shape.d.ts +2 -10
  40. package/lib/types/thin-scene.d.ts +7 -2
  41. package/lib/types/viewport.d.ts +12 -10
  42. package/lib/umd/index.js +3 -3
  43. package/package.json +8 -7
  44. package/lib/types/components/sheets/extensions/border-auxiliary.d.ts +0 -27
@@ -20,7 +20,7 @@ import { CURSOR_TYPE, RENDER_CLASS_TYPE } from './basics/const';
20
20
  import type { IMouseEvent, IPointerEvent, IWheelEvent } from './basics/i-events';
21
21
  import type { IObjectFullState, ITransformChangeState } from './basics/interfaces';
22
22
  import { Transform } from './basics/transform';
23
- import type { IBoundRect, Vector2 } from './basics/vector2';
23
+ import type { IViewportBound, Vector2 } from './basics/vector2';
24
24
  export declare const BASE_OBJECT_ARRAY: string[];
25
25
  export declare abstract class BaseObject {
26
26
  groupKey?: string;
@@ -65,6 +65,7 @@ export declare abstract class BaseObject {
65
65
  private _cursor;
66
66
  private _isTransformer;
67
67
  private _forceRender;
68
+ private _layer;
68
69
  constructor(key?: string);
69
70
  get transform(): Transform;
70
71
  get topOrigin(): string | number;
@@ -94,6 +95,7 @@ export declare abstract class BaseObject {
94
95
  get debounceParentDirty(): boolean;
95
96
  get isTransformer(): boolean;
96
97
  get cursor(): CURSOR_TYPE;
98
+ get layer(): any;
97
99
  set transform(trans: Transform);
98
100
  set zIndex(index: number);
99
101
  set parent(o: any);
@@ -101,6 +103,7 @@ export declare abstract class BaseObject {
101
103
  set debounceParentDirty(state: boolean);
102
104
  set isTransformer(state: boolean);
103
105
  set cursor(val: CURSOR_TYPE);
106
+ set layer(layer: any);
104
107
  protected set top(num: number | string);
105
108
  protected set left(num: number | string);
106
109
  protected set width(num: number | string);
@@ -122,7 +125,7 @@ export declare abstract class BaseObject {
122
125
  skew(skewX?: number, skewY?: number): this;
123
126
  flip(flipX?: boolean, flipY?: boolean): this;
124
127
  transformByState(option: IObjectFullState): this | undefined;
125
- isRender(bounds?: IBoundRect): boolean | undefined;
128
+ isRender(bounds?: IViewportBound): boolean | undefined;
126
129
  getParent(): any;
127
130
  getState(): {
128
131
  left: number;
@@ -139,13 +142,11 @@ export declare abstract class BaseObject {
139
142
  };
140
143
  hide(): void;
141
144
  show(): void;
142
- render(ctx: CanvasRenderingContext2D, bounds?: IBoundRect): void;
145
+ render(ctx: CanvasRenderingContext2D, bounds?: IViewportBound): void;
143
146
  isHit(coord: Vector2): boolean;
144
147
  on(eventType: EVENT_TYPE, func: (evt: unknown, state: EventState) => void): Nullable<Observer<unknown>>;
145
148
  off(eventType: EVENT_TYPE, observer: Nullable<Observer<unknown>>): void;
146
149
  clear(eventType: EVENT_TYPE): void;
147
- resizeCacheCanvas(): void;
148
- scaleCacheCanvas(): void;
149
150
  triggerPointerMove(evt: IPointerEvent | IMouseEvent): boolean;
150
151
  triggerPointerDown(evt: IPointerEvent | IMouseEvent): boolean;
151
152
  triggerPointerUp(evt: IPointerEvent | IMouseEvent): boolean;
@@ -13,159 +13,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export declare const RGB_PAREN = "rgb(";
17
- export declare const RGBA_PAREN = "rgba(";
18
- export declare const COLORS: {
19
- aliceBlue: number[];
20
- antiqueWhite: number[];
21
- aqua: number[];
22
- aquamarine: number[];
23
- azure: number[];
24
- beige: number[];
25
- bisque: number[];
26
- black: number[];
27
- blancheAlmond: number[];
28
- blue: number[];
29
- blueViolet: number[];
30
- brown: number[];
31
- burlyWood: number[];
32
- cadetBlue: number[];
33
- chartreuse: number[];
34
- chocolate: number[];
35
- coral: number[];
36
- cornFlowerBlue: number[];
37
- cornSilk: number[];
38
- crimson: number[];
39
- cyan: number[];
40
- darkblue: number[];
41
- darkCyan: number[];
42
- darkGoldenrod: number[];
43
- darkGray: number[];
44
- darkGreen: number[];
45
- darkGrey: number[];
46
- darkKhaki: number[];
47
- darkMagenta: number[];
48
- darkOliveGreen: number[];
49
- darkOrange: number[];
50
- darkOrchid: number[];
51
- darkRed: number[];
52
- darkSalmon: number[];
53
- darkSeaGreen: number[];
54
- darkSlateBlue: number[];
55
- darkSlateGray: number[];
56
- darkSlateGrey: number[];
57
- darkTurquoise: number[];
58
- darkViolet: number[];
59
- deepPink: number[];
60
- deepSkyBlue: number[];
61
- dimGray: number[];
62
- dimGrey: number[];
63
- dodgerBlue: number[];
64
- firebrick: number[];
65
- floralWhite: number[];
66
- forestGreen: number[];
67
- fuchsia: number[];
68
- gainsboro: number[];
69
- ghostWhite: number[];
70
- gold: number[];
71
- goldenrod: number[];
72
- gray: number[];
73
- green: number[];
74
- greenYellow: number[];
75
- grey: number[];
76
- honeydew: number[];
77
- hotPink: number[];
78
- indianRed: number[];
79
- indigo: number[];
80
- ivory: number[];
81
- khaki: number[];
82
- lavender: number[];
83
- lavenderBlush: number[];
84
- lawnGreen: number[];
85
- lemonChiffon: number[];
86
- lightblue: number[];
87
- lightCoral: number[];
88
- lightCyan: number[];
89
- lightGoldenrodYellow: number[];
90
- lightGray: number[];
91
- lightGreen: number[];
92
- lightGrey: number[];
93
- lightPink: number[];
94
- lightSalmon: number[];
95
- lightSeaGreen: number[];
96
- lightSkyBlue: number[];
97
- lightSlateGray: number[];
98
- lightSlateGrey: number[];
99
- lightSteelBlue: number[];
100
- lightYellow: number[];
101
- lime: number[];
102
- limeGreen: number[];
103
- linen: number[];
104
- magenta: number[];
105
- maroon: number[];
106
- mediumAquamarine: number[];
107
- mediumBlue: number[];
108
- mediumOrchid: number[];
109
- mediumPurple: number[];
110
- mediumSeaGreen: number[];
111
- mediumSlateBlue: number[];
112
- mediumSpringGreen: number[];
113
- mediumTurquoise: number[];
114
- mediumVioletRed: number[];
115
- midBightBlue: number[];
116
- mintCream: number[];
117
- mistyRose: number[];
118
- moccasin: number[];
119
- navajoWhite: number[];
120
- navy: number[];
121
- oldLace: number[];
122
- olive: number[];
123
- oliveDrab: number[];
124
- orange: number[];
125
- orangeRed: number[];
126
- orchid: number[];
127
- paleGoldenrod: number[];
128
- paleGreen: number[];
129
- paleTurquoise: number[];
130
- paleVioletRed: number[];
131
- papayaWhip: number[];
132
- peachPuff: number[];
133
- peru: number[];
134
- pink: number[];
135
- plum: number[];
136
- powderBlue: number[];
137
- purple: number[];
138
- rebeccaPurple: number[];
139
- red: number[];
140
- rosyBrown: number[];
141
- royalBlue: number[];
142
- saddleBrown: number[];
143
- salmon: number[];
144
- sandyBrown: number[];
145
- seaGreen: number[];
146
- seashell: number[];
147
- sienna: number[];
148
- silver: number[];
149
- skyBlue: number[];
150
- slateBlue: number[];
151
- slateGray: number[];
152
- slateGrey: number[];
153
- snow: number[];
154
- springGreen: number[];
155
- steelBlue: number[];
156
- tan: number[];
157
- teal: number[];
158
- thistle: number[];
159
- transparent: number[];
160
- tomato: number[];
161
- turquoise: number[];
162
- violet: number[];
163
- wheat: number[];
164
- white: number[];
165
- whiteSmoke: number[];
166
- yellow: number[];
167
- yellowGreen: number[];
168
- };
169
16
  export declare enum SHAPE_TYPE {
170
17
  RECT = "rect",
171
18
  CIRCLE = "circle",
@@ -257,7 +104,13 @@ export declare enum BORDER_TYPE {
257
104
  TOP = "t",
258
105
  BOTTOM = "b",
259
106
  LEFT = "l",
260
- RIGHT = "r"
107
+ RIGHT = "r",
108
+ TL_BR = "tl_br",
109
+ TL_BC = "tl_bc",
110
+ TL_MR = "tl_mr",
111
+ BL_TR = "bl_tr",
112
+ ML_TR = "ml_tr",
113
+ BC_TR = "bc_tr"
261
114
  }
262
115
  export declare enum ORIENTATION_TYPE {
263
116
  UP = 0,
@@ -275,3 +128,4 @@ export declare enum RENDER_CLASS_TYPE {
275
128
  }
276
129
  export declare const DEFAULT_SELECTION_LAYER_INDEX = 1000;
277
130
  export declare const MAXIMUM_ROW_HEIGHT = 2000;
131
+ export declare const FIX_ONE_PIXEL_BLUR_OFFSET = 0.5;
@@ -27,6 +27,7 @@ export interface IContext2D extends CanvasRenderingContext2D {
27
27
  }
28
28
  export declare function getDevicePixelRatio(): number;
29
29
  export declare function drawLineByBorderType(ctx: CanvasRenderingContext2D, type: BORDER_TYPE, position: IPosition): void;
30
+ export declare function drawDiagonalLineByBorderType(ctx: CanvasRenderingContext2D, type: BORDER_TYPE, position: IPosition): void;
30
31
  export declare function clearLineByBorderType(ctx: CanvasRenderingContext2D, type: BORDER_TYPE, position: IPosition, scaleX: number, scaleY: number): void;
31
32
  export declare function setLineType(ctx: CanvasRenderingContext2D, style: BorderStyleTypes): void;
32
33
  export declare function getLineOffset(): number;
@@ -24,6 +24,11 @@ export declare const NORMAL_TEXT_SELECTION_PLUGIN_STYLE: ITextSelectionStyle;
24
24
  export interface ITextRangeWithStyle extends ITextRangeParam {
25
25
  style?: ITextSelectionStyle;
26
26
  }
27
+ export interface ISuccinctTextRangeParam {
28
+ startOffset: number;
29
+ endOffset: number;
30
+ style?: ITextSelectionStyle;
31
+ }
27
32
  export declare enum RANGE_DIRECTION {
28
33
  NONE = "none",
29
34
  BACKWARD = "backward",
@@ -51,6 +51,7 @@ export declare function isNumber(value?: unknown): value is number;
51
51
  export declare function isObject(value?: unknown): value is object;
52
52
  export declare function precisionTo(num: number, accurate: number): number;
53
53
  /**
54
+ * When drawing lines, it is necessary to align their precision.
54
55
  * performance testing
55
56
  * var time = performance.now(); for(let i=0;i<100000000;i++){ fixLineWidthByScale(i, 0.666); }; console.log(performance.now()-time);
56
57
  */
@@ -73,7 +74,7 @@ export declare const EMOJI_REG: RegExp;
73
74
  export declare function startWithEmoji(text: string): boolean;
74
75
  export declare function hasArabic(text: string): boolean;
75
76
  export declare function hasTibetan(text: string): boolean;
76
- export declare function hasSpaceAndTab(text: string): boolean;
77
+ export declare function hasSpace(text: string): boolean;
77
78
  export declare function getDPI(): number;
78
79
  export declare function ptToPx(pt: number): number;
79
80
  export declare function pxToPt(px: number): number;
@@ -100,13 +101,13 @@ export declare function mergeInfoOffset(mergeInfo: IRangeWithCoord, offsetX: num
100
101
  startY: number;
101
102
  endX: number;
102
103
  endY: number;
103
- startRow: number;
104
104
  startColumn: number;
105
- endRow: number;
106
105
  endColumn: number;
107
106
  rangeType?: import("@univerjs/core").RANGE_TYPE | undefined;
108
107
  startAbsoluteRefType?: import("@univerjs/core").AbsoluteRefType | undefined;
109
108
  endAbsoluteRefType?: import("@univerjs/core").AbsoluteRefType | undefined;
109
+ startRow: number;
110
+ endRow: number;
110
111
  };
111
112
  export declare function isRectIntersect(rect1: IBoundRectNoAngle, rect2: IBoundRectNoAngle): boolean;
112
113
  export declare function injectStyle(styles: string[]): void;
@@ -450,3 +450,11 @@ export interface IBoundRectNoAngle {
450
450
  right: number;
451
451
  bottom: number;
452
452
  }
453
+ export interface IViewportBound {
454
+ viewBound: IBoundRectNoAngle;
455
+ diffBounds: IBoundRectNoAngle[];
456
+ diffX: number;
457
+ diffY: number;
458
+ viewPortPosition: IBoundRectNoAngle;
459
+ viewPortKey?: string;
460
+ }
@@ -14,14 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { BaseObject } from '../base-object';
17
- import type { IBoundRect } from '../basics/vector2';
17
+ import type { IViewportBound } from '../basics/vector2';
18
18
  import type { ComponentExtension } from './extension';
19
- export declare class RenderComponent<T, U> extends BaseObject {
19
+ export declare class RenderComponent<T, U, V> extends BaseObject {
20
20
  private _extensions;
21
- get extensions(): Map<string, ComponentExtension<T, U>>;
22
- register(...extensions: Array<ComponentExtension<T, U>>): void;
21
+ get extensions(): Map<string, ComponentExtension<T, U, V>>;
22
+ register(...extensions: Array<ComponentExtension<T, U, V>>): void;
23
23
  unRegister(...uKeys: string[]): void;
24
- getExtensionsByOrder(): ComponentExtension<T, U>[];
25
- getExtensionByKey(uKey: string): ComponentExtension<T, U> | undefined;
26
- draw(ctx: CanvasRenderingContext2D, bounds?: IBoundRect): void;
24
+ getExtensionsByOrder(): ComponentExtension<T, U, V>[];
25
+ getExtensionByKey(uKey: string): ComponentExtension<T, U, V> | undefined;
26
+ draw(ctx: CanvasRenderingContext2D, bounds?: IViewportBound): void;
27
27
  }
@@ -15,5 +15,5 @@
15
15
  */
16
16
  import type { IBullet, ILists, LocaleService, Nullable } from '@univerjs/core';
17
17
  import type { IDocumentSkeletonBullet } from '../../../../basics/i-document-skeleton-cached';
18
- export declare function dealWidthBullet(bullet?: IBullet, lists?: ILists, listLevelAncestors?: Array<Nullable<IDocumentSkeletonBullet>>, localeService?: LocaleService): IDocumentSkeletonBullet | undefined;
18
+ export declare function dealWithBullet(bullet?: IBullet, lists?: ILists, listLevelAncestors?: Array<Nullable<IDocumentSkeletonBullet>>, localeService?: LocaleService): IDocumentSkeletonBullet | undefined;
19
19
  export declare function getDefaultBulletSke(listId: string, startIndex?: number): IDocumentSkeletonBullet;
@@ -13,14 +13,23 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { IParagraphStyle, Nullable } from '@univerjs/core';
17
- import type { IDocumentSkeletonSpan } from '../../../../basics/i-document-skeleton-cached';
16
+ import type { IParagraphStyle } from '@univerjs/core';
18
17
  import type { ISectionBreakConfig } from '../../../../basics/interfaces';
19
18
  import type { DataStreamTreeNode } from '../../view-model/data-stream-tree-node';
20
19
  import type { DocumentViewModel } from '../../view-model/document-view-model';
21
- interface ILanguageResult {
22
- charIndex: number;
23
- spanGroup: IDocumentSkeletonSpan[];
24
- }
25
- export declare function composeCharForLanguage(char: string, index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): Nullable<ILanguageResult>;
26
- export {};
20
+ export declare function otherHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
21
+ step: number;
22
+ spanGroup: import("../../../..").IDocumentSkeletonSpan[];
23
+ };
24
+ export declare function ArabicHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
25
+ step: number;
26
+ spanGroup: import("../../../..").IDocumentSkeletonSpan[];
27
+ };
28
+ export declare function emojiHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
29
+ step: number;
30
+ spanGroup: import("../../../..").IDocumentSkeletonSpan[];
31
+ };
32
+ export declare function TibetanHandler(index: number, charArray: string, bodyModel: DocumentViewModel, paragraphNode: DataStreamTreeNode, sectionBreakConfig: ISectionBreakConfig, paragraphStyle: IParagraphStyle): {
33
+ step: number;
34
+ spanGroup: import("../../../..").IDocumentSkeletonSpan[];
35
+ };
@@ -18,7 +18,7 @@ export * from './convert-cursor';
18
18
  export * from './line';
19
19
  export * from './liquid';
20
20
  export * from './page';
21
- export * from './range';
22
21
  export * from './section';
23
22
  export * from './span';
23
+ export * from './text-range';
24
24
  export * from './tools';
@@ -15,14 +15,14 @@
15
15
  */
16
16
  import type { Nullable } from '@univerjs/core';
17
17
  import type { INodePosition } from '../../../basics/interfaces';
18
- import type { ITextRangeWithStyle, ITextSelectionStyle } from '../../../basics/range';
18
+ import type { ISuccinctTextRangeParam, ITextSelectionStyle } from '../../../basics/range';
19
19
  import { RANGE_DIRECTION } from '../../../basics/range';
20
20
  import type { Scene } from '../../../scene';
21
21
  import { Rect } from '../../../shape/rect';
22
22
  import type { ThinScene } from '../../../thin-scene';
23
23
  import type { DocumentSkeleton } from '../doc-skeleton';
24
24
  import type { IDocumentOffsetConfig } from '../document';
25
- export declare function cursorConvertToTextRange(scene: Scene, range: ITextRangeWithStyle, docSkeleton: DocumentSkeleton, documentOffsetConfig: IDocumentOffsetConfig): Nullable<TextRange>;
25
+ export declare function cursorConvertToTextRange(scene: Scene, range: ISuccinctTextRangeParam, docSkeleton: DocumentSkeleton, documentOffsetConfig: IDocumentOffsetConfig): Nullable<TextRange>;
26
26
  export declare class TextRange {
27
27
  private _scene;
28
28
  private _documentOffsetConfig;
@@ -17,23 +17,19 @@ import type { Nullable } from '@univerjs/core';
17
17
  import type { IDocumentSkeletonLine, IDocumentSkeletonSpan } from '../../basics/i-document-skeleton-cached';
18
18
  import { PageLayoutType } from '../../basics/i-document-skeleton-cached';
19
19
  import type { INodeInfo } from '../../basics/interfaces';
20
- import type { IBoundRect } from '../../basics/vector2';
21
- import { Canvas } from '../../canvas';
20
+ import type { IBoundRectNoAngle, IViewportBound } from '../../basics/vector2';
22
21
  import { RenderComponent } from '../component';
23
22
  import type { DOCS_EXTENSION_TYPE } from './doc-extension';
24
23
  import type { DocumentSkeleton } from './doc-skeleton';
25
- export declare class DocComponent extends RenderComponent<IDocumentSkeletonSpan | IDocumentSkeletonLine, DOCS_EXTENSION_TYPE> {
24
+ export declare class DocComponent extends RenderComponent<IDocumentSkeletonSpan | IDocumentSkeletonLine, DOCS_EXTENSION_TYPE, IBoundRectNoAngle[]> {
26
25
  private _skeleton?;
27
- private _allowCache;
28
26
  pageMarginLeft: number;
29
27
  pageMarginTop: number;
30
28
  pageLayoutType: PageLayoutType;
31
- protected _cacheCanvas: Nullable<Canvas>;
32
- constructor(oKey: string, _skeleton?: DocumentSkeleton | undefined, _allowCache?: boolean);
33
- setAllowCache(state?: boolean): void;
29
+ constructor(oKey: string, _skeleton?: DocumentSkeleton | undefined);
34
30
  getSkeleton(): DocumentSkeleton | undefined;
35
31
  setSkeleton(skeleton: DocumentSkeleton): void;
36
- render(mainCtx: CanvasRenderingContext2D, bounds?: IBoundRect): this | undefined;
32
+ render(mainCtx: CanvasRenderingContext2D, bounds?: IViewportBound): this | undefined;
37
33
  getParentScale(): {
38
34
  scaleX: any;
39
35
  scaleY: any;
@@ -43,6 +39,6 @@ export declare class DocComponent extends RenderComponent<IDocumentSkeletonSpan
43
39
  remainActiveSelection(): void;
44
40
  findNodeByCoord(offsetX: number, offsetY: number): Nullable<INodeInfo>;
45
41
  findCoordByNode(span: IDocumentSkeletonSpan): void;
46
- protected _getBounding(bounds?: IBoundRect): void;
47
- protected _draw(ctx: CanvasRenderingContext2D, bounds?: IBoundRect): void;
42
+ protected _getBounding(bounds?: IViewportBound): void;
43
+ protected _draw(ctx: CanvasRenderingContext2D, bounds?: IViewportBound): void;
48
44
  }
@@ -13,13 +13,14 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import type { IBoundRectNoAngle } from '../..';
16
17
  import type { IDocumentSkeletonLine, IDocumentSkeletonSpan } from '../../basics/i-document-skeleton-cached';
17
18
  import { ComponentExtension } from '../extension';
18
19
  export declare enum DOCS_EXTENSION_TYPE {
19
20
  SPAN = 0,
20
21
  LINE = 1
21
22
  }
22
- export declare class docExtension extends ComponentExtension<IDocumentSkeletonSpan | IDocumentSkeletonLine, DOCS_EXTENSION_TYPE> {
23
+ export declare class docExtension extends ComponentExtension<IDocumentSkeletonSpan | IDocumentSkeletonLine, DOCS_EXTENSION_TYPE, IBoundRectNoAngle> {
23
24
  type: DOCS_EXTENSION_TYPE;
24
25
  translateX: number;
25
26
  translateY: number;
@@ -17,7 +17,7 @@ import type { LocaleService, Nullable } from '@univerjs/core';
17
17
  import type { IDocumentSkeletonCached, IDocumentSkeletonSpan } from '../../basics/i-document-skeleton-cached';
18
18
  import { PageLayoutType } from '../../basics/i-document-skeleton-cached';
19
19
  import type { INodeInfo, INodePosition, INodeSearch } from '../../basics/interfaces';
20
- import type { IBoundRect, Vector2 } from '../../basics/vector2';
20
+ import type { IViewportBound, Vector2 } from '../../basics/vector2';
21
21
  import { Skeleton } from '../skeleton';
22
22
  import type { DocumentViewModel } from './view-model/document-view-model';
23
23
  export declare enum DocumentSkeletonState {
@@ -34,7 +34,7 @@ export declare class DocumentSkeleton extends Skeleton {
34
34
  constructor(_docViewModel: DocumentViewModel, localeService: LocaleService);
35
35
  static create(docViewModel: DocumentViewModel, localeService: LocaleService): DocumentSkeleton;
36
36
  getViewModel(): DocumentViewModel;
37
- calculate(bounds?: IBoundRect): void;
37
+ calculate(bounds?: IViewportBound): void;
38
38
  getSkeletonData(): Nullable<IDocumentSkeletonCached>;
39
39
  getActualSize(): {
40
40
  actualWidth: number;
@@ -18,7 +18,7 @@ import { Observable } from '@univerjs/core';
18
18
  import type { IDocumentSkeletonPage } from '../../basics/i-document-skeleton-cached';
19
19
  import { PageLayoutType } from '../../basics/i-document-skeleton-cached';
20
20
  import type { Transform } from '../../basics/transform';
21
- import type { IBoundRect } from '../../basics/vector2';
21
+ import type { IViewportBound } from '../../basics/vector2';
22
22
  import type { Scene } from '../../scene';
23
23
  import { DocComponent } from './doc-component';
24
24
  import type { DocumentSkeleton } from './doc-skeleton';
@@ -28,7 +28,6 @@ interface IPageMarginLayout {
28
28
  pageLayoutType?: PageLayoutType;
29
29
  }
30
30
  export interface IDocumentsConfig extends IPageMarginLayout {
31
- allowCache?: boolean;
32
31
  hasEditor?: boolean;
33
32
  }
34
33
  export interface IPageRenderConfig {
@@ -54,9 +53,9 @@ export declare class Documents extends DocComponent {
54
53
  setConfig(config?: IDocumentsConfig): void;
55
54
  getOffsetConfig(): IDocumentOffsetConfig;
56
55
  getEngine(): Nullable<import("../../thin-engine").ThinEngine<Scene>>;
57
- draw(ctx: CanvasRenderingContext2D, bounds?: IBoundRect): void;
56
+ draw(ctx: CanvasRenderingContext2D, bounds?: IViewportBound): void;
58
57
  changeSkeleton(newSkeleton: DocumentSkeleton): this;
59
- protected _draw(ctx: CanvasRenderingContext2D, bounds?: IBoundRect): void;
58
+ protected _draw(ctx: CanvasRenderingContext2D, bounds?: IViewportBound): void;
60
59
  private _horizontalHandler;
61
60
  private _verticalHandler;
62
61
  private _startRotation;
@@ -18,13 +18,13 @@ import { RxDisposable } from '@univerjs/core';
18
18
  import type { Observable } from 'rxjs';
19
19
  import type { IMouseEvent, IPointerEvent } from '../../basics/i-events';
20
20
  import type { INodePosition } from '../../basics/interfaces';
21
- import type { ITextRangeWithStyle, ITextSelectionStyle, RANGE_DIRECTION } from '../../basics/range';
21
+ import type { ISuccinctTextRangeParam, ITextRangeWithStyle, ITextSelectionStyle, RANGE_DIRECTION } from '../../basics/range';
22
22
  import type { Engine } from '../../engine';
23
23
  import type { Scene } from '../../scene';
24
24
  import type { Viewport } from '../../viewport';
25
- import { TextRange } from './common/range';
25
+ import { TextRange } from './common/text-range';
26
26
  import type { DocumentSkeleton } from './doc-skeleton';
27
- import type { IDocumentOffsetConfig } from './document';
27
+ import type { Documents, IDocumentOffsetConfig } from './document';
28
28
  export declare function getCanvasOffsetByEngine(engine: Nullable<Engine>): {
29
29
  left: number;
30
30
  top: number;
@@ -34,6 +34,21 @@ interface IAddTextRangesConfig {
34
34
  skeleton: DocumentSkeleton;
35
35
  documentOffsetConfig: IDocumentOffsetConfig;
36
36
  }
37
+ export interface ITextSelectionInnerParam {
38
+ textRanges: TextRange[];
39
+ segmentId: string;
40
+ style: ITextSelectionStyle;
41
+ }
42
+ export interface IActiveTextRange {
43
+ startOffset: number;
44
+ endOffset: number;
45
+ collapsed: boolean;
46
+ startNodePosition: Nullable<INodePosition>;
47
+ endNodePosition: Nullable<INodePosition>;
48
+ direction: RANGE_DIRECTION;
49
+ segmentId: string;
50
+ style: ITextSelectionStyle;
51
+ }
37
52
  export interface ITextSelectionRenderManager {
38
53
  readonly onInputBefore$: Observable<Nullable<IEditorInputConfig>>;
39
54
  readonly onKeydown$: Observable<Nullable<IEditorInputConfig>>;
@@ -43,31 +58,26 @@ export interface ITextSelectionRenderManager {
43
58
  readonly onCompositionend$: Observable<Nullable<IEditorInputConfig>>;
44
59
  readonly onSelectionStart$: Observable<Nullable<INodePosition>>;
45
60
  readonly onPaste$: Observable<Nullable<IEditorInputConfig>>;
46
- readonly textSelection$: Observable<TextRange[]>;
61
+ readonly textSelectionInner$: Observable<Nullable<ITextSelectionInnerParam>>;
62
+ __getEditorContainer(): HTMLElement;
47
63
  getViewPort(): Viewport;
48
64
  enableSelection(): void;
49
65
  disableSelection(): void;
50
66
  setSegment(id: string): void;
51
67
  setStyle(style: ITextSelectionStyle): void;
52
68
  resetStyle(): void;
53
- getAllTextRanges(): TextRange[];
54
69
  removeAllTextRanges(): void;
55
- addTextRanges(ranges: ITextRangeWithStyle[], config?: IAddTextRangesConfig): void;
70
+ addTextRanges(ranges: ISuccinctTextRangeParam[], config?: IAddTextRangesConfig): void;
56
71
  sync(): void;
57
72
  activate(x: number, y: number): void;
58
73
  focus(): void;
59
74
  blur(): void;
60
75
  deactivate(): void;
61
- changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, viewport?: Nullable<Viewport>, documentOffsetConfig?: IDocumentOffsetConfig): void;
76
+ changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, document: Documents): void;
62
77
  dispose(): void;
63
- getActiveRange(): Nullable<ITextRangeWithStyle & {
64
- startNodePosition: Nullable<INodePosition>;
65
- endNodePosition: Nullable<INodePosition>;
66
- direction: RANGE_DIRECTION;
67
- }>;
68
- handleDblClick(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewport: Nullable<Viewport>): void;
69
- handleTripleClick(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewport: Nullable<Viewport>): void;
70
- eventTrigger(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewport: Nullable<Viewport>): void;
78
+ handleDblClick(evt: IPointerEvent | IMouseEvent): void;
79
+ handleTripleClick(evt: IPointerEvent | IMouseEvent): void;
80
+ eventTrigger(evt: IPointerEvent | IMouseEvent): void;
71
81
  }
72
82
  export interface IEditorInputConfig {
73
83
  event: Event | CompositionEvent | KeyboardEvent;
@@ -76,8 +86,6 @@ export interface IEditorInputConfig {
76
86
  rangeList?: TextRange[];
77
87
  }
78
88
  export declare class TextSelectionRenderManager extends RxDisposable implements ITextSelectionRenderManager {
79
- private _docSkeleton?;
80
- private _scene?;
81
89
  private readonly _onInputBefore$;
82
90
  readonly onInputBefore$: Observable<Nullable<IEditorInputConfig>>;
83
91
  private readonly _onKeydown$;
@@ -94,8 +102,8 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
94
102
  readonly onSelectionStart$: Observable<Nullable<INodePosition>>;
95
103
  private readonly _onPaste$;
96
104
  readonly onPaste$: Observable<Nullable<IEditorInputConfig>>;
97
- private readonly _textSelection$;
98
- readonly textSelection$: Observable<TextRange[]>;
105
+ private readonly _textSelectionInner$;
106
+ readonly textSelectionInner$: Observable<Nullable<ITextSelectionInnerParam>>;
99
107
  private _container;
100
108
  private _inputParent;
101
109
  private _input;
@@ -106,41 +114,35 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
106
114
  private _viewportScrollY;
107
115
  private _rangeList;
108
116
  private _currentSegmentId;
109
- private _documentOffsetConfig;
110
117
  private _selectionStyle;
111
118
  private _isSelectionEnabled;
112
119
  private _viewPortObserverMap;
113
120
  private _isIMEInputApply;
114
121
  private _activeViewport;
115
- constructor(_docSkeleton?: Nullable<DocumentSkeleton>, _scene?: Nullable<Scene>, viewport?: Nullable<Viewport>);
122
+ private _docSkeleton;
123
+ private _scene;
124
+ private _document;
125
+ constructor();
126
+ __getEditorContainer(): HTMLElement;
116
127
  getViewPort(): Viewport;
117
128
  setSegment(id: string): void;
118
129
  setStyle(style?: ITextSelectionStyle): void;
119
130
  resetStyle(): void;
120
131
  enableSelection(): void;
121
132
  disableSelection(): void;
122
- getActiveRange(): {
123
- startOffset: number;
124
- endOffset: number;
125
- collapsed: boolean;
126
- startNodePosition: INodePosition | null;
127
- endNodePosition: Nullable<INodePosition>;
128
- direction: RANGE_DIRECTION;
129
- segmentId: string;
130
- style: ITextSelectionStyle;
131
- } | null;
132
- getAllTextRanges(): TextRange[];
133
- addTextRanges(ranges: ITextRangeWithStyle[], config?: IAddTextRangesConfig): void;
133
+ addTextRanges(ranges: ISuccinctTextRangeParam[]): void;
134
134
  sync(): void;
135
135
  activate(x: number, y: number): void;
136
136
  focus(): void;
137
137
  blur(): void;
138
138
  deactivate(): void;
139
- changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, viewport?: Nullable<Viewport>, documentOffsetConfig?: IDocumentOffsetConfig): void;
140
- handleDblClick(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewportMain: Nullable<Viewport>): void;
141
- handleTripleClick(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewportMain: Nullable<Viewport>): void;
142
- eventTrigger(evt: IPointerEvent | IMouseEvent, documentOffsetConfig: IDocumentOffsetConfig, viewportMain: Nullable<Viewport>): void;
139
+ changeRuntime(docSkeleton: DocumentSkeleton, scene: Scene, document: Documents): void;
140
+ handleDblClick(evt: IPointerEvent | IMouseEvent): void;
141
+ handleTripleClick(evt: IPointerEvent | IMouseEvent): void;
142
+ eventTrigger(evt: IPointerEvent | IMouseEvent): void;
143
143
  removeAllTextRanges(): void;
144
+ private _getAllTextRanges;
145
+ private _getActiveRange;
144
146
  private _add;
145
147
  private _getActiveRangeInstance;
146
148
  dispose(): void;
@@ -156,7 +158,7 @@ export declare class TextSelectionRenderManager extends RxDisposable implements
156
158
  private _isEmpty;
157
159
  private _getCanvasOffset;
158
160
  private _scrollToSelection;
159
- private _syncDomToSelection;
161
+ private _updateDomCursorPositionAndSize;
160
162
  private _moving;
161
163
  private _attachScrollEvent;
162
164
  private _initInputEvents;