@ckeditor/ckeditor5-table 39.0.1 → 40.0.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 (229) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -3
  3. package/build/table.js +1 -1
  4. package/build/table.js.map +1 -0
  5. package/build/translations/hy.js +1 -0
  6. package/lang/translations/ar.po +1 -0
  7. package/lang/translations/az.po +1 -0
  8. package/lang/translations/bg.po +1 -0
  9. package/lang/translations/bn.po +1 -0
  10. package/lang/translations/ca.po +1 -0
  11. package/lang/translations/cs.po +1 -0
  12. package/lang/translations/da.po +1 -0
  13. package/lang/translations/de-ch.po +1 -0
  14. package/lang/translations/de.po +1 -0
  15. package/lang/translations/el.po +1 -0
  16. package/lang/translations/en-au.po +1 -0
  17. package/lang/translations/en-gb.po +1 -0
  18. package/lang/translations/en.po +1 -0
  19. package/lang/translations/es.po +1 -0
  20. package/lang/translations/et.po +1 -0
  21. package/lang/translations/fa.po +1 -0
  22. package/lang/translations/fi.po +1 -0
  23. package/lang/translations/fr.po +1 -0
  24. package/lang/translations/gl.po +1 -0
  25. package/lang/translations/he.po +1 -0
  26. package/lang/translations/hi.po +1 -0
  27. package/lang/translations/hr.po +1 -0
  28. package/lang/translations/hu.po +1 -0
  29. package/lang/translations/hy.po +262 -0
  30. package/lang/translations/id.po +1 -0
  31. package/lang/translations/it.po +1 -0
  32. package/lang/translations/ja.po +1 -0
  33. package/lang/translations/ko.po +1 -0
  34. package/lang/translations/ku.po +1 -0
  35. package/lang/translations/lt.po +1 -0
  36. package/lang/translations/lv.po +1 -0
  37. package/lang/translations/ms.po +1 -0
  38. package/lang/translations/nb.po +1 -0
  39. package/lang/translations/ne.po +1 -0
  40. package/lang/translations/nl.po +1 -0
  41. package/lang/translations/no.po +1 -0
  42. package/lang/translations/pl.po +1 -0
  43. package/lang/translations/pt-br.po +1 -0
  44. package/lang/translations/pt.po +1 -0
  45. package/lang/translations/ro.po +1 -0
  46. package/lang/translations/ru.po +1 -0
  47. package/lang/translations/sk.po +1 -0
  48. package/lang/translations/sl.po +1 -0
  49. package/lang/translations/sq.po +1 -0
  50. package/lang/translations/sr-latn.po +1 -0
  51. package/lang/translations/sr.po +1 -0
  52. package/lang/translations/sv.po +1 -0
  53. package/lang/translations/th.po +1 -0
  54. package/lang/translations/tk.po +1 -0
  55. package/lang/translations/tr.po +1 -0
  56. package/lang/translations/tt.po +1 -0
  57. package/lang/translations/ug.po +1 -0
  58. package/lang/translations/uk.po +1 -0
  59. package/lang/translations/ur.po +1 -0
  60. package/lang/translations/uz.po +1 -0
  61. package/lang/translations/vi.po +1 -0
  62. package/lang/translations/zh-cn.po +1 -0
  63. package/lang/translations/zh.po +1 -0
  64. package/package.json +2 -6
  65. package/src/augmentation.d.ts +76 -76
  66. package/src/augmentation.js +5 -5
  67. package/src/commands/insertcolumncommand.d.ts +55 -55
  68. package/src/commands/insertcolumncommand.js +67 -67
  69. package/src/commands/insertrowcommand.d.ts +54 -54
  70. package/src/commands/insertrowcommand.js +66 -66
  71. package/src/commands/inserttablecommand.d.ts +44 -44
  72. package/src/commands/inserttablecommand.js +69 -69
  73. package/src/commands/mergecellcommand.d.ts +68 -68
  74. package/src/commands/mergecellcommand.js +198 -198
  75. package/src/commands/mergecellscommand.d.ts +28 -28
  76. package/src/commands/mergecellscommand.js +94 -94
  77. package/src/commands/removecolumncommand.d.ts +29 -29
  78. package/src/commands/removecolumncommand.js +109 -109
  79. package/src/commands/removerowcommand.d.ts +29 -29
  80. package/src/commands/removerowcommand.js +82 -82
  81. package/src/commands/selectcolumncommand.d.ts +33 -33
  82. package/src/commands/selectcolumncommand.js +60 -60
  83. package/src/commands/selectrowcommand.d.ts +33 -33
  84. package/src/commands/selectrowcommand.js +56 -56
  85. package/src/commands/setheadercolumncommand.d.ts +50 -50
  86. package/src/commands/setheadercolumncommand.js +71 -71
  87. package/src/commands/setheaderrowcommand.d.ts +53 -53
  88. package/src/commands/setheaderrowcommand.js +79 -79
  89. package/src/commands/splitcellcommand.d.ts +43 -43
  90. package/src/commands/splitcellcommand.js +54 -54
  91. package/src/converters/downcast.d.ts +63 -63
  92. package/src/converters/downcast.js +146 -146
  93. package/src/converters/table-caption-post-fixer.d.ts +20 -20
  94. package/src/converters/table-caption-post-fixer.js +53 -53
  95. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -32
  96. package/src/converters/table-cell-paragraph-post-fixer.js +107 -107
  97. package/src/converters/table-cell-refresh-handler.d.ts +18 -18
  98. package/src/converters/table-cell-refresh-handler.js +45 -45
  99. package/src/converters/table-headings-refresh-handler.d.ts +17 -17
  100. package/src/converters/table-headings-refresh-handler.js +49 -49
  101. package/src/converters/table-layout-post-fixer.d.ts +226 -226
  102. package/src/converters/table-layout-post-fixer.js +367 -367
  103. package/src/converters/tableproperties.d.ts +54 -54
  104. package/src/converters/tableproperties.js +159 -159
  105. package/src/converters/upcasttable.d.ts +49 -49
  106. package/src/converters/upcasttable.js +243 -243
  107. package/src/index.d.ts +60 -60
  108. package/src/index.js +30 -30
  109. package/src/plaintableoutput.d.ts +26 -26
  110. package/src/plaintableoutput.js +123 -123
  111. package/src/table.d.ts +40 -40
  112. package/src/table.js +44 -44
  113. package/src/tablecaption/tablecaptionediting.d.ts +63 -63
  114. package/src/tablecaption/tablecaptionediting.js +122 -122
  115. package/src/tablecaption/tablecaptionui.d.ts +21 -21
  116. package/src/tablecaption/tablecaptionui.js +57 -57
  117. package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -68
  118. package/src/tablecaption/toggletablecaptioncommand.js +104 -104
  119. package/src/tablecaption/utils.d.ts +42 -42
  120. package/src/tablecaption/utils.js +67 -67
  121. package/src/tablecaption.d.ts +24 -24
  122. package/src/tablecaption.js +28 -28
  123. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -32
  124. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +30 -30
  125. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -37
  126. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +44 -44
  127. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -37
  128. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +44 -44
  129. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -51
  130. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +64 -64
  131. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -46
  132. package/src/tablecellproperties/commands/tablecellheightcommand.js +51 -51
  133. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -32
  134. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +30 -30
  135. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -51
  136. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +64 -64
  137. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -62
  138. package/src/tablecellproperties/commands/tablecellpropertycommand.js +92 -92
  139. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -40
  140. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +38 -38
  141. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +43 -43
  142. package/src/tablecellproperties/tablecellpropertiesediting.js +241 -241
  143. package/src/tablecellproperties/tablecellpropertiesui.d.ts +112 -112
  144. package/src/tablecellproperties/tablecellpropertiesui.js +330 -330
  145. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +228 -228
  146. package/src/tablecellproperties/ui/tablecellpropertiesview.js +548 -539
  147. package/src/tablecellproperties.d.ts +30 -30
  148. package/src/tablecellproperties.js +34 -34
  149. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -46
  150. package/src/tablecellwidth/commands/tablecellwidthcommand.js +51 -51
  151. package/src/tablecellwidth/tablecellwidthediting.d.ts +29 -29
  152. package/src/tablecellwidth/tablecellwidthediting.js +45 -45
  153. package/src/tableclipboard.d.ts +65 -65
  154. package/src/tableclipboard.js +450 -450
  155. package/src/tablecolumnresize/constants.d.ts +20 -20
  156. package/src/tablecolumnresize/constants.js +20 -20
  157. package/src/tablecolumnresize/converters.d.ts +18 -18
  158. package/src/tablecolumnresize/converters.js +46 -45
  159. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +139 -139
  160. package/src/tablecolumnresize/tablecolumnresizeediting.js +583 -571
  161. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -38
  162. package/src/tablecolumnresize/tablewidthscommand.js +61 -61
  163. package/src/tablecolumnresize/utils.d.ts +148 -141
  164. package/src/tablecolumnresize/utils.js +358 -330
  165. package/src/tablecolumnresize.d.ts +26 -26
  166. package/src/tablecolumnresize.js +30 -30
  167. package/src/tableconfig.d.ts +343 -343
  168. package/src/tableconfig.js +5 -5
  169. package/src/tableediting.d.ts +98 -98
  170. package/src/tableediting.js +191 -191
  171. package/src/tablekeyboard.d.ts +68 -68
  172. package/src/tablekeyboard.js +279 -279
  173. package/src/tablemouse/mouseeventsobserver.d.ts +62 -62
  174. package/src/tablemouse/mouseeventsobserver.js +35 -35
  175. package/src/tablemouse.d.ts +48 -48
  176. package/src/tablemouse.js +172 -172
  177. package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -32
  178. package/src/tableproperties/commands/tablealignmentcommand.js +30 -30
  179. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -32
  180. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +30 -30
  181. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -37
  182. package/src/tableproperties/commands/tablebordercolorcommand.js +44 -44
  183. package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -37
  184. package/src/tableproperties/commands/tableborderstylecommand.js +44 -44
  185. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -51
  186. package/src/tableproperties/commands/tableborderwidthcommand.js +64 -64
  187. package/src/tableproperties/commands/tableheightcommand.d.ts +46 -46
  188. package/src/tableproperties/commands/tableheightcommand.js +54 -54
  189. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -61
  190. package/src/tableproperties/commands/tablepropertycommand.js +80 -80
  191. package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -46
  192. package/src/tableproperties/commands/tablewidthcommand.js +54 -54
  193. package/src/tableproperties/tablepropertiesediting.d.ts +40 -40
  194. package/src/tableproperties/tablepropertiesediting.js +206 -206
  195. package/src/tableproperties/tablepropertiesui.d.ts +114 -114
  196. package/src/tableproperties/tablepropertiesui.js +321 -321
  197. package/src/tableproperties/ui/tablepropertiesview.d.ts +207 -207
  198. package/src/tableproperties/ui/tablepropertiesview.js +466 -457
  199. package/src/tableproperties.d.ts +30 -30
  200. package/src/tableproperties.js +34 -34
  201. package/src/tableselection.d.ts +107 -107
  202. package/src/tableselection.js +297 -297
  203. package/src/tabletoolbar.d.ts +32 -32
  204. package/src/tabletoolbar.js +57 -57
  205. package/src/tableui.d.ts +53 -53
  206. package/src/tableui.js +309 -309
  207. package/src/tableutils.d.ts +448 -448
  208. package/src/tableutils.js +1055 -1041
  209. package/src/tablewalker.d.ts +362 -323
  210. package/src/tablewalker.js +393 -333
  211. package/src/ui/colorinputview.d.ts +140 -140
  212. package/src/ui/colorinputview.js +271 -265
  213. package/src/ui/formrowview.d.ts +61 -61
  214. package/src/ui/formrowview.js +57 -57
  215. package/src/ui/inserttableview.d.ts +77 -77
  216. package/src/ui/inserttableview.js +169 -169
  217. package/src/utils/common.d.ts +42 -42
  218. package/src/utils/common.js +57 -57
  219. package/src/utils/structure.d.ts +245 -245
  220. package/src/utils/structure.js +426 -426
  221. package/src/utils/table-properties.d.ts +67 -67
  222. package/src/utils/table-properties.js +86 -86
  223. package/src/utils/ui/contextualballoon.d.ts +34 -34
  224. package/src/utils/ui/contextualballoon.js +106 -106
  225. package/src/utils/ui/table-properties.d.ts +195 -195
  226. package/src/utils/ui/table-properties.js +362 -362
  227. package/src/utils/ui/widget.d.ts +16 -16
  228. package/src/utils/ui/widget.js +38 -38
  229. package/theme/tablecolumnresize.css +8 -6
