@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,163 +0,0 @@
1
- import { SelectionRange } from "../../document-selection";
2
- import { ContextMenuElementEvent } from "../../element-event-define";
3
- import { TextProps } from "../../element-props";
4
- import { ElementUtil } from "../../element-util";
5
- import { LeafRenderObject, RenderObject } from "../../render-define";
6
- import { LeafElement, ElementFactory, Element, SerializeProps, ViewOptions, ModifyFlag } from "../../element-define";
7
- import { watchChanged } from "../../notify";
8
- import { RenderContenxtType, TextUnits } from "../../render-context";
9
-
10
- export class TextGroupElement extends LeafElement<TextProps> {
11
- //props: TextProps;
12
- textMeasures: Array<TextUnits> = [];
13
- isMeasure: boolean = false;
14
- constructor() {
15
- super('text');
16
- this.props = new TextProps();
17
- watchChanged(this.props, () => {
18
- this.isMeasure = false;
19
- this.props.clearCache();
20
- });
21
- //this.addPropValueChangedSub(this.props);
22
- //this.addsubscribe(this, this.props.onPropertyChangedSubject.subscribe(() => { this.clearTextCache() }));
23
- this.addEvent<ContextMenuElementEvent>('ElementContextMenu', (evt) => {
24
- const ss = evt.selectionState;
25
- evt.menus.push({
26
- icon: "EditStyle", caption: "选中样式组合", eventObj: {
27
- onClick: (cevt) => {
28
- const range = new SelectionRange();
29
- range.setStart(this, 0);
30
- range.setEnd(this, -1);
31
- ss.addRange(range);
32
- }
33
- }
34
- })
35
- });
36
- }
37
- set text(val: string) {
38
- this.splice(0, this.textMeasures.length, val);
39
- }
40
-
41
- splice(index: number, deleteCount: number, addText: string | null = null): void {
42
- this.isMeasure = false;
43
- addText = addText ?? '';
44
- const addTextUnits = addText.split('').map(char => ({ sourceSize: 0, actualSize: 0, char }));
45
- if (this.textMeasures.length === 0) {
46
- this.textMeasures = addTextUnits;
47
- } else {
48
- this.textMeasures.splice(index, deleteCount, ...addTextUnits);
49
- }
50
- this.pubOnChange('self');
51
- }
52
-
53
- get text() {
54
- return this.textMeasures.map(item => item.char).join('');
55
- }
56
-
57
- createRenderObject(options: ViewOptions, renderCtx: RenderContenxtType): RenderObject {
58
- if (!this.isMeasure || this.modifyFlag !== ModifyFlag.None) {
59
- renderCtx.contentContext.measureTextUnits(this.textMeasures, this.props);
60
- this.isMeasure = true;
61
- }
62
- const render = new TextGroupRenderObject(this);
63
- render.disableClick = this.disableClick;
64
- render.textMeasures = [...this.textMeasures];
65
- render.measure();
66
- return render;
67
- }
68
-
69
- serialize(viewOptions: ViewOptions): SerializeProps & any {
70
- //修饰元素不序列化
71
- if (this.isDecorate) {
72
- return null;
73
- }
74
- return {
75
- type: 'text',
76
- props: {
77
- ...this.props.getSerializeProps(viewOptions)
78
- },
79
- content: this.text,
80
- complete: true
81
- }
82
- }
83
-
84
- clone(data: boolean): TextGroupElement {
85
- const clone = new TextGroupElement();
86
- this.props.clone(clone.props);
87
- clone.text = this.text;
88
- return clone;
89
- }
90
-
91
- destroy(): void {
92
- super.destroy();
93
- }
94
-
95
- spliceText(startOffset: number, endOffset: number, xCopy: boolean): TextGroupElement | null {
96
- endOffset = endOffset === -1 ? this.textMeasures.length : endOffset;
97
- if (endOffset === startOffset) {
98
- return null;
99
- }
100
- const clone = new TextGroupElement();
101
- this.props.clone(clone.props);
102
- if (xCopy) {
103
- clone.textMeasures = this.textMeasures.splice(startOffset, endOffset - startOffset);
104
- } else {
105
- clone.textMeasures = this.textMeasures.filter((item, index) => index >= startOffset && index < endOffset);
106
- }
107
- clone.textMeasures = clone.textMeasures.map(item => ({ sourceSize: 0, actualSize: 0, char: item.char }));
108
- return clone;
109
- }
110
-
111
- clearTextCache(): void {
112
- this.isMeasure = false;
113
- }
114
- }
115
-
116
-
117
- export class TextGroupRenderObject extends LeafRenderObject<TextGroupElement> {
118
- textMeasures!: Array<TextUnits>;
119
- render(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
120
- //null-text不打印
121
- if (ctx.drawMode === 'print' && this.element.isDecorate) {
122
- return;
123
- }
124
- if (this.element.props.border) {
125
- ctx.contentContext.strokeRect(position.x, position.y, this.rect.width, this.rect.height);
126
- }
127
- ctx.contentContext.drawTextUnits(this, position.x, position.y);
128
- // if (this.element.isMouseenter) {
129
- // ctx.overlaysContext.strokeRect(position.x, position.y, this.rect.width, this.rect.height, CommonUtil.randomColor());
130
- // }
131
-
132
- }
133
- constructor(element: TextGroupElement) {
134
- super(element);
135
- }
136
- clone(): RenderObject {
137
- const cloneRender = new TextGroupRenderObject(this.element);
138
- cloneRender.disableClick = this.disableClick;
139
- cloneRender.rect = ElementUtil.cloneRect(this.rect);
140
- cloneRender.textMeasures = [...this.textMeasures];
141
- return cloneRender;
142
- }
143
-
144
- measure(): void {
145
- this.rect.width = this.textMeasures.reduce((prev, curr) => prev + curr.actualSize, 0);
146
- this.rect.height = this.element.props.fontSize;
147
- }
148
- }
149
-
150
- export class TextGroupFactory extends ElementFactory<null> {
151
- match(type: string): boolean {
152
- return type === 'text';
153
- }
154
- createElement(data: any, renderCtx: RenderContenxtType): Element {
155
- const props = data.props as TextProps;
156
- const text = data.content as string;
157
- const textGroup = new TextGroupElement();
158
- textGroup.text = text;
159
- ElementUtil.readTextProps(textGroup.props, props, this.options);
160
- return textGroup;
161
- }
162
-
163
- }
@@ -1,135 +0,0 @@
1
- import {
2
- InlineGroupElement,
3
- Position,
4
- SerializeProps,
5
- ViewOptions,
6
- Element,
7
- ElementFactory, readElementProps
8
- } from "../../element-define";
9
- import { RenderContenxtType } from "../../render-context";
10
- import { InlineGroupRenderObject, RenderObject } from "../../render-define";
11
- import { TrackRunProps } from "../../element-props";
12
- import { ElementUtil } from "../../element-util";
13
- import { ElementSerialize } from "../../element-serialize";
14
- import { GetTrackTipsEvent } from "../../element-event-define";
15
- import { nanoid } from "nanoid";
16
- export enum TrackRunTypeEnum {
17
- Inserted = 'ins-run',
18
- Deleted = 'del-run',
19
- }
20
- type NullableType<T> = T | null;
21
- export class TrackRunElement extends InlineGroupElement<TrackRunProps> {
22
- constructor(trackType: TrackRunTypeEnum) {
23
- super(trackType);
24
- this.props = new TrackRunProps(trackType);
25
- this.addEvent<GetTrackTipsEvent>('GetTrackTips', (evt) => {
26
- evt.trackTips = {
27
- trackRunType: this.type as TrackRunTypeEnum,
28
- name: this.props.userName,
29
- date: this.props.date,
30
- content: ElementSerialize.serializeString(this, { all: true })
31
- };
32
- console.log(evt.trackTips.content);
33
-
34
- evt.isCancel = true;
35
- });
36
- }
37
-
38
- clone(data: boolean): Element {
39
- const clone = new TrackRunElement(this.type as TrackRunTypeEnum);
40
- this.props.clone(clone.props);
41
- if (data) {
42
- const length = this.length;
43
- for (let i = 0; i < length; i++) {
44
- clone.addChild(this.getChild(i).clone(true));
45
- }
46
- }
47
- return clone;
48
- }
49
-
50
- createRenderObject(options: ViewOptions, renderCtx: RenderContenxtType): NullableType<RenderObject> {
51
- if (!options.showTrackChanges && this.type === TrackRunTypeEnum.Deleted) {
52
- return null;
53
- }
54
- return new TrackRunRenderObject(this);
55
- }
56
-
57
- serialize(viewOptions: ViewOptions): SerializeProps | null {
58
- return {
59
- type: this.type,
60
- props: this.props.getSerializeProps()
61
- };
62
- }
63
-
64
- split(index: number): TrackRunElement | null {
65
- if (index === 0 || index === this.length) {
66
- return null;
67
- }
68
- const clone = new TrackRunElement(this.type as TrackRunTypeEnum);
69
- this.props.clone(clone.props);
70
- const items: Array<Element> = [];
71
- for (let i = index; i < this.length; i++) {
72
- const child = this.getChild(i);
73
- items.push(child);
74
- }
75
- items.forEach(item => {
76
- item.remove();
77
- clone.addChild(item);
78
- });
79
- return clone;
80
- }
81
- }
82
-
83
- export class TrackRunRenderObject extends InlineGroupRenderObject<TrackRunElement> {
84
- constructor(ele: TrackRunElement) {
85
- super(ele);
86
- }
87
-
88
- beginRender(ctx: RenderContenxtType, position: Position): void {
89
- const color = this.element.type === 'ins-run' ? 'green' : 'red';
90
- //ctx.overlaysContext.strokeRect(position.x, position.y, this.rect.width, this.rect.height, color);
91
- }
92
-
93
- clone(): RenderObject {
94
- const cloneRender = new TrackRunRenderObject(this.element);
95
- cloneRender.rect = ElementUtil.cloneRect(this.rect);
96
- for (let i = 0; i < this.length; i++) {
97
- cloneRender.addChild(this.getChild(i).clone());
98
- }
99
- return cloneRender;
100
- }
101
-
102
- endRender(ctx: RenderContenxtType, position: Position): void {
103
- const { x, y } = position;
104
- const color = this.element.type === 'ins-run' ? 'green' : 'red';
105
- for (let i = 0; i < this.length; i++) {
106
- const childRender = this.getChild(i);
107
- const { rect } = childRender;
108
- if (childRender.element && childRender.element.type === 'del-run') {
109
- continue;
110
- }
111
- let lineY = y + rect.y + rect.height;
112
- lineY = this.element.type === 'ins-run' ? lineY : lineY - rect.height / 2;
113
- ctx.contentContext.drawLine(x + rect.x, lineY, rect.width, color, 1);
114
- }
115
- }
116
- }
117
-
118
- export class RunElementFactory extends ElementFactory<TrackRunProps>{
119
-
120
- createElement(data: readElementProps<TrackRunProps>, renderCtx: RenderContenxtType): TrackRunElement {
121
- const ele = new TrackRunElement(data.type as TrackRunTypeEnum);
122
- ele.props.userId = data.props?.userId ?? '';
123
- ele.props.userName = data.props?.userName ?? '';
124
- ele.props.date = data.props?.date ?? '';
125
- ele.props.id = data.props?.id ?? nanoid(5);
126
- return ele;
127
- }
128
-
129
- match(type: string): boolean {
130
- return type === TrackRunTypeEnum.Inserted || type === TrackRunTypeEnum.Deleted;
131
- }
132
-
133
-
134
- }
135
-
@@ -1,130 +0,0 @@
1
- const EDITOR_REACTIVE = '__editor_reactive';
2
- const ITERATOR_KEY = Symbol('iterator-key')
3
- export const reactiveMap = new WeakMap<object, object>();
4
- export const targetMaps = new WeakMap<object, Map<propType, Set<notifyCallback>>>();
5
- type propType = string | number | symbol;
6
- interface notifyCallback {
7
- (target: object, p: propType, oldValue: any, newValue: any): string | undefined | void;
8
- }
9
-
10
-
11
- const activeFns: Array<notifyCallback> = [];
12
- function track(target: object, p: propType) {
13
- const activeFn = activeFns[activeFns.length - 1];
14
- if (!activeFn) {
15
- return;
16
- }
17
- let targetMap = targetMaps.get(target)
18
- if (!targetMap) {
19
- targetMaps.set(target, (targetMap = new Map()))
20
- }
21
- let effectFns = targetMap.get(p);
22
- if (!effectFns) {
23
- targetMap.set(p, (effectFns = new Set()))
24
- }
25
- effectFns.add(activeFn)
26
- }
27
-
28
- function trigger(target: object, p: propType, oldValue: any, newValue: any): void {
29
- //不需要触发
30
- if (p.toString().startsWith('__')) {
31
- return;
32
- }
33
- const targetMap = targetMaps.get(target);
34
- if (!targetMap) {
35
- return;
36
- }
37
- const effectFns = targetMap.get(p);
38
- const iteratorFns = targetMap.get(ITERATOR_KEY);
39
- const fns = new Set<notifyCallback>();
40
- effectFns && effectFns.forEach(item => fns.add(item));
41
- iteratorFns && iteratorFns.forEach(item => fns.add(item));
42
- const activeFn = activeFns[activeFns.length - 1];
43
- //防止死循环,过滤正在运行的副作用
44
- if (activeFn) {
45
- fns.delete(activeFn)
46
- }
47
- fns.forEach(fn => {
48
- fn(target, p, oldValue, newValue)
49
- });
50
- }
51
-
52
- export function watchChanged<T extends object>(source: T, cb: notifyCallback): T {
53
- if ((<any>source)[EDITOR_REACTIVE]) {
54
- addToTrack((<any>source)['raw'], source, cb);
55
- return source;
56
- }
57
- if (isDate(source)) {
58
- return source;
59
- }
60
- const existProxy = reactiveMap.get(source);
61
- if (existProxy) {
62
- return existProxy as T;
63
- }
64
- const proxy = new Proxy(source, {
65
- get(target, p, receiver) {
66
- if (p === 'raw') {
67
- return target;
68
- }
69
- if (p === EDITOR_REACTIVE) {
70
- return true;
71
- }
72
- const res = Reflect.get(target, p, receiver)
73
- if (typeof res === 'object' && res) {
74
- return watchChanged(res, cb);
75
- }
76
- return res;
77
- },
78
- set(target, p, newValue, receiver) {
79
- //console.log('设置' + p.toString())
80
- const oldValue = (<any>target)[p];
81
- const res = Reflect.set(target, p, newValue, receiver);
82
- if ((<any>receiver).raw === target) {
83
- if (oldValue !== newValue && (oldValue === oldValue || newValue === newValue)) {
84
- trigger(target, p, oldValue, newValue);
85
- }
86
- }
87
- return res;
88
- },
89
- deleteProperty(target, p) {
90
- const res = Reflect.deleteProperty(target, p);
91
- trigger(target, p, null, null);
92
- return res;
93
- },
94
- defineProperty(target, p, attributes) {
95
- const res = Reflect.defineProperty(target, p, attributes)
96
- trigger(target, p, null, null);
97
- return res;
98
- }
99
- })
100
- addToTrack(source, proxy, cb);
101
- return proxy;
102
- }
103
-
104
- function addToTrack(source: object, proxy: object, cb: notifyCallback): void {
105
- activeFns.push(cb);
106
- track(source, ITERATOR_KEY);
107
- activeFns.pop();
108
- reactiveMap.set(source, proxy);
109
- }
110
-
111
-
112
- export function setNotifyChangedCallback(target: object, p: propType, cb: notifyCallback): void {
113
- let trackTarget: any = target;
114
- if ((<any>target)[EDITOR_REACTIVE]) {
115
- trackTarget = (<any>target)['raw'];
116
- }
117
- activeFns.push(cb)
118
- track(trackTarget, p);
119
- activeFns.pop()
120
- }
121
-
122
- export const isDate = (val: unknown): val is Date => val instanceof Date
123
-
124
- export const objectToString = Object.prototype.toString
125
- export const toTypeString = (value: unknown): string =>
126
- objectToString.call(value)
127
-
128
- export const toRawType = (value: unknown): string => {
129
- return toTypeString(value).slice(8, -1)
130
- }