@senx/warpview-editor
Version:
WarpView Editor Elements
172 lines (171 loc) • 5.51 kB
TypeScript
import * as monacoEditor from 'monaco-editor';
import { CodeSelection, CommentState as ReviewCommentStore, reduceComments, ReviewComment, ReviewCommentEvent, ReviewCommentRenderState } from './events-comments-reducers';
export { ReviewCommentStore, ReviewCommentEvent, reduceComments };
declare enum NavigationDirection {
next = 1,
prev = 2
}
export declare enum EditorMode {
insertComment = 1,
editComment = 2,
toolbar = 3
}
export declare function createReviewManager(editor: any, currentUser: string, actions?: ReviewCommentEvent[], onChange?: OnActionsChanged, config?: ReviewManagerConfig, verbose?: boolean): ReviewManager;
interface OnActionsChanged {
(actions: ReviewCommentEvent[]): void;
}
export interface ReviewManagerConfig {
commentIndent?: number;
commentIndentOffset?: number;
editButtonEnableRemove?: boolean;
editButtonOffset?: string;
formatDate?: {
(dt: Date): string;
};
readOnly?: boolean;
reviewCommentIconActive?: string;
reviewCommentIconSelect?: string;
showInRuler?: boolean;
verticalOffset?: number;
cancelButton?: {
label: string;
class: string;
};
addButton?: {
label: string;
class: string;
};
replyButton?: {
label: string;
class: string;
};
removeButton?: {
label: string;
class: string;
};
editButton?: {
label: string;
class: string;
};
}
interface ReviewManagerConfigPrivate {
commentIndent: number;
commentIndentOffset: number;
editButtonEditText: string;
editButtonEnableEdit: boolean;
editButtonEnableRemove: boolean;
editButtonOffset: string;
formatDate?: {
(dt: Date | string): string;
};
readOnly: boolean;
rulerMarkerColor: any;
rulerMarkerDarkColor: any;
showAddCommentGlyph: boolean;
showInRuler: boolean;
verticalOffset: number;
cancelButton?: {
label: string;
class: string;
};
addButton?: {
label: string;
class: string;
};
replyButton?: {
label: string;
class: string;
};
removeButton?: {
label: string;
class: string;
};
editButton?: {
label: string;
class: string;
};
}
interface EditorElements {
cancel: HTMLButtonElement;
confirm: HTMLButtonElement;
root: HTMLSpanElement;
textarea: HTMLTextAreaElement;
}
interface InlineToolbarElements {
add: HTMLSpanElement;
edit: HTMLSpanElement;
remove: HTMLSpanElement;
root: HTMLDivElement;
}
interface RenderStoreItem {
viewZoneId: string;
renderStatus: ReviewCommentRenderState;
}
export declare class ReviewManager {
currentUser: string;
editor: monacoEditor.editor.IStandaloneCodeEditor;
editorConfig: monacoEditor.editor.IEditorOptions;
events: ReviewCommentEvent[];
store: ReviewCommentStore;
activeComment?: ReviewComment;
widgetInlineToolbar: monacoEditor.editor.IContentWidget;
widgetInlineCommentEditor: monacoEditor.editor.IContentWidget;
onChange: OnActionsChanged;
editorMode: EditorMode;
config: ReviewManagerConfigPrivate;
currentLineDecorations: string[];
currentCommentDecorations: string[];
currentLineDecorationLineNumber?: number;
editorElements: EditorElements;
inlineToolbarElements: InlineToolbarElements;
verbose: boolean;
canAddCondition: monacoEditor.editor.IContextKey<boolean>;
renderStore: Record<string, RenderStoreItem>;
constructor(editor: any, currentUser: string, onChange: OnActionsChanged, config?: ReviewManagerConfig, verbose?: boolean);
setReadOnlyMode(value: boolean): void;
load(events: ReviewCommentEvent[]): void;
loadFromStore(store: ReviewCommentStore, events: ReviewCommentEvent[]): void;
getThemedColor(name: string): string;
createInlineEditButtonsElement(): InlineToolbarElements;
handleCancel(): void;
handleAddComment(): void;
handleTextAreaKeyDown(e: KeyboardEvent): void;
createInlineEditorElement(): EditorElements;
createInlineToolbarWidget(): InlineToolbarElements;
createInlineEditorWidget(): EditorElements;
setActiveComment(comment: ReviewComment): void;
filterAndMapComments(lineNumbers: number[], fn: {
(comment: ReviewComment): void;
}): void;
handleMouseMove(ev: monacoEditor.editor.IEditorMouseEvent): void;
renderAddCommentLineDecoration(lineNumber?: number): void;
handleMouseDown(ev: {
target: {
element: {
className: string;
hasAttribute: {
(string: any): boolean;
};
};
detail: any;
};
}): void;
private calculateMarginTopOffset;
layoutInlineToolbar(): void;
layoutInlineCommentEditor(): void;
setEditorMode(mode: EditorMode, why?: string): void;
getDateTimeNow(): Date;
private recurseComments;
private iterateComments;
removeComment(id: string): ReviewCommentEvent;
addComment(lineNumber: number, text: string, selection?: CodeSelection): ReviewCommentEvent;
private addEvent;
private formatDate;
private static createElement;
getRenderState(commentId: string): RenderStoreItem;
refreshComments(): void;
calculateNumberOfLines(text: string): number;
addActions(): void;
navigateToComment(direction: NavigationDirection): void;
updateConfig(config: ReviewManagerConfig): void;
}