|
|
/**
|
|
|
* @description 编辑区域,入口文件
|
|
|
* @author wangfupeng
|
|
|
*/
|
|
|
import { DomElement } from '../utils/dom-core';
|
|
|
import Editor from '../editor/index';
|
|
|
import { NodeListType } from './getChildrenJSON';
|
|
|
/** 按键函数 */
|
|
|
declare type KeyBoardHandler = (event: KeyboardEvent) => unknown;
|
|
|
/** 普通事件回调 */
|
|
|
declare type EventHandler = (event?: Event) => unknown;
|
|
|
declare type TextEventHooks = {
|
|
|
onBlurEvents: EventHandler[];
|
|
|
changeEvents: (() => void)[];
|
|
|
dropEvents: ((event: DragEvent) => unknown)[];
|
|
|
clickEvents: EventHandler[];
|
|
|
keydownEvents: KeyBoardHandler[];
|
|
|
keyupEvents: KeyBoardHandler[];
|
|
|
/** tab 键(keyCode === )Up 时 */
|
|
|
tabUpEvents: KeyBoardHandler[];
|
|
|
/** tab 键(keyCode === 9)Down 时 */
|
|
|
tabDownEvents: KeyBoardHandler[];
|
|
|
/** enter 键(keyCode === 13)up 时 */
|
|
|
enterUpEvents: KeyBoardHandler[];
|
|
|
/** enter 键(keyCode === 13)down 时 */
|
|
|
enterDownEvents: KeyBoardHandler[];
|
|
|
/** 删除键(keyCode === 8)up 时 */
|
|
|
deleteUpEvents: KeyBoardHandler[];
|
|
|
/** 删除键(keyCode === 8)down 时 */
|
|
|
deleteDownEvents: KeyBoardHandler[];
|
|
|
/** 粘贴事件 */
|
|
|
pasteEvents: ((e: ClipboardEvent) => void)[];
|
|
|
/** 点击链接事件 */
|
|
|
linkClickEvents: ((e: DomElement) => void)[];
|
|
|
/** 点击代码事件 */
|
|
|
codeClickEvents: ((e: DomElement) => void)[];
|
|
|
/** 编辑区域滑动事件 */
|
|
|
textScrollEvents: EventHandler[];
|
|
|
/** 菜单栏被点击 */
|
|
|
toolbarClickEvents: EventHandler[];
|
|
|
/** 图片被点击事件 */
|
|
|
imgClickEvents: ((e: DomElement) => void)[];
|
|
|
/** 图片拖拽MouseDown */
|
|
|
imgDragBarMouseDownEvents: (() => void)[];
|
|
|
/** 表格点击 */
|
|
|
tableClickEvents: (($dom: DomElement, e: MouseEvent) => void)[];
|
|
|
/** 每个菜单被点击时,按理说这个不属于 txt 的,先暂时在这放着吧 */
|
|
|
menuClickEvents: (() => void)[];
|
|
|
/** droplist 菜单悬浮事件。暂时放这里 */
|
|
|
dropListMenuHoverEvents: (() => void)[];
|
|
|
/** 点击分割线时 */
|
|
|
splitLineEvents: ((e: DomElement) => void)[];
|
|
|
/** 视频点击事件 */
|
|
|
videoClickEvents: ((e: DomElement) => void)[];
|
|
|
};
|
|
|
declare class Text {
|
|
|
editor: Editor;
|
|
|
eventHooks: TextEventHooks;
|
|
|
constructor(editor: Editor);
|
|
|
/**
|
|
|
* 初始化
|
|
|
*/
|
|
|
init(): void;
|
|
|
/**
|
|
|
* 切换placeholder
|
|
|
*/
|
|
|
togglePlaceholder(): void;
|
|
|
/**
|
|
|
* 清空内容
|
|
|
*/
|
|
|
clear(): void;
|
|
|
/**
|
|
|
* 设置/获取 html
|
|
|
* @param val html 字符串
|
|
|
*/
|
|
|
html(val?: string): void | string;
|
|
|
/**
|
|
|
* 将json设置成html至编辑器
|
|
|
* @param nodeList json格式
|
|
|
*/
|
|
|
setJSON(nodeList: NodeListType): void;
|
|
|
/**
|
|
|
* 获取 json 格式的数据
|
|
|
*/
|
|
|
getJSON(): NodeListType;
|
|
|
/**
|
|
|
* 设置 字符串内容
|
|
|
* @param val text 字符串
|
|
|
*/
|
|
|
text(val: string): void;
|
|
|
/**
|
|
|
* 获取 字符串内容
|
|
|
*/
|
|
|
text(): string;
|
|
|
/**
|
|
|
* 追加 html 内容
|
|
|
* @param html html 字符串
|
|
|
*/
|
|
|
append(html: string): void;
|
|
|
/**
|
|
|
* 每一步操作,都实时保存选区范围
|
|
|
*/
|
|
|
private _saveRange;
|
|
|
/**
|
|
|
* 绑定事件,事件会触发钩子函数
|
|
|
*/
|
|
|
private _bindEventHooks;
|
|
|
}
|
|
|
export default Text;
|