Fastboard Web SDK API 参考
- Web
更新时间不可用
本页提供 Fastboard Web 1.1.10 的 TypeScript API 参考。依赖 Whiteboard Web 2.16.59、Window Manager 1.0.25 和 Appliance Plugin 1.1.45。
createFastboard
createFastboard<TEventData extends Record<string, any> = any>(options: FastboardOptions): Promise<FastboardApp<TEventData>>;创建一个白板应用(FastboardApp)实例。
参数
options:Object。白板配置选项。详见FastboardOptions。
返回
方法调用成功时返回 FastboardApp 对象。
createUI
function createUI(app?: FastboardApp | null, div?: Element): UI;创建 Fastboard 内置的一套 UI 组件。
参数
app:Object。FastboardApp实例,为createFastboard方法的返回值。div:HTML Element。容纳白板应用的网页元素。
返回
方法调用成功时返回 UI 组件。详见 UI。
replayFastboard
replayFastboard<TEventData extends Record<string, any> = any>(options: FastboardReplayOptions): Promise<FastboardPlayer<TEventData>>;创建一个回放播放器(FastboardPlayer)实例。
参数
options:Object。回放配置选项。详见FastboardReplayOptions。
返回
方法调用成功时返回 FastboardPlayer 对象。
createReplayUI
function createReplayUI(player?: FastboardPlayer | null, div?: Element): ReplayUI;创建内置回放模式的一套 UI 组件。
参数
player:FastboardPlayer实例。div:HTML Element。容纳白板应用的网页元素。
返回
方法调用成功时返回 ReplayUI 组件。详见 replayUI。
dispatchDocsEvent
function dispatchDocsEvent(fastboard: FastboardApp | WindowManager, event: DocsEvent, options?: DocsEventOptions): Promise<DispatchDocsEventResult>;统一控制 MainView、DocsViewer、Slide、Presentation。target 省略时跟随焦点,或指定 mainView/appId;page 从 1 开始,scale=1 为适配尺寸。accepted 表示命令接收,拒绝时检查 reason/message;不保证渲染完成。
mount
mount(app: FastboardApp, div: HTMLDivElement, options?: MountProps): {
update(props?: MountProps | undefined): void;
destroy(): void;
};注意
自 v0.3.6 起不推荐使用该方法,请改用 createUI。
挂载白板应用到 HTML 元素上。
参数
app:Object。FastboardApp实例,为createFastboard方法的返回值。div:HTML Element。容纳白板应用的网页元素。options:(可选)Object。白板用户界面(UI)配置选项。详见MountProps。
返回
方法调用成功时返回如下函数:
update:更新白板的 UI:props:UI 配置选项。详见MountProps。
destroy:卸载白板应用。
FastboardApp 类
FastboardApp 类提供管理 FastboardApp 对象的方法。
注意
该类中的方法必须在成功调用 createFastboard 创建 FastboardApp 对象后调用。
canOperate
get canOperate(): boolean;获取房间是否可操作。
返回当前房间可写且连接状态为 connected 时的操作状态。
undo
undo(): void;撤销上一步操作。
redo
redo(): void;重做,即回退撤销操作。
moveCamera
moveCamera(camera: Partial<Camera> & {
animationMode?: AnimationMode | undefined;
}): void;调整视角。
参数
camera:Object。视角的参数配置,详见Camera。
示例
移动视角使网页元素的中心与白板中心正好对齐,且缩放比例为 100%:
app.moveCamera({ centerX: 0, centerY: 0, scale: 1 });moveCameraToContain
moveCameraToContain(rectangle: Rectangle & {
animationMode?: AnimationMode;
}): void;调整视角以完整显示指定的矩形区域。
参数
rect:视觉矩形的参数设置,详见Rectangle。
setAppliance
setAppliance(appliance: ExtendApplianceNames | Appliance, shape?: ShapeType | ExtendShapeType | Shape): void;设置当前使用的白板工具。
参数
appliance:白板工具名称。详见ApplianceNames。shape:图形工具。详见ShapeType。当appliance设为shape时,可使用该参数设置具体的图形形状。
setStrokeWidth
setStrokeWidth(strokeWidth: number): void;设置线条的宽度。
参数
strokeWidth:Number。线条宽度。
setStrokeColor
setStrokeColor(strokeColor: Color): void;设置线条的颜色。
参数
strokeColor:线条颜色,为 RGB 格式,例如[0, 0, 255]表示蓝色。详见Color。
setTextColor
setTextColor(textColor: Color): void;设置字体的颜色。
参数
textColor:字体颜色,为 RGB 格式,例如[0, 0, 255]表示蓝色。详见Color。
toggleDottedLine
toggleDottedLine(force?: boolean): void;切换铅笔工具的画线样式。
不传入 force 直接调用该方法时,铅笔工具将在画实线和画虚线之间切换。例如,如果当前铅笔工具为画实线,调用 toggleDottedLine() 将切换铅笔工具为画虚线;当前为画虚线,调用 toggleDottedLine() 将切换为画实线。
参数
force:Boolean。(可选)切换绘制线条的样式:true:切换为画虚线。false:切换为画实线。
setPencilEraserSize
setPencilEraserSize(size: number): void;设置铅笔橡皮工具的尺寸。
参数
size:Number。铅笔橡皮的尺寸,支持传入以下值:1:(默认)小号。2:中号。3:大号。
setTextSize
setTextSize(textSize: number): void;设置字体的大小。
参数
textSize:Number。字体大小。
insertImage
insertImage(url: string, crossOrigin?: boolean | string): Promise<void>;插入图片。
该方法可以将指定的网络图片插入并展示到当前白板页面上,插入的图片默认置于当前视图的中心。
参数
url:String。图片的 URL 地址。请确保 App 客户端能够访问该 URL,否则图片无法正常展示。crossOrigin: Boolean。是否对插入的图片启用跨域资源共享 (CORS, Cross-Origin Resource Sharing) :true:(默认)启用 CORS。false:禁用 CORS。
insertMedia
insertMedia(title: string, src: string): Promise<string | undefined>;在白板子窗口中插入并播放音视频。
参数
title:窗口标题。src:音视频文件的 URL 地址。请确保 app 客户端能够访问该 URL,否则无法正常加载音视频文件。
返回
方法调用成功时,返回插入音视频的标识符。
insertDocs
insertDocs(
filename: string,
status: ConversionResponse,
options?: InsertDocsOptions
): Promise<string | undefined>;
insertDocs(
filename: string,
response: ProjectorResponse,
options?: InsertDocsOptions
): Promise<string | undefined>;
insertDocs(params: InsertDocsParams, options?: InsertDocsOptions): Promise<string | undefined>;支持转换结果和结构化参数重载;staticRenderer=presentation 创建 Presentation,未设置时静态页使用 DocsViewer。返回 App ID 或 undefined。
insertDocs:结构化参数
insertDocs(params: InsertDocsParams, options?: InsertDocsOptions): Promise<string | undefined>;结构化静态页通过 InsertDocsStatic 提交,动态转换结果通过 InsertDocsDynamic 提交;返回类型为 Promise<string | undefined>。
insertCodeEditor
insertCodeEditor(): Promise<string | undefined>;注意
该方法自 v0.3.6 起废弃,请改用 fastboard.manager.addApp({ kind: 'Monaco' }) 实现。
插入代码编辑器。
CodeEditor 是基于 Monaco Editor 开发的代码编辑器插件。通过调用 insertCodeEditor 方法,你可以快速在白板中集成 CodeEditor 插件,并使用代码编辑、自动补全、调试等功能。
返回
方法调用成功时,返回插件的标识符。
insertCountdown
insertCountdown(): Promise<string | undefined>;注意
该方法自 v0.3.6 起废弃,请改用 fastboard.manager.addApp({ kind: 'Countdown' }) 实现。
插入计时器。
Countdown 是声网开发的计时器插件。通过调用 insertCountdown 方法,你可以快速在白板中集成 Countdown 插件,并使用该插件设定、暂停、重置倒计时。
返回
方法调用成功时,返回插件的标识符。
insertGeoGebra
insertGeoGebra(): Promise<string | undefined>;注意
该方法自 v0.3.6 起废弃,请改用 fastboard.manager.addApp({ kind: 'GeoGebra' }) 实现。
插入 GeoGebra 数学计算器。
GeoGebra 是基于 GeoGebra 开发的数学计算器插件。通过调用 insertGeoGebra 方法,你可以快速在白板中集成 GeoGebra 插件并使用该插件的功能。
注意
目前 GeoGebra 插件仅作为示例插件集成于 Fastboard SDK 中,如需商用,请自行联系 GeoGebra 申请许可。
返回
方法调用成功时,返回插件的标识符。
removePage
removePage(index?: number): Promise<boolean>;删除指定白板页。
参数
index:Number。需要删除的主白板页索引,从 0 开始;省略时删除当前页。
返回
true:调用成功。
false:调用失败。
jumpPage
jumpPage(index: number): Promise<boolean>;跳转至指定页码的白板页。
参数
index:Number。期望跳转的主白板页索引,范围为 0~n-1。统一页面命令中的 page 则从 1 开始。
destroy
destroy(): Promise<void>;销毁 Fastboard 实例并退出房间。返回 Promise<void>,应等待清理完成。
focusApp
focusApp(appId: string): Promise<boolean>;可等待的布尔值表示共享 focus、本端 Box 焦点和 zIndex 已提交;不表示 App setup 或首帧完成。
getPageState
getPageState(options?: PageStateOptions): Promise<UnifiedPageState>;查询统一页面状态,返回 target、可选 appId、1-based page/pageCount、可选相对 scale。状态 target 为 mainView/DocsViewer/Slide/Presentation。
appliancePlugin
readonly appliancePlugin?: AppliancePluginInstance;启用插件后获取插件实例,通过其 addListener/removeListener 订阅插件 PublicListener。完整事件与 Selector 示例见公共事件监听与元素查询。
sdk
readonly sdk: WhiteWebSdk;当前 WhiteWebSdk 实例。
room
readonly room: Room;当前实时 Room 实例。
manager
readonly manager: WindowManager;当前多窗口 WindowManager 实例。
hotKeys
readonly hotKeys: Partial<HotKeys>;当前快捷键配置。
syncedStore
readonly syncedStore: SyncedStore<TEventData>;用于自定义业务数据的同步存储实例。
appInMainViewPlugin
readonly appInMainViewPlugin?: AppInMainViewInstance | undefined;启用主视图插件后可用的实例;未启用时为 undefined。
bindContainer
bindContainer(container: HTMLElement): void;绑定渲染容器。由内置 UI 处理时通常无需再次绑定。
bindCollector
bindCollector(container: HTMLElement): void;将窗口收集器绑定到指定 HTML 容器。
writable
readonly writable: Writable<boolean>;当前房间可写状态。读取 .value;通过 .set(boolean) 提交可写状态修改。
phase
readonly phase: Readable<"connecting" | "connected" | "reconnecting" | "disconnecting" | "disconnected">;连接或播放阶段的可订阅状态;通过 .value 读取,subscribe/reaction 监听。
boxState
readonly boxState: Readable<"normal" | "minimized" | "maximized" | undefined>;窗口状态:normal、minimized、maximized,尚未初始化时可为 undefined。
focusedApp
readonly focusedApp: Readable<string | undefined>;当前焦点 App ID,无焦点 App 时为 undefined。
canRedoSteps
readonly canRedoSteps: Readable<number>;当前主白板可重做的步数。
canUndoSteps
readonly canUndoSteps: Readable<number>;当前主白板可撤销的步数。
camera
readonly camera: Readable<CameraState>;主白板相机状态。通过 moveCamera 修改,通过此只读状态读取或订阅。
memberState
readonly memberState: Readable<MemberState>;当前用户教具状态,包含工具与样式;通过 setAppliance 等方法更新。
sceneIndex
readonly sceneIndex: Writable<number>;当前主白板页索引,从 0 开始。通过 .set(index) 切页。
sceneLength
readonly sceneLength: Readable<number>;主白板总页数。
appsStatus
readonly appsStatus: Readable<AppsStatus>;按 App kind 索引的下载状态:idle/loading/failed;失败时可含 reason。
visibleApps
readonly visibleApps: Readable<Set<string>>;主视图插件当前可见的 App ID 集合。未开启 appInMainViewPlugin 时为空集合。
cleanCurrentScene
cleanCurrentScene(): void;清空当前主白板页的笔迹。调用前确认房间已连接且具有写入权限。
setMemberState
setMemberState(state: Partial<ExtendMemberState>): void;提交当前用户的插件扩展教具状态,参数使用 ExtendMemberState;需先启用插件。只传需要修改的字段。
prevPage
prevPage(): Promise<boolean>;切换到上一张主白板页,返回是否切换成功;已在第一页时不能继续向前。
nextPage
nextPage(): Promise<boolean>;切换到下一张主白板页,返回是否切换成功;已在最后一页时不能继续向后。
addPage
addPage(params?: AddPageParams): Promise<void>;在主白板新增页面。params 为 AddPageParams:after 指定相对当前页的插入方向,scene 提供新场景内容;等待 Promise 完成。
dispatchDocsEvent
dispatchDocsEvent(event: DocsEvent, options?: DocsEventOptions): Promise<DispatchDocsEventResult>;实例方法 app.dispatchDocsEvent(event, options),与顶层 dispatchDocsEvent(app, event, options) 区分。返回命令接收结果,需检查 accepted;不表示课件渲染完成。page 从 1 开始。
AppsInToolbar 类
AppsInToolbar 类提供管理工具条上插件按钮的方法。
push
push(...data: AppInToolbar[]): void;在插件中心的末尾添加插件按钮。
该方法支持一次添加多个新的插件按钮,新添加的插件按钮位于插件中心的最后。
参数
data:插件按钮。详见AppInToolbar。
示例代码
// 在插件中心添加一个 YouTube 按钮。点击按钮后,在白板应用中插入 Plyr 播放器并播放指定的视频。
apps.push({
icon: "https://api.iconify.design/logos:youtube-icon.svg?color=currentColor",
kind: "Plyr",
label: "YouTube",
onClick(app) {
app.manager.addApp({
kind: "Plyr",
options: { title: "YouTube" },
attributes: {
src: "https://www.youtube.com/embed/bTqVqk7FSmY",
provider: "youtube",
},
});
},
});insert
insert(data: AppInToolbar, index: number): void;在指定位置添加一个插件按钮。
该方法支持一次添加一个新的插件按钮,并支持指定添加的位置。
参数
data:插件按钮。详见AppInToolbar。index:Number。待添加按钮在插件中心的索引号。取值必须大于等于 0。
delete
delete(filter: (data: AppInToolbar) => boolean): void;删除指定的插件按钮。
参数
filter:filter()方法,返回所有需要被删除的按钮组件。你需要在该方法中传入一个回调函数,用于筛选出需要删除的插件按钮。data:插件按钮。详见AppInToolbar。
clear
clear(): void;删除所有插件按钮。
该方法可以删除插件中心的所有按钮,但不能删除白板工具条上的插件中心(apps)按钮。如果你需要隐藏白板工具条上的插件按钮,可以通过 mount 方法的 options 参数将 config.toolbar.apps.enable 设为 false。
类型定义
AppInToolbar
插件按钮。
interface AppInToolbar {
kind: string;
icon: string;
label: string;
onClick: (app: FastboardApp) => void | Promise<unknown>;
}AppInToolbar 包含如下属性:
kind:String。插件按钮的唯一标识符。可以是任意字符串。icon:String。按钮图标的 URL 地址。label:String。按钮的标题,即显示在按钮下方的文字。建议长度不超过 12 个英文字符,否则文字会显示不全。onClick:点击按钮时触发的回调:- app:
FastboardApp对象。
- app:
ApplianceNames
ApplianceNames 包含以下枚举值:
selector = "selector"选择工具。
clicker = "clicker"点击工具。目前主要用于点击 HTML5 文件上的内容。
laserPointer = "laserPointer"激光笔。
pencil = "pencil"铅笔。
rectangle = "rectangle"矩形工具。
ellipse = "ellipse"椭圆工具。
shape = "shape"图形工具。
eraser = "eraser"橡皮工具。
text = "text"文字工具。
straight = "straight"直线工具。
arrow = "arrow"箭头工具。
hand = "hand"抓手工具。
Camera
Camera 接口包含以下属性:
centerX:Number。网页元素的中心在白板坐标系(以网页元素的中心为原点的坐标系)中的 X 轴坐标。默认值为 0。centerY:Number。网页元素中心在白板坐标系(以网页元素的中心为原点的坐标系)中的 Y 轴坐标。默认值为 0。scale:Number。视角的缩放比例,默认值为 1,即缩放比例为 100%。
Color
Color:Number[]。颜色,格式为 RGB。例如 [0, 0, 255] 代表蓝色。
DocsEventOptions
interface DocsEventOptions {
target?: string;
/** @deprecated 使用 target */
appId?: string;
page?: number;
scale?: number;
}target 可为 mainView 或 appId;appId 为旧兼容字段。page 从 1 开始,scale 是相对适配尺寸倍率。
FastboardOptions
interface FastboardOptions {
sdkConfig: Omit<WhiteWebSdkConfiguration, "useMobXState"> & {
region: NonNullable<WhiteWebSdkConfiguration["region"]>;
};
joinRoom: Omit<JoinRoomParams, "useMultiViews" | "disableNewPencil" | "disableMagixEventDispatchLimit"> & {
callbacks?: Partial<Omit<RoomCallbacks, "onCanRedoStepsUpdate" | "onCanUndoStepsUpdate">>;
};
managerConfig?: Omit<MountParams, "room">;
netlessApps?: NetlessApp[];
enableAppliancePlugin?: AppliancePluginOptions;
/** Runtime callbacks/logger/cursor adapter; functions must not be placed in options.extras. */
appliancePluginAdaptor?: Omit<ApplianceAdaptor, "options">;
enableAppInMainViewPlugin?: true | AppInMainViewOptions;
}enableAppliancePlugin 为带 cdn/extras 的配置对象,运行时回调使用 appliancePluginAdaptor.callbacks。配置与启用示例见教具插件介绍。
FastboardReplayOptions
interface FastboardReplayOptions {
sdkConfig: Omit<WhiteWebSdkConfiguration, "useMobXState"> & {
region: NonNullable<WhiteWebSdkConfiguration["region"]>;
};
replayRoom: Omit<ReplayRoomParams, "useMultiViews"> & {
callbacks?: Partial<PlayerCallbacks>;
};
managerConfig?: Omit<MountParams, "room">;
netlessApps?: NetlessApp[];
enableAppliancePlugin?: AppliancePluginOptions;
appliancePluginAdaptor?: Omit<ApplianceAdaptor, "options">;
enableAppInMainViewPlugin?: true | AppInMainViewOptions;
}FastboardReplayOptions 接口包含以下属性:
sdkConfig: (必需)Object。WhiteWebSdk实例的配置,必须传入以下参数:appIdentifier:String。互动白板项目的 AppIdentifier。详见获取互动白板项目的安全密钥。region:String。数据中心,必须与创建房间时设置的数据中心一致。取值如下:cn-hz:中国杭州,服务区覆盖其他数据中心未覆盖的地区。us-sv:美国硅谷,服务区覆盖北美洲、南美洲。sg:新加坡,服务区覆盖新加坡、东亚、东南亚。in-mum:印度孟买,服务区覆盖印度。eu:欧洲(法兰克福),服务区覆盖欧洲。
replayRoom:Object。(必需)加入房间的参数设置,必须传入以下参数:room:String。房间的 UUID,即房间的唯一标识符。详见创建房间请求成功后响应包体中uuid参数的值。roomToken:String 型。房间的 Room Token,用于加入房间时的用户鉴权。可以通过以下方式获取:- 调用生成 Room Token 。
- 在 app 服务端用代码生成,详见在 app 服务端生成 Token。
beginTimestamp:Number。回放开始时间,单位为毫秒。duration:Number。回放持续时间,单位为毫秒。
managerConfig: (可选)Object。WindowManager 配置选项。netlessApps:(可选)Object。官方内置或自定义的 Fastboard 插件,详见注册和使用 Fastboard 插件。enableAppliancePlugin: (可选)启用appliance-plugin插件,详见AppliancePluginOptions。enableAppInMainViewPlugin: (可选)启用@netless/app-in-mainview-plugin插件,支持在白板主视图管理小窗应用:true:采用默认配置启用插件。AppInMainViewOptions:采用自定义配置启用插件,详见AppInMainViewOptions。
FastboardProps
interface FastboardProps {
app?: FastboardApp | null;
theme?: Theme;
language?: Language;
/**
* Note: updating this option does not take effect when the element was mounted.
* Make sure to set this option in `UI.mount(div, { containerRef })`.
*/
containerRef?: (container: HTMLDivElement | null) => void;
config?: FastboardUIConfig;
/** Whether to forcibly display the toolbar */
force_show_toolbar?: boolean;
/** Whether to force the display of the redo undo button */
force_show_redo_undo?: boolean;
/** Whether to force the display of the zoom control button */
force_show_zoom_control?: boolean;
/** Whether to forcibly display the page control button */
force_show_page_control?: boolean;
}UI 配置选项,包含以下属性:
app:FastboardApp对象。theme:主题,支持的取值如下:dark:深色。light:(默认)浅色。
language:语言,支持的取值如下:en:(默认)英文。zh-CN:中文。
containerRef:加入白板房间且成功将白板应用挂载到网页元素时触发的回调:container:容纳白板应用的网页元素。
config:组件配置。详见FastboardUIConfig。
FastboardUIConfig
白板用户界面上的组件配置。
interface FastboardUIConfig {
toolbar?: {
enable?: boolean;
} & ToolbarConfig;
redo_undo?: {
enable?: boolean;
};
zoom_control?: {
enable?: boolean;
};
page_control?: {
enable?: boolean;
};
}FastboardUIConfig 接口包含以下属性:
toolbar:(可选)工具条:enable:(可选)是否在白板用户界面上展示工具条:true:(默认)展示。false:不展示。
ToolbarConfig:工具条配置项。详见ToolbarConfig。
redo_undo:(可选)重做和撤销按钮:enable:(可选)是否在白板用户界面上展示重做和撤销按钮:true:(默认)展示。false:不展示。
zoom_control:(可选)缩放控制按钮:enable:(可选)是否在白板用户界面上展示缩放控制按钮:true:(默认)展示。false:不展示。
page_control:(可选)页面控制按钮:enable:(可选)是否在白板用户界面上展示页面控制按钮:true:(默认)展示。false:不展示。
ToolbarConfig
interface ToolbarConfig {
/** @default "left" */
placement?: "left" | "right";
/** @default ["clicker", "selector", "pencil", "text", "shapes", "eraser", "clear"] */
items?: ToolbarItem[];
/**
* Note: updating this option does not take effect when the element was mounted.
* Make sure to set this option in `UI.mount(div, { configs: { toolbar: { collapsed: true } } })`.
* @default false
*/
collapsed?: boolean;
/** Control the last button which opens apps stock on toolbar. */
apps?: {
enable?: boolean;
};
/** 颜色 */
colors?: Color[];
}ToolbarConfig 接口包含以下属性:
placement:(可选)String。工具条的位置,支持的取值如下:left:(默认)左侧。right:右侧。
items:(可选)String[]。工具条上展示的工具按钮,默认展示所有工具,支持的取值如下:clicker:点击工具。selector:选择工具。pencil:铅笔工具。text:文字工具。shapes:图形工具。eraser:橡皮工具。clear:清空工具。hand:抓手工具laserPointer:激光笔工具。
collapsed:(可选)Boolean。工具条是否折叠:true:折叠。false:(默认)不折叠。
apps:(可选)Object。插件中心:enable:(可选)是否在工具条上展示插件中心按钮:true:(默认)展示。false:不展示。
colors:(可选)Color[]。UI 组件的颜色,详见Color。
InsertDocsDynamic
interface InsertDocsDynamic {
readonly fileType: "pptx";
/** Unique string for binding whiteboard view to the doc. Must start with `/`. */
readonly scenePath: string;
/** Conversion task id, see https://developer.netless.link/server-en/home/server-conversion#get-query-task-conversion-progress. */
readonly taskId: string;
/** Window title. */
readonly title?: string;
/** Where the slide resource placed. @default `https://convertcdn.netless.link/dynamicConvert` */
readonly url?: string;
/** @example [{ name: '1' }, { name: '2' }, { name: '3' }] */
readonly scenes?: SceneDefinition[];
}InsertDocsDynamic 接口包含以下属性:
fileType: String。文档类型,取值为"pptx",表示动态文档。scenePath: String。白板场景路径,建议填"/pptx/uuid",其中uuid为文档转换任务的 UUID,即发起文档转换任务 请求成功时响应包体中uuid参数的值。taskId: String。文档转换任务的 UUID,即发起文档转换任务 请求成功时响应包体中uuid参数的值。title: (可选)String。窗口标题url: String。转换后文档的存储路径,例如,"https://docs-test-xxx.oss-cn-hangzhou.aliyuncs.com/dynamicConvert“。
InsertDocsStatic
interface InsertDocsStatic {
readonly fileType: "pdf";
/** Unique string for binding whiteboard view to the doc. Must start with `/`. */
readonly scenePath: string;
/** @example [{ name: '1', ppt: { src: 'url/to/ppt/1.png' } }] */
readonly scenes: SceneDefinition[];
/** Window title. */
readonly title?: string;
}InsertDocsStatic 接口包含以下属性:
fileType:String。文档类型,取值为"pdf",表示静态文档。scenePath: String。白板场景路径,建议填"/pdf/uuid",其中uuid为文档转换任务的 UUID,即发起文档转换任务 请求成功时响应包体中uuid参数的值。scenes: SceneDefinition[]。白板场景内容,即待展示的文档。由多个 object 组成,每个 object 表示一页文件,必须包含如下参数:name:String。场景名字。ppt:PptDescription。PPT 描述,包含以下属性:width:Number。文件的宽度,单位为像素。height:Number。文件的高度,单位为像素。src:String。该页文件的 URL 地址,即查询文档转换任务进度 返回的响应包体中images字段下url的值。
title: (可选)String。窗口标题。
MountProps
type MountProps = {
app?: FastboardApp | null;
theme?: Theme;
language?: Language;
containerRef?: (container: HTMLDivElement | null) => void;
config?: FastboardUIConfig;
}UI 配置选项,包含以下属性:
app:FastboardApp对象。theme:主题,支持的取值如下:dark:深色。light:(默认)浅色。
language:语言,支持的取值如下:en:(默认)英文。zh-CN:中文。
containerRef:加入白板房间且成功将白板应用挂载到网页元素时触发的回调:container:容纳白板应用的网页元素。
config:组件配置。详见FastboardUIConfig。
Rectangle
Rectangle 接口包含以下属性:
originX:Number。矩形左上角在白板坐标系(以网页元素的中心为原点的坐标系)中的 X 轴坐标。originY:Number。矩形左上角在白板坐标系(以网页元素的中心为原点的坐标系)中的 Y 轴坐标。width:矩形的宽度(px)。height:矩形的高度(px)。
ReplayUI
回放模式的一套 UI 组件。
interface ReplayUI {
/** render UI to div */
mount(div: Element, props?: ReplayFastboardProps): ReplayUI;
/** update UI (theme, language, etc.) */
update(props?: ReplayFastboardProps): void;
/** remove UI */
destroy(): void;
}ReplayUI 组件包含以下函数:
mount: 挂载白板 UI 到 HTML 元素上。div:HTML Element。容纳白板应用的网页元素。props: Object。UI 配置选项,详见FastboardProps。
update: 用于 UI 配置变更后,更新 Fastboard UI。props: Object。UI 配置选项,详见FastboardProps。
destroy: 移除 UI。
ShapeType
ShapeType 包含以下枚举值:
Triangle = "triangle"三角形。
Rhombus = "rhombus"菱形。
Pentagram = "pentagram"五角星。
SpeechBalloon = "speechBalloon"对话气泡。
UI
Fastboard 内置的一套 UI 组件。
interface UI {
/** render UI to div */
mount(div: Element, props?: FastboardProps): UI;
/** update UI (theme, language, etc.) */
update(props?: FastboardProps): void;
/** remove UI */
destroy(): void;
/** force show toolbar */
forceShowToolbar(): void;
/** force hide toolbar */
forceHideToolbar(): void;
/** recover show toolbar */
recoverToolbar(): void;
/** force show redo undo */
forceShowRedoUndo(): void;
/** force hide redo undo */
forceHideRedoUndo(): void;
/** recover show redo undo */
recoverRedoUndo(): void;
/** force show zoom control */
forceShowZoomControl(): void;
/** force hide zoom control */
forceHideZoomControl(): void;
/** recover show zoom control */
recoverZoomControl(): void;
/** force show page control */
forceShowPageControl(): void;
/** force hide page control */
forceHidePageControl(): void;
/** recover show page control */
recoverPageControl(): void;
}UI 组件包含以下函数:
mount: 挂载白板 UI 到 HTML 元素上。div:HTML Element。容纳白板应用的网页元素。props: Object。UI 配置选项,详见FastboardProps。
update: 用于 UI 配置变更后,更新 Fastboard UI。props: Object。UI 配置选项,详见FastboardProps。
destroy: 移除 UI。
InsertDocsOptions
interface InsertDocsOptions {
/** Renderer for static documents. Dynamic documents always use Slide. @default "docsViewer" */
readonly staticRenderer?: "docsViewer" | "presentation";
}staticRenderer 默认为 docsViewer;presentation 创建内置 Presentation。
UnifiedPageState
export type UnifiedPageState = {
target: "mainView" | "DocsViewer" | "Slide" | "Presentation";
appId?: string;
page: number;
pageCount: number;
/** MainView/Slide/Presentation actual scale relative to fitted size. */
scale?: number;
};查询结果用于实际页面观察;命令 accepted 不等于渲染完成。
FastboardPlayer 类
// const player = await replayFastboard(options);通过 replayFastboard 创建。状态与方法均属于回放实例,时间单位为毫秒。
sdk
readonly sdk: WhiteWebSdk;当前 WhiteWebSdk 实例。
player
readonly player: Player;底层回放 Player 实例。
manager
readonly manager: WindowManager;当前多窗口 WindowManager 实例。
syncedStore
readonly syncedStore: SyncedStore<TEventData>;用于自定义业务数据的同步存储实例。
appliancePlugin
readonly appliancePlugin?: AppliancePluginInstance | undefined;启用教具插件后可用的实例;未启用时为 undefined。
appInMainViewPlugin
readonly appInMainViewPlugin?: AppInMainViewInstance | undefined;启用主视图插件后可用的实例;未启用时为 undefined。
destroy
destroy(): Promise<void>;异步销毁回放并释放资源,等待 Promise 完成。
bindContainer
bindContainer(container: HTMLElement): void;绑定渲染容器。由内置 UI 处理时通常无需再次绑定。
bindCollector
bindCollector(container: HTMLElement): void;将窗口收集器绑定到指定 HTML 容器。
currentTime
readonly currentTime: Writable<number>;当前播放进度,单位毫秒。通过 .set(timestamp) 定位。
phase
readonly phase: Readable<"waitingFirstFrame" | "playing" | "pause" | "stop" | "ended" | "buffering">;连接或播放阶段的可订阅状态;通过 .value 读取,subscribe/reaction 监听。
canplay
readonly canplay: Readable<boolean>;缓冲完成、可开始播放时变为 true。
playbackRate
readonly playbackRate: Writable<number>;播放速度,默认 1。可通过 .set(value) 修改。
duration
readonly duration: Readable<number>;回放总时长,单位毫秒。
state
readonly state: Readable<PlayerState>;当前时间点的白板状态,包含成员等信息。
seek
seek(timestamp: number): Promise<PlayerSeekingResult>;定位到指定毫秒时间点,异步返回 PlayerSeekingResult。
play
play(): void;开始或继续播放。
pause
pause(): void;暂停播放。
stop
stop(): void;停止播放。
setPlaybackRate
setPlaybackRate(value: number): void;设置播放倍速,等价于 playbackRate.set(value)。
Readable 与 Writable
interface Writable<T> extends Readable<T> {}状态对象通过 .value 读取;使用订阅返回的函数解除业务监听。Writable 继承 Readable 的全部成员。
value
readonly value: T;同步读取当前值。
subscribe
subscribe(this: void, run: Subscriber<T>): Unsubscriber;订阅后立即回调当前值,随后在变化时回调;返回解除订阅函数。
reaction
reaction(this: void, run: Subscriber<T>): Unsubscriber;只监听后续变化,不立即回调当前值;返回解除订阅函数。
dispose
dispose(value?: T): void;释放该状态的所有订阅,可先提供一个最终值。通常由状态所有者销毁时调用。
set
set(this: void, value: T): void;写入新值。SDK 状态的写入会触发对应白板操作。
update
update(this: void, updater: Updater<T>): void;将当前值传给 updater,并写入它返回的新值。
const unsubscribe = app.phase.subscribe(phase => console.log(phase));
app.writable.set(true);
const index = app.sceneIndex.value;
// 业务组件卸载时释放自己的监听。
unsubscribe();