@textbus/browser
Version:
Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.
86 lines (85 loc) • 2.4 kB
TypeScript
import { Observable, Subject, Subscription } from '@tanbo/stream';
import { Starter, ComponentLiteral, Component } from '@textbus/core';
import { ComponentLoader } from './dom-support/_api';
import { ViewOptions } from './core/_api';
export interface OutputContents<T = any> {
content: T;
styleSheets: string[];
styleSheet: string;
links: Record<string, string>[];
scripts: string[];
}
/**
* Textbus PC 端编辑器
*/
export declare class Viewer {
rootComponent: Component;
rootComponentLoader: ComponentLoader;
options: ViewOptions;
/** 当视图获得焦点时触发 */
onFocus: Observable<void>;
/** 当视图失去焦点时触发 */
onBlur: Observable<void>;
/** 当编辑器内容变化时触发 */
onChange: Observable<void>;
/** 当用户按 Ctrl + S 时触发 */
onSave: Observable<void>;
/** 访问编辑器内部实例的 IoC 容器 */
injector: Starter;
/** 编辑器是否已销毁 */
destroyed: boolean;
/** 编辑器是否已准备好 */
isReady: boolean;
get readonly(): boolean;
set readonly(b: boolean);
isFocus(): boolean;
protected changeEvent: Subject<void>;
protected subs: Subscription[];
protected _isFocus: boolean;
private controller;
private workbench;
private id;
private resourceNodes;
private focusEvent;
private blurEvent;
private saveEvent;
private styleSheet;
private scripts;
private links;
constructor(rootComponent: Component, rootComponentLoader: ComponentLoader, options?: ViewOptions);
/**
* 初始化编辑器
* @param host 编辑器容器
*/
mount(host: HTMLElement): Promise<Starter>;
/**
* 获取焦点
*/
focus(): void;
/**
* 取消编辑器焦点
*/
blur(): void;
/**
* 获取 content 为 HTML 格式的内容
*/
getContents(): OutputContents<string>;
/**
* 获取 content 为 JSON 格式的内容
*/
getJSON(): OutputContents<ComponentLiteral>;
/**
* 销毁编辑器
*/
destroy(): void;
/**
* 替换编辑的内容
* @param content
*/
replaceContent(content: string | ComponentLiteral): void;
protected guardReady(): void;
private initDefaultShortcut;
private initDocStyleSheetsAndScripts;
private static createLayout;
private static cssMin;
}