1.0.0-canary.24 • Published 12 months ago

@zhltc/fastboard-core v1.0.0-canary.24

Weekly downloads
-
License
-
Repository
github
Last release
12 months ago

@zhltc/fastboard-core

A tiny wrapper of white-web-sdk and @netless/window-manager.

Used by @zhltc/fastboard-ui.

Usage

Warning: This package is not intended to be used directly. You should use @netless/fastboard or @netless/fastboard-react instead.

import { FastboardApp } from "@zhltc/fastboard-core";

let sdk = new WhiteWebSdk();
let room = await sdk.joinRoom({ hotKeys });
let manager = await WindowManager.mount(room);
let syncedStore = await SyncedStorePlugin.init(room);

let app = new FastboardApp(sdk, room, manager, syncedStore, hotKeys);

// reactive values
app.writable.subscribe(w => console.log(w ? "room is writable" : "room is readonly"));

// methods
await app.insertImage("https://url/to/image.png");

// requires @netless/app-slide to be registered
await app.insertDocs("filename.pptx", conversionResponse);

// quit
await app.destroy();

Advanced Usage

import { addRoomListener } from "@zhltc/fastboard-core";

const stopListen = addRoomListener(room, "onKeyDown", event => {
  console.log("keydown", event.key);
  stopListen();
});

import { createVal } from "@zhltc/fastboard-core";

const writable = createVal(
  // initial value
  room.isWritable,
  // setup listener, returns a cleanup function to stop listening
  set => addRoomListener(room, "onEnableWriteNowChanged", () => set(room.isWritable)),
  // optional setter
  newValue => room.setWritable(newValue)
);

writable.value; // true
writable.subscribe(w => console.log(w ? "room is writable" : "room is readonly"));
// change the value and invoke subs,
// if provided setter, this function will not change inner value directly, instead it calls the setter
writable.set(true);
writable.dispose(); // stop listening

// hacking, should not be used
writable.subs.forEach(f => f(writable.value)); // subs: Set<Subscriber>
writable.subs.clear(); // remove all subs
writable.value = false; // no trigger subs, but did change value

License

MIT @ netless