@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,20 @@
1
+ import type { AppliancePluginLike } from "../plugin/types";
2
+ import { IworkId } from "../core";
3
+ export declare abstract class BaseCollector<T> {
4
+ plugin: AppliancePluginLike;
5
+ uid: string;
6
+ abstract serviceStorage: T;
7
+ abstract storage: T;
8
+ protected abstract namespace: string;
9
+ constructor(plugin: AppliancePluginLike);
10
+ getNamespaceData(): T;
11
+ getUidFromKey(key: string): string;
12
+ isLocalId(key: string): boolean;
13
+ getLocalId(key: string): string;
14
+ isSelector(key: string): boolean;
15
+ abstract transformKey(key: IworkId): string;
16
+ abstract isOwn(key: IworkId): boolean;
17
+ abstract dispatch(action: any): void;
18
+ abstract addStorageStateListener(callBack: (diff: any) => void): void;
19
+ abstract removeStorageStateListener(): void;
20
+ }
@@ -0,0 +1,53 @@
1
+ import { BaseCollectorReducerAction, Diff, ISerializableStorageData, ISerializableStorageViewData } from "./types";
2
+ import { BaseCollector } from "./base";
3
+ import type { AppliancePluginLike } from "../plugin/types";
4
+ /**
5
+ * 服务端事件/状态同步收集器
6
+ */
7
+ export declare class Collector extends BaseCollector<ISerializableStorageViewData> {
8
+ protected namespace: string;
9
+ static namespace: string;
10
+ static syncInterval: number;
11
+ serviceStorage: ISerializableStorageViewData;
12
+ storage: ISerializableStorageViewData;
13
+ private stateDisposer;
14
+ private asyncClockState;
15
+ constructor(plugin: AppliancePluginLike, syncInterval?: number);
16
+ getViewIdBySecenPath(scenePath: string): string | undefined;
17
+ getScenePathData(scenePath: string): ISerializableStorageData | undefined;
18
+ getStorageData(viewId: string, scenePath: string): ISerializableStorageData | undefined;
19
+ hasSelector(viewId: string, scenePath: string): boolean;
20
+ addStorageStateListener(callBack: (diff: Diff<ISerializableStorageData>) => void): void;
21
+ removeStorageStateListener(): void;
22
+ private diffFun;
23
+ private diffFunByscenePath;
24
+ private diffFunByKeys;
25
+ transformKey(workId: number | string): string;
26
+ isOwn(key: string): boolean;
27
+ dispatch(action: BaseCollectorReducerAction): void;
28
+ private checkOtherSelector;
29
+ setState(state: ISerializableStorageData, options: {
30
+ viewId: string;
31
+ scenePath: string;
32
+ isSync?: boolean;
33
+ isAfterUpdate?: boolean;
34
+ }): void;
35
+ updateValue(key: string, value: any, options: {
36
+ viewId: string;
37
+ scenePath: string;
38
+ isSync?: boolean;
39
+ isAfterUpdate?: boolean;
40
+ }): void;
41
+ private runSyncService;
42
+ private syncSerivice;
43
+ private syncViewData;
44
+ private syncScenePathData;
45
+ private syncUpdataView;
46
+ private syncStorageView;
47
+ private syncUpdataScenePath;
48
+ private syncStorageScenePath;
49
+ private syncUpdataKey;
50
+ private syncStorageKey;
51
+ keyTransformWorkId(key: string): string;
52
+ destroy(): void;
53
+ }
@@ -0,0 +1,3 @@
1
+ export declare const Storage_Splitter = "++";
2
+ export declare const Storage_Selector_key = "selector";
3
+ export declare const Storage_ViewId_ALL = "all";
@@ -0,0 +1,13 @@
1
+ /** 同步事件类型 */
2
+ export declare enum EEventDataKey {
3
+ GetPoint = "getPoint"
4
+ }
5
+ /** 同步类型 */
6
+ export declare enum SyncedType {
7
+ State = 0,
8
+ Event = 1
9
+ }
10
+ export declare enum EThreadType {
11
+ Main = 0,
12
+ Worker = 1
13
+ }
@@ -0,0 +1,29 @@
1
+ import { BaseEventCollectorReducerAction, ISerializableEventData } from "./types";
2
+ import { BaseCollector } from "./base";
3
+ import type { AppliancePluginLike } from "../plugin/types";
4
+ /**
5
+ * 服务端事件/状态同步收集器
6
+ */
7
+ export declare class EventCollector extends BaseCollector<ISerializableEventData> {
8
+ static syncInterval: number;
9
+ static namespace: string;
10
+ serviceStorage: ISerializableEventData;
11
+ storage: ISerializableEventData;
12
+ private stateDisposer;
13
+ private asyncClockTimer?;
14
+ protected namespace: string;
15
+ constructor(plugin: AppliancePluginLike, syncInterval?: number);
16
+ addStorageStateListener(callBack: (event: Map<string, Array<BaseEventCollectorReducerAction | undefined>>) => void): void;
17
+ private getDiffMap;
18
+ removeStorageStateListener(): void;
19
+ transformKey(workId: number | string): string;
20
+ isOwn(key: string): boolean;
21
+ dispatch(action: BaseEventCollectorReducerAction): void;
22
+ pushValue(uid: string, value: BaseEventCollectorReducerAction | undefined, options?: {
23
+ isSync?: boolean;
24
+ }): void;
25
+ clearValue(uid: string): void;
26
+ private runSyncService;
27
+ private syncSerivice;
28
+ destroy(): void;
29
+ }
@@ -0,0 +1,4 @@
1
+ export * from './const';
2
+ export * from './base';
3
+ export * from './collector';
4
+ export * from './types';
@@ -0,0 +1,70 @@
1
+ import { EPostMessageType, EToolsKey, EventMessageType } from "../core/enum";
2
+ import { ShapeOptions } from "../core/tools";
3
+ import { IUpdateNodeOpt, IworkId } from "../core/types";
4
+ import { EmitEventType } from "../plugin/types";
5
+ import { EEventDataKey } from "./enum";
6
+ export declare type DiffOne<T> = {
7
+ oldValue: T;
8
+ newValue: T;
9
+ viewId: string;
10
+ scenePath: string;
11
+ };
12
+ export declare type Diff<T> = {
13
+ [K in keyof T]?: DiffOne<T[K]>;
14
+ };
15
+ export type SyncEventData = {
16
+ [key in EEventDataKey]: {
17
+ workId?: number;
18
+ key: string;
19
+ };
20
+ };
21
+ export type IStorageValueItem = Partial<INormalPushMsg>;
22
+ export interface INormalPushMsg {
23
+ workId?: IworkId;
24
+ toolsType?: EToolsKey;
25
+ opt?: ShapeOptions;
26
+ uid?: string;
27
+ taskId?: number;
28
+ namespace?: string;
29
+ op?: number[];
30
+ ops?: string;
31
+ index?: number;
32
+ w?: number;
33
+ h?: number;
34
+ type?: EPostMessageType;
35
+ removeIds?: Array<string>;
36
+ updateNodeOpt?: IUpdateNodeOpt;
37
+ selectIds?: Array<string>;
38
+ emitEventType?: EmitEventType;
39
+ /** 是否垂直同步 */
40
+ isSync?: boolean;
41
+ undoTickerId?: number;
42
+ viewId?: string;
43
+ scenePath?: string;
44
+ isActive?: string;
45
+ }
46
+ export interface INormalStorageData {
47
+ [key: string]: IStorageValueItem | undefined;
48
+ }
49
+ export type BaseCollectorReducerAction = INormalPushMsg & Pick<INormalPushMsg, 'type'>;
50
+ export interface ISerializableStorageData {
51
+ [key: string]: BaseCollectorReducerAction | undefined;
52
+ }
53
+ export interface BaseEventCollectorReducerAction {
54
+ type?: EventMessageType;
55
+ uid?: string;
56
+ memberId?: number;
57
+ op?: Array<number | undefined>;
58
+ isHide?: boolean;
59
+ isSync?: boolean;
60
+ viewId?: string;
61
+ }
62
+ export interface ISerializableEventData {
63
+ [key: string]: Array<BaseEventCollectorReducerAction | undefined> | undefined;
64
+ }
65
+ export interface ISerializableStorageViewData {
66
+ [key: string]: ISerializableStoragescenePathData;
67
+ }
68
+ export interface ISerializableStoragescenePathData {
69
+ [key: string]: ISerializableStorageData;
70
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * RGB 颜色值转换为 HSL.
3
+ * 转换公式参考自 http://en.wikipedia.org/wiki/HSL_color_space.
4
+ * r, g, 和 b 需要在 [0, 255] 范围内
5
+ * 返回的 h, s, 和 l 在 [0, 1] 之间
6
+ *
7
+ * @param Number r 红色色值
8
+ * @param Number g 绿色色值
9
+ * @param Number b 蓝色色值
10
+ * @return Array HSL各值数组
11
+ */
12
+ export declare function rgbToHsl(r: number, g: number, b: number): number[];
13
+ /**
14
+ * HSL颜色值转换为RGB.
15
+ * 换算公式改编自 http://en.wikipedia.org/wiki/HSL_color_space.
16
+ * h, s, 和 l 设定在 [0, 1] 之间
17
+ * 返回的 r, g, 和 b 在 [0, 255]之间
18
+ *
19
+ * @param Number h 色相
20
+ * @param Number s 饱和度
21
+ * @param Number l 亮度
22
+ * @return Array RGB色值数值
23
+ */
24
+ export declare function hslToRgb(h: number, s: number, l: number): number[];
25
+ export declare function rgbToHex(r: number, g: number, b: number): string;
26
+ /** 十六进制转rgba */
27
+ export declare function hexToRgba(hex: string, opacity?: number): string;
28
+ export declare function rgbToRgba(r: number, g: number, b: number, opacity?: number): string;
29
+ export declare function colorRGBA2Hex(color: string): [string, number];
30
+ export declare function colorRGBA2Array(color: string): [number, number, number, number];
31
+ export declare function isTransparent(color: string): boolean;
@@ -0,0 +1,5 @@
1
+ export declare function transformToNormalData(str: string): any;
2
+ export declare function transformToSerializableData(data: unknown): string;
3
+ export declare function normalDataToUint8Array(data: unknown): Uint8Array;
4
+ export declare function uint8ArrayToNormalData(data: Uint8Array): unknown;
5
+ export declare const plainObjectKeys: <T>(o: T) => Array<Extract<keyof T, string>>;
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './manager';
@@ -0,0 +1,120 @@
1
+ import { TextEditorInfo, TextOptions } from "./types";
2
+ import { BaseSubWorkModuleProps } from "../../plugin/types";
3
+ import { ICameraOpt, IWorkerMessage } from "../../core";
4
+ import type EventEmitter2 from "eventemitter2";
5
+ import { BaseApplianceManager } from "../../plugin/baseApplianceManager";
6
+ export interface TextEditorManager {
7
+ readonly internalMsgEmitter: EventEmitter2;
8
+ readonly control: BaseApplianceManager;
9
+ editors: Map<string, TextEditorInfo>;
10
+ activeId?: string;
11
+ undoTickerId?: number;
12
+ /** 通过view组建中更新文本 */
13
+ updateForViewEdited(activeId?: string, info?: TextEditorInfo): void;
14
+ /** 过滤文本编辑器 */
15
+ filterEditor(viewId: string): Map<string, TextEditorInfo>;
16
+ /** 通过点计算获焦的文本 */
17
+ computeTextActive(point: [number, number], viewId: string): void;
18
+ /** 校验是否删除空文本或事失焦 */
19
+ checkEmptyTextBlur(): void;
20
+ /** 激活文本编辑组件 */
21
+ active(workId: string): void;
22
+ /** 不激活文本编辑组件 */
23
+ unActive(): void;
24
+ /** 创建文本来源于main */
25
+ createTextForMasterController(params: TextEditorInfo & {
26
+ workId: string;
27
+ x: number;
28
+ y: number;
29
+ opt: TextOptions;
30
+ viewId: string;
31
+ }, undoTickerId?: number): void;
32
+ /** 修改文本来源于main */
33
+ updateTextForMasterController(params: Partial<TextEditorInfo> & {
34
+ workId: string;
35
+ viewId: string;
36
+ canWorker: boolean;
37
+ canSync: boolean;
38
+ }, undoTickerId?: number): void;
39
+ /** 修改文本来并等到新数据 */
40
+ updateTextControllerWithEffectAsync(params: Partial<TextEditorInfo> & {
41
+ workId: string;
42
+ viewId: string;
43
+ canWorker: boolean;
44
+ canSync: boolean;
45
+ }, undoTickerId?: number): Promise<TextEditorInfo | undefined>;
46
+ /** 修改文本来源于worker */
47
+ updateTextForWorker(params: Partial<TextEditorInfo> & {
48
+ workId: string;
49
+ viewId: string;
50
+ canWorker: boolean;
51
+ canSync: boolean;
52
+ }, undoTickerId?: number): void;
53
+ /** 编辑文本 */
54
+ /** 获取组建信息 */
55
+ get(workId: string): TextEditorInfo | undefined;
56
+ /** 删除组件 */
57
+ delete(workId: string, canSync?: boolean, canWorker?: boolean): void;
58
+ /** 批量删除组件 */
59
+ deleteBatch(workIds: string[], canSync?: boolean, canWorker?: boolean): void;
60
+ /** 清空指定view下文本 */
61
+ clear(viewId: string, justLocal?: boolean): void;
62
+ /** 销毁 */
63
+ destory(): void;
64
+ /** 监听服务端数据变动 */
65
+ onServiceDerive(data: IWorkerMessage): void;
66
+ /** 监听camera变化 */
67
+ onCameraChange(cameraOpt: ICameraOpt, viewId: string): void;
68
+ }
69
+ export declare class TextEditorManagerImpl implements TextEditorManager {
70
+ readonly internalMsgEmitter: EventEmitter2;
71
+ readonly control: BaseApplianceManager;
72
+ editors: Map<string, TextEditorInfo>;
73
+ activeId?: string;
74
+ undoTickerId?: number;
75
+ private proxyMap;
76
+ private taskqueue;
77
+ constructor(props: BaseSubWorkModuleProps);
78
+ get collector(): import("../../collector").Collector | undefined;
79
+ filterEditor(viewId: string): Map<string, TextEditorInfo>;
80
+ get interceptors(): {
81
+ set: (workId: string, info: TextEditorInfo) => true | undefined;
82
+ delete: (workId: string) => true | undefined;
83
+ clear(): boolean;
84
+ };
85
+ computeTextActive(point: [number, number], viewId: string): void;
86
+ checkEmptyTextBlur(): void;
87
+ onCameraChange(cameraOpt: ICameraOpt, viewId: string): void;
88
+ onServiceDerive(data: IWorkerMessage): void;
89
+ updateForViewEdited(activeId: string, info: TextEditorInfo): void;
90
+ active(workId: string): void;
91
+ unActive(): void;
92
+ createTextForMasterController(params: TextEditorInfo & {
93
+ workId: string;
94
+ viewId: string;
95
+ }, undoTickerId?: number): void;
96
+ updateTextForMasterController(params: Partial<TextEditorInfo> & {
97
+ workId: string;
98
+ viewId: string;
99
+ canWorker: boolean;
100
+ canSync: boolean;
101
+ }, undoTickerId?: number): void;
102
+ updateTextControllerWithEffectAsync(params: Partial<TextEditorInfo> & {
103
+ workId: string;
104
+ viewId: string;
105
+ canWorker: boolean;
106
+ canSync: boolean;
107
+ }, undoTickerId?: number): Promise<TextEditorInfo | undefined>;
108
+ updateTextForWorker(params: TextEditorInfo & {
109
+ workId: string;
110
+ viewId: string;
111
+ canWorker: boolean;
112
+ canSync: boolean;
113
+ }, undoTickerId?: number): void;
114
+ get(workId: string): TextEditorInfo | undefined;
115
+ delete(workId: string, canSync?: boolean, canWorker?: boolean): void;
116
+ deleteBatch(workIds: string[], canSync?: boolean | undefined, canWorker?: boolean | undefined): void;
117
+ clear(viewId: string, justLocal?: boolean): void;
118
+ destory(): void;
119
+ private getMaxZIndex;
120
+ }
@@ -0,0 +1,50 @@
1
+ import { EDataType, EvevtWorkState } from "../../core";
2
+ import { BaseShapeOptions } from "../../core/tools";
3
+ export declare enum ETextEditorType {
4
+ Text = 1,
5
+ Shape = 2
6
+ }
7
+ export type VerticalAlignType = "top" | "middle" | "bottom";
8
+ export type TextAlignType = "left" | "center" | "right";
9
+ export type FontWeightType = 'bold' | 'normal';
10
+ export type FontStyleType = 'italic' | 'normal';
11
+ export interface TextOptions extends BaseShapeOptions {
12
+ fontColor: string;
13
+ fontSize: number;
14
+ text: string;
15
+ textAlign: TextAlignType;
16
+ verticalAlign: VerticalAlignType;
17
+ lineHeight?: number;
18
+ fontFamily?: string;
19
+ bold?: FontWeightType;
20
+ italic?: FontStyleType;
21
+ fontBgColor?: string;
22
+ /** 是否显示下划线 */
23
+ underline?: boolean;
24
+ /** 是否显示删除线 */
25
+ lineThrough?: boolean;
26
+ boxPoint?: [number, number];
27
+ boxSize?: [number, number];
28
+ /** 状态 */
29
+ workState?: EvevtWorkState;
30
+ /** 正在编辑的用户 */
31
+ uid?: string;
32
+ }
33
+ export type TextEditorInfo = {
34
+ x: number;
35
+ y: number;
36
+ opt: TextOptions;
37
+ type: ETextEditorType;
38
+ viewId: string;
39
+ scenePath: string;
40
+ w?: number;
41
+ h?: number;
42
+ scale?: number;
43
+ isSelect?: boolean;
44
+ isActive?: boolean;
45
+ canWorker?: boolean;
46
+ canSync?: boolean;
47
+ dataType?: EDataType;
48
+ translate?: [number, number];
49
+ justLocal?: boolean;
50
+ };
@@ -0,0 +1,3 @@
1
+ import { EToolsKey } from "../../core";
2
+ import { ETextEditorType } from "./types";
3
+ export declare function getTextEditorType(toolsKey: EToolsKey): ETextEditorType | undefined;
@@ -0,0 +1,68 @@
1
+ import React, { FocusEventHandler, KeyboardEventHandler } from "react";
2
+ import { TextEditorInfo, TextOptions } from "./types";
3
+ import { ApplianceViewManagerLike } from "../../plugin/types";
4
+ export interface TextSelectorManagerProps {
5
+ selectIds: string[];
6
+ className?: string;
7
+ editors?: Map<string, TextEditorInfo>;
8
+ activeTextId?: string;
9
+ position?: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ textRef?: React.RefObject<HTMLDivElement>;
14
+ manager: ApplianceViewManagerLike;
15
+ showFloatBtns?: boolean;
16
+ }
17
+ export interface TextViewProps {
18
+ workId: string;
19
+ data: TextEditorInfo;
20
+ isSelect?: boolean;
21
+ isActive?: boolean;
22
+ manager: ApplianceViewManagerLike;
23
+ }
24
+ export interface TextSelectorViewProps extends TextViewProps {
25
+ position?: {
26
+ x: number;
27
+ y: number;
28
+ };
29
+ selectIds?: string[];
30
+ updateOptInfo: (param: {
31
+ activeTextId: string;
32
+ update: Partial<TextOptions>;
33
+ syncData?: Pick<TextEditorInfo, 'canSync' | 'canWorker'>;
34
+ }) => void;
35
+ }
36
+ export interface TextEditorProps extends TextViewProps {
37
+ showFloatBtns: boolean;
38
+ handleKeyUp: KeyboardEventHandler<HTMLDivElement>;
39
+ handleFocus: FocusEventHandler<HTMLDivElement>;
40
+ updateOptInfo: (param: {
41
+ activeTextId: string;
42
+ update: Partial<TextOptions>;
43
+ syncData?: Pick<TextEditorInfo, 'canSync' | 'canWorker'>;
44
+ }) => void;
45
+ }
46
+ export declare const TextView: (props: TextViewProps) => React.JSX.Element;
47
+ export declare const TextSelectorView: React.MemoExoticComponent<(props: TextSelectorViewProps) => React.JSX.Element>;
48
+ export declare const TextEditor: (props: TextEditorProps) => React.JSX.Element;
49
+ export declare class TextViewInSelector extends React.Component<TextSelectorManagerProps, {
50
+ hasEditor: boolean;
51
+ }> {
52
+ constructor(props: TextSelectorManagerProps);
53
+ getInnerText(target: HTMLDivElement): string[];
54
+ updateOptInfo(param: {
55
+ activeTextId: string;
56
+ update: Partial<TextOptions>;
57
+ syncData?: Pick<TextEditorInfo, 'canSync' | 'canWorker'>;
58
+ }): void;
59
+ get editorUI(): JSX.Element[] | null;
60
+ render(): React.JSX.Element;
61
+ }
62
+ export declare class TextEditorContainer extends TextViewInSelector {
63
+ constructor(props: TextSelectorManagerProps);
64
+ handleKeyUp(e: any): void;
65
+ handleFocus(e: any): void;
66
+ get editorUI(): JSX.Element[] | null;
67
+ render(): React.JSX.Element;
68
+ }
@@ -0,0 +1 @@
1
+ export declare const Cursor_Hover_Id = "cursorhover";
@@ -0,0 +1,135 @@
1
+ export declare enum EToolsKey {
2
+ /** 铅笔绘制工具 */
3
+ Pencil = 1,
4
+ /** 橡皮擦工具 */
5
+ Eraser = 2,
6
+ /** 选择工具 */
7
+ Selector = 3,
8
+ /** 点击互动工具 */
9
+ Clicker = 4,
10
+ /** 箭头工具 */
11
+ Arrow = 5,
12
+ /** 抓手工具 */
13
+ Hand = 6,
14
+ /** 激光铅笔绘制工具 */
15
+ LaserPen = 7,
16
+ /** 文字工具 */
17
+ Text = 8,
18
+ /** 直线工具 */
19
+ Straight = 9,
20
+ /** 矩形工具 */
21
+ Rectangle = 10,
22
+ /** 圆形工具 */
23
+ Ellipse = 11,
24
+ /** 星形工具 */
25
+ Star = 12,
26
+ /** 三角形工具 */
27
+ Triangle = 13,
28
+ /** 菱形工具 */
29
+ Rhombus = 14,
30
+ /** 多边形工具 */
31
+ Polygon = 15,
32
+ /** 聊天泡泡框 */
33
+ SpeechBalloon = 16,
34
+ /** 图片 */
35
+ Image = 17
36
+ }
37
+ export declare enum EDataType {
38
+ /** 本地数据 */
39
+ Local = 1,
40
+ /** 服务端数据 */
41
+ Service = 2,
42
+ /** 来源于worker */
43
+ Worker = 3
44
+ }
45
+ export declare enum EvevtWorkState {
46
+ Pending = 0,
47
+ Start = 1,
48
+ Doing = 2,
49
+ Done = 3,
50
+ /** 冻结,不能本地输入事件,camera、clear等任务还是可以执行 */
51
+ Freeze = 4,
52
+ /** 只读状态 */
53
+ Unwritable = 5
54
+ }
55
+ /**
56
+ * 消息变化顺序: init => Scene事件 => work事件 => node事件
57
+ * 本地数据: Init、Transform、UpdateTools
58
+ * 服务端数据:
59
+ */
60
+ export declare enum EPostMessageType {
61
+ /** 什么也不需要做 */
62
+ None = 0,
63
+ /** 初始化,仅用于本地 */
64
+ Init = 1,
65
+ /** 本地视口切换,仅用于本地 */
66
+ UpdateCamera = 2,
67
+ /** 更新tool配置数据,仅用于本地 */
68
+ UpdateTools = 3,
69
+ /** 创建一次work */
70
+ CreateWork = 4,
71
+ /** 绘制当次work(高频) */
72
+ DrawWork = 5,
73
+ /** 完成完整的一次work */
74
+ FullWork = 6,
75
+ /** 更新已有node */
76
+ UpdateNode = 7,
77
+ /** 删除node */
78
+ RemoveNode = 8,
79
+ /** 清空 */
80
+ Clear = 9,
81
+ /** 选中 */
82
+ Select = 10,
83
+ /** 销毁 */
84
+ Destroy = 11,
85
+ /** 获取指定场景快照 */
86
+ Snapshot = 12,
87
+ /** 获取指定场所有元素的的包围盒 */
88
+ BoundingBox = 13,
89
+ /** 指针事件 */
90
+ Cursor = 14,
91
+ /** 更新文本 */
92
+ TextUpdate = 15,
93
+ /** 获取获奖的文本信息 */
94
+ GetTextActive = 16,
95
+ /** 批量队列化处理 */
96
+ TasksQueue = 17,
97
+ /** 指针hover元素事件 */
98
+ CursorHover = 18
99
+ }
100
+ export declare enum ECanvasContextType {
101
+ Webgl2 = "webgl2",
102
+ Webgl = "webgl",
103
+ Canvas2d = "2d"
104
+ }
105
+ export declare enum ECanvasShowType {
106
+ /** 本地前置画布 */
107
+ Float = 1,
108
+ /** 背景画布 */
109
+ Bg = 2,
110
+ /** 选择框中的画布 */
111
+ Selector = 3,
112
+ /** 服务端前置画布 */
113
+ ServiceFloat = 4,
114
+ None = 5
115
+ }
116
+ export declare enum EventMessageType {
117
+ /** cursor事件 */
118
+ Cursor = 1,
119
+ /** 创建text编辑器 */
120
+ TextCreate = 2
121
+ }
122
+ export declare enum ElayerType {
123
+ Top = 1,
124
+ Bottom = 2
125
+ }
126
+ export declare enum EScaleType {
127
+ /** 不可以拉伸 */
128
+ none = 1,
129
+ /** 八个方向都可以拉伸 */
130
+ all = 2,
131
+ /** 两个方向拉伸 */
132
+ both = 3,
133
+ /** 等比例 */
134
+ proportional = 4
135
+ }
@@ -0,0 +1,3 @@
1
+ export * from './enum';
2
+ export * from './types';
3
+ export * from './const';