@ckeditor/ckeditor5-table 40.0.0 → 40.2.0

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 (171) hide show
  1. package/CHANGELOG.md +15 -15
  2. package/LICENSE.md +3 -3
  3. package/build/table.js +1 -1
  4. package/build/translations/fi.js +1 -1
  5. package/lang/translations/fi.po +3 -3
  6. package/package.json +2 -2
  7. package/src/augmentation.d.ts +76 -76
  8. package/src/augmentation.js +5 -5
  9. package/src/commands/insertcolumncommand.d.ts +55 -55
  10. package/src/commands/insertcolumncommand.js +67 -67
  11. package/src/commands/insertrowcommand.d.ts +54 -54
  12. package/src/commands/insertrowcommand.js +66 -66
  13. package/src/commands/inserttablecommand.d.ts +44 -44
  14. package/src/commands/inserttablecommand.js +69 -69
  15. package/src/commands/mergecellcommand.d.ts +68 -68
  16. package/src/commands/mergecellcommand.js +198 -198
  17. package/src/commands/mergecellscommand.d.ts +28 -28
  18. package/src/commands/mergecellscommand.js +94 -94
  19. package/src/commands/removecolumncommand.d.ts +29 -29
  20. package/src/commands/removecolumncommand.js +109 -109
  21. package/src/commands/removerowcommand.d.ts +29 -29
  22. package/src/commands/removerowcommand.js +82 -82
  23. package/src/commands/selectcolumncommand.d.ts +33 -33
  24. package/src/commands/selectcolumncommand.js +60 -60
  25. package/src/commands/selectrowcommand.d.ts +33 -33
  26. package/src/commands/selectrowcommand.js +56 -56
  27. package/src/commands/setheadercolumncommand.d.ts +50 -50
  28. package/src/commands/setheadercolumncommand.js +71 -71
  29. package/src/commands/setheaderrowcommand.d.ts +53 -53
  30. package/src/commands/setheaderrowcommand.js +79 -79
  31. package/src/commands/splitcellcommand.d.ts +43 -43
  32. package/src/commands/splitcellcommand.js +54 -54
  33. package/src/converters/downcast.d.ts +63 -63
  34. package/src/converters/downcast.js +146 -146
  35. package/src/converters/table-caption-post-fixer.d.ts +20 -20
  36. package/src/converters/table-caption-post-fixer.js +53 -53
  37. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -32
  38. package/src/converters/table-cell-paragraph-post-fixer.js +107 -107
  39. package/src/converters/table-cell-refresh-handler.d.ts +18 -18
  40. package/src/converters/table-cell-refresh-handler.js +45 -45
  41. package/src/converters/table-headings-refresh-handler.d.ts +17 -17
  42. package/src/converters/table-headings-refresh-handler.js +49 -49
  43. package/src/converters/table-layout-post-fixer.d.ts +226 -226
  44. package/src/converters/table-layout-post-fixer.js +367 -367
  45. package/src/converters/tableproperties.d.ts +54 -54
  46. package/src/converters/tableproperties.js +159 -159
  47. package/src/converters/upcasttable.d.ts +49 -49
  48. package/src/converters/upcasttable.js +243 -243
  49. package/src/index.d.ts +60 -60
  50. package/src/index.js +30 -30
  51. package/src/plaintableoutput.d.ts +26 -26
  52. package/src/plaintableoutput.js +123 -123
  53. package/src/table.d.ts +40 -40
  54. package/src/table.js +44 -44
  55. package/src/tablecaption/tablecaptionediting.d.ts +63 -63
  56. package/src/tablecaption/tablecaptionediting.js +122 -122
  57. package/src/tablecaption/tablecaptionui.d.ts +21 -21
  58. package/src/tablecaption/tablecaptionui.js +57 -57
  59. package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -68
  60. package/src/tablecaption/toggletablecaptioncommand.js +105 -104
  61. package/src/tablecaption/utils.d.ts +38 -42
  62. package/src/tablecaption/utils.js +57 -67
  63. package/src/tablecaption.d.ts +24 -24
  64. package/src/tablecaption.js +28 -28
  65. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -32
  66. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +30 -30
  67. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -37
  68. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +44 -44
  69. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -37
  70. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +44 -44
  71. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -51
  72. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +64 -64
  73. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -46
  74. package/src/tablecellproperties/commands/tablecellheightcommand.js +51 -51
  75. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -32
  76. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +30 -30
  77. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -51
  78. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +64 -64
  79. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -62
  80. package/src/tablecellproperties/commands/tablecellpropertycommand.js +92 -92
  81. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -40
  82. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +38 -38
  83. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +43 -43
  84. package/src/tablecellproperties/tablecellpropertiesediting.js +241 -241
  85. package/src/tablecellproperties/tablecellpropertiesui.d.ts +112 -112
  86. package/src/tablecellproperties/tablecellpropertiesui.js +330 -330
  87. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +228 -228
  88. package/src/tablecellproperties/ui/tablecellpropertiesview.js +548 -548
  89. package/src/tablecellproperties.d.ts +30 -30
  90. package/src/tablecellproperties.js +34 -34
  91. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -46
  92. package/src/tablecellwidth/commands/tablecellwidthcommand.js +51 -51
  93. package/src/tablecellwidth/tablecellwidthediting.d.ts +29 -29
  94. package/src/tablecellwidth/tablecellwidthediting.js +45 -45
  95. package/src/tableclipboard.d.ts +65 -65
  96. package/src/tableclipboard.js +450 -450
  97. package/src/tablecolumnresize/constants.d.ts +20 -20
  98. package/src/tablecolumnresize/constants.js +20 -20
  99. package/src/tablecolumnresize/converters.d.ts +18 -18
  100. package/src/tablecolumnresize/converters.js +46 -46
  101. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +139 -139
  102. package/src/tablecolumnresize/tablecolumnresizeediting.js +583 -583
  103. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -38
  104. package/src/tablecolumnresize/tablewidthscommand.js +61 -61
  105. package/src/tablecolumnresize/utils.d.ts +148 -148
  106. package/src/tablecolumnresize/utils.js +358 -358
  107. package/src/tablecolumnresize.d.ts +26 -26
  108. package/src/tablecolumnresize.js +30 -30
  109. package/src/tableconfig.d.ts +343 -343
  110. package/src/tableconfig.js +5 -5
  111. package/src/tableediting.d.ts +98 -98
  112. package/src/tableediting.js +191 -191
  113. package/src/tablekeyboard.d.ts +68 -68
  114. package/src/tablekeyboard.js +279 -279
  115. package/src/tablemouse/mouseeventsobserver.d.ts +62 -62
  116. package/src/tablemouse/mouseeventsobserver.js +35 -35
  117. package/src/tablemouse.d.ts +48 -48
  118. package/src/tablemouse.js +172 -172
  119. package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -32
  120. package/src/tableproperties/commands/tablealignmentcommand.js +30 -30
  121. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -32
  122. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +30 -30
  123. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -37
  124. package/src/tableproperties/commands/tablebordercolorcommand.js +44 -44
  125. package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -37
  126. package/src/tableproperties/commands/tableborderstylecommand.js +44 -44
  127. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -51
  128. package/src/tableproperties/commands/tableborderwidthcommand.js +64 -64
  129. package/src/tableproperties/commands/tableheightcommand.d.ts +46 -46
  130. package/src/tableproperties/commands/tableheightcommand.js +54 -54
  131. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -61
  132. package/src/tableproperties/commands/tablepropertycommand.js +81 -80
  133. package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -46
  134. package/src/tableproperties/commands/tablewidthcommand.js +54 -54
  135. package/src/tableproperties/tablepropertiesediting.d.ts +40 -40
  136. package/src/tableproperties/tablepropertiesediting.js +206 -206
  137. package/src/tableproperties/tablepropertiesui.d.ts +114 -114
  138. package/src/tableproperties/tablepropertiesui.js +321 -321
  139. package/src/tableproperties/ui/tablepropertiesview.d.ts +207 -207
  140. package/src/tableproperties/ui/tablepropertiesview.js +466 -466
  141. package/src/tableproperties.d.ts +30 -30
  142. package/src/tableproperties.js +34 -34
  143. package/src/tableselection.d.ts +107 -107
  144. package/src/tableselection.js +297 -297
  145. package/src/tabletoolbar.d.ts +32 -32
  146. package/src/tabletoolbar.js +57 -57
  147. package/src/tableui.d.ts +53 -53
  148. package/src/tableui.js +309 -309
  149. package/src/tableutils.d.ts +448 -448
  150. package/src/tableutils.js +1055 -1055
  151. package/src/tablewalker.d.ts +362 -362
  152. package/src/tablewalker.js +393 -393
  153. package/src/ui/colorinputview.d.ts +140 -140
  154. package/src/ui/colorinputview.js +271 -271
  155. package/src/ui/formrowview.d.ts +61 -61
  156. package/src/ui/formrowview.js +57 -57
  157. package/src/ui/inserttableview.d.ts +77 -77
  158. package/src/ui/inserttableview.js +169 -169
  159. package/src/utils/common.d.ts +46 -42
  160. package/src/utils/common.js +68 -57
  161. package/src/utils/structure.d.ts +245 -245
  162. package/src/utils/structure.js +426 -426
  163. package/src/utils/table-properties.d.ts +67 -67
  164. package/src/utils/table-properties.js +86 -86
  165. package/src/utils/ui/contextualballoon.d.ts +34 -34
  166. package/src/utils/ui/contextualballoon.js +110 -106
  167. package/src/utils/ui/table-properties.d.ts +195 -195
  168. package/src/utils/ui/table-properties.js +362 -362
  169. package/src/utils/ui/widget.d.ts +20 -16
  170. package/src/utils/ui/widget.js +48 -38
  171. package/build/table.js.map +0 -1
