@netless/appliance-plugin 1.0.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 (128) hide show
  1. package/README.md +138 -0
  2. package/cdn/appliance-plugin.js +1 -0
  3. package/cdn/appliance-plugin.mjs +8639 -0
  4. package/cdn/style.css +1 -0
  5. package/dist/appliance-plugin.js +1 -0
  6. package/dist/appliance-plugin.mjs +8639 -0
  7. package/dist/collector/base.d.ts +20 -0
  8. package/dist/collector/collector.d.ts +53 -0
  9. package/dist/collector/const.d.ts +3 -0
  10. package/dist/collector/enum.d.ts +13 -0
  11. package/dist/collector/eventCollector.d.ts +29 -0
  12. package/dist/collector/index.d.ts +4 -0
  13. package/dist/collector/types.d.ts +70 -0
  14. package/dist/collector/utils/color.d.ts +31 -0
  15. package/dist/collector/utils/index.d.ts +5 -0
  16. package/dist/component/textEditor/index.d.ts +2 -0
  17. package/dist/component/textEditor/manager.d.ts +120 -0
  18. package/dist/component/textEditor/types.d.ts +50 -0
  19. package/dist/component/textEditor/utils.d.ts +3 -0
  20. package/dist/component/textEditor/view.d.ts +68 -0
  21. package/dist/core/const.d.ts +1 -0
  22. package/dist/core/enum.d.ts +135 -0
  23. package/dist/core/index.d.ts +3 -0
  24. package/dist/core/mainEngine.d.ts +163 -0
  25. package/dist/core/msgEvent/activeZIndex/forMain.d.ts +12 -0
  26. package/dist/core/msgEvent/activeZIndex/forWorker.d.ts +8 -0
  27. package/dist/core/msgEvent/base.d.ts +18 -0
  28. package/dist/core/msgEvent/baseForWorker.d.ts +13 -0
  29. package/dist/core/msgEvent/copyNode/forMain.d.ts +47 -0
  30. package/dist/core/msgEvent/copyNode/forWorker.d.ts +8 -0
  31. package/dist/core/msgEvent/deleteNode/forMain.d.ts +11 -0
  32. package/dist/core/msgEvent/deleteNode/forWorker.d.ts +13 -0
  33. package/dist/core/msgEvent/forWorker.d.ts +14 -0
  34. package/dist/core/msgEvent/index.d.ts +15 -0
  35. package/dist/core/msgEvent/rotateNode/forMain.d.ts +16 -0
  36. package/dist/core/msgEvent/rotateNode/forWorker.d.ts +9 -0
  37. package/dist/core/msgEvent/scaleNode/forMain.d.ts +20 -0
  38. package/dist/core/msgEvent/scaleNode/forWorker.d.ts +9 -0
  39. package/dist/core/msgEvent/setColor/forMain.d.ts +18 -0
  40. package/dist/core/msgEvent/setColor/forWorker.d.ts +9 -0
  41. package/dist/core/msgEvent/setFont/forMain.d.ts +18 -0
  42. package/dist/core/msgEvent/setFont/forWorker.d.ts +9 -0
  43. package/dist/core/msgEvent/setLock/forMain.d.ts +12 -0
  44. package/dist/core/msgEvent/setLock/forWorker.d.ts +9 -0
  45. package/dist/core/msgEvent/setPoint/forMain.d.ts +15 -0
  46. package/dist/core/msgEvent/setPoint/forWorker.d.ts +9 -0
  47. package/dist/core/msgEvent/setShape/forMain.d.ts +18 -0
  48. package/dist/core/msgEvent/setShape/forWorker.d.ts +9 -0
  49. package/dist/core/msgEvent/setZIndex/forMain.d.ts +22 -0
  50. package/dist/core/msgEvent/setZIndex/forWorker.d.ts +9 -0
  51. package/dist/core/msgEvent/translateNode/forMain.d.ts +20 -0
  52. package/dist/core/msgEvent/translateNode/forWorker.d.ts +9 -0
  53. package/dist/core/tools/arrow.d.ts +46 -0
  54. package/dist/core/tools/base.d.ts +82 -0
  55. package/dist/core/tools/ellipse.d.ts +44 -0
  56. package/dist/core/tools/eraser.d.ts +41 -0
  57. package/dist/core/tools/image.d.ts +53 -0
  58. package/dist/core/tools/index.d.ts +13 -0
  59. package/dist/core/tools/laserPen.d.ts +42 -0
  60. package/dist/core/tools/pencil.d.ts +66 -0
  61. package/dist/core/tools/polygon.d.ts +45 -0
  62. package/dist/core/tools/rectangle.d.ts +46 -0
  63. package/dist/core/tools/selector.d.ts +83 -0
  64. package/dist/core/tools/speechBalloon.d.ts +49 -0
  65. package/dist/core/tools/star.d.ts +47 -0
  66. package/dist/core/tools/straight.d.ts +46 -0
  67. package/dist/core/tools/text.d.ts +42 -0
  68. package/dist/core/tools/utils.d.ts +39 -0
  69. package/dist/core/types.d.ts +295 -0
  70. package/dist/core/utils/bezier.d.ts +43 -0
  71. package/dist/core/utils/getSvgPathFromPoints.d.ts +10 -0
  72. package/dist/core/utils/index.d.ts +364 -0
  73. package/dist/core/utils/math.d.ts +57 -0
  74. package/dist/core/utils/primitives/Box2d.d.ts +100 -0
  75. package/dist/core/utils/primitives/Point2d.d.ts +71 -0
  76. package/dist/core/utils/primitives/Vec2d.d.ts +146 -0
  77. package/dist/core/utils/primitives/easings.d.ts +24 -0
  78. package/dist/core/utils/proxy.d.ts +21 -0
  79. package/dist/core/utils/spriteNode.d.ts +4 -0
  80. package/dist/core/worker/base.d.ts +103 -0
  81. package/dist/core/worker/fullWorker.d.ts +1 -0
  82. package/dist/core/worker/fullWorkerLocal.d.ts +46 -0
  83. package/dist/core/worker/fullWorkerService.d.ts +41 -0
  84. package/dist/core/worker/subWorker.d.ts +1 -0
  85. package/dist/core/worker/subWorkerLocal.d.ts +20 -0
  86. package/dist/core/worker/vNodeManager.d.ts +32 -0
  87. package/dist/core/worker/workerManager.d.ts +71 -0
  88. package/dist/cursors/index.d.ts +73 -0
  89. package/dist/displayer/const.d.ts +11 -0
  90. package/dist/displayer/cursor/index.d.ts +15 -0
  91. package/dist/displayer/floatBar/index.d.ts +10 -0
  92. package/dist/displayer/floatBtns/colors.d.ts +6 -0
  93. package/dist/displayer/floatBtns/del.d.ts +6 -0
  94. package/dist/displayer/floatBtns/duplicate.d.ts +5 -0
  95. package/dist/displayer/floatBtns/fontSize.d.ts +4 -0
  96. package/dist/displayer/floatBtns/fontStyle.d.ts +4 -0
  97. package/dist/displayer/floatBtns/index.d.ts +11 -0
  98. package/dist/displayer/floatBtns/layer.d.ts +3 -0
  99. package/dist/displayer/floatBtns/lock.d.ts +7 -0
  100. package/dist/displayer/floatBtns/shapeOpt.d.ts +3 -0
  101. package/dist/displayer/highlightBox/index.d.ts +5 -0
  102. package/dist/displayer/icons/index.d.ts +4 -0
  103. package/dist/displayer/resizable/index.d.ts +16 -0
  104. package/dist/displayer/rotate/index.d.ts +4 -0
  105. package/dist/displayer/types.d.ts +51 -0
  106. package/dist/hotkey/index.d.ts +51 -0
  107. package/dist/index.d.ts +1 -0
  108. package/dist/members/index.d.ts +15 -0
  109. package/dist/plugin/applianceMultiPlugin.d.ts +24 -0
  110. package/dist/plugin/applianceSinglePlugin.d.ts +28 -0
  111. package/dist/plugin/baseApplianceManager.d.ts +82 -0
  112. package/dist/plugin/baseViewContainerManager.d.ts +174 -0
  113. package/dist/plugin/displayerView.d.ts +55 -0
  114. package/dist/plugin/external.d.ts +2 -0
  115. package/dist/plugin/index.d.ts +6 -0
  116. package/dist/plugin/multi/applianceMultiManager.d.ts +14 -0
  117. package/dist/plugin/multi/containerManager.d.ts +24 -0
  118. package/dist/plugin/multi/displayer/appViewDisplayerManager.d.ts +24 -0
  119. package/dist/plugin/multi/displayer/mainViewDisplayerManager.d.ts +25 -0
  120. package/dist/plugin/single/applianceDisplayer.d.ts +16 -0
  121. package/dist/plugin/single/applianceSingleManager.d.ts +13 -0
  122. package/dist/plugin/single/containerManager.d.ts +11 -0
  123. package/dist/plugin/single/displayer/mainViewDisplayerManager.d.ts +25 -0
  124. package/dist/plugin/types.d.ts +310 -0
  125. package/dist/plugin/utils.d.ts +6 -0
  126. package/dist/style.css +1 -0
  127. package/dist/undo/index.d.ts +70 -0
  128. package/package.json +59 -0
