@hailin-zheng/editor-core 1.0.4 → 1.0.7

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 (302) hide show
  1. package/{dist → lib}/doc-ruler.d.ts +0 -0
  2. package/{dist → lib}/doc-ruler.js +0 -0
  3. package/{dist → lib}/doc-ruler.js.map +0 -0
  4. package/{dist → lib}/framework/common-util.d.ts +0 -0
  5. package/{dist → lib}/framework/common-util.js +0 -0
  6. package/{dist → lib}/framework/common-util.js.map +0 -0
  7. package/{dist → lib}/framework/document-change.d.ts +0 -0
  8. package/{dist → lib}/framework/document-change.js +0 -0
  9. package/{dist → lib}/framework/document-change.js.map +0 -0
  10. package/{dist → lib}/framework/document-combine.d.ts +0 -0
  11. package/{dist → lib}/framework/document-combine.js +0 -0
  12. package/{dist → lib}/framework/document-combine.js.map +0 -0
  13. package/{dist → lib}/framework/document-comment.d.ts +0 -0
  14. package/{dist → lib}/framework/document-comment.js +0 -0
  15. package/{dist → lib}/framework/document-comment.js.map +0 -0
  16. package/{dist → lib}/framework/document-context.d.ts +0 -0
  17. package/{dist → lib}/framework/document-context.js +0 -0
  18. package/{dist → lib}/framework/document-context.js.map +0 -0
  19. package/{dist → lib}/framework/document-eval-func.d.ts +0 -0
  20. package/{dist → lib}/framework/document-eval-func.js +0 -0
  21. package/{dist → lib}/framework/document-eval-func.js.map +0 -0
  22. package/{dist → lib}/framework/document-event.d.ts +0 -0
  23. package/{dist → lib}/framework/document-event.js +0 -0
  24. package/{dist → lib}/framework/document-event.js.map +0 -0
  25. package/{dist → lib}/framework/document-history.d.ts +0 -0
  26. package/{dist → lib}/framework/document-history.js +0 -0
  27. package/{dist → lib}/framework/document-history.js.map +0 -0
  28. package/{dist → lib}/framework/document-images-loader.d.ts +0 -0
  29. package/{dist → lib}/framework/document-images-loader.js +0 -0
  30. package/{dist → lib}/framework/document-images-loader.js.map +0 -0
  31. package/{dist → lib}/framework/document-input-cursor.d.ts +0 -0
  32. package/{dist → lib}/framework/document-input-cursor.js +0 -0
  33. package/{dist → lib}/framework/document-input-cursor.js.map +0 -0
  34. package/{dist → lib}/framework/document-paint.d.ts +0 -0
  35. package/{dist → lib}/framework/document-paint.js +0 -0
  36. package/{dist → lib}/framework/document-paint.js.map +0 -0
  37. package/{dist → lib}/framework/document-print-offscreen.d.ts +0 -0
  38. package/{dist → lib}/framework/document-print-offscreen.js +0 -0
  39. package/{dist → lib}/framework/document-print-offscreen.js.map +0 -0
  40. package/{dist → lib}/framework/document-print.d.ts +0 -0
  41. package/{dist → lib}/framework/document-print.js +0 -0
  42. package/{dist → lib}/framework/document-print.js.map +0 -0
  43. package/{dist → lib}/framework/document-segmenter.d.ts +0 -0
  44. package/{dist → lib}/framework/document-segmenter.js +0 -0
  45. package/{dist → lib}/framework/document-segmenter.js.map +0 -0
  46. package/{dist → lib}/framework/document-selection.d.ts +0 -0
  47. package/{dist → lib}/framework/document-selection.js +0 -0
  48. package/{dist → lib}/framework/document-selection.js.map +0 -0
  49. package/{dist → lib}/framework/document-template.d.ts +0 -0
  50. package/{dist → lib}/framework/document-template.js +0 -0
  51. package/{dist → lib}/framework/document-template.js.map +0 -0
  52. package/{dist → lib}/framework/document-textline-mode.d.ts +0 -0
  53. package/{dist → lib}/framework/document-textline-mode.js +0 -0
  54. package/{dist → lib}/framework/document-textline-mode.js.map +0 -0
  55. package/{dist → lib}/framework/element-define.d.ts +0 -0
  56. package/{dist → lib}/framework/element-define.js +0 -0
  57. package/{dist → lib}/framework/element-define.js.map +0 -0
  58. package/{dist → lib}/framework/element-event-define.d.ts +0 -0
  59. package/{dist → lib}/framework/element-event-define.js +0 -0
  60. package/{dist → lib}/framework/element-event-define.js.map +0 -0
  61. package/{dist → lib}/framework/element-measure.d.ts +0 -0
  62. package/{dist → lib}/framework/element-measure.js +0 -0
  63. package/{dist → lib}/framework/element-measure.js.map +0 -0
  64. package/{dist → lib}/framework/element-paint.d.ts +0 -0
  65. package/{dist → lib}/framework/element-paint.js +0 -0
  66. package/{dist → lib}/framework/element-paint.js.map +0 -0
  67. package/{dist → lib}/framework/element-props.d.ts +0 -0
  68. package/{dist → lib}/framework/element-props.js +0 -0
  69. package/{dist → lib}/framework/element-props.js.map +0 -0
  70. package/{dist → lib}/framework/element-reader.d.ts +0 -0
  71. package/{dist → lib}/framework/element-reader.js +0 -0
  72. package/{dist → lib}/framework/element-reader.js.map +0 -0
  73. package/{dist → lib}/framework/element-render-cut.d.ts +0 -0
  74. package/{dist → lib}/framework/element-render-cut.js +0 -0
  75. package/{dist → lib}/framework/element-render-cut.js.map +0 -0
  76. package/{dist → lib}/framework/element-serialize.d.ts +0 -0
  77. package/{dist → lib}/framework/element-serialize.js +0 -0
  78. package/{dist → lib}/framework/element-serialize.js.map +0 -0
  79. package/{dist → lib}/framework/element-util.d.ts +0 -0
  80. package/{dist → lib}/framework/element-util.js +0 -0
  81. package/{dist → lib}/framework/element-util.js.map +0 -0
  82. package/{dist → lib}/framework/impl/checkbox/checkbox-impl.d.ts +0 -0
  83. package/{dist → lib}/framework/impl/checkbox/checkbox-impl.js +0 -0
  84. package/{dist → lib}/framework/impl/checkbox/checkbox-impl.js.map +0 -0
  85. package/{dist → lib}/framework/impl/comments/comment-content-impl.d.ts +0 -0
  86. package/{dist → lib}/framework/impl/comments/comment-content-impl.js +0 -0
  87. package/{dist → lib}/framework/impl/comments/comment-content-impl.js.map +0 -0
  88. package/{dist → lib}/framework/impl/comments/comment-element-impl.d.ts +0 -0
  89. package/{dist → lib}/framework/impl/comments/comment-element-impl.js +0 -0
  90. package/{dist → lib}/framework/impl/comments/comment-element-impl.js.map +0 -0
  91. package/{dist → lib}/framework/impl/comments/comments-container-impl.d.ts +0 -0
  92. package/{dist → lib}/framework/impl/comments/comments-container-impl.js +0 -0
  93. package/{dist → lib}/framework/impl/comments/comments-container-impl.js.map +0 -0
  94. package/{dist → lib}/framework/impl/comments/comments-util.d.ts +0 -0
  95. package/{dist → lib}/framework/impl/comments/comments-util.js +0 -0
  96. package/{dist → lib}/framework/impl/comments/comments-util.js.map +0 -0
  97. package/{dist → lib}/framework/impl/comments/validate-msg-impl.d.ts +0 -0
  98. package/{dist → lib}/framework/impl/comments/validate-msg-impl.js +0 -0
  99. package/{dist → lib}/framework/impl/comments/validate-msg-impl.js.map +0 -0
  100. package/{dist → lib}/framework/impl/data-element/data-decorate-impl.d.ts +0 -0
  101. package/{dist → lib}/framework/impl/data-element/data-decorate-impl.js +0 -0
  102. package/{dist → lib}/framework/impl/data-element/data-decorate-impl.js.map +0 -0
  103. package/{dist → lib}/framework/impl/data-element/data-element-barcode.d.ts +0 -0
  104. package/{dist → lib}/framework/impl/data-element/data-element-barcode.js +0 -0
  105. package/{dist → lib}/framework/impl/data-element/data-element-barcode.js.map +0 -0
  106. package/{dist → lib}/framework/impl/data-element/data-element-base-impl.d.ts +0 -0
  107. package/{dist → lib}/framework/impl/data-element/data-element-base-impl.js +0 -0
  108. package/{dist → lib}/framework/impl/data-element/data-element-base-impl.js.map +0 -0
  109. package/{dist → lib}/framework/impl/data-element/data-element-check-impl.d.ts +0 -0
  110. package/{dist → lib}/framework/impl/data-element/data-element-check-impl.js +0 -0
  111. package/{dist → lib}/framework/impl/data-element/data-element-check-impl.js.map +0 -0
  112. package/{dist → lib}/framework/impl/data-element/data-element-date-impl.d.ts +0 -0
  113. package/{dist → lib}/framework/impl/data-element/data-element-date-impl.js +0 -0
  114. package/{dist → lib}/framework/impl/data-element/data-element-date-impl.js.map +0 -0
  115. package/{dist → lib}/framework/impl/data-element/data-element-group-impl.d.ts +0 -0
  116. package/{dist → lib}/framework/impl/data-element/data-element-group-impl.js +0 -0
  117. package/{dist → lib}/framework/impl/data-element/data-element-group-impl.js.map +0 -0
  118. package/{dist → lib}/framework/impl/data-element/data-element-image-impl.d.ts +0 -0
  119. package/{dist → lib}/framework/impl/data-element/data-element-image-impl.js +0 -0
  120. package/{dist → lib}/framework/impl/data-element/data-element-image-impl.js.map +0 -0
  121. package/{dist → lib}/framework/impl/data-element/data-element-list-impl.d.ts +0 -0
  122. package/{dist → lib}/framework/impl/data-element/data-element-list-impl.js +0 -0
  123. package/{dist → lib}/framework/impl/data-element/data-element-list-impl.js.map +0 -0
  124. package/{dist → lib}/framework/impl/data-element/data-element-text-impl.d.ts +0 -0
  125. package/{dist → lib}/framework/impl/data-element/data-element-text-impl.js +0 -0
  126. package/{dist → lib}/framework/impl/data-element/data-element-text-impl.js.map +0 -0
  127. package/{dist → lib}/framework/impl/decorate/fill-null-space-imple.d.ts +0 -0
  128. package/{dist → lib}/framework/impl/decorate/fill-null-space-imple.js +0 -0
  129. package/{dist → lib}/framework/impl/decorate/fill-null-space-imple.js.map +0 -0
  130. package/{dist → lib}/framework/impl/document/doc-body-impl.d.ts +0 -0
  131. package/{dist → lib}/framework/impl/document/doc-body-impl.js +0 -0
  132. package/{dist → lib}/framework/impl/document/doc-body-impl.js.map +0 -0
  133. package/{dist → lib}/framework/impl/document/doc-body-part-impl.d.ts +0 -0
  134. package/{dist → lib}/framework/impl/document/doc-body-part-impl.js +0 -0
  135. package/{dist → lib}/framework/impl/document/doc-body-part-impl.js.map +0 -0
  136. package/{dist → lib}/framework/impl/document/doc-container-impl.d.ts +0 -0
  137. package/{dist → lib}/framework/impl/document/doc-container-impl.js +0 -0
  138. package/{dist → lib}/framework/impl/document/doc-container-impl.js.map +0 -0
  139. package/{dist → lib}/framework/impl/document/doc-footer-impl.d.ts +0 -0
  140. package/{dist → lib}/framework/impl/document/doc-footer-impl.js +0 -0
  141. package/{dist → lib}/framework/impl/document/doc-footer-impl.js.map +0 -0
  142. package/{dist → lib}/framework/impl/document/doc-header-impl.d.ts +0 -0
  143. package/{dist → lib}/framework/impl/document/doc-header-impl.js +0 -0
  144. package/{dist → lib}/framework/impl/document/doc-header-impl.js.map +0 -0
  145. package/{dist → lib}/framework/impl/document/doc-impl.d.ts +0 -0
  146. package/{dist → lib}/framework/impl/document/doc-impl.js +0 -0
  147. package/{dist → lib}/framework/impl/document/doc-impl.js.map +0 -0
  148. package/{dist → lib}/framework/impl/media-formula/menstrual-history.d.ts +0 -0
  149. package/{dist → lib}/framework/impl/media-formula/menstrual-history.js +0 -0
  150. package/{dist → lib}/framework/impl/media-formula/menstrual-history.js.map +0 -0
  151. package/{dist → lib}/framework/impl/paragraph/p-impl.d.ts +0 -0
  152. package/{dist → lib}/framework/impl/paragraph/p-impl.js +0 -0
  153. package/{dist → lib}/framework/impl/paragraph/p-impl.js.map +0 -0
  154. package/{dist → lib}/framework/impl/picture/image-impl.d.ts +0 -0
  155. package/{dist → lib}/framework/impl/picture/image-impl.js +0 -0
  156. package/{dist → lib}/framework/impl/picture/image-impl.js.map +0 -0
  157. package/{dist → lib}/framework/impl/radio/radio-impl.d.ts +0 -0
  158. package/{dist → lib}/framework/impl/radio/radio-impl.js +0 -0
  159. package/{dist → lib}/framework/impl/radio/radio-impl.js.map +0 -0
  160. package/{dist → lib}/framework/impl/symbol/br-symbol-impl.d.ts +0 -0
  161. package/{dist → lib}/framework/impl/symbol/br-symbol-impl.js +0 -0
  162. package/{dist → lib}/framework/impl/symbol/br-symbol-impl.js.map +0 -0
  163. package/{dist → lib}/framework/impl/symbol/p-symbol-impl.d.ts +0 -0
  164. package/{dist → lib}/framework/impl/symbol/p-symbol-impl.js +0 -0
  165. package/{dist → lib}/framework/impl/symbol/p-symbol-impl.js.map +0 -0
  166. package/{dist → lib}/framework/impl/table/table-cell-impl.d.ts +0 -0
  167. package/{dist → lib}/framework/impl/table/table-cell-impl.js +0 -0
  168. package/{dist → lib}/framework/impl/table/table-cell-impl.js.map +0 -0
  169. package/{dist → lib}/framework/impl/table/table-impl.d.ts +0 -0
  170. package/{dist → lib}/framework/impl/table/table-impl.js +0 -0
  171. package/{dist → lib}/framework/impl/table/table-impl.js.map +0 -0
  172. package/{dist → lib}/framework/impl/table/table-row-impl.d.ts +0 -0
  173. package/{dist → lib}/framework/impl/table/table-row-impl.js +0 -0
  174. package/{dist → lib}/framework/impl/table/table-row-impl.js.map +0 -0
  175. package/{dist → lib}/framework/impl/table/table-split-cell-patch.d.ts +0 -0
  176. package/{dist → lib}/framework/impl/table/table-split-cell-patch.js +0 -0
  177. package/{dist → lib}/framework/impl/table/table-split-cell-patch.js.map +0 -0
  178. package/{dist → lib}/framework/impl/table/table-split-cell.d.ts +0 -0
  179. package/{dist → lib}/framework/impl/table/table-split-cell.js +0 -0
  180. package/{dist → lib}/framework/impl/table/table-split-cell.js.map +0 -0
  181. package/{dist → lib}/framework/impl/table/table-util.d.ts +0 -0
  182. package/{dist → lib}/framework/impl/table/table-util.js +0 -0
  183. package/{dist → lib}/framework/impl/table/table-util.js.map +0 -0
  184. package/{dist → lib}/framework/impl/text/text-impl.d.ts +0 -0
  185. package/{dist → lib}/framework/impl/text/text-impl.js +0 -0
  186. package/{dist → lib}/framework/impl/text/text-impl.js.map +0 -0
  187. package/{dist → lib}/framework/impl/text/track-run-impl.d.ts +0 -0
  188. package/{dist → lib}/framework/impl/text/track-run-impl.js +0 -0
  189. package/{dist → lib}/framework/impl/text/track-run-impl.js.map +0 -0
  190. package/{dist → lib}/framework/notify.d.ts +0 -0
  191. package/{dist → lib}/framework/notify.js +0 -0
  192. package/{dist → lib}/framework/notify.js.map +0 -0
  193. package/{dist → lib}/framework/range-util.d.ts +0 -0
  194. package/{dist → lib}/framework/range-util.js +0 -0
  195. package/{dist → lib}/framework/range-util.js.map +0 -0
  196. package/{dist → lib}/framework/render-context.d.ts +0 -0
  197. package/{dist → lib}/framework/render-context.js +0 -0
  198. package/{dist → lib}/framework/render-context.js.map +0 -0
  199. package/{dist → lib}/framework/render-define.d.ts +0 -0
  200. package/{dist → lib}/framework/render-define.js +0 -0
  201. package/{dist → lib}/framework/render-define.js.map +0 -0
  202. package/{dist → lib}/framework/selection-overlays.d.ts +0 -0
  203. package/{dist → lib}/framework/selection-overlays.js +0 -0
  204. package/{dist → lib}/framework/selection-overlays.js.map +0 -0
  205. package/{dist → lib}/texteditor.d.ts +0 -0
  206. package/{dist → lib}/texteditor.js +0 -0
  207. package/{dist → lib}/texteditor.js.map +0 -0
  208. package/{dist → lib}/util/subject.d.ts +0 -0
  209. package/{dist → lib}/util/subject.js +0 -0
  210. package/{dist → lib}/util/subject.js.map +0 -0
  211. package/{dist → lib}/util/table-bind.d.ts +0 -0
  212. package/{dist → lib}/util/table-bind.js +0 -0
  213. package/{dist → lib}/util/table-bind.js.map +0 -0
  214. package/package.json +7 -2
  215. package/src/med_editor/doc-ruler.ts +0 -340
  216. package/src/med_editor/framework/common-util.ts +0 -200
  217. package/src/med_editor/framework/document-change.ts +0 -1392
  218. package/src/med_editor/framework/document-combine.ts +0 -44
  219. package/src/med_editor/framework/document-comment.ts +0 -168
  220. package/src/med_editor/framework/document-context.ts +0 -410
  221. package/src/med_editor/framework/document-eval-func.ts +0 -53
  222. package/src/med_editor/framework/document-event.ts +0 -1082
  223. package/src/med_editor/framework/document-history.ts +0 -76
  224. package/src/med_editor/framework/document-images-loader.ts +0 -74
  225. package/src/med_editor/framework/document-input-cursor.ts +0 -244
  226. package/src/med_editor/framework/document-paint.ts +0 -110
  227. package/src/med_editor/framework/document-print-offscreen.ts +0 -134
  228. package/src/med_editor/framework/document-print.ts +0 -219
  229. package/src/med_editor/framework/document-segmenter.ts +0 -211
  230. package/src/med_editor/framework/document-selection.ts +0 -391
  231. package/src/med_editor/framework/document-template.ts +0 -20
  232. package/src/med_editor/framework/document-textline-mode.ts +0 -34
  233. package/src/med_editor/framework/element-define.ts +0 -674
  234. package/src/med_editor/framework/element-event-define.ts +0 -142
  235. package/src/med_editor/framework/element-measure.ts +0 -573
  236. package/src/med_editor/framework/element-paint.ts +0 -176
  237. package/src/med_editor/framework/element-props.ts +0 -938
  238. package/src/med_editor/framework/element-reader.ts +0 -159
  239. package/src/med_editor/framework/element-render-cut.ts +0 -456
  240. package/src/med_editor/framework/element-serialize.ts +0 -128
  241. package/src/med_editor/framework/element-util.ts +0 -1565
  242. package/src/med_editor/framework/impl/checkbox/checkbox-impl.ts +0 -71
  243. package/src/med_editor/framework/impl/comments/comment-content-impl.ts +0 -119
  244. package/src/med_editor/framework/impl/comments/comment-element-impl.ts +0 -65
  245. package/src/med_editor/framework/impl/comments/comments-container-impl.ts +0 -68
  246. package/src/med_editor/framework/impl/comments/comments-util.ts +0 -84
  247. package/src/med_editor/framework/impl/comments/validate-msg-impl.ts +0 -94
  248. package/src/med_editor/framework/impl/data-element/data-decorate-impl.ts +0 -95
  249. package/src/med_editor/framework/impl/data-element/data-element-barcode.ts +0 -127
  250. package/src/med_editor/framework/impl/data-element/data-element-base-impl.ts +0 -234
  251. package/src/med_editor/framework/impl/data-element/data-element-check-impl.ts +0 -146
  252. package/src/med_editor/framework/impl/data-element/data-element-date-impl.ts +0 -128
  253. package/src/med_editor/framework/impl/data-element/data-element-group-impl.ts +0 -150
  254. package/src/med_editor/framework/impl/data-element/data-element-image-impl.ts +0 -147
  255. package/src/med_editor/framework/impl/data-element/data-element-list-impl.ts +0 -142
  256. package/src/med_editor/framework/impl/data-element/data-element-text-impl.ts +0 -117
  257. package/src/med_editor/framework/impl/decorate/fill-null-space-imple.ts +0 -48
  258. package/src/med_editor/framework/impl/document/doc-body-impl.ts +0 -95
  259. package/src/med_editor/framework/impl/document/doc-body-part-impl.ts +0 -104
  260. package/src/med_editor/framework/impl/document/doc-container-impl.ts +0 -24
  261. package/src/med_editor/framework/impl/document/doc-footer-impl.ts +0 -88
  262. package/src/med_editor/framework/impl/document/doc-header-impl.ts +0 -100
  263. package/src/med_editor/framework/impl/document/doc-impl.ts +0 -226
  264. package/src/med_editor/framework/impl/media-formula/menstrual-history.ts +0 -175
  265. package/src/med_editor/framework/impl/paragraph/p-impl.ts +0 -190
  266. package/src/med_editor/framework/impl/picture/image-impl.ts +0 -136
  267. package/src/med_editor/framework/impl/radio/radio-impl.ts +0 -79
  268. package/src/med_editor/framework/impl/symbol/br-symbol-impl.ts +0 -60
  269. package/src/med_editor/framework/impl/symbol/p-symbol-impl.ts +0 -57
  270. package/src/med_editor/framework/impl/table/table-cell-impl.ts +0 -156
  271. package/src/med_editor/framework/impl/table/table-impl.ts +0 -401
  272. package/src/med_editor/framework/impl/table/table-row-impl.ts +0 -83
  273. package/src/med_editor/framework/impl/table/table-split-cell-patch.ts +0 -98
  274. package/src/med_editor/framework/impl/table/table-split-cell.ts +0 -475
  275. package/src/med_editor/framework/impl/table/table-util.ts +0 -716
  276. package/src/med_editor/framework/impl/text/text-impl.ts +0 -164
  277. package/src/med_editor/framework/impl/text/track-run-impl.ts +0 -135
  278. package/src/med_editor/framework/notify.ts +0 -130
  279. package/src/med_editor/framework/range-util.ts +0 -321
  280. package/src/med_editor/framework/render-context.ts +0 -431
  281. package/src/med_editor/framework/render-define.ts +0 -224
  282. package/src/med_editor/framework/selection-overlays.ts +0 -134
  283. package/src/med_editor/texteditor.ts +0 -1011
  284. package/src/med_editor/util/subject.ts +0 -118
  285. package/src/med_editor/util/table-bind.ts +0 -6
  286. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +0 -3573
  287. 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
  288. 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
  289. 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
  290. 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
  291. 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
  292. package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +0 -2874
  293. package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +0 -341
  294. package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +0 -2201
  295. package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +0 -1069
  296. 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
  297. 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
  298. 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
  299. 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
  300. 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
  301. package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +0 -1070
  302. package/webpack.config.js +0 -46
@@ -1,159 +0,0 @@
1
- import { EditorContext } from "./document-context";
2
- import { BranchElement, ElementFactory, Element, ViewOptions, PageOptions } from "./element-define";
3
- import { CheckBoxFactory } from "./impl/checkbox/checkbox-impl";
4
- import { CommentContentFactory } from "./impl/comments/comment-content-impl";
5
- import { CommentFactory } from "./impl/comments/comment-element-impl";
6
- import { CommsContainerElement, CommentsFactory } from "./impl/comments/comments-container-impl";
7
- import { DataElementCheckFactory } from "./impl/data-element/data-element-check-impl";
8
- import { DataElementDateFactory } from "./impl/data-element/data-element-date-impl";
9
- import { DataElementImgFactory } from "./impl/data-element/data-element-image-impl";
10
- import { DataElementListFactory } from "./impl/data-element/data-element-list-impl";
11
- import { DataElementTextFactory } from "./impl/data-element/data-element-text-impl";
12
- import { DocumentBodyElement, DocumentBodyFactory } from "./impl/document/doc-body-impl";
13
- import { DocumentFooterElement, DocumentFooterFactory } from "./impl/document/doc-footer-impl";
14
- import { DocumentHeaderElement, DocumentHeaderFactory } from "./impl/document/doc-header-impl";
15
- import { DocumentElement, DocumentFactory } from "./impl/document/doc-impl";
16
- import { DataElementMHFactory } from "./impl/media-formula/menstrual-history";
17
- import { ParagraphFactory } from "./impl/paragraph/p-impl";
18
- import { PictureFactory } from "./impl/picture/image-impl";
19
- import { RadioBoxFactory } from "./impl/radio/radio-impl";
20
- import { BreakFactory } from "./impl/symbol/br-symbol-impl";
21
- import { TableCellFactory } from "./impl/table/table-cell-impl";
22
- import { TableFactory } from "./impl/table/table-impl";
23
- import { TableRowFactory } from "./impl/table/table-row-impl";
24
- import { RunElementFactory } from "./impl/text/track-run-impl";
25
- import { TextGroupFactory } from "./impl/text/text-impl";
26
- import { RenderContenxtType } from "./render-context";
27
- import { INotifyPropertyChanged, TrackRunProps } from "./element-props";
28
- import { DataElementGroupFactory } from "@/med_editor/framework/impl/data-element/data-element-group-impl";
29
- import { DocumentBodyPartFactory } from "./impl/document/doc-body-part-impl";
30
- import { DataElementBarcodeFactory } from "./impl/data-element/data-element-barcode";
31
-
32
- export class ElementReader {
33
- constructor(private docCtx: EditorContext, private viewOptions: ViewOptions, private renderCtx: RenderContenxtType) {
34
- this.initFactory();
35
- }
36
-
37
- factories: Array<ElementFactory> = [];
38
-
39
- addFactory<U extends null | object, T extends ElementFactory<U>>(c: new () => T): void {
40
- const instance = new c();
41
- instance.options = this.viewOptions;
42
- this.factories.push(instance as ElementFactory);
43
- }
44
-
45
-
46
- private initFactory(): void {
47
- this.addFactory(DocumentFactory);
48
- this.addFactory(DocumentHeaderFactory);
49
- this.addFactory(DocumentBodyFactory);
50
- this.addFactory(ParagraphFactory);
51
- this.addFactory(TextGroupFactory);
52
- this.addFactory(CheckBoxFactory);
53
- this.addFactory(TableFactory);
54
- this.addFactory(TableRowFactory);
55
- this.addFactory(TableCellFactory);
56
- this.addFactory(DocumentFooterFactory);
57
- this.addFactory(PictureFactory);
58
- this.addFactory(RadioBoxFactory);
59
- this.addFactory(DataElementTextFactory);
60
- this.addFactory(DataElementDateFactory);
61
- this.addFactory(DataElementListFactory);
62
- this.addFactory(DataElementCheckFactory);
63
- this.addFactory(DataElementBarcodeFactory);
64
- this.addFactory(BreakFactory);
65
- this.addFactory(CommentsFactory)
66
- this.addFactory(CommentContentFactory);
67
- this.addFactory(CommentFactory);
68
- this.addFactory(DataElementImgFactory);
69
- this.addFactory(DataElementMHFactory);
70
- this.addFactory(RunElementFactory);
71
- this.addFactory(DataElementGroupFactory);
72
- this.addFactory(DocumentBodyPartFactory);
73
- this.registerReadFunc<TrackRunProps>('ins-run', (data) => {
74
- const props = new TrackRunProps(data.type);
75
- props.userId = data.userId;
76
- props.userName = data.userName;
77
- props.date = data.date;
78
- return props;
79
- })
80
- this.registerReadFunc<TrackRunProps>('del-run', (data) => {
81
- const props = new TrackRunProps(data.type);
82
- props.userId = data.userId;
83
- props.userName = data.userName;
84
- props.date = data.date;
85
- return props;
86
- })
87
- }
88
-
89
- read(data: any | DocumentElement): void {
90
- const document = data instanceof DocumentElement ? data.clone() : this.readElement(data) as DocumentElement;
91
- this.setDocument(document);
92
- }
93
-
94
-
95
- setDocument(document: DocumentElement): void {
96
- // if (this.docCtx.document) {
97
- // this.docCtx.document.destroy();
98
- // }
99
- // this.document?.clearItems();
100
- // document.docProps.clone(this.document.docProps);
101
- document.bodyElement = document.find((item) => item instanceof DocumentBodyElement) as DocumentBodyElement;
102
- document.headerElement = document.find((item) => item instanceof DocumentHeaderElement) as DocumentHeaderElement;
103
- document.footerElement = document.find((item) => item instanceof DocumentFooterElement) as DocumentFooterElement;
104
- document.commentsContainerElement = document.find((item) => item instanceof CommsContainerElement) as CommsContainerElement;
105
- if (!document.commentsContainerElement) {
106
- document.commentsContainerElement = new CommsContainerElement();
107
- }
108
- document.clearItems();
109
- document.addChild(document.headerElement);
110
- document.addChild(document.bodyElement);
111
- document.addChild(document.footerElement);
112
- document.addChild(document.commentsContainerElement);
113
- this.docCtx.document = document;
114
- document.viewOptions = this.viewOptions;
115
- const width = Math.floor(document.props.width * this.viewOptions.mmToPixelsRatio);
116
- const height = Math.floor(document.props.height * this.viewOptions.mmToPixelsRatio);
117
- this.viewOptions.docPageSettings = new PageOptions(width, height, document.props.orient);
118
- //this.viewOptions.viewSettings.width = this.viewOptions.docPageSettings.width + 10;
119
- }
120
-
121
-
122
- readElement(data: any): Element {
123
- const type = data.type as string;
124
- for (const factory of this.factories) {
125
- if (factory.match(type)) {
126
- const element = factory.createElement(data, this.renderCtx);
127
- //this.readExtendsProps(data, element);
128
- if (element instanceof BranchElement) {
129
- const children = data.children || [];
130
- for (const child of children) {
131
- element.addChild(this.readElement(child));
132
- }
133
- }
134
- return element;
135
- }
136
- }
137
- throw new Error('未知的元素类型:' + type);
138
- }
139
-
140
- propsReadFuncs: Map<string, (data: any) => any> = new Map();
141
-
142
- registerReadFunc<T>(propName: string, func: (data: T) => T): void {
143
- this.propsReadFuncs.set(propName, func);
144
- }
145
-
146
- readExtendsProps(data: any, element: Element): void {
147
- if (data.extendsProps && data.extendsProps.length) {
148
- for (const prop of data.extendsProps) {
149
- const func = this.propsReadFuncs.get(prop.name);
150
- if (func) {
151
- const extendProps = func(prop.value);
152
- if (extendProps && element.props instanceof INotifyPropertyChanged) {
153
- element.props.registerProperty(prop.name, extendProps);
154
- }
155
- }
156
- }
157
- }
158
- }
159
- }
@@ -1,456 +0,0 @@
1
- import { ElementUtil } from "./element-util";
2
- import { DocumentBodyRenderObject } from "./impl/document/doc-body-impl";
3
- import { DocumentHeaderRenderObject } from "./impl/document/doc-header-impl";
4
- import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
5
- import { RenderContenxtType } from "./render-context";
6
- import { BlockContentRenderObject, BlockLineRectRenderObject, MuiltBlockLineRenderObject, RenderObject } from "./render-define";
7
- import { Rect, ViewOptions } from "./element-define";
8
- import { TableRowElement, TableRowRenderObject } from "./impl/table/table-row-impl";
9
- import { DocumentFooterRenderObject } from "./impl/document/doc-footer-impl";
10
- import { TableCellElement, TableCellRenderObject } from "./impl/table/table-cell-impl";
11
- import { TableElement, TableRenderObject } from "./impl/table/table-impl";
12
- import { CommsContainerRenderObject } from "./impl/comments/comments-container-impl";
13
- import { ParagraphElement } from "@/med_editor/framework/impl/paragraph/p-impl";
14
-
15
- export class ElementRenderCut {
16
- constructor(private options: ViewOptions, private renderContext: RenderContenxtType) { }
17
-
18
- cutPage(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject> {
19
- if (this.options.fullPageView) {
20
- return this.getFullViewDocRender(documentRender, documentElement);
21
- }
22
- const headerRender = documentRender.getChild(0) as DocumentHeaderRenderObject;
23
- const bodyRender = documentRender.getChild(1).clone() as DocumentBodyRenderObject;
24
- const footerRender = documentRender.getChild(2) as DocumentFooterRenderObject;
25
- const commentsRender = documentRender.getChild(3) as CommsContainerRenderObject;
26
- const { headerLine, footerLine } = documentRender;
27
- let bodyMarginTop = headerLine + headerRender.rect.height + 6;
28
- let bodyMarginBottom = footerLine + footerRender.rect.height;
29
- const { top: bodyTop, bottom: bodyBottom } = documentRender.padding;
30
- bodyMarginTop = bodyMarginTop > bodyTop ? bodyMarginTop : bodyTop;
31
- bodyMarginBottom = bodyMarginBottom > bodyBottom ? bodyMarginBottom : bodyBottom;
32
- documentRender.padding.top = bodyMarginTop;
33
- documentRender.padding.bottom = bodyMarginBottom;
34
- const bodyLimitRect = documentRender.getInnnerRect();
35
- const bodyArray: Array<DocumentBodyRenderObject> = [];
36
- let { emptyBody: pageBodyRender, innerRect: bodyInnerLimitRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
37
- bodyArray.push(pageBodyRender);
38
-
39
- const createBodyHolder = () => {
40
- const { emptyBody, innerRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
41
- pageBodyRender = emptyBody;
42
- bodyInnerLimitRect = innerRect;
43
- bodyArray.push(pageBodyRender);
44
- };
45
-
46
- const appendToBody = (item: BlockContentRenderObject) => {
47
- item.rect.y = bodyInnerLimitRect.height + item.margin.top;
48
- pageBodyRender.addChild(item);
49
- bodyInnerLimitRect.height += item.rect.height + item.margin.top + item.margin.bottom;
50
- //上一个元素的bottom-margin
51
- //bodyInnerLimitRect.prevMargin = item.margin.bottom;
52
- ElementUtil.updateRenderHeightByInnerRect(pageBodyRender, bodyInnerLimitRect);
53
- if (this.checkPageBreak(item)) {
54
- createBodyHolder();
55
- }
56
- };
57
-
58
-
59
- let i = 0;
60
- let cloneBlockContentRender: null | BlockContentRenderObject = bodyRender.getChild(i) as BlockContentRenderObject;
61
- while (cloneBlockContentRender) {
62
- if (bodyInnerLimitRect.maxHeight - bodyInnerLimitRect.height - cloneBlockContentRender.rect.height - cloneBlockContentRender.margin.bottom - cloneBlockContentRender.margin.top < 0) {
63
- //限制的外框尺寸
64
- const bodyAvailHeight = bodyInnerLimitRect.maxHeight - bodyInnerLimitRect.height - cloneBlockContentRender.margin.bottom - cloneBlockContentRender.margin.top;
65
- //限制的内框尺寸
66
- const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(cloneBlockContentRender, bodyAvailHeight);
67
- const cutRenderObject = this.cutRenderItem(cloneBlockContentRender, limitRenderInnterHeight);
68
- //至少有一个块级行元素被切割出来
69
- if (cutRenderObject) {
70
- appendToBody(cutRenderObject);
71
- }
72
- createBodyHolder();
73
- } else {
74
- appendToBody(cloneBlockContentRender);
75
- if (++i < bodyRender.length) {
76
- cloneBlockContentRender = bodyRender.getChild(i) as BlockContentRenderObject;
77
- } else {
78
- cloneBlockContentRender = null;
79
- }
80
- }
81
- }
82
-
83
- const docPages: Array<DocumentRenderObject> = [];
84
- let pageY: number = this.options.docSpace;
85
- for (let i = 0; i < bodyArray.length; i++) {
86
- const body = bodyArray[i];
87
- const documentRender = documentElement.createRenderObject(this.options);
88
- docPages.push(documentRender);
89
- documentRender.rect.y = pageY;
90
- const limitRect = documentRender.getInnnerRect();
91
- const cloneHeaderRender = headerRender.clone();
92
- cloneHeaderRender.rect.x = limitRect.x;
93
- cloneHeaderRender.rect.y = headerLine;
94
- documentRender.addChild(cloneHeaderRender);
95
- body.rect.x = limitRect.x;
96
- body.rect.y = bodyMarginTop;
97
- body.rect.height = bodyInnerLimitRect.maxHeight;
98
- documentRender.addChild(body);
99
- pageY += documentRender.rect.height + this.options.docSpace;
100
- const cloneFooterRender = footerRender.clone();
101
- cloneFooterRender.rect.x = limitRect.x;
102
- cloneFooterRender.rect.y = documentRender.rect.height - bodyMarginBottom;
103
- documentRender.addChild(cloneFooterRender);
104
- //审阅模式,添加审阅窗口
105
- if (this.options.showReviewWindow && commentsRender) {
106
- const commentsContainer = commentsRender.element.createRenderObject(this.options, this.renderContext) as CommsContainerRenderObject;
107
- commentsContainer.padding.top = bodyMarginTop;
108
- commentsContainer.rect.height = documentRender.rect.height;
109
- documentRender.addChild(commentsContainer);
110
- commentsContainer.rect.x = documentRender.rect.x + documentRender.rect.width;
111
- documentRender.rect.width += this.options.reviewWindowWidth;
112
- }
113
- }
114
- return docPages;
115
- }
116
-
117
- private checkPageBreak(item: RenderObject): boolean {
118
- if (item.element && item.element.type === 'p') {
119
- const p = item.element as ParagraphElement;
120
- if (p.props.pageBreak) {
121
- return true;
122
- }
123
- }
124
- return false;
125
- }
126
-
127
- getFullViewDocRender(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject> {
128
- const commentsRender = documentRender.getChild(3) as CommsContainerRenderObject;
129
- const commentsContainer = commentsRender.element.createRenderObject(this.options, this.renderContext) as CommsContainerRenderObject;
130
- documentRender.rect.height -= commentsContainer.rect.height;
131
- const bodyRender = documentRender.getChild(1) as DocumentBodyRenderObject;
132
- if (this.options.showReviewWindow) {
133
- documentRender.removeChild(commentsRender);
134
- documentRender.addChild(commentsContainer);
135
- commentsContainer.padding.top = bodyRender.rect.y;
136
- commentsContainer.rect.height = documentRender.rect.height;
137
- commentsContainer.rect.x = documentRender.rect.x + documentRender.rect.width;
138
- documentRender.rect.width += this.options.reviewWindowWidth;
139
- }
140
- return [documentRender as DocumentRenderObject]
141
- }
142
-
143
- createEmptyBodyRender(bodyRender: DocumentBodyRenderObject, limitRect: Rect): { emptyBody: DocumentBodyRenderObject, innerRect: Rect & { prevMargin: number } } {
144
- const pageBodyRender = bodyRender.element.createRenderObject(this.options, this.renderContext) as DocumentBodyRenderObject;
145
- ElementUtil.setBlockElementLimitSize(pageBodyRender, limitRect);
146
- const bodyInnerLimitRect = pageBodyRender.getInnnerRect();
147
- if (this.options.fullPageView) {
148
- bodyInnerLimitRect.height = Number.MAX_VALUE;
149
- }
150
- return { emptyBody: pageBodyRender, innerRect: { ...bodyInnerLimitRect, prevMargin: 0 } };
151
- }
152
-
153
- /**
154
- * 切割渲染元素
155
- * @param render 被切割的对象
156
- * @param limitHeight
157
- * @param addFunc
158
- * @returns
159
- */
160
- cutRenderItem(render: BlockContentRenderObject, limitHeight: number): BlockContentRenderObject | null {
161
- if (render instanceof TableRowRenderObject) {
162
- return this.cutRowRenderItem(render, limitHeight);
163
- }
164
- if (render instanceof TableRenderObject) {
165
- return this.cutTable(render, limitHeight);
166
- }
167
- const cloneRender = render.element.createRenderObject(this.options, this.renderContext) as MuiltBlockLineRenderObject;
168
- cloneRender.setRenderWidth(render.rect.width);
169
- if (render instanceof MuiltBlockLineRenderObject) {
170
- let sumHeight = 0;
171
- const children = [...render.getItems()];
172
- let j = 0;
173
- let blockLine = children[j];
174
- while (blockLine) {
175
- //sumHeight = ElementUtil.remeasure(cloneRender);
176
- const calcBlockLineHeight = this.getBlockLineHeight(blockLine);
177
- if (calcBlockLineHeight + sumHeight > limitHeight) {
178
- if (blockLine instanceof MuiltBlockLineRenderObject) {
179
- //限制的外框尺寸
180
- const availHeight = limitHeight - sumHeight;
181
- //限制的内框尺寸
182
- const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(render, availHeight);
183
- const cutRenderObject = this.cutRenderItem(blockLine, limitRenderInnterHeight);
184
- if (cutRenderObject) {
185
- cloneRender.addChild(cutRenderObject);
186
- sumHeight += cutRenderObject.rect.height;
187
- blockLine = children[++j];
188
- } else {
189
- break;
190
- }
191
- } else {
192
- break;
193
- }
194
- } else {
195
- render.removeChild(blockLine);
196
- cloneRender.addChild(blockLine);
197
- sumHeight += blockLine.rect.height;
198
- blockLine = children[++j];
199
- }
200
- }
201
- ElementUtil.remeasure(cloneRender);
202
- ElementUtil.remeasure(render);
203
- if (cloneRender.length === 0) {
204
- return null;
205
- } else {
206
- return cloneRender;
207
- }
208
- } else {
209
- throw new Error('未实现');
210
- }
211
- }
212
-
213
- /**
214
- * 切割渲染元素
215
- * @param tbRender 被切割的对象
216
- * @param limitHeight
217
- * @param addFunc
218
- * @returns
219
- */
220
- cutTable(tbRender: TableRenderObject, limitHeight: number): BlockContentRenderObject | null {
221
- const cloneTbRender = tbRender.element.createRenderObject(this.options, this.renderContext) as TableRenderObject;
222
- cloneTbRender.setRenderWidth(tbRender.rect.width);
223
- let sumHeight = 0;
224
- const rows = [...tbRender.getItems()];
225
- //获取跨页需要重复显示的行
226
- const headerRows = this.getHeaderRows(tbRender);
227
- //跨页头的高度
228
- const headerHeight = headerRows.reduce((prev, curr) => prev + curr.rect.height, 0);
229
- if (headerHeight > limitHeight) {
230
- return null;
231
- }
232
- const copyHeaderRows = headerRows.map(item => item.clone());
233
- //获取最后一个截断行,需要根据截断行判断最后一个截断的行位置
234
- const cutOffRows = rows.filter(row => limitHeight >= row.rect.y && limitHeight <= row.rect.y + row.rect.height)
235
- .map((row) => ({ rowIndex: (<TableRowElement>row.element).getIndex(), row }))
236
- .sort((first, second) => second.rowIndex - first.rowIndex);
237
- if (cutOffRows.length === 0) {
238
- throw new Error('无法获取截断行');
239
- }
240
- const joinRow = cutOffRows[0].row;
241
- let j = 0;
242
- let currRow = rows[j];
243
- const cutRows: Array<TableRowRenderObject> = [];
244
- while (currRow) {
245
- const rowContentHeight = this.getBlockLineHeight(currRow);
246
- if (rowContentHeight + sumHeight > limitHeight) {
247
- if (currRow instanceof MuiltBlockLineRenderObject) {
248
- //限制的外框尺寸
249
- const availHeight = limitHeight - sumHeight;
250
- //限制的内框尺寸
251
- const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
252
- const cutRow = this.cutRowRenderItem(currRow, limitRenderInnterHeight) as TableRowRenderObject;
253
- if (cutRow) {
254
- cloneTbRender.addChild(cutRow);
255
- sumHeight += cutRow.rect.height;
256
- cutRows.push(currRow);
257
- if (currRow === joinRow) {
258
- break;
259
- }
260
- currRow = rows[++j];
261
- } else {
262
- break;
263
- }
264
- } else {
265
- break;
266
- }
267
- } else {
268
- tbRender.removeChild(currRow);
269
- cloneTbRender.addChild(currRow);
270
- sumHeight += currRow.rect.height;
271
- currRow = rows[++j];
272
- }
273
- }
274
- this.fixCutTable(tbRender, cutRows);
275
- ElementUtil.remeasure(cloneTbRender);
276
- //存在跨页需要重复显示的行头,则需要重新放置行头
277
- if (copyHeaderRows.length) {
278
- copyHeaderRows.forEach((r, i) => tbRender.insertChild(r, i))
279
- }
280
- ElementUtil.remeasure(tbRender);
281
- if (cloneTbRender.length === 0) {
282
- return null;
283
- } else {
284
- return cloneTbRender;
285
- }
286
- }
287
-
288
- cutRowRenderItem(render: TableRowRenderObject, limitHeight: number): TableRowRenderObject | null {
289
- if (render.element.props.minHeight > 0 && render.rect.height > limitHeight) {
290
- return null;
291
- }
292
- const cloneRowRender = render.element.createRenderObject() as TableRowRenderObject;
293
- cloneRowRender.rect.width = render.rect.width;
294
- cloneRowRender.rect.maxWidth = render.rect.height;
295
- const cellRenders = [...render.getItems()] as Array<TableCellRenderObject>;
296
- const cutCellRenders: Array<RenderObject | null> = [];
297
- for (let i = 0; i < cellRenders.length; i++) {
298
- const cellRender = cellRenders[i];
299
- if (cellRender.rect.height > limitHeight) {
300
- //限制的外框尺寸
301
- const availHeight = limitHeight;
302
- //限制的内框尺寸
303
- const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(cellRender, availHeight);
304
- const cutCellRender = this.cutRenderItem(cellRender, limitRenderInnterHeight);
305
- if (cutCellRender) {
306
- cutCellRenders.push(cutCellRender)
307
- } else {
308
- cutCellRenders.push(null)
309
- }
310
- } else {
311
- const cloneCellRender = cellRender as BlockLineRectRenderObject;
312
- render.removeChild(cellRender);
313
- cutCellRenders.push(cloneCellRender);
314
- }
315
- }
316
- ElementUtil.remeasure(render);
317
- if (cutCellRenders.filter(item => item).length === 0) {
318
- return null;
319
- } else {
320
- //补齐单元格
321
- for (let i = 0; i < cutCellRenders.length; i++) {
322
- let cellRender = cutCellRenders[i] as TableCellRenderObject;
323
- if (!cellRender) {
324
- cellRender = cellRenders[i].clone() as TableCellRenderObject;
325
- ElementUtil.remeasure(cellRender);
326
- }
327
- cloneRowRender.addChild(cellRender);
328
- }
329
- ElementUtil.remeasure(cloneRowRender);
330
- return cloneRowRender;
331
- }
332
- }
333
- /**
334
- * 修复->已经截断的合并单元格要向下移动到合适的位置
335
- * @param tbRender
336
- * @param cutRows
337
- * @returns
338
- */
339
- private fixCutTable(tbRender: TableRenderObject, cutRows: Array<TableRowRenderObject>): void {
340
- if (!cutRows.length) {
341
- return;
342
- }
343
- const tbEle = tbRender.element as TableElement;
344
- const belowMergeRows = new Set<TableRowRenderObject>();
345
- for (let i = 0; i < tbRender.length; i++) {
346
- const row = tbRender.getChild(i) as TableRowRenderObject;
347
- const nextRow = tbRender.getChild(i + 1) as TableRowRenderObject;
348
- if (!nextRow) {
349
- break;
350
- }
351
- if (!cutRows.some(item => item === row)) {
352
- break;
353
- }
354
- if (row.length === tbEle.getColsCount()) {
355
- break;
356
- }
357
- if (this.checkFullRow(row)) {
358
- break;
359
- }
360
- for (let j = 0; j < row.length; j++) {
361
- const cell = row.getChild(j) as TableCellRenderObject;
362
- const cellEle = cell.element as TableCellElement;
363
- const colIndex = cellEle.getIndex();
364
- if (!this.existsCellRender(nextRow, colIndex)) {
365
- const insertColIndex = this.getRowInsertCellIndex(cell, nextRow);
366
- if (insertColIndex === -1) {
367
- const insertColIndex2 = this.getRowInsertCellIndex(cell, nextRow);
368
- throw new Error('未在紧挨下方找到可以放置的位置');
369
- }
370
- //row.removeChild(cell);
371
- nextRow.insertChild(cell, insertColIndex);
372
- belowMergeRows.add(row);
373
- ElementUtil.remeasure(nextRow);
374
- }
375
- }
376
- }
377
- if (belowMergeRows.size) {
378
- for (const row of belowMergeRows) {
379
- tbRender.removeChild(row);
380
- row.clear();
381
- }
382
- ElementUtil.remeasure(tbRender);
383
- }
384
- }
385
-
386
- /**
387
- * 校验当前是否是一个完整的行,没有Null单元格,检查当前是否还需要向下合并
388
- * @param row
389
- */
390
- private checkFullRow(row: TableRowRenderObject): boolean {
391
- let x = 0;
392
- for (let i = 0; i < row.length; i++) {
393
- const cell = row.getChild(i);
394
- if (cell.rect.x !== x) {
395
- return false;
396
- }
397
- x += cell.rect.width;
398
- }
399
- return x === row.rect.width;
400
- }
401
-
402
- private existsCellRender(rowRender: TableRowRenderObject, cellIndex: number): boolean {
403
- for (let i = 0; i < rowRender.length; i++) {
404
- const cellRender = rowRender.getChild(i) as TableCellRenderObject;
405
- const cellEle = cellRender.element as TableCellElement;
406
- if (cellEle.getIndex() === cellIndex) {
407
- return true;
408
- }
409
- }
410
- return false;
411
- }
412
-
413
- private getBlockLineHeight(render: RenderObject): number {
414
- if (render instanceof TableRowRenderObject) {
415
- let maxCellHeight = 0;
416
- for (let i = 0; i < render.length; i++) {
417
- const itemHeight = render.getChild(i).rect.height;
418
- if (itemHeight > maxCellHeight) {
419
- maxCellHeight = itemHeight;
420
- }
421
- }
422
- return maxCellHeight;
423
- }
424
- return render.rect.height;
425
- }
426
-
427
-
428
- getRowInsertCellIndex(sourceCell: TableCellRenderObject, destRow: TableRowRenderObject): number {
429
- for (let i = 0; i < destRow.length; i++) {
430
- const cell = destRow.getChild(i) as TableCellRenderObject;
431
- const rect = cell.rect;
432
- if (sourceCell.rect.x < rect.x) {
433
- return i;
434
- }
435
- }
436
- const lastCell = destRow.getChild(destRow.length - 1);
437
- if (sourceCell.rect.x >= lastCell.rect.x + lastCell.rect.width) {
438
- return destRow.length;
439
- }
440
- return -1;
441
- }
442
-
443
- private getHeaderRows(tb: TableRenderObject): Array<TableRowRenderObject> {
444
- const rows: Array<TableRowRenderObject> = [];
445
- for (let i = 0; i < tb.length; i++) {
446
- const rowRender = tb.getChild(i) as TableRowRenderObject;
447
- const rowEle = rowRender.element as TableRowElement;
448
- if (rowEle.props.headerRow) {
449
- rows.push(rowRender);
450
- } else {
451
- break;
452
- }
453
- }
454
- return rows;
455
- }
456
- }