@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,14 +1,17 @@
1
- import { BranchElement, LeafElement } from "./element-define";
1
+ import { BranchElement, Element, LeafElement, SelectionContentRange } from "./element-define";
2
2
  import { ElementUtil } from "./element-util";
3
3
  import { TableCellElement } from "./impl/table/table-cell-impl";
4
4
  import { TableElement } from "./impl/table/table-impl";
5
5
  import { TableRowElement } from "./impl/table/table-row-impl";
6
- import { SelectionRange } from './document-selection';
6
+ import { SelectionRange, SelectionState } from './document-selection'
7
7
  import { TextGroupElement } from "./impl/text/text-impl";
8
+
9
+
8
10
  export class RangeUtil {
9
- static getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl) {
11
+
12
+ static getSelctionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange {
10
13
  if (ancestorCommonControl instanceof TableElement || ancestorCommonControl instanceof TableRowElement) {
11
- const tbElement = ancestorCommonControl instanceof TableElement ? ancestorCommonControl : ancestorCommonControl.parent;
14
+ const tbElement = ancestorCommonControl instanceof TableElement ? ancestorCommonControl : ancestorCommonControl.parent as TableElement;
12
15
  return this.getTableSelectionRange(startControl, startOffset, endControl, endOffset, tbElement);
13
16
  }
14
17
  if (startControl === endControl && startControl.parent === ancestorCommonControl) {
@@ -21,34 +24,36 @@ export class RangeUtil {
21
24
  const commonRange = this.getChildTreeData(ancestorCommonControl, startIndex + 1, endIndex);
22
25
  if (this.rangeEquals(startRange, endRange)) {
23
26
  commonRange.selectedChildren.unshift(startRange);
24
- }
25
- else {
27
+ } else {
26
28
  commonRange.selectedChildren.unshift(startRange);
27
29
  commonRange.selectedChildren.push(endRange);
28
30
  }
29
31
  this.setRangeFullSelected(commonRange);
30
32
  return commonRange;
31
33
  }
32
- static getCollapsedRange(startControl, startOffset, endOffset, ancestorCommonControl) {
34
+
35
+ static getCollapsedRange(startControl: LeafElement, startOffset: number, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange {
33
36
  const range = {
34
37
  target: ancestorCommonControl,
35
38
  isFullSelected: false,
36
39
  startOffset: startControl.getIndex(),
37
40
  endOffset: startControl.getIndex() + 1,
38
41
  selectedChildren: [this.getChildTreeData(startControl, startOffset, endOffset)]
39
- };
42
+ }
40
43
  this.setRangeFullSelected(range);
41
44
  return range;
45
+
42
46
  }
47
+
43
48
  /**
44
49
  * 获取表格选区的内容
45
- * @param startControl
46
- * @param startOffset
47
- * @param endControl
48
- * @param endOffset
49
- * @param tb
50
+ * @param startControl
51
+ * @param startOffset
52
+ * @param endControl
53
+ * @param endOffset
54
+ * @param tb
50
55
  */
51
- static getTableSelectionRange(startControl, startOffset, endControl, endOffset, tb) {
56
+ static getTableSelectionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, tb: TableElement): SelectionContentRange {
52
57
  const startCell = ElementUtil.getParentByType(startControl, TableCellElement);
53
58
  const endCell = ElementUtil.getParentByType(endControl, TableCellElement);
54
59
  if (startCell && endCell && startCell.parent.parent === tb && endCell.parent.parent === tb) {
@@ -62,19 +67,19 @@ export class RangeUtil {
62
67
  if (startRowIndex > endRowIndex) {
63
68
  [startRowIndex, endRowIndex] = [endRowIndex, startRowIndex];
64
69
  }
65
- const region = { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex }; //this.getTableRectSelectedRegion(tb, { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex });
70
+ const region = { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex };//this.getTableRectSelectedRegion(tb, { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex });
66
71
  startRowIndex = region.startRow;
67
72
  endRowIndex = region.endRow;
68
73
  startColIndex = region.startCol;
69
74
  endColIndex = region.endCol;
70
- const rowRanges = [];
75
+ const rowRanges: Array<SelectionContentRange> = [];
71
76
  for (let i = startRowIndex; i <= endRowIndex; i++) {
72
- const cellRanges = [];
73
- const row = tb.getChild(i);
77
+ const cellRanges: Array<SelectionContentRange> = [];
78
+ const row = tb.getChild(i) as TableRowElement;
74
79
  for (let j = startColIndex; j <= endColIndex; j++) {
75
- const cell = row.getChild(j);
76
- const cellFirstLeafElement = ElementUtil.getFirstLeafElement(cell);
77
- const cellLastLeafElement = ElementUtil.getLastLeafElement(cell);
80
+ const cell = row.getChild(j) as TableCellElement;
81
+ const cellFirstLeafElement = ElementUtil.getFirstLeafElement(cell) as LeafElement;
82
+ const cellLastLeafElement = ElementUtil.getLastLeafElement(cell) as LeafElement;
78
83
  if (!cellFirstLeafElement && !cell.isNotBeMergedCell()) {
79
84
  cellRanges.push({
80
85
  target: cell,
@@ -83,13 +88,12 @@ export class RangeUtil {
83
88
  endOffset: 1,
84
89
  selectedChildren: []
85
90
  });
86
- }
87
- else {
91
+ } else {
88
92
  const cellRange = this.getSelctionRange(cellFirstLeafElement, 0, cellLastLeafElement, 1, cell);
89
93
  cellRanges.push(cellRange);
90
94
  }
91
95
  }
92
- const rowRange = {
96
+ const rowRange: SelectionContentRange = {
93
97
  target: row,
94
98
  isFullSelected: false,
95
99
  startOffset: startColIndex,
@@ -99,7 +103,7 @@ export class RangeUtil {
99
103
  rowRange.isFullSelected = startColIndex === 0 && endColIndex === row.length - 1;
100
104
  rowRanges.push(rowRange);
101
105
  }
102
- const tableRange = {
106
+ const tableRange: SelectionContentRange = {
103
107
  target: tb,
104
108
  isFullSelected: false,
105
109
  startOffset: startRowIndex,
@@ -108,12 +112,14 @@ export class RangeUtil {
108
112
  };
109
113
  tableRange.isFullSelected = startRowIndex === 0 && endRowIndex === tb.length - 1 && tableRange.selectedChildren.every(item => item.isFullSelected);
110
114
  return tableRange;
111
- }
112
- else {
115
+ } else {
113
116
  throw new Error('当前单元格和表格不对应');
114
117
  }
115
118
  }
116
- static getStartForbackTreeData(control, ancestorCommonControl, childData, offset) {
119
+
120
+
121
+
122
+ private static getStartForbackTreeData(control: Element, ancestorCommonControl: BranchElement, childData: SelectionContentRange | null, offset: number): SelectionContentRange {
117
123
  if (!control) {
118
124
  debugger;
119
125
  }
@@ -122,15 +128,13 @@ export class RangeUtil {
122
128
  const range = this.getChildTreeData(parent, parent.getChildIndex(control) + 1, -1);
123
129
  if (childData) {
124
130
  range.selectedChildren.unshift(childData);
125
- }
126
- else {
131
+ } else {
127
132
  range.selectedChildren.unshift(this.getChildTreeData(control, offset, -1));
128
133
  }
129
134
  this.setRangeFullSelected(range);
130
135
  return this.getStartForbackTreeData(parent, ancestorCommonControl, range, -99);
131
- }
132
- else {
133
- const ancestorRange = {
136
+ } else {
137
+ const ancestorRange: SelectionContentRange = {
134
138
  target: ancestorCommonControl,
135
139
  startOffset: -1,
136
140
  endOffset: -1,
@@ -145,21 +149,22 @@ export class RangeUtil {
145
149
  return ancestorRange;
146
150
  }
147
151
  }
148
- static getEndForwardTreeData(control, ancestorCommonControl, childData, offset) {
152
+
153
+
154
+
155
+ private static getEndForwardTreeData(control: Element, ancestorCommonControl: BranchElement, childData: SelectionContentRange | null, offset: number): SelectionContentRange {
149
156
  const parent = control.parent;
150
157
  if (parent !== ancestorCommonControl) {
151
158
  const range = this.getChildTreeData(parent, 0, parent.getChildIndex(control));
152
159
  if (childData) {
153
160
  range.selectedChildren.push(childData);
154
- }
155
- else {
161
+ } else {
156
162
  range.selectedChildren.push(this.getChildTreeData(control, 0, offset));
157
163
  }
158
164
  this.setRangeFullSelected(range);
159
165
  return this.getEndForwardTreeData(parent, ancestorCommonControl, range, -99);
160
- }
161
- else {
162
- const ancestorRange = {
166
+ } else {
167
+ const ancestorRange: SelectionContentRange = {
163
168
  target: ancestorCommonControl,
164
169
  startOffset: 0,
165
170
  endOffset: 0,
@@ -167,15 +172,16 @@ export class RangeUtil {
167
172
  selectedChildren: []
168
173
  };
169
174
  if (!childData) {
170
- childData = this.getChildTreeData(control, 0, offset);
175
+ childData = this.getChildTreeData(control, 0, offset)
171
176
  }
172
177
  ancestorRange.selectedChildren.push(childData);
173
178
  this.setRangeFullSelected(ancestorRange);
174
179
  return ancestorRange;
175
180
  }
176
181
  }
177
- static getChildTreeData(control, start, end) {
178
- const range = {
182
+
183
+ private static getChildTreeData(control: Element, start: number, end: number): SelectionContentRange {
184
+ const range: SelectionContentRange = {
179
185
  target: control,
180
186
  isFullSelected: false,
181
187
  startOffset: start,
@@ -185,12 +191,11 @@ export class RangeUtil {
185
191
  if (control instanceof LeafElement) {
186
192
  if (control instanceof TextGroupElement) {
187
193
  range.endOffset = end === -1 ? control.text.length : end;
188
- }
189
- else {
194
+ } else {
190
195
  range.endOffset = end === -1 ? 1 : end;
191
196
  }
192
- }
193
- else if (control instanceof BranchElement) {
197
+
198
+ } else if (control instanceof BranchElement) {
194
199
  end = end === -1 ? control.length : end;
195
200
  for (let i = start; i < end; i++) {
196
201
  const child = control.getChild(i);
@@ -200,17 +205,16 @@ export class RangeUtil {
200
205
  this.setRangeFullSelected(range);
201
206
  return range;
202
207
  }
203
- static setRangeFullSelected(selectionRange) {
208
+
209
+ private static setRangeFullSelected(selectionRange: SelectionContentRange): void {
204
210
  if (selectionRange.target instanceof LeafElement) {
205
211
  const { startOffset, endOffset } = selectionRange;
206
212
  if (selectionRange.target instanceof TextGroupElement) {
207
- selectionRange.isFullSelected = startOffset === 0 && endOffset === selectionRange.target.text.length;
208
- }
209
- else {
213
+ selectionRange.isFullSelected = startOffset === 0 && endOffset === selectionRange.target.text.length
214
+ } else {
210
215
  selectionRange.isFullSelected = startOffset === 0 && endOffset === 1;
211
216
  }
212
- }
213
- else if (selectionRange.target instanceof BranchElement) {
217
+ } else if (selectionRange.target instanceof BranchElement) {
214
218
  const parent = selectionRange.target;
215
219
  const selectedChildren = selectionRange.selectedChildren;
216
220
  //被合并的table-cell,内容为empty
@@ -231,21 +235,24 @@ export class RangeUtil {
231
235
  selectionRange.isFullSelected = firstItemIndex === 0 && firstItem.isFullSelected && lastItemIndex === parent.length - 1 && lastItem.isFullSelected;
232
236
  }
233
237
  }
234
- static rangeEquals(selRange1, selRange2) {
238
+
239
+ static rangeEquals(selRange1: SelectionContentRange, selRange2: SelectionContentRange): boolean {
235
240
  return selRange1.target === selRange2.target && selRange1.startOffset === selRange2.startOffset && selRange1.endOffset === selRange2.endOffset;
236
241
  }
242
+
243
+
237
244
  /**
238
245
  * 根据选区范围更正选区内容状态
239
- * @param selectedRange
240
- * @param selectionState
246
+ * @param selectedRange
247
+ * @param selectionState
241
248
  */
242
- static fixSelectionStateByRange(selectionState) {
249
+ static fixSelectionStateByRange(selectionState: SelectionState): boolean {
243
250
  const { startControl, startOffset, endControl, endOffset, selectedRange } = selectionState;
244
251
  if (!selectedRange || !startControl) {
245
252
  return false;
246
253
  }
247
- const startRange = this.getStartRangeTarget(selectedRange);
248
- const endRange = this.getEndRangeTarget(selectedRange);
254
+ const startRange = this.getStartRangeTarget(selectedRange) as SelectionContentRange;
255
+ const endRange = this.getEndRangeTarget(selectedRange) as SelectionContentRange;
249
256
  if (startRange.target !== startControl || startRange.startOffset !== startOffset || endRange.target !== endControl || endRange.endOffset !== endOffset) {
250
257
  selectionState.clear();
251
258
  const ssRange = new SelectionRange();
@@ -256,11 +263,11 @@ export class RangeUtil {
256
263
  }
257
264
  return false;
258
265
  }
259
- static getStartRangeTarget(parentRange) {
266
+
267
+ static getStartRangeTarget(parentRange: SelectionContentRange): SelectionContentRange | null {
260
268
  if (parentRange.target instanceof LeafElement) {
261
269
  return parentRange;
262
- }
263
- else {
270
+ } else {
264
271
  for (let i = 0; i < parentRange.selectedChildren.length; i++) {
265
272
  const res = this.getStartRangeTarget(parentRange.selectedChildren[i]);
266
273
  if (res) {
@@ -270,11 +277,11 @@ export class RangeUtil {
270
277
  }
271
278
  return null;
272
279
  }
273
- static getEndRangeTarget(parentRange) {
280
+
281
+ static getEndRangeTarget(parentRange: SelectionContentRange): SelectionContentRange | null {
274
282
  if (parentRange.target instanceof LeafElement) {
275
283
  return parentRange;
276
- }
277
- else {
284
+ } else {
278
285
  for (let i = parentRange.selectedChildren.length - 1; i >= 0; i--) {
279
286
  const res = this.getEndRangeTarget(parentRange.selectedChildren[i]);
280
287
  if (res) {
@@ -284,22 +291,24 @@ export class RangeUtil {
284
291
  }
285
292
  return null;
286
293
  }
294
+
287
295
  /**
288
296
  * 循环递归执行选区对象方法
289
- * @param range
290
- * @param handler
297
+ * @param range
298
+ * @param handler
291
299
  */
292
- static recursionTraversalRangeHandler(range, handler) {
300
+ static recursionTraversalRangeHandler(range: SelectionContentRange, handler: (range: SelectionContentRange) => void): void {
293
301
  handler(range);
294
302
  for (let i = 0; i < range.selectedChildren.length; i++) {
295
303
  this.recursionTraversalRangeHandler(range.selectedChildren[i], handler);
296
304
  }
297
305
  }
306
+
298
307
  /**
299
308
  * 判断元素是否被完全选中
300
- * @param range
309
+ * @param range
301
310
  */
302
- static checkElementFullInRange(range, ele) {
311
+ static checkElementFullInRange(range: SelectionContentRange, ele: Element): boolean {
303
312
  let res = false;
304
313
  this.recursionTraversalRangeHandler(range, (childRange) => {
305
314
  if (childRange.target === ele && childRange.isFullSelected) {
@@ -308,5 +317,5 @@ export class RangeUtil {
308
317
  });
309
318
  return res;
310
319
  }
311
- }
312
- //# sourceMappingURL=range-util.js.map
320
+
321
+ }