UNPKG

@textbus/xnote

Version:

A high-performance rich text editor that supports multiplayer online collaboration.

44 lines (43 loc) 1.44 kB
import { Component, ComponentStateLiteral, ContentType, Slot, Subject, Textbus } from '@textbus/core'; export interface Member { /** 头像 url */ avatar: string; /** 成员名称 */ name: string; /** 成员 id */ id: string; /** 成员所属群组名 */ groupName: string; /** 成员所属群组 id */ groupId: string; /** 成员背景色 */ color?: string; } /** * 组件架构信息 */ export declare abstract class Organization<T extends Member = Member> { /** 根据当前输入获取成员列表 */ abstract getMembers(name?: string): Promise<T[]>; /** 当 @ 某个成员时的回调 */ abstract atMember(member: T): void; } export interface AtComponentState<T extends Member = Member> { userInfo?: T; slot?: Slot; } export declare function registerAtShortcut(textbus: Textbus): void; export declare class AtComponent extends Component<AtComponentState> { static componentName: string; static type: ContentType; static fromJSON(textbus: Textbus, { slot: slotState, userInfo }: ComponentStateLiteral<AtComponentState>): AtComponent; focus: Subject<boolean>; members: import("@viewfly/core").Signal<Member[]>; selectedIndex: import("@viewfly/core").Signal<number>; private selection; private organization; constructor(state?: AtComponentState); getSlots(): Slot[]; setup(): void; atMember(member?: Member): void; }