@hailin-zheng/editor-core 1.0.7 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/package.json +3 -4
  2. package/{lib/doc-ruler.js → src/med_editor/doc-ruler.ts} +101 -74
  3. package/src/med_editor/framework/common-util.ts +200 -0
  4. package/{lib/framework/document-change.js → src/med_editor/framework/document-change.ts} +308 -259
  5. package/{lib/framework/document-combine.js → src/med_editor/framework/document-combine.ts} +15 -11
  6. package/{lib/framework/document-comment.js → src/med_editor/framework/document-comment.ts} +52 -37
  7. package/{lib/framework/document-context.js → src/med_editor/framework/document-context.ts} +181 -101
  8. package/{lib/framework/document-eval-func.js → src/med_editor/framework/document-eval-func.ts} +16 -11
  9. package/{lib/framework/document-event.js → src/med_editor/framework/document-event.ts} +244 -216
  10. package/{lib/framework/document-history.js → src/med_editor/framework/document-history.ts} +25 -14
  11. package/{lib/framework/document-images-loader.js → src/med_editor/framework/document-images-loader.ts} +25 -17
  12. package/{lib/framework/document-input-cursor.js → src/med_editor/framework/document-input-cursor.ts} +76 -71
  13. package/{lib/framework/document-paint.js → src/med_editor/framework/document-paint.ts} +35 -28
  14. package/{lib/framework/document-print-offscreen.js → src/med_editor/framework/document-print-offscreen.ts} +25 -19
  15. package/{lib/framework/document-print.js → src/med_editor/framework/document-print.ts} +57 -41
  16. package/src/med_editor/framework/document-segmenter.ts +211 -0
  17. package/{lib/framework/document-selection.js → src/med_editor/framework/document-selection.ts} +116 -85
  18. package/{lib/framework/document-template.js → src/med_editor/framework/document-template.ts} +3 -3
  19. package/src/med_editor/framework/document-textline-mode.ts +34 -0
  20. package/{lib/framework/element-define.js → src/med_editor/framework/element-define.ts} +301 -206
  21. package/src/med_editor/framework/element-event-define.ts +141 -0
  22. package/{lib/framework/element-measure.js → src/med_editor/framework/element-measure.ts} +143 -121
  23. package/{lib/framework/element-paint.js → src/med_editor/framework/element-paint.ts} +44 -38
  24. package/{lib/framework/element-props.js → src/med_editor/framework/element-props.ts} +331 -202
  25. package/{lib/framework/element-reader.js → src/med_editor/framework/element-reader.ts} +39 -31
  26. package/{lib/framework/element-render-cut.js → src/med_editor/framework/element-render-cut.ts} +113 -106
  27. package/{lib/framework/element-serialize.js → src/med_editor/framework/element-serialize.ts} +37 -24
  28. package/{lib/framework/element-util.js → src/med_editor/framework/element-util.ts} +317 -216
  29. package/{lib/framework/impl/checkbox/checkbox-impl.js → src/med_editor/framework/impl/checkbox/checkbox-impl.ts} +27 -20
  30. package/{lib/framework/impl/comments/comment-content-impl.js → src/med_editor/framework/impl/comments/comment-content-impl.ts} +45 -31
  31. package/{lib/framework/impl/comments/comment-element-impl.js → src/med_editor/framework/impl/comments/comment-element-impl.ts} +23 -20
  32. package/{lib/framework/impl/comments/comments-container-impl.js → src/med_editor/framework/impl/comments/comments-container-impl.ts} +22 -16
  33. package/{lib/framework/impl/comments/comments-util.js → src/med_editor/framework/impl/comments/comments-util.ts} +34 -17
  34. package/{lib/framework/impl/comments/validate-msg-impl.js → src/med_editor/framework/impl/comments/validate-msg-impl.ts} +28 -17
  35. package/{lib/framework/impl/data-element/data-decorate-impl.js → src/med_editor/framework/impl/data-element/data-decorate-impl.ts} +26 -22
  36. package/{lib/framework/impl/data-element/data-element-barcode.js → src/med_editor/framework/impl/data-element/data-element-barcode.ts} +41 -29
  37. package/{lib/framework/impl/data-element/data-element-base-impl.js → src/med_editor/framework/impl/data-element/data-element-base-impl.ts} +73 -44
  38. package/{lib/framework/impl/data-element/data-element-check-impl.js → src/med_editor/framework/impl/data-element/data-element-check-impl.ts} +48 -35
  39. package/{lib/framework/impl/data-element/data-element-date-impl.js → src/med_editor/framework/impl/data-element/data-element-date-impl.ts} +41 -24
  40. package/{lib/framework/impl/data-element/data-element-group-impl.js → src/med_editor/framework/impl/data-element/data-element-group-impl.ts} +52 -32
  41. package/{lib/framework/impl/data-element/data-element-image-impl.js → src/med_editor/framework/impl/data-element/data-element-image-impl.ts} +38 -28
  42. package/{lib/framework/impl/data-element/data-element-list-impl.js → src/med_editor/framework/impl/data-element/data-element-list-impl.ts} +42 -31
  43. package/{lib/framework/impl/data-element/data-element-text-impl.js → src/med_editor/framework/impl/data-element/data-element-text-impl.ts} +36 -22
  44. package/{lib/framework/impl/decorate/fill-null-space-imple.js → src/med_editor/framework/impl/decorate/fill-null-space-imple.ts} +15 -10
  45. package/{lib/framework/impl/document/doc-body-impl.js → src/med_editor/framework/impl/document/doc-body-impl.ts} +32 -16
  46. package/{lib/framework/impl/document/doc-body-part-impl.js → src/med_editor/framework/impl/document/doc-body-part-impl.ts} +27 -17
  47. package/src/med_editor/framework/impl/document/doc-container-impl.ts +24 -0
  48. package/{lib/framework/impl/document/doc-footer-impl.js → src/med_editor/framework/impl/document/doc-footer-impl.ts} +30 -19
  49. package/{lib/framework/impl/document/doc-header-impl.js → src/med_editor/framework/impl/document/doc-header-impl.ts} +34 -17
  50. package/{lib/framework/impl/document/doc-impl.js → src/med_editor/framework/impl/document/doc-impl.ts} +62 -45
  51. package/{lib/framework/impl/media-formula/menstrual-history.js → src/med_editor/framework/impl/media-formula/menstrual-history.ts} +58 -36
  52. package/{lib/framework/impl/paragraph/p-impl.js → src/med_editor/framework/impl/paragraph/p-impl.ts} +64 -30
  53. package/{lib/framework/impl/picture/image-impl.js → src/med_editor/framework/impl/picture/image-impl.ts} +37 -25
  54. package/{lib/framework/impl/radio/radio-impl.js → src/med_editor/framework/impl/radio/radio-impl.ts} +28 -21
  55. package/{lib/framework/impl/symbol/br-symbol-impl.js → src/med_editor/framework/impl/symbol/br-symbol-impl.ts} +21 -15
  56. package/{lib/framework/impl/symbol/p-symbol-impl.js → src/med_editor/framework/impl/symbol/p-symbol-impl.ts} +15 -12
  57. package/{lib/framework/impl/table/table-cell-impl.js → src/med_editor/framework/impl/table/table-cell-impl.ts} +41 -30
  58. package/{lib/framework/impl/table/table-impl.js → src/med_editor/framework/impl/table/table-impl.ts} +122 -84
  59. package/{lib/framework/impl/table/table-row-impl.js → src/med_editor/framework/impl/table/table-row-impl.ts} +26 -18
  60. package/{lib/framework/impl/table/table-split-cell-patch.js → src/med_editor/framework/impl/table/table-split-cell-patch.ts} +31 -22
  61. package/{lib/framework/impl/table/table-split-cell.js → src/med_editor/framework/impl/table/table-split-cell.ts} +105 -94
  62. package/{lib/framework/impl/table/table-util.js → src/med_editor/framework/impl/table/table-util.ts} +197 -159
  63. package/{lib/framework/impl/text/text-impl.js → src/med_editor/framework/impl/text/text-impl.ts} +49 -35
  64. package/{lib/framework/impl/text/track-run-impl.js → src/med_editor/framework/impl/text/track-run-impl.ts} +53 -30
  65. package/{lib/framework/notify.js → src/med_editor/framework/notify.ts} +50 -36
  66. package/{lib/framework/range-util.js → src/med_editor/framework/range-util.ts} +80 -71
  67. package/{lib/framework/render-context.js → src/med_editor/framework/render-context.ts} +111 -64
  68. package/{lib/framework/render-define.js → src/med_editor/framework/render-define.ts} +90 -61
  69. package/{lib/framework/selection-overlays.js → src/med_editor/framework/selection-overlays.ts} +25 -16
  70. package/{lib/texteditor.js → src/med_editor/texteditor.ts} +288 -191
  71. package/src/med_editor/util/subject.ts +118 -0
  72. package/{lib/util/table-bind.js → src/med_editor/util/table-bind.ts} +2 -2
  73. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +3573 -0
  74. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +3573 -0
  75. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +315 -0
  76. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +122 -0
  77. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +3599 -0
  78. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +24586 -0
  79. package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +2874 -0
  80. package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +341 -0
  81. package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +2201 -0
  82. package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +1069 -0
  83. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +125 -0
  84. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +86 -0
  85. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +115 -0
  86. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +108 -0
  87. package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +272 -0
  88. package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +1070 -0
  89. package/lib/doc-ruler.d.ts +0 -51
  90. package/lib/doc-ruler.js.map +0 -1
  91. package/lib/framework/common-util.d.ts +0 -63
  92. package/lib/framework/common-util.js +0 -178
  93. package/lib/framework/common-util.js.map +0 -1
  94. package/lib/framework/document-change.d.ts +0 -265
  95. package/lib/framework/document-change.js.map +0 -1
  96. package/lib/framework/document-combine.d.ts +0 -24
  97. package/lib/framework/document-combine.js.map +0 -1
  98. package/lib/framework/document-comment.d.ts +0 -46
  99. package/lib/framework/document-comment.js.map +0 -1
  100. package/lib/framework/document-context.d.ts +0 -149
  101. package/lib/framework/document-context.js.map +0 -1
  102. package/lib/framework/document-eval-func.d.ts +0 -18
  103. package/lib/framework/document-eval-func.js.map +0 -1
  104. package/lib/framework/document-event.d.ts +0 -213
  105. package/lib/framework/document-event.js.map +0 -1
  106. package/lib/framework/document-history.d.ts +0 -26
  107. package/lib/framework/document-history.js.map +0 -1
  108. package/lib/framework/document-images-loader.d.ts +0 -16
  109. package/lib/framework/document-images-loader.js.map +0 -1
  110. package/lib/framework/document-input-cursor.d.ts +0 -78
  111. package/lib/framework/document-input-cursor.js.map +0 -1
  112. package/lib/framework/document-paint.d.ts +0 -34
  113. package/lib/framework/document-paint.js.map +0 -1
  114. package/lib/framework/document-print-offscreen.d.ts +0 -38
  115. package/lib/framework/document-print-offscreen.js.map +0 -1
  116. package/lib/framework/document-print.d.ts +0 -60
  117. package/lib/framework/document-print.js.map +0 -1
  118. package/lib/framework/document-segmenter.d.ts +0 -2
  119. package/lib/framework/document-segmenter.js +0 -106
  120. package/lib/framework/document-segmenter.js.map +0 -1
  121. package/lib/framework/document-selection.d.ts +0 -89
  122. package/lib/framework/document-selection.js.map +0 -1
  123. package/lib/framework/document-template.d.ts +0 -4
  124. package/lib/framework/document-template.js.map +0 -1
  125. package/lib/framework/document-textline-mode.d.ts +0 -7
  126. package/lib/framework/document-textline-mode.js +0 -30
  127. package/lib/framework/document-textline-mode.js.map +0 -1
  128. package/lib/framework/element-define.d.ts +0 -319
  129. package/lib/framework/element-define.js.map +0 -1
  130. package/lib/framework/element-event-define.d.ts +0 -99
  131. package/lib/framework/element-event-define.js +0 -108
  132. package/lib/framework/element-event-define.js.map +0 -1
  133. package/lib/framework/element-measure.d.ts +0 -97
  134. package/lib/framework/element-measure.js.map +0 -1
  135. package/lib/framework/element-paint.d.ts +0 -42
  136. package/lib/framework/element-paint.js.map +0 -1
  137. package/lib/framework/element-props.d.ts +0 -301
  138. package/lib/framework/element-props.js.map +0 -1
  139. package/lib/framework/element-reader.d.ts +0 -19
  140. package/lib/framework/element-reader.js.map +0 -1
  141. package/lib/framework/element-render-cut.d.ts +0 -55
  142. package/lib/framework/element-render-cut.js.map +0 -1
  143. package/lib/framework/element-serialize.d.ts +0 -30
  144. package/lib/framework/element-serialize.js.map +0 -1
  145. package/lib/framework/element-util.d.ts +0 -369
  146. package/lib/framework/element-util.js.map +0 -1
  147. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +0 -24
  148. package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
  149. package/lib/framework/impl/comments/comment-content-impl.d.ts +0 -40
  150. package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
  151. package/lib/framework/impl/comments/comment-element-impl.d.ts +0 -21
  152. package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
  153. package/lib/framework/impl/comments/comments-container-impl.d.ts +0 -22
  154. package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
  155. package/lib/framework/impl/comments/comments-util.d.ts +0 -12
  156. package/lib/framework/impl/comments/comments-util.js.map +0 -1
  157. package/lib/framework/impl/comments/validate-msg-impl.d.ts +0 -21
  158. package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
  159. package/lib/framework/impl/data-element/data-decorate-impl.d.ts +0 -30
  160. package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
  161. package/lib/framework/impl/data-element/data-element-barcode.d.ts +0 -31
  162. package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
  163. package/lib/framework/impl/data-element/data-element-base-impl.d.ts +0 -68
  164. package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
  165. package/lib/framework/impl/data-element/data-element-check-impl.d.ts +0 -35
  166. package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
  167. package/lib/framework/impl/data-element/data-element-date-impl.d.ts +0 -23
  168. package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
  169. package/lib/framework/impl/data-element/data-element-group-impl.d.ts +0 -23
  170. package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
  171. package/lib/framework/impl/data-element/data-element-image-impl.d.ts +0 -30
  172. package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
  173. package/lib/framework/impl/data-element/data-element-list-impl.d.ts +0 -22
  174. package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
  175. package/lib/framework/impl/data-element/data-element-text-impl.d.ts +0 -23
  176. package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
  177. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +0 -21
  178. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
  179. package/lib/framework/impl/document/doc-body-impl.d.ts +0 -27
  180. package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
  181. package/lib/framework/impl/document/doc-body-part-impl.d.ts +0 -30
  182. package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
  183. package/lib/framework/impl/document/doc-container-impl.d.ts +0 -16
  184. package/lib/framework/impl/document/doc-container-impl.js +0 -21
  185. package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
  186. package/lib/framework/impl/document/doc-footer-impl.d.ts +0 -26
  187. package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
  188. package/lib/framework/impl/document/doc-header-impl.d.ts +0 -26
  189. package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
  190. package/lib/framework/impl/document/doc-impl.d.ts +0 -61
  191. package/lib/framework/impl/document/doc-impl.js.map +0 -1
  192. package/lib/framework/impl/media-formula/menstrual-history.d.ts +0 -35
  193. package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
  194. package/lib/framework/impl/paragraph/p-impl.d.ts +0 -45
  195. package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
  196. package/lib/framework/impl/picture/image-impl.d.ts +0 -31
  197. package/lib/framework/impl/picture/image-impl.js.map +0 -1
  198. package/lib/framework/impl/radio/radio-impl.d.ts +0 -22
  199. package/lib/framework/impl/radio/radio-impl.js.map +0 -1
  200. package/lib/framework/impl/symbol/br-symbol-impl.d.ts +0 -22
  201. package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
  202. package/lib/framework/impl/symbol/p-symbol-impl.d.ts +0 -19
  203. package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
  204. package/lib/framework/impl/table/table-cell-impl.d.ts +0 -37
  205. package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
  206. package/lib/framework/impl/table/table-impl.d.ts +0 -55
  207. package/lib/framework/impl/table/table-impl.js.map +0 -1
  208. package/lib/framework/impl/table/table-row-impl.d.ts +0 -26
  209. package/lib/framework/impl/table/table-row-impl.js.map +0 -1
  210. package/lib/framework/impl/table/table-split-cell-patch.d.ts +0 -20
  211. package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
  212. package/lib/framework/impl/table/table-split-cell.d.ts +0 -90
  213. package/lib/framework/impl/table/table-split-cell.js.map +0 -1
  214. package/lib/framework/impl/table/table-util.d.ts +0 -150
  215. package/lib/framework/impl/table/table-util.js.map +0 -1
  216. package/lib/framework/impl/text/text-impl.d.ts +0 -32
  217. package/lib/framework/impl/text/text-impl.js.map +0 -1
  218. package/lib/framework/impl/text/track-run-impl.d.ts +0 -27
  219. package/lib/framework/impl/text/track-run-impl.js.map +0 -1
  220. package/lib/framework/notify.d.ts +0 -13
  221. package/lib/framework/notify.js.map +0 -1
  222. package/lib/framework/range-util.d.ts +0 -40
  223. package/lib/framework/range-util.js.map +0 -1
  224. package/lib/framework/render-context.d.ts +0 -91
  225. package/lib/framework/render-context.js.map +0 -1
  226. package/lib/framework/render-define.d.ts +0 -109
  227. package/lib/framework/render-define.js.map +0 -1
  228. package/lib/framework/selection-overlays.d.ts +0 -30
  229. package/lib/framework/selection-overlays.js.map +0 -1
  230. package/lib/texteditor.d.ts +0 -318
  231. package/lib/texteditor.js.map +0 -1
  232. package/lib/util/subject.d.ts +0 -34
  233. package/lib/util/subject.js +0 -88
  234. package/lib/util/subject.js.map +0 -1
  235. package/lib/util/table-bind.d.ts +0 -5
  236. package/lib/util/table-bind.js.map +0 -1
  237. package/tsconfig.json +0 -25
