@netless/window-manager 0.4.7 → 0.4.9-canary.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 (44) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +1 -0
  3. package/dist/AppContext.d.ts +4 -4
  4. package/dist/AppManager.d.ts +12 -9
  5. package/dist/BoxManager.d.ts +4 -3
  6. package/dist/ContainerResizeObserver.d.ts +1 -1
  7. package/dist/Helper.d.ts +2 -0
  8. package/dist/InternalEmitter.d.ts +41 -0
  9. package/dist/ReconnectRefresher.d.ts +1 -1
  10. package/dist/RedoUndo.d.ts +18 -0
  11. package/dist/Utils/AppCreateQueue.d.ts +2 -0
  12. package/dist/Utils/Common.d.ts +1 -1
  13. package/dist/View/MainView.d.ts +1 -0
  14. package/dist/callback.d.ts +21 -0
  15. package/dist/index.d.ts +5 -52
  16. package/dist/index.es.js +5 -5
  17. package/dist/index.es.js.map +1 -1
  18. package/dist/index.umd.js +5 -5
  19. package/dist/index.umd.js.map +1 -1
  20. package/dist/style.css +1 -1
  21. package/docs/advanced.md +13 -0
  22. package/docs/api.md +15 -1
  23. package/docs/develop-app.md +50 -0
  24. package/package.json +3 -3
  25. package/src/AppContext.ts +51 -33
  26. package/src/AppListener.ts +2 -1
  27. package/src/AppManager.ts +90 -82
  28. package/src/AppProxy.ts +8 -4
  29. package/src/BoxManager.ts +7 -13
  30. package/src/ContainerResizeObserver.ts +1 -1
  31. package/src/Cursor/Cursor.ts +2 -1
  32. package/src/Cursor/index.ts +4 -2
  33. package/src/Helper.ts +6 -0
  34. package/src/InternalEmitter.ts +27 -0
  35. package/src/ReconnectRefresher.ts +1 -1
  36. package/src/RedoUndo.ts +88 -0
  37. package/src/Register/index.ts +1 -0
  38. package/src/Register/loader.ts +1 -1
  39. package/src/Utils/AppCreateQueue.ts +10 -0
  40. package/src/Utils/Common.ts +2 -2
  41. package/src/Utils/RoomHacker.ts +3 -3
  42. package/src/View/MainView.ts +13 -1
  43. package/src/callback.ts +23 -0
  44. package/src/index.ts +23 -57
package/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.4.8
2
+
3
+ 1. 升级 `@netless/telebox-insider` 至 `0.2.25`
4
+ 2. 修复关闭 app 时可能因为 app 报错导致关闭失败的问题
5
+
1
6
  ## 0.4.7
2
7
 
3
8
  1. 修改 `addPage` 接口
package/README.md CHANGED
@@ -6,6 +6,7 @@
6
6
  - [从白板迁移](docs/migrate.md)
7
7
  - [回放](docs/replay.md)
8
8
  - [进阶使用](docs/advanced.md)
9
+ - [开发自定义 APP](docs/develop-app.md)
9
10
  ## MainView
10
11
 
11
12
  `MainView` 也就是主白板, 是垫在所有窗口下面的主白板
@@ -1,4 +1,5 @@
1
- import { autorun, listenDisposed, listenUpdated, reaction, unlistenDisposed, unlistenUpdated, toJS } from 'white-web-sdk';
1
+ import { Storage } from "./App/Storage";
2
+ import { autorun, listenDisposed, listenUpdated, reaction, unlistenDisposed, unlistenUpdated, toJS } from "white-web-sdk";
2
3
  import type { Room, SceneDefinition, View } from "white-web-sdk";
3
4
  import type { ReadonlyTeleBox } from "@netless/telebox-insider";
4
5
  import type Emittery from "emittery";
@@ -6,8 +7,7 @@ import type { BoxManager } from "./BoxManager";
6
7
  import type { AppEmitterEvent } from "./index";
7
8
  import type { AppManager } from "./AppManager";
8
9
  import type { AppProxy } from "./AppProxy";
