@ckeditor/ckeditor5-table 36.0.1 → 37.0.0-alpha.1

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 (170) hide show
  1. package/README.md +1 -1
  2. package/build/table.js +1 -1
  3. package/ckeditor5-metadata.json +6 -6
  4. package/package.json +34 -29
  5. package/src/augmentation.d.ts +76 -0
  6. package/src/augmentation.js +5 -0
  7. package/src/commands/insertcolumncommand.d.ts +55 -0
  8. package/src/commands/insertcolumncommand.js +45 -60
  9. package/src/commands/insertrowcommand.d.ts +54 -0
  10. package/src/commands/insertrowcommand.js +44 -59
  11. package/src/commands/inserttablecommand.d.ts +44 -0
  12. package/src/commands/inserttablecommand.js +50 -68
  13. package/src/commands/mergecellcommand.d.ts +68 -0
  14. package/src/commands/mergecellcommand.js +169 -244
  15. package/src/commands/mergecellscommand.d.ts +28 -0
  16. package/src/commands/mergecellscommand.js +72 -101
  17. package/src/commands/removecolumncommand.d.ts +29 -0
  18. package/src/commands/removecolumncommand.js +88 -102
  19. package/src/commands/removerowcommand.d.ts +29 -0
  20. package/src/commands/removerowcommand.js +63 -80
  21. package/src/commands/selectcolumncommand.d.ts +33 -0
  22. package/src/commands/selectcolumncommand.js +41 -54
  23. package/src/commands/selectrowcommand.d.ts +33 -0
  24. package/src/commands/selectrowcommand.js +38 -48
  25. package/src/commands/setheadercolumncommand.d.ts +50 -0
  26. package/src/commands/setheadercolumncommand.js +48 -73
  27. package/src/commands/setheaderrowcommand.d.ts +53 -0
  28. package/src/commands/setheaderrowcommand.js +56 -85
  29. package/src/commands/splitcellcommand.d.ts +43 -0
  30. package/src/commands/splitcellcommand.js +35 -49
  31. package/src/converters/downcast.d.ts +63 -0
  32. package/src/converters/downcast.js +98 -130
  33. package/src/converters/table-caption-post-fixer.d.ts +20 -0
  34. package/src/converters/table-caption-post-fixer.js +36 -52
  35. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -0
  36. package/src/converters/table-cell-paragraph-post-fixer.js +88 -119
  37. package/src/converters/table-cell-refresh-handler.d.ts +18 -0
  38. package/src/converters/table-cell-refresh-handler.js +29 -48
  39. package/src/converters/table-headings-refresh-handler.d.ts +17 -0
  40. package/src/converters/table-headings-refresh-handler.js +35 -54
  41. package/src/converters/table-layout-post-fixer.d.ts +226 -0
  42. package/src/converters/table-layout-post-fixer.js +276 -313
  43. package/src/converters/tableproperties.d.ts +54 -0
  44. package/src/converters/tableproperties.js +136 -168
  45. package/src/converters/upcasttable.d.ts +49 -0
  46. package/src/converters/upcasttable.js +199 -251
  47. package/src/index.d.ts +60 -0
  48. package/src/index.js +1 -2
  49. package/src/plaintableoutput.d.ts +25 -0
  50. package/src/plaintableoutput.js +107 -135
  51. package/src/table.d.ts +33 -0
  52. package/src/table.js +12 -88
  53. package/src/tablecaption/tablecaptionediting.d.ts +63 -0
  54. package/src/tablecaption/tablecaptionediting.js +104 -135
  55. package/src/tablecaption/tablecaptionui.d.ts +21 -0
  56. package/src/tablecaption/tablecaptionui.js +42 -58
  57. package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -0
  58. package/src/tablecaption/toggletablecaptioncommand.js +77 -92
  59. package/src/tablecaption/utils.d.ts +42 -0
  60. package/src/tablecaption/utils.js +35 -61
  61. package/src/tablecaption.d.ts +22 -0
  62. package/src/tablecaption.js +12 -19
  63. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -0
  64. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +14 -20
  65. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -0
  66. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +27 -37
  67. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -0
  68. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +27 -37
  69. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -0
  70. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +42 -53
  71. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -0
  72. package/src/tablecellproperties/commands/tablecellheightcommand.js +29 -36
  73. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -0
  74. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +14 -20
  75. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -0
  76. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +42 -53
  77. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -0
  78. package/src/tablecellproperties/commands/tablecellpropertycommand.js +77 -122
  79. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -0
  80. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +14 -20
  81. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +41 -0
  82. package/src/tablecellproperties/tablecellpropertiesediting.js +193 -236
  83. package/src/tablecellproperties/tablecellpropertiesui.d.ts +111 -0
  84. package/src/tablecellproperties/tablecellpropertiesui.js +302 -456
  85. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +227 -0
  86. package/src/tablecellproperties/ui/tablecellpropertiesview.js +509 -844
  87. package/src/tablecellproperties.d.ts +28 -0
  88. package/src/tablecellproperties.js +12 -98
  89. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -0
  90. package/src/tablecellwidth/commands/tablecellwidthcommand.js +29 -35
  91. package/src/tablecellwidth/tablecellwidthediting.d.ts +28 -0
  92. package/src/tablecellwidth/tablecellwidthediting.js +25 -38
  93. package/src/tableclipboard.d.ts +63 -0
  94. package/src/tableclipboard.js +429 -568
  95. package/src/tablecolumnresize/constants.d.ts +20 -0
  96. package/src/tablecolumnresize/constants.js +0 -10
  97. package/src/tablecolumnresize/converters.d.ts +18 -0
  98. package/src/tablecolumnresize/converters.js +35 -119
  99. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +137 -0
  100. package/src/tablecolumnresize/tablecolumnresizeediting.js +545 -711
  101. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -0
  102. package/src/tablecolumnresize/tablewidthscommand.js +61 -0
  103. package/src/tablecolumnresize/utils.d.ts +141 -0
  104. package/src/tablecolumnresize/utils.js +256 -233
  105. package/src/tablecolumnresize.d.ts +24 -0
  106. package/src/tablecolumnresize.js +12 -19
  107. package/src/tableconfig.d.ts +331 -0
  108. package/src/tableconfig.js +5 -0
  109. package/src/tableediting.d.ts +97 -0
  110. package/src/tableediting.js +157 -176
  111. package/src/tablekeyboard.d.ts +63 -0
  112. package/src/tablekeyboard.js +261 -344
  113. package/src/tablemouse/mouseeventsobserver.d.ts +62 -0
  114. package/src/tablemouse/mouseeventsobserver.js +13 -50
  115. package/src/tablemouse.d.ts +46 -0
  116. package/src/tablemouse.js +154 -202
  117. package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -0
  118. package/src/tableproperties/commands/tablealignmentcommand.js +14 -20
  119. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -0
  120. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +14 -20
  121. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -0
  122. package/src/tableproperties/commands/tablebordercolorcommand.js +27 -37
  123. package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -0
  124. package/src/tableproperties/commands/tableborderstylecommand.js +27 -37
  125. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -0
  126. package/src/tableproperties/commands/tableborderwidthcommand.js +42 -53
  127. package/src/tableproperties/commands/tableheightcommand.d.ts +46 -0
  128. package/src/tableproperties/commands/tableheightcommand.js +29 -33
  129. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -0
  130. package/src/tableproperties/commands/tablepropertycommand.js +68 -112
  131. package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -0
  132. package/src/tableproperties/commands/tablewidthcommand.js +29 -33
  133. package/src/tableproperties/tablepropertiesediting.d.ts +39 -0
  134. package/src/tableproperties/tablepropertiesediting.js +163 -210
  135. package/src/tableproperties/tablepropertiesui.d.ts +113 -0
  136. package/src/tableproperties/tablepropertiesui.js +293 -439
  137. package/src/tableproperties/ui/tablepropertiesview.d.ts +203 -0
  138. package/src/tableproperties/ui/tablepropertiesview.js +427 -718
  139. package/src/tableproperties.d.ts +28 -0
  140. package/src/tableproperties.js +12 -95
  141. package/src/tableselection.d.ts +106 -0
  142. package/src/tableselection.js +279 -376
  143. package/src/tabletoolbar.d.ts +31 -0
  144. package/src/tabletoolbar.js +38 -92
  145. package/src/tableui.d.ts +53 -0
  146. package/src/tableui.js +281 -338
  147. package/src/tableutils.d.ts +448 -0
  148. package/src/tableutils.js +1015 -1229
  149. package/src/tablewalker.d.ts +323 -0
  150. package/src/tablewalker.js +308 -548
  151. package/src/ui/colorinputview.d.ts +143 -0
  152. package/src/ui/colorinputview.js +229 -366
  153. package/src/ui/formrowview.d.ts +61 -0
  154. package/src/ui/formrowview.js +38 -84
  155. package/src/ui/inserttableview.d.ts +77 -0
  156. package/src/ui/inserttableview.js +152 -242
  157. package/src/utils/common.d.ts +42 -0
  158. package/src/utils/common.js +33 -57
  159. package/src/utils/structure.d.ts +245 -0
  160. package/src/utils/structure.js +261 -379
  161. package/src/utils/table-properties.d.ts +67 -0
  162. package/src/utils/table-properties.js +60 -81
  163. package/src/utils/ui/contextualballoon.d.ts +34 -0
  164. package/src/utils/ui/contextualballoon.js +70 -89
  165. package/src/utils/ui/table-properties.d.ts +193 -0
  166. package/src/utils/ui/table-properties.js +259 -319
  167. package/src/utils/ui/widget.d.ts +16 -0
  168. package/src/utils/ui/widget.js +24 -46
  169. package/src/tablecolumnresize/tablecolumnwidthscommand.js +0 -55
  170. package/src/tablecolumnresize/tablewidthresizecommand.js +0 -65
