@hailin-zheng/editor-core 1.0.14 → 1.0.20

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 (290) hide show
  1. package/lib/doc-ruler.d.ts +1 -0
  2. package/lib/doc-ruler.d.ts.map +1 -0
  3. package/lib/framework/common-util.d.ts +1 -0
  4. package/lib/framework/common-util.d.ts.map +1 -0
  5. package/lib/framework/document-change.d.ts +1 -0
  6. package/lib/framework/document-change.d.ts.map +1 -0
  7. package/lib/framework/document-combine.d.ts +1 -0
  8. package/lib/framework/document-combine.d.ts.map +1 -0
  9. package/lib/framework/document-comment.d.ts +1 -0
  10. package/lib/framework/document-comment.d.ts.map +1 -0
  11. package/lib/framework/document-context.d.ts +1 -0
  12. package/lib/framework/document-context.d.ts.map +1 -0
  13. package/lib/framework/document-eval-func.d.ts +1 -0
  14. package/lib/framework/document-eval-func.d.ts.map +1 -0
  15. package/lib/framework/document-event.d.ts +1 -0
  16. package/lib/framework/document-event.d.ts.map +1 -0
  17. package/lib/framework/document-history.d.ts +1 -0
  18. package/lib/framework/document-history.d.ts.map +1 -0
  19. package/lib/framework/document-images-loader.d.ts +1 -0
  20. package/lib/framework/document-images-loader.d.ts.map +1 -0
  21. package/lib/framework/document-input-cursor.d.ts +1 -0
  22. package/lib/framework/document-input-cursor.d.ts.map +1 -0
  23. package/lib/framework/document-paint.d.ts +1 -0
  24. package/lib/framework/document-paint.d.ts.map +1 -0
  25. package/lib/framework/document-print-offscreen.d.ts +1 -0
  26. package/lib/framework/document-print-offscreen.d.ts.map +1 -0
  27. package/lib/framework/document-print.d.ts +1 -0
  28. package/lib/framework/document-print.d.ts.map +1 -0
  29. package/lib/framework/document-segmenter.d.ts +1 -0
  30. package/lib/framework/document-segmenter.d.ts.map +1 -0
  31. package/lib/framework/document-selection.d.ts +1 -0
  32. package/lib/framework/document-selection.d.ts.map +1 -0
  33. package/lib/framework/document-template.d.ts +1 -0
  34. package/lib/framework/document-template.d.ts.map +1 -0
  35. package/lib/framework/document-textline-mode.d.ts +1 -0
  36. package/lib/framework/document-textline-mode.d.ts.map +1 -0
  37. package/lib/framework/element-define.d.ts +1 -0
  38. package/lib/framework/element-define.d.ts.map +1 -0
  39. package/lib/framework/element-event-define.d.ts +1 -0
  40. package/lib/framework/element-event-define.d.ts.map +1 -0
  41. package/lib/framework/element-measure.d.ts +1 -0
  42. package/lib/framework/element-measure.d.ts.map +1 -0
  43. package/lib/framework/element-paint.d.ts +1 -0
  44. package/lib/framework/element-paint.d.ts.map +1 -0
  45. package/lib/framework/element-props.d.ts +2 -1
  46. package/lib/framework/element-props.d.ts.map +1 -0
  47. package/lib/framework/element-reader.d.ts +1 -0
  48. package/lib/framework/element-reader.d.ts.map +1 -0
  49. package/lib/framework/element-render-cut.d.ts +1 -0
  50. package/lib/framework/element-render-cut.d.ts.map +1 -0
  51. package/lib/framework/element-serialize.d.ts +1 -0
  52. package/lib/framework/element-serialize.d.ts.map +1 -0
  53. package/lib/framework/element-util.d.ts +1 -0
  54. package/lib/framework/element-util.d.ts.map +1 -0
  55. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +1 -0
  56. package/lib/framework/impl/checkbox/checkbox-impl.d.ts.map +1 -0
  57. package/lib/framework/impl/comments/comment-content-impl.d.ts +1 -0
  58. package/lib/framework/impl/comments/comment-content-impl.d.ts.map +1 -0
  59. package/lib/framework/impl/comments/comment-element-impl.d.ts +1 -0
  60. package/lib/framework/impl/comments/comment-element-impl.d.ts.map +1 -0
  61. package/lib/framework/impl/comments/comments-container-impl.d.ts +1 -0
  62. package/lib/framework/impl/comments/comments-container-impl.d.ts.map +1 -0
  63. package/lib/framework/impl/comments/comments-util.d.ts +1 -0
  64. package/lib/framework/impl/comments/comments-util.d.ts.map +1 -0
  65. package/lib/framework/impl/comments/validate-msg-impl.d.ts +1 -0
  66. package/lib/framework/impl/comments/validate-msg-impl.d.ts.map +1 -0
  67. package/lib/framework/impl/data-element/data-decorate-impl.d.ts +1 -0
  68. package/lib/framework/impl/data-element/data-decorate-impl.d.ts.map +1 -0
  69. package/lib/framework/impl/data-element/data-element-barcode.d.ts +1 -0
  70. package/lib/framework/impl/data-element/data-element-barcode.d.ts.map +1 -0
  71. package/lib/framework/impl/data-element/data-element-base-impl.d.ts +1 -0
  72. package/lib/framework/impl/data-element/data-element-base-impl.d.ts.map +1 -0
  73. package/lib/framework/impl/data-element/data-element-check-impl.d.ts +1 -0
  74. package/lib/framework/impl/data-element/data-element-check-impl.d.ts.map +1 -0
  75. package/lib/framework/impl/data-element/data-element-date-impl.d.ts +1 -0
  76. package/lib/framework/impl/data-element/data-element-date-impl.d.ts.map +1 -0
  77. package/lib/framework/impl/data-element/data-element-group-impl.d.ts +1 -0
  78. package/lib/framework/impl/data-element/data-element-group-impl.d.ts.map +1 -0
  79. package/lib/framework/impl/data-element/data-element-image-impl.d.ts +1 -0
  80. package/lib/framework/impl/data-element/data-element-image-impl.d.ts.map +1 -0
  81. package/lib/framework/impl/data-element/data-element-list-impl.d.ts +1 -0
  82. package/lib/framework/impl/data-element/data-element-list-impl.d.ts.map +1 -0
  83. package/lib/framework/impl/data-element/data-element-text-impl.d.ts +1 -0
  84. package/lib/framework/impl/data-element/data-element-text-impl.d.ts.map +1 -0
  85. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +1 -0
  86. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts.map +1 -0
  87. package/lib/framework/impl/document/doc-body-impl.d.ts +1 -0
  88. package/lib/framework/impl/document/doc-body-impl.d.ts.map +1 -0
  89. package/lib/framework/impl/document/doc-body-part-impl.d.ts +1 -0
  90. package/lib/framework/impl/document/doc-body-part-impl.d.ts.map +1 -0
  91. package/lib/framework/impl/document/doc-container-impl.d.ts +1 -0
  92. package/lib/framework/impl/document/doc-container-impl.d.ts.map +1 -0
  93. package/lib/framework/impl/document/doc-footer-impl.d.ts +1 -0
  94. package/lib/framework/impl/document/doc-footer-impl.d.ts.map +1 -0
  95. package/lib/framework/impl/document/doc-header-impl.d.ts +1 -0
  96. package/lib/framework/impl/document/doc-header-impl.d.ts.map +1 -0
  97. package/lib/framework/impl/document/doc-impl.d.ts +1 -0
  98. package/lib/framework/impl/document/doc-impl.d.ts.map +1 -0
  99. package/lib/framework/impl/index.d.ts +37 -0
  100. package/lib/framework/impl/index.d.ts.map +1 -0
  101. package/lib/framework/impl/media-formula/menstrual-history.d.ts +1 -0
  102. package/lib/framework/impl/media-formula/menstrual-history.d.ts.map +1 -0
  103. package/lib/framework/impl/paragraph/p-impl.d.ts +1 -0
  104. package/lib/framework/impl/paragraph/p-impl.d.ts.map +1 -0
  105. package/lib/framework/impl/picture/image-impl.d.ts +1 -0
  106. package/lib/framework/impl/picture/image-impl.d.ts.map +1 -0
  107. package/lib/framework/impl/radio/radio-impl.d.ts +1 -0
  108. package/lib/framework/impl/radio/radio-impl.d.ts.map +1 -0
  109. package/lib/framework/impl/symbol/br-symbol-impl.d.ts +1 -0
  110. package/lib/framework/impl/symbol/br-symbol-impl.d.ts.map +1 -0
  111. package/lib/framework/impl/symbol/p-symbol-impl.d.ts +1 -0
  112. package/lib/framework/impl/symbol/p-symbol-impl.d.ts.map +1 -0
  113. package/lib/framework/impl/table/table-cell-impl.d.ts +1 -0
  114. package/lib/framework/impl/table/table-cell-impl.d.ts.map +1 -0
  115. package/lib/framework/impl/table/table-impl.d.ts +1 -0
  116. package/lib/framework/impl/table/table-impl.d.ts.map +1 -0
  117. package/lib/framework/impl/table/table-row-impl.d.ts +1 -0
  118. package/lib/framework/impl/table/table-row-impl.d.ts.map +1 -0
  119. package/lib/framework/impl/table/table-split-cell-patch.d.ts +1 -0
  120. package/lib/framework/impl/table/table-split-cell-patch.d.ts.map +1 -0
  121. package/lib/framework/impl/table/table-split-cell.d.ts +1 -0
  122. package/lib/framework/impl/table/table-split-cell.d.ts.map +1 -0
  123. package/lib/framework/impl/table/table-util.d.ts +1 -0
  124. package/lib/framework/impl/table/table-util.d.ts.map +1 -0
  125. package/lib/framework/impl/text/text-impl.d.ts +1 -0
  126. package/lib/framework/impl/text/text-impl.d.ts.map +1 -0
  127. package/lib/framework/impl/text/track-run-impl.d.ts +1 -0
  128. package/lib/framework/impl/text/track-run-impl.d.ts.map +1 -0
  129. package/lib/framework/notify.d.ts +1 -0
  130. package/lib/framework/notify.d.ts.map +1 -0
  131. package/lib/framework/range-util.d.ts +1 -0
  132. package/lib/framework/range-util.d.ts.map +1 -0
  133. package/lib/framework/render-context.d.ts +1 -0
  134. package/lib/framework/render-context.d.ts.map +1 -0
  135. package/lib/framework/render-define.d.ts +1 -0
  136. package/lib/framework/render-define.d.ts.map +1 -0
  137. package/lib/framework/selection-overlays.d.ts +1 -0
  138. package/lib/framework/selection-overlays.d.ts.map +1 -0
  139. package/lib/index.d.ts +35 -0
  140. package/lib/index.d.ts.map +1 -0
  141. package/lib/index.js +15671 -0
  142. package/lib/texteditor.d.ts +3 -2
  143. package/lib/texteditor.d.ts.map +1 -0
  144. package/lib/util/subject.d.ts +1 -0
  145. package/lib/util/subject.d.ts.map +1 -0
  146. package/lib/util/table-bind.d.ts +1 -0
  147. package/lib/util/table-bind.d.ts.map +1 -0
  148. package/package.json +14 -8
  149. package/lib/doc-ruler.js +0 -313
  150. package/lib/doc-ruler.js.map +0 -1
  151. package/lib/framework/common-util.js +0 -178
  152. package/lib/framework/common-util.js.map +0 -1
  153. package/lib/framework/document-change.js +0 -1342
  154. package/lib/framework/document-change.js.map +0 -1
  155. package/lib/framework/document-combine.js +0 -40
  156. package/lib/framework/document-combine.js.map +0 -1
  157. package/lib/framework/document-comment.js +0 -148
  158. package/lib/framework/document-comment.js.map +0 -1
  159. package/lib/framework/document-context.js +0 -330
  160. package/lib/framework/document-context.js.map +0 -1
  161. package/lib/framework/document-eval-func.js +0 -48
  162. package/lib/framework/document-eval-func.js.map +0 -1
  163. package/lib/framework/document-event.js +0 -1054
  164. package/lib/framework/document-event.js.map +0 -1
  165. package/lib/framework/document-history.js +0 -65
  166. package/lib/framework/document-history.js.map +0 -1
  167. package/lib/framework/document-images-loader.js +0 -66
  168. package/lib/framework/document-images-loader.js.map +0 -1
  169. package/lib/framework/document-input-cursor.js +0 -239
  170. package/lib/framework/document-input-cursor.js.map +0 -1
  171. package/lib/framework/document-paint.js +0 -103
  172. package/lib/framework/document-paint.js.map +0 -1
  173. package/lib/framework/document-print-offscreen.js +0 -128
  174. package/lib/framework/document-print-offscreen.js.map +0 -1
  175. package/lib/framework/document-print.js +0 -203
  176. package/lib/framework/document-print.js.map +0 -1
  177. package/lib/framework/document-segmenter.js +0 -106
  178. package/lib/framework/document-segmenter.js.map +0 -1
  179. package/lib/framework/document-selection.js +0 -358
  180. package/lib/framework/document-selection.js.map +0 -1
  181. package/lib/framework/document-template.js +0 -20
  182. package/lib/framework/document-template.js.map +0 -1
  183. package/lib/framework/document-textline-mode.js +0 -30
  184. package/lib/framework/document-textline-mode.js.map +0 -1
  185. package/lib/framework/element-define.js +0 -579
  186. package/lib/framework/element-define.js.map +0 -1
  187. package/lib/framework/element-event-define.js +0 -108
  188. package/lib/framework/element-event-define.js.map +0 -1
  189. package/lib/framework/element-measure.js +0 -551
  190. package/lib/framework/element-measure.js.map +0 -1
  191. package/lib/framework/element-paint.js +0 -170
  192. package/lib/framework/element-paint.js.map +0 -1
  193. package/lib/framework/element-props.js +0 -809
  194. package/lib/framework/element-props.js.map +0 -1
  195. package/lib/framework/element-reader.js +0 -151
  196. package/lib/framework/element-reader.js.map +0 -1
  197. package/lib/framework/element-render-cut.js +0 -449
  198. package/lib/framework/element-render-cut.js.map +0 -1
  199. package/lib/framework/element-serialize.js +0 -113
  200. package/lib/framework/element-serialize.js.map +0 -1
  201. package/lib/framework/element-util.js +0 -1463
  202. package/lib/framework/element-util.js.map +0 -1
  203. package/lib/framework/impl/checkbox/checkbox-impl.js +0 -64
  204. package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
  205. package/lib/framework/impl/comments/comment-content-impl.js +0 -105
  206. package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
  207. package/lib/framework/impl/comments/comment-element-impl.js +0 -62
  208. package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
  209. package/lib/framework/impl/comments/comments-container-impl.js +0 -62
  210. package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
  211. package/lib/framework/impl/comments/comments-util.js +0 -67
  212. package/lib/framework/impl/comments/comments-util.js.map +0 -1
  213. package/lib/framework/impl/comments/validate-msg-impl.js +0 -83
  214. package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
  215. package/lib/framework/impl/data-element/data-decorate-impl.js +0 -91
  216. package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
  217. package/lib/framework/impl/data-element/data-element-barcode.js +0 -115
  218. package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
  219. package/lib/framework/impl/data-element/data-element-base-impl.js +0 -205
  220. package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
  221. package/lib/framework/impl/data-element/data-element-check-impl.js +0 -133
  222. package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
  223. package/lib/framework/impl/data-element/data-element-date-impl.js +0 -111
  224. package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
  225. package/lib/framework/impl/data-element/data-element-group-impl.js +0 -130
  226. package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
  227. package/lib/framework/impl/data-element/data-element-image-impl.js +0 -137
  228. package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
  229. package/lib/framework/impl/data-element/data-element-list-impl.js +0 -131
  230. package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
  231. package/lib/framework/impl/data-element/data-element-text-impl.js +0 -103
  232. package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
  233. package/lib/framework/impl/decorate/fill-null-space-imple.js +0 -43
  234. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
  235. package/lib/framework/impl/document/doc-body-impl.js +0 -79
  236. package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
  237. package/lib/framework/impl/document/doc-body-part-impl.js +0 -94
  238. package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
  239. package/lib/framework/impl/document/doc-container-impl.js +0 -21
  240. package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
  241. package/lib/framework/impl/document/doc-footer-impl.js +0 -77
  242. package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
  243. package/lib/framework/impl/document/doc-header-impl.js +0 -83
  244. package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
  245. package/lib/framework/impl/document/doc-impl.js +0 -209
  246. package/lib/framework/impl/document/doc-impl.js.map +0 -1
  247. package/lib/framework/impl/media-formula/menstrual-history.js +0 -153
  248. package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
  249. package/lib/framework/impl/paragraph/p-impl.js +0 -156
  250. package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
  251. package/lib/framework/impl/picture/image-impl.js +0 -124
  252. package/lib/framework/impl/picture/image-impl.js.map +0 -1
  253. package/lib/framework/impl/radio/radio-impl.js +0 -72
  254. package/lib/framework/impl/radio/radio-impl.js.map +0 -1
  255. package/lib/framework/impl/symbol/br-symbol-impl.js +0 -54
  256. package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
  257. package/lib/framework/impl/symbol/p-symbol-impl.js +0 -54
  258. package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
  259. package/lib/framework/impl/table/table-cell-impl.js +0 -145
  260. package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
  261. package/lib/framework/impl/table/table-impl.js +0 -363
  262. package/lib/framework/impl/table/table-impl.js.map +0 -1
  263. package/lib/framework/impl/table/table-row-impl.js +0 -75
  264. package/lib/framework/impl/table/table-row-impl.js.map +0 -1
  265. package/lib/framework/impl/table/table-split-cell-patch.js +0 -89
  266. package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
  267. package/lib/framework/impl/table/table-split-cell.js +0 -464
  268. package/lib/framework/impl/table/table-split-cell.js.map +0 -1
  269. package/lib/framework/impl/table/table-util.js +0 -678
  270. package/lib/framework/impl/table/table-util.js.map +0 -1
  271. package/lib/framework/impl/text/text-impl.js +0 -149
  272. package/lib/framework/impl/text/text-impl.js.map +0 -1
  273. package/lib/framework/impl/text/track-run-impl.js +0 -112
  274. package/lib/framework/impl/text/track-run-impl.js.map +0 -1
  275. package/lib/framework/notify.js +0 -116
  276. package/lib/framework/notify.js.map +0 -1
  277. package/lib/framework/range-util.js +0 -312
  278. package/lib/framework/range-util.js.map +0 -1
  279. package/lib/framework/render-context.js +0 -384
  280. package/lib/framework/render-context.js.map +0 -1
  281. package/lib/framework/render-define.js +0 -195
  282. package/lib/framework/render-define.js.map +0 -1
  283. package/lib/framework/selection-overlays.js +0 -124
  284. package/lib/framework/selection-overlays.js.map +0 -1
  285. package/lib/texteditor.js +0 -913
  286. package/lib/texteditor.js.map +0 -1
  287. package/lib/util/subject.js +0 -88
  288. package/lib/util/subject.js.map +0 -1
  289. package/lib/util/table-bind.js +0 -6
  290. package/lib/util/table-bind.js.map +0 -1