9
- import { Storage } from './App/Storage';
10
- import type { MagixEventAddListener, MagixEventDispatcher, MagixEventRemoveListener } from './App/MagixEvent';
10
+ import type { MagixEventAddListener, MagixEventDispatcher, MagixEventRemoveListener } from "./App/MagixEvent";
11
11
  export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any> {
12
12
  private manager;
13
13
  private boxManager;
@@ -46,7 +46,7 @@ export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TA
46
46
  /** @deprecated Use context.storage.setState instead. */
47
47
  updateAttributes: (keys: string[], value: any) => void;
48
48
  setScenePath: (scenePath: string) => Promise<void>;
49
- mountView: (dom: HTMLDivElement) => void;
49
+ mountView: (dom: HTMLElement) => void;
50
50
  /** Get the local App options. */
51
51
  getAppOptions: () => TAppOptions | undefined;
52
52
  private _storage?;
@@ -1,11 +1,11 @@
1
1
  import { AppStatus, Events } from "./constants";
2
2
  import { AppProxy } from "./AppProxy";
3
- import { WindowManager } from "./index";
4
3
  import { MainViewProxy } from "./View/MainView";
4
+ import { WindowManager } from "./index";
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, View } from "white-web-sdk";
8
+ import type { Displayer, Room, SceneState } from "white-web-sdk";
9
9
  import type { AddAppParams, TeleBoxRect } from "./index";
