@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
@@ -0,0 +1,60 @@
1
+ import { EditorContext } from "./document-context";
2
+ import { SelectionState } from "./document-selection";
3
+ import { OrientType, PageOptions, ViewOptions } from "./element-define";
4
+ export declare class documentPrint {
5
+ static print(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges?: Array<number> | null): void;
6
+ /**
7
+ * 获取绘制的canvas节点
8
+ * @param ss
9
+ * @param viewOptions
10
+ * @param docCtx
11
+ * @param printRanges
12
+ * @returns
13
+ */
14
+ private static getRenderCanvasNodes;
15
+ /**
16
+ * 导出base64
17
+ * @param ss
18
+ * @param viewOptions
19
+ * @param docCtx
20
+ * @param printRanges
21
+ * @returns
22
+ */
23
+ static exportCanvasNodes(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges?: Array<number> | null): Array<HTMLCanvasElement>;
24
+ /**
25
+ * 导出PDF
26
+ * @param fileName
27
+ * @param ss
28
+ * @param viewOptions
29
+ * @param docCtx
30
+ * @param printRanges
31
+ */
32
+ static exportPDF(fileName: string, ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges?: Array<number> | null): void;
33
+ /**
34
+ * 当前当前页
35
+ * @param ss
36
+ * @param viewOptions
37
+ */
38
+ static printCurrPage(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext): void;
39
+ }
40
+ export declare function createPrintTemplate({ width, height, orient }: PageOptions): string;
41
+ declare type PrintPaperOptions = {
42
+ width: number;
43
+ height: number;
44
+ orient: OrientType;
45
+ };
46
+ /**
47
+ * 打印DOM
48
+ * @param printNodes
49
+ * @param options
50
+ * @returns
51
+ */
52
+ export declare function printNodes(printNodes: Array<Node>, options: PrintPaperOptions): void;
53
+ /**
54
+ * canvas节点导出到PDF
55
+ * @param fileName
56
+ * @param nodes
57
+ * @param options
58
+ */
59
+ export declare function exportCanvasToPDF(fileName: string, nodes: Array<HTMLCanvasElement>, options: PrintPaperOptions): void;
60
+ export {};
@@ -1,14 +1,11 @@
1
- import { EditorContext } from "./document-context";
2
- import { SelectionState } from "./document-selection";
3
- import { OrientType, PageOptions, ViewOptions } from "./element-define";
1
+ import { PageOptions } from "./element-define";
4
2
  import { ElementPaint } from "./element-paint";
5
3
  import { ElementUtil } from "./element-util";
6
4
  import { DocumentRenderObject } from "./impl/document/doc-impl";
7
5
  import { RenderContenxt } from "./render-context";
