@hailin-zheng/editor-core 1.0.9 → 1.0.13

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 (236) hide show
  1. package/lib/doc-ruler.d.ts +51 -0
  2. package/{src/med_editor/doc-ruler.ts → lib/doc-ruler.js} +73 -100
  3. package/lib/doc-ruler.js.map +1 -0
  4. package/lib/framework/common-util.d.ts +63 -0
  5. package/lib/framework/common-util.js +178 -0
  6. package/lib/framework/common-util.js.map +1 -0
  7. package/lib/framework/document-change.d.ts +265 -0
  8. package/{src/med_editor/framework/document-change.ts → lib/framework/document-change.js} +257 -306
  9. package/lib/framework/document-change.js.map +1 -0
  10. package/lib/framework/document-combine.d.ts +24 -0
  11. package/{src/med_editor/framework/document-combine.ts → lib/framework/document-combine.js} +11 -15
  12. package/lib/framework/document-combine.js.map +1 -0
  13. package/lib/framework/document-comment.d.ts +46 -0
  14. package/{src/med_editor/framework/document-comment.ts → lib/framework/document-comment.js} +37 -52
  15. package/lib/framework/document-comment.js.map +1 -0
  16. package/lib/framework/document-context.d.ts +149 -0
  17. package/{src/med_editor/framework/document-context.ts → lib/framework/document-context.js} +101 -181
  18. package/lib/framework/document-context.js.map +1 -0
  19. package/lib/framework/document-eval-func.d.ts +18 -0
  20. package/{src/med_editor/framework/document-eval-func.ts → lib/framework/document-eval-func.js} +11 -16
  21. package/lib/framework/document-eval-func.js.map +1 -0
  22. package/lib/framework/document-event.d.ts +213 -0
  23. package/{src/med_editor/framework/document-event.ts → lib/framework/document-event.js} +216 -244
  24. package/lib/framework/document-event.js.map +1 -0
  25. package/lib/framework/document-history.d.ts +26 -0
  26. package/{src/med_editor/framework/document-history.ts → lib/framework/document-history.js} +14 -25
  27. package/lib/framework/document-history.js.map +1 -0
  28. package/lib/framework/document-images-loader.d.ts +16 -0
  29. package/{src/med_editor/framework/document-images-loader.ts → lib/framework/document-images-loader.js} +17 -25
  30. package/lib/framework/document-images-loader.js.map +1 -0
  31. package/lib/framework/document-input-cursor.d.ts +78 -0
  32. package/{src/med_editor/framework/document-input-cursor.ts → lib/framework/document-input-cursor.js} +71 -76
  33. package/lib/framework/document-input-cursor.js.map +1 -0
  34. package/lib/framework/document-paint.d.ts +34 -0
  35. package/{src/med_editor/framework/document-paint.ts → lib/framework/document-paint.js} +28 -35
  36. package/lib/framework/document-paint.js.map +1 -0
  37. package/lib/framework/document-print-offscreen.d.ts +38 -0
  38. package/{src/med_editor/framework/document-print-offscreen.ts → lib/framework/document-print-offscreen.js} +19 -25
  39. package/lib/framework/document-print-offscreen.js.map +1 -0
  40. package/lib/framework/document-print.d.ts +60 -0
  41. package/{src/med_editor/framework/document-print.ts → lib/framework/document-print.js} +41 -57
  42. package/lib/framework/document-print.js.map +1 -0
  43. package/lib/framework/document-segmenter.d.ts +2 -0
  44. package/lib/framework/document-segmenter.js +106 -0
  45. package/lib/framework/document-segmenter.js.map +1 -0
  46. package/lib/framework/document-selection.d.ts +89 -0
  47. package/{src/med_editor/framework/document-selection.ts → lib/framework/document-selection.js} +84 -115
  48. package/lib/framework/document-selection.js.map +1 -0
  49. package/lib/framework/document-template.d.ts +4 -0
  50. package/{src/med_editor/framework/document-template.ts → lib/framework/document-template.js} +3 -3
  51. package/lib/framework/document-template.js.map +1 -0
  52. package/lib/framework/document-textline-mode.d.ts +7 -0
  53. package/lib/framework/document-textline-mode.js +30 -0
  54. package/lib/framework/document-textline-mode.js.map +1 -0
  55. package/lib/framework/element-define.d.ts +319 -0
  56. package/{src/med_editor/framework/element-define.ts → lib/framework/element-define.js} +206 -301
  57. package/lib/framework/element-define.js.map +1 -0
  58. package/lib/framework/element-event-define.d.ts +98 -0
  59. package/lib/framework/element-event-define.js +108 -0
  60. package/lib/framework/element-event-define.js.map +1 -0
  61. package/lib/framework/element-measure.d.ts +97 -0
  62. package/{src/med_editor/framework/element-measure.ts → lib/framework/element-measure.js} +121 -143
  63. package/lib/framework/element-measure.js.map +1 -0
  64. package/lib/framework/element-paint.d.ts +42 -0
  65. package/{src/med_editor/framework/element-paint.ts → lib/framework/element-paint.js} +37 -43
  66. package/lib/framework/element-paint.js.map +1 -0
  67. package/lib/framework/element-props.d.ts +301 -0
  68. package/{src/med_editor/framework/element-props.ts → lib/framework/element-props.js} +202 -331
  69. package/lib/framework/element-props.js.map +1 -0
  70. package/lib/framework/element-reader.d.ts +19 -0
  71. package/{src/med_editor/framework/element-reader.ts → lib/framework/element-reader.js} +30 -38
  72. package/lib/framework/element-reader.js.map +1 -0
  73. package/lib/framework/element-render-cut.d.ts +55 -0
  74. package/{src/med_editor/framework/element-render-cut.ts → lib/framework/element-render-cut.js} +106 -113
  75. package/lib/framework/element-render-cut.js.map +1 -0
  76. package/lib/framework/element-serialize.d.ts +30 -0
  77. package/{src/med_editor/framework/element-serialize.ts → lib/framework/element-serialize.js} +24 -37
  78. package/lib/framework/element-serialize.js.map +1 -0
  79. package/lib/framework/element-util.d.ts +369 -0
  80. package/{src/med_editor/framework/element-util.ts → lib/framework/element-util.js} +216 -317
  81. package/lib/framework/element-util.js.map +1 -0
  82. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
  83. package/{src/med_editor/framework/impl/checkbox/checkbox-impl.ts → lib/framework/impl/checkbox/checkbox-impl.js} +18 -25
  84. package/lib/framework/impl/checkbox/checkbox-impl.js.map +1 -0
  85. package/lib/framework/impl/comments/comment-content-impl.d.ts +40 -0
  86. package/{src/med_editor/framework/impl/comments/comment-content-impl.ts → lib/framework/impl/comments/comment-content-impl.js} +31 -45
  87. package/lib/framework/impl/comments/comment-content-impl.js.map +1 -0
  88. package/lib/framework/impl/comments/comment-element-impl.d.ts +21 -0
  89. package/{src/med_editor/framework/impl/comments/comment-element-impl.ts → lib/framework/impl/comments/comment-element-impl.js} +18 -21
  90. package/lib/framework/impl/comments/comment-element-impl.js.map +1 -0
  91. package/lib/framework/impl/comments/comments-container-impl.d.ts +22 -0
  92. package/{src/med_editor/framework/impl/comments/comments-container-impl.ts → lib/framework/impl/comments/comments-container-impl.js} +15 -21
  93. package/lib/framework/impl/comments/comments-container-impl.js.map +1 -0
  94. package/lib/framework/impl/comments/comments-util.d.ts +12 -0
  95. package/{src/med_editor/framework/impl/comments/comments-util.ts → lib/framework/impl/comments/comments-util.js} +17 -34
  96. package/lib/framework/impl/comments/comments-util.js.map +1 -0
  97. package/lib/framework/impl/comments/validate-msg-impl.d.ts +21 -0
  98. package/{src/med_editor/framework/impl/comments/validate-msg-impl.ts → lib/framework/impl/comments/validate-msg-impl.js} +15 -26
  99. package/lib/framework/impl/comments/validate-msg-impl.js.map +1 -0
  100. package/lib/framework/impl/data-element/data-decorate-impl.d.ts +30 -0
  101. package/{src/med_editor/framework/impl/data-element/data-decorate-impl.ts → lib/framework/impl/data-element/data-decorate-impl.js} +21 -25
  102. package/lib/framework/impl/data-element/data-decorate-impl.js.map +1 -0
  103. package/lib/framework/impl/data-element/data-element-barcode.d.ts +31 -0
  104. package/{src/med_editor/framework/impl/data-element/data-element-barcode.ts → lib/framework/impl/data-element/data-element-barcode.js} +27 -39
  105. package/lib/framework/impl/data-element/data-element-barcode.js.map +1 -0
  106. package/lib/framework/impl/data-element/data-element-base-impl.d.ts +68 -0
  107. package/{src/med_editor/framework/impl/data-element/data-element-base-impl.ts → lib/framework/impl/data-element/data-element-base-impl.js} +44 -73
  108. package/lib/framework/impl/data-element/data-element-base-impl.js.map +1 -0
  109. package/lib/framework/impl/data-element/data-element-check-impl.d.ts +35 -0
  110. package/{src/med_editor/framework/impl/data-element/data-element-check-impl.ts → lib/framework/impl/data-element/data-element-check-impl.js} +33 -46
  111. package/lib/framework/impl/data-element/data-element-check-impl.js.map +1 -0
  112. package/lib/framework/impl/data-element/data-element-date-impl.d.ts +23 -0
  113. package/{src/med_editor/framework/impl/data-element/data-element-date-impl.ts → lib/framework/impl/data-element/data-element-date-impl.js} +22 -39
  114. package/lib/framework/impl/data-element/data-element-date-impl.js.map +1 -0
  115. package/lib/framework/impl/data-element/data-element-group-impl.d.ts +23 -0
  116. package/{src/med_editor/framework/impl/data-element/data-element-group-impl.ts → lib/framework/impl/data-element/data-element-group-impl.js} +29 -49
  117. package/lib/framework/impl/data-element/data-element-group-impl.js.map +1 -0
  118. package/lib/framework/impl/data-element/data-element-image-impl.d.ts +30 -0
  119. package/{src/med_editor/framework/impl/data-element/data-element-image-impl.ts → lib/framework/impl/data-element/data-element-image-impl.js} +26 -36
  120. package/lib/framework/impl/data-element/data-element-image-impl.js.map +1 -0
  121. package/lib/framework/impl/data-element/data-element-list-impl.d.ts +22 -0
  122. package/{src/med_editor/framework/impl/data-element/data-element-list-impl.ts → lib/framework/impl/data-element/data-element-list-impl.js} +30 -41
  123. package/lib/framework/impl/data-element/data-element-list-impl.js.map +1 -0
  124. package/lib/framework/impl/data-element/data-element-text-impl.d.ts +23 -0
  125. package/{src/med_editor/framework/impl/data-element/data-element-text-impl.ts → lib/framework/impl/data-element/data-element-text-impl.js} +20 -34
  126. package/lib/framework/impl/data-element/data-element-text-impl.js.map +1 -0
  127. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +21 -0
  128. package/{src/med_editor/framework/impl/decorate/fill-null-space-imple.ts → lib/framework/impl/decorate/fill-null-space-imple.js} +10 -15
  129. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +1 -0
  130. package/lib/framework/impl/document/doc-body-impl.d.ts +27 -0
  131. package/{src/med_editor/framework/impl/document/doc-body-impl.ts → lib/framework/impl/document/doc-body-impl.js} +15 -31
  132. package/lib/framework/impl/document/doc-body-impl.js.map +1 -0
  133. package/lib/framework/impl/document/doc-body-part-impl.d.ts +30 -0
  134. package/{src/med_editor/framework/impl/document/doc-body-part-impl.ts → lib/framework/impl/document/doc-body-part-impl.js} +16 -26
  135. package/lib/framework/impl/document/doc-body-part-impl.js.map +1 -0
  136. package/lib/framework/impl/document/doc-container-impl.d.ts +16 -0
  137. package/lib/framework/impl/document/doc-container-impl.js +21 -0
  138. package/lib/framework/impl/document/doc-container-impl.js.map +1 -0
  139. package/lib/framework/impl/document/doc-footer-impl.d.ts +26 -0
  140. package/{src/med_editor/framework/impl/document/doc-footer-impl.ts → lib/framework/impl/document/doc-footer-impl.js} +18 -29
  141. package/lib/framework/impl/document/doc-footer-impl.js.map +1 -0
  142. package/lib/framework/impl/document/doc-header-impl.d.ts +26 -0
  143. package/{src/med_editor/framework/impl/document/doc-header-impl.ts → lib/framework/impl/document/doc-header-impl.js} +16 -33
  144. package/lib/framework/impl/document/doc-header-impl.js.map +1 -0
  145. package/lib/framework/impl/document/doc-impl.d.ts +61 -0
  146. package/{src/med_editor/framework/impl/document/doc-impl.ts → lib/framework/impl/document/doc-impl.js} +42 -59
  147. package/lib/framework/impl/document/doc-impl.js.map +1 -0
  148. package/lib/framework/impl/media-formula/menstrual-history.d.ts +35 -0
  149. package/{src/med_editor/framework/impl/media-formula/menstrual-history.ts → lib/framework/impl/media-formula/menstrual-history.js} +35 -57
  150. package/lib/framework/impl/media-formula/menstrual-history.js.map +1 -0
  151. package/lib/framework/impl/paragraph/p-impl.d.ts +45 -0
  152. package/{src/med_editor/framework/impl/paragraph/p-impl.ts → lib/framework/impl/paragraph/p-impl.js} +28 -62
  153. package/lib/framework/impl/paragraph/p-impl.js.map +1 -0
  154. package/lib/framework/impl/picture/image-impl.d.ts +31 -0
  155. package/{src/med_editor/framework/impl/picture/image-impl.ts → lib/framework/impl/picture/image-impl.js} +23 -35
  156. package/lib/framework/impl/picture/image-impl.js.map +1 -0
  157. package/lib/framework/impl/radio/radio-impl.d.ts +22 -0
  158. package/{src/med_editor/framework/impl/radio/radio-impl.ts → lib/framework/impl/radio/radio-impl.js} +19 -26
  159. package/lib/framework/impl/radio/radio-impl.js.map +1 -0
  160. package/lib/framework/impl/symbol/br-symbol-impl.d.ts +22 -0
  161. package/{src/med_editor/framework/impl/symbol/br-symbol-impl.ts → lib/framework/impl/symbol/br-symbol-impl.js} +14 -20
  162. package/lib/framework/impl/symbol/br-symbol-impl.js.map +1 -0
  163. package/lib/framework/impl/symbol/p-symbol-impl.d.ts +19 -0
  164. package/{src/med_editor/framework/impl/symbol/p-symbol-impl.ts → lib/framework/impl/symbol/p-symbol-impl.js} +11 -14
  165. package/lib/framework/impl/symbol/p-symbol-impl.js.map +1 -0
  166. package/lib/framework/impl/table/table-cell-impl.d.ts +37 -0
  167. package/{src/med_editor/framework/impl/table/table-cell-impl.ts → lib/framework/impl/table/table-cell-impl.js} +28 -39
  168. package/lib/framework/impl/table/table-cell-impl.js.map +1 -0
  169. package/lib/framework/impl/table/table-impl.d.ts +55 -0
  170. package/{src/med_editor/framework/impl/table/table-impl.ts → lib/framework/impl/table/table-impl.js} +82 -120
  171. package/lib/framework/impl/table/table-impl.js.map +1 -0
  172. package/lib/framework/impl/table/table-row-impl.d.ts +26 -0
  173. package/{src/med_editor/framework/impl/table/table-row-impl.ts → lib/framework/impl/table/table-row-impl.js} +16 -24
  174. package/lib/framework/impl/table/table-row-impl.js.map +1 -0
  175. package/lib/framework/impl/table/table-split-cell-patch.d.ts +20 -0
  176. package/{src/med_editor/framework/impl/table/table-split-cell-patch.ts → lib/framework/impl/table/table-split-cell-patch.js} +22 -31
  177. package/lib/framework/impl/table/table-split-cell-patch.js.map +1 -0
  178. package/lib/framework/impl/table/table-split-cell.d.ts +90 -0
  179. package/{src/med_editor/framework/impl/table/table-split-cell.ts → lib/framework/impl/table/table-split-cell.js} +94 -105
  180. package/lib/framework/impl/table/table-split-cell.js.map +1 -0
  181. package/lib/framework/impl/table/table-util.d.ts +150 -0
  182. package/{src/med_editor/framework/impl/table/table-util.ts → lib/framework/impl/table/table-util.js} +157 -195
  183. package/lib/framework/impl/table/table-util.js.map +1 -0
  184. package/lib/framework/impl/text/text-impl.d.ts +32 -0
  185. package/{src/med_editor/framework/impl/text/text-impl.ts → lib/framework/impl/text/text-impl.js} +32 -46
  186. package/lib/framework/impl/text/text-impl.js.map +1 -0
  187. package/lib/framework/impl/text/track-run-impl.d.ts +27 -0
  188. package/{src/med_editor/framework/impl/text/track-run-impl.ts → lib/framework/impl/text/track-run-impl.js} +28 -51
  189. package/lib/framework/impl/text/track-run-impl.js.map +1 -0
  190. package/lib/framework/notify.d.ts +13 -0
  191. package/{src/med_editor/framework/notify.ts → lib/framework/notify.js} +36 -50
  192. package/lib/framework/notify.js.map +1 -0
  193. package/lib/framework/range-util.d.ts +40 -0
  194. package/{src/med_editor/framework/range-util.ts → lib/framework/range-util.js} +71 -80
  195. package/lib/framework/range-util.js.map +1 -0
  196. package/lib/framework/render-context.d.ts +91 -0
  197. package/{src/med_editor/framework/render-context.ts → lib/framework/render-context.js} +64 -111
  198. package/lib/framework/render-context.js.map +1 -0
  199. package/lib/framework/render-define.d.ts +109 -0
  200. package/{src/med_editor/framework/render-define.ts → lib/framework/render-define.js} +61 -90
  201. package/lib/framework/render-define.js.map +1 -0
  202. package/lib/framework/selection-overlays.d.ts +30 -0
  203. package/{src/med_editor/framework/selection-overlays.ts → lib/framework/selection-overlays.js} +16 -25
  204. package/lib/framework/selection-overlays.js.map +1 -0
  205. package/lib/texteditor.d.ts +318 -0
  206. package/{src/med_editor/texteditor.ts → lib/texteditor.js} +189 -286
  207. package/lib/texteditor.js.map +1 -0
  208. package/lib/util/subject.d.ts +34 -0
  209. package/lib/util/subject.js +88 -0
  210. package/lib/util/subject.js.map +1 -0
  211. package/lib/util/table-bind.d.ts +5 -0
  212. package/{src/med_editor/util/table-bind.ts → lib/util/table-bind.js} +2 -2
  213. package/lib/util/table-bind.js.map +1 -0
  214. package/package.json +2 -2
  215. package/src/med_editor/framework/common-util.ts +0 -200
  216. package/src/med_editor/framework/document-segmenter.ts +0 -211
  217. package/src/med_editor/framework/document-textline-mode.ts +0 -34
  218. package/src/med_editor/framework/element-event-define.ts +0 -141
  219. package/src/med_editor/framework/impl/document/doc-container-impl.ts +0 -24
  220. package/src/med_editor/util/subject.ts +0 -118
  221. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +0 -3573
  222. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +0 -3573
  223. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +0 -315
  224. 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 +0 -122
  225. 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 +0 -3599
  226. 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 +0 -24586
  227. package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +0 -2874
  228. package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +0 -341
  229. package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +0 -2201
  230. package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +0 -1069
  231. 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 +0 -125
  232. 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 +0 -86
  233. 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 +0 -115
  234. 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 +0 -108
  235. 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 +0 -272
  236. package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +0 -1070