@@ -1,226 +1,226 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @module table/converters/table-layout-post-fixer
7
- */
8
- import type { Model } from 'ckeditor5/src/engine';
9
- /**
10
- * Injects a table layout post-fixer into the model.
11
- *
12
- * The role of the table layout post-fixer is to ensure that the table rows have the correct structure
13
- * after a {@link module:engine/model/model~Model#change `change()`} block was executed.
14
- *
15
- * The correct structure means that:
16
- *
17
- * * All table rows have the same size.
18
- * * None of the table cells extend vertically beyond their section (either header or body).
19
- * * A table cell has always at least one element as a child.
20
- *
21
- * If the table structure is not correct, the post-fixer will automatically correct it in two steps:
22
- *
23
- * 1. It will clip table cells that extend beyond their section.
24
- * 2. It will add empty table cells to the rows that are narrower than the widest table row.
25
- *
26
- * ## Clipping overlapping table cells
27
- *
28
- * Such situation may occur when pasting a table (or a part of a table) to the editor from external sources.
29
- *
30
- * For example, see the following table which has a cell (FOO) with the rowspan attribute (2):
31
- *
32
- * ```xml
33
- * <table headingRows="1">
34
- * <tableRow>
35
- * <tableCell rowspan="2"><paragraph>FOO</paragraph></tableCell>
36
- * <tableCell colspan="2"><paragraph>BAR</paragraph></tableCell>
37
- * </tableRow>
38
- * <tableRow>
39
- * <tableCell><paragraph>BAZ</paragraph></tableCell>
40
- * <tableCell><paragraph>XYZ</paragraph></tableCell>
41
- * </tableRow>
42
- * </table>
43
- * ```
44
- *
45
- * It will be rendered in the view as:
46
- *
47
- * ```xml
48
- * <table>
49
- * <thead>
50
- * <tr>
51
- * <td rowspan="2">FOO</td>
52
- * <td colspan="2">BAR</td>
53
- * </tr>
54
- * </thead>
55
- * <tbody>
56
- * <tr>
57
- * <td>BAZ</td>
58
- * <td>XYZ</td>
59
- * </tr>
60
- * </tbody>
61
- * </table>
62
- * ```
63
- *
64
- * In the above example the table will be rendered as a table with two rows: one in the header and second one in the body.
65
- * The table cell (FOO) cannot span over multiple rows as it would extend from the header to the body section.
66
- * The `rowspan` attribute must be changed to (1). The value (1) is the default value of the `rowspan` attribute
67
- * so the `rowspan` attribute will be removed from the model.
68
- *
69
- * The table cell with BAZ in the content will be in the first column of the table.
70
- *
71
- * ## Adding missing table cells
72
- *
73
- * The table post-fixer will insert empty table cells to equalize table row sizes (the number of columns).
74
- * The size of a table row is calculated by counting column spans of table cells, both horizontal (from the same row) and
75
- * vertical (from the rows above).
76
- *
77
- * In the above example, the table row in the body section of the table is narrower then the row from the header: it has two cells
78
- * with the default colspan (1). The header row has one cell with colspan (1) and the second with colspan (2).
79
- * The table cell (FOO) does not extend beyond the head section (and as such will be fixed in the first step of this post-fixer).
80
- * The post-fixer will add a missing table cell to the row in the body section of the table.
81
- *
82
- * The table from the above example will be fixed and rendered to the view as below:
83
- *
84
- * ```xml
85
- * <table>
86
- * <thead>
87
- * <tr>
88
- * <td rowspan="2">FOO</td>
89
- * <td colspan="2">BAR</td>
90
- * </tr>
91
- * </thead>
92
- * <tbody>
93
- * <tr>
94
- * <td>BAZ</td>
95
- * <td>XYZ</td>
96
- * </tr>
97
- * </tbody>
98
- * </table>
99
- * ```
100
- *
101
- * ## Collaboration and undo - Expectations vs post-fixer results
102
- *
103
- * The table post-fixer only ensures proper structure without a deeper analysis of the nature of the change. As such, it might lead
104
- * to a structure which was not intended by the user. In particular, it will also fix undo steps (in conjunction with collaboration)
105
- * in which the editor content might not return to the original state.
106
- *
107
- * This will usually happen when one or more users change the size of the table.
108
- *
109
- * As an example see the table below:
110
- *
111
- * ```xml
112
- * <table>
113
- * <tbody>
114
- * <tr>
115
- * <td>11</td>
116
- * <td>12</td>
117
- * </tr>
118
- * <tr>
119
- * <td>21</td>
120
- * <td>22</td>
121
- * </tr>
122
- * </tbody>
123
- * </table>
124
- * ```
125
- *
126
- * and the user actions:
127
- *
128
- * 1. Both users have a table with two rows and two columns.
129
- * 2. User A adds a column at the end of the table. This will insert empty table cells to two rows.
130
- * 3. User B adds a row at the end of the table. This will insert a row with two empty table cells.
131
- * 4. Both users will have a table as below:
132
- *
133
- * ```xml
134
- * <table>
135
- * <tbody>
136
- * <tr>
137
- * <td>11</td>
138
- * <td>12</td>
139
- * <td>(empty, inserted by A)</td>
140
- * </tr>
141
- * <tr>
142
- * <td>21</td>
143
- * <td>22</td>
144
- * <td>(empty, inserted by A)</td>
145
- * </tr>
146
- * <tr>
147
- * <td>(empty, inserted by B)</td>
148
- * <td>(empty, inserted by B)</td>
149
- * </tr>
150
- * </tbody>
151
- * </table>
152
- * ```
153
- *
154
- * The last row is shorter then others so the table post-fixer will add an empty row to the last row:
155
- *
156
- * ```xml
157
- * <table>
158
- * <tbody>
159
- * <tr>
160
- * <td>11</td>
161
- * <td>12</td>
162
- * <td>(empty, inserted by A)</td>
163
- * </tr>
164
- * <tr>
165
- * <td>21</td>
166
- * <td>22</td>
167
- * <td>(empty, inserted by A)</td>
168
- * </tr>
169
- * <tr>
170
- * <td>(empty, inserted by B)</td>
171
- * <td>(empty, inserted by B)</td>
172
- * <td>(empty, inserted by the post-fixer)</td>
173
- * </tr>
174
- * </tbody>
175
- * </table>
176
- * ```
177
- *
178
- * Unfortunately undo does not know the nature of the changes and depending on which user applies the post-fixer changes, undoing them
179
- * might lead to a broken table. If User B undoes inserting the column to the table, the undo engine will undo only the operations of
180
- * inserting empty cells to rows from the initial table state (row 1 and 2) but the cell in the post-fixed row will remain:
181
- *
182
- * ```xml
183
- * <table>
184
- * <tbody>
185
- * <tr>
186
- * <td>11</td>
187
- * <td>12</td>
188
- * </tr>
189
- * <tr>
190
- * <td>21</td>
191
- * <td>22</td>
192
- * </tr>
193
- * <tr>
194
- * <td>(empty, inserted by B)</td>
195
- * <td>(empty, inserted by B)</td>
196
- * <td>(empty, inserted by a post-fixer)</td>
197
- * </tr>
198
- * </tbody>
199
- * </table>
200
- * ```
201
- *
202
- * After undo, the table post-fixer will detect that two rows are shorter than others and will fix the table to:
203
- *
204
- * ```xml
205
- * <table>
206
- * <tbody>
207
- * <tr>
208
- * <td>11</td>
209
- * <td>12</td>
210
- * <td>(empty, inserted by a post-fixer after undo)</td>
211
- * </tr>
212
- * <tr>
213
- * <td>21</td>
214
- * <td>22</td>
215
- * <td>(empty, inserted by a post-fixer after undo)</td>
216
- * </tr>
217
- * <tr>
218
- * <td>(empty, inserted by B)</td>
219
- * <td>(empty, inserted by B)</td>
220
- * <td>(empty, inserted by a post-fixer)</td>
221
- * </tr>
222
- * </tbody>
223
- * </table>
224
- * ```
225
- */
226
- export default function injectTableLayoutPostFixer(model: Model): void;
1
+ /**
2
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module table/converters/table-layout-post-fixer
7
+ */
8
+ import type { Model } from 'ckeditor5/src/engine';
9
+ /**
10
+ * Injects a table layout post-fixer into the model.
11
+ *
12
+ * The role of the table layout post-fixer is to ensure that the table rows have the correct structure
13
+ * after a {@link module:engine/model/model~Model#change `change()`} block was executed.
14
+ *
15
+ * The correct structure means that:
16
+ *
17
+ * * All table rows have the same size.
18
+ * * None of the table cells extend vertically beyond their section (either header or body).
19
+ * * A table cell has always at least one element as a child.
20
+ *
21
+ * If the table structure is not correct, the post-fixer will automatically correct it in two steps:
22
+ *
23
+ * 1. It will clip table cells that extend beyond their section.
24
+ * 2. It will add empty table cells to the rows that are narrower than the widest table row.
25
+ *
26
+ * ## Clipping overlapping table cells
27
+ *
28
+ * Such situation may occur when pasting a table (or a part of a table) to the editor from external sources.
29
+ *
30
+ * For example, see the following table which has a cell (FOO) with the rowspan attribute (2):
31
+ *
32
+ * ```xml
33
+ * <table headingRows="1">
34
+ * <tableRow>
35
+ * <tableCell rowspan="2"><paragraph>FOO</paragraph></tableCell>
36
+ * <tableCell colspan="2"><paragraph>BAR</paragraph></tableCell>
37
+ * </tableRow>
38
+ * <tableRow>
39
+ * <tableCell><paragraph>BAZ</paragraph></tableCell>
40
+ * <tableCell><paragraph>XYZ</paragraph></tableCell>
41
+ * </tableRow>
42
+ * </table>
43
+ * ```
44
+ *
45
+ * It will be rendered in the view as:
46
+ *
47
+ * ```xml
48
+ * <table>
49
+ * <thead>
50
+ * <tr>
51
+ * <td rowspan="2">FOO</td>
52
+ * <td colspan="2">BAR</td>
53
+ * </tr>
54
+ * </thead>
55
+ * <tbody>
56
+ * <tr>
57
+ * <td>BAZ</td>
58
+ * <td>XYZ</td>
59
+ * </tr>
60
+ * </tbody>
61
+ * </table>
62
+ * ```
63
+ *
64
+ * In the above example the table will be rendered as a table with two rows: one in the header and second one in the body.
65
+ * The table cell (FOO) cannot span over multiple rows as it would extend from the header to the body section.
66
+ * The `rowspan` attribute must be changed to (1). The value (1) is the default value of the `rowspan` attribute
67
+ * so the `rowspan` attribute will be removed from the model.
68
+ *
69
+ * The table cell with BAZ in the content will be in the first column of the table.
70
+ *
71
+ * ## Adding missing table cells
72
+ *
73
+ * The table post-fixer will insert empty table cells to equalize table row sizes (the number of columns).
74
+ * The size of a table row is calculated by counting column spans of table cells, both horizontal (from the same row) and
75
+ * vertical (from the rows above).
76
+ *
77
+ * In the above example, the table row in the body section of the table is narrower then the row from the header: it has two cells
78
+ * with the default colspan (1). The header row has one cell with colspan (1) and the second with colspan (2).
79
+ * The table cell (FOO) does not extend beyond the head section (and as such will be fixed in the first step of this post-fixer).
80
+ * The post-fixer will add a missing table cell to the row in the body section of the table.
81
+ *
82
+ * The table from the above example will be fixed and rendered to the view as below:
83
+ *
84
+ * ```xml
85
+ * <table>
86
+ * <thead>
87
+ * <tr>
88
+ * <td rowspan="2">FOO</td>
89
+ * <td colspan="2">BAR</td>
90
+ * </tr>
91
+ * </thead>
92
+ * <tbody>
93
+ * <tr>
94
+ * <td>BAZ</td>
95
+ * <td>XYZ</td>
96
+ * </tr>
97
+ * </tbody>
98
+ * </table>
99
+ * ```
100
+ *
101
+ * ## Collaboration and undo - Expectations vs post-fixer results
102
+ *
103
+ * The table post-fixer only ensures proper structure without a deeper analysis of the nature of the change. As such, it might lead
104
+ * to a structure which was not intended by the user. In particular, it will also fix undo steps (in conjunction with collaboration)
105
+ * in which the editor content might not return to the original state.
106
+ *
107
+ * This will usually happen when one or more users change the size of the table.
108
+ *
109
+ * As an example see the table below:
110
+ *
111
+ * ```xml
112
+ * <table>
113
+ * <tbody>
114
+ * <tr>
115
+ * <td>11</td>
116
+ * <td>12</td>
117
+ * </tr>
118
+ * <tr>
119
+ * <td>21</td>
120
+ * <td>22</td>
121
+ * </tr>
122
+ * </tbody>
123
+ * </table>
124
+ * ```
125
+ *
126
+ * and the user actions:
127
+ *
128
+ * 1. Both users have a table with two rows and two columns.
129
+ * 2. User A adds a column at the end of the table. This will insert empty table cells to two rows.
130
+ * 3. User B adds a row at the end of the table. This will insert a row with two empty table cells.
131
+ * 4. Both users will have a table as below:
132
+ *
133
+ * ```xml
134
+ * <table>
135
+ * <tbody>
136
+ * <tr>
137
+ * <td>11</td>
138
+ * <td>12</td>
139
+ * <td>(empty, inserted by A)</td>
140
+ * </tr>
141
+ * <tr>
142
+ * <td>21</td>
143
+ * <td>22</td>
144
+ * <td>(empty, inserted by A)</td>
145
+ * </tr>
146
+ * <tr>
147
+ * <td>(empty, inserted by B)</td>
148
+ * <td>(empty, inserted by B)</td>
149
+ * </tr>
150
+ * </tbody>
151
+ * </table>
152
+ * ```
153
+ *
154
+ * The last row is shorter then others so the table post-fixer will add an empty row to the last row:
155
+ *
156
+ * ```xml
157
+ * <table>
158
+ * <tbody>
159
+ * <tr>
160
+ * <td>11</td>
161
+ * <td>12</td>
162
+ * <td>(empty, inserted by A)</td>
163
+ * </tr>
164
+ * <tr>
165
+ * <td>21</td>
166
+ * <td>22</td>
167
+ * <td>(empty, inserted by A)</td>
168
+ * </tr>
169
+ * <tr>
170
+ * <td>(empty, inserted by B)</td>
171
+ * <td>(empty, inserted by B)</td>
172
+ * <td>(empty, inserted by the post-fixer)</td>
173
+ * </tr>
174
+ * </tbody>
175
+ * </table>
176
+ * ```
177
+ *
178
+ * Unfortunately undo does not know the nature of the changes and depending on which user applies the post-fixer changes, undoing them
179
+ * might lead to a broken table. If User B undoes inserting the column to the table, the undo engine will undo only the operations of
180
+ * inserting empty cells to rows from the initial table state (row 1 and 2) but the cell in the post-fixed row will remain:
181
+ *
182
+ * ```xml
183
+ * <table>
184
+ * <tbody>
185
+ * <tr>
186
+ * <td>11</td>
187
+ * <td>12</td>
188
+ * </tr>
189
+ * <tr>
190
+ * <td>21</td>
191
+ * <td>22</td>
192
+ * </tr>
193
+ * <tr>
194
+ * <td>(empty, inserted by B)</td>
195
+ * <td>(empty, inserted by B)</td>
196
+ * <td>(empty, inserted by a post-fixer)</td>
197
+ * </tr>
198
+ * </tbody>
199
+ * </table>
200
+ * ```
201
+ *
202
+ * After undo, the table post-fixer will detect that two rows are shorter than others and will fix the table to:
203
+ *
204
+ * ```xml
205
+ * <table>
206
+ * <tbody>
207
+ * <tr>
208
+ * <td>11</td>
209
+ * <td>12</td>
210
+ * <td>(empty, inserted by a post-fixer after undo)</td>
211
+ * </tr>
212
+ * <tr>
213
+ * <td>21</td>
214
+ * <td>22</td>
215
+ * <td>(empty, inserted by a post-fixer after undo)</td>
216
+ * </tr>
217
+ * <tr>
218
+ * <td>(empty, inserted by B)</td>
219
+ * <td>(empty, inserted by B)</td>
220
+ * <td>(empty, inserted by a post-fixer)</td>
221
+ * </tr>
222
+ * </tbody>
223
+ * </table>
224
+ * ```
225
+ */
226
+ export default function injectTableLayoutPostFixer(model: Model): void;