@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,53 +1,68 @@
1
1
  import { runTextLineRender } from "./document-textline-mode";
2
- import { BlockContainerElement, BlockContentElement, BranchElement, InlineGroupElement, LeafElement, ModifyFlag } from "./element-define";
3
- import { TextProps } from "./element-props";
2
+ import {
3
+ BlockContainerElement,
4
+ BlockContentElement,
5
+ BranchElement,
6
+ Element,
7
+ InlineGroupElement,
8
+ LeafElement,
9
+ ModifyFlag,
10
+ ViewOptions
11
+ } from "./element-define";
12
+ import { DataEleBaseProps, DataEleBaseTextProps, TextProps } from "./element-props";
4
13
  import { ElementUtil } from "./element-util";
5
14
  import { DataElementInlineGroup } from "./impl/data-element/data-element-base-impl";
6
15
  import { FillNullSpaceRenderObject } from "./impl/decorate/fill-null-space-imple";
7
- import { ParagraphElement } from "./impl/paragraph/p-impl";
16
+ import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
17
+ import { ParagraphElement, ParagraphLineRectRenderObject, ParagraphRenderObject } from "./impl/paragraph/p-impl";
8
18
  import { TextGroupElement, TextGroupRenderObject } from "./impl/text/text-impl";
9
- import { BranchRenderObject, InlineGroupRenderObject, LeafRenderObject } from "./render-define";
19
+ import { RenderContenxtType } from "./render-context";
20
+ import {
21
+ BlockContainerRenderObject,
22
+ BlockContentRenderObject,
23
+ BranchRenderObject,
24
+ InlineGroupRenderObject,
25
+ LeafRenderObject,
26
+ RenderObject
27
+ } from "./render-define";
28
+ interface ICutLineData { firstItem: RenderObject | null, lastItem: RenderObject | null, br?: boolean }
10
29
  /**
11
30
  * 测量阶段,生成Render-UI
12
31
  */