10
10
  export declare class AppManager {
11
11
  windowManger: WindowManager;
@@ -24,22 +24,26 @@ export declare class AppManager {
24
24
  private _prevFocused;
25
25
  private callbacksNode;
26
26
  private appCreateQueue;
27
+ private sideEffectManager;
28
+ sceneState: SceneState | null;
27
29
  constructor(windowManger: WindowManager);
30
+ /**
31
+ * 根目录被删除时所有的 scene 都会被删除.
32
+ * 所以需要关掉所有开启了 view 的 app
33
+ */
34
+ private onRootDirRemoved;
28
35
  private createRootDirScenesCallback;
36
+ private onSceneChange;
37
+ private updateSceneState;
29
38
  private get eventName();
30
39
  get attributes(): import("./index").WindowMangerAttributes;
31
40
  get canOperate(): boolean;
32
41
  get room(): Room | undefined;
33
- get mainView(): View;
42
+ get mainView(): import("white-web-sdk").View;
34
43
  get focusApp(): AppProxy | undefined;
35
44
  get uid(): string;
36
45
  getMainViewSceneDir(): string;
37
46
  private onCreated;
38
- private disposePrevFocusViewRedoUndoListeners;
39
- private addRedoUndoListeners;
40
- private addViewCallbacks;
41
- private onCanRedoStepsUpdate;
42
- private onCanUndoStepsUpdate;
43
47
  /**
44
48
  * 插件更新 attributes 时的回调
45
49
  *
@@ -75,6 +79,5 @@ export declare class AppManager {
75
79
  onReconnected(): Promise<void>;
76
80
  notifyContainerRectUpdate(rect: TeleBoxRect): void;
77
81
  dispatchInternalEvent(event: Events, payload: any): void;
78
- findMemberByUid: (uid: string) => import("white-web-sdk").RoomMember | undefined;
79
82
  destroy(): void;
80
83
  }
@@ -1,11 +1,13 @@
1
1
  import { AppAttributes } from "./constants";
2
- import { WindowManager } from "./index";
3
2
  import { TELE_BOX_STATE, TeleBoxManager } from "@netless/telebox-insider";
4
- import type { AddAppOptions, AppInitState, EmitterType, CallbacksType } from "./index";
3
+ import { WindowManager } from "./index";
4
+ import type { AddAppOptions, AppInitState } from "./index";
5
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";
9
+ import type { CallbacksType } from "./callback";
10
+ import type { EmitterType } from "./InternalEmitter";
9
11
  export { TELE_BOX_STATE };
10
12
  export declare type CreateBoxParams = {
11
13
  appId: string;
@@ -57,7 +59,6 @@ export declare class BoxManager {
57
59
  private createTeleBoxManagerConfig?;
58
60
  teleBoxManager: TeleBoxManager;
59
61
  constructor(context: BoxManagerContext, createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig | undefined);
60
- private playgroundSizeChangeListener;
61
62
  private get mainView();
62
63
  private get canOperate();
63
64
  get boxState(): "normal" | "minimized" | "maximized";
@@ -1,4 +1,4 @@
1
- import type { EmitterType } from "./index";
1
+ import type { EmitterType } from "./InternalEmitter";
2
2
  export declare class ContainerResizeObserver {
3
3
  private emitter;
4
4
  private containerResizeObserver?;
package/dist/Helper.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Room } from "white-web-sdk";
1
2
  export declare const setupWrapper: (root: HTMLElement) => {
2
3
  playground: HTMLDivElement;
3
4
  wrapper: HTMLDivElement;
@@ -5,3 +6,4 @@ export declare const setupWrapper: (root: HTMLElement) => {
5
6
  mainViewElement: HTMLDivElement;
6
7
  };
7
8
  export declare const checkVersion: () => void;
9
+ export declare const findMemberByUid: (room: Room | undefined, uid: string) => import("white-web-sdk").RoomMember | undefined;
@@ -0,0 +1,41 @@
1
+ import Emittery from "emittery";
2
+ import type { AppInitState, CursorMovePayload } from "./index";
3
+ export declare type EmitterEvent = {
4
+ onCreated: undefined;
5
+ InitReplay: AppInitState;
6
+ move: {
7
+ appId: string;
8
+ x: number;
9
+ y: number;
10
+ };
11
+ focus: {
12
+ appId: string;
13
+ };
14
+ close: {
15
+ appId: string;
16
+ };
17
+ resize: {
18
+ appId: string;
19
+ width: number;
20
+ height: number;
21
+ x?: number;
22
+ y?: number;
23
+ };
24
+ error: Error;
25
+ seek: number;
26
+ mainViewMounted: undefined;
27
+ observerIdChange: number;
28
+ boxStateChange: string;
29
+ playgroundSizeChange: DOMRect;
30
+ onReconnected: void;
31
+ removeScenes: string;
32
+ cursorMove: CursorMovePayload;
33
+ updateManagerRect: undefined;
34
+ focusedChange: {
35
+ focused: string | undefined;
36
+ prev: string | undefined;
37
+ };
38
+ rootDirRemoved: undefined;
39
+ };
40
+ export declare type EmitterType = Emittery<EmitterEvent>;
41
+ export declare const emitter: EmitterType;
@@ -1,5 +1,5 @@
1
1
  import type { Room } from "white-web-sdk";
2
- import type { EmitterType } from "./index";
2
+ import type { EmitterType } from "./InternalEmitter";
3
3
  export declare type ReconnectRefresherContext = {
4
4
  emitter: EmitterType;
5
5
  };
@@ -0,0 +1,18 @@
1
+ import type { View } from "white-web-sdk";
2
+ import type { AppProxy } from "./AppProxy";
3
+ export declare type RedoUndoContext = {
4
+ mainView: () => View;
5
+ focus: () => string | undefined;
6
+ getAppProxy: (id: string) => AppProxy | undefined;
7
+ };
8
+ export declare class RedoUndo {
9
+ private context;
10
+ constructor(context: RedoUndoContext);
11
+ private addRedoUndoListeners;
12
+ private addViewCallbacks;
13
+ private disposeViewCallbacks;
14
+ private onCanRedoStepsUpdate;
15
+ private onCanUndoStepsUpdate;
16
+ private disposePrevFocusViewRedoUndoListeners;
17
+ destroy(): void;
18
+ }
@@ -4,8 +4,10 @@ export declare class AppCreateQueue {
4
4
  private list;
5
5
  private currentInvoker;
6
6
  private timer;
7
+ isEmit: boolean;
7
8
  private initInterval;
8
9
  push(item: Invoker): void;
9
10
  invoke(): void;
11
+ emitReady(): void;
10
12
  destroy(): void;
11
13
  }
@@ -1,4 +1,4 @@
1
- import type { PublicEvent } from "../index";
1
+ import type { PublicEvent } from "../callback";
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>;
@@ -26,6 +26,7 @@ export declare class MainViewProxy {
26
26
  };
27
27
  createMainView(): View;
28
28
  onReconnect(): void;
29
+ rebind(): void;
29
30
  private onCameraUpdatedByDevice;
30
31
  addMainViewListener(): void;
31
32
  removeMainViewListener(): void;
@@ -0,0 +1,21 @@
1
+ import Emittery from "emittery";
2
+ import type { TeleBoxColorScheme, TELE_BOX_STATE } from "@netless/telebox-insider";
3
+ import type { CameraState, ViewVisionMode } from "white-web-sdk";
4
+ import type { LoadAppEvent } from "./Register";
5
+ export declare type PublicEvent = {
6
+ mainViewModeChange: ViewVisionMode;
7
+ boxStateChange: `${TELE_BOX_STATE}`;
8
+ darkModeChange: boolean;
9
+ prefersColorSchemeChange: TeleBoxColorScheme;
10
+ cameraStateChange: CameraState;
11
+ mainViewScenePathChange: string;
12
+ mainViewSceneIndexChange: number;
13
+ focusedChange: string | undefined;
14
+ mainViewScenesLengthChange: number;
15
+ canRedoStepsChange: number;
16
+ canUndoStepsChange: number;
17
+ loadApp: LoadAppEvent;
18
+ ready: undefined;
19
+ };
20
+ export declare type CallbacksType = Emittery<PublicEvent>;
21
+ export declare const callbacks: CallbacksType;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import Emittery from "emittery";
2
1
  import { AppManager } from "./AppManager";
3
2
  import { CursorManager } from "./Cursor";
4
3
  import { InvisiblePlugin, ViewMode } from "white-web-sdk";
@@ -6,14 +5,15 @@ import { ReconnectRefresher } from "./ReconnectRefresher";
6
5
  import "video.js/dist/video-js.css";
7
6
  import "./style.css";
8
7
  import "@netless/telebox-insider/dist/style.css";
9
- import type { LoadAppEvent } from "./Register";
10
8
  import type { TELE_BOX_STATE } from "./BoxManager";
11
9
  import type { Apps, Position } from "./AttributesDelegate";
12
- import type { Displayer, SceneDefinition, View, Room, InvisiblePluginContext, Camera, AnimationMode, CameraBound, Point, Rectangle, ViewVisionMode, CameraState, Player, ImageInformation } from "white-web-sdk";
10
+ import type { Displayer, SceneDefinition, View, Room, InvisiblePluginContext, Camera, AnimationMode, CameraBound, Point, Rectangle, CameraState, Player, ImageInformation, SceneState } from "white-web-sdk";
13
11
  import type { AppListeners } from "./AppListener";
14
12
  import type { NetlessApp, RegisterParams } from "./typings";
15
13
  import type { TeleBoxColorScheme, TeleBoxState } from "@netless/telebox-insider";
16
14
  import type { AppProxy } from "./AppProxy";
15
+ import type { PublicEvent } from "./Callback";
16
+ import type Emittery from "emittery";
17
17
  export declare type WindowMangerAttributes = {
18
18
  modelValue?: string;
19
19
  boxState: TELE_BOX_STATE;
@@ -72,53 +72,6 @@ export declare type CursorMovePayload = {
72
72
  state?: "leave";
73
73
  position: Position;
74
74
  };
75
- export declare type EmitterEvent = {
76
- onCreated: undefined;
77
- InitReplay: AppInitState;
78
- move: {
79
- appId: string;
80
- x: number;
81
- y: number;
82
- };
83
- focus: {
84
- appId: string;
85
- };
86
- close: {
87
- appId: string;
88
- };
89
- resize: {
90
- appId: string;
91
- width: number;
92
- height: number;
93
- x?: number;
94
- y?: number;
95
- };
96
- error: Error;
97
- seek: number;
98
- mainViewMounted: undefined;
99
- observerIdChange: number;
100
- boxStateChange: string;
101
- playgroundSizeChange: DOMRect;
102
- onReconnected: void;
103
- removeScenes: string;
104
- cursorMove: CursorMovePayload;
105
- };
106
- export declare type EmitterType = Emittery<EmitterEvent>;
107
- export declare const emitter: EmitterType;
108
- export declare type PublicEvent = {
109
- mainViewModeChange: ViewVisionMode;
110
- boxStateChange: `${TELE_BOX_STATE}`;
111
- darkModeChange: boolean;
112
- prefersColorSchemeChange: TeleBoxColorScheme;
113
- cameraStateChange: CameraState;
114
- mainViewScenePathChange: string;
115
- mainViewSceneIndexChange: number;
116
- focusedChange: string | undefined;
117
- mainViewScenesLengthChange: number;
118
- canRedoStepsChange: number;
119
- canUndoStepsChange: number;
120
- loadApp: LoadAppEvent;
121
- };
122
75
  export declare type MountParams = {
123
76
  room: Room | Player;
124
77
  container?: HTMLElement;
@@ -134,8 +87,6 @@ export declare type MountParams = {
134
87
  disableCameraTransform?: boolean;
135
88
  prefersColorScheme?: TeleBoxColorScheme;
136
89
  };
137
- export declare type CallbacksType = Emittery<PublicEvent>;
138
- export declare const callbacks: CallbacksType;
139
90
  export declare const reconnectRefresher: ReconnectRefresher;
140
91
  export declare type AddPageParams = {
141
92
  after?: boolean;
@@ -166,6 +117,7 @@ export declare class WindowManager extends InvisiblePlugin<WindowMangerAttribute
166
117
  static mount(params: MountParams): Promise<WindowManager>;
167
118
  private static initManager;
168
119
  private static initContainer;
120
+ static get registered(): Map<string, RegisterParams<any, any, any>>;
169
121
  bindContainer(container: HTMLElement): void;
170
122
  bindCollectorContainer(container: HTMLElement): void;
171
123
  /**
@@ -230,6 +182,7 @@ export declare class WindowManager extends InvisiblePlugin<WindowMangerAttribute
230
182
  get mainViewScenesLength(): number;
231
183
  get canRedoSteps(): number;
232
184
  get canUndoSteps(): number;
185
+ get sceneState(): SceneState;
233
186
  /**
234
187
  * 查询所有的 App
235
188
  */