ng2-alt-summernote
Version:
Summernote component for Angular2
246 lines (220 loc) • 8.47 kB
TypeScript
// Type definitions for Summernote v0.8.2
// Project: http://summernote.org/deep-dive/#initialization-options
// Definitions by: Wouter Staelens https://github.com/wstaelens/
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
interface SummernoteOptions {
airMode?: boolean;
buttons?: any;
callbacks?: any; // todo
codemirror?: CodemirrorOptions;
colors?: colorsDef;
dialogsInBody?: boolean;
dialogsFade?: boolean;
direction?: string;
disableDragAndDrop?: boolean;
focus?: boolean;
fontNames?: string[];
fontNamesIgnoreCheck?: string[];
height?: number;
hint?: HintOptions;
icons?: IconsOptions;
insertTableMaxSize?: InsertTableMaxSizeOptions;
keyMap?: KeyMapOptions;
lang?: string;
lineHeights?: string[];
minHeight?: number;
maxHeight?: number;
maximumImageFileSize?: any;
modules?: ModuleOptions;
popover?: PopoverOptions;
placeholder?: string;
shortcuts?: boolean;
styleTags?: styleTagsOptions[];
styleWithSpan?: boolean;
tabsize?: number;
tableClassName?: string;
textareaAutoSync?: boolean;
toolbar?: toolbarDef;
tooltip?: boolean;
width?: number;
}
// callbacks ?
// https://www.typescriptlang.org/docs/handbook/functions.html#writing-the-function-type
//type OptionsDef = {
// callbacks?: {
// [event: string]: () => void
// }
//};
type toolbarStyleGroupOptions = 'style' | 'bold' | 'italic' | 'underline' | 'clear';
type toolbarFontGroupOptions = 'strikethrough' | 'superscript' | 'subscript';
type toolbarFontsizeGroupOptions = 'fontsize';
type toolbarColorGroupOptions = 'color';
type toolbarParaGroupOptions = 'ul' | 'ol' | 'paragraph';
type toolbarHeightGroupOptions = 'height';
type toolbarTableGroupOptions = 'table';
type toolbarInsertGroupOptions = 'link' | 'picture' | 'hr';
type toolbarViewGroupOptions = 'fullscreen' | 'codeview';
type toolbarHelpGroupOptions = 'help';
type toolbarDef = [string, string[]][];
//type toolbarDef = [
// ['style', toolbarStyleGroupOptions[]]
// | ['font', toolbarFontGroupOptions[]]
// | ['fontsize', toolbarFontsizeGroupOptions[]]
// | ['color', toolbarColorGroupOptions[]]
// | ['para', toolbarParaGroupOptions[]]
// | ['height', toolbarHeightGroupOptions[]]
// | ['table', toolbarTableGroupOptions[]]
// | ['insert', toolbarInsertGroupOptions[]]
// | ['view', toolbarViewGroupOptions[]]
// | ['help', toolbarHelpGroupOptions[]]
//];
type colorsDef = [string[]][];
type styleTagsOptions = 'p' | 'blockquote' | 'pre' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
interface InsertTableMaxSizeOptions {
col: number;
row: number;
}
interface IconsOptions {
options?: any; // todo
}
interface KeyMapOptions {
pc?: KeyMapPcOptions;
mac?: KeyMapMacOptions;
}
interface KeyMapPcOptions {
options?: any; // todo
}
interface KeyMapMacOptions {
options?: any; // todo
}
interface HintOptions {
words?: string[];
mentions?: string[];
match: RegExp;
search: Function;
template?: Function;
content?: Function;
}
interface CodemirrorOptions {
mode?: string;
htmlNode?: boolean;
lineNumbers?: boolean;
theme?: string;
}
type popoverImageOptionsImagesize = 'imageSize100' | 'imageSize50' | 'imageSize25';
type popoverImageOptionsFloat = 'floatLeft' | 'floatRight' | 'floatNone';
type popoverImageOptionsRemove = 'removeMedia';
type popoverImageDef = [
['imagesize', popoverImageOptionsImagesize[]],
['float', popoverImageOptionsFloat[]],
['remove', popoverImageOptionsRemove[]]
];
type popoverLinkLinkOptions = 'linkDialogShow' | 'unlink';
type popoverLinkDef = [
['link', popoverLinkLinkOptions[]]
];
type popoverAirOptionsColor = 'color';
type popoverAirOptionsFont = 'bold' | 'underline' | 'clear';
type popoverAirOptionsPara = 'ul' | 'paragraph';
type popoverAirOptionsTable = 'table';
type popoverAirOptionsInsert = 'link' | 'picture';
type popoverAirDef = [
['color', popoverAirOptionsColor],
['font', popoverAirOptionsFont],
['para', popoverAirOptionsPara],
['table', popoverAirOptionsTable],
['insert', popoverAirOptionsInsert]
];
interface PopoverOptions {
image?: popoverImageDef;
link?: popoverLinkDef;
air?: popoverAirDef;
}
interface ModuleOptions {
options?: any; // todo
}
interface CreateLinkOptions {
text: string;
url: string;
newWindow: boolean;
}
interface JQuery {
summernote(): JQuery;
summernote(command: string): JQuery;
summernote(options?: SummernoteOptions): JQuery;
summernote(command: string, markupString: string): JQuery
summernote(command: string, value: number): JQuery;
summernote(command: string, node: Node): JQuery;
summernote(command: string, url: string, filename?: (string | Function)): JQuery;
summernote(command: 'destroy'): JQuery;
summernote(command: 'code', markupStr?: string): JQuery;
summernote(command: 'editor.pasteHTML' | 'pasteHTML', markup : string): JQuery;
// Basic API
summernote(command: 'editor.createRange' | 'createRange'): JQuery;
summernote(command: 'editor.saveRange' | 'saveRange'): JQuery;
summernote(command: 'editor.restoreRange' | 'restoreRange'): JQuery;
summernote(command: 'editor.undo' | 'undo'): JQuery;
summernote(command: 'editor.redo' | 'redo'): JQuery;
summernote(command: 'editor.focus' | 'focus'): JQuery;
summernote(command: 'editor.isEmpty' | 'isEmpty'): boolean;
summernote(command: 'reset'): JQuery;
summernote(command: 'disable'): JQuery;
summernote(command: 'enable'): JQuery;
// Font style API
summernote(fontStyle: 'editor.bold' | 'bold'): JQuery;
summernote(fontStyle: 'editor.italic' | 'italic'): JQuery;
summernote(fontStyle: 'editor.underline' | 'underline'): JQuery;
summernote(fontStyle: 'editor.strikethrough' | 'strikethrough'): JQuery;
summernote(command: 'editor.superscript' | 'superscript'): JQuery;
summernote(command: 'editor.subscript' | 'subscript'): JQuery;
summernote(command: 'editor.removeFormat' | 'removeFormat'): JQuery;
summernote(command: 'backColor', color: string): JQuery;
summernote(command: 'foreColor', color: string): JQuery;
summernote(command: 'fontName', fontName: string): JQuery;
summernote(command: 'editor.fontSize' | 'fontSize', fontSize: number): JQuery;
// Paragraph API
summernote(command: 'editor.justifyLeft' | 'justifyLeft'): JQuery;
summernote(command: 'editor.justifyRight' | 'justifyRight'): JQuery;
summernote(command: 'editor.justifyCenter' | 'justifyCenter'): JQuery;
summernote(command: 'editor.justifyFull' | 'justifyFull'): JQuery;
summernote(command: 'insertParagraph'): JQuery;
summernote(command: 'editor.insertOrderedList' | 'insertOrderedList'): JQuery;
summernote(command: 'editor.insertUnorderedList' | 'insertUnorderedList'): JQuery;
summernote(command: 'editor.indent' | 'indent'): JQuery;
summernote(command: 'editor.outdent' | 'outdent'): JQuery;
summernote(command: 'formatPara'): JQuery;
summernote(command: 'formatH1'): JQuery;
summernote(command: 'formatH2'): JQuery;
summernote(command: 'formatH3'): JQuery;
summernote(command: 'formatH4'): JQuery;
summernote(command: 'formatH5'): JQuery;
summernote(command: 'formatH6'): JQuery;
// Insertion API
summernote(command: 'editor.insertImage' | 'insertImage', url: string, filename?: (string | Function)): JQuery;
summernote(command: 'editor.insertNode' | 'insertNode', node: Node): JQuery;
summernote(command: 'editor.insertText' | 'insertText', text: string): JQuery;
summernote(command: 'createLink', options: CreateLinkOptions): JQuery;
summernote(command: 'editor.unlink' | 'unlink'): JQuery;
// Callbacks
// todo!
// what about these?
// editor.insertImagesOrCallback ??
// editor.afterCommand ??
// editor.resizeTo ??
// editor.resize ??
// editor.saveTarget ??
// editor.isActivated ??
// editor.formatBlock ??
// editor.color ??
// editor.lineHeight ??
// editor.insertTable ??
// editor.insertHorizontalRule ??
// editor.floatMe ??
// editor.removeMedia ??
// editor.currentStyle ??
// editor.getLinkInfo ??
// editor.getSelectedText ??
// todo: implement keyof in future release of TypeScript: http://stackoverflow.com/a/40843364/187650
}
declare module "summernote" {
}