@ckeditor/ckeditor5-table 36.0.1 → 37.0.0-alpha.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 (166) hide show
  1. package/build/table.js +1 -1
  2. package/package.json +34 -29
  3. package/src/commands/insertcolumncommand.d.ts +61 -0
  4. package/src/commands/insertcolumncommand.js +45 -60
  5. package/src/commands/insertrowcommand.d.ts +60 -0
  6. package/src/commands/insertrowcommand.js +44 -59
  7. package/src/commands/inserttablecommand.d.ts +50 -0
  8. package/src/commands/inserttablecommand.js +51 -68
  9. package/src/commands/mergecellcommand.d.ts +76 -0
  10. package/src/commands/mergecellcommand.js +169 -244
  11. package/src/commands/mergecellscommand.d.ts +33 -0
  12. package/src/commands/mergecellscommand.js +72 -101
  13. package/src/commands/removecolumncommand.d.ts +34 -0
  14. package/src/commands/removecolumncommand.js +88 -102
  15. package/src/commands/removerowcommand.d.ts +34 -0
  16. package/src/commands/removerowcommand.js +63 -80
  17. package/src/commands/selectcolumncommand.d.ts +38 -0
  18. package/src/commands/selectcolumncommand.js +41 -54
  19. package/src/commands/selectrowcommand.d.ts +38 -0
  20. package/src/commands/selectrowcommand.js +38 -48
  21. package/src/commands/setheadercolumncommand.d.ts +55 -0
  22. package/src/commands/setheadercolumncommand.js +48 -73
  23. package/src/commands/setheaderrowcommand.d.ts +58 -0
  24. package/src/commands/setheaderrowcommand.js +56 -85
  25. package/src/commands/splitcellcommand.d.ts +49 -0
  26. package/src/commands/splitcellcommand.js +35 -49
  27. package/src/converters/downcast.d.ts +63 -0
  28. package/src/converters/downcast.js +98 -130
  29. package/src/converters/table-caption-post-fixer.d.ts +20 -0
  30. package/src/converters/table-caption-post-fixer.js +36 -52
  31. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -0
  32. package/src/converters/table-cell-paragraph-post-fixer.js +88 -119
  33. package/src/converters/table-cell-refresh-handler.d.ts +18 -0
  34. package/src/converters/table-cell-refresh-handler.js +29 -48
  35. package/src/converters/table-headings-refresh-handler.d.ts +17 -0
  36. package/src/converters/table-headings-refresh-handler.js +35 -54
  37. package/src/converters/table-layout-post-fixer.d.ts +226 -0
  38. package/src/converters/table-layout-post-fixer.js +276 -313
  39. package/src/converters/tableproperties.d.ts +54 -0
  40. package/src/converters/tableproperties.js +136 -168
  41. package/src/converters/upcasttable.d.ts +49 -0
  42. package/src/converters/upcasttable.js +196 -251
  43. package/src/index.d.ts +29 -0
  44. package/src/index.js +0 -2
  45. package/src/plaintableoutput.d.ts +30 -0
  46. package/src/plaintableoutput.js +107 -135
  47. package/src/table.d.ts +38 -0
  48. package/src/table.js +12 -88
  49. package/src/tablecaption/tablecaptionediting.d.ts +68 -0
  50. package/src/tablecaption/tablecaptionediting.js +104 -135
  51. package/src/tablecaption/tablecaptionui.d.ts +26 -0
  52. package/src/tablecaption/tablecaptionui.js +42 -58
  53. package/src/tablecaption/toggletablecaptioncommand.d.ts +73 -0
  54. package/src/tablecaption/toggletablecaptioncommand.js +77 -92
  55. package/src/tablecaption/utils.d.ts +42 -0
  56. package/src/tablecaption/utils.js +35 -61
  57. package/src/tablecaption.d.ts +27 -0
  58. package/src/tablecaption.js +12 -19
  59. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +37 -0
  60. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +14 -20
  61. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +42 -0
  62. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +27 -37
  63. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +42 -0
  64. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +27 -37
  65. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +56 -0
  66. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +42 -53
  67. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +51 -0
  68. package/src/tablecellproperties/commands/tablecellheightcommand.js +29 -36
  69. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +37 -0
  70. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +14 -20
  71. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +56 -0
  72. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +42 -53
  73. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -0
  74. package/src/tablecellproperties/commands/tablecellpropertycommand.js +77 -122
  75. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +45 -0
  76. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +14 -20
  77. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +47 -0
  78. package/src/tablecellproperties/tablecellpropertiesediting.js +194 -236
  79. package/src/tablecellproperties/tablecellpropertiesui.d.ts +117 -0
  80. package/src/tablecellproperties/tablecellpropertiesui.js +303 -456
  81. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +227 -0
  82. package/src/tablecellproperties/ui/tablecellpropertiesview.js +509 -844
  83. package/src/tablecellproperties.d.ts +33 -0
  84. package/src/tablecellproperties.js +12 -98
  85. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +51 -0
  86. package/src/tablecellwidth/commands/tablecellwidthcommand.js +29 -35
  87. package/src/tablecellwidth/tablecellwidthediting.d.ts +34 -0
  88. package/src/tablecellwidth/tablecellwidthediting.js +26 -38
  89. package/src/tableclipboard.d.ts +68 -0
  90. package/src/tableclipboard.js +429 -568
  91. package/src/tablecolumnresize/constants.d.ts +20 -0
  92. package/src/tablecolumnresize/constants.js +0 -10
  93. package/src/tablecolumnresize/converters.d.ts +18 -0
  94. package/src/tablecolumnresize/converters.js +35 -119
  95. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +142 -0
  96. package/src/tablecolumnresize/tablecolumnresizeediting.js +545 -711
  97. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -0
  98. package/src/tablecolumnresize/tablewidthscommand.js +61 -0
  99. package/src/tablecolumnresize/utils.d.ts +141 -0
  100. package/src/tablecolumnresize/utils.js +256 -233
  101. package/src/tablecolumnresize.d.ts +29 -0
  102. package/src/tablecolumnresize.js +12 -19
  103. package/src/tableconfig.d.ts +341 -0
  104. package/src/tableconfig.js +5 -0
  105. package/src/tableediting.d.ts +102 -0
  106. package/src/tableediting.js +157 -176
  107. package/src/tablekeyboard.d.ts +68 -0
  108. package/src/tablekeyboard.js +261 -344
  109. package/src/tablemouse/mouseeventsobserver.d.ts +62 -0
  110. package/src/tablemouse/mouseeventsobserver.js +12 -49
  111. package/src/tablemouse.d.ts +51 -0
  112. package/src/tablemouse.js +154 -202
  113. package/src/tableproperties/commands/tablealignmentcommand.d.ts +37 -0
  114. package/src/tableproperties/commands/tablealignmentcommand.js +14 -20
  115. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +37 -0
  116. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +14 -20
  117. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +42 -0
  118. package/src/tableproperties/commands/tablebordercolorcommand.js +27 -37
  119. package/src/tableproperties/commands/tableborderstylecommand.d.ts +42 -0
  120. package/src/tableproperties/commands/tableborderstylecommand.js +27 -37
  121. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +56 -0
  122. package/src/tableproperties/commands/tableborderwidthcommand.js +42 -53
  123. package/src/tableproperties/commands/tableheightcommand.d.ts +51 -0
  124. package/src/tableproperties/commands/tableheightcommand.js +29 -33
  125. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -0
  126. package/src/tableproperties/commands/tablepropertycommand.js +68 -112
  127. package/src/tableproperties/commands/tablewidthcommand.d.ts +51 -0
  128. package/src/tableproperties/commands/tablewidthcommand.js +29 -33
  129. package/src/tableproperties/tablepropertiesediting.d.ts +45 -0
  130. package/src/tableproperties/tablepropertiesediting.js +164 -210
  131. package/src/tableproperties/tablepropertiesui.d.ts +119 -0
  132. package/src/tableproperties/tablepropertiesui.js +294 -439
  133. package/src/tableproperties/ui/tablepropertiesview.d.ts +203 -0
  134. package/src/tableproperties/ui/tablepropertiesview.js +427 -718
  135. package/src/tableproperties.d.ts +33 -0
  136. package/src/tableproperties.js +12 -95
  137. package/src/tableselection.d.ts +111 -0
  138. package/src/tableselection.js +279 -376
  139. package/src/tabletoolbar.d.ts +37 -0
  140. package/src/tabletoolbar.js +39 -92
  141. package/src/tableui.d.ts +58 -0
  142. package/src/tableui.js +281 -338
  143. package/src/tableutils.d.ts +453 -0
  144. package/src/tableutils.js +1015 -1229
  145. package/src/tablewalker.d.ts +323 -0
  146. package/src/tablewalker.js +308 -548
  147. package/src/ui/colorinputview.d.ts +143 -0
  148. package/src/ui/colorinputview.js +229 -366
  149. package/src/ui/formrowview.d.ts +61 -0
  150. package/src/ui/formrowview.js +38 -84
  151. package/src/ui/inserttableview.d.ts +77 -0
  152. package/src/ui/inserttableview.js +152 -242
  153. package/src/utils/common.d.ts +42 -0
  154. package/src/utils/common.js +33 -57
  155. package/src/utils/structure.d.ts +245 -0
  156. package/src/utils/structure.js +261 -379
  157. package/src/utils/table-properties.d.ts +67 -0
  158. package/src/utils/table-properties.js +60 -81
  159. package/src/utils/ui/contextualballoon.d.ts +34 -0
  160. package/src/utils/ui/contextualballoon.js +70 -89
  161. package/src/utils/ui/table-properties.d.ts +193 -0
  162. package/src/utils/ui/table-properties.js +259 -319
  163. package/src/utils/ui/widget.d.ts +16 -0
  164. package/src/utils/ui/widget.js +24 -46
  165. package/src/tablecolumnresize/tablecolumnwidthscommand.js +0 -55
  166. package/src/tablecolumnresize/tablewidthresizecommand.js +0 -65