@@ -1,30 +1,30 @@
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/tableproperties
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import TablePropertiesEditing from './tableproperties/tablepropertiesediting';
10
- import TablePropertiesUI from './tableproperties/tablepropertiesui';
11
- /**
12
- * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
13
- *
14
- * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.
15
- * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.
16
- *
17
- * This is a "glue" plugin that loads the
18
- * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
19
- * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
20
- */
21
- export default class TableProperties extends Plugin {
22
- /**
23
- * @inheritDoc
24
- */
25
- static get pluginName(): "TableProperties";
26
- /**
27
- * @inheritDoc
28
- */
29
- static get requires(): readonly [typeof TablePropertiesEditing, typeof TablePropertiesUI];
30
- }
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/tableproperties
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import TablePropertiesEditing from './tableproperties/tablepropertiesediting';
10
+ import TablePropertiesUI from './tableproperties/tablepropertiesui';
11
+ /**
12
+ * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
13
+ *
14
+ * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.
15
+ * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.
16
+ *
17
+ * This is a "glue" plugin that loads the
18
+ * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
19
+ * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
20
+ */
21
+ export default class TableProperties extends Plugin {
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ static get pluginName(): "TableProperties";
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ static get requires(): readonly [typeof TablePropertiesEditing, typeof TablePropertiesUI];
30
+ }
@@ -1,34 +1,34 @@
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/tableproperties
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import TablePropertiesEditing from './tableproperties/tablepropertiesediting';
10
- import TablePropertiesUI from './tableproperties/tablepropertiesui';
11
- /**
12
- * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
13
- *
14
- * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.
15
- * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.
16
- *
17
- * This is a "glue" plugin that loads the
18
- * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
19
- * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
20
- */
21
- export default class TableProperties extends Plugin {
22
- /**
23
- * @inheritDoc
24
- */
25
- static get pluginName() {
26
- return 'TableProperties';
27
- }
28
- /**
29
- * @inheritDoc
30
- */
31
- static get requires() {
32
- return [TablePropertiesEditing, TablePropertiesUI];
33
- }
34
- }
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/tableproperties
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import TablePropertiesEditing from './tableproperties/tablepropertiesediting';
10
+ import TablePropertiesUI from './tableproperties/tablepropertiesui';
11
+ /**
12
+ * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
13
+ *
14
+ * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.
15
+ * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.
16
+ *
17
+ * This is a "glue" plugin that loads the
18
+ * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
19
+ * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
20
+ */
21
+ export default class TableProperties extends Plugin {
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ static get pluginName() {
26
+ return 'TableProperties';
27
+ }
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ static get requires() {
32
+ return [TablePropertiesEditing, TablePropertiesUI];
33
+ }
34
+ }
@@ -1,107 +1,107 @@
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/tableselection
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import type { Element, DocumentFragment } from 'ckeditor5/src/engine';
10
- import TableUtils from './tableutils';
11
- import '../theme/tableselection.css';
12
- /**
13
- * This plugin enables the advanced table cells, rows and columns selection.
14
- * It is loaded automatically by the {@link module:table/table~Table} plugin.
15
- */
16
- export default class TableSelection extends Plugin {
17
- /**
18
- * @inheritDoc
19
- */
20
- static get pluginName(): "TableSelection";
21
- /**
22
- * @inheritDoc
23
- */
24
- static get requires(): readonly [typeof TableUtils, typeof TableUtils];
25
- /**
26
- * @inheritDoc
27
- */
28
- init(): void;
29
- /**
30
- * Returns the currently selected table cells or `null` if it is not a table cells selection.
31
- */
32
- getSelectedTableCells(): Array<Element> | null;
33
- /**
34
- * Returns the selected table fragment as a document fragment.
35
- */
36
- getSelectionAsFragment(): DocumentFragment | null;
37
- /**
38
- * Sets the model selection based on given anchor and target cells (can be the same cell).
39
- * Takes care of setting the backward flag.
40
- *
41
- * ```ts
42
- * const modelRoot = editor.model.document.getRoot();
43
- * const firstCell = modelRoot.getNodeByPath( [ 0, 0, 0 ] );
44
- * const lastCell = modelRoot.getNodeByPath( [ 0, 0, 1 ] );
45
- *
46
- * const tableSelection = editor.plugins.get( 'TableSelection' );
47
- * tableSelection.setCellSelection( firstCell, lastCell );
48
- * ```
49
- */
50
- setCellSelection(anchorCell: Element, targetCell: Element): void;
51
- /**
52
- * Returns the focus cell from the current selection.
53
- */
54
- getFocusCell(): Element | null;
55
- /**
56
- * Returns the anchor cell from the current selection.
57
- */
58
- getAnchorCell(): Element | null;
59
- /**
60
- * Defines a selection converter which marks the selected cells with a specific class.
61
- *
62
- * The real DOM selection is put in the last cell. Since the order of ranges is dependent on whether the
63
- * selection is backward or not, the last cell will usually be close to the "focus" end of the selection
64
- * (a selection has anchor and focus).
65
- *
66
- * The real DOM selection is then hidden with CSS.
67
- */
68
- private _defineSelectionConverter;
69
- /**
70
- * Creates a listener that reacts to changes in {@link #isEnabled} and, if the plugin was disabled,
71
- * it collapses the multi-cell selection to a regular selection placed inside a table cell.
72
- *
73
- * This listener helps features that disable the table selection plugin bring the selection
74
- * to a clear state they can work with (for instance, because they don't support multiple cell selection).
75
- */
76
- private _enablePluginDisabling;
77
- /**
78
- * Overrides the default `model.deleteContent()` behavior over a selected table fragment.
79
- *
80
- * @param args Delete content method arguments.
81
- */
82
- private _handleDeleteContent;
83
- /**
84
- * This handler makes it possible to remove the content of all selected cells by starting to type.
85
- * If you take a look at {@link #_defineSelectionConverter} you will find out that despite the multi-cell selection being set
86
- * in the model, the view selection is collapsed in the last cell (because most browsers are unable to render multi-cell selections;
87
- * yes, it's a hack).
88
- *
89
- * When multiple cells are selected in the model and the user starts to type, the
90
- * {@link module:engine/view/document~Document#event:insertText} event carries information provided by the
91
- * beforeinput DOM event, that in turn only knows about this collapsed DOM selection in the last cell.
92
- *
93
- * As a result, the selected cells have no chance to be cleaned up. To fix this, this listener intercepts
94
- * the event and injects the custom view selection in the data that translates correctly to the actual state
95
- * of the multi-cell selection in the model.
96
- *
97
- * @param data Insert text event data.
98
- */
99
- private _handleInsertTextEvent;
100
- /**
101
- * Returns an array of table cells that should be selected based on the
102
- * given anchor cell and target (focus) cell.
103
- *
104
- * The cells are returned in a reverse direction if the selection is backward.
105
- */
106
- private _getCellsToSelect;
107
- }
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/tableselection
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import type { Element, DocumentFragment } from 'ckeditor5/src/engine';
10
+ import TableUtils from './tableutils';
11
+ import '../theme/tableselection.css';
12
+ /**
13
+ * This plugin enables the advanced table cells, rows and columns selection.
14
+ * It is loaded automatically by the {@link module:table/table~Table} plugin.
15
+ */
16
+ export default class TableSelection extends Plugin {
17
+ /**
18
+ * @inheritDoc
19
+ */
20
+ static get pluginName(): "TableSelection";
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ static get requires(): readonly [typeof TableUtils, typeof TableUtils];
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ init(): void;
29
+ /**
30
+ * Returns the currently selected table cells or `null` if it is not a table cells selection.
31
+ */
32
+ getSelectedTableCells(): Array<Element> | null;
33
+ /**
34
+ * Returns the selected table fragment as a document fragment.
35
+ */
36
+ getSelectionAsFragment(): DocumentFragment | null;
37
+ /**
38
+ * Sets the model selection based on given anchor and target cells (can be the same cell).
39
+ * Takes care of setting the backward flag.
40
+ *
41
+ * ```ts
42
+ * const modelRoot = editor.model.document.getRoot();
43
+ * const firstCell = modelRoot.getNodeByPath( [ 0, 0, 0 ] );
44
+ * const lastCell = modelRoot.getNodeByPath( [ 0, 0, 1 ] );
45
+ *
46
+ * const tableSelection = editor.plugins.get( 'TableSelection' );
47
+ * tableSelection.setCellSelection( firstCell, lastCell );
48
+ * ```
49
+ */
50
+ setCellSelection(anchorCell: Element, targetCell: Element): void;
51
+ /**
52
+ * Returns the focus cell from the current selection.
53
+ */
54
+ getFocusCell(): Element | null;
55
+ /**
56
+ * Returns the anchor cell from the current selection.
57
+ */
58
+ getAnchorCell(): Element | null;
59
+ /**
60
+ * Defines a selection converter which marks the selected cells with a specific class.
61
+ *
62
+ * The real DOM selection is put in the last cell. Since the order of ranges is dependent on whether the
63
+ * selection is backward or not, the last cell will usually be close to the "focus" end of the selection
64
+ * (a selection has anchor and focus).
65
+ *
66
+ * The real DOM selection is then hidden with CSS.
67
+ */
68
+ private _defineSelectionConverter;
69
+ /**
70
+ * Creates a listener that reacts to changes in {@link #isEnabled} and, if the plugin was disabled,
71
+ * it collapses the multi-cell selection to a regular selection placed inside a table cell.
72
+ *
73
+ * This listener helps features that disable the table selection plugin bring the selection
74
+ * to a clear state they can work with (for instance, because they don't support multiple cell selection).
75
+ */
76
+ private _enablePluginDisabling;
77
+ /**
78
+ * Overrides the default `model.deleteContent()` behavior over a selected table fragment.
79
+ *
80
+ * @param args Delete content method arguments.
81
+ */
82
+ private _handleDeleteContent;
83
+ /**
84
+ * This handler makes it possible to remove the content of all selected cells by starting to type.
85
+ * If you take a look at {@link #_defineSelectionConverter} you will find out that despite the multi-cell selection being set
86
+ * in the model, the view selection is collapsed in the last cell (because most browsers are unable to render multi-cell selections;
87
+ * yes, it's a hack).
88
+ *
89
+ * When multiple cells are selected in the model and the user starts to type, the
90
+ * {@link module:engine/view/document~Document#event:insertText} event carries information provided by the
91
+ * beforeinput DOM event, that in turn only knows about this collapsed DOM selection in the last cell.
92
+ *
93
+ * As a result, the selected cells have no chance to be cleaned up. To fix this, this listener intercepts
94
+ * the event and injects the custom view selection in the data that translates correctly to the actual state
95
+ * of the multi-cell selection in the model.
96
+ *
97
+ * @param data Insert text event data.
98
+ */
99
+ private _handleInsertTextEvent;
100
+ /**
101
+ * Returns an array of table cells that should be selected based on the
102
+ * given anchor cell and target (focus) cell.
103
+ *
104
+ * The cells are returned in a reverse direction if the selection is backward.
105
+ */
106
+ private _getCellsToSelect;
107
+ }