// Type definitions for TOAST UI Editor v1.3.3
// TypeScript Version: 3.2.2
///
///
///
declare namespace tuiEditor {
type SquireExt = any;
type HandlerFunc = (...args: any[]) => void;
type ReplacerFunc = (inputString: string) => string;
type CodeMirrorType = CodeMirror.EditorFromTextArea;
type CommandManagerExecFunc = (name: string, ...args: any[]) => any;
type TriggerExtraParameterType = any[] | JQuery.PlainObject | string | number | boolean;
type RangeType = Range | IRangeType;
type PopupTableUtils = ILayerPopup;
interface IEvent {
[propName: string]: HandlerFunc;
}
interface IToMarkOptions {
gfm?: boolean;
renderer?: any;
}
interface IConvertor {
getMarkdownitHighlightRenderer(): markdownit;
initHtmlSanitizer(): void;
toHTML(makrdown: string): string;
toHTMLWithCodeHightlight(markdown: string): string;
toMarkdown(html: string, toMarkdownOptions: IToMarkOptions): string;
}
interface IEditorOptions {
el: Element;
height?: string;
minHeight?: string;
initialValue?: string;
previewStyle?: string;
initialEditType?: string;
events?: IEvent[];
hooks?: IEvent[];
language?: string;
useCommandShortcut?: boolean;
useDefaultHTMLSanitizer?: boolean;
codeBlockLanguages?: string[];
usageStatistics?: boolean;
toolbarItems?: string[];
hideModeSwitch?: boolean;
exts?: string[];
customConvertor?: IConvertor;
placeholder?: string;
}
interface IViewerOptions {
el: Element;
exts?: string[];
initialValue?: string;
events?: IEvent[];
hooks?: IEvent[];
}
interface ILanguageData {
[propType: string]: string;
}
class I18n {
public get(key: string, code: string): string;
public setCode(code: string): void;
public setLanguage(codes: string | string[], data: ILanguageData): void;
}
interface IButtonItem {
name: string;
options: IButtonOptions;
}
interface IButtonOptions {
className: string;
$el: JQuery;
command?: string;
event?: string;
text?: string;
tooltip?: string;
style?: string;
state?: string;
}
class UIController {
public tagName: string;
public className: string;
public $el: JQuery;
public on(aType: string | object, aFn: (...args: any[]) => void): void;
public off(type: string, fn: (...args: any[]) => void): void;
public remove(): void;
public trigger(eventTypeEvent: string | JQuery.Event, extraParameters?: TriggerExtraParameterType): JQuery;
public destroy(): void;
}
class ToolbarItem extends UIController {
public static name: string;
public static className: string;
public getName(): string;
}
class Button extends ToolbarItem {
public static className: string;
public static name: string;
constructor(options?: IButtonOptions);
public disable(): void;
public enable(): void;
public getName(): string;
public isEnabled(): boolean;
public setTooltip(text: string): void;
}
interface ICommandType {
MD: 0;
WW: 1;
GB: 2;
}
interface ICommandProps {
name: string;
type: number;
}
class Command {
public static TYPE: ICommandType;
public static factory(typeStr: string, props: ICommandProps): Command;
constructor(name: string, type: number, keyMap?: string[]);
public getName(): string;
public getType(): number;
public isGlobalType(): boolean;
public isMDType(): boolean;
public isWWType(): boolean;
public setKeyMap(win: string, mac: string): void;
}
interface ILayerPopupOptions {
openerCssQuery?: string[];
closerCssQuery?: string[];
$el: JQuery;
content?: JQuery | string;
textContent?: string;
title: string;
header?: boolean;
$target?: JQuery;
modal: boolean;
headerButtons?: string;
}
interface IUIController {
$el: JQuery;
className: string;
tagName: string;
destroy(): void;
on(aType: string | object, aFn: (...args: any[]) => void): void;
off(type: string, fn: (...args: any[]) => void): void;
remove(): void;
trigger(eventTypeEvent: string | JQuery.Event, extraParameters?: TriggerExtraParameterType): JQuery;
}
interface ILayerPopup extends IUIController {
setContent($content: JQuery): void;
setTitle(title: string): void;
getTitleElement(): Element;
hide(): void;
show(): void;
isShow(): boolean;
remove(): void;
setFitToWindow(fit: boolean): void;
isFitToWindow(): boolean;
toggleFitToWindow(): boolean;
}
interface IModeSwitchType {
MARKDOWN: 'markdown';
WYSIWYG: 'wysiwyg';
}
interface IModeSwitch extends IUIController {
TYPE: IModeSwitchType;
isShown(): boolean;
show(): void;
hide(): void;
}
class Toolbar extends UIController {
public disableAllButton(): void;
public enableAllButton(): void;
public getItems(): ToolbarItem[];
public getItem(index: number): ToolbarItem;
public setItems(items: ToolbarItem[]): void;
public addItem(item: ToolbarItem | IButtonItem | string): void;
public insertItem(index: number, item: ToolbarItem | IButtonItem | string): void;
public indexOfItem(item: ToolbarItem): number;
public removeItem(item: ToolbarItem | number, destroy?: boolean): ToolbarItem | undefined;
public removeAllItems(): void;
public addButton(button: Button, index?: number): void;
public addDivider(): JQuery;
}
class DefaultToolbar extends Toolbar {}
interface IUI {
createPopup(options: ILayerPopupOptions): ILayerPopup;
getEditorHeight(): number;
getEditorSectionHeight(): number;
getModeSwitch(): IModeSwitch;
getPopupTableUtils(): PopupTableUtils;
getToolbar(): Toolbar;
hide(): void;
remove(): void;
setToolbar(toolbar: Toolbar): void;
show(): void;
}
interface ICommandManagerOptions {
useCommandShortcut?: boolean;
}
interface ICommandPropsOptions {
name: string;
keyMap?: string[];
exec?: CommandManagerExecFunc;
}
class CommandManager {
public static command(type: string, props: ICommandPropsOptions): Command;
constructor(base: Editor, options?: ICommandManagerOptions);
public addCommand(command: Command): Command;
public exec(name: string, ...args: any[]): any;
}
class CodeBlockManager {
public static getHighlightJSLanguages(): string[];
public createCodeBlockHtml(language: string, codeText: string): string;
public getReplacer(language: string): ReplacerFunc;
public setReplacer(language: string, replacer: ReplacerFunc): void;
}
interface IRangeType {
start: {
line: number;
ch: number;
};
end: {
line: number;
ch: number;
};
}
interface IMdTextObject {
setRange(range: IRangeType): void;
setEndBeforeRange(range: IRangeType): void;
expandStartOffset(): void;
expandEndOffset(): void;
getTextContent(): IRangeType;
replaceContent(content: string): void;
deleteContent(): void;
peekStartBeforeOffset(offset: number): IRangeType;
}
interface IWwTextObject {
deleteContent(): void;
expandEndOffset(): void;
expandStartOffset(): void;
getTextContent(): string;
peekStartBeforeOffset(offset: number): string;
replaceContent(content: string): void;
setEndBeforeRange(range: Range): void;
setRange(range: Range): void;
}
interface IFindOffsetNodeInfo {
container: Node;
offsetInContainer: number;
offset: number;
}
interface INodeInfo {
id?: string;
tagName: string;
className?: string;
}
class WwCodeBlockManager {
public static convertNodesToText(nodes: Node[]): string;
constructor(wwe: WysiwygEditor);
public destroy(): void;
public isInCodeBlock(range: Range): boolean;
public prepareToPasteOnCodeblock(nodes: Node[]): DocumentFragment;
}
class WwTableManager {
constructor(wwe: WysiwygEditor);
public destroy(): void;
public getTableIDClassName(): string;
public isInTable(range: Range): boolean;
public isNonTextDeleting(range: Range): boolean;
public isTableOrSubTableElement(pastingNodeName: string): string;
public pasteClipboardData($clipboardTable: JQuery): boolean;
public prepareToTableCellStuffing($trs: JQuery): object;
public resetLastCellNode(): void;
public setLastCellNode(node: Element): void;
public tableCellAppendAidForTableElement(node: Element): void;
public updateTableHtmlOfClipboardIfNeed($clipboardContainer: JQuery): void;
public wrapDanglingTableCellsIntoTrIfNeed($container: JQuery): Element | null;
public wrapTheadAndTbodyIntoTableIfNeed($container: JQuery): Element | null;
public wrapTrsIntoTbodyIfNeed($container: JQuery): Element | null;
}
class WwTableSelectionManager {
constructor(wwe: WysiwygEditor);
public createRangeBySelectedCells(): void;
public destroy(): void;
public getSelectedCells(): JQuery;
public getSelectionRangeFromTable(selectionStart: Element, selectionEnd: Element): object;
public highlightTableCellsBy(selectionStart: Element, selectionEnd: Element): void;
public removeClassAttrbuteFromAllCellsIfNeed(): void;
public setTableSelectionTimerIfNeed(selectionStart: Element): void;
public styleToSelectedCells(onStyle: SquireExt, options?: any): void;
}
class MarkDownEditor {
constructor($el: JQuery, eventManager: EventManager);
public getTextObject(range: IRangeType): IMdTextObject;
public setValue(markdown: string, cursorToEnd?: boolean): void;
}
class WysiwygEditor {
constructor($el: JQuery, eventManager: EventManager);
public addKeyEventHandler(keyMap: string | string[], handler: HandlerFunc): void;
public addWidget(range: Range, node: Node, style: string, offset?: number): void;
public blur(): void;
public breakToNewDefaultBlock(range: Range, where?: string): void;
public changeBlockFormatTo(targetTagName: string): void;
public findTextNodeFilter(): boolean;
public fixIMERange(): void;
public focus(): void;
public get$Body(): JQuery;
public getEditor(): SquireExt;
public getIMERange(): Range;
public getRange(): Range;
public getTextObject(range: Range): IWwTextObject;
public getValue(): string;
public hasFormatWithRx(rx: RegExp): boolean;
public init(): void;
public insertText(text: string): void;
public makeEmptyBlockCurrentSelection(): void;
public moveCursorToEnd(): void;
public moveCursorToStart(): void;
public postProcessForChange(): void;
public readySilentChange(): void;
public remove(): void;
public removeKeyEventHandler(keyMap: string, handler: HandlerFunc): void;
public replaceContentText(container: Node, from: string, to: string): void;
public replaceRelativeOffset(content: string, offset: number, overwriteLength: number): void;
public replaceSelection(content: string, range: Range): void;
public reset(): void;
public restoreSavedSelection(): void;
public saveSelection(range: Range): void;
public scrollTop(value: number): boolean;
public setHeight(height: number | string): void;
public setMinHeight(minHeight: number): void;
public setRange(range: Range): void;
public setSelectionByContainerAndOffset(startContainer: Node, startOffset: number,
endContainer: Node, endOffset: number): Range;
public setValue(html: string, cursorToEnd?: boolean): void;
public unwrapBlockTag(condition?: (tagName: string) => boolean): void;
}
class EventManager {
public addEventType(type: string): void;
public emit(eventName: string): any[];
public emitReduce(eventName: string, sourceText: string): string;
public listen(typeStr: string, handler: HandlerFunc): void;
public removeEventHandler(typeStr: string, handler?: HandlerFunc): void;
}
interface IDomUtil {
getNodeName(node: Node): string;
isTextNode(node: Node): boolean;
isElemNode(node: Node): boolean;
getTextLength(node: Node): number;
getOffsetLength(node: Node): number;
getPrevOffsetNodeUntil(node: Node, index: number, untilNodeName: string): Node;
getNodeOffsetOfParent(node: Node): number;
getChildNodeByOffset(node: Node, index: number): Node;
containsNode(root: Node, node: Node): boolean;
getTopPrevNodeUnder(node: Node, underNode: Node): Node;
getTopNextNodeUnder(node: Node, underNode: Node): Node;
getParentUntilBy(node: Node, matchCondition: (node: Node) => boolean,
stopCondition: (node: Node) => boolean): Node;
getParentUntil(node: Node, untilNode: string | Node): Node;
getTopBlockNode(node: Node): Node;
getPrevTextNode(node: Node): Node;
findOffsetNode(root: Element, offsetList: number[],
textNodeFilter: (text: string) => string): IFindOffsetNodeInfo[];
getPath(node: Node, root: Node): INodeInfo[];
getNodeInfo(node: Node): INodeInfo;
getTableCellByDirection(node: Element, direction: string): Element | null;
getSiblingRowCellByDirection(node: Element, direction: string, needEdgeCell?: boolean): Element | null;
}
class Editor {
public static Button: typeof Button;
public static codeBlockManager: CodeBlockManager;
public static CommandManager: typeof CommandManager;
public static domUtils: IDomUtil;
public static i18n: I18n;
public static isViewer: boolean;
public static markdownit: markdownit;
public static markdownitHighlight: markdownit;
public static WwCodeBlockManager: typeof WwCodeBlockManager;
public static WwTableManager: typeof WwTableManager;
public static WwTableSelectionManager: typeof WwTableSelectionManager;
public static defineExtension(name: string, ext: HandlerFunc): void;
public static factory(options: IEditorOptions): Editor | Viewer;
public static getInstances(): Editor[];
constructor(options: IEditorOptions);
public addHook(type: string, handler: HandlerFunc): void;
public addWidget(selection: Range, node: Node, style: string, offset?: number): void;
public afterAddedCommand(): void;
public blur(): void;
public changeMode(mode: string, isWithoutFocus?: boolean): void;
public changePreviewStyle(style: string): void;
public exec(name: string, ...args: any[]): void;
public focus(): void;
public getCodeMirror(): CodeMirrorType;
public getCurrentModeEditor(): MarkDownEditor | WysiwygEditor;
public getCurrentPreviewStyle(): string;
public getHtml(): string;
public getMarkdown(): string;
public getRange(): RangeType;
public getSelectedText(): string;
public getSquire(): SquireExt;
public getTextObject(range: RangeType): IMdTextObject | IWwTextObject;
public getUI(): IUI;
public getValue(): string;
public height(height: string): string;
public hide(): void;
public insertText(text: string): void;
public isMarkdownMode(): boolean;
public isViewer(): boolean;
public isWysiwygMode(): boolean;
public minHeight(minHeight: string): string;
public moveCursorToEnd(): void;
public moveCursorToStart(): void;
public off(type: string): void;
public on(type: string, handler: HandlerFunc): void;
public remove(): void;
public removeHook(type: string): void;
public reset(): void;
public scrollTop(value: number): number;
public setHtml(html: string, cursorToEnd?: boolean): void;
public setMarkdown(markdown: string, cursorToEnd?: boolean): void;
public setUI(UI: IUI): void;
public setValue(value: string, cursorToEnd?: boolean): void;
public show(): void;
}
class Viewer {
public static codeBlockManager: CodeBlockManager;
public static domUtils: IDomUtil;
public static isViewer: boolean;
public static markdownitHighlight: markdownit;
public static defineExtension(name: string, ext: HandlerFunc): void;
constructor(options: IViewerOptions);
public addHook(type: string, handler: HandlerFunc): void;
public isMarkdownMode(): boolean;
public isViewer(): boolean;
public isWysiwygMode(): boolean;
public off(type: string): void;
public on(type: string, handler: HandlerFunc): void;
public remove(): void;
public setMarkdown(markdown: string): void;
public setValue(markdown: string): void;
}
}
declare module 'tui-editor' {
export default tuiEditor.Editor;
}
declare module 'tui-editor/dist/tui-editor-Editor-all' {
export default tuiEditor.Editor;
}
declare module 'tui-editor/dist/tui-editor-Viewer' {
export default tuiEditor.Viewer;
}
declare module 'tui-editor/dist/tui-editor-Viewer-all' {
export default tuiEditor.Viewer;
}