UNPKG

@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
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; }