/** @typedef {import('../../types/cherry').CherryOptions} CherryOptions */ /** @typedef {import('../../types/editor').CM6Adapter} CM6AdapterType */ export default class Cherry extends CherryStatic { /** * @protected */ protected static initialized: boolean; /** * @readonly */ static readonly config: { /** @type {CherryOptions} */ defaults: CherryOptions; }; /** * @param {CherryOptions} options */ constructor(options: CherryOptions); defaultToolbar: false | (string | number | { [x: string]: (string | number)[]; [x: number]: (string | number)[]; })[]; /** * @property * @type {CherryOptions} */ options: CherryOptions; /** @type {import('./utils/cm-search-replace').default} SearchBox 实例 */ searchBoxInstance: import("./utils/cm-search-replace").default; /** @type {boolean} 是否初始化SearchBox */ searchBoxInit: boolean; storageFloatPreviewerWrapData: { x: number; y: number; width: number; height: number; }; locales: { zh_CN: { bold: string; code: string; graph: string; h1: string; h2: string; h3: string; h4: string; h5: string; header: string; insert: string; italic: string; list: string; quickTable: string; quote: string; size: string; color: string; strikethrough: string; sub: string; sup: string; togglePreview: string; fullScreen: string; image: string; audio: string; video: string; link: string; hr: string; br: string; toc: string; pdf: string; word: string; table: string; 'line-table': string; 'bar-table': string; 'radar-table': string; 'map-table': string; lineTable: string; barTable: string; radarTable: string; mapTable: string; heatmapTable: string; sankeyTable: string; pieTable: string; proTable: string; formula: string; insertFormula: string; insertFlow: string; insertSeq: string; insertState: string; insertClass: string; insertPie: string; scatterTable: string; insertGantt: string; checklist: string; ol: string; ul: string; undo: string; redo: string; previewClose: string; codeTheme: string; switchModel: string; switchPreview: string; switchEdit: string; classicBr: string; normalBr: string; settings: string; mobilePreview: string; copy: string; export: string; underline: string; pinyin: string; file: string; pastePlain: string; pasteMarkdown: string; hide: string; exportToPdf: string; exportScreenshot: string; exportMarkdownFile: string; exportHTMLFile: string; exportWordFile: string; theme: string; panel: string; detail: string; heading1: string; heading2: string; heading3: string; complement: string; summary: string; justify: string; justifyLeft: string; justifyCenter: string; justifyRight: string; align: string; alignLeft: string; alignCenter: string; alignRight: string; alignJustify: string; alignFloatLeft: string; alignFloatRight: string; publish: string; colorPickerText: string; colorPickerBackground: string; colorPickerClear: string; colorPickerRecentColors: string; colorPickerPresetColors: string; small: string; medium: string; large: string; superLarge: string; detailDefaultContent: string; inlineCode: string; codeBlock: string; inlineMath: string; mathBlock: string; shortcutKeySetting: string; editShortcutKeyConfigTip: string; editingShortcutKeyConfigTip: string; staticShortcutTip: string; disabledShortcutTip: string; cursorPosition: string; wordCount: string; wordCountP: string; wordCountW: string; wordCountC: string; wordCountL: string; wordCountImg: string; wordCountCode: string; wordCountChinese: string; wordCountEnglish: string; wordCountNumber: string; wordCountSymbol: string; deleteColumn: string; deleteRow: string; addRow: string; addCol: string; moveRow: string; moveCol: string; shortcutStaticTitle: string; shortcutStatic1: string; shortcutStatic2: string; shortcutStatic3: string; shortcutStatic4: string; shortcutStatic5: string; shortcutStatic6: string; shortcutStatic7: string; shortcutStatic8: string; shortcutStatic9: string; shortcutStatic10: string; shortcutStatic11: string; shortcutStatic12: string; shortcutStatic13: string; shortcutStatic14: string; shortcutStatic15: string; shortcutStatic16: string; shortcutStatic17: string; shortcutStatic18: string; leftMouseButton: string; disableShortcut: string; enableShortcut: string; recoverShortcut: string; search: string; autoWrap: string; footnoteTitle: string; searchFor: string; replaceWith: string; previousMatch: string; nextMatch: string; replace: string; replaceAll: string; regExpSearch: string; caseSensitiveSearch: string; wholeWordSearch: string; matchesFoundText: string; toggleReplace: string; close: string; border: string; shadow: string; radius: string; customShortcut: string; staticShortcut: string; edit: string; save: string; cancel: string; saveAsImage: string; mapChartLoading: string; mapChartLoadingTip: string; mapChartError: string; mapChartErrorTip: string; mapChartRetry: string; chartRenderError: string; chartLibraryNotLoadedTip: string; radarData: string; scatterData: string; pieData: string; heatmapData: string; mapData: string; maxValue: string; minValue: string; high: string; low: string; mermaidSource: string; mermaidPreview: string; }; en_US: { bold: string; code: string; graph: string; h1: string; h2: string; h3: string; h4: string; h5: string; header: string; insert: string; italic: string; list: string; quickTable: string; quote: string; size: string; color: string; strikethrough: string; sub: string; sup: string; togglePreview: string; fullScreen: string; image: string; audio: string; video: string; link: string; hr: string; br: string; toc: string; pdf: string; word: string; table: string; 'line-table': string; 'bar-table': string; 'radar-table': string; 'map-table': string; lineTable: string; barTable: string; radarTable: string; mapTable: string; heatmapTable: string; sankeyTable: string; pieTable: string; proTable: string; formula: string; insertFormula: string; insertFlow: string; insertSeq: string; insertState: string; insertClass: string; insertPie: string; scatterTable: string; insertGantt: string; checklist: string; ol: string; ul: string; undo: string; redo: string; previewClose: string; codeTheme: string; switchModel: string; switchPreview: string; switchEdit: string; classicBr: string; normalBr: string; settings: string; mobilePreview: string; copy: string; export: string; underline: string; pinyin: string; pastePlain: string; pasteMarkdown: string; hide: string; exportToPdf: string; exportScreenshot: string; exportMarkdownFile: string; exportHTMLFile: string; exportWordFile: string; heading1: string; heading2: string; heading3: string; panel: string; detail: string; complement: string; summary: string; justify: string; justifyLeft: string; justifyCenter: string; justifyRight: string; align: string; alignLeft: string; alignCenter: string; alignRight: string; alignJustify: string; alignFloatLeft: string; alignFloatRight: string; publish: string; colorPickerText: string; colorPickerBackground: string; colorPickerClear: string; colorPickerRecentColors: string; colorPickerPresetColors: string; small: string; medium: string; large: string; superLarge: string; detailDefaultContent: string; inlineCode: string; codeBlock: string; inlineMath: string; mathBlock: string; shortcutKeySetting: string; editShortcutKeyConfigTip: string; editingShortcutKeyConfigTip: string; staticShortcutTip: string; disabledShortcutTip: string; cursorPosition: string; wordCount: string; wordCountP: string; wordCountW: string; wordCountC: string; wordCountL: string; wordCountImg: string; wordCountCode: string; wordCountChinese: string; wordCountEnglish: string; wordCountNumber: string; wordCountSymbol: string; deleteColumn: string; deleteRow: string; addRow: string; addCol: string; moveRow: string; moveCol: string; shortcutStaticTitle: string; shortcutStatic1: string; shortcutStatic2: string; shortcutStatic3: string; shortcutStatic4: string; shortcutStatic5: string; shortcutStatic6: string; shortcutStatic7: string; shortcutStatic8: string; shortcutStatic9: string; shortcutStatic10: string; shortcutStatic11: string; shortcutStatic12: string; shortcutStatic13: string; shortcutStatic14: string; shortcutStatic15: string; shortcutStatic16: string; shortcutStatic17: string; shortcutStatic18: string; leftMouseButton: string; disableShortcut: string; enableShortcut: string; recoverShortcut: string; search: string; autoWrap: string; footnoteTitle: string; searchFor: string; replaceWith: string; previousMatch: string; nextMatch: string; replace: string; replaceAll: string; regExpSearch: string; caseSensitiveSearch: string; wholeWordSearch: string; matchesFoundText: string; toggleReplace: string; close: string; border: string; shadow: string; radius: string; customShortcut: string; staticShortcut: string; edit: string; save: string; cancel: string; saveAsImage: string; mapChartLoading: string; mapChartLoadingTip: string; mapChartError: string; mapChartErrorTip: string; mapChartRetry: string; chartRenderError: string; chartLibraryNotLoadedTip: string; radarData: string; scatterData: string; pieData: string; heatmapData: string; mapData: string; maxValue: string; minValue: string; high: string; low: string; mermaidSource: string; mermaidPreview: string; }; ru_RU: { bold: string; code: string; graph: string; h1: string; h2: string; h3: string; h4: string; h5: string; header: string; insert: string; italic: string; list: string; quickTable: string; quote: string; size: string; color: string; strikethrough: string; sub: string; sup: string; togglePreview: string; fullScreen: string; image: string; audio: string; video: string; link: string; hr: string; br: string; toc: string; pdf: string; word: string; table: string; 'line-table': string; 'bar-table': string; 'radar-table': string; 'map-table': string; lineTable: string; barTable: string; radarTable: string; mapTable: string; heatmapTable: string; sankeyTable: string; pieTable: string; proTable: string; formula: string; insertFormula: string; insertFlow: string; insertSeq: string; insertState: string; insertClass: string; insertPie: string; scatterTable: string; insertGantt: string; checklist: string; ol: string; ul: string; undo: string; redo: string; previewClose: string; codeTheme: string; switchModel: string; switchPreview: string; switchEdit: string; classicBr: string; normalBr: string; settings: string; mobilePreview: string; copy: string; export: string; underline: string; pinyin: string; pastePlain: string; pasteMarkdown: string; hide: string; exportToPdf: string; exportScreenshot: string; exportMarkdownFile: string; exportHTMLFile: string; exportWordFile: string; panel: string; detail: string; heading1: string; heading2: string; heading3: string; complement: string; summary: string; justify: string; justifyLeft: string; justifyCenter: string; justifyRight: string; align: string; alignLeft: string; alignCenter: string; alignRight: string; alignJustify: string; alignFloatLeft: string; alignFloatRight: string; publish: string; colorPickerText: string; colorPickerBackground: string; colorPickerClear: string; colorPickerRecentColors: string; colorPickerPresetColors: string; small: string; medium: string; large: string; superLarge: string; detailDefaultContent: string; inlineCode: string; codeBlock: string; inlineMath: string; mathBlock: string; shortcutKeySetting: string; editShortcutKeyConfigTip: string; editingShortcutKeyConfigTip: string; staticShortcutTip: string; disabledShortcutTip: string; cursorPosition: string; wordCount: string; wordCountP: string; wordCountW: string; wordCountC: string; wordCountL: string; wordCountImg: string; wordCountCode: string; wordCountChinese: string; wordCountEnglish: string; wordCountNumber: string; wordCountSymbol: string; deleteColumn: string; deleteRow: string; addRow: string; addCol: string; moveRow: string; moveCol: string; shortcutStaticTitle: string; shortcutStatic1: string; shortcutStatic2: string; shortcutStatic3: string; shortcutStatic4: string; shortcutStatic5: string; shortcutStatic6: string; shortcutStatic7: string; shortcutStatic8: string; shortcutStatic9: string; shortcutStatic10: string; shortcutStatic11: string; shortcutStatic12: string; shortcutStatic13: string; shortcutStatic14: string; shortcutStatic15: string; shortcutStatic16: string; shortcutStatic17: string; shortcutStatic18: string; leftMouseButton: string; disableShortcut: string; enableShortcut: string; recoverShortcut: string; search: string; autoWrap: string; footnoteTitle: string; searchFor: string; replaceWith: string; previousMatch: string; nextMatch: string; replace: string; replaceAll: string; regExpSearch: string; caseSensitiveSearch: string; wholeWordSearch: string; matchesFoundText: string; toggleReplace: string; close: string; border: string; shadow: string; radius: string; customShortcut: string; staticShortcut: string; edit: string; save: string; cancel: string; saveAsImage: string; mapChartLoading: string; mapChartLoadingTip: string; mapChartError: string; mapChartErrorTip: string; mapChartRetry: string; chartRenderError: string; chartLibraryNotLoadedTip: string; radarData: string; scatterData: string; pieData: string; heatmapData: string; mapData: string; maxValue: string; minValue: string; high: string; low: string; mermaidSource: string; mermaidPreview: string; }; }; locale: any; status: { toolbar: string; previewer: string; editor: string; }; /** * @property * @type {string} 实例ID */ instanceId: string; lastMarkdownText: string; $event: Event; /** * @type {import('./Engine').default} */ engine: import("./Engine").default; /** * 初始化工具栏、编辑区、预览区等 * @private */ private init; noMountEl: boolean; cherryDom: HTMLElement; nameSpace: string; wrapperDom: HTMLDivElement; /** * 记忆页面的滚动高度,在cherry初始化后恢复到这个高度 */ storeDocumentScroll(): void; needRestoreDocumentScroll: boolean; documentElementScrollTop: number; documentElementScrollLeft: number; /** * 在cherry初始化后恢复到这个高度 */ restoreDocumentScroll(): void; destroy(): void; on(eventName: any, callback: any): void; off(eventName: any, callback: any): void; createToc(): void; toc: boolean | Toc; /** * 滚动到hash位置,实际上就是通过修改location.hash来触发hashChange事件,剩下的就交给浏览器了 */ scrollByHash(): void; $t(str: any): any; addLocale(key: any, value: any): void; addLocales(locales: any): void; getLocales(): any; /** * 切换编辑模式 * @param {'edit&preview'|'editOnly'|'previewOnly'} [model=edit&preview] 模式类型 * 一般纯预览模式和纯编辑模式适合在屏幕较小的终端使用,比如手机移动端 */ switchModel(model?: "edit&preview" | "editOnly" | "previewOnly", showToolbar?: boolean): void; /** * 获取实例id * @returns {string} * @public */ public getInstanceId(): string; /** * 获取编辑器状态 * @returns {Object} */ getStatus(): any; /** * 获取编辑区内的markdown源码内容 * @returns markdown源码内容 */ getValue(): string; /** * 获取编辑区内的markdown源码内容 * @returns {string} markdown源码内容 */ getMarkdown(): string; /** * 获取CodeMirror 实例 * @returns { import('@codemirror/view').EditorView } CodeMirror 6 适配器实例 */ getCodeMirror(): import("@codemirror/view").EditorView; /** * 获取预览区内的html内容 * @param {boolean} [wrapTheme=true] 是否在外层包裹主题class * @returns {string} html内容 */ getHtml(wrapTheme?: boolean): string; /** * 获取Previewer 预览实例 * @returns {Previewer} Previewer 预览实例 */ getPreviewer(): Previewer; /** * @typedef {{ * level: number; * id: string; * text: string; * isInBlockquote: boolean; * }[]} HeaderList * 获取目录,目录由head1~6组成 * @returns {HeaderList} 标题head数组 */ getToc(): { level: number; id: string; text: string; isInBlockquote: boolean; }[]; /** * 覆盖编辑区的内容 * @param {string} content markdown内容 * @param {boolean} keepCursor 是否保持光标位置 */ setValue(content: string, keepCursor?: boolean): void; /** * 在光标处或者指定行+偏移量插入内容 * @param {string} content 被插入的文本 * @param {boolean} [isSelect=false] 是否选中刚插入的内容 * @param {[number, number]|false} [anchor=false] [x,y] 代表x+1行,y+1字符偏移量,默认false 会从光标处插入 * @param {boolean} [focus=true] 保持编辑器处于focus状态 */ insert(content: string, isSelect?: boolean, anchor?: [number, number] | false, focus?: boolean): void; /** * 在光标处或者指定行+偏移量插入内容 * @param {string} content 被插入的文本 * @param {boolean} [isSelect=false] 是否选中刚插入的内容 * @param {[number, number]|false} [anchor=false] [x,y] 代表x+1行,y+1字符偏移量,默认false 会从光标处插入 * @param {boolean} [focus=true] 保持编辑器处于focus状态 * @returns */ insertValue(content: string, isSelect?: boolean, anchor?: [number, number] | false, focus?: boolean): void; /** * 强制重新渲染预览区域 * @param {boolean} [clearEngineCache=false] 是否清理engine的缓存 */ refreshPreviewer(clearEngineCache?: boolean): void; /** * 清理engine的缓存 */ clearEngineCache(): void; /** * 覆盖编辑区的内容 * @param {string} content markdown内容 * @param {boolean} [keepCursor=false] 是否保持光标位置 */ setMarkdown(content: string, keepCursor?: boolean): void; /** * @private * @returns */ private createWrapper; getCodeWrap(): string; setCodeWrap(codeWrap: any): void; /** * @private * @returns {Toolbar} */ private createToolbar; toolbarContainer: HTMLDivElement; toolbar: Toolbar; /** @returns {boolean} 是否应隐藏顶部工具栏 */ shouldHideToolbar(): boolean; /** * 动态重置工具栏配置 * @public * @param {'toolbar'|'toolbarRight'|'sidebar'|'bubble'|'float'} [type] 修改工具栏的类型 * @param {Array} [toolbar] 要重置的对应工具栏配置 * @returns {Boolean} */ public resetToolbar(type?: "toolbar" | "toolbarRight" | "sidebar" | "bubble" | "float", toolbar?: any[]): boolean; /** * @private * @returns {Toolbar} */ private createToolbarRight; toolbarRight: ToolbarRight; /** * @private * @returns */ private createSidebar; sidebarDom: HTMLDivElement; sidebar: Sidebar; createHiddenToolbar(): void; hiddenToolbar: HiddenToolbar; /** * @private * @returns */ private createFloatMenu; toolbarFloatContainer: HTMLDivElement; floatMenu: FloatMenu; /** * @private * @returns */ private createBubble; toolbarBubbleContainer: HTMLDivElement; bubble: Bubble; /** * @private * @returns {import('@/Editor').default} */ private createEditor; editor: Editor; /** * @private * @returns {import('@/Previewer').default} */ private createPreviewer; previewer: Previewer; clearFloatPreviewer(): void; handleFloatPreviewerMouseDown: (evt: any) => void; floatPreviewerInitOffsetX: any; floatPreviewerInitOffsetY: any; handleFloatPreviewerMouseMove: (evt: any) => void; handleFloatPreviewerMouseUp: (evt: any) => void; createFloatPreviewerListener(): void; removeFloatPreviewerListener(): void; createFloatPreviewer(): void; floatPreviewerHeaderDom: HTMLDivElement; floatPreviewerWrapDom: HTMLDivElement; pageWidth: number; pageHeight: number; /** * @private * @param {import('@codemirror/view').EditorView | Object} editorView */ private initText; /** * @private * @param {Event} _evt * @param {import('@codemirror/view').EditorView} editorView */ /** * 编辑器内容变更时触发,更新预览区内容 * @private * @param {Event} _evt - 编辑事件对象(未使用) * @param {import('@codemirror/view').EditorView | Object} editorView - 编辑器实例 */ private editText; timer: number; /** * @private * @param {any} cb */ private onChange; /** * @private * @param {KeyboardEvent} evt */ private fireShortcutKey; /** * 导出预览区域内容 * @public * @param {'pdf' | 'img' | 'markdown' | 'html'} [type='pdf'] * 'pdf':导出成pdf文件; 'img':导出成png图片; 'markdown':导出成markdown文件; 'html':导出成html文件; * @param {string} [fileName] 导出文件名(默认为当前第一行内容|'cherry-export') */ public export(type?: "pdf" | "img" | "markdown" | "html", fileName?: string): void; /** * 获取第一行文本 * @param {string} defaultText 默认文本 * @returns {string} 第一行文本 */ getFirstLineText(defaultText?: string): string; /** * 修改主题 * @param {string} theme option.themeSettings.themeList 里的className */ setTheme(theme?: string): void; /** * 修改代码块主题 * @param {string} theme option.themeSettings.codeBlockTheme */ setCodeBlockTheme(theme?: string): void; /** * 修改书写风格 * @param {string} writingStyle normal 普通 | typewriter 打字机 | focus 专注 */ setWritingStyle(writingStyle: string): void; /** * 修改语言 * @param {string} locale * @returns {boolean} false: 修改失败,因为没有对应的语言;true: 修改成功 */ setLocale(locale: string): boolean; /** * 切换TOC的模式(极简 or 展开) * @param {'full'|'pure'|''} focusModel 是否强制切换模式,如果为空,则根据当前模式切换 */ toggleToc(focusModel?: "full" | "pure" | ""): void; /** * 清空流程会话中添加的虚拟光标 */ clearFlowSessionCursor(): void; } export type CherryOptions = import("../../types/cherry").CherryOptions; export type CM6AdapterType = import("../../types/editor").CM6Adapter; import { CherryStatic } from './CherryStatic'; import Event from './Event'; import Toc from './toolbars/Toc'; import Previewer from './Previewer'; import Toolbar from './toolbars/Toolbar'; import ToolbarRight from './toolbars/ToolbarRight'; import Sidebar from './toolbars/Sidebar'; import HiddenToolbar from './toolbars/HiddenToolbar'; import FloatMenu from './toolbars/FloatMenu'; import Bubble from './toolbars/Bubble'; import Editor from './Editor';