@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,150 +2,122 @@
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/plaintableoutput
8
7
  */
9
-
10
8
  import { Plugin } from 'ckeditor5/src/core';
11
9
  import Table from './table';
12
-
13
10
  /**
14
11
  * The plain table output feature.
15
- *
16
- * @extends module:core/plugin~Plugin
17
12
  */
18
13
  export default class PlainTableOutput extends Plugin {
19
- /**
20
- * @inheritDoc
21
- */
22
- static get pluginName() {
23
- return 'PlainTableOutput';
24
- }
25
-
26
- /**
27
- * @inheritDoc
28
- */
29
- static get requires() {
30
- return [ Table ];
31
- }
32
-
33
- /**
34
- * @inheritDoc
35
- */
36
- init() {
37
- const editor = this.editor;
38
-
39
- // Override default table data downcast converter.
40
- editor.conversion.for( 'dataDowncast' ).elementToStructure( {
41
- model: 'table',
42
- view: downcastTableElement,
43
- converterPriority: 'high'
44
- } );
45
-
46
- // Make sure table <caption> is downcasted into <caption> in the data pipeline when necessary.
47
- if ( editor.plugins.has( 'TableCaption' ) ) {
48
- editor.conversion.for( 'dataDowncast' ).elementToElement( {
49
- model: 'caption',
50
- view: ( modelElement, { writer } ) => {
51
- if ( modelElement.parent.name === 'table' ) {
52
- return writer.createContainerElement( 'caption' );
53
- }
54
- },
55
- converterPriority: 'high'
56
- } );
57
- }
58
-
59
- // Handle border-style, border-color, border-width and background-color table attributes.
60
- if ( editor.plugins.has( 'TableProperties' ) ) {
61
- downcastTableBorderAndBackgroundAttributes( editor );
62
- }
63
- }
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ static get pluginName() {
18
+ return 'PlainTableOutput';
19
+ }
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires() {
24
+ return [Table];
25
+ }
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ init() {
30
+ const editor = this.editor;
31
+ // Override default table data downcast converter.
32
+ editor.conversion.for('dataDowncast').elementToStructure({
33
+ model: 'table',
34
+ view: downcastTableElement,
35
+ converterPriority: 'high'
36
+ });
37
+ // Make sure table <caption> is downcasted into <caption> in the data pipeline when necessary.
38
+ if (editor.plugins.has('TableCaption')) {
39
+ editor.conversion.for('dataDowncast').elementToElement({
40
+ model: 'caption',
41
+ view: (modelElement, { writer }) => {
42
+ if (modelElement.parent.name === 'table') {
43
+ return writer.createContainerElement('caption');
44
+ }
45
+ },
46
+ converterPriority: 'high'
47
+ });
48
+ }
49
+ // Handle border-style, border-color, border-width and background-color table attributes.
50
+ if (editor.plugins.has('TableProperties')) {
51
+ downcastTableBorderAndBackgroundAttributes(editor);
52
+ }
53
+ }
64
54
  }
