@ckeditor/ckeditor5-table 40.0.0 → 40.2.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/CHANGELOG.md +15 -15
- package/LICENSE.md +3 -3
- package/build/table.js +1 -1
- package/build/translations/fi.js +1 -1
- package/lang/translations/fi.po +3 -3
- package/package.json +2 -2
- package/src/augmentation.d.ts +76 -76
- package/src/augmentation.js +5 -5
- package/src/commands/insertcolumncommand.d.ts +55 -55
- package/src/commands/insertcolumncommand.js +67 -67
- package/src/commands/insertrowcommand.d.ts +54 -54
- package/src/commands/insertrowcommand.js +66 -66
- package/src/commands/inserttablecommand.d.ts +44 -44
- package/src/commands/inserttablecommand.js +69 -69
- package/src/commands/mergecellcommand.d.ts +68 -68
- package/src/commands/mergecellcommand.js +198 -198
- package/src/commands/mergecellscommand.d.ts +28 -28
- package/src/commands/mergecellscommand.js +94 -94
- package/src/commands/removecolumncommand.d.ts +29 -29
- package/src/commands/removecolumncommand.js +109 -109
- package/src/commands/removerowcommand.d.ts +29 -29
- package/src/commands/removerowcommand.js +82 -82
- package/src/commands/selectcolumncommand.d.ts +33 -33
- package/src/commands/selectcolumncommand.js +60 -60
- package/src/commands/selectrowcommand.d.ts +33 -33
- package/src/commands/selectrowcommand.js +56 -56
- package/src/commands/setheadercolumncommand.d.ts +50 -50
- package/src/commands/setheadercolumncommand.js +71 -71
- package/src/commands/setheaderrowcommand.d.ts +53 -53
- package/src/commands/setheaderrowcommand.js +79 -79
- package/src/commands/splitcellcommand.d.ts +43 -43
- package/src/commands/splitcellcommand.js +54 -54
- package/src/converters/downcast.d.ts +63 -63
- package/src/converters/downcast.js +146 -146
- package/src/converters/table-caption-post-fixer.d.ts +20 -20
- package/src/converters/table-caption-post-fixer.js +53 -53
- package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -32
- package/src/converters/table-cell-paragraph-post-fixer.js +107 -107
- package/src/converters/table-cell-refresh-handler.d.ts +18 -18
- package/src/converters/table-cell-refresh-handler.js +45 -45
- package/src/converters/table-headings-refresh-handler.d.ts +17 -17
- package/src/converters/table-headings-refresh-handler.js +49 -49
- package/src/converters/table-layout-post-fixer.d.ts +226 -226
- package/src/converters/table-layout-post-fixer.js +367 -367
- package/src/converters/tableproperties.d.ts +54 -54
- package/src/converters/tableproperties.js +159 -159
- package/src/converters/upcasttable.d.ts +49 -49
- package/src/converters/upcasttable.js +243 -243
- package/src/index.d.ts +60 -60
- package/src/index.js +30 -30
- package/src/plaintableoutput.d.ts +26 -26
- package/src/plaintableoutput.js +123 -123
- package/src/table.d.ts +40 -40
- package/src/table.js +44 -44
- package/src/tablecaption/tablecaptionediting.d.ts +63 -63
- package/src/tablecaption/tablecaptionediting.js +122 -122
- package/src/tablecaption/tablecaptionui.d.ts +21 -21
- package/src/tablecaption/tablecaptionui.js +57 -57
- package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -68
- package/src/tablecaption/toggletablecaptioncommand.js +105 -104
- package/src/tablecaption/utils.d.ts +38 -42
- package/src/tablecaption/utils.js +57 -67
- package/src/tablecaption.d.ts +24 -24
- package/src/tablecaption.js +28 -28
- package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -32
- package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +30 -30
- package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -37
- package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +44 -44
- package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -37
- package/src/tablecellproperties/commands/tablecellborderstylecommand.js +44 -44
- package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -51
- package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +64 -64
- package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -46
- package/src/tablecellproperties/commands/tablecellheightcommand.js +51 -51
- package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -32
- package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +30 -30
- package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -51
- package/src/tablecellproperties/commands/tablecellpaddingcommand.js +64 -64
- package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -62
- package/src/tablecellproperties/commands/tablecellpropertycommand.js +92 -92
- package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -40
- package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +38 -38
- package/src/tablecellproperties/tablecellpropertiesediting.d.ts +43 -43
- package/src/tablecellproperties/tablecellpropertiesediting.js +241 -241
- package/src/tablecellproperties/tablecellpropertiesui.d.ts +112 -112
- package/src/tablecellproperties/tablecellpropertiesui.js +330 -330
- package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +228 -228
- package/src/tablecellproperties/ui/tablecellpropertiesview.js +548 -548
- package/src/tablecellproperties.d.ts +30 -30
- package/src/tablecellproperties.js +34 -34
- package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -46
- package/src/tablecellwidth/commands/tablecellwidthcommand.js +51 -51
- package/src/tablecellwidth/tablecellwidthediting.d.ts +29 -29
- package/src/tablecellwidth/tablecellwidthediting.js +45 -45
- package/src/tableclipboard.d.ts +65 -65
- package/src/tableclipboard.js +450 -450
- package/src/tablecolumnresize/constants.d.ts +20 -20
- package/src/tablecolumnresize/constants.js +20 -20
- package/src/tablecolumnresize/converters.d.ts +18 -18
- package/src/tablecolumnresize/converters.js +46 -46
- package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +139 -139
- package/src/tablecolumnresize/tablecolumnresizeediting.js +583 -583
- package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -38
- package/src/tablecolumnresize/tablewidthscommand.js +61 -61
- package/src/tablecolumnresize/utils.d.ts +148 -148
- package/src/tablecolumnresize/utils.js +358 -358
- package/src/tablecolumnresize.d.ts +26 -26
- package/src/tablecolumnresize.js +30 -30
- package/src/tableconfig.d.ts +343 -343
- package/src/tableconfig.js +5 -5
- package/src/tableediting.d.ts +98 -98
- package/src/tableediting.js +191 -191
- package/src/tablekeyboard.d.ts +68 -68
- package/src/tablekeyboard.js +279 -279
- package/src/tablemouse/mouseeventsobserver.d.ts +62 -62
- package/src/tablemouse/mouseeventsobserver.js +35 -35
- package/src/tablemouse.d.ts +48 -48
- package/src/tablemouse.js +172 -172
- package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -32
- package/src/tableproperties/commands/tablealignmentcommand.js +30 -30
- package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -32
- package/src/tableproperties/commands/tablebackgroundcolorcommand.js +30 -30
- package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -37
- package/src/tableproperties/commands/tablebordercolorcommand.js +44 -44
- package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -37
- package/src/tableproperties/commands/tableborderstylecommand.js +44 -44
- package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -51
- package/src/tableproperties/commands/tableborderwidthcommand.js +64 -64
- package/src/tableproperties/commands/tableheightcommand.d.ts +46 -46
- package/src/tableproperties/commands/tableheightcommand.js +54 -54
- package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -61
- package/src/tableproperties/commands/tablepropertycommand.js +81 -80
- package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -46
- package/src/tableproperties/commands/tablewidthcommand.js +54 -54
- package/src/tableproperties/tablepropertiesediting.d.ts +40 -40
- package/src/tableproperties/tablepropertiesediting.js +206 -206
- package/src/tableproperties/tablepropertiesui.d.ts +114 -114
- package/src/tableproperties/tablepropertiesui.js +321 -321
- package/src/tableproperties/ui/tablepropertiesview.d.ts +207 -207
- package/src/tableproperties/ui/tablepropertiesview.js +466 -466
- package/src/tableproperties.d.ts +30 -30
- package/src/tableproperties.js +34 -34
- package/src/tableselection.d.ts +107 -107
- package/src/tableselection.js +297 -297
- package/src/tabletoolbar.d.ts +32 -32
- package/src/tabletoolbar.js +57 -57
- package/src/tableui.d.ts +53 -53
- package/src/tableui.js +309 -309
- package/src/tableutils.d.ts +448 -448
- package/src/tableutils.js +1055 -1055
- package/src/tablewalker.d.ts +362 -362
- package/src/tablewalker.js +393 -393
- package/src/ui/colorinputview.d.ts +140 -140
- package/src/ui/colorinputview.js +271 -271
- package/src/ui/formrowview.d.ts +61 -61
- package/src/ui/formrowview.js +57 -57
- package/src/ui/inserttableview.d.ts +77 -77
- package/src/ui/inserttableview.js +169 -169
- package/src/utils/common.d.ts +46 -42
- package/src/utils/common.js +68 -57
- package/src/utils/structure.d.ts +245 -245
- package/src/utils/structure.js +426 -426
- package/src/utils/table-properties.d.ts +67 -67
- package/src/utils/table-properties.js +86 -86
- package/src/utils/ui/contextualballoon.d.ts +34 -34
- package/src/utils/ui/contextualballoon.js +110 -106
- package/src/utils/ui/table-properties.d.ts +195 -195
- package/src/utils/ui/table-properties.js +362 -362
- package/src/utils/ui/widget.d.ts +20 -16
- package/src/utils/ui/widget.js +48 -38
- package/build/table.js.map +0 -1
|
@@ -1,63 +1,63 @@
|
|
|
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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,122 +1,122 @@
|
|
|
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 } from 'ckeditor5/src/core';
|
|
9
|
-
import { Element, enablePlaceholder } from 'ckeditor5/src/engine';
|
|
10
|
-
import { toWidgetEditable } from 'ckeditor5/src/widget';
|
|
11
|
-
import injectTableCaptionPostFixer from '../converters/table-caption-post-fixer';
|
|
12
|
-
import ToggleTableCaptionCommand from './toggletablecaptioncommand';
|
|
13
|
-
import { isTable, matchTableCaptionViewElement } from './utils';
|
|
14
|
-
/**
|
|
15
|
-
* The table caption editing plugin.
|
|
16
|
-
*/
|
|
17
|
-
export default class TableCaptionEditing extends Plugin {
|
|
18
|
-
/**
|
|
19
|
-
* @inheritDoc
|
|
20
|
-
*/
|
|
21
|
-
static get pluginName() {
|
|
22
|
-
return 'TableCaptionEditing';
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @inheritDoc
|
|
26
|
-
*/
|
|
27
|
-
constructor(editor) {
|
|
28
|
-
super(editor);
|
|
29
|
-
this._savedCaptionsMap = new WeakMap();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* @inheritDoc
|
|
33
|
-
*/
|
|
34
|
-
init() {
|
|
35
|
-
const editor = this.editor;
|
|
36
|
-
const schema = editor.model.schema;
|
|
37
|
-
const view = editor.editing.view;
|
|
38
|
-
const t = editor.t;
|
|
39
|
-
if (!schema.isRegistered('caption')) {
|
|
40
|
-
schema.register('caption', {
|
|
41
|
-
allowIn: 'table',
|
|
42
|
-
allowContentOf: '$block',
|
|
43
|
-
isLimit: true
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
schema.extend('caption', {
|
|
48
|
-
allowIn: 'table'
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
editor.commands.add('toggleTableCaption', new ToggleTableCaptionCommand(this.editor));
|
|
52
|
-
// View -> model converter for the data pipeline.
|
|
53
|
-
editor.conversion.for('upcast').elementToElement({
|
|
54
|
-
view: matchTableCaptionViewElement,
|
|
55
|
-
model: 'caption'
|
|
56
|
-
});
|
|
57
|
-
// Model -> view converter for the data pipeline.
|
|
58
|
-
editor.conversion.for('dataDowncast').elementToElement({
|
|
59
|
-
model: 'caption',
|
|
60
|
-
view: (modelElement, { writer }) => {
|
|
61
|
-
if (!isTable(modelElement.parent)) {
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
return writer.createContainerElement('figcaption');
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
// Model -> view converter for the editing pipeline.
|
|
68
|
-
editor.conversion.for('editingDowncast').elementToElement({
|
|
69
|
-
model: 'caption',
|
|
70
|
-
view: (modelElement, { writer }) => {
|
|
71
|
-
if (!isTable(modelElement.parent)) {
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
const figcaptionElement = writer.createEditableElement('figcaption');
|
|
75
|
-
writer.setCustomProperty('tableCaption', true, figcaptionElement);
|
|
76
|
-
figcaptionElement.placeholder = t('Enter table caption');
|
|
77
|
-
enablePlaceholder({
|
|
78
|
-
view,
|
|
79
|
-
element: figcaptionElement,
|
|
80
|
-
keepOnFocus: true
|
|
81
|
-
});
|
|
82
|
-
return toWidgetEditable(figcaptionElement, writer);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
injectTableCaptionPostFixer(editor.model);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Returns the saved {@link module:engine/model/element~Element#toJSON JSONified} caption
|
|
89
|
-
* of a table model element.
|
|
90
|
-
*
|
|
91
|
-
* See {@link #_saveCaption}.
|
|
92
|
-
*
|
|
93
|
-
* @internal
|
|
94
|
-
* @param tableModelElement The model element the caption should be returned for.
|
|
95
|
-
* @returns The model caption element or `null` if there is none.
|
|
96
|
-
*/
|
|
97
|
-
_getSavedCaption(tableModelElement) {
|
|
98
|
-
const jsonObject = this._savedCaptionsMap.get(tableModelElement);
|
|
99
|
-
return jsonObject ? Element.fromJSON(jsonObject) : null;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Saves a {@link module:engine/model/element~Element#toJSON JSONified} caption for
|
|
103
|
-
* a table element to allow restoring it in the future.
|
|
104
|
-
*
|
|
105
|
-
* A caption is saved every time it gets hidden. The
|
|
106
|
-
* user should be able to restore it on demand.
|
|
107
|
-
*
|
|
108
|
-
* **Note**: The caption cannot be stored in the table model element attribute because,
|
|
109
|
-
* for instance, when the model state propagates to collaborators, the attribute would get
|
|
110
|
-
* lost (mainly because it does not convert to anything when the caption is hidden) and
|
|
111
|
-
* the states of collaborators' models would de-synchronize causing numerous issues.
|
|
112
|
-
*
|
|
113
|
-
* See {@link #_getSavedCaption}.
|
|
114
|
-
*
|
|
115
|
-
* @internal
|
|
116
|
-
* @param tableModelElement The model element the caption is saved for.
|
|
117
|
-
* @param caption The caption model element to be saved.
|
|
118
|
-
*/
|
|
119
|
-
_saveCaption(tableModelElement, caption) {
|
|
120
|
-
this._savedCaptionsMap.set(tableModelElement, caption.toJSON());
|
|
121
|
-
}
|
|
122
|
-
}
|
|
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 } from 'ckeditor5/src/core';
|
|
9
|
+
import { Element, enablePlaceholder } from 'ckeditor5/src/engine';
|
|
10
|
+
import { toWidgetEditable } from 'ckeditor5/src/widget';
|
|
11
|
+
import injectTableCaptionPostFixer from '../converters/table-caption-post-fixer';
|
|
12
|
+
import ToggleTableCaptionCommand from './toggletablecaptioncommand';
|
|
13
|
+
import { isTable, matchTableCaptionViewElement } from './utils';
|
|
14
|
+
/**
|
|
15
|
+
* The table caption editing plugin.
|
|
16
|
+
*/
|
|
17
|
+
export default class TableCaptionEditing extends Plugin {
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
static get pluginName() {
|
|
22
|
+
return 'TableCaptionEditing';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
constructor(editor) {
|
|
28
|
+
super(editor);
|
|
29
|
+
this._savedCaptionsMap = new WeakMap();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @inheritDoc
|
|
33
|
+
*/
|
|
34
|
+
init() {
|
|
35
|
+
const editor = this.editor;
|
|
36
|
+
const schema = editor.model.schema;
|
|
37
|
+
const view = editor.editing.view;
|
|
38
|
+
const t = editor.t;
|
|
39
|
+
if (!schema.isRegistered('caption')) {
|
|
40
|
+
schema.register('caption', {
|
|
41
|
+
allowIn: 'table',
|
|
42
|
+
allowContentOf: '$block',
|
|
43
|
+
isLimit: true
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
schema.extend('caption', {
|
|
48
|
+
allowIn: 'table'
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
editor.commands.add('toggleTableCaption', new ToggleTableCaptionCommand(this.editor));
|
|
52
|
+
// View -> model converter for the data pipeline.
|
|
53
|
+
editor.conversion.for('upcast').elementToElement({
|
|
54
|
+
view: matchTableCaptionViewElement,
|
|
55
|
+
model: 'caption'
|
|
56
|
+
});
|
|
57
|
+
// Model -> view converter for the data pipeline.
|
|
58
|
+
editor.conversion.for('dataDowncast').elementToElement({
|
|
59
|
+
model: 'caption',
|
|
60
|
+
view: (modelElement, { writer }) => {
|
|
61
|
+
if (!isTable(modelElement.parent)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return writer.createContainerElement('figcaption');
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// Model -> view converter for the editing pipeline.
|
|
68
|
+
editor.conversion.for('editingDowncast').elementToElement({
|
|
69
|
+
model: 'caption',
|
|
70
|
+
view: (modelElement, { writer }) => {
|
|
71
|
+
if (!isTable(modelElement.parent)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const figcaptionElement = writer.createEditableElement('figcaption');
|
|
75
|
+
writer.setCustomProperty('tableCaption', true, figcaptionElement);
|
|
76
|
+
figcaptionElement.placeholder = t('Enter table caption');
|
|
77
|
+
enablePlaceholder({
|
|
78
|
+
view,
|
|
79
|
+
element: figcaptionElement,
|
|
80
|
+
keepOnFocus: true
|
|
81
|
+
});
|
|
82
|
+
return toWidgetEditable(figcaptionElement, writer);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
injectTableCaptionPostFixer(editor.model);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns the saved {@link module:engine/model/element~Element#toJSON JSONified} caption
|
|
89
|
+
* of a table model element.
|
|
90
|
+
*
|
|
91
|
+
* See {@link #_saveCaption}.
|
|
92
|
+
*
|
|
93
|
+
* @internal
|
|
94
|
+
* @param tableModelElement The model element the caption should be returned for.
|
|
95
|
+
* @returns The model caption element or `null` if there is none.
|
|
96
|
+
*/
|
|
97
|
+
_getSavedCaption(tableModelElement) {
|
|
98
|
+
const jsonObject = this._savedCaptionsMap.get(tableModelElement);
|
|
99
|
+
return jsonObject ? Element.fromJSON(jsonObject) : null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Saves a {@link module:engine/model/element~Element#toJSON JSONified} caption for
|
|
103
|
+
* a table element to allow restoring it in the future.
|
|
104
|
+
*
|
|
105
|
+
* A caption is saved every time it gets hidden. The
|
|
106
|
+
* user should be able to restore it on demand.
|
|
107
|
+
*
|
|
108
|
+
* **Note**: The caption cannot be stored in the table model element attribute because,
|
|
109
|
+
* for instance, when the model state propagates to collaborators, the attribute would get
|
|
110
|
+
* lost (mainly because it does not convert to anything when the caption is hidden) and
|
|
111
|
+
* the states of collaborators' models would de-synchronize causing numerous issues.
|
|
112
|
+
*
|
|
113
|
+
* See {@link #_getSavedCaption}.
|
|
114
|
+
*
|
|
115
|
+
* @internal
|
|
116
|
+
* @param tableModelElement The model element the caption is saved for.
|
|
117
|
+
* @param caption The caption model element to be saved.
|
|
118
|
+
*/
|
|
119
|
+
_saveCaption(tableModelElement, caption) {
|
|
120
|
+
this._savedCaptionsMap.set(tableModelElement, caption.toJSON());
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
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/tablecaptionui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
/**
|
|
10
|
-
* The table caption UI plugin. It introduces the `'toggleTableCaption'` UI button.
|
|
11
|
-
*/
|
|
12
|
-
export default class TableCaptionUI extends Plugin {
|
|
13
|
-
/**
|
|
14
|
-
* @inheritDoc
|
|
15
|
-
*/
|
|
16
|
-
static get pluginName(): "TableCaptionUI";
|
|
17
|
-
/**
|
|
18
|
-
* @inheritDoc
|
|
19
|
-
*/
|
|
20
|
-
init(): void;
|
|
21
|
-
}
|
|
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/tablecaptionui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
/**
|
|
10
|
+
* The table caption UI plugin. It introduces the `'toggleTableCaption'` UI button.
|
|
11
|
+
*/
|
|
12
|
+
export default class TableCaptionUI extends Plugin {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
static get pluginName(): "TableCaptionUI";
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
init(): void;
|
|
21
|
+
}
|
|
@@ -1,57 +1,57 @@
|
|
|
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/tablecaptionui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin, icons } from 'ckeditor5/src/core';
|
|
9
|
-
import { ButtonView } from 'ckeditor5/src/ui';
|
|
10
|
-
import { getCaptionFromModelSelection } from './utils';
|
|
11
|
-
/**
|
|
12
|
-
* The table caption UI plugin. It introduces the `'toggleTableCaption'` UI button.
|
|
13
|
-
*/
|
|
14
|
-
export default class TableCaptionUI extends Plugin {
|
|
15
|
-
/**
|
|
16
|
-
* @inheritDoc
|
|
17
|
-
*/
|
|
18
|
-
static get pluginName() {
|
|
19
|
-
return 'TableCaptionUI';
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @inheritDoc
|
|
23
|
-
*/
|
|
24
|
-
init() {
|
|
25
|
-
const editor = this.editor;
|
|
26
|
-
const editingView = editor.editing.view;
|
|
27
|
-
const t = editor.t;
|
|
28
|
-
editor.ui.componentFactory.add('toggleTableCaption', locale => {
|
|
29
|
-
const command = editor.commands.get('toggleTableCaption');
|
|
30
|
-
const view = new ButtonView(locale);
|
|
31
|
-
view.set({
|
|
32
|
-
icon: icons.caption,
|
|
33
|
-
tooltip: true,
|
|
34
|
-
isToggleable: true
|
|
35
|
-
});
|
|
36
|
-
view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled');
|
|
37
|
-
view.bind('label').to(command, 'value', value => value ? t('Toggle caption off') : t('Toggle caption on'));
|
|
38
|
-
this.listenTo(view, 'execute', () => {
|
|
39
|
-
editor.execute('toggleTableCaption', { focusCaptionOnShow: true });
|
|
40
|
-
// Scroll to the selection and highlight the caption if the caption showed up.
|
|
41
|
-
if (command.value) {
|
|
42
|
-
const modelCaptionElement = getCaptionFromModelSelection(editor.model.document.selection);
|
|
43
|
-
const figcaptionElement = editor.editing.mapper.toViewElement(modelCaptionElement);
|
|
44
|
-
if (!figcaptionElement) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
editingView.scrollToTheSelection();
|
|
48
|
-
editingView.change(writer => {
|
|
49
|
-
writer.addClass('table__caption_highlighted', figcaptionElement);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
editor.editing.view.focus();
|
|
53
|
-
});
|
|
54
|
-
return view;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
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/tablecaptionui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin, icons } from 'ckeditor5/src/core';
|
|
9
|
+
import { ButtonView } from 'ckeditor5/src/ui';
|
|
10
|
+
import { getCaptionFromModelSelection } from './utils';
|
|
11
|
+
/**
|
|
12
|
+
* The table caption UI plugin. It introduces the `'toggleTableCaption'` UI button.
|
|
13
|
+
*/
|
|
14
|
+
export default class TableCaptionUI extends Plugin {
|
|
15
|
+
/**
|
|
16
|
+
* @inheritDoc
|
|
17
|
+
*/
|
|
18
|
+
static get pluginName() {
|
|
19
|
+
return 'TableCaptionUI';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
init() {
|
|
25
|
+
const editor = this.editor;
|
|
26
|
+
const editingView = editor.editing.view;
|
|
27
|
+
const t = editor.t;
|
|
28
|
+
editor.ui.componentFactory.add('toggleTableCaption', locale => {
|
|
29
|
+
const command = editor.commands.get('toggleTableCaption');
|
|
30
|
+
const view = new ButtonView(locale);
|
|
31
|
+
view.set({
|
|
32
|
+
icon: icons.caption,
|
|
33
|
+
tooltip: true,
|
|
34
|
+
isToggleable: true
|
|
35
|
+
});
|
|
36
|
+
view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled');
|
|
37
|
+
view.bind('label').to(command, 'value', value => value ? t('Toggle caption off') : t('Toggle caption on'));
|
|
38
|
+
this.listenTo(view, 'execute', () => {
|
|
39
|
+
editor.execute('toggleTableCaption', { focusCaptionOnShow: true });
|
|
40
|
+
// Scroll to the selection and highlight the caption if the caption showed up.
|
|
41
|
+
if (command.value) {
|
|
42
|
+
const modelCaptionElement = getCaptionFromModelSelection(editor.model.document.selection);
|
|
43
|
+
const figcaptionElement = editor.editing.mapper.toViewElement(modelCaptionElement);
|
|
44
|
+
if (!figcaptionElement) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
editingView.scrollToTheSelection();
|
|
48
|
+
editingView.change(writer => {
|
|
49
|
+
writer.addClass('table__caption_highlighted', figcaptionElement);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
editor.editing.view.focus();
|
|
53
|
+
});
|
|
54
|
+
return view;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|