@netless/appliance-plugin 1.1.0-beta.1 → 1.1.1-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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DmfRoAiB.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.ECanvasContextType=e.ECanvasContextType;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EPostMessageType=e.EPostMessageType;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.EvevtWorkState=e.EvevtWorkState;exports.EvevtWorkType=e.EvevtWorkType;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.ShapeType=e.ShapeType;exports.fullWorkerUrl=e.fullWorker;exports.subWorkerUrl=e.subWorker;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Bc02VTGL.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.ECanvasContextType=e.ECanvasContextType;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EPostMessageType=e.EPostMessageType;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.EvevtWorkState=e.EvevtWorkState;exports.EvevtWorkType=e.EvevtWorkType;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.ShapeType=e.ShapeType;exports.fullWorkerUrl=e.fullWorker;exports.subWorkerUrl=e.subWorker;
@@ -1,4 +1,4 @@
1
- import { H as s, A as p, B as t, z as r, y as l, J as n, K as y, h as E, r as i, k as T, O as o, F as v, E as g, N as S, p as c, L as k, a as A, P as u, I as M, G as W, w as m, x } from "./index-CIJP6_Qj.mjs";
1
+ import { H as s, A as p, B as t, z as r, y as l, J as n, K as y, h as E, r as i, k as T, O as o, F as v, E as g, N as S, p as c, L as k, a as A, P as u, I as M, G as W, w as m, x } from "./index-DXSmA8_B.mjs";
2
2
  export {
3
3
  s as ActiveContainerType,
4
4
  p as ApplianceMultiPlugin,
@@ -1,15 +1,18 @@
1
1
  import type { AppliancePluginLike } from "../plugin/types";
2
2
  import { IworkId } from "../core";
3
3
  import { BaseApplianceManager } from "../plugin/baseApplianceManager";
4
+ import { ISerializableAuthData } from "./types";
4
5
  export declare abstract class BaseCollector<T> {
5
6
  plugin: AppliancePluginLike;
6
7
  uid: string;
7
8
  abstract serviceStorage: T;
8
9
  abstract storage: T;
9
10
  protected abstract namespace: string;
11
+ protected abstract authSpace: string;
10
12
  readonly control: BaseApplianceManager;
11
13
  constructor(control: BaseApplianceManager, plugin: AppliancePluginLike);
12
14
  getNamespaceData(): T;
15
+ getAuthSpaceData(): ISerializableAuthData;
13
16
  getUidFromKey(key: string): string;
14
17
  isLocalId(key: string): boolean;
15
18
  getLocalId(key: string): string;
@@ -1,4 +1,5 @@
1
- import { BaseCollectorReducerAction, Diff, ISerializableStorageData, ISerializableStorageViewData } from "./types";
1
+ import { EPostMessageType } from "../core/enum";
2
+ import { AuthWriteData, BaseCollectorReducerAction, Diff, DiffAuthRender, ISerializableAuthData, ISerializableAuthRenderItemType, ISerializableStorageData, ISerializableStorageViewData, ViewId } from "./types";
2
3
  import { BaseCollector } from "./base";
3
4
  import type { AppliancePluginLike } from "../plugin/types";
4
5
  import { BaseApplianceManager } from "../plugin/baseApplianceManager";
@@ -6,12 +7,16 @@ import { BaseApplianceManager } from "../plugin/baseApplianceManager";
6
7
  * 服务端事件/状态同步收集器
7
8
  */
8
9
  export declare class Collector extends BaseCollector<ISerializableStorageViewData> {
10
+ protected authSpace: string;
9
11
  protected namespace: string;
10
12
  static namespace: string;
13
+ static authSpace: string;
11
14
  static syncInterval: number;
12
15
  serviceStorage: ISerializableStorageViewData;
13
16
  storage: ISerializableStorageViewData;
17
+ authStorage: ISerializableAuthData;
14
18
  private stateDisposer;
19
+ private authDisposer;
15
20
  private asyncClockState;
16
21
  constructor(control: BaseApplianceManager, plugin: AppliancePluginLike, syncInterval?: number);
17
22
  getViewIdBySecenPath(scenePath: string): string | undefined;
@@ -51,4 +56,14 @@ export declare class Collector extends BaseCollector<ISerializableStorageViewDat
51
56
  private syncStorageKey;
52
57
  keyTransformWorkId(key: string): string;
53
58
  destroy(): void;
59
+ setAuth(auth: Partial<ISerializableAuthData>, isSync: boolean): void;
60
+ dispatchAuth(action: {
61
+ type: EPostMessageType.AuthWriter | EPostMessageType.AuthReader;
62
+ viewId?: ViewId;
63
+ writeData?: AuthWriteData;
64
+ renderData?: ISerializableAuthRenderItemType;
65
+ }, isSync?: boolean): void;
66
+ addAuthStateListener(callBack: (diffAuthRender: DiffAuthRender) => void): void;
67
+ removeAuthStateListener(): void;
68
+ private diffAuthFun;
54
69
  }
@@ -1,7 +1,4 @@
1
1
  /** 同步事件类型 */
2
- export declare enum EEventDataKey {
3
- GetPoint = "getPoint"
4
- }
5
2
  /** 同步类型 */
6
3
  export declare enum SyncedType {
7
4
  State = 0,
@@ -6,6 +6,7 @@ import { BaseApplianceManager } from "../plugin/baseApplianceManager";
6
6
  * 服务端事件/状态同步收集器
7
7
  */
8
8
  export declare class EventCollector extends BaseCollector<ISerializableEventData> {
9
+ protected authSpace: string;
9
10
  static syncInterval: number;
10
11
  static namespace: string;
11
12
  serviceStorage: ISerializableEventData;
@@ -6,6 +6,7 @@ import { BaseApplianceManager } from "../plugin/baseApplianceManager";
6
6
  * 服务端事件/状态同步收集器
7
7
  */
8
8
  export declare class magixEventCollector extends BaseCollector<ISerializableEventData> {
9
+ protected authSpace: string;
9
10
  static syncInterval: number;
10
11
  static namespace: string;
11
12
  serviceStorage: ISerializableEventData;
@@ -1,8 +1,7 @@
1
1
  import { EPostMessageType, EToolsKey, EventMessageType } from "../core/enum";
2
2
  import { ShapeOptions } from "../core/tools";
3
3
  import { IUpdateNodeOpt, IworkId } from "../core/types";
4
- import { EmitEventType } from "../plugin/types";
5
- import { EEventDataKey } from "./enum";
4
+ import { EmitEventType, _ArrayTrue } from "../plugin/types";
6
5
  export declare type DiffOneView<ISerializableStorageViewData> = {
7
6
  oldValue?: ISerializableStorageViewData;
8
7
  newValue?: ISerializableStorageViewData;
@@ -32,12 +31,6 @@ export declare type Diff = {
32
31
  diffScenePath?: DiffScenePath<ISerializableStorageScenePathData>;
33
32
  diffView?: DiffView<ISerializableStorageViewData>;
34
33
  };
35
- export type SyncEventData = {
36
- [key in EEventDataKey]: {
37
- workId?: number;
38
- key: string;
39
- };
40
- };
41
34
  export type IStorageValueItem = Partial<INormalPushMsg>;
42
35
  export interface INormalPushMsg {
43
36
  workId?: IworkId;
@@ -69,6 +62,10 @@ export type BaseCollectorReducerAction = INormalPushMsg & Pick<INormalPushMsg, '
69
62
  export interface ISerializableStorageData {
70
63
  [key: string]: BaseCollectorReducerAction | undefined;
71
64
  }
65
+ export type ViewId = string;
66
+ export type WorkId = string;
67
+ export type ScenePath = string;
68
+ export type Uid = string | 'localSelf';
72
69
  export interface BaseEventCollectorReducerAction {
73
70
  type?: EventMessageType;
74
71
  uid?: string;
@@ -76,14 +73,43 @@ export interface BaseEventCollectorReducerAction {
76
73
  op?: Array<number | undefined>;
77
74
  isHide?: boolean;
78
75
  isSync?: boolean;
79
- viewId?: string;
76
+ viewId?: ViewId;
80
77
  }
81
78
  export interface ISerializableEventData {
82
- [key: string]: Array<BaseEventCollectorReducerAction | undefined> | undefined;
79
+ [key: WorkId]: Array<BaseEventCollectorReducerAction | undefined> | undefined;
83
80
  }
84
81
  export interface ISerializableStorageViewData {
85
- [key: string]: ISerializableStorageScenePathData;
82
+ [key: ViewId]: ISerializableStorageScenePathData;
86
83
  }
87
84
  export interface ISerializableStorageScenePathData {
88
- [key: string]: ISerializableStorageData;
85
+ [key: ScenePath]: ISerializableStorageData;
89
86
  }
87
+ export type ISerializableAuthRenderItemType = {
88
+ /** 可读用户组, 如果是true, 则为所有用户笔记可渲染 */
89
+ render?: _ArrayTrue<Uid>;
90
+ /** 可隐藏用户组 如果是true, 则为所有用户笔记可隐藏 */
91
+ hide?: _ArrayTrue<Uid>;
92
+ /** 可移除笔记用户组 如果是true, 则为所有用户笔记可移除 */
93
+ clear?: _ArrayTrue<Uid>;
94
+ };
95
+ export type ISerializableAuthRenderDataType = {
96
+ [key: ViewId]: ISerializableAuthRenderItemType;
97
+ };
98
+ export type ISerializableAuthData = {
99
+ /** 可写用户组, 如果是true, 则为所有用户可写 */
100
+ writable?: _ArrayTrue<Uid>;
101
+ /** 只读用户组, 如果是true, 则为所有用户可读 */
102
+ readOnly?: _ArrayTrue<Uid>;
103
+ /** viewid区分,用户显示笔记权限 */
104
+ renderAuth?: ISerializableAuthRenderDataType;
105
+ };
106
+ export type AuthWriteData = Pick<ISerializableAuthData, 'writable' | 'readOnly'>;
107
+ export type AuthWriteDatakey = keyof AuthWriteData;
108
+ export type ISerializableAuthRenderItemTypeKey = keyof ISerializableAuthRenderItemType;
109
+ export declare type DiffAuthRender = {
110
+ [K in keyof ISerializableAuthRenderDataType]?: DiffOneRender;
111
+ };
112
+ export declare type DiffOneRender = {
113
+ oldValue?: ISerializableAuthRenderItemType;
114
+ newValue?: ISerializableAuthRenderItemType;
115
+ };
@@ -105,7 +105,13 @@ export declare enum EPostMessageType {
105
105
  /** 优先激活worker */
106
106
  PriorityMainThreadWorker = 22,
107
107
  /** 获取图片位图 */
108
- GetImageBitMap = 23
108
+ GetImageBitMap = 23,
109
+ /** 授权可写权限 */
110
+ AuthWriter = 24,
111
+ /** 授权可显示笔记权限 */
112
+ AuthReader = 25,
113
+ /** 授权可以删除笔记权限 */
114
+ AuthClear = 26
109
115
  }
110
116
  export declare enum ECanvasContextType {
111
117
  Webgl2 = "webgl2",
@@ -1,9 +1,9 @@
1
1
  import EventEmitter2 from "eventemitter2";
2
- import { BaseCollectorReducerAction, DiffOneData } from "../collector";
2
+ import { BaseCollectorReducerAction, DiffOneData, Uid } from "../collector";
3
3
  import { BaseApplianceManager } from "../plugin/baseApplianceManager";
4
4
  import { IActiveToolsDataType, IActiveWorkDataType, ICameraOpt, IMainMessage, IRectType, IUpdateNodeOpt, IWorkerMessage, IqueryTask, IworkId, ViewWorkerOptions } from "./types";
5
5
  import { BaseSubWorkModuleProps } from "../plugin/types";
6
- import type { ImageInformation, PriorityType } from "../plugin/types";
6
+ import type { ImageInformation, PriorityType, _SetTrue } from "../plugin/types";
7
7
  import { MethodBuilderMain } from "./msgEvent";
8
8
  import { EvevtWorkState } from "./enum";
9
9
  import { BaseShapeOptions } from "./tools";
@@ -66,7 +66,7 @@ export declare abstract class MasterController {
66
66
  /** 更新已有node配置 */
67
67
  abstract updateNode(workId: IworkId, updateNodeOpt: IUpdateNodeOpt, viewId: string, scenePath: string): void;
68
68
  /** 清空指定的view场景路径下的所有数据 */
69
- abstract clearViewScenePath(viewId: string, justLocal?: boolean): Promise<void>;
69
+ abstract clearViewScenePath(viewId: string, justLocal?: boolean, isFiter?: boolean): Promise<void>;
70
70
  /** 更新指定view场景路径下的相机参数 */
71
71
  abstract updateCamera(viewId: string, cameraOpt: ICameraOpt): void;
72
72
  /** 创建一个新的viewWorker */
@@ -198,7 +198,7 @@ export declare class MasterControlForWorker extends MasterController {
198
198
  updateCamera(viewId: string, cameraOpt: ICameraOpt): void;
199
199
  private updateCameraDone;
200
200
  private consumeQueue;
201
- clearViewScenePath(viewId: string, justLocal?: boolean | undefined): Promise<void>;
201
+ clearViewScenePath(viewId: string, justLocal?: boolean | undefined, isFiter?: boolean): Promise<void>;
202
202
  private internalMsgEmitterListener;
203
203
  private setZIndex;
204
204
  checkDrawingWork(vId: string): void;
@@ -217,4 +217,5 @@ export declare class MasterControlForWorker extends MasterController {
217
217
  blurSelector(viewId: string, scenePath: string, workId?: string): void;
218
218
  consoleWorkerInfo(): void;
219
219
  setPriority(priority: PriorityType): void;
220
+ sendClearUids(viewId: string, clearUids?: _SetTrue<Uid>): void;
220
221
  }
@@ -0,0 +1,66 @@
1
+ import type { RoomMemberManager } from "../members";
2
+ import { ApplianceManagerLike, BaseSubWorkModuleProps, FilterPublishAutType, FilterRenderType, _ArrayTrue } from "../plugin/types";
3
+ import type { MasterControlForWorker } from "./mainEngine";
4
+ import { Uid } from "../collector/types";
5
+ export interface RenderCotrol {
6
+ readonly roomMemberManager: RoomMemberManager;
7
+ readonly control: ApplianceManagerLike;
8
+ /** 监听本地可写权限变化 */
9
+ onSetWriteable(bool: boolean): void;
10
+ /** 发布可写权限到服务端 */
11
+ publishWriteAble(write: _ArrayTrue<Uid>, readOnly: _ArrayTrue<Uid>): void;
12
+ /** 发布当个用户可写权限到服务端 */
13
+ publishOneWriteAble(uid: Uid, type: FilterPublishAutType, isSync: boolean): void;
14
+ /** 本地发布可显示绘制权限到服务端 */
15
+ publishRender(param: {
16
+ viewId: Uid;
17
+ option: {
18
+ render?: _ArrayTrue<Uid>;
19
+ hide?: _ArrayTrue<Uid>;
20
+ clear?: _ArrayTrue<Uid>;
21
+ };
22
+ isSync: boolean;
23
+ }): void;
24
+ /** 发布当个用户显示绘制权限到服务端 */
25
+ publishOneRender(viewId: Uid, uid: Uid, type: FilterRenderType, isSync: boolean): void;
26
+ /** 发布当个用户删除笔记权限到服务端 */
27
+ publishOneClear(viewId: Uid, uid: Uid, isAdd: boolean, isSync: boolean): void;
28
+ /** 服务端同步可显示绘制权限 */
29
+ syncRenderUids(viewId: Uid, _render?: _ArrayTrue<Uid>, _hide?: _ArrayTrue<Uid>, _clear?: _ArrayTrue<Uid>): void;
30
+ /** 服务端同步可写权限 */
31
+ syncWriteable(writable?: _ArrayTrue<Uid>, readOnly?: _ArrayTrue<Uid>): void;
32
+ destoryByViewId(viewId: string): void;
33
+ }
34
+ export declare class RenderCotrolImple implements RenderCotrol {
35
+ readonly control: ApplianceManagerLike;
36
+ readonly roomMemberManager: RoomMemberManager;
37
+ readonly worker: MasterControlForWorker;
38
+ private writeableUids;
39
+ private readonlyUids;
40
+ private renderUids;
41
+ private isCurWrite;
42
+ constructor(props: BaseSubWorkModuleProps);
43
+ onSetWriteable(bool: boolean): void;
44
+ getCurWriteable(): boolean;
45
+ isWriteable(uid: Uid): boolean;
46
+ isRenderAble(uid: Uid, viewId: string, filterLocalSelf?: boolean): boolean;
47
+ isClearAble(uid: Uid, viewId: string, filterLocalSelf?: boolean): boolean;
48
+ publishWriteAble(writable?: _ArrayTrue<Uid>, readOnly?: _ArrayTrue<Uid>): void;
49
+ publishOneWriteAble(uid: Uid, type: FilterPublishAutType, isSync?: boolean): void;
50
+ publishRender(param: {
51
+ viewId: Uid;
52
+ option?: {
53
+ render?: _ArrayTrue<Uid>;
54
+ hide?: _ArrayTrue<Uid>;
55
+ clear?: _ArrayTrue<Uid>;
56
+ };
57
+ isSync: boolean;
58
+ }): void;
59
+ publishOneRender(viewId: Uid, uid: Uid, type: FilterRenderType, isSync?: boolean): void;
60
+ publishOneClear(viewId: Uid, uid: Uid, isAdd: boolean, isSync?: boolean): void;
61
+ syncRenderUids(viewId: Uid, _render?: _ArrayTrue<Uid>, _hide?: _ArrayTrue<Uid>, _clear?: _ArrayTrue<Uid>): void;
62
+ syncWriteable(writable?: _ArrayTrue<Uid>, readOnly?: _ArrayTrue<Uid>): void;
63
+ destoryByViewId(viewId: string, isLocal?: boolean): void;
64
+ private renderEffect;
65
+ private writeEffect;
66
+ }
@@ -54,5 +54,5 @@ export declare class EraserShape extends BaseShapeTool {
54
54
  removeIds: string[];
55
55
  };
56
56
  clearTmpPoints(): void;
57
- private getUnLockNodeMap;
57
+ private getCanEraserNodeMap;
58
58
  }
@@ -70,5 +70,5 @@ export declare class PencilEraserShape extends BaseShapeTool {
70
70
  }>;
71
71
  };
72
72
  clearTmpPoints(): void;
73
- private getUnLockNodeMap;
73
+ private getCanEraserNodeMap;
74
74
  }
@@ -6,6 +6,9 @@ import { BaseShapeOptions, BaseShapeTool, ShapeOptions } from './tools';
6
6
  import type { SelectorShape } from './tools';
7
7
  import type { Direction } from "re-resizable/lib/resizer";
8
8
  import { ShapeOptType } from '../displayer/types';
9
+ export type PickOne<T> = {
10
+ [P in keyof T]: Record<P, T[P]> & Partial<Record<Exclude<keyof T, P>, undefined>>;
11
+ }[keyof T];
9
12
  export type IworkId = string | number;
10
13
  export type IqueryTask = Partial<IWorkerMessage> | undefined;
11
14
  export type ViewWorkerOptions = {
@@ -283,7 +286,6 @@ export type BaseNodeMapItem = {
283
286
  scaleType: EScaleType;
284
287
  /** 是否被框选中,框选中的元素不能被其它人操作 */
285
288
  isSelected: boolean;
286
- isHid?: boolean;
287
289
  eraserlines?: Map<string, Pick<BaseNodeMapItem, 'op' | 'opt'>>;
288
290
  };
289
291
  export type Size = {
@@ -1,4 +1,2 @@
1
1
  import { Group, Node, Path } from "spritejs";
2
- import { BaseNodeMapItem } from "../types";
3
2
  export declare const isSealedGroup: (group: Group | Path | Node) => boolean;
4
- export declare const isRenderNode: (param: Pick<BaseNodeMapItem, "isHid">) => boolean;
@@ -1,6 +1,8 @@
1
1
  import { Group, Scene } from "spritejs";
2
2
  import { BaseNodeMapItem, IRectType } from "./types";
3
3
  import { EToolsKey } from ".";
4
+ import { _SetTrue } from "../plugin";
5
+ import type { Uid } from "../collector/types";
4
6
  export declare class VNodeManager {
5
7
  viewId: string;
6
8
  scene: Scene;
@@ -8,10 +10,16 @@ export declare class VNodeManager {
8
10
  curNodeMap: Map<string, BaseNodeMapItem>;
9
11
  targetNodeMap: Map<string, BaseNodeMapItem>[];
10
12
  private highLevelIds?;
13
+ private canClearUids?;
14
+ private localUid?;
11
15
  constructor(viewId: string, scene: Scene);
12
16
  init(fullLayer: Group): void;
13
17
  get(name: string): BaseNodeMapItem | undefined;
14
- getUnLockNodes(): Map<string, BaseNodeMapItem>;
18
+ setLocalUid(uid: string): void;
19
+ getLocalUid(): string | undefined;
20
+ setCanClearUids(clearUids?: _SetTrue<Uid>): void;
21
+ getCanClearUids(): _SetTrue<string> | undefined;
22
+ getCanEraserNodes(nodeMap: Map<string, BaseNodeMapItem>): Map<string, BaseNodeMapItem>;
15
23
  getNodesByType(type: EToolsKey): Map<string, BaseNodeMapItem>;
16
24
  hasRenderNodes(): boolean;
17
25
  has(name: string): boolean;
@@ -20,7 +28,6 @@ export declare class VNodeManager {
20
28
  unSelected(name: string): void;
21
29
  delete(name: string): void;
22
30
  clear(): void;
23
- hasRectIntersectRange(rect: IRectType, filterLock?: boolean): boolean;
24
31
  getRectIntersectRange(rect: IRectType, filterLock?: boolean, filterEditor?: boolean): {
25
32
  rectRange: IRectType | undefined;
26
33
  nodeRange: Map<string, BaseNodeMapItem>;
@@ -30,7 +37,6 @@ export declare class VNodeManager {
30
37
  updateHighLevelNodesRect(highLevelIds: Set<string>): void;
31
38
  updateLowLevelNodesRect(): void;
32
39
  clearHighLevelIds(): void;
33
- combineIntersectRect(rect: IRectType): IRectType;
34
40
  setTargetAssignKeys(keys: Array<string>): number;
35
41
  setTarget(): number;
36
42
  getLastTarget(): Map<string, BaseNodeMapItem>;
@@ -38,4 +44,6 @@ export declare class VNodeManager {
38
44
  getTarget(i: number): Map<string, BaseNodeMapItem>;
39
45
  deleteTarget(i: number): void;
40
46
  clearTarget(): void;
47
+ isLocalWorkId(workId: string): boolean;
48
+ isCanClearWorkId(workId: string): boolean;
41
49
  }