react-ace
Version:
A react component for Ace Editor
177 lines (166 loc) • 5.24 kB
TypeScript
// Type definitions for react-ace 4.1.3
// Project: https://github.com/securingsincity/react-ace
// Definitions by: Alberto Nicoletti <https://github.com/illbexyz>
import { Component, CSSProperties } from "react";
export interface Annotation {
row: number;
column: number;
type: string;
text: string;
}
export interface Marker {
startRow: number;
startCol: number;
endRow: number;
endCol: number;
className: string;
type: string;
}
export interface CommandBindKey {
win: string;
mac: string;
}
export interface Command {
name: string;
bindKey: CommandBindKey;
exec(editor: any): void;
}
export interface Selection {
getCursor(): Annotation;
}
/**
* See https://github.com/ajaxorg/ace/wiki/Configuring-Ace
*/
export interface AceOptions {
selectionStyle?: "line" | "text";
highlightActiveLine?: boolean;
highlightSelectedWord?: boolean;
readOnly?: boolean;
cursorStyle?: "ace" | "slim" | "smooth" | "wide";
mergeUndoDeltas?: false | true | "always";
behavioursEnabled?: boolean;
wrapBehavioursEnabled?: boolean;
/** this is needed if editor is inside scrollable page */
autoScrollEditorIntoView?: boolean;
hScrollBarAlwaysVisible?: boolean;
vScrollBarAlwaysVisible?: boolean;
highlightGutterLine?: boolean;
animatedScroll?: boolean;
showInvisibles?: string | boolean;
showPrintMargin?: boolean;
printMarginColumn?: number;
printMargin?: boolean | number;
fadeFoldWidgets?: boolean;
showFoldWidgets?: boolean;
showLineNumbers?: boolean;
showGutter?: boolean;
displayIndentGuides?: boolean;
/** number or css font-size string */
fontSize?: number | string;
/** css */
fontFamily?: string;
maxLines?: number;
minLines?: number;
scrollPastEnd?: boolean;
fixedWidthGutter?: boolean;
/** path to a theme e.g "ace/theme/textmate" */
theme?: string;
scrollSpeed?: number;
dragDelay?: number;
dragEnabled?: boolean;
focusTimout?: number;
tooltipFollowsMouse?: boolean;
firstLineNumber?: number;
overwrite?: boolean;
newLineMode?: boolean;
useWorker?: boolean;
useSoftTabs?: boolean;
tabSize?: number;
wrap?: boolean;
foldStyle?: "markbegin" | "markbeginend" | "manual";
/** path to a mode e.g "ace/mode/text" */
mode?: string;
/** on by default */
enableMultiselect?: boolean;
enableEmmet?: boolean;
enableBasicAutocompletion?: boolean;
enableLiveAutocompletion?: boolean;
enableSnippets?: boolean;
spellcheck?: boolean;
useElasticTabstops?: boolean;
}
export interface EditorProps {
$blockScrolling?: number | boolean;
$blockSelectEnabled?: boolean;
$enableBlockSelect?: boolean;
$enableMultiselect?: boolean;
$highlightPending?: boolean;
$highlightTagPending?: boolean;
$multiselectOnSessionChange?: (...args: any[]) => any;
$onAddRange?: (...args: any[]) => any;
$onChangeAnnotation?: (...args: any[]) => any;
$onChangeBackMarker?: (...args: any[]) => any;
$onChangeBreakpoint?: (...args: any[]) => any;
$onChangeFold?: (...args: any[]) => any;
$onChangeFrontMarker?: (...args: any[]) => any;
$onChangeMode?: (...args: any[]) => any;
$onChangeTabSize?: (...args: any[]) => any;
$onChangeWrapLimit?: (...args: any[]) => any;
$onChangeWrapMode?: (...args: any[]) => any;
$onCursorChange?: (...args: any[]) => any;
$onDocumentChange?: (...args: any[]) => any;
$onMultiSelect?: (...args: any[]) => any;
$onRemoveRange?: (...args: any[]) => any;
$onScrollLeftChange?: (...args: any[]) => any;
$onScrollTopChange?: (...args: any[]) => any;
$onSelectionChange?: (...args: any[]) => any;
$onSingleSelect?: (...args: any[]) => any;
$onTokenizerUpdate?: (...args: any[]) => any;
}
export interface AceEditorProps {
name?: string;
/** For available modes see https://github.com/thlorenz/brace/tree/master/mode */
mode?: string;
/** For available themes see https://github.com/thlorenz/brace/tree/master/theme */
theme?: string;
height?: string;
width?: string;
className?: string;
fontSize?: number;
showGutter?: boolean;
showPrintMargin?: boolean;
highlightActiveLine?: boolean;
focus?: boolean;
cursorStart?: number;
wrapEnabled?: boolean;
readOnly?: boolean;
minLines?: number;
maxLines?: number;
enableBasicAutocompletion?: boolean;
enableLiveAutocompletion?: boolean;
tabSize?: number;
value?: string;
defaultValue?: string;
scrollMargin?: number[];
onLoad?: (editor: EditorProps) => void;
onBeforeLoad?: (ace: any) => void;
onChange?: (value: string, event?: any) => void;
onInput?: (value: string, event?: any) => void;
onSelectionChange?: (selectedText: string, event?: any) => void;
onCopy?: (value: string) => void;
onPaste?: (value: string) => void;
onFocus?: (event: any) => void;
onBlur?: (event: any) => void;
onValidate?: (annotations: Array<Annotation>) => void;
onScroll?: (editor: EditorProps) => void;
onCursorChange?: (selection: Selection) => void;
editorProps?: EditorProps;
setOptions?: AceOptions;
keyboardHandler?: string;
commands?: Array<Command>;
annotations?: Array<Annotation>;
markers?: Array<Marker>;
style?: CSSProperties;
debounceChangePeriod?: number;
}
export default class AceEditor extends Component<AceEditorProps, {}> {}