@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,358 +0,0 @@
1
- import { Subject } from "rxjs";
2
- import { BranchElement, LeafElement } from "./element-define";
3
- import { ElementUtil } from "./element-util";
4
- import { DocumentContainerRender } from "./impl/document/doc-container-impl";
5
- import { DocumentRenderObject } from "./impl/document/doc-impl";
6
- import { TextGroupElement } from "./impl/text/text-impl";
7
- import { DocumentBodyElement } from "./impl/document/doc-body-impl";
8
- export class DocumentSelection {
9
- constructor() {
10
- this.selectionState = new SelectionState();
11
- }
12
- selectionState;
13
- snapshotSelectionState;
14
- setSelectionState(hitInfo) {
15
- const { startHitInfo, endHitInfo } = hitInfo;
16
- this.selectionState.clear();
17
- this.selectionState.startHitInfo = startHitInfo;
18
- if (!startHitInfo) {
19
- return;
20
- }
21
- const startRange = new SelectionRange();
22
- startRange.setStart(startHitInfo.element, startHitInfo.offset);
23
- if (endHitInfo) {
24
- startRange.setEnd(endHitInfo.element, endHitInfo.offset);
25
- }
26
- else {
27
- startRange.setEnd(startHitInfo.element, startHitInfo.offset);
28
- }
29
- this.selectionState.addRange(startRange);
30
- }
31
- /**
32
- * 获取选区共同的祖先控件
33
- */
34
- static getAncestorCommonControl(startControl, endControl) {
35
- const startNestParents = this.getNestParents(startControl.parent);
36
- const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);
37
- if (!ancestorCommonControl) {
38
- throw new Error('未找到公共的祖先组件');
39
- }
40
- return ancestorCommonControl;
41
- }
42
- /**
43
- * 获取向上的嵌套父级节点集合
44
- * @param control
45
- * @param array
46
- */
47
- static getNestParents(control) {
48
- if (control) {
49
- return [control, ...this.getNestParents(control.parent)];
50
- }
51
- return [];
52
- }
53
- static getCommonParenet(control, array) {
54
- if (!control) {
55
- return null;
56
- }
57
- if (array.some(item => item === control)) {
58
- return control;
59
- }
60
- return this.getCommonParenet(control?.parent, array);
61
- }
62
- updateSelectionState() {
63
- if (this.compareSelectionEquals()) {
64
- return false;
65
- }
66
- const range = this.selectionState.range;
67
- this.transformRange();
68
- if (!range) {
69
- return false;
70
- }
71
- const startControlIndex = ElementUtil.getControlIndex(range.startControl);
72
- const endControlIndex = ElementUtil.getControlIndex(range.endControl);
73
- if (endControlIndex < startControlIndex) {
74
- const clone = range.clone();
75
- clone.startControl = range.endControl;
76
- clone.startOffset = range.endOffset;
77
- clone.endControl = range.startControl;
78
- clone.endOffset = range.startOffset;
79
- clone.editable = range.editable;
80
- this.selectionState.addRange(clone);
81
- }
82
- this.selectionState.editable = range.editable;
83
- this.selectionState.startControl = range.startControl;
84
- this.selectionState.startOffset = range.startOffset;
85
- this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);
86
- this.selectionState.endControl = range.endControl;
87
- this.selectionState.endOffset = range.endOffset;
88
- this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);
89
- this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);
90
- this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);
91
- return true;
92
- }
93
- /**
94
- * 获取当前选区区域内是否支持留痕
95
- * @private
96
- */
97
- getEnableTrackChanges(ele) {
98
- const body = ElementUtil.getParentByType(ele, DocumentBodyElement);
99
- return body?.trackChanges || false;
100
- }
101
- compareSelectionEquals() {
102
- const range = this.selectionState.range;
103
- const snap = this.snapshotSelectionState;
104
- if (snap && range) {
105
- return range.startControl === snap.startControl
106
- && range.startOffset === snap.startOffset
107
- && range.endControl === snap.endControl
108
- && range.endOffset === snap.endOffset;
109
- }
110
- return false;
111
- }
112
- /**
113
- * 转换选区内容
114
- * 处理结束选区在开始选区之前
115
- */
116
- transformRange() {
117
- let range = this.selectionState.range;
118
- if (!range) {
119
- return;
120
- }
121
- const { startControl, startOffset, endControl, endOffset } = range;
122
- const startControlIndex = ElementUtil.getControlIndex(startControl);
123
- const endControlIndex = ElementUtil.getControlIndex(endControl);
124
- if ((endControlIndex < startControlIndex)) {
125
- const clone = range.clone();
126
- clone.startControl = endControl;
127
- clone.startOffset = endOffset;
128
- clone.endControl = startControl;
129
- clone.endOffset = startOffset;
130
- this.selectionState.addRange(clone);
131
- }
132
- range = this.selectionState.range;
133
- if (!range) {
134
- throw new Error('range is null');
135
- }
136
- range.calcRange();
137
- if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {
138
- const { startOffset, endOffset } = range;
139
- range.startOffset = endOffset;
140
- range.endOffset = startOffset;
141
- }
142
- range.calcRange();
143
- }
144
- takeSnapshot() {
145
- this.snapshotSelectionState = this.selectionState.clone();
146
- }
147
- clearSnapshot() {
148
- this.snapshotSelectionState = null;
149
- }
150
- }
151
- export class SelectionState {
152
- get startControl() {
153
- return this._startControl;
154
- }
155
- set startControl(value) {
156
- this._startControl = value;
157
- }
158
- get endControl() {
159
- return this._endControl;
160
- }
161
- set endControl(value) {
162
- this._endControl = value;
163
- }
164
- onChangedEvent = new Subject();
165
- startControlIndex;
166
- startOffset;
167
- endControlIndex;
168
- endOffset;
169
- get collapsed() {
170
- const { startControlIndex, startOffset, endControlIndex, endOffset } = this;
171
- return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));
172
- }
173
- _startControl;
174
- _endControl;
175
- ancestorCommonControl;
176
- range;
177
- startHitInfo;
178
- selectedRange;
179
- editable = true;
180
- renderContainer;
181
- cursorPos;
182
- //选区重新计算,触发函数
183
- afterSelectionChanged = null;
184
- //当前选区的上下文是否支持留痕修改
185
- enableTrackChanges = false;
186
- constructor() {
187
- this.clear();
188
- }
189
- clear() {
190
- this.range = null;
191
- this.startOffset = -1;
192
- this.endOffset = -1;
193
- this._startControl = null;
194
- this._endControl = null;
195
- this.ancestorCommonControl = null;
196
- this.startControlIndex = -1;
197
- this.endControlIndex = -1;
198
- this.selectedRange = null;
199
- this.cursorPos = null;
200
- }
201
- addRange(range) {
202
- this.clear();
203
- this.range = range;
204
- this.onChangedEvent.next();
205
- }
206
- resetRange(startControl, startOffset) {
207
- const range = new SelectionRange();
208
- range.setStart(startControl, startOffset);
209
- range.setEnd(startControl, startOffset);
210
- this.addRange(range);
211
- return range;
212
- }
213
- surround(ele) {
214
- const range = new SelectionRange();
215
- range.setStart(ele, 0);
216
- range.setEnd(ele, -1);
217
- this.addRange(range);
218
- }
219
- clone() {
220
- const clone = new SelectionState();
221
- clone._startControl = this._startControl;
222
- clone.startOffset = this.startOffset;
223
- clone._endControl = this._endControl;
224
- clone.endOffset = this.endOffset;
225
- clone.ancestorCommonControl = this.ancestorCommonControl;
226
- clone.startControlIndex = this.startControlIndex;
227
- clone.endControlIndex = this.endControlIndex;
228
- clone.selectedRange = this.selectedRange;
229
- return clone;
230
- }
231
- }
232
- export class SelectionRange {
233
- startControl;
234
- startOffset;
235
- endControl;
236
- endOffset;
237
- editable = true;
238
- setStart(control, offset) {
239
- this.startControl = control;
240
- this.startOffset = offset;
241
- }
242
- setEnd(control, offset) {
243
- this.endControl = control;
244
- this.endOffset = offset;
245
- }
246
- calcStart() {
247
- const res = this.setInfo(this.startControl, this.startOffset);
248
- this.setStart(res.control, res.offset);
249
- }
250
- calcEnd() {
251
- const res = this.setInfo(this.endControl, this.endOffset);
252
- this.setEnd(res.control, res.offset);
253
- }
254
- calcRange() {
255
- this.calcStart();
256
- this.calcEnd();
257
- }
258
- setInfo(control, offset) {
259
- if (control instanceof LeafElement) {
260
- if (control instanceof TextGroupElement) {
261
- offset = offset === -1 ? control.text.length : offset;
262
- }
263
- offset = offset === -1 ? 1 : offset;
264
- return { control, offset };
265
- }
266
- else if (control instanceof BranchElement) {
267
- if (offset > control.length) {
268
- throw new Error('超索引');
269
- }
270
- if (offset === control.length) {
271
- const child = control.getChild(offset - 1);
272
- return this.setInfo(child, 1);
273
- }
274
- else if (offset === -1) {
275
- const child = control.getChild(control.length - 1);
276
- return this.setInfo(child, -1);
277
- }
278
- else {
279
- const child = control.getChild(offset);
280
- return this.setInfo(child, 0);
281
- }
282
- }
283
- else {
284
- throw new Error('未实现');
285
- }
286
- }
287
- clone() {
288
- const clone = new SelectionRange();
289
- clone.startControl = this.startControl;
290
- clone.startOffset = this.startOffset;
291
- clone.endControl = this.endControl;
292
- clone.endOffset = this.endOffset;
293
- return clone;
294
- }
295
- }
296
- export class DocumentCursor {
297
- static getElementCursorPos(ele, offset, hitRegion, docNum) {
298
- if (hitRegion === 'body' || hitRegion === 'review') {
299
- return this.getElementRenderPos(ele, offset, ele.paintRenders);
300
- }
301
- else if (hitRegion === 'footer' || hitRegion === 'header') {
302
- const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);
303
- if (!docContainer) {
304
- throw new Error('docContainer is null');
305
- }
306
- const docRender = docContainer.getChild(docNum);
307
- const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);
308
- return this.getElementRenderPos(ele, offset, currDocPaintRenders);
309
- }
310
- debugger;
311
- throw new Error('未找到元素偏移量对应的光标位置');
312
- }
313
- static getElementRenderPos(ele, offset, paints) {
314
- if (ele instanceof TextGroupElement) {
315
- let count = 0;
316
- for (let i = 0; i < paints.length; i++) {
317
- const paintRender = paints[i];
318
- let horX = 0;
319
- if (paintRender.textMeasures.length + count < offset) {
320
- count += paintRender.textMeasures.length;
321
- continue;
322
- }
323
- for (let i = 0; i <= paintRender.textMeasures.length; i++) {
324
- if (count === offset || (i === 0 && count + 0.5 === offset)) {
325
- const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
326
- //上标、下标位置处理
327
- if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {
328
- rect.height -= ele.props.fontSize / 2;
329
- if (ele.props.vertAlign === 'subscript') {
330
- rect.y += rect.height;
331
- }
332
- }
333
- rect.x += horX;
334
- return {
335
- render: paintRender,
336
- rect
337
- };
338
- }
339
- count++;
340
- horX += paintRender.textMeasures[i].actualSize;
341
- }
342
- }
343
- }
344
- else {
345
- const paintRender = paints[0];
346
- const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
347
- if (offset === 1) {
348
- rect.x += rect.width;
349
- }
350
- return {
351
- render: paintRender,
352
- rect
353
- };
354
- }
355
- throw new Error('未能定位到元素位置');
356
- }
357
- }
358
- //# sourceMappingURL=document-selection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-selection.js","sourceRoot":"lib/","sources":["framework/document-selection.ts"],"names":[],"mappings":"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","sourcesContent":["import { Subject } from \"rxjs\";\nimport { BranchElement, LeafElement, Rect, Element, SelectionContentRange, Position } from \"./element-define\";\nimport { HitEventInfo, HitRegion } from \"./element-event-define\";\nimport { ElementUtil } from \"./element-util\";\nimport { DocumentContainerRender } from \"./impl/document/doc-container-impl\";\nimport { DocumentRenderObject } from \"./impl/document/doc-impl\";\nimport { TextGroupElement, TextGroupRenderObject } from \"./impl/text/text-impl\";\nimport { RenderObject } from \"./render-define\";\nimport { DocumentBodyElement } from \"./impl/document/doc-body-impl\";\n\nexport class DocumentSelection {\n constructor() {\n this.selectionState = new SelectionState();\n }\n\n selectionState: SelectionState;\n snapshotSelectionState!: SelectionState | null;\n setSelectionState(hitInfo: { startHitInfo: HitEventInfo, endHitInfo: HitEventInfo }): void {\n const { startHitInfo, endHitInfo } = hitInfo;\n this.selectionState.clear();\n this.selectionState.startHitInfo = startHitInfo;\n if (!startHitInfo) {\n return;\n }\n const startRange = new SelectionRange();\n startRange.setStart(startHitInfo.element, startHitInfo.offset);\n if (endHitInfo) {\n startRange.setEnd(endHitInfo.element, endHitInfo.offset);\n } else {\n startRange.setEnd(startHitInfo.element, startHitInfo.offset);\n }\n this.selectionState.addRange(startRange);\n }\n\n /**\n * 获取选区共同的祖先控件\n */\n static getAncestorCommonControl(startControl: LeafElement, endControl: LeafElement): BranchElement {\n const startNestParents = this.getNestParents(startControl.parent);\n const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);\n if (!ancestorCommonControl) {\n throw new Error('未找到公共的祖先组件');\n }\n return ancestorCommonControl;\n }\n\n /**\n * 获取向上的嵌套父级节点集合\n * @param control \n * @param array \n */\n static getNestParents(control: BranchElement | null): Array<BranchElement> {\n if (control) {\n return [control, ...this.getNestParents(control.parent)];\n }\n return [];\n\n }\n\n static getCommonParenet(control: BranchElement | null, array: Array<BranchElement>): BranchElement | null {\n if (!control) {\n return null;\n }\n if (array.some(item => item === control)) {\n return control;\n }\n return this.getCommonParenet(control?.parent, array);\n }\n\n updateSelectionState(): boolean {\n if (this.compareSelectionEquals()) {\n return false;\n }\n const range = this.selectionState.range;\n this.transformRange();\n if (!range) {\n return false;\n }\n const startControlIndex = ElementUtil.getControlIndex(range.startControl);\n const endControlIndex = ElementUtil.getControlIndex(range.endControl);\n if (endControlIndex < startControlIndex) {\n const clone = range.clone();\n clone.startControl = range.endControl;\n clone.startOffset = range.endOffset;\n clone.endControl = range.startControl;\n clone.endOffset = range.startOffset;\n clone.editable = range.editable;\n this.selectionState.addRange(clone);\n }\n this.selectionState.editable = range.editable;\n\n this.selectionState.startControl = range.startControl as LeafElement;\n this.selectionState.startOffset = range.startOffset;\n this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);\n\n this.selectionState.endControl = range.endControl as LeafElement;\n this.selectionState.endOffset = range.endOffset;\n this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);\n\n this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);\n\n this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);\n return true;\n }\n\n /**\n * 获取当前选区区域内是否支持留痕\n * @private\n */\n private getEnableTrackChanges(ele: Element): boolean {\n const body = ElementUtil.getParentByType(ele, DocumentBodyElement);\n return body?.trackChanges || false;\n }\n\n private compareSelectionEquals(): boolean {\n const range = this.selectionState.range;\n const snap = this.snapshotSelectionState;\n if (snap && range) {\n return range.startControl === snap.startControl\n && range.startOffset === snap.startOffset\n && range.endControl === snap.endControl\n && range.endOffset === snap.endOffset;\n }\n return false;\n }\n\n /**\n * 转换选区内容\n * 处理结束选区在开始选区之前\n */\n private transformRange(): void {\n let range = this.selectionState.range;\n if (!range) {\n return;\n }\n const { startControl, startOffset, endControl, endOffset } = range;\n const startControlIndex = ElementUtil.getControlIndex(startControl);\n const endControlIndex = ElementUtil.getControlIndex(endControl);\n if ((endControlIndex < startControlIndex)) {\n const clone = range.clone();\n clone.startControl = endControl;\n clone.startOffset = endOffset;\n clone.endControl = startControl;\n clone.endOffset = startOffset;\n this.selectionState.addRange(clone);\n }\n range = this.selectionState.range;\n if (!range) {\n throw new Error('range is null')\n }\n range.calcRange();\n if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {\n const { startOffset, endOffset } = range;\n range.startOffset = endOffset;\n range.endOffset = startOffset;\n }\n range.calcRange();\n }\n\n takeSnapshot(): void {\n this.snapshotSelectionState = this.selectionState.clone();\n }\n\n clearSnapshot(): void {\n this.snapshotSelectionState = null;\n }\n\n}\n\nexport class SelectionState {\n get startControl(): LeafElement {\n return this._startControl as LeafElement;\n }\n\n set startControl(value: LeafElement | null) {\n this._startControl = value;\n }\n\n get endControl(): LeafElement {\n return this._endControl as LeafElement;\n }\n\n set endControl(value: LeafElement | null) {\n this._endControl = value;\n }\n onChangedEvent: Subject<void> = new Subject();\n startControlIndex!: number;\n startOffset!: number;\n endControlIndex!: number;\n endOffset!: number;\n get collapsed() {\n const { startControlIndex, startOffset, endControlIndex, endOffset } = this;\n return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));\n }\n private _startControl!: LeafElement | null;\n private _endControl!: LeafElement | null;\n ancestorCommonControl!: BranchElement | null;\n range!: SelectionRange | null;\n startHitInfo!: HitEventInfo | null;\n selectedRange!: SelectionContentRange | null;\n editable: boolean = true;\n renderContainer!: DocumentContainerRender;\n cursorPos!: Rect | null;\n //选区重新计算,触发函数\n afterSelectionChanged: ((newVal: SelectionState) => boolean) | null = null;\n //当前选区的上下文是否支持留痕修改\n enableTrackChanges: boolean = false;\n constructor() {\n this.clear();\n }\n clear(): void {\n this.range = null;\n this.startOffset = -1;\n this.endOffset = -1;\n this._startControl = null;\n this._endControl = null;\n this.ancestorCommonControl = null;\n this.startControlIndex = -1;\n this.endControlIndex = -1;\n this.selectedRange = null;\n this.cursorPos = null;\n }\n\n addRange(range: SelectionRange): void {\n this.clear();\n this.range = range;\n this.onChangedEvent.next();\n }\n resetRange(startControl: Element, startOffset: number): SelectionRange {\n const range = new SelectionRange();\n range.setStart(startControl, startOffset);\n range.setEnd(startControl, startOffset);\n this.addRange(range);\n return range;\n }\n\n surround(ele: Element): void {\n const range = new SelectionRange();\n range.setStart(ele, 0);\n range.setEnd(ele, -1);\n this.addRange(range);\n }\n\n clone(): SelectionState {\n const clone = new SelectionState();\n clone._startControl = this._startControl;\n clone.startOffset = this.startOffset;\n clone._endControl = this._endControl;\n clone.endOffset = this.endOffset;\n clone.ancestorCommonControl = this.ancestorCommonControl;\n clone.startControlIndex = this.startControlIndex;\n clone.endControlIndex = this.endControlIndex;\n clone.selectedRange = this.selectedRange;\n return clone;\n }\n\n\n}\n\n\n\nexport class SelectionRange {\n startControl!: Element;\n startOffset!: number;\n endControl!: Element;\n endOffset!: number;\n editable: boolean = true;\n setStart(control: Element, offset: number): void {\n this.startControl = control;\n this.startOffset = offset;\n }\n setEnd(control: Element, offset: number): void {\n this.endControl = control;\n this.endOffset = offset;\n }\n\n private calcStart(): void {\n const res = this.setInfo(this.startControl, this.startOffset);\n this.setStart(res.control, res.offset);\n }\n\n private calcEnd(): void {\n const res = this.setInfo(this.endControl, this.endOffset);\n this.setEnd(res.control, res.offset);\n }\n\n calcRange(): void {\n this.calcStart();\n this.calcEnd();\n }\n\n private setInfo(control: Element, offset: number): { control: LeafElement, offset: number } {\n if (control instanceof LeafElement) {\n if (control instanceof TextGroupElement) {\n offset = offset === -1 ? control.text.length : offset;\n }\n offset = offset === -1 ? 1 : offset;\n return { control, offset };\n } else if (control instanceof BranchElement) {\n if (offset > control.length) {\n throw new Error('超索引');\n }\n if (offset === control.length) {\n const child = control.getChild(offset - 1);\n return this.setInfo(child, 1);\n } else if (offset === -1) {\n const child = control.getChild(control.length - 1);\n return this.setInfo(child, -1);\n } else {\n const child = control.getChild(offset);\n return this.setInfo(child, 0);\n }\n } else {\n throw new Error('未实现');\n }\n }\n\n clone(): SelectionRange {\n const clone = new SelectionRange();\n clone.startControl = this.startControl;\n clone.startOffset = this.startOffset;\n clone.endControl = this.endControl;\n clone.endOffset = this.endOffset;\n return clone;\n }\n\n}\n\nexport class DocumentCursor {\n static getElementCursorPos(ele: LeafElement, offset: number, hitRegion: HitRegion | undefined, docNum: number): { render: RenderObject, rect: Rect } {\n if (hitRegion === 'body' || hitRegion === 'review') {\n return this.getElementRenderPos(ele, offset, ele.paintRenders);\n } else if (hitRegion === 'footer' || hitRegion === 'header') {\n const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);\n if (!docContainer) {\n throw new Error('docContainer is null')\n }\n const docRender = docContainer.getChild(docNum) as DocumentRenderObject;\n const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);\n return this.getElementRenderPos(ele, offset, currDocPaintRenders);\n }\n debugger;\n throw new Error('未找到元素偏移量对应的光标位置')\n }\n\n private static getElementRenderPos(ele: LeafElement, offset: number, paints: Array<RenderObject>): { render: RenderObject, rect: Rect } {\n if (ele instanceof TextGroupElement) {\n let count = 0;\n for (let i = 0; i < paints.length; i++) {\n const paintRender = paints[i] as TextGroupRenderObject;\n let horX = 0;\n if (paintRender.textMeasures.length + count < offset) {\n count += paintRender.textMeasures.length;\n continue;\n }\n for (let i = 0; i <= paintRender.textMeasures.length; i++) {\n if (count === offset || (i === 0 && count + 0.5 === offset)) {\n const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })\n //上标、下标位置处理\n if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {\n rect.height -= ele.props.fontSize / 2;\n if (ele.props.vertAlign === 'subscript') {\n rect.y += rect.height;\n }\n }\n rect.x += horX;\n return {\n render: paintRender,\n rect\n }\n }\n count++;\n horX += paintRender.textMeasures[i].actualSize;\n }\n }\n } else {\n const paintRender = paints[0];\n const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })\n if (offset === 1) {\n rect.x += rect.width;\n }\n return {\n render: paintRender,\n rect\n }\n }\n throw new Error('未能定位到元素位置')\n }\n}\n"]}
@@ -1,20 +0,0 @@
1
- import { PaddingProps } from "./element-define";
2
- import { DocumentProps } from "./element-props";
3
- import { DocumentBodyElement } from "./impl/document/doc-body-impl";
4
- import { DocumentFooterElement } from "./impl/document/doc-footer-impl";
5
- import { DocumentHeaderElement } from "./impl/document/doc-header-impl";
6
- import { DocumentElement } from "./impl/document/doc-impl";
7
- export class DocumentTemplate {
8
- static createA4Doc() {
9
- const doc = new DocumentElement();
10
- doc.props = new DocumentProps();
11
- doc.props.width = 210;
12
- doc.props.height = 297;
13
- doc.props.padding = new PaddingProps(25.4, 25.4, 19.1, 19.1);
14
- doc.addChild(new DocumentHeaderElement());
15
- doc.addChild(new DocumentBodyElement());
16
- doc.addChild(new DocumentFooterElement());
17
- return doc;
18
- }
19
- }
20
- //# sourceMappingURL=document-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-template.js","sourceRoot":"lib/","sources":["framework/document-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAC,WAAW;QACd,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACf,CAAC;CACJ","sourcesContent":["import { PaddingProps } from \"./element-define\";\nimport { DocumentProps } from \"./element-props\";\nimport { DocumentBodyElement } from \"./impl/document/doc-body-impl\";\nimport { DocumentFooterElement } from \"./impl/document/doc-footer-impl\";\nimport { DocumentHeaderElement } from \"./impl/document/doc-header-impl\";\nimport { DocumentElement } from \"./impl/document/doc-impl\";\n\nexport class DocumentTemplate {\n static createA4Doc(): DocumentElement {\n const doc = new DocumentElement();\n doc.props = new DocumentProps();\n doc.props.width = 210;\n doc.props.height = 297;\n doc.props.padding = new PaddingProps(25.4, 25.4, 19.1, 19.1);\n doc.addChild(new DocumentHeaderElement());\n doc.addChild(new DocumentBodyElement());\n doc.addChild(new DocumentFooterElement());\n return doc;\n }\n}"]}
@@ -1,30 +0,0 @@
1
- import { BranchElement } from "./element-define";
2
- import { ElementUtil } from "./element-util";
3
- import { TableElement, textLineRenderMode } from "./impl/table/table-impl";
4
- /**
5
- * 文字行渲染模式
6
- 用于医嘱打印模式
7
- */
8
- export function runTextLineRender(ele, options, renderCtx) {
9
- if (!options.textRowLineMode) {
10
- return;
11
- }
12
- if (ele instanceof TableElement) {
13
- textLineRenderMode(ele, options, renderCtx);
14
- remeasureParentRenders(ele.measureRender);
15
- return;
16
- }
17
- if (ele instanceof BranchElement) {
18
- for (let i = 0; i < ele.length; i++) {
19
- runTextLineRender(ele.getChild(i), options, renderCtx);
20
- }
21
- }
22
- }
23
- function remeasureParentRenders(render) {
24
- if (!render) {
25
- return;
26
- }
27
- ElementUtil.remeasure(render);
28
- remeasureParentRenders(render.parent);
29
- }
30
- //# sourceMappingURL=document-textline-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-textline-mode.js","sourceRoot":"lib/","sources":["framework/document-textline-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI3E;;;EAGE;AACF,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,OAAoB,EAAE,SAA6B;IAC/F,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QAC1B,OAAO;KACV;IACD,IAAI,GAAG,YAAY,YAAY,EAAE;QAC7B,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,sBAAsB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACzC,OAAO;KACV;IACD,IAAI,GAAG,YAAY,aAAa,EAAE;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAC1D;KACJ;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA2B;IACvD,IAAI,CAAC,MAAM,EAAE;QACT,OAAM;KACT;IACD,WAAW,CAAC,SAAS,CAAC,MAAoC,CAAC,CAAA;IAC3D,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAEzC,CAAC","sourcesContent":["import { BranchElement, ViewOptions, Element } from \"./element-define\";\nimport { ElementUtil } from \"./element-util\";\nimport { TableElement, textLineRenderMode } from \"./impl/table/table-impl\";\nimport { RenderContenxtType } from \"./render-context\";\nimport { BlockContainerRenderObject, RenderObject } from \"./render-define\";\n\n/**\n* 文字行渲染模式\n用于医嘱打印模式\n*/\nexport function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContenxtType): void {\n if (!options.textRowLineMode) {\n return;\n }\n if (ele instanceof TableElement) {\n textLineRenderMode(ele, options, renderCtx);\n remeasureParentRenders(ele.measureRender)\n return;\n }\n if (ele instanceof BranchElement) {\n for (let i = 0; i < ele.length; i++) {\n runTextLineRender(ele.getChild(i), options, renderCtx);\n }\n }\n}\n\nfunction remeasureParentRenders(render: RenderObject | null): void {\n if (!render) {\n return\n }\n ElementUtil.remeasure(render as BlockContainerRenderObject)\n remeasureParentRenders(render.parent)\n\n}"]}