@@ -1,91 +1,91 @@
1
1
  import { CommonUtil } from "./common-util";
2
- import { fromEvent, Subject } from "rxjs";
3
- import { SelectionRange } from "./document-selection";
4
- import { LeafElement, ResizeLeafRenderObject, DocMode } from "./element-define";
5
- import { DropElementEvent, GetTrackTipsEvent, GotCursorEvent, LostCursorEvent, MousedownElementEvent, MouseElementEvent } from "./element-event-define";
2
+ import { fromEvent, Subject, Subscription } from "rxjs";
3
+ import { DocumentPaint } from "./document-paint";
4
+ import { SelectionRange, SelectionState } from "./document-selection";
5
+ import { LeafElement, Rect, Element, Position, ViewOptions, ResizeLeafRenderObject, DocMode } from "./element-define";
6
+ import { DropElementEvent, ElementEvent, EventStage, EventTypes, GetTrackTipsEvent, GotCursorEvent, HitEventInfo, HitRegion, ITrackTips, LostCursorEvent, MousedownElementEvent, MouseElementEvent } from "./element-event-define";
6
7
  import { ElementUtil } from "./element-util";
8
+ import { DocumentRenderObject } from "./impl/document/doc-impl";
7
9
  import { PictureElement } from "./impl/picture/image-impl";