13
32
  export class ElementMeasure {
14
- options;
15
- renderCtx;
16
- constructor(options, renderCtx) {
17
- this.options = options;
18
- this.renderCtx = renderCtx;
19
- }
20
- measureDocument(document) {
33
+ constructor(private options: ViewOptions, private renderCtx: RenderContenxtType) { }
34
+
35
+ measureDocument(document: DocumentElement): DocumentRenderObject {
21
36
  this.clearPaintCache(document);
22
- const docRender = this.measureControl(document, this.options.docPageSettings.width);
37
+ const docRender = this.measureControl(document, this.options.docPageSettings.width) as DocumentRenderObject;
23
38
  this.setMeasureCompletedModifyFlag(document);
24
39
  runTextLineRender(document, this.options, this.renderCtx);
25
40
  return docRender;
26
41
  }
27
- measureControl(element, maxWidth) {
42
+
43
+ measureControl(element: Element, maxWidth: number): RenderObject | null {
28
44
  if (element.modifyFlag === ModifyFlag.None) {
29
45
  return element.measureRender;
30
46
  }
31
47
  if (element instanceof BlockContentElement) {
32
- const render = element.createRenderObject(this.options, this.renderCtx);
48
+ const render = element.createRenderObject(this.options, this.renderCtx) as BlockContentRenderObject;
33
49
  element.measureRender = render;
34
50
  //测量阶段,只限制最大宽度即可
35
51
  render.setRenderWidth(maxWidth);
36
52
  if (element instanceof ParagraphElement) {
37
- this.measureParagraph(element, render);
38
- }
39
- else {
53
+ this.measureParagraph(element, render as ParagraphRenderObject);
54
+ } else {
40
55
  throw new Error('未实现');
41
56
  }
42
57
  return render;
43
- }
44
- else if (element instanceof BlockContainerElement) {
58
+
59
+ } else if (element instanceof BlockContainerElement) {
45
60
  ElementUtil.fixBlockContainer(element);
46
- let render = null;
61
+ let render: BlockContainerRenderObject | null = null;
47
62
  if (element.modifyFlag === ModifyFlag.Modify || element.modifyFlag === ModifyFlag.Track) {
48
63
  ElementUtil.fixBlockContainer(element);
49
64
  element.measureRender = null;
50
- render = element.createRenderObject(this.options, this.renderCtx);
65
+ render = element.createRenderObject(this.options, this.renderCtx) as BlockContainerRenderObject;
51
66
  if (!render) {
52
67
  element.measureRender = null;
53
68
  return null;
@@ -57,14 +72,14 @@ export class ElementMeasure {
57
72
  }
58
73
  }
59
74
  if (!render) {
60
- throw new Error('render is null');
75
+ throw new Error('render is null')
61
76
  }
62
77
  element.measureRender = render;
63
78
  const innerMaxWidth = render.getInnerMaxWidth();
64
79
  for (let i = 0; i < element.length; i++) {
65
80
  const child = element.getChild(i);
66
- const blockContentELement = child;
67
- const childRender = this.measureControl(blockContentELement, innerMaxWidth);
81
+ const blockContentELement = child as BlockContentElement;
82
+ const childRender = this.measureControl(blockContentELement, innerMaxWidth) as BlockContentRenderObject;
68
83
  if (!childRender) {
69
84
  continue;
70
85
  }
@@ -72,20 +87,20 @@ export class ElementMeasure {
72
87
  }
73
88
  ElementUtil.remeasure(render);
74
89
  return render;
75
- }
76
- else {
90
+ } else {
77
91
  throw new Error('未实现');
78
92
  }
79
93
  }
94
+
80
95
  /**
81
96
  * 生成段落 UI 树
82
- * @param para
83
- * @param render
97
+ * @param para
98
+ * @param render
84
99
  */
85
- measureParagraph(para, render) {
100
+ measureParagraph(para: ParagraphElement, render: ParagraphRenderObject): void {
86
101
  ElementUtil.fixParagraphContent(para);
87
102
  this.setParagraphDefaultTextProps(para);
88
- const renderObjects = [];
103
+ const renderObjects: Array<RenderObject> = [];
89
104
  for (let i = 0; i < para.length; i++) {
90
105
  const child = para.getChild(i);
91
106
  if (child instanceof InlineGroupElement) {
@@ -103,39 +118,41 @@ export class ElementMeasure {
103
118
  }
104
119
  this.measureInnerParagraph(render, para, renderObjects);
105
120
  }
121
+
122
+
106
123
  /**
107
124
  * 设置段落默认文本属性
108
125
  * 当前段落属于空段落时,键入文本时,文本的默认属性
109
126
  */
110
- setParagraphDefaultTextProps(para) {
111
- const lastTextGroup = ElementUtil.getLastLeafElement(para, (item) => item instanceof TextGroupElement);
127
+ setParagraphDefaultTextProps(para: ParagraphElement): void {
128
+ const lastTextGroup = ElementUtil.getLastLeafElement(para, (item) => item instanceof TextGroupElement) as TextGroupElement;
112
129
  const defaultTextProps = lastTextGroup ? lastTextGroup.props.clone(new TextProps()) : ElementUtil.createTextProps(null, this.options);
113
130
  if (para.props.textProps && para.props.textProps.equals(defaultTextProps)) {
114
131
  return;
115
132
  }
116
133
  para.props.textProps = defaultTextProps;
117
134
  }
135
+
118
136
  /**
119
137
  * 根据段落UI元素,进行排列
120
- * @param render
121
- * @param paragraph
122
- * @param renderObjects
138
+ * @param render
139
+ * @param paragraph
140
+ * @param renderObjects
123
141
  */
124
- measureInnerParagraph(render, paragraph, renderObjects) {
142
+ measureInnerParagraph(render: ParagraphRenderObject, paragraph: ParagraphElement, renderObjects: Array<RenderObject>) {
125
143
  let lineRect = render.createLineRect();
126
144
  //行内框
127
- const innerLineRects = [];
128
- const addInnerLineFunc = (lineRect) => {
145
+ const innerLineRects: Array<ParagraphLineRectRenderObject> = [];
146
+ const addInnerLineFunc = (lineRect: ParagraphLineRectRenderObject): void => {
129
147
  innerLineRects.push(lineRect);
130
148
  if (lineRect.rect.maxWidth <= 0) {
131
- throw new Error('lineRect.rect.maxWidth is ' + lineRect.rect.maxWidth);
149
+ throw new Error('lineRect.rect.maxWidth is ' + lineRect.rect.maxWidth)
132
150
  }
133
151
  if (innerLineRects.indexOf(lineRect) === 0) {
134
152
  if (paragraph.props.indent > 0) {
135
153
  lineRect.rect.maxWidth -= paragraph.props.indent;
136
154
  }
137
- }
138
- else {
155
+ } else {
139
156
  lineRect.rect.maxWidth -= paragraph.props.hanging;
140
157
  }
141
158
  };
@@ -144,7 +161,7 @@ export class ElementMeasure {
144
161
  let currItem = renderObjects[i++];
145
162
  const inCloseBody = paragraph.parent.type === 'body';
146
163
  while (currItem) {
147
- const maxWidth = lineRect.rect.maxWidth;
164
+ const maxWidth = lineRect.rect.maxWidth as number;
148
165
  const nextItem = renderObjects[i];
149
166
  const { firstItem, lastItem, br } = this.cutRenderItem(currItem, nextItem, maxWidth - lineRect.rect.width, lineRect.length === 0, inCloseBody);
150
167
  if (firstItem) {
@@ -152,8 +169,7 @@ export class ElementMeasure {
152
169
  renderObjects.splice(i, 0, lastItem);
153
170
  }
154
171
  currItem = firstItem;
155
- }
156
- else {
172
+ } else {
157
173
  lineRect = render.createLineRect();
158
174
  addInnerLineFunc(lineRect);
159
175
  continue;
@@ -172,7 +188,7 @@ export class ElementMeasure {
172
188
  currItem = renderObjects[i++];
173
189
  }
174
190
  for (let i = 0; i < innerLineRects.length; i++) {
175
- const innerLineRect = innerLineRects[i];
191
+ const innerLineRect = innerLineRects[i] as ParagraphLineRectRenderObject;
176
192
  innerLineRect.rect.x = this.getParaLineRectStartX(innerLineRects.length, i, paragraph, render, innerLineRect);
177
193
  //限制最大行高
178
194
  const maxLineHeight = Math.floor(14 * 1.3);
@@ -188,17 +204,18 @@ export class ElementMeasure {
188
204
  }
189
205
  //render.rect.height += lineRect.rect.height;
190
206
  const outterLineRect = render.createLineRect();
191
- outterLineRect.rect.width = outterLineRect.rect.maxWidth;
207
+ outterLineRect.rect.width = outterLineRect.rect.maxWidth as number;
192
208
  outterLineRect.addChild(innerLineRect);
193
209
  ElementUtil.remeasure(outterLineRect, false);
194
210
  render.addChild(outterLineRect);
195
211
  }
196
212
  ElementUtil.remeasure(render);
197
213
  }
214
+
198
215
  /**
199
216
  * 获取段落行布局横向坐标起始位置,被段落text-align影响
200
217
  */
201
- getParaLineRectStartX(counter, paraLineIndex, paraElement, paraRenderObject, paraLineRender) {
218
+ getParaLineRectStartX(counter: number, paraLineIndex: number, paraElement: ParagraphElement, paraRenderObject: ParagraphRenderObject, paraLineRender: ParagraphLineRectRenderObject): number {
202
219
  //左对齐,首行缩进
203
220
  let indent = paraElement.props.indent;
204
221
  //存在项目符号
@@ -208,31 +225,29 @@ export class ElementMeasure {
208
225
  if (paraElement.props.textAlign === 'center') {
209
226
  const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;
210
227
  return Math.ceil(remainSpace / 2) + indent;
211
- }
212
- else if (paraElement.props.textAlign === 'right') {
228
+ } else if (paraElement.props.textAlign === 'right') {
213
229
  const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;
214
230
  return remainSpace + indent;
215
- }
216
- else if (paraElement.props.textAlign === 'justify') {
231
+ } else if (paraElement.props.textAlign === 'justify') {
217
232
  const renderUnitCount = this.getRenderUnitLength(paraLineRender);
218
233
  if (paraLineIndex === counter - 1 || renderUnitCount === 1) {
219
234
  return indent;
220
235
  }
221
- const spaceWidth = (paraLineRender.rect.maxWidth - paraLineRender.rect.width) / (renderUnitCount - 1);
236
+ const spaceWidth = (<number>paraLineRender.rect.maxWidth - paraLineRender.rect.width) / (renderUnitCount - 1);
222
237
  this.setAlignJustify(paraLineRender, 0, spaceWidth);
223
238
  return indent;
224
- }
225
- else {
239
+ } else {
226
240
  return indent;
227
241
  }
228
242
  }
243
+
229
244
  /**
230
245
  * 设置两端对齐
231
- * @param render
232
- * @param count
233
- * @param spaceWidth
246
+ * @param render
247
+ * @param count
248
+ * @param spaceWidth
234
249
  */
235
- setAlignJustify(render, count, spaceWidth) {
250
+ private setAlignJustify(render: RenderObject, count: number, spaceWidth: number): number {
236
251
  if (render instanceof BranchRenderObject) {
237
252
  let width = 0;
238
253
  for (let i = 0; i < render.length; i++) {
@@ -242,8 +257,7 @@ export class ElementMeasure {
242
257
  width += currRender.rect.width;
243
258
  }
244
259
  render.rect.width = width;
245
- }
246
- else if (render instanceof LeafRenderObject) {
260
+ } else if (render instanceof LeafRenderObject) {
247
261
  if (render instanceof TextGroupRenderObject) {
248
262
  let i = count === 0 ? 1 : 0;
249
263
  for (; i < render.textMeasures.length; i++) {
@@ -251,8 +265,7 @@ export class ElementMeasure {
251
265
  }
252
266
  render.measure();
253
267
  count += render.textMeasures.length;
254
- }
255
- else {
268
+ } else {
256
269
  if (count !== 0) {
257
270
  render.rect.width += spaceWidth;
258
271
  }
@@ -261,29 +274,30 @@ export class ElementMeasure {
261
274
  }
262
275
  return count;
263
276
  }
277
+
264
278
  /**
265
279
  * 获取段落行渲染单位个数,字符需要计算为字符长度
266
280
  */
267
- getRenderUnitLength(paraLine) {
281
+ private getRenderUnitLength(paraLine: RenderObject): number {
268
282
  if (paraLine instanceof LeafRenderObject) {
269
283
  if (paraLine instanceof TextGroupRenderObject) {
270
284
  return paraLine.textMeasures.length;
271
- }
272
- else {
285
+ } else {
273
286
  return 1;
274
287
  }
275
- }
276
- else if (paraLine instanceof BranchRenderObject) {
288
+ } else if (paraLine instanceof BranchRenderObject) {
277
289
  let count = 0;
278
290
  for (let i = 0; i < paraLine.length; i++) {
279
291
  count += this.getRenderUnitLength(paraLine.getChild(i));
280
292
  }
281
293
  return count;
282
294
  }
283
- throw new Error('未到达计算位置');
295
+ throw new Error('未到达计算位置')
284
296
  }
285
- getInlineGroupRenderItem(item) {
286
- const inlineGroupRender = item.createRenderObject(this.options, this.renderCtx);
297
+
298
+
299
+ getInlineGroupRenderItem(item: InlineGroupElement): RenderObject | null {
300
+ const inlineGroupRender = item.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;
287
301
  if (!inlineGroupRender) {
288
302
  return null;
289
303
  }
@@ -295,17 +309,16 @@ export class ElementMeasure {
295
309
  if (child.measureRender) {
296
310
  inlineGroupRender.addChild(child.measureRender);
297
311
  }
298
- }
299
- else if (child instanceof InlineGroupElement) {
312
+ } else if (child instanceof InlineGroupElement) {
300
313
  item.measureRender = this.getInlineGroupRenderItem(child);
301
314
  if (item.measureRender) {
302
315
  inlineGroupRender.addChild(item.measureRender);
303
316
  }
304
- }
305
- else {
306
- throw new Error('未实现');
317
+ } else {
318
+ throw new Error('未实现')
307
319
  }
308
320
  }
321
+
309
322
  ElementUtil.remeasureInlineGroupRender(inlineGroupRender);
310
323
  //限制最小长度
311
324
  if (item instanceof DataElementInlineGroup) {
@@ -314,14 +327,14 @@ export class ElementMeasure {
314
327
  const nullText = new TextGroupElement();
315
328
  nullText.isDecorate = true;
316
329
  nullText.disableClick = true;
317
- const baseTextProps = item.props;
318
- nullText.text = baseTextProps.nullText;
330
+ const baseTextProps = (<any>item).props as DataEleBaseTextProps;
331
+ nullText.text = baseTextProps.nullText as string;
319
332
  baseTextProps.nullTextProps.clone(nullText.props);
320
333
  const nullTextRender = nullText.createRenderObject(this.options, this.renderCtx);
321
334
  inlineGroupRender.insertChild(nullTextRender, 1);
322
335
  ElementUtil.remeasureInlineGroupRender(inlineGroupRender);
323
336
  }
324
- const props = item.props;
337
+ const props = (<any>item).props as DataEleBaseProps;
325
338
  let minLength = props.minLength ?? 14;
326
339
  minLength = minLength < 14 ? 14 : minLength;
327
340
  if (item instanceof DataElementInlineGroup && inlineGroupRender.rect.width < minLength) {
@@ -334,7 +347,9 @@ export class ElementMeasure {
334
347
  }
335
348
  return inlineGroupRender;
336
349
  }
337
- cutRenderItem(render, nextRender, limitWidth, lineEmpty, inCloseBody) {
350
+
351
+
352
+ cutRenderItem(render: RenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {
338
353
  if (render instanceof LeafRenderObject) {
339
354
  if (render.rect.width > limitWidth && render instanceof TextGroupRenderObject) {
340
355
  return this.cutTextRender(render, nextRender, limitWidth, lineEmpty, inCloseBody);
@@ -346,15 +361,15 @@ export class ElementMeasure {
346
361
  return { firstItem: render, lastItem: null, br: render.element.type === 'br' };
347
362
  }
348
363
  return { firstItem: null, lastItem: null };
349
- }
350
- else if (render instanceof InlineGroupRenderObject) {
364
+ } else if (render instanceof InlineGroupRenderObject) {
351
365
  return this.cutInlineGroupRenderItem(render, limitWidth, lineEmpty, inCloseBody);
352
366
  }
353
- throw new Error('到达计算边界');
367
+ throw new Error('到达计算边界')
354
368
  }
355
- cutTextRender(render, nextRender, limitWidth, lineEmpty, inCloseBody) {
369
+
370
+ cutTextRender(render: TextGroupRenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {
356
371
  let sumWidth = 0;
357
- const cutRender = render.clone();
372
+ const cutRender = render.clone() as TextGroupRenderObject;
358
373
  cutRender.textMeasures.length = 0;
359
374
  let i = 0;
360
375
  for (; i < render.textMeasures.length; i++) {
@@ -373,17 +388,19 @@ export class ElementMeasure {
373
388
  if (i <= 0) {
374
389
  return { firstItem: null, lastItem: null };
375
390
  }
391
+
376
392
  cutRender.textMeasures = render.textMeasures.splice(0, i);
377
393
  render.measure();
378
394
  cutRender.measure();
379
395
  return { firstItem: cutRender, lastItem: render, br: true };
380
396
  }
397
+
381
398
  /**
382
399
  * 处理前置标点,前置标点不能出现在末尾
383
- * @param render
384
- * @param i
400
+ * @param render
401
+ * @param i
385
402
  */
386
- patchHandleLeadingPunctuation(render, i, lineEmpty) {
403
+ private patchHandleLeadingPunctuation(render: TextGroupRenderObject, i: number, lineEmpty: boolean): number {
387
404
  if (i === 1 && lineEmpty) {
388
405
  return i;
389
406
  }
@@ -392,13 +409,14 @@ export class ElementMeasure {
392
409
  }
393
410
  return i;
394
411
  }
412
+
395
413
  /**
396
414
  * 处理后置标点,后置标点不能出现在行首
397
- * @param render
398
- * @param i
399
- * @param lineEmpty
415
+ * @param render
416
+ * @param i
417
+ * @param lineEmpty
400
418
  */
401
- patchHandlePostPunctuation(render, nextRender, i, inCloseBody, lineEmpty) {
419
+ private patchHandlePostPunctuation(render: TextGroupRenderObject, nextRender: RenderObject, i: number, inCloseBody: boolean, lineEmpty: boolean): number {
402
420
  if (i === render.textMeasures.length - 1) {
403
421
  //紧跟着的字符包含后置标点
404
422
  if (this.containerStartSymbolInTextStart(nextRender)) {
@@ -408,12 +426,10 @@ export class ElementMeasure {
408
426
  if (inCloseBody && this.containPostPunctuation(render.textMeasures[i]?.char)) {
409
427
  if (this.containPostPunctuation(render.textMeasures[i + 1]?.char)) {
410
428
  i--;
411
- }
412
- else {
429
+ } else {
413
430
  i++;
414
431
  }
415
- }
416
- else {
432
+ } else {
417
433
  if (i <= 1) {
418
434
  //debugger;
419
435
  }
@@ -423,24 +439,27 @@ export class ElementMeasure {
423
439
  }
424
440
  return i;
425
441
  }
442
+
426
443
  /**
427
444
  * 是否包含后置标点
428
- * @param str
429
- * @returns
445
+ * @param str
446
+ * @returns
430
447
  */
431
- containPostPunctuation(str) {
448
+ private containPostPunctuation(str: string): boolean {
432
449
  return '!),.:;?]}¨·ˇˉ―‖’”…∶、。〃々〉》」』】〕〗!"'),.:;?]`|}~¢'.indexOf(str) > -1;
433
450
  }
451
+
434
452
  //是否包含前置标点
435
- containLeadingPunctuation(str) {
453
+ private containLeadingPunctuation(str: string): boolean {
436
454
  return '‘“〈《「『【〔〖([{£'.indexOf(str) > -1;
437
455
  }
456
+
438
457
  /**
439
458
  * 文本开头是否包含后置标点
440
- * @param render
441
- * @returns
459
+ * @param render
460
+ * @returns
442
461
  */
443
- containerStartSymbolInTextStart(render) {
462
+ private containerStartSymbolInTextStart(render: RenderObject): boolean {
444
463
  //return false;
445
464
  if (render instanceof TextGroupRenderObject) {
446
465
  if (render.textMeasures.length > 0) {
@@ -449,26 +468,27 @@ export class ElementMeasure {
449
468
  }
450
469
  return false;
451
470
  }
452
- cutFillNullRender(render, limitWidth) {
471
+
472
+ cutFillNullRender(render: FillNullSpaceRenderObject, limitWidth: number): ICutLineData {
453
473
  if (limitWidth === 0) {
454
- return { firstItem: null, lastItem: null };
474
+ return { firstItem: null, lastItem: null }
455
475
  }
456
476
  if (render.rect.width > limitWidth) {
457
477
  const cutRender = new FillNullSpaceRenderObject();
458
478
  cutRender.rect.width = limitWidth;
459
479
  cutRender.rect.height = render.rect.height;
460
480
  render.rect.width = render.rect.width - limitWidth;
461
- return { firstItem: cutRender, lastItem: render };
462
- }
463
- else {
464
- return { firstItem: render, lastItem: null };
481
+ return { firstItem: cutRender, lastItem: render }
482
+ } else {
483
+ return { firstItem: render, lastItem: null }
465
484
  }
466
485
  }
486
+
467
487
  /**
468
488
  * 行内编组元素超出行内可用空间,需要根据剩余空间长度进行截断
469
489
  */
470
- cutInlineGroupRenderItem(render, limitWidth, emptyLine, inCloseBody) {
471
- const cutRender = render.element.createRenderObject(this.options, this.renderCtx);
490
+ cutInlineGroupRenderItem(render: InlineGroupRenderObject, limitWidth: number, emptyLine: boolean, inCloseBody: boolean): ICutLineData {
491
+ const cutRender = render.element.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;
472
492
  let x = 0;
473
493
  let br = false;
474
494
  const items = [...render.getItems()];
@@ -486,8 +506,7 @@ export class ElementMeasure {
486
506
  }
487
507
  br = childBr || br;
488
508
  break;
489
- }
490
- else {
509
+ } else {
491
510
  render.removeChild(child);
492
511
  cutRender.addChild(child);
493
512
  }
@@ -496,8 +515,7 @@ export class ElementMeasure {
496
515
  br = true;
497
516
  break;
498
517
  }
499
- }
500
- else if (child instanceof InlineGroupRenderObject) {
518
+ } else if (child instanceof InlineGroupRenderObject) {
501
519
  if (x + child.rect.width > limitWidth) {
502
520
  const { firstItem, br: childBr } = this.cutInlineGroupRenderItem(child, limitWidth - x, emptyLine && cutRender.length === 0, inCloseBody);
503
521
  if (firstItem) {
@@ -505,8 +523,7 @@ export class ElementMeasure {
505
523
  }
506
524
  br = childBr || br;
507
525
  break;
508
- }
509
- else {
526
+ } else {
510
527
  render.removeChild(child);
511
528
  cutRender.addChild(child);
512
529
  }
@@ -520,11 +537,12 @@ export class ElementMeasure {
520
537
  ElementUtil.remeasureInlineGroupRender(render);
521
538
  return { firstItem: cutRender, lastItem: render.length ? render : null, br };
522
539
  }
540
+
523
541
  /**
524
542
  * 修改测量完毕后的元素状态
525
- * @param ele
543
+ * @param ele
526
544
  */
527
- setMeasureCompletedModifyFlag(ele) {
545
+ setMeasureCompletedModifyFlag(ele: Element): void {
528
546
  if (ele instanceof BranchElement) {
529
547
  for (let i = 0; i < ele.length; i++) {
530
548
  this.setMeasureCompletedModifyFlag(ele.getChild(i));
@@ -532,7 +550,8 @@ export class ElementMeasure {
532
550
  }
533
551
  ele.modifyFlag = ModifyFlag.None;
534
552
  }
535
- clearPaintCache(ele) {
553
+
554
+ clearPaintCache(ele: Element): void {
536
555
  ele.beginMeasure();
537
556
  if (ele instanceof BranchElement) {
538
557
  for (let i = 0; i < ele.length; i++) {
@@ -540,12 +559,15 @@ export class ElementMeasure {
540
559
  }
541
560
  }
542
561
  }
543
- endMeasures(ele) {
562
+
563
+ endMeasures(ele: Element): void {
544
564
  if (ele instanceof BranchElement) {
545
565
  for (let i = 0; i < ele.length; i++) {
546
566
  this.endMeasures(ele.getChild(i));
547
567
  }
548
568
  }
549
569
  }
570
+
571
+
572
+
550
573
  }
551
- //# sourceMappingURL=element-measure.js.map