@netless/window-manager 0.4.0-canary.9 → 0.4.2

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 (74) hide show
  1. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/.idea/window-manager.iml +12 -0
  5. package/.vscode/settings.json +1 -0
  6. package/CHANGELOG.md +43 -2
  7. package/README.md +3 -0
  8. package/dist/App/MagixEvent/index.d.ts +29 -0
  9. package/dist/App/Storage/index.d.ts +19 -6
  10. package/dist/App/Storage/typings.d.ts +1 -0
  11. package/dist/AppContext.d.ts +39 -17
  12. package/dist/AppListener.d.ts +2 -0
  13. package/dist/AppManager.d.ts +22 -8
  14. package/dist/AppProxy.d.ts +5 -5
  15. package/dist/AttributesDelegate.d.ts +2 -2
  16. package/dist/BoxManager.d.ts +6 -4
  17. package/dist/BuiltinApps.d.ts +0 -1
  18. package/dist/Cursor/Cursor.d.ts +10 -12
  19. package/dist/Cursor/index.d.ts +6 -16
  20. package/dist/Helper.d.ts +1 -0
  21. package/dist/Register/index.d.ts +5 -0
  22. package/dist/Register/storage.d.ts +5 -1
  23. package/dist/Utils/AppCreateQueue.d.ts +11 -0
  24. package/dist/Utils/Common.d.ts +4 -1
  25. package/dist/Utils/RoomHacker.d.ts +3 -3
  26. package/dist/View/MainView.d.ts +4 -3
  27. package/dist/constants.d.ts +5 -2
  28. package/dist/index.d.ts +32 -6
  29. package/dist/index.es.js +41 -1
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/index.umd.js +41 -1
  32. package/dist/index.umd.js.map +1 -1
  33. package/dist/style.css +1 -1
  34. package/dist/typings.d.ts +2 -2
  35. package/docs/advanced.md +53 -0
  36. package/docs/api.md +79 -6
  37. package/docs/concept.md +9 -0
  38. package/docs/replay.md +40 -0
  39. package/package.json +8 -9
  40. package/src/App/MagixEvent/index.ts +68 -0
  41. package/src/App/Storage/index.ts +89 -43
  42. package/src/App/Storage/typings.ts +4 -2
  43. package/src/AppContext.ts +61 -24
  44. package/src/AppListener.ts +27 -8
  45. package/src/AppManager.ts +231 -70
  46. package/src/AppProxy.ts +40 -29
  47. package/src/AttributesDelegate.ts +2 -2
  48. package/src/BoxManager.ts +33 -19
  49. package/src/BuiltinApps.ts +0 -1
  50. package/src/ContainerResizeObserver.ts +3 -3
  51. package/src/Cursor/Cursor.svelte +25 -21
  52. package/src/Cursor/Cursor.ts +25 -38
  53. package/src/Cursor/icons.ts +2 -0
  54. package/src/Cursor/index.ts +45 -139
  55. package/src/Helper.ts +12 -1
  56. package/src/Register/index.ts +32 -17
  57. package/src/Register/loader.ts +28 -13
  58. package/src/Register/storage.ts +6 -1
  59. package/src/Utils/AppCreateQueue.ts +54 -0
  60. package/src/Utils/Common.ts +35 -2
  61. package/src/Utils/RoomHacker.ts +33 -18
  62. package/src/View/MainView.ts +19 -12
  63. package/src/View/ViewManager.ts +1 -2
  64. package/src/constants.ts +6 -2
  65. package/src/image/laser-pointer-cursor.svg +17 -0
  66. package/src/index.ts +150 -33
  67. package/src/shim.d.ts +2 -1
  68. package/src/style.css +6 -1
  69. package/src/typings.ts +2 -2
  70. package/vite.config.js +7 -4
  71. package/dist/Base/Context.d.ts +0 -12
  72. package/dist/Base/index.d.ts +0 -7
  73. package/src/Base/Context.ts +0 -45
  74. package/src/Base/index.ts +0 -10
@@ -0,0 +1,7 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" />
5
+ <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
6
+ </profile>
7
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/window-manager.iml" filepath="$PROJECT_DIR$/.idea/window-manager.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
7
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
+ </content>
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ </component>
12
+ </module>
@@ -16,6 +16,7 @@
16
16
  "SCENEPATH",
17
17
  "sveltejs",
18
18
  "telebox",
19
+ "titlebar",
19
20
  "vite"
20
21
  ]
21
22
  }
