@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,127 +0,0 @@
1
- import { Element, ElementFactory, Position, readElementProps, ResizeLeafRenderObject, SerializeProps, ViewOptions } from "../../element-define";
2
- import { DataElementBarcodeProps } from "../../element-props";
3
- import { ElementUtil } from "../../element-util";
4
- import { RenderContenxtType } from "../../render-context";
5
- import { LeafRenderObject, RenderObject } from "../../render-define";
6
- import { DataElementLeaf } from "./data-element-base-impl";
7
- import bwipjs from "bwip-js";
8
- import { watchChanged } from "../../notify";
9
-
10
-
11
- export class DataElementBarcode extends DataElementLeaf<DataElementBarcodeProps> {
12
- resizeable: boolean = true;
13
- private barCodeCanvas!: HTMLCanvasElement | null;
14
- private cache = false;
15
- constructor() {
16
- super('data-ele-barcode');
17
- this.props = new DataElementBarcodeProps();
18
- this.props.width = 100;
19
- this.props.height = 30;
20
- this.focusable = true;
21
- watchChanged(this.props, () => {
22
- this.cache = false;
23
- });
24
- }
25
- createRenderObject(): LeafRenderObject {
26
- const render = new DataElementBarcodeRenderObject(this);
27
- render.rect.width = this.props.width + 2;
28
- render.rect.height = this.props.height + 2;
29
- return render;
30
- }
31
- serialize(options: ViewOptions): SerializeProps {
32
- return {
33
- type: this.type,
34
- props: {
35
- ...this.props.getSerializeProps()
36
- }
37
- }
38
- }
39
- clone(data: boolean): Element {
40
- const clone = new DataElementBarcode();
41
- this.props.clone(clone.props);
42
- return clone;
43
- }
44
-
45
- setValue(val: string): void {
46
- this.props.text = val;
47
- }
48
-
49
- getValue(): string {
50
- return this.props.text;
51
- }
52
-
53
- drawBarcode(renderCtx: RenderContenxtType, pos: Position): void {
54
- this.createBarcodeCache();
55
- renderCtx.contentContext.ctx.drawImage(this.barCodeCanvas as HTMLCanvasElement, pos.x, pos.y, this.props.width, this.props.height);
56
- }
57
-
58
- createBarcodeCache(): void {
59
- if (this.cache) {
60
- return;
61
- }
62
- this.cache = true;
63
- if (!this.barCodeCanvas) {
64
- this.barCodeCanvas = document.createElement('canvas');
65
- }
66
- this.barCodeCanvas = bwipjs.toCanvas(this.barCodeCanvas, {
67
- bcid: this.props.type, // Barcode type
68
- text: this.props.text || "0123456789", // Text to encode
69
- height: 10, // Bar height, in millimeters
70
- includetext: true, // Show human-readable text
71
- textxalign: "center", // Always good to set this
72
- });
73
- }
74
- }
75
-
76
- export class DataElementBarcodeRenderObject extends ResizeLeafRenderObject {
77
- render(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
78
- const barcodeEle = this.element as DataElementBarcode;
79
- barcodeEle.drawBarcode(ctx, position);
80
- }
81
- clone(): RenderObject {
82
- const clone = new DataElementBarcodeRenderObject(this.element);
83
- clone.rect = ElementUtil.cloneRect(this.rect);
84
- return clone;
85
- }
86
-
87
- pagePaintCompleted(ctx: RenderContenxtType, pos: Position): void {
88
- if (this.element.isFocused) {
89
- const { width, height } = this.rect;
90
- ctx.contentContext.strokeRect(pos.x, pos.y, this.rect.width, this.rect.height, '#1890ff', 0.5);
91
- this.drawResizeCircle(ctx, pos.x, pos.y);
92
- this.drawResizeCircle(ctx, pos.x + width, pos.y);
93
- this.drawResizeCircle(ctx, pos.x, pos.y + height);
94
- this.drawResizeCircle(ctx, pos.x + width, pos.y + height);
95
- this.drawResizeCircle(ctx, pos.x + (Math.floor(width / 2)), pos.y);
96
- this.drawResizeCircle(ctx, pos.x + (Math.floor(width / 2)), pos.y + height);
97
- this.drawResizeCircle(ctx, pos.x, pos.y + (Math.floor(height / 2)));
98
- this.drawResizeCircle(ctx, pos.x + width, pos.y + (Math.floor(height / 2)));
99
- }
100
- }
101
-
102
- private drawResizeCircle(ctx: RenderContenxtType, x: number, y: number): void {
103
- const ctxNative = ctx.contentContext.ctx;
104
- ctxNative.save();
105
- ctxNative.fillStyle = '#69c0ff';
106
- ctxNative.beginPath();
107
- ctxNative.arc(x, y, Math.floor(4 / 5 * 4), 0, 2 * Math.PI);
108
- ctxNative.closePath();
109
- ctxNative.fill();
110
- ctxNative.restore();
111
- }
112
- }
113
-
114
-
115
- export class DataElementBarcodeFactory extends ElementFactory<DataElementBarcodeProps> {
116
- match(type: string): boolean {
117
- return type === 'data-ele-barcode';
118
- }
119
- createElement(data: readElementProps<DataElementBarcodeProps>, renderCtx: RenderContenxtType): Element {
120
- const ele = new DataElementBarcode();
121
- ele.props.width = data.props?.width || 100;
122
- ele.props.height = data.props?.height || 30;
123
- ele.props.type = data.props?.type || 'code128';
124
- ele.props.text = data.props?.text || '';
125
- return ele;
126
- }
127
- }
@@ -1,234 +0,0 @@
1
- import { DocMode, Element, InlineGroupElement, LeafElement } from "../../element-define";
2
- import { InlineGroupRenderObject, RenderObject } from "../../render-define";
3
- import { ContextMenuElementEvent, GotCursorEvent, KeyboradElementEvent } from "../../element-event-define";
4
- import { DataEleBaseProps, TextProps } from "../../element-props";
5
- import { DataDecorateElement } from "./data-decorate-impl";
6
- import { RenderContenxtType } from "../../render-context";
7
- import { ElementUtil } from "../../element-util";
8
-
9
- /**
10
- * 所有的数据元继承上述两个抽象类
11
- */
12
- export abstract class DataElementLeaf<P extends object = any> extends LeafElement<P> {
13
- abstract setValue(val: any): void;
14
- abstract getValue(): any;
15
- }
16
-
17
- /**
18
- * 可供输入的内联块
19
- * 使用场景:数据元,数据组
20
- */
21
- export abstract class InlineGroupInputElement<P extends object = any> extends InlineGroupElement<P>{
22
- startDecorate!: DataDecorateElement;
23
- endDecorate!: DataDecorateElement;
24
- constructor(type: string) {
25
- super(type);
26
- //行内块不允许换行
27
- this.addEvent<KeyboradElementEvent>('ElementKeyDown', (evt) => {
28
- const { selectionState, sourceEvent, source } = evt;
29
- const { startControl, startOffset } = selectionState;
30
- if (IsInSideDataElement(startControl as LeafElement, startOffset)) {
31
- if (sourceEvent.shiftKey && sourceEvent.keyCode === 13) {
32
- //this.removeNullText();
33
- } else if (!sourceEvent.shiftKey && sourceEvent.keyCode === 13) {
34
- evt.isCancel = true;
35
- }
36
- }
37
- }, true);
38
-
39
- this.addEvent('GotCursor', (evt) => {
40
- const { startControl, startOffset } = evt.selectionState;
41
- if (IsInSideDataElement(startControl, startOffset)) {
42
- this.isFocused = true;
43
- }
44
- });
45
- this.addEvent('LostCursor', (evt) => { this.isFocused = false; });
46
- }
47
-
48
- fillDecorate(): void {
49
- if (!this.startDecorate) {
50
- const { startDecorate, endDecorate } = this.createDataDecorate();
51
- this.addChild(startDecorate, 0);
52
- this.addChild(endDecorate);
53
- this.startDecorate = startDecorate;
54
- this.endDecorate = endDecorate;
55
- }
56
- }
57
-
58
- createDataDecorate(): { startDecorate: DataDecorateElement, endDecorate: DataDecorateElement } {
59
- const startDecorate = new DataDecorateElement(this, true);
60
- const endDecorate = new DataDecorateElement(this, false);
61
- return {
62
- startDecorate,
63
- endDecorate
64
- }
65
- }
66
-
67
- beginMeasure(): void {
68
- this.fillDecorate();
69
- super.beginMeasure();
70
- }
71
-
72
- addChild(child: Element<any>, index: number = -1): void {
73
- index = index === -1 ? this.length : index;
74
- index = index > this.length ? this.length : index;
75
- if (index === 0 && this.startDecorate) {
76
- this.parent?.addChild(child, this.getIndex());
77
- return;
78
- }
79
- if (index === this.length && this.endDecorate) {
80
- this.parent?.addChild(child, this.getIndex() + 1);
81
- return;
82
- }
83
- super.addChild(child, index);
84
- }
85
-
86
- clearInnerItems(): void {
87
- const removeItems: Array<Element> = [];
88
- for (let i = this.length - 1; i >= 0; i--) {
89
- const child = this.getChild(i);
90
- if (child !== this.startDecorate && child !== this.endDecorate) {
91
- removeItems.push(child);
92
- }
93
- }
94
- removeItems.forEach(item => this.removeChild(item));
95
- }
96
- }
97
-
98
- export abstract class DataElementInlineGroup<P extends DataEleBaseProps = DataEleBaseProps & { valueTextProps: TextProps }> extends InlineGroupInputElement<P> {
99
- constructor(type: string) {
100
- super(type);
101
- this.addEvent('ElementMousemove', (evt) => {
102
- this.isMouseenter = true;
103
- this.refreshView();
104
- });
105
- this.addEvent('ElementMouseLeave', (evt) => {
106
- this.isMouseenter = false;
107
- this.refreshView()
108
- });
109
- this.addEvent<GotCursorEvent>('GotCursor', (evt) => { this.onGotCursorEvent(evt) });
110
- this.addEvent<ContextMenuElementEvent>('ElementContextMenu', (evt) => {
111
- evt.menus.push({
112
- icon: 'Settings', caption: '内容控制设置', eventObj: {}
113
- });
114
- }, true);
115
- }
116
-
117
- onGotCursorEvent(evt: GotCursorEvent): void {
118
- const { source, selectionState } = evt;
119
- if (evt.ctx.viewOptions.docMode === DocMode.FormEdit) {
120
- //当前数据元不可编辑
121
- if (selectionState.editable && !this.props.editable) {
122
- const { startControl, startOffset } = selectionState;
123
- if (startControl === this.startDecorate && startOffset === 0 || startControl === this.endDecorate && startOffset === 1) {
124
- return;
125
- }
126
- selectionState.editable = false;
127
- const range = selectionState.range?.clone();
128
- if (range) {
129
- range.editable = false;
130
- selectionState.addRange(range);
131
- }
132
- return
133
- }
134
- }
135
-
136
- if (source === this.endDecorate && selectionState.startOffset === 0 && this.length === 2) {
137
- evt.isCancel = true;
138
- selectionState.resetRange(this.startDecorate, 1);
139
- }
140
- }
141
-
142
- abstract setValue(val: any): void;
143
- abstract getValue(): string;
144
-
145
- /**
146
- * 验证数据元的值是否合法
147
- * @returns
148
- */
149
- validate(): string {
150
- if (this.props.required && this.props.editable && !this.getValue()) {
151
- return '该字段不能为空';
152
- }
153
- return '';
154
- }
155
-
156
- }
157
-
158
- export abstract class DataElementRenderObject<T extends DataElementInlineGroup = DataElementInlineGroup> extends InlineGroupRenderObject<T> {
159
- beginRender(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
160
- ctx.contentContext.save();
161
- //绘制数据元区域底色
162
- if (this.element.isMouseenter) {
163
- const overlayColor = this.element.props.editable ? ctx.viewOptions.dataEleOverlaysColor : ctx.viewOptions.dataEleReadOnlyOverlayColor;
164
- ctx.overlaysContext.fillRect(position.x, position.y - 2, this.rect.width, this.rect.height + 4, overlayColor);
165
- }
166
- if (this.element.props.secretBrowse && ctx.viewOptions.secretBrowse) {
167
- ctx.contentContext.ctx.filter = "blur(10px)"
168
- }
169
- if (this.element.props.underline) {
170
- const y = position.y + 2 + this.rect.height;
171
- ctx.contentContext.strokeLines([{ x: position.x, y }, { x: position.x + this.rect.width, y }], 1, '#595959')
172
- }
173
- }
174
-
175
- endRender(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
176
- ctx.contentContext.restore();
177
- if (!this.element.props.printable && ctx.drawMode === 'print') {
178
- ctx.contentContext.clearRect(position.x, position.y, this.rect.width, this.rect.height);
179
- }
180
- }
181
- }
182
-
183
-
184
- export const validateDataEle = (ele: Element) => {
185
- return ele instanceof DataElementLeaf || ele instanceof DataElementInlineGroup;
186
- };
187
-
188
- export const validateDataEleRenderObj = (renderObj: RenderObject) => {
189
- if (renderObj.element) {
190
- return validateDataEle(renderObj.element);
191
- }
192
- return false;
193
- };
194
-
195
- export const validateInlineInputRenderObj = (renderObj: RenderObject) => {
196
- if (renderObj.element) {
197
- return renderObj.element instanceof InlineGroupInputElement;
198
- }
199
- return false;
200
- };
201
-
202
- /**
203
- * 是否在数据元内部
204
- * @param control
205
- * @param offset
206
- */
207
- export function IsInSideDataElement(control: LeafElement, offset: number): boolean {
208
- const mathEle = ElementUtil.getParent(control, (item) => item instanceof DataElementInlineGroup) as DataElementInlineGroup;
209
- if (mathEle) {
210
- if ((control === mathEle.startDecorate && offset === 0) || (control === mathEle.endDecorate && offset === 1)) {
211
- return false;
212
- }
213
- return true;
214
- }
215
- return false;
216
- }
217
-
218
-
219
- /**
220
- * 是否在内联块内部
221
- * @param control
222
- * @param offset
223
- */
224
- export function IsInSideInlineGroupInputElement(control: LeafElement, offset: number): boolean {
225
- const mathEle = ElementUtil.getParent(control, (item) => item instanceof InlineGroupInputElement) as InlineGroupInputElement;
226
- if (mathEle) {
227
- if ((control === mathEle.startDecorate && offset === 0) || (control === mathEle.endDecorate && offset === 1)) {
228
- return false;
229
- }
230
- return true;
231
- }
232
- return false;
233
- }
234
-
@@ -1,146 +0,0 @@
1
- import { DocMode, Element, ElementFactory, LeafElement, readElementProps, SerializeProps, ViewOptions } from "../../element-define";
2
- import { ContextMenuElementEvent, ElementEvent } from "../../element-event-define";
3
- import { DataEleCheckProps } from "../../element-props";
4
- import { ElementUtil } from "../../element-util";
5
- import { RenderContenxtType } from "../../render-context";
6
- import { LeafRenderObject, RenderObject } from "../../render-define";
7
- import { DataElementLeaf } from "./data-element-base-impl";
8
-
9
- export class DataElementCheck extends DataElementLeaf<DataEleCheckProps> {
10
- //props: DataEleCheckProps;
11
- constructor() {
12
- super('data-ele-check');
13
- this.cursorType = 'default'
14
- this.props = new DataEleCheckProps();
15
- this.addEvent<ContextMenuElementEvent>('ElementContextMenu', (evt) => {
16
- evt.menus.push({
17
- icon: 'Settings', caption: '内容控制设置', eventObj: {}
18
- });
19
- });
20
- this.addEvent('ElementClick', (evt) => { this.onClickHandler(evt) });
21
- }
22
-
23
- createRenderObject(): RenderObject {
24
- const render = new DataElementCheckRenderObject(this);
25
- render.rect.width = this.props.size + 4;
26
- render.rect.height = this.props.size;
27
- return render;
28
- }
29
-
30
- onClickHandler(evt: ElementEvent): void {
31
- if (!this.props.editable && evt.ctx.viewOptions.docMode === DocMode.FormEdit) {
32
- return;
33
- }
34
- //如果当前是单选框并且当前已经被选中,则不作处理
35
- if (this.props.groupName && !this.props.multiSelect && this.props.checked) {
36
- return;
37
- }
38
- this.props.checked = !this.props.checked;
39
- const docCtx = evt.ctx;
40
- //复选框存在组时,并且为单选模式时
41
- if (this.props.groupName && !this.props.multiSelect) {
42
- const ckbs = docCtx.getCurrentCtx(this).getCheckBoxList(this.props.groupName);
43
- ckbs.forEach(item => { if (item !== this) { item.setValue(!this.props.checked) } });
44
- }
45
- }
46
-
47
- serialize(viewOptions: ViewOptions): SerializeProps {
48
- return {
49
- type: this.type,
50
- props: {
51
- ...this.props.getSerializeProps(viewOptions)
52
- }
53
- }
54
- }
55
-
56
- clone(data: boolean): DataElementCheck {
57
- const clone = new DataElementCheck();
58
- this.props.clone(clone.props);
59
- return clone;
60
- }
61
-
62
- setValue(val: any): void {
63
- if (typeof val === 'boolean') {
64
- this.props.checked = val;
65
- } else {
66
- const trueValue = val === 'true';
67
- this.props.checked = trueValue;
68
- }
69
- }
70
-
71
- getValue(): any {
72
- if (this.props.checked) {
73
- return this.props.checkedValue;
74
- } else {
75
- return '';
76
- }
77
- }
78
- }
79
-
80
-
81
- export class DataElementCheckRenderObject extends LeafRenderObject {
82
- constructor(element: Element) {
83
- super(element);
84
- }
85
-
86
- clone(): RenderObject {
87
- const cloneRender = new DataElementCheckRenderObject(this.element);
88
- cloneRender.rect = ElementUtil.cloneRect(this.rect);
89
- return cloneRender;
90
- }
91
-
92
- render(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
93
- const element = this.element as DataElementCheck;
94
- if (this.element.props.multiSelect) {
95
- ctx.contentContext.drawCheckBox(position.x + 2, position.y, element.props.size, element.props.size, element.props.checked);
96
- }
97
- else {
98
- ctx.contentContext.drawRadioBox(position.x + 2, position.y, element.props.size, element.props.size, element.props.checked);
99
- }
100
- if (ctx.drawMode === 'view') {
101
- //this.renderCkbDecoreate(ctx, position);
102
- }
103
- }
104
-
105
- /**
106
- * 绘制复选框装饰符号
107
- */
108
- renderCkbDecoreate(ctx: RenderContenxtType, position: { x: number; y: number; }): void {
109
- let { x, y } = position;
110
- const { width, height } = this.rect;
111
- const lineWidth = 5;
112
- const paintColor = '#0050b3';
113
- ctx.contentContext.strokeLines([{ x: x + lineWidth, y }, { x, y }, { x, y: y + height }, { x: x + lineWidth, y: y + height }], 1, paintColor);
114
- x += width;
115
- ctx.contentContext.strokeLines([{ x: x - lineWidth, y }, { x, y }, { x, y: y + height }, { x: x - lineWidth, y: y + height }], 1, paintColor);
116
- }
117
-
118
- }
119
-
120
- export class DataElementCheckFactory extends ElementFactory<DataEleCheckProps> {
121
- match(type: string): boolean {
122
- return type === "data-ele-check"
123
- }
124
- createElement(data: readElementProps<DataEleCheckProps>, renderCtx: RenderContenxtType): Element {
125
- const props = data.props as DataEleCheckProps;
126
- const ele = new DataElementCheck();
127
- this.createDataEleProps(ele.props, props);
128
- return ele;
129
- }
130
-
131
- createDataEleProps(dest: DataEleCheckProps, props: DataEleCheckProps): DataEleCheckProps {
132
- const dataEleProps: DataEleCheckProps = dest;
133
- ElementUtil.readEleBaseProps(dataEleProps, props);
134
- //dataEleProps.id = props.id ?? nanoid(5);
135
- //dataEleProps.name = props.name;
136
- //dataEleProps.caption = props.caption;
137
- //dataEleProps.type = props.type;
138
- dataEleProps.checked = props.checked;
139
- dataEleProps.size = props.size;
140
- dataEleProps.groupName = props.groupName;
141
- dataEleProps.multiSelect = props.multiSelect ?? false;
142
- dataEleProps.checkedValue = props.checkedValue;
143
- return dataEleProps;
144
- }
145
-
146
- }
@@ -1,128 +0,0 @@
1
- import { Element, ElementFactory, SerializeProps, ViewOptions } from "../../element-define";
2
- import { DataEleDateProps } from "../../element-props";
3
- import { ElementUtil } from "../../element-util";
4
- import { RenderContenxtType } from "../../render-context";
5
- import { RenderObject } from "../../render-define";
6
- import { ElementSerialize } from "../../element-serialize";
7
- import { TextGroupElement } from "../text/text-impl";
8
- import { DataElementInlineGroup, DataElementRenderObject } from "./data-element-base-impl";
9
- import moment from 'moment'
10
-
11
- export class DataElementDate extends DataElementInlineGroup<DataEleDateProps> {
12
- constructor() {
13
- super('data-ele-date');
14
- this.props = new DataEleDateProps();
15
- }
16
-
17
- createRenderObject(): RenderObject {
18
- return new DataElementDateRenderObject(this);
19
- }
20
-
21
- serialize(viewOptions: ViewOptions): SerializeProps & any {
22
- return {
23
- type: this.type,
24
- props: {
25
- ...this.props.getSerializeProps(viewOptions)
26
- }
27
- }
28
- }
29
-
30
- clone(data: boolean): DataElementDate {
31
- const clone = new DataElementDate();
32
- this.props.clone(clone.props);
33
- if (data) {
34
- const length = this.length;
35
- for (let i = 0; i < length; i++) {
36
- const child = this.getChild(i);
37
- if (child !== this.startDecorate && child !== this.endDecorate) {
38
- clone.addChild(child.clone(true));
39
- }
40
- }
41
- }
42
- return clone;
43
- }
44
-
45
-
46
- setValue(val: Date | string): void {
47
- const format = this.props.format ?? 'YYYY-MM-DD';
48
- const date = moment(val, format);
49
- if (!date.isValid()) {
50
- return;
51
- }
52
- const formatStr = date.format(format);
53
- if (this.getValue() === formatStr) {
54
- return;
55
- }
56
- this.pubOnChange('self');
57
- this.clearInnerItems();
58
- const valueText = new TextGroupElement();
59
- this.props.valueTextProps.clone(valueText.props);
60
- valueText.text = formatStr;
61
- this.addChild(valueText, this.length - 1);
62
- this.beginMeasure();
63
- }
64
-
65
- getValue(): string {
66
- return ElementSerialize.serializeString(this)
67
- }
68
-
69
- validate(): string {
70
- let res = super.validate();
71
- if (res) {
72
- return res;
73
- }
74
- const format = this.props.format ?? 'YYYY-MM-DD';
75
- const date = moment(this.getValue(), format);
76
- if (!date.isValid()) {
77
- return '日期格式不正确';
78
- }
79
- return '';
80
- }
81
-
82
- }
83
-
84
-
85
- export class DataElementDateRenderObject extends DataElementRenderObject<DataElementDate> {
86
- constructor(element: DataElementDate) {
87
- super(element);
88
- }
89
- clone(): RenderObject {
90
- const cloneRender = new DataElementDateRenderObject(this.element);
91
- cloneRender.rect = ElementUtil.cloneRect(this.rect);
92
- for (let i = 0; i < this.length; i++) {
93
- cloneRender.addChild(this.getChild(i).clone());
94
- }
95
- return cloneRender;
96
- }
97
-
98
- }
99
-
100
- export class DataElementDateFactory extends ElementFactory<DataEleDateProps> {
101
- match(type: string): boolean {
102
- return type === "data-ele-date"
103
- }
104
- createElement(data: any, renderCtx: RenderContenxtType): Element {
105
- const props = data.props as DataEleDateProps;
106
- const ele = new DataElementDate();
107
- this.createDataEleProps(ele.props, props);
108
- return ele;
109
- }
110
-
111
- createDataEleProps(dest: DataEleDateProps, props: DataEleDateProps): DataEleDateProps {
112
- const dataEleProps: DataEleDateProps = dest;
113
- ElementUtil.readEleBaseProps(dataEleProps, props);
114
- //dataEleProps.id = props.id ?? nanoid(5);
115
- //dataEleProps.name = props.name;
116
- dataEleProps.minValue = props.minValue;
117
- dataEleProps.maxValue = props.maxValue;
118
- dataEleProps.format = props.format;
119
- //dataEleProps.caption = props.caption;
120
- //dataEleProps.type = props.type;
121
- dataEleProps.nullText = props.nullText;
122
- dataEleProps.nullTextProps = ElementUtil.readTextProps(null, props.nullTextProps, this.options);
123
- dataEleProps.valueTextProps = ElementUtil.readTextProps(null, props.valueTextProps, this.options);
124
- return dataEleProps;
125
- }
126
-
127
-
128
- }