stream-chat
Version:
JS SDK for the Stream Chat API
93 lines (92 loc) • 3.55 kB
TypeScript
import { BaseSearchSource, type SearchSourceOptions } from '../../../search';
import type { TextComposerMiddlewareOptions, UserSuggestion } from './types';
import type { MemberFilters, MemberSort, UserFilters, UserOptions, UserResponse, UserSort } from '../../../types';
import type { Channel } from '../../../channel';
import type { Middleware } from '../../../middleware';
import type { TextComposerMiddlewareExecutorState } from './TextComposerMiddlewareExecutor';
export declare const accentsMap: {
[key: string]: string;
};
export declare const removeDiacritics: (text?: string) => string;
export declare const calculateLevenshtein: (query: string, name: string) => number;
export type MentionsSearchSourceOptions = SearchSourceOptions & {
mentionAllAppUsers?: boolean;
textComposerText?: string;
transliterate?: (text: string) => string;
};
export declare class MentionsSearchSource extends BaseSearchSource<UserSuggestion> {
readonly type = "mentions";
private client;
private channel;
userFilters: UserFilters | undefined;
memberFilters: MemberFilters | undefined;
userSort: UserSort | undefined;
memberSort: MemberSort | undefined;
searchOptions: Omit<UserOptions, 'limit' | 'offset'> | undefined;
config: MentionsSearchSourceOptions;
constructor(channel: Channel, options?: MentionsSearchSourceOptions);
get allMembersLoadedWithInitialChannelQuery(): boolean;
getStateBeforeFirstQuery(newSearchString: string): {
items: UserSuggestion[] | undefined;
hasNext: boolean;
isActive: boolean;
isLoading: boolean;
searchQuery: string;
lastQueryError?: Error;
next?: string | null;
offset?: number;
};
canExecuteQuery: (newSearchString?: string) => boolean;
transliterate: (text: string) => string;
getMembersAndWatchers: () => UserResponse[];
searchMembersLocally: (searchQuery: string) => UserResponse[];
prepareQueryUsersParams: (searchQuery: string) => {
filters: UserFilters;
sort: UserSort;
options: {
limit: number;
offset: number | undefined;
include_deactivated_users?: boolean;
presence?: boolean;
};
};
prepareQueryMembersParams: (searchQuery: string) => {
filters: MemberFilters;
sort: MemberSort;
options: {
limit: number;
offset: number | undefined;
include_deactivated_users?: boolean;
presence?: boolean;
};
};
queryUsers: (searchQuery: string) => Promise<UserResponse[]>;
queryMembers: (searchQuery: string) => Promise<UserResponse[]>;
query(searchQuery: string): Promise<{
items: UserSuggestion[];
}>;
filterMutes: (data: UserSuggestion[]) => UserSuggestion[];
filterQueryResults(items: UserSuggestion[]): UserSuggestion[];
}
/**
* TextComposer middleware for mentions
* Usage:
*
* const textComposer = new TextComposer(options);
*
* textComposer.use(createMentionsMiddleware(channel, {
* trigger: '$',
* minChars: 2
* }));
*
* @param channel
* @param {{
* minChars: number;
* trigger: string;
* }} options
* @returns
*/
export type MentionsMiddleware = Middleware<TextComposerMiddlewareExecutorState<UserSuggestion>, 'onChange' | 'onSuggestionItemSelect'>;
export declare const createMentionsMiddleware: (channel: Channel, options?: Partial<TextComposerMiddlewareOptions> & {
searchSource?: MentionsSearchSource;
}) => MentionsMiddleware;