8
- import { jsPDF } from 'jspdf'
9
-
6
+ import { jsPDF } from 'jspdf';
10
7
  export class documentPrint {
11
- static print(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges: Array<number> | null = null): void {
8
+ static print(ss, viewOptions, docCtx, printRanges = null) {
12
9
  const renderCanvasNodes = this.getRenderCanvasNodes(ss, viewOptions, docCtx, printRanges);
13
10
  if (!renderCanvasNodes.length) {
14
11
  console.warn('无可打印节点');
@@ -16,23 +13,22 @@ export class documentPrint {
16
13
  }
17
14
  printNodes(renderCanvasNodes, { ...docCtx.document.props });
18
15
  }
19
-
20
16
  /**
21
17
  * 获取绘制的canvas节点
22
- * @param ss
23
- * @param viewOptions
24
- * @param docCtx
25
- * @param printRanges
26
- * @returns
18
+ * @param ss
19
+ * @param viewOptions
20
+ * @param docCtx
21
+ * @param printRanges
22
+ * @returns
27
23
  */
28
- private static getRenderCanvasNodes(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges: Array<number> | null = null): Array<HTMLCanvasElement> {
24
+ static getRenderCanvasNodes(ss, viewOptions, docCtx, printRanges = null) {
29
25
  const { width, height } = viewOptions.docPageSettings;
30
26
  const dc = ss.renderContainer;
31
- const canvasList: Array<HTMLCanvasElement> = [];
32
- const printPages: Array<DocumentRenderObject> = [];
27
+ const canvasList = [];
28
+ const printPages = [];
33
29
  for (let i = 0; i < dc.length; i++) {
34
30
  if (!printRanges || printRanges.some(pageIndex => pageIndex === i)) {
35
- printPages.push(<DocumentRenderObject>dc.getChild(i));
31
+ printPages.push(dc.getChild(i));
36
32
  }
37
33
  }
38
34
  for (let i = 0; i < printPages.length; i++) {
@@ -40,7 +36,7 @@ export class documentPrint {
40
36
  canvasNode.style.cursor = 'text';
41
37
  canvasNode.style.width = width + 'px';
42
38
  canvasNode.style.height = height + 'px';
43
- const ctx = canvasNode.getContext('2d') as CanvasRenderingContext2D;
39
+ const ctx = canvasNode.getContext('2d');
44
40
  ElementUtil.setCanvasProps(canvasNode, ctx, viewOptions.docPageSettings);
45
41
  const renderCtx = new RenderContenxt(ctx, viewOptions, docCtx);
46
42
  renderCtx.setCanvasProps(viewOptions.docPageSettings);
@@ -57,21 +53,19 @@ export class documentPrint {
57
53
  doc.rect = tmp;
58
54
  canvasList.push(canvasNode);
59
55
  }
60
- return canvasList
56
+ return canvasList;
61
57
  }
62
-
63
58
  /**
64
59
  * 导出base64
65
- * @param ss
66
- * @param viewOptions
67
- * @param docCtx
68
- * @param printRanges
69
- * @returns
60
+ * @param ss
61
+ * @param viewOptions
62
+ * @param docCtx
63
+ * @param printRanges
64
+ * @returns
70
65
  */
71
- static exportCanvasNodes(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges: Array<number> | null = null): Array<HTMLCanvasElement> {
66
+ static exportCanvasNodes(ss, viewOptions, docCtx, printRanges = null) {
72
67
  return this.getRenderCanvasNodes(ss, viewOptions, docCtx, printRanges);
73
68
  }
74
-
75
69
  /**
76
70
  * 导出PDF
77
71
  * @param fileName
@@ -80,17 +74,16 @@ export class documentPrint {
80
74
  * @param docCtx
81
75
  * @param printRanges
82
76
  */
83
- static exportPDF(fileName: string, ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext, printRanges: Array<number> | null = null): void {
77
+ static exportPDF(fileName, ss, viewOptions, docCtx, printRanges = null) {
84
78
  const nodes = this.getRenderCanvasNodes(ss, viewOptions, docCtx, printRanges);
85
- exportCanvasToPDF(fileName, nodes, { ...docCtx.document.props })
79
+ exportCanvasToPDF(fileName, nodes, { ...docCtx.document.props });
86
80
  }
87
-
88
81
  /**
89
82
  * 当前当前页
90
- * @param ss
91
- * @param viewOptions
83
+ * @param ss
84
+ * @param viewOptions
92
85
  */
93
- static printCurrPage(ss: SelectionState, viewOptions: ViewOptions, docCtx: EditorContext,): void {
86
+ static printCurrPage(ss, viewOptions, docCtx) {
94
87
  const { startHitInfo } = ss;
95
88
  if (!startHitInfo) {
96
89
  return;
@@ -102,9 +95,7 @@ export class documentPrint {
102
95
  this.print(ss, viewOptions, docCtx, [docPage.getIndex()]);
103
96
  }
104
97
  }
105
-
106
-
107
- export function createPrintTemplate({ width, height, orient }: PageOptions): string {
98
+ export function createPrintTemplate({ width, height, orient }) {
108
99
  const str = `
109
100
  <!DOCTYPE html>
110
101
  <html lang="zh">
@@ -148,22 +139,14 @@ export function createPrintTemplate({ width, height, orient }: PageOptions): str
148
139
  `.replace(/\n/g, '').replace(/\s+/g, ' ').replace(/'/g, '\\\'');
149
140
  return str;
150
141
  }
151
-
152
-
153
- type PrintPaperOptions = {
154
- width: number;
155
- height: number;
156
- orient: OrientType;
157
- };
158
-
159
142
  /**
160
143
  * 打印DOM
161
- * @param printNodes
162
- * @param options
163
- * @returns
144
+ * @param printNodes
145
+ * @param options
146
+ * @returns
164
147
  */
165
- export function printNodes(printNodes: Array<Node>, options: PrintPaperOptions): void {
166
- const printIFrame = document.createElement("iframe") as HTMLIFrameElement;
148
+ export function printNodes(printNodes, options) {
149
+ const printIFrame = document.createElement("iframe");
167
150
  printIFrame.src = 'about:blank';
168
151
  printIFrame.style.borderWidth = '0';
169
152
  printIFrame.style.height = "0";
@@ -174,7 +157,7 @@ export function printNodes(printNodes: Array<Node>, options: PrintPaperOptions):
174
157
  console.warn('无可打印节点');
175
158
  return;
176
159
  }
177
- const printSize: PageOptions = new PageOptions(options.width, options.height, options.orient);
160
+ const printSize = new PageOptions(options.width, options.height, options.orient);
178
161
  const iframeHTML = createPrintTemplate(printSize);
179
162
  printIFrame.contentWindow?.document.write(iframeHTML);
180
163
  printIFrame.contentWindow?.document.close();
@@ -182,7 +165,7 @@ export function printNodes(printNodes: Array<Node>, options: PrintPaperOptions):
182
165
  const item = printNodes[i];
183
166
  const div = document.createElement('div');
184
167
  div.appendChild(item);
185
- printIFrame.contentWindow?.document.body.appendChild(div)
168
+ printIFrame.contentWindow?.document.body.appendChild(div);
186
169
  }
187
170
  printIFrame.contentWindow?.document.body.focus();
188
171
  setTimeout(() => {
@@ -190,17 +173,17 @@ export function printNodes(printNodes: Array<Node>, options: PrintPaperOptions):
190
173
  printIFrame.parentNode?.removeChild(printIFrame);
191
174
  }, 0);
192
175
  }
193
-
194
176
  /**
195
177
  * canvas节点导出到PDF
196
- * @param fileName
197
- * @param nodes
198
- * @param options
178
+ * @param fileName
179
+ * @param nodes
180
+ * @param options
199
181
  */
200
- export function exportCanvasToPDF(fileName: string, nodes: Array<HTMLCanvasElement>, options: PrintPaperOptions): void {
182
+ export function exportCanvasToPDF(fileName, nodes, options) {
201
183
  if (!fileName) {
202
184
  fileName = 'document.pdf';
203
- } else {
185
+ }
186
+ else {
204
187
  fileName = fileName.replace(/[\/\\:*?"<>|]/g, '_');
205
188
  if (!fileName.endsWith('.pdf')) {
206
189
  fileName += '.pdf';
@@ -216,4 +199,5 @@ export function exportCanvasToPDF(fileName: string, nodes: Array<HTMLCanvasEleme
216
199
  }
217
200
  }
218
201
  pdf.save(fileName);
219
- }
202
+ }
203
+ //# sourceMappingURL=document-print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-print.js","sourceRoot":"lib/","sources":["framework/document-print.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { SelectionState } from "./document-selection";
2
+ export declare function getFocusTextSegment(selection: SelectionState): boolean;
@@ -0,0 +1,106 @@
1
+ import { TextGroupElement } from "./impl/text/text-impl";
2
+ import { ElementUtil } from "./element-util";
3
+ import { SelectionRange } from "./document-selection";
4
+ export function getFocusTextSegment(selection) {
5
+ let { startControl: element, startOffset: offset } = selection;
6
+ if (!(element instanceof TextGroupElement))
7
+ return false;
8
+ if (!supportSegment())
9
+ return false;
10
+ const focusEle = element;
11
+ offset = offset + 1;
12
+ offset = offset > focusEle.textMeasures.length ? focusEle.textMeasures.length : offset;
13
+ //获取连续的字符
14
+ const items = [...getConsecutiveTextsByDirection(element), element, ...getConsecutiveTextsByDirection(element, false)];
15
+ const sortItems = getTextSortData(items);
16
+ const { index, text } = sortItems.reduce((prev, curr) => {
17
+ prev.text += curr.text;
18
+ if (prev.completed) {
19
+ return prev;
20
+ }
21
+ if (curr.item === focusEle) {
22
+ prev.index += offset;
23
+ prev.completed = true;
24
+ }
25
+ else {
26
+ prev.index += curr.item.textMeasures.length;
27
+ }
28
+ return prev;
29
+ }, { completed: false, index: 0, text: '' });
30
+ const { index: hitIndex, len: hitLen } = getHitSegment(text, index);
31
+ const matchSegment = sortItems.filter(item => (item.index <= hitIndex && item.endIndex > hitIndex) || (item.index <= hitIndex + hitLen && item.endIndex > hitIndex + hitLen));
32
+ const startSegment = matchSegment[0];
33
+ const endSegment = matchSegment[matchSegment.length - 1];
34
+ const startOffset = hitIndex - startSegment.index;
35
+ const endOffset = hitIndex + hitLen - endSegment.index;
36
+ const newRange = new SelectionRange();
37
+ newRange.setStart(startSegment.item, startOffset);
38
+ newRange.setEnd(endSegment.item, endOffset);
39
+ selection.addRange(newRange);
40
+ return true;
41
+ }
42
+ /**
43
+ * 进行分词
44
+ * @param text
45
+ * @param focusOffset
46
+ */
47
+ function getHitSegment(text, focusOffset) {
48
+ const segmenter = new Intl.Segmenter("zh-CN", { granularity: "word" });
49
+ const iterator1 = segmenter.segment(text)[Symbol.iterator]();
50
+ const segItems = Array.from(iterator1);
51
+ let index = 0;
52
+ for (let i = 0; i < segItems.length; i++) {
53
+ const segItem = segItems[i];
54
+ const currIndex = segItem.index;
55
+ const currLen = segItem.segment.length;
56
+ if (focusOffset > currIndex && focusOffset <= currLen + currIndex) {
57
+ return {
58
+ index,
59
+ len: currLen
60
+ };
61
+ }
62
+ index += currLen;
63
+ }
64
+ throw new Error('未获取到对应的分词词组');
65
+ }
66
+ function supportSegment() {
67
+ return typeof Intl.Segmenter === 'function';
68
+ }
69
+ /**
70
+ * 根据前后顺序标识索引位
71
+ * @param texts
72
+ */
73
+ function getTextSortData(texts) {
74
+ let index = 0;
75
+ const sortItems = [];
76
+ for (let i = 0; i < texts.length; i++) {
77
+ const item = texts[i];
78
+ const sortData = {
79
+ len: item.textMeasures.length,
80
+ index,
81
+ endIndex: index + item.textMeasures.length,
82
+ item,
83
+ text: item.text
84
+ };
85
+ sortItems.push(sortData);
86
+ index += sortData.len;
87
+ }
88
+ return sortItems;
89
+ }
90
+ /**
91
+ * 获取指定方向上连续的字符
92
+ * @param element
93
+ * @param prev
94
+ */
95
+ function getConsecutiveTextsByDirection(element, prev = true) {
96
+ let prevText = element;
97
+ const prevTexts = [];
98
+ const func = prev ? ElementUtil.getPrevSiblingElement : ElementUtil.getNextSiblingElement;
99
+ const addItem = prev ? prevTexts.unshift : prevTexts.push;
100
+ while ((prevText = func(prevText)) && prevText instanceof TextGroupElement) {
101
+ //addItem(prevText);
102
+ addItem.apply(prevTexts, [prevText]);
103
+ }
104
+ return prevTexts;
105
+ }
106
+ //# sourceMappingURL=document-segmenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-segmenter.js","sourceRoot":"lib/","sources":["framework/document-segmenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { Subject } from "rxjs";
2
+ import { BranchElement, LeafElement, Rect, Element, SelectionContentRange } from "./element-define";
3
+ import { HitEventInfo, HitRegion } from "./element-event-define";
4
+ import { DocumentContainerRender } from "./impl/document/doc-container-impl";
5
+ import { RenderObject } from "./render-define";
6
+ export declare class DocumentSelection {
7
+ constructor();
8
+ selectionState: SelectionState;
9
+ snapshotSelectionState: SelectionState | null;
10
+ setSelectionState(hitInfo: {
11
+ startHitInfo: HitEventInfo;
12
+ endHitInfo: HitEventInfo;
13
+ }): void;
14
+ /**
15
+ * 获取选区共同的祖先控件
16
+ */
17
+ static getAncestorCommonControl(startControl: LeafElement, endControl: LeafElement): BranchElement;
18
+ /**
19
+ * 获取向上的嵌套父级节点集合
20
+ * @param control
21
+ * @param array
22
+ */
23
+ static getNestParents(control: BranchElement | null): Array<BranchElement>;
24
+ static getCommonParenet(control: BranchElement | null, array: Array<BranchElement>): BranchElement | null;
25
+ updateSelectionState(): boolean;
26
+ /**
27
+ * 获取当前选区区域内是否支持留痕
28
+ * @private
29
+ */
30
+ private getEnableTrackChanges;
31
+ private compareSelectionEquals;
32
+ /**
33
+ * 转换选区内容
34
+ * 处理结束选区在开始选区之前
35
+ */
36
+ private transformRange;
37
+ takeSnapshot(): void;
38
+ clearSnapshot(): void;
39
+ }
40
+ export declare class SelectionState {
41
+ get startControl(): LeafElement;
42
+ set startControl(value: LeafElement | null);
43
+ get endControl(): LeafElement;
44
+ set endControl(value: LeafElement | null);
45
+ onChangedEvent: Subject<void>;
46
+ startControlIndex: number;
47
+ startOffset: number;
48
+ endControlIndex: number;
49
+ endOffset: number;
50
+ get collapsed(): boolean;
51
+ private _startControl;
52
+ private _endControl;
53
+ ancestorCommonControl: BranchElement | null;
54
+ range: SelectionRange | null;
55
+ startHitInfo: HitEventInfo | null;
56
+ selectedRange: SelectionContentRange | null;
57
+ editable: boolean;
58
+ renderContainer: DocumentContainerRender;
59
+ cursorPos: Rect | null;
60
+ afterSelectionChanged: ((newVal: SelectionState) => boolean) | null;
61
+ enableTrackChanges: boolean;
62
+ constructor();
63
+ clear(): void;
64
+ addRange(range: SelectionRange): void;
65
+ resetRange(startControl: Element, startOffset: number): SelectionRange;
66
+ surround(ele: Element): void;
67
+ clone(): SelectionState;
68
+ }
69
+ export declare class SelectionRange {
70
+ startControl: Element;
71
+ startOffset: number;
72
+ endControl: Element;
73
+ endOffset: number;
74
+ editable: boolean;
75
+ setStart(control: Element, offset: number): void;
76
+ setEnd(control: Element, offset: number): void;
77
+ private calcStart;
78
+ private calcEnd;
79
+ calcRange(): void;
80
+ private setInfo;
81
+ clone(): SelectionRange;
82
+ }
83
+ export declare class DocumentCursor {
84
+ static getElementCursorPos(ele: LeafElement, offset: number, hitRegion: HitRegion | undefined, docNum: number): {
85
+ render: RenderObject;
86
+ rect: Rect;
87
+ };
88
+ private static getElementRenderPos;
89
+ }