package/CHANGELOG.md CHANGED
@@ -1,8 +1,49 @@
1
+ ## 0.4.1
2
+
3
+ 1. 添加 `loadApp` 事件
4
+
1
5
  ## 0.4.0
2
6
 
3
- 1. 废弃 `WindowManager.mount` 的多参数类型
4
- 2. 添加 `bindContainer` 接口,`mount` 时 `container` 参数不再是必选
7
+ ### 功能
8
+ 1. 在不同窗口中书写不再需要点击窗口进行切换
9
+ 2. 实现了激光笔教具
10
+ 3. 添加 `bindContainer` 接口,`mount` 时 `container` 参数不再是必选
11
+ 4. 添加 `bindCollector` 接口
12
+ 5. 关闭 `App` 会移除相关的 `Scenes`
13
+ 6. 添加 `ScenePath` 相同的 `App` 会把这个 `App` 置为最上层
14
+ 7. `manager.moveCamera` 和 `manager.moveCameraToContain` 会同步到所有端
15
+ 8. 代理 `room.redo()` `room.undo()` `room.canRedoSteps` `room.canUndoSteps` 以及添加 `canRedoStepsChange` `canUndoStepsChange` 事件
16
+ 9. 添加 `mainViewScenesLength` 属性和 `mainViewScenesLengthChange` 事件
17
+ 10. 添加 `manager.cleanCurrentScene()` 方法自动清除当前 `focus` 白板的笔迹
18
+
19
+ ### BreakChange
20
+ 1. 移除 `WindowManager.mount` 的多参数类型
21
+
22
+
23
+ ## 0.3.25
24
+
25
+ 1. 修复创建 APP 之后没有设置默认 `zIndex` 的问题
26
+
27
+ ## 0.3.24
28
+
29
+ 1. 修复重连之后光标不见的问题(注意: 新的光标同步方式会跟 0.3.24 之前的版本不兼容)
30
+ 2. 修改打包方式, 内部依赖会默认打包
31
+ 3. 确保重复 mount 之后 `WindowManger` 内部状态正确
32
+
33
+ ## 0.3.23
34
+
35
+ 1. 修复 ios 上 `boxState` 没有正确回调的问题
36
+ 2. 添加了 `setBoxState` `setMaximized` `setMinimized` 接口
37
+
38
+ ## 0.3.22
39
+
40
+ 1. 升级 `@netless/app-docs-viewer` 优化移动端显存占用
41
+ 2. 升级 `@netless/telebox-insider` 优化移动端显存占用
42
+
43
+ ## 0.3.19-0.3.21
5
44
 
45
+ 1. 更新 `@netless/app-docs-viewer`
46
+ 2. 修复 box `zIndex` 同步的问题
6
47
 
7
48
  ## 0.3.18
8
49
 
package/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # WindowManager
2
2
 
3
3
  - 目录
4
+ - [概念](docs/concept.md)
4
5
  - [references](docs/api.md)
5
6
  - [从白板迁移](docs/migrate.md)
7
+ - [回放](docs/replay.md)
8
+ - [进阶使用](docs/advanced.md)
6
9
  ## MainView
7
10
 
8
11
  `MainView` 也就是主白板, 是垫在所有窗口下面的主白板
@@ -0,0 +1,29 @@
1
+ import type { MagixEventListenerOptions as WhiteMagixListenerOptions, Event as WhiteEvent, EventPhase as WhiteEventPhase, Scope as WhiteScope } from "white-web-sdk";
2
+ export interface MagixEventListenerOptions extends WhiteMagixListenerOptions {
3
+ /**
4
+ * Rapid emitted callbacks will be slowed down to this interval (in ms).
5
+ */
6
+ fireInterval?: number;
7
+ /**
8
+ * If `true`, sent events will reach self-listeners after committed to server.
9
+ * Otherwise the events will reach self-listeners immediately.
10
+ */
11
+ fireSelfEventAfterCommit?: boolean;
12
+ }
13
+ export interface MagixEventMessage<TPayloads = any, TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>> extends Omit<WhiteEvent, "scope" | "phase"> {
14
+ /** Event name */
15
+ event: TEvent;
16
+ /** Event Payload */
17
+ payload: TPayloads[TEvent];
18
+ /** Whiteboard ID of the client who dispatched the event. It will be AdminObserverId for system events. */
19
+ authorId: number;
20
+ scope: `${WhiteScope}`;
21
+ phase: `${WhiteEventPhase}`;
22
+ }
23
+ export declare type MagixEventTypes<TPayloads = any> = Extract<keyof TPayloads, string>;
24
+ export declare type MagixEventPayload<TPayloads = any, TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>> = TPayloads[TEvent];
25
+ export declare type MagixEventDispatcher<TPayloads = any> = <TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>>(event: TEvent, payload: TPayloads[TEvent]) => void;
26
+ export declare type MagixEventHandler<TPayloads = any, TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>> = (message: MagixEventMessage<TPayloads, TEvent>) => void;
27
+ export declare type MagixEventListenerDisposer = () => void;
28
+ export declare type MagixEventAddListener<TPayloads = any> = <TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>>(event: TEvent, handler: MagixEventHandler<TPayloads, TEvent>, options?: MagixEventListenerOptions | undefined) => MagixEventListenerDisposer;
29
+ export declare type MagixEventRemoveListener<TPayloads = any> = <TEvent extends MagixEventTypes<TPayloads> = MagixEventTypes<TPayloads>>(event: TEvent, handler?: MagixEventHandler<TPayloads, TEvent>) => void;
@@ -1,9 +1,10 @@
1
1
  import type { AppContext } from "../../AppContext";
