index.d.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * @description 编辑区域,入口文件
  3. * @author wangfupeng
  4. */
  5. import { DomElement } from '../utils/dom-core';
  6. import Editor from '../editor/index';
  7. import { NodeListType } from './getChildrenJSON';
  8. /** 按键函数 */
  9. declare type KeyBoardHandler = (event: KeyboardEvent) => unknown;
  10. /** 普通事件回调 */
  11. declare type EventHandler = (event?: Event) => unknown;
  12. declare type TextEventHooks = {
  13. onBlurEvents: EventHandler[];
  14. changeEvents: (() => void)[];
  15. dropEvents: ((event: DragEvent) => unknown)[];
  16. clickEvents: EventHandler[];
  17. keydownEvents: KeyBoardHandler[];
  18. keyupEvents: KeyBoardHandler[];
  19. /** tab 键(keyCode === )Up 时 */
  20. tabUpEvents: KeyBoardHandler[];
  21. /** tab 键(keyCode === 9)Down 时 */
  22. tabDownEvents: KeyBoardHandler[];
  23. /** enter 键(keyCode === 13)up 时 */
  24. enterUpEvents: KeyBoardHandler[];
  25. /** enter 键(keyCode === 13)down 时 */
  26. enterDownEvents: KeyBoardHandler[];
  27. /** 删除键(keyCode === 8)up 时 */
  28. deleteUpEvents: KeyBoardHandler[];
  29. /** 删除键(keyCode === 8)down 时 */
  30. deleteDownEvents: KeyBoardHandler[];
  31. /** 粘贴事件 */
  32. pasteEvents: ((e: ClipboardEvent) => void)[];
  33. /** 点击链接事件 */
  34. linkClickEvents: ((e: DomElement) => void)[];
  35. /** 点击代码事件 */
  36. codeClickEvents: ((e: DomElement) => void)[];
  37. /** 编辑区域滑动事件 */
  38. textScrollEvents: EventHandler[];
  39. /** 菜单栏被点击 */
  40. toolbarClickEvents: EventHandler[];
  41. /** 图片被点击事件 */
  42. imgClickEvents: ((e: DomElement) => void)[];
  43. /** 图片拖拽MouseDown */
  44. imgDragBarMouseDownEvents: (() => void)[];
  45. /** 表格点击 */
  46. tableClickEvents: (($dom: DomElement, e: MouseEvent) => void)[];
  47. /** 每个菜单被点击时,按理说这个不属于 txt 的,先暂时在这放着吧 */
  48. menuClickEvents: (() => void)[];
  49. /** droplist 菜单悬浮事件。暂时放这里 */
  50. dropListMenuHoverEvents: (() => void)[];
  51. /** 点击分割线时 */
  52. splitLineEvents: ((e: DomElement) => void)[];
  53. /** 视频点击事件 */
  54. videoClickEvents: ((e: DomElement) => void)[];
  55. };
  56. declare class Text {
  57. editor: Editor;
  58. eventHooks: TextEventHooks;
  59. constructor(editor: Editor);
  60. /**
  61. * 初始化
  62. */
  63. init(): void;
  64. /**
  65. * 切换placeholder
  66. */
  67. togglePlaceholder(): void;
  68. /**
  69. * 清空内容
  70. */
  71. clear(): void;
  72. /**
  73. * 设置/获取 html
  74. * @param val html 字符串
  75. */
  76. html(val?: string): void | string;
  77. /**
  78. * 将json设置成html至编辑器
  79. * @param nodeList json格式
  80. */
  81. setJSON(nodeList: NodeListType): void;
  82. /**
  83. * 获取 json 格式的数据
  84. */
  85. getJSON(): NodeListType;
  86. /**
  87. * 设置 字符串内容
  88. * @param val text 字符串
  89. */
  90. text(val: string): void;
  91. /**
  92. * 获取 字符串内容
  93. */
  94. text(): string;
  95. /**
  96. * 追加 html 内容
  97. * @param html html 字符串
  98. */
  99. append(html: string): void;
  100. /**
  101. * 每一步操作,都实时保存选区范围
  102. */
  103. private _saveRange;
  104. /**
  105. * 绑定事件,事件会触发钩子函数
  106. */
  107. private _bindEventHooks;
  108. }
  109. export default Text;