@hailin-zheng/editor-core 1.0.15 → 1.0.22

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 (149) hide show
  1. package/README.md +1613 -0
  2. package/lib/framework/element-props.d.ts +2 -2
  3. package/lib/framework/impl/index.d.ts +36 -0
  4. package/lib/index.d.ts +34 -0
  5. package/lib/index.js +15672 -0
  6. package/lib/texteditor.d.ts +3 -3
  7. package/package.json +27 -26
  8. package/lib/doc-ruler.js +0 -313
  9. package/lib/doc-ruler.js.map +0 -1
  10. package/lib/framework/common-util.js +0 -178
  11. package/lib/framework/common-util.js.map +0 -1
  12. package/lib/framework/document-change.js +0 -1342
  13. package/lib/framework/document-change.js.map +0 -1
  14. package/lib/framework/document-combine.js +0 -40
  15. package/lib/framework/document-combine.js.map +0 -1
  16. package/lib/framework/document-comment.js +0 -148
  17. package/lib/framework/document-comment.js.map +0 -1
  18. package/lib/framework/document-context.js +0 -330
  19. package/lib/framework/document-context.js.map +0 -1
  20. package/lib/framework/document-eval-func.js +0 -48
  21. package/lib/framework/document-eval-func.js.map +0 -1
  22. package/lib/framework/document-event.js +0 -1054
  23. package/lib/framework/document-event.js.map +0 -1
  24. package/lib/framework/document-history.js +0 -65
  25. package/lib/framework/document-history.js.map +0 -1
  26. package/lib/framework/document-images-loader.js +0 -66
  27. package/lib/framework/document-images-loader.js.map +0 -1
  28. package/lib/framework/document-input-cursor.js +0 -239
  29. package/lib/framework/document-input-cursor.js.map +0 -1
  30. package/lib/framework/document-paint.js +0 -103
  31. package/lib/framework/document-paint.js.map +0 -1
  32. package/lib/framework/document-print-offscreen.js +0 -128
  33. package/lib/framework/document-print-offscreen.js.map +0 -1
  34. package/lib/framework/document-print.js +0 -203
  35. package/lib/framework/document-print.js.map +0 -1
  36. package/lib/framework/document-segmenter.js +0 -106
  37. package/lib/framework/document-segmenter.js.map +0 -1
  38. package/lib/framework/document-selection.js +0 -358
  39. package/lib/framework/document-selection.js.map +0 -1
  40. package/lib/framework/document-template.js +0 -20
  41. package/lib/framework/document-template.js.map +0 -1
  42. package/lib/framework/document-textline-mode.js +0 -30
  43. package/lib/framework/document-textline-mode.js.map +0 -1
  44. package/lib/framework/element-define.js +0 -579
  45. package/lib/framework/element-define.js.map +0 -1
  46. package/lib/framework/element-event-define.js +0 -108
  47. package/lib/framework/element-event-define.js.map +0 -1
  48. package/lib/framework/element-measure.js +0 -551
  49. package/lib/framework/element-measure.js.map +0 -1
  50. package/lib/framework/element-paint.js +0 -170
  51. package/lib/framework/element-paint.js.map +0 -1
  52. package/lib/framework/element-props.js +0 -809
  53. package/lib/framework/element-props.js.map +0 -1
  54. package/lib/framework/element-reader.js +0 -151
  55. package/lib/framework/element-reader.js.map +0 -1
  56. package/lib/framework/element-render-cut.js +0 -449
  57. package/lib/framework/element-render-cut.js.map +0 -1
  58. package/lib/framework/element-serialize.js +0 -113
  59. package/lib/framework/element-serialize.js.map +0 -1
  60. package/lib/framework/element-util.js +0 -1463
  61. package/lib/framework/element-util.js.map +0 -1
  62. package/lib/framework/impl/checkbox/checkbox-impl.js +0 -64
  63. package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
  64. package/lib/framework/impl/comments/comment-content-impl.js +0 -105
  65. package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
  66. package/lib/framework/impl/comments/comment-element-impl.js +0 -62
  67. package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
  68. package/lib/framework/impl/comments/comments-container-impl.js +0 -62
  69. package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
  70. package/lib/framework/impl/comments/comments-util.js +0 -67
  71. package/lib/framework/impl/comments/comments-util.js.map +0 -1
  72. package/lib/framework/impl/comments/validate-msg-impl.js +0 -83
  73. package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
  74. package/lib/framework/impl/data-element/data-decorate-impl.js +0 -91
  75. package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
  76. package/lib/framework/impl/data-element/data-element-barcode.js +0 -115
  77. package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
  78. package/lib/framework/impl/data-element/data-element-base-impl.js +0 -205
  79. package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
  80. package/lib/framework/impl/data-element/data-element-check-impl.js +0 -133
  81. package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
  82. package/lib/framework/impl/data-element/data-element-date-impl.js +0 -111
  83. package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
  84. package/lib/framework/impl/data-element/data-element-group-impl.js +0 -130
  85. package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
  86. package/lib/framework/impl/data-element/data-element-image-impl.js +0 -137
  87. package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
  88. package/lib/framework/impl/data-element/data-element-list-impl.js +0 -131
  89. package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
  90. package/lib/framework/impl/data-element/data-element-text-impl.js +0 -103
  91. package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
  92. package/lib/framework/impl/decorate/fill-null-space-imple.js +0 -43
  93. package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
  94. package/lib/framework/impl/document/doc-body-impl.js +0 -79
  95. package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
  96. package/lib/framework/impl/document/doc-body-part-impl.js +0 -94
  97. package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
  98. package/lib/framework/impl/document/doc-container-impl.js +0 -21
  99. package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
  100. package/lib/framework/impl/document/doc-footer-impl.js +0 -77
  101. package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
  102. package/lib/framework/impl/document/doc-header-impl.js +0 -83
  103. package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
  104. package/lib/framework/impl/document/doc-impl.js +0 -209
  105. package/lib/framework/impl/document/doc-impl.js.map +0 -1
  106. package/lib/framework/impl/media-formula/menstrual-history.js +0 -153
  107. package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
  108. package/lib/framework/impl/paragraph/p-impl.js +0 -156
  109. package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
  110. package/lib/framework/impl/picture/image-impl.js +0 -124
  111. package/lib/framework/impl/picture/image-impl.js.map +0 -1
  112. package/lib/framework/impl/radio/radio-impl.js +0 -72
  113. package/lib/framework/impl/radio/radio-impl.js.map +0 -1
  114. package/lib/framework/impl/symbol/br-symbol-impl.js +0 -54
  115. package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
  116. package/lib/framework/impl/symbol/p-symbol-impl.js +0 -54
  117. package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
  118. package/lib/framework/impl/table/table-cell-impl.js +0 -145
  119. package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
  120. package/lib/framework/impl/table/table-impl.js +0 -363
  121. package/lib/framework/impl/table/table-impl.js.map +0 -1
  122. package/lib/framework/impl/table/table-row-impl.js +0 -75
  123. package/lib/framework/impl/table/table-row-impl.js.map +0 -1
  124. package/lib/framework/impl/table/table-split-cell-patch.js +0 -89
  125. package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
  126. package/lib/framework/impl/table/table-split-cell.js +0 -464
  127. package/lib/framework/impl/table/table-split-cell.js.map +0 -1
  128. package/lib/framework/impl/table/table-util.js +0 -678
  129. package/lib/framework/impl/table/table-util.js.map +0 -1
  130. package/lib/framework/impl/text/text-impl.js +0 -149
  131. package/lib/framework/impl/text/text-impl.js.map +0 -1
  132. package/lib/framework/impl/text/track-run-impl.js +0 -112
  133. package/lib/framework/impl/text/track-run-impl.js.map +0 -1
  134. package/lib/framework/notify.js +0 -116
  135. package/lib/framework/notify.js.map +0 -1
  136. package/lib/framework/range-util.js +0 -312
  137. package/lib/framework/range-util.js.map +0 -1
  138. package/lib/framework/render-context.js +0 -384
  139. package/lib/framework/render-context.js.map +0 -1
  140. package/lib/framework/render-define.js +0 -195
  141. package/lib/framework/render-define.js.map +0 -1
  142. package/lib/framework/selection-overlays.js +0 -124
  143. package/lib/framework/selection-overlays.js.map +0 -1
  144. package/lib/texteditor.js +0 -913
  145. package/lib/texteditor.js.map +0 -1
  146. package/lib/util/subject.js +0 -88
  147. package/lib/util/subject.js.map +0 -1
  148. package/lib/util/table-bind.js +0 -6
  149. package/lib/util/table-bind.js.map +0 -1