65
-
66
- // The plain table downcast converter callback.
67
- //
68
- // @private
69
- // @param {module:engine/model/element~Element} Table model element.
70
- // @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi The conversion API object.
71
- // @returns {module:engine/view/containerelement~ContainerElement} Created element.
72
- function downcastTableElement( table, { writer } ) {
73
- const headingRows = table.getAttribute( 'headingRows' ) || 0;
74
-
75
- // Table head rows slot.
76
- const headRowsSlot = writer.createSlot( element =>
77
- element.is( 'element', 'tableRow' ) && element.index < headingRows
78
- );
79
-
80
- // Table body rows slot.
81
- const bodyRowsSlot = writer.createSlot( element =>
82
- element.is( 'element', 'tableRow' ) && element.index >= headingRows
83
- );
84
-
85
- // Table children slot.
86
- const childrenSlot = writer.createSlot( element => !element.is( 'element', 'tableRow' ) );
87
-
88
- // Table <thead> element with all the heading rows.
89
- const theadElement = writer.createContainerElement( 'thead', null, headRowsSlot );
90
-
91
- // Table <tbody> element with all the body rows.
92
- const tbodyElement = writer.createContainerElement( 'tbody', null, bodyRowsSlot );
93
-
94
- // Table contents element containing <thead> and <tbody> when necessary.
95
- const tableContentElements = [];
96
-
97
- if ( headingRows ) {
98
- tableContentElements.push( theadElement );
99
- }
100
-
101
- if ( headingRows < table.childCount ) {
102
- tableContentElements.push( tbodyElement );
103
- }
104
-
105
- // Create table structure.
106
- //
107
- // <table>
108
- // {children-slot-like-caption}
109
- // <thead>
110
- // {table-head-rows-slot}
111
- // </thead>
112
- // <tbody>
113
- // {table-body-rows-slot}
114
- // </tbody>
115
- // </table>
116
- return writer.createContainerElement( 'table', null, [ childrenSlot, ...tableContentElements ] );
55
+ /**
56
+ * The plain table downcast converter callback.
57
+ *
58
+ * @param table Table model element.
59
+ * @param conversionApi The conversion API object.
60
+ * @returns Created element.
61
+ */
62
+ function downcastTableElement(table, { writer }) {
63
+ const headingRows = table.getAttribute('headingRows') || 0;
64
+ // Table head rows slot.
65
+ const headRowsSlot = writer.createSlot((element) => element.is('element', 'tableRow') && element.index < headingRows);
66
+ // Table body rows slot.
67
+ const bodyRowsSlot = writer.createSlot((element) => element.is('element', 'tableRow') && element.index >= headingRows);
68
+ // Table children slot.
69
+ const childrenSlot = writer.createSlot((element) => !element.is('element', 'tableRow'));
70
+ // Table <thead> element with all the heading rows.
71
+ const theadElement = writer.createContainerElement('thead', null, headRowsSlot);
72
+ // Table <tbody> element with all the body rows.
73
+ const tbodyElement = writer.createContainerElement('tbody', null, bodyRowsSlot);
74
+ // Table contents element containing <thead> and <tbody> when necessary.
75
+ const tableContentElements = [];
76
+ if (headingRows) {
77
+ tableContentElements.push(theadElement);
78
+ }
79
+ if (headingRows < table.childCount) {
80
+ tableContentElements.push(tbodyElement);
81
+ }
82
+ // Create table structure.
83
+ //
84
+ // <table>
85
+ // {children-slot-like-caption}
86
+ // <thead>
87
+ // {table-head-rows-slot}
88
+ // </thead>
89
+ // <tbody>
90
+ // {table-body-rows-slot}
91
+ // </tbody>
92
+ // </table>
93
+ return writer.createContainerElement('table', null, [childrenSlot, ...tableContentElements]);
117
94
  }
118
-
119
- // Register table border and background attributes converters.
120
- //
121
- // @private
122
- // @param {module:core/editor/editor~Editor} editor
123
- function downcastTableBorderAndBackgroundAttributes( editor ) {
124
- const modelAttributes = {
125
- 'border-width': 'tableBorderWidth',
126
- 'border-color': 'tableBorderColor',
127
- 'border-style': 'tableBorderStyle',
128
- 'background-color': 'tableBackgroundColor'
129
- };
130
-
131
- for ( const [ styleName, modelAttribute ] of Object.entries( modelAttributes ) ) {
132
- editor.conversion.for( 'dataDowncast' ).add( dispatcher => {
133
- return dispatcher.on( `attribute:${ modelAttribute }:table`, ( evt, data, conversionApi ) => {
134
- const { item, attributeNewValue } = data;
135
- const { mapper, writer } = conversionApi;
136
-
137
- if ( !conversionApi.consumable.consume( item, evt.name ) ) {
138
- return;
139
- }
140
-
141
- const table = mapper.toViewElement( item );
142
-
143
- if ( attributeNewValue ) {
144
- writer.setStyle( styleName, attributeNewValue, table );
145
- } else {
146
- writer.removeStyle( styleName, table );
147
- }
148
- }, { priority: 'high' } );
149
- } );
150
- }
95
+ /**
96
+ * Register table border and background attributes converters.
97
+ */
98
+ function downcastTableBorderAndBackgroundAttributes(editor) {
99
+ const modelAttributes = {
100
+ 'border-width': 'tableBorderWidth',
101
+ 'border-color': 'tableBorderColor',
102
+ 'border-style': 'tableBorderStyle',
103
+ 'background-color': 'tableBackgroundColor'
104
+ };
105
+ for (const [styleName, modelAttribute] of Object.entries(modelAttributes)) {
106
+ editor.conversion.for('dataDowncast').add(dispatcher => {
107
+ return dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
108
+ const { item, attributeNewValue } = data;
109
+ const { mapper, writer } = conversionApi;
110
+ if (!conversionApi.consumable.consume(item, evt.name)) {
111
+ return;
112
+ }
113
+ const table = mapper.toViewElement(item);
114
+ if (attributeNewValue) {
115
+ writer.setStyle(styleName, attributeNewValue, table);
116
+ }
117
+ else {
118
+ writer.removeStyle(styleName, table);
119
+ }
120
+ }, { priority: 'high' });
121
+ });
122
+ }
151
123
  }
