UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

93 lines (92 loc) 3.55 kB
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;