@hailin-zheng/editor-core 1.0.7 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/package.json +3 -4
  2. package/{lib/doc-ruler.js → src/med_editor/doc-ruler.ts} +101 -74
  3. package/src/med_editor/framework/common-util.ts +200 -0
  4. package/{lib/framework/document-change.js → src/med_editor/framework/document-change.ts} +308 -259
  5. package/{lib/framework/document-combine.js → src/med_editor/framework/document-combine.ts} +15 -11
  6. package/{lib/framework/document-comment.js → src/med_editor/framework/document-comment.ts} +52 -37
  7. package/{lib/framework/document-context.js → src/med_editor/framework/document-context.ts} +181 -101
  8. package/{lib/framework/document-eval-func.js → src/med_editor/framework/document-eval-func.ts} +16 -11
  9. package/{lib/framework/document-event.js → src/med_editor/framework/document-event.ts} +244 -216
  10. package/{lib/framework/document-history.js → src/med_editor/framework/document-history.ts} +25 -14
  11. package/{lib/framework/document-images-loader.js → src/med_editor/framework/document-images-loader.ts} +25 -17
  12. package/{lib/framework/document-input-cursor.js → src/med_editor/framework/document-input-cursor.ts} +76 -71
  13. package/{lib/framework/document-paint.js → src/med_editor/framework/document-paint.ts} +35 -28
  14. package/{lib/framework/document-print-offscreen.js → src/med_editor/framework/document-print-offscreen.ts} +25 -19
  15. package/{lib/framework/document-print.js → src/med_editor/framework/document-print.ts} +57 -41
  16. package/src/med_editor/framework/document-segmenter.ts +211 -0
  17. package/{lib/framework/document-selection.js → src/med_editor/framework/document-selection.ts} +116 -85
  18. package/{lib/framework/document-template.js → src/med_editor/framework/document-template.ts} +3 -3
  19. package/src/med_editor/framework/document-textline-mode.ts +34 -0
  20. package/{lib/framework/element-define.js → src/med_editor/framework/element-define.ts} +301 -206
  21. package/src/med_editor/framework/element-event-define.ts +141 -0
  22. package/{lib/framework/element-measure.js → src/med_editor/framework/element-measure.ts} +143 -121
  23. package/{lib/framework/element-paint.js → src/med_editor/framework/element-paint.ts} +44 -38
  24. package/{lib/framework/element-props.js → src/med_editor/framework/element-props.ts} +331 -202
  25. package/{lib/framework/element-reader.js → src/med_editor/framework/element-reader.ts} +39 -31
  26. package/{lib/framework/element-render-cut.js → src/med_editor/framework/element-render-cut.ts} +113 -106
  27. package/{lib/framework/element-serialize.js → src/med_editor/framework/element-serialize.ts} +37 -24
  28. package/{lib/framework/element-util.js → src/med_editor/framework/element-util.ts} +317 -216
  29. package/{lib/framework/impl/checkbox/checkbox-impl.js → src/med_editor/framework/impl/checkbox/checkbox-impl.ts} +27 -20
  30. package/{lib/framework/impl/comments/comment-content-impl.js → src/med_editor/framework/impl/comments/comment-content-impl.ts} +45 -31
  31. package/{lib/framework/impl/comments/comment-element-impl.js → src/med_editor/framework/impl/comments/comment-element-impl.ts} +23 -20
  32. package/{lib/framework/impl/comments/comments-container-impl.js → src/med_editor/framework/impl/comments/comments-container-impl.ts} +22 -16
  33. package/{lib/framework/impl/comments/comments-util.js → src/med_editor/framework/impl/comments/comments-util.ts} +34 -17
  34. package/{lib/framework/impl/comments/validate-msg-impl.js → src/med_editor/framework/impl/comments/validate-msg-impl.ts} +28 -17
  35. package/{lib/framework/impl/data-element/data-decorate-impl.js → src/med_editor/framework/impl/data-element/data-decorate-impl.ts} +26 -22
  36. package/{lib/framework/impl/data-element/data-element-barcode.js → src/med_editor/framework/impl/data-element/data-element-barcode.ts} +41 -29
  37. package/{lib/framework/impl/data-element/data-element-base-impl.js → src/med_editor/framework/impl/data-element/data-element-base-impl.ts} +73 -44
  38. package/{lib/framework/impl/data-element/data-element-check-impl.js → src/med_editor/framework/impl/data-element/data-element-check-impl.ts} +48 -35
  39. package/{lib/framework/impl/data-element/data-element-date-impl.js → src/med_editor/framework/impl/data-element/data-element-date-impl.ts} +41 -24
  40. package/{lib/framework/impl/data-element/data-element-group-impl.js → src/med_editor/framework/impl/data-element/data-element-group-impl.ts} +52 -32
  41. package/{lib/framework/impl/data-element/data-element-image-impl.js → src/med_editor/framework/impl/data-element/data-element-image-impl.ts} +38 -28
  42. package/{lib/framework/impl/data-element/data-element-list-impl.js → src/med_editor/framework/impl/data-element/data-element-list-impl.ts} +42 -31
  43. package/{lib/framework/impl/data-element/data-element-text-impl.js → src/med_editor/framework/impl/data-element/data-element-text-impl.ts} +36 -22
  44. package/{lib/framework/impl/decorate/fill-null-space-imple.js → src/med_editor/framework/impl/decorate/fill-null-space-imple.ts} +15 -10
  45. package/{lib/framework/impl/document/doc-body-impl.js → src/med_editor/framework/impl/document/doc-body-impl.ts} +32 -16
  46. package/{lib/framework/impl/document/doc-body-part-impl.js → src/med_editor/framework/impl/document/doc-body-part-impl.ts} +27 -17
  47. package/src/med_editor/framework/impl/document/doc-container-impl.ts +24 -0
  48. package/{lib/framework/impl/document/doc-footer-impl.js → src/med_editor/framework/impl/document/doc-footer-impl.ts} +30 -19
  49. package/{lib/framework/impl/document/doc-header-impl.js → src/med_editor/framework/impl/document/doc-header-impl.ts} +34 -17
  50. package/{lib/framework/impl/document/doc-impl.js → src/med_editor/framework/impl/document/doc-impl.ts} +62 -45
  51. package/{lib/framework/impl/media-formula/menstrual-history.js → src/med_editor/framework/impl/media-formula/menstrual-history.ts} +58 -36
  52. package/{lib/framework/impl/paragraph/p-impl.js → src/med_editor/framework/impl/paragraph/p-impl.ts} +64 -30
  53. package/{lib/framework/impl/picture/image-impl.js → src/med_editor/framework/impl/picture/image-impl.ts} +37 -25
  54. package/{lib/framework/impl/radio/radio-impl.js → src/med_editor/framework/impl/radio/radio-impl.ts} +28 -21
  55. package/{lib/framework/impl/symbol/br-symbol-impl.js → src/med_editor/framework/impl/symbol/br-symbol-impl.ts} +21 -15
  56. package/{lib/framework/impl/symbol/p-symbol-impl.js → src/med_editor/framework/impl/symbol/p-symbol-impl.ts} +15 -12
  57. package/{lib/framework/impl/table/table-cell-impl.js → src/med_editor/framework/impl/table/table-cell-impl.ts} +41 -30
  58. package/{lib/framework/impl/table/table-impl.js → src/med_editor/framework/impl/table/table-impl.ts} +122 -84
  59. package/{lib/framework/impl/table/table-row-impl.js → src/med_editor/framework/impl/table/table-row-impl.ts} +26 -18
  60. package/{lib/framework/impl/table/table-split-cell-patch.js → src/med_editor/framework/impl/table/table-split-cell-patch.ts} +31 -22
  61. package/{lib/framework/impl/table/table-split-cell.js → src/med_editor/framework/impl/table/table-split-cell.ts} +105 -94
  62. package/{lib/framework/impl/table/table-util.js → src/med_editor/framework/impl/table/table-util.ts} +197 -159
  63. package/{lib/framework/impl/text/text-impl.js → src/med_editor/framework/impl/text/text-impl.ts} +49 -35
  64. package/{lib/framework/impl/text/track-run-impl.js → src/med_editor/framework/impl/text/track-run-impl.ts} +53 -30
  65. package/{lib/framework/notify.js → src/med_editor/framework/notify.ts} +50 -36
  66. package/{lib/framework/range-util.js → src/med_editor/framework/range-util.ts} +80 -71
  67. package/{lib/framework/render-context.js → src/med_editor/framework/render-context.ts} +111 -64
  68. package/{lib/framework/render-define.js → src/med_editor/framework/render-define.ts} +90 -61
  69. package/{lib/framework/selection-overlays.js → src/med_editor/framework/selection-overlays.ts} +25 -16
  70. package/{lib/texteditor.js → src/med_editor/texteditor.ts} +288 -191
  71. package/src/med_editor/util/subject.ts +118 -0
  72. package/{lib/util/table-bind.js → src/med_editor/util/table-bind.ts} +2 -2
  73. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +3573 -0
  74. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +3573 -0
  75. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +315 -0
  76. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +122 -0
  77. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +3599 -0
  78. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +24586 -0
  79. package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +2874 -0
  80. package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +341 -0
  81. package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +2201 -0
  82. package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +1069 -0
  83. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +125 -0
  84. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +86 -0
  85. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +115 -0
  86. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +108 -0
  87. package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +272 -0
  88. package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +1070 -0
  89. package/lib/doc-ruler.d.ts +0 -51
  90. package/lib/doc-ruler.js.map +0 -1
  91. package/lib/framework/common-util.d.ts +0 -63
  92. package/lib/framework/common-util.js +0 -178
  93. package/lib/framework/common-util.js.map +0 -1
  94. package/lib/framework/document-change.d.ts +0 -265
  95. package/lib/framework/document-change.js.map +0 -1
  96. package/lib/framework/document-combine.d.ts +0 -24
  97. package/lib/framework/document-combine.js.map +0 -1
  98. package/lib/framework/document-comment.d.ts +0 -46
  99. package/lib/framework/document-comment.js.map +0 -1
  100. package/lib/framework/document-context.d.ts +0 -149
  101. package/lib/framework/document-context.js.map +0 -1
  102. package/lib/framework/document-eval-func.d.ts +0 -18
  103. package/lib/framework/document-eval-func.js.map +0 -1
  104. package/lib/framework/document-event.d.ts +0 -213
  105. package/lib/framework/document-event.js.map +0 -1
  106. package/lib/framework/document-history.d.ts +0 -26
  107. package/lib/framework/document-history.js.map +0 -1
  108. package/lib/framework/document-images-loader.d.ts +0 -16
  109. package/lib/framework/document-images-loader.js.map +0 -1
  110. package/lib/framework/document-input-cursor.d.ts +0 -78
  111. package/lib/framework/document-input-cursor.js.map +0 -1
  112. package/lib/framework/document-paint.d.ts +0 -34
  113. package/lib/framework/document-paint.js.map +0 -1
  114. package/lib/framework/document-print-offscreen.d.ts +0 -38
  115. package/lib/framework/document-print-offscreen.js.map +0 -1
  116. package/lib/framework/document-print.d.ts +0 -60
  117. package/lib/framework/document-print.js.map +0 -1
  118. package/lib/framework/document-segmenter.d.ts +0 -2
  119. package/lib/framework/document-segmenter.js +0 -106
  120. package/lib/framework/document-segmenter.js.map +0 -1
  121. package/lib/framework/document-selection.d.ts +0 -89
  122. package/lib/framework/document-selection.js.map +0 -1
  123. package/lib/framework/document-template.d.ts +0 -4
  124. package/lib/framework/document-template.js.map +0 -1
  125. package/lib/framework/document-textline-mode.d.ts +0 -7
  126. package/lib/framework/document-textline-mode.js +0 -30
  127. package/lib/framework/document-textline-mode.js.map +0 -1
  128. package/lib/framework/element-define.d.ts +0 -319
  129. package/lib/framework/element-define.js.map +0 -1
  130. package/lib/framework/element-event-define.d.ts +0 -99
  131. package/lib/framework/element-event-define.js +0 -108
  132. package/lib/framework/element-event-define.js.map +0 -1
  133. package/lib/framework/element-measure.d.ts +0 -97
  134. package/lib/framework/element-measure.js.map +0 -1
  135. package/lib/framework/element-paint.d.ts +0 -42
  136. package/lib/framework/element-paint.js.map +0 -1
  137. package/lib/framework/element-props.d.ts +0 -301
  138. package/lib/framework/element-props.js.map +0 -1
  139. package/lib/framework/element-reader.d.ts +0 -19
  140. package/lib/framework/element-reader.js.map +0 -1
  141. package/lib/framework/element-render-cut.d.ts +0 -55
  142. package/lib/framework/element-render-cut.js.map +0 -1
  143. package/lib/framework/element-serialize.d.ts +0 -30
  144. package/lib/framework/element-serialize.js.map +0 -1
  145. package/lib/framework/element-util.d.ts +0 -369
  146. package/lib/framework/element-util.js.map +0 -1
  147. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +0 -24
  148. package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
  149. package/lib/framework/impl/comments/comment-content-impl.d.ts +0 -40
  150. package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
  151. package/lib/framework/impl/comments/comment-element-impl.d.ts +0 -21
  152. package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
  153. package/lib/framework/impl/comments/comments-container-impl.d.ts +0 -22
  154. package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
  155. package/lib/framework/impl/comments/comments-util.d.ts +0 -12
  156. package/lib/framework/impl/comments/comments-util.js.map +0 -1
  157. package/lib/framework/impl/comments/validate-msg-impl.d.ts +0 -21
  158. package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
  159. package/lib/framework/impl/data-element/data-decorate-impl.d.ts +0 -30
  160. package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
  161. package/lib/framework/impl/data-element/data-element-barcode.d.ts +0 -31
  162. package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
  163. package/lib/framework/impl/data-element/data-element-base-impl.d.ts +0 -68
  164. package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
  165. package/lib/framework/impl/data-element/data-element-check-impl.d.ts +0 -35
  166. package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
  167. package/lib/framework/impl/data-element/data-element-date-impl.d.ts +0 -23
  168. package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
  169. package/lib/framework/impl/data-element/data-element-group-impl.d.ts +0 -23
  170. package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
  171. package/lib/framework/impl/data-element/data-element-image-impl.d.ts +0 -30
  172. package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
  173. package/lib/framework/impl/data-element/data-element-list-impl.d.ts +0 -22
  174. package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
  175. package/lib/framework/impl/data-element/data-element-text-impl.d.ts +0 -23
  176. package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
  177. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +0 -21
  178. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
  179. package/lib/framework/impl/document/doc-body-impl.d.ts +0 -27
  180. package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
  181. package/lib/framework/impl/document/doc-body-part-impl.d.ts +0 -30
  182. package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
  183. package/lib/framework/impl/document/doc-container-impl.d.ts +0 -16
  184. package/lib/framework/impl/document/doc-container-impl.js +0 -21
  185. package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
  186. package/lib/framework/impl/document/doc-footer-impl.d.ts +0 -26
  187. package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
  188. package/lib/framework/impl/document/doc-header-impl.d.ts +0 -26
  189. package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
  190. package/lib/framework/impl/document/doc-impl.d.ts +0 -61
  191. package/lib/framework/impl/document/doc-impl.js.map +0 -1
  192. package/lib/framework/impl/media-formula/menstrual-history.d.ts +0 -35
  193. package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
  194. package/lib/framework/impl/paragraph/p-impl.d.ts +0 -45
  195. package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
  196. package/lib/framework/impl/picture/image-impl.d.ts +0 -31
  197. package/lib/framework/impl/picture/image-impl.js.map +0 -1
  198. package/lib/framework/impl/radio/radio-impl.d.ts +0 -22
  199. package/lib/framework/impl/radio/radio-impl.js.map +0 -1
  200. package/lib/framework/impl/symbol/br-symbol-impl.d.ts +0 -22
  201. package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
  202. package/lib/framework/impl/symbol/p-symbol-impl.d.ts +0 -19
  203. package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
  204. package/lib/framework/impl/table/table-cell-impl.d.ts +0 -37
  205. package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
  206. package/lib/framework/impl/table/table-impl.d.ts +0 -55
  207. package/lib/framework/impl/table/table-impl.js.map +0 -1
  208. package/lib/framework/impl/table/table-row-impl.d.ts +0 -26
  209. package/lib/framework/impl/table/table-row-impl.js.map +0 -1
  210. package/lib/framework/impl/table/table-split-cell-patch.d.ts +0 -20
  211. package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
  212. package/lib/framework/impl/table/table-split-cell.d.ts +0 -90
  213. package/lib/framework/impl/table/table-split-cell.js.map +0 -1
  214. package/lib/framework/impl/table/table-util.d.ts +0 -150
  215. package/lib/framework/impl/table/table-util.js.map +0 -1
  216. package/lib/framework/impl/text/text-impl.d.ts +0 -32
  217. package/lib/framework/impl/text/text-impl.js.map +0 -1
  218. package/lib/framework/impl/text/track-run-impl.d.ts +0 -27
  219. package/lib/framework/impl/text/track-run-impl.js.map +0 -1
  220. package/lib/framework/notify.d.ts +0 -13
  221. package/lib/framework/notify.js.map +0 -1
  222. package/lib/framework/range-util.d.ts +0 -40
  223. package/lib/framework/range-util.js.map +0 -1
  224. package/lib/framework/render-context.d.ts +0 -91
  225. package/lib/framework/render-context.js.map +0 -1
  226. package/lib/framework/render-define.d.ts +0 -109
  227. package/lib/framework/render-define.js.map +0 -1
  228. package/lib/framework/selection-overlays.d.ts +0 -30
  229. package/lib/framework/selection-overlays.js.map +0 -1
  230. package/lib/texteditor.d.ts +0 -318
  231. package/lib/texteditor.js.map +0 -1
  232. package/lib/util/subject.d.ts +0 -34
  233. package/lib/util/subject.js +0 -88
  234. package/lib/util/subject.js.map +0 -1
  235. package/lib/util/table-bind.d.ts +0 -5
  236. package/lib/util/table-bind.js.map +0 -1
  237. package/tsconfig.json +0 -25
