@netless/appliance-plugin 1.1.43 → 1.1.44

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 (34) hide show
  1. package/dist/appliance-plugin.js +1 -1
  2. package/dist/appliance-plugin.mjs +3 -3
  3. package/dist/{bridge-GmRa7-tp.js → bridge-B7BW1lpB.js} +1 -1
  4. package/dist/{bridge-D30E9dr6.mjs → bridge-DQud78k4.mjs} +1 -1
  5. package/dist/bridge.js +1 -1
  6. package/dist/bridge.mjs +1 -1
  7. package/dist/core/mainEngine.d.ts +10 -2
  8. package/dist/core/mainThread/base.d.ts +5 -1
  9. package/dist/core/mainThread/subServiceThread.d.ts +2 -0
  10. package/dist/core/tools/image.d.ts +1 -0
  11. package/dist/core/utils/serviceImageRecovery.d.ts +9 -0
  12. package/dist/core/worker/base.d.ts +5 -1
  13. package/dist/core/worker/fullWorkerService.d.ts +3 -0
  14. package/dist/core/worker/simpleWorker.d.ts +2 -2
  15. package/dist/fullWorker.js +98 -98
  16. package/dist/{index-CatWUcZt.mjs → index-4ZI3GxVI.mjs} +1 -1
  17. package/dist/{index-DGdruTPt.js → index-AJCkfnUu.js} +1 -1
  18. package/dist/{index-rDe1jjPM.mjs → index-B8Ls8sf_.mjs} +1 -1
  19. package/dist/{index-CQuJ6lL1.mjs → index-BBtV40zU.mjs} +597 -493
  20. package/dist/{index-Ct5ShjRI.js → index-BOzOWS7h.js} +1 -1
  21. package/dist/index-BQiBrpib.js +1 -0
  22. package/dist/index-BYriQtGa.js +1 -0
  23. package/dist/{index-CrJWLjuD.mjs → index-C2tUvh2a.mjs} +12105 -12033
  24. package/dist/{index-C-pO2InQ.mjs → index-DSFxl2wM.mjs} +8068 -7982
  25. package/dist/index-DnJkIouU.js +570 -0
  26. package/dist/index-DptnZ-h8.js +570 -0
  27. package/dist/{index-DYDy0dd5.mjs → index-ZUpKkvbD.mjs} +597 -493
  28. package/dist/plugin/baseApplianceManager.d.ts +2 -2
  29. package/dist/subWorker.js +74 -74
  30. package/package.json +57 -56
  31. package/dist/index-B44Av4kp.js +0 -1
  32. package/dist/index-CKtpWZ9L.js +0 -1
  33. package/dist/index-DLzvL8jo.js +0 -570
  34. package/dist/index-LmgcnMI8.js +0 -570
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-LmgcnMI8.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.AppliancePluginCursorNames=e.AppliancePluginCursorNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.Camera_Ack_Slow_Timeout=e.Camera_Ack_Slow_Timeout;exports.Camera_Transport_Fallback_Timeout=e.Camera_Transport_Fallback_Timeout;exports.Camera_Update_Business_Timeout=e.Camera_Update_Business_Timeout;exports.Cursor_Hover_Id=e.Cursor_Hover_Id;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EForceStopReason=e.EForceStopReason;exports.EImageType=e.EImageType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EOperationType=e.EOperationType;exports.EPostMessageType=e.EPostMessageType;exports.ERenderFilterType=e.ERenderFilterType;exports.ESVGType=e.ESVGType;exports.EScaleType=e.EScaleType;exports.EStrokeType=e.EStrokeType;exports.EToolsKey=e.EToolsKey;exports.ElayerType=e.ElayerType;exports.EmitEventType=e.EmitEventType;exports.EventMessageType=e.EventMessageType;exports.EventWorkState=e.EventWorkState;exports.EvevtWorkState=e.EventWorkState;exports.FontFaceFallbackBlacklistLevel=e.FontFaceFallbackBlacklistLevel;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Main_View_Id=e.Main_View_Id;exports.Plugin=e.Plugin;exports.Renderer_Business_Default_Timeout=e.Renderer_Business_Default_Timeout;exports.ShapeType=e.ShapeType;exports.Task_Time_Interval=e.Task_Time_Interval;exports.WorkerCanvasContextBlacklistLevel=e.WorkerCanvasContextBlacklistLevel;exports.WorkerMaskTextureFormatBlacklistLevel=e.WorkerMaskTextureFormatBlacklistLevel;exports.WorkerMaskTextureUploadBlacklistLevel=e.WorkerMaskTextureUploadBlacklistLevel;exports.WorkerRenderModeBlacklistLevel=e.WorkerRenderModeBlacklistLevel;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DnJkIouU.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.AppliancePluginCursorNames=e.AppliancePluginCursorNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.Camera_Ack_Slow_Timeout=e.Camera_Ack_Slow_Timeout;exports.Camera_Transport_Fallback_Timeout=e.Camera_Transport_Fallback_Timeout;exports.Camera_Update_Business_Timeout=e.Camera_Update_Business_Timeout;exports.Cursor_Hover_Id=e.Cursor_Hover_Id;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EForceStopReason=e.EForceStopReason;exports.EImageType=e.EImageType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EOperationType=e.EOperationType;exports.EPostMessageType=e.EPostMessageType;exports.ERenderFilterType=e.ERenderFilterType;exports.ESVGType=e.ESVGType;exports.EScaleType=e.EScaleType;exports.EStrokeType=e.EStrokeType;exports.EToolsKey=e.EToolsKey;exports.ElayerType=e.ElayerType;exports.EmitEventType=e.EmitEventType;exports.EventMessageType=e.EventMessageType;exports.EventWorkState=e.EventWorkState;exports.EvevtWorkState=e.EventWorkState;exports.FontFaceFallbackBlacklistLevel=e.FontFaceFallbackBlacklistLevel;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Main_View_Id=e.Main_View_Id;exports.Plugin=e.Plugin;exports.Renderer_Business_Default_Timeout=e.Renderer_Business_Default_Timeout;exports.ShapeType=e.ShapeType;exports.Task_Time_Interval=e.Task_Time_Interval;exports.WorkerCanvasContextBlacklistLevel=e.WorkerCanvasContextBlacklistLevel;exports.WorkerMaskTextureFormatBlacklistLevel=e.WorkerMaskTextureFormatBlacklistLevel;exports.WorkerMaskTextureUploadBlacklistLevel=e.WorkerMaskTextureUploadBlacklistLevel;exports.WorkerRenderModeBlacklistLevel=e.WorkerRenderModeBlacklistLevel;
@@ -1,4 +1,4 @@
1
- import { Y as s, Z as t, _ as r, $ as l, a0 as i, a1 as p, a2 as o, a3 as n, a4 as T, C as E, s as c, b as k, a5 as y, H as _, K as u, a6 as m, a as v, a7 as g, d as S, a8 as d, a9 as C, c as M, aa as A, E as B, ab as F, e as W, e as x, ac as I, ad as L, y as P, ae as R, af as b, ag as f, T as h, ah as w, ai as D, aj as H, ak as K } from "./index-C-pO2InQ.mjs";
1
+ import { Y as s, Z as t, _ as r, $ as l, a0 as i, a1 as p, a2 as o, a3 as n, a4 as T, C as E, s as c, b as k, a5 as y, A as _, K as u, a6 as m, a as v, a7 as g, d as S, a8 as d, a9 as C, c as M, aa as A, E as B, ab as F, e as W, e as x, ac as I, ad as L, y as P, ae as R, af as b, ag as f, T as h, ah as w, ai as D, aj as K, ak as N } from "./index-DSFxl2wM.mjs";
2
2
  export {
3
3
  s as ActiveContainerType,
4
4
  t as ApplianceMultiPlugin,
@@ -36,6 +36,6 @@ export {
36
36
  h as Task_Time_Interval,
37
37
  w as WorkerCanvasContextBlacklistLevel,
38
38
  D as WorkerMaskTextureFormatBlacklistLevel,
39
- H as WorkerMaskTextureUploadBlacklistLevel,
40
- K as WorkerRenderModeBlacklistLevel
39
+ K as WorkerMaskTextureUploadBlacklistLevel,
40
+ N as WorkerRenderModeBlacklistLevel
41
41
  };
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var o=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var n=(i,e,t)=>o(i,typeof e!="symbol"?e+"":e,t);let r;function c(i){r=i}function u(){if(!r)throw new Error("[@netless/appliance-plugin/bridge] white-web-sdk runtime has not been bound yet.");return r}class h{constructor(){n(this,"control");n(this,"_listeners",{})}_inject(e){this.control=e}_onEvent(e,t){this._listeners[e]&&this._listeners[e](...t)}callbacks(e,t){this._listeners[e]=t}removeCallback(e){delete this._listeners[e]}}class g{constructor(e){n(this,"control");n(this,"worker");n(this,"publicMsgEmitter");n(this,"plugins",new Map);const{control:t,publicMsgEmitter:s}=e;this.control=t,this.publicMsgEmitter=s,this.worker=t.worker}use(e){this.plugins.set(e.kind,e),e._inject(this.control),e.onCreate()}destroy(){this.plugins.forEach(e=>{this.plugins.delete(e.kind),e.onDestroy()})}dispatchPluginEvent(e,...t){this.plugins.forEach(s=>{s._onEvent(e,t)})}}async function a(i){return c(i),Promise.resolve().then(()=>require("./index-DLzvL8jo.js")).then(e=>e.index)}exports.Plugin=h;exports.PluginManager=g;exports.getWhiteWebSdkBridgeRuntime=u;exports.loadAppliancePluginBridge=a;
1
+ "use strict";var l=Object.defineProperty;var o=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var n=(i,e,t)=>o(i,typeof e!="symbol"?e+"":e,t);let r;function c(i){r=i}function u(){if(!r)throw new Error("[@netless/appliance-plugin/bridge] white-web-sdk runtime has not been bound yet.");return r}class h{constructor(){n(this,"control");n(this,"_listeners",{})}_inject(e){this.control=e}_onEvent(e,t){this._listeners[e]&&this._listeners[e](...t)}callbacks(e,t){this._listeners[e]=t}removeCallback(e){delete this._listeners[e]}}class g{constructor(e){n(this,"control");n(this,"worker");n(this,"publicMsgEmitter");n(this,"plugins",new Map);const{control:t,publicMsgEmitter:s}=e;this.control=t,this.publicMsgEmitter=s,this.worker=t.worker}use(e){this.plugins.set(e.kind,e),e._inject(this.control),e.onCreate()}destroy(){this.plugins.forEach(e=>{this.plugins.delete(e.kind),e.onDestroy()})}dispatchPluginEvent(e,...t){this.plugins.forEach(s=>{s._onEvent(e,t)})}}async function a(i){return c(i),Promise.resolve().then(()=>require("./index-DptnZ-h8.js")).then(e=>e.index)}exports.Plugin=h;exports.PluginManager=g;exports.getWhiteWebSdkBridgeRuntime=u;exports.loadAppliancePluginBridge=a;
@@ -54,7 +54,7 @@ class g {
54
54
  }
55
55
  }