@@ -1,809 +0,0 @@
1
- export class INotifyPropertyChanged {
2
- __attatchProperty = {};
3
- registerProperty(propertyName, value) {
4
- this.__attatchProperty[propertyName] = value;
5
- }
6
- removeProperty(propertyName) {
7
- delete this.__attatchProperty[propertyName];
8
- }
9
- getProperty(propertyName) {
10
- return this.__attatchProperty[propertyName];
11
- }
12
- }
13
- export class TextProps extends INotifyPropertyChanged {
14
- constructor() {
15
- super();
16
- }
17
- color;
18
- fontName;
19
- fontSize;
20
- fontWeight = 'normal';
21
- fontStyle = 'normal';
22
- //textDecoration: 'none' | 'underline' | 'overline' | 'line-through' = 'none';
23
- underline = false;
24
- overline = false;
25
- linethrough = false;
26
- background;
27
- letterSpace;
28
- /**
29
- * 上标或者下标
30
- */
31
- vertAlign;
32
- /**
33
- * 字符边框
34
- */
35
- border;
36
- clearCache() {
37
- this.__cacheFont = null;
38
- }
39
- clone(source) {
40
- const clone = source ?? new TextProps();
41
- this.setPropsValue(this, clone);
42
- return clone;
43
- }
44
- setPropsValue(source, target) {
45
- target.color = source.color;
46
- target.fontName = source.fontName;
47
- target.fontSize = source.fontSize;
48
- target.fontWeight = source.fontWeight;
49
- target.fontStyle = source.fontStyle;
50
- target.underline = source.underline;
51
- target.overline = source.overline;
52
- target.linethrough = source.linethrough;
53
- target.background = source.background;
54
- target.letterSpace = source.letterSpace;
55
- target.vertAlign = source.vertAlign;
56
- target.border = source.border;
57
- }
58
- getSerializeProps(viewOptions) {
59
- const props = {};
60
- if (this.color && this.color !== viewOptions.defaultColor) {
61
- props["color"] = this.color;
62
- }
63
- if (this.fontName && this.fontName !== viewOptions.defaultFontName) {
64
- props["fontName"] = this.fontName;
65
- }
66
- if (this.fontSize !== viewOptions.defaultFontSize) {
67
- props["fontSize"] = this.fontSize;
68
- }
69
- if (this.fontWeight && this.fontWeight !== "normal") {
70
- props["fontWeight"] = this.fontWeight;
71
- }
72
- if (this.underline) {
73
- props["underline"] = this.underline;
74
- }
75
- if (this.overline) {
76
- props["overline"] = this.overline;
77
- }
78
- if (this.linethrough) {
79
- props["linethrough"] = this.linethrough;
80
- }
81
- if (this.background) {
82
- props["background"] = this.background;
83
- }
84
- if (this.letterSpace) {
85
- props["letterSpace"] = this.letterSpace;
86
- }
87
- if (this.fontStyle && this.fontStyle !== 'normal') {
88
- props["fontStyle"] = this.fontStyle;
89
- }
90
- if (this.vertAlign) {
91
- props["vertAlign"] = this.vertAlign;
92
- }
93
- if (this.border) {
94
- props["border"] = this.border;
95
- }
96
- return props;
97
- }
98
- __cacheFont;
99
- getFont() {
100
- if (this.__cacheFont) {
101
- return this.__cacheFont;
102
- }
103
- else {
104
- let fontStr = '';
105
- if (this.fontStyle && this.fontStyle !== 'normal') {
106
- fontStr += this.fontStyle + ' ';
107
- }
108
- if (this.fontWeight && this.fontWeight !== 'normal') {
109
- fontStr += this.fontWeight + ' ';
110
- }
111
- //当前存在上标或者下标,大小为3/5
112
- fontStr += (this.vertAlign ? this.fontSize * 3 / 5 : this.fontSize) + 'px ';
113
- fontStr += fontMapFunc.getFontMap(this.fontName);
114
- this.__cacheFont = fontStr;
115
- return this.__cacheFont;
116
- }
117
- }
118
- equals(props) {
119
- return this.background === props.background
120
- && this.color === props.color
121
- && this.fontName === props.fontName
122
- && this.fontSize === props.fontSize
123
- && this.fontWeight === props.fontWeight
124
- && this.letterSpace === props.letterSpace
125
- && this.underline === props.underline
126
- && this.overline === props.overline
127
- && this.linethrough === props.linethrough
128
- && this.fontStyle === props.fontStyle
129
- && this.vertAlign === props.vertAlign
130
- && this.border === props.border;
131
- }
132
- }
133
- export class ParagraphProps extends INotifyPropertyChanged {
134
- //段落默认的文本属性
135
- textProps;
136
- indent = 0;
137
- hanging = 0;
138
- lineHeight = 1.3;
139
- textAlign = 'left';
140
- numberType = -1;
141
- pageBreak = false;
142
- clone(dest = null) {
143
- const clone = dest ?? new ParagraphProps();
144
- clone.indent = this.indent;
145
- clone.numberType = this.numberType;
146
- clone.lineHeight = this.lineHeight;
147
- clone.textAlign = this.textAlign;
148
- clone.textProps = this.textProps.clone(new TextProps());
149
- //强制换页属性不可复制
150
- //clone.pageBreak=this.pageBreak;
151
- return clone;
152
- }
153
- getSerializeProps(viewOptions) {
154
- const props = {};
155
- if (this.indent) {
156
- props["indent"] = this.indent;
157
- }
158
- if (this.hanging) {
159
- props["hanging"] = this.hanging;
160
- }
161
- if (this.lineHeight && this.lineHeight !== 1.3) {
162
- props["lineHeight"] = this.lineHeight;
163
- }
164
- if (this.textAlign && this.textAlign !== "left") {
165
- props["textAlign"] = this.textAlign;
166
- }
167
- if (this.numberType !== -1) {
168
- props["numberType"] = this.numberType;
169
- }
170
- if (this.textProps) {
171
- const dt = this.textProps.getSerializeProps(viewOptions);
172
- if (Object.keys(dt).length) {
173
- props["textProps"] = dt;
174
- }
175
- }
176
- if (this.pageBreak) {
177
- props["pageBreak"] = this.pageBreak;
178
- }
179
- return props;
180
- }
181
- }
182
- export class DocumentProps extends INotifyPropertyChanged {
183
- width;
184
- height;
185
- padding;
186
- headerLine = 12;
187
- footerLine = 12;
188
- orient = 'portrait';
189
- createUserId;
190
- createUserName;
191
- createDate;
192
- scripts;
193
- clone(dest) {
194
- const clone = dest ?? new DocumentProps();
195
- clone.width = this.width;
196
- clone.height = this.height;
197
- clone.padding = this.padding.clone();
198
- clone.headerLine = this.headerLine;
199
- clone.footerLine = this.footerLine;
200
- clone.scripts = this.scripts;
201
- clone.createUserId = this.createUserId;
202
- clone.createUserName = this.createUserName;
203
- clone.createDate = this.createDate;
204
- clone.orient = this.orient;
205
- return clone;
206
- }
207
- getSerializeProps() {
208
- const props = {
209
- width: this.width,
210
- height: this.height,
211
- padding: this.padding,
212
- headerLine: this.headerLine,
213
- footerLine: this.footerLine,
214
- createDate: this.createDate,
215
- createUserName: this.createUserName,
216
- createUserId: this.createUserId
217
- };
218
- if (this.scripts) {
219
- props['scripts'] = this.scripts;
220
- }
221
- if (this.orient && this.orient !== 'portrait') {
222
- props['orient'] = this.orient;
223
- }
224
- return props;
225
- }
226
- }
227
- export class CheckBoxProps extends INotifyPropertyChanged {
228
- size;
229
- isChecked;
230
- //用于复选框分组
231
- groupName;
232
- clone(dest) {
233
- const clone = dest ?? new CheckBoxProps();
234
- clone.size = this.size;
235
- clone.isChecked = this.isChecked;
236
- clone.groupName = this.groupName;
237
- return clone;
238
- }
239
- getSerializeProps(viewOptions) {
240
- return {
241
- size: this.size,
242
- isChecked: this.isChecked,
243
- groupName: this.groupName,
244
- };
245
- }
246
- }
247
- export class RadioBoxProps extends INotifyPropertyChanged {
248
- size;
249
- isChecked;
250
- clone(dest) {
251
- const clone = dest ?? new RadioBoxProps();
252
- clone.size = this.size;
253
- clone.isChecked = this.isChecked;
254
- return clone;
255
- }
256
- getSerializeProps(viewOptions) {
257
- return {
258
- size: this.size,
259
- isCheced: this.isChecked
260
- };
261
- }
262
- }
263
- export class TableRowProps extends INotifyPropertyChanged {
264
- minHeight;
265
- headerRow;
266
- clone(dest) {
267
- const clone = dest ?? new TableRowProps();
268
- clone.minHeight = this.minHeight;
269
- clone.headerRow = this.headerRow;
270
- return clone;
271
- }
272
- getSerializeProps(viewOptions) {
273
- const props = {};
274
- if (this.minHeight > 0) {
275
- props["minHeight"] = this.minHeight;
276
- props["headerRow"] = this.headerRow;
277
- }
278
- if (this.headerRow) {
279
- props['headerRow'] = this.headerRow;
280
- }
281
- return props;
282
- }
283
- }
284
- export class TableProps extends INotifyPropertyChanged {
285
- //auto 或者具体的值
286
- width;
287
- cols;
288
- alignment;
289
- border = 'all';
290
- allowBreakRow;
291
- clone(dest) {
292
- const clone = dest ?? new TableProps();
293
- clone.width = this.width;
294
- clone.cols = [...this.cols];
295
- clone.alignment = this.alignment;
296
- clone.border = this.border;
297
- return clone;
298
- }
299
- getSerializeProps(viewOptions) {
300
- return {
301
- width: this.width,
302
- cols: this.cols,
303
- alignment: this.alignment,
304
- border: this.border
305
- };
306
- }
307
- }
308
- export class TableCellProps extends INotifyPropertyChanged {
309
- vMerge;
310
- hMerge;
311
- vAlign;
312
- backgroundColor;
313
- /**
314
- * 对角线
315
- */
316
- diagonal;
317
- clone(dest) {
318
- const clone = dest ?? new TableCellProps();
319
- clone.vMerge = this.vMerge;
320
- clone.hMerge = this.hMerge;
321
- clone.vAlign = this.vAlign;
322
- clone.backgroundColor = this.backgroundColor;
323
- clone.diagonal = this.diagonal;
324
- return clone;
325
- }
326
- getSerializeProps(options) {
327
- const props = {};
328
- if (this.vMerge) {
329
- props['vMerge'] = this.vMerge;
330
- }
331
- if (this.hMerge) {
332
- props['hMerge'] = this.hMerge;
333
- }
334
- if (this.vAlign && this.vAlign !== 'top') {
335
- props['vAlign'] = this.vAlign;
336
- }
337
- if (this.backgroundColor) {
338
- props['backgroundColor'] = this.backgroundColor;
339
- }
340
- if (this.diagonal) {
341
- props['diagonal'] = this.diagonal;
342
- }
343
- return props;
344
- }
345
- }
346
- export class PictureProps extends INotifyPropertyChanged {
347
- title;
348
- width;
349
- height;
350
- src;
351
- border;
352
- clone(dest) {
353
- const clone = dest ?? new PictureProps();
354
- clone.width = this.width;
355
- clone.height = this.height;
356
- clone.src = this.src;
357
- clone.border = this.border;
358
- clone.title = this.title;
359
- return clone;
360
- }
361
- getSerializeProps(viewOptions) {
362
- const props = {
363
- width: this.width,
364
- height: this.height,
365
- src: this.src,
366
- border: this.border,
367
- };
368
- if (this.title) {
369
- props['title'] = this.title;
370
- }
371
- return props;
372
- }
373
- }
374
- export class DataDecorateProps extends INotifyPropertyChanged {
375
- content;
376
- size;
377
- clone(dest) {
378
- const clone = dest ?? new DataDecorateProps();
379
- clone.content = this.content;
380
- clone.size = this.size;
381
- return clone;
382
- }
383
- getSerializeProps(viewOptions) {
384
- return {
385
- size: this.size,
386
- content: this.content
387
- };
388
- }
389
- }
390
- export class DataEleBaseProps extends INotifyPropertyChanged {
391
- id;
392
- name;
393
- fieldName;
394
- caption;
395
- required;
396
- printable;
397
- secretBrowse;
398
- editable;
399
- deleteable;
400
- minLength;
401
- type;
402
- underline;
403
- cloneBaseProps(destProps) {
404
- this.setPropValue(this, destProps);
405
- }
406
- setPropValue(source, target) {
407
- target.id = source.id;
408
- target.name = source.name;
409
- target.caption = source.caption;
410
- target.fieldName = source.fieldName;
411
- target.required = source.required;
412
- target.editable = source.editable;
413
- target.deleteable = source.deleteable;
414
- target.secretBrowse = source.secretBrowse;
415
- target.printable = source.printable;
416
- target.minLength = source.minLength;
417
- target.type = source.type;
418
- target.underline = source.underline;
419
- }
420
- updateProps(props) {
421
- this.setPropValue(props, this);
422
- }
423
- getBaseProps(props, options) {
424
- props["id"] = this.id;
425
- props["name"] = this.name;
426
- props["fieldName"] = this.fieldName;
427
- props["type"] = this.type;
428
- if (this.caption) {
429
- props["caption"] = this.caption;
430
- }
431
- if (this.required) {
432
- props["required"] = this.required;
433
- }
434
- if (this.printable) {
435
- props["printable"] = this.printable;
436
- }
437
- if (this.secretBrowse) {
438
- props["secretBrowse"] = this.secretBrowse;
439
- }
440
- if (!this.editable) {
441
- props['editable'] = this.editable;
442
- }
443
- if (this.deleteable) {
444
- props["deleteable"] = this.deleteable;
445
- }
446
- if (this.minLength) {
447
- props["minLength"] = this.minLength;
448
- }
449
- if (this.underline) {
450
- props["underline"] = this.underline;
451
- }
452
- return props;
453
- }
454
- getSerializeProps(viewOptions) {
455
- throw new Error('未实现');
456
- }
457
- }
458
- export class DataEleBaseTextProps extends DataEleBaseProps {
459
- constructor() {
460
- super();
461
- super.type = 'text';
462
- }
463
- valueTextProps;
464
- nullText;
465
- nullTextProps;
466
- dataType = 'text';
467
- clone(dest = null) {
468
- const clone = dest ?? new DataEleBaseTextProps();
469
- super.cloneBaseProps(clone);
470
- clone.valueTextProps = this.valueTextProps.clone(null);
471
- clone.nullText = this.nullText;
472
- clone.nullTextProps = this.nullTextProps.clone(null);
473
- return clone;
474
- }
475
- getSerializeProps(options) {
476
- const props = {
477
- type: this.type,
478
- valueTextProps: this.valueTextProps.getSerializeProps(options),
479
- nullText: this.nullText,
480
- nullTextProps: this.nullTextProps.getSerializeProps(options)
481
- };
482
- if (this.dataType && this.dataType !== 'text') {
483
- props['dataType'] = this.dataType;
484
- }
485
- this.getBaseProps(props, options);
486
- return props;
487
- }
488
- getBaseProps(props, options) {
489
- super.getBaseProps(props, options);
490
- props['valueTextProps'] = this.valueTextProps.getSerializeProps(options);
491
- props['nullTextProps'] = this.nullTextProps.getSerializeProps(options);
492
- props['nullText'] = this.nullText;
493
- props['dataType'] = this.dataType;
494
- return props;
495
- }
496
- updateProps(props) {
497
- super.updateProps(props);
498
- this.valueTextProps = props.valueTextProps;
499
- this.nullText = props.nullText;
500
- this.nullTextProps = props.nullTextProps;
501
- this.dataType = props.dataType;
502
- }
503
- }
504
- export class DataEleListProps extends DataEleBaseTextProps {
505
- constructor() {
506
- super();
507
- super.type = 'droplist';
508
- }
509
- options = [];
510
- dropDownStyle;
511
- /**
512
- * 是否允许多选
513
- */
514
- multiSelect;
515
- clone(dest) {
516
- const clone = dest ?? new DataEleListProps();
517
- super.clone(clone);
518
- clone.options = [...this.options];
519
- clone.dropDownStyle = this.dropDownStyle;
520
- clone.multiSelect = this.multiSelect;
521
- return clone;
522
- }
523
- getSerializeProps(options) {
524
- const props = {
525
- options: [...this.options],
526
- multiSelect: this.multiSelect,
527
- dropDownStyle: this.dropDownStyle,
528
- };
529
- super.getBaseProps(props, options);
530
- return props;
531
- }
532
- updateProps(props) {
533
- super.updateProps(props);
534
- this.options = props.options;
535
- this.multiSelect = props.multiSelect;
536
- this.dropDownStyle = props.dropDownStyle;
537
- }
538
- }
539
- export class CommContentProps extends INotifyPropertyChanged {
540
- id;
541
- createId;
542
- createName;
543
- createDate;
544
- clone(dest) {
545
- const clone = dest ?? new CommContentProps();
546
- clone.id = this.id;
547
- return clone;
548
- }
549
- getSerializeProps(viewOptions) {
550
- return {
551
- id: this.id
552
- };
553
- }
554
- }
555
- export class CommProps extends INotifyPropertyChanged {
556
- id;
557
- markType;
558
- clone(dest) {
559
- const clone = dest ?? new CommProps();
560
- clone.id = this.id;
561
- clone.markType = this.markType;
562
- return clone;
563
- }
564
- getSerializeProps(viewOptions) {
565
- return {
566
- id: this.id,
567
- markType: this.markType
568
- };
569
- }
570
- }
571
- export class DataEleCheckProps extends DataEleBaseProps {
572
- constructor() {
573
- super();
574
- super.type = 'check';
575
- }
576
- size;
577
- checked;
578
- checkedValue = '';
579
- groupName;
580
- multiSelect = false;
581
- clone(dest) {
582
- const clone = dest ?? new DataEleCheckProps();
583
- super.cloneBaseProps(clone);
584
- clone.checked = this.checked;
585
- clone.size = this.size;
586
- clone.groupName = this.groupName;
587
- clone.multiSelect = this.multiSelect;
588
- clone.checkedValue = this.checkedValue;
589
- return clone;
590
- }
591
- getSerializeProps(options) {
592
- const props = {
593
- checked: this.checked,
594
- size: this.size,
595
- groupName: this.groupName,
596
- multiSelect: this.multiSelect,
597
- checkedValue: this.checkedValue
598
- };
599
- this.getBaseProps(props, options);
600
- return props;
601
- }
602
- updateProps(props) {
603
- super.updateProps(props);
604
- this.checked = props.checked;
605
- this.size = props.size;
606
- this.groupName = props.groupName;
607
- this.multiSelect = props.multiSelect;
608
- this.checkedValue = props.checkedValue;
609
- }
610
- }
611
- export class DataEleImageProps extends DataEleBaseProps {
612
- constructor() {
613
- super();
614
- super.type = 'img';
615
- }
616
- width;
617
- height;
618
- src;
619
- border;
620
- clone(dest) {
621
- const clone = dest ?? new DataEleImageProps();
622
- this.cloneBaseProps(clone);
623
- clone.width = this.width;
624
- clone.height = this.height;
625
- clone.src = this.src;
626
- clone.border = this.border;
627
- return clone;
628
- }
629
- getSerializeProps(options) {
630
- const props = {
631
- width: this.width,
632
- height: this.height,
633
- src: this.src,
634
- border: this.border
635
- };
636
- this.getBaseProps(props, options);
637
- return props;
638
- }
639
- updateProps(props) {
640
- super.updateProps(props);
641
- this.width = props.width;
642
- this.height = props.height;
643
- this.src = props.src;
644
- this.border = props.border;
645
- }
646
- }
647
- export class DataEleDateProps extends DataEleBaseTextProps {
648
- constructor() {
649
- super();
650
- super.type = 'date';
651
- }
652
- minValue;
653
- maxValue;
654
- format;
655
- clone(dest) {
656
- const clone = dest ?? new DataEleDateProps();
657
- super.clone(clone);
658
- clone.minValue = this.minValue;
659
- clone.maxValue = this.maxValue;
660
- clone.format = this.format;
661
- return clone;
662
- }
663
- getSerializeProps(options) {
664
- const props = {
665
- minValue: this.minValue,
666
- maxValue: this.maxValue,
667
- format: this.format
668
- };
669
- this.getBaseProps(props, options);
670
- return props;
671
- }
672
- updateProps(props) {
673
- super.updateProps(props);
674
- this.minValue = props.minValue;
675
- this.maxValue = props.maxValue;
676
- this.format = props.format;
677
- }
678
- }
679
- export class ValidateCondition {
680
- required = false;
681
- maxLength = -1;
682
- dataType = 'string';
683
- }
684
- export class DataEleMHProps extends DataEleBaseProps {
685
- //初潮年龄
686
- age;
687
- //行经期天数
688
- days;
689
- //月经周期天数
690
- cycles;
691
- //末次月经时间
692
- lastDate;
693
- //闭经年龄
694
- closeAge;
695
- kind;
696
- clone(dest) {
697
- const clone = dest ?? new DataEleMHProps();
698
- this.cloneBaseProps(clone);
699
- clone.age = this.age;
700
- clone.days = this.days;
701
- clone.cycles = this.cycles;
702
- clone.lastDate = this.lastDate;
703
- clone.closeAge = this.closeAge;
704
- clone.kind = this.kind;
705
- return clone;
706
- }
707
- getSerializeProps(options) {
708
- const props = {
709
- age: this.age,
710
- days: this.days,
711
- cycles: this.cycles,
712
- lastDate: this.lastDate,
713
- closeAge: this.closeAge,
714
- kind: this.kind
715
- };
716
- this.getBaseProps(props, options);
717
- return props;
718
- }
719
- }
720
- export class TrackRunProps {
721
- type;
722
- userId;
723
- userName;
724
- date;
725
- id;
726
- constructor(type) {
727
- this.type = type;
728
- }
729
- clone(dest) {
730
- dest = dest ?? new TrackRunProps(this.type);
731
- dest.userId = this.userId;
732
- dest.userName = this.userName;
733
- dest.date = this.date;
734
- dest.id = this.id;
735
- }
736
- getSerializeProps() {
737
- const props = {
738
- userId: this.userId,
739
- userName: this.userName,
740
- date: this.date,
741
- id: this.id
742
- };
743
- return props;
744
- }
745
- }
746
- class FontMapStruct {
747
- fontMap = new Map();
748
- length = 0;
749
- registerFontMap(name, keyName) {
750
- this.fontMap.set(name, keyName);
751
- this.length = this.fontMap.size;
752
- }
753
- getFontMap(name) {
754
- if (this.length === 0) {
755
- return name;
756
- }
757
- if (this.fontMap.has(name)) {
758
- let key = this.fontMap.get(name);
759
- return key;
760
- }
761
- return name;
762
- }
763
- }
764
- export const fontMapFunc = new FontMapStruct();
765
- export class ValidateProps {
766
- id;
767
- title;
768
- msg;
769
- }
770
- export class DataElementGroupProps {
771
- id;
772
- name;
773
- clone(dest) {
774
- dest = dest ?? new DataElementGroupProps();
775
- dest.id = this.id;
776
- dest.name = this.name;
777
- }
778
- getSerializeProps() {
779
- return {
780
- id: this.id,
781
- name: this.name
782
- };
783
- }
784
- }
785
- export class DataElementBarcodeProps {
786
- type = 'code128';
787
- text = '';
788
- width = 0;
789
- height = 0;
790
- clone(dest) {
791
- dest = dest ?? new DataElementBarcodeProps();
792
- dest.type = this.type;
793
- dest.text = this.text;
794
- dest.width = this.width;
795
- dest.height = this.height;
796
- }
797
- getSerializeProps() {
798
- return {
799
- type: this.type,
800
- text: this.text,
801
- width: this.width,
802
- height: this.height
803
- };
804
- }
805
- }
806
- export class BodyPartProps {
807
- partId;
808
- }
809
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiJsaWIvIiwic291cmNlcyI6WyJmcmFtZXdvcmsvZWxlbWVudC1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQWdCLHNCQUFzQjtJQU9oQyxpQkFBaUIsR0FBd0IsRUFBRSxDQUFDO0lBRXBELGdCQUFnQixDQUFJLFlBQW9CLEVBQUUsS0FBUTtRQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjLENBQUMsWUFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBSSxZQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQU0sQ0FBQztJQUNyRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sU0FBVSxTQUFRLHNCQUFzQjtJQUNqRDtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBVTtJQUNsQixRQUFRLENBQVU7SUFDbEIsVUFBVSxHQUFzQixRQUFRLENBQUM7SUFDekMsU0FBUyxHQUF3QixRQUFRLENBQUM7SUFDMUMsOEVBQThFO0lBQzlFLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLFVBQVUsQ0FBVTtJQUNwQixXQUFXLENBQVU7SUFFckI7O09BRUc7SUFDSCxTQUFTLENBQWlCO0lBRTFCOztPQUVHO0lBQ0gsTUFBTSxDQUFXO0lBRWpCLFVBQVU7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQXdCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxJQUFJLFNB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