@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
@@ -65,7 +65,6 @@ export declare class Spreadsheet extends SheetComponent {
65
65
  /**
66
66
  * Since multiple controllers, not just the sheet-render.controller, invoke spreadsheet.makeDirty() — for instance, the cf.render-controller — it's essential to also call viewport.markDirty() whenever spreadsheet.makeDirty() is triggered.
67
67
  * @param state
68
- * @returns
69
68
  */
70
69
  makeDirty(state?: boolean): this;
71
70
  setDirtyArea(dirtyBounds: IBoundRectNoAngle[]): void;
@@ -1,4 +1,4 @@
1
- import { Nullable, Observable } from '@univerjs/core';
1
+ import { Nullable, EventSubject } from '@univerjs/core';
2
2
  import { UniverRenderingContext } from '../../context';
3
3
  import { Scene } from '../../scene';
4
4
  import { SceneViewer } from '../../scene-viewer';
@@ -8,7 +8,7 @@ export declare enum SLIDE_NAVIGATION_KEY {
8
8
  RIGHT = "__slideNavigationRight__"
9
9
  }
10
10
  export declare class Slide extends SceneViewer {
11
- onSlideChangePageByNavigationObservable: Observable<Nullable<string>>;
11
+ slideChangePageByNavigation$: EventSubject<Nullable<string>>;
12
12
  private _navigationEnabled;
13
13
  activeFirstPage(): void;
14
14
  addPage(scene: Scene): void;
@@ -1,4 +1,3 @@
1
- import { Observable } from '@univerjs/core';
2
1
  import { CURSOR_TYPE } from './basics/const';
3
2
  import { Canvas, CanvasRenderMode } from './canvas';
4
3
  import { Scene } from './scene';
@@ -6,14 +5,10 @@ import { ThinEngine } from './thin-engine';
6
5
 
7
6
  export declare class Engine extends ThinEngine<Scene> {
8
7
  renderEvenInBackground: boolean;
9
- /**
10
- * Observable raised when the engine begins a new frame
11
- */
12
- onBeginFrameObservable: Observable<Engine>;
13
- /**
14
- * Observable raised when the engine ends the current frame
15
- */
16
- onEndFrameObservable: Observable<Engine>;
8
+ private readonly _beginFrame$;
9
+ readonly beginFrame$: import('rxjs').Observable<void>;
10
+ private readonly _endFrame$;
11
+ readonly endFrame$: import('rxjs').Observable<void>;
17
12
  private _container;
18
13
  private _canvas;
19
14
  private _renderingQueueLaunched;
@@ -29,6 +24,8 @@ export declare class Engine extends ThinEngine<Scene> {
29
24
  private _pointerMoveEvent;
30
25
  private _pointerDownEvent;
31
26
  private _pointerUpEvent;
27
+ private _pointerOutEvent;
28
+ private _pointerCancelEvent;
32
29
  private _pointerBlurEvent;
33
30
  private _pointerWheelEvent;
34
31
  private _pointerEnterEvent;
@@ -97,7 +94,6 @@ export declare class Engine extends ThinEngine<Scene> {
97
94
  _renderFrame(): void;
98
95
  private _cancelFrame;
99
96
  private _getHostWindow;
100
- /** @hidden */
101
97
  private _renderLoop;
102
98
  private _measureFps;
103
99
  private _handleKeyboardAction;
@@ -31,7 +31,7 @@ export * from './scroll-timer';
31
31
  export * from './shape';
32
32
  export * from './viewport';
33
33
  export { DocumentViewModel } from './components/docs/view-model/document-view-model';
34
- export { getAnchorBounding, TEXT_RANGE_LAYER_INDEX, TextRange } from './components/docs/text-selection/text-range';
34
+ export { getAnchorBounding, TEXT_RANGE_LAYER_INDEX, TextRange, getLineBounding } from './components/docs/text-selection/text-range';
35
35
  export { NodePositionConvertToCursor } from './components/docs/text-selection/convert-cursor';
36
36
  export { Liquid } from './components/docs/liquid';
37
37
  export { ITextSelectionRenderManager, TextSelectionRenderManager, getCanvasOffsetByEngine, } from './components/docs/text-selection/text-selection-render-manager';
@@ -43,3 +43,5 @@ export { DocumentSkeleton } from './components/docs/layout/doc-skeleton';
43
43
  export { ThinEngine } from './thin-engine';
44
44
  export { getCharSpaceApply, getNumberUnitValue } from './components/docs/layout/tools';
45
45
  export { type IChangeObserverConfig } from './scene.transformer';
46
+ export { DEFAULT_PADDING_DATA } from './components/sheets/sheet-skeleton';
47
+ export { DocumentEditArea } from './components/docs/view-model/document-view-model';
@@ -20,6 +20,12 @@ export declare class Layer extends Disposable {
20
20
  getObjectsByOrder(): BaseObject[];
21
21
  getObjectsByOrderForPick(): BaseObject[];
22
22
  getObjects(): BaseObject[];
23
+ /**
24
+ * insert o to _objects[]
25
+ * if o is a group, insert all its children and group itself to _objects[]
26
+ * @param o
27
+ * @returns
28
+ */
23
29
  addObject(o: BaseObject): this;
24
30
  removeObject(object: BaseObject | string): void;
25
31
  addObjects(objects: BaseObject[]): this;
@@ -10,8 +10,8 @@ import { IRender, IRenderModuleCtor } from './render-unit';
10
10
 
11
11
  export type RenderComponentType = SheetComponent | DocComponent | Slide | BaseObject;
12
12
  export interface IRenderManagerService extends IDisposable {
13
+ /** @deprecated */
13
14
  currentRender$: Observable<Nullable<string>>;
14
- createRender$: Observable<Nullable<string>>;
15
15
  addRender(unitId: string, renderer: IRender): void;
16
16
  createRender(unitId: string): IRender;
17
17
  removeRender(unitId: string): void;
@@ -19,14 +19,17 @@ export interface IRenderManagerService extends IDisposable {
19
19
  getRenderById(unitId: string): Nullable<IRender>;
20
20
  getRenderAll(): Map<string, IRender>;
21
21
  defaultEngine: Engine;
22
- create(unitId: Nullable<string>): void;
22
+ /** @deprecated */
23
+ createRender$: Observable<string>;
24
+ /** @deprecated this design is very very weird! Remove it. */
25
+ create(unitId: string): void;
23
26
  /** @deprecated There will be multi units to render at the same time, so there is no *current*. */
24
27
  getCurrent(): Nullable<IRender>;
25
28
  /** @deprecated There will be multi units to render at the same time, so there is no *first*. */
26
29
  getFirst(): Nullable<IRender>;
27
30
  has(unitId: string): boolean;
28
31
  withCurrentTypeOfUnit<T>(type: UniverInstanceType, id: DependencyIdentifier<T>): Nullable<T>;
29
- registerRenderController<T extends UnitModel>(type: UnitType, ctor: IRenderModuleCtor<T>): IDisposable;
32
+ registerRenderModule<T extends UnitModel>(type: UnitType, ctor: IRenderModuleCtor<T>): IDisposable;
30
33
  }
31
34
  export declare class RenderManagerService extends Disposable implements IRenderManagerService {
32
35
  private readonly _injector;
@@ -37,14 +40,15 @@ export declare class RenderManagerService extends Disposable implements IRenderM
37
40
  private readonly _currentRender$;
38
41
  readonly currentRender$: Observable<Nullable<string>>;
39
42
  private readonly _createRender$;
40
- readonly createRender$: Observable<Nullable<string>>;
43
+ /** @deprecated */
44
+ readonly createRender$: Observable<string>;
41
45
  get defaultEngine(): Engine;
42
46
  private readonly _renderControllers;
43
47
  constructor(_injector: Injector, _univerInstanceService: IUniverInstanceService);
44
48
  dispose(): void;
45
- registerRenderController(type: UnitType, ctor: IRenderModuleCtor): IDisposable;
49
+ registerRenderModule(type: UnitType, ctor: IRenderModuleCtor): IDisposable;
46
50
  private _getRenderControllersForType;
47
- create(unitId: Nullable<string>): void;
51
+ create(unitId: string): void;
48
52
  createRender(unitId: string): IRender;
49
53
  withCurrentTypeOfUnit<T>(type: UniverInstanceType, id: DependencyIdentifier<T>): Nullable<T>;
50
54
  private _createRender;
@@ -29,7 +29,7 @@ export interface IRenderContext<T extends UnitModel = UnitModel> extends Omit<IR
29
29
  * This class is responsible
30
30
  */
31
31
  export declare class RenderUnit extends Disposable implements IRender {
32
- readonly isRenderUnit: true;
32
+ readonly isRenderUnit: boolean;
33
33
  get unitId(): string;
34
34
  get type(): UnitType;
35
35
  private readonly _injector;
@@ -22,7 +22,7 @@ export declare class SceneViewer extends BaseObject {
22
22
  enableSelectedClipElement(): void;
23
23
  disableSelectedClipElement(): void;
24
24
  allowSelectedClipElement(): boolean;
25
- pick(coord: Vector2): Nullable<ThinScene | BaseObject>;
25
+ pick(coord: Vector2): Nullable<BaseObject | ThinScene>;
26
26
  dispose(): void;
27
27
  private _initialProps;
28
28
  }
@@ -62,7 +62,6 @@ export declare class Scene extends ThinScene {
62
62
  * scene._setTransForm --> viewport@resetCanvasSizeAndUpdateScrollBar ---> scrollTo ---> limitedScroll ---> onScrollBeforeObserver ---> setScrollInfo
63
63
  * scrollInfo needs accurate scene width & height, limitedScroll depends on scene & engine's width & height
64
64
  * @param state
65
- * @returns
66
65
  */
67
66
  transformByState(state: ISceneTransformState): void;
68
67
  getParent(): ThinEngine<Scene> | SceneViewer;
@@ -71,11 +70,16 @@ export declare class Scene extends ThinScene {
71
70
  getLayer(zIndex?: number): Layer;
72
71
  getLayerMaxZIndex(): number;
73
72
  addLayer(...argument: Layer[]): void;
73
+ addObjects(objects: BaseObject[], zIndex?: number): this;
74
74
  addObject(o: BaseObject, zIndex?: number): this;
75
+ /**
76
+ * make object parent to scene
77
+ * @param o
78
+ */
75
79
  setObjectBehavior(o: BaseObject): void;
76
- addObjects(objects: BaseObject[], zIndex?: number): this;
77
80
  removeObject(object?: BaseObject | string): this | undefined;
78
81
  removeObjects(objects?: BaseObject[] | string[]): this | undefined;
82
+ getObjectsByLayer(zIndex: number): BaseObject[];
79
83
  getAllObjects(): BaseObject[];
80
84
  getAllObjectsByOrder(isDesc?: boolean): BaseObject[];
81
85
  getAllObjectsByOrderForPick(isDesc?: boolean): BaseObject[];
@@ -120,7 +124,7 @@ export declare class Scene extends ThinScene {
120
124
  scaleY: number;
121
125
  };
122
126
  dispose(): void;
123
- pick(coord: Vector2): Nullable<BaseObject | Scene | ThinScene>;
127
+ pick(vec: Vector2): Nullable<BaseObject | Scene | ThinScene>;
124
128
  triggerKeyDown(evt: IKeyboardEvent): void;
125
129
  triggerKeyUp(evt: IKeyboardEvent): void;
126
130
  triggerPointerUp(evt: IPointerEvent | IMouseEvent): boolean;
@@ -14,10 +14,12 @@ export declare class InputManager extends Disposable {
14
14
  static ExclusiveDoubleClickMode: boolean;
15
15
  /** This is a defensive check to not allow control attachment prior to an already active one. If already attached, previous control is unattached before attaching the new one. */
16
16
  private _alreadyAttached;
17
- private _onInputObserver;
17
+ private _onInput$;
18
18
  private _onPointerMove;
19
19
  private _onPointerDown;
20
20
  private _onPointerUp;
21
+ private _onPointerOut;
22
+ private _onPointerCancel;
21
23
  private _onPointerEnter;
22
24
  private _onPointerLeave;
23
25
  private _onMouseWheel;
@@ -42,7 +44,7 @@ export declare class InputManager extends Disposable {
42
44
  dispose(): void;
43
45
  mouseLeaveEnterHandler(evt: IMouseEvent): void;
44
46
  dragLeaveEnterHandler(evt: IMouseEvent): void;
45
- attachControl(hasDown?: boolean, hasUp?: boolean, hasMove?: boolean, hasWheel?: boolean, hasEnter?: boolean, hasLeave?: boolean): void;
47
+ attachControl(hasDown?: boolean, hasUp?: boolean, enableMove?: boolean, hasWheel?: boolean, hasEnter?: boolean, hasLeave?: boolean): void;
46
48
  /**
47
49
  * Detaches all event handlers
48
50
  */
@@ -1,4 +1,4 @@
1
- import { Nullable, Disposable, Observable } from '@univerjs/core';
1
+ import { Nullable, Disposable } from '@univerjs/core';
2
2
  import { BaseObject } from './base-object';
3
3
  import { IMouseEvent, IPointerEvent } from './basics/i-events';
4
4
  import { Group } from './group';
@@ -60,22 +60,27 @@ export declare class Transformer extends Disposable implements ITransformerConfi
60
60
  boundBoxFunc: Nullable<(oldBox: BaseObject, newBox: BaseObject) => BaseObject>;
61
61
  useSingleNodeRotation: boolean;
62
62
  shouldOverdrawWholeArea: boolean;
63
- onChangeStartObservable: Observable<IChangeObserverConfig>;
64
- onChangingObservable: Observable<IChangeObserverConfig>;
65
- onChangeEndObservable: Observable<IChangeObserverConfig>;
66
- onClearControlObservable: Observable<boolean>;
67
- onCreateControlObservable: Observable<Group>;
63
+ private readonly _changeStart$;
64
+ readonly changeStart$: import('rxjs').Observable<IChangeObserverConfig>;
65
+ private readonly _changing$;
66
+ readonly changing$: import('rxjs').Observable<IChangeObserverConfig>;
67
+ private readonly _changeEnd$;
68
+ readonly changeEnd$: import('rxjs').Observable<IChangeObserverConfig>;
69
+ private readonly _clearControl$;
70
+ readonly clearControl$: import('rxjs').Observable<boolean>;
71
+ private readonly _createControl$;
72
+ readonly createControl$: import('rxjs').Observable<Group>;
68
73
  private _startOffsetX;
69
74
  private _startOffsetY;
70
75
  private _startStateMap;
71
76
  private _viewportScrollX;
72
77
  private _viewportScrollY;
73
- private _moveObserver;
74
- private _upObserver;
75
- private _cancelFocusObserver;
78
+ private _topScenePointerMoveSub;
79
+ private _topScenePointerUpSub;
80
+ private _cancelFocusSubscription;
76
81
  private _transformerControlMap;
77
82
  private _selectedObjectMap;
78
- private _observerObjectMap;
83
+ private _subscriptionObjectMap;
79
84
  private _copperControl;
80
85
  private _copperSelectedObject;
81
86
  private _moveBufferSkip;
@@ -0,0 +1,8 @@
1
+ import { IViewportInfo } from '../basics/vector2';
2
+ import { UniverRenderingContext } from '../context';
3
+ import { IRectProps, Rect } from './rect';
4
+
5
+ export declare class DashedRect extends Rect {
6
+ static drawWith(ctx: UniverRenderingContext, props: IRectProps | Rect): void;
7
+ protected _draw(ctx: UniverRenderingContext, viewportInfo?: IViewportInfo): void;
8
+ }
@@ -24,3 +24,4 @@ export * from './rich-text';
24
24
  export * from './scroll-bar';
25
25
  export * from './shape';
26
26
  export * from './checkbox';
27
+ export * from './dashedrect';
@@ -11,10 +11,10 @@ export declare class ScrollBar extends BaseScrollBar {
11
11
  private _lastY;
12
12
  private _isHorizonMove;
13
13
  private _isVerticalMove;
14
- private _horizonPointerMoveObserver;
15
- private _horizonPointerUpObserver;
16
- private _verticalPointerMoveObserver;
17
- private _verticalPointerUpObserver;
14
+ private _horizonPointerMoveSub;
15
+ private _horizonPointerUpSub;
16
+ private _verticalPointerMoveSub;
17
+ private _verticalPointerUpSub;
18
18
  barSize: number;
19
19
  barBorder: number;
20
20
  thumbMargin: number;
@@ -27,6 +27,7 @@ export declare class ScrollBar extends BaseScrollBar {
27
27
  thumbActiveBackgroundColor: string;
28
28
  barBackgroundColor: string;
29
29
  barBorderColor: string;
30
+ private _eventSub;
30
31
  constructor(view: Viewport, props?: IScrollBarProps);
31
32
  static attachTo(view: Viewport, props?: IScrollBarProps): ScrollBar;
32
33
  dispose(): void;
@@ -1,4 +1,4 @@
1
- import { IScale, Nullable } from '@univerjs/core';
1
+ import { IOffset, IScale, ISize, Nullable } from '@univerjs/core';
2
2
  import { BaseObject } from '../base-object';
3
3
  import { IObjectFullState } from '../basics/interfaces';
4
4
  import { IViewportInfo, Vector2 } from '../basics/vector2';
@@ -7,7 +7,7 @@ import { UniverRenderingContext } from '../context';
7
7
  export type LineJoin = 'round' | 'bevel' | 'miter';
8
8
  export type LineCap = 'butt' | 'round' | 'square';
9
9
  export type PaintFirst = 'fill' | 'stroke';
10
- export interface IShapeProps extends IObjectFullState {
10
+ export interface IShapeProps extends IObjectFullState, ISize, IOffset, IScale {
11
11
  hoverCursor?: Nullable<string>;
12
12
  moveCursor?: string | null;
13
13
  fillRule?: string;
@@ -1,4 +1,4 @@
1
- import { Disposable, Observable } from '@univerjs/core';
1
+ import { Disposable, EventSubject } from '@univerjs/core';
2
2
  import { IDisposable } from '@wendellhu/redi';
3
3
  import { CURSOR_TYPE, RENDER_CLASS_TYPE } from './basics/const';
4
4
  import { IEvent } from './basics/i-events';
@@ -6,8 +6,8 @@ import { ITransformChangeState } from './basics/interfaces';
6
6
  import { Canvas } from './canvas';
7
7
 
8
8
  export declare abstract class ThinEngine<T extends IDisposable> extends Disposable {
9
- onInputChangedObservable: Observable<IEvent>;
10
- onTransformChangeObservable: Observable<ITransformChangeState>;
9
+ onInputChanged$: EventSubject<IEvent>;
10
+ onTransformChange$: EventSubject<ITransformChangeState>;
11
11
  private _scenes;
12
12
  private _activeScene;
13
13
  get classType(): RENDER_CLASS_TYPE;
@@ -1,29 +1,33 @@
1
- import { EventState, Nullable, Observer, Disposable, Observable } from '@univerjs/core';
1
+ import { Nullable, Disposable, EventSubject } from '@univerjs/core';
2
2
  import { BaseObject } from './base-object';
3
- import { CURSOR_TYPE, EVENT_TYPE, RENDER_CLASS_TYPE } from './basics/const';
3
+ import { CURSOR_TYPE, RENDER_CLASS_TYPE } from './basics/const';
4
4
  import { IDragEvent, IKeyboardEvent, IMouseEvent, IPointerEvent, IWheelEvent } from './basics/i-events';
5
5
  import { ITransformChangeState } from './basics/interfaces';
6
6
  import { Transform } from './basics/transform';
7
7
  import { Vector2 } from './basics/vector2';
8
8
  import { UniverRenderingContext } from './context';
9
+ import { ThinEngine } from './thin-engine';
10
+ import { Scene } from './scene';
9
11
 
10
12
  export declare abstract class ThinScene extends Disposable {
11
- onTransformChangeObservable: Observable<ITransformChangeState>;
12
- onFileLoadedObservable: Observable<string>;
13
- onPointerDownObserver: Observable<IMouseEvent | IPointerEvent>;
14
- onPointerMoveObserver: Observable<IMouseEvent | IPointerEvent>;
15
- onPointerUpObserver: Observable<IMouseEvent | IPointerEvent>;
16
- onPointerEnterObserver: Observable<IMouseEvent | IPointerEvent>;
17
- onPointerLeaveObserver: Observable<IMouseEvent | IPointerEvent>;
18
- onDragEnterObserver: Observable<IDragEvent>;
19
- onDragOverObserver: Observable<IDragEvent>;
20
- onDragLeaveObserver: Observable<IDragEvent>;
21
- onDropObserver: Observable<IDragEvent>;
22
- onDblclickObserver: Observable<IMouseEvent | IPointerEvent>;
23
- onTripleClickObserver: Observable<IMouseEvent | IPointerEvent>;
24
- onMouseWheelObserver: Observable<IWheelEvent>;
25
- onKeyDownObservable: Observable<IKeyboardEvent>;
26
- onKeyUpObservable: Observable<IKeyboardEvent>;
13
+ onTransformChange$: EventSubject<ITransformChangeState>;
14
+ onFileLoaded$: EventSubject<string>;
15
+ onPointerDown$: EventSubject<IMouseEvent | IPointerEvent>;
16
+ onPointerMove$: EventSubject<IMouseEvent | IPointerEvent>;
17
+ onPointerUp$: EventSubject<IMouseEvent | IPointerEvent>;
18
+ onPointerEnter$: EventSubject<IMouseEvent | IPointerEvent>;
19
+ onPointerOut$: EventSubject<IMouseEvent | IPointerEvent>;
20
+ onPointerCancel$: EventSubject<IMouseEvent | IPointerEvent>;
21
+ onPointerLeave$: EventSubject<IMouseEvent | IPointerEvent>;
22
+ onDragEnter$: EventSubject<IDragEvent>;
23
+ onDragOver$: EventSubject<IDragEvent>;
24
+ onDragLeave$: EventSubject<IDragEvent>;
25
+ onDrop$: EventSubject<IDragEvent>;
26
+ onDblclick$: EventSubject<IMouseEvent | IPointerEvent>;
27
+ onTripleClick$: EventSubject<IMouseEvent | IPointerEvent>;
28
+ onMouseWheel$: EventSubject<IWheelEvent>;
29
+ onKeyDown$: EventSubject<IKeyboardEvent>;
30
+ onKeyUp$: EventSubject<IKeyboardEvent>;
27
31
  debounceParentTimeout: number;
28
32
  private _sceneKey;
29
33
  private _width;
@@ -48,9 +52,6 @@ export declare abstract class ThinScene extends Disposable {
48
52
  set scaleY(scaleY: number);
49
53
  enableEvent(): void;
50
54
  disableEvent(): void;
51
- on(eventType: EVENT_TYPE, func: (evt: unknown, state: EventState) => void): Nullable<Observer<unknown>>;
52
- off(eventType: EVENT_TYPE, observer: Nullable<Observer<unknown>>): void;
53
- remove(eventType: EVENT_TYPE): void;
54
55
  triggerKeyDown(evt: IKeyboardEvent): void;
55
56
  triggerKeyUp(evt: IKeyboardEvent): void;
56
57
  abstract triggerPointerUp(evt: IPointerEvent | IMouseEvent): void;
@@ -73,7 +74,7 @@ export declare abstract class ThinScene extends Disposable {
73
74
  abstract getObject(oKey: string): Nullable<BaseObject>;
74
75
  abstract addObject(o: BaseObject, zIndex?: number): void;
75
76
  abstract addObjects(objects: BaseObject[], zIndex?: number): void;
76
- abstract getEngine(): any;
77
+ abstract getEngine(): Nullable<ThinEngine<Scene>>;
77
78
  abstract setObjectBehavior(o: BaseObject): void;
78
79
  attachTransformerTo(o: BaseObject): void;
79
80
  detachTransformerFrom(o: BaseObject): void;
@@ -1,4 +1,4 @@
1
- import { EventState, IPosition, Nullable, Observable } from '@univerjs/core';
1
+ import { EventState, IPosition, Nullable, EventSubject } from '@univerjs/core';
2
2
  import { BaseObject } from './base-object';
3
3
  import { IWheelEvent } from './basics/i-events';
4
4
  import { Transform } from './basics/transform';
@@ -73,11 +73,11 @@ export declare class Viewport {
73
73
  */
74
74
  private _physicalSceneWidth;
75
75
  private _physicalSceneHeight;
76
- onMouseWheelObserver: Observable<IWheelEvent>;
77
- onScrollAfterObserver: Observable<IScrollObserverParam>;
78
- onScrollBeforeObserver: Observable<IScrollObserverParam>;
79
- onScrollStopObserver: Observable<IScrollObserverParam>;
80
- onScrollByBarObserver: Observable<IScrollObserverParam>;
76
+ onMouseWheel$: EventSubject<IWheelEvent>;
77
+ onScrollAfter$: EventSubject<IScrollObserverParam>;
78
+ onScrollBefore$: EventSubject<IScrollObserverParam>;
79
+ onScrollStop$: EventSubject<IScrollObserverParam>;
80
+ onScrollByBar$: EventSubject<IScrollObserverParam>;
81
81
  private _viewportKey;
82
82
  /**
83
83
  * viewport top origin value in logic, scale does not affect it.
@@ -102,7 +102,7 @@ export declare class Viewport {
102
102
  private _isWheelPreventDefaultX;
103
103
  private _isWheelPreventDefaultY;
104
104
  private _scrollStopNum;
105
- private _renderClipState;
105
+ private _clipViewport;
106
106
  private _active;
107
107
  private _paddingStartX;
108
108
  private _paddingEndX;
@@ -201,9 +201,12 @@ export declare class Viewport {
201
201
  * only viewMain would call scrollTo, other views did not call scroll, see scroll.render-controller
202
202
  * @param pos
203
203
  *
204
- * when scrolling:
205
- *
204
+ * when scrolling by trackpad:
205
+ * scene.input-manager@_onMouseWheel --> scene@triggerMouseWheel --> sheet-render.controller@scene.onMouseWheelObserver.add --> scrollManagerService.setScrollInfo -->
206
206
  * scroll.render-controller@_scrollManagerService.scrollInfo$.subscribe --> scrollTo
207
+ * scroll-manager.service@_scrollInfo$.next -->scroll.render-controller@_scrollManagerService.scrollInfo$.subscribe -->
208
+ * viewportMain.scrollTo(config);
209
+ *
207
210
  *
208
211
  * when change skelenton:
209
212
  * _currentSkeletonBefore$ ---> scroll.render-controller@_updateSceneSize --> setSearchParam --> scene@_setTransForm ---> viewport.resetCanvasSizeAndUpdateScrollBar ---> scrollTo ---> _scroll
@@ -213,8 +216,13 @@ export declare class Viewport {
213
216
  * _currentSkeleton$ ---> selection.render-controller ---> setCurrentSelection ---> formula@_autoScroll ---> scrollTo
214
217
  * _currentSkeleton$ ---> freeze.render-controller@_refreshFreeze --> viewport.resize ---> scrollTo ---> _scroll
215
218
  *
219
+ *
220
+ *
216
221
  * TODO: @lumix many side effects in scrollTo, it would update scrollXY & viewportScrollXY, and notify listeners of scrollInfo$
217
222
  *
223
+ * TODO: @lumix Other controller should call scrollManagerService to set scrollInfo$
224
+ * example in scroll.operation.ts
225
+ *
218
226
  * Debug
219
227
  * window.scene.getViewports()[0].scrollTo({x: 14.2, y: 1.8}, true)
220
228
  */
@@ -224,6 +232,7 @@ export declare class Viewport {
224
232
  } | undefined;
225
233
  /**
226
234
  * current position plus offset, relative
235
+ * normally triggered by scroll-timer(in sheet)
227
236
  * @param pos
228
237
  * @returns isLimited
229
238
  */
@@ -231,7 +240,16 @@ export declare class Viewport {
231
240
  isLimitedX: boolean;
232
241
  isLimitedY: boolean;
233
242
  } | undefined;
243
+ /**
244
+ *
245
+ * @param pos
246
+ * @param isTrigger
247
+ */
234
248
  scrollByBar(pos: IScrollBarPosition, isTrigger?: boolean): void;
249
+ scrollByViewportScroll({ deltaX, deltaY }: {
250
+ deltaX?: number | undefined;
251
+ deltaY?: number | undefined;
252
+ }): void;
235
253
  /**
236
254
  * current position plus offset relatively
237
255
  * the caller no need to deal with the padding when frozen
@@ -276,8 +294,19 @@ export declare class Viewport {
276
294
  private _makeDefaultViewport;
277
295
  private _calcViewportInfo;
278
296
  getBounding(): IViewportInfo;
279
- getRelativeVector(coord: Vector2): Vector2;
297
+ /**
298
+ * convert vector to scene coordinate, include row & col
299
+ * @param vec
300
+ * @returns Vector2
301
+ */
302
+ transformVector2SceneCoord(vec: Vector2): Vector2;
280
303
  getAbsoluteVector(coord: Vector2): Vector2;
304
+ /**
305
+ * At f7140a7c11, only doc need this method.
306
+ * In sheet, wheel event is handled by scroll-manager.service@setScrollInfo
307
+ * @param evt
308
+ * @param state
309
+ */
281
310
  onMouseWheel(evt: IWheelEvent, state: EventState): void;
282
311
  isHit(coord: Vector2): boolean | undefined;
283
312
  pickScrollBar(coord: Vector2): import('./shape').Rect<import('./shape').IRectProps> | null | undefined;
@@ -310,7 +339,7 @@ export declare class Viewport {
310
339
  private _triggerScrollStop;
311
340
  /**
312
341
  * Scroll Viewport
313
- * Only the 'viewMain' will enter this function, other viewports will not.
342
+ * This function called by viewMain only, other viewports will not.
314
343
  *
315
344
  * caller: scroll.render-controller viewportMain.scrollTo({x, y}))
316
345
  * this._scrollManagerService.scrollInfo$.subscribe --> scrollTo --> _scroll
@@ -318,7 +347,7 @@ export declare class Viewport {
318
347
  * @param scrollBarPos viewMain 滚动条的位置
319
348
  * @param isTrigger
320
349
  */
321
- private _scrollToScrollbarPos;
350
+ private _scrollCore;
322
351
  expandBounds(value: {
323
352
  top: number;
324
353
  left: number;
@@ -334,7 +363,7 @@ export declare class Viewport {
334
363
  private _getBoundScale;
335
364
  /**
336
365
  * main canvas element resize
337
- * called by this.scene.getEngine()?.onTransformChangeObservable.add
366
+ * called by this.scene.getEngine()?.onTransformChange$.add
338
367
  */
339
368
  private _mainCanvasResizeHandler;
340
369
  }