@ckeditor/ckeditor5-table 36.0.0 → 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.
- package/build/table.js +1 -1
- package/package.json +34 -29
- package/src/commands/insertcolumncommand.d.ts +61 -0
- package/src/commands/insertcolumncommand.js +45 -60
- package/src/commands/insertrowcommand.d.ts +60 -0
- package/src/commands/insertrowcommand.js +44 -59
- package/src/commands/inserttablecommand.d.ts +50 -0
- package/src/commands/inserttablecommand.js +51 -68
- package/src/commands/mergecellcommand.d.ts +76 -0
- package/src/commands/mergecellcommand.js +169 -244
- package/src/commands/mergecellscommand.d.ts +33 -0
- package/src/commands/mergecellscommand.js +72 -101
- package/src/commands/removecolumncommand.d.ts +34 -0
- package/src/commands/removecolumncommand.js +88 -102
- package/src/commands/removerowcommand.d.ts +34 -0
- package/src/commands/removerowcommand.js +63 -80
- package/src/commands/selectcolumncommand.d.ts +38 -0
- package/src/commands/selectcolumncommand.js +41 -54
- package/src/commands/selectrowcommand.d.ts +38 -0
- package/src/commands/selectrowcommand.js +38 -48
- package/src/commands/setheadercolumncommand.d.ts +55 -0
- package/src/commands/setheadercolumncommand.js +48 -73
- package/src/commands/setheaderrowcommand.d.ts +58 -0
- package/src/commands/setheaderrowcommand.js +56 -85
- package/src/commands/splitcellcommand.d.ts +49 -0
- package/src/commands/splitcellcommand.js +35 -49
- package/src/converters/downcast.d.ts +63 -0
- package/src/converters/downcast.js +98 -130
- package/src/converters/table-caption-post-fixer.d.ts +20 -0
- package/src/converters/table-caption-post-fixer.js +36 -52
- package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -0
- package/src/converters/table-cell-paragraph-post-fixer.js +88 -119
- package/src/converters/table-cell-refresh-handler.d.ts +18 -0
- package/src/converters/table-cell-refresh-handler.js +29 -48
- package/src/converters/table-headings-refresh-handler.d.ts +17 -0
- package/src/converters/table-headings-refresh-handler.js +35 -54
- package/src/converters/table-layout-post-fixer.d.ts +226 -0
- package/src/converters/table-layout-post-fixer.js +276 -313
- package/src/converters/tableproperties.d.ts +54 -0
- package/src/converters/tableproperties.js +136 -168
- package/src/converters/upcasttable.d.ts +49 -0
- package/src/converters/upcasttable.js +196 -251
- package/src/index.d.ts +29 -0
- package/src/index.js +0 -2
- package/src/plaintableoutput.d.ts +30 -0
- package/src/plaintableoutput.js +107 -135
- package/src/table.d.ts +38 -0
- package/src/table.js +12 -88
- package/src/tablecaption/tablecaptionediting.d.ts +68 -0
- package/src/tablecaption/tablecaptionediting.js +104 -135
- package/src/tablecaption/tablecaptionui.d.ts +26 -0
- package/src/tablecaption/tablecaptionui.js +42 -58
- package/src/tablecaption/toggletablecaptioncommand.d.ts +73 -0
- package/src/tablecaption/toggletablecaptioncommand.js +77 -92
- package/src/tablecaption/utils.d.ts +42 -0
- package/src/tablecaption/utils.js +35 -61
- package/src/tablecaption.d.ts +27 -0
- package/src/tablecaption.js +12 -19
- package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +37 -0
- package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +14 -20
- package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +42 -0
- package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +27 -37
- package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +42 -0
- package/src/tablecellproperties/commands/tablecellborderstylecommand.js +27 -37
- package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +56 -0
- package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +42 -53
- package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +51 -0
- package/src/tablecellproperties/commands/tablecellheightcommand.js +29 -36
- package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +37 -0
- package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +14 -20
- package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +56 -0
- package/src/tablecellproperties/commands/tablecellpaddingcommand.js +42 -53
- package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -0
- package/src/tablecellproperties/commands/tablecellpropertycommand.js +77 -122
- package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +45 -0
- package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +14 -20
- package/src/tablecellproperties/tablecellpropertiesediting.d.ts +47 -0
- package/src/tablecellproperties/tablecellpropertiesediting.js +194 -236
- package/src/tablecellproperties/tablecellpropertiesui.d.ts +117 -0
- package/src/tablecellproperties/tablecellpropertiesui.js +303 -456
- package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +227 -0
- package/src/tablecellproperties/ui/tablecellpropertiesview.js +509 -844
- package/src/tablecellproperties.d.ts +33 -0
- package/src/tablecellproperties.js +12 -98
- package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +51 -0
- package/src/tablecellwidth/commands/tablecellwidthcommand.js +29 -35
- package/src/tablecellwidth/tablecellwidthediting.d.ts +34 -0
- package/src/tablecellwidth/tablecellwidthediting.js +26 -38
- package/src/tableclipboard.d.ts +68 -0
- package/src/tableclipboard.js +429 -568
- package/src/tablecolumnresize/constants.d.ts +20 -0
- package/src/tablecolumnresize/constants.js +0 -10
- package/src/tablecolumnresize/converters.d.ts +18 -0
- package/src/tablecolumnresize/converters.js +35 -119
- package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +142 -0
- package/src/tablecolumnresize/tablecolumnresizeediting.js +545 -711
- package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -0
- package/src/tablecolumnresize/tablewidthscommand.js +61 -0
- package/src/tablecolumnresize/utils.d.ts +141 -0
- package/src/tablecolumnresize/utils.js +256 -233
- package/src/tablecolumnresize.d.ts +29 -0
- package/src/tablecolumnresize.js +12 -19
- package/src/tableconfig.d.ts +341 -0
- package/src/tableconfig.js +5 -0
- package/src/tableediting.d.ts +102 -0
- package/src/tableediting.js +157 -176
- package/src/tablekeyboard.d.ts +68 -0
- package/src/tablekeyboard.js +261 -344
- package/src/tablemouse/mouseeventsobserver.d.ts +62 -0
- package/src/tablemouse/mouseeventsobserver.js +12 -49
- package/src/tablemouse.d.ts +51 -0
- package/src/tablemouse.js +154 -202
- package/src/tableproperties/commands/tablealignmentcommand.d.ts +37 -0
- package/src/tableproperties/commands/tablealignmentcommand.js +14 -20
- package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +37 -0
- package/src/tableproperties/commands/tablebackgroundcolorcommand.js +14 -20
- package/src/tableproperties/commands/tablebordercolorcommand.d.ts +42 -0
- package/src/tableproperties/commands/tablebordercolorcommand.js +27 -37
- package/src/tableproperties/commands/tableborderstylecommand.d.ts +42 -0
- package/src/tableproperties/commands/tableborderstylecommand.js +27 -37
- package/src/tableproperties/commands/tableborderwidthcommand.d.ts +56 -0
- package/src/tableproperties/commands/tableborderwidthcommand.js +42 -53
- package/src/tableproperties/commands/tableheightcommand.d.ts +51 -0
- package/src/tableproperties/commands/tableheightcommand.js +29 -33
- package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -0
- package/src/tableproperties/commands/tablepropertycommand.js +68 -112
- package/src/tableproperties/commands/tablewidthcommand.d.ts +51 -0
- package/src/tableproperties/commands/tablewidthcommand.js +29 -33
- package/src/tableproperties/tablepropertiesediting.d.ts +45 -0
- package/src/tableproperties/tablepropertiesediting.js +164 -210
- package/src/tableproperties/tablepropertiesui.d.ts +119 -0
- package/src/tableproperties/tablepropertiesui.js +294 -439
- package/src/tableproperties/ui/tablepropertiesview.d.ts +203 -0
- package/src/tableproperties/ui/tablepropertiesview.js +427 -718
- package/src/tableproperties.d.ts +33 -0
- package/src/tableproperties.js +12 -95
- package/src/tableselection.d.ts +111 -0
- package/src/tableselection.js +279 -376
- package/src/tabletoolbar.d.ts +37 -0
- package/src/tabletoolbar.js +39 -92
- package/src/tableui.d.ts +58 -0
- package/src/tableui.js +281 -338
- package/src/tableutils.d.ts +453 -0
- package/src/tableutils.js +1015 -1229
- package/src/tablewalker.d.ts +323 -0
- package/src/tablewalker.js +308 -548
- package/src/ui/colorinputview.d.ts +143 -0
- package/src/ui/colorinputview.js +229 -366
- package/src/ui/formrowview.d.ts +61 -0
- package/src/ui/formrowview.js +38 -84
- package/src/ui/inserttableview.d.ts +77 -0
- package/src/ui/inserttableview.js +152 -242
- package/src/utils/common.d.ts +42 -0
- package/src/utils/common.js +33 -57
- package/src/utils/structure.d.ts +245 -0
- package/src/utils/structure.js +261 -379
- package/src/utils/table-properties.d.ts +67 -0
- package/src/utils/table-properties.js +60 -81
- package/src/utils/ui/contextualballoon.d.ts +34 -0
- package/src/utils/ui/contextualballoon.js +70 -89
- package/src/utils/ui/table-properties.d.ts +193 -0
- package/src/utils/ui/table-properties.js +259 -319
- package/src/utils/ui/widget.d.ts +16 -0
- package/src/utils/ui/widget.js +24 -46
- package/src/tablecolumnresize/tablecolumnwidthscommand.js +0 -55
- package/src/tablecolumnresize/tablewidthresizecommand.js +0 -65
package/src/plaintableoutput.js
CHANGED
|
@@ -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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
function downcastTableElement(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
+
}
|