API 签名来自当前源码,中文说明与 JSDoc 对账。先读快速开始与扩展模型,再查具体入口。Editor 的文档、选区、命令与生命周期属于同一实例。
公开入口使用 Editor、Extension、Node、Mark;生成签名保留源声明中的 QuireEditor 等类名,它们指向同一导出。
先按任务查 Editor 用法、扩展合同、View 参数或产品 API;本页保留完整源码签名。
编辑器
@quirekit/coreMIT协调编辑器状态、扩展与命令执行。实例持有规范文档,负责挂载、更新与销毁生命周期。
Editorts
export class QuireEditor {
readonly instanceId: string;
options: EditorOptions;
isInitialized: boolean;
readonly extensionManager: QuireExtensionManager;
readonly utils: QuireEditorUtils;
readonly extensions: readonly QuireAnyExtension[];
isCapturingTransaction: boolean;
isFocused: boolean;
readonly markdown: MarkdownManager;
readonly docx: DocxManager<QuireJSONContent, QuireDocxMark, QuireJSONContent>;
constructor(options?: QuireEditorOptions);
get state(): QuireEditorState;
createReadOnlySnapshot(options?: QuireEditorReadOnlySnapshotOptions): QuireEditor;
get mountedView(): QuireMountedEditorView | undefined;
get view(): QuireMountedEditorView;
get editorProps(): QuireEditorProps;
get schema(): Schema;
get storage(): Readonly<Record<string, unknown>>;
get isDestroyed(): boolean;
get isEditable(): boolean;
get isEmpty(): boolean;
get commands(): SingleCommands;
chain(): ChainedCommands;
can(): CanCommands;
$pos(pos: number): NodePos;
get $doc(): NodePos;
$node(selector: string, attributes?: Record<string, unknown>): NodePos | null;
$nodes(selector: string, attributes?: Record<string, unknown>): NodePos[];
on<EventName extends keyof QuireEditorEvents>(event: EventName, callback: (...args: [
QuireEditorEvents[EventName]
] extends [
void
] ? [
] : [
payload: QuireEditorEvents[EventName]
]) => void): this;
once<EventName extends keyof QuireEditorEvents>(event: EventName, callback: (...args: [
QuireEditorEvents[EventName]
] extends [
void
] ? [
] : [
payload: QuireEditorEvents[EventName]
]) => void): this;
off<EventName extends keyof QuireEditorEvents>(event: EventName, callback?: (...args: [
QuireEditorEvents[EventName]
] extends [
void
] ? [
] : [
payload: QuireEditorEvents[EventName]
]) => void): this;
emit<EventName extends keyof QuireEditorEvents>(event: EventName, ...args: [
QuireEditorEvents[EventName]
] extends [
void
] ? [
] : [
payload: QuireEditorEvents[EventName]
]): this;
someProp<PropName extends keyof QuireEditorProps, Result>(propName: PropName, f: (value: NonNullable<QuireEditorProps[PropName]>) => Result): Result | undefined;
someProp<PropName extends keyof QuireEditorProps>(propName: PropName): NonNullable<QuireEditorProps[PropName]> | undefined;
someProp<PropName extends keyof QuireEditorProps, Result>(propName: PropName, f?: (value: NonNullable<QuireEditorProps[PropName]>) => Result): Result | NonNullable<QuireEditorProps[PropName]> | undefined;
setOptions(options?: Partial<QuireEditorOptions>): void;
setEditable(editable: boolean, emitUpdate?: boolean): void;
setEditorProps(editorProps: Partial<QuireEditorProps>): void;
getJSON(): QuireJSONContent;
getHTML(): string;
getText(options?: QuireGetTextOptions): string;
getMarkdown(): string;
getAttributes(name: string): Record<string, unknown>;
isActive(name: string, attributes?: Record<string, unknown>): boolean;
registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): PMEditorState;
unregisterPlugin(nameOrPluginKeyToRemove: string | PluginKey | Array<string | PluginKey>): PMEditorState | undefined;
mount(options: QuireEditorMountOptions): QuireMountedEditorView;
mount(element: NonNullable<EditorOptions["element"]>): QuireMountedEditorView;
mount(optionsOrElement: QuireEditorMountOptions | NonNullable<EditorOptions["element"]>): QuireMountedEditorView;
unmount(): void;
changeMode(mode: QuireViewMode, options?: QuireEditorChangeModeOptions): QuireMountedEditorView;
setContent(content: QuireEditorContent, options?: QuireSetContentOptions): void;
dispatchTransaction(transaction: Transaction): void;
captureTransaction(callback: () => void): Transaction | null;
destroy(): void;
}扩展定义
@quirekit/coreMIT兼容 Tiptap 扩展模型的行为扩展基类,用于配置、命令、快捷键、插件与生命周期贡献。
Extensionts
export class Extension<Options extends object = object, Storage extends object = object> extends Extendable<Options, Storage, QuireExtensionConfig<Options, Storage>> implements QuireExtension<Options, Storage> {
override type: QuireExtensionKind;
constructor(config: QuireExtensionConfig<Options, Storage>, configuredOptions?: Partial<Options>);
static create<Options extends object = object, Storage extends object = object>(config: QuireExtensionConfigInput<Options, Storage>): Extension<Options, Storage>;
get kind(): QuireExtensionKind;
get priority(): number | undefined;
get keyboardShortcutPriority(): number | undefined;
get topNodeName(): string | undefined;
get commands(): AnyCommands | undefined;
get keyboardShortcuts(): QuireKeyboardShortcutMap | undefined;
get inputRules(): QuireInputRuleList;
get pasteRules(): QuirePasteRuleList;
get nodes(): QuireNodeSpecMap;
get marks(): QuireMarkSpecMap;
get plugins(): QuirePluginList;
get canvasTextStyle(): QuireNodeCanvasTextStyleMap | undefined;
get htmlSerializationTransforms(): QuireNodeHTMLSerializationTransformMap | undefined;
get markdownSerializationTransforms(): QuireNodeMarkdownSerializationTransformMap | undefined;
get layoutProviders(): readonly QuireLayoutProviderEntry[];
get documentProfiles(): readonly QuireDocumentProfileEntry[];
get selectionAdapters(): readonly QuireSelectionAdapterEntry[];
get viewAdapters(): readonly QuireViewAdapter[];
get viewEventHandlers(): QuireExtensionViewEventHandlerMap | undefined;
get extensions(): readonly QuireAnyExtension[];
get onBeforeCreate(): QuireExtensionBeforeCreateHook<Options, Storage> | undefined;
get onCreate(): QuireExtensionCreateHook<Options, Storage> | undefined;
get onUpdate(): QuireExtensionUpdateHook<Options, Storage> | undefined;
get onDestroy(): QuireExtensionDestroyHook<Options, Storage> | undefined;
get onFocus(): QuireExtensionFocusHook<Options, Storage> | undefined;
get onBlur(): QuireExtensionBlurHook<Options, Storage> | undefined;
get dispatchTransaction(): QuireExtensionDispatchTransactionHook<Options, Storage> | undefined;
get transformPastedHTML(): QuireTransformPastedHTMLHook<Options, Storage> | undefined;
get markdownTokenName(): string | undefined;
get parseMarkdown(): QuireMarkdownConfigFields["parseMarkdown"] | undefined;
get renderMarkdown(): QuireMarkdownConfigFields["renderMarkdown"] | undefined;
get markdownTokenizer(): MarkdownTokenizer | undefined;
get markdownOptions(): QuireMarkdownOptions | undefined;
get attributes(): readonly QuireSchemaAttributeContribution[];
override configure(options?: Partial<Options>): Extension<Options, Storage>;
override extend<ExtendedOptions extends object = Options, ExtendedStorage extends object = Storage>(extension?: Partial<QuireExtensionConfig<ExtendedOptions, ExtendedStorage>>): Extension<ExtendedOptions, ExtendedStorage>;
}@quirekit/coreMIT兼容 Tiptap 扩展模型的节点基类,定义文档结构、属性以及相应行为与序列化。
Nodets
export class Node<Options extends object = object, Storage extends object = object> extends Extendable<Options, Storage, QuireNodeConfig<Options, Storage>> implements QuireExtension<Options, Storage> {
override type: QuireExtensionKind;
constructor(config: QuireNodeConfigInput<Options, Storage>);
get kind(): QuireExtensionKind;
get priority(): number | undefined;
get keyboardShortcutPriority(): number | undefined;
get topNodeName(): string | undefined;
get commands(): AnyCommands | undefined;
get keyboardShortcuts(): QuireKeyboardShortcutMap | undefined;
get inputRules(): QuireInputRuleList;
get pasteRules(): QuirePasteRuleList;
get extensions(): readonly QuireAnyExtension[];
get nodes(): QuireNodeSpecMap;
get marks(): QuireMarkSpecMap;
get plugins(): QuirePluginList;
get canvasTextStyle(): QuireNodeCanvasTextStyleMap | undefined;
get layoutProviders(): readonly QuireLayoutProviderEntry[];
get documentProfiles(): readonly QuireDocumentProfileEntry[];
get selectionAdapters(): readonly QuireSelectionAdapterEntry[];
get viewEventHandlers(): QuireExtensionViewEventHandlerMap | undefined;
get onBeforeCreate(): QuireExtensionBeforeCreateHook<Options, Storage> | undefined;
get onCreate(): QuireExtensionCreateHook<Options, Storage> | undefined;
get onUpdate(): QuireExtensionUpdateHook<Options, Storage> | undefined;
get onDestroy(): QuireExtensionDestroyHook<Options, Storage> | undefined;
get onFocus(): QuireExtensionFocusHook<Options, Storage> | undefined;
get onBlur(): QuireExtensionBlurHook<Options, Storage> | undefined;
get dispatchTransaction(): QuireExtensionDispatchTransactionHook<Options, Storage> | undefined;
get transformPastedHTML(): QuireTransformPastedHTMLHook<Options, Storage> | undefined;
get markdownTokenName(): string | undefined;
get parseMarkdown(): QuireMarkdownConfigFields["parseMarkdown"] | undefined;
get renderMarkdown(): QuireMarkdownConfigFields["renderMarkdown"] | undefined;
get markdownTokenizer(): MarkdownTokenizer | undefined;
get markdownOptions(): QuireMarkdownOptions | undefined;
get attributes(): readonly QuireSchemaAttributeContribution[];
static create<Options extends object = object, Storage extends object = object>(config: QuireNodeConfigInput<Options, Storage>): Node<Options, Storage>;
static create<Options extends object = object, Storage extends object = object>(config: NodeConfig<Options, Storage> | (() => NodeConfig<Options, Storage>)): Node<Options, Storage>;
static create<Options extends object = object, Storage extends object = object>(config: QuireNodeConfigInput<Options, Storage> | NodeConfig<Options, Storage> | (() => NodeConfig<Options, Storage>)): Node<Options, Storage>;
override configure(options?: Partial<Options>): Node<Options, Storage>;
override extend<ExtendedOptions extends object = Options, ExtendedStorage extends object = Storage>(config?: Partial<QuireNodeConfig<ExtendedOptions, ExtendedStorage>>): Node<ExtendedOptions, ExtendedStorage>;
override extend<ExtendedOptions extends object = Options, ExtendedStorage extends object = Storage, ExtendedConfig extends QuireExtendableConfig<ExtendedOptions, ExtendedStorage> = QuireExtendableConfig<ExtendedOptions, ExtendedStorage>>(config?: Partial<ExtendedConfig>): Node<ExtendedOptions, ExtendedStorage>;
}@quirekit/coreMIT兼容 Tiptap 扩展模型的标记基类,定义行内文字格式、属性及相应行为与序列化。
Markts
export class Mark<Options extends object = object, Storage extends object = object> extends Extendable<Options, Storage, QuireMarkConfig<Options, Storage>> implements QuireExtension<Options, Storage> {
override type: QuireExtensionKind;
constructor(config: QuireMarkConfigInput<Options, Storage>);
get kind(): QuireExtensionKind;
get priority(): number | undefined;
get keyboardShortcutPriority(): number | undefined;
get topNodeName(): string | undefined;
get commands(): AnyCommands | undefined;
get keyboardShortcuts(): QuireKeyboardShortcutMap | undefined;
get inputRules(): QuireInputRuleList;
get pasteRules(): QuirePasteRuleList;
get extensions(): readonly QuireAnyExtension[];
get nodes(): QuireNodeSpecMap;
get marks(): QuireMarkSpecMap;
get plugins(): QuirePluginList;
get canvasStyle(): QuireMarkCanvasStyleMap | undefined;
get viewEventHandlers(): QuireExtensionViewEventHandlerMap | undefined;
get onBeforeCreate(): QuireExtensionBeforeCreateHook<Options, Storage> | undefined;
get onCreate(): QuireExtensionCreateHook<Options, Storage> | undefined;
get onUpdate(): QuireExtensionUpdateHook<Options, Storage> | undefined;
get onDestroy(): QuireExtensionDestroyHook<Options, Storage> | undefined;
get onFocus(): QuireExtensionFocusHook<Options, Storage> | undefined;
get onBlur(): QuireExtensionBlurHook<Options, Storage> | undefined;
get dispatchTransaction(): QuireExtensionDispatchTransactionHook<Options, Storage> | undefined;
get transformPastedHTML(): QuireTransformPastedHTMLHook<Options, Storage> | undefined;
get markdownTokenName(): string | undefined;
get parseMarkdown(): QuireMarkdownConfigFields["parseMarkdown"] | undefined;
get renderMarkdown(): QuireMarkdownConfigFields["renderMarkdown"] | undefined;
get markdownTokenizer(): MarkdownTokenizer | undefined;
get markdownOptions(): QuireMarkdownOptions | undefined;
get attributes(): readonly QuireSchemaAttributeContribution[];
static create<Options extends object = object, Storage extends object = object>(config: QuireMarkConfigInput<Options, Storage>): Mark<Options, Storage>;
static create<Options extends object = object, Storage extends object = object>(config: MarkConfig<Options, Storage> | (() => MarkConfig<Options, Storage>)): Mark<Options, Storage>;
static create<Options extends object = object, Storage extends object = object>(config: QuireMarkConfigInput<Options, Storage> | MarkConfig<Options, Storage> | (() => MarkConfig<Options, Storage>)): Mark<Options, Storage>;
override configure(options?: Partial<Options>): Mark<Options, Storage>;
override extend<ExtendedOptions extends object = Options, ExtendedStorage extends object = Storage>(config?: Partial<QuireMarkConfig<ExtendedOptions, ExtendedStorage>>): Mark<ExtendedOptions, ExtendedStorage>;
override extend<ExtendedOptions extends object = Options, ExtendedStorage extends object = Storage, ExtendedConfig extends QuireExtendableConfig<ExtendedOptions, ExtendedStorage> = QuireExtendableConfig<ExtendedOptions, ExtendedStorage>>(config?: Partial<ExtendedConfig>): Mark<ExtendedOptions, ExtendedStorage>;
}命令描述与属性
@quirekit/coreMIT为命令声明面向 Agent 的描述,同时保留 addCommands 所需的命令工厂。definition 提供描述与执行工厂,返回携带冻结描述的命令工厂;命令按名称合并或覆盖时,描述仍跟随对应实现。
defineCommandts
function defineCommand<Run extends CommandSpec>(definition: QuireCommandDefinition<Run>): Run@quirekit/coreMIT从左向右合并 HTML 属性:class 去重,style 按 CSS 属性合并,其余属性由后值覆盖。objects 为待合并对象,返回合并后的属性对象。
mergeAttributests
function mergeAttributes(...objects: readonly (Readonly<Record<string, unknown>> | null | undefined)[]): Record<string, unknown>