56
56
  async function d(i) {
57
- return c(i), import("./index-CrJWLjuD.mjs").then((t) => t.Z);
57
+ return c(i), import("./index-C2tUvh2a.mjs").then((t) => t.Z);
58
58
  }
59
59
  export {
60
60
  g as P,
package/dist/bridge.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bridge-GmRa7-tp.js");exports.Plugin=e.Plugin;exports.loadAppliancePluginBridge=e.loadAppliancePluginBridge;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bridge-B7BW1lpB.js");exports.Plugin=e.Plugin;exports.loadAppliancePluginBridge=e.loadAppliancePluginBridge;
package/dist/bridge.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as i, l as e } from "./bridge-D30E9dr6.mjs";
1
+ import { a as i, l as e } from "./bridge-DQud78k4.mjs";
2
2
  export {
3
3
  i as Plugin,
4
4
  e as loadAppliancePluginBridge
@@ -19,6 +19,14 @@ export type UndoTickerForceEndRoute = {
19
19
  };
20
20
  export declare function getUndoTickerForceEndRoute(source: UndoTickerSource): UndoTickerForceEndRoute;
21
21
  export type ForceDoneReason = "camera-update" | "dpr-update" | "scene-change" | "clean-scene" | "set-readonly" | "disconnect" | "destroy" | "view-destroy" | "render-runtime-fallback";
22
+ export type ForceDoneOptions = {
23
+ /**
24
+ * When false, drain only View-local render state. No Collector/storage or
25
+ * Undo persistence is allowed. This is used while rebinding a read-only
26
+ * View, where the runtime still needs local cleanup but cannot sync data.
27
+ */
28
+ syncStorage?: boolean;
29
+ };
22
30
  type ViewForceDoneAckBase = {
23
31
  viewId: string;
24
32
  scenePath: string;
@@ -109,7 +117,7 @@ export declare abstract class MasterController {
109
117
  abstract waitForLocalEventQueue(viewId?: string): Promise<void>;
110
118
  abstract finishActiveContinuousMethods(viewId: string, scenePath: string): Promise<void>;
111
119
  abstract abortActiveContinuousMethods(viewId: string, workId?: string): boolean;
112
- abstract forceDoneLocalWorks(viewId: string, scenePath: string, reason: ForceDoneReason): Promise<ViewForceDoneAck>;
120
+ abstract forceDoneLocalWorks(viewId: string, scenePath: string, reason: ForceDoneReason, options?: ForceDoneOptions): Promise<ViewForceDoneAck>;
113
121
  abstract invalidateTransactionBarrier(viewId: string): void;
114
122
  /** 更新指定view场景路径下的相机参数 */
115
123
  abstract updateCamera(viewId: string, cameraOpt: ICameraOpt): void;
@@ -515,7 +523,7 @@ export declare class MasterControlForWorker extends MasterController {
515
523
  originalEventLintener(workState: EventWorkState, point: [number, number], viewId: string): Promise<void>;
516
524
  waitForLocalEventQueue(viewId?: string): Promise<void>;
517
525
  finishActiveContinuousMethods(viewId: string, scenePath: string): Promise<void>;
518
- forceDoneLocalWorks(viewId: string, scenePath: string, reason: ForceDoneReason): Promise<ViewForceDoneAck>;
526
+ forceDoneLocalWorks(viewId: string, scenePath: string, reason: ForceDoneReason, options?: ForceDoneOptions): Promise<ViewForceDoneAck>;
519
527
  invalidateTransactionBarrier(viewId: string): void;
520
528
  private waitForCurrentTransactionBarrier;
521
529
  private executeTransactionBarrier;
@@ -7,6 +7,7 @@ import { EDataType } from "../enum";
7
7
  import { SubTopThread } from "./subTopThread";
8
8
  import { SubLocalThread } from "./subLocalThread";
9
9
  import { SubServiceThread } from "./subServiceThread";
10
+ import { ImageOptions } from "../tools/image";
10
11
  import type { MainThreadRenderMode } from "../../plugin/renderingCompatibility";
11
12
  export type ICanvasOptionType = IOffscreenCanvasOptionType;
12
13
  export interface IMainThreadInitOption {
@@ -80,6 +81,7 @@ export declare class MainThreadEngineImpl implements MainThreadEngine {
80
81
  private imageResolveMap;
81
82
  constructor(viewId: string, opt: IMainThreadInitOption);
82
83
  getCachedImages(imageSrc: string): HTMLImageElement | ImageBitmap | undefined;
84
+ getImageSourceKey(opt: ImageOptions): string | undefined;
83
85
  getCachedImagesByWorkId(workId: string): HTMLImageElement | ImageBitmap | undefined;
84
86
  deleteCachedImagesByWorkId(workId: string): void;
85
87
  clearCacheImages(): void;
@@ -93,7 +95,9 @@ export declare class MainThreadEngineImpl implements MainThreadEngine {
93
95
  updateDpr(dpr: number): void;
94
96
  on(msg: IWorkerMessage): Promise<void>;
95
97
  private getIconSize;
96
- loadImageBitMap(msg: Pick<IWorkerMessage, "toolsType" | "opt" | "workId" | "requestId">): Promise<HTMLImageElement | ImageBitmap | undefined>;
98
+ loadImageBitMap(msg: Pick<IWorkerMessage, "toolsType" | "opt" | "workId" | "requestId"> & {
99
+ timeoutMs?: number;
100
+ }): Promise<HTMLImageElement | ImageBitmap | undefined>;
97
101
  private removeNode;
98
102
  consumeFull(type: EDataType, data: IWorkerMessage): Promise<void>;
99
103
  setCameraOpt(cameraOpt: ICameraOpt): void;
@@ -22,6 +22,8 @@ export declare class SubServiceMainThreadImpl implements SubServiceThread {
22
22
  private syncUnitTime;
23
23
  private readonly animationScheduler;
24
24
  private readonly effectScheduler;
25
+ private readonly imageRecovery;
26
+ private readonly readyImages;
25
27
  constructor(opt: ISubThreadInitOption);
26
28
  loadImageBitMap(msg: Pick<IWorkerMessage, "toolsType" | "opt" | "workId" | "requestId">): Promise<HTMLImageElement | ImageBitmap | undefined>;
27
29
  destroy(): void;
@@ -54,6 +54,7 @@ export declare class ImageShape extends BaseShapeTool {
54
54
  worker: WorkThreadEngineForSimpleWorker | LocalWorkForFullWorker | WorkThreadEngineForFullWorker | WorkThreadEngineForSubWorker | SubLocalMainThreadImpl | SnapshotThreadImpl | SubServiceMainThreadImpl;
55
55
  replaceId?: string;
56
56
  requestId?: string;
57
+ imageSourceOverride?: ImageBitmap | HTMLImageElement | null;
57
58
  }): Promise<IRectType | undefined>;
58
59
  clearTmpPoints(): void;
59
60
  static getScaleType(opt: ImageOptions): EScaleType.all | EScaleType.proportional;
@@ -0,0 +1,9 @@
1
+ type ImageSource = ImageBitmap | HTMLImageElement;
2
+ /** Runs one remote image load outside the service render/commit barrier. */
3
+ export declare class ServiceImageRecovery {
4
+ private readonly jobs;
5
+ request(workId: string, src: string, load: () => Promise<ImageSource | undefined>, isCurrent: () => boolean, onReady: (image: ImageSource) => void): void;
6
+ cancel(workId: string): void;
7
+ clear(): void;
8
+ }
9
+ export {};
@@ -10,6 +10,7 @@ import { EWorkThreadType, type WorkThreadEngineForFullWorker, type WorkThreadEng
10
10
  import { EmitEventType } from "../../plugin/types";
11
11
  import { CameraUpdateTaskContext } from "../cameraTask";
12
12
  import { type RendererBusinessTaskOptions } from "../rendererBusinessTask";
13
+ import { ImageOptions } from "../tools/image";
13
14
  import type { IBitmapEraserMaskOptions } from "../types";
14
15
  import { MaxDelayBatchScheduler, WorkerAckBackpressure } from "../batchScheduler";
15
16
  export interface IWorkerInitOption {
@@ -96,6 +97,7 @@ export declare abstract class WorkThreadEngineBase {
96
97
  protected createRenderLayer(scene: Scene, opt: IWorkerInitOption): void;
97
98
  updateDpr(dpr: number): Promise<void>;
98
99
  getCachedImages(imageSrc: string): ImageBitmap | undefined;
100
+ getImageSourceKey(opt: ImageOptions): string | undefined;
99
101
  getCachedImagesByWorkId(workId: string): ImageBitmap | undefined;
100
102
  deleteCachedImagesByWorkId(workId: string, filter?: string): void;
101
103
  clearCacheImages(): void;
@@ -114,7 +116,9 @@ export declare abstract class WorkThreadEngineBase {
114
116
  setIsSafari(isSafari: boolean): void;
115
117
  on(msg: IWorkerMessage): Promise<void>;
116
118
  private getIconSize;
117
- loadImageBitMap(msg: Pick<IWorkerMessage, "toolsType" | "opt" | "workId" | "isSubWorker" | "requestId">): Promise<ImageBitmap | undefined>;
119
+ loadImageBitMap(msg: Pick<IWorkerMessage, "toolsType" | "opt" | "workId" | "isSubWorker" | "requestId"> & {
120
+ timeoutMs?: number;
121
+ }): Promise<ImageBitmap | undefined>;
118
122
  protected createLocalWork(data: IWorkerMessage): void;
119
123
  protected updateScene(scene: Scene, offscreenCanvasOpt: IOffscreenCanvasOptionType, targetLayer?: Group): void;
120
124
  protected updateLayer(layerOpt: ILayerOptionType, targetLayer?: Group): void;
@@ -39,6 +39,8 @@ export declare class ServiceWorkForFullWorker implements ServiceWork {
39
39
  post: (msg: IBatchMainMessage) => Promise<void>;
40
40
  private readonly animationScheduler;
41
41
  private readonly effectScheduler;
42
+ private readonly imageRecovery;
43
+ private readonly readyImages;
42
44
  constructor(opt: ISubWorkerInitOption);
43
45
  destroy(): void;
44
46
  clearAll(): void;
@@ -52,6 +54,7 @@ export declare class ServiceWorkForFullWorker implements ServiceWork {
52
54
  private removeNode;
53
55
  private activeWorkShape;
54
56
  private hasDiffData;
57
+ protected renderServiceImage(key: string, workShape: IServiceWorkItem): Promise<IRectType | undefined>;
55
58
  protected animationDraw(): Promise<void>;
56
59
  protected runAnimation(immediate?: boolean): void;
57
60
  protected computNextAnimationIndex(workShape: IServiceWorkItem, pointUnit: number): number;
@@ -2,7 +2,7 @@ import { EventWorkState, IActiveToolsDataType, IBatchMainMessage, IMainMessage,
2
2
  import { ISubWorkerInitOption } from "./base";
3
3
  import { LocalWorkForFullWorker } from "./fullWorkerLocal";
4
4
  import { ServiceWorkForFullWorker } from "./fullWorkerService";
5
- import { SelectorShape, BitMapEraserShape, ArrowShape, ImageShape } from "../tools";
5
+ import { SelectorShape, BitMapEraserShape, ArrowShape } from "../tools";
6
6
  import { PencilEraserShape } from "../tools/pencilEraser";
7
7
  import { TextShape } from "../tools/text";
8
8
  import { ISvgShadowShape } from "../tools/shadowSvg";
@@ -12,7 +12,7 @@ export declare class LocalWorkForSimpleWorker extends LocalWorkForFullWorker {
12
12
  constructor(opt: ISubWorkerInitOption);
13
13
  createWorkShapeNode(opt: IActiveToolsDataType & {
14
14
  workId: string;
15
- }): TextShape | ArrowShape | import("../tools").PencilShape | import("../tools/straight").StraightShape | import("../tools").EllipseShape | import("../tools").PolygonShape | import("../tools").StarShape | import("../tools").RectangleShape | import("../tools").SpeechBalloonShape | import("../tools").LaserPenShape | import("../tools").EraserShape | BitMapEraserShape | PencilEraserShape | SelectorShape | ImageShape | ISvgShadowShape | undefined;
15
+ }): TextShape | ArrowShape | import("../tools").PencilShape | import("../tools/straight").StraightShape | import("../tools").EllipseShape | import("../tools").PolygonShape | import("../tools").StarShape | import("../tools").RectangleShape | import("../tools").SpeechBalloonShape | import("../tools").LaserPenShape | import("../tools").EraserShape | BitMapEraserShape | PencilEraserShape | SelectorShape | import("../tools").ImageShape | ISvgShadowShape | undefined;
16
16
  protected drawPencil(res: IMainMessage, workId?: string): Promise<void>;
17
17
  protected drawShape(res: IMainMessage): Promise<void>;
18
18
  protected drawSelector(res: IMainMessage, workState: EventWorkState, isLockSentEventCursor?: boolean, render?: IMainMessageRenderData[]): Promise<void>;