@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,55 @@
1
+ import { BlockContainerElement, Element, ElementFactory, SerializeProps, ViewOptions } from "@/med_editor/framework/element-define";
2
+ import { TableProps } from "@/med_editor/framework/element-props";
3
+ import { RenderContenxtType } from "@/med_editor/framework/render-context";
4
+ import { MuiltBlockLineRenderObject, RenderObject } from "@/med_editor/framework/render-define";
5
+ export declare class TableElement extends BlockContainerElement<TableProps> {
6
+ private _actualColsProps;
7
+ constructor();
8
+ /**
9
+ * 获取实际测量的宽度,将auto、百分比列宽度进行转化为 number 类型
10
+ */
11
+ get actualColsProps(): {
12
+ width: number;
13
+ offset: number;
14
+ }[];
15
+ getCellWidth(cellIndex: number): number;
16
+ getCellOffsetX(cellIndex: number): number;
17
+ setCellWidth(cellIndex: number, width: number): void;
18
+ /**
19
+ * 插入列的定义
20
+ * @param index
21
+ * @param width
22
+ */
23
+ insertCol(index: number, width: number | string): void;
24
+ /**
25
+ * 移除列的定义
26
+ * @param index
27
+ */
28
+ removeCol(index: number): void;
29
+ getColsCount(): number;
30
+ clone(data: boolean): Element;
31
+ createRenderObject(options: ViewOptions, renderCtx: RenderContenxtType): RenderObject;
32
+ beginMeasure(): void;
33
+ serialize(options: ViewOptions): SerializeProps;
34
+ static createTable(rows: number, cols: number): TableElement;
35
+ }
36
+ export declare class TableRenderObject extends MuiltBlockLineRenderObject<TableElement> {
37
+ setRenderWidth(maxWidth: number): void;
38
+ beginRender(ctx: RenderContenxtType, position: {
39
+ x: number;
40
+ y: number;
41
+ }): void;
42
+ endRender(ctx: RenderContenxtType, position: {
43
+ x: number;
44
+ y: number;
45
+ }): void;
46
+ clone(): RenderObject;
47
+ }
48
+ export declare class TableFactory extends ElementFactory<TableProps> {
49
+ match(type: string): boolean;
50
+ createElement(data: any, renderCtx: RenderContenxtType): Element;
51
+ }
52
+ /**
53
+ * 行-表格渲染模式
54
+ */
55
+ export declare function textLineRenderMode(ele: TableElement, options: ViewOptions, renderCtx: RenderContenxtType): boolean;
@@ -0,0 +1,363 @@
1
+ import { BlockContainerElement, ElementFactory } from "@/med_editor/framework/element-define";
2
+ import { TableProps } from "@/med_editor/framework/element-props";
3
+ import { ElementUtil } from "@/med_editor/framework/element-util";
4
+ import { MuiltBlockLineRenderObject } from "@/med_editor/framework/render-define";
5
+ import { ParagraphElement } from "../paragraph/p-impl";
6
+ import { TableRowElement } from "./table-row-impl";
7
+ import { TableSplitCell } from "./table-split-cell";
8
+ import { TableUtil } from "./table-util";
9
+ /**
10
+ * 计算表格列
11
+ */
12
+ function calcTableCols(element) {
13
+ const percentCols = [];
14
+ let sum = 0;
15
+ let percentSum = 0;
16
+ for (const col of element.props.cols) {
17
+ if (typeof col.width === 'string') {
18
+ percentCols.push(col);
19
+ percentSum += Number.parseFloat(col.width);
20
+ }
21
+ else {
22
+ sum += col.width;
23
+ }
24
+ }
25
+ const measureRender = element.measureRender;
26
+ const tbWidth = measureRender.rect.maxWidth;
27
+ if (percentCols.length > 0) {
28
+ const remainWidth = tbWidth - sum;
29
+ let remainSum = 0;
30
+ for (const percentCol of percentCols) {
31
+ const percentWidth = Number.parseFloat(percentCol.width.toString());
32
+ percentCol.width = Math.floor(remainWidth * percentWidth / percentSum);
33
+ remainSum += percentCol.width;
34
+ }
35
+ if (remainWidth - remainSum > 0) {
36
+ const colWidth = percentCols[percentCols.length - 1].width;
37
+ percentCols[percentCols.length - 1].width = colWidth + (remainWidth - remainSum);
38
+ }
39
+ }
40
+ const array = [];
41
+ let offset = 0;
42
+ for (let i = 0; i < element.props.cols.length; i++) {
43
+ const width = element.props.cols[i].width;
44
+ array.push({ width, offset });
45
+ offset += width;
46
+ }
47
+ return array;
48
+ }
49
+ export class TableElement extends BlockContainerElement {
50
+ //props: TableProps;
51
+ _actualColsProps;
52
+ constructor() {
53
+ super('tb');
54
+ this.props = new TableProps();
55
+ //this.addPropValueChangedSub(this.props);
56
+ this.addEvent('ElementContextMenu', (evt) => {
57
+ const { selectionState } = evt;
58
+ if (TableUtil.canDeleteTable(selectionState)) {
59
+ evt.menus.push({
60
+ icon: 'DeleteTable', caption: '删除表格', eventObj: {
61
+ onClick: (cevt) => {
62
+ selectionState.clear();
63
+ const prevEle = ElementUtil.getRecursionPrevSiblingElement(this, false, true);
64
+ if (prevEle) {
65
+ selectionState.resetRange(prevEle, -1);
66
+ }
67
+ this.remove();
68
+ this.destroy();
69
+ }
70
+ }
71
+ });
72
+ }
73
+ if (TableUtil.canMergeCells(selectionState)) {
74
+ evt.menus.push({ icon: 'MergeDuplicate', caption: '合并单元格', eventObj: { onClick: (cevt) => { TableUtil.mergeCells(selectionState); } } });
75
+ }
76
+ if (TableUtil.canSplitCell(selectionState)) {
77
+ evt.menus.push({ icon: 'Split', caption: '拆分单元格', eventObj: { onClick: (cevt) => { TableSplitCell.splitCell(selectionState, 0, 2); } } });
78
+ evt.menus.push({ icon: 'Combine', caption: '合并单元格还原', eventObj: { onClick: (cevt) => { TableUtil.restoreCell(selectionState); } } });
79
+ }
80
+ evt.menus.push({ icon: "Insert", caption: '上方插入段落', eventObj: { onClick: (cevt) => { this.parent.addChild(ParagraphElement.createElement(), this.getIndex()); this.refreshView(); } } });
81
+ evt.menus.push({ icon: "Insert", caption: '下方插入段落', eventObj: { onClick: (cevt) => { this.parent.addChild(ParagraphElement.createElement(), this.getIndex() + 1); this.refreshView(); } } });
82
+ evt.menus = removeDuplicatesEvent(evt.menus);
83
+ }, true);
84
+ this.addEvent('ElementKeyDown', (evt) => {
85
+ //console.log('表格ElementKeyDown', evt);
86
+ const sourceEvent = evt.sourceEvent;
87
+ //按下tab键
88
+ if (sourceEvent.keyCode === 9 && !sourceEvent.shiftKey) {
89
+ evt.isCancel = true;
90
+ sourceEvent.preventDefault();
91
+ TableUtil.moveNextCell(evt.selectionState);
92
+ }
93
+ }, true);
94
+ }
95
+ /**
96
+ * 获取实际测量的宽度,将auto、百分比列宽度进行转化为 number 类型
97
+ */
98
+ get actualColsProps() {
99
+ if (!this._actualColsProps) {
100
+ this._actualColsProps = calcTableCols(this);
101
+ }
102
+ return this._actualColsProps;
103
+ }
104
+ getCellWidth(cellIndex) {
105
+ if (cellIndex >= this.actualColsProps.length || cellIndex < 0) {
106
+ return -1;
107
+ }
108
+ return this.actualColsProps[cellIndex].width;
109
+ }
110
+ getCellOffsetX(cellIndex) {
111
+ return this.actualColsProps[cellIndex].offset;
112
+ }
113
+ setCellWidth(cellIndex, width) {
114
+ //this.actualColsProps[index].width = width;
115
+ if (cellIndex >= this.actualColsProps.length || cellIndex < 0) {
116
+ return;
117
+ }
118
+ this.props.cols[cellIndex].width = width;
119
+ }
120
+ /**
121
+ * 插入列的定义
122
+ * @param index
123
+ * @param width
124
+ */
125
+ insertCol(index, width) {
126
+ this.props.cols.splice(index, 0, { width });
127
+ this._actualColsProps = null;
128
+ }
129
+ /**
130
+ * 移除列的定义
131
+ * @param index
132
+ */
133
+ removeCol(index) {
134
+ this.props.cols.splice(index, 1);
135
+ }
136
+ getColsCount() {
137
+ return this.actualColsProps.length;
138
+ }
139
+ clone(data) {
140
+ const clone = new TableElement();
141
+ this.props.clone(clone.props);
142
+ if (data) {
143
+ for (let i = 0; i < this.length; i++) {
144
+ clone.addChild(this.getChild(i).clone(true));
145
+ }
146
+ }
147
+ return clone;
148
+ }
149
+ createRenderObject(options, renderCtx) {
150
+ return new TableRenderObject(this);
151
+ }
152
+ beginMeasure() {
153
+ super.beginMeasure();
154
+ this._actualColsProps = null;
155
+ }
156
+ serialize(options) {
157
+ //this.props.width = this.measureRender?.rect.width as number;
158
+ const props = {
159
+ type: 'tb',
160
+ props: { ...this.props.getSerializeProps(options) }
161
+ };
162
+ props.props.width = this.measureRender?.rect.width;
163
+ return props;
164
+ }
165
+ static createTable(rows, cols) {
166
+ const table = new TableElement();
167
+ const tbProps = new TableProps();
168
+ table.props = tbProps;
169
+ tbProps.border = 'all';
170
+ tbProps.cols = [];
171
+ for (let i = 0; i < cols; i++) {
172
+ tbProps.cols.push({ width: "1" });
173
+ }
174
+ for (let i = 0; i < rows; i++) {
175
+ table.addChild(TableRowElement.createRow(cols));
176
+ }
177
+ return table;
178
+ }
179
+ }
180
+ function removeDuplicatesEvent(events) {
181
+ let arr = [];
182
+ for (let i = events.length - 1; i >= 0; i--) {
183
+ let keys = arr.map(item => item.caption);
184
+ if (!keys.includes(events[i].caption)) {
185
+ arr.unshift(events[i]);
186
+ }
187
+ }
188
+ return arr;
189
+ }
190
+ export class TableRenderObject extends MuiltBlockLineRenderObject {
191
+ setRenderWidth(maxWidth) {
192
+ super.setRenderWidth(maxWidth);
193
+ }
194
+ beginRender(ctx, position) {
195
+ //绘制表格线
196
+ if (this.element.props.border !== 'all') {
197
+ return;
198
+ }
199
+ for (let i = 0; i < this.length; i++) {
200
+ const rowRender = this.getChild(i);
201
+ const rowPos = { x: rowRender.rect.x + position.x, y: rowRender.rect.y + position.y };
202
+ for (let j = 0; j < rowRender.length; j++) {
203
+ const cellRender = rowRender.getChild(j);
204
+ const cellPos = { x: cellRender.rect.x + rowPos.x, y: cellRender.rect.y + rowPos.y };
205
+ //绘制单元格上边框
206
+ if (i === 0) {
207
+ //ctx.contentContext.fillRect(cellPos.x, cellPos.y, cellRender.rect.width, 1);
208
+ ctx.contentContext.fillLines([{ x: cellPos.x, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y }]);
209
+ //this.drawLine(ctx, { x: cellPos.x, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y });
210
+ }
211
+ //绘制左边框
212
+ if (j === 0) {
213
+ //ctx.contentContext.fillRect(cellPos.x, cellPos.y, 1, cellRender.rect.height);
214
+ ctx.contentContext.fillLines([{ x: cellPos.x, y: cellPos.y }, { x: cellPos.x, y: cellPos.y + cellRender.rect.height }]);
215
+ //this.drawLine(ctx, { x: cellPos.x, y: cellPos.y }, { x: cellPos.x, y: cellPos.y + cellRender.rect.height });
216
+ }
217
+ //绘制右边框
218
+ //ctx.contentContext.fillRect(cellPos.x + cellRender.rect.width, cellPos.y, 1, cellRender.rect.height);
219
+ ctx.contentContext.fillLines([{ x: cellPos.x + cellRender.rect.width, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height }]);
220
+ //this.drawLine(ctx, { x: cellPos.x + cellRender.rect.width, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height });
221
+ //绘制下边框
222
+ //ctx.contentContext.fillRect(cellPos.x, cellPos.y + cellRender.rect.height, cellRender.rect.width, 1);
223
+ ctx.contentContext.fillLines([{ x: cellPos.x, y: cellPos.y + cellRender.rect.height }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height }]);
224
+ //this.drawLine(ctx, { x: cellPos.x, y: cellPos.y + cellRender.rect.height }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height });
225
+ //cellRender.beginRender(ctx, { x: position.x + cellRender.offsetX, y: position.y + cellRender.offsetY });
226
+ }
227
+ }
228
+ }
229
+ endRender(ctx, position) {
230
+ }
231
+ clone() {
232
+ const cloneRender = new TableRenderObject(this.element);
233
+ cloneRender.rect = ElementUtil.cloneRect(this.rect);
234
+ for (let i = 0; i < this.length; i++) {
235
+ cloneRender.addChild(this.getChild(i).clone());
236
+ }
237
+ return cloneRender;
238
+ }
239
+ }
240
+ export class TableFactory extends ElementFactory {
241
+ match(type) {
242
+ return type === 'tb';
243
+ }
244
+ createElement(data, renderCtx) {
245
+ const props = data.props;
246
+ const tb = new TableElement();
247
+ const cols = props.cols;
248
+ const tbProps = tb.props;
249
+ tbProps.border = props.border || 'all';
250
+ tbProps.cols = [];
251
+ for (const col of cols) {
252
+ tbProps.cols.push({
253
+ width: col.width
254
+ });
255
+ }
256
+ tb.props = tbProps;
257
+ return tb;
258
+ }
259
+ }
260
+ /**
261
+ * 行-表格渲染模式
262
+ */
263
+ export function textLineRenderMode(ele, options, renderCtx) {
264
+ const tb = ele.measureRender;
265
+ const rows = [];
266
+ for (let i = 0; i < tb.length; i++) {
267
+ const row = tb.getChild(i);
268
+ //表格头不做处理
269
+ if (row.element.props.headerRow) {
270
+ continue;
271
+ }
272
+ rows.push(row);
273
+ }
274
+ for (let i = 0; i < rows.length; i++) {
275
+ const row = rows[i];
276
+ //获取当前行的文字行数
277
+ const maxLinesCount = getRowMaxTextLines(row);
278
+ if (maxLinesCount > 1) {
279
+ for (let j = 1; j < maxLinesCount; j++) {
280
+ const newRow = row.element.createRenderObject();
281
+ newRow.rect = ElementUtil.cloneRect(row.rect);
282
+ tb.insertChild(newRow, row.getIndex() + 1);
283
+ //复制行文字到新行中
284
+ for (let k = 0; k < row.length; k++) {
285
+ const cell = row.getChild(k);
286
+ const newCell = cell.element.createRenderObject(options, renderCtx);
287
+ newCell.rect = ElementUtil.cloneRect(cell.rect);
288
+ if (newCell) {
289
+ newRow.addChild(newCell);
290
+ }
291
+ }
292
+ }
293
+ }
294
+ splitTextlineToNewRow(row, maxLinesCount, options, renderCtx);
295
+ }
296
+ ElementUtil.remeasure(tb);
297
+ return true;
298
+ }
299
+ /**
300
+ * 获取当前行的文字行数
301
+ * @param row
302
+ * @returns
303
+ */
304
+ function getRowMaxTextLines(row) {
305
+ let count = 0;
306
+ for (let j = 0; j < row.length; j++) {
307
+ const cell = row.getChild(j);
308
+ let cellMaxLines = 0;
309
+ for (let k = 0; k < cell.length; k++) {
310
+ const paraRender = cell.getChild(k);
311
+ cellMaxLines += paraRender.length;
312
+ }
313
+ count = cellMaxLines > count ? cellMaxLines : count;
314
+ }
315
+ return count;
316
+ }
317
+ /**
318
+ * 将多行文本移动到新行中
319
+ * @param row
320
+ * @param maxLinesCount
321
+ * @returns
322
+ */
323
+ function splitTextlineToNewRow(row, maxLinesCount, options, renderCtx) {
324
+ if (maxLinesCount === 1) {
325
+ return;
326
+ }
327
+ for (let i = 0; i < row.length; i++) {
328
+ const cell = row.getChild(i);
329
+ const paraLines = ElementUtil.getCellParaLines(cell);
330
+ if (paraLines.length === 1) {
331
+ continue;
332
+ }
333
+ for (let j = 1; j < paraLines.length; j++) {
334
+ const outterLineRect = paraLines[j];
335
+ const paraRender = outterLineRect.parent;
336
+ const newParaRender = paraRender.element.createRenderObject(options, renderCtx);
337
+ newParaRender.rect = ElementUtil.cloneRect(paraRender.rect);
338
+ const newOutterLineRect = outterLineRect.clone();
339
+ newOutterLineRect.rect = ElementUtil.cloneRect(outterLineRect.rect);
340
+ newParaRender.addChild(newOutterLineRect);
341
+ paraRender.removeChild(outterLineRect);
342
+ ElementUtil.remeasure(paraRender);
343
+ if (paraRender.length === 0) {
344
+ cell.removeChild(paraRender);
345
+ }
346
+ const splitRow = row.parent.getChild(row.getIndex() + j);
347
+ const splitCell = splitRow.getChild(i);
348
+ splitCell.addChild(newParaRender);
349
+ ElementUtil.remeasure(newParaRender);
350
+ }
351
+ }
352
+ const tb = row.parent;
353
+ const rowIndex = row.getIndex();
354
+ for (let i = 0; i < maxLinesCount; i++) {
355
+ const row = tb.getChild(rowIndex + i);
356
+ for (let j = 0; j < row.length; j++) {
357
+ const cell = row.getChild(j);
358
+ ElementUtil.remeasure(cell);
359
+ }
360
+ ElementUtil.remeasure(row);
361
+ }
362
+ }
363
+ //# sourceMappingURL=table-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-impl.js","sourceRoot":"","sources":["../../../../src/med_editor/framework/impl/table/table-impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BlockContainerElement, Element, ElementFactory, readElementProps, SerializeProps, ViewOptions } from "@/med_editor/framework/element-define";
2
+ import { TableRowProps } from "@/med_editor/framework/element-props";
3
+ import { RenderContenxtType } from "@/med_editor/framework/render-context";
4
+ import { MuiltBlockLineRenderObject, RenderObject } from "@/med_editor/framework/render-define";
5
+ export declare class TableRowElement extends BlockContainerElement<TableRowProps> {
6
+ constructor();
7
+ createRenderObject(): RenderObject;
8
+ serialize(viewOptions: ViewOptions): SerializeProps;
9
+ clone(data: boolean): Element;
10
+ static createRow(cols: number): TableRowElement;
11
+ }
12
+ export declare class TableRowRenderObject extends MuiltBlockLineRenderObject<TableRowElement> {
13
+ beginRender(ctx: RenderContenxtType, position: {
14
+ x: number;
15
+ y: number;
16
+ }): void;
17
+ endRender(ctx: RenderContenxtType, position: {
18
+ x: number;
19
+ y: number;
20
+ }): void;
21
+ clone(): RenderObject;
22
+ }
23
+ export declare class TableRowFactory extends ElementFactory<TableRowProps> {
24
+ match(type: string): boolean;
25
+ createElement(data: readElementProps<TableRowProps>, renderCtx: RenderContenxtType): Element;
26
+ }
@@ -0,0 +1,75 @@
1
+ import { BlockContainerElement, ElementFactory, ModifyFlag } from "@/med_editor/framework/element-define";
2
+ import { TableRowProps } from "@/med_editor/framework/element-props";
3
+ import { ElementUtil } from "@/med_editor/framework/element-util";
4
+ import { MuiltBlockLineRenderObject } from "@/med_editor/framework/render-define";
5
+ import { TableCellElement } from "./table-cell-impl";
6
+ export class TableRowElement extends BlockContainerElement {
7
+ //props: TableRowProps;
8
+ constructor() {
9
+ super('tr');
10
+ this.props = new TableRowProps();
11
+ //在差异更新中,由于行内单元格存在合并行的情况,需要将当前行内存在合并的单元格,将其修改标志改为修改
12
+ const changeSub = this.onChangeSubject.subscribe(() => {
13
+ if (this.modifyFlag === ModifyFlag.Track) {
14
+ //this.checkRowModifyState();
15
+ this.pubOnChange('to-child');
16
+ }
17
+ });
18
+ this.addsubscribe(this, changeSub);
19
+ }
20
+ createRenderObject() {
21
+ return new TableRowRenderObject(this);
22
+ }
23
+ serialize(viewOptions) {
24
+ return {
25
+ type: 'tr',
26
+ props: {
27
+ ...this.props?.getSerializeProps(viewOptions)
28
+ }
29
+ };
30
+ }
31
+ clone(data) {
32
+ const clone = new TableRowElement();
33
+ this.props.clone(clone.props);
34
+ if (data) {
35
+ for (let i = 0; i < this.length; i++) {
36
+ clone.addChild(this.getChild(i).clone(true));
37
+ }
38
+ }
39
+ return clone;
40
+ }
41
+ static createRow(cols) {
42
+ const tr = new TableRowElement();
43
+ for (let i = 0; i < cols; i++) {
44
+ tr.addChild(TableCellElement.createCell());
45
+ }
46
+ return tr;
47
+ }
48
+ }
49
+ export class TableRowRenderObject extends MuiltBlockLineRenderObject {
50
+ beginRender(ctx, position) {
51
+ }
52
+ endRender(ctx, position) {
53
+ }
54
+ clone() {
55
+ const cloneRender = new TableRowRenderObject(this.element);
56
+ cloneRender.rect = ElementUtil.cloneRect(this.rect);
57
+ for (let i = 0; i < this.length; i++) {
58
+ cloneRender.addChild(this.getChild(i).clone());
59
+ }
60
+ return cloneRender;
61
+ }
62
+ }
63
+ export class TableRowFactory extends ElementFactory {
64
+ match(type) {
65
+ return type === 'tr';
66
+ }
67
+ createElement(data, renderCtx) {
68
+ const props = data.props;
69
+ const tr = new TableRowElement();
70
+ tr.props.minHeight = props?.minHeight ?? -1;
71
+ tr.props.headerRow = props?.headerRow;
72
+ return tr;
73
+ }
74
+ }
75
+ //# sourceMappingURL=table-row-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-row-impl.js","sourceRoot":"","sources":["../../../../src/med_editor/framework/impl/table/table-row-impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface ColumnPartOffset extends ColumnPart {
2
+ offset: number;
3
+ }
4
+ export interface ColumnPart {
5
+ index: number;
6
+ width: number;
7
+ }
8
+ export interface ColumnPatch {
9
+ type: 'modify' | 'insert';
10
+ data: ColumnPart;
11
+ }
12
+ export declare class ColumnPatchUtil {
13
+ static getPatchPacks(cols: Array<ColumnPart>, splitCols: Array<ColumnPart>): [Array<{
14
+ part: ColumnPartOffset;
15
+ patchs: Array<ColumnPatch>;
16
+ }>, Array<Array<ColumnPart>>];
17
+ private static getColumn;
18
+ private static getSplitCols;
19
+ private static getLinePointMap;
20
+ }
@@ -0,0 +1,89 @@
1
+ export class ColumnPatchUtil {
2
+ static getPatchPacks(cols, splitCols) {
3
+ const oldLinePointMap = this.getLinePointMap(cols);
4
+ //要分割的列坐标
5
+ const newLinePointMap = this.getLinePointMap(splitCols);
6
+ const resArray = new Set();
7
+ const allPointMap = oldLinePointMap.concat(newLinePointMap);
8
+ for (let i = 0; i < allPointMap.length; i++) {
9
+ const part = allPointMap[i];
10
+ resArray.add(part.offset);
11
+ resArray.add(part.offset + part.width);
12
+ }
13
+ const points = Array.from(resArray).sort((first, second) => first - second);
14
+ const patchs = [];
15
+ //获取其他行的拆分补丁
16
+ for (let i = 0; i < points.length - 1; i++) {
17
+ const partStartOffset = points[i];
18
+ const partEndOffset = points[i + 1];
19
+ const joinPart = oldLinePointMap.find(item => {
20
+ const startOffset = item.offset;
21
+ const endOffset = item.offset + item.width;
22
+ return ((startOffset >= partStartOffset && startOffset < partEndOffset)
23
+ ||
24
+ (endOffset > partStartOffset && endOffset <= partEndOffset)
25
+ ||
26
+ (startOffset <= partStartOffset && endOffset >= partEndOffset));
27
+ });
28
+ if (joinPart) {
29
+ if (joinPart.offset === partStartOffset && joinPart.offset + joinPart.width === partEndOffset) {
30
+ continue;
31
+ }
32
+ const patch = patchs.find(item => item.part === joinPart);
33
+ if (patch) {
34
+ patch.patchs.push({ type: 'insert', data: { width: partEndOffset - partStartOffset, index: joinPart.index } });
35
+ }
36
+ else {
37
+ patchs.push({
38
+ part: joinPart,
39
+ patchs: [{ type: 'modify', data: { width: partEndOffset - partStartOffset, index: joinPart.index } }]
40
+ });
41
+ }
42
+ }
43
+ }
44
+ //获取当前行的拆分补丁
45
+ const currRowPaths = [];
46
+ const allColumnMap = this.getLinePointMap(this.getColumn(points));
47
+ for (let i = 0; i < newLinePointMap.length; i++) {
48
+ const partStartOffset = newLinePointMap[i].offset;
49
+ const partEndOffset = newLinePointMap[i].offset + newLinePointMap[i].width;
50
+ const joinParts = allColumnMap.filter(item => {
51
+ const startOffset = item.offset;
52
+ const endOffset = item.offset + item.width;
53
+ return ((startOffset >= partStartOffset && startOffset < partEndOffset)
54
+ ||
55
+ (endOffset > partStartOffset && endOffset <= partEndOffset)
56
+ ||
57
+ (startOffset <= partStartOffset && endOffset >= partEndOffset));
58
+ });
59
+ currRowPaths.push(joinParts);
60
+ }
61
+ return [patchs, currRowPaths];
62
+ }
63
+ static getColumn(points) {
64
+ const items = [];
65
+ for (let index = 0; index < points.length - 1; index++) {
66
+ items.push({ index, width: points[index + 1] - points[index] });
67
+ }
68
+ return items;
69
+ }
70
+ static getSplitCols(width, cols) {
71
+ const items = [];
72
+ for (let i = 0; i < cols; i++) {
73
+ items.push({ width: Math.floor(width / cols), index: i });
74
+ }
75
+ items[items.length - 1].width += width - items.reduce((prev, curr) => prev + curr.width, 0);
76
+ return items;
77
+ }
78
+ static getLinePointMap(hMergeCols) {
79
+ const linePointMap = [];
80
+ let x = 0;
81
+ for (let i = 0; i < hMergeCols.length; i++) {
82
+ const col = hMergeCols[i];
83
+ linePointMap.push({ index: col.index, width: col.width, offset: x });
84
+ x += col.width;
85
+ }
86
+ return linePointMap;
87
+ }
88
+ }
89
+ //# sourceMappingURL=table-split-cell-patch.js.map