@@ -1,30 +1,30 @@
1
- import { SelectionState } from "../../document-selection";
2
1
  import { ElementUtil } from "../../element-util";
3
2
  import { TableCellElement } from "./table-cell-impl";
4
3
  import { TableElement } from "./table-impl";
5
4
  import { TableRowElement } from "./table-row-impl";
6
- import { ColumnPart, ColumnPartOffset, ColumnPatch, ColumnPatchUtil } from "./table-split-cell-patch";
5
+ import { ColumnPatchUtil } from "./table-split-cell-patch";
7
6
  import { TableUtil } from "./table-util";
8
7
  /**
9
8
  * 拆分单元格
10
9
  * 蜀道难,难于上青天;拆分单元格,头发秃,精神衰,眼睛昏,身体废。
11
- *
10
+ *
12
11
  * 1.拆分为多列规则:不影响其他列宽度,将当前列宽度均分
13
12
  */
14
13
  export class TableSplitCell {
15
14
  /**
16
- *
15
+ *
17
16
  * 普通单元格可以任意拆分行和列
18
17
  * 已合并的单元格,可以拆分任意数量的列;可以拆分的数量必须为合并单元格数量的约数
19
18
  */
20
- static splitCell(ss: SelectionState, rows: number, cols: number): void {
19
+ static splitCell(ss, rows, cols) {
21
20
  const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
22
21
  if (!focusCell) {
23
- throw new Error('focusCell is null')
22
+ throw new Error('focusCell is null');
24
23
  }
25
24
  if (!focusCell.props.hMerge && !focusCell.props.vMerge) {
26
25
  this.splitNormalCell(ss, rows, cols);
27
- } else {
26
+ }
27
+ else {
28
28
  this.splitMergeCell(ss, rows, cols);
29
29
  }
30
30
  // else if (!focusCell.cellProps.hMerge) {
@@ -37,12 +37,10 @@ export class TableSplitCell {
37
37
  // this.verSplitVerMergeCell(ss, rows, endColIndex);
38
38
  // }
39
39
  }
40
-
41
-
42
40
  /**
43
41
  * 拆分普通的单元格
44
42
  */
45
- private static splitNormalCell(ss: SelectionState, rows: number, cols: number): void {
43
+ static splitNormalCell(ss, rows, cols) {
46
44
  rows = rows < 1 ? 1 : rows;
47
45
  cols = cols < 1 ? 1 : cols;
48
46
  if (rows === 1 && cols === 1) {
@@ -68,9 +66,9 @@ export class TableSplitCell {
68
66
  tb.insertCol(focusCellIndex + i, splitCellWidths[i].width);
69
67
  }
70
68
  for (let i = 0; i < tb.length; i++) {
71
- const row = tb.getChild(i) as TableRowElement;
69
+ const row = tb.getChild(i);
72
70
  //获取主单元格
73
- const masterCell = row.getChild(focusCellIndex) as TableCellElement;
71
+ const masterCell = row.getChild(focusCellIndex);
74
72
  for (let j = 1; j < cols; j++) {
75
73
  const newCell = new TableCellElement();
76
74
  row.addChild(newCell, focusCellIndex + j);
@@ -87,24 +85,25 @@ export class TableSplitCell {
87
85
  if (rows > 1) {
88
86
  for (let i = 1; i < rows; i++) {
89
87
  const newRow = TableRowElement.createRow(tb.getColsCount());
90
- tb.addChild(newRow, focusRowIndex + i)
88
+ tb.addChild(newRow, focusRowIndex + i);
91
89
  for (let j = 0; j < newRow.length; j++) {
92
- const cell = newRow.getChild<TableCellElement>(j);
93
- const masterCell = focusRow.getChild<TableCellElement>(j)
90
+ const cell = newRow.getChild(j);
91
+ const masterCell = focusRow.getChild(j);
94
92
  if (j < focusCellIndex || j > focusCellIndex + cols - 1)
95
93
  //紧挨上级的单元格存在横向合并
96
94
  if (masterCell.props.hMerge) {
97
95
  if (masterCell.props.hMerge === 'restart') {
98
96
  if (!masterCell.props.vMerge) {
99
- masterCell.props.vMerge = 'restart'
97
+ masterCell.props.vMerge = 'restart';
100
98
  }
101
99
  cell.props.vMerge = 'continue';
102
100
  }
103
- } else {
101
+ }
102
+ else {
104
103
  if (!masterCell.props.vMerge) {
105
- masterCell.props.vMerge = 'restart'
104
+ masterCell.props.vMerge = 'restart';
106
105
  }
107
- cell.props.vMerge = 'continue'
106
+ cell.props.vMerge = 'continue';
108
107
  }
109
108
  }
110
109
  }
@@ -112,14 +111,13 @@ export class TableSplitCell {
112
111
  tb.pubOnChange('self');
113
112
  tb.refreshView();
114
113
  }
115
-
116
114
  /**
117
115
  * 拆分合并的单元格
118
- * @param ss
119
- * @param rows
120
- * @param cols
116
+ * @param ss
117
+ * @param rows
118
+ * @param cols
121
119
  */
122
- static splitMergeCell(ss: SelectionState, rows: number, cols: number): void {
120
+ static splitMergeCell(ss, rows, cols) {
123
121
  rows = rows < 1 ? 1 : rows;
124
122
  cols = cols < 1 ? 1 : cols;
125
123
  if (rows === 1 && cols === 1) {
@@ -142,7 +140,7 @@ export class TableSplitCell {
142
140
  //只有拆分的行数需要满足此条件
143
141
  if (mergeRows > 1 && rows > 1) {
144
142
  if (rows % mergeRows !== 0) {
145
- throw new Error(`当前合并的行数为:${mergeRows},当前可拆分的行数是${mergeRows}的约数`)
143
+ throw new Error(`当前合并的行数为:${mergeRows},当前可拆分的行数是${mergeRows}的约数`);
146
144
  }
147
145
  }
148
146
  //拆分的行数、列数等于合并的行数、列数
@@ -151,7 +149,6 @@ export class TableSplitCell {
151
149
  TableUtil.restoreCell(ss);
152
150
  return;
153
151
  }
154
-
155
152
  if (mergeCols === 1) {
156
153
  const { endColIndex } = this.horSplitHorNormalCell(ss, rows, cols);
157
154
  this.verSplitVerMergeCell(ss, rows, endColIndex);
@@ -162,14 +159,13 @@ export class TableSplitCell {
162
159
  this.verSplitVerMergeCell(ss, rows, endColIndex);
163
160
  }
164
161
  }
165
-
166
162
  /**
167
163
  * 拆分横向正常的单元格
168
- * @param ss
169
- * @param rows
170
- * @param cols
164
+ * @param ss
165
+ * @param rows
166
+ * @param cols
171
167
  */
172
- static horSplitHorNormalCell(ss: SelectionState, rows: number, cols: number): { startColIndex: number, endColIndex: number } {
168
+ static horSplitHorNormalCell(ss, rows, cols) {
173
169
  const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
174
170
  const focusRow = ElementUtil.getParentByType(focusCell, TableRowElement);
175
171
  const tb = ElementUtil.getParentByType(focusRow, TableElement);
@@ -189,9 +185,9 @@ export class TableSplitCell {
189
185
  //向指定的列插入拆分单元格
190
186
  if (cols > 1) {
191
187
  for (let i = 0; i < tb.length; i++) {
192
- const currRow = tb.getChild(i) as TableRowElement;
188
+ const currRow = tb.getChild(i);
193
189
  //获取主单元格
194
- const masterCell = currRow.getChild(focusCellIndex) as TableCellElement;
190
+ const masterCell = currRow.getChild(focusCellIndex);
195
191
  for (let j = 1; j < cols; j++) {
196
192
  const newCell = new TableCellElement();
197
193
  currRow.addChild(newCell, focusCellIndex + j);
@@ -201,7 +197,8 @@ export class TableSplitCell {
201
197
  masterCell.props.hMerge = 'restart';
202
198
  }
203
199
  newCell.props.hMerge = 'continue';
204
- } else {
200
+ }
201
+ else {
205
202
  newCell.props.vMerge = masterCell.props.vMerge;
206
203
  }
207
204
  }
@@ -210,7 +207,7 @@ export class TableSplitCell {
210
207
  //在选中行下插入拆分行
211
208
  //如果当前是普通单元格
212
209
  if (!focusCell.props.vMerge) {
213
- debugger
210
+ debugger;
214
211
  for (let i = 1; i < rows; i++) {
215
212
  const newRow = TableRowElement.createRow(tb.getColsCount());
216
213
  tb.addChild(newRow, focusRowIndex + i);
@@ -221,16 +218,15 @@ export class TableSplitCell {
221
218
  return {
222
219
  startColIndex: focusCellIndex,
223
220
  endColIndex: focusCellIndex + cols - 1
224
- }
221
+ };
225
222
  }
226
-
227
223
  /**
228
- * 横向拆分合并的单元格
229
- * @param ss
230
- * @param rows
231
- * @param cols
224
+ * 横向拆分合并的单元格
225
+ * @param ss
226
+ * @param rows
227
+ * @param cols
232
228
  */
233
- static horSplitHorMergeCell(ss: SelectionState, rows: number, cols: number): { startColIndex: number, endColIndex: number } {
229
+ static horSplitHorMergeCell(ss, rows, cols) {
234
230
  const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
235
231
  const focusRow = ElementUtil.getParentByType(focusCell, TableRowElement);
236
232
  const tb = ElementUtil.getParentByType(focusRow, TableElement);
@@ -240,7 +236,7 @@ export class TableSplitCell {
240
236
  const focusCellIndex = focusRow.getChildIndex(focusCell);
241
237
  const focusRowIndex = focusRow.getIndex();
242
238
  const hMergeCols = this.getHMergeCols(tb, focusRowIndex, focusCellIndex, cols);
243
- const colsWidth = hMergeCols.reduce((prev, curr) => prev + curr.width, 0)
239
+ const colsWidth = hMergeCols.reduce((prev, curr) => prev + curr.width, 0);
244
240
  const splitCols = this.getSplitCols(colsWidth, cols);
245
241
  const [otherPacks, currPacks] = ColumnPatchUtil.getPatchPacks(hMergeCols, splitCols);
246
242
  this.applyHorSplitColumnPatchPacks(tb, focusRowIndex, 1, otherPacks);
@@ -250,13 +246,12 @@ export class TableSplitCell {
250
246
  return {
251
247
  startColIndex: focusCellIndex,
252
248
  endColIndex: this.getPrepareNewColCounts(otherPacks, hMergeCols)
253
- }
249
+ };
254
250
  }
255
-
256
251
  /**
257
252
  * 获取需要新创建的列数量
258
253
  */
259
- private static getPrepareNewColCounts(packs: Array<{ part: ColumnPartOffset, patchs: Array<ColumnPatch> }>, hMergeCols: Array<ColumnPart>): number {
254
+ static getPrepareNewColCounts(packs, hMergeCols) {
260
255
  const lastColIndex = hMergeCols[hMergeCols.length - 1].index;
261
256
  if (packs.length === 0) {
262
257
  return lastColIndex;
@@ -265,13 +260,12 @@ export class TableSplitCell {
265
260
  if (!lastColPack) {
266
261
  return lastColIndex;
267
262
  }
268
- return lastColIndex + lastColPack.patchs.filter(item => item.type === 'insert').length
263
+ return lastColIndex + lastColPack.patchs.filter(item => item.type === 'insert').length;
269
264
  }
270
-
271
265
  /**
272
266
  * 应用横向拆分单元格补丁
273
267
  */
274
- private static applyHorSplitColumnPatchPacks(tb: TableElement, focusRowIndex: number, splitRows: number, packs: Array<{ part: ColumnPartOffset, patchs: Array<ColumnPatch> }>): void {
268
+ static applyHorSplitColumnPatchPacks(tb, focusRowIndex, splitRows, packs) {
275
269
  for (let i = packs.length - 1; i >= 0; i--) {
276
270
  const pack = packs[i];
277
271
  const colIndex = pack.part.index;
@@ -279,13 +273,14 @@ export class TableSplitCell {
279
273
  const patch = pack.patchs[j];
280
274
  if (patch.type === 'modify') {
281
275
  tb.setCellWidth(colIndex, patch.data.width);
282
- } else if (patch.type === 'insert') {
276
+ }
277
+ else if (patch.type === 'insert') {
283
278
  tb.insertCol(colIndex + 1, patch.data.width);
284
279
  //向指定的列插入拆分单元格
285
280
  for (let i = 0; i < tb.length; i++) {
286
- const currRow = tb.getChild(i) as TableRowElement;
281
+ const currRow = tb.getChild(i);
287
282
  //获取主单元格
288
- const masterCell = currRow.getChild(colIndex) as TableCellElement;
283
+ const masterCell = currRow.getChild(colIndex);
289
284
  const newCell = new TableCellElement();
290
285
  currRow.addChild(newCell, colIndex + 1);
291
286
  if (!masterCell.props.hMerge) {
@@ -297,46 +292,44 @@ export class TableSplitCell {
297
292
  }
298
293
  }
299
294
  }
300
-
301
295
  /**
302
296
  * 存在横向合并的单元格,进行单元格分拆,打补丁
303
- * @param tb
304
- * @param focusRowIndex
305
- * @param focusColInex
306
- * @param splitRows
307
- * @param packs
297
+ * @param tb
298
+ * @param focusRowIndex
299
+ * @param focusColInex
300
+ * @param splitRows
301
+ * @param packs
308
302
  */
309
- private static applyHorSplitColumnCurrPatchPacks(tb: TableElement, focusRowIndex: number, focusColInex: number, splitRows: number, packs: Array<Array<ColumnPart>>): void {
303
+ static applyHorSplitColumnCurrPatchPacks(tb, focusRowIndex, focusColInex, splitRows, packs) {
310
304
  //获取当前列的合并行数
311
305
  let vMergeRows = this.getVMergeRowsCount(tb, focusRowIndex, focusColInex);
312
306
  vMergeRows = vMergeRows === 1 ? 0 : vMergeRows;
313
- const startRow = tb.getChild(focusRowIndex) as TableRowElement;
314
- const endRow = tb.getChild(focusRowIndex + vMergeRows - 1) as TableRowElement;
307
+ const startRow = tb.getChild(focusRowIndex);
308
+ const endRow = tb.getChild(focusRowIndex + vMergeRows - 1);
315
309
  for (let i = 0; i < packs.length; i++) {
316
310
  const mergeCols = packs[i];
317
311
  if (mergeCols.length === 1) {
318
- const startCell = startRow.getChild(focusColInex + mergeCols[0].index) as TableCellElement;
319
- const endCell = endRow.getChild(focusColInex + mergeCols[0].index) as TableCellElement;
312
+ const startCell = startRow.getChild(focusColInex + mergeCols[0].index);
313
+ const endCell = endRow.getChild(focusColInex + mergeCols[0].index);
320
314
  TableUtil.combineCells(tb, startCell, endCell);
321
- } else {
315
+ }
316
+ else {
322
317
  // for (let j = 0; j < mergeCols.length; j++) {
323
318
  // const cell = focusRow.getChild(focusColInex + mergeCols[j].index) as TableCellElement;
324
319
  // cell.cellProps.hMerge = j === 0 ? 'restart' : 'continue';
325
320
  // }
326
- const startCell = startRow.getChild(focusColInex + mergeCols[0].index) as TableCellElement;
327
- const endCell = endRow.getChild(focusColInex + mergeCols[mergeCols.length - 1].index) as TableCellElement;
321
+ const startCell = startRow.getChild(focusColInex + mergeCols[0].index);
322
+ const endCell = endRow.getChild(focusColInex + mergeCols[mergeCols.length - 1].index);
328
323
  TableUtil.combineCells(tb, startCell, endCell);
329
324
  }
330
325
  }
331
326
  }
332
-
333
-
334
327
  /**
335
328
  * 纵向拆分合并的单元格
336
329
  * 在指定行下插入复制行
337
330
  * 存在
338
331
  */
339
- private static verSplitVerMergeCell(ss: SelectionState, rows: number, endColIndex: number): void {
332
+ static verSplitVerMergeCell(ss, rows, endColIndex) {
340
333
  if (rows === 1) {
341
334
  return;
342
335
  }
@@ -360,7 +353,7 @@ export class TableSplitCell {
360
353
  for (let i = 0; i < rows - 1; i++) {
361
354
  const newRow = new TableRowElement();
362
355
  for (let i = 0; i < focusRow.length; i++) {
363
- const focusRowCell = focusRow.getChild(i) as TableCellElement;
356
+ const focusRowCell = focusRow.getChild(i);
364
357
  const cell = new TableCellElement();
365
358
  //其他列要纵向合并
366
359
  if (i < focusCellIndex || i > endColIndex) {
@@ -380,96 +373,92 @@ export class TableSplitCell {
380
373
  //拆分行和合并行相等,则执行还原
381
374
  if (rows === mergeRows) {
382
375
  for (let i = 0; i < mergeRows; i++) {
383
- const row = tb.getChild(focusRowIndex + i) as TableRowElement;
376
+ const row = tb.getChild(focusRowIndex + i);
384
377
  for (let j = focusCellIndex; j <= endColIndex; j++) {
385
- const cell = row.getChild(j) as TableCellElement;
378
+ const cell = row.getChild(j);
386
379
  cell.props.vMerge = null;
387
380
  }
388
381
  }
389
- } else {
382
+ }
383
+ else {
390
384
  for (let i = 0; i < mergeRows; i++) {
391
385
  if (i % rows === 0) {
392
- const row = tb.getChild(focusRowIndex + i) as TableRowElement;
393
- const cell = row.getChild(focusCellIndex) as TableCellElement;
386
+ const row = tb.getChild(focusRowIndex + i);
387
+ const cell = row.getChild(focusCellIndex);
394
388
  cell.props.vMerge = 'restart';
395
389
  }
396
390
  }
397
391
  }
398
392
  }
399
393
  }
400
-
401
-
402
-
403
- private static getSplitCols(width: number, cols: number): Array<ColumnPart> {
404
- const items: Array<ColumnPart> = [];
394
+ static getSplitCols(width, cols) {
395
+ const items = [];
405
396
  for (let i = 0; i < cols; i++) {
406
397
  items.push({ width: Math.floor(width / cols), index: i });
407
398
  }
408
399
  items[items.length - 1].width += width - items.reduce((prev, curr) => prev + curr.width, 0);
409
400
  return items;
410
401
  }
411
-
412
402
  /**
413
403
  * 获取横向合并的列
414
- * @param tb
415
- * @param currRowIndex
416
- * @param currColIndex
417
- * @param splitCols
404
+ * @param tb
405
+ * @param currRowIndex
406
+ * @param currColIndex
407
+ * @param splitCols
418
408
  */
419
- private static getHMergeCols(tb: TableElement, currRowIndex: number, currColIndex: number, splitCols: number): Array<ColumnPart> {
420
- const row = tb.getChild(currRowIndex) as TableRowElement;
421
- const items: Array<ColumnPart> = [{ width: tb.getCellWidth(currColIndex), index: currColIndex }];
409
+ static getHMergeCols(tb, currRowIndex, currColIndex, splitCols) {
410
+ const row = tb.getChild(currRowIndex);
411
+ const items = [{ width: tb.getCellWidth(currColIndex), index: currColIndex }];
422
412
  for (let i = currColIndex + 1; i < tb.getColsCount(); i++) {
423
- const cell = row.getChild(i) as TableCellElement;
413
+ const cell = row.getChild(i);
424
414
  if (cell.props.hMerge === 'continue') {
425
415
  items.push({ width: tb.getCellWidth(i), index: i });
426
- } else {
416
+ }
417
+ else {
427
418
  break;
428
419
  }
429
420
  }
430
421
  return items;
431
422
  }
432
-
433
423
  /**
434
424
  * 获取纵向合并的行数
435
- * @param tb
436
- * @param currRowIndex
425
+ * @param tb
426
+ * @param currRowIndex
437
427
  */
438
- private static getVMergeRowsCount(tb: TableElement, rowIndex: number, colIndex: number): number {
439
- const startCell = <TableCellElement>(<TableRowElement>tb.getChild(rowIndex)).getChild(colIndex)
428
+ static getVMergeRowsCount(tb, rowIndex, colIndex) {
429
+ const startCell = tb.getChild(rowIndex).getChild(colIndex);
440
430
  if (startCell.props.vMerge !== 'restart') {
441
431
  return 1;
442
432
  }
443
433
  let i = 0;
444
434
  for (i = rowIndex + 1; i < tb.length; i++) {
445
- const row = tb.getChild(i) as TableRowElement;
446
- const cell = row.getChild(colIndex) as TableCellElement;
435
+ const row = tb.getChild(i);
436
+ const cell = row.getChild(colIndex);
447
437
  if (cell.props.vMerge !== 'continue') {
448
438
  return i - rowIndex;
449
439
  }
450
440
  }
451
441
  return i - rowIndex;
452
442
  }
453
-
454
443
  /**
455
444
  * 获取纵向合并的行数
456
- * @param tb
457
- * @param currRowIndex
445
+ * @param tb
446
+ * @param currRowIndex
458
447
  */
459
- private static getHMergeColsCount(tb: TableElement, rowIndex: number, colIndex: number): number {
460
- const row = tb.getChild<TableRowElement>(rowIndex);
461
- const startCell = row.getChild<TableCellElement>(colIndex)
448
+ static getHMergeColsCount(tb, rowIndex, colIndex) {
449
+ const row = tb.getChild(rowIndex);
450
+ const startCell = row.getChild(colIndex);
462
451
  if (startCell.props.hMerge !== 'restart') {
463
452
  return 1;
464
453
  }
465
454
  let i = 0;
466
455
  for (i = colIndex + 1; i < row.length; i++) {
467
- const cell = row.getChild(i) as TableCellElement;
456
+ const cell = row.getChild(i);
468
457
  if (cell.props.hMerge !== 'continue') {
469
458
  return i - colIndex;
470
459
  }
471
460
  }
472
461
  return i - colIndex;
473
462
  }
474
-
475
463
  }
464
+ //# sourceMappingURL=table-split-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-split-cell.js","sourceRoot":"lib/","sources":["framework/impl/table/table-split-cell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { SelectionState } from "../../document-selection";
2
+ import { TableCellElement } from "./table-cell-impl";
3
+ import { TableElement } from "./table-impl";
4
+ import { TableRowElement } from "./table-row-impl";
5
+ export declare class TableUtil {
6
+ static canDeleteTable(ss: SelectionState): boolean;
7
+ /**
8
+ * 校验当前选区是否可以执行合并单元格操作
9
+ * @param ss
10
+ * @returns
11
+ */
12
+ static canMergeCells(ss: SelectionState): boolean;
13
+ /**
14
+ * 获取横向合并当前单元格合并结束索引位置
15
+ * @param tb
16
+ * @param rowIndex
17
+ * @param colIndex
18
+ */
19
+ static getHMergeEndIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
20
+ /**
21
+ * 获取横向合并当前单元格合并开始索引位置
22
+ * @param tb
23
+ * @param rowIndex
24
+ * @param colIndex
25
+ */
26
+ static getHMergeStartIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
27
+ /**
28
+ * 获取纵向合并当前单元格合并结束索引位置
29
+ * @param tb
30
+ * @param rowIndex
31
+ * @param colIndex i
32
+ */
33
+ static getVMergeEndIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
34
+ /**
35
+ * 获取纵向合并当前单元格合并开始索引位置
36
+ * @param tb
37
+ * @param rowIndex
38
+ * @param colIndex i
39
+ */
40
+ static getVMergeStartIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
41
+ /**
42
+ * 合并单元格
43
+ * @param ss
44
+ * @returns
45
+ */
46
+ static mergeCells(ss: SelectionState): void;
47
+ /**
48
+ * 在合并单元格后需要校验
49
+ * 1.如果某个行的所有单元格都不是normal,则需要删除当前行
50
+ * 2.如果某个列的所有的单元格都不是normal,则需要删除当前列
51
+ */
52
+ private static checkRowBeMerged;
53
+ /**
54
+ * 移除行
55
+ * @param row
56
+ */
57
+ private static removeRow;
58
+ /**
59
+ * 移除列
60
+ * @param tb
61
+ * @param colIndex
62
+ */
63
+ private static removeCol;
64
+ /**
65
+ * 移除光标所在的当前行
66
+ * @param ss
67
+ */
68
+ static removeCurrRow(ss: SelectionState): void;
69
+ /**
70
+ * 移除光标所在的当前列
71
+ * @param ss
72
+ */
73
+ static removeCurrCol(ss: SelectionState): void;
74
+ /**
75
+ * 合并单元格
76
+ */
77
+ static combineCells(tbElement: TableElement, startCell: TableCellElement, endCell: TableCellElement): void;
78
+ static canSplitCell(ss: SelectionState): boolean;
79
+ /**
80
+ * 将合并的单元格合并还原
81
+ * @param ss
82
+ */
83
+ static restoreCell(ss: SelectionState): void;
84
+ private static restoreCellMerge;
85
+ private static getVMergeRows;
86
+ static insertCol(ss: SelectionState, insertColIndex: number): void;
87
+ static insertRow(ss: SelectionState, insertRowIndex: number): TableRowElement;
88
+ /**
89
+ * 在下方插入行
90
+ */
91
+ static insertRowBelow(ss: SelectionState): void;
92
+ /**
93
+ * 在上方插入行
94
+ */
95
+ static insertRowAbove(ss: SelectionState): void;
96
+ /**
97
+ * 在右侧插入列
98
+ */
99
+ static insertColToRight(ss: SelectionState): void;
100
+ /**
101
+ * 在左侧插入列
102
+ */
103
+ static insertColToLeft(ss: SelectionState): void;
104
+ /**
105
+ * 跳转到下一个单元格中
106
+ * @param ss
107
+ */
108
+ static moveNextCell(ss: SelectionState): void;
109
+ /**
110
+ * 获取下一个可定位的单元格
111
+ * @param ss
112
+ * @returns
113
+ */
114
+ static getNextCell(ss: SelectionState): TableCellElement | undefined;
115
+ /**
116
+ * 当前光标是否在最后一个单元格中
117
+ */
118
+ static isLastVisiableCell(ss: SelectionState): boolean;
119
+ /**
120
+ * 移除当前table
121
+ */
122
+ static removeTable(ss: SelectionState): void;
123
+ /**
124
+ * 设置表格单元格对角线
125
+ * @param ss
126
+ * @param diagonal
127
+ * @returns
128
+ */
129
+ static setTableCellDiagonal(ss: SelectionState, diagonal: 'main' | 'sub'): void;
130
+ /**
131
+ * 将当前表格截断成两个相邻的表格
132
+ * @param tb
133
+ * @param rowIndex
134
+ */
135
+ static cutTable(tb: TableElement, rowIndex: number): void;
136
+ /**
137
+ * 获取表格选区区域最大的矩形区域
138
+ * @param tb
139
+ * @param startCell
140
+ * @param endCell
141
+ * @returns
142
+ */
143
+ static getTableRectSelectedRegion(tb: TableElement, startCell: TableCellElement, endCell: TableCellElement): ITableSelectedRegion;
144
+ }
145
+ export interface ITableSelectedRegion {
146
+ startRow: number;
147
+ endRow: number;
148
+ startCol: number;
149
+ endCol: number;
150
+ }