| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import type * as Common from '../../core/common/common.js'; |
| import type * as TextUtils from '../../models/text_utils/text_utils.js'; |
| |
| import type {AnchorBehavior} from './GlassPane.js'; |
| import type {Suggestion} from './SuggestBox.js'; |
| import type {Widget} from './Widget.js'; |
| |
| export interface TextEditorFactory { |
| createEditor(options: Options): TextEditor; |
| } |
| |
| export interface TextEditor extends Common.EventTarget.EventTarget { |
| widget(): Widget; |
| fullRange(): TextUtils.TextRange.TextRange; |
| selection(): TextUtils.TextRange.TextRange; |
| setSelection(selection: TextUtils.TextRange.TextRange): void; |
| text(textRange?: TextUtils.TextRange.TextRange): string; |
| textWithCurrentSuggestion(): string; |
| setText(text: string): void; |
| line(lineNumber: number): string; |
| newlineAndIndent(): void; |
| addKeyDownHandler(handler: (arg0: KeyboardEvent) => void): void; |
| configureAutocomplete(config: AutocompleteConfig|null): void; |
| clearAutocomplete(): void; |
| visualCoordinates(lineNumber: number, columnNumber: number): { |
| x: number, |
| y: number, |
| }; |
| tokenAtTextPosition(lineNumber: number, columnNumber: number): { |
| startColumn: number, |
| endColumn: number, |
| type: string, |
| }|null; |
| setPlaceholder(placeholder: string): void; |
| } |
| |
| // TODO(crbug.com/1167717): Make this a const enum again |
| // eslint-disable-next-line rulesdir/const_enum |
| export enum Events { |
| CursorChanged = 'CursorChanged', |
| TextChanged = 'TextChanged', |
| SuggestionChanged = 'SuggestionChanged', |
| } |
| |
| export interface Options { |
| bracketMatchingSetting?: Common.Settings.Setting<boolean>; |
| devtoolsAccessibleName?: string; |
| lineNumbers: boolean; |
| lineWrapping: boolean; |
| mimeType?: string; |
| autoHeight?: boolean; |
| padBottom?: boolean; |
| maxHighlightLength?: number; |
| placeholder?: string; |
| lineWiseCopyCut?: boolean; |
| inputStyle?: string; |
| } |
| |
| export interface AutocompleteConfig { |
| substituteRangeCallback?: ((arg0: number, arg1: number) => TextUtils.TextRange.TextRange | null); |
| tooltipCallback?: ((arg0: number, arg1: number) => Promise<Element|null>); |
| suggestionsCallback?: |
| ((arg0: TextUtils.TextRange.TextRange, arg1: TextUtils.TextRange.TextRange, |
| arg2?: boolean|undefined) => Promise<Suggestion[]>| null); |
| isWordChar?: ((arg0: string) => boolean); |
| anchorBehavior?: AnchorBehavior; |
| } |