@@ -1,124 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-overlays.js","sourceRoot":"lib/","sources":["framework/selection-overlays.ts"],"names":[],"mappings":"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","sourcesContent":["import { SelectionState } from \"./document-selection\"\nimport { ElementUtil } from \"./element-util\";\nimport { BranchElement, Element, LeafElement, SelectionContentRange } from \"./element-define\";\nimport { RangeUtil } from \"./range-util\";\nimport { TableElement } from \"./impl/table/table-impl\";\nimport { TableCellElement } from \"./impl/table/table-cell-impl\";\n\n\n\n\n/**\n * 用于处理选区拖蓝\n */\nexport class SelectionOverlays {\n private selectionRange!: SelectionContentRange | null;\n selectedSets: Map<Element, SelectionContentRange> = new Map();\n constructor(private selectionState: SelectionState) { }\n\n getSelectionTreeData(): void {\n let { ancestorCommonControl, startControl, startOffset, endControl, endOffset, collapsed } = this.selectionState;\n this.selectedSets.clear();\n if (this.selectionRange) {\n this.selectionRange.selectedChildren.length = 0;\n }\n this.selectionRange = null;\n if (!startControl || !endControl || !ancestorCommonControl) {\n //this.selectionRange?.selectedChildren.length=0;\n this.selectionState.selectedRange = null;\n return;\n }\n if (collapsed) {\n const commonRange = RangeUtil.getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl);\n this.selectionState.selectedRange = commonRange;\n this.selectedSets.clear();\n return;\n }\n const fixStartElement = this.fixStartSelectionElement(startControl, startOffset, ancestorCommonControl);\n startControl = fixStartElement.element;\n startOffset = fixStartElement.offset;\n const fixEndElement = this.fixEndSelectionElement(endControl, endOffset, ancestorCommonControl);\n endControl = fixEndElement.element;\n endOffset = fixEndElement.offset;\n const commonRange = RangeUtil.getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl);\n //console.log(commonRange);\n this.selectionRange = commonRange;\n this.convertSelectRangeToSet();\n this.selectionState.selectedRange = commonRange;\n }\n\n private convertSelectRangeToSet(): void {\n this.selectedSets.clear();\n if (this.selectionRange) {\n SelectionOverlays.addToSets(this.selectionRange, this.selectedSets);\n }\n }\n\n static addToSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>): void {\n set.set(range.target, range);\n for (let i = 0; i < range.selectedChildren.length; i++) {\n //单元格全部选中效果,单元格整个拖蓝即可\n if (range.isFullSelected && range.target.type === 'tbc') {\n continue;\n }\n this.addToSets(range.selectedChildren[i], set);\n }\n }\n\n /**\n * 添加到批注集合\n * @param range \n * @param set \n */\n static addToCommentSets(range: SelectionContentRange, set: Map<Element, SelectionContentRange>): void {\n set.set(range.target, range);\n for (let i = 0; i < range.selectedChildren.length; i++) {\n this.addToCommentSets(range.selectedChildren[i], set);\n }\n }\n\n /**\n * 修正开始选区内容\n * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素\n */\n private fixStartSelectionElement(element: LeafElement, offset: number, ancestorCommonControl: BranchElement): { element: LeafElement, offset: number } {\n if (!(ancestorCommonControl instanceof TableElement)) {\n const lookupParentCell = ElementUtil.getParentByType(element, TableCellElement);\n if (lookupParentCell) {\n if (!lookupParentCell.parent || !lookupParentCell.parent.parent) {\n }\n const lookupParentTbIndex = ElementUtil.getControlIndex(lookupParentCell.parent.parent);\n const ancestorCommonControlIndex = ElementUtil.getControlIndex(ancestorCommonControl);\n if (ancestorCommonControlIndex < lookupParentTbIndex) {\n const rowFirstLeafElement = ElementUtil.getFirstLeafElement(lookupParentCell.parent);\n if (!rowFirstLeafElement) {\n throw new Error('当前元素处于表格内元素,未能定位到当前单元格首个元素');\n }\n return {\n element: rowFirstLeafElement,\n offset: 0\n };\n }\n }\n }\n return { element, offset };\n }\n\n /**\n * 修正开始选区内容\n * 1.如果当前选区开始于表格内容,结束选区位于表格外,则需要开始选区内容重定位到单元格第一个元素\n */\n private fixEndSelectionElement(element: LeafElement, offset: number, ancestorCommonControl: BranchElement): { element: LeafElement, offset: number } {\n if (!(ancestorCommonControl instanceof TableElement)) {\n const lookupParentCell = ElementUtil.getParentByType(element, TableCellElement);\n if (lookupParentCell) {\n const lookupParentTbIndex = ElementUtil.getControlIndex(lookupParentCell.parent.parent);\n const ancestorCommonControlIndex = ElementUtil.getControlIndex(ancestorCommonControl);\n if (ancestorCommonControlIndex < lookupParentTbIndex) {\n const rowLastLeafElement = ElementUtil.getLastLeafElement(lookupParentCell.parent);\n if (!rowLastLeafElement) {\n const rowLastLeafElement = ElementUtil.getLastLeafElement(lookupParentCell.parent);\n throw new Error('当前元素处于表格内元素,未能定位到当前单元格首个元素');\n }\n return {\n element: rowLastLeafElement,\n offset: 1\n };\n }\n }\n }\n return { element, offset };\n }\n\n}"]}