@@ -0,0 +1,28 @@
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, type PluginDependencies } from 'ckeditor5/src/core';
9
+ /**
10
+ * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
11
+ *
12
+ * Read more in the {@glink features/table#table-and-cell-styling-tools Table and cell styling tools} section.
13
+ * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.
14
+ *
15
+ * This is a "glue" plugin that loads the
16
+ * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
17
+ * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
18
+ */
19
+ export default class TableProperties extends Plugin {
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get pluginName(): 'TableProperties';
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get requires(): PluginDependencies;
28
+ }
@@ -2,16 +2,12 @@
2
2
  * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
4
  */
5
-
6
5
  /**
7
6
  * @module table/tableproperties
8
7
  */
9
-
10
8
  import { Plugin } from 'ckeditor5/src/core';
11
-
12
9
  import TablePropertiesEditing from './tableproperties/tablepropertiesediting';
13
10
  import TablePropertiesUI from './tableproperties/tablepropertiesui';
14
-
15
11
  /**
16
12
  * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).
17
13
  *
@@ -21,97 +17,18 @@ import TablePropertiesUI from './tableproperties/tablepropertiesui';
21
17
  * This is a "glue" plugin that loads the
22
18
  * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and
23
19
  * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.
24
- *
25
- * @extends module:core/plugin~Plugin
26
20
  */
