@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,17 +1,21 @@
1
1
  import { Subject } from "rxjs";
2
- import { BranchElement, LeafElement } from "./element-define";
2
+ import { BranchElement, LeafElement, Rect, Element, SelectionContentRange, Position } from "./element-define";
3
+ import { HitEventInfo, HitRegion } from "./element-event-define";
3
4
  import { ElementUtil } from "./element-util";
4
5
  import { DocumentContainerRender } from "./impl/document/doc-container-impl";
5
6
  import { DocumentRenderObject } from "./impl/document/doc-impl";
6
- import { TextGroupElement } from "./impl/text/text-impl";
7
- import { DocumentBodyElement } from "@/med_editor/framework/impl/document/doc-body-impl";
7
+ import { TextGroupElement, TextGroupRenderObject } from "./impl/text/text-impl";
8
+ import { RenderObject } from "./render-define";
9
+ import { DocumentBodyElement } from "./impl/document/doc-body-impl";
10
+
8
11
  export class DocumentSelection {
9
12
  constructor() {
10
13
  this.selectionState = new SelectionState();
11
14
  }
12
- selectionState;
13
- snapshotSelectionState;
14
- setSelectionState(hitInfo) {
15
+
16
+ selectionState: SelectionState;
17
+ snapshotSelectionState!: SelectionState | null;
18
+ setSelectionState(hitInfo: { startHitInfo: HitEventInfo, endHitInfo: HitEventInfo }): void {
15
19
  const { startHitInfo, endHitInfo } = hitInfo;
16
20
  this.selectionState.clear();
17
21
  this.selectionState.startHitInfo = startHitInfo;
@@ -22,16 +26,16 @@ export class DocumentSelection {
22
26
  startRange.setStart(startHitInfo.element, startHitInfo.offset);
23
27
  if (endHitInfo) {
24
28
  startRange.setEnd(endHitInfo.element, endHitInfo.offset);
25
- }
26
- else {
29
+ } else {
27
30
  startRange.setEnd(startHitInfo.element, startHitInfo.offset);
28
31
  }
29
32
  this.selectionState.addRange(startRange);
30
33
  }
34
+
31
35
  /**
32
36
  * 获取选区共同的祖先控件
33
37
  */
34
- static getAncestorCommonControl(startControl, endControl) {
38
+ static getAncestorCommonControl(startControl: LeafElement, endControl: LeafElement): BranchElement {
35
39
  const startNestParents = this.getNestParents(startControl.parent);
36
40
  const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);
37
41
  if (!ancestorCommonControl) {
@@ -39,18 +43,21 @@ export class DocumentSelection {
39
43
  }
40
44
  return ancestorCommonControl;
41
45
  }
46
+
42
47
  /**
43
48
  * 获取向上的嵌套父级节点集合
44
- * @param control
45
- * @param array
49
+ * @param control
50
+ * @param array
46
51
  */
47
- static getNestParents(control) {
52
+ static getNestParents(control: BranchElement | null): Array<BranchElement> {
48
53
  if (control) {
49
54
  return [control, ...this.getNestParents(control.parent)];
50
55
  }
51
56
  return [];
57
+
52
58
  }
53
- static getCommonParenet(control, array) {
59
+
60
+ static getCommonParenet(control: BranchElement | null, array: Array<BranchElement>): BranchElement | null {
54
61
  if (!control) {
55
62
  return null;
56
63
  }
@@ -59,7 +66,8 @@ export class DocumentSelection {
59
66
  }
60
67
  return this.getCommonParenet(control?.parent, array);
61
68
  }
62
- updateSelectionState() {
69
+
70
+ updateSelectionState(): boolean {
63
71
  if (this.compareSelectionEquals()) {
64
72
  return false;
65
73
  }
@@ -80,25 +88,31 @@ export class DocumentSelection {
80
88
  this.selectionState.addRange(clone);
81
89
  }
82
90
  this.selectionState.editable = range.editable;
83
- this.selectionState.startControl = range.startControl;
91
+
92
+ this.selectionState.startControl = range.startControl as LeafElement;
84
93
  this.selectionState.startOffset = range.startOffset;
85
94
  this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);
86
- this.selectionState.endControl = range.endControl;
95
+
96
+ this.selectionState.endControl = range.endControl as LeafElement;
87
97
  this.selectionState.endOffset = range.endOffset;
88
98
  this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);
99
+
89
100
  this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);
101
+
90
102
  this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);
91
103
  return true;
92
104
  }
105
+
93
106
  /**
94
107
  * 获取当前选区区域内是否支持留痕
95
108
  * @private
96
109
  */
97
- getEnableTrackChanges(ele) {
110
+ private getEnableTrackChanges(ele: Element): boolean {
98
111
  const body = ElementUtil.getParentByType(ele, DocumentBodyElement);
99
112
  return body?.trackChanges || false;
100
113
  }
101
- compareSelectionEquals() {
114
+
115
+ private compareSelectionEquals(): boolean {
102
116
  const range = this.selectionState.range;
103
117
  const snap = this.snapshotSelectionState;
104
118
  if (snap && range) {
@@ -109,11 +123,12 @@ export class DocumentSelection {
109
123
  }
110
124
  return false;
111
125
  }
126
+
112
127
  /**
113
128
  * 转换选区内容
114
129
  * 处理结束选区在开始选区之前
115
130
  */
116
- transformRange() {
131
+ private transformRange(): void {
117
132
  let range = this.selectionState.range;
118
133
  if (!range) {
119
134
  return;
@@ -131,7 +146,7 @@ export class DocumentSelection {
131
146
  }
132
147
  range = this.selectionState.range;
133
148
  if (!range) {
134
- throw new Error('range is null');
149
+ throw new Error('range is null')
135
150
  }
136
151
  range.calcRange();
137
152
  if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {
@@ -141,52 +156,59 @@ export class DocumentSelection {
141
156
  }
142
157
  range.calcRange();
143
158
  }
144
- takeSnapshot() {
159
+
160
+ takeSnapshot(): void {
145
161
  this.snapshotSelectionState = this.selectionState.clone();
146
162
  }
147
- clearSnapshot() {
163
+
164
+ clearSnapshot(): void {
148
165
  this.snapshotSelectionState = null;
149
166
  }
167
+
150
168
  }
169
+
151
170
  export class SelectionState {
152
- get startControl() {
153
- return this._startControl;
171
+ get startControl(): LeafElement {
172
+ return this._startControl as LeafElement;
154
173
  }
155
- set startControl(value) {
174
+
175
+ set startControl(value: LeafElement | null) {
156
176
  this._startControl = value;
157
177
  }
158
- get endControl() {
159
- return this._endControl;
178
+
179
+ get endControl(): LeafElement {
180
+ return this._endControl as LeafElement;
160
181
  }
161
- set endControl(value) {
182
+
183
+ set endControl(value: LeafElement | null) {
162
184
  this._endControl = value;
163
185
  }
164
- onChangedEvent = new Subject();
165
- startControlIndex;
166
- startOffset;
167
- endControlIndex;
168
- endOffset;
186
+ onChangedEvent: Subject<void> = new Subject();
187
+ startControlIndex!: number;
188
+ startOffset!: number;
189
+ endControlIndex!: number;
190
+ endOffset!: number;
169
191
  get collapsed() {
170
192
  const { startControlIndex, startOffset, endControlIndex, endOffset } = this;
171
193
  return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));
172
194
  }
173
- _startControl;
174
- _endControl;
175
- ancestorCommonControl;
176
- range;
177
- startHitInfo;
178
- selectedRange;
179
- editable = true;
180
- renderContainer;
181
- cursorPos;
195
+ private _startControl!: LeafElement | null;
196
+ private _endControl!: LeafElement | null;
197
+ ancestorCommonControl!: BranchElement | null;
198
+ range!: SelectionRange | null;
199
+ startHitInfo!: HitEventInfo | null;
200
+ selectedRange!: SelectionContentRange | null;
201
+ editable: boolean = true;
202
+ renderContainer!: DocumentContainerRender;
203
+ cursorPos!: Rect | null;
182
204
  //选区重新计算,触发函数
183
- afterSelectionChanged = null;
205
+ afterSelectionChanged: ((newVal: SelectionState) => boolean) | null = null;
184
206
  //当前选区的上下文是否支持留痕修改
185
- enableTrackChanges = false;
207
+ enableTrackChanges: boolean = false;
186
208
  constructor() {
187
209
  this.clear();
188
210
  }
189
- clear() {
211
+ clear(): void {
190
212
  this.range = null;
191
213
  this.startOffset = -1;
192
214
  this.endOffset = -1;
@@ -198,25 +220,28 @@ export class SelectionState {
198
220
  this.selectedRange = null;
199
221
  this.cursorPos = null;
200
222
  }
201
- addRange(range) {
223
+
224
+ addRange(range: SelectionRange): void {
202
225
  this.clear();
203
226
  this.range = range;
204
227
  this.onChangedEvent.next();
205
228
  }
206
- resetRange(startControl, startOffset) {
229
+ resetRange(startControl: Element, startOffset: number): SelectionRange {
207
230
  const range = new SelectionRange();
208
231
  range.setStart(startControl, startOffset);
209
232
  range.setEnd(startControl, startOffset);
210
233
  this.addRange(range);
211
234
  return range;
212
235
  }
213
- surround(ele) {
236
+
237
+ surround(ele: Element): void {
214
238
  const range = new SelectionRange();
215
239
  range.setStart(ele, 0);
216
240
  range.setEnd(ele, -1);
217
241
  this.addRange(range);
218
242
  }
219
- clone() {
243
+
244
+ clone(): SelectionState {
220
245
  const clone = new SelectionState();
221
246
  clone._startControl = this._startControl;
222
247
  clone.startOffset = this.startOffset;
@@ -228,63 +253,69 @@ export class SelectionState {
228
253
  clone.selectedRange = this.selectedRange;
229
254
  return clone;
230
255
  }
256
+
257
+
231
258
  }
259
+
260
+
261
+
232
262
  export class SelectionRange {
233
- startControl;
234
- startOffset;
235
- endControl;
236
- endOffset;
237
- editable = true;
238
- setStart(control, offset) {
263
+ startControl!: Element;
264
+ startOffset!: number;
265
+ endControl!: Element;
266
+ endOffset!: number;
267
+ editable: boolean = true;
268
+ setStart(control: Element, offset: number): void {
239
269
  this.startControl = control;
240
270
  this.startOffset = offset;
241
271
  }
242
- setEnd(control, offset) {
272
+ setEnd(control: Element, offset: number): void {
243
273
  this.endControl = control;
244
274
  this.endOffset = offset;
245
275
  }
246
- calcStart() {
276
+
277
+ private calcStart(): void {
247
278
  const res = this.setInfo(this.startControl, this.startOffset);
248
279
  this.setStart(res.control, res.offset);
249
280
  }
250
- calcEnd() {
281
+
282
+ private calcEnd(): void {
251
283
  const res = this.setInfo(this.endControl, this.endOffset);
252
284
  this.setEnd(res.control, res.offset);
253
285
  }
254
- calcRange() {
286
+
287
+ calcRange(): void {
255
288
  this.calcStart();
256
289
  this.calcEnd();
257
290
  }
258
- setInfo(control, offset) {
291
+
292
+ private setInfo(control: Element, offset: number): { control: LeafElement, offset: number } {
259
293
  if (control instanceof LeafElement) {
260
294
  if (control instanceof TextGroupElement) {
261
295
  offset = offset === -1 ? control.text.length : offset;
262
296
  }
263
297
  offset = offset === -1 ? 1 : offset;
264
298
  return { control, offset };
265
- }
266
- else if (control instanceof BranchElement) {
299
+ } else if (control instanceof BranchElement) {
267
300
  if (offset > control.length) {
268
301
  throw new Error('超索引');
269
302
  }
270
303
  if (offset === control.length) {
271
304
  const child = control.getChild(offset - 1);
272
305
  return this.setInfo(child, 1);
273
- }
274
- else if (offset === -1) {
306
+ } else if (offset === -1) {
275
307
  const child = control.getChild(control.length - 1);
276
308
  return this.setInfo(child, -1);
277
- }
278
- else {
309
+ } else {
279
310
  const child = control.getChild(offset);
280
311
  return this.setInfo(child, 0);
281
312
  }
282
- }
283
- else {
313
+ } else {
284
314
  throw new Error('未实现');
285
315
  }
286
316
  }
287
- clone() {
317
+
318
+ clone(): SelectionRange {
288
319
  const clone = new SelectionRange();
289
320
  clone.startControl = this.startControl;
290
321
  clone.startOffset = this.startOffset;
@@ -292,29 +323,31 @@ export class SelectionRange {
292
323
  clone.endOffset = this.endOffset;
293
324
  return clone;
294
325
  }
326
+
295
327
  }
328
+
296
329
  export class DocumentCursor {
297
- static getElementCursorPos(ele, offset, hitRegion, docNum) {
330
+ static getElementCursorPos(ele: LeafElement, offset: number, hitRegion: HitRegion | undefined, docNum: number): { render: RenderObject, rect: Rect } {
298
331
  if (hitRegion === 'body' || hitRegion === 'review') {
299
332
  return this.getElementRenderPos(ele, offset, ele.paintRenders);
300
- }
301
- else if (hitRegion === 'footer' || hitRegion === 'header') {
333
+ } else if (hitRegion === 'footer' || hitRegion === 'header') {
302
334
  const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);
303
335
  if (!docContainer) {
304
- throw new Error('docContainer is null');
336
+ throw new Error('docContainer is null')
305
337
  }
306
- const docRender = docContainer.getChild(docNum);
338
+ const docRender = docContainer.getChild(docNum) as DocumentRenderObject;
307
339
  const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);
308
340
  return this.getElementRenderPos(ele, offset, currDocPaintRenders);
309
341
  }
310
342
  debugger;
311
- throw new Error('未找到元素偏移量对应的光标位置');
343
+ throw new Error('未找到元素偏移量对应的光标位置')
312
344
  }
313
- static getElementRenderPos(ele, offset, paints) {
345
+
346
+ private static getElementRenderPos(ele: LeafElement, offset: number, paints: Array<RenderObject>): { render: RenderObject, rect: Rect } {
314
347
  if (ele instanceof TextGroupElement) {
315
348
  let count = 0;
316
349
  for (let i = 0; i < paints.length; i++) {
317
- const paintRender = paints[i];
350
+ const paintRender = paints[i] as TextGroupRenderObject;
318
351
  let horX = 0;
319
352
  if (paintRender.textMeasures.length + count < offset) {
320
353
  count += paintRender.textMeasures.length;
@@ -322,7 +355,7 @@ export class DocumentCursor {
322
355
  }
323
356
  for (let i = 0; i <= paintRender.textMeasures.length; i++) {
324
357
  if (count === offset || (i === 0 && count + 0.5 === offset)) {
325
- const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
358
+ const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
326
359
  //上标、下标位置处理
327
360
  if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {
328
361
  rect.height -= ele.props.fontSize / 2;
@@ -334,25 +367,23 @@ export class DocumentCursor {
334
367
  return {
335
368
  render: paintRender,
336
369
  rect
337
- };
370
+ }
338
371
  }
339
372
  count++;
340
373
  horX += paintRender.textMeasures[i].actualSize;
341
374
  }
342
375
  }
343
- }
344
- else {
376
+ } else {
345
377
  const paintRender = paints[0];
346
- const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
378
+ const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
347
379
  if (offset === 1) {
348
380
  rect.x += rect.width;
349
381
  }
350
382
  return {
351
383
  render: paintRender,
352
384
  rect
353
- };
385
+ }
354
386
  }
355
- throw new Error('未能定位到元素位置');
387
+ throw new Error('未能定位到元素位置')
356
388
  }
357
389
  }
358
- //# sourceMappingURL=document-selection.js.map
@@ -4,8 +4,9 @@ import { DocumentBodyElement } from "./impl/document/doc-body-impl";
4
4
  import { DocumentFooterElement } from "./impl/document/doc-footer-impl";
5
5
  import { DocumentHeaderElement } from "./impl/document/doc-header-impl";
6
6
  import { DocumentElement } from "./impl/document/doc-impl";
7
+
7
8
  export class DocumentTemplate {
8
- static createA4Doc() {
9
+ static createA4Doc(): DocumentElement {
9
10
  const doc = new DocumentElement();
10
11
  doc.props = new DocumentProps();
11
12
  doc.props.width = 210;
@@ -16,5 +17,4 @@ export class DocumentTemplate {
16
17
  doc.addChild(new DocumentFooterElement());
17
18
  return doc;
18
19
  }
19
- }
20
- //# sourceMappingURL=document-template.js.map
20
+ }
@@ -0,0 +1,34 @@
1
+ import { BranchElement, ViewOptions, Element } from "./element-define";
2
+ import { ElementUtil } from "./element-util";
3
+ import { TableElement, textLineRenderMode } from "./impl/table/table-impl";
4
+ import { RenderContenxtType } from "./render-context";
5
+ import { BlockContainerRenderObject, RenderObject } from "./render-define";
6
+
7
+ /**
8
+ * 文字行渲染模式
9
+ 用于医嘱打印模式
10
+ */
11
+ export function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContenxtType): void {
12
+ if (!options.textRowLineMode) {
13
+ return;
14
+ }
15
+ if (ele instanceof TableElement) {
16
+ textLineRenderMode(ele, options, renderCtx);
17
+ remeasureParentRenders(ele.measureRender)
18
+ return;
19
+ }
20
+ if (ele instanceof BranchElement) {
21
+ for (let i = 0; i < ele.length; i++) {
22
+ runTextLineRender(ele.getChild(i), options, renderCtx);
23
+ }
24
+ }
25
+ }
26
+
27
+ function remeasureParentRenders(render: RenderObject | null): void {
28
+ if (!render) {
29
+ return
30
+ }
31
+ ElementUtil.remeasure(render as BlockContainerRenderObject)
32
+ remeasureParentRenders(render.parent)
33
+
34
+ }