@netless/window-manager 1.0.0-canary.1 → 1.0.0-canary.4
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.
- package/__mocks__/white-web-sdk.ts +10 -1
- package/dist/App/AppContext.d.ts +14 -15
- package/dist/App/AppPageStateImpl.d.ts +6 -2
- package/dist/App/AppProxy.d.ts +17 -2
- package/dist/App/AppViewSync.d.ts +11 -0
- package/dist/App/WhiteboardView.d.ts +21 -0
- package/dist/App/index.d.ts +1 -0
- package/dist/AppManager.d.ts +3 -1
- package/dist/AttributesDelegate.d.ts +6 -14
- package/dist/BoxManager.d.ts +1 -1
- package/dist/Helper.d.ts +12 -2
- package/dist/InternalEmitter.d.ts +2 -0
- package/dist/ReconnectRefresher.d.ts +1 -1
- package/dist/Utils/Common.d.ts +1 -0
- package/dist/View/CameraSynchronizer.d.ts +4 -4
- package/dist/View/ViewSync.d.ts +7 -0
- package/dist/constants.d.ts +1 -0
- package/dist/index.cjs.js +12 -12
- package/dist/index.d.ts +3 -1
- package/dist/index.es.js +563 -576
- package/dist/index.umd.js +12 -12
- package/dist/style.css +1 -1
- package/dist/typings.d.ts +4 -0
- package/docs/app-context.md +98 -64
- package/docs/develop-app.md +2 -5
- package/package.json +3 -2
- package/pnpm-lock.yaml +11 -5
- package/src/App/AppContext.ts +65 -72
- package/src/App/AppPageStateImpl.ts +25 -6
- package/src/App/AppProxy.ts +110 -13
- package/src/App/AppViewSync.ts +69 -0
- package/src/App/Storage/index.ts +4 -4
- package/src/App/WhiteboardView.ts +85 -0
- package/src/App/index.ts +1 -0
- package/src/AppManager.ts +10 -2
- package/src/AttributesDelegate.ts +14 -17
- package/src/BoxManager.ts +3 -2
- package/src/Helper.ts +10 -1
- package/src/InternalEmitter.ts +2 -0
- package/src/ReconnectRefresher.ts +1 -0
- package/src/Utils/Common.ts +6 -0
- package/src/View/CameraSynchronizer.ts +15 -8
- package/src/View/MainView.ts +9 -13
- package/src/View/ViewSync.ts +10 -0
- package/src/constants.ts +2 -0
- package/src/index.ts +3 -1
- package/src/style.css +9 -0
- package/src/typings.ts +4 -0
@@ -34,8 +34,17 @@ enum ViewMode {
|
|
34
34
|
Broadcaster = "broadcaster",
|
35
35
|
}
|
36
36
|
|
37
|
+
enum AnimationMode {
|
38
|
+
Immediately = "immediately",
|
39
|
+
Continuous = "continuous",
|
40
|
+
}
|
41
|
+
|
37
42
|
const isPlayer = vi.fn(() => false);
|
43
|
+
const unlistenDisposed = vi.fn();
|
44
|
+
const unlistenUpdated = vi.fn();
|
45
|
+
const toJS = vi.fn();
|
38
46
|
|
39
47
|
export {
|
40
|
-
InvisiblePlugin, UpdateEventKind, ApplianceNames, ViewMode, isPlayer
|
48
|
+
InvisiblePlugin, UpdateEventKind, ApplianceNames, ViewMode, isPlayer, unlistenDisposed,
|
49
|
+
unlistenUpdated, toJS, AnimationMode
|
41
50
|
}
|
package/dist/App/AppContext.d.ts
CHANGED
@@ -4,12 +4,12 @@ import type { Room, SceneDefinition, View } from "white-web-sdk";
|
|
4
4
|
import type { ReadonlyTeleBox } from "@netless/telebox-insider";
|
5
5
|
import type Emittery from "emittery";
|
6
6
|
import type { BoxManager } from "../BoxManager";
|
7
|
-
import type { AppEmitterEvent } from "../index";
|
7
|
+
import type { AppEmitterEvent, Member } from "../index";
|
8
8
|
import type { AppManager } from "../AppManager";
|
9
9
|
import type { AppProxy } from "./AppProxy";
|
10
10
|
import type { MagixEventAddListener, MagixEventDispatcher, MagixEventRemoveListener } from "./MagixEvent";
|
11
|
-
import
|
12
|
-
export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any>
|
11
|
+
import { WhiteBoardView } from "./WhiteboardView";
|
12
|
+
export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any> {
|
13
13
|
private manager;
|
14
14
|
private boxManager;
|
15
15
|
appId: string;
|
@@ -30,23 +30,28 @@ export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TA
|
|
30
30
|
private store;
|
31
31
|
readonly isAddApp: boolean;
|
32
32
|
readonly isReplay: boolean;
|
33
|
+
private whiteBoardView?;
|
33
34
|
constructor(manager: AppManager, boxManager: BoxManager, appId: string, appProxy: AppProxy, appOptions?: TAppOptions | (() => TAppOptions) | undefined);
|
34
|
-
|
35
|
+
get displayer(): import("white-web-sdk").Displayer<import("white-web-sdk").DisplayerCallbacks>;
|
35
36
|
/** @deprecated Use context.storage.state instead. */
|
36
37
|
getAttributes: () => TAttributes | undefined;
|
37
38
|
getScenes: () => SceneDefinition[] | undefined;
|
38
|
-
|
39
|
-
|
39
|
+
get view(): View | undefined;
|
40
|
+
createWhiteBoardView: (size?: number | undefined) => WhiteBoardView;
|
41
|
+
private initPageSize;
|
40
42
|
getInitScenePath: () => string | undefined;
|
41
43
|
/** Get App writable status. */
|
42
|
-
|
44
|
+
get isWritable(): boolean;
|
43
45
|
/** Get the App Window UI box. */
|
44
|
-
|
45
|
-
|
46
|
+
get box(): ReadonlyTeleBox;
|
47
|
+
get room(): Room | undefined;
|
48
|
+
get members(): Member[];
|
49
|
+
get memberState(): Member;
|
46
50
|
/** @deprecated Use context.storage.setState instead. */
|
47
51
|
setAttributes: (attributes: TAttributes) => void;
|
48
52
|
/** @deprecated Use context.storage.setState instead. */
|
49
53
|
updateAttributes: (keys: string[], value: any) => void;
|
54
|
+
/** @deprecated Use Pages api instead. */
|
50
55
|
setScenePath: (scenePath: string) => Promise<void>;
|
51
56
|
/** Get the local App options. */
|
52
57
|
getAppOptions: () => TAppOptions | undefined;
|
@@ -66,10 +71,4 @@ export declare class AppContext<TAttributes = any, TMagixEventPayloads = any, TA
|
|
66
71
|
addMagixEventListener: MagixEventAddListener<TMagixEventPayloads>;
|
67
72
|
/** Remove a Magix event listener. */
|
68
73
|
removeMagixEventListener: MagixEventRemoveListener<TMagixEventPayloads>;
|
69
|
-
/** PageController */
|
70
|
-
nextPage: () => Promise<boolean>;
|
71
|
-
prevPage: () => Promise<boolean>;
|
72
|
-
addPage: (params?: AddPageParams | undefined) => Promise<void>;
|
73
|
-
removePage: (index?: number | undefined) => Promise<boolean>;
|
74
|
-
get pageState(): PageState;
|
75
74
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { Displayer, View } from "white-web-sdk";
|
1
|
+
import type { Displayer, ScenesCallbacksNode, View } from "white-web-sdk";
|
2
2
|
import type { PageState } from "../Page";
|
3
3
|
export declare type AppPageStateParams = {
|
4
4
|
displayer: Displayer;
|
@@ -8,8 +8,12 @@ export declare type AppPageStateParams = {
|
|
8
8
|
};
|
9
9
|
export declare class AppPageStateImpl {
|
10
10
|
private params;
|
11
|
-
|
11
|
+
sceneNode: ScenesCallbacksNode | null;
|
12
|
+
private scenePath?;
|
13
|
+
private view?;
|
12
14
|
constructor(params: AppPageStateParams);
|
15
|
+
createSceneNode: (scenePath: string) => ScenesCallbacksNode | null;
|
16
|
+
setView(view: View): void;
|
13
17
|
private onSceneChange;
|
14
18
|
getFullPath(index: number): string | undefined;
|
15
19
|
toObject(): PageState;
|
package/dist/App/AppProxy.d.ts
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
import Emittery from "emittery";
|
2
2
|
import { AppContext } from "./AppContext";
|
3
|
+
import { AppPageStateImpl } from "./AppPageStateImpl";
|
4
|
+
import { Val } from "value-enhancer";
|
5
|
+
import type { ICamera, ISize } from "../AttributesDelegate";
|
3
6
|
import type { AppEmitterEvent, AppInitState, BaseInsertParams } from "../index";
|
4
|
-
import type { SceneState, View, SceneDefinition } from "white-web-sdk";
|
7
|
+
import type { SceneState, View, SceneDefinition, Camera } from "white-web-sdk";
|
5
8
|
import type { AppManager } from "../AppManager";
|
6
9
|
import type { NetlessApp } from "../typings";
|
7
10
|
import type { ReadonlyTeleBox } from "@netless/telebox-insider";
|
@@ -13,6 +16,7 @@ export declare class AppProxy implements PageRemoveService {
|
|
13
16
|
kind: string;
|
14
17
|
id: string;
|
15
18
|
scenePath?: string;
|
19
|
+
private appScenePath;
|
16
20
|
appEmitter: AppEmitter;
|
17
21
|
scenes?: SceneDefinition[];
|
18
22
|
private appListener;
|
@@ -20,14 +24,22 @@ export declare class AppProxy implements PageRemoveService {
|
|
20
24
|
private appProxies;
|
21
25
|
private viewManager;
|
22
26
|
private store;
|
27
|
+
uid: string;
|
23
28
|
isAddApp: boolean;
|
24
29
|
private status;
|
25
30
|
private stateKey;
|
26
|
-
|
31
|
+
_pageState: AppPageStateImpl;
|
27
32
|
private _prevFullPath;
|
28
33
|
appResult?: NetlessApp<any>;
|
29
34
|
appContext?: AppContext<any, any>;
|
35
|
+
private sideEffectManager;
|
36
|
+
camera$: Val<ICamera | undefined, any>;
|
37
|
+
size$: Val<ISize | undefined, any>;
|
38
|
+
private appViewSync?;
|
39
|
+
box$: Val<ReadonlyTeleBox | undefined, any>;
|
40
|
+
view$: Val<View | undefined, any>;
|
30
41
|
constructor(params: BaseInsertParams, manager: AppManager, appId: string, isAddApp: boolean);
|
42
|
+
createAppDir(): View;
|
31
43
|
private initScenes;
|
32
44
|
get view(): View | undefined;
|
33
45
|
get viewIndex(): number | undefined;
|
@@ -61,6 +73,9 @@ export declare class AppProxy implements PageRemoveService {
|
|
61
73
|
removeSceneByIndex(index: number): Promise<boolean>;
|
62
74
|
setSceneIndexWithoutSync(index: number): void;
|
63
75
|
setSceneIndex(index: number): void;
|
76
|
+
storeCamera: (camera: ICamera) => void;
|
77
|
+
storeSize: (size: ISize) => void;
|
78
|
+
moveCamera: (camera: Camera) => void;
|
64
79
|
destroy(needCloseBox: boolean, cleanAttrs: boolean, skipUpdate: boolean, error?: Error): Promise<void>;
|
65
80
|
close(): Promise<void>;
|
66
81
|
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { View } from "white-web-sdk";
|
2
|
+
import type { AppProxy } from "./AppProxy";
|
3
|
+
export declare class AppViewSync {
|
4
|
+
private appProxy;
|
5
|
+
private sem;
|
6
|
+
private synchronizer;
|
7
|
+
constructor(appProxy: AppProxy);
|
8
|
+
bindView: (view?: View | undefined) => void;
|
9
|
+
private onCameraUpdatedByDevice;
|
10
|
+
destroy(): void;
|
11
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import type { ReadonlyVal } from "value-enhancer";
|
2
|
+
import type { AddPageParams, PageController, PageState } from "../Page";
|
3
|
+
import type { AppProxy } from "./AppProxy";
|
4
|
+
import type { AppContext } from "./AppContext";
|
5
|
+
import type { Camera } from "white-web-sdk";
|
6
|
+
export declare class WhiteBoardView implements PageController {
|
7
|
+
protected appContext: AppContext;
|
8
|
+
protected appProxy: AppProxy;
|
9
|
+
private removeViewWrapper;
|
10
|
+
readonly pageState$: ReadonlyVal<PageState>;
|
11
|
+
constructor(appContext: AppContext, appProxy: AppProxy, removeViewWrapper: () => void);
|
12
|
+
get view(): import("white-web-sdk").View | undefined;
|
13
|
+
get pageState(): PageState;
|
14
|
+
moveCamera(camera: Camera): void;
|
15
|
+
nextPage: () => Promise<boolean>;
|
16
|
+
prevPage: () => Promise<boolean>;
|
17
|
+
jumpPage: (index: number) => Promise<boolean>;
|
18
|
+
addPage: (params?: AddPageParams | undefined) => Promise<void>;
|
19
|
+
removePage: (index?: number | undefined) => Promise<boolean>;
|
20
|
+
destroy(): void;
|
21
|
+
}
|
package/dist/App/index.d.ts
CHANGED
package/dist/AppManager.d.ts
CHANGED
@@ -7,6 +7,7 @@ import type { ReconnectRefresher } from "./ReconnectRefresher";
|
|
7
7
|
import type { BoxManager } from "./BoxManager";
|
8
8
|
import type { Displayer, Room, SceneState } from "white-web-sdk";
|
9
9
|
import type { AddAppParams, TeleBoxRect } from "./index";
|
10
|
+
import type { Member } from "./Helper";
|
10
11
|
export declare class AppManager {
|
11
12
|
windowManger: WindowManager;
|
12
13
|
displayer: Displayer;
|
@@ -15,7 +16,7 @@ export declare class AppManager {
|
|
15
16
|
appStatus: Map<string, AppStatus>;
|
16
17
|
store: import("./AttributesDelegate").AttributesDelegate;
|
17
18
|
mainViewProxy: MainViewProxy;
|
18
|
-
refresher
|
19
|
+
refresher: ReconnectRefresher;
|
19
20
|
isReplay: boolean;
|
20
21
|
mainViewScenesLength: number;
|
21
22
|
private appListeners;
|
@@ -50,6 +51,7 @@ export declare class AppManager {
|
|
50
51
|
get mainView(): import("white-web-sdk").View;
|
51
52
|
get focusApp(): AppProxy | undefined;
|
52
53
|
get uid(): string;
|
54
|
+
get members(): Member[];
|
53
55
|
getMainViewSceneDir(): string;
|
54
56
|
private onCreated;
|
55
57
|
private onBoxMove;
|
@@ -14,7 +14,9 @@ export declare enum Fields {
|
|
14
14
|
Position = "position",
|
15
15
|
CursorState = "cursorState",
|
16
16
|
FullPath = "fullPath",
|
17
|
-
Registered = "registered"
|
17
|
+
Registered = "registered",
|
18
|
+
Camera = "camera",
|
19
|
+
Size = "size"
|
18
20
|
}
|
19
21
|
export declare type Apps = {
|
20
22
|
[key: string]: AppSyncAttributes;
|
@@ -50,6 +52,7 @@ export declare class AttributesDelegate {
|
|
50
52
|
getMinimized(): any;
|
51
53
|
setupAppAttributes(params: AddAppParams, id: string, isDynamicPPT: boolean): void;
|
52
54
|
updateAppState(appId: string, stateName: AppAttributes, state: any): void;
|
55
|
+
updateAppAttributes(appId: string, key: string, value: any): void;
|
53
56
|
cleanAppAttributes(id: string): void;
|
54
57
|
cleanFocus(): void;
|
55
58
|
getAppSceneIndex(id: string): any;
|
@@ -59,8 +62,8 @@ export declare class AttributesDelegate {
|
|
59
62
|
getBoxState(): any;
|
60
63
|
setMainViewScenePath(scenePath: string): void;
|
61
64
|
setMainViewSceneIndex(index: number): void;
|
62
|
-
getMainViewCamera():
|
63
|
-
getMainViewSize():
|
65
|
+
getMainViewCamera(): ICamera;
|
66
|
+
getMainViewSize(): ISize;
|
64
67
|
setMainViewCamera(camera: ICamera): void;
|
65
68
|
setMainViewSize(size: ISize): void;
|
66
69
|
setMainViewCameraAndSize(camera: ICamera, size: ISize): void;
|
@@ -71,17 +74,6 @@ export declare class AttributesDelegate {
|
|
71
74
|
cleanCursor(uid: string): void;
|
72
75
|
setMainViewFocusPath(mainView: View): void;
|
73
76
|
}
|
74
|
-
export declare type MainViewSize = {
|
75
|
-
id: string;
|
76
|
-
width: number;
|
77
|
-
height: number;
|
78
|
-
};
|
79
|
-
export declare type MainViewCamera = {
|
80
|
-
id: string;
|
81
|
-
centerX: number;
|
82
|
-
centerY: number;
|
83
|
-
scale: number;
|
84
|
-
};
|
85
77
|
export declare type Cursors = {
|
86
78
|
[key: string]: Cursor;
|
87
79
|
};
|
package/dist/BoxManager.d.ts
CHANGED
@@ -72,7 +72,7 @@ export declare class BoxManager {
|
|
72
72
|
get prefersColorScheme(): TeleBoxColorScheme;
|
73
73
|
get boxSize(): number;
|
74
74
|
get stageRect(): TeleBoxRect;
|
75
|
-
createBox(params: CreateBoxParams):
|
75
|
+
createBox(params: CreateBoxParams): ReadonlyTeleBox | undefined;
|
76
76
|
setupBoxManager(createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig): TeleBoxManager;
|
77
77
|
getBox(appId: string): ReadonlyTeleBox | undefined;
|
78
78
|
closeBox(appId: string, skipUpdate?: boolean): ReadonlyTeleBox | undefined;
|
package/dist/Helper.d.ts
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
-
import type { Room } from "white-web-sdk";
|
1
|
+
import type { Room, RoomMember } from "white-web-sdk";
|
2
2
|
export declare const setupWrapper: (root: HTMLElement) => {
|
3
3
|
playground: HTMLDivElement;
|
4
4
|
mainViewElement: HTMLDivElement;
|
5
5
|
};
|
6
6
|
export declare const checkVersion: () => void;
|
7
|
-
export declare const findMemberByUid: (room: Room | undefined, uid: string) =>
|
7
|
+
export declare const findMemberByUid: (room: Room | undefined, uid: string) => RoomMember | undefined;
|
8
|
+
export declare type Member = RoomMember & {
|
9
|
+
uid: string;
|
10
|
+
};
|
11
|
+
export declare const serializeRoomMembers: (members: readonly RoomMember[]) => {
|
12
|
+
memberId: number;
|
13
|
+
memberState: import("white-web-sdk").MemberState;
|
14
|
+
session: string;
|
15
|
+
payload?: import("white-web-sdk").UserPayload | undefined;
|
16
|
+
uid: string;
|
17
|
+
}[];
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import Emittery from "emittery";
|
2
2
|
import type { TeleBoxRect } from "@netless/telebox-insider";
|
3
3
|
import type { AppInitState, CursorMovePayload } from "./index";
|
4
|
+
import type { Member } from "./Helper";
|
4
5
|
export declare type RemoveSceneParams = {
|
5
6
|
scenePath: string;
|
6
7
|
index?: number;
|
@@ -30,6 +31,7 @@ export declare type EmitterEvent = {
|
|
30
31
|
changePageState: undefined;
|
31
32
|
writableChange: boolean;
|
32
33
|
containerSizeRatioUpdate: number;
|
34
|
+
roomMembersChange: Member[];
|
33
35
|
};
|
34
36
|
export declare type EmitterType = Emittery<EmitterEvent>;
|
35
37
|
export declare const emitter: EmitterType;
|
@@ -17,7 +17,7 @@ export declare class ReconnectRefresher {
|
|
17
17
|
private _onReconnected;
|
18
18
|
private releaseDisposers;
|
19
19
|
refresh(): void;
|
20
|
-
add(id: string, func: any): void;
|
20
|
+
add(id: string, func: any): () => void;
|
21
21
|
remove(id: string): void;
|
22
22
|
hasReactor(id: string): boolean;
|
23
23
|
destroy(): void;
|
package/dist/Utils/Common.d.ts
CHANGED
@@ -4,6 +4,7 @@ import type Emittery from "emittery";
|
|
4
4
|
export declare const genAppId: (kind: string) => Promise<string>;
|
5
5
|
export declare const setViewFocusScenePath: (view: View, focusScenePath: string) => View | undefined;
|
6
6
|
export declare const setViewSceneIndex: (view: View, index: number) => View | undefined;
|
7
|
+
export declare const releaseView: (view: View) => void;
|
7
8
|
export declare const setScenePath: (room: Room | undefined, scenePath: string) => void;
|
8
9
|
export declare const getScenePath: (room: Room | undefined, dir: string | undefined, index: number) => string | undefined;
|
9
10
|
export declare const removeScenes: (room: Room | undefined, scenePath: string, index?: number | undefined) => void;
|
@@ -1,17 +1,17 @@
|
|
1
1
|
import type { TeleBoxRect } from "@netless/telebox-insider";
|
2
2
|
import type { Camera, View, Size } from "white-web-sdk";
|
3
|
-
import type {
|
3
|
+
import type { ISize } from "../AttributesDelegate";
|
4
4
|
export declare type SaveCamera = (camera: Camera) => void;
|
5
5
|
export declare class CameraSynchronizer {
|
6
6
|
protected saveCamera: SaveCamera;
|
7
7
|
protected remoteCamera?: Camera;
|
8
|
-
protected remoteSize?:
|
8
|
+
protected remoteSize?: ISize;
|
9
9
|
protected rect?: TeleBoxRect;
|
10
10
|
protected view?: View;
|
11
11
|
constructor(saveCamera: SaveCamera);
|
12
12
|
setRect(rect: TeleBoxRect): void;
|
13
13
|
setView(view: View): void;
|
14
|
-
onRemoteUpdate: import("lodash").DebouncedFunc<(camera: Camera, size:
|
14
|
+
onRemoteUpdate: import("lodash").DebouncedFunc<(camera: Camera, size: ISize) => void>;
|
15
15
|
onLocalCameraUpdate(camera: Camera): void;
|
16
|
-
onLocalSizeUpdate(size: Size)
|
16
|
+
onLocalSizeUpdate: (size: Size) => void;
|
17
17
|
}
|
package/dist/constants.d.ts
CHANGED