27
21
  export default class TableProperties extends Plugin {
28
- /**
29
- * @inheritDoc
30
- */
31
- static get pluginName() {
32
- return 'TableProperties';
33
- }
34
-
35
- /**
36
- * @inheritDoc
37
- */
38
- static get requires() {
39
- return [ TablePropertiesEditing, TablePropertiesUI ];
40
- }
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
+ }
41
34
  }
42
-
43
- /**
44
- * The configuration of the table properties user interface (balloon). It allows to define:
45
- *
46
- * * The color palette for the table border color style field (`tableProperties.borderColors`),
47
- * * The color palette for the table background style field (`tableProperties.backgroundColors`).
48
- *
49
- * const tableConfig = {
50
- * tableProperties: {
51
- * borderColors: [
52
- * {
53
- * color: 'hsl(0, 0%, 90%)',
54
- * label: 'Light grey'
55
- * },
56
- * // ...
57
- * ],
58
- * backgroundColors: [
59
- * {
60
- * color: 'hsl(120, 75%, 60%)',
61
- * label: 'Green'
62
- * },
63
- * // ...
64
- * ]
65
- * }
66
- * };
67
- *
68
- * * The default styles for tables (`tableProperties.defaultProperties`):
69
- *
70
- * const tableConfig = {
71
- * tableProperties: {
72
- * defaultProperties: {
73
- * borderStyle: 'dashed',
74
- * borderColor: 'hsl(0, 0%, 90%)',
75
- * borderWidth: '3px',
76
- * alignment: 'left'
77
- * }
78
- * }
79
- * }
80
- *
81
- * {@link module:table/tableproperties~TablePropertiesOptions Read more about the supported properties.}
82
- *
83
- * **Note**: The `borderColors` and `backgroundColors` options do not impact the data loaded into the editor,
84
- * i.e. they do not limit or filter the colors in the data. They are used only in the user interface
85
- * allowing users to pick colors in a more convenient way. The `defaultProperties` option does impact the data.
86
- * Default values will not be kept in the editor model.
87
- *
88
- * The default color palettes for the table background and the table border are the same
89
- * ({@link module:table/utils/ui/table-properties~defaultColors check out their content}).
90
- *
91
- * Both color palette configurations must follow the
92
- * {@link module:table/table~TableColorConfig table color configuration format}.
93
- *
94
- * Read more about configuring the table feature in {@link module:table/table~TableConfig}.
95
- *
96
- * @member {Object} module:table/table~TableConfig#tableProperties
97
- */
98
-
99
- /**
100
- * The configuration of the table default properties feature.
101
- *
102
- * @typedef {Object} module:table/tableproperties~TablePropertiesOptions
103
- *
104
- * @property {String} width The default `width` of the table.
105
- *
106
- * @property {String} height The default `height` of the table.
107
- *
108
- * @property {String} backgroundColor The default `background-color` of the table.
109
- *
110
- * @property {String} borderColor The default `border-color` of the table.
111
- *
112
- * @property {String} borderWidth The default `border-width` of the table.
113
- *
114
- * @property {String} [borderStyle='none'] The default `border-style` of the table.
115
- *
116
- * @property {String} [alignment='center'] The default `alignment` of the table.
117
- */
@@ -0,0 +1,106 @@
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, type PluginDependencies } from 'ckeditor5/src/core';
9
+ import type { Element, DocumentFragment } from 'ckeditor5/src/engine';
10
+ import '../theme/tableselection.css';
11
+ /**
12
+ * This plugin enables the advanced table cells, rows and columns selection.
13
+ * It is loaded automatically by the {@link module:table/table~Table} plugin.
14
+ */
15
+ export default class TableSelection extends Plugin {
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ static get pluginName(): 'TableSelection';
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires(): PluginDependencies;
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ init(): void;
28
+ /**
29
+ * Returns the currently selected table cells or `null` if it is not a table cells selection.
30
+ */
31
+ getSelectedTableCells(): Array<Element> | null;
32
+ /**
33
+ * Returns the selected table fragment as a document fragment.
34
+ */
35
+ getSelectionAsFragment(): DocumentFragment | null;
36
+ /**
37
+ * Sets the model selection based on given anchor and target cells (can be the same cell).
38
+ * Takes care of setting the backward flag.
39
+ *
40
+ * ```ts
41
+ * const modelRoot = editor.model.document.getRoot();
42
+ * const firstCell = modelRoot.getNodeByPath( [ 0, 0, 0 ] );
43
+ * const lastCell = modelRoot.getNodeByPath( [ 0, 0, 1 ] );
44
+ *
45
+ * const tableSelection = editor.plugins.get( 'TableSelection' );
46
+ * tableSelection.setCellSelection( firstCell, lastCell );
47
+ * ```
48
+ */
49
+ setCellSelection(anchorCell: Element, targetCell: Element): void;
50
+ /**
51
+ * Returns the focus cell from the current selection.
52
+ */
53
+ getFocusCell(): Element | null;
54
+ /**
55
+ * Returns the anchor cell from the current selection.
56
+ */
57
+ getAnchorCell(): Element | null;
58
+ /**
59
+ * Defines a selection converter which marks the selected cells with a specific class.
60
+ *
61
+ * The real DOM selection is put in the last cell. Since the order of ranges is dependent on whether the
62
+ * selection is backward or not, the last cell will usually be close to the "focus" end of the selection
63
+ * (a selection has anchor and focus).
64
+ *
65
+ * The real DOM selection is then hidden with CSS.
66
+ */
67
+ private _defineSelectionConverter;
68
+ /**
69
+ * Creates a listener that reacts to changes in {@link #isEnabled} and, if the plugin was disabled,
70
+ * it collapses the multi-cell selection to a regular selection placed inside a table cell.
71
+ *
72
+ * This listener helps features that disable the table selection plugin bring the selection
73
+ * to a clear state they can work with (for instance, because they don't support multiple cell selection).
74
+ */
75
+ private _enablePluginDisabling;
76
+ /**
77
+ * Overrides the default `model.deleteContent()` behavior over a selected table fragment.
78
+ *
79
+ * @param args Delete content method arguments.
80
+ */
81
+ private _handleDeleteContent;
82
+ /**
83
+ * This handler makes it possible to remove the content of all selected cells by starting to type.
84
+ * If you take a look at {@link #_defineSelectionConverter} you will find out that despite the multi-cell selection being set
85
+ * in the model, the view selection is collapsed in the last cell (because most browsers are unable to render multi-cell selections;
86
+ * yes, it's a hack).
87
+ *
88
+ * When multiple cells are selected in the model and the user starts to type, the
89
+ * {@link module:engine/view/document~Document#event:insertText} event carries information provided by the
90
+ * beforeinput DOM event, that in turn only knows about this collapsed DOM selection in the last cell.
91
+ *
92
+ * As a result, the selected cells have no chance to be cleaned up. To fix this, this listener intercepts
93
+ * the event and injects the custom view selection in the data that translates correctly to the actual state
94
+ * of the multi-cell selection in the model.
95
+ *
96
+ * @param data Insert text event data.
97
+ */
98
+ private _handleInsertTextEvent;
99
+ /**
100
+ * Returns an array of table cells that should be selected based on the
101
+ * given anchor cell and target (focus) cell.
102
+ *
103
+ * The cells are returned in a reverse direction if the selection is backward.
104
+ */
105
+ private _getCellsToSelect;
106
+ }