UNPKG

@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
/** * 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[];