8
10
  import { BreakElement } from "./impl/symbol/br-symbol-impl";
9
11
  import { PSymbolElement } from "./impl/symbol/p-symbol-impl";
10
12
  import { TableCellElement, TableCellRenderObject } from "./impl/table/table-cell-impl";
11
- import { TableRowRenderObject } from "./impl/table/table-row-impl";
12
- import { BranchRenderObject, LeafRenderObject } from "./render-define";
13
+ import { TableElement } from "./impl/table/table-impl";
14
+ import { TableRowElement, TableRowRenderObject } from "./impl/table/table-row-impl";
15
+ import { BorderType, BranchRenderObject, CursorType, LeafRenderObject, RenderObject } from "./render-define";
16
+ import { EditorContext } from "./document-context";
13
17
  import { ParagraphLineRectRenderObject } from "./impl/paragraph/p-impl";
14
18
  import { TextGroupElement } from "./impl/text/text-impl";
15
19
  import { DocumentHeaderRenderObject } from "./impl/document/doc-header-impl";
16
20
  import { DocumentFooterRenderObject } from "./impl/document/doc-footer-impl";
17
21
  import { debounceTime } from "rxjs/operators";
22
+ interface EdgeRenderInfo { renderElement: Element, relativePos: Position, mousedown: boolean, mousedownPos?: Position, border: BorderType }
18
23
  /**
19
24
  * 事件系统
20
25
  */
