@hailin-zheng/editor-core 1.0.1 → 1.0.3

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 (216) hide show
  1. package/lib/doc-ruler.d.ts +51 -0
  2. package/lib/doc-ruler.js +313 -0
  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/lib/framework/document-change.js +1342 -0
  9. package/lib/framework/document-change.js.map +1 -0
  10. package/lib/framework/document-combine.d.ts +24 -0
  11. package/lib/framework/document-combine.js +40 -0
  12. package/lib/framework/document-combine.js.map +1 -0
  13. package/lib/framework/document-comment.d.ts +46 -0
  14. package/lib/framework/document-comment.js +148 -0
  15. package/lib/framework/document-comment.js.map +1 -0
  16. package/lib/framework/document-context.d.ts +149 -0
  17. package/lib/framework/document-context.js +330 -0
  18. package/lib/framework/document-context.js.map +1 -0
  19. package/lib/framework/document-eval-func.d.ts +18 -0
  20. package/lib/framework/document-eval-func.js +48 -0
  21. package/lib/framework/document-eval-func.js.map +1 -0
  22. package/lib/framework/document-event.d.ts +213 -0
  23. package/lib/framework/document-event.js +1054 -0
  24. package/lib/framework/document-event.js.map +1 -0
  25. package/lib/framework/document-history.d.ts +26 -0
  26. package/lib/framework/document-history.js +65 -0
  27. package/lib/framework/document-history.js.map +1 -0
  28. package/lib/framework/document-images-loader.d.ts +16 -0
  29. package/lib/framework/document-images-loader.js +66 -0
  30. package/lib/framework/document-images-loader.js.map +1 -0
  31. package/lib/framework/document-input-cursor.d.ts +78 -0
  32. package/lib/framework/document-input-cursor.js +239 -0
  33. package/lib/framework/document-input-cursor.js.map +1 -0
  34. package/lib/framework/document-paint.d.ts +34 -0
  35. package/lib/framework/document-paint.js +103 -0
  36. package/lib/framework/document-paint.js.map +1 -0
  37. package/lib/framework/document-print-offscreen.d.ts +38 -0
  38. package/lib/framework/document-print-offscreen.js +128 -0
  39. package/lib/framework/document-print-offscreen.js.map +1 -0
  40. package/lib/framework/document-print.d.ts +60 -0
  41. package/lib/framework/document-print.js +203 -0
  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/lib/framework/document-selection.js +358 -0
  48. package/lib/framework/document-selection.js.map +1 -0
  49. package/lib/framework/document-template.d.ts +4 -0
  50. package/lib/framework/document-template.js +20 -0
  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/lib/framework/element-define.js +579 -0
  57. package/lib/framework/element-define.js.map +1 -0
  58. package/lib/framework/element-event-define.d.ts +99 -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/lib/framework/element-measure.js +551 -0
  63. package/lib/framework/element-measure.js.map +1 -0
  64. package/lib/framework/element-paint.d.ts +42 -0
  65. package/lib/framework/element-paint.js +170 -0
  66. package/lib/framework/element-paint.js.map +1 -0
  67. package/lib/framework/element-props.d.ts +301 -0
  68. package/lib/framework/element-props.js +809 -0
  69. package/lib/framework/element-props.js.map +1 -0
  70. package/lib/framework/element-reader.d.ts +19 -0
  71. package/lib/framework/element-reader.js +151 -0
  72. package/lib/framework/element-reader.js.map +1 -0
  73. package/lib/framework/element-render-cut.d.ts +55 -0
  74. package/lib/framework/element-render-cut.js +449 -0
  75. package/lib/framework/element-render-cut.js.map +1 -0
  76. package/lib/framework/element-serialize.d.ts +30 -0
  77. package/lib/framework/element-serialize.js +113 -0
  78. package/lib/framework/element-serialize.js.map +1 -0
  79. package/lib/framework/element-util.d.ts +369 -0
  80. package/lib/framework/element-util.js +1463 -0
  81. package/lib/framework/element-util.js.map +1 -0
  82. package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
  83. package/lib/framework/impl/checkbox/checkbox-impl.js +64 -0
  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/lib/framework/impl/comments/comment-content-impl.js +105 -0
  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/lib/framework/impl/comments/comment-element-impl.js +62 -0
  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/lib/framework/impl/comments/comments-container-impl.js +62 -0
  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/lib/framework/impl/comments/comments-util.js +67 -0
  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/lib/framework/impl/comments/validate-msg-impl.js +83 -0
  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/lib/framework/impl/data-element/data-decorate-impl.js +91 -0
  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/lib/framework/impl/data-element/data-element-barcode.js +115 -0
  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/lib/framework/impl/data-element/data-element-base-impl.js +205 -0
  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/lib/framework/impl/data-element/data-element-check-impl.js +133 -0
  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/lib/framework/impl/data-element/data-element-date-impl.js +111 -0
  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/lib/framework/impl/data-element/data-element-group-impl.js +130 -0
  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/lib/framework/impl/data-element/data-element-image-impl.js +137 -0
  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/lib/framework/impl/data-element/data-element-list-impl.js +131 -0
  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/lib/framework/impl/data-element/data-element-text-impl.js +103 -0
  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/lib/framework/impl/decorate/fill-null-space-imple.js +43 -0
  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/lib/framework/impl/document/doc-body-impl.js +79 -0
  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/lib/framework/impl/document/doc-body-part-impl.js +94 -0
  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/lib/framework/impl/document/doc-footer-impl.js +77 -0
  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/lib/framework/impl/document/doc-header-impl.js +83 -0
  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/lib/framework/impl/document/doc-impl.js +209 -0
  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/lib/framework/impl/media-formula/menstrual-history.js +153 -0
  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/lib/framework/impl/paragraph/p-impl.js +156 -0
  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/lib/framework/impl/picture/image-impl.js +124 -0
  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/lib/framework/impl/radio/radio-impl.js +72 -0
  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/lib/framework/impl/symbol/br-symbol-impl.js +54 -0
  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/lib/framework/impl/symbol/p-symbol-impl.js +54 -0
  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/lib/framework/impl/table/table-cell-impl.js +145 -0
  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/lib/framework/impl/table/table-impl.js +363 -0
  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/lib/framework/impl/table/table-row-impl.js +75 -0
  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/lib/framework/impl/table/table-split-cell-patch.js +89 -0
  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/lib/framework/impl/table/table-split-cell.js +464 -0
  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/lib/framework/impl/table/table-util.js +678 -0
  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/lib/framework/impl/text/text-impl.js +149 -0
  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/lib/framework/impl/text/track-run-impl.js +112 -0
  189. package/lib/framework/impl/text/track-run-impl.js.map +1 -0
  190. package/lib/framework/notify.d.ts +13 -0
  191. package/lib/framework/notify.js +116 -0
  192. package/lib/framework/notify.js.map +1 -0
  193. package/lib/framework/range-util.d.ts +40 -0
  194. package/lib/framework/range-util.js +312 -0
  195. package/lib/framework/range-util.js.map +1 -0
  196. package/lib/framework/render-context.d.ts +91 -0
  197. package/lib/framework/render-context.js +384 -0
  198. package/lib/framework/render-context.js.map +1 -0
  199. package/lib/framework/render-define.d.ts +109 -0
  200. package/lib/framework/render-define.js +195 -0
  201. package/lib/framework/render-define.js.map +1 -0
  202. package/lib/framework/selection-overlays.d.ts +30 -0
  203. package/lib/framework/selection-overlays.js +124 -0
  204. package/lib/framework/selection-overlays.js.map +1 -0
  205. package/lib/texteditor.d.ts +318 -0
  206. package/lib/texteditor.js +913 -0
  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/lib/util/table-bind.js +6 -0
  213. package/lib/util/table-bind.js.map +1 -0
  214. package/package.json +1 -1
  215. package/tsconfig.json +1 -1
  216. package/webpack.config.js +0 -1