@@ -2,15 +2,11 @@
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/tablecaption/toggletablecaptioncommand
8
7
  */
9
-
10
8
  import { Command } from 'ckeditor5/src/core';
11
-
12
9
  import { getCaptionFromTableModelElement, getSelectionAffectedTable } from './utils';
13
-
14
10
  /**
15
11
  * The toggle table caption command.
16
12
  *
@@ -22,98 +18,87 @@ import { getCaptionFromTableModelElement, getSelectionAffectedTable } from './ut
22
18
  * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),
23
19
  * * removes the table caption if the selection is anchored in one.
24
20
  *
25
- * // Toggle the presence of the caption.
26
- * editor.execute( 'toggleTableCaption' );
21
+ * ```ts
22
+ * // Toggle the presence of the caption.
23
+ * editor.execute( 'toggleTableCaption' );
24
+ * ```
27
25
  *
28
26
  * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using
29
27
  * the `focusCaptionOnShow` option:
30
28
  *
31
- * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
32
- *
33
- * @extends module:core/command~Command
29
+ * ```ts
30
+ * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
31
+ * ```
34
32
  */
35
33
  export default class ToggleTableCaptionCommand extends Command {
36
- /**
37
- * @inheritDoc
38
- */
39
- refresh() {
40
- const editor = this.editor;
41
- const tableElement = getSelectionAffectedTable( editor.model.document.selection );
42
-
43
- this.isEnabled = !!tableElement;
44
-
45
- if ( !this.isEnabled ) {
46
- this.value = false;
47
- } else {
48
- this.value = !!getCaptionFromTableModelElement( tableElement );
49
- }
50
- }
51
-
52
- /**
53
- * Executes the command.
54
- *
55
- * editor.execute( 'toggleTableCaption' );
56
- *
57
- * @param {Object} [options] Options for the executed command.
58
- * @param {String} [options.focusCaptionOnShow] When true and the caption shows up, the selection will be moved into it straight away.
59
- * @fires execute
60
- */
61
- execute( options = {} ) {
62
- const { focusCaptionOnShow } = options;
63
-
64
- this.editor.model.change( writer => {
65
- if ( this.value ) {
66
- this._hideTableCaption( writer );
67
- } else {
68
- this._showTableCaption( writer, focusCaptionOnShow );
69
- }
70
- } );
71
- }
72
-
73
- /**
74
- * Shows the table caption. Also:
75
- *
76
- * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
77
- * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
78
- *
79
- * @private
80
- * @param {module:engine/model/writer~Writer} writer
81
- * @param {Boolean} focusCaptionOnShow Default focus behavior when showing the caption.
82
- */
83
- _showTableCaption( writer, focusCaptionOnShow ) {
84
- const model = this.editor.model;
85
- const tableElement = getSelectionAffectedTable( model.document.selection );
86
- const tableCaptionEditing = this.editor.plugins.get( 'TableCaptionEditing' );
87
- const savedCaptionElement = tableCaptionEditing._getSavedCaption( tableElement );
88
-
89
- // Try restoring the caption from the TableCaptionEditing plugin storage.
90
- const newCaptionElement = savedCaptionElement || writer.createElement( 'caption' );
91
-
92
- model.insertContent( newCaptionElement, tableElement, 'end' );
93
-
94
- if ( focusCaptionOnShow ) {
95
- writer.setSelection( newCaptionElement, 'in' );
96
- }
97
- }
98
-
99
- /**
100
- * Hides the caption of a selected table (or an table caption the selection is anchored to).
101
- *
102
- * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
103
- * a reversible action.
104
- *
105
- * @private
106
- * @param {module:engine/model/writer~Writer} writer
107
- */
108
- _hideTableCaption( writer ) {
109
- const model = this.editor.model;
110
- const tableElement = getSelectionAffectedTable( model.document.selection );
111
- const tableCaptionEditing = this.editor.plugins.get( 'TableCaptionEditing' );
112
- const captionElement = getCaptionFromTableModelElement( tableElement );
113
-
114
- // Store the caption content so it can be restored quickly if the user changes their mind.
115
- tableCaptionEditing._saveCaption( tableElement, captionElement );
116
-
117
- model.deleteContent( writer.createSelection( captionElement, 'on' ) );
118
- }
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ refresh() {
38
+ const editor = this.editor;
39
+ const tableElement = getSelectionAffectedTable(editor.model.document.selection);
40
+ this.isEnabled = !!tableElement;
41
+ if (!this.isEnabled) {
42
+ this.value = false;
43
+ }
44
+ else {
45
+ this.value = !!getCaptionFromTableModelElement(tableElement);
46
+ }
47
+ }
48
+ /**
49
+ * Executes the command.
50
+ *
51
+ * ```ts
52
+ * editor.execute( 'toggleTableCaption' );
53
+ * ```
54
+ *
55
+ * @param options Options for the executed command.
56
+ * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.
57
+ * @fires execute
58
+ */
59
+ execute({ focusCaptionOnShow = false } = {}) {
60
+ this.editor.model.change(writer => {
61
+ if (this.value) {
62
+ this._hideTableCaption(writer);
63
+ }
64
+ else {
65
+ this._showTableCaption(writer, focusCaptionOnShow);
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * Shows the table caption. Also:
71
+ *
72
+ * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
73
+ * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
74
+ *
75
+ * @param focusCaptionOnShow Default focus behavior when showing the caption.
76
+ */
77
+ _showTableCaption(writer, focusCaptionOnShow) {
78
+ const model = this.editor.model;
79
+ const tableElement = getSelectionAffectedTable(model.document.selection);
80
+ const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
81
+ const savedCaptionElement = tableCaptionEditing._getSavedCaption(tableElement);
82
+ // Try restoring the caption from the TableCaptionEditing plugin storage.
83
+ const newCaptionElement = savedCaptionElement || writer.createElement('caption');
84
+ model.insertContent(newCaptionElement, tableElement, 'end');
85
+ if (focusCaptionOnShow) {
86
+ writer.setSelection(newCaptionElement, 'in');
87
+ }
88
+ }
89
+ /**
90
+ * Hides the caption of a selected table (or an table caption the selection is anchored to).
91
+ *
92
+ * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
93
+ * a reversible action.
94
+ */
95
+ _hideTableCaption(writer) {
96
+ const model = this.editor.model;
97
+ const tableElement = getSelectionAffectedTable(model.document.selection);
98
+ const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
99
+ const captionElement = getCaptionFromTableModelElement(tableElement);
100
+ // Store the caption content so it can be restored quickly if the user changes their mind.
101
+ tableCaptionEditing._saveCaption(tableElement, captionElement);
102
+ model.deleteContent(writer.createSelection(captionElement, 'on'));
103
+ }
119
104
  }
@@ -0,0 +1,42 @@
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/tablecaption/utils
7
+ */
8
+ import type { DocumentFragment, DocumentSelection, Element, ViewElement } from 'ckeditor5/src/engine';
9
+ /**
10
+ * Checks if the provided model element is a `table`.
11
+ *
12
+ * @param modelElement Element to check if it is a table.
13
+ */
14
+ export declare function isTable(modelElement: Element | DocumentFragment | null): boolean;
15
+ /**
16
+ * Returns the caption model element from a given table element. Returns `null` if no caption is found.
17
+ *
18
+ * @param tableModelElement Table element in which we will try to find a caption element.
19
+ */
20
+ export declare function getCaptionFromTableModelElement(tableModelElement: Element): Element | null;
21
+ /**
22
+ * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
23
+ *
24
+ * @param selection The selection checked for caption presence.
25
+ */
26
+ export declare function getCaptionFromModelSelection(selection: DocumentSelection): Element | null;
27
+ /**
28
+ * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
29
+ *
30
+ * There are two possible forms of the valid caption:
31
+ * - A `<figcaption>` element inside a `<figure class="table">` element.
32
+ * - A `<caption>` inside a <table>.
33
+ *
34
+ * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
35
+ */
36
+ export declare function matchTableCaptionViewElement(element: ViewElement): {
37
+ name: true;
38
+ } | null;
39
+ /**
40
+ * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
41
+ */
42
+ export declare function getSelectionAffectedTable(selection: DocumentSelection): Element;
@@ -2,54 +2,39 @@
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
- /**
7
- * @module table/tablecaption/utils
8
- */
9
-
10
5
  /**
11
6
  * Checks if the provided model element is a `table`.
12
7
  *
13
- * @param {module:engine/model/element~Element} modelElement Element to check if it is a table.
14
- * @returns {Boolean}
8
+ * @param modelElement Element to check if it is a table.
15
9
  */
16
- export function isTable( modelElement ) {
17
- return !!modelElement && modelElement.is( 'element', 'table' );
10
+ export function isTable(modelElement) {
11
+ return !!modelElement && modelElement.is('element', 'table');
18
12
  }
19
-
20
13
  /**
21
14
  * Returns the caption model element from a given table element. Returns `null` if no caption is found.
22
15
  *
23
- * @param {module:engine/model/element~Element} tableModelElement Table element in which we will try to find a caption element.
24
- * @returns {module:engine/model/element~Element|null}
16
+ * @param tableModelElement Table element in which we will try to find a caption element.
25
17
  */
26
- export function getCaptionFromTableModelElement( tableModelElement ) {
27
- for ( const node of tableModelElement.getChildren() ) {
28
- if ( node.is( 'element', 'caption' ) ) {
29
- return node;
30
- }
31
- }
32
-
33
- return null;
18
+ export function getCaptionFromTableModelElement(tableModelElement) {
19
+ for (const node of tableModelElement.getChildren()) {
20
+ if (node.is('element', 'caption')) {
21
+ return node;
22
+ }
23
+ }
24
+ return null;
34
25
  }
35
-
36
26
  /**
37
27
  * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
38
28
  *
39
- * @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} selection
40
- * The selection checked for caption presence.
41
- * @returns {module:engine/model/element~Element|null}
29
+ * @param selection The selection checked for caption presence.
42
30
  */
43
- export function getCaptionFromModelSelection( selection ) {
44
- const tableElement = getSelectionAffectedTable( selection );
45
-
46
- if ( !tableElement ) {
47
- return null;
48
- }
49
-
50
- return getCaptionFromTableModelElement( tableElement );
31
+ export function getCaptionFromModelSelection(selection) {
32
+ const tableElement = getSelectionAffectedTable(selection);
33
+ if (!tableElement) {
34
+ return null;
35
+ }
36
+ return getCaptionFromTableModelElement(tableElement);
51
37
  }
52
-
53
38
  /**
54
39
  * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
55
40
  *
@@ -57,37 +42,26 @@ export function getCaptionFromModelSelection( selection ) {
57
42
  * - A `<figcaption>` element inside a `<figure class="table">` element.
58
43
  * - A `<caption>` inside a <table>.
59
44
  *
60
- * @param {module:engine/view/element~Element} element
61
- * @returns {Object|null} Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element
62
- * cannot be matched.
45
+ * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
63
46
  */
64
- export function matchTableCaptionViewElement( element ) {
65
- const parent = element.parent;
66
-
67
- if ( element.name == 'figcaption' && parent && parent.name == 'figure' && parent.hasClass( 'table' ) ) {
68
- return { name: true };
69
- }
70
-
71
- if ( element.name == 'caption' && parent && parent.name == 'table' ) {
72
- return { name: true };
73
- }
74
-
75
- return null;
47
+ export function matchTableCaptionViewElement(element) {
48
+ const parent = element.parent;
49
+ if (element.name == 'figcaption' && parent && parent.is('element', 'figure') && parent.hasClass('table')) {
50
+ return { name: true };
51
+ }
52
+ if (element.name == 'caption' && parent && parent.is('element', 'table')) {
53
+ return { name: true };
54
+ }
55
+ return null;
76
56
  }
77
-
78
57
  /**
79
58
  * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
80
- *
81
- * @param {module:engine/model/position~Position} position
82
- * @returns {module:engine/model/element~Element}
83
59
  */
84
- export function getSelectionAffectedTable( selection ) {
85
- const selectedElement = selection.getSelectedElement();
86
-
87
- // Is the command triggered from the `tableToolbar`?
88
- if ( selectedElement && selectedElement.is( 'element', 'table' ) ) {
89
- return selectedElement;
90
- }
91
-
92
- return selection.getFirstPosition().findAncestor( 'table' );
60
+ export function getSelectionAffectedTable(selection) {
61
+ const selectedElement = selection.getSelectedElement();
62
+ // Is the command triggered from the `tableToolbar`?
63
+ if (selectedElement && selectedElement.is('element', 'table')) {
64
+ return selectedElement;
65
+ }
66
+ return selection.getFirstPosition().findAncestor('table');
93
67
  }
@@ -0,0 +1,27 @@
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/tablecaption
7
+ */
8
+ import { Plugin, type PluginDependencies } from 'ckeditor5/src/core';
9
+ import '../theme/tablecaption.css';
10
+ /**
11
+ * The table caption plugin.
12
+ */
13
+ export default class TableCaption extends Plugin {
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ static get pluginName(): 'TableCaption';
18
+ /**
19
+ * @inheritDoc
20
+ */
21
+ static get requires(): PluginDependencies;
22
+ }
23
+ declare module '@ckeditor/ckeditor5-core' {
24
+ interface PluginsMap {
25
+ [TableCaption.pluginName]: TableCaption;
26
+ }
27
+ }
@@ -2,34 +2,27 @@
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/tablecaption
8
7
  */
9
-
10
8
  import { Plugin } from 'ckeditor5/src/core';
11
9
  import TableCaptionEditing from './tablecaption/tablecaptionediting';
12
10
  import TableCaptionUI from './tablecaption/tablecaptionui';
13
-
14
11
  import '../theme/tablecaption.css';
15
-
16
12
  /**
17
13
  * The table caption plugin.
18
- *
19
- * @extends module:core/plugin~Plugin
20
14
  */
21
15
  export default class TableCaption extends Plugin {
22
- /**
23
- * @inheritDoc
24
- */
25
- static get pluginName() {
26
- return 'TableCaption';
27
- }
28
-
29
- /**
30
- * @inheritDoc
31
- */
32
- static get requires() {
33
- return [ TableCaptionEditing, TableCaptionUI ];
34
- }
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ static get pluginName() {
20
+ return 'TableCaption';
21
+ }
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ static get requires() {
26
+ return [TableCaptionEditing, TableCaptionUI];
27
+ }
35
28
  }
@@ -0,0 +1,37 @@
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/tablecellproperties/commands/tablecellbackgroundcolorcommand
7
+ */
8
+ import type { Editor } from 'ckeditor5/src/core';
9
+ import TableCellPropertyCommand from './tablecellpropertycommand';
10
+ /**
11
+ * The table cell background color command.
12
+ *
13
+ * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as
14
+ * the `'tableCellBackgroundColor'` editor command.
15
+ *
16
+ * To change the background color of selected cells, execute the command:
17
+ *
18
+ * ```ts
19
+ * editor.execute( 'tableCellBackgroundColor', {
20
+ * value: '#f00'
21
+ * } );
22
+ * ```
23
+ */
24
+ export default class TableCellBackgroundColorCommand extends TableCellPropertyCommand {
25
+ /**
26
+ * Creates a new `TableCellBackgroundColorCommand` instance.
27
+ *
28
+ * @param editor An editor in which this command will be used.
29
+ * @param defaultValue The default value of the attribute.
30
+ */
31
+ constructor(editor: Editor, defaultValue: string);
32
+ }
33
+ declare module '@ckeditor/ckeditor5-core' {
34
+ interface CommandsMap {
35
+ tableCellBackgroundColor: TableCellBackgroundColorCommand;
36
+ }
37
+ }
@@ -2,13 +2,7 @@
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
- /**
7
- * @module table/tablecellproperties/commands/tablecellbackgroundcolorcommand
8
- */
9
-
10
5
  import TableCellPropertyCommand from './tablecellpropertycommand';
11
-
12
6
  /**
13
7
  * The table cell background color command.
14
8
  *
@@ -17,20 +11,20 @@ import TableCellPropertyCommand from './tablecellpropertycommand';
17
11
  *
18
12
  * To change the background color of selected cells, execute the command:
19
13
  *
20
- * editor.execute( 'tableCellBackgroundColor', {
21
- * value: '#f00'
22
- * } );
23
- *
24
- * @extends module:table/tablecellproperties/commands/tablecellpropertycommand~TableCellPropertyCommand
14
+ * ```ts
15
+ * editor.execute( 'tableCellBackgroundColor', {
16
+ * value: '#f00'
17
+ * } );
18
+ * ```
25
19
  */
26
20
  export default class TableCellBackgroundColorCommand extends TableCellPropertyCommand {
27
- /**
28
- * Creates a new `TableCellBackgroundColorCommand` instance.
29
- *
30
- * @param {module:core/editor/editor~Editor} editor An editor in which this command will be used.
31
- * @param {String} defaultValue The default value of the attribute.
32
- */
33
- constructor( editor, defaultValue ) {
34
- super( editor, 'tableCellBackgroundColor', defaultValue );
35
- }
21
+ /**
22
+ * Creates a new `TableCellBackgroundColorCommand` instance.
23
+ *
24
+ * @param editor An editor in which this command will be used.
25
+ * @param defaultValue The default value of the attribute.
26
+ */
27
+ constructor(editor, defaultValue) {
28
+ super(editor, 'tableCellBackgroundColor', defaultValue);
29
+ }
36
30
  }
@@ -0,0 +1,42 @@
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/tablecellproperties/commands/tablecellbordercolorcommand
7
+ */
8
+ import type { Element } from 'ckeditor5/src/engine';
9
+ import type { Editor } from 'ckeditor5/src/core';
10
+ import TableCellPropertyCommand from './tablecellpropertycommand';
11
+ /**
12
+ * The table cell border color command.
13
+ *
14
+ * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as
15
+ * the `'tableCellBorderColor'` editor command.
16
+ *
17
+ * To change the border color of selected cells, execute the command:
18
+ *
19
+ * ```ts
20
+ * editor.execute( 'tableCellBorderColor', {
21
+ * value: '#f00'
22
+ * } );
23
+ * ```
24
+ */
25
+ export default class TableCellBorderColorCommand extends TableCellPropertyCommand {
26
+ /**
27
+ * Creates a new `TableCellBorderColorCommand` instance.
28
+ *
29
+ * @param editor An editor in which this command will be used.
30
+ * @param defaultValue The default value of the attribute.
31
+ */
32
+ constructor(editor: Editor, defaultValue: string);
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ protected _getAttribute(tableCell: Element): unknown;
37
+ }
38
+ declare module '@ckeditor/ckeditor5-core' {
39
+ interface CommandsMap {
40
+ tableCellBorderColor: TableCellBorderColorCommand;
41
+ }
42
+ }
@@ -2,14 +2,8 @@
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
- /**
7
- * @module table/tablecellproperties/commands/tablecellbordercolorcommand
8
- */
9
-
10
5
  import TableCellPropertyCommand from './tablecellpropertycommand';
11
6
  import { getSingleValue } from '../../utils/table-properties';
12
-
13
7
  /**
14
8
  * The table cell border color command.
15
9
  *
@@ -18,37 +12,33 @@ import { getSingleValue } from '../../utils/table-properties';
18
12
  *
19
13
  * To change the border color of selected cells, execute the command:
20
14
  *
21
- * editor.execute( 'tableCellBorderColor', {
22
- * value: '#f00'
23
- * } );
24
- *
25
- * @extends module:table/tablecellproperties/commands/tablecellpropertycommand~TableCellPropertyCommand
15
+ * ```ts
16
+ * editor.execute( 'tableCellBorderColor', {
17
+ * value: '#f00'
18
+ * } );
19
+ * ```
26
20
  */
27
21
  export default class TableCellBorderColorCommand extends TableCellPropertyCommand {
28
- /**
29
- * Creates a new `TableCellBorderColorCommand` instance.
30
- *
31
- * @param {module:core/editor/editor~Editor} editor An editor in which this command will be used.
32
- * @param {String} defaultValue The default value of the attribute.
33
- */
34
- constructor( editor, defaultValue ) {
35
- super( editor, 'tableCellBorderColor', defaultValue );
36
- }
37
-
38
- /**
39
- * @inheritDoc
40
- */
41
- _getAttribute( tableCell ) {
42
- if ( !tableCell ) {
43
- return;
44
- }
45
-
46
- const value = getSingleValue( tableCell.getAttribute( this.attributeName ) );
47
-
48
- if ( value === this._defaultValue ) {
49
- return;
50
- }
51
-
52
- return value;
53
- }
22
+ /**
23
+ * Creates a new `TableCellBorderColorCommand` instance.
24
+ *
25
+ * @param editor An editor in which this command will be used.
26
+ * @param defaultValue The default value of the attribute.
27
+ */
28
+ constructor(editor, defaultValue) {
29
+ super(editor, 'tableCellBorderColor', defaultValue);
30
+ }
31
+ /**
32
+ * @inheritDoc
33
+ */
34
+ _getAttribute(tableCell) {
35
+ if (!tableCell) {
36
+ return;
37
+ }
38
+ const value = getSingleValue(tableCell.getAttribute(this.attributeName));
39
+ if (value === this._defaultValue) {
40
+ return;
41
+ }
42
+ return value;
43
+ }
54
44
  }