21
26
  export class DocumentEvent {
22
- canvas;
23
- documentPaint;
24
- viewOptions;
25
- selectionState;
26
- docCtx;
27
- ismousedown;
27
+ private ismousedown!: boolean;
28
28
  //开始点击时的元素信息
29
- startHitInfo;
29
+ startHitInfo!: HitEventInfo | null;
30
30
  //当前位置点击的元素信息
31
- endHitInfo;
31
+ endHitInfo!: HitEventInfo | null;
32
32
  //当前定位的焦点元素,例如图片等
33
- focusedElement;
34
- focusedRect;
33
+ focusedElement!: LeafElement | null;
34
+ focusedRect!: Rect | null;
35
35
  //当前光标所在的元素
36
- currentMouseoverRender;
37
- hitInfoChanged = new Subject();
38
- clickEvent = new Subject();
39
- dblClickEvent = new Subject();
40
- changeCursor = new Subject();
41
- contextMenu = new Subject();
42
- trackTipsChanged = new Subject();
36
+ currentMouseoverRender!: { render: RenderObject, absoluteRenderRect: Rect } | null;
37
+ hitInfoChanged: Subject<{ startHitInfo: HitEventInfo, endHitInfo: HitEventInfo }> = new Subject();
38
+ clickEvent: Subject<MouseEvent> = new Subject();
39
+ dblClickEvent: Subject<MouseEvent> = new Subject();
40
+ changeCursor: Subject<CursorType> = new Subject();
41
+ contextMenu: Subject<MouseEvent> = new Subject();
42
+ trackTipsChanged: Subject<{ pos: Position, tips: ITrackTips }> = new Subject();
43
43
  //光标处于边框的绘制元素
44
- edgeRenderInfo;
44
+ edgeRenderInfo!: EdgeRenderInfo | null;
45
45
  //当前鼠标所在的page-position
46
- currentPos;
46
+ currentPos!: Position;
47
47
  //鼠标按下的位置
48
- mousedownPos;
49
- subs = [];
50
- constructor(canvas, documentPaint, viewOptions, selectionState, docCtx) {
51
- this.canvas = canvas;
52
- this.documentPaint = documentPaint;
53
- this.viewOptions = viewOptions;
54
- this.selectionState = selectionState;
55
- this.docCtx = docCtx;
48
+ mousedownPos!: Position;
49
+ subs: Array<Subscription> = [];
50
+
51
+ constructor(private canvas: HTMLCanvasElement, private documentPaint: DocumentPaint, private viewOptions: ViewOptions, private selectionState: SelectionState, private docCtx: EditorContext) {
56
52
  this.bindEvent();
57
53
  }
58
- bindEvent() {
59
- this.addSubEvent(fromEvent(this.canvas, 'mousedown').subscribe((evt) => {
54
+
55
+ private bindEvent(): void {
56
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'mousedown').subscribe((evt) => {
60
57
  this.mousedown(evt);
61
58
  }));
62
- this.addSubEvent(fromEvent(this.canvas, 'mouseup').subscribe((evt) => {
59
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'mouseup').subscribe((evt) => {
63
60
  this.mouseup(evt);
64
61
  }));
65
- this.addSubEvent(fromEvent(this.canvas, 'click').subscribe((evt) => {
62
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'click').subscribe((evt) => {
66
63
  this.mouseClickHandle(evt);
67
64
  }));
68
- this.addSubEvent(fromEvent(this.canvas, 'contextmenu').subscribe((evt) => {
65
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'contextmenu').subscribe((evt) => {
69
66
  this.contextMenu.next(evt);
70
67
  }));
71
- this.addSubEvent(fromEvent(this.canvas, 'mousemove').subscribe((evt) => {
68
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'mousemove').subscribe((evt) => {
72
69
  this.mousemove(evt);
73
70
  }));
74
- this.addSubEvent(fromEvent(this.canvas, 'mousemove').pipe(debounceTime(500)).subscribe((evt) => {
71
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'mousemove').pipe(debounceTime(500)).subscribe((evt) => {
75
72
  this.getTips();
76
73
  }));
77
- this.addSubEvent(fromEvent(this.canvas, 'dblclick').subscribe((evt) => {
74
+ this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'dblclick').subscribe((evt) => {
78
75
  this.mouseDblClickHandle(evt);
79
76
  }));
80
77
  }
81
- addSubEvent(sub) {
78
+
79
+ addSubEvent(sub: Subscription): void {
82
80
  this.subs.push(sub);
83
81
  }
84
- clearSubEvent() {
82
+
83
+ clearSubEvent(): void {
85
84
  this.subs.forEach(item => item.unsubscribe());
86
85
  this.subs.length = 0;
87
86
  }
88
- clear() {
87
+
88
+ clear(): void {
89
89
  this.selectionState.clear();
90
90
  this.startHitInfo = null;
91
91
  this.endHitInfo = null;
@@ -94,7 +94,8 @@ export class DocumentEvent {
94
94
  this.currentMouseoverRender = null;
95
95
  this.edgeRenderInfo = null;
96
96
  }
97
- mousedown(evt) {
97
+
98
+ private mousedown(evt: MouseEvent): void {
98
99
  const docEvent = new MouseElementEvent(this.docCtx);
99
100
  docEvent.globalX = evt.offsetX;
100
101
  docEvent.globalY = evt.offsetY;
@@ -104,7 +105,8 @@ export class DocumentEvent {
104
105
  this.mousedownPos = { x: evt.offsetX, y: evt.offsetY };
105
106
  this.mousedownHandle(docEvent);
106
107
  }
107
- mouseup(evt) {
108
+
109
+ private mouseup(evt: MouseEvent): void {
108
110
  const docEvent = new MouseElementEvent(this.docCtx);
109
111
  docEvent.globalX = evt.offsetX;
110
112
  docEvent.globalY = evt.offsetY;
@@ -113,7 +115,8 @@ export class DocumentEvent {
113
115
  this.ismousedown = false;
114
116
  this.edgeRenderInfo = null;
115
117
  }
116
- mousemove(evt) {
118
+
119
+ private mousemove(evt: MouseEvent): void {
117
120
  const docEvent = new MouseElementEvent(this.docCtx);
118
121
  docEvent.globalX = evt.offsetX;
119
122
  docEvent.globalY = evt.offsetY;
@@ -124,12 +127,13 @@ export class DocumentEvent {
124
127
  }
125
128
  this.mousemoveHandle(docEvent);
126
129
  }
127
- prevTrackInfo = false;
130
+
131
+ private prevTrackInfo: boolean = false;
128
132
  /**
129
133
  * 显示提示信息
130
134
  * 显示留痕提示信息等
131
135
  */
132
- getTips() {
136
+ private getTips(): void {
133
137
  if (!this.currentMouseoverRender) {
134
138
  return;
135
139
  }
@@ -143,8 +147,7 @@ export class DocumentEvent {
143
147
  if (event.trackTips) {
144
148
  this.trackTipsChanged.next({ pos: { ...this.currentPos }, tips: event.trackTips });
145
149
  this.prevTrackInfo = true;
146
- }
147
- else {
150
+ } else {
148
151
  if (!this.prevTrackInfo) {
149
152
  return;
150
153
  }
@@ -152,10 +155,12 @@ export class DocumentEvent {
152
155
  this.prevTrackInfo = false;
153
156
  }
154
157
  }
158
+
159
+
155
160
  /**
156
161
  * 滚动视图的时候,需要手动触发mousemove
157
162
  */
158
- onScrollView() {
163
+ onScrollView(): void {
159
164
  if (!this.currentPos) {
160
165
  return;
161
166
  }
@@ -164,12 +169,13 @@ export class DocumentEvent {
164
169
  docEvent.globalY = this.currentPos.y;
165
170
  this.mousemoveHandle(docEvent);
166
171
  }
172
+
167
173
  /**
168
174
  * 处理鼠标按下事件
169
- * @param evt
170
- * @returns
175
+ * @param evt
176
+ * @returns
171
177
  */
172
- mousedownHandle(evt) {
178
+ private mousedownHandle(evt: MouseElementEvent): void {
173
179
  //点击右键时,存在选区,直接返回
174
180
  if (evt.buttons === 2 && this.startHitInfo && !this.selectionState.collapsed) {
175
181
  return;
@@ -191,8 +197,7 @@ export class DocumentEvent {
191
197
  const mousedownEvent = new MousedownElementEvent(this.docCtx);
192
198
  mousedownEvent.source = startElement;
193
199
  DocumentEvent.invokeEvent('ElementMousedown', startElement, mousedownEvent, 'All', this.docCtx);
194
- }
195
- else {
200
+ } else {
196
201
  this.clearHitInfo();
197
202
  }
198
203
  if (this.edgeRenderInfo) {
@@ -200,13 +205,14 @@ export class DocumentEvent {
200
205
  this.edgeRenderInfo.mousedownPos = this.currentPos;
201
206
  this.clearHitInfo();
202
207
  }
203
- this.hitInfoChanged.next({ startHitInfo: this.startHitInfo, endHitInfo: this.endHitInfo });
208
+ this.hitInfoChanged.next({ startHitInfo: this.startHitInfo as HitEventInfo, endHitInfo: this.endHitInfo as HitEventInfo });
204
209
  this.selectionState.startHitInfo = this.startHitInfo;
205
210
  }
211
+
206
212
  /**
207
213
  * 设置元素焦点状态
208
214
  */
209
- switchElementFocus() {
215
+ private switchElementFocus(): void {
210
216
  if (!this.startHitInfo) {
211
217
  return;
212
218
  }
@@ -218,20 +224,22 @@ export class DocumentEvent {
218
224
  }
219
225
  if (startElement && startElement.focusable) {
220
226
  startElement.isFocused = true;
221
- this.focusedElement = startElement;
227
+ this.focusedElement = startElement as LeafElement;
222
228
  this.focusedRect = ElementUtil.getRenderAbsolutePaintRect(this.startHitInfo.render);
223
229
  }
224
230
  }
225
- clearHitInfo() {
231
+
232
+ clearHitInfo(): void {
226
233
  this.startHitInfo = null;
227
234
  this.endHitInfo = null;
228
235
  }
236
+
229
237
  /**
230
238
  * 获取当前鼠标所在位置的元素信息
231
- * @param evt
232
- * @returns
239
+ * @param evt
240
+ * @returns
233
241
  */
234
- getHitInfo(evt) {
242
+ private getHitInfo(evt: MouseElementEvent): HitEventInfo | null {
235
243
  const hitDocInfo = this.getHitDocPage(evt);
236
244
  if (!hitDocInfo) {
237
245
  return null;
@@ -240,11 +248,12 @@ export class DocumentEvent {
240
248
  //设置文档页中的相对位置
241
249
  evt.pageX = hitPagePos.x;
242
250
  evt.pageY = hitPagePos.y;
251
+
243
252
  const hitInfo = this.getHitLeafRender(docRender, { x: -docRender.rect.x, y: -docRender.rect.y }, { x: evt.pageX, y: evt.pageY });
244
253
  if (!hitInfo) {
245
254
  return null;
246
255
  }
247
- const element = hitInfo.render.element;
256
+ const element = hitInfo.render.element as LeafElement;
248
257
  return {
249
258
  hitDocIndex: docIndex,
250
259
  offset: hitInfo.offset,
@@ -256,7 +265,8 @@ export class DocumentEvent {
256
265
  startRegion: ElementUtil.getRenderObjectRegion(hitInfo.render)
257
266
  };
258
267
  }
259
- getMouseoverRenderInfo(evt) {
268
+
269
+ private getMouseoverRenderInfo(evt: MouseElementEvent): { render: RenderObject, absoluteRenderRect: Rect } | null {
260
270
  const hitDocInfo = this.getHitDocPage(evt);
261
271
  if (!hitDocInfo) {
262
272
  return null;
@@ -270,15 +280,16 @@ export class DocumentEvent {
270
280
  const mouseoverInfo = this.getHitLeafRender(docRender, { x: -docRender.rect.x, y: -docRender.rect.y }, { x: evt.pageX, y: evt.pageY });
271
281
  return mouseoverInfo;
272
282
  }
283
+
273
284
  /**
274
285
  * 鼠标移动事件
275
286
  * 主要处理选区改变
276
287
  */
277
- mousemoveHandle(evt) {
288
+ private mousemoveHandle(evt: MouseElementEvent): void {
278
289
  //console.time('mousemove计时')
279
- let edgeRenderInfo = null;
280
- const mousePos = { x: evt.globalX, y: evt.globalY };
281
- let cursorType = 'text';
290
+ let edgeRenderInfo: null | typeof this.edgeRenderInfo = null;
291
+ const mousePos: Position = { x: evt.globalX, y: evt.globalY };
292
+ let cursorType: CursorType = 'text';
282
293
  this.currentPos = mousePos;
283
294
  if (this.ismousedown && this.startHitInfo) {
284
295
  this.endHitInfo = this.getHitInfo(evt);
@@ -291,27 +302,26 @@ export class DocumentEvent {
291
302
  this.currentMouseoverRender = currMouseoverRenderInfo;
292
303
  //当前有元素有焦点时,需要首先判断当前位置是否在焦点元素上
293
304
  //如果单元格中包含图片等可缩放的元素,并且元素的大小超过单元格,则当前图片的某一部分就无法缩放
294
- if (!this.ismousedown && this.focusedElement && this.focusedRect && this.focusedElement['resizeable']) {
295
- const relativePos = { x: mousePos.x - this.focusedRect.x, y: mousePos.y - this.focusedRect.y };
305
+ if (!this.ismousedown && this.focusedElement && this.focusedRect && (<any>this.focusedElement)['resizeable']) {
306
+ const relativePos: Position = { x: mousePos.x - this.focusedRect.x, y: mousePos.y - this.focusedRect.y };
296
307
  const isInCellBorder = CommonUtil.isInPictureResizePoint(this.focusedRect, relativePos, 4);
297
308
  if (isInCellBorder) {
298
309
  cursorType = ElementUtil.getBorderCursor(isInCellBorder.borderType);
299
310
  if (isInCellBorder?.borderType === 'none') {
300
311
  edgeRenderInfo = null;
301
- }
302
- else {
312
+ } else {
303
313
  edgeRenderInfo = { renderElement: this.focusedElement, relativePos, mousedown: false, border: isInCellBorder.borderType };
304
314
  }
305
315
  }
306
- } //当前鼠标不处于mousedown并且鼠标位于单元格边界时,获取边界信息
316
+ }//当前鼠标不处于mousedown并且鼠标位于单元格边界时,获取边界信息
307
317
  else if (!this.ismousedown && this.isInCellRenderObject(this.currentMouseoverRender?.render)) {
308
- const cellRender = ElementUtil.getParentRender(this.currentMouseoverRender?.render, TableCellRenderObject);
318
+ const cellRender = ElementUtil.getParentRender(this.currentMouseoverRender?.render as RenderObject, TableCellRenderObject) as TableCellRenderObject;
309
319
  //const cellRender = this.currentMouseoverRender?.render as TableCellRenderObject;
310
320
  //const { render: { renderPosition: { x: rx, y: ry } } } = this.currentMouseoverRender;
311
321
  //const rp = this.currentMouseoverRender?.absoluteRenderRect as Rect;
312
322
  const rp = ElementUtil.getRenderAbsolutePaintRect(cellRender);
313
323
  rp.y -= this.viewOptions.translateY;
314
- const relativePos = { x: mousePos.x - rp.x, y: mousePos.y - rp.y };
324
+ const relativePos: Position = { x: mousePos.x - rp.x, y: mousePos.y - rp.y };
315
325
  const isInCellBorder = CommonUtil.isInRectBorder(cellRender.rect, 2, relativePos);
316
326
  if (isInCellBorder) {
317
327
  //console.log('是否在边框上' + isInCellBorder?.borderType);
@@ -320,8 +330,7 @@ export class DocumentEvent {
320
330
  this.changeCursor.next(cursorType);
321
331
  if (isInCellBorder?.borderType === 'none') {
322
332
  edgeRenderInfo = null;
323
- }
324
- else {
333
+ } else {
325
334
  edgeRenderInfo = { renderElement: cellRender.element, relativePos, mousedown: false, border: isInCellBorder.borderType };
326
335
  }
327
336
  }
@@ -338,33 +347,38 @@ export class DocumentEvent {
338
347
  }
339
348
  this.changeCursor.next(cursorType);
340
349
  }
341
- isCellRenderObject(render) {
350
+
351
+
352
+ private isCellRenderObject(render: RenderObject | undefined): boolean {
342
353
  return render instanceof TableCellRenderObject;
343
354
  }
355
+
344
356
  /**
345
357
  * 当前绘制元素是否在单元格上面
346
- * @param render
347
- * @returns
358
+ * @param render
359
+ * @returns
348
360
  */
349
- isInCellRenderObject(render) {
361
+ private isInCellRenderObject(render: RenderObject | undefined): boolean {
350
362
  if (!render) {
351
363
  return false;
352
364
  }
353
365
  return ElementUtil.getParentRender(render, TableCellRenderObject) !== null;
354
366
  }
355
- isResizeRenderObject(render) {
367
+
368
+ private isResizeRenderObject(render: RenderObject | undefined): boolean {
356
369
  return render instanceof ResizeLeafRenderObject;
357
370
  }
371
+
358
372
  /**
359
373
  * 触发鼠标移动事件
360
374
  */
361
- invokeMousemoveEvent(oldRender, newRender, mousePos) {
375
+ private invokeMousemoveEvent(oldRender: RenderObject | null | undefined, newRender: RenderObject | null | undefined, mousePos: { x: number, y: number } | undefined): void {
362
376
  const oldParentRenders = oldRender ? ElementUtil.getRenderMapElements(oldRender) : [];
363
377
  const newParentRenders = newRender ? ElementUtil.getRenderMapElements(newRender) : [];
364
378
  const mouseleaveRenders = oldParentRenders.filter(item => newParentRenders.every(oldItem => item !== oldItem));
365
379
  const mouseenterRenders = newParentRenders.filter(item => oldParentRenders.every(oldItem => item !== oldItem));
366
380
  const mousemoveRenders = oldParentRenders.filter(item => mouseleaveRenders.every(oldItem => item !== oldItem));
367
- const loopInvokeEvent = (eventName, array) => {
381
+ const loopInvokeEvent = (eventName: EventTypes, array: Array<Element>) => {
368
382
  for (const element of array) {
369
383
  const mouseEvent = new MouseElementEvent(this.docCtx);
370
384
  mouseEvent.source = element;
@@ -376,23 +390,26 @@ export class DocumentEvent {
376
390
  loopInvokeEvent('ElementMouseEnter', mouseenterRenders);
377
391
  loopInvokeEvent('ElementMousemove', mousemoveRenders);
378
392
  }
379
- prevCursorItems = [];
393
+
394
+
395
+ prevCursorItems: Array<Element> = [];
380
396
  /**
381
397
  * 触发获取焦点事件
382
398
  * 需要根据上次获取焦点的元素,比较触发失去焦点事件
383
- * @param focusElement
399
+ * @param focusElement
384
400
  */
385
- invokeCursor(focusElement) {
401
+ invokeCursor(focusElement: LeafElement): void {
386
402
  if (focusElement === this.prevCursorItems[0]) {
387
403
  return;
388
404
  }
389
405
  const getCursorEvent = new GotCursorEvent(this.docCtx);
390
406
  getCursorEvent.source = focusElement;
407
+
391
408
  const oldParents = this.prevCursorItems;
392
409
  const newParents = ElementUtil.getParentElements(focusElement);
393
410
  const leaveParents = oldParents.filter(item => newParents.every(oldItem => item !== oldItem));
394
411
  const enterParents = newParents.filter(item => oldParents.every(oldItem => item !== oldItem));
395
- const loopInvokeEvent = (eventName, array) => {
412
+ const loopInvokeEvent = (eventName: EventTypes, array: Array<Element>) => {
396
413
  for (const element of array) {
397
414
  const mouseEvent = new LostCursorEvent(this.docCtx);
398
415
  mouseEvent.source = focusElement;
@@ -403,18 +420,20 @@ export class DocumentEvent {
403
420
  };
404
421
  loopInvokeEvent('LostCursor', leaveParents);
405
422
  loopInvokeEvent('GotCursor', enterParents);
423
+
406
424
  this.prevCursorItems = newParents;
407
425
  //dDocumentEvent.invokeEvent('GotCursor', focusElement, getCursorEvent, 'All', this.docCtx);
408
426
  }
427
+
409
428
  /**
410
429
  * mousedown-mouseup-click
411
430
  */
412
- mouseClickHandle(evt) {
431
+ private mouseClickHandle(evt: MouseEvent): void {
413
432
  if (this.viewOptions.docMode === DocMode.View) {
414
433
  return;
415
434
  }
416
435
  if (this.startHitInfo && this.endHitInfo && this.startHitInfo.element === this.endHitInfo.element) {
417
- const startElement = this.startHitInfo.render.element;
436
+ const startElement = this.startHitInfo.render.element as LeafElement;
418
437
  const mousedownEvent = new MousedownElementEvent(this.docCtx);
419
438
  mousedownEvent.source = startElement;
420
439
  DocumentEvent.invokeEvent('ElementClick', startElement, mousedownEvent, "All", this.docCtx);
@@ -441,10 +460,11 @@ export class DocumentEvent {
441
460
  }
442
461
  this.clickEvent.next(evt);
443
462
  }
463
+
444
464
  /**
445
465
  * 鼠标双击事件
446
466
  */
447
- mouseDblClickHandle(evt) {
467
+ private mouseDblClickHandle(evt: MouseEvent): void {
448
468
  const docEvent = new MouseElementEvent(this.docCtx);
449
469
  docEvent.globalX = evt.offsetX;
450
470
  docEvent.globalY = evt.offsetY;
@@ -453,8 +473,7 @@ export class DocumentEvent {
453
473
  if ((hitRegion === 'footer' || hitRegion === 'header') && !this.docCtx.document.headerEditState) {
454
474
  this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
455
475
  return;
456
- }
457
- else if (hitRegion === 'body' && this.docCtx.document.headerEditState) {
476
+ } else if (hitRegion === 'body' && this.docCtx.document.headerEditState) {
458
477
  this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
459
478
  return;
460
479
  }
@@ -463,29 +482,28 @@ export class DocumentEvent {
463
482
  docEvent.source = hitInfo.element;
464
483
  docEvent.sourceRender = hitInfo.render;
465
484
  const res = DocumentEvent.invokeEvent('ElementDblClick', hitInfo.element, docEvent, 'All', this.docCtx);
466
- if (res) {
467
- return;
468
- }
485
+ if (res) { return }
469
486
  this.dblClickEvent.next(evt);
470
487
  }
471
488
  }
489
+
472
490
  /**
473
491
  * 获取点击的渲染元素对象
474
- * @param renderObject
475
- * @param parPos
476
- * @param hitPos
477
- * @returns
492
+ * @param renderObject
493
+ * @param parPos
494
+ * @param hitPos
495
+ * @returns
478
496
  */
479
- getHitLeafRender(renderObject, parPos, hitPos) {
497
+ private getHitLeafRender(renderObject: RenderObject, parPos: Position, hitPos: Position): { render: LeafRenderObject, offset: number, absoluteRenderRect: Rect } | null {
480
498
  //处理单元格合并,被合并的单元格当前属于被隐藏状态,不能被选择
481
499
  //if (renderObject.element && renderObject.element.visiable === false || renderObject instanceof FillNullSpaceRenderObject) {
482
500
  if (!ElementUtil.checkAvailHitRender(renderObject)) {
483
501
  return null;
484
502
  }
485
503
  if (!renderObject.rect) {
486
- throw new Error('renderObject.rect is null');
504
+ throw new Error('renderObject.rect is null')
487
505
  }
488
- const renderObjectRect = { x: parPos.x + renderObject.rect.x, y: parPos.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
506
+ const renderObjectRect: Rect = { x: parPos.x + renderObject.rect.x, y: parPos.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
489
507
  if (renderObject instanceof TableRowRenderObject) {
490
508
  return this.getTRowHitLeafRender(renderObject, parPos, hitPos);
491
509
  }
@@ -499,8 +517,7 @@ export class DocumentEvent {
499
517
  absoluteRenderRect: renderObjectRect
500
518
  };
501
519
  }
502
- }
503
- else if (renderObject instanceof BranchRenderObject) {
520
+ } else if (renderObject instanceof BranchRenderObject) {
504
521
  if (CommonUtil.isInsideRectByPosition(renderObjectRect, hitPos)) {
505
522
  for (let i = 0; i < renderObject.length; i++) {
506
523
  const childRender = renderObject.getChild(i);
@@ -512,14 +529,16 @@ export class DocumentEvent {
512
529
  //如果当前范围未击中任何元素,则需要匹配最近的元素
513
530
  return this.getRecentHitRender(renderObject, parPos, hitPos);
514
531
  }
515
- }
516
- else {
532
+ } else {
517
533
  throw new Error('未实现');
518
534
  }
519
535
  return null;
520
536
  }
521
- getTRowHitLeafRender(renderObject, parent, position) {
522
- const rowEle = renderObject.element;
537
+
538
+
539
+
540
+ private getTRowHitLeafRender(renderObject: TableRowRenderObject, parent: Position, position: Position): { render: LeafRenderObject, offset: number, absoluteRenderRect: Rect } | null {
541
+ const rowEle = renderObject.element as TableRowElement;
523
542
  //跨页重复显示的头行,属于不可点击区域
524
543
  //只有表第一页部分可以点击
525
544
  if (rowEle.props.headerRow) {
@@ -527,7 +546,7 @@ export class DocumentEvent {
527
546
  return null;
528
547
  }
529
548
  }
530
- const renderObjectRect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
549
+ const renderObjectRect: Rect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
531
550
  for (let i = 0; i < renderObject.length; i++) {
532
551
  const childRender = renderObject.getChild(i);
533
552
  const res = this.getHitLeafRender(childRender, { x: renderObjectRect.x, y: renderObjectRect.y }, position);
@@ -537,17 +556,19 @@ export class DocumentEvent {
537
556
  }
538
557
  return null;
539
558
  }
559
+
560
+
540
561
  /**
541
562
  * 如果当前范围未击中任何元素,则需要匹配最近的元素
542
- * @param renderObject
543
- * @param parent
544
- * @param position
563
+ * @param renderObject
564
+ * @param parent
565
+ * @param position
545
566
  */
546
- getRecentHitRender(renderObject, parent, position) {
547
- const currentRenderPos = { x: renderObject.rect.x + parent.x, y: renderObject.rect.y + parent.y };
567
+ private getRecentHitRender(renderObject: BranchRenderObject, parent: Position, position: Position): { render: LeafRenderObject, offset: number, absoluteRenderRect: Rect } | null {
568
+ const currentRenderPos: Position = { x: renderObject.rect.x + parent.x, y: renderObject.rect.y + parent.y }
548
569
  let childRenders = ElementUtil.getAvailHitRenderObjects(renderObject, parent);
549
570
  childRenders = childRenders.filter(item => !item.render.disableClick);
550
- let childrenRenderMap = childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistanceToRect(item.rect, position), render: item.render }));
571
+ let childrenRenderMap = childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistanceToRect(item.rect, position), render: item.render }))
551
572
  //rects = rects.concat(childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistance({ x: item.rect.x + item.rect.width, y: item.rect.y }, position), render: item.render })));
552
573
  childrenRenderMap.sort((item1, item2) => item1.distance - item2.distance);
553
574
  for (let i = 0; i < childrenRenderMap.length; i++) {
@@ -560,16 +581,13 @@ export class DocumentEvent {
560
581
  if (res) {
561
582
  return res;
562
583
  }
563
- }
564
- else if (adjacentRender.render instanceof LeafRenderObject) {
584
+ } else if (adjacentRender.render instanceof LeafRenderObject) {
565
585
  let x = 0;
566
586
  if (adjacentRender.rect.x > position.x) {
567
587
  x = 0;
568
- }
569
- else if (adjacentRender.rect.x + adjacentRender.rect.width < position.x) {
588
+ } else if (adjacentRender.rect.x + adjacentRender.rect.width < position.x) {
570
589
  x = adjacentRender.rect.width;
571
- }
572
- else {
590
+ } else {
573
591
  x = position.x - adjacentRender.rect.x;
574
592
  }
575
593
  const offset = ElementUtil.getHitRenderOffset(adjacentRender.render, x);
@@ -582,18 +600,21 @@ export class DocumentEvent {
582
600
  }
583
601
  return null;
584
602
  }
603
+
604
+
605
+
585
606
  /**
586
607
  * 获取点击的doc-page
587
608
  */
588
- getHitDocPage(evt) {
589
- const hitPos = { x: evt.globalX, y: evt.globalY };
609
+ private getHitDocPage(evt: MouseElementEvent): { docRender: DocumentRenderObject, paintAbsoluteRect: Position, hitPagePos: Position, docIndex: number } | null {
610
+ const hitPos: Position = { x: evt.globalX, y: evt.globalY };
590
611
  const docContainer = this.documentPaint.getDocContainer();
591
612
  let { x, y } = docContainer.rect;
592
613
  y -= this.viewOptions.translateY;
593
614
  let i = 0;
594
615
  for (; i < docContainer.length; i++) {
595
- const docRender = docContainer.getChild(i);
596
- const docRenderPos = { x: docRender.rect.x + x, y: docRender.rect.y + y };
616
+ const docRender = docContainer.getChild(i) as DocumentRenderObject;
617
+ const docRenderPos: Position = { x: docRender.rect.x + x, y: docRender.rect.y + y };
597
618
  if (docRenderPos.y + docRender.rect.height > hitPos.y) {
598
619
  break;
599
620
  }
@@ -602,22 +623,23 @@ export class DocumentEvent {
602
623
  }
603
624
  }
604
625
  i = i === docContainer.length ? i - 1 : i;
605
- const hitDoc = docContainer.getChild(i);
626
+ const hitDoc = docContainer.getChild(i) as DocumentRenderObject;
606
627
  const docPos = { x: hitDoc.rect.x + x, y: hitDoc.rect.y + y };
607
- const hitPagePos = { x: hitPos.x - docPos.x, y: hitPos.y - docPos.y };
628
+ const hitPagePos: Position = { x: hitPos.x - docPos.x, y: hitPos.y - docPos.y }
608
629
  return {
609
630
  docRender: hitDoc,
610
631
  paintAbsoluteRect: docPos,
611
632
  docIndex: i,
612
633
  hitPagePos
613
- };
634
+ }
614
635
  }
636
+
615
637
  /**
616
638
  * 触发事件
617
- * @param type
618
- * @param sourceElement
639
+ * @param type
640
+ * @param sourceElement
619
641
  */
620
- static invokeEvent(type, sourceElement, event, eventStage, docCtx) {
642
+ static invokeEvent(type: EventTypes, sourceElement: Element, event: ElementEvent, eventStage: EventStage, docCtx: EditorContext): ElementEvent | null {
621
643
  const parents = ElementUtil.getParentElements(sourceElement);
622
644
  //先执行捕获阶段,在执行冒泡
623
645
  for (let i = parents.length - 1; i > -parents.length; i--) {
@@ -642,21 +664,24 @@ export class DocumentEvent {
642
664
  }
643
665
  return null;
644
666
  }
667
+
668
+
645
669
  /**
646
670
  * 发布当前的点击信息
647
671
  */
648
- pubHitInfo() {
649
- this.hitInfoChanged.next({ startHitInfo: this.startHitInfo, endHitInfo: this.endHitInfo });
672
+ private pubHitInfo(): void {
673
+ this.hitInfoChanged.next({ startHitInfo: this.startHitInfo as HitEventInfo, endHitInfo: this.endHitInfo as HitEventInfo });
650
674
  }
675
+
651
676
  /**
652
677
  * 获取鼠标所在的渲染元素对象
653
- * @param renderObject
654
- * @param parent
655
- * @param position
656
- * @returns
678
+ * @param renderObject
679
+ * @param parent
680
+ * @param position
681
+ * @returns
657
682
  */
658
- getMouseoverRender(renderObject, parent, position) {
659
- const renderObjectRect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
683
+ private getMouseoverRender(renderObject: RenderObject, parent: Position, position: Position): { render: RenderObject, absoluteRenderRect: Rect } | null {
684
+ const renderObjectRect: Rect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
660
685
  if (renderObject instanceof LeafRenderObject) {
661
686
  if (CommonUtil.isInsideRectByPosition(renderObjectRect, position)) {
662
687
  return {
@@ -664,8 +689,7 @@ export class DocumentEvent {
664
689
  absoluteRenderRect: renderObjectRect
665
690
  };
666
691
  }
667
- }
668
- else if (renderObject instanceof BranchRenderObject) {
692
+ } else if (renderObject instanceof BranchRenderObject) {
669
693
  if (CommonUtil.isInsideRectByPosition(renderObjectRect, position)) {
670
694
  //当前为表单元格,但是表格不存在上下padding,
671
695
  //则表格上边框和下边框可能会和内容(paragraph)重叠,
@@ -674,7 +698,7 @@ export class DocumentEvent {
674
698
  return {
675
699
  render: renderObject,
676
700
  absoluteRenderRect: renderObjectRect
677
- };
701
+ }
678
702
  }
679
703
  for (let i = 0; i < renderObject.length; i++) {
680
704
  const childRender = renderObject.getChild(i);
@@ -686,29 +710,29 @@ export class DocumentEvent {
686
710
  return {
687
711
  render: renderObject,
688
712
  absoluteRenderRect: renderObjectRect
689
- };
713
+ }
690
714
  }
691
- }
692
- else {
715
+ } else {
693
716
  throw new Error('未实现');
694
717
  }
695
718
  return null;
696
719
  }
720
+
697
721
  /**
698
722
  * 缩放元素
699
723
  */
700
- resizeRender(e) {
701
- if (this.edgeRenderInfo?.renderElement['resizeable']) {
724
+ private resizeRender(e: MouseElementEvent): void {
725
+ if ((<any>this.edgeRenderInfo?.renderElement)['resizeable']) {
702
726
  this.resizeElement(e);
703
- }
704
- else if (this.edgeRenderInfo?.renderElement instanceof TableCellElement) {
727
+ } else if (this.edgeRenderInfo?.renderElement instanceof TableCellElement) {
705
728
  this.resizeTableCell();
706
729
  }
707
730
  }
731
+
708
732
  /**
709
733
  * 缩放表格
710
734
  */
711
- resizeTableCell() {
735
+ private resizeTableCell(): void {
712
736
  if (!this.edgeRenderInfo || !this.edgeRenderInfo.mousedownPos) {
713
737
  return;
714
738
  }
@@ -718,9 +742,9 @@ export class DocumentEvent {
718
742
  const moveDistanceX = this.currentPos.x - mousedownPos.x;
719
743
  const moveDistanceY = this.currentPos.y - mousedownPos.y;
720
744
  const row = cellElement.parent;
721
- const table = row?.parent;
745
+ const table = row?.parent as TableElement;
722
746
  if (!row || !table) {
723
- throw new Error('row | table is null');
747
+ throw new Error('row | table is null')
724
748
  }
725
749
  const cellIndex = row.getChildIndex(cellElement);
726
750
  let cellWidth = table.getCellWidth(cellIndex);
@@ -736,8 +760,7 @@ export class DocumentEvent {
736
760
  resizeColWidth = table.getCellWidth(resizeColIndex);
737
761
  resizeColWidth += moveDistanceX;
738
762
  cellWidth -= moveDistanceX;
739
- }
740
- else if (border === 'right') {
763
+ } else if (border === 'right') {
741
764
  resizeColIndex = cellIndex + 1;
742
765
  //移动最后一列时,右侧没有列了,resizeColWidth的值为-1
743
766
  resizeColWidth = table.getCellWidth(resizeColIndex);
@@ -753,18 +776,17 @@ export class DocumentEvent {
753
776
  table.setCellWidth(cellIndex, cellWidth);
754
777
  this.edgeRenderInfo.mousedownPos = this.currentPos;
755
778
  table.pubOnChange('self');
756
- }
757
- else if (['bottom', 'top'].includes(border)) {
779
+ } else if (['bottom', 'top'].includes(border)) {
758
780
  let rowIndex = row.getIndex();
759
781
  if (rowIndex === 0 && border === 'top') {
760
782
  return;
761
783
  }
762
784
  //按照移动底边计算
763
785
  rowIndex = border === 'top' ? rowIndex - 1 : rowIndex;
764
- const resizeRowEle = table.getChild(rowIndex);
765
- let resizeRowRender = resizeRowEle.measureRender;
786
+ const resizeRowEle = table.getChild(rowIndex) as TableRowElement;
787
+ let resizeRowRender = resizeRowEle.measureRender as TableRowRenderObject;
766
788
  if (resizeRowRender.element !== resizeRowEle) {
767
- console.error('缩放表格行高度出现错误,绘制元素和表格对象不对应');
789
+ console.error('缩放表格行高度出现错误,绘制元素和表格对象不对应')
768
790
  return;
769
791
  }
770
792
  const minHeight = resizeRowEle.props.minHeight ?? 0;
@@ -777,8 +799,7 @@ export class DocumentEvent {
777
799
  let resizeRowMinHeight = 0;
778
800
  if (minHeight <= 0) {
779
801
  resizeRowMinHeight = resizeRowRenderContentHeight + moveDistanceY;
780
- }
781
- else {
802
+ } else {
782
803
  resizeRowMinHeight = minHeight + moveDistanceY;
783
804
  }
784
805
  //缩放的高度小于内容高度,则重置行最小高度
@@ -791,36 +812,38 @@ export class DocumentEvent {
791
812
  table.pubOnChange('self');
792
813
  }
793
814
  }
794
- getResizeTableCell() {
815
+
816
+ private getResizeTableCell(): TableCellElement {
795
817
  if (!this.edgeRenderInfo) {
796
- throw new Error('edgeRenderInfo is null');
818
+ throw new Error('edgeRenderInfo is null')
797
819
  }
798
- const cellElement = this.edgeRenderInfo.renderElement;
820
+ const cellElement = this.edgeRenderInfo.renderElement as TableCellElement;
799
821
  const row = cellElement.parent;
800
822
  if (!row) {
801
- throw new Error('row is null');
823
+ throw new Error('row is null')
802
824
  }
803
- const table = row.parent;
825
+ const table = row.parent as TableElement;
804
826
  const cellIndex = row.getChildIndex(cellElement);
805
827
  const border = this.edgeRenderInfo.border;
806
828
  if (cellElement.props.hMerge === 'restart' || border === 'right') {
807
829
  for (let i = cellIndex + 1; i < table.getColsCount(); i++) {
808
- const cell = row.getChild(i);
830
+ const cell = row.getChild(i) as TableCellElement;
809
831
  if (cell.props.hMerge !== 'continue') {
810
- return row.getChild(i - 1);
832
+ return row.getChild(i - 1) as TableCellElement;
811
833
  }
812
834
  }
813
835
  }
814
836
  return cellElement;
815
837
  }
838
+
816
839
  /**
817
840
  * 调整元素大小
818
841
  */
819
- resizeElement(e) {
842
+ private resizeElement(e: MouseElementEvent): void {
820
843
  if (!this.edgeRenderInfo || !this.edgeRenderInfo.mousedownPos) {
821
844
  return;
822
845
  }
823
- const imgElement = this.edgeRenderInfo.renderElement;
846
+ const imgElement = <unknown>this.edgeRenderInfo.renderElement as { props: { width: number, height: number } };
824
847
  const border = this.edgeRenderInfo.border;
825
848
  const mousedownPos = this.edgeRenderInfo.mousedownPos;
826
849
  let moveDistanceX = this.currentPos.x - mousedownPos.x;
@@ -838,8 +861,7 @@ export class DocumentEvent {
838
861
  if (Math.abs(moveDistanceX) > Math.abs(moveDistanceY)) {
839
862
  scale = moveDistanceX / imgElement.props.width;
840
863
  moveDistanceY = Math.floor(scale * imgElement.props.height);
841
- }
842
- else {
864
+ } else {
843
865
  scale = moveDistanceY / imgElement.props.height;
844
866
  moveDistanceX = Math.floor(scale * imgElement.props.width);
845
867
  }
@@ -854,11 +876,13 @@ export class DocumentEvent {
854
876
  }
855
877
  this.edgeRenderInfo.mousedownPos = this.currentPos;
856
878
  }
879
+
857
880
  }
881
+
858
882
  /**
859
883
  * 选中当前全部 ctrl+A
860
884
  */
861
- selectAll() {
885
+ selectAll(): void {
862
886
  const { startControl } = this.selectionState;
863
887
  const regionTarget = ElementUtil.getElementRegionTarget(startControl);
864
888
  if (!startControl || !regionTarget) {
@@ -867,7 +891,7 @@ export class DocumentEvent {
867
891
  const firstLeaf = ElementUtil.getFirstLeafElement(regionTarget.target);
868
892
  const lastLeaf = ElementUtil.getLastLeafElement(regionTarget.target);
869
893
  if (!firstLeaf || !lastLeaf) {
870
- throw new Error('firstLeaf or lastLeaf is null');
894
+ throw new Error('firstLeaf or lastLeaf is null')
871
895
  }
872
896
  this.selectionState.clear();
873
897
  const newSelectionRange = new SelectionRange();
@@ -876,24 +900,28 @@ export class DocumentEvent {
876
900
  this.selectionState.addRange(newSelectionRange);
877
901
  //const doc=
878
902
  }
903
+
904
+
879
905
  /**
880
906
  * 移动光标到行首
881
907
  */
882
- moveCursorToLineStart() {
908
+ moveCursorToLineStart(): void {
883
909
  this.moveCursorToHomeOrEnd();
884
910
  }
911
+
885
912
  /**
886
913
  * 移动光标到行尾
887
914
  */
888
- moveCursorToLineEnd() {
915
+ moveCursorToLineEnd(): void {
889
916
  this.moveCursorToHomeOrEnd(false);
890
917
  }
918
+
891
919
  /**
892
920
  * 处理移动光标到行尾或行首
893
- * @param home
894
- * @returns
921
+ * @param home
922
+ * @returns
895
923
  */
896
- moveCursorToHomeOrEnd(home = true) {
924
+ private moveCursorToHomeOrEnd(home: boolean = true): void {
897
925
  const { startControl } = this.selectionState;
898
926
  if (!startControl || !this.docCtx.cursorRect) {
899
927
  return;
@@ -907,8 +935,8 @@ export class DocumentEvent {
907
935
  if (!hitInfo) {
908
936
  return;
909
937
  }
910
- const paraRender = ElementUtil.getParentRender(hitInfo.render, ParagraphLineRectRenderObject);
911
- const linePosRect = ElementUtil.getRenderAbsolutePaintRect(paraRender);
938
+ const paraRender = ElementUtil.getParentRender(hitInfo.render, ParagraphLineRectRenderObject) as ParagraphLineRectRenderObject
939
+ const linePosRect = ElementUtil.getRenderAbsolutePaintRect(paraRender)
912
940
  docEvent.globalX = linePosRect.x + (home ? 0 : linePosRect.width);
913
941
  docEvent.globalY = linePosRect.y + linePosRect.height / 2;
914
942
  this.mousedownPos = { x: docEvent.globalX, y: docEvent.globalY };
@@ -916,10 +944,12 @@ export class DocumentEvent {
916
944
  this.ismousedown = false;
917
945
  this.edgeRenderInfo = null;
918
946
  }
947
+
948
+
919
949
  /**
920
950
  * 向左移动光标
921
951
  */
922
- moveCursorToLeft() {
952
+ moveCursorToLeft(): void {
923
953
  const { startControl, startOffset } = this.selectionState;
924
954
  if (startOffset === 0) {
925
955
  const oldRegion = ElementUtil.getElementRegion(startControl);
@@ -932,20 +962,19 @@ export class DocumentEvent {
932
962
  this.selectionState.resetRange(prevEle, -1);
933
963
  return;
934
964
  }
935
- }
936
- else {
965
+ } else {
937
966
  if (startControl instanceof TextGroupElement) {
938
967
  this.selectionState.resetRange(startControl, startOffset - 1);
939
- }
940
- else {
968
+ } else {
941
969
  this.selectionState.resetRange(startControl, 0);
942
970
  }
943
971
  }
944
972
  }
973
+
945
974
  /**
946
975
  * 向右移动光标
947
976
  */
948
- moveCursorToRight() {
977
+ moveCursorToRight(): void {
949
978
  const { startControl, startOffset } = this.selectionState;
950
979
  if (this.isLeafEleEndOffset(startControl, startOffset)) {
951
980
  const oldRegion = ElementUtil.getElementRegion(startControl);
@@ -958,20 +987,19 @@ export class DocumentEvent {
958
987
  this.selectionState.resetRange(nextEle, 0);
959
988
  return;
960
989
  }
961
- }
962
- else {
990
+ } else {
963
991
  if (startControl instanceof TextGroupElement) {
964
992
  this.selectionState.resetRange(startControl, startOffset + 1);
965
- }
966
- else {
993
+ } else {
967
994
  this.selectionState.resetRange(startControl, 1);
968
995
  }
969
996
  }
970
997
  }
998
+
971
999
  /**
972
1000
  * 向上移动光标
973
1001
  */
974
- moveCursorToUpOrDown(up = true) {
1002
+ moveCursorToUpOrDown(up: boolean = true): void {
975
1003
  if (!this.selectionState.cursorPos) {
976
1004
  return;
977
1005
  }
@@ -996,39 +1024,40 @@ export class DocumentEvent {
996
1024
  }
997
1025
  }
998
1026
  }
1027
+
1028
+
999
1029
  /**
1000
1030
  * 当前偏移量是否处于当前元素的末尾
1001
- * @param ele
1002
- * @param offset
1003
- * @returns
1031
+ * @param ele
1032
+ * @param offset
1033
+ * @returns
1004
1034
  */
1005
- isLeafEleEndOffset(ele, offset) {
1035
+ private isLeafEleEndOffset(ele: LeafElement, offset: number): boolean {
1006
1036
  if (ele instanceof TextGroupElement) {
1007
1037
  return ele.textMeasures.length === offset;
1008
- }
1009
- else {
1038
+ } else {
1010
1039
  if (ele instanceof PSymbolElement) {
1011
1040
  return true;
1012
- }
1013
- else {
1041
+ } else {
1014
1042
  return offset === 1;
1015
1043
  }
1016
1044
  }
1017
1045
  }
1046
+
1018
1047
  /**
1019
1048
  * 获取点击的文档区域
1020
- * @param docRender
1021
- * @param pos
1022
- * @returns
1049
+ * @param docRender
1050
+ * @param pos
1051
+ * @returns
1023
1052
  */
1024
- getHitRegion(docEvent) {
1053
+ getHitRegion(docEvent: MouseElementEvent): HitRegion | null {
1025
1054
  const hitDocInfo = this.getHitDocPage(docEvent);
1026
1055
  if (!hitDocInfo) {
1027
1056
  return null;
1028
1057
  }
1029
1058
  const { docRender, hitPagePos } = hitDocInfo;
1030
- const headerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentHeaderRenderObject);
1031
- const footerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentFooterRenderObject);
1059
+ const headerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentHeaderRenderObject) as DocumentHeaderRenderObject;
1060
+ const footerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentFooterRenderObject) as DocumentFooterRenderObject;
1032
1061
  if (!headerRender) {
1033
1062
  throw new Error('header is null');
1034
1063
  }
@@ -1039,16 +1068,15 @@ export class DocumentEvent {
1039
1068
  const footerLine = footerRender.rect.y;
1040
1069
  if (hitPagePos.y <= headerLine) {
1041
1070
  return 'header';
1042
- }
1043
- else if (hitPagePos.y <= footerLine) {
1071
+ } else if (hitPagePos.y <= footerLine) {
1044
1072
  return 'body';
1045
- }
1046
- else if (hitPagePos.y > footerLine && hitPagePos.y < docRender.rect.height) {
1073
+ } else if (hitPagePos.y > footerLine && hitPagePos.y < docRender.rect.height) {
1047
1074
  return 'footer';
1048
- }
1049
- else {
1075
+ } else {
1050
1076
  return null;
1051
1077
  }
1052
1078
  }
1079
+
1053
1080
  }
1054
- //# sourceMappingURL=document-event.js.map
1081
+
1082
+