@netless/fastboard-core 1.1.2-beta.8 → 1.1.2-beta.9
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/full.js +1 -1
- package/dist/full.mjs +5 -5
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/lite.js +1 -1
- package/dist/lite.mjs +1 -1
- package/package.json +1 -1
package/dist/full.js
CHANGED
|
@@ -258836,7 +258836,7 @@ for (const kind2 in DefaultApps) {
|
|
|
258836
258836
|
WindowManager.register(__spreadValues({ kind: kind2 }, options));
|
|
258837
258837
|
}
|
|
258838
258838
|
}
|
|
258839
|
-
var version2 = "1.1.2-beta.
|
|
258839
|
+
var version2 = "1.1.2-beta.9";
|
|
258840
258840
|
if (typeof window !== "undefined") {
|
|
258841
258841
|
let str = window.__netlessUA || "";
|
|
258842
258842
|
str += ` ${"@netless/fastboard"}@${version2} `;
|
package/dist/full.mjs
CHANGED
|
@@ -54262,9 +54262,9 @@ var require_BigNumber = __commonJS({
|
|
|
54262
54262
|
var dependencies = ["?on", "config"];
|
|
54263
54263
|
var createBigNumberClass = /* @__PURE__ */ (0, _factory.factory)(name, dependencies, function(_ref) {
|
|
54264
54264
|
var on2 = _ref.on, config = _ref.config;
|
|
54265
|
-
var BigNumber = _decimal.clone({
|
|
54265
|
+
var BigNumber = _decimal.default.clone({
|
|
54266
54266
|
precision: config.precision,
|
|
54267
|
-
modulo: _decimal.EUCLID
|
|
54267
|
+
modulo: _decimal.default.EUCLID
|
|
54268
54268
|
});
|
|
54269
54269
|
BigNumber.prototype = Object.create(BigNumber.prototype);
|
|
54270
54270
|
BigNumber.prototype.type = "BigNumber";
|
|
@@ -60875,7 +60875,7 @@ var require_ceil = __commonJS({
|
|
|
60875
60875
|
if ((0, _nearlyEqual.nearlyEqual)(x4, round(x4, n5), config.epsilon)) {
|
|
60876
60876
|
return round(x4, n5);
|
|
60877
60877
|
} else {
|
|
60878
|
-
return x4.toDecimalPlaces(n5.toNumber(), _decimal.ROUND_CEIL);
|
|
60878
|
+
return x4.toDecimalPlaces(n5.toNumber(), _decimal.default.ROUND_CEIL);
|
|
60879
60879
|
}
|
|
60880
60880
|
},
|
|
60881
60881
|
Fraction: function Fraction(x4) {
|
|
@@ -61195,7 +61195,7 @@ var require_floor = __commonJS({
|
|
|
61195
61195
|
if ((0, _nearlyEqual.nearlyEqual)(x4, round(x4, n5), config.epsilon)) {
|
|
61196
61196
|
return round(x4, n5);
|
|
61197
61197
|
} else {
|
|
61198
|
-
return x4.toDecimalPlaces(n5.toNumber(), _decimal.ROUND_FLOOR);
|
|
61198
|
+
return x4.toDecimalPlaces(n5.toNumber(), _decimal.default.ROUND_FLOOR);
|
|
61199
61199
|
}
|
|
61200
61200
|
},
|
|
61201
61201
|
Fraction: function Fraction(x4) {
|
|
@@ -258834,7 +258834,7 @@ for (const kind2 in DefaultApps) {
|
|
|
258834
258834
|
WindowManager.register(__spreadValues({ kind: kind2 }, options));
|
|
258835
258835
|
}
|
|
258836
258836
|
}
|
|
258837
|
-
var version2 = "1.1.2-beta.
|
|
258837
|
+
var version2 = "1.1.2-beta.9";
|
|
258838
258838
|
if (typeof window !== "undefined") {
|
|
258839
258839
|
let str = window.__netlessUA || "";
|
|
258840
258840
|
str += ` ${"@netless/fastboard"}@${version2} `;
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,10 @@ var windowManager = require('@netless/window-manager');
|
|
|
5
5
|
var syncedStore = require('@netless/synced-store');
|
|
6
6
|
var SlideApp = require('@netless/app-slide');
|
|
7
7
|
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var SlideApp__default = /*#__PURE__*/_interopDefault(SlideApp);
|
|
11
|
+
|
|
8
12
|
var __defProp = Object.defineProperty;
|
|
9
13
|
var __defProps = Object.defineProperties;
|
|
10
14
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
@@ -247,7 +251,7 @@ for (const kind in DefaultApps) {
|
|
|
247
251
|
windowManager.WindowManager.register(__spreadValues({ kind }, options));
|
|
248
252
|
}
|
|
249
253
|
}
|
|
250
|
-
var version = "1.1.2-beta.
|
|
254
|
+
var version = "1.1.2-beta.9";
|
|
251
255
|
if (typeof window !== "undefined") {
|
|
252
256
|
let str = window.__netlessUA || "";
|
|
253
257
|
str += ` ${"@netless/fastboard"}@${version} `;
|
|
@@ -1198,11 +1202,14 @@ function dispatchDocsEvent(fastboard, event, options = {}) {
|
|
|
1198
1202
|
windowManager.WindowManager.register({
|
|
1199
1203
|
kind: "Slide",
|
|
1200
1204
|
appOptions: { debug: false },
|
|
1201
|
-
src:
|
|
1205
|
+
src: SlideApp__default.default,
|
|
1202
1206
|
addHooks: SlideApp.addHooks
|
|
1203
1207
|
});
|
|
1204
1208
|
|
|
1205
|
-
exports
|
|
1209
|
+
Object.defineProperty(exports, 'SlideApp', {
|
|
1210
|
+
enumerable: true,
|
|
1211
|
+
get: function () { return SlideApp__default.default; }
|
|
1212
|
+
});
|
|
1206
1213
|
Object.defineProperty(exports, 'addSlideHooks', {
|
|
1207
1214
|
enumerable: true,
|
|
1208
1215
|
get: function () { return SlideApp.addHooks; }
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/store.ts","../src/utils/misc.ts","../src/utils/uid.ts","../src/utils/warn.ts","../src/internal.ts","../src/behaviors/lite.ts","../src/impl/FastboardApp.ts","../src/impl/FastboardPlayer.ts","../src/helpers/listen.ts","../src/helpers/docs.ts","../src/behaviors/index.ts"],"sourcesContent":["// This is a simple mimic of svelte/store.\nexport type Subscriber<T> = (value: T) => void;\nexport type Unsubscriber = () => void;\nexport type Updater<T> = (value: T) => T;\nexport type StartStopNotifier<T> = (set: Subscriber<T>) => Unsubscriber | void;\n\nexport interface Readable<T> {\n readonly value: T;\n subscribe(this: void, run: Subscriber<T>): Unsubscriber;\n reaction(this: void, run: Subscriber<T>): Unsubscriber;\n dispose(value?: T): void;\n}\n\nexport interface Writable<T> extends Readable<T> {\n set(this: void, value: T): void;\n update(this: void, updater: Updater<T>): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nfunction safe_not_equal(a: unknown, b: unknown) {\n return a != a ? b == b : a !== b || (a && typeof a === \"object\") || typeof a === \"function\";\n}\n\nexport function readable<T>(value: T, start: StartStopNotifier<T> = noop): Readable<T> {\n let stop: Unsubscriber | undefined;\n const subscribers = new Set<Subscriber<T>>();\n function set(new_value: T) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) {\n for (const run of subscribers) {\n run(value);\n }\n }\n }\n }\n function subscribe(run: Subscriber<T>) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = undefined;\n }\n };\n }\n function reaction(run: Subscriber<T>) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = undefined;\n }\n };\n }\n function dispose(new_value?: T) {\n if (new_value !== undefined) {\n set(new_value);\n }\n subscribers.clear();\n stop && stop();\n stop = undefined;\n }\n return {\n get value() {\n if (subscribers.size === 0) {\n stop = start(set) || noop;\n stop();\n stop = undefined;\n }\n return value;\n },\n subscribe,\n reaction,\n dispose,\n };\n}\n\nexport function writable<T>(value: T, start: StartStopNotifier<T> = noop, set: Subscriber<T>): Writable<T> {\n const internal = readable(value, start);\n return {\n get value() {\n return internal.value;\n },\n subscribe: internal.subscribe,\n reaction: internal.reaction,\n set,\n update(fn: Updater<T>) {\n set(fn(internal.value));\n },\n dispose: internal.dispose,\n };\n}\n","import type { ConvertedFile, SceneDefinition, Size } from \"white-web-sdk\";\n\nexport function getImageSize(url: string, fallback: Size, crossOrigin?: boolean | string) {\n return new Promise<Size>(resolve => {\n const img = new Image();\n applyCrossOrigin(img, url, crossOrigin);\n img.onload = () => resolve(img);\n img.onerror = () => resolve(fallback);\n img.src = url;\n });\n}\n\n// https://github.com/pixijs/pixijs/blob/dev/packages/core/src/textures/resources/BaseImageResource.ts#L51\nfunction applyCrossOrigin(image: HTMLImageElement, src: string, crossOrigin?: boolean | string): void {\n if (crossOrigin === undefined && !src.startsWith(\"data:\")) {\n image.crossOrigin = determineCrossOrigin(src);\n } else if (crossOrigin !== false) {\n image.crossOrigin = typeof crossOrigin === \"string\" ? crossOrigin : \"anonymous\";\n }\n}\n\nfunction determineCrossOrigin(src: string): string {\n if (src.startsWith(\"data:\") || typeof window === \"undefined\" || !window.location) {\n return \"\";\n }\n const loc = window.location;\n try {\n const parsedUrl = new URL(src, document.baseURI);\n if (\n parsedUrl.hostname !== loc.hostname ||\n parsedUrl.port !== loc.port ||\n parsedUrl.protocol !== loc.protocol\n ) {\n return \"anonymous\";\n }\n return \"\";\n } catch {\n return \"\";\n }\n}\n\nexport function makeSlideParams(scenes: SceneDefinition[]) {\n const emptyScenes: SceneDefinition[] = [];\n let taskId = \"\";\n let url = \"\";\n\n // e.g. \"ppt(x)://cdn/prefix/dynamicConvert/{taskId}/1.slide\"\n const pptSrcRE = /^pptx?(?<prefix>:\\/\\/\\S+?dynamicConvert)\\/(?<taskId>\\w+)\\//;\n\n for (const { name, ppt } of scenes) {\n // make sure scenesWithoutPPT.length === scenes.length\n emptyScenes.push({ name });\n\n if (!ppt || !ppt.src.startsWith(\"ppt\")) continue;\n\n const match = pptSrcRE.exec(ppt.src);\n if (!match || !match.groups) continue;\n\n taskId = match.groups.taskId;\n url = `https${match.groups.prefix}`;\n break;\n }\n\n return { scenes: emptyScenes, taskId, url };\n}\n\nexport function convertedFileToScene(f: ConvertedFile, i: number): SceneDefinition {\n return {\n name: String(i + 1),\n ppt: {\n src: f.conversionFileUrl,\n width: f.width,\n height: f.height,\n previewURL: f.preview,\n },\n };\n}\n","// Copy from https://github.com/crimx/side-effect-manager/blob/main/src/gen-uid.ts\nconst SOUP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nconst SOUP_LEN = 62; // SOUP.length\nconst ID_LEN = 20;\nconst reusedIdCarrier = /* @__PURE__ */ Array(ID_LEN);\n\nexport function genUID() {\n for (let i = 0; i < ID_LEN; i++) {\n reusedIdCarrier[i] = SOUP.charAt(Math.random() * SOUP_LEN);\n }\n return reusedIdCarrier.join(\"\");\n}\n","const warnings = {\n \"no-ppt-in-scenes\":\n \"You're probably inserting the slide app in a wrong way, there shouldn't exist `scenes[0].ppt`.\",\n} as const;\nconst warned = new Set<string>();\n\nexport function warn(id: keyof typeof warnings) {\n if (warned.has(id)) return;\n warned.add(id);\n console.warn(warnings[id]);\n}\n","import type { JoinRoomParams, ReplayRoomParams } from \"white-web-sdk\";\nimport type { PublicEvent } from \"@netless/window-manager\";\nimport { WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\n\nexport function ensure_official_plugins<T extends JoinRoomParams | ReplayRoomParams>(joinRoom: T): T {\n const plugins = new Set(joinRoom.invisiblePlugins || []);\n plugins.add(WindowManager as any);\n plugins.add(SyncedStorePlugin);\n joinRoom.invisiblePlugins = [...plugins];\n return joinRoom;\n}\n\nexport function transform_app_status(status: PublicEvent[\"loadApp\"][\"status\"]) {\n return status === \"start\" ? \"loading\" : status === \"failed\" ? \"failed\" : \"idle\";\n}\n","import { WindowManager, type RegisterParams } from \"@netless/window-manager\";\n\nexport const register = WindowManager.register.bind(WindowManager);\n\nexport interface AppsConfig {\n [kind: string]: Omit<RegisterParams, \"kind\">;\n}\n\nconst DefaultApps: AppsConfig = {\n Monaco: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-monaco/0.1.14-beta.1/dist/main.iife.js\",\n },\n Countdown: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-countdown/0.0.2-alpha.1/dist/main.iife.min.js\",\n },\n GeoGebra: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-geogebra/0.0.4/dist/main.iife.js\",\n appOptions: {\n HTML5Codebase: \"https://flat-storage-cn-hz.whiteboard.agora.io/GeoGebra/HTML5/5.0/web3d\",\n },\n },\n EmbeddedPage: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-embedded-page/0.1.1/dist/main.iife.js\",\n },\n Plyr: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-plyr/0.1.3/dist/main.iife.js\",\n },\n};\n\nfor (const kind in DefaultApps) {\n if (Object.prototype.hasOwnProperty.call(DefaultApps, kind)) {\n const options = DefaultApps[kind];\n WindowManager.register({ kind, ...options });\n }\n}\n\ndeclare let __NAME__: string, __VERSION__: string;\n\nexport const version = __VERSION__;\n\nif (typeof window !== \"undefined\") {\n let str = (window as { __netlessUA?: string }).__netlessUA || \"\";\n str += ` ${__NAME__}@${version} `;\n (window as { __netlessUA?: string }).__netlessUA = str;\n}\n","import type { AddPageParams, PublicEvent, MountParams, NetlessApp } from \"@netless/window-manager\";\nimport type {\n AnimationMode,\n Camera,\n CameraState,\n Color,\n ConversionResponse,\n HotKey,\n HotKeys,\n JoinRoomParams,\n MemberState,\n Rectangle,\n Room,\n RoomPhase as RoomPhaseEnum,\n RoomCallbacks,\n RoomState,\n SceneDefinition,\n ShapeType,\n ViewCallbacks,\n WhiteWebSdkConfiguration,\n FloatBarOptions,\n ApplianceNames,\n} from \"white-web-sdk\";\nimport type { SyncedStore, Storage, Diff, DiffOne } from \"@netless/synced-store\";\n\nimport { DefaultHotKeys, WhiteWebSdk, contentModeScale } from \"white-web-sdk\";\nimport { BuiltinApps, WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\nimport {\n getImageSize,\n genUID,\n convertedFileToScene,\n makeSlideParams,\n readable,\n writable,\n warn,\n} from \"../utils\";\nimport { ensure_official_plugins, transform_app_status } from \"../internal\";\nimport { register } from \"../behaviors/lite\";\n\nimport type {\n AppliancePluginOptions,\n AppliancePluginInstance,\n ApplianceNames as ExtendApplianceNames,\n MemberState as ExtendMemberState,\n PublicEvent as AppliancePublicEvent,\n PublicListener as AppliancePublicListener,\n ApplianceMultiPlugin,\n} from \"@netless/appliance-plugin\";\n\nimport type {\n AppInMainViewOptions,\n AppInMainViewInstance,\n PublicEvent as AppInMainViewPublicEvent,\n PublicListener as AppInMainViewPublicListener,\n AppId,\n AppValue,\n AppInMainViewPlugin,\n} from \"@netless/app-in-mainview-plugin\";\n\nfunction noop() {}\n\nclass FastboardAppBase<TEventData extends Record<string, any> = any> {\n public constructor(\n readonly sdk: WhiteWebSdk,\n readonly room: Room,\n readonly manager: WindowManager,\n readonly hotKeys: Partial<HotKeys>,\n readonly syncedStore: SyncedStore<TEventData>,\n readonly appliancePlugin?: AppliancePluginInstance,\n readonly appInMainViewPlugin?: AppInMainViewInstance\n ) {}\n\n protected _destroyed = false;\n /** @internal */\n protected _assertNotDestroyed() {\n if (this._destroyed) {\n throw new Error(\"FastboardApp has been destroyed\");\n }\n }\n\n /** @internal */\n protected _addRoomListener<K extends keyof RoomCallbacks>(name: K, listener: RoomCallbacks[K]) {\n if (this._destroyed) return noop;\n this.room.callbacks.on(name, listener);\n return () => this.room.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addManagerListener<K extends keyof PublicEvent>(\n name: K,\n listener: (value: PublicEvent[K]) => void\n ) {\n if (this._destroyed) return noop;\n this.manager.emitter.on(name, listener);\n return () => this.manager.emitter.off(name, listener);\n }\n\n /** @internal */\n protected _addMainViewListener<K extends keyof ViewCallbacks>(name: K, listener: ViewCallbacks[K]) {\n if (this._destroyed) return noop;\n // Note: the callbacks will be invalid when reconnected, need rebind manually.\n this.manager.mainView.callbacks.on(name, listener);\n return () => this.manager.mainView.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addApplianceListener<K extends AppliancePublicEvent>(\n name: K,\n listener: AppliancePublicListener[K]\n ) {\n if (this._destroyed || !this.appliancePlugin) return noop;\n this.appliancePlugin.addListener(name, listener);\n return () => this.appliancePlugin?.removeListener(name, listener);\n }\n\n /** @internal */\n protected _addAppInMainViewListener<K extends AppInMainViewPublicEvent>(\n name: K,\n listener: AppInMainViewPublicListener[K]\n ) {\n if (this._destroyed || !this.appInMainViewPlugin) return noop;\n this.appInMainViewPlugin.addListener(name, listener);\n return () => this.appInMainViewPlugin?.removeListener(name, listener);\n }\n\n /**\n * Destroy fastboard (disconnect from the whiteboard room).\n */\n public async destroy() {\n this._destroyed = true;\n this.manager.destroy();\n this.appliancePlugin?.destroy();\n this.appInMainViewPlugin?.destroy();\n await this.room.disconnect().catch(console.warn);\n }\n}\n\ntype RoomPhase = `${RoomPhaseEnum}`;\n\nexport type {\n AddPageParams,\n AnimationMode,\n ApplianceNames,\n Camera,\n CameraState,\n Color,\n ConversionResponse,\n HotKey,\n HotKeys,\n JoinRoomParams,\n MemberState,\n MountParams,\n NetlessApp,\n PublicEvent,\n Rectangle,\n Room,\n RoomPhase,\n RoomCallbacks,\n RoomState,\n SceneDefinition,\n ShapeType,\n SyncedStore,\n Storage,\n Diff,\n DiffOne,\n ViewCallbacks,\n WhiteWebSdk,\n WhiteWebSdkConfiguration,\n WindowManager,\n ExtendApplianceNames,\n ExtendMemberState,\n};\n\n/** pencil, eraser, rectangle... */\nexport type Appliance = `${ExtendApplianceNames}`;\n/** triangle, star... */\nexport type Shape = `${ShapeType}`;\n\n/** Params for static docs, they are rendered as many images. */\nexport interface InsertDocsStatic {\n readonly fileType: \"pdf\";\n /** Unique string for binding whiteboard view to the doc. Must start with `/`. */\n readonly scenePath: string;\n /** @example [{ name: '1', ppt: { src: 'url/to/ppt/1.png' } }] */\n readonly scenes: SceneDefinition[];\n /** Window title. */\n readonly title?: string;\n}\n\n/** Params for slides, they are rendered in @netless/app-slide with animations. */\nexport interface InsertDocsDynamic {\n readonly fileType: \"pptx\";\n /** Unique string for binding whiteboard view to the doc. Must start with `/`. */\n readonly scenePath: string;\n /** Conversion task id, see https://developer.netless.link/server-en/home/server-conversion#get-query-task-conversion-progress. */\n readonly taskId: string;\n /** Window title. */\n readonly title?: string;\n /** Where the slide resource placed. @default `https://convertcdn.netless.link/dynamicConvert` */\n readonly url?: string;\n /** @example [{ name: '1' }, { name: '2' }, { name: '3' }] */\n readonly scenes?: SceneDefinition[];\n}\n\nexport type InsertDocsParams = InsertDocsStatic | InsertDocsDynamic;\n\nexport interface ProjectorResponse {\n uuid: string;\n status: \"Waiting\" | \"Converting\" | \"Finished\" | \"Fail\";\n type: \"dynamic\" | \"static\";\n /** 0..100 */\n convertedPercentage: number;\n /** https://example.org/path/to/{static,dynamic}Convert */\n prefix?: string;\n pageCount?: number;\n /** {1:\"{prefix}/{taskId}/preview/1.png\"}, only when type=dynamic and preview=true */\n previews?: Record<number, string>;\n /** {prefix}/{taskId}/jsonOutput/note.json */\n note?: string;\n /** {1:{width,height,url}}, only when type=static */\n images?: Record<number, { width: number; height: number; url: string }>;\n /** 20xxxxx */\n errorCode?: string;\n errorMessage?: string;\n}\n\nexport type SetMemberStateFn = (partialMemberState: Partial<MemberState>) => void;\n\nexport type RoomStateChanged = (diff: Partial<RoomState>) => void;\n\n/** App download progress. */\nexport interface AppsStatus {\n [kind: string]: {\n status: \"idle\" | \"loading\" | \"failed\";\n /** Exist if status is `failed`. */\n reason?: string;\n };\n}\n\nexport class FastboardApp<TEventData extends Record<string, any> = any> extends FastboardAppBase<TEventData> {\n /**\n * Render this app to some DOM.\n */\n bindContainer(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindContainer(container);\n }\n\n /**\n * Move window-manager's collector to some place.\n */\n bindCollector(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindCollectorContainer(container);\n }\n\n /**\n * Is current room writable?\n */\n readonly writable = writable(\n this.room.isWritable,\n set => {\n set(this.room.isWritable);\n return this._addRoomListener(\"onEnableWriteNowChanged\", () => set(this.room.isWritable));\n },\n this.room.setWritable.bind(this.room)\n );\n\n /**\n * Is current room online?\n */\n readonly phase = readable<RoomPhase>(this.room.phase, set => {\n set(this.room.phase);\n return this._addRoomListener(\"onPhaseChanged\", set);\n });\n\n /**\n * Current window-manager's windows' state (is it maximized?).\n */\n readonly boxState = readable(this.manager.boxState, set => {\n set(this.manager.boxState);\n return this._addManagerListener(\"boxStateChange\", set);\n });\n\n /**\n * Current window-manager's focused app's id.\n * @example \"HelloWorld-1A2b3C4d\"\n */\n readonly focusedApp = readable(this.manager.focused, set => {\n set(this.manager.focused);\n return this._addManagerListener(\"focusedChange\", set);\n });\n\n /**\n * How many times can I call `app.redo()`?\n */\n readonly canRedoSteps = readable(this.manager.canRedoSteps, set => {\n set(this.manager.canRedoSteps);\n return this._addManagerListener(\"canRedoStepsChange\", set);\n });\n\n /**\n * How many times can I call `app.undo()`?\n */\n readonly canUndoSteps = readable(this.manager.canUndoSteps, set => {\n set(this.manager.canUndoSteps);\n return this._addManagerListener(\"canUndoStepsChange\", set);\n });\n\n /**\n * Current camera information of main view.\n *\n * Change the camera position by `app.moveCamera()`.\n */\n readonly camera = readable(this.manager.cameraState, set => {\n set(this.manager.cameraState);\n return this._addManagerListener(\"cameraStateChange\", set);\n });\n\n /**\n * Current tool's info, like \"is using pencil?\", \"what color?\".\n *\n * Change the tool by `app.setAppliance()`.\n */\n readonly memberState = readable(this.room.state.memberState, set => {\n set(this.room.state.memberState);\n return this._addRoomListener(\"onRoomStateChanged\", ({ memberState: m }) => m && set(m));\n });\n\n /**\n * 0..n-1, current index of main view scenes.\n */\n readonly sceneIndex = writable(\n this.manager.mainViewSceneIndex,\n set => {\n set(this.manager.mainViewSceneIndex);\n return this._addManagerListener(\"mainViewSceneIndexChange\", set);\n },\n this.manager.setMainViewSceneIndex.bind(this.manager)\n );\n\n /**\n * How many pages are in the main view?\n */\n readonly sceneLength = readable(this.manager.mainViewScenesLength, set => {\n set(this.manager.mainViewScenesLength);\n return this._addManagerListener(\"mainViewScenesLengthChange\", set);\n });\n\n /** @internal */\n private _appsStatus: AppsStatus = {};\n /**\n * Apps status.\n */\n readonly appsStatus = readable<AppsStatus>({}, set =>\n this._addManagerListener(\"loadApp\", ({ kind, status, reason }) => {\n this._appsStatus[kind] = { status: transform_app_status(status), reason };\n set(this._appsStatus);\n })\n );\n\n /** @internal */\n private _visibleApps: Set<AppId> = new Set();\n /**\n * visible Apps, when appInMainViewPlugin is not enabled, it will be empty.\n */\n readonly visibleApps = readable<Set<AppId>>(this._visibleApps, set => {\n if (!this.appInMainViewPlugin) {\n set(this._visibleApps);\n return;\n }\n const apps = this.appInMainViewPlugin.currentPageVisibleApps;\n if (apps) {\n this._visibleApps = apps;\n }\n set(this._visibleApps);\n return this._addAppInMainViewListener(\"appMenuChange\", (apps: Map<AppId, AppValue>) => {\n this._visibleApps = new Set(\n [...apps.entries()].filter(([_, { status }]) => status === \"visible\").map(([appId]) => appId)\n );\n set(this._visibleApps);\n });\n });\n\n /**\n * Returns `writable && phase === \"connected\"`.\n */\n get canOperate(): boolean {\n return this.room.isWritable && this.room.phase === \"connected\";\n }\n\n /**\n * Undo a step on main view.\n */\n undo() {\n this._assertNotDestroyed();\n if (this.appliancePlugin) {\n this.appliancePlugin.undo();\n return;\n }\n this.manager.undo();\n }\n\n /**\n * Redo a step on main view.\n */\n redo() {\n this._assertNotDestroyed();\n if (this.appliancePlugin) {\n this.appliancePlugin.redo();\n return;\n }\n this.manager.redo();\n }\n\n /**\n * Move current main view's camera position.\n */\n moveCamera(camera: Partial<Camera> & { animationMode?: AnimationMode | undefined }) {\n this._assertNotDestroyed();\n this.manager.moveCamera(camera);\n }\n\n /**\n * Move current main view's camera to include a rectangle.\n */\n moveCameraToContain(rectangle: Rectangle & { animationMode?: AnimationMode }) {\n this._assertNotDestroyed();\n this.manager.moveCameraToContain(rectangle);\n }\n\n /**\n * Delete all things on the main view.\n */\n cleanCurrentScene() {\n this._assertNotDestroyed();\n this.manager.cleanCurrentScene();\n }\n\n /**\n * Set current tool, like \"pencil\".\n */\n setAppliance(appliance: ExtendApplianceNames | Appliance, shape?: ShapeType | Shape) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({\n currentApplianceName: appliance as ApplianceNames,\n shapeType: shape as ShapeType,\n });\n }\n\n /**\n * Set pencil and shape's thickness.\n */\n setStrokeWidth(strokeWidth: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ strokeWidth });\n }\n\n /**\n * Set pencil and shape's color.\n */\n setStrokeColor(strokeColor: Color) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ strokeColor });\n }\n\n /**\n * Set text size. Default is 16.\n */\n setTextSize(textSize: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ textSize });\n }\n\n /**\n * Set text color.\n *\n * @example\n * setTextColor([0x66, 0xcc, 0xff])\n */\n setTextColor(textColor: Color) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ textColor });\n }\n\n /**\n * Toggle dotted line effect on pencil.\n */\n toggleDottedLine(force?: boolean) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ dottedLine: force ?? !this.memberState.value.dottedLine });\n }\n\n /**\n * Set pencil eraser size.\n */\n setPencilEraserSize(size: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ pencilEraserSize: size });\n }\n\n /**\n * Goto previous page (the main whiteboard view).\n */\n prevPage() {\n this._assertNotDestroyed();\n return this.manager.prevPage();\n }\n\n /**\n * Goto next page (the main whiteboard view).\n */\n nextPage() {\n this._assertNotDestroyed();\n return this.manager.nextPage();\n }\n\n /**\n * Goto any page (index range: 0..n-1)\n */\n jumpPage(index: number) {\n this._assertNotDestroyed();\n return this.manager.jumpPage(index);\n }\n\n /**\n * Add one page to the main whiteboard view.\n *\n * @example\n * addPage({ after: true }) // add one page right after current one.\n * nextPage() // then, goto that page.\n */\n addPage(params?: AddPageParams) {\n this._assertNotDestroyed();\n return this.manager.addPage(params);\n }\n\n /**\n * Remove one page at given index or current page (by default).\n *\n * Requires `@netless/window-manager` >= 0.4.30.\n *\n * @example\n * removePage() // remove current page\n */\n removePage(index?: number) {\n this._assertNotDestroyed();\n return this.manager.removePage(index);\n }\n\n /**\n * Insert an image to the main view.\n *\n * @param crossOrigin Whether to load the image with CORS enabled, default is `true`.\n *\n * @example\n * insertImage(\"https://i.imgur.com/CzXTtJV.jpg\")\n */\n async insertImage(url: string, crossOrigin?: boolean | string) {\n this._assertNotDestroyed();\n await this.manager.switchMainViewToWriter();\n\n const { divElement } = this.manager.mainView;\n const containerSize = {\n width: divElement?.scrollWidth || window.innerWidth,\n height: divElement?.scrollHeight || window.innerHeight,\n };\n\n // 1. shrink the image a little to fit container **width**\n const maxWidth = containerSize.width * 0.8;\n let { width, height } = await getImageSize(url, containerSize, crossOrigin);\n const scale = Math.min(maxWidth / width, 1);\n const uuid = genUID();\n const { centerX, centerY } = this.manager.camera;\n width *= scale;\n height *= scale;\n const obj = this.appliancePlugin || this.manager.mainView;\n obj.insertImage({\n uuid,\n centerX,\n centerY,\n width,\n height,\n locked: false,\n crossOrigin,\n });\n obj.completeImageUpload(uuid, url);\n\n // 2. move camera to fit image **height**\n width /= 0.8;\n height /= 0.8;\n const originX = centerX - width / 2;\n const originY = centerY - height / 2;\n this.manager.moveCameraToContain({ originX, originY, width, height });\n }\n\n /**\n * Insert PDF/PPTX from conversion result.\n * @param status https://developer.netless.link/server-en/home/server-conversion#get-query-task-conversion-progress\n */\n insertDocs(filename: string, status: ConversionResponse): Promise<string | undefined>;\n\n /**\n * Insert PDF/PPTX from projector conversion result.\n * @param response https://developer.netless.link/server-zh/home/server-projector#get-%E6%9F%A5%E8%AF%A2%E4%BB%BB%E5%8A%A1%E8%BD%AC%E6%8D%A2%E8%BF%9B%E5%BA%A6\n */\n insertDocs(filename: string, response: ProjectorResponse): Promise<string | undefined>;\n\n /**\n * Manual way.\n * @example\n * app.insertDocs({\n * fileType: 'pptx',\n * scenePath: `/pptx/${conversion.taskId}`,\n * taskId: conversion.taskId,\n * title: 'Title',\n * })\n */\n insertDocs(params: InsertDocsParams): Promise<string | undefined>;\n\n insertDocs(arg1: string | InsertDocsParams, arg2?: ConversionResponse | ProjectorResponse) {\n this._assertNotDestroyed();\n if (typeof arg1 === \"object\" && \"fileType\" in arg1) {\n return this._insertDocsImpl(arg1);\n } else if (arg2 && arg2.status !== \"Finished\") {\n throw new Error(\"FastboardApp cannot insert a converting doc.\");\n } else if (arg2 && \"progress\" in arg2) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const scenes1 = arg2.progress.convertedFileList.map(convertedFileToScene);\n const { scenes, taskId, url } = makeSlideParams(scenes1);\n if (taskId && url) {\n return this._insertDocsImpl({ fileType: \"pptx\", scenePath, scenes, title, taskId, url });\n } else {\n return this._insertDocsImpl({ fileType: \"pdf\", scenePath, scenes: scenes1, title });\n }\n } else if (arg2 && arg2.images) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const scenes: SceneDefinition[] = [];\n for (const name in arg2.images) {\n const { width, height, url } = arg2.images[name];\n scenes.push({ name, ppt: { width, height, src: url } });\n }\n return this._insertDocsImpl({ fileType: \"pdf\", scenePath, scenes, title });\n } else if (arg2 && arg2.prefix) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const taskId = arg2.uuid;\n const url = arg2.prefix;\n this._insertDocsImpl({ fileType: \"pptx\", scenePath, taskId, title, url });\n } else {\n throw new Error(\"Invalid input: not found 'progress', 'prefix' nor 'images'\");\n }\n }\n\n /** @internal */\n private _insertDocsImpl({ fileType, scenePath, title, scenes, ...attributes }: InsertDocsParams) {\n this._assertNotDestroyed();\n switch (fileType) {\n case \"pdf\":\n return this.manager.addApp({\n kind: \"DocsViewer\",\n options: { scenePath, title, scenes },\n });\n case \"pptx\":\n if (scenes && scenes[0].ppt) {\n warn(\"no-ppt-in-scenes\");\n }\n return this.manager.addApp({\n kind: \"Slide\",\n options: { scenePath, title, scenes },\n attributes,\n });\n }\n }\n\n /**\n * Insert the Media Player app.\n */\n insertMedia(title: string, src: string) {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: BuiltinApps.MediaPlayer,\n options: { title },\n attributes: { src },\n });\n }\n\n /**\n * Insert the Monaco Code Editor app.\n * @deprecated Use `app.manager.addApp({ kind: 'Monaco' })` instead.\n */\n insertCodeEditor() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"Monaco\",\n options: { title: \"Code Editor\" },\n });\n }\n\n /**\n * Insert the Countdown app.\n * @deprecated Use `app.manager.addApp({ kind: 'Countdown' })` instead.\n */\n insertCountdown() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"Countdown\",\n options: { title: \"Countdown\" },\n });\n }\n\n /**\n * Insert the GeoGebra app.\n * @deprecated Use `app.manager.addApp({ kind: 'GeoGebra' })` instead.\n */\n insertGeoGebra() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"GeoGebra\",\n options: { title: \"GeoGebra\" },\n });\n }\n\n override async destroy() {\n await super.destroy();\n this.phase.dispose(\"disconnected\");\n this.writable.dispose(false);\n }\n}\n\nexport interface FastboardOptions {\n sdkConfig: Omit<WhiteWebSdkConfiguration, \"useMobXState\"> & {\n region: NonNullable<WhiteWebSdkConfiguration[\"region\"]>;\n };\n joinRoom: Omit<JoinRoomParams, \"useMultiViews\" | \"disableNewPencil\" | \"disableMagixEventDispatchLimit\"> & {\n callbacks?: Partial<Omit<RoomCallbacks, \"onCanRedoStepsUpdate\" | \"onCanUndoStepsUpdate\">>;\n };\n managerConfig?: Omit<MountParams, \"room\">;\n netlessApps?: NetlessApp[];\n enableAppliancePlugin?: AppliancePluginOptions;\n enableAppInMainViewPlugin?: true | AppInMainViewOptions;\n}\n\n/**\n * Create a FastboardApp instance.\n * @example\n * let app = await createFastboard({\n * sdkConfig: {\n * appIdentifier: import.meta.env.VITE_APPID,\n * region: 'cn-hz',\n * },\n * joinRoom: {\n * uid: unique_id,\n * uuid: import.meta.env.VITE_ROOM_UUID,\n * roomToken: import.meta.env.VITE_ROOM_TOKEN,\n * },\n * })\n */\nexport async function createFastboard<TEventData extends Record<string, any> = any>({\n sdkConfig,\n joinRoom: { callbacks, ...joinRoomParams },\n managerConfig,\n netlessApps,\n enableAppliancePlugin,\n enableAppInMainViewPlugin,\n}: FastboardOptions) {\n const isEnableAppliancePlugin =\n enableAppliancePlugin?.cdn.fullWorkerUrl && enableAppliancePlugin?.cdn.subWorkerUrl ? true : false;\n\n const joinRoomParamsWithPlugin = ensure_official_plugins(joinRoomParams);\n let _ApplianceMultiPlugin: typeof ApplianceMultiPlugin | undefined;\n if (isEnableAppliancePlugin) {\n const { ApplianceMultiPlugin } = await import(\"@netless/appliance-plugin\");\n _ApplianceMultiPlugin = ApplianceMultiPlugin;\n if (joinRoomParamsWithPlugin.invisiblePlugins) {\n joinRoomParamsWithPlugin.invisiblePlugins = [\n ...joinRoomParamsWithPlugin.invisiblePlugins,\n _ApplianceMultiPlugin,\n ];\n }\n if (managerConfig) {\n managerConfig.supportAppliancePlugin = true;\n }\n }\n let _AppInMainViewPlugin: typeof AppInMainViewPlugin | undefined;\n if (enableAppInMainViewPlugin && joinRoomParamsWithPlugin.invisiblePlugins) {\n const { AppInMainViewPlugin } = await import(\"@netless/app-in-mainview-plugin\");\n _AppInMainViewPlugin = AppInMainViewPlugin;\n joinRoomParamsWithPlugin.invisiblePlugins = [\n ...joinRoomParamsWithPlugin.invisiblePlugins,\n _AppInMainViewPlugin,\n ];\n }\n\n const sdk = new WhiteWebSdk({\n ...sdkConfig,\n useMobXState: true,\n });\n\n const hotKeys = joinRoomParams.hotKeys || {\n ...DefaultHotKeys,\n changeToSelector: \"s\",\n changeToLaserPointer: \"z\",\n changeToPencil: \"p\",\n changeToRectangle: \"r\",\n changeToEllipse: \"c\",\n changeToEraser: \"e\",\n changeToText: \"t\",\n changeToStraight: \"l\",\n changeToArrow: \"a\",\n changeToHand: \"h\",\n };\n\n if (netlessApps) {\n netlessApps.forEach(app => {\n register({ kind: app.kind, src: app });\n });\n }\n\n const room = await sdk.joinRoom(\n {\n floatBar: true,\n hotKeys,\n ...joinRoomParamsWithPlugin,\n useMultiViews: true,\n disableNewPencil: false,\n disableMagixEventDispatchLimit: true,\n },\n callbacks\n );\n const syncedStore = await SyncedStorePlugin.init<TEventData>(room);\n const manager = await WindowManager.mount({\n cursor: true,\n ...managerConfig,\n room,\n });\n let appInMainViewPluginInstance: AppInMainViewInstance | undefined;\n if (enableAppInMainViewPlugin && _AppInMainViewPlugin) {\n appInMainViewPluginInstance = await _AppInMainViewPlugin.getInstance(\n manager,\n enableAppInMainViewPlugin === true ? undefined : enableAppInMainViewPlugin\n );\n }\n let appliancePluginInstance: AppliancePluginInstance | undefined;\n if (isEnableAppliancePlugin && enableAppliancePlugin && _ApplianceMultiPlugin) {\n appliancePluginInstance = await _ApplianceMultiPlugin.getInstance(manager, {\n options: enableAppliancePlugin,\n });\n }\n if (room.isWritable && ((room as any).floatBarOptions as FloatBarOptions)?.colors.length) {\n const colors = (room as any).floatBarOptions?.colors;\n const length = colors.length;\n const index = room.observerId % length;\n const color = colors[index];\n manager.mainView.setMemberState({\n strokeColor: color,\n textColor: color,\n });\n }\n manager.mainView.setCameraBound({\n minContentMode: contentModeScale(0.3),\n maxContentMode: contentModeScale(3),\n });\n\n return new FastboardApp<TEventData>(\n sdk,\n room,\n manager,\n hotKeys,\n syncedStore,\n appliancePluginInstance,\n appInMainViewPluginInstance\n );\n}\n","import type { MountParams, NetlessApp, PublicEvent } from \"@netless/window-manager\";\nimport type {\n Player,\n PlayerPhase as PlayerPhaseEnum,\n PlayerCallbacks,\n PlayerState,\n PlayerSeekingResult,\n ReplayRoomParams,\n ViewCallbacks,\n WhiteWebSdkConfiguration,\n} from \"white-web-sdk\";\nimport type { SyncedStore } from \"@netless/synced-store\";\n\nimport { WhiteWebSdk } from \"white-web-sdk\";\nimport { WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\nimport { readable, writable } from \"../utils\";\nimport { ensure_official_plugins } from \"../internal\";\nimport { register } from \"../behaviors/lite\";\nimport type {\n AppliancePluginOptions,\n AppliancePluginInstance,\n ApplianceMultiPlugin,\n} from \"@netless/appliance-plugin\";\nimport type {\n AppInMainViewPlugin,\n AppInMainViewOptions,\n AppInMainViewInstance,\n} from \"@netless/app-in-mainview-plugin\";\nfunction noop() {}\n\nclass FastboardPlayerBase<TEventData extends Record<string, any> = any> {\n public constructor(\n readonly sdk: WhiteWebSdk,\n readonly player: Player,\n readonly manager: WindowManager,\n readonly syncedStore: SyncedStore<TEventData>,\n readonly appliancePlugin?: AppliancePluginInstance,\n readonly appInMainViewPlugin?: AppInMainViewInstance\n ) {}\n\n protected _destroyed = false;\n /** @internal */\n protected _assertNotDestroyed() {\n if (this._destroyed) {\n throw new Error(\"FastboardApp has been destroyed\");\n }\n }\n\n /** @internal */\n protected _addPlayerListener<K extends keyof PlayerCallbacks>(name: K, listener: PlayerCallbacks[K]) {\n if (this._destroyed) return noop;\n this.player.callbacks.on(name, listener);\n return () => this.player.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addManagerListener<K extends keyof PublicEvent>(\n name: K,\n listener: (value: PublicEvent[K]) => void\n ) {\n if (this._destroyed) return noop;\n this.manager.emitter.on(name, listener);\n return () => this.manager.emitter.off(name, listener);\n }\n\n /** @internal */\n protected _addMainViewListener<K extends keyof ViewCallbacks>(name: K, listener: ViewCallbacks[K]) {\n if (this._destroyed) return noop;\n this.manager.mainView.callbacks.on(name, listener);\n return () => this.manager.mainView.callbacks.off(name, listener);\n }\n\n public destroy() {\n this._destroyed = true;\n this.manager.destroy();\n this.appliancePlugin?.destroy();\n this.appInMainViewPlugin?.destroy();\n return this.player.callbacks.off();\n }\n}\n\ntype PlayerPhase = `${PlayerPhaseEnum}`;\n\nexport type { PlayerPhase, PlayerSeekingResult };\n\nexport class FastboardPlayer<\n TEventData extends Record<string, any> = any,\n> extends FastboardPlayerBase<TEventData> {\n /**\n * Render this player to some DOM.\n */\n bindContainer(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindContainer(container);\n }\n\n /**\n * Move window-manager's collector to some place.\n */\n bindCollector(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindCollectorContainer(container);\n }\n\n /**\n * Player current time in milliseconds.\n */\n readonly currentTime = writable(\n this.player.progressTime,\n set => {\n set(this.player.progressTime);\n return this._addPlayerListener(\"onProgressTimeChanged\", set);\n },\n this.player.seekToProgressTime.bind(this.player)\n );\n\n /**\n * Player state, like \"is it playing?\".\n */\n readonly phase = readable<PlayerPhase>(this.player.phase, set => {\n set(this.player.phase);\n return this._addPlayerListener(\"onPhaseChanged\", set);\n });\n\n /**\n * Will become true after buffering.\n */\n readonly canplay = readable(this.player.isPlayable, set => {\n set(this.player.isPlayable);\n return this._addPlayerListener(\"onIsPlayableChanged\", set);\n });\n\n /** @internal */\n private _setPlaybackRate!: (value: number) => void;\n /**\n * Playback speed, default `1`.\n */\n readonly playbackRate = writable(\n this.player.playbackSpeed,\n set => {\n this._setPlaybackRate = set;\n set(this.player.playbackSpeed);\n },\n value => {\n this.player.playbackSpeed = value;\n this._setPlaybackRate(value);\n }\n );\n\n /**\n * Playback duration in milliseconds.\n */\n readonly duration = readable(this.player.timeDuration, set => {\n set(this.player.timeDuration);\n });\n\n /**\n * Get state of room at that time, like \"who was in the room?\".\n */\n readonly state = readable<PlayerState>(this.player.state, set => {\n set(this.player.state);\n return this._addPlayerListener(\"onPlayerStateChanged\", () => set(this.player.state));\n });\n\n /**\n * Seek to some time in milliseconds.\n */\n seek(timestamp: number) {\n this._assertNotDestroyed();\n return this.player.seekToProgressTime(timestamp);\n }\n\n /**\n * Change player state to playing.\n */\n play() {\n this._assertNotDestroyed();\n this.player.play();\n }\n\n /**\n * Change player state to paused.\n */\n pause() {\n this._assertNotDestroyed();\n this.player.pause();\n }\n\n /**\n * Change player state to stopped.\n */\n stop() {\n this._assertNotDestroyed();\n this.player.stop();\n }\n\n /**\n * Set playback speed, a shortcut for `speed.set(x)`.\n */\n setPlaybackRate(value: number) {\n this._assertNotDestroyed();\n this.playbackRate.set(value);\n }\n}\n\nexport interface FastboardReplayOptions {\n sdkConfig: Omit<WhiteWebSdkConfiguration, \"useMobXState\"> & {\n region: NonNullable<WhiteWebSdkConfiguration[\"region\"]>;\n };\n replayRoom: Omit<ReplayRoomParams, \"useMultiViews\"> & {\n callbacks?: Partial<PlayerCallbacks>;\n };\n managerConfig?: Omit<MountParams, \"room\">;\n netlessApps?: NetlessApp[];\n enableAppliancePlugin?: AppliancePluginOptions;\n enableAppInMainViewPlugin?: true | AppInMainViewOptions;\n}\n\n/**\n * Create a FastboardPlayer instance.\n * @example\n * let player = await replayFastboard({\n * sdkConfig: {\n * appIdentifier: import.meta.env.VITE_APPID,\n * region: 'cn-hz',\n * },\n * replayRoom: {\n * room: \"room uuid\",\n * roomToken: \"NETLESSROOM_...\",\n * beginTimestamp: 1646619090394,\n * duration: 70448,\n * },\n * })\n */\nexport async function replayFastboard<TEventData extends Record<string, any> = any>({\n sdkConfig,\n replayRoom: { callbacks, ...replayRoomParams },\n managerConfig,\n netlessApps,\n enableAppliancePlugin,\n enableAppInMainViewPlugin,\n}: FastboardReplayOptions) {\n const isEnableAppliancePlugin =\n enableAppliancePlugin?.cdn.fullWorkerUrl && enableAppliancePlugin?.cdn.subWorkerUrl ? true : false;\n\n const replayRoomParamsWithPlugin = ensure_official_plugins(replayRoomParams);\n let _ApplianceMultiPlugin: typeof ApplianceMultiPlugin | undefined;\n if (isEnableAppliancePlugin) {\n const { ApplianceMultiPlugin } = await import(\"@netless/appliance-plugin\");\n _ApplianceMultiPlugin = ApplianceMultiPlugin;\n if (replayRoomParamsWithPlugin.invisiblePlugins) {\n replayRoomParamsWithPlugin.invisiblePlugins = [\n ...replayRoomParamsWithPlugin.invisiblePlugins,\n _ApplianceMultiPlugin,\n ];\n }\n\n if (managerConfig) {\n managerConfig.supportAppliancePlugin = true;\n }\n }\n let _AppInMainViewPlugin: typeof AppInMainViewPlugin | undefined;\n if (enableAppInMainViewPlugin && replayRoomParamsWithPlugin.invisiblePlugins) {\n const { AppInMainViewPlugin } = await import(\"@netless/app-in-mainview-plugin\");\n _AppInMainViewPlugin = AppInMainViewPlugin;\n replayRoomParamsWithPlugin.invisiblePlugins = [\n ...replayRoomParamsWithPlugin.invisiblePlugins,\n _AppInMainViewPlugin,\n ];\n }\n\n const sdk = new WhiteWebSdk({\n ...sdkConfig,\n useMobXState: true,\n });\n\n if (netlessApps) {\n netlessApps.forEach(app => {\n register({ kind: app.kind, src: app });\n });\n }\n\n const player = await sdk.replayRoom(\n {\n ...replayRoomParamsWithPlugin,\n useMultiViews: true,\n },\n callbacks\n );\n\n const syncedStore = await SyncedStorePlugin.init<TEventData>(player);\n\n const managerPromise = WindowManager.mount({\n cursor: true,\n ...managerConfig,\n room: player,\n });\n player.play();\n const manager = await managerPromise;\n let appliancePluginInstance: AppliancePluginInstance | undefined;\n if (isEnableAppliancePlugin && enableAppliancePlugin && _ApplianceMultiPlugin) {\n appliancePluginInstance = await _ApplianceMultiPlugin.getInstance(manager, {\n options: enableAppliancePlugin,\n });\n }\n let appInMainViewPluginInstance: AppInMainViewInstance | undefined;\n if (enableAppInMainViewPlugin && _AppInMainViewPlugin) {\n appInMainViewPluginInstance = await _AppInMainViewPlugin.getInstance(\n manager,\n enableAppInMainViewPlugin === true ? undefined : enableAppInMainViewPlugin\n );\n }\n player.pause();\n await player.seekToProgressTime(0);\n\n return new FastboardPlayer<TEventData>(\n sdk,\n player,\n manager,\n syncedStore,\n appliancePluginInstance,\n appInMainViewPluginInstance\n );\n}\n","import type { PublicEvent, WindowManager } from \"@netless/window-manager\";\nimport type { Player, PlayerCallbacks, Room, RoomCallbacks, View, ViewCallbacks } from \"white-web-sdk\";\n\nexport function addRoomListener<K extends keyof RoomCallbacks>(\n room: Room,\n name: K,\n listener: RoomCallbacks[K]\n) {\n room.callbacks.on(name, listener);\n return () => room.callbacks.off(name, listener);\n}\n\nexport function addPlayerListener<K extends keyof PlayerCallbacks>(\n player: Player,\n name: K,\n listener: PlayerCallbacks[K]\n) {\n player.callbacks.on(name, listener);\n return () => player.callbacks.off(name, listener);\n}\n\n/**\n * Note: view listeners will be invalid on reconnection.\n * You have to rebind them after the phase changed.\n * @example\n * const bindCamera = () => addViewListener(mainView, \"onCameraUpdated\", setCamera)\n * let dispose = bindCamera(), phase_ = \"disconnected\"\n * setCamera(mainView.camera)\n * addRoomListener(room, \"onPhaseChanged\", (phase) => {\n * if (phase === \"connected\" && phase_ === \"reconnecting\") {\n * dispose()\n * dispose = bindCamera()\n * setCamera(mainView.camera)\n * }\n * phase_ = phase\n * })\n */\nexport function addViewListener<K extends keyof ViewCallbacks>(\n view: View,\n name: K,\n listener: (value: ViewCallbacks[K]) => void\n) {\n view.callbacks.on(name, listener);\n return () => view.callbacks.off(name, listener);\n}\n\nexport function addManagerListener<K extends keyof PublicEvent>(\n manager: WindowManager,\n name: K,\n listener: (value: PublicEvent[K]) => void\n): () => void {\n return manager.emitter.on(name, listener);\n}\n","import type { AppResult } from \"@netless/app-slide\";\nimport type { FastboardApp, WindowManager } from \"../impl\";\n\nexport interface DocsEventOptions {\n /** If provided, will dispatch to the specific app. Default to the focused app. */\n appId?: string;\n /** Used by `jumpToPage` event, range from 1 to total pages count. */\n page?: number;\n}\n\n/**\n * Send specific command to the static docs / slide app.\n * Only works for apps that were created by `insertDocs()`.\n *\n * Returns false if failed to find the app or not writable.\n *\n * For static docs, `nextPage` equals to `nextStep`, as with `prevPage` and `prevStep`.\n *\n * @example\n * ```js\n * // send \"next page\" to the focused app\n * dispatchDocsEvent(fastboard, \"nextPage\")\n *\n * // send \"prev page\" to some app\n * dispatchDocsEvent(fastboard, \"prevPage\", {appId:\"Slide-1a2b3c4d\"})\n * ```\n */\nexport function dispatchDocsEvent(\n fastboard: FastboardApp | WindowManager,\n event: \"prevPage\" | \"nextPage\" | \"prevStep\" | \"nextStep\" | \"jumpToPage\",\n options: DocsEventOptions = {}\n): boolean {\n const manager = \"manager\" in fastboard ? fastboard.manager : fastboard;\n\n const appId = options.appId || manager.focused;\n if (!appId) {\n console.warn(\"not found \" + (options.appId || \"focused app\"));\n return false;\n }\n\n let page: number | undefined, input: HTMLInputElement | null;\n\n // Click the DOM elements for static docs\n if (appId.startsWith(\"DocsViewer-\")) {\n const dom = manager.queryOne(appId)?.box?.$footer;\n if (!dom) {\n console.warn(\"not found app with id \" + appId);\n return false;\n }\n\n const click = (el: Element | null) => {\n el && el.dispatchEvent(new MouseEvent(\"click\"));\n };\n\n switch (event) {\n case \"prevPage\":\n case \"prevStep\":\n click(dom.querySelector('button[class$=\"btn-page-back\"]'));\n break;\n case \"nextPage\":\n case \"nextStep\":\n click(dom.querySelector('button[class$=\"btn-page-next\"]'));\n break;\n case \"jumpToPage\":\n page = options.page;\n input = dom.querySelector('input[class$=\"page-number-input\"]');\n if (!input || typeof page !== \"number\") {\n console.warn(\"failed to jump\" + (page ? \" to page \" + page : \"\"));\n return false;\n }\n input.value = \"\" + page;\n input.dispatchEvent(new InputEvent(\"change\"));\n break;\n default:\n console.warn(\"unknown event \" + event);\n return false;\n }\n\n return true;\n }\n\n // Check controller for slide docs\n else if (appId.startsWith(\"Slide-\")) {\n const app = manager.queryOne(appId)?.appResult as unknown as AppResult | undefined;\n if (!app) {\n console.warn(\"not found app with id \" + appId);\n return false;\n }\n\n switch (event) {\n case \"prevPage\":\n return app.prevPage();\n case \"nextPage\":\n return app.nextPage();\n case \"prevStep\":\n return app.prevStep();\n case \"nextStep\":\n return app.nextStep();\n case \"jumpToPage\":\n page = options.page;\n if (typeof page !== \"number\") {\n console.warn(\"failed to jump\" + (page ? \" to page \" + page : \"\"));\n return false;\n }\n return app.jumpToPage(page);\n default:\n console.warn(\"unknown event \" + event);\n return false;\n }\n }\n\n // No support for any other kind\n else {\n console.warn(\"not supported app \" + appId);\n return false;\n }\n}\n","import { WindowManager } from \"@netless/window-manager\";\nimport SlideApp, { apps, addHooks, previewSlide } from \"@netless/app-slide\";\n\nexport type {\n AppOptions as SlideOptions,\n AppResult as SlideController,\n PreviewParams,\n SlidePreviewer,\n} from \"@netless/app-slide\";\nexport { previewSlide, SlideApp, addHooks as addSlideHooks, apps as slideApps };\n\nWindowManager.register({\n kind: \"Slide\",\n appOptions: { debug: false },\n src: SlideApp as any,\n addHooks,\n});\n"],"names":["WindowManager","SyncedStorePlugin","noop","apps","BuiltinApps","_a","_b","WhiteWebSdk","DefaultHotKeys","syncedStore","contentModeScale","addHooks"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/store.ts","../src/utils/misc.ts","../src/utils/uid.ts","../src/utils/warn.ts","../src/internal.ts","../src/behaviors/lite.ts","../src/impl/FastboardApp.ts","../src/impl/FastboardPlayer.ts","../src/helpers/listen.ts","../src/helpers/docs.ts","../src/behaviors/index.ts"],"sourcesContent":["// This is a simple mimic of svelte/store.\nexport type Subscriber<T> = (value: T) => void;\nexport type Unsubscriber = () => void;\nexport type Updater<T> = (value: T) => T;\nexport type StartStopNotifier<T> = (set: Subscriber<T>) => Unsubscriber | void;\n\nexport interface Readable<T> {\n readonly value: T;\n subscribe(this: void, run: Subscriber<T>): Unsubscriber;\n reaction(this: void, run: Subscriber<T>): Unsubscriber;\n dispose(value?: T): void;\n}\n\nexport interface Writable<T> extends Readable<T> {\n set(this: void, value: T): void;\n update(this: void, updater: Updater<T>): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nfunction safe_not_equal(a: unknown, b: unknown) {\n return a != a ? b == b : a !== b || (a && typeof a === \"object\") || typeof a === \"function\";\n}\n\nexport function readable<T>(value: T, start: StartStopNotifier<T> = noop): Readable<T> {\n let stop: Unsubscriber | undefined;\n const subscribers = new Set<Subscriber<T>>();\n function set(new_value: T) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) {\n for (const run of subscribers) {\n run(value);\n }\n }\n }\n }\n function subscribe(run: Subscriber<T>) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = undefined;\n }\n };\n }\n function reaction(run: Subscriber<T>) {\n subscribers.add(run);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stop && stop();\n stop = undefined;\n }\n };\n }\n function dispose(new_value?: T) {\n if (new_value !== undefined) {\n set(new_value);\n }\n subscribers.clear();\n stop && stop();\n stop = undefined;\n }\n return {\n get value() {\n if (subscribers.size === 0) {\n stop = start(set) || noop;\n stop();\n stop = undefined;\n }\n return value;\n },\n subscribe,\n reaction,\n dispose,\n };\n}\n\nexport function writable<T>(value: T, start: StartStopNotifier<T> = noop, set: Subscriber<T>): Writable<T> {\n const internal = readable(value, start);\n return {\n get value() {\n return internal.value;\n },\n subscribe: internal.subscribe,\n reaction: internal.reaction,\n set,\n update(fn: Updater<T>) {\n set(fn(internal.value));\n },\n dispose: internal.dispose,\n };\n}\n","import type { ConvertedFile, SceneDefinition, Size } from \"white-web-sdk\";\n\nexport function getImageSize(url: string, fallback: Size, crossOrigin?: boolean | string) {\n return new Promise<Size>(resolve => {\n const img = new Image();\n applyCrossOrigin(img, url, crossOrigin);\n img.onload = () => resolve(img);\n img.onerror = () => resolve(fallback);\n img.src = url;\n });\n}\n\n// https://github.com/pixijs/pixijs/blob/dev/packages/core/src/textures/resources/BaseImageResource.ts#L51\nfunction applyCrossOrigin(image: HTMLImageElement, src: string, crossOrigin?: boolean | string): void {\n if (crossOrigin === undefined && !src.startsWith(\"data:\")) {\n image.crossOrigin = determineCrossOrigin(src);\n } else if (crossOrigin !== false) {\n image.crossOrigin = typeof crossOrigin === \"string\" ? crossOrigin : \"anonymous\";\n }\n}\n\nfunction determineCrossOrigin(src: string): string {\n if (src.startsWith(\"data:\") || typeof window === \"undefined\" || !window.location) {\n return \"\";\n }\n const loc = window.location;\n try {\n const parsedUrl = new URL(src, document.baseURI);\n if (\n parsedUrl.hostname !== loc.hostname ||\n parsedUrl.port !== loc.port ||\n parsedUrl.protocol !== loc.protocol\n ) {\n return \"anonymous\";\n }\n return \"\";\n } catch {\n return \"\";\n }\n}\n\nexport function makeSlideParams(scenes: SceneDefinition[]) {\n const emptyScenes: SceneDefinition[] = [];\n let taskId = \"\";\n let url = \"\";\n\n // e.g. \"ppt(x)://cdn/prefix/dynamicConvert/{taskId}/1.slide\"\n const pptSrcRE = /^pptx?(?<prefix>:\\/\\/\\S+?dynamicConvert)\\/(?<taskId>\\w+)\\//;\n\n for (const { name, ppt } of scenes) {\n // make sure scenesWithoutPPT.length === scenes.length\n emptyScenes.push({ name });\n\n if (!ppt || !ppt.src.startsWith(\"ppt\")) continue;\n\n const match = pptSrcRE.exec(ppt.src);\n if (!match || !match.groups) continue;\n\n taskId = match.groups.taskId;\n url = `https${match.groups.prefix}`;\n break;\n }\n\n return { scenes: emptyScenes, taskId, url };\n}\n\nexport function convertedFileToScene(f: ConvertedFile, i: number): SceneDefinition {\n return {\n name: String(i + 1),\n ppt: {\n src: f.conversionFileUrl,\n width: f.width,\n height: f.height,\n previewURL: f.preview,\n },\n };\n}\n","// Copy from https://github.com/crimx/side-effect-manager/blob/main/src/gen-uid.ts\nconst SOUP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nconst SOUP_LEN = 62; // SOUP.length\nconst ID_LEN = 20;\nconst reusedIdCarrier = /* @__PURE__ */ Array(ID_LEN);\n\nexport function genUID() {\n for (let i = 0; i < ID_LEN; i++) {\n reusedIdCarrier[i] = SOUP.charAt(Math.random() * SOUP_LEN);\n }\n return reusedIdCarrier.join(\"\");\n}\n","const warnings = {\n \"no-ppt-in-scenes\":\n \"You're probably inserting the slide app in a wrong way, there shouldn't exist `scenes[0].ppt`.\",\n} as const;\nconst warned = new Set<string>();\n\nexport function warn(id: keyof typeof warnings) {\n if (warned.has(id)) return;\n warned.add(id);\n console.warn(warnings[id]);\n}\n","import type { JoinRoomParams, ReplayRoomParams } from \"white-web-sdk\";\nimport type { PublicEvent } from \"@netless/window-manager\";\nimport { WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\n\nexport function ensure_official_plugins<T extends JoinRoomParams | ReplayRoomParams>(joinRoom: T): T {\n const plugins = new Set(joinRoom.invisiblePlugins || []);\n plugins.add(WindowManager as any);\n plugins.add(SyncedStorePlugin);\n joinRoom.invisiblePlugins = [...plugins];\n return joinRoom;\n}\n\nexport function transform_app_status(status: PublicEvent[\"loadApp\"][\"status\"]) {\n return status === \"start\" ? \"loading\" : status === \"failed\" ? \"failed\" : \"idle\";\n}\n","import { WindowManager, type RegisterParams } from \"@netless/window-manager\";\n\nexport const register = WindowManager.register.bind(WindowManager);\n\nexport interface AppsConfig {\n [kind: string]: Omit<RegisterParams, \"kind\">;\n}\n\nconst DefaultApps: AppsConfig = {\n Monaco: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-monaco/0.1.14-beta.1/dist/main.iife.js\",\n },\n Countdown: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-countdown/0.0.2-alpha.1/dist/main.iife.min.js\",\n },\n GeoGebra: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-geogebra/0.0.4/dist/main.iife.js\",\n appOptions: {\n HTML5Codebase: \"https://flat-storage-cn-hz.whiteboard.agora.io/GeoGebra/HTML5/5.0/web3d\",\n },\n },\n EmbeddedPage: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-embedded-page/0.1.1/dist/main.iife.js\",\n },\n Plyr: {\n src: \"https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-plyr/0.1.3/dist/main.iife.js\",\n },\n};\n\nfor (const kind in DefaultApps) {\n if (Object.prototype.hasOwnProperty.call(DefaultApps, kind)) {\n const options = DefaultApps[kind];\n WindowManager.register({ kind, ...options });\n }\n}\n\ndeclare let __NAME__: string, __VERSION__: string;\n\nexport const version = __VERSION__;\n\nif (typeof window !== \"undefined\") {\n let str = (window as { __netlessUA?: string }).__netlessUA || \"\";\n str += ` ${__NAME__}@${version} `;\n (window as { __netlessUA?: string }).__netlessUA = str;\n}\n","import type { AddPageParams, PublicEvent, MountParams, NetlessApp } from \"@netless/window-manager\";\nimport type {\n AnimationMode,\n Camera,\n CameraState,\n Color,\n ConversionResponse,\n HotKey,\n HotKeys,\n JoinRoomParams,\n MemberState,\n Rectangle,\n Room,\n RoomPhase as RoomPhaseEnum,\n RoomCallbacks,\n RoomState,\n SceneDefinition,\n ShapeType,\n ViewCallbacks,\n WhiteWebSdkConfiguration,\n FloatBarOptions,\n ApplianceNames,\n} from \"white-web-sdk\";\nimport type { SyncedStore, Storage, Diff, DiffOne } from \"@netless/synced-store\";\n\nimport { DefaultHotKeys, WhiteWebSdk, contentModeScale } from \"white-web-sdk\";\nimport { BuiltinApps, WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\nimport {\n getImageSize,\n genUID,\n convertedFileToScene,\n makeSlideParams,\n readable,\n writable,\n warn,\n} from \"../utils\";\nimport { ensure_official_plugins, transform_app_status } from \"../internal\";\nimport { register } from \"../behaviors/lite\";\n\nimport type {\n AppliancePluginOptions,\n AppliancePluginInstance,\n ApplianceNames as ExtendApplianceNames,\n MemberState as ExtendMemberState,\n PublicEvent as AppliancePublicEvent,\n PublicListener as AppliancePublicListener,\n ApplianceMultiPlugin,\n} from \"@netless/appliance-plugin\";\n\nimport type {\n AppInMainViewOptions,\n AppInMainViewInstance,\n PublicEvent as AppInMainViewPublicEvent,\n PublicListener as AppInMainViewPublicListener,\n AppId,\n AppValue,\n AppInMainViewPlugin,\n} from \"@netless/app-in-mainview-plugin\";\n\nfunction noop() {}\n\nclass FastboardAppBase<TEventData extends Record<string, any> = any> {\n public constructor(\n readonly sdk: WhiteWebSdk,\n readonly room: Room,\n readonly manager: WindowManager,\n readonly hotKeys: Partial<HotKeys>,\n readonly syncedStore: SyncedStore<TEventData>,\n readonly appliancePlugin?: AppliancePluginInstance,\n readonly appInMainViewPlugin?: AppInMainViewInstance\n ) {}\n\n protected _destroyed = false;\n /** @internal */\n protected _assertNotDestroyed() {\n if (this._destroyed) {\n throw new Error(\"FastboardApp has been destroyed\");\n }\n }\n\n /** @internal */\n protected _addRoomListener<K extends keyof RoomCallbacks>(name: K, listener: RoomCallbacks[K]) {\n if (this._destroyed) return noop;\n this.room.callbacks.on(name, listener);\n return () => this.room.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addManagerListener<K extends keyof PublicEvent>(\n name: K,\n listener: (value: PublicEvent[K]) => void\n ) {\n if (this._destroyed) return noop;\n this.manager.emitter.on(name, listener);\n return () => this.manager.emitter.off(name, listener);\n }\n\n /** @internal */\n protected _addMainViewListener<K extends keyof ViewCallbacks>(name: K, listener: ViewCallbacks[K]) {\n if (this._destroyed) return noop;\n // Note: the callbacks will be invalid when reconnected, need rebind manually.\n this.manager.mainView.callbacks.on(name, listener);\n return () => this.manager.mainView.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addApplianceListener<K extends AppliancePublicEvent>(\n name: K,\n listener: AppliancePublicListener[K]\n ) {\n if (this._destroyed || !this.appliancePlugin) return noop;\n this.appliancePlugin.addListener(name, listener);\n return () => this.appliancePlugin?.removeListener(name, listener);\n }\n\n /** @internal */\n protected _addAppInMainViewListener<K extends AppInMainViewPublicEvent>(\n name: K,\n listener: AppInMainViewPublicListener[K]\n ) {\n if (this._destroyed || !this.appInMainViewPlugin) return noop;\n this.appInMainViewPlugin.addListener(name, listener);\n return () => this.appInMainViewPlugin?.removeListener(name, listener);\n }\n\n /**\n * Destroy fastboard (disconnect from the whiteboard room).\n */\n public async destroy() {\n this._destroyed = true;\n this.manager.destroy();\n this.appliancePlugin?.destroy();\n this.appInMainViewPlugin?.destroy();\n await this.room.disconnect().catch(console.warn);\n }\n}\n\ntype RoomPhase = `${RoomPhaseEnum}`;\n\nexport type {\n AddPageParams,\n AnimationMode,\n ApplianceNames,\n Camera,\n CameraState,\n Color,\n ConversionResponse,\n HotKey,\n HotKeys,\n JoinRoomParams,\n MemberState,\n MountParams,\n NetlessApp,\n PublicEvent,\n Rectangle,\n Room,\n RoomPhase,\n RoomCallbacks,\n RoomState,\n SceneDefinition,\n ShapeType,\n SyncedStore,\n Storage,\n Diff,\n DiffOne,\n ViewCallbacks,\n WhiteWebSdk,\n WhiteWebSdkConfiguration,\n WindowManager,\n ExtendApplianceNames,\n ExtendMemberState,\n};\n\n/** pencil, eraser, rectangle... */\nexport type Appliance = `${ExtendApplianceNames}`;\n/** triangle, star... */\nexport type Shape = `${ShapeType}`;\n\n/** Params for static docs, they are rendered as many images. */\nexport interface InsertDocsStatic {\n readonly fileType: \"pdf\";\n /** Unique string for binding whiteboard view to the doc. Must start with `/`. */\n readonly scenePath: string;\n /** @example [{ name: '1', ppt: { src: 'url/to/ppt/1.png' } }] */\n readonly scenes: SceneDefinition[];\n /** Window title. */\n readonly title?: string;\n}\n\n/** Params for slides, they are rendered in @netless/app-slide with animations. */\nexport interface InsertDocsDynamic {\n readonly fileType: \"pptx\";\n /** Unique string for binding whiteboard view to the doc. Must start with `/`. */\n readonly scenePath: string;\n /** Conversion task id, see https://developer.netless.link/server-en/home/server-conversion#get-query-task-conversion-progress. */\n readonly taskId: string;\n /** Window title. */\n readonly title?: string;\n /** Where the slide resource placed. @default `https://convertcdn.netless.link/dynamicConvert` */\n readonly url?: string;\n /** @example [{ name: '1' }, { name: '2' }, { name: '3' }] */\n readonly scenes?: SceneDefinition[];\n}\n\nexport type InsertDocsParams = InsertDocsStatic | InsertDocsDynamic;\n\nexport interface ProjectorResponse {\n uuid: string;\n status: \"Waiting\" | \"Converting\" | \"Finished\" | \"Fail\";\n type: \"dynamic\" | \"static\";\n /** 0..100 */\n convertedPercentage: number;\n /** https://example.org/path/to/{static,dynamic}Convert */\n prefix?: string;\n pageCount?: number;\n /** {1:\"{prefix}/{taskId}/preview/1.png\"}, only when type=dynamic and preview=true */\n previews?: Record<number, string>;\n /** {prefix}/{taskId}/jsonOutput/note.json */\n note?: string;\n /** {1:{width,height,url}}, only when type=static */\n images?: Record<number, { width: number; height: number; url: string }>;\n /** 20xxxxx */\n errorCode?: string;\n errorMessage?: string;\n}\n\nexport type SetMemberStateFn = (partialMemberState: Partial<MemberState>) => void;\n\nexport type RoomStateChanged = (diff: Partial<RoomState>) => void;\n\n/** App download progress. */\nexport interface AppsStatus {\n [kind: string]: {\n status: \"idle\" | \"loading\" | \"failed\";\n /** Exist if status is `failed`. */\n reason?: string;\n };\n}\n\nexport class FastboardApp<TEventData extends Record<string, any> = any> extends FastboardAppBase<TEventData> {\n /**\n * Render this app to some DOM.\n */\n bindContainer(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindContainer(container);\n }\n\n /**\n * Move window-manager's collector to some place.\n */\n bindCollector(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindCollectorContainer(container);\n }\n\n /**\n * Is current room writable?\n */\n readonly writable = writable(\n this.room.isWritable,\n set => {\n set(this.room.isWritable);\n return this._addRoomListener(\"onEnableWriteNowChanged\", () => set(this.room.isWritable));\n },\n this.room.setWritable.bind(this.room)\n );\n\n /**\n * Is current room online?\n */\n readonly phase = readable<RoomPhase>(this.room.phase, set => {\n set(this.room.phase);\n return this._addRoomListener(\"onPhaseChanged\", set);\n });\n\n /**\n * Current window-manager's windows' state (is it maximized?).\n */\n readonly boxState = readable(this.manager.boxState, set => {\n set(this.manager.boxState);\n return this._addManagerListener(\"boxStateChange\", set);\n });\n\n /**\n * Current window-manager's focused app's id.\n * @example \"HelloWorld-1A2b3C4d\"\n */\n readonly focusedApp = readable(this.manager.focused, set => {\n set(this.manager.focused);\n return this._addManagerListener(\"focusedChange\", set);\n });\n\n /**\n * How many times can I call `app.redo()`?\n */\n readonly canRedoSteps = readable(this.manager.canRedoSteps, set => {\n set(this.manager.canRedoSteps);\n return this._addManagerListener(\"canRedoStepsChange\", set);\n });\n\n /**\n * How many times can I call `app.undo()`?\n */\n readonly canUndoSteps = readable(this.manager.canUndoSteps, set => {\n set(this.manager.canUndoSteps);\n return this._addManagerListener(\"canUndoStepsChange\", set);\n });\n\n /**\n * Current camera information of main view.\n *\n * Change the camera position by `app.moveCamera()`.\n */\n readonly camera = readable(this.manager.cameraState, set => {\n set(this.manager.cameraState);\n return this._addManagerListener(\"cameraStateChange\", set);\n });\n\n /**\n * Current tool's info, like \"is using pencil?\", \"what color?\".\n *\n * Change the tool by `app.setAppliance()`.\n */\n readonly memberState = readable(this.room.state.memberState, set => {\n set(this.room.state.memberState);\n return this._addRoomListener(\"onRoomStateChanged\", ({ memberState: m }) => m && set(m));\n });\n\n /**\n * 0..n-1, current index of main view scenes.\n */\n readonly sceneIndex = writable(\n this.manager.mainViewSceneIndex,\n set => {\n set(this.manager.mainViewSceneIndex);\n return this._addManagerListener(\"mainViewSceneIndexChange\", set);\n },\n this.manager.setMainViewSceneIndex.bind(this.manager)\n );\n\n /**\n * How many pages are in the main view?\n */\n readonly sceneLength = readable(this.manager.mainViewScenesLength, set => {\n set(this.manager.mainViewScenesLength);\n return this._addManagerListener(\"mainViewScenesLengthChange\", set);\n });\n\n /** @internal */\n private _appsStatus: AppsStatus = {};\n /**\n * Apps status.\n */\n readonly appsStatus = readable<AppsStatus>({}, set =>\n this._addManagerListener(\"loadApp\", ({ kind, status, reason }) => {\n this._appsStatus[kind] = { status: transform_app_status(status), reason };\n set(this._appsStatus);\n })\n );\n\n /** @internal */\n private _visibleApps: Set<AppId> = new Set();\n /**\n * visible Apps, when appInMainViewPlugin is not enabled, it will be empty.\n */\n readonly visibleApps = readable<Set<AppId>>(this._visibleApps, set => {\n if (!this.appInMainViewPlugin) {\n set(this._visibleApps);\n return;\n }\n const apps = this.appInMainViewPlugin.currentPageVisibleApps;\n if (apps) {\n this._visibleApps = apps;\n }\n set(this._visibleApps);\n return this._addAppInMainViewListener(\"appMenuChange\", (apps: Map<AppId, AppValue>) => {\n this._visibleApps = new Set(\n [...apps.entries()].filter(([_, { status }]) => status === \"visible\").map(([appId]) => appId)\n );\n set(this._visibleApps);\n });\n });\n\n /**\n * Returns `writable && phase === \"connected\"`.\n */\n get canOperate(): boolean {\n return this.room.isWritable && this.room.phase === \"connected\";\n }\n\n /**\n * Undo a step on main view.\n */\n undo() {\n this._assertNotDestroyed();\n if (this.appliancePlugin) {\n this.appliancePlugin.undo();\n return;\n }\n this.manager.undo();\n }\n\n /**\n * Redo a step on main view.\n */\n redo() {\n this._assertNotDestroyed();\n if (this.appliancePlugin) {\n this.appliancePlugin.redo();\n return;\n }\n this.manager.redo();\n }\n\n /**\n * Move current main view's camera position.\n */\n moveCamera(camera: Partial<Camera> & { animationMode?: AnimationMode | undefined }) {\n this._assertNotDestroyed();\n this.manager.moveCamera(camera);\n }\n\n /**\n * Move current main view's camera to include a rectangle.\n */\n moveCameraToContain(rectangle: Rectangle & { animationMode?: AnimationMode }) {\n this._assertNotDestroyed();\n this.manager.moveCameraToContain(rectangle);\n }\n\n /**\n * Delete all things on the main view.\n */\n cleanCurrentScene() {\n this._assertNotDestroyed();\n this.manager.cleanCurrentScene();\n }\n\n /**\n * Set current tool, like \"pencil\".\n */\n setAppliance(appliance: ExtendApplianceNames | Appliance, shape?: ShapeType | Shape) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({\n currentApplianceName: appliance as ApplianceNames,\n shapeType: shape as ShapeType,\n });\n }\n\n /**\n * Set pencil and shape's thickness.\n */\n setStrokeWidth(strokeWidth: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ strokeWidth });\n }\n\n /**\n * Set pencil and shape's color.\n */\n setStrokeColor(strokeColor: Color) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ strokeColor });\n }\n\n /**\n * Set text size. Default is 16.\n */\n setTextSize(textSize: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ textSize });\n }\n\n /**\n * Set text color.\n *\n * @example\n * setTextColor([0x66, 0xcc, 0xff])\n */\n setTextColor(textColor: Color) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ textColor });\n }\n\n /**\n * Toggle dotted line effect on pencil.\n */\n toggleDottedLine(force?: boolean) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ dottedLine: force ?? !this.memberState.value.dottedLine });\n }\n\n /**\n * Set pencil eraser size.\n */\n setPencilEraserSize(size: number) {\n this._assertNotDestroyed();\n this.manager.mainView.setMemberState({ pencilEraserSize: size });\n }\n\n /**\n * Goto previous page (the main whiteboard view).\n */\n prevPage() {\n this._assertNotDestroyed();\n return this.manager.prevPage();\n }\n\n /**\n * Goto next page (the main whiteboard view).\n */\n nextPage() {\n this._assertNotDestroyed();\n return this.manager.nextPage();\n }\n\n /**\n * Goto any page (index range: 0..n-1)\n */\n jumpPage(index: number) {\n this._assertNotDestroyed();\n return this.manager.jumpPage(index);\n }\n\n /**\n * Add one page to the main whiteboard view.\n *\n * @example\n * addPage({ after: true }) // add one page right after current one.\n * nextPage() // then, goto that page.\n */\n addPage(params?: AddPageParams) {\n this._assertNotDestroyed();\n return this.manager.addPage(params);\n }\n\n /**\n * Remove one page at given index or current page (by default).\n *\n * Requires `@netless/window-manager` >= 0.4.30.\n *\n * @example\n * removePage() // remove current page\n */\n removePage(index?: number) {\n this._assertNotDestroyed();\n return this.manager.removePage(index);\n }\n\n /**\n * Insert an image to the main view.\n *\n * @param crossOrigin Whether to load the image with CORS enabled, default is `true`.\n *\n * @example\n * insertImage(\"https://i.imgur.com/CzXTtJV.jpg\")\n */\n async insertImage(url: string, crossOrigin?: boolean | string) {\n this._assertNotDestroyed();\n await this.manager.switchMainViewToWriter();\n\n const { divElement } = this.manager.mainView;\n const containerSize = {\n width: divElement?.scrollWidth || window.innerWidth,\n height: divElement?.scrollHeight || window.innerHeight,\n };\n\n // 1. shrink the image a little to fit container **width**\n const maxWidth = containerSize.width * 0.8;\n let { width, height } = await getImageSize(url, containerSize, crossOrigin);\n const scale = Math.min(maxWidth / width, 1);\n const uuid = genUID();\n const { centerX, centerY } = this.manager.camera;\n width *= scale;\n height *= scale;\n const obj = this.appliancePlugin || this.manager.mainView;\n obj.insertImage({\n uuid,\n centerX,\n centerY,\n width,\n height,\n locked: false,\n crossOrigin,\n });\n obj.completeImageUpload(uuid, url);\n\n // 2. move camera to fit image **height**\n width /= 0.8;\n height /= 0.8;\n const originX = centerX - width / 2;\n const originY = centerY - height / 2;\n this.manager.moveCameraToContain({ originX, originY, width, height });\n }\n\n /**\n * Insert PDF/PPTX from conversion result.\n * @param status https://developer.netless.link/server-en/home/server-conversion#get-query-task-conversion-progress\n */\n insertDocs(filename: string, status: ConversionResponse): Promise<string | undefined>;\n\n /**\n * Insert PDF/PPTX from projector conversion result.\n * @param response https://developer.netless.link/server-zh/home/server-projector#get-%E6%9F%A5%E8%AF%A2%E4%BB%BB%E5%8A%A1%E8%BD%AC%E6%8D%A2%E8%BF%9B%E5%BA%A6\n */\n insertDocs(filename: string, response: ProjectorResponse): Promise<string | undefined>;\n\n /**\n * Manual way.\n * @example\n * app.insertDocs({\n * fileType: 'pptx',\n * scenePath: `/pptx/${conversion.taskId}`,\n * taskId: conversion.taskId,\n * title: 'Title',\n * })\n */\n insertDocs(params: InsertDocsParams): Promise<string | undefined>;\n\n insertDocs(arg1: string | InsertDocsParams, arg2?: ConversionResponse | ProjectorResponse) {\n this._assertNotDestroyed();\n if (typeof arg1 === \"object\" && \"fileType\" in arg1) {\n return this._insertDocsImpl(arg1);\n } else if (arg2 && arg2.status !== \"Finished\") {\n throw new Error(\"FastboardApp cannot insert a converting doc.\");\n } else if (arg2 && \"progress\" in arg2) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const scenes1 = arg2.progress.convertedFileList.map(convertedFileToScene);\n const { scenes, taskId, url } = makeSlideParams(scenes1);\n if (taskId && url) {\n return this._insertDocsImpl({ fileType: \"pptx\", scenePath, scenes, title, taskId, url });\n } else {\n return this._insertDocsImpl({ fileType: \"pdf\", scenePath, scenes: scenes1, title });\n }\n } else if (arg2 && arg2.images) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const scenes: SceneDefinition[] = [];\n for (const name in arg2.images) {\n const { width, height, url } = arg2.images[name];\n scenes.push({ name, ppt: { width, height, src: url } });\n }\n return this._insertDocsImpl({ fileType: \"pdf\", scenePath, scenes, title });\n } else if (arg2 && arg2.prefix) {\n const title = arg1;\n const scenePath = `/${arg2.uuid}/${genUID()}`;\n const taskId = arg2.uuid;\n const url = arg2.prefix;\n this._insertDocsImpl({ fileType: \"pptx\", scenePath, taskId, title, url });\n } else {\n throw new Error(\"Invalid input: not found 'progress', 'prefix' nor 'images'\");\n }\n }\n\n /** @internal */\n private _insertDocsImpl({ fileType, scenePath, title, scenes, ...attributes }: InsertDocsParams) {\n this._assertNotDestroyed();\n switch (fileType) {\n case \"pdf\":\n return this.manager.addApp({\n kind: \"DocsViewer\",\n options: { scenePath, title, scenes },\n });\n case \"pptx\":\n if (scenes && scenes[0].ppt) {\n warn(\"no-ppt-in-scenes\");\n }\n return this.manager.addApp({\n kind: \"Slide\",\n options: { scenePath, title, scenes },\n attributes,\n });\n }\n }\n\n /**\n * Insert the Media Player app.\n */\n insertMedia(title: string, src: string) {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: BuiltinApps.MediaPlayer,\n options: { title },\n attributes: { src },\n });\n }\n\n /**\n * Insert the Monaco Code Editor app.\n * @deprecated Use `app.manager.addApp({ kind: 'Monaco' })` instead.\n */\n insertCodeEditor() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"Monaco\",\n options: { title: \"Code Editor\" },\n });\n }\n\n /**\n * Insert the Countdown app.\n * @deprecated Use `app.manager.addApp({ kind: 'Countdown' })` instead.\n */\n insertCountdown() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"Countdown\",\n options: { title: \"Countdown\" },\n });\n }\n\n /**\n * Insert the GeoGebra app.\n * @deprecated Use `app.manager.addApp({ kind: 'GeoGebra' })` instead.\n */\n insertGeoGebra() {\n this._assertNotDestroyed();\n return this.manager.addApp({\n kind: \"GeoGebra\",\n options: { title: \"GeoGebra\" },\n });\n }\n\n override async destroy() {\n await super.destroy();\n this.phase.dispose(\"disconnected\");\n this.writable.dispose(false);\n }\n}\n\nexport interface FastboardOptions {\n sdkConfig: Omit<WhiteWebSdkConfiguration, \"useMobXState\"> & {\n region: NonNullable<WhiteWebSdkConfiguration[\"region\"]>;\n };\n joinRoom: Omit<JoinRoomParams, \"useMultiViews\" | \"disableNewPencil\" | \"disableMagixEventDispatchLimit\"> & {\n callbacks?: Partial<Omit<RoomCallbacks, \"onCanRedoStepsUpdate\" | \"onCanUndoStepsUpdate\">>;\n };\n managerConfig?: Omit<MountParams, \"room\">;\n netlessApps?: NetlessApp[];\n enableAppliancePlugin?: AppliancePluginOptions;\n enableAppInMainViewPlugin?: true | AppInMainViewOptions;\n}\n\n/**\n * Create a FastboardApp instance.\n * @example\n * let app = await createFastboard({\n * sdkConfig: {\n * appIdentifier: import.meta.env.VITE_APPID,\n * region: 'cn-hz',\n * },\n * joinRoom: {\n * uid: unique_id,\n * uuid: import.meta.env.VITE_ROOM_UUID,\n * roomToken: import.meta.env.VITE_ROOM_TOKEN,\n * },\n * })\n */\nexport async function createFastboard<TEventData extends Record<string, any> = any>({\n sdkConfig,\n joinRoom: { callbacks, ...joinRoomParams },\n managerConfig,\n netlessApps,\n enableAppliancePlugin,\n enableAppInMainViewPlugin,\n}: FastboardOptions) {\n const isEnableAppliancePlugin =\n enableAppliancePlugin?.cdn.fullWorkerUrl && enableAppliancePlugin?.cdn.subWorkerUrl ? true : false;\n\n const joinRoomParamsWithPlugin = ensure_official_plugins(joinRoomParams);\n let _ApplianceMultiPlugin: typeof ApplianceMultiPlugin | undefined;\n if (isEnableAppliancePlugin) {\n const { ApplianceMultiPlugin } = await import(\"@netless/appliance-plugin\");\n _ApplianceMultiPlugin = ApplianceMultiPlugin;\n if (joinRoomParamsWithPlugin.invisiblePlugins) {\n joinRoomParamsWithPlugin.invisiblePlugins = [\n ...joinRoomParamsWithPlugin.invisiblePlugins,\n _ApplianceMultiPlugin,\n ];\n }\n if (managerConfig) {\n managerConfig.supportAppliancePlugin = true;\n }\n }\n let _AppInMainViewPlugin: typeof AppInMainViewPlugin | undefined;\n if (enableAppInMainViewPlugin && joinRoomParamsWithPlugin.invisiblePlugins) {\n const { AppInMainViewPlugin } = await import(\"@netless/app-in-mainview-plugin\");\n _AppInMainViewPlugin = AppInMainViewPlugin;\n joinRoomParamsWithPlugin.invisiblePlugins = [\n ...joinRoomParamsWithPlugin.invisiblePlugins,\n _AppInMainViewPlugin,\n ];\n }\n\n const sdk = new WhiteWebSdk({\n ...sdkConfig,\n useMobXState: true,\n });\n\n const hotKeys = joinRoomParams.hotKeys || {\n ...DefaultHotKeys,\n changeToSelector: \"s\",\n changeToLaserPointer: \"z\",\n changeToPencil: \"p\",\n changeToRectangle: \"r\",\n changeToEllipse: \"c\",\n changeToEraser: \"e\",\n changeToText: \"t\",\n changeToStraight: \"l\",\n changeToArrow: \"a\",\n changeToHand: \"h\",\n };\n\n if (netlessApps) {\n netlessApps.forEach(app => {\n register({ kind: app.kind, src: app });\n });\n }\n\n const room = await sdk.joinRoom(\n {\n floatBar: true,\n hotKeys,\n ...joinRoomParamsWithPlugin,\n useMultiViews: true,\n disableNewPencil: false,\n disableMagixEventDispatchLimit: true,\n },\n callbacks\n );\n const syncedStore = await SyncedStorePlugin.init<TEventData>(room);\n const manager = await WindowManager.mount({\n cursor: true,\n ...managerConfig,\n room,\n });\n let appInMainViewPluginInstance: AppInMainViewInstance | undefined;\n if (enableAppInMainViewPlugin && _AppInMainViewPlugin) {\n appInMainViewPluginInstance = await _AppInMainViewPlugin.getInstance(\n manager,\n enableAppInMainViewPlugin === true ? undefined : enableAppInMainViewPlugin\n );\n }\n let appliancePluginInstance: AppliancePluginInstance | undefined;\n if (isEnableAppliancePlugin && enableAppliancePlugin && _ApplianceMultiPlugin) {\n appliancePluginInstance = await _ApplianceMultiPlugin.getInstance(manager, {\n options: enableAppliancePlugin,\n });\n }\n if (room.isWritable && ((room as any).floatBarOptions as FloatBarOptions)?.colors.length) {\n const colors = (room as any).floatBarOptions?.colors;\n const length = colors.length;\n const index = room.observerId % length;\n const color = colors[index];\n manager.mainView.setMemberState({\n strokeColor: color,\n textColor: color,\n });\n }\n manager.mainView.setCameraBound({\n minContentMode: contentModeScale(0.3),\n maxContentMode: contentModeScale(3),\n });\n\n return new FastboardApp<TEventData>(\n sdk,\n room,\n manager,\n hotKeys,\n syncedStore,\n appliancePluginInstance,\n appInMainViewPluginInstance\n );\n}\n","import type { MountParams, NetlessApp, PublicEvent } from \"@netless/window-manager\";\nimport type {\n Player,\n PlayerPhase as PlayerPhaseEnum,\n PlayerCallbacks,\n PlayerState,\n PlayerSeekingResult,\n ReplayRoomParams,\n ViewCallbacks,\n WhiteWebSdkConfiguration,\n} from \"white-web-sdk\";\nimport type { SyncedStore } from \"@netless/synced-store\";\n\nimport { WhiteWebSdk } from \"white-web-sdk\";\nimport { WindowManager } from \"@netless/window-manager\";\nimport { SyncedStorePlugin } from \"@netless/synced-store\";\nimport { readable, writable } from \"../utils\";\nimport { ensure_official_plugins } from \"../internal\";\nimport { register } from \"../behaviors/lite\";\nimport type {\n AppliancePluginOptions,\n AppliancePluginInstance,\n ApplianceMultiPlugin,\n} from \"@netless/appliance-plugin\";\nimport type {\n AppInMainViewPlugin,\n AppInMainViewOptions,\n AppInMainViewInstance,\n} from \"@netless/app-in-mainview-plugin\";\nfunction noop() {}\n\nclass FastboardPlayerBase<TEventData extends Record<string, any> = any> {\n public constructor(\n readonly sdk: WhiteWebSdk,\n readonly player: Player,\n readonly manager: WindowManager,\n readonly syncedStore: SyncedStore<TEventData>,\n readonly appliancePlugin?: AppliancePluginInstance,\n readonly appInMainViewPlugin?: AppInMainViewInstance\n ) {}\n\n protected _destroyed = false;\n /** @internal */\n protected _assertNotDestroyed() {\n if (this._destroyed) {\n throw new Error(\"FastboardApp has been destroyed\");\n }\n }\n\n /** @internal */\n protected _addPlayerListener<K extends keyof PlayerCallbacks>(name: K, listener: PlayerCallbacks[K]) {\n if (this._destroyed) return noop;\n this.player.callbacks.on(name, listener);\n return () => this.player.callbacks.off(name, listener);\n }\n\n /** @internal */\n protected _addManagerListener<K extends keyof PublicEvent>(\n name: K,\n listener: (value: PublicEvent[K]) => void\n ) {\n if (this._destroyed) return noop;\n this.manager.emitter.on(name, listener);\n return () => this.manager.emitter.off(name, listener);\n }\n\n /** @internal */\n protected _addMainViewListener<K extends keyof ViewCallbacks>(name: K, listener: ViewCallbacks[K]) {\n if (this._destroyed) return noop;\n this.manager.mainView.callbacks.on(name, listener);\n return () => this.manager.mainView.callbacks.off(name, listener);\n }\n\n public destroy() {\n this._destroyed = true;\n this.manager.destroy();\n this.appliancePlugin?.destroy();\n this.appInMainViewPlugin?.destroy();\n return this.player.callbacks.off();\n }\n}\n\ntype PlayerPhase = `${PlayerPhaseEnum}`;\n\nexport type { PlayerPhase, PlayerSeekingResult };\n\nexport class FastboardPlayer<\n TEventData extends Record<string, any> = any,\n> extends FastboardPlayerBase<TEventData> {\n /**\n * Render this player to some DOM.\n */\n bindContainer(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindContainer(container);\n }\n\n /**\n * Move window-manager's collector to some place.\n */\n bindCollector(container: HTMLElement) {\n this._assertNotDestroyed();\n this.manager.bindCollectorContainer(container);\n }\n\n /**\n * Player current time in milliseconds.\n */\n readonly currentTime = writable(\n this.player.progressTime,\n set => {\n set(this.player.progressTime);\n return this._addPlayerListener(\"onProgressTimeChanged\", set);\n },\n this.player.seekToProgressTime.bind(this.player)\n );\n\n /**\n * Player state, like \"is it playing?\".\n */\n readonly phase = readable<PlayerPhase>(this.player.phase, set => {\n set(this.player.phase);\n return this._addPlayerListener(\"onPhaseChanged\", set);\n });\n\n /**\n * Will become true after buffering.\n */\n readonly canplay = readable(this.player.isPlayable, set => {\n set(this.player.isPlayable);\n return this._addPlayerListener(\"onIsPlayableChanged\", set);\n });\n\n /** @internal */\n private _setPlaybackRate!: (value: number) => void;\n /**\n * Playback speed, default `1`.\n */\n readonly playbackRate = writable(\n this.player.playbackSpeed,\n set => {\n this._setPlaybackRate = set;\n set(this.player.playbackSpeed);\n },\n value => {\n this.player.playbackSpeed = value;\n this._setPlaybackRate(value);\n }\n );\n\n /**\n * Playback duration in milliseconds.\n */\n readonly duration = readable(this.player.timeDuration, set => {\n set(this.player.timeDuration);\n });\n\n /**\n * Get state of room at that time, like \"who was in the room?\".\n */\n readonly state = readable<PlayerState>(this.player.state, set => {\n set(this.player.state);\n return this._addPlayerListener(\"onPlayerStateChanged\", () => set(this.player.state));\n });\n\n /**\n * Seek to some time in milliseconds.\n */\n seek(timestamp: number) {\n this._assertNotDestroyed();\n return this.player.seekToProgressTime(timestamp);\n }\n\n /**\n * Change player state to playing.\n */\n play() {\n this._assertNotDestroyed();\n this.player.play();\n }\n\n /**\n * Change player state to paused.\n */\n pause() {\n this._assertNotDestroyed();\n this.player.pause();\n }\n\n /**\n * Change player state to stopped.\n */\n stop() {\n this._assertNotDestroyed();\n this.player.stop();\n }\n\n /**\n * Set playback speed, a shortcut for `speed.set(x)`.\n */\n setPlaybackRate(value: number) {\n this._assertNotDestroyed();\n this.playbackRate.set(value);\n }\n}\n\nexport interface FastboardReplayOptions {\n sdkConfig: Omit<WhiteWebSdkConfiguration, \"useMobXState\"> & {\n region: NonNullable<WhiteWebSdkConfiguration[\"region\"]>;\n };\n replayRoom: Omit<ReplayRoomParams, \"useMultiViews\"> & {\n callbacks?: Partial<PlayerCallbacks>;\n };\n managerConfig?: Omit<MountParams, \"room\">;\n netlessApps?: NetlessApp[];\n enableAppliancePlugin?: AppliancePluginOptions;\n enableAppInMainViewPlugin?: true | AppInMainViewOptions;\n}\n\n/**\n * Create a FastboardPlayer instance.\n * @example\n * let player = await replayFastboard({\n * sdkConfig: {\n * appIdentifier: import.meta.env.VITE_APPID,\n * region: 'cn-hz',\n * },\n * replayRoom: {\n * room: \"room uuid\",\n * roomToken: \"NETLESSROOM_...\",\n * beginTimestamp: 1646619090394,\n * duration: 70448,\n * },\n * })\n */\nexport async function replayFastboard<TEventData extends Record<string, any> = any>({\n sdkConfig,\n replayRoom: { callbacks, ...replayRoomParams },\n managerConfig,\n netlessApps,\n enableAppliancePlugin,\n enableAppInMainViewPlugin,\n}: FastboardReplayOptions) {\n const isEnableAppliancePlugin =\n enableAppliancePlugin?.cdn.fullWorkerUrl && enableAppliancePlugin?.cdn.subWorkerUrl ? true : false;\n\n const replayRoomParamsWithPlugin = ensure_official_plugins(replayRoomParams);\n let _ApplianceMultiPlugin: typeof ApplianceMultiPlugin | undefined;\n if (isEnableAppliancePlugin) {\n const { ApplianceMultiPlugin } = await import(\"@netless/appliance-plugin\");\n _ApplianceMultiPlugin = ApplianceMultiPlugin;\n if (replayRoomParamsWithPlugin.invisiblePlugins) {\n replayRoomParamsWithPlugin.invisiblePlugins = [\n ...replayRoomParamsWithPlugin.invisiblePlugins,\n _ApplianceMultiPlugin,\n ];\n }\n\n if (managerConfig) {\n managerConfig.supportAppliancePlugin = true;\n }\n }\n let _AppInMainViewPlugin: typeof AppInMainViewPlugin | undefined;\n if (enableAppInMainViewPlugin && replayRoomParamsWithPlugin.invisiblePlugins) {\n const { AppInMainViewPlugin } = await import(\"@netless/app-in-mainview-plugin\");\n _AppInMainViewPlugin = AppInMainViewPlugin;\n replayRoomParamsWithPlugin.invisiblePlugins = [\n ...replayRoomParamsWithPlugin.invisiblePlugins,\n _AppInMainViewPlugin,\n ];\n }\n\n const sdk = new WhiteWebSdk({\n ...sdkConfig,\n useMobXState: true,\n });\n\n if (netlessApps) {\n netlessApps.forEach(app => {\n register({ kind: app.kind, src: app });\n });\n }\n\n const player = await sdk.replayRoom(\n {\n ...replayRoomParamsWithPlugin,\n useMultiViews: true,\n },\n callbacks\n );\n\n const syncedStore = await SyncedStorePlugin.init<TEventData>(player);\n\n const managerPromise = WindowManager.mount({\n cursor: true,\n ...managerConfig,\n room: player,\n });\n player.play();\n const manager = await managerPromise;\n let appliancePluginInstance: AppliancePluginInstance | undefined;\n if (isEnableAppliancePlugin && enableAppliancePlugin && _ApplianceMultiPlugin) {\n appliancePluginInstance = await _ApplianceMultiPlugin.getInstance(manager, {\n options: enableAppliancePlugin,\n });\n }\n let appInMainViewPluginInstance: AppInMainViewInstance | undefined;\n if (enableAppInMainViewPlugin && _AppInMainViewPlugin) {\n appInMainViewPluginInstance = await _AppInMainViewPlugin.getInstance(\n manager,\n enableAppInMainViewPlugin === true ? undefined : enableAppInMainViewPlugin\n );\n }\n player.pause();\n await player.seekToProgressTime(0);\n\n return new FastboardPlayer<TEventData>(\n sdk,\n player,\n manager,\n syncedStore,\n appliancePluginInstance,\n appInMainViewPluginInstance\n );\n}\n","import type { PublicEvent, WindowManager } from \"@netless/window-manager\";\nimport type { Player, PlayerCallbacks, Room, RoomCallbacks, View, ViewCallbacks } from \"white-web-sdk\";\n\nexport function addRoomListener<K extends keyof RoomCallbacks>(\n room: Room,\n name: K,\n listener: RoomCallbacks[K]\n) {\n room.callbacks.on(name, listener);\n return () => room.callbacks.off(name, listener);\n}\n\nexport function addPlayerListener<K extends keyof PlayerCallbacks>(\n player: Player,\n name: K,\n listener: PlayerCallbacks[K]\n) {\n player.callbacks.on(name, listener);\n return () => player.callbacks.off(name, listener);\n}\n\n/**\n * Note: view listeners will be invalid on reconnection.\n * You have to rebind them after the phase changed.\n * @example\n * const bindCamera = () => addViewListener(mainView, \"onCameraUpdated\", setCamera)\n * let dispose = bindCamera(), phase_ = \"disconnected\"\n * setCamera(mainView.camera)\n * addRoomListener(room, \"onPhaseChanged\", (phase) => {\n * if (phase === \"connected\" && phase_ === \"reconnecting\") {\n * dispose()\n * dispose = bindCamera()\n * setCamera(mainView.camera)\n * }\n * phase_ = phase\n * })\n */\nexport function addViewListener<K extends keyof ViewCallbacks>(\n view: View,\n name: K,\n listener: (value: ViewCallbacks[K]) => void\n) {\n view.callbacks.on(name, listener);\n return () => view.callbacks.off(name, listener);\n}\n\nexport function addManagerListener<K extends keyof PublicEvent>(\n manager: WindowManager,\n name: K,\n listener: (value: PublicEvent[K]) => void\n): () => void {\n return manager.emitter.on(name, listener);\n}\n","import type { AppResult } from \"@netless/app-slide\";\nimport type { FastboardApp, WindowManager } from \"../impl\";\n\nexport interface DocsEventOptions {\n /** If provided, will dispatch to the specific app. Default to the focused app. */\n appId?: string;\n /** Used by `jumpToPage` event, range from 1 to total pages count. */\n page?: number;\n}\n\n/**\n * Send specific command to the static docs / slide app.\n * Only works for apps that were created by `insertDocs()`.\n *\n * Returns false if failed to find the app or not writable.\n *\n * For static docs, `nextPage` equals to `nextStep`, as with `prevPage` and `prevStep`.\n *\n * @example\n * ```js\n * // send \"next page\" to the focused app\n * dispatchDocsEvent(fastboard, \"nextPage\")\n *\n * // send \"prev page\" to some app\n * dispatchDocsEvent(fastboard, \"prevPage\", {appId:\"Slide-1a2b3c4d\"})\n * ```\n */\nexport function dispatchDocsEvent(\n fastboard: FastboardApp | WindowManager,\n event: \"prevPage\" | \"nextPage\" | \"prevStep\" | \"nextStep\" | \"jumpToPage\",\n options: DocsEventOptions = {}\n): boolean {\n const manager = \"manager\" in fastboard ? fastboard.manager : fastboard;\n\n const appId = options.appId || manager.focused;\n if (!appId) {\n console.warn(\"not found \" + (options.appId || \"focused app\"));\n return false;\n }\n\n let page: number | undefined, input: HTMLInputElement | null;\n\n // Click the DOM elements for static docs\n if (appId.startsWith(\"DocsViewer-\")) {\n const dom = manager.queryOne(appId)?.box?.$footer;\n if (!dom) {\n console.warn(\"not found app with id \" + appId);\n return false;\n }\n\n const click = (el: Element | null) => {\n el && el.dispatchEvent(new MouseEvent(\"click\"));\n };\n\n switch (event) {\n case \"prevPage\":\n case \"prevStep\":\n click(dom.querySelector('button[class$=\"btn-page-back\"]'));\n break;\n case \"nextPage\":\n case \"nextStep\":\n click(dom.querySelector('button[class$=\"btn-page-next\"]'));\n break;\n case \"jumpToPage\":\n page = options.page;\n input = dom.querySelector('input[class$=\"page-number-input\"]');\n if (!input || typeof page !== \"number\") {\n console.warn(\"failed to jump\" + (page ? \" to page \" + page : \"\"));\n return false;\n }\n input.value = \"\" + page;\n input.dispatchEvent(new InputEvent(\"change\"));\n break;\n default:\n console.warn(\"unknown event \" + event);\n return false;\n }\n\n return true;\n }\n\n // Check controller for slide docs\n else if (appId.startsWith(\"Slide-\")) {\n const app = manager.queryOne(appId)?.appResult as unknown as AppResult | undefined;\n if (!app) {\n console.warn(\"not found app with id \" + appId);\n return false;\n }\n\n switch (event) {\n case \"prevPage\":\n return app.prevPage();\n case \"nextPage\":\n return app.nextPage();\n case \"prevStep\":\n return app.prevStep();\n case \"nextStep\":\n return app.nextStep();\n case \"jumpToPage\":\n page = options.page;\n if (typeof page !== \"number\") {\n console.warn(\"failed to jump\" + (page ? \" to page \" + page : \"\"));\n return false;\n }\n return app.jumpToPage(page);\n default:\n console.warn(\"unknown event \" + event);\n return false;\n }\n }\n\n // No support for any other kind\n else {\n console.warn(\"not supported app \" + appId);\n return false;\n }\n}\n","import { WindowManager } from \"@netless/window-manager\";\nimport SlideApp, { apps, addHooks, previewSlide } from \"@netless/app-slide\";\n\nexport type {\n AppOptions as SlideOptions,\n AppResult as SlideController,\n PreviewParams,\n SlidePreviewer,\n} from \"@netless/app-slide\";\nexport { previewSlide, SlideApp, addHooks as addSlideHooks, apps as slideApps };\n\nWindowManager.register({\n kind: \"Slide\",\n appOptions: { debug: false },\n src: SlideApp as any,\n addHooks,\n});\n"],"names":["WindowManager","SyncedStorePlugin","noop","apps","BuiltinApps","_a","_b","WhiteWebSdk","DefaultHotKeys","syncedStore","contentModeScale","SlideApp","addHooks"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -246,7 +246,7 @@ for (const kind in DefaultApps) {
|
|
|
246
246
|
WindowManager.register(__spreadValues({ kind }, options));
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
var version = "1.1.2-beta.
|
|
249
|
+
var version = "1.1.2-beta.9";
|
|
250
250
|
if (typeof window !== "undefined") {
|
|
251
251
|
let str = window.__netlessUA || "";
|
|
252
252
|
str += ` ${"@netless/fastboard"}@${version} `;
|
package/dist/lite.js
CHANGED
|
@@ -246,7 +246,7 @@ for (const kind in DefaultApps) {
|
|
|
246
246
|
windowManager.WindowManager.register(__spreadValues({ kind }, options));
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
var version = "1.1.2-beta.
|
|
249
|
+
var version = "1.1.2-beta.9";
|
|
250
250
|
if (typeof window !== "undefined") {
|
|
251
251
|
let str = window.__netlessUA || "";
|
|
252
252
|
str += ` ${"@netless/fastboard"}@${version} `;
|
package/dist/lite.mjs
CHANGED
|
@@ -244,7 +244,7 @@ for (const kind in DefaultApps) {
|
|
|
244
244
|
WindowManager.register(__spreadValues({ kind }, options));
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
|
-
var version = "1.1.2-beta.
|
|
247
|
+
var version = "1.1.2-beta.9";
|
|
248
248
|
if (typeof window !== "undefined") {
|
|
249
249
|
let str = window.__netlessUA || "";
|
|
250
250
|
str += ` ${"@netless/fastboard"}@${version} `;
|
package/package.json
CHANGED