prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
34 lines (33 loc) • 2.02 kB
TypeScript
import { PrismEditor } from '../../types.js';
declare const searchTemplate: () => HTMLDivElement;
declare const matchTemplate: () => HTMLDivElement;
export type SearchFilter = (start: number, end: number) => boolean;
/** Object with methods useful for performing a search and highlighting the matches. */
export interface SearchAPI {
/**
* Unhides the search container and highlights all matches of the specified string in the editor.
* @param str String to search for.
* @param caseSensitive Whether or not the search is case sensetive.
* @param wholeWord Whether or not matches must be surrounded by word boundaries.
* @param useRegExp If true, special characters won't be escaped when creating the RegExp.
* @param selection Boundaries to search between. If excluded, all the code is searched.
* @param filter A function called for each match with the start and end positions of the match.
* If it returns false, the match won't be included.
* @param wholeWordBoundry Pattern controlling the behavior of whole word search. Best left
* undefined unless you know what you're doing. Does nothing if `wholeWord` isn't set to `true`.
* Defaults to `/[_\p{N}\p{L}]{2}/u`.
* @returns An error message if the RegExp was invalid.
*/
search(str: string, caseSensitive?: boolean, wholeWord?: boolean, useRegExp?: boolean, selection?: [number, number], filter?: SearchFilter, wholeWordBoundry?: RegExp): string | void;
/** Container that all the search results are appended to. */
readonly container: HTMLDivElement;
/** Current regex used for searching. */
readonly regex: RegExp;
/** Array of positions of all the matches. */
readonly matches: [number, number][];
/** Removes the search container and all matches. */
stopSearch(): void;
}
/** Function adding search functionality to an editor. */
declare const createSearchAPI: (editor: PrismEditor) => SearchAPI;
export { createSearchAPI, searchTemplate, matchTemplate };