@hailin-zheng/editor-core 1.0.9 → 1.0.13

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 (236) hide show
  1. package/lib/doc-ruler.d.ts +51 -0
  2. package/{src/med_editor/doc-ruler.ts → lib/doc-ruler.js} +73 -100
  3. package/lib/doc-ruler.js.map +1 -0
  4. package/lib/framework/common-util.d.ts +63 -0
  5. package/lib/framework/common-util.js +178 -0
  6. package/lib/framework/common-util.js.map +1 -0
  7. package/lib/framework/document-change.d.ts +265 -0
  8. package/{src/med_editor/framework/document-change.ts → lib/framework/document-change.js} +257 -306
  9. package/lib/framework/document-change.js.map +1 -0
  10. package/lib/framework/document-combine.d.ts +24 -0
  11. package/{src/med_editor/framework/document-combine.ts → lib/framework/document-combine.js} +11 -15
  12. package/lib/framework/document-combine.js.map +1 -0
  13. package/lib/framework/document-comment.d.ts +46 -0
  14. package/{src/med_editor/framework/document-comment.ts → lib/framework/document-comment.js} +37 -52
  15. package/lib/framework/document-comment.js.map +1 -0
  16. package/lib/framework/document-context.d.ts +149 -0
  17. package/{src/med_editor/framework/document-context.ts → lib/framework/document-context.js} +101 -181
  18. package/lib/framework/document-context.js.map +1 -0
  19. package/lib/framework/document-eval-func.d.ts +18 -0
  20. package/{src/med_editor/framework/document-eval-func.ts → lib/framework/document-eval-func.js} +11 -16
  21. package/lib/framework/document-eval-func.js.map +1 -0
  22. package/lib/framework/document-event.d.ts +213 -0
  23. package/{src/med_editor/framework/document-event.ts → lib/framework/document-event.js} +216 -244
  24. package/lib/framework/document-event.js.map +1 -0
  25. package/lib/framework/document-history.d.ts +26 -0
  26. package/{src/med_editor/framework/document-history.ts → lib/framework/document-history.js} +14 -25
  27. package/lib/framework/document-history.js.map +1 -0
  28. package/lib/framework/document-images-loader.d.ts +16 -0
  29. package/{src/med_editor/framework/document-images-loader.ts → lib/framework/document-images-loader.js} +17 -25
  30. package/lib/framework/document-images-loader.js.map +1 -0
  31. package/lib/framework/document-input-cursor.d.ts +78 -0
  32. package/{src/med_editor/framework/document-input-cursor.ts → lib/framework/document-input-cursor.js} +71 -76
  33. package/lib/framework/document-input-cursor.js.map +1 -0
  34. package/lib/framework/document-paint.d.ts +34 -0
  35. package/{src/med_editor/framework/document-paint.ts → lib/framework/document-paint.js} +28 -35
  36. package/lib/framework/document-paint.js.map +1 -0
  37. package/lib/framework/document-print-offscreen.d.ts +38 -0
  38. package/{src/med_editor/framework/document-print-offscreen.ts → lib/framework/document-print-offscreen.js} +19 -25
  39. package/lib/framework/document-print-offscreen.js.map +1 -0
  40. package/lib/framework/document-print.d.ts +60 -0
  41. package/{src/med_editor/framework/document-print.ts → lib/framework/document-print.js} +41 -57
  42. package/lib/framework/document-print.js.map +1 -0
  43. package/lib/framework/document-segmenter.d.ts +2 -0
  44. package/lib/framework/document-segmenter.js +106 -0
  45. package/lib/framework/document-segmenter.js.map +1 -0
  46. package/lib/framework/document-selection.d.ts +89 -0
  47. package/{src/med_editor/framework/document-selection.ts → lib/framework/document-selection.js} +84 -115
  48. package/lib/framework/document-selection.js.map +1 -0
  49. package/lib/framework/document-template.d.ts +4 -0
  50. package/{src/med_editor/framework/document-template.ts → lib/framework/document-template.js} +3 -3
  51. package/lib/framework/document-template.js.map +1 -0
  52. package/lib/framework/document-textline-mode.d.ts +7 -0
  53. package/lib/framework/document-textline-mode.js +30 -0
  54. package/lib/framework/document-textline-mode.js.map +1 -0
  55. package/lib/framework/element-define.d.ts +319 -0
  56. package/{src/med_editor/framework/element-define.ts → lib/framework/element-define.js} +206 -301
  57. package/lib/framework/element-define.js.map +1 -0
  58. package/lib/framework/element-event-define.d.ts +98 -0
  59. package/lib/framework/element-event-define.js +108 -0
  60. package/lib/framework/element-event-define.js.map +1 -0
  61. package/lib/framework/element-measure.d.ts +97 -0
  62. package/{src/med_editor/framework/element-measure.ts → lib/framework/element-measure.js} +121 -143
  63. package/lib/framework/element-measure.js.map +1 -0
  64. package/lib/framework/element-paint.d.ts +42 -0
  65. package/{src/med_editor/framework/element-paint.ts → lib/framework/element-paint.js} +37 -43
  66. package/lib/framework/element-paint.js.map +1 -0
  67. package/lib/framework/element-props.d.ts +301 -0
  68. package/{src/med_editor/framework/element-props.ts → lib/framework/element-props.js} +202 -331
  69. package/lib/framework/element-props.js.map +1 -0
  70. package/lib/framework/element-reader.d.ts +19 -0
  71. package/{src/med_editor/framework/element-reader.ts → lib/framework/element-reader.js} +30 -38
  72. package/lib/framework/element-reader.js.map +1 -0
  73. package/lib/framework/element-render-cut.d.ts +55 -0
  74. package/{src/med_editor/framework/element-render-cut.ts → lib/framework/element-render-cut.js} +106 -113
  75. package/lib/framework/element-render-cut.js.map +1 -0
  76. package/lib/framework/element-serialize.d.ts +30 -0
  77. package/{src/med_editor/framework/element-serialize.ts → lib/framework/element-serialize.js} +24 -37
  78. package/lib/framework/element-serialize.js.map +1 -0
  79. package/lib/framework/element-util.d.ts +369 -0
  80. package/{src/med_editor/framework/element-util.ts → lib/framework/element-util.js} +216 -317
  81. package/lib/framework/element-util.js.map +1 -0
  82. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
  83. package/{src/med_editor/framework/impl/checkbox/checkbox-impl.ts → lib/framework/impl/checkbox/checkbox-impl.js} +18 -25
  84. package/lib/framework/impl/checkbox/checkbox-impl.js.map +1 -0
  85. package/lib/framework/impl/comments/comment-content-impl.d.ts +40 -0
  86. package/{src/med_editor/framework/impl/comments/comment-content-impl.ts → lib/framework/impl/comments/comment-content-impl.js} +31 -45
  87. package/lib/framework/impl/comments/comment-content-impl.js.map +1 -0
  88. package/lib/framework/impl/comments/comment-element-impl.d.ts +21 -0
  89. package/{src/med_editor/framework/impl/comments/comment-element-impl.ts → lib/framework/impl/comments/comment-element-impl.js} +18 -21
  90. package/lib/framework/impl/comments/comment-element-impl.js.map +1 -0
  91. package/lib/framework/impl/comments/comments-container-impl.d.ts +22 -0
  92. package/{src/med_editor/framework/impl/comments/comments-container-impl.ts → lib/framework/impl/comments/comments-container-impl.js} +15 -21
  93. package/lib/framework/impl/comments/comments-container-impl.js.map +1 -0
  94. package/lib/framework/impl/comments/comments-util.d.ts +12 -0
  95. package/{src/med_editor/framework/impl/comments/comments-util.ts → lib/framework/impl/comments/comments-util.js} +17 -34
  96. package/lib/framework/impl/comments/comments-util.js.map +1 -0
  97. package/lib/framework/impl/comments/validate-msg-impl.d.ts +21 -0
  98. package/{src/med_editor/framework/impl/comments/validate-msg-impl.ts → lib/framework/impl/comments/validate-msg-impl.js} +15 -26
  99. package/lib/framework/impl/comments/validate-msg-impl.js.map +1 -0
  100. package/lib/framework/impl/data-element/data-decorate-impl.d.ts +30 -0
  101. package/{src/med_editor/framework/impl/data-element/data-decorate-impl.ts → lib/framework/impl/data-element/data-decorate-impl.js} +21 -25
  102. package/lib/framework/impl/data-element/data-decorate-impl.js.map +1 -0
  103. package/lib/framework/impl/data-element/data-element-barcode.d.ts +31 -0
  104. package/{src/med_editor/framework/impl/data-element/data-element-barcode.ts → lib/framework/impl/data-element/data-element-barcode.js} +27 -39
  105. package/lib/framework/impl/data-element/data-element-barcode.js.map +1 -0
  106. package/lib/framework/impl/data-element/data-element-base-impl.d.ts +68 -0
  107. package/{src/med_editor/framework/impl/data-element/data-element-base-impl.ts → lib/framework/impl/data-element/data-element-base-impl.js} +44 -73
  108. package/lib/framework/impl/data-element/data-element-base-impl.js.map +1 -0
  109. package/lib/framework/impl/data-element/data-element-check-impl.d.ts +35 -0
  110. package/{src/med_editor/framework/impl/data-element/data-element-check-impl.ts → lib/framework/impl/data-element/data-element-check-impl.js} +33 -46
  111. package/lib/framework/impl/data-element/data-element-check-impl.js.map +1 -0
  112. package/lib/framework/impl/data-element/data-element-date-impl.d.ts +23 -0
  113. package/{src/med_editor/framework/impl/data-element/data-element-date-impl.ts → lib/framework/impl/data-element/data-element-date-impl.js} +22 -39
  114. package/lib/framework/impl/data-element/data-element-date-impl.js.map +1 -0
  115. package/lib/framework/impl/data-element/data-element-group-impl.d.ts +23 -0
  116. package/{src/med_editor/framework/impl/data-element/data-element-group-impl.ts → lib/framework/impl/data-element/data-element-group-impl.js} +29 -49
  117. package/lib/framework/impl/data-element/data-element-group-impl.js.map +1 -0
  118. package/lib/framework/impl/data-element/data-element-image-impl.d.ts +30 -0
  119. package/{src/med_editor/framework/impl/data-element/data-element-image-impl.ts → lib/framework/impl/data-element/data-element-image-impl.js} +26 -36
  120. package/lib/framework/impl/data-element/data-element-image-impl.js.map +1 -0
  121. package/lib/framework/impl/data-element/data-element-list-impl.d.ts +22 -0
  122. package/{src/med_editor/framework/impl/data-element/data-element-list-impl.ts → lib/framework/impl/data-element/data-element-list-impl.js} +30 -41
  123. package/lib/framework/impl/data-element/data-element-list-impl.js.map +1 -0
  124. package/lib/framework/impl/data-element/data-element-text-impl.d.ts +23 -0
  125. package/{src/med_editor/framework/impl/data-element/data-element-text-impl.ts → lib/framework/impl/data-element/data-element-text-impl.js} +20 -34
  126. package/lib/framework/impl/data-element/data-element-text-impl.js.map +1 -0
  127. package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +21 -0
  128. package/{src/med_editor/framework/impl/decorate/fill-null-space-imple.ts → lib/framework/impl/decorate/fill-null-space-imple.js} +10 -15
  129. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +1 -0
  130. package/lib/framework/impl/document/doc-body-impl.d.ts +27 -0
  131. package/{src/med_editor/framework/impl/document/doc-body-impl.ts → lib/framework/impl/document/doc-body-impl.js} +15 -31
  132. package/lib/framework/impl/document/doc-body-impl.js.map +1 -0
  133. package/lib/framework/impl/document/doc-body-part-impl.d.ts +30 -0
  134. package/{src/med_editor/framework/impl/document/doc-body-part-impl.ts → lib/framework/impl/document/doc-body-part-impl.js} +16 -26
  135. package/lib/framework/impl/document/doc-body-part-impl.js.map +1 -0
  136. package/lib/framework/impl/document/doc-container-impl.d.ts +16 -0
  137. package/lib/framework/impl/document/doc-container-impl.js +21 -0
  138. package/lib/framework/impl/document/doc-container-impl.js.map +1 -0
  139. package/lib/framework/impl/document/doc-footer-impl.d.ts +26 -0
  140. package/{src/med_editor/framework/impl/document/doc-footer-impl.ts → lib/framework/impl/document/doc-footer-impl.js} +18 -29
  141. package/lib/framework/impl/document/doc-footer-impl.js.map +1 -0
  142. package/lib/framework/impl/document/doc-header-impl.d.ts +26 -0
  143. package/{src/med_editor/framework/impl/document/doc-header-impl.ts → lib/framework/impl/document/doc-header-impl.js} +16 -33
  144. package/lib/framework/impl/document/doc-header-impl.js.map +1 -0
  145. package/lib/framework/impl/document/doc-impl.d.ts +61 -0
  146. package/{src/med_editor/framework/impl/document/doc-impl.ts → lib/framework/impl/document/doc-impl.js} +42 -59
  147. package/lib/framework/impl/document/doc-impl.js.map +1 -0
  148. package/lib/framework/impl/media-formula/menstrual-history.d.ts +35 -0
  149. package/{src/med_editor/framework/impl/media-formula/menstrual-history.ts → lib/framework/impl/media-formula/menstrual-history.js} +35 -57
  150. package/lib/framework/impl/media-formula/menstrual-history.js.map +1 -0
  151. package/lib/framework/impl/paragraph/p-impl.d.ts +45 -0
  152. package/{src/med_editor/framework/impl/paragraph/p-impl.ts → lib/framework/impl/paragraph/p-impl.js} +28 -62
  153. package/lib/framework/impl/paragraph/p-impl.js.map +1 -0
  154. package/lib/framework/impl/picture/image-impl.d.ts +31 -0
  155. package/{src/med_editor/framework/impl/picture/image-impl.ts → lib/framework/impl/picture/image-impl.js} +23 -35
  156. package/lib/framework/impl/picture/image-impl.js.map +1 -0
  157. package/lib/framework/impl/radio/radio-impl.d.ts +22 -0
  158. package/{src/med_editor/framework/impl/radio/radio-impl.ts → lib/framework/impl/radio/radio-impl.js} +19 -26
  159. package/lib/framework/impl/radio/radio-impl.js.map +1 -0
  160. package/lib/framework/impl/symbol/br-symbol-impl.d.ts +22 -0
  161. package/{src/med_editor/framework/impl/symbol/br-symbol-impl.ts → lib/framework/impl/symbol/br-symbol-impl.js} +14 -20
  162. package/lib/framework/impl/symbol/br-symbol-impl.js.map +1 -0
  163. package/lib/framework/impl/symbol/p-symbol-impl.d.ts +19 -0
  164. package/{src/med_editor/framework/impl/symbol/p-symbol-impl.ts → lib/framework/impl/symbol/p-symbol-impl.js} +11 -14
  165. package/lib/framework/impl/symbol/p-symbol-impl.js.map +1 -0
  166. package/lib/framework/impl/table/table-cell-impl.d.ts +37 -0
  167. package/{src/med_editor/framework/impl/table/table-cell-impl.ts → lib/framework/impl/table/table-cell-impl.js} +28 -39
  168. package/lib/framework/impl/table/table-cell-impl.js.map +1 -0
  169. package/lib/framework/impl/table/table-impl.d.ts +55 -0
  170. package/{src/med_editor/framework/impl/table/table-impl.ts → lib/framework/impl/table/table-impl.js} +82 -120
  171. package/lib/framework/impl/table/table-impl.js.map +1 -0
  172. package/lib/framework/impl/table/table-row-impl.d.ts +26 -0
  173. package/{src/med_editor/framework/impl/table/table-row-impl.ts → lib/framework/impl/table/table-row-impl.js} +16 -24
  174. package/lib/framework/impl/table/table-row-impl.js.map +1 -0
  175. package/lib/framework/impl/table/table-split-cell-patch.d.ts +20 -0
  176. package/{src/med_editor/framework/impl/table/table-split-cell-patch.ts → lib/framework/impl/table/table-split-cell-patch.js} +22 -31
  177. package/lib/framework/impl/table/table-split-cell-patch.js.map +1 -0
  178. package/lib/framework/impl/table/table-split-cell.d.ts +90 -0
  179. package/{src/med_editor/framework/impl/table/table-split-cell.ts → lib/framework/impl/table/table-split-cell.js} +94 -105
  180. package/lib/framework/impl/table/table-split-cell.js.map +1 -0
  181. package/lib/framework/impl/table/table-util.d.ts +150 -0
  182. package/{src/med_editor/framework/impl/table/table-util.ts → lib/framework/impl/table/table-util.js} +157 -195
  183. package/lib/framework/impl/table/table-util.js.map +1 -0
  184. package/lib/framework/impl/text/text-impl.d.ts +32 -0
  185. package/{src/med_editor/framework/impl/text/text-impl.ts → lib/framework/impl/text/text-impl.js} +32 -46
  186. package/lib/framework/impl/text/text-impl.js.map +1 -0
  187. package/lib/framework/impl/text/track-run-impl.d.ts +27 -0
  188. package/{src/med_editor/framework/impl/text/track-run-impl.ts → lib/framework/impl/text/track-run-impl.js} +28 -51
  189. package/lib/framework/impl/text/track-run-impl.js.map +1 -0
  190. package/lib/framework/notify.d.ts +13 -0
  191. package/{src/med_editor/framework/notify.ts → lib/framework/notify.js} +36 -50
  192. package/lib/framework/notify.js.map +1 -0
  193. package/lib/framework/range-util.d.ts +40 -0
  194. package/{src/med_editor/framework/range-util.ts → lib/framework/range-util.js} +71 -80
  195. package/lib/framework/range-util.js.map +1 -0
  196. package/lib/framework/render-context.d.ts +91 -0
  197. package/{src/med_editor/framework/render-context.ts → lib/framework/render-context.js} +64 -111
  198. package/lib/framework/render-context.js.map +1 -0
  199. package/lib/framework/render-define.d.ts +109 -0
  200. package/{src/med_editor/framework/render-define.ts → lib/framework/render-define.js} +61 -90
  201. package/lib/framework/render-define.js.map +1 -0
  202. package/lib/framework/selection-overlays.d.ts +30 -0
  203. package/{src/med_editor/framework/selection-overlays.ts → lib/framework/selection-overlays.js} +16 -25
  204. package/lib/framework/selection-overlays.js.map +1 -0
  205. package/lib/texteditor.d.ts +318 -0
  206. package/{src/med_editor/texteditor.ts → lib/texteditor.js} +189 -286
  207. package/lib/texteditor.js.map +1 -0
  208. package/lib/util/subject.d.ts +34 -0
  209. package/lib/util/subject.js +88 -0
  210. package/lib/util/subject.js.map +1 -0
  211. package/lib/util/table-bind.d.ts +5 -0
  212. package/{src/med_editor/util/table-bind.ts → lib/util/table-bind.js} +2 -2
  213. package/lib/util/table-bind.js.map +1 -0
  214. package/package.json +2 -2
  215. package/src/med_editor/framework/common-util.ts +0 -200
  216. package/src/med_editor/framework/document-segmenter.ts +0 -211
  217. package/src/med_editor/framework/document-textline-mode.ts +0 -34
  218. package/src/med_editor/framework/element-event-define.ts +0 -141
  219. package/src/med_editor/framework/impl/document/doc-container-impl.ts +0 -24
  220. package/src/med_editor/util/subject.ts +0 -118
  221. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +0 -3573
  222. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +0 -3573
  223. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +0 -315
  224. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +0 -122
  225. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +0 -3599
  226. package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +0 -24586
  227. package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +0 -2874
  228. package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +0 -341
  229. package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +0 -2201
  230. package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +0 -1069
  231. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +0 -125
  232. package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +0 -86
  233. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +0 -115
  234. package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +0 -108
  235. package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +0 -272
  236. package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +0 -1070