@@ -1,138 +1,167 @@
1
- import { Subject } from "rxjs";
2
- import { EventMap } from "./element-event-define";
1
+ import { Subject, Subscription } from "rxjs";
2
+ import { ElementEvent, EventMap, EventTypes } from "./element-event-define";
3
3
  import { watchChanged } from "./notify";
4
- import { LeafRenderObject } from "./render-define";
4
+ import { RenderContenxtType } from "./render-context";
5
+ import { CursorType, LeafRenderObject, RenderObject } from "./render-define";
6
+
5
7
  export class Rect {
6
8
  x = 0;
7
9
  y = 0;
8
10
  width = 0;
9
11
  height = 0;
10
- maxHeight = 0;
11
- maxWidth = 0;
12
+ maxHeight: number = 0;
13
+ maxWidth: number = 0;
12
14
  }
15
+
16
+ export interface SerializeProps {
17
+ type: string,
18
+ props?: any,
19
+ children?: Array<SerializeProps>;
20
+ complete?: boolean;
21
+ }
22
+
23
+ /**
24
+ * 刷新类型
25
+ * 刷新外观,不需要进行测量,直接进入绘制
26
+ * 刷新内容,需要重新测量,再绘制
27
+ */
28
+ export type RefreshType = 'appearance' | 'content';
29
+
13
30
  /**
14
31
  * 修改标志
15
32
  */