2
- import type { Diff } from "./typings";
2
+ import type { Diff, StorageStateChangedListener, StorageStateChangedListenerDisposer } from "./typings";
3
3
  import { StorageEvent } from "./StorageEvent";
4
4
  export * from './typings';
5
- export declare class Storage<TState = any> implements Storage<TState> {
6
- readonly id: string;
5
+ export declare const STORAGE_NS = "_WM-STORAGE_";
6
+ export declare class Storage<TState extends Record<string, any> = any> implements Storage<TState> {
7
+ readonly id: string | null;
7
8
  private readonly _context;
8
9
  private readonly _sideEffect;
9
10
  private _state;
@@ -13,14 +14,26 @@ export declare class Storage<TState = any> implements Storage<TState> {
13
14
  * `setState` alters local state immediately before sending to server. This will cache the old value for onStateChanged diffing.
14
15
  */
15
16
  private _lastValue;
16
- constructor(context: AppContext<any>, id: string, defaultState?: TState);
17
+ constructor(context: AppContext, id?: string, defaultState?: TState);
17
18
  get state(): Readonly<TState>;
18
19
  readonly onStateChanged: StorageEvent<Diff<TState>>;
20
+ addStateChangedListener(handler: StorageStateChangedListener<TState>): StorageStateChangedListenerDisposer;
19
21
  ensureState(state: Partial<TState>): void;
20
22
  setState(state: Partial<TState>): void;
21
- emptyStore(): void;
22
- deleteStore(): void;
23
+ /**
24
+ * Empty storage data.
25
+ */
26
+ emptyStorage(): void;
27
+ /**
28
+ * Delete storage index with all of its data and destroy the Storage instance.
29
+ */
30
+ deleteStorage(): void;
23
31
  get destroyed(): boolean;
32
+ /**
33
+ * Destroy the Storage instance. The data will be kept.
34
+ */
24
35
  destroy(): void;
36
+ private _getRawState;
37
+ private _setRawState;
25
38
  private _updateProperties;
26
39
  }
@@ -19,3 +19,4 @@ export declare type StorageOnSetStatePayload<TState = unknown> = {
19
19
  };
20
20
  export declare type StorageStateChangedEvent<TState = any> = Diff<TState>;
21
21
  export declare type StorageStateChangedListener<TState = any> = StorageEventListener<StorageStateChangedEvent<TState>>;
22
+ export declare type StorageStateChangedListenerDisposer = () => void;
@@ -7,13 +7,14 @@ import type { AppEmitterEvent } from "./index";
7
7
  import type { AppManager } from "./AppManager";
8
8
  import type { AppProxy } from "./AppProxy";
9
9
  import { Storage } from './App/Storage';
10
- export declare class AppContext<TAttrs extends Record<string, any> = any, AppOptions = any> {
10
+ import type { MagixEventAddListener, MagixEventDispatcher, MagixEventRemoveListener } from './App/MagixEvent';
11
+ export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any> {
11
12
  private manager;
12
13
  private boxManager;
13
14
  appId: string;
14
15
  private appProxy;
15
16
  private appOptions?;
16
- readonly emitter: Emittery<AppEmitterEvent<TAttrs>>;
17
+ readonly emitter: Emittery<AppEmitterEvent<TAttributes>>;
17
18
  readonly mobxUtils: {
18
19
  autorun: typeof autorun;
19
20
  reaction: typeof reaction;
@@ -28,19 +29,40 @@ export declare class AppContext<TAttrs extends Record<string, any> = any, AppOpt
28
29
  private store;
29
30
  readonly isAddApp: boolean;
30
31
  readonly isReplay: boolean;
31
- constructor(manager: AppManager, boxManager: BoxManager, appId: string, appProxy: AppProxy, appOptions?: AppOptions | (() => AppOptions) | undefined);
32
- getDisplayer(): import("white-web-sdk").Displayer<import("white-web-sdk").DisplayerCallbacks>;
33
- getAttributes(): TAttrs | undefined;
34
- getScenes(): SceneDefinition[] | undefined;
35
- getView(): View | undefined;
36
- getInitScenePath(): string | undefined;
37
- getIsWritable(): boolean;
38
- getBox(): ReadonlyTeleBox;
39
- getRoom(): Room | undefined;
40
- setAttributes(attributes: TAttrs): void;
41
- updateAttributes(keys: string[], value: any): void;
42
- setScenePath(scenePath: string): Promise<void>;
43
- mountView(dom: HTMLDivElement): void;
44
- getAppOptions(): AppOptions | undefined;
45
- createStorage<TState>(storeId: string, defaultState?: TState): Storage<TState>;
32
+ constructor(manager: AppManager, boxManager: BoxManager, appId: string, appProxy: AppProxy, appOptions?: TAppOptions | (() => TAppOptions) | undefined);
33
+ getDisplayer: () => import("white-web-sdk").Displayer<import("white-web-sdk").DisplayerCallbacks>;
34
+ /** @deprecated Use context.storage.state instead. */
35
+ getAttributes: () => TAttributes | undefined;
36
+ getScenes: () => SceneDefinition[] | undefined;
37
+ getView: () => View | undefined;
38
+ getInitScenePath: () => string | undefined;
39
+ /** Get App writable status. */
40
+ getIsWritable: () => boolean;
41
+ /** Get the App Window UI box. */
42
+ getBox: () => ReadonlyTeleBox;
43
+ getRoom: () => Room | undefined;
44
+ /** @deprecated Use context.storage.setState instead. */
45
+ setAttributes: (attributes: TAttributes) => void;
46
+ /** @deprecated Use context.storage.setState instead. */
47
+ updateAttributes: (keys: string[], value: any) => void;
48
+ setScenePath: (scenePath: string) => Promise<void>;
49
+ mountView: (dom: HTMLDivElement) => void;
50
+ /** Get the local App options. */
51
+ getAppOptions: () => TAppOptions | undefined;
52
+ private _storage?;
53
+ /** Main Storage for attributes. */
54
+ get storage(): Storage<TAttributes>;
55
+ /**
56
+ * Create separated storages for flexible state management.
57
+ * @param storeId Namespace for the storage. Storages of the same namespace share the same data.
58
+ * @param defaultState Default state for initial storage creation.
59
+ * @returns
60
+ */
61
+ createStorage: <TState>(storeId: string, defaultState?: TState | undefined) => Storage<TState>;
62
+ /** Dispatch events to other clients (and self). */
63
+ dispatchMagixEvent: MagixEventDispatcher<TMagixEventPayloads>;
64
+ /** Listen to events from others clients (and self messages). */
65
+ addMagixEventListener: MagixEventAddListener<TMagixEventPayloads>;
66
+ /** Remove a Magix event listener. */
67
+ removeMagixEventListener: MagixEventRemoveListener<TMagixEventPayloads>;
46
68
  }
@@ -11,5 +11,7 @@ export declare class AppListeners {
11
11
  private appResizeHandler;
12
12
  private boxStateChangeHandler;
13
13
  private setMainViewScenePathHandler;
14
+ private moveCameraHandler;
14
15
  private moveCameraToContainHandler;
16
+ private cursorMoveHandler;
15
17
  }
@@ -5,7 +5,7 @@ import { MainViewProxy } from "./View/MainView";
5
5
  import { ViewManager } from "./View/ViewManager";
6
6
  import type { ReconnectRefresher } from "./ReconnectRefresher";
7
7
  import type { BoxManager } from "./BoxManager";
8
- import type { Displayer, Room } from "white-web-sdk";
8
+ import type { Displayer, Room, View } from "white-web-sdk";
9
9
  import type { AddAppParams, TeleBoxRect } from "./index";
10
10
  export declare class AppManager {
11
11
  windowManger: WindowManager;
@@ -17,11 +17,28 @@ export declare class AppManager {
17
17
  mainViewProxy: MainViewProxy;
18
18
  refresher?: ReconnectRefresher;
19
19
  isReplay: boolean;
20
+ mainViewScenesLength: number;
20
21
  private appListeners;
21
22
  boxManager?: BoxManager;
22
23
  private _prevSceneIndex;
24
+ private _prevFocused;
25
+ private callbacksNode;
26
+ private appCreateQueue;
23
27
  constructor(windowManger: WindowManager);
28
+ private get eventName();
29
+ get attributes(): import("./index").WindowMangerAttributes;
30
+ get canOperate(): boolean;
31
+ get room(): Room | undefined;
32
+ get mainView(): View;
33
+ get focusApp(): AppProxy | undefined;
34
+ get uid(): string;
35
+ getMainViewSceneDir(): string;
24
36
  private onCreated;
37
+ private disposePrevFocusViewRedoUndoListeners;
38
+ private addRedoUndoListeners;
39
+ private addViewCallbacks;
40
+ private onCanRedoStepsUpdate;
41
+ private onCanUndoStepsUpdate;
25
42
  /**
26
43
  * 插件更新 attributes 时的回调
27
44
  *
@@ -35,7 +52,7 @@ export declare class AppManager {
35
52
  resetMinimized(): void;
36
53
  private onAppDelete;
37
54
  bindMainView(divElement: HTMLDivElement, disableCameraTransform: boolean): void;
38
- setMainViewFocusPath(): void;
55
+ setMainViewFocusPath(scenePath?: string): boolean | undefined;
39
56
  addApp(params: AddAppParams, isDynamicPPT: boolean): Promise<string | undefined>;
40
57
  private beforeAddApp;
41
58
  private afterAddApp;
@@ -43,17 +60,13 @@ export declare class AppManager {
43
60
  private baseInsertApp;
44
61
  private displayerStateListener;
45
62
  displayerWritableListener: (isReadonly: boolean) => void;
46
- private get eventName();
47
- get attributes(): import("./index").WindowMangerAttributes;
48
- get canOperate(): boolean;
49
- get room(): Room | undefined;
50
- get mainView(): import("white-web-sdk").View;
51
- get focusApp(): AppProxy | undefined;
52
63
  safeSetAttributes(attributes: any): void;
53
64
  safeUpdateAttributes(keys: string[], value: any): void;
54
65
  setMainViewScenePath(scenePath: string): Promise<void>;
55
66
  private _setMainViewScenePath;
67
+ private updateSceneIndex;
56
68
  setMainViewSceneIndex(index: number): Promise<void>;
69
+ private dispatchSetMainViewScenePath;
57
70
  getAppInitPath(appId: string): string | undefined;
58
71
  safeDispatchMagixEvent(event: string, payload: any): void;
59
72
  private boxEventListener;
@@ -61,5 +74,6 @@ export declare class AppManager {
61
74
  onReconnected(): Promise<void>;
62
75
  notifyContainerRectUpdate(rect: TeleBoxRect): void;
63
76
  dispatchInternalEvent(event: Events, payload: any): void;
77
+ findMemberByUid: (uid: string) => import("white-web-sdk").RoomMember | undefined;
64
78
  destroy(): void;
65
79
  }
@@ -4,9 +4,10 @@ import type { SceneState, View, SceneDefinition } from "white-web-sdk";
4
4
  import type { AppManager } from "./AppManager";
5
5
  import type { NetlessApp } from "./typings";
6
6
  import type { ReadonlyTeleBox } from "@netless/telebox-insider";
7
- import { Base } from "./Base";
8
- export declare class AppProxy extends Base {
7
+ export declare class AppProxy {
9
8
  private params;
9
+ private manager;
10
+ kind: string;
10
11
  id: string;
11
12
  scenePath?: string;
12
13
  appEmitter: Emittery<AppEmitterEvent>;
@@ -15,7 +16,7 @@ export declare class AppProxy extends Base {
15
16
  private boxManager;
16
17
  private appProxies;
17
18
  private viewManager;
18
- private kind;
19
+ private store;
19
20
  isAddApp: boolean;
20
21
  private status;
21
22
  private stateKey;
@@ -34,9 +35,7 @@ export declare class AppProxy extends Base {
34
35
  appId: string;
35
36
  app: NetlessApp;
36
37
  }>;
37
- private focusApp;
38
38
  get box(): ReadonlyTeleBox | undefined;
39
- focusBox(): void;
40
39
  private setupApp;
41
40
  private fixMobileSize;
42
41
  private afterSetupApp;
@@ -47,6 +46,7 @@ export declare class AppProxy extends Base {
47
46
  emitAppIsWritableChange(): void;
48
47
  private makeAppEventListener;
49
48
  private appAttributesUpdateListener;
49
+ private setFocusScenePathHandler;
50
50
  setScenePath(): void;
51
51
  setViewFocusScenePath(): void;
52
52
  private createView;
@@ -47,7 +47,7 @@ export declare class AttributesDelegate {
47
47
  cleanFocus(): void;
48
48
  getAppSceneIndex(id: string): any;
49
49
  getAppScenePath(id: string): any;
50
- getMainViewScenePath(): any;
50
+ getMainViewScenePath(): string | undefined;
51
51
  getMainViewSceneIndex(): any;
52
52
  getBoxState(): any;
53
53
  setMainViewScenePath(scenePath: string): void;
@@ -60,7 +60,7 @@ export declare class AttributesDelegate {
60
60
  setMainViewSize(size: (Size & {
61
61
  id: string;
62
62
  }) | undefined): void;
63
- setAppFocus(appId: string, focus: boolean): void;
63
+ setAppFocus: (appId: string, focus: boolean) => void;
64
64
  updateCursor(uid: string, position: Position): void;
65
65
  updateCursorState(uid: string, cursorState: string | undefined): void;
66
66
  getCursorState(uid: string): any;
@@ -1,8 +1,8 @@
1
1
  import { AppAttributes } from "./constants";
2
- import { TELE_BOX_STATE, TeleBoxManager } from "@netless/telebox-insider";
3
2
  import { WindowManager } from "./index";
3
+ import { TELE_BOX_STATE, TeleBoxManager } from "@netless/telebox-insider";
4
4
  import type { AddAppOptions, AppInitState, EmitterType, CallbacksType } from "./index";
5
- import type { TeleBoxManagerUpdateConfig, ReadonlyTeleBox, TeleBoxColorScheme, TeleBoxRect } from "@netless/telebox-insider";
5
+ import type { TeleBoxManagerUpdateConfig, ReadonlyTeleBox, TeleBoxColorScheme, TeleBoxRect, TeleBoxConfig } from "@netless/telebox-insider";
6
6
  import type Emittery from "emittery";
7
7
  import type { NetlessApp } from "./typings";
8
8
  import type { View } from "white-web-sdk";
@@ -49,6 +49,7 @@ export declare type BoxManagerContext = {
49
49
  canOperate: () => boolean;
50
50
  notifyContainerRectUpdate: (rect: TeleBoxRect) => void;
51
51
  cleanFocus: () => void;
52
+ setAppFocus: (appId: string) => void;
52
53
  };
53
54
  export declare const createBoxManager: (manager: WindowManager, callbacks: CallbacksType, emitter: EmitterType, options: CreateTeleBoxManagerConfig) => BoxManager;
54
55
  export declare class BoxManager {
@@ -59,7 +60,7 @@ export declare class BoxManager {
59
60
  private playgroundSizeChangeListener;
60
61
  private get mainView();
61
62
  private get canOperate();
62
- get boxState(): "minimized" | "maximized" | "normal";
63
+ get boxState(): "normal" | "minimized" | "maximized";
63
64
  get maximized(): boolean;
64
65
  get minimized(): boolean;
65
66
  get darkMode(): boolean;
@@ -83,9 +84,10 @@ export declare class BoxManager {
83
84
  setBoxTitle(params: SetBoxTitleParams): void;
84
85
  blurAllBox(): void;
85
86
  updateAll(config: TeleBoxManagerUpdateConfig): void;
86
- setMaximized(maximized: boolean): void;
87
+ setMaximized(maximized: boolean, skipUpdate?: boolean): void;
87
88
  setMinimized(minimized: boolean, skipUpdate?: boolean): void;
88
89
  focusTopBox(): void;
90
+ updateBox(id: string, payload: TeleBoxConfig, skipUpdate?: boolean): void;
89
91
  setReadonly(readonly: boolean): void;
90
92
  setPrefersColorScheme(colorScheme: TeleBoxColorScheme): void;
91
93
  setZIndex(id: string, zIndex: number, skipUpdate?: boolean): void;
@@ -1,4 +1,3 @@
1
- import "@netless/app-docs-viewer/dist/style.css";
2
1
  export declare const setupBuiltin: () => void;
3
2
  export declare const BuiltinApps: {
4
3
  DocsViewer: string;
@@ -1,22 +1,22 @@
1
- import { ApplianceNames } from 'white-web-sdk';
2
- import { CursorState } from '../constants';
3
- import type { Position } from '../AttributesDelegate';
1
+ import { ApplianceNames } from "white-web-sdk";
2
+ import type { Position } from "../AttributesDelegate";
3
+ import type { RoomMember } from "white-web-sdk";
4
4
  import type { CursorManager } from "./index";
5
- import { Base } from '../Base';
6
- import type { AppManager } from '../AppManager';
5
+ import type { AppManager } from "../AppManager";
7
6
  export declare type Payload = {
8
7
  [key: string]: any;
9
8
  };
10
- export declare class Cursor extends Base {
11
- private cursors;
9
+ export declare class Cursor {
10
+ private manager;
12
11
  private memberId;
13
12
  private cursorManager;
14
13
  private wrapper?;
15
14
  private member?;
16
15
  private timer?;
17
16
  private component?;
18
- constructor(manager: AppManager, addCursorChangeListener: (uid: string, callback: (position: Position, state: CursorState) => void) => void, cursors: any, memberId: string, cursorManager: CursorManager, wrapper?: HTMLElement | undefined);
19
- private onCursorChange;
17
+ constructor(manager: AppManager, memberId: string, cursorManager: CursorManager, wrapper?: HTMLElement | undefined);
18
+ move: (position: Position) => void;
19
+ leave: () => void;
20
20
  private moveCursor;
21
21
  get memberApplianceName(): ApplianceNames | undefined;
22
22
  get memberColor(): string;
@@ -27,13 +27,11 @@ export declare class Cursor extends Base {
27
27
  private get memberCursorTagBackgroundColor();
28
28
  private get memberAvatar();
29
29
  private get memberOpacity();
30
- get cursorState(): CursorState | undefined;
31
- get cursorPosition(): Position | undefined;
32
30
  private autoHidden;
33
31
  private createCursor;
34
32
  private initProps;
35
33
  private getIcon;
36
- setMember(): void;
34
+ updateMember(): RoomMember | undefined;
37
35
  private updateComponent;
38
36
  destroy(): void;
39
37
  hide(): void;
@@ -1,7 +1,5 @@
1
- import { Base } from "../Base";
2
1
  import { Cursor } from "./Cursor";
3
- import { CursorState } from "../constants";
4
- import type { PositionType, Position } from "../AttributesDelegate";
2
+ import type { PositionType } from "../AttributesDelegate";
5
3
  import type { RoomMember, View } from "white-web-sdk";
6
4
  import type { AppManager } from "../AppManager";
7
5
  export declare type EventType = {
@@ -13,21 +11,19 @@ export declare type MoveCursorParams = {
13
11
  x: number;
14
12
  y: number;
15
13
  };
16
- export declare class CursorManager extends Base {
17
- private appManager;
14
+ export declare class CursorManager {
15
+ private manager;
16
+ private enableCursor;
18
17
  containerRect?: DOMRect;
19
18
  wrapperRect?: DOMRect;
20
19
  cursorInstances: Map<string, Cursor>;
21
20
  roomMembers?: readonly RoomMember[];
22
21
  private mainViewElement?;
23
22
  private sideEffectManager;
24
- constructor(appManager: AppManager);
23
+ private store;
24
+ constructor(manager: AppManager, enableCursor: boolean);
25
25
  setupWrapper(wrapper: HTMLElement): void;
26
26
  setMainViewDivElement(div: HTMLDivElement): void;
27
- private startReaction;
28
- private getUids;
29
- private handleRoomMembersChange;
30
- get cursors(): any;
31
27
  get boxState(): any;
32
28
  get focusView(): View | undefined;
33
29
  private mouseMoveListener;
@@ -37,15 +33,9 @@ export declare class CursorManager extends Base {
37
33
  * 因为窗口内框在不同分辨率下的大小不一样,所以这里通过来鼠标事件的 target 来判断是在主白板还是在 APP 中
38
34
  */
39
35
  private getType;
40
- private initCursorAttributes;
41
- private setNormalCursorState;
42
36
  private mouseLeaveListener;
43
37
  updateContainerRect(): void;
44
- setRoomMembers(members: readonly RoomMember[]): void;
45
38
  deleteCursor(uid: string): void;
46
39
  hideCursor(uid: string): void;
47
- cleanMemberAttributes(members: readonly RoomMember[]): void;
48
- onReconnect(): void;
49
- addCursorChangeListener: (uid: string, callback: (position: Position, state: CursorState) => void) => void;
50
40
  destroy(): void;
51
41
  }
package/dist/Helper.d.ts CHANGED
@@ -4,3 +4,4 @@ export declare const setupWrapper: (root: HTMLElement) => {
4
4
  sizer: HTMLDivElement;
5
5
  mainViewElement: HTMLDivElement;
6
6
  };
7
+ export declare const checkVersion: () => void;
@@ -1,5 +1,10 @@
1
1
  import Emittery from "emittery";
2
2
  import type { NetlessApp, RegisterEvents, RegisterParams } from "../typings";
3
+ export declare type LoadAppEvent = {
4
+ kind: string;
5
+ status: "start" | "success" | "failed";
6
+ reason?: string;
7
+ };
3
8
  declare class AppRegister {
4
9
  kindEmitters: Map<string, Emittery<RegisterEvents>>;
5
10
  registered: Map<string, RegisterParams>;
@@ -1,4 +1,8 @@
1
+ export declare type Item = {
2
+ kind: string;
3
+ sourceCode: string;
4
+ };
1
5
  export declare const initDb: () => Promise<void>;
2
6
  export declare const setItem: (key: string, val: any) => Promise<void> | undefined;
3
- export declare const getItem: (key: string) => Promise<string | null>;
7
+ export declare const getItem: (key: string) => Promise<Item | null>;
4
8
  export declare const removeItem: (key: string) => Promise<void> | undefined;
@@ -0,0 +1,11 @@
1
+ import type { AppProxy } from "../AppProxy";
2
+ export declare type Invoker = () => Promise<AppProxy | undefined>;
3
+ export declare class AppCreateQueue {
4
+ private list;
5
+ private currentInvoker;
6
+ private timer;
7
+ private initInterval;
8
+ push(item: Invoker): void;
9
+ invoke(): void;
10
+ destroy(): void;
11
+ }
@@ -2,9 +2,11 @@ import type { PublicEvent } from "../index";
2
2
  import type { Displayer, ViewVisionMode, Room, View } from "white-web-sdk";
3
3
  import type Emittery from "emittery";
4
4
  export declare const genAppId: (kind: string) => Promise<string>;
5
- export declare const setViewFocusScenePath: (view: View, focusScenePath: string) => void;
5
+ export declare const setViewFocusScenePath: (view: View, focusScenePath: string) => View | undefined;
6
+ export declare const setViewSceneIndex: (view: View, index: number) => View | undefined;
6
7
  export declare const setScenePath: (room: Room | undefined, scenePath: string) => void;
7
8
  export declare const getScenePath: (room: Room | undefined, dir: string | undefined, index: number) => string | undefined;
9
+ export declare const removeScenes: (room: Room | undefined, scenePath: string) => void;
8
10
  export declare const setViewMode: (view: View, mode: ViewVisionMode) => void;
9
11
  export declare const emitError: (error: Error) => void;
10
12
  export declare const addEmitterOnceListener: (event: any, listener: any) => void;
@@ -12,6 +14,7 @@ export declare const notifyMainViewModeChange: import("lodash").DebouncedFunc<(c
12
14
  export declare const makeValidScenePath: (displayer: Displayer, scenePath: string, index?: number) => string | undefined;
13
15
  export declare const entireScenes: (displayer: Displayer) => import("white-web-sdk").SceneMap;
14
16
  export declare const isValidScenePath: (scenePath: string) => boolean;
17
+ export declare const parseSceneDir: (scenePath: string) => string;
15
18
  export declare const ensureValidScenePath: (scenePath: string) => string;
16
19
  export declare const getVersionNumber: (version: string) => number;
17
20
  export declare const wait: (time: number) => Promise<unknown>;
@@ -1,3 +1,3 @@
1
- import type { WindowManager } from '../index';
2
- import type { Room } from "white-web-sdk";
3
- export declare const replaceRoomFunction: (room: Room, manager: WindowManager) => void;
1
+ import type { WindowManager } from "../index";
2
+ import type { Room, Player } from "white-web-sdk";
3
+ export declare const replaceRoomFunction: (room: Room | Player, manager: WindowManager) => void;