跳转到主要内容
本页包含 registerButtonregisterButtonListener 两个接口。调用顺序:先注册按钮(registerButton),再监听点击事件(registerButtonListener)。

registerButton

注册插件按钮。只有注册了按钮,用户才能在笔记/文档对应入口看到插件按钮并触发点击事件。
registerButton(type: number, appTypes: string[], button: PluginButton): Promise<boolean>;
参数
参数类型说明
typenumber按钮类型:1 工具栏按钮,2 套索工具栏按钮,3 文档划词工具栏按钮
appTypesstring[]应用类型数组:NOTE/DOC
buttonPluginButton注册的按钮信息对象
返回
  • Promise<boolean>:是否注册成功

registerButtonListener

监听插件按钮点击事件。通常你会在应用启动阶段注册按钮,在插件逻辑初始化时注册监听。
registerButtonListener(buttonListener: ButtonListener): ButtonSubscription;
参数
参数类型说明
buttonListenerButtonListener回调 onButtonPress(event)
返回
  • ButtonSubscription:订阅对象,调用 remove() 可注销监听

类型定义

ButtonListener

interface ButtonListener {
  onButtonPress(event: { id: number; name: string; icon: string }): void;
}
说明
  • onButtonPress(event):按钮被点击时触发
  • event.id:按钮 id
  • event.name:按钮名称
  • event.icon:按钮图标
  • 事件更多说明参考:插件界面 - 按钮事件监听

ButtonSubscription

type ButtonSubscription = {
  remove(): void;
};
说明
  • registerButtonListener 返回
  • 调用 remove() 可注销按钮事件监听

示例

import { PluginManager } from 'sn-plugin-lib';

/**
 * 注册套索工具栏按钮,并监听按钮点击事件的示例。
 * 实际使用中通常在页面卸载/不再需要监听时调用 `sub.remove()`。
 */
export async function exampleRegisterButtonAndListener() {
  const ok = await PluginManager.registerButton(2, ['NOTE'], {
    id: 1,
    name: 'My Plugin',
    icon: '',
    editDataTypes: [0, 1, 2, 3, 4],
    showType: 1,
  });

  const sub = PluginManager.registerButtonListener({
    onButtonPress(event) {
      const { id, name, icon } = event;
      void id;
      void name;
      void icon;
    },
  } as any);

  sub.remove();
  return ok;
}