@textbus/platform-browser
Version:
Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.
99 lines (98 loc) • 3.04 kB
TypeScript
import { Observable } from '@tanbo/stream';
import { Commander, Controller, Keyboard, Scheduler, Selection, Textbus } from '@textbus/core';
import { Parser } from './parser';
import { Caret, CaretLimit, CaretPosition, Input } from './types';
import { DomAdapter } from './dom-adapter';
interface CaretStyle {
height: string;
lineHeight: string;
fontSize: string;
}
declare class ExperimentalCaret implements Caret {
private domRenderer;
private scheduler;
private editorMask;
onPositionChange: Observable<CaretPosition | null>;
onStyleChange: Observable<CaretStyle>;
elementRef: HTMLElement;
changeFromSelf: boolean;
getLimit: () => CaretLimit;
get rect(): DOMRect;
private timer;
private caret;
private set display(value);
private get display();
private _display;
private flashing;
/** 被 overflow 裁出可视区(不用 display:none,避免触发 Input.hide) */
private caretClippedOut;
private subscription;
private scrollSubscription;
private scrollRaf;
private clipContext;
private clipContextAnchor;
private scrollListenerAnchor;
private positionChangeEvent;
private styleChangeEvent;
private oldRange;
constructor(domRenderer: DomAdapter, scheduler: Scheduler, editorMask: HTMLElement);
refresh(): void;
show(range: Range, restart: boolean): void;
hide(): void;
destroy(): void;
private bindScrollListeners;
private unbindScrollListeners;
private ensureClipContext;
private clearClipContext;
private updateCursorPosition;
private resolveCaretAnchor;
private normalizeCollapsedRange;
private applyCaretElementLayout;
private applyCaretPresentation;
private emitCaretPresentation;
private scrollCaretIntoViewIfNeeded;
}
/**
* Textbus PC 端输入实现
*/
export declare class MagicInput extends Input {
private domAdapter;
private parser;
private keyboard;
private commander;
private selection;
private controller;
private scheduler;
private textbus;
composition: boolean;
onReady: Promise<void>;
caret: ExperimentalCaret;
set disabled(b: boolean);
get disabled(): boolean;
private isSafari;
private isFirefox;
private isMac;
private isWindows;
private _disabled;
private container;
private subscription;
private doc;
private textarea;
private isFocus;
private nativeFocus;
private ignoreComposition;
constructor(domAdapter: DomAdapter, parser: Parser, keyboard: Keyboard, commander: Commander, selection: Selection, controller: Controller, scheduler: Scheduler, textbus: Textbus);
focus(range: Range, restart: boolean): void;
blur(): void;
destroy(): void;
private reInit;
private init;
private handleDefaultActions;
copyHandler(ev: ClipboardEvent): void;
pasteHandler(ev: ClipboardEvent): void;
private paste;
private handleShortcut;
private handleInput;
private createEditableFrame;
}
export {};