modern-text
Version:
Measure and render text in a way that describes the DOM.
72 lines (69 loc) • 2.06 kB
TypeScript
import { ReactiveObject, NormalizedTextContent } from 'modern-idoc';
import { T as Text, b as TextOptions } from '../shared/modern-text.BAfGVPZ9.js';
import 'modern-font';
import 'modern-path2d';
interface SelectableCharacter {
color: string;
left: number;
top: number;
width: number;
height: number;
content: string;
isFirst?: boolean;
isLast?: boolean;
isLastSelected?: boolean;
isCrlf?: boolean;
}
declare class TextEditor extends HTMLElement implements ReactiveObject {
static observedAttributes: string[];
width: number;
height: number;
static register(): void;
protected _text: Text;
get text(): Text;
set text(value: Text | TextOptions);
pixelRatio: number;
composition: boolean;
selection: number[];
prevSelection: number[];
protected _oldText: string;
$preview: HTMLCanvasElement;
$textInput: HTMLTextAreaElement;
$cursor: HTMLElement;
get selectionMinMax(): {
min: number;
max: number;
};
get selectedCharacters(): SelectableCharacter[];
get selectableCharacters(): SelectableCharacter[];
get cursorPosition(): {
left: number;
top: number;
width: number;
height: number;
color: string;
};
constructor();
getTextValue(): string;
getContentValue(content: NormalizedTextContent, newString?: string, oldString?: string): NormalizedTextContent;
setTextInput(newText: string): void;
onInput(): void;
protected _timer?: any;
onKeydown(e: KeyboardEvent): void;
onBlur(): void;
findNearest(options: {
x: number;
y: number;
xWeight?: number;
yWeight?: number;
}): number;
updateSelection(): void;
updateDOMSelection(): void;
onMousedown(e: MouseEvent): void;
render(): void;
requestUpdate(): void;
attributeChangedCallback(name: string, _oldValue: any, newValue: any): void;
emit(type: string, detail?: any): boolean;
}
export { TextEditor };
export type { SelectableCharacter };