@textbus/xnote
Version:
A high-performance rich text editor that supports multiplayer online collaboration.
44 lines (43 loc) • 1.44 kB
TypeScript
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;
}