@lobehub/editor
Version:
A powerful and extensible rich text editor built on Meta's Lexical framework, providing a modern editing experience with React integration.
54 lines (53 loc) • 2.72 kB
TypeScript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import type { CodeNode } from '@lexical/code';
import type { LexicalEditor, LexicalNode, NodeKey, SerializedTextNode, Spread } from 'lexical';
import { INode } from "../../../editor-kernel/inode";
export type ColorReplacements = Record<string, string>;
export type ScopedColorReplacements = Record<string, ColorReplacements>;
export type AllColorReplacements = ColorReplacements | ScopedColorReplacements;
export type SerializedCodeHighlightNode = Spread<{
highlightType: string | null | undefined;
}, SerializedTextNode>;
/**
* Creates a simple color replacement map
* @param replacements - Object mapping from old color to new color
* @returns ColorReplacements object
*/
export declare function createColorReplacements(replacements: Record<string, string>): ColorReplacements;
/**
* Creates scoped color replacements for multiple themes
* @param scopedReplacements - Object mapping theme names to their color replacements
* @returns ScopedColorReplacements object
*/
export declare function createScopedColorReplacements(scopedReplacements: Record<string, Record<string, string>>): ScopedColorReplacements;
/**
* Validates that a color value is a valid CSS color
* @param color - The color string to validate
* @returns true if the color is valid
*/
export declare function isValidColor(color: string): boolean;
export declare function isCodeLanguageLoaded(language: string): boolean;
export declare function loadCodeLanguage(language: string, editor?: LexicalEditor, codeNodeKey?: NodeKey): void;
export declare function isCodeThemeLoaded(theme: string): boolean;
export declare function loadCodeTheme(theme: string, editor?: LexicalEditor, codeNodeKey?: NodeKey): Promise<void>;
export declare function getCodeLanguageOptions(): [string, string][];
export declare function getCodeThemeOptions(): [string, string][];
export declare function normalizeCodeLanguage(language: string): string;
export declare function getHighlightSerializeNode(code: string, language: string, theme?: string): INode[];
export declare function $getHighlightNodes(codeNode: CodeNode, language: string): LexicalNode[];
/**
* Extended version of $getHighlightNodes with additional options
* @param codeNode - The CodeNode to highlight
* @param language - The programming language
* @param options - Additional highlighting options
*/
export interface HighlightOptions {
theme?: string;
}
export declare function $getHighlightNodesWithOptions(codeNode: CodeNode, language: string, options?: HighlightOptions): LexicalNode[];