@netless/fastboard-core 0.2.12 → 0.3.0-canary.1
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/README.md +9 -0
- package/dist/index.d.ts +295 -3
- package/dist/index.js +249 -200
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +579 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -12
- package/src/behaviors/{register-apps.ts → index.ts} +8 -1
- package/src/impl/{app.ts → FastboardApp.ts} +179 -50
- package/src/impl/FastboardPlayer.ts +203 -0
- package/src/impl/index.ts +4 -0
- package/src/index.ts +2 -3
- package/src/internal.ts +14 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/misc.ts +49 -0
- package/src/utils/store.ts +87 -0
- package/src/utils/uid.ts +12 -0
- package/src/utils/warn.ts +11 -0
- package/dist/chunk-ITPURPVI.mjs +0 -530
- package/dist/chunk-ITPURPVI.mjs.map +0 -1
- package/dist/minimal.d.ts +0 -278
- package/dist/minimal.js +0 -551
- package/dist/minimal.js.map +0 -1
- package/dist/minimal.mjs +0 -9
- package/dist/minimal.mjs.map +0 -1
- package/minimal.mjs +0 -1
- package/src/behaviors/register-slide.ts +0 -11
- package/src/helpers/emitter.ts +0 -21
- package/src/helpers/utils.ts +0 -78
- package/src/helpers/value.ts +0 -84
- package/src/impl/player.ts +0 -122
- package/src/minimal.ts +0 -153
package/dist/index.js
CHANGED
|
@@ -58,21 +58,89 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
|
58
58
|
// src/index.ts
|
|
59
59
|
var src_exports = {};
|
|
60
60
|
__export(src_exports, {
|
|
61
|
+
FastboardApp: () => FastboardApp,
|
|
62
|
+
FastboardPlayer: () => FastboardPlayer,
|
|
63
|
+
convertedFileToScene: () => convertedFileToScene,
|
|
61
64
|
createFastboard: () => createFastboard,
|
|
62
|
-
|
|
65
|
+
genUID: () => genUID,
|
|
66
|
+
getImageSize: () => getImageSize,
|
|
67
|
+
makeSlideParams: () => makeSlideParams,
|
|
68
|
+
readable: () => readable,
|
|
69
|
+
replayFastboard: () => replayFastboard,
|
|
70
|
+
warn: () => warn,
|
|
71
|
+
writable: () => writable
|
|
63
72
|
});
|
|
64
73
|
|
|
65
|
-
// src/
|
|
66
|
-
var import_white_web_sdk = require("white-web-sdk");
|
|
67
|
-
var import_window_manager4 = require("@netless/window-manager");
|
|
68
|
-
|
|
69
|
-
// src/helpers/utils.ts
|
|
70
|
-
var import_window_manager = require("@netless/window-manager");
|
|
74
|
+
// src/utils/store.ts
|
|
71
75
|
function noop() {
|
|
72
76
|
}
|
|
73
77
|
function safe_not_equal(a, b) {
|
|
74
78
|
return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
|
|
75
79
|
}
|
|
80
|
+
function readable(value, start = noop) {
|
|
81
|
+
let stop;
|
|
82
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
83
|
+
function set(new_value) {
|
|
84
|
+
if (safe_not_equal(value, new_value)) {
|
|
85
|
+
value = new_value;
|
|
86
|
+
if (stop) {
|
|
87
|
+
for (const run of subscribers) {
|
|
88
|
+
run(value);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function subscribe(run) {
|
|
94
|
+
subscribers.add(run);
|
|
95
|
+
if (subscribers.size === 1) {
|
|
96
|
+
stop = start(set) || noop;
|
|
97
|
+
}
|
|
98
|
+
run(value);
|
|
99
|
+
return () => {
|
|
100
|
+
subscribers.delete(run);
|
|
101
|
+
if (subscribers.size === 0) {
|
|
102
|
+
stop && stop();
|
|
103
|
+
stop = void 0;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function reaction(run) {
|
|
108
|
+
subscribers.add(run);
|
|
109
|
+
if (subscribers.size === 1) {
|
|
110
|
+
stop = start(set) || noop;
|
|
111
|
+
}
|
|
112
|
+
return () => {
|
|
113
|
+
subscribers.delete(run);
|
|
114
|
+
if (subscribers.size === 0) {
|
|
115
|
+
stop && stop();
|
|
116
|
+
stop = void 0;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
get value() {
|
|
122
|
+
return value;
|
|
123
|
+
},
|
|
124
|
+
subscribe,
|
|
125
|
+
reaction
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function writable(value, start = noop, set) {
|
|
129
|
+
const internal = readable(value, start);
|
|
130
|
+
return {
|
|
131
|
+
get value() {
|
|
132
|
+
return internal.value;
|
|
133
|
+
},
|
|
134
|
+
subscribe: internal.subscribe,
|
|
135
|
+
reaction: internal.reaction,
|
|
136
|
+
set,
|
|
137
|
+
update(fn) {
|
|
138
|
+
set(fn(value));
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// src/utils/misc.ts
|
|
76
144
|
function getImageSize(url, fallback) {
|
|
77
145
|
return new Promise((resolve) => {
|
|
78
146
|
const img = new Image();
|
|
@@ -99,7 +167,7 @@ function makeSlideParams(scenes) {
|
|
|
99
167
|
url = "https" + match.groups.prefix;
|
|
100
168
|
break;
|
|
101
169
|
}
|
|
102
|
-
return { emptyScenes, taskId, url };
|
|
170
|
+
return { scenes: emptyScenes, taskId, url };
|
|
103
171
|
}
|
|
104
172
|
function convertedFileToScene(f, i) {
|
|
105
173
|
return {
|
|
@@ -112,14 +180,10 @@ function convertedFileToScene(f, i) {
|
|
|
112
180
|
}
|
|
113
181
|
};
|
|
114
182
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return joinRoom;
|
|
120
|
-
}
|
|
121
|
-
var SOUP = "!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
122
|
-
var SOUP_LEN = SOUP.length;
|
|
183
|
+
|
|
184
|
+
// src/utils/uid.ts
|
|
185
|
+
var SOUP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
186
|
+
var SOUP_LEN = 62;
|
|
123
187
|
var ID_LEN = 20;
|
|
124
188
|
var reusedIdCarrier = /* @__PURE__ */ Array(ID_LEN);
|
|
125
189
|
function genUID() {
|
|
@@ -129,75 +193,46 @@ function genUID() {
|
|
|
129
193
|
return reusedIdCarrier.join("");
|
|
130
194
|
}
|
|
131
195
|
|
|
132
|
-
// src/
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
-
// src/helpers/emitter.ts
|
|
136
|
-
var FastboardEmitter = class {
|
|
137
|
-
constructor() {
|
|
138
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
139
|
-
}
|
|
140
|
-
get length() {
|
|
141
|
-
return this.listeners.size;
|
|
142
|
-
}
|
|
143
|
-
dispatch(message) {
|
|
144
|
-
this.listeners.forEach((callback) => callback(message));
|
|
145
|
-
}
|
|
146
|
-
addListener(listener) {
|
|
147
|
-
this.listeners.add(listener);
|
|
148
|
-
}
|
|
149
|
-
removeListener(listener) {
|
|
150
|
-
this.listeners.delete(listener);
|
|
151
|
-
}
|
|
196
|
+
// src/utils/warn.ts
|
|
197
|
+
var warnings = {
|
|
198
|
+
"no-ppt-in-scenes": "You're probably inserting the slide app in a wrong way, there shouldn't exist `scenes[0].ppt`."
|
|
152
199
|
};
|
|
200
|
+
var warned = /* @__PURE__ */ new Set();
|
|
201
|
+
function warn(id) {
|
|
202
|
+
if (warned.has(id))
|
|
203
|
+
return;
|
|
204
|
+
warned.add(id);
|
|
205
|
+
console.warn(warnings[id]);
|
|
206
|
+
}
|
|
153
207
|
|
|
154
|
-
// src/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
function subscribe(callback) {
|
|
164
|
-
emitter.addListener(callback);
|
|
165
|
-
callback(value);
|
|
166
|
-
return () => emitter.removeListener(callback);
|
|
167
|
-
}
|
|
168
|
-
function reaction(callback) {
|
|
169
|
-
emitter.addListener(callback);
|
|
170
|
-
return () => emitter.removeListener(callback);
|
|
208
|
+
// src/impl/FastboardApp.ts
|
|
209
|
+
var import_white_web_sdk = require("white-web-sdk");
|
|
210
|
+
var import_window_manager2 = require("@netless/window-manager");
|
|
211
|
+
|
|
212
|
+
// src/internal.ts
|
|
213
|
+
var import_window_manager = require("@netless/window-manager");
|
|
214
|
+
function ensure_window_manager(joinRoom) {
|
|
215
|
+
if (!joinRoom.invisiblePlugins || !joinRoom.invisiblePlugins.includes(import_window_manager.WindowManager)) {
|
|
216
|
+
joinRoom.invisiblePlugins = [...joinRoom.invisiblePlugins || [], import_window_manager.WindowManager];
|
|
171
217
|
}
|
|
172
|
-
return
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
subscribe,
|
|
177
|
-
reaction,
|
|
178
|
-
setValue,
|
|
179
|
-
dispose
|
|
180
|
-
};
|
|
218
|
+
return joinRoom;
|
|
219
|
+
}
|
|
220
|
+
function transform_app_status(status) {
|
|
221
|
+
return status === "start" ? "loading" : status === "failed" ? "failed" : "idle";
|
|
181
222
|
}
|
|
182
223
|
|
|
183
|
-
// src/impl/
|
|
224
|
+
// src/impl/FastboardApp.ts
|
|
184
225
|
var FastboardAppBase = class {
|
|
185
226
|
constructor(sdk, room, manager, hotKeys) {
|
|
186
227
|
this.sdk = sdk;
|
|
187
228
|
this.room = room;
|
|
188
229
|
this.manager = manager;
|
|
189
230
|
this.hotKeys = hotKeys;
|
|
190
|
-
this._disposers = [];
|
|
191
231
|
this._destroyed = false;
|
|
192
|
-
this.createValue = (...args) => {
|
|
193
|
-
const value = createValue(...args);
|
|
194
|
-
this._disposers.push(value.dispose);
|
|
195
|
-
return value;
|
|
196
|
-
};
|
|
197
232
|
}
|
|
198
233
|
_assertNotDestroyed() {
|
|
199
234
|
if (this._destroyed) {
|
|
200
|
-
throw new Error("
|
|
235
|
+
throw new Error("FastboardApp has been destroyed");
|
|
201
236
|
}
|
|
202
237
|
}
|
|
203
238
|
_addRoomListener(name, listener) {
|
|
@@ -205,10 +240,10 @@ var FastboardAppBase = class {
|
|
|
205
240
|
this.room.callbacks.on(name, listener);
|
|
206
241
|
return () => this.room.callbacks.off(name, listener);
|
|
207
242
|
}
|
|
208
|
-
_addManagerListener(name,
|
|
243
|
+
_addManagerListener(name, listener) {
|
|
209
244
|
this._assertNotDestroyed();
|
|
210
|
-
this.manager.emitter.on(name,
|
|
211
|
-
return () => this.manager.emitter.off(name,
|
|
245
|
+
this.manager.emitter.on(name, listener);
|
|
246
|
+
return () => this.manager.emitter.off(name, listener);
|
|
212
247
|
}
|
|
213
248
|
_addMainViewListener(name, listener) {
|
|
214
249
|
this._assertNotDestroyed();
|
|
@@ -216,8 +251,6 @@ var FastboardAppBase = class {
|
|
|
216
251
|
return () => this.manager.mainView.callbacks.off(name, listener);
|
|
217
252
|
}
|
|
218
253
|
destroy() {
|
|
219
|
-
this._disposers.forEach((dispose) => dispose());
|
|
220
|
-
this._disposers.length = 0;
|
|
221
254
|
this._destroyed = true;
|
|
222
255
|
this.manager.destroy();
|
|
223
256
|
return this.room.disconnect();
|
|
@@ -226,21 +259,18 @@ var FastboardAppBase = class {
|
|
|
226
259
|
var FastboardApp = class extends FastboardAppBase {
|
|
227
260
|
constructor() {
|
|
228
261
|
super(...arguments);
|
|
229
|
-
this.writable =
|
|
230
|
-
this.boxState =
|
|
231
|
-
this.focusedApp =
|
|
232
|
-
this.canRedoSteps =
|
|
233
|
-
this.canUndoSteps =
|
|
234
|
-
this.camera =
|
|
235
|
-
this.memberState =
|
|
236
|
-
this.sceneIndex =
|
|
237
|
-
this.sceneLength =
|
|
262
|
+
this.writable = writable(this.room.isWritable, (set) => this._addRoomListener("onEnableWriteNowChanged", () => set(this.room.isWritable)), this.room.setWritable.bind(this.room));
|
|
263
|
+
this.boxState = readable(this.manager.boxState, (set) => this._addManagerListener("boxStateChange", set));
|
|
264
|
+
this.focusedApp = readable(this.manager.focused, (set) => this._addManagerListener("focusedChange", set));
|
|
265
|
+
this.canRedoSteps = readable(this.manager.canRedoSteps, (set) => this._addManagerListener("canRedoStepsChange", set));
|
|
266
|
+
this.canUndoSteps = readable(this.manager.canUndoSteps, (set) => this._addManagerListener("canUndoStepsChange", set));
|
|
267
|
+
this.camera = readable(this.manager.mainView.camera, (set) => this._addMainViewListener("onCameraUpdated", set));
|
|
268
|
+
this.memberState = readable(this.room.state.memberState, (set) => this._addRoomListener("onRoomStateChanged", ({ memberState: m }) => m && set(m)));
|
|
269
|
+
this.sceneIndex = writable(this.manager.mainViewSceneIndex, (set) => this._addManagerListener("mainViewSceneIndexChange", set), this.manager.setMainViewSceneIndex.bind(this.manager));
|
|
270
|
+
this.sceneLength = readable(this.manager.mainViewScenesLength, (set) => this._addManagerListener("mainViewScenesLengthChange", set));
|
|
238
271
|
this._appsStatus = {};
|
|
239
|
-
this.appsStatus =
|
|
240
|
-
this._appsStatus[kind] = {
|
|
241
|
-
status: status === "start" ? "loading" : status === "failed" ? "failed" : "idle",
|
|
242
|
-
reason
|
|
243
|
-
};
|
|
272
|
+
this.appsStatus = readable({}, (set) => this._addManagerListener("loadApp", ({ kind, status, reason }) => {
|
|
273
|
+
this._appsStatus[kind] = { status: transform_app_status(status), reason };
|
|
244
274
|
set(this._appsStatus);
|
|
245
275
|
}));
|
|
246
276
|
}
|
|
@@ -254,11 +284,11 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
254
284
|
}
|
|
255
285
|
undo() {
|
|
256
286
|
this._assertNotDestroyed();
|
|
257
|
-
this.manager.
|
|
287
|
+
this.manager.undo();
|
|
258
288
|
}
|
|
259
289
|
redo() {
|
|
260
290
|
this._assertNotDestroyed();
|
|
261
|
-
this.manager.
|
|
291
|
+
this.manager.redo();
|
|
262
292
|
}
|
|
263
293
|
moveCamera(camera) {
|
|
264
294
|
this._assertNotDestroyed();
|
|
@@ -274,7 +304,10 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
274
304
|
}
|
|
275
305
|
setAppliance(appliance, shape) {
|
|
276
306
|
this._assertNotDestroyed();
|
|
277
|
-
this.manager.mainView.setMemberState({
|
|
307
|
+
this.manager.mainView.setMemberState({
|
|
308
|
+
currentApplianceName: appliance,
|
|
309
|
+
shapeType: shape
|
|
310
|
+
});
|
|
278
311
|
}
|
|
279
312
|
setStrokeWidth(strokeWidth) {
|
|
280
313
|
this._assertNotDestroyed();
|
|
@@ -284,6 +317,18 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
284
317
|
this._assertNotDestroyed();
|
|
285
318
|
this.manager.mainView.setMemberState({ strokeColor });
|
|
286
319
|
}
|
|
320
|
+
prevPage() {
|
|
321
|
+
this._assertNotDestroyed();
|
|
322
|
+
return this.manager.prevPage();
|
|
323
|
+
}
|
|
324
|
+
nextPage() {
|
|
325
|
+
this._assertNotDestroyed();
|
|
326
|
+
return this.manager.nextPage();
|
|
327
|
+
}
|
|
328
|
+
addPage(params) {
|
|
329
|
+
this._assertNotDestroyed();
|
|
330
|
+
return this.manager.addPage(params);
|
|
331
|
+
}
|
|
287
332
|
async insertImage(url) {
|
|
288
333
|
this._assertNotDestroyed();
|
|
289
334
|
await this.manager.switchMainViewToWriter();
|
|
@@ -308,19 +353,20 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
308
353
|
this.manager.moveCameraToContain({ originX, originY, width, height });
|
|
309
354
|
}
|
|
310
355
|
insertDocs(arg1, arg2) {
|
|
356
|
+
this._assertNotDestroyed();
|
|
311
357
|
if (typeof arg1 === "object" && "fileType" in arg1) {
|
|
312
358
|
return this._insertDocsImpl(arg1);
|
|
313
359
|
} else if (arg2 && arg2.status !== "Finished") {
|
|
314
|
-
throw new Error("
|
|
360
|
+
throw new Error("FastboardApp cannot insert a converting doc.");
|
|
315
361
|
} else if (arg2 && arg2.progress) {
|
|
316
|
-
const
|
|
362
|
+
const title = arg1;
|
|
317
363
|
const scenePath = `/${arg2.uuid}/${genUID()}`;
|
|
318
|
-
const
|
|
364
|
+
const scenes1 = arg2.progress.convertedFileList.map(convertedFileToScene);
|
|
365
|
+
const { scenes, taskId, url } = makeSlideParams(scenes1);
|
|
319
366
|
if (taskId && url) {
|
|
320
|
-
|
|
321
|
-
return this._insertDocsImpl({ fileType: "pptx", scenePath, taskId, title, url, scenes: emptyScenes });
|
|
367
|
+
return this._insertDocsImpl({ fileType: "pptx", scenePath, scenes, title, taskId, url });
|
|
322
368
|
} else {
|
|
323
|
-
return this._insertDocsImpl({ fileType: "pdf", scenePath, scenes, title
|
|
369
|
+
return this._insertDocsImpl({ fileType: "pdf", scenePath, scenes: scenes1, title });
|
|
324
370
|
}
|
|
325
371
|
}
|
|
326
372
|
}
|
|
@@ -334,6 +380,9 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
334
380
|
options: { scenePath, title, scenes }
|
|
335
381
|
});
|
|
336
382
|
case "pptx":
|
|
383
|
+
if (scenes && scenes[0].ppt) {
|
|
384
|
+
warn("no-ppt-in-scenes");
|
|
385
|
+
}
|
|
337
386
|
return this.manager.addApp({
|
|
338
387
|
kind: "Slide",
|
|
339
388
|
options: { scenePath, title, scenes },
|
|
@@ -371,24 +420,61 @@ var FastboardApp = class extends FastboardAppBase {
|
|
|
371
420
|
});
|
|
372
421
|
}
|
|
373
422
|
};
|
|
423
|
+
async function createFastboard(_a) {
|
|
424
|
+
var _b = _a, {
|
|
425
|
+
sdkConfig,
|
|
426
|
+
joinRoom: _c
|
|
427
|
+
} = _b, _d = _c, { callbacks } = _d, joinRoomParams = __objRest(_d, ["callbacks"]), {
|
|
428
|
+
managerConfig
|
|
429
|
+
} = _b;
|
|
430
|
+
const sdk = new import_white_web_sdk.WhiteWebSdk(__spreadProps(__spreadValues({}, sdkConfig), {
|
|
431
|
+
useMobXState: true
|
|
432
|
+
}));
|
|
433
|
+
const hotKeys = __spreadProps(__spreadValues({}, import_white_web_sdk.DefaultHotKeys), {
|
|
434
|
+
changeToSelector: "s",
|
|
435
|
+
changeToLaserPointer: "z",
|
|
436
|
+
changeToPencil: "p",
|
|
437
|
+
changeToRectangle: "r",
|
|
438
|
+
changeToEllipse: "c",
|
|
439
|
+
changeToEraser: "e",
|
|
440
|
+
changeToText: "t",
|
|
441
|
+
changeToStraight: "l",
|
|
442
|
+
changeToArrow: "a",
|
|
443
|
+
changeToHand: "h"
|
|
444
|
+
});
|
|
445
|
+
const room = await sdk.joinRoom(__spreadProps(__spreadValues({
|
|
446
|
+
floatBar: true,
|
|
447
|
+
hotKeys
|
|
448
|
+
}, ensure_window_manager(joinRoomParams)), {
|
|
449
|
+
useMultiViews: true,
|
|
450
|
+
disableNewPencil: false,
|
|
451
|
+
disableMagixEventDispatchLimit: true
|
|
452
|
+
}), callbacks);
|
|
453
|
+
const manager = await import_window_manager2.WindowManager.mount(__spreadProps(__spreadValues({
|
|
454
|
+
cursor: true
|
|
455
|
+
}, managerConfig), {
|
|
456
|
+
room
|
|
457
|
+
}));
|
|
458
|
+
manager.mainView.setCameraBound({
|
|
459
|
+
minContentMode: (0, import_white_web_sdk.contentModeScale)(0.3),
|
|
460
|
+
maxContentMode: (0, import_white_web_sdk.contentModeScale)(3)
|
|
461
|
+
});
|
|
462
|
+
return new FastboardApp(sdk, room, manager, hotKeys);
|
|
463
|
+
}
|
|
374
464
|
|
|
375
|
-
// src/impl/
|
|
465
|
+
// src/impl/FastboardPlayer.ts
|
|
466
|
+
var import_white_web_sdk2 = require("white-web-sdk");
|
|
467
|
+
var import_window_manager3 = require("@netless/window-manager");
|
|
376
468
|
var FastboardPlayerBase = class {
|
|
377
469
|
constructor(sdk, player, manager) {
|
|
378
470
|
this.sdk = sdk;
|
|
379
471
|
this.player = player;
|
|
380
472
|
this.manager = manager;
|
|
381
|
-
this._disposers = [];
|
|
382
473
|
this._destroyed = false;
|
|
383
|
-
this.createValue = (...args) => {
|
|
384
|
-
const value = createValue(...args);
|
|
385
|
-
this._disposers.push(value.dispose);
|
|
386
|
-
return value;
|
|
387
|
-
};
|
|
388
474
|
}
|
|
389
475
|
_assertNotDestroyed() {
|
|
390
476
|
if (this._destroyed) {
|
|
391
|
-
throw new Error("
|
|
477
|
+
throw new Error("FastboardApp has been destroyed");
|
|
392
478
|
}
|
|
393
479
|
}
|
|
394
480
|
_addPlayerListener(name, listener) {
|
|
@@ -396,10 +482,10 @@ var FastboardPlayerBase = class {
|
|
|
396
482
|
this.player.callbacks.on(name, listener);
|
|
397
483
|
return () => this.player.callbacks.off(name, listener);
|
|
398
484
|
}
|
|
399
|
-
_addManagerListener(name,
|
|
485
|
+
_addManagerListener(name, listener) {
|
|
400
486
|
this._assertNotDestroyed();
|
|
401
|
-
this.manager.emitter.on(name,
|
|
402
|
-
return () => this.manager.emitter.off(name,
|
|
487
|
+
this.manager.emitter.on(name, listener);
|
|
488
|
+
return () => this.manager.emitter.off(name, listener);
|
|
403
489
|
}
|
|
404
490
|
_addMainViewListener(name, listener) {
|
|
405
491
|
this._assertNotDestroyed();
|
|
@@ -407,30 +493,37 @@ var FastboardPlayerBase = class {
|
|
|
407
493
|
return () => this.manager.mainView.callbacks.off(name, listener);
|
|
408
494
|
}
|
|
409
495
|
destroy() {
|
|
410
|
-
this._disposers.forEach((dispose) => dispose());
|
|
411
|
-
this._disposers.length = 0;
|
|
412
496
|
this._destroyed = true;
|
|
413
497
|
this.manager.destroy();
|
|
414
|
-
this.player.callbacks.off();
|
|
498
|
+
return this.player.callbacks.off();
|
|
415
499
|
}
|
|
416
500
|
};
|
|
417
501
|
var FastboardPlayer = class extends FastboardPlayerBase {
|
|
418
502
|
constructor() {
|
|
419
503
|
super(...arguments);
|
|
420
|
-
this.currentTime =
|
|
421
|
-
this.phase =
|
|
422
|
-
this.canplay =
|
|
423
|
-
this.speed =
|
|
504
|
+
this.currentTime = writable(this.player.progressTime, (set) => this._addPlayerListener("onProgressTimeChanged", set), this.player.seekToProgressTime.bind(this.player));
|
|
505
|
+
this.phase = readable(this.player.phase, (set) => this._addPlayerListener("onPhaseChanged", set));
|
|
506
|
+
this.canplay = readable(this.player.isPlayable, (set) => this._addPlayerListener("onIsPlayableChanged", set));
|
|
507
|
+
this.speed = writable(this.player.playbackSpeed, (set) => {
|
|
424
508
|
this._setSpeed = set;
|
|
425
509
|
}, (value) => {
|
|
426
510
|
this.player.playbackSpeed = value;
|
|
427
511
|
this._setSpeed(value);
|
|
428
512
|
});
|
|
429
|
-
this.
|
|
513
|
+
this.ready = readable(false, (set) => {
|
|
514
|
+
this._setReady = set;
|
|
515
|
+
});
|
|
516
|
+
this.duration = readable(0, (set) => {
|
|
517
|
+
this._setDuration = set;
|
|
518
|
+
});
|
|
519
|
+
this.state = readable(null, (set) => {
|
|
430
520
|
const update = () => set(this.player.state);
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
521
|
+
this.player.callbacks.once("onLoadFirstFrame", () => {
|
|
522
|
+
this._setDuration(this.player.timeDuration);
|
|
523
|
+
this._setReady(true);
|
|
524
|
+
update();
|
|
525
|
+
});
|
|
526
|
+
return this._addPlayerListener("onPlayerStateChanged", update);
|
|
434
527
|
});
|
|
435
528
|
}
|
|
436
529
|
bindContainer(container) {
|
|
@@ -457,10 +550,38 @@ var FastboardPlayer = class extends FastboardPlayerBase {
|
|
|
457
550
|
this._assertNotDestroyed();
|
|
458
551
|
this.player.stop();
|
|
459
552
|
}
|
|
553
|
+
setSpeed(value) {
|
|
554
|
+
this._assertNotDestroyed();
|
|
555
|
+
this.speed.set(value);
|
|
556
|
+
}
|
|
460
557
|
};
|
|
558
|
+
async function replayFastboard(_a) {
|
|
559
|
+
var _b = _a, {
|
|
560
|
+
sdkConfig,
|
|
561
|
+
replayRoom: _c
|
|
562
|
+
} = _b, _d = _c, { callbacks } = _d, replayRoomParams = __objRest(_d, ["callbacks"]), {
|
|
563
|
+
managerConfig
|
|
564
|
+
} = _b;
|
|
565
|
+
const sdk = new import_white_web_sdk2.WhiteWebSdk(__spreadProps(__spreadValues({}, sdkConfig), {
|
|
566
|
+
useMobXState: true
|
|
567
|
+
}));
|
|
568
|
+
const player = await sdk.replayRoom(__spreadProps(__spreadValues({}, ensure_window_manager(replayRoomParams)), {
|
|
569
|
+
useMultiViews: true
|
|
570
|
+
}), callbacks);
|
|
571
|
+
const managerPromise = import_window_manager3.WindowManager.mount(__spreadProps(__spreadValues({
|
|
572
|
+
cursor: true
|
|
573
|
+
}, managerConfig), {
|
|
574
|
+
room: player
|
|
575
|
+
}));
|
|
576
|
+
player.play();
|
|
577
|
+
const manager = await managerPromise;
|
|
578
|
+
player.pause();
|
|
579
|
+
return new FastboardPlayer(sdk, player, manager);
|
|
580
|
+
}
|
|
461
581
|
|
|
462
|
-
// src/behaviors/
|
|
463
|
-
var
|
|
582
|
+
// src/behaviors/index.ts
|
|
583
|
+
var import_window_manager4 = require("@netless/window-manager");
|
|
584
|
+
var import_app_slide = __toESM(require("@netless/app-slide"));
|
|
464
585
|
var DefaultApps = {
|
|
465
586
|
Monaco: {
|
|
466
587
|
src: "https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-monaco/0.1.12/dist/main.iife.js"
|
|
@@ -482,88 +603,16 @@ var DefaultApps = {
|
|
|
482
603
|
src: "https://netless-app.oss-cn-hangzhou.aliyuncs.com/@netless/app-media-player/0.1.1/dist/main.iife.js"
|
|
483
604
|
}
|
|
484
605
|
};
|
|
606
|
+
import_window_manager4.WindowManager.register({
|
|
607
|
+
kind: "Slide",
|
|
608
|
+
appOptions: { debug: false },
|
|
609
|
+
src: import_app_slide.default
|
|
610
|
+
});
|
|
485
611
|
for (const kind in DefaultApps) {
|
|
486
612
|
if (Object.prototype.hasOwnProperty.call(DefaultApps, kind)) {
|
|
487
613
|
const options = DefaultApps[kind];
|
|
488
|
-
|
|
614
|
+
import_window_manager4.WindowManager.register(__spreadValues({ kind }, options));
|
|
489
615
|
}
|
|
490
616
|
}
|
|
491
|
-
|
|
492
|
-
// src/minimal.ts
|
|
493
|
-
async function createFastboard(_a) {
|
|
494
|
-
var _b = _a, {
|
|
495
|
-
sdkConfig,
|
|
496
|
-
joinRoom: _c
|
|
497
|
-
} = _b, _d = _c, { callbacks } = _d, joinRoomParams = __objRest(_d, ["callbacks"]), {
|
|
498
|
-
managerConfig
|
|
499
|
-
} = _b;
|
|
500
|
-
const sdk = new import_white_web_sdk.WhiteWebSdk(__spreadProps(__spreadValues({}, sdkConfig), {
|
|
501
|
-
useMobXState: true
|
|
502
|
-
}));
|
|
503
|
-
const hotKeys = __spreadProps(__spreadValues({}, import_white_web_sdk.DefaultHotKeys), {
|
|
504
|
-
changeToSelector: "s",
|
|
505
|
-
changeToLaserPointer: "z",
|
|
506
|
-
changeToPencil: "p",
|
|
507
|
-
changeToRectangle: "r",
|
|
508
|
-
changeToEllipse: "c",
|
|
509
|
-
changeToEraser: "e",
|
|
510
|
-
changeToText: "t",
|
|
511
|
-
changeToStraight: "l",
|
|
512
|
-
changeToArrow: "a",
|
|
513
|
-
changeToHand: "h"
|
|
514
|
-
});
|
|
515
|
-
const room = await sdk.joinRoom(__spreadProps(__spreadValues({
|
|
516
|
-
floatBar: true,
|
|
517
|
-
hotKeys
|
|
518
|
-
}, ensureWindowManager(joinRoomParams)), {
|
|
519
|
-
useMultiViews: true,
|
|
520
|
-
disableNewPencil: false,
|
|
521
|
-
disableMagixEventDispatchLimit: true
|
|
522
|
-
}), callbacks);
|
|
523
|
-
const manager = await import_window_manager4.WindowManager.mount(__spreadProps(__spreadValues({
|
|
524
|
-
cursor: true
|
|
525
|
-
}, managerConfig), {
|
|
526
|
-
room
|
|
527
|
-
}));
|
|
528
|
-
manager.mainView.setCameraBound({
|
|
529
|
-
minContentMode: (0, import_white_web_sdk.contentModeScale)(0.3),
|
|
530
|
-
maxContentMode: (0, import_white_web_sdk.contentModeScale)(3)
|
|
531
|
-
});
|
|
532
|
-
return new FastboardApp(sdk, room, manager, hotKeys);
|
|
533
|
-
}
|
|
534
|
-
async function replayFastboard(_a) {
|
|
535
|
-
var _b = _a, {
|
|
536
|
-
sdkConfig,
|
|
537
|
-
replayRoom: _c
|
|
538
|
-
} = _b, _d = _c, { callbacks } = _d, replayRoomParams = __objRest(_d, ["callbacks"]), {
|
|
539
|
-
managerConfig
|
|
540
|
-
} = _b;
|
|
541
|
-
const sdk = new import_white_web_sdk.WhiteWebSdk(__spreadProps(__spreadValues({}, sdkConfig), {
|
|
542
|
-
useMobXState: true
|
|
543
|
-
}));
|
|
544
|
-
const player = await sdk.replayRoom(__spreadProps(__spreadValues({}, ensureWindowManager(replayRoomParams)), {
|
|
545
|
-
useMultiViews: true
|
|
546
|
-
}), callbacks);
|
|
547
|
-
const managerPromise = import_window_manager4.WindowManager.mount(__spreadProps(__spreadValues({
|
|
548
|
-
cursor: true
|
|
549
|
-
}, managerConfig), {
|
|
550
|
-
room: player
|
|
551
|
-
}));
|
|
552
|
-
player.play();
|
|
553
|
-
const manager = await managerPromise;
|
|
554
|
-
player.pause();
|
|
555
|
-
return new FastboardPlayer(sdk, player, manager);
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
// src/behaviors/register-slide.ts
|
|
559
|
-
var import_window_manager5 = require("@netless/window-manager");
|
|
560
|
-
var import_app_slide = __toESM(require("@netless/app-slide"));
|
|
561
|
-
import_window_manager5.WindowManager.register({
|
|
562
|
-
kind: "Slide",
|
|
563
|
-
appOptions: {
|
|
564
|
-
debug: false
|
|
565
|
-
},
|
|
566
|
-
src: import_app_slide.default
|
|
567
|
-
});
|
|
568
617
|
module.exports = __toCommonJS(src_exports);
|
|
569
618
|
//# sourceMappingURL=index.js.map
|