package/src/table.d.ts ADDED
@@ -0,0 +1,38 @@
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/table
7
+ */
8
+ import { Plugin, type PluginDependencies } from 'ckeditor5/src/core';
9
+ import '../theme/table.css';
10
+ /**
11
+ * The table plugin.
12
+ *
13
+ * For a detailed overview, check the {@glink features/table Table feature documentation}.
14
+ *
15
+ * This is a "glue" plugin that loads the following table features:
16
+ *
17
+ * * {@link module:table/tableediting~TableEditing editing feature},
18
+ * * {@link module:table/tableselection~TableSelection selection feature},
19
+ * * {@link module:table/tablekeyboard~TableKeyboard keyboard navigation feature},
20
+ * * {@link module:table/tablemouse~TableMouse mouse selection feature},
21
+ * * {@link module:table/tableclipboard~TableClipboard clipboard feature},
22
+ * * {@link module:table/tableui~TableUI UI feature}.
23
+ */
24
+ export default class Table extends Plugin {
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ static get requires(): PluginDependencies;
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ static get pluginName(): 'Table';
33
+ }
34
+ declare module '@ckeditor/ckeditor5-core' {
35
+ interface PluginsMap {
36
+ [Table.pluginName]: Table;
37
+ }
38
+ }
package/src/table.js CHANGED
@@ -2,23 +2,18 @@
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/table
8
7
  */
9
-
10
8
  import { Plugin } from 'ckeditor5/src/core';
11
9
  import { Widget } from 'ckeditor5/src/widget';
12
-
13
10
  import TableEditing from './tableediting';
14
11
  import TableUI from './tableui';
15
12
  import TableSelection from './tableselection';
16
13
  import TableClipboard from './tableclipboard';
17
14
  import TableKeyboard from './tablekeyboard';
18
15
  import TableMouse from './tablemouse';
19
-
20
16
  import '../theme/table.css';
21
-
22
17
  /**
23
18
  * The table plugin.
24
19
  *
@@ -32,89 +27,18 @@ import '../theme/table.css';
32
27
  * * {@link module:table/tablemouse~TableMouse mouse selection feature},
33
28
  * * {@link module:table/tableclipboard~TableClipboard clipboard feature},
34
29
  * * {@link module:table/tableui~TableUI UI feature}.
35
- *
36
- * @extends module:core/plugin~Plugin
37
30
  */
38
31
  export default class Table extends Plugin {
39
- /**
40
- * @inheritDoc
41
- */
42
- static get requires() {
43
- return [ TableEditing, TableUI, TableSelection, TableMouse, TableKeyboard, TableClipboard, Widget ];
44
- }
45
-
46
- /**
47
- * @inheritDoc
48
- */
49
- static get pluginName() {
50
- return 'Table';
51
- }
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ static get requires() {
36
+ return [TableEditing, TableUI, TableSelection, TableMouse, TableKeyboard, TableClipboard, Widget];
37
+ }
38
+ /**
39
+ * @inheritDoc
40
+ */
41
+ static get pluginName() {
42
+ return 'Table';
43
+ }
52
44
  }
