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