@netless/window-manager 1.0.0-canary.77 → 1.0.0-canary.79
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/dist/BoxManager.d.ts +1 -1
- package/dist/Cursor/index.d.ts +1 -1
- package/dist/View/MainView.d.ts +2 -0
- package/dist/View/ScrollMode.d.ts +1 -2
- package/dist/index.js +25 -7
- package/dist/index.mjs +25 -7
- package/dist/index.umd.js +25 -7
- package/package.json +2 -2
- package/src/AppListener.ts +16 -4
- package/src/BoxManager.ts +4 -1
- package/src/Cursor/index.ts +1 -1
- package/src/View/MainView.ts +14 -1
- package/src/View/ScrollMode.ts +1 -1
- package/src/index.ts +1 -1
package/dist/BoxManager.d.ts
CHANGED
@@ -11,7 +11,7 @@ import type { View } from "white-web-sdk";
|
|
11
11
|
import type { CallbacksType } from "./callback";
|
12
12
|
import type { EmitterType } from "./InternalEmitter";
|
13
13
|
import type { AppState } from "./App/type";
|
14
|
-
import { ReadonlyVal } from "value-enhancer";
|
14
|
+
import type { ReadonlyVal } from "value-enhancer";
|
15
15
|
export { TELE_BOX_STATE };
|
16
16
|
export type CreateBoxParams = {
|
17
17
|
appId: string;
|
package/dist/Cursor/index.d.ts
CHANGED
@@ -3,7 +3,7 @@ import type { ApplianceIcons, TeleBoxRect } from "../index";
|
|
3
3
|
import type { PositionType } from "../AttributesDelegate";
|
4
4
|
import type { RoomMember, View } from "white-web-sdk";
|
5
5
|
import type { AppManager } from "../AppManager";
|
6
|
-
import { Val } from "value-enhancer";
|
6
|
+
import type { Val } from "value-enhancer";
|
7
7
|
export type EventType = {
|
8
8
|
type: PositionType;
|
9
9
|
id?: string;
|
package/dist/View/MainView.d.ts
CHANGED
@@ -60,7 +60,9 @@ export declare class MainViewProxy {
|
|
60
60
|
setMainViewSize: import("lodash").DebouncedFunc<(size: Size) => void>;
|
61
61
|
private addCameraListener;
|
62
62
|
private removeCameraListener;
|
63
|
+
private _syncMainViewTimer;
|
63
64
|
private onCameraOrSizeUpdated;
|
65
|
+
private syncMainView;
|
64
66
|
stop(): void;
|
65
67
|
destroy(): void;
|
66
68
|
}
|
@@ -2,7 +2,6 @@ import { SideEffectManager } from "side-effect-manager";
|
|
2
2
|
import type { ReadonlyVal } from "value-enhancer";
|
3
3
|
import type { AppManager } from "../AppManager";
|
4
4
|
import type { ScrollStorage } from "../storage";
|
5
|
-
import type { View } from "white-web-sdk";
|
6
5
|
export type ScrollState = {
|
7
6
|
scrollTop: number;
|
8
7
|
page: number;
|
@@ -21,7 +20,7 @@ export declare class ScrollMode {
|
|
21
20
|
private baseHeight;
|
22
21
|
readonly scrollStorage: ScrollStorage;
|
23
22
|
readonly scrollState$: ReadonlyVal<ScrollState>;
|
24
|
-
get mainView(): View;
|
23
|
+
get mainView(): import("white-web-sdk").View;
|
25
24
|
setRoot(root: HTMLElement): void;
|
26
25
|
constructor(manager: AppManager);
|
27
26
|
private initScroll;
|
package/dist/index.js
CHANGED
@@ -619,9 +619,14 @@ class AppListeners {
|
|
619
619
|
this.moveCameraHandler = (payload) => {
|
620
620
|
const size$ = this.manager.mainViewProxy.size$;
|
621
621
|
if (size$.value) {
|
622
|
-
const
|
623
|
-
|
624
|
-
|
622
|
+
const nextCamera = { ...payload };
|
623
|
+
if (nextCamera.scale) {
|
624
|
+
const size = this.manager.mainView.size;
|
625
|
+
const diff = Math.max(size.height / size$.value.height, size.width / size$.value.width);
|
626
|
+
nextCamera.scale *= diff;
|
627
|
+
} else {
|
628
|
+
delete nextCamera.scale;
|
629
|
+
}
|
625
630
|
this.manager.mainView.moveCamera(nextCamera);
|
626
631
|
}
|
627
632
|
};
|
@@ -2344,8 +2349,18 @@ class MainViewProxy {
|
|
2344
2349
|
this.setMainViewSize = lodash.debounce((size) => {
|
2345
2350
|
this.store.setMainViewSize({ ...size, id: this.manager.uid });
|
2346
2351
|
}, 50);
|
2352
|
+
this._syncMainViewTimer = 0;
|
2347
2353
|
this.onCameraOrSizeUpdated = () => {
|
2348
2354
|
callbacks.emit("cameraStateChange", this.cameraState);
|
2355
|
+
if (this.manager.room && this.manager.room.syncMainView) {
|
2356
|
+
clearTimeout(this._syncMainViewTimer);
|
2357
|
+
this._syncMainViewTimer = setTimeout(this.syncMainView, 100, this.manager.room);
|
2358
|
+
}
|
2359
|
+
};
|
2360
|
+
this.syncMainView = (room) => {
|
2361
|
+
if (room.isWritable) {
|
2362
|
+
room.syncMainView(this.mainView);
|
2363
|
+
}
|
2349
2364
|
};
|
2350
2365
|
this.mainView = this.createMainView();
|
2351
2366
|
emitter.once("mainViewMounted").then(() => {
|
@@ -6096,6 +6111,9 @@ class BoxManager {
|
|
6096
6111
|
const { emitter: emitter2, callbacks: callbacks2, boxEmitter: boxEmitter2 } = context;
|
6097
6112
|
this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);
|
6098
6113
|
this.sideEffectManager.add(() => [
|
6114
|
+
this.teleBoxManager.onValChanged("rootRect", (rect) => {
|
6115
|
+
emitter2.emit("playgroundSizeChange", rect);
|
6116
|
+
}),
|
6099
6117
|
// 使用 _xxx$.reaction 订阅修改的值, 不管有没有 skipUpdate, 修改值都会触发回调
|
6100
6118
|
this.teleBoxManager.onValChanged("state", (state) => {
|
6101
6119
|
callbacks2.emit("boxStateChange", state);
|
@@ -12643,8 +12661,8 @@ const reconnectRefresher = new ReconnectRefresher({ emitter });
|
|
12643
12661
|
const _WindowManager = class extends whiteWebSdk.InvisiblePlugin {
|
12644
12662
|
constructor(context) {
|
12645
12663
|
super(context);
|
12646
|
-
this.version = "1.0.0-canary.
|
12647
|
-
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12664
|
+
this.version = "1.0.0-canary.79";
|
12665
|
+
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12648
12666
|
this.emitter = callbacks;
|
12649
12667
|
this.viewMode$ = new valueEnhancer.Val(whiteWebSdk.ViewMode.Broadcaster);
|
12650
12668
|
this.playground$ = new valueEnhancer.Val(void 0);
|
@@ -12660,7 +12678,7 @@ const _WindowManager = class extends whiteWebSdk.InvisiblePlugin {
|
|
12660
12678
|
(_b = this.appManager) == null ? void 0 : _b.dispatchInternalEvent(Events.MoveCamera, camera);
|
12661
12679
|
};
|
12662
12680
|
_WindowManager.displayer = context.displayer;
|
12663
|
-
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12681
|
+
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12664
12682
|
}
|
12665
12683
|
static async mount(params) {
|
12666
12684
|
var _a;
|
@@ -12699,7 +12717,7 @@ const _WindowManager = class extends whiteWebSdk.InvisiblePlugin {
|
|
12699
12717
|
throw new Error();
|
12700
12718
|
}
|
12701
12719
|
},
|
12702
|
-
{ retries: 10 }
|
12720
|
+
{ retries: 10, maxTimeout: 5e3 }
|
12703
12721
|
);
|
12704
12722
|
}
|
12705
12723
|
if (!manager) {
|
package/dist/index.mjs
CHANGED
@@ -595,9 +595,14 @@ class AppListeners {
|
|
595
595
|
this.moveCameraHandler = (payload) => {
|
596
596
|
const size$ = this.manager.mainViewProxy.size$;
|
597
597
|
if (size$.value) {
|
598
|
-
const
|
599
|
-
|
600
|
-
|
598
|
+
const nextCamera = { ...payload };
|
599
|
+
if (nextCamera.scale) {
|
600
|
+
const size = this.manager.mainView.size;
|
601
|
+
const diff = Math.max(size.height / size$.value.height, size.width / size$.value.width);
|
602
|
+
nextCamera.scale *= diff;
|
603
|
+
} else {
|
604
|
+
delete nextCamera.scale;
|
605
|
+
}
|
601
606
|
this.manager.mainView.moveCamera(nextCamera);
|
602
607
|
}
|
603
608
|
};
|
@@ -2320,8 +2325,18 @@ class MainViewProxy {
|
|
2320
2325
|
this.setMainViewSize = debounce((size) => {
|
2321
2326
|
this.store.setMainViewSize({ ...size, id: this.manager.uid });
|
2322
2327
|
}, 50);
|
2328
|
+
this._syncMainViewTimer = 0;
|
2323
2329
|
this.onCameraOrSizeUpdated = () => {
|
2324
2330
|
callbacks.emit("cameraStateChange", this.cameraState);
|
2331
|
+
if (this.manager.room && this.manager.room.syncMainView) {
|
2332
|
+
clearTimeout(this._syncMainViewTimer);
|
2333
|
+
this._syncMainViewTimer = setTimeout(this.syncMainView, 100, this.manager.room);
|
2334
|
+
}
|
2335
|
+
};
|
2336
|
+
this.syncMainView = (room) => {
|
2337
|
+
if (room.isWritable) {
|
2338
|
+
room.syncMainView(this.mainView);
|
2339
|
+
}
|
2325
2340
|
};
|
2326
2341
|
this.mainView = this.createMainView();
|
2327
2342
|
emitter.once("mainViewMounted").then(() => {
|
@@ -6072,6 +6087,9 @@ class BoxManager {
|
|
6072
6087
|
const { emitter: emitter2, callbacks: callbacks2, boxEmitter: boxEmitter2 } = context;
|
6073
6088
|
this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);
|
6074
6089
|
this.sideEffectManager.add(() => [
|
6090
|
+
this.teleBoxManager.onValChanged("rootRect", (rect) => {
|
6091
|
+
emitter2.emit("playgroundSizeChange", rect);
|
6092
|
+
}),
|
6075
6093
|
// 使用 _xxx$.reaction 订阅修改的值, 不管有没有 skipUpdate, 修改值都会触发回调
|
6076
6094
|
this.teleBoxManager.onValChanged("state", (state) => {
|
6077
6095
|
callbacks2.emit("boxStateChange", state);
|
@@ -12619,8 +12637,8 @@ const reconnectRefresher = new ReconnectRefresher({ emitter });
|
|
12619
12637
|
const _WindowManager = class extends InvisiblePlugin {
|
12620
12638
|
constructor(context) {
|
12621
12639
|
super(context);
|
12622
|
-
this.version = "1.0.0-canary.
|
12623
|
-
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12640
|
+
this.version = "1.0.0-canary.79";
|
12641
|
+
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12624
12642
|
this.emitter = callbacks;
|
12625
12643
|
this.viewMode$ = new Val(ViewMode.Broadcaster);
|
12626
12644
|
this.playground$ = new Val(void 0);
|
@@ -12636,7 +12654,7 @@ const _WindowManager = class extends InvisiblePlugin {
|
|
12636
12654
|
(_b = this.appManager) == null ? void 0 : _b.dispatchInternalEvent(Events.MoveCamera, camera);
|
12637
12655
|
};
|
12638
12656
|
_WindowManager.displayer = context.displayer;
|
12639
|
-
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12657
|
+
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12640
12658
|
}
|
12641
12659
|
static async mount(params) {
|
12642
12660
|
var _a;
|
@@ -12675,7 +12693,7 @@ const _WindowManager = class extends InvisiblePlugin {
|
|
12675
12693
|
throw new Error();
|
12676
12694
|
}
|
12677
12695
|
},
|
12678
|
-
{ retries: 10 }
|
12696
|
+
{ retries: 10, maxTimeout: 5e3 }
|
12679
12697
|
);
|
12680
12698
|
}
|
12681
12699
|
if (!manager) {
|
package/dist/index.umd.js
CHANGED
@@ -590,9 +590,14 @@
|
|
590
590
|
this.moveCameraHandler = (payload) => {
|
591
591
|
const size$ = this.manager.mainViewProxy.size$;
|
592
592
|
if (size$.value) {
|
593
|
-
const
|
594
|
-
|
595
|
-
|
593
|
+
const nextCamera = { ...payload };
|
594
|
+
if (nextCamera.scale) {
|
595
|
+
const size = this.manager.mainView.size;
|
596
|
+
const diff = Math.max(size.height / size$.value.height, size.width / size$.value.width);
|
597
|
+
nextCamera.scale *= diff;
|
598
|
+
} else {
|
599
|
+
delete nextCamera.scale;
|
600
|
+
}
|
596
601
|
this.manager.mainView.moveCamera(nextCamera);
|
597
602
|
}
|
598
603
|
};
|
@@ -2315,8 +2320,18 @@
|
|
2315
2320
|
this.setMainViewSize = lodash.debounce((size) => {
|
2316
2321
|
this.store.setMainViewSize({ ...size, id: this.manager.uid });
|
2317
2322
|
}, 50);
|
2323
|
+
this._syncMainViewTimer = 0;
|
2318
2324
|
this.onCameraOrSizeUpdated = () => {
|
2319
2325
|
callbacks.emit("cameraStateChange", this.cameraState);
|
2326
|
+
if (this.manager.room && this.manager.room.syncMainView) {
|
2327
|
+
clearTimeout(this._syncMainViewTimer);
|
2328
|
+
this._syncMainViewTimer = setTimeout(this.syncMainView, 100, this.manager.room);
|
2329
|
+
}
|
2330
|
+
};
|
2331
|
+
this.syncMainView = (room) => {
|
2332
|
+
if (room.isWritable) {
|
2333
|
+
room.syncMainView(this.mainView);
|
2334
|
+
}
|
2320
2335
|
};
|
2321
2336
|
this.mainView = this.createMainView();
|
2322
2337
|
emitter.once("mainViewMounted").then(() => {
|
@@ -6067,6 +6082,9 @@
|
|
6067
6082
|
const { emitter: emitter2, callbacks: callbacks2, boxEmitter: boxEmitter2 } = context;
|
6068
6083
|
this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);
|
6069
6084
|
this.sideEffectManager.add(() => [
|
6085
|
+
this.teleBoxManager.onValChanged("rootRect", (rect) => {
|
6086
|
+
emitter2.emit("playgroundSizeChange", rect);
|
6087
|
+
}),
|
6070
6088
|
// 使用 _xxx$.reaction 订阅修改的值, 不管有没有 skipUpdate, 修改值都会触发回调
|
6071
6089
|
this.teleBoxManager.onValChanged("state", (state) => {
|
6072
6090
|
callbacks2.emit("boxStateChange", state);
|
@@ -12614,8 +12632,8 @@
|
|
12614
12632
|
const _WindowManager = class extends whiteWebSdk.InvisiblePlugin {
|
12615
12633
|
constructor(context) {
|
12616
12634
|
super(context);
|
12617
|
-
this.version = "1.0.0-canary.
|
12618
|
-
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12635
|
+
this.version = "1.0.0-canary.79";
|
12636
|
+
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12619
12637
|
this.emitter = callbacks;
|
12620
12638
|
this.viewMode$ = new valueEnhancer.Val(whiteWebSdk.ViewMode.Broadcaster);
|
12621
12639
|
this.playground$ = new valueEnhancer.Val(void 0);
|
@@ -12631,7 +12649,7 @@
|
|
12631
12649
|
(_b = this.appManager) == null ? void 0 : _b.dispatchInternalEvent(Events.MoveCamera, camera);
|
12632
12650
|
};
|
12633
12651
|
_WindowManager.displayer = context.displayer;
|
12634
|
-
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.
|
12652
|
+
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.4.0", "@netless/synced-store": "^2.0.7", "@netless/telebox-insider": "1.0.0-alpha.37", "emittery": "^0.11.0", "jspdf": "^2.5.1", "lodash": "^4.17.21", "p-retry": "^5.1.2", "side-effect-manager": "^1.2.1", "uuid": "^9.0.0", "value-enhancer": "^1.3.2" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "1.0.0-canary.6", "@netless/app-plyr": "^0.2.4", "@playwright/test": "^1.33.0", "@rollup/plugin-commonjs": "^24.1.0", "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-url": "^8.0.1", "@sveltejs/vite-plugin-svelte": "^2.2.0", "@tsconfig/svelte": "^4.0.1", "@types/debug": "^4.1.7", "@types/node": "^18.0.3", "@types/lodash": "^4.14.194", "@types/lodash-es": "^4.17.7", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.5", "@typescript-eslint/parser": "^5.59.5", "@vitest/ui": "^0.31.0", "cypress": "^12.12.0", "dotenv": "^16.0.3", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte3": "^4.0.0", "jsdom": "^22.0.0", "less": "^4.1.3", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^4.0.0", "svelte": "^3.59.1", "typescript": "^5.0.4", "vite": "^4.3.5", "vite-plugin-dts": "^2.3.0", "vitest": "^0.31.0", "white-web-sdk": "^2.16.43" } };
|
12635
12653
|
}
|
12636
12654
|
static async mount(params) {
|
12637
12655
|
var _a;
|
@@ -12670,7 +12688,7 @@
|
|
12670
12688
|
throw new Error();
|
12671
12689
|
}
|
12672
12690
|
},
|
12673
|
-
{ retries: 10 }
|
12691
|
+
{ retries: 10, maxTimeout: 5e3 }
|
12674
12692
|
);
|
12675
12693
|
}
|
12676
12694
|
if (!manager) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@netless/window-manager",
|
3
|
-
"version": "1.0.0-canary.
|
3
|
+
"version": "1.0.0-canary.79",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"module": "dist/index.mjs",
|
@@ -57,7 +57,7 @@
|
|
57
57
|
"vite": "^4.3.5",
|
58
58
|
"vite-plugin-dts": "^2.3.0",
|
59
59
|
"vitest": "^0.31.0",
|
60
|
-
"white-web-sdk": "^2.16.
|
60
|
+
"white-web-sdk": "^2.16.43"
|
61
61
|
},
|
62
62
|
"scripts": {
|
63
63
|
"prettier": "prettier --write .",
|
package/src/AppListener.ts
CHANGED
@@ -134,12 +134,24 @@ export class AppListeners {
|
|
134
134
|
}
|
135
135
|
}
|
136
136
|
|
137
|
-
private moveCameraHandler = (payload: Camera) => {
|
137
|
+
private moveCameraHandler = (payload: Partial<Camera>) => {
|
138
138
|
const size$ = this.manager.mainViewProxy.size$;
|
139
|
+
// 'size' 存在表示白板已经可见,此时 moveCamera 才有意义
|
139
140
|
if (size$.value) {
|
140
|
-
const
|
141
|
-
|
142
|
-
|
141
|
+
const nextCamera = { ...payload };
|
142
|
+
|
143
|
+
// 如果远端移动视角带有缩放,调整以符合本地视角
|
144
|
+
if (nextCamera.scale) {
|
145
|
+
const size = this.manager.mainView.size;
|
146
|
+
const diff = Math.max(size.height / size$.value.height, size.width / size$.value.width);
|
147
|
+
nextCamera.scale *= diff;
|
148
|
+
}
|
149
|
+
|
150
|
+
// 有可能传了个 scale = 0, 规避这些无效值
|
151
|
+
else {
|
152
|
+
delete nextCamera.scale;
|
153
|
+
}
|
154
|
+
|
143
155
|
this.manager.mainView.moveCamera(nextCamera);
|
144
156
|
}
|
145
157
|
}
|
package/src/BoxManager.ts
CHANGED
@@ -23,7 +23,7 @@ import type { View } from "white-web-sdk";
|
|
23
23
|
import type { CallbacksType } from "./callback";
|
24
24
|
import type { EmitterType } from "./InternalEmitter";
|
25
25
|
import type { AppState } from "./App/type";
|
26
|
-
import { ReadonlyVal } from "value-enhancer";
|
26
|
+
import type { ReadonlyVal } from "value-enhancer";
|
27
27
|
|
28
28
|
export { TELE_BOX_STATE };
|
29
29
|
|
@@ -108,6 +108,9 @@ export class BoxManager {
|
|
108
108
|
const { emitter, callbacks, boxEmitter } = context;
|
109
109
|
this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);
|
110
110
|
this.sideEffectManager.add(() => [
|
111
|
+
this.teleBoxManager.onValChanged("rootRect", rect => {
|
112
|
+
emitter.emit("playgroundSizeChange", rect);
|
113
|
+
}),
|
111
114
|
// 使用 _xxx$.reaction 订阅修改的值, 不管有没有 skipUpdate, 修改值都会触发回调
|
112
115
|
this.teleBoxManager.onValChanged("state", state => {
|
113
116
|
callbacks.emit("boxStateChange", state);
|
package/src/Cursor/index.ts
CHANGED
@@ -11,7 +11,7 @@ import type { Point, RoomMember, View } from "white-web-sdk";
|
|
11
11
|
import type { AppManager } from "../AppManager";
|
12
12
|
import { ApplianceMap } from "./icons";
|
13
13
|
import { findMemberByUid } from "../Helper";
|
14
|
-
import { Val } from "value-enhancer";
|
14
|
+
import type { Val } from "value-enhancer";
|
15
15
|
|
16
16
|
export type EventType = {
|
17
17
|
type: PositionType;
|
package/src/View/MainView.ts
CHANGED
@@ -10,7 +10,7 @@ import { SideEffectManager } from "side-effect-manager";
|
|
10
10
|
import { Val } from "value-enhancer";
|
11
11
|
import { ViewSync } from "./ViewSync";
|
12
12
|
import type { ICamera, ISize } from "../AttributesDelegate";
|
13
|
-
import type { Size, View } from "white-web-sdk";
|
13
|
+
import type { Room, Size, View } from "white-web-sdk";
|
14
14
|
import type { AppManager } from "../AppManager";
|
15
15
|
import type { MoveCameraParams } from "../typings";
|
16
16
|
|
@@ -320,10 +320,23 @@ export class MainViewProxy {
|
|
320
320
|
this.view.callbacks.off("onSizeUpdated", this.onCameraOrSizeUpdated);
|
321
321
|
}
|
322
322
|
|
323
|
+
private _syncMainViewTimer = 0;
|
323
324
|
private onCameraOrSizeUpdated = () => {
|
324
325
|
callbacks.emit("cameraStateChange", this.cameraState);
|
326
|
+
// sdk >= 2.16.43 的 syncMainView() 可以写入当前 main view 的 camera, 以修复复制粘贴元素的位置
|
327
|
+
// 注意到这个操作会发送信令,应当避免频繁调用
|
328
|
+
if (this.manager.room && (this.manager.room as any).syncMainView) {
|
329
|
+
clearTimeout(this._syncMainViewTimer);
|
330
|
+
this._syncMainViewTimer = setTimeout(this.syncMainView, 100, this.manager.room);
|
331
|
+
}
|
325
332
|
};
|
326
333
|
|
334
|
+
private syncMainView = (room: Room) => {
|
335
|
+
if (room.isWritable) {
|
336
|
+
room.syncMainView(this.mainView);
|
337
|
+
}
|
338
|
+
}
|
339
|
+
|
327
340
|
public stop() {
|
328
341
|
this.manager.refresher.remove(Fields.MainViewCamera);
|
329
342
|
this.manager.refresher.remove(Fields.MainViewSize);
|
package/src/View/ScrollMode.ts
CHANGED
@@ -8,7 +8,7 @@ import { round } from "lodash";
|
|
8
8
|
import type { ReadonlyVal } from "value-enhancer";
|
9
9
|
import type { AppManager } from "../AppManager";
|
10
10
|
import type { ScrollStorage } from "../storage";
|
11
|
-
import type { Camera, Size
|
11
|
+
import type { Camera, Size } from "white-web-sdk";
|
12
12
|
|
13
13
|
function clamp(x: number, min: number, max: number): number {
|
14
14
|
return x < min ? min : x > max ? max : x;
|