import { CompletionSource } from '@codemirror/autocomplete'; import { LanguageDescription } from '@codemirror/language'; import { Extension } from '@codemirror/state'; import { MarkdownConfig } from '@lezer/markdown'; declare enum Appearance { Auto = "auto", Dark = "dark", Light = "light" } declare enum Extensions { Appearance = "appearance", Attribution = "attribution", Autocomplete = "autocomplete", Images = "images", ReadOnly = "readonly", Spellcheck = "spellcheck", Vim = "vim" } declare enum Markup$1 { Bold = "bold", Code = "code", CodeBlock = "code_block", Heading = "heading", Image = "image", Italic = "italic", Link = "link", List = "list", OrderedList = "ordered_list", Quote = "quote", TaskList = "task_list" } declare enum PluginType { Completion = "completion", Default = "default", Grammar = "grammar", Language = "language" } declare enum Selection { End = "end", Start = "start" } declare const appearanceTypes: { auto: string; dark: string; light: string; }; declare const pluginTypes: { readonly completion: "completion"; readonly default: "default"; readonly grammar: "grammar"; readonly language: "language"; }; type VendorCompletion = CompletionSource; type VendorExtension = Extension; type VendorGrammar = MarkdownConfig; type VendorLanguage = LanguageDescription; declare namespace Editor { interface Selection { end: number; start: number; } } type EnumString = `${T}`; type Awaitable = T & Promise; type AwaitableInstance = Awaitable; interface Instance { destroy: () => void; focus: () => void; format: (type: EnumString, options: Instance.FormatOptions) => void; getDoc: () => string; insert: (text: string, selection?: Editor.Selection) => void; load: (doc: string) => void; options: () => OptionsResolved; reconfigure: (updates: Options) => void; select: (options: Instance.SelectOptions) => void; selections: () => Editor.Selection[]; update: (doc: string) => void; wrap: (options: Instance.WrapOptions) => void; } declare namespace Instance { interface FormatOptions { selection?: Editor.Selection; } interface SelectOptions { at?: EnumString; selection?: Editor.Selection; selections?: Editor.Selection[]; } interface WrapOptions { after: string; before: string; selection?: Editor.Selection; } } interface Markup { [Markup$1.Bold]: Markup.Definition; [Markup$1.Code]: Markup.Definition; [Markup$1.CodeBlock]: Markup.Definition; [Markup$1.Heading]: Markup.Definition; [Markup$1.Image]: Markup.Definition; [Markup$1.Italic]: Markup.Definition; [Markup$1.Link]: Markup.Definition; [Markup$1.List]: Markup.Definition; [Markup$1.OrderedList]: Markup.Definition; [Markup$1.Quote]: Markup.Definition; [Markup$1.TaskList]: Markup.Definition; } declare namespace Markup { interface Definition { block: boolean; line: boolean; multiline: boolean; nodes: string[]; prefix: string; prefixStates: string[]; suffix: string; } } interface OptionsResolved { doc: string; files: Required; hooks: Required; interface: Required; katex: boolean; keybindings: { shiftTab: boolean; tab: boolean; }; lists: boolean | { bullet: boolean; number: boolean; task: boolean; }; placeholder: string; plugins: Options.RecursivePlugin[]; readability: boolean; search: boolean; selections: Editor.Selection[]; toolbar: Required; trapTab?: boolean; vim: boolean; } interface Options { doc?: string; files?: Partial; hooks?: Partial; interface?: Partial; katex?: boolean; keybindings?: { shiftTab?: boolean; tab?: boolean; }; lists?: boolean | { bullet?: boolean; number?: boolean; task?: boolean; }; placeholder?: string; plugins?: Options.RecursivePlugin[]; readability?: boolean; search?: boolean; selections?: Editor.Selection[]; toolbar?: Partial; trapTab?: boolean; vim?: boolean; } declare namespace Options { type ExtensionNames = keyof Options.Extensions; type Plugin = Plugins.Completion | Plugins.Default | Plugins.Grammar | Plugins.Language; type RecursivePlugin = Plugin | RecursivePlugin[]; namespace Plugins { interface Completion { key?: string; type: EnumString; value: VendorCompletion | Promise; } interface Default { key?: string; type: EnumString; value: VendorExtension | Promise; } interface Grammar { key?: string; type: EnumString; value: VendorGrammar | Promise; } interface Language { key?: string; type: EnumString; value: VendorLanguage | Promise; } } interface Extensions { [Extensions.Appearance]: EnumString; [Extensions.Autocomplete]: boolean; [Extensions.Images]: boolean; [Extensions.ReadOnly]: boolean; [Extensions.Spellcheck]: boolean; [Extensions.Vim]: boolean; } interface Files { clipboard: boolean; dragAndDrop: boolean; handler: (files: FileList) => Promise | string | void; injectMarkup: boolean; types: string[]; } interface Hooks { afterUpdate: (doc: string) => void; beforeUpdate: (doc: string) => void; } namespace Hooks { type AfterUpdate = (doc: string) => void; type BeforeUpdate = (doc: string) => void; } interface Interface { [Extensions.Appearance]: Options.Extensions[Extensions.Appearance]; [Extensions.Autocomplete]: Options.Extensions[Extensions.Autocomplete]; [Extensions.Images]: Options.Extensions[Extensions.Images]; [Extensions.ReadOnly]: Options.Extensions[Extensions.ReadOnly]; [Extensions.Spellcheck]: Options.Extensions[Extensions.Spellcheck]; attribution: boolean; lists: boolean; toolbar: boolean; } interface Toolbar { bold: boolean; code: boolean; codeBlock: boolean; heading: boolean; image: boolean; italic: boolean; link: boolean; list: boolean; orderedList: boolean; quote: boolean; taskList: boolean; upload: boolean; } } declare namespace Values { type Appearance = EnumString; type Extensions = EnumString; type Markup = EnumString; type PluginType = EnumString; type Selection = EnumString; } type PluginForType = Extract; type PluginValueForType = PluginForType['value']; declare const defineConfig: (config: T) => T; declare const defineOptions: (options: T) => T; declare const definePlugin: (plugin: T) => T; declare const hydrate: (target: HTMLElement, options?: Options) => AwaitableInstance; declare const ink: (target: HTMLElement, options?: Options) => AwaitableInstance; declare const inkPlugin: ({ key, type, value }: { key?: string | undefined; type?: T | undefined; value: () => PluginValueForType; }) => Options.Plugin; declare const plugin: ({ key, type, value }: { key?: string | undefined; type?: T | undefined; value: () => PluginValueForType; }) => Options.Plugin; declare const render: (target: HTMLElement, options?: Options) => AwaitableInstance; declare const renderToString: (options?: Options) => string; declare const solidPrepareForHydration: () => void; declare const wrap: (textarea: HTMLTextAreaElement, options?: Options) => AwaitableInstance; export { type Awaitable, type AwaitableInstance, Editor, type EnumString, Instance, Markup, Options, type OptionsResolved, Values, type VendorCompletion, type VendorExtension, type VendorGrammar, type VendorLanguage, appearanceTypes, ink as default, defineConfig, defineOptions, definePlugin, hydrate, ink, inkPlugin, plugin, pluginTypes, render, renderToString, solidPrepareForHydration, wrap };