53
-
54
- /**
55
- * The configuration of the table feature. Used by the table feature in the `@ckeditor/ckeditor5-table` package.
56
- *
57
- * ClassicEditor
58
- * .create( editorElement, {
59
- * table: ... // Table feature options.
60
- * } )
61
- * .then( ... )
62
- * .catch( ... );
63
- *
64
- * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
65
- *
66
- * @interface TableConfig
67
- */
68
-
69
- /**
70
- * The configuration of the {@link module:table/table~Table} feature.
71
- *
72
- * Read more in {@link module:table/table~TableConfig}.
73
- *
74
- * @member {module:table/table~TableConfig} module:core/editor/editorconfig~EditorConfig#table
75
- */
76
-
77
- /**
78
- * Number of rows and columns to render by default as table heading when inserting new tables.
79
- *
80
- * You can configure it like this:
81
- *
82
- * const tableConfig = {
83
- * defaultHeadings: {
84
- * rows: 1,
85
- * columns: 1
86
- * }
87
- * };
88
- *
89
- * Both rows and columns properties are optional defaulting to 0 (no heading).
90
- *
91
- * @member {Object} module:table/table~TableConfig#defaultHeadings
92
- */
93
-
94
- /**
95
- * An array of color definitions (either strings or objects).
96
- *
97
- * const colors = [
98
- * {
99
- * color: 'hsl(0, 0%, 60%)',
100
- * label: 'Grey'
101
- * },
102
- * 'hsl(0, 0%, 80%)',
103
- * {
104
- * color: 'hsl(0, 0%, 90%)',
105
- * label: 'Light grey'
106
- * },
107
- * {
108
- * color: 'hsl(0, 0%, 100%)',
109
- * label: 'White',
110
- * hasBorder: true
111
- * },
112
- * '#FF0000'
113
- * ]
114
- *
115
- * Usually used as a configuration parameter, for instance in
116
- * {@link module:table/table~TableConfig#tableProperties `config.table.tableProperties`}
117
- * or {@link module:table/table~TableConfig#tableCellProperties `config.table.tableCellProperties`}.
118
- *
119
- * @typedef {Array.<String|Object>} module:table/table~TableColorConfig
120
- */
@@ -0,0 +1,68 @@
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/tablecaptionediting
7
+ */
8
+ import { Plugin, type Editor } from 'ckeditor5/src/core';
9
+ import { Element } from 'ckeditor5/src/engine';
10
+ /**
11
+ * The table caption editing plugin.
12
+ */
13
+ export default class TableCaptionEditing extends Plugin {
14
+ /**
15
+ * A map that keeps saved JSONified table captions and table model elements they are
16
+ * associated with.
17
+ *
18
+ * To learn more about this system, see {@link #_saveCaption}.
19
+ */
20
+ private _savedCaptionsMap;
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ static get pluginName(): 'TableCaptionEditing';
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ constructor(editor: Editor);
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ init(): void;
33
+ /**
34
+ * Returns the saved {@link module:engine/model/element~Element#toJSON JSONified} caption
35
+ * of a table model element.
36
+ *
37
+ * See {@link #_saveCaption}.
38
+ *
39
+ * @internal
40
+ * @param tableModelElement The model element the caption should be returned for.
41
+ * @returns The model caption element or `null` if there is none.
42
+ */
43
+ _getSavedCaption(tableModelElement: Element): Element | null;
44
+ /**
45
+ * Saves a {@link module:engine/model/element~Element#toJSON JSONified} caption for
46
+ * a table element to allow restoring it in the future.
47
+ *
48
+ * A caption is saved every time it gets hidden. The
49
+ * user should be able to restore it on demand.
50
+ *
51
+ * **Note**: The caption cannot be stored in the table model element attribute because,
52
+ * for instance, when the model state propagates to collaborators, the attribute would get
53
+ * lost (mainly because it does not convert to anything when the caption is hidden) and
54
+ * the states of collaborators' models would de-synchronize causing numerous issues.
55
+ *
56
+ * See {@link #_getSavedCaption}.
57
+ *
58
+ * @internal
59
+ * @param tableModelElement The model element the caption is saved for.
60
+ * @param caption The caption model element to be saved.
61
+ */
62
+ _saveCaption(tableModelElement: Element, caption: Element): void;
63
+ }
64
+ declare module '@ckeditor/ckeditor5-core' {
65
+ interface PluginsMap {
66
+ [TableCaptionEditing.pluginName]: TableCaptionEditing;
67
+ }
68
+ }