16
- export var ModifyFlag;
17
- (function (ModifyFlag) {
33
+ export enum ModifyFlag {
18
34
  //被修改
19
- ModifyFlag[ModifyFlag["Modify"] = 0] = "Modify";
35
+ Modify = 0,
20
36
  //无修改
21
- ModifyFlag[ModifyFlag["None"] = 1] = "None";
37
+ None = 1,
22
38
  //子项被修改
23
- ModifyFlag[ModifyFlag["Track"] = 2] = "Track";
24
- })(ModifyFlag || (ModifyFlag = {}));
39
+ Track = 2
40
+ }
41
+
42
+ export interface OnChangeEventProps {
43
+ data: any
44
+ }
25
45
  /**
26
46
  * 定义组件的数据,配置
27
47
  */
28
- export class Element {
29
- type;
30
- modifyFlag = ModifyFlag.Modify;
31
- isMouseenter;
32
- _eventMap;
33
- _refreshEvent = new Subject();
34
- _onChangeEvent = new Subject();
35
- observers = new WeakMap();
36
- paintRenders = [];
37
- measureRender;
38
- focusable;
39
- isFocused;
48
+ export abstract class Element<P extends object = any> {
49
+ modifyFlag: ModifyFlag = ModifyFlag.Modify;
50
+ isMouseenter!: boolean;
51
+ private _eventMap: EventMap | null;
52
+ private _refreshEvent: Subject<void> = new Subject();
53
+ protected _onChangeEvent: Subject<void> = new Subject();
54
+ private observers: WeakMap<Element, Array<Subscription>> = new WeakMap();
55
+ paintRenders: Array<RenderObject> = [];
56
+ measureRender!: RenderObject | null;
57
+ focusable!: boolean;
58
+ isFocused!: boolean;
40
59
  /**
41
60
  * 修饰元素不能复制、序列化、删除(需要手动删除)
42
61
  */
43
- isDecorate;
62
+ isDecorate!: boolean;
44
63
  /**
45
64
  * 可点击性,例如:null-text 占位符元素不具备可点击能力
46
65
  * 2.编辑页眉页脚的能力
47
66
  */
48
- disableClick;
49
- _parent;
50
- get parent() {
51
- return this._parent;
67
+ disableClick!: boolean;
68
+ private _parent!: BranchElement | null;
69
+ get parent(): BranchElement {
70
+ return this._parent as BranchElement;
52
71
  }
53
- set parent(val) {
72
+ set parent(val: BranchElement) {
54
73
  this._parent = val;
55
74
  }
56
- _props;
57
- get props() {
75
+ private _props!: P;
76
+ public get props(): P {
58
77
  return this._props;
59
78
  }
60
- set props(value) {
79
+ public set props(value: P) {
61
80
  this.pubOnChange('self');
62
- this._props = watchChanged(value, () => { this.notifyChanged(); });
81
+ this._props = watchChanged(value, () => { this.notifyChanged() })
63
82
  //this._props = value;
64
83
  }
65
- notifyChanged() {
66
- this.pubOnChange('self');
84
+
85
+ private notifyChanged(): void {
86
+ this.pubOnChange('self')
67
87
  }
88
+
68
89
  //元素是否禁止复制,例如批注元素
69
90
  //forbidCopy: boolean;
70
- constructor(type) {
71
- this.type = type;
91
+ constructor(public type: string) {
72
92
  this._eventMap = new EventMap();
73
- this.addEvent('ElementMouseEnter', (evt) => { this.isMouseenter = true; });
74
- this.addEvent('ElementMouseLeave', (evt) => { this.isMouseenter = false; });
75
- }
76
- destroy() {
93
+ this.addEvent('ElementMouseEnter', (evt) => { this.isMouseenter = true });
94
+ this.addEvent('ElementMouseLeave', (evt) => { this.isMouseenter = false });
95
+ }
96
+ abstract createRenderObject(options: ViewOptions, renderCtx: RenderContenxtType): RenderObject | null;
97
+ abstract serialize(viewOptions: ViewOptions): SerializeProps | null;
98
+ abstract clone(data: boolean): Element;
99
+ abstract getChildLength(): number;
100
+ abstract getSelfLength(): number;
101
+ destroy(): void {
77
102
  this._eventMap?.clear(this);
78
103
  this.paintRenders.length = 0;
79
104
  this._parent = null;
80
105
  this.measureRender = null;
81
106
  this.unsubscribe(this);
82
107
  }
83
- addEvent(event, handle, useCapture = false) {
108
+ addEvent<T extends ElementEvent>(event: EventTypes, handle: (evt: T) => void, useCapture = false): string {
84
109
  if (!this._eventMap) {
85
- throw new Error('eventMap is null');
110
+ throw new Error('eventMap is null')
86
111
  }
87
112
  return this._eventMap?.add(this, event, handle, useCapture);
88
113
  }
89
- removeEvent(eventId) {
114
+ removeEvent(eventId: string): void {
90
115
  if (!this._eventMap) {
91
- throw new Error('eventMap is null');
116
+ throw new Error('eventMap is null')
92
117
  }
93
118
  this._eventMap.remove(this, eventId);
94
119
  }
95
- removeEventByType(eventType) {
120
+ removeEventByType(eventType: EventTypes): void {
96
121
  if (!this._eventMap) {
97
- throw new Error('eventMap is null');
122
+ throw new Error('eventMap is null')
98
123
  }
99
124
  this._eventMap.removeByType(this, eventType);
100
125
  }
101
- invokeEvent(event, evt, userCapture = false) {
126
+ invokeEvent(event: EventTypes, evt: ElementEvent, userCapture = false): void {
102
127
  if (!this._eventMap) {
103
- throw new Error('eventMap is null');
128
+ throw new Error('eventMap is null')
104
129
  }
105
130
  const listeners = this._eventMap.get(this, event, userCapture);
106
131
  listeners.forEach(item => item(evt));
107
132
  }
108
- beginMeasure() {
133
+ beginMeasure(): void {
109
134
  this.paintRenders.length = 0;
110
135
  }
111
- getIndex() {
136
+ getIndex(): number {
112
137
  if (this.parent) {
113
138
  return this.parent.getChildIndex(this);
114
- }
115
- else {
139
+ } else {
116
140
  return 0;
117
141
  }
118
142
  }
119
- get refreshSubject() {
143
+ get refreshSubject(): Subject<void> {
120
144
  return this._refreshEvent;
121
145
  }
122
- get onChangeSubject() {
146
+ get onChangeSubject(): Subject<void> {
123
147
  return this._onChangeEvent;
124
148
  }
125
- refreshView() {
149
+
150
+ refreshView(): void {
126
151
  this._refreshEvent.next();
127
152
  }
128
- unsubscribe(element) {
153
+
154
+ abstract pubOnChange(selfChange: pubChangeType): void
155
+
156
+ unsubscribe(element: Element): void {
129
157
  const subs = this.observers.get(element);
130
158
  if (subs) {
131
- subs.forEach(sub => { sub.unsubscribe(); });
159
+ subs.forEach(sub => { sub.unsubscribe() });
132
160
  this.observers.delete(element);
133
161
  }
134
162
  }
135
- addsubscribe(element, ...sub) {
163
+
164
+ addsubscribe(element: Element, ...sub: Array<Subscription>): void {
136
165
  let subs = this.observers.get(element);
137
166
  if (!subs) {
138
167
  subs = [];
@@ -140,31 +169,36 @@ export class Element {
140
169
  }
141
170
  subs.push(...sub);
142
171
  }
172
+
143
173
  /**
144
174
  * 移除当前节点
145
175
  */
146
- remove() {
176
+ remove(): void {
147
177
  if (this.parent) {
148
178
  this.parent.removeChild(this);
149
179
  }
150
180
  }
151
181
  }
182
+
183
+
184
+
152
185
  /**
153
186
  * 最小节点元素
154
187
  */
155
- export class LeafElement extends Element {
156
- cursorType = 'text';
188
+ export abstract class LeafElement<P extends object = any> extends Element<P> {
189
+ cursorType: CursorType = 'text';
157
190
  //abstract createRenderObject(options: ViewOptions, renderCtx: RenderContenxt): LeafRenderObject;
158
- getChildLength() {
191
+ getChildLength(): number {
159
192
  return 1;
160
193
  }
161
- destroy() {
194
+ destroy(): void {
162
195
  super.destroy();
163
196
  }
164
- getSelfLength() {
197
+ getSelfLength(): number {
165
198
  return 1;
166
199
  }
167
- pubOnChange(selfChange) {
200
+
201
+ pubOnChange(selfChange: pubChangeType): void {
168
202
  if (this.modifyFlag === ModifyFlag.None) {
169
203
  this.refreshView();
170
204
  }
@@ -178,22 +212,23 @@ export class LeafElement extends Element {
178
212
  if (this.modifyFlag === ModifyFlag.None) {
179
213
  this.modifyFlag = ModifyFlag.Track;
180
214
  }
181
- }
182
- else {
215
+ } else {
183
216
  this.modifyFlag = ModifyFlag.Modify;
184
217
  }
185
218
  this._onChangeEvent.next();
186
219
  }
187
220
  }
221
+
222
+
188
223
  /**
189
224
  * 枝干节点,包含若干个枝干或者叶子节点
190
225
  */
191
- export class BranchElement extends Element {
192
- chilren = [];
193
- constructor(type) {
226
+ export abstract class BranchElement<P extends object = any> extends Element<P> {
227
+ private chilren: Array<Element> = [];
228
+ constructor(type: string) {
194
229
  super(type);
195
230
  }
196
- addChild(child, index = -1) {
231
+ addChild(child: Element, index = -1): void {
197
232
  if (index === -1) {
198
233
  index = this.length;
199
234
  }
@@ -208,7 +243,8 @@ export class BranchElement extends Element {
208
243
  this.addsubscribe(child, refSub, onChangeSub);
209
244
  this.pubOnChange('self');
210
245
  }
211
- removeChild(child) {
246
+
247
+ removeChild(child: Element): void {
212
248
  const index = this.chilren.indexOf(child);
213
249
  if (index < 0) {
214
250
  throw new Error('为查找到当前元素');
@@ -216,30 +252,33 @@ export class BranchElement extends Element {
216
252
  this.disposeChild(child);
217
253
  this.chilren.splice(index, 1);
218
254
  }
219
- removeChildByIndex(index) {
255
+
256
+ removeChildByIndex(index: number): void {
220
257
  const child = this.chilren[index];
221
258
  if (child) {
222
259
  this.chilren.splice(index, 1);
223
260
  this.disposeChild(child);
224
- }
225
- else {
261
+ } else {
226
262
  throw new Error('为查找到当前元素');
227
263
  }
228
264
  }
229
- disposeChild(child) {
265
+
266
+ disposeChild(child: Element): void {
230
267
  this.unsubscribe(child);
231
268
  if (child.parent === this) {
232
- child.parent = null;
269
+ (<any>child).parent = null;
233
270
  }
234
271
  this.pubOnChange('self');
235
272
  }
236
- clearItems() {
273
+
274
+ clearItems(): void {
237
275
  const items = [...this.chilren];
238
276
  for (let i = items.length - 1; i >= 0; i--) {
239
277
  this.removeChildByIndex(i);
240
278
  }
241
279
  }
242
- destroy() {
280
+
281
+ destroy(): void {
243
282
  super.destroy();
244
283
  const items = [...this.chilren];
245
284
  for (let i = items.length - 1; i >= 0; i--) {
@@ -248,39 +287,45 @@ export class BranchElement extends Element {
248
287
  this.removeChild(child);
249
288
  }
250
289
  }
290
+
251
291
  get length() {
252
292
  return this.chilren.length;
253
293
  }
254
- find(predicate) {
294
+
295
+ find(predicate: (item: Element, index: number) => boolean): Element | undefined {
255
296
  return this.chilren.find(predicate);
256
297
  }
257
- getChild(index) {
258
- return this.chilren[index];
298
+
299
+ getChild<T extends Element = Element>(index: number): T {
300
+ return this.chilren[index] as T;
259
301
  }
260
- getChildIndex(child) {
302
+
303
+ getChildIndex(child: Element): number {
261
304
  return this.chilren.indexOf(child);
262
305
  }
263
- getChildLength() {
306
+
307
+ getChildLength(): number {
264
308
  //return this.chilren.reduce((prev, curr) => prev + 1 + curr.getChildLength(), 0);
265
309
  return this.chilren.reduce((prev, curr) => {
266
310
  if (curr instanceof BranchElement) {
267
311
  return prev + 1 + curr.getChildLength();
268
- }
269
- else if (curr instanceof LeafElement) {
312
+ } else if (curr instanceof LeafElement) {
270
313
  return prev + curr.getChildLength();
314
+ } else {
315
+ return 0
271
316
  }
272
- else {
273
- return 0;
274
- }
275
- }, 0);
317
+ }, 0)
276
318
  }
277
- getSelfLength() {
319
+
320
+ getSelfLength(): number {
278
321
  return 1 + this.chilren.reduce((prev, curr) => {
279
322
  return prev + curr.getSelfLength();
280
323
  }, 0);
281
324
  }
282
- treeFilter(predicate) {
283
- const items = [];
325
+
326
+
327
+ treeFilter(predicate: (item: Element, index: number) => boolean): Array<Element> {
328
+ const items: Array<Element> = [];
284
329
  for (let i = 0; i < this.length; i++) {
285
330
  const item = this.getChild(i);
286
331
  if (predicate(item, i)) {
@@ -292,7 +337,8 @@ export class BranchElement extends Element {
292
337
  }
293
338
  return items;
294
339
  }
295
- treeFind(predicate) {
340
+
341
+ treeFind(predicate: (item: Element, index: number) => boolean): Element | null {
296
342
  for (let i = 0; i < this.length; i++) {
297
343
  const item = this.getChild(i);
298
344
  if (predicate(item, i)) {
@@ -307,7 +353,8 @@ export class BranchElement extends Element {
307
353
  }
308
354
  return null;
309
355
  }
310
- pubOnChange(selfChange) {
356
+
357
+ pubOnChange(selfChange: pubChangeType): void {
311
358
  if (this.modifyFlag === ModifyFlag.Track && selfChange === 'tracker') {
312
359
  return;
313
360
  }
@@ -318,117 +365,146 @@ export class BranchElement extends Element {
318
365
  if (this.modifyFlag === ModifyFlag.None) {
319
366
  this.modifyFlag = ModifyFlag.Track;
320
367
  }
321
- }
322
- else {
368
+ } else {
323
369
  this.modifyFlag = ModifyFlag.Modify;
324
370
  for (let i = 0; i < this.length; i++) {
325
- this.getChild(i).pubOnChange('to-child');
371
+ this.getChild(i).pubOnChange('to-child')
326
372
  }
327
373
  }
328
374
  this._onChangeEvent.next();
329
375
  }
330
376
  }
377
+
378
+ export type pubChangeType = 'self' | 'tracker' | 'to-child';
331
379
  /**
332
380
  * 行内编组元素
333
381
  */
334
- export class InlineGroupElement extends BranchElement {
335
- }
382
+ export abstract class InlineGroupElement<P extends object = any> extends BranchElement<P> { }
383
+
336
384
  /**
337
385
  * 块级元素,目前只有P元素
338
386
  */
339
- export class BlockContentElement extends BranchElement {
340
- }
387
+ export abstract class BlockContentElement<P extends object = any> extends BranchElement<P> { }
388
+
341
389
  /**
342
390
  * 包含块级渲染元素的容器元素,例如body、table-cell、table等
343
391
  */
344
- export class BlockContainerElement extends BranchElement {
345
- noFillEmpty;
392
+ export abstract class BlockContainerElement<P extends object = any> extends BranchElement<P> {
393
+ noFillEmpty!: boolean;
346
394
  }
347
- export class ElementFactory {
348
- options;
395
+
396
+ export interface readElementProps<T> {
397
+ type: string;
398
+ props: T | undefined;
399
+ children: any | undefined
349
400
  }
401
+
402
+ export abstract class ElementFactory<T = null> {
403
+ options!: ViewOptions;
404
+ abstract match(type: string): boolean;
405
+ abstract createElement(data: readElementProps<T>, renderCtx: RenderContenxtType): Element;
406
+ }
407
+
408
+ export interface SelectionContentRange {
409
+ target: Element
410
+ isFullSelected: boolean,
411
+ startOffset: number,
412
+ endOffset: number,
413
+ selectedChildren: Array<SelectionContentRange>,
414
+ }
415
+
350
416
  /**
351
417
  * 编辑模式
352
418
  */
353
- export var EditMode;
354
- (function (EditMode) {
419
+ export enum EditMode {
355
420
  /**
356
421
  * 自由模式,设计模板时使用
357
422
  */
358
- EditMode[EditMode["Free"] = 0] = "Free";
423
+ Free = 0,
359
424
  /**
360
425
  * 严格模式,医生书写模式时使用,只可更改数据元值
361
426
  */
362
- EditMode[EditMode["Strict"] = 1] = "Strict";
427
+ Strict = 1,
363
428
  /**
364
429
  * 查看模式,任何修改文档的操作都不允许,但是可选中,有拖蓝
365
430
  */
366
- EditMode[EditMode["View"] = 2] = "View";
431
+ View = 2,
367
432
  /**
368
433
  * 禁用模式,当前区域不可点击,不可选中,页脚、页眉编辑时的控制
369
434
  */
370
- EditMode[EditMode["Disabled"] = 3] = "Disabled";
371
- })(EditMode || (EditMode = {}));
435
+ Disabled = 3
436
+ }
437
+
372
438
  /**
373
439
  * 文档模式
374
440
  */
375
- export var DocMode;
376
- (function (DocMode) {
377
- DocMode[DocMode["Design"] = 0] = "Design";
441
+ export enum DocMode {
442
+ Design = 0,
378
443
  /**
379
444
  * 完全编辑模式
380
445
  */
381
- DocMode[DocMode["Edit"] = 1] = "Edit";
446
+ Edit = 1,
382
447
  /**
383
448
  * 表单编辑模式
384
449
  */
385
- DocMode[DocMode["FormEdit"] = 2] = "FormEdit";
450
+ FormEdit = 2,
386
451
  /**
387
452
  * 视图模式,只能查看
388
453
  */
389
- DocMode[DocMode["View"] = 3] = "View";
390
- })(DocMode || (DocMode = {}));
391
- export var BooleanEnum;
392
- (function (BooleanEnum) {
393
- BooleanEnum[BooleanEnum["Null"] = 0] = "Null";
394
- BooleanEnum[BooleanEnum["True"] = 1] = "True";
395
- BooleanEnum[BooleanEnum["False"] = 2] = "False";
396
- })(BooleanEnum || (BooleanEnum = {}));
454
+ View = 3
455
+ }
456
+
457
+ export enum BooleanEnum {
458
+ Null,
459
+ True,
460
+ False
461
+ }
462
+
463
+ export interface DocUser {
464
+ id: string,
465
+ name: string
466
+ }
467
+
397
468
  export class PageOptions {
398
- _width = 0;
399
- _height = 0;
400
- orient = 'portrait';
401
- constructor(width, height, orient = 'portrait') {
469
+ private _width: number = 0;
470
+ private _height: number = 0;
471
+ orient: OrientType = 'portrait';
472
+ constructor(width: number, height: number, orient: OrientType = 'portrait') {
402
473
  this._width = width;
403
474
  this._height = height;
404
475
  this.orient = orient;
405
476
  }
406
- get width() {
477
+ get width(): number {
407
478
  if (this.orient === 'landscape') {
408
479
  return this._height;
409
- }
410
- else {
480
+ } else {
411
481
  return this._width;
412
482
  }
413
483
  }
414
- set width(value) {
484
+
485
+ set width(value: number) {
415
486
  this._width = value;
416
487
  }
417
- get height() {
488
+
489
+ get height(): number {
418
490
  if (this.orient === 'landscape') {
419
491
  return this._width;
420
- }
421
- else {
492
+ } else {
422
493
  return this._height;
423
494
  }
495
+
424
496
  }
425
- set height(value) {
497
+
498
+ set height(value: number) {
426
499
  this._height = value;
427
500
  }
428
501
  }
502
+
503
+ export type OrientType = 'landscape' | 'portrait';
504
+
429
505
  export class ViewOptions {
430
- copyRightInfo;
431
- watermark;
506
+ copyRightInfo!: string;
507
+ watermark?: string;
432
508
  drawLineRectColor = "rgb(0,0,0)";
433
509
  drawCharRectColor = "rgb(0,0,0)";
434
510
  drawSymbolsColor = 'rgb(128,128,128)';
@@ -441,50 +517,54 @@ export class ViewOptions {
441
517
  dataEleOutlineColor = 'rgb(131,175,155,0.7)';
442
518
  viewBackcolor = 'rgb(230,230,230)';
443
519
  paraSymbolColor = 'rgb(128,128,128)';
444
- dataGroupColor = 'rgb(0,80,179)';
445
- showLineRect;
446
- showCharRect;
447
- showParaMark;
448
- showTabChar;
449
- showSpaceChar;
450
- showLineBreak;
520
+ dataGroupColor = 'rgb(0,80,179)'
521
+ showLineRect!: boolean;
522
+ showCharRect!: boolean;
523
+ showParaMark!: boolean;
524
+ showTabChar!: boolean;
525
+ showSpaceChar!: boolean;
526
+ showLineBreak!: boolean;
451
527
  bodyMarginTop = 8;
452
- devMode = false;
453
- showDebug;
454
- resourceMode = 'immediate';
455
- serverMode = false;
456
- secretBrowse = false;
528
+ devMode: boolean = false;
529
+ showDebug!: boolean;
530
+ resourceMode: 'lazy' | 'immediate' = 'immediate';
531
+ serverMode: boolean = false;
532
+ secretBrowse: boolean = false;
457
533
  //中文版式,处理中文换行;前置标点和后置标点
458
- chineseLayout = true;
534
+ chineseLayout: boolean = true;
459
535
  //整页模式,不分页
460
- _fullPageView = false;
461
- get fullPageView() {
536
+ private _fullPageView: boolean = false;
537
+ get fullPageView(): boolean {
462
538
  return this._fullPageView;
463
539
  }
464
- set fullPageView(value) {
540
+ set fullPageView(value: boolean) {
465
541
  this._fullPageView = value;
466
542
  this.onChange.next('force');
467
543
  }
468
544
  //毫米和像素的转换比
469
- mmToPixelsRatio = 0;
470
- cursor = 'text';
545
+ mmToPixelsRatio: number = 0;
546
+ cursor: CursorType = 'text';
471
547
  //当前文档偏移量,取决于滚动条位置
472
548
  translateY = 0;
473
549
  //文档大小
474
- docPageSettings = new PageOptions(0, 0);
550
+ docPageSettings: PageOptions = new PageOptions(0, 0);
475
551
  //视图大小,canvas
476
- viewSettings;
477
- pageNumFormat = '第{index}页/共{count}页';
552
+ viewSettings!: {
553
+ width: number;
554
+ height: number;
555
+ };
556
+ pageNumFormat: string = '第{index}页/共{count}页';
478
557
  //获取canvas节点的高度
479
- get viewPaintHeight() {
558
+ get viewPaintHeight(): number {
480
559
  //return this.viewSettings.height / this.scale;
481
560
  return this.viewSettings.height;
482
561
  }
562
+
483
563
  /**
484
564
  * 内容区域的高度
485
565
  * 同时限定canvas的最小宽度
486
566
  */
487
- get ContentWidth() {
567
+ get ContentWidth(): number {
488
568
  let width = this.docPageSettings.width;
489
569
  if (this.showReviewWindow) {
490
570
  width = width + this.reviewWindowWidth;
@@ -492,29 +572,29 @@ export class ViewOptions {
492
572
  return width;
493
573
  }
494
574
  //两个页的间距
495
- docSpace = 0;
575
+ docSpace: number = 0;
496
576
  //是否显示审阅窗口
497
- _showReviewWindow = false;
498
- get showReviewWindow() {
577
+ private _showReviewWindow: boolean = false;
578
+ public get showReviewWindow(): boolean {
499
579
  return this._showReviewWindow;
500
580
  }
501
- set showReviewWindow(value) {
581
+ public set showReviewWindow(value: boolean) {
502
582
  this._showReviewWindow = value;
503
583
  this.onChange.next();
504
584
  }
505
585
  //审阅窗口宽度
506
- reviewWindowWidth = 200;
586
+ reviewWindowWidth: number = 200;
507
587
  //缩放
508
- _scale = 1;
509
- get scale() {
588
+ private _scale: number = 1;
589
+ get scale(): number {
510
590
  return this._scale;
511
591
  }
512
- set scale(val) {
592
+ set scale(val: number) {
513
593
  this._scale = val;
514
594
  }
515
- docMode = DocMode.Design;
595
+ docMode: DocMode = DocMode.Design;
516
596
  //是否开启重做功能
517
- enableUndo = true;
597
+ enableUndo: boolean = true;
518
598
  // //是否开启留痕模式
519
599
  // private _enableTrackChanges: boolean = false;
520
600
  // public get enableTrackChanges(): boolean {
@@ -525,55 +605,70 @@ export class ViewOptions {
525
605
  // this.onChange.next('force');
526
606
  // }
527
607
  //是否显示审阅痕迹
528
- _showTrackChanges = true;
529
- get showTrackChanges() {
608
+ private _showTrackChanges: boolean = true;
609
+ public get showTrackChanges(): boolean {
530
610
  return this._showTrackChanges;
531
611
  }
532
- set showTrackChanges(value) {
612
+ public set showTrackChanges(value: boolean) {
533
613
  this._showTrackChanges = value;
534
614
  this.onChange.next('force');
535
615
  }
536
616
  //医嘱打印模式,文字行模式,将表格多行对象转换为多个表格行对象
537
- textRowLineMode = false;
538
- editUser = { id: '', name: '' };
617
+ textRowLineMode: boolean = false;
618
+ editUser: DocUser = { id: '', name: '' };
539
619
  //留痕区域的生效时间段,同一用户的留痕块在此时间外需要生成新的留痕块
540
- trackChangePeriod = 10;
541
- onChange = new Subject();
620
+ trackChangePeriod: number = 10;
621
+ onChange: Subject<'demand' | 'force'> = new Subject();
542
622
  constructor() { }
543
623
  }
624
+
625
+
544
626
  export class MarginProps {
545
- top;
546
- bottom;
547
- left;
548
- right;
549
- constructor(top = 0, bottom = 0, left = 0, right = 0) {
550
- this.top = top;
551
- this.bottom = bottom;
552
- this.left = left;
553
- this.right = right;
554
- }
555
- clone() {
627
+
628
+ constructor(public top: number = 0, public bottom: number = 0, public left: number = 0, public right: number = 0) { }
629
+ clone(): MarginProps {
556
630
  const cloneMargin = new MarginProps(this.top, this.bottom, this.left, this.right);
557
631
  return cloneMargin;
558
632
  }
559
633
  }
560
- export class PaddingProps extends MarginProps {
561
- }
634
+
635
+ export class PaddingProps extends MarginProps { }
636
+
562
637
  export class BorderProps {
563
- width;
564
- color;
565
- style;
566
- constructor(width = 0, color = 'transparent', style = 'solid') {
567
- this.width = width;
568
- this.color = color;
569
- this.style = style;
570
- }
571
- clone() {
638
+ constructor(public width: number = 0, public color: string = 'transparent', public style: string = 'solid') { }
639
+ clone(): BorderProps {
572
640
  return new BorderProps(this.width, this.color, this.style);
573
641
  }
574
642
  }
575
- export class IDispose {
643
+
644
+ export abstract class IDispose {
645
+ abstract destroy(): void;
576
646
  }
577
- export class ResizeLeafRenderObject extends LeafRenderObject {
647
+
648
+
649
+ export type TextAlign = 'center' | 'left' | 'right' | 'justify';
650
+
651
+ export interface Position {
652
+ x: number;
653
+ y: number;
578
654
  }
579
- //# sourceMappingURL=element-define.js.map
655
+
656
+
657
+ export abstract class ResizeLeafRenderObject extends LeafRenderObject { }
658
+
659
+
660
+ export type NullableType<T> = {
661
+ [PropName in keyof T]?: T[PropName]
662
+ };
663
+
664
+
665
+ export type RequiredType<T> = {
666
+ [PropName in keyof T]: T[PropName]
667
+ };
668
+
669
+ export type ImgLoadStatus = 'no' | 'loading' | 'completed' | 'error';
670
+
671
+ export interface ICancelTokenFn {
672
+ cancel?: () => void;
673
+ onFinish?: () => void;
674
+ }