@@ -1,68 +1,53 @@
1
1
  import { runTextLineRender } from "./document-textline-mode";
2
- import {
3
- BlockContainerElement,
4
- BlockContentElement,
5
- BranchElement,
6
- Element,
7
- InlineGroupElement,
8
- LeafElement,
9
- ModifyFlag,
10
- ViewOptions
11
- } from "./element-define";
12
- import { DataEleBaseProps, DataEleBaseTextProps, TextProps } from "./element-props";
2
+ import { BlockContainerElement, BlockContentElement, BranchElement, InlineGroupElement, LeafElement, ModifyFlag } from "./element-define";
3
+ import { TextProps } from "./element-props";
13
4
  import { ElementUtil } from "./element-util";
14
5
  import { DataElementInlineGroup } from "./impl/data-element/data-element-base-impl";
15
6
  import { FillNullSpaceRenderObject } from "./impl/decorate/fill-null-space-imple";
16
- import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
17
- import { ParagraphElement, ParagraphLineRectRenderObject, ParagraphRenderObject } from "./impl/paragraph/p-impl";
7
+ import { ParagraphElement } from "./impl/paragraph/p-impl";
18
8
  import { TextGroupElement, TextGroupRenderObject } from "./impl/text/text-impl";
19
- import { RenderContenxtType } from "./render-context";
20
- import {
21
- BlockContainerRenderObject,
22
- BlockContentRenderObject,
23
- BranchRenderObject,
24
- InlineGroupRenderObject,
25
- LeafRenderObject,
26
- RenderObject
27
- } from "./render-define";
28
- interface ICutLineData { firstItem: RenderObject | null, lastItem: RenderObject | null, br?: boolean }
9
+ import { BranchRenderObject, InlineGroupRenderObject, LeafRenderObject } from "./render-define";
29
10
  /**
30
11
  * 测量阶段,生成Render-UI
31
12
  */