@@ -0,0 +1,146 @@
1
+ export interface Vec2dSimple {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ /**
6
+ * A serializable model for 2D vectors.
7
+ *
8
+ * @public */
9
+ export interface Vec2dModel extends Vec2dSimple {
10
+ z: number;
11
+ }
12
+ /** @public */
13
+ export type VecLike = Vec2d | Vec2dModel | Vec2dSimple;
14
+ /** @public */
15
+ export type StrictVecLike = Vec2d | Vec2dModel;
16
+ /** @public */
17
+ export declare class Vec2d {
18
+ x: number;
19
+ y: number;
20
+ z: number;
21
+ constructor(x?: number, y?: number, z?: number);
22
+ get XY(): [number, number];
23
+ setz(z: number): this;
24
+ setXY(x?: number, y?: number): this;
25
+ set(x?: number, y?: number, z?: number): this;
26
+ setTo({ x, y, z }: StrictVecLike): this;
27
+ rot(r: number): this;
28
+ rotWith(C: VecLike, r: number): this;
29
+ clone(): Vec2d;
30
+ sub(V: VecLike): this;
31
+ subXY(x: number, y: number): this;
32
+ subScalar(n: number): this;
33
+ add(V: VecLike): this;
34
+ addXY(x: number, y: number): this;
35
+ addScalar(n: number): this;
36
+ clamp(min: number, max?: number): this;
37
+ div(t: number): this;
38
+ divV(V: VecLike): this;
39
+ mul(t: number): this;
40
+ mulV(V: VecLike): this;
41
+ abs(): this;
42
+ nudge(B: VecLike, distance: number): this;
43
+ neg(): this;
44
+ cross(V: StrictVecLike): this;
45
+ dpr(V: VecLike): number;
46
+ cpr(V: VecLike): number;
47
+ len2(): number;
48
+ len(): number;
49
+ pry(V: VecLike): number;
50
+ per(): this;
51
+ uni(): Vec2d;
52
+ tan(V: VecLike): Vec2d;
53
+ dist(V: VecLike): number;
54
+ distanceToLineSegment(A: VecLike, B: VecLike): number;
55
+ slope(B: VecLike): number;
56
+ snapToGrid(gridSize: number): this;
57
+ angle(B: VecLike): number;
58
+ toAngle(): number;
59
+ lrp(B: VecLike, t: number): Vec2d;
60
+ equals(B: VecLike, tolerance?: number): boolean;
61
+ equalsXY(x: number, y: number): boolean;
62
+ norm(): this;
63
+ toFixed(): Vec2d;
64
+ toString(): string;
65
+ toJson(): Vec2dModel;
66
+ toArray(): number[];
67
+ static Add(A: VecLike, B: VecLike): Vec2d;
68
+ static AddXY(A: VecLike, x: number, y: number): Vec2d;
69
+ static Sub(A: VecLike, B: VecLike): Vec2d;
70
+ static SubXY(A: VecLike, x: number, y: number): Vec2d;
71
+ static AddScalar(A: VecLike, n: number): Vec2d;
72
+ static SubScalar(A: VecLike, n: number): Vec2d;
73
+ static Div(A: VecLike, t: number): Vec2d;
74
+ static Mul(A: VecLike, t: number): Vec2d;
75
+ static DivV(A: VecLike, B: VecLike): Vec2d;
76
+ static MulV(A: VecLike, B: VecLike): Vec2d;
77
+ static Neg(A: VecLike): Vec2d;
78
+ static Per(A: VecLike): Vec2d;
79
+ static Dist2(A: VecLike, B: VecLike): number;
80
+ static Abs(A: VecLike): Vec2d;
81
+ static Dist(A: VecLike, B: VecLike): number;
82
+ static Dpr(A: VecLike, B: VecLike): number;
83
+ static Cross(A: StrictVecLike, V: StrictVecLike): Vec2d;
84
+ static Cpr(A: VecLike, B: VecLike): number;
85
+ static Len2(A: VecLike): number;
86
+ static Len(A: VecLike): number;
87
+ static Pry(A: VecLike, B: VecLike): number;
88
+ static Uni(A: VecLike): Vec2d;
89
+ static Tan(A: VecLike, B: VecLike): Vec2d;
90
+ static Min(A: VecLike, B: VecLike): Vec2d;
91
+ static Max(A: VecLike, B: VecLike): Vec2d;
92
+ static From(A: Vec2dModel | Vec2dSimple): Vec2d;
93
+ static FromArray(v: number[]): Vec2d;
94
+ static Rot(A: VecLike, r?: number): Vec2d;
95
+ static RotWith(A: VecLike, C: VecLike, r: number): Vec2d;
96
+ /**
97
+ * Get the nearest point on a line with a known unit vector that passes through point A
98
+ *
99
+ * ```ts
100
+ * Vec.nearestPointOnLineThroughPoint(A, u, Point)
101
+ * ```
102
+ *
103
+ * @param A - Any point on the line
104
+ * @param u - The unit vector for the line.
105
+ * @param P - A point not on the line to test.
106
+ */
107
+ static NearestPointOnLineThroughPoint(A: VecLike, u: VecLike, P: VecLike): Vec2d;
108
+ static NearestPointOnLineSegment(A: VecLike, B: VecLike, P: VecLike, clamp?: boolean): Vec2d;
109
+ static DistanceToLineThroughPoint(A: VecLike, u: VecLike, P: VecLike): number;
110
+ static DistanceToLineSegment(A: VecLike, B: VecLike, P: VecLike, clamp?: boolean): number;
111
+ static Snap(A: VecLike, step?: number): Vec2d;
112
+ static Cast(A: VecLike): Vec2d;
113
+ static Slope(A: VecLike, B: VecLike): number;
114
+ static Angle(A: VecLike, B: VecLike): number;
115
+ static Lrp(A: VecLike, B: VecLike, t: number): Vec2d;
116
+ static Med(A: VecLike, B: VecLike): Vec2d;
117
+ static Equals(A: VecLike, B: VecLike, tolerance?: number): boolean;
118
+ static EqualsXY(A: VecLike, x: number, y: number): boolean;
119
+ static EqualsXYZ(A: StrictVecLike, B: StrictVecLike, tolerance?: number): boolean;
120
+ static Clockwise(A: VecLike, B: VecLike, C: VecLike): boolean;
121
+ static Rescale(A: VecLike, n: number): Vec2d;
122
+ static ScaleWithOrigin(A: VecLike, scale: number, origin: VecLike): Vec2d;
123
+ static ScaleWOrigin(A: VecLike, scale: VecLike, origin: VecLike): Vec2d;
124
+ static ToFixed(A: StrictVecLike, n?: number): Vec2d;
125
+ static Nudge(A: VecLike, B: VecLike, distance: number): Vec2d;
126
+ static ToString(A: VecLike): string;
127
+ static ToAngle(A: VecLike): number;
128
+ static FromAngle(r: number, length?: number): Vec2d;
129
+ static ToArray(A: StrictVecLike): number[];
130
+ static ToJson(A: StrictVecLike): {
131
+ x: number;
132
+ y: number;
133
+ z: number;
134
+ };
135
+ static Average(arr: VecLike[]): Vec2d;
136
+ static Clamp(A: Vec2d, min: number, max?: number): Vec2d;
137
+ /**
138
+ * Get an array of points (with simulated pressure) between two points.
139
+ *
140
+ * @param A - The first point.
141
+ * @param B - The second point.
142
+ * @param steps - The number of points to return.
143
+ */
144
+ static PointsBetween(A: Vec2dModel, B: Vec2dModel, steps?: number): Vec2d[];
145
+ static SnapToGrid(A: VecLike, gridSize?: number): Vec2d;
146
+ }
@@ -0,0 +1,24 @@
1
+ /** @public */
2
+ export declare const EASINGS: {
3
+ readonly linear: (t: number) => number;
4
+ readonly easeInQuad: (t: number) => number;
5
+ readonly easeOutQuad: (t: number) => number;
6
+ readonly easeInOutQuad: (t: number) => number;
7
+ readonly easeInCubic: (t: number) => number;
8
+ readonly easeOutCubic: (t: number) => number;
9
+ readonly easeInOutCubic: (t: number) => number;
10
+ readonly easeInQuart: (t: number) => number;
11
+ readonly easeOutQuart: (t: number) => number;
12
+ readonly easeInOutQuart: (t: number) => number;
13
+ readonly easeInQuint: (t: number) => number;
14
+ readonly easeOutQuint: (t: number) => number;
15
+ readonly easeInOutQuint: (t: number) => number;
16
+ readonly easeInSine: (t: number) => number;
17
+ readonly easeOutSine: (t: number) => number;
18
+ readonly easeInOutSine: (t: number) => number;
19
+ readonly easeInExpo: (t: number) => number;
20
+ readonly easeOutExpo: (t: number) => number;
21
+ readonly easeInOutExpo: (t: number) => number;
22
+ };
23
+ /** @public */
24
+ export type EasingType = keyof typeof EASINGS;
@@ -0,0 +1,21 @@
1
+ import { EDataType } from "../enum";
2
+ export type InterceptorsType<T, K> = {
3
+ get(key: T): K;
4
+ set(key: T, value: K): void;
5
+ delete(key: T): void;
6
+ clear(): void;
7
+ size(): number;
8
+ };
9
+ export declare class ProxyMap<T, K> {
10
+ static proxyToRaw: WeakMap<WeakKey, any>;
11
+ static interceptors: {
12
+ entries(...arg: any[]): any;
13
+ forEach(...arg: any[]): any;
14
+ size(): any;
15
+ get(key: unknown): any;
16
+ set(key: unknown, value: unknown): any;
17
+ delete(key: unknown, _dataType?: EDataType): any;
18
+ clear(): any;
19
+ };
20
+ createProxy(map: Map<T, K>): Map<T, K>;
21
+ }
@@ -0,0 +1,4 @@
1
+ import { Group, Node, Path } from "spritejs";
2
+ import { EToolsKey } from "../enum";
3
+ export declare const isSealedGroup: (group: Group | Path | Node) => boolean;
4
+ export declare const isRenderNode: (toolsType: EToolsKey) => boolean;
@@ -0,0 +1,103 @@
1
+ import { Group, Scene } from "spritejs";
2
+ import { IActiveToolsDataType, IActiveWorkDataType, IBatchMainMessage, ICameraOpt, ILayerOptionType, IMainMessage, IOffscreenCanvasOptionType, IServiceWorkItem, IWorkerMessage, IworkId } from "../types";
3
+ import { VNodeManager } from "./vNodeManager";
4
+ import { EDataType, EToolsKey } from "../enum";
5
+ import { ShapeStateInfo } from "../tools/utils";
6
+ import { BaseShapeOptions, BaseShapeTool } from "../tools/base";
7
+ import { ServiceWorkForFullWorker } from "./fullWorkerService";
8
+ import { LocalWorkForFullWorker } from "./fullWorkerLocal";
9
+ import { LocalWorkForSubWorker } from "./subWorkerLocal";
10
+ import type { WorkThreadEngineForFullWorker, WorkThreadEngineForSubWorker } from "./workerManager";
11
+ export interface IWorkerInitOption {
12
+ dpr: number;
13
+ offscreenCanvasOpt: IOffscreenCanvasOptionType;
14
+ layerOpt: ILayerOptionType;
15
+ }
16
+ export interface ISubWorkerInitOption {
17
+ thread: WorkThreadEngineForFullWorker | WorkThreadEngineForSubWorker;
18
+ viewId: string;
19
+ vNodes: VNodeManager;
20
+ fullLayer: Group;
21
+ drawLayer?: Group;
22
+ post: (msg: IBatchMainMessage) => Promise<void>;
23
+ }
24
+ export declare abstract class WorkThreadEngineBase {
25
+ readonly viewId: string;
26
+ readonly fullLayer: Group;
27
+ readonly vNodes: VNodeManager;
28
+ readonly dpr: number;
29
+ readonly abstract drawLayer?: Group;
30
+ readonly abstract snapshotFullLayer?: Group;
31
+ protected opt: IWorkerInitOption;
32
+ protected cameraOpt?: ICameraOpt;
33
+ protected scene: Scene;
34
+ abstract localWork: LocalWorkForFullWorker | LocalWorkForSubWorker;
35
+ abstract serviceWork?: ServiceWorkForFullWorker;
36
+ protected isSafari: boolean;
37
+ protected abstract _post: (msg: IBatchMainMessage, transfer?: Transferable[]) => void;
38
+ constructor(viewId: string, opt: IWorkerInitOption);
39
+ setIsSafari(isSafari: boolean): void;
40
+ on(msg: IWorkerMessage): void;
41
+ protected updateScene(offscreenCanvasOpt: IOffscreenCanvasOptionType): void;
42
+ protected updateLayer(layerOpt: ILayerOptionType): void;
43
+ protected createScene(opt: IOffscreenCanvasOptionType): Scene;
44
+ protected createLayer(name: string, scene: Scene, opt: ILayerOptionType): Group;
45
+ protected clearAll(): void;
46
+ protected setToolsOpt(opt: IActiveToolsDataType): void;
47
+ protected setWorkOpt(opt: Partial<IActiveWorkDataType>): void;
48
+ protected destroy(): void;
49
+ abstract setCameraOpt(cameraOpt: ICameraOpt): void;
50
+ abstract getOffscreen(isFullWork: boolean): OffscreenCanvas;
51
+ abstract post(msg: IBatchMainMessage): Promise<void>;
52
+ abstract consumeDraw(type: EDataType, data: IWorkerMessage): void;
53
+ abstract consumeDrawAll(type: EDataType, data: IWorkerMessage): void;
54
+ }
55
+ export declare abstract class LocalWork {
56
+ readonly viewId: string;
57
+ readonly vNodes: VNodeManager;
58
+ readonly thread: WorkThreadEngineForFullWorker | WorkThreadEngineForSubWorker;
59
+ fullLayer: Group;
60
+ drawLayer?: Group;
61
+ readonly _post: (msg: IBatchMainMessage) => Promise<void>;
62
+ protected tmpWorkShapeNode?: BaseShapeTool;
63
+ protected tmpOpt?: IActiveToolsDataType;
64
+ workShapes: Map<IworkId, BaseShapeTool>;
65
+ workShapeState: Map<IworkId, ShapeStateInfo>;
66
+ protected effectWorkId?: number;
67
+ protected drawCount: number;
68
+ constructor(opt: ISubWorkerInitOption);
69
+ destroy(): void;
70
+ getWorkShape(workId: IworkId): BaseShapeTool | undefined;
71
+ getTmpWorkShapeNode(): BaseShapeTool | undefined;
72
+ setTmpWorkId(workId: IworkId | undefined): void;
73
+ setTmpWorkOptions(opt: BaseShapeOptions): void;
74
+ setWorkOptions(workId: IworkId, opt: BaseShapeOptions): void;
75
+ createWorkShapeNode(opt: IActiveToolsDataType & {
76
+ workId?: IworkId;
77
+ }): import("../tools").SelectorShape | import("../tools").PencilShape | import("../tools").LaserPenShape | import("../tools").ArrowShape | import("../tools/straight").StraightShape | import("../tools").EllipseShape | import("../tools").PolygonShape | import("../tools").StarShape | import("../tools").RectangleShape | import("../tools").SpeechBalloonShape | import("../tools/text").TextShape | import("../tools").EraserShape | import("../tools").ImageShape | undefined;
78
+ setToolsOpt(opt: IActiveToolsDataType): void;
79
+ clearWorkShapeNodeCache(workId: IworkId): void;
80
+ clearAllWorkShapesCache(): void;
81
+ setFullWork(data: Pick<IWorkerMessage, 'workId' | 'opt' | 'toolsType'>): BaseShapeTool | import("../tools").LaserPenShape | import("../tools").SpeechBalloonShape | import("../tools/text").TextShape | import("../tools").EraserShape | undefined;
82
+ abstract consumeDraw(data: IWorkerMessage, serviceWork?: ServiceWork): IMainMessage | undefined;
83
+ abstract consumeDrawAll(data: IWorkerMessage, serviceWork?: ServiceWork): IMainMessage | undefined;
84
+ }
85
+ export interface ServiceWork {
86
+ readonly viewId: string;
87
+ readonly vNodes: VNodeManager;
88
+ readonly fullLayer: Group;
89
+ readonly drawLayer: Group;
90
+ readonly post: (msg: IBatchMainMessage) => Promise<void>;
91
+ selectorWorkShapes: Map<string, IServiceWorkItem>;
92
+ clearAllWorkShapesCache(): void;
93
+ runSelectWork(data: IWorkerMessage): void;
94
+ consumeDraw(data: IWorkerMessage): void;
95
+ setNodeKey(workShape: IServiceWorkItem, tools: EToolsKey, opt: BaseShapeOptions): IServiceWorkItem;
96
+ runReverseSelectWork(selectIds: string[]): void;
97
+ removeWork(data: IWorkerMessage): void;
98
+ removeSelectWork(data: IWorkerMessage): void;
99
+ runSelectWork(data: IWorkerMessage): void;
100
+ consumeFull(data: IWorkerMessage): void;
101
+ consumeDraw(data: IWorkerMessage): void;
102
+ destroy(): void;
103
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ import { IWorkerMessage, IMainMessage, IRectType, EToolsKey, IBatchMainMessage, IUpdateSelectorPropsType } from "..";
2
+ import { BaseShapeOptions, SelectorShape } from "../tools";
3
+ import { ISubWorkerInitOption, LocalWork } from "./base";
4
+ import { ServiceWorkForFullWorker } from "./fullWorkerService";
5
+ import { Scene } from "spritejs";
6
+ export declare class LocalWorkForFullWorker extends LocalWork {
7
+ private combineUnitTime;
8
+ private combineTimerId?;
9
+ private effectSelectNodeData;
10
+ private batchEraserWorks;
11
+ private batchEraserRemoveNodes;
12
+ constructor(opt: ISubWorkerInitOption);
13
+ consumeDraw(data: IWorkerMessage, serviceWork: ServiceWorkForFullWorker): IMainMessage | undefined;
14
+ consumeDrawAll(data: IWorkerMessage, serviceWork: ServiceWorkForFullWorker): IMainMessage | undefined;
15
+ consumeFull(data: IWorkerMessage, scene?: Scene): Promise<void>;
16
+ removeWork(data: IWorkerMessage): Promise<void>;
17
+ removeNode(key: string): IRectType | undefined;
18
+ checkTextActive(data: IWorkerMessage): Promise<void>;
19
+ colloctEffectSelectWork(data: IWorkerMessage): Promise<IWorkerMessage | undefined>;
20
+ updateSelector(params: IUpdateSelectorPropsType & {
21
+ callback?: (props: {
22
+ res?: IMainMessage;
23
+ param: IUpdateSelectorPropsType;
24
+ postData: Pick<IBatchMainMessage, 'sp' | 'render'>;
25
+ workShapeNode: SelectorShape;
26
+ newServiceStore: Map<string, {
27
+ opt: BaseShapeOptions;
28
+ toolsType: EToolsKey;
29
+ ops?: string;
30
+ }>;
31
+ }) => void;
32
+ }): Promise<IMainMessage | undefined>;
33
+ blurSelector(data?: IWorkerMessage): Promise<void>;
34
+ reRenderSelector(willSyncService?: boolean): Promise<void> | undefined;
35
+ updateFullSelectWork(data: IWorkerMessage): void;
36
+ destroy(): void;
37
+ private drawPencilCombine;
38
+ private drawSelector;
39
+ private drawEraser;
40
+ private batchEraserCombine;
41
+ private drawPencil;
42
+ private drawPencilFull;
43
+ private updateBatchEraserCombineNode;
44
+ private runEffectSelectWork;
45
+ cursorHover(msg: IWorkerMessage): void;
46
+ }
@@ -0,0 +1,41 @@
1
+ import { Group } from "spritejs";
2
+ import { ISubWorkerInitOption, ServiceWork } from "./base";
3
+ import { VNodeManager } from "./vNodeManager";
4
+ import { IBatchMainMessage, IServiceWorkItem, IWorkerMessage } from "../types";
5
+ import { EToolsKey } from "../enum";
6
+ import { BaseShapeOptions } from "../tools";
7
+ export declare class ServiceWorkForFullWorker implements ServiceWork {
8
+ viewId: string;
9
+ vNodes: VNodeManager;
10
+ fullLayer: Group;
11
+ drawLayer: Group;
12
+ serviceDrawLayer: Group;
13
+ workShapes: Map<string, IServiceWorkItem>;
14
+ selectorWorkShapes: Map<string, IServiceWorkItem>;
15
+ protected animationId?: number | undefined;
16
+ private willRunEffectSelectorIds;
17
+ private runEffectId?;
18
+ private noAnimationRect;
19
+ post: (msg: IBatchMainMessage, transfer?: Transferable[]) => Promise<void>;
20
+ constructor(opt: ISubWorkerInitOption & {
21
+ serviceDrawLayer: Group;
22
+ });
23
+ destroy(): void;
24
+ consumeDraw(data: IWorkerMessage): void;
25
+ consumeFull(data: IWorkerMessage): void;
26
+ clearAllWorkShapesCache(): void;
27
+ runSelectWork(data: IWorkerMessage): void;
28
+ setNodeKey(workShape: IServiceWorkItem, tools: EToolsKey, opt: BaseShapeOptions): IServiceWorkItem;
29
+ runReverseSelectWork(selectIds: string[]): void;
30
+ removeWork(data: IWorkerMessage): Promise<void>;
31
+ removeSelectWork(data: IWorkerMessage): void;
32
+ private removeNode;
33
+ private activeWorkShape;
34
+ private hasDiffData;
35
+ private animationDraw;
36
+ private runAnimation;
37
+ private computNextAnimationIndex;
38
+ private runEffect;
39
+ private effectRunSelector;
40
+ private activeSelectorShape;
41
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { Group } from "spritejs";
2
+ import { IWorkerMessage, IRectType, IMainMessage } from "..";
3
+ import { BaseCollectorReducerAction } from "../../collector/types";
4
+ import { LocalWork, ISubWorkerInitOption } from "./base";
5
+ export declare class LocalWorkForSubWorker extends LocalWork {
6
+ private animationWorkRects?;
7
+ protected combineDrawTimer?: number;
8
+ private animationId?;
9
+ private closeAnimationTime;
10
+ private runLaserPenStep;
11
+ constructor(opt: ISubWorkerInitOption);
12
+ runFullWork(data: IWorkerMessage, isDrawLabel?: boolean): Promise<IRectType | undefined>;
13
+ runSelectWork(data: IWorkerMessage): undefined;
14
+ consumeDraw(data: IWorkerMessage): IMainMessage | undefined;
15
+ consumeDrawAll(data: IWorkerMessage): undefined;
16
+ updateLabels(labelGroup: Group, value: BaseCollectorReducerAction): void;
17
+ private runLaserPenAnimation;
18
+ private drawPencil;
19
+ private drawArrow;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { Group, Scene } from "spritejs";
2
+ import { BaseNodeMapItem, IRectType } from "../types";
3
+ export declare class VNodeManager {
4
+ viewId: string;
5
+ scene: Scene;
6
+ scenePath?: string;
7
+ drawLayer?: Group;
8
+ fullLayer?: Group;
9
+ curNodeMap: Map<string, BaseNodeMapItem>;
10
+ targetNodeMap: Map<string, BaseNodeMapItem>[];
11
+ constructor(viewId: string, scene: Scene);
12
+ init(fullLayer: Group, drawLayer?: Group): void;
13
+ get(name: string): BaseNodeMapItem | undefined;
14
+ hasRenderNodes(): boolean;
15
+ has(name: string): void;
16
+ setInfo(name: string, info: Partial<BaseNodeMapItem>): void;
17
+ delete(name: string): void;
18
+ clear(): void;
19
+ hasRectIntersectRange(rect: IRectType, filterLock?: boolean): boolean;
20
+ getRectIntersectRange(rect: IRectType, filterLock?: boolean): {
21
+ rectRange: IRectType | undefined;
22
+ nodeRange: Map<string, BaseNodeMapItem>;
23
+ };
24
+ getNodeRectFormShape(name: string, value: BaseNodeMapItem): IRectType | undefined;
25
+ updateNodesRect(): void;
26
+ combineIntersectRect(rect: IRectType): IRectType;
27
+ setTarget(): number;
28
+ getLastTarget(): Map<string, BaseNodeMapItem>;
29
+ deleteLastTarget(): void;
30
+ getTarget(i: number): Map<string, BaseNodeMapItem>;
31
+ deleteTarget(i: number): void;
32
+ }
@@ -0,0 +1,71 @@
1
+ import { Group } from "spritejs";
2
+ import { EDataType } from "../enum";
3
+ import { IBatchMainMessage, ICameraOpt, ILayerOptionType, IWorkerMessage } from "../types";
4
+ import { IWorkerInitOption, WorkThreadEngineBase } from "./base";
5
+ import { LocalWorkForFullWorker } from "./fullWorkerLocal";
6
+ import { ServiceWorkForFullWorker } from "./fullWorkerService";
7
+ import { LocalWorkForSubWorker } from "./subWorkerLocal";
8
+ export declare enum EWorkThreadType {
9
+ Full = "full",
10
+ Sub = "sub"
11
+ }
12
+ export declare class WorkerManager<T extends WorkThreadEngineBase> {
13
+ _self: Worker;
14
+ protected type: EWorkThreadType;
15
+ protected workThreadMap: Map<string, T>;
16
+ constructor(worker: Worker, type: EWorkThreadType);
17
+ private init;
18
+ private register;
19
+ post(msg: IBatchMainMessage, transfer?: Transferable[]): void;
20
+ }
21
+ /** full worker */
22
+ export declare class WorkThreadEngineForFullWorker extends WorkThreadEngineBase {
23
+ serviceDrawLayer: Group;
24
+ drawLayer: Group;
25
+ snapshotFullLayer: undefined;
26
+ private methodBuilder;
27
+ localWork: LocalWorkForFullWorker;
28
+ serviceWork: ServiceWorkForFullWorker;
29
+ protected _post: (msg: IBatchMainMessage, transfer?: Transferable[] | undefined) => void;
30
+ constructor(viewId: string, opt: IWorkerInitOption, _post: (msg: IBatchMainMessage, transfer?: Transferable[]) => void);
31
+ post(msg: IBatchMainMessage, transfer?: Transferable[]): Promise<void>;
32
+ on(msg: IWorkerMessage): void;
33
+ removeNode(data: IWorkerMessage): Promise<void>;
34
+ checkTextActive(data: IWorkerMessage): void;
35
+ clearAll(): void;
36
+ protected updateLayer(layerOpt: ILayerOptionType): void;
37
+ setCameraOpt(cameraOpt: ICameraOpt): void;
38
+ getLayer(isFullWork?: boolean, workerType?: EDataType.Local | EDataType.Service): Group;
39
+ getOffscreen(isFullWork: boolean, workerType?: EDataType.Local | EDataType.Service): OffscreenCanvas;
40
+ consumeFull(type: EDataType, data: IWorkerMessage): Promise<void>;
41
+ consumeDraw(type: EDataType, data: IWorkerMessage): void;
42
+ consumeDrawAll(type: EDataType, data: IWorkerMessage): void;
43
+ private updateCamera;
44
+ private getRectImageBitmap;
45
+ private safariFixRect;
46
+ private getSceneRect;
47
+ private checkRightRectBoundingBox;
48
+ private cursorHover;
49
+ }
50
+ /** sub worker */
51
+ export declare class WorkThreadEngineForSubWorker extends WorkThreadEngineBase {
52
+ protected _post: (msg: IBatchMainMessage, transfer?: Transferable[] | undefined) => void;
53
+ drawLayer: undefined;
54
+ snapshotFullLayer: Group | undefined;
55
+ serviceWork: undefined;
56
+ localWork: LocalWorkForSubWorker;
57
+ constructor(viewId: string, opt: IWorkerInitOption, _post: (msg: IBatchMainMessage, transfer?: Transferable[]) => void);
58
+ post(msg: IBatchMainMessage, transfer?: Transferable[]): Promise<void>;
59
+ on(msg: IWorkerMessage): void;
60
+ getOffscreen(isSnapshot: boolean): OffscreenCanvas;
61
+ consumeDraw(type: EDataType, data: IWorkerMessage): void;
62
+ consumeDrawAll(_type: EDataType, data: IWorkerMessage): void;
63
+ private getRectImageBitmap;
64
+ private safariFixRect;
65
+ private updateCamera;
66
+ setCameraOpt(cameraOpt: ICameraOpt, layer?: Group): void;
67
+ private getSnapshot;
68
+ private willRenderSpecialLabel;
69
+ private getSnapshotRender;
70
+ private getBoundingRect;
71
+ }
@@ -0,0 +1,73 @@
1
+ import { EvevtWorkState, IMainMessage } from "../core";
2
+ import { EventCollector } from "../collector/eventCollector";
3
+ import { BaseSubWorkModuleProps, RoomMember } from "../plugin/types";
4
+ import { RoomMemberManager } from "../members";
5
+ import type { BaseApplianceManager } from "../plugin/baseApplianceManager";
6
+ import EventEmitter2 from "eventemitter2";
7
+ export declare enum CursorColloctSource {
8
+ Event = 0,
9
+ Storage = 1
10
+ }
11
+ export type IServiceWorkItem = {
12
+ freeze?: boolean;
13
+ willHid?: boolean;
14
+ animationIndex: number;
15
+ animationWorkData: Array<number | undefined>;
16
+ workState?: EvevtWorkState;
17
+ };
18
+ export type CursorInfo = {
19
+ x?: number;
20
+ y?: number;
21
+ roomMember?: RoomMember;
22
+ };
23
+ export type CursorInfoMapItem = CursorInfo & {
24
+ timestamp: number;
25
+ };
26
+ export declare abstract class CursorManager {
27
+ /** 内部消息管理器 */
28
+ abstract readonly internalMsgEmitter: EventEmitter2;
29
+ /** 插件管理器 */
30
+ abstract readonly control: BaseApplianceManager;
31
+ /** 事件收集器 */
32
+ abstract eventCollector?: EventCollector;
33
+ /** 房间成员管理器 */
34
+ abstract readonly roomMember: RoomMemberManager;
35
+ /** 激活事件收集器 */
36
+ abstract activeCollector(): void;
37
+ /** 同步事件 */
38
+ abstract sendEvent(point: [number | undefined, number | undefined], viewId: string): void;
39
+ /** 收集服务端cursor事件 */
40
+ abstract collectServiceCursor(data: IMainMessage): void;
41
+ /** 同步服务端失效 cursor事件 */
42
+ abstract unabled(): void;
43
+ /** 销毁cursor管理器 */
44
+ abstract destroy(): void;
45
+ /** 激活获焦的focusViewId */
46
+ abstract onFocusViewChange(): void;
47
+ }
48
+ export declare class CursorManagerImpl implements CursorManager {
49
+ readonly expirationTime = 5000;
50
+ readonly internalMsgEmitter: EventEmitter2;
51
+ readonly control: BaseApplianceManager;
52
+ eventCollector?: EventCollector;
53
+ readonly roomMember: RoomMemberManager;
54
+ private animationId?;
55
+ private removeTimerId?;
56
+ private asyncEndInfo?;
57
+ private animationPointWorkers;
58
+ private animationDrawWorkers;
59
+ private cursorInfoMap;
60
+ constructor(props: BaseSubWorkModuleProps);
61
+ activeCollector(): void;
62
+ onFocusViewChange(): void;
63
+ private activePointWorkShape;
64
+ private getKey;
65
+ private getUidAndviewId;
66
+ private animationCursor;
67
+ private activeDrawWorkShape;
68
+ private runAnimation;
69
+ sendEvent(point: [number | undefined, number | undefined], viewId: string): void;
70
+ collectServiceCursor(data: IMainMessage): void;
71
+ unabled(): void;
72
+ destroy(): void;
73
+ }
@@ -0,0 +1,11 @@
1
+ import { SpeechBalloonPlacement } from "../plugin/types";
2
+ export declare type Margin = {
3
+ readonly top: number;
4
+ readonly bottom: number;
5
+ readonly left: number;
6
+ readonly right: number;
7
+ };
8
+ export declare const BarPadding: Margin;
9
+ export declare const BarMargin: Margin;
10
+ export declare const FontSizeList: readonly number[];
11
+ export declare const SpeechBalloonPlacements: SpeechBalloonPlacement[];
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { type RoomMember, type ApplianceViewManagerLike } from "../../plugin/types";
3
+ import "./index.less";
4
+ export declare const CursorManagerComponent: (props: {
5
+ className: string;
6
+ info: {
7
+ x?: number;
8
+ y?: number;
9
+ roomMember?: RoomMember;
10
+ };
11
+ }) => React.JSX.Element;
12
+ export declare const CursorManager: (props: {
13
+ className: string;
14
+ manager: ApplianceViewManagerLike;
15
+ }) => React.JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { TextEditorInfo } from "../../component/textEditor";
3
+ export declare const FloatBar: React.MemoExoticComponent<React.ForwardRefExoticComponent<{
4
+ className: string;
5
+ editors?: Map<string, TextEditorInfo> | undefined;
6
+ activeTextId?: string | undefined;
7
+ } & React.RefAttributes<HTMLCanvasElement>>>;
8
+ export declare const FloatBarBtn: (props: {
9
+ className: string;
10
+ }) => React.JSX.Element | null;
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { SubButProps, TextButProps } from "../types";
3
+ export declare const StrokeColors: (props: SubButProps) => React.JSX.Element;
4
+ export declare const FillColors: (props: SubButProps) => React.JSX.Element;
5
+ export declare const TextColors: (props: TextButProps) => React.JSX.Element;
6
+ export declare const TextBgColors: (props: TextButProps) => React.JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { ApplianceViewManagerLike } from "../../plugin/types";
3
+ export declare const Del: (props: {
4
+ workIds?: string[];
5
+ maranger: ApplianceViewManagerLike;
6
+ }) => React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ export declare const Duplicate: (props: {
3
+ workIds?: string[];
4
+ viewId: string;
5
+ }) => React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TextButProps } from "../types";
3
+ export type FontSizeProps = TextButProps;
4
+ export declare const FontSizeBtn: (props: FontSizeProps) => React.JSX.Element;