Search
Maintains find/replace matches and transient highlights. Hosts can restrict scopes, guard replacement and reveal active matches.
Maintains find/replace matches and transient highlights. Hosts can restrict scopes, guard replacement and reveal active matches.
@quirekit/extension-search · MIT
Editor compatibility
Layer:Shared document capability
| Editor | Status | Assembly and boundaries |
|---|---|---|
| Classic | Supported | classicEditorPreset — Use the product-neutral classicEditorPreset without duplicating installed capabilities. The Word preset replaces paragraphs, headings and container lists; do not stack generic structures onto that model. |
| Block | Supported | createBlockEditorPreset — The default createBlockEditor preset installs this capability. Configure the corresponding preset child; graphic editing uses the preset's workspace ports, while persistence and assets remain host-owned. Avoid duplicate extensions. |
“Supported” means the product assembly above exists; interaction, host services and file formats retain their own conditions. See status and integration rules. Licensing is shown separately.
Installation
pnpm add @quirekit/extension-search@alpha
Install in Editor extensions. The host supplies a view, container and persistence; see Quick start.
import { Search } from '@quirekit/extension-search'
Use compatible versions available from your distribution source. This site uses the Alpha workspace. License labels come from package metadata; see support and licensing.
Integration by editor
These snippets use an existing host element named element. The host owns container sizing and persistence; call instance.destroy() on teardown. Avoid duplicating preset capabilities and supply required host ports before installation.
Classic · Supported
Use the product-neutral classicEditorPreset without duplicating installed capabilities. The Word preset replaces paragraphs, headings and container lists; do not stack generic structures onto that model.
classicEditorPresetimport { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
const instance = createClassicEditor({ element })Block · Supported
The default createBlockEditor preset installs this capability. Configure the corresponding preset child; graphic editing uses the preset's workspace ports, while persistence and assets remain host-owned. Avoid duplicate extensions.
createBlockEditorPresetimport { createBlockEditor } from '@quirekit/block-editor'
import '@quirekit/block-editor/styles.css'
const instance = createBlockEditor({
element,
content: { type: 'doc', content: [{ type: 'paragraph' }] },
})Configuration
These are extension-level defaults. Presets can override them; they are distinct from current document attributes. See configuration.
highlight
Highlight colors.
Type:SearchHighlightStyle
Default:{ match: "rgba(255, 196, 0, 0.35)", active: "transparent", activeOutline: "#e8710a" }
resolveScope
Resolves ordered searchable intervals.
Type:((state: EditorState) => readonly SearchScopeSegment[]) | undefined
Default:undefined
resolveExcludedScope
Resolves intervals deliberately left out of the scope, used only to count matches the user cannot reach so the UI can say so.
Type:((state: EditorState) => readonly SearchScopeSegment[]) | undefined
Default:undefined
checkReplaceable
Decides whether a match may be replaced.
Type:((state: EditorState, match: SearchMatch) => SearchReplaceVerdict) | undefined
Default:undefined
reveal
Applies host-specific presentation for a newly active match.
Type:((tr: Transaction, match: SearchMatch) => void) | undefined
Default:undefined
Commands and runtime
These commands are supplied directly by this extension. Availability depends on the installed schema, selection and protection policy; query editor.can() first.
| Command | Parameter signature |
|---|---|
setSearchQuery | setSearchQuery(text: string, queryOptions?: Partial<SearchOptions> | undefined, limit?: SearchRange | undefined) |
clearSearch | clearSearch() |
findNext | findNext() |
findPrevious | findPrevious() |
selectSearchMatch | selectSearchMatch(index: number) |
replaceSearchMatch | replaceSearchMatch(text: string) |
replaceAllSearchMatches | replaceAllSearchMatches(text: string) |
These are parameter signatures. See commands and controls to connect UI while retaining one transaction/history authority.
Next steps
Return to all plugins, or read configuration to distinguish options, attributes and commands.
See extension development for custom capabilities and Build a product for complete hosting.