@@ -0,0 +1,195 @@
1
+ import { Rect, MarginProps, PaddingProps } from './element-define';
2
+ /**
3
+ * 定义组件的UI形式的渲染
4
+ */
5
+ export class RenderObject {
6
+ element;
7
+ margin;
8
+ padding;
9
+ rect = new Rect();
10
+ parent;
11
+ /**
12
+ * 可点击性,例如:null-text 占位符元素不具备可点击能力
13
+ */
14
+ disableClick;
15
+ constructor(element) {
16
+ this.element = element;
17
+ this.margin = new MarginProps();
18
+ this.padding = new PaddingProps();
19
+ }
20
+ pagePaintCompleted(ctx, position) { }
21
+ destroy() {
22
+ //this.parent = null;
23
+ //this.margin = null;
24
+ //this.padding = null;
25
+ //this.rect = null;
26
+ //this.element = null;
27
+ }
28
+ /**
29
+ * 获取内容区域框体
30
+ * @param render
31
+ * @returns
32
+ */
33
+ getInnnerRect() {
34
+ const { padding } = this;
35
+ const rect = new Rect();
36
+ rect.x = padding.left;
37
+ rect.y = padding.top;
38
+ rect.maxWidth = this.rect.maxWidth - padding.left - padding.right;
39
+ if (this.rect.maxHeight) {
40
+ rect.maxHeight = this.rect.maxHeight - padding.top - padding.bottom;
41
+ }
42
+ return rect;
43
+ }
44
+ getInnerMaxWidth() {
45
+ if (!this.rect.maxWidth) {
46
+ throw new Error('this.rect.maxWidth is null');
47
+ }
48
+ const { padding, margin } = this;
49
+ return this.rect.maxWidth - padding.left - padding.right - margin.left - margin.bottom;
50
+ }
51
+ /**
52
+ * 根据内框内容高度,更新外框框体高度
53
+ * @param render
54
+ * @param innerRect
55
+ */
56
+ updateRenderHeight(innerRect) {
57
+ const innnerHeight = typeof innerRect === 'number' ? innerRect : innerRect.height;
58
+ const { padding, margin } = this;
59
+ //外层容器高度等于内容高度+外边距+内边距
60
+ this.rect.height = innnerHeight + padding.top + padding.bottom;
61
+ }
62
+ getIndex() {
63
+ if (this.parent) {
64
+ return this.parent.getChildIndex(this);
65
+ }
66
+ else {
67
+ return 0;
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * 叶子节点渲染元素
73
+ */
74
+ export class LeafRenderObject extends RenderObject {
75
+ constructor(element) {
76
+ super(element);
77
+ }
78
+ }
79
+ /**
80
+ * 枝干节点渲染元素
81
+ */
82
+ export class BranchRenderObject extends RenderObject {
83
+ constructor(element) {
84
+ super(element);
85
+ }
86
+ chilren = [];
87
+ getItems() {
88
+ return this.chilren;
89
+ }
90
+ addChild(...items) {
91
+ for (let i = 0; i < items.length; i++) {
92
+ const item = items[i];
93
+ item.parent = this;
94
+ this.chilren.push(item);
95
+ }
96
+ }
97
+ insertChild(item, index) {
98
+ this.chilren.splice(index, 0, item);
99
+ item.parent = this;
100
+ }
101
+ removeChild(child) {
102
+ const index = this.chilren.indexOf(child);
103
+ if (index < 0) {
104
+ throw new Error('为查找到当前元素');
105
+ }
106
+ if (child.parent === this) {
107
+ //child.parent = null;
108
+ }
109
+ this.chilren.splice(index, 1);
110
+ }
111
+ removeChildByIndex(index) {
112
+ const child = this.chilren[index];
113
+ if (child) {
114
+ this.chilren.splice(index, 1);
115
+ //child.parent = null;
116
+ }
117
+ else {
118
+ throw new Error('为查找到当前元素');
119
+ }
120
+ }
121
+ clear() {
122
+ const items = [...this.chilren];
123
+ for (let i = items.length - 1; i >= 0; i--) {
124
+ this.removeChildByIndex(i);
125
+ }
126
+ }
127
+ get length() {
128
+ return this.chilren.length;
129
+ }
130
+ getChild(index) {
131
+ return this.chilren[index];
132
+ }
133
+ getChildIndex(child) {
134
+ return this.chilren.indexOf(child);
135
+ }
136
+ destroy() {
137
+ super.destroy();
138
+ const len = this.length;
139
+ for (let i = len - 1; i >= 0; i--) {
140
+ const child = this.getChild(i);
141
+ child.destroy();
142
+ //this.removeChild(child);
143
+ }
144
+ this.chilren.length = 0;
145
+ //this.chilren = null;
146
+ }
147
+ }
148
+ /**
149
+ * 块级渲染元素
150
+ */
151
+ export class BlockContentRenderObject extends BranchRenderObject {
152
+ setRenderWidth(maxWidth) {
153
+ this.rect.maxWidth = maxWidth;
154
+ this.rect.width = maxWidth;
155
+ }
156
+ }
157
+ export class InlineGroupRenderObject extends BranchRenderObject {
158
+ }
159
+ /**
160
+ * 包含块级渲染元素的容器元素,例如body、table-cell等
161
+ */
162
+ export class BlockContainerRenderObject extends BranchRenderObject {
163
+ setRenderWidth(maxWidth) {
164
+ this.rect.maxWidth = maxWidth;
165
+ this.rect.width = maxWidth;
166
+ }
167
+ }
168
+ /**
169
+ * 多级 ‘BlockLineRectRenderObject’ 包裹元素,例如 p、table
170
+ */
171
+ export class MuiltBlockLineRenderObject extends BlockContentRenderObject {
172
+ }
173
+ /**
174
+ * 容器-子内容为多个行内块级元素,例如table-row
175
+ */
176
+ export class InlineBlockContainer extends MuiltBlockLineRenderObject {
177
+ }
178
+ /**
179
+ * 服务于table-cell
180
+ * 可被多级拆分的元素
181
+ */
182
+ export class InlineMuiltBlockLineRenderObject extends MuiltBlockLineRenderObject {
183
+ }
184
+ /**
185
+ * 最小不可分割单位的块级行框,例如 p-line
186
+ * 一行不可存在于两个页面中,块级行框不能分布在两个页面中
187
+ */
188
+ export class BlockLineRectRenderObject extends BlockContentRenderObject {
189
+ }
190
+ export var RenderObjectType;
191
+ (function (RenderObjectType) {
192
+ RenderObjectType[RenderObjectType["Branch"] = 0] = "Branch";
193
+ RenderObjectType[RenderObjectType["Leaf"] = 1] = "Leaf";
194
+ })(RenderObjectType || (RenderObjectType = {}));
195
+ //# sourceMappingURL=render-define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-define.js","sourceRoot":"","sources":["../../src/med_editor/framework/render-define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAW,WAAW,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAA;AAErF;;GAEG;AACH,MAAM,OAAgB,YAAY;IASX;IARnB,MAAM,CAAe;IACrB,OAAO,CAAgB;IACvB,IAAI,GAAS,IAAI,IAAI,EAAE,CAAC;IACxB,MAAM,CAAsB;IAC5B;;MAEE;IACF,YAAY,CAAW;IACvB,YAAmB,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACtC,CAAC;IAED,kBAAkB,CAAC,GAAuB,EAAE,QAAkB,IAAU,CAAC;IACzE,OAAO;QACH,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;QACnB,sBAAsB;IAC1B,CAAC;IAED;;;;MAIE;IACF,aAAa;QACT,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;SACvE;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAChD;QACD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3F,CAAC;IAED;;;;MAIE;IACF,kBAAkB,CAAC,SAAwB;QACvC,MAAM,YAAY,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAQ,SAAU,CAAC,MAAM,CAAC;QAC1F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACjC,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACnE,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1C;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAgB,gBAA8C,SAAQ,YAAe;IACvF,YAAY,OAAiB;QACzB,KAAK,CAAC,OAAY,CAAC,CAAC;IACxB,CAAC;CAGJ;AAED;;GAEG;AACH,MAAM,OAAgB,kBAAgD,SAAQ,YAAe;IACzF,YAAY,OAAiB;QACzB,KAAK,CAAC,OAAY,CAAC,CAAC;IACxB,CAAC;IACO,OAAO,GAAwB,EAAE,CAAC;IAC1C,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,GAAG,KAA0B;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IACL,CAAC;IAED,WAAW,CAAC,IAAkB,EAAE,KAAa;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,KAAmB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACvB,sBAAsB;SACzB;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,sBAAsB;SACzB;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,KAAK;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SAC9B;IACL,CAAC;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAGD,QAAQ,CAAwC,KAAa;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAM,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,KAAmB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAKD,OAAO;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,0BAA0B;SAC7B;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,sBAAsB;IAC1B,CAAC;CACJ;AAGD;;GAEG;AACH,MAAM,OAAgB,wBAAsD,SAAQ,kBAAqB;IACrG,cAAc,CAAC,QAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,OAAgB,uBAAqD,SAAQ,kBAAqB;CACvG;AAED;;GAEG;AACH,MAAM,OAAgB,0BAAwD,SAAQ,kBAAqB;IACvG,cAAc,CAAC,QAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC/B,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAgB,0BAAwD,SAAQ,wBAA2B;CAAI;AAErH;;GAEG;AACH,MAAM,OAAgB,oBAAqB,SAAQ,0BAA0B;CAAI;AAEjF;;;GAGG;AACH,MAAM,OAAgB,gCAAiC,SAAQ,0BAA0B;CAAI;AAE7F;;;GAGG;AACH,MAAM,OAAgB,yBAA0B,SAAQ,wBAAwB;CAAI;AAKpF,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,2DAAU,CAAA;IACV,uDAAQ,CAAA;AACZ,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
@@ -0,0 +1,30 @@
1
+ import { SelectionState } from "./document-selection";
2
+ import { Element, SelectionContentRange } from "./element-define";
3
+ /**
4
+ * 用于处理选区拖蓝
5
+ */
6
+ export declare class SelectionOverlays {
7
+ private selectionState;
8
+ private selectionRange;
9
+ selectedSets: Map<Element, SelectionContentRange>;
10
+ constructor(selectionState: SelectionState);
11
+ getSelectionTreeData(): void;
12
+ private convertSelectRangeToSet;
13
+ static addToSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>): void;
14
+ /**
15
+ * 添加到批注集合
16
+ * @param range
17
+ * @param set
18
+ */
19
+ static addToCommentSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>): void;
20
+ /**
21
+ * 修正开始选区内容
22
+ * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素
23
+ */
24
+ private fixStartSelectionElement;
25
+ /**
26
+ * 修正开始选区内容
27
+ * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素
28
+ */
29
+ private fixEndSelectionElement;
30
+ }
@@ -0,0 +1,124 @@
1
+ import { ElementUtil } from "./element-util";
2
+ import { RangeUtil } from "./range-util";
3
+ import { TableElement } from "./impl/table/table-impl";
4
+ import { TableCellElement } from "./impl/table/table-cell-impl";
5
+ /**
6
+ * 用于处理选区拖蓝
7
+ */
8
+ export class SelectionOverlays {
9
+ selectionState;
10
+ selectionRange;
11
+ selectedSets = new Map();
12
+ constructor(selectionState) {
13
+ this.selectionState = selectionState;
14
+ }
15
+ getSelectionTreeData() {
16
+ let { ancestorCommonControl, startControl, startOffset, endControl, endOffset, collapsed } = this.selectionState;
17
+ this.selectedSets.clear();
18
+ if (this.selectionRange) {
19
+ this.selectionRange.selectedChildren.length = 0;
20
+ }
21
+ this.selectionRange = null;
22
+ if (!startControl || !endControl || !ancestorCommonControl) {
23
+ //this.selectionRange?.selectedChildren.length=0;
24
+ this.selectionState.selectedRange = null;
25
+ return;
26
+ }
27
+ if (collapsed) {
28
+ const commonRange = RangeUtil.getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl);
29
+ this.selectionState.selectedRange = commonRange;
30
+ this.selectedSets.clear();
31
+ return;
32
+ }
33
+ const fixStartElement = this.fixStartSelectionElement(startControl, startOffset, ancestorCommonControl);
34
+ startControl = fixStartElement.element;
35
+ startOffset = fixStartElement.offset;
36
+ const fixEndElement = this.fixEndSelectionElement(endControl, endOffset, ancestorCommonControl);
37
+ endControl = fixEndElement.element;
38
+ endOffset = fixEndElement.offset;
39
+ const commonRange = RangeUtil.getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl);
40
+ //console.log(commonRange);
41
+ this.selectionRange = commonRange;
42
+ this.convertSelectRangeToSet();
43
+ this.selectionState.selectedRange = commonRange;
44
+ }
45
+ convertSelectRangeToSet() {
46
+ this.selectedSets.clear();
47
+ if (this.selectionRange) {
48
+ SelectionOverlays.addToSets(this.selectionRange, this.selectedSets);
49
+ }
50
+ }
51
+ static addToSets(range, set) {
52
+ set.set(range.target, range);
53
+ for (let i = 0; i < range.selectedChildren.length; i++) {
54
+ //单元格全部选中效果,单元格整个拖蓝即可
55
+ if (range.isFullSelected && range.target.type === 'tbc') {
56
+ continue;
57
+ }
58
+ this.addToSets(range.selectedChildren[i], set);
59
+ }
60
+ }
61
+ /**
62
+ * 添加到批注集合
63
+ * @param range
64
+ * @param set
65
+ */
66
+ static addToCommentSets(range, set) {
67
+ set.set(range.target, range);
68
+ for (let i = 0; i < range.selectedChildren.length; i++) {
69
+ this.addToCommentSets(range.selectedChildren[i], set);
70
+ }
71
+ }
72
+ /**
73
+ * 修正开始选区内容
74
+ * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素
75
+ */
76
+ fixStartSelectionElement(element, offset, ancestorCommonControl) {
77
+ if (!(ancestorCommonControl instanceof TableElement)) {
78
+ const lookupParentCell = ElementUtil.getParentByType(element, TableCellElement);
79
+ if (lookupParentCell) {
80
+ if (!lookupParentCell.parent || !lookupParentCell.parent.parent) {
81
+ }
82
+ const lookupParentTbIndex = ElementUtil.getControlIndex(lookupParentCell.parent.parent);
83
+ const ancestorCommonControlIndex = ElementUtil.getControlIndex(ancestorCommonControl);
84
+ if (ancestorCommonControlIndex < lookupParentTbIndex) {
85
+ const rowFirstLeafElement = ElementUtil.getFirstLeafElement(lookupParentCell.parent);
86
+ if (!rowFirstLeafElement) {
87
+ throw new Error('当前元素处于表格内元素,未能定位到当前单元格首个元素');
88
+ }
89
+ return {
90
+ element: rowFirstLeafElement,
91
+ offset: 0
92
+ };
93
+ }
94
+ }
95
+ }
96
+ return { element, offset };
97
+ }
98
+ /**
99
+ * 修正开始选区内容
100
+ * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素
101
+ */
102
+ fixEndSelectionElement(element, offset, ancestorCommonControl) {
103
+ if (!(ancestorCommonControl instanceof TableElement)) {
104
+ const lookupParentCell = ElementUtil.getParentByType(element, TableCellElement);
105
+ if (lookupParentCell) {
106
+ const lookupParentTbIndex = ElementUtil.getControlIndex(lookupParentCell.parent.parent);
107
+ const ancestorCommonControlIndex = ElementUtil.getControlIndex(ancestorCommonControl);
108
+ if (ancestorCommonControlIndex < lookupParentTbIndex) {
109
+ const rowLastLeafElement = ElementUtil.getLastLeafElement(lookupParentCell.parent);
110
+ if (!rowLastLeafElement) {
111
+ const rowLastLeafElement = ElementUtil.getLastLeafElement(lookupParentCell.parent);
112
+ throw new Error('当前元素处于表格内元素,未能定位到当前单元格首个元素');
113
+ }
114
+ return {
115
+ element: rowLastLeafElement,
116
+ offset: 1
117
+ };
118
+ }
119
+ }
120
+ }
121
+ return { element, offset };
122
+ }
123
+ }
124
+ //# sourceMappingURL=selection-overlays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-overlays.js","sourceRoot":"","sources":["../../src/med_editor/framework/selection-overlays.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ import { ContentMenuItem } from './framework/element-event-define';
2
+ import { ElementReader } from './framework/element-reader';
3
+ import { Subject } from 'rxjs';
4
+ import { SelectionState } from './framework/document-selection';
5
+ import { BranchElement, Element, ICancelTokenFn, LeafElement, MarginProps, OrientType, Position, TextAlign, ViewOptions } from './framework/element-define';
6
+ import { DataElementInlineGroup, DataElementLeaf } from './framework/impl/data-element/data-element-base-impl';
7
+ import { ParagraphProps, TextProps } from './framework/element-props';
8
+ import { EditorContext } from './framework/document-context';
9
+ import { DocumentElement } from './framework/impl/document/doc-impl';
10
+ export declare class CanvasTextEditor {
11
+ private docScroll;
12
+ private holdSpace;
13
+ private ruleCanvas;
14
+ private editCanvasContainer;
15
+ private editCanvas;
16
+ private editInput;
17
+ private editCursor;
18
+ private cursorWrapper;
19
+ private scaleContainer;
20
+ private contentCtx;
21
+ viewOptions: ViewOptions;
22
+ docCtx: EditorContext;
23
+ private docComment;
24
+ private renderContext;
25
+ private documentPaint;
26
+ elementReader: ElementReader;
27
+ private documentEvent;
28
+ private documentSelection;
29
+ private documentInput;
30
+ private documentChange;
31
+ private selectionOverlays;
32
+ private docRule;
33
+ private docHistory;
34
+ private eventMap;
35
+ selectionChanged: Subject<SelectionState>;
36
+ beforeRenderSubject: Subject<void>;
37
+ afterRenderSubject: Subject<void>;
38
+ selectionState: SelectionState;
39
+ onContextMenuItemChanged: Subject<EditorContenxtProps>;
40
+ onShowDataElementEditPanelEvent: Subject<EditorPanelProps>;
41
+ onDblClickEvent: Subject<Event>;
42
+ onClickEvent: Subject<Event>;
43
+ onScrollViewEvent: Subject<number>;
44
+ onDocChangedEvent: Subject<void>;
45
+ constructor(docScroll: HTMLDivElement, holdSpace: HTMLDivElement, ruleCanvas: HTMLCanvasElement, editCanvasContainer: HTMLDivElement, editCanvas: HTMLCanvasElement, editInput: HTMLInputElement, editCursor: HTMLSpanElement, cursorWrapper: HTMLDivElement, scaleContainer: HTMLDivElement);
46
+ /**
47
+ * 设置标尺
48
+ */
49
+ refreshDocRule(): void;
50
+ createDocViewer(): void;
51
+ measureMMToPixs(): number;
52
+ flushTask: (() => void) | null;
53
+ flushTaskThen: Array<(() => void)>;
54
+ private trackChangeState;
55
+ flushToSchedule(): void;
56
+ /**
57
+ * 触发文档改变事件
58
+ * @returns
59
+ */
60
+ triggerDocChange(): void;
61
+ /**
62
+ * fn函数执行时,不触发onDocChange
63
+ * @param fn
64
+ */
65
+ noEffectChange(fn: () => void): void;
66
+ loadDoc(data: any | DocumentElement): void;
67
+ /**
68
+ * 更新文档容器高度尺寸
69
+ */
70
+ updateDocumentContainerSize(): void;
71
+ scrollView(evt: Event): void;
72
+ private refreshDocument;
73
+ private hitInfoChanged;
74
+ /**
75
+ * 设置光标
76
+ */
77
+ private setCursor;
78
+ /**
79
+ * 判断是否光标可以设置接受编辑
80
+ * @returns
81
+ */
82
+ private canSetCursor;
83
+ /**
84
+ * 修改光标
85
+ * @param newCursor
86
+ */
87
+ private changeCursor;
88
+ /**
89
+ * 文档点击事件
90
+ */
91
+ private docClickHandle;
92
+ /**
93
+ * 文档双击事件
94
+ * 处理全选当前段落
95
+ */
96
+ private docDblClickHandle;
97
+ /**
98
+ * 获取当前光标所在的数据元
99
+ * @returns
100
+ */
101
+ getCurrentDataElement(): DataElementInlineGroup | DataElementLeaf | null;
102
+ /**
103
+ * 设置当前光标所在的数据元的值
104
+ * @param val
105
+ */
106
+ setCurrentDataElementValue(val: any): void;
107
+ /**
108
+ * 获取数据元位置
109
+ * @param element
110
+ * @returns
111
+ */
112
+ getDataElementPosition(element: LeafElement): {
113
+ x: number;
114
+ y: number;
115
+ translateY: number;
116
+ };
117
+ /**
118
+ * 获取文档模型
119
+ * @returns
120
+ */
121
+ getDocSchema(): any;
122
+ getDocSchemaJSON(): string;
123
+ /**
124
+ * 右键菜单
125
+ * @param evt
126
+ */
127
+ onContextMenu(evt: MouseEvent): void;
128
+ resizeObserver: ResizeObserver | null;
129
+ listenContainerHeight(): void;
130
+ private updateDocHeight;
131
+ resetViewer(type?: 'demand' | 'force' | undefined): void;
132
+ /**
133
+ * 缩放视图
134
+ * @param scale
135
+ * @returns
136
+ */
137
+ scaleView(scale: number): number;
138
+ getContainerHeight(): {
139
+ height: number;
140
+ width: number;
141
+ };
142
+ setCanvasProps(): void;
143
+ /**
144
+ * 在当前位置插入表格
145
+ * @param row
146
+ * @param col
147
+ */
148
+ insertTable(rows: number, cols: number): void;
149
+ /**
150
+ * 打印所有文档
151
+ */
152
+ printAllPages(): void;
153
+ /**
154
+ * 导出所有页到base64
155
+ */
156
+ exportAllPagesToBase64(fileName: string): void;
157
+ exportPDF(): void;
158
+ /**
159
+ * 清除文档
160
+ */
161
+ clearDoc(): void;
162
+ /**
163
+ * 新建文档
164
+ * @param options
165
+ */
166
+ createNewDoc(doc?: DocumentElement | null): void;
167
+ destroy(): void;
168
+ /**
169
+ * 获取选区文本属性
170
+ * @returns
171
+ */
172
+ getSelectionTextGroupProps(): TextProps | null;
173
+ getSelectionParaProps(): ParagraphProps | null;
174
+ /**
175
+ * 设置文本字体大小
176
+ * @param fontSize
177
+ * @returns
178
+ */
179
+ setTextFontSize(fontSize: number): void;
180
+ /**
181
+ * 设置文本颜色
182
+ * @param color \
183
+ */
184
+ setTextColor(color: string): void;
185
+ /**
186
+ * 设置文本字体名称
187
+ * @param font
188
+ */
189
+ setTextFont(font: string): void;
190
+ /**
191
+ * 应用选中文本格式,用于批量设置格式,例如:格式刷
192
+ * @param newStyle
193
+ */
194
+ applyStyle(newStyle: TextProps): void;
195
+ /**
196
+ * 开启格式刷
197
+ */
198
+ enableFormatBrush(): ICancelTokenFn | null;
199
+ /**
200
+ * 设置文本背景颜色
201
+ * @param color
202
+ */
203
+ setTextBackColor(color: string): void;
204
+ /**
205
+ * 切换文本加粗、下划线、删除等文本样式
206
+ * @param isEffective
207
+ * @param style
208
+ * @param matchValue
209
+ */
210
+ switchTextStyle<P extends keyof TextProps, V extends TextProps[P]>(isEffective: boolean, style: P, matchValue: V, defaultValue?: any): void;
211
+ /**
212
+ * 修改字间距
213
+ */
214
+ setLetterSpace(letterSpace: number): void;
215
+ /**
216
+ * 设置段落对齐
217
+ * @param align
218
+ */
219
+ switchParaAlign(align: TextAlign): void;
220
+ combineCell(): void;
221
+ /**
222
+ * 切换当前段落项目符号状态
223
+ */
224
+ setParagraphNumberType(): void;
225
+ /**
226
+ * 删除当前批注
227
+ * @param id
228
+ */
229
+ removeComment(id: string): void;
230
+ /**
231
+ * 移除焦点所在的批注
232
+ */
233
+ removeCurrentComment(): void;
234
+ /**
235
+ * 插入批注
236
+ */
237
+ insertComment(): void;
238
+ /**
239
+ * 清除所有批注
240
+ */
241
+ clearAllComments(): void;
242
+ cutTable(): void;
243
+ /**
244
+ * 初始化当前文档创建用户信息
245
+ * 一份文档只需要设置一次
246
+ */
247
+ initCurrentDocUser(userId: string, userName: string, date: string): void;
248
+ /**
249
+ * 验证文档内容
250
+ * @returns
251
+ */
252
+ validate(): boolean;
253
+ /**
254
+ * 撤销
255
+ */
256
+ undo(): void;
257
+ /**
258
+ * 恢复
259
+ */
260
+ redo(): void;
261
+ /**
262
+ * 是否可以撤销
263
+ */
264
+ canUndo(): boolean;
265
+ /**
266
+ * 是否可以恢复
267
+ */
268
+ canRedo(): boolean;
269
+ switchTrackChanges(eleCtx?: BranchElement | null): void;
270
+ get trackTipsChanged(): Subject<{
271
+ pos: Position;
272
+ tips: import("./framework/element-event-define").ITrackTips;
273
+ }>;
274
+ switchFullViewPage(): void;
275
+ getSelectedJSON(): string;
276
+ getSelectedText(): string;
277
+ /**
278
+ * 设置纸张方向
279
+ * @param orientation
280
+ */
281
+ setPaperOrient(orientation: OrientType): void;
282
+ /**
283
+ * 设置纸张大小,单位为毫米(mm)
284
+ * @param width
285
+ * @param height
286
+ */
287
+ setPaperSize(width: number, height: number): void;
288
+ /**
289
+ * 插入强制换页符
290
+ */
291
+ insertPageBreakPara(): void;
292
+ /**
293
+ * 显示当前元素到视图中
294
+ * @param element
295
+ */
296
+ bringToView(element: Element): void;
297
+ /**
298
+ * 设置当前文档页边距
299
+ */
300
+ setDocumentMargin(pageMargin: Partial<MarginProps>): void;
301
+ /**
302
+ * 插入元素
303
+ * @param targetElement
304
+ * @param targetOffset
305
+ * @param destEleArray
306
+ * @returns
307
+ */
308
+ insertElement(targetElement: Element, targetOffset: number, destEleArray: Array<Element>): Element | null;
309
+ }
310
+ export declare type EditorCurrentPos = {
311
+ pos: Position;
312
+ };
313
+ export declare type EditorContenxtProps = {
314
+ menus: Array<ContentMenuItem>;
315
+ } & EditorCurrentPos;
316
+ export declare type EditorPanelProps = {
317
+ type: string;
318
+ } & EditorCurrentPos;