32
13
  export class ElementMeasure {
33
- constructor(private options: ViewOptions, private renderCtx: RenderContenxtType) { }
34
-
35
- measureDocument(document: DocumentElement): DocumentRenderObject {
14
+ options;
15
+ renderCtx;
16
+ constructor(options, renderCtx) {
17
+ this.options = options;
18
+ this.renderCtx = renderCtx;
19
+ }
20
+ measureDocument(document) {
36
21
  this.clearPaintCache(document);
37
- const docRender = this.measureControl(document, this.options.docPageSettings.width) as DocumentRenderObject;
22
+ const docRender = this.measureControl(document, this.options.docPageSettings.width);
38
23
  this.setMeasureCompletedModifyFlag(document);
39
24
  runTextLineRender(document, this.options, this.renderCtx);
40
25
  return docRender;
41
26
  }
42
-
43
- measureControl(element: Element, maxWidth: number): RenderObject | null {
27
+ measureControl(element, maxWidth) {
44
28
  if (element.modifyFlag === ModifyFlag.None) {
45
29
  return element.measureRender;
46
30
  }
47
31
  if (element instanceof BlockContentElement) {
48
- const render = element.createRenderObject(this.options, this.renderCtx) as BlockContentRenderObject;
32
+ const render = element.createRenderObject(this.options, this.renderCtx);
49
33
  element.measureRender = render;
50
34
  //测量阶段,只限制最大宽度即可
51
35
  render.setRenderWidth(maxWidth);
52
36
  if (element instanceof ParagraphElement) {
53
- this.measureParagraph(element, render as ParagraphRenderObject);
54
- } else {
37
+ this.measureParagraph(element, render);
38
+ }
39
+ else {
55
40
  throw new Error('未实现');
56
41
  }
57
42
  return render;
58
-
59
- } else if (element instanceof BlockContainerElement) {
43
+ }
44
+ else if (element instanceof BlockContainerElement) {
60
45
  ElementUtil.fixBlockContainer(element);
61
- let render: BlockContainerRenderObject | null = null;
46
+ let render = null;
62
47
  if (element.modifyFlag === ModifyFlag.Modify || element.modifyFlag === ModifyFlag.Track) {
63
48
  ElementUtil.fixBlockContainer(element);
64
49
  element.measureRender = null;
65
- render = element.createRenderObject(this.options, this.renderCtx) as BlockContainerRenderObject;
50
+ render = element.createRenderObject(this.options, this.renderCtx);
66
51
  if (!render) {
67
52
  element.measureRender = null;
68
53
  return null;
@@ -72,14 +57,14 @@ export class ElementMeasure {
72
57
  }
73
58
  }
74
59
  if (!render) {
75
- throw new Error('render is null')
60
+ throw new Error('render is null');
76
61
  }
77
62
  element.measureRender = render;
78
63
  const innerMaxWidth = render.getInnerMaxWidth();
79
64
  for (let i = 0; i < element.length; i++) {
80
65
  const child = element.getChild(i);
81
- const blockContentELement = child as BlockContentElement;
82
- const childRender = this.measureControl(blockContentELement, innerMaxWidth) as BlockContentRenderObject;
66
+ const blockContentELement = child;
67
+ const childRender = this.measureControl(blockContentELement, innerMaxWidth);
83
68
  if (!childRender) {
84
69
  continue;
85
70
  }
@@ -87,20 +72,20 @@ export class ElementMeasure {
87
72
  }
88
73
  ElementUtil.remeasure(render);
89
74
  return render;
90
- } else {
75
+ }
76
+ else {
91
77
  throw new Error('未实现');
92
78
  }
93
79
  }
94
-
95
80
  /**
96
81
  * 生成段落 UI 树
97
- * @param para
98
- * @param render
82
+ * @param para
83
+ * @param render
99
84
  */
100
- measureParagraph(para: ParagraphElement, render: ParagraphRenderObject): void {
85
+ measureParagraph(para, render) {
101
86
  ElementUtil.fixParagraphContent(para);
102
87
  this.setParagraphDefaultTextProps(para);
103
- const renderObjects: Array<RenderObject> = [];
88
+ const renderObjects = [];
104
89
  for (let i = 0; i < para.length; i++) {
105
90
  const child = para.getChild(i);
106
91
  if (child instanceof InlineGroupElement) {
@@ -118,41 +103,39 @@ export class ElementMeasure {
118
103
  }
119
104
  this.measureInnerParagraph(render, para, renderObjects);
120
105
  }
121
-
122
-
123
106
  /**
124
107
  * 设置段落默认文本属性
125
108
  * 当前段落属于空段落时,键入文本时,文本的默认属性
126
109
  */
127
- setParagraphDefaultTextProps(para: ParagraphElement): void {
128
- const lastTextGroup = ElementUtil.getLastLeafElement(para, (item) => item instanceof TextGroupElement) as TextGroupElement;
110
+ setParagraphDefaultTextProps(para) {
111
+ const lastTextGroup = ElementUtil.getLastLeafElement(para, (item) => item instanceof TextGroupElement);
129
112
  const defaultTextProps = lastTextGroup ? lastTextGroup.props.clone(new TextProps()) : ElementUtil.createTextProps(null, this.options);
130
113
  if (para.props.textProps && para.props.textProps.equals(defaultTextProps)) {
131
114
  return;
132
115
  }
133
116
  para.props.textProps = defaultTextProps;
134
117
  }
135
-
136
118
  /**
137
119
  * 根据段落UI元素,进行排列
138
- * @param render
139
- * @param paragraph
140
- * @param renderObjects
120
+ * @param render
121
+ * @param paragraph
122
+ * @param renderObjects
141
123
  */
142
- measureInnerParagraph(render: ParagraphRenderObject, paragraph: ParagraphElement, renderObjects: Array<RenderObject>) {
124
+ measureInnerParagraph(render, paragraph, renderObjects) {
143
125
  let lineRect = render.createLineRect();
144
126
  //行内框
145
- const innerLineRects: Array<ParagraphLineRectRenderObject> = [];
146
- const addInnerLineFunc = (lineRect: ParagraphLineRectRenderObject): void => {
127
+ const innerLineRects = [];
128
+ const addInnerLineFunc = (lineRect) => {
147
129
  innerLineRects.push(lineRect);
148
130
  if (lineRect.rect.maxWidth <= 0) {
149
- throw new Error('lineRect.rect.maxWidth is ' + lineRect.rect.maxWidth)
131
+ throw new Error('lineRect.rect.maxWidth is ' + lineRect.rect.maxWidth);
150
132
  }
151
133
  if (innerLineRects.indexOf(lineRect) === 0) {
152
134
  if (paragraph.props.indent > 0) {
153
135
  lineRect.rect.maxWidth -= paragraph.props.indent;
154
136
  }
155
- } else {
137
+ }
138
+ else {
156
139
  lineRect.rect.maxWidth -= paragraph.props.hanging;
157
140
  }
158
141
  };
@@ -161,7 +144,7 @@ export class ElementMeasure {
161
144
  let currItem = renderObjects[i++];
162
145
  const inCloseBody = paragraph.parent.type === 'body';
163
146
  while (currItem) {
164
- const maxWidth = lineRect.rect.maxWidth as number;
147
+ const maxWidth = lineRect.rect.maxWidth;
165
148
  const nextItem = renderObjects[i];
166
149
  const { firstItem, lastItem, br } = this.cutRenderItem(currItem, nextItem, maxWidth - lineRect.rect.width, lineRect.length === 0, inCloseBody);
167
150
  if (firstItem) {
@@ -169,7 +152,8 @@ export class ElementMeasure {
169
152
  renderObjects.splice(i, 0, lastItem);
170
153
  }
171
154
  currItem = firstItem;
172
- } else {
155
+ }
156
+ else {
173
157
  lineRect = render.createLineRect();
174
158
  addInnerLineFunc(lineRect);
175
159
  continue;
@@ -188,7 +172,7 @@ export class ElementMeasure {
188
172
  currItem = renderObjects[i++];
189
173
  }
190
174
  for (let i = 0; i < innerLineRects.length; i++) {
191
- const innerLineRect = innerLineRects[i] as ParagraphLineRectRenderObject;
175
+ const innerLineRect = innerLineRects[i];
192
176
  innerLineRect.rect.x = this.getParaLineRectStartX(innerLineRects.length, i, paragraph, render, innerLineRect);
193
177
  //限制最大行高
194
178
  const maxLineHeight = Math.floor(14 * 1.3);
@@ -204,18 +188,17 @@ export class ElementMeasure {
204
188
  }
205
189
  //render.rect.height += lineRect.rect.height;
206
190
  const outterLineRect = render.createLineRect();
207
- outterLineRect.rect.width = outterLineRect.rect.maxWidth as number;
191
+ outterLineRect.rect.width = outterLineRect.rect.maxWidth;
208
192
  outterLineRect.addChild(innerLineRect);
209
193
  ElementUtil.remeasure(outterLineRect, false);
210
194
  render.addChild(outterLineRect);
211
195
  }
212
196
  ElementUtil.remeasure(render);
213
197
  }
214
-
215
198
  /**
216
199
  * 获取段落行布局横向坐标起始位置,被段落text-align影响
217
200
  */
218
- getParaLineRectStartX(counter: number, paraLineIndex: number, paraElement: ParagraphElement, paraRenderObject: ParagraphRenderObject, paraLineRender: ParagraphLineRectRenderObject): number {
201
+ getParaLineRectStartX(counter, paraLineIndex, paraElement, paraRenderObject, paraLineRender) {
219
202
  //左对齐,首行缩进
220
203
  let indent = paraElement.props.indent;
221
204
  //存在项目符号
@@ -225,29 +208,31 @@ export class ElementMeasure {
225
208
  if (paraElement.props.textAlign === 'center') {
226
209
  const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;
227
210
  return Math.ceil(remainSpace / 2) + indent;
228
- } else if (paraElement.props.textAlign === 'right') {
211
+ }
212
+ else if (paraElement.props.textAlign === 'right') {
229
213
  const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;
230
214
  return remainSpace + indent;
231
- } else if (paraElement.props.textAlign === 'justify') {
215
+ }
216
+ else if (paraElement.props.textAlign === 'justify') {
232
217
  const renderUnitCount = this.getRenderUnitLength(paraLineRender);
233
218
  if (paraLineIndex === counter - 1 || renderUnitCount === 1) {
234
219
  return indent;
235
220
  }
236
- const spaceWidth = (<number>paraLineRender.rect.maxWidth - paraLineRender.rect.width) / (renderUnitCount - 1);
221
+ const spaceWidth = (paraLineRender.rect.maxWidth - paraLineRender.rect.width) / (renderUnitCount - 1);
237
222
  this.setAlignJustify(paraLineRender, 0, spaceWidth);
238
223
  return indent;
239
- } else {
224
+ }
225
+ else {
240
226
  return indent;
241
227
  }
242
228
  }
243
-
244
229
  /**
245
230
  * 设置两端对齐
246
- * @param render
247
- * @param count
248
- * @param spaceWidth
231
+ * @param render
232
+ * @param count
233
+ * @param spaceWidth
249
234
  */
250
- private setAlignJustify(render: RenderObject, count: number, spaceWidth: number): number {
235
+ setAlignJustify(render, count, spaceWidth) {
251
236
  if (render instanceof BranchRenderObject) {
252
237
  let width = 0;
253
238
  for (let i = 0; i < render.length; i++) {
@@ -257,7 +242,8 @@ export class ElementMeasure {
257
242
  width += currRender.rect.width;
258
243
  }
259
244
  render.rect.width = width;
260
- } else if (render instanceof LeafRenderObject) {
245
+ }
246
+ else if (render instanceof LeafRenderObject) {
261
247
  if (render instanceof TextGroupRenderObject) {
262
248
  let i = count === 0 ? 1 : 0;
263
249
  for (; i < render.textMeasures.length; i++) {
@@ -265,7 +251,8 @@ export class ElementMeasure {
265
251
  }
266
252
  render.measure();
267
253
  count += render.textMeasures.length;
268
- } else {
254
+ }
255
+ else {
269
256
  if (count !== 0) {
270
257
  render.rect.width += spaceWidth;
271
258
  }
@@ -274,30 +261,29 @@ export class ElementMeasure {
274
261
  }
275
262
  return count;
276
263
  }
277
-
278
264
  /**
279
265
  * 获取段落行渲染单位个数,字符需要计算为字符长度
280
266
  */
281
- private getRenderUnitLength(paraLine: RenderObject): number {
267
+ getRenderUnitLength(paraLine) {
282
268
  if (paraLine instanceof LeafRenderObject) {
283
269
  if (paraLine instanceof TextGroupRenderObject) {
284
270
  return paraLine.textMeasures.length;
285
- } else {
271
+ }
272
+ else {
286
273
  return 1;
287
274
  }
288
- } else if (paraLine instanceof BranchRenderObject) {
275
+ }
276
+ else if (paraLine instanceof BranchRenderObject) {
289
277
  let count = 0;
290
278
  for (let i = 0; i < paraLine.length; i++) {
291
279
  count += this.getRenderUnitLength(paraLine.getChild(i));
292
280
  }
293
281
  return count;
294
282
  }
295
- throw new Error('未到达计算位置')
283
+ throw new Error('未到达计算位置');
296
284
  }
297
-
298
-
299
- getInlineGroupRenderItem(item: InlineGroupElement): RenderObject | null {
300
- const inlineGroupRender = item.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;
285
+ getInlineGroupRenderItem(item) {
286
+ const inlineGroupRender = item.createRenderObject(this.options, this.renderCtx);
301
287
  if (!inlineGroupRender) {
302
288
  return null;
303
289
  }
@@ -309,16 +295,17 @@ export class ElementMeasure {
309
295
  if (child.measureRender) {
310
296
  inlineGroupRender.addChild(child.measureRender);
311
297
  }
312
- } else if (child instanceof InlineGroupElement) {
298
+ }
299
+ else if (child instanceof InlineGroupElement) {
313
300
  item.measureRender = this.getInlineGroupRenderItem(child);
314
301
  if (item.measureRender) {
315
302
  inlineGroupRender.addChild(item.measureRender);
316
303
  }
317
- } else {
318
- throw new Error('未实现')
304
+ }
305
+ else {
306
+ throw new Error('未实现');
319
307
  }
320
308
  }
321
-
322
309
  ElementUtil.remeasureInlineGroupRender(inlineGroupRender);
323
310
  //限制最小长度
324
311
  if (item instanceof DataElementInlineGroup) {
@@ -327,14 +314,14 @@ export class ElementMeasure {
327
314
  const nullText = new TextGroupElement();
328
315
  nullText.isDecorate = true;
329
316
  nullText.disableClick = true;
330
- const baseTextProps = (<any>item).props as DataEleBaseTextProps;
331
- nullText.text = baseTextProps.nullText as string;
317
+ const baseTextProps = item.props;
318
+ nullText.text = baseTextProps.nullText;
332
319
  baseTextProps.nullTextProps.clone(nullText.props);
333
320
  const nullTextRender = nullText.createRenderObject(this.options, this.renderCtx);
334
321
  inlineGroupRender.insertChild(nullTextRender, 1);
335
322
  ElementUtil.remeasureInlineGroupRender(inlineGroupRender);
336
323
  }
337
- const props = (<any>item).props as DataEleBaseProps;
324
+ const props = item.props;
338
325
  let minLength = props.minLength ?? 14;
339
326
  minLength = minLength < 14 ? 14 : minLength;
340
327
  if (item instanceof DataElementInlineGroup && inlineGroupRender.rect.width < minLength) {
@@ -347,9 +334,7 @@ export class ElementMeasure {
347
334
  }
348
335
  return inlineGroupRender;
349
336
  }
350
-
351
-
352
- cutRenderItem(render: RenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {
337
+ cutRenderItem(render, nextRender, limitWidth, lineEmpty, inCloseBody) {
353
338
  if (render instanceof LeafRenderObject) {
354
339
  if (render.rect.width > limitWidth && render instanceof TextGroupRenderObject) {
355
340
  return this.cutTextRender(render, nextRender, limitWidth, lineEmpty, inCloseBody);
@@ -361,15 +346,15 @@ export class ElementMeasure {
361
346
  return { firstItem: render, lastItem: null, br: render.element.type === 'br' };
362
347
  }
363
348
  return { firstItem: null, lastItem: null };
364
- } else if (render instanceof InlineGroupRenderObject) {
349
+ }
350
+ else if (render instanceof InlineGroupRenderObject) {
365
351
  return this.cutInlineGroupRenderItem(render, limitWidth, lineEmpty, inCloseBody);
366
352
  }
367
- throw new Error('到达计算边界')
353
+ throw new Error('到达计算边界');
368
354
  }
369
-
370
- cutTextRender(render: TextGroupRenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {
355
+ cutTextRender(render, nextRender, limitWidth, lineEmpty, inCloseBody) {
371
356
  let sumWidth = 0;
372
- const cutRender = render.clone() as TextGroupRenderObject;
357
+ const cutRender = render.clone();
373
358
  cutRender.textMeasures.length = 0;
374
359
  let i = 0;
375
360
  for (; i < render.textMeasures.length; i++) {
@@ -388,19 +373,17 @@ export class ElementMeasure {
388
373
  if (i <= 0) {
389
374
  return { firstItem: null, lastItem: null };
390
375
  }
391
-
392
376
  cutRender.textMeasures = render.textMeasures.splice(0, i);
393
377
  render.measure();
394
378
  cutRender.measure();
395
379
  return { firstItem: cutRender, lastItem: render, br: true };
396
380
  }
397
-
398
381
  /**
399
382
  * 处理前置标点,前置标点不能出现在末尾
400
- * @param render
401
- * @param i
383
+ * @param render
384
+ * @param i
402
385
  */
403
- private patchHandleLeadingPunctuation(render: TextGroupRenderObject, i: number, lineEmpty: boolean): number {
386
+ patchHandleLeadingPunctuation(render, i, lineEmpty) {
404
387
  if (i === 1 && lineEmpty) {
405
388
  return i;
406
389
  }
@@ -409,14 +392,13 @@ export class ElementMeasure {
409
392
  }
410
393
  return i;
411
394
  }
412
-
413
395
  /**
414
396
  * 处理后置标点,后置标点不能出现在行首
415
- * @param render
416
- * @param i
417
- * @param lineEmpty
397
+ * @param render
398
+ * @param i
399
+ * @param lineEmpty
418
400
  */
419
- private patchHandlePostPunctuation(render: TextGroupRenderObject, nextRender: RenderObject, i: number, inCloseBody: boolean, lineEmpty: boolean): number {
401
+ patchHandlePostPunctuation(render, nextRender, i, inCloseBody, lineEmpty) {
420
402
  if (i === render.textMeasures.length - 1) {
421
403
  //紧跟着的字符包含后置标点
422
404
  if (this.containerStartSymbolInTextStart(nextRender)) {
@@ -426,10 +408,12 @@ export class ElementMeasure {
426
408
  if (inCloseBody && this.containPostPunctuation(render.textMeasures[i]?.char)) {
427
409
  if (this.containPostPunctuation(render.textMeasures[i + 1]?.char)) {
428
410
  i--;
429
- } else {
411
+ }
412
+ else {
430
413
  i++;
431
414
  }
432
- } else {
415
+ }
416
+ else {
433
417
  if (i <= 1) {
434
418
  //debugger;
435
419
  }
@@ -439,27 +423,24 @@ export class ElementMeasure {
439
423
  }
440
424
  return i;
441
425
  }
442
-
443
426
  /**
444
427
  * 是否包含后置标点
445
- * @param str
446
- * @returns
428
+ * @param str
429
+ * @returns
447
430
  */
448
- private containPostPunctuation(str: string): boolean {
431
+ containPostPunctuation(str) {
449
432
  return '!),.:;?]}¨·ˇˉ―‖’”…∶、。〃々〉》」』】〕〗!"'),.:;?]`|}~¢'.indexOf(str) > -1;
450
433
  }
451
-
452
434
  //是否包含前置标点
453
- private containLeadingPunctuation(str: string): boolean {
435
+ containLeadingPunctuation(str) {
454
436
  return '‘“〈《「『【〔〖([{£'.indexOf(str) > -1;
455
437
  }
456
-
457
438
  /**
458
439
  * 文本开头是否包含后置标点
459
- * @param render
460
- * @returns
440
+ * @param render
441
+ * @returns
461
442
  */
462
- private containerStartSymbolInTextStart(render: RenderObject): boolean {
443
+ containerStartSymbolInTextStart(render) {
463
444
  //return false;
464
445
  if (render instanceof TextGroupRenderObject) {
465
446
  if (render.textMeasures.length > 0) {
@@ -468,27 +449,26 @@ export class ElementMeasure {
468
449
  }
469
450
  return false;
470
451
  }
471
-
472
- cutFillNullRender(render: FillNullSpaceRenderObject, limitWidth: number): ICutLineData {
452
+ cutFillNullRender(render, limitWidth) {
473
453
  if (limitWidth === 0) {
474
- return { firstItem: null, lastItem: null }
454
+ return { firstItem: null, lastItem: null };
475
455
  }
476
456
  if (render.rect.width > limitWidth) {
477
457
  const cutRender = new FillNullSpaceRenderObject();
478
458
  cutRender.rect.width = limitWidth;
479
459
  cutRender.rect.height = render.rect.height;
480
460
  render.rect.width = render.rect.width - limitWidth;
481
- return { firstItem: cutRender, lastItem: render }
482
- } else {
483
- return { firstItem: render, lastItem: null }
461
+ return { firstItem: cutRender, lastItem: render };
462
+ }
463
+ else {
464
+ return { firstItem: render, lastItem: null };
484
465
  }
485
466
  }
486
-
487
467
  /**
488
468
  * 行内编组元素超出行内可用空间,需要根据剩余空间长度进行截断
489
469
  */
490
- cutInlineGroupRenderItem(render: InlineGroupRenderObject, limitWidth: number, emptyLine: boolean, inCloseBody: boolean): ICutLineData {
491
- const cutRender = render.element.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;
470
+ cutInlineGroupRenderItem(render, limitWidth, emptyLine, inCloseBody) {
471
+ const cutRender = render.element.createRenderObject(this.options, this.renderCtx);
492
472
  let x = 0;
493
473
  let br = false;
494
474
  const items = [...render.getItems()];
@@ -506,7 +486,8 @@ export class ElementMeasure {
506
486
  }
507
487
  br = childBr || br;
508
488
  break;
509
- } else {
489
+ }
490
+ else {
510
491
  render.removeChild(child);
511
492
  cutRender.addChild(child);
512
493
  }
@@ -515,7 +496,8 @@ export class ElementMeasure {
515
496
  br = true;
516
497
  break;
517
498
  }
518
- } else if (child instanceof InlineGroupRenderObject) {
499
+ }
500
+ else if (child instanceof InlineGroupRenderObject) {
519
501
  if (x + child.rect.width > limitWidth) {
520
502
  const { firstItem, br: childBr } = this.cutInlineGroupRenderItem(child, limitWidth - x, emptyLine && cutRender.length === 0, inCloseBody);
521
503
  if (firstItem) {
@@ -523,7 +505,8 @@ export class ElementMeasure {
523
505
  }
524
506
  br = childBr || br;
525
507
  break;
526
- } else {
508
+ }
509
+ else {
527
510
  render.removeChild(child);
528
511
  cutRender.addChild(child);
529
512
  }
@@ -537,12 +520,11 @@ export class ElementMeasure {
537
520
  ElementUtil.remeasureInlineGroupRender(render);
538
521
  return { firstItem: cutRender, lastItem: render.length ? render : null, br };
539
522
  }
540
-
541
523
  /**
542
524
  * 修改测量完毕后的元素状态
543
- * @param ele
525
+ * @param ele
544
526
  */
545
- setMeasureCompletedModifyFlag(ele: Element): void {
527
+ setMeasureCompletedModifyFlag(ele) {
546
528
  if (ele instanceof BranchElement) {
547
529
  for (let i = 0; i < ele.length; i++) {
548
530
  this.setMeasureCompletedModifyFlag(ele.getChild(i));
@@ -550,8 +532,7 @@ export class ElementMeasure {
550
532
  }
551
533
  ele.modifyFlag = ModifyFlag.None;
552
534
  }
553
-
554
- clearPaintCache(ele: Element): void {
535
+ clearPaintCache(ele) {
555
536
  ele.beginMeasure();
556
537
  if (ele instanceof BranchElement) {
557
538
  for (let i = 0; i < ele.length; i++) {
@@ -559,15 +540,12 @@ export class ElementMeasure {
559
540
  }
560
541
  }
561
542
  }
562
-
563
- endMeasures(ele: Element): void {
543
+ endMeasures(ele) {
564
544
  if (ele instanceof BranchElement) {
565
545
  for (let i = 0; i < ele.length; i++) {
566
546
  this.endMeasures(ele.getChild(i));
567
547
  }
568
548
  }
569
549
  }
570
-
571
-
572
-
573
550
  }
551
+ //# sourceMappingURL=element-measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-measure.js","sourceRoot":"lib/","sources":["framework/element-measure.ts"],"names":[],"mappings":"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"}