@hailin-zheng/editor-core 1.0.10 → 1.0.14

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