@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,54 +1,54 @@
|
|
|
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/converters/tableproperties
|
|
7
|
-
*/
|
|
8
|
-
import type { Conversion, ViewElement } from 'ckeditor5/src/engine';
|
|
9
|
-
/**
|
|
10
|
-
* Conversion helper for upcasting attributes using normalized styles.
|
|
11
|
-
*
|
|
12
|
-
* @param options.modelAttribute The attribute to set.
|
|
13
|
-
* @param options.styleName The style name to convert.
|
|
14
|
-
* @param options.viewElement The view element name that should be converted.
|
|
15
|
-
* @param options.defaultValue The default value for the specified `modelAttribute`.
|
|
16
|
-
* @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.
|
|
17
|
-
*/
|
|
18
|
-
export declare function upcastStyleToAttribute(conversion: Conversion, options: {
|
|
19
|
-
modelAttribute: string;
|
|
20
|
-
styleName: string;
|
|
21
|
-
viewElement: string | RegExp;
|
|
22
|
-
defaultValue: string;
|
|
23
|
-
reduceBoxSides?: boolean;
|
|
24
|
-
shouldUpcast?: (viewElement: ViewElement) => boolean;
|
|
25
|
-
}): void;
|
|
26
|
-
export interface StyleValues {
|
|
27
|
-
color: string;
|
|
28
|
-
style: string;
|
|
29
|
-
width: string;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Conversion helper for upcasting border styles for view elements.
|
|
33
|
-
*
|
|
34
|
-
* @param defaultBorder The default border values.
|
|
35
|
-
* @param defaultBorder.color The default `borderColor` value.
|
|
36
|
-
* @param defaultBorder.style The default `borderStyle` value.
|
|
37
|
-
* @param defaultBorder.width The default `borderWidth` value.
|
|
38
|
-
*/
|
|
39
|
-
export declare function upcastBorderStyles(conversion: Conversion, viewElementName: string, modelAttributes: StyleValues, defaultBorder: StyleValues): void;
|
|
40
|
-
/**
|
|
41
|
-
* Conversion helper for downcasting an attribute to a style.
|
|
42
|
-
*/
|
|
43
|
-
export declare function downcastAttributeToStyle(conversion: Conversion, options: {
|
|
44
|
-
modelElement: string;
|
|
45
|
-
modelAttribute: string;
|
|
46
|
-
styleName: string;
|
|
47
|
-
}): void;
|
|
48
|
-
/**
|
|
49
|
-
* Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).
|
|
50
|
-
*/
|
|
51
|
-
export declare function downcastTableAttribute(conversion: Conversion, options: {
|
|
52
|
-
modelAttribute: string;
|
|
53
|
-
styleName: string;
|
|
54
|
-
}): void;
|
|
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/converters/tableproperties
|
|
7
|
+
*/
|
|
8
|
+
import type { Conversion, ViewElement } from 'ckeditor5/src/engine';
|
|
9
|
+
/**
|
|
10
|
+
* Conversion helper for upcasting attributes using normalized styles.
|
|
11
|
+
*
|
|
12
|
+
* @param options.modelAttribute The attribute to set.
|
|
13
|
+
* @param options.styleName The style name to convert.
|
|
14
|
+
* @param options.viewElement The view element name that should be converted.
|
|
15
|
+
* @param options.defaultValue The default value for the specified `modelAttribute`.
|
|
16
|
+
* @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.
|
|
17
|
+
*/
|
|
18
|
+
export declare function upcastStyleToAttribute(conversion: Conversion, options: {
|
|
19
|
+
modelAttribute: string;
|
|
20
|
+
styleName: string;
|
|
21
|
+
viewElement: string | RegExp;
|
|
22
|
+
defaultValue: string;
|
|
23
|
+
reduceBoxSides?: boolean;
|
|
24
|
+
shouldUpcast?: (viewElement: ViewElement) => boolean;
|
|
25
|
+
}): void;
|
|
26
|
+
export interface StyleValues {
|
|
27
|
+
color: string;
|
|
28
|
+
style: string;
|
|
29
|
+
width: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Conversion helper for upcasting border styles for view elements.
|
|
33
|
+
*
|
|
34
|
+
* @param defaultBorder The default border values.
|
|
35
|
+
* @param defaultBorder.color The default `borderColor` value.
|
|
36
|
+
* @param defaultBorder.style The default `borderStyle` value.
|
|
37
|
+
* @param defaultBorder.width The default `borderWidth` value.
|
|
38
|
+
*/
|
|
39
|
+
export declare function upcastBorderStyles(conversion: Conversion, viewElementName: string, modelAttributes: StyleValues, defaultBorder: StyleValues): void;
|
|
40
|
+
/**
|
|
41
|
+
* Conversion helper for downcasting an attribute to a style.
|
|
42
|
+
*/
|
|
43
|
+
export declare function downcastAttributeToStyle(conversion: Conversion, options: {
|
|
44
|
+
modelElement: string;
|
|
45
|
+
modelAttribute: string;
|
|
46
|
+
styleName: string;
|
|
47
|
+
}): void;
|
|
48
|
+
/**
|
|
49
|
+
* Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).
|
|
50
|
+
*/
|
|
51
|
+
export declare function downcastTableAttribute(conversion: Conversion, options: {
|
|
52
|
+
modelAttribute: string;
|
|
53
|
+
styleName: string;
|
|
54
|
+
}): void;
|
|
@@ -1,159 +1,159 @@
|
|
|
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
|
-
* Conversion helper for upcasting attributes using normalized styles.
|
|
7
|
-
*
|
|
8
|
-
* @param options.modelAttribute The attribute to set.
|
|
9
|
-
* @param options.styleName The style name to convert.
|
|
10
|
-
* @param options.viewElement The view element name that should be converted.
|
|
11
|
-
* @param options.defaultValue The default value for the specified `modelAttribute`.
|
|
12
|
-
* @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.
|
|
13
|
-
*/
|
|
14
|
-
export function upcastStyleToAttribute(conversion, options) {
|
|
15
|
-
const { modelAttribute, styleName, viewElement, defaultValue, reduceBoxSides = false, shouldUpcast = () => true } = options;
|
|
16
|
-
conversion.for('upcast').attributeToAttribute({
|
|
17
|
-
view: {
|
|
18
|
-
name: viewElement,
|
|
19
|
-
styles: {
|
|
20
|
-
[styleName]: /[\s\S]+/
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
model: {
|
|
24
|
-
key: modelAttribute,
|
|
25
|
-
value: (viewElement) => {
|
|
26
|
-
if (!shouldUpcast(viewElement)) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const normalized = viewElement.getNormalizedStyle(styleName);
|
|
30
|
-
const value = reduceBoxSides ? reduceBoxSidesValue(normalized) : normalized;
|
|
31
|
-
if (defaultValue !== value) {
|
|
32
|
-
return value;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Conversion helper for upcasting border styles for view elements.
|
|
40
|
-
*
|
|
41
|
-
* @param defaultBorder The default border values.
|
|
42
|
-
* @param defaultBorder.color The default `borderColor` value.
|
|
43
|
-
* @param defaultBorder.style The default `borderStyle` value.
|
|
44
|
-
* @param defaultBorder.width The default `borderWidth` value.
|
|
45
|
-
*/
|
|
46
|
-
export function upcastBorderStyles(conversion, viewElementName, modelAttributes, defaultBorder) {
|
|
47
|
-
conversion.for('upcast').add(dispatcher => dispatcher.on('element:' + viewElementName, (evt, data, conversionApi) => {
|
|
48
|
-
// If the element was not converted by element-to-element converter,
|
|
49
|
-
// we should not try to convert the style. See #8393.
|
|
50
|
-
if (!data.modelRange) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Check the most detailed properties. These will be always set directly or
|
|
54
|
-
// when using the "group" properties like: `border-(top|right|bottom|left)` or `border`.
|
|
55
|
-
const stylesToConsume = [
|
|
56
|
-
'border-top-width',
|
|
57
|
-
'border-top-color',
|
|
58
|
-
'border-top-style',
|
|
59
|
-
'border-bottom-width',
|
|
60
|
-
'border-bottom-color',
|
|
61
|
-
'border-bottom-style',
|
|
62
|
-
'border-right-width',
|
|
63
|
-
'border-right-color',
|
|
64
|
-
'border-right-style',
|
|
65
|
-
'border-left-width',
|
|
66
|
-
'border-left-color',
|
|
67
|
-
'border-left-style'
|
|
68
|
-
].filter(styleName => data.viewItem.hasStyle(styleName));
|
|
69
|
-
if (!stylesToConsume.length) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const matcherPattern = {
|
|
73
|
-
styles: stylesToConsume
|
|
74
|
-
};
|
|
75
|
-
// Try to consume appropriate values from consumable values list.
|
|
76
|
-
if (!conversionApi.consumable.test(data.viewItem, matcherPattern)) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const modelElement = [...data.modelRange.getItems({ shallow: true })].pop();
|
|
80
|
-
conversionApi.consumable.consume(data.viewItem, matcherPattern);
|
|
81
|
-
const normalizedBorder = {
|
|
82
|
-
style: data.viewItem.getNormalizedStyle('border-style'),
|
|
83
|
-
color: data.viewItem.getNormalizedStyle('border-color'),
|
|
84
|
-
width: data.viewItem.getNormalizedStyle('border-width')
|
|
85
|
-
};
|
|
86
|
-
const reducedBorder = {
|
|
87
|
-
style: reduceBoxSidesValue(normalizedBorder.style),
|
|
88
|
-
color: reduceBoxSidesValue(normalizedBorder.color),
|
|
89
|
-
width: reduceBoxSidesValue(normalizedBorder.width)
|
|
90
|
-
};
|
|
91
|
-
if (reducedBorder.style !== defaultBorder.style) {
|
|
92
|
-
conversionApi.writer.setAttribute(modelAttributes.style, reducedBorder.style, modelElement);
|
|
93
|
-
}
|
|
94
|
-
if (reducedBorder.color !== defaultBorder.color) {
|
|
95
|
-
conversionApi.writer.setAttribute(modelAttributes.color, reducedBorder.color, modelElement);
|
|
96
|
-
}
|
|
97
|
-
if (reducedBorder.width !== defaultBorder.width) {
|
|
98
|
-
conversionApi.writer.setAttribute(modelAttributes.width, reducedBorder.width, modelElement);
|
|
99
|
-
}
|
|
100
|
-
}));
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Conversion helper for downcasting an attribute to a style.
|
|
104
|
-
*/
|
|
105
|
-
export function downcastAttributeToStyle(conversion, options) {
|
|
106
|
-
const { modelElement, modelAttribute, styleName } = options;
|
|
107
|
-
conversion.for('downcast').attributeToAttribute({
|
|
108
|
-
model: {
|
|
109
|
-
name: modelElement,
|
|
110
|
-
key: modelAttribute
|
|
111
|
-
},
|
|
112
|
-
view: modelAttributeValue => ({
|
|
113
|
-
key: 'style',
|
|
114
|
-
value: {
|
|
115
|
-
[styleName]: modelAttributeValue
|
|
116
|
-
}
|
|
117
|
-
})
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).
|
|
122
|
-
*/
|
|
123
|
-
export function downcastTableAttribute(conversion, options) {
|
|
124
|
-
const { modelAttribute, styleName } = options;
|
|
125
|
-
conversion.for('downcast').add(dispatcher => dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
|
|
126
|
-
const { item, attributeNewValue } = data;
|
|
127
|
-
const { mapper, writer } = conversionApi;
|
|
128
|
-
if (!conversionApi.consumable.consume(data.item, evt.name)) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const table = [...mapper.toViewElement(item).getChildren()].find(child => child.is('element', 'table'));
|
|
132
|
-
if (attributeNewValue) {
|
|
133
|
-
writer.setStyle(styleName, attributeNewValue, table);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
writer.removeStyle(styleName, table);
|
|
137
|
-
}
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Reduces the full top, right, bottom, left object to a single string if all sides are equal.
|
|
142
|
-
* Returns original style otherwise.
|
|
143
|
-
*/
|
|
144
|
-
function reduceBoxSidesValue(style) {
|
|
145
|
-
if (!style) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
const sides = ['top', 'right', 'bottom', 'left'];
|
|
149
|
-
const allSidesDefined = sides.every(side => style[side]);
|
|
150
|
-
if (!allSidesDefined) {
|
|
151
|
-
return style;
|
|
152
|
-
}
|
|
153
|
-
const topSideStyle = style.top;
|
|
154
|
-
const allSidesEqual = sides.every(side => style[side] === topSideStyle);
|
|
155
|
-
if (!allSidesEqual) {
|
|
156
|
-
return style;
|
|
157
|
-
}
|
|
158
|
-
return topSideStyle;
|
|
159
|
-
}
|
|
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
|
+
* Conversion helper for upcasting attributes using normalized styles.
|
|
7
|
+
*
|
|
8
|
+
* @param options.modelAttribute The attribute to set.
|
|
9
|
+
* @param options.styleName The style name to convert.
|
|
10
|
+
* @param options.viewElement The view element name that should be converted.
|
|
11
|
+
* @param options.defaultValue The default value for the specified `modelAttribute`.
|
|
12
|
+
* @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.
|
|
13
|
+
*/
|
|
14
|
+
export function upcastStyleToAttribute(conversion, options) {
|
|
15
|
+
const { modelAttribute, styleName, viewElement, defaultValue, reduceBoxSides = false, shouldUpcast = () => true } = options;
|
|
16
|
+
conversion.for('upcast').attributeToAttribute({
|
|
17
|
+
view: {
|
|
18
|
+
name: viewElement,
|
|
19
|
+
styles: {
|
|
20
|
+
[styleName]: /[\s\S]+/
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
model: {
|
|
24
|
+
key: modelAttribute,
|
|
25
|
+
value: (viewElement) => {
|
|
26
|
+
if (!shouldUpcast(viewElement)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const normalized = viewElement.getNormalizedStyle(styleName);
|
|
30
|
+
const value = reduceBoxSides ? reduceBoxSidesValue(normalized) : normalized;
|
|
31
|
+
if (defaultValue !== value) {
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Conversion helper for upcasting border styles for view elements.
|
|
40
|
+
*
|
|
41
|
+
* @param defaultBorder The default border values.
|
|
42
|
+
* @param defaultBorder.color The default `borderColor` value.
|
|
43
|
+
* @param defaultBorder.style The default `borderStyle` value.
|
|
44
|
+
* @param defaultBorder.width The default `borderWidth` value.
|
|
45
|
+
*/
|
|
46
|
+
export function upcastBorderStyles(conversion, viewElementName, modelAttributes, defaultBorder) {
|
|
47
|
+
conversion.for('upcast').add(dispatcher => dispatcher.on('element:' + viewElementName, (evt, data, conversionApi) => {
|
|
48
|
+
// If the element was not converted by element-to-element converter,
|
|
49
|
+
// we should not try to convert the style. See #8393.
|
|
50
|
+
if (!data.modelRange) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Check the most detailed properties. These will be always set directly or
|
|
54
|
+
// when using the "group" properties like: `border-(top|right|bottom|left)` or `border`.
|
|
55
|
+
const stylesToConsume = [
|
|
56
|
+
'border-top-width',
|
|
57
|
+
'border-top-color',
|
|
58
|
+
'border-top-style',
|
|
59
|
+
'border-bottom-width',
|
|
60
|
+
'border-bottom-color',
|
|
61
|
+
'border-bottom-style',
|
|
62
|
+
'border-right-width',
|
|
63
|
+
'border-right-color',
|
|
64
|
+
'border-right-style',
|
|
65
|
+
'border-left-width',
|
|
66
|
+
'border-left-color',
|
|
67
|
+
'border-left-style'
|
|
68
|
+
].filter(styleName => data.viewItem.hasStyle(styleName));
|
|
69
|
+
if (!stylesToConsume.length) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const matcherPattern = {
|
|
73
|
+
styles: stylesToConsume
|
|
74
|
+
};
|
|
75
|
+
// Try to consume appropriate values from consumable values list.
|
|
76
|
+
if (!conversionApi.consumable.test(data.viewItem, matcherPattern)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const modelElement = [...data.modelRange.getItems({ shallow: true })].pop();
|
|
80
|
+
conversionApi.consumable.consume(data.viewItem, matcherPattern);
|
|
81
|
+
const normalizedBorder = {
|
|
82
|
+
style: data.viewItem.getNormalizedStyle('border-style'),
|
|
83
|
+
color: data.viewItem.getNormalizedStyle('border-color'),
|
|
84
|
+
width: data.viewItem.getNormalizedStyle('border-width')
|
|
85
|
+
};
|
|
86
|
+
const reducedBorder = {
|
|
87
|
+
style: reduceBoxSidesValue(normalizedBorder.style),
|
|
88
|
+
color: reduceBoxSidesValue(normalizedBorder.color),
|
|
89
|
+
width: reduceBoxSidesValue(normalizedBorder.width)
|
|
90
|
+
};
|
|
91
|
+
if (reducedBorder.style !== defaultBorder.style) {
|
|
92
|
+
conversionApi.writer.setAttribute(modelAttributes.style, reducedBorder.style, modelElement);
|
|
93
|
+
}
|
|
94
|
+
if (reducedBorder.color !== defaultBorder.color) {
|
|
95
|
+
conversionApi.writer.setAttribute(modelAttributes.color, reducedBorder.color, modelElement);
|
|
96
|
+
}
|
|
97
|
+
if (reducedBorder.width !== defaultBorder.width) {
|
|
98
|
+
conversionApi.writer.setAttribute(modelAttributes.width, reducedBorder.width, modelElement);
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Conversion helper for downcasting an attribute to a style.
|
|
104
|
+
*/
|
|
105
|
+
export function downcastAttributeToStyle(conversion, options) {
|
|
106
|
+
const { modelElement, modelAttribute, styleName } = options;
|
|
107
|
+
conversion.for('downcast').attributeToAttribute({
|
|
108
|
+
model: {
|
|
109
|
+
name: modelElement,
|
|
110
|
+
key: modelAttribute
|
|
111
|
+
},
|
|
112
|
+
view: modelAttributeValue => ({
|
|
113
|
+
key: 'style',
|
|
114
|
+
value: {
|
|
115
|
+
[styleName]: modelAttributeValue
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).
|
|
122
|
+
*/
|
|
123
|
+
export function downcastTableAttribute(conversion, options) {
|
|
124
|
+
const { modelAttribute, styleName } = options;
|
|
125
|
+
conversion.for('downcast').add(dispatcher => dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
|
|
126
|
+
const { item, attributeNewValue } = data;
|
|
127
|
+
const { mapper, writer } = conversionApi;
|
|
128
|
+
if (!conversionApi.consumable.consume(data.item, evt.name)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const table = [...mapper.toViewElement(item).getChildren()].find(child => child.is('element', 'table'));
|
|
132
|
+
if (attributeNewValue) {
|
|
133
|
+
writer.setStyle(styleName, attributeNewValue, table);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
writer.removeStyle(styleName, table);
|
|
137
|
+
}
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Reduces the full top, right, bottom, left object to a single string if all sides are equal.
|
|
142
|
+
* Returns original style otherwise.
|
|
143
|
+
*/
|
|
144
|
+
function reduceBoxSidesValue(style) {
|
|
145
|
+
if (!style) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const sides = ['top', 'right', 'bottom', 'left'];
|
|
149
|
+
const allSidesDefined = sides.every(side => style[side]);
|
|
150
|
+
if (!allSidesDefined) {
|
|
151
|
+
return style;
|
|
152
|
+
}
|
|
153
|
+
const topSideStyle = style.top;
|
|
154
|
+
const allSidesEqual = sides.every(side => style[side] === topSideStyle);
|
|
155
|
+
if (!allSidesEqual) {
|
|
156
|
+
return style;
|
|
157
|
+
}
|
|
158
|
+
return topSideStyle;
|
|
159
|
+
}
|
|
@@ -1,49 +1,49 @@
|
|
|
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/converters/upcasttable
|
|
7
|
-
*/
|
|
8
|
-
import type { UpcastDispatcher } from 'ckeditor5/src/engine';
|
|
9
|
-
/**
|
|
10
|
-
* Returns a function that converts the table view representation:
|
|
11
|
-
*
|
|
12
|
-
* ```xml
|
|
13
|
-
* <figure class="table"><table>...</table></figure>
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* to the model representation:
|
|
17
|
-
*
|
|
18
|
-
* ```xml
|
|
19
|
-
* <table></table>
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export declare function upcastTableFigure(): (dispatcher: UpcastDispatcher) => void;
|
|
23
|
-
/**
|
|
24
|
-
* View table element to model table element conversion helper.
|
|
25
|
-
*
|
|
26
|
-
* This conversion helper converts the table element as well as table rows.
|
|
27
|
-
*
|
|
28
|
-
* @returns Conversion helper.
|
|
29
|
-
*/
|
|
30
|
-
export default function upcastTable(): (dispatcher: UpcastDispatcher) => void;
|
|
31
|
-
/**
|
|
32
|
-
* A conversion helper that skips empty <tr> elements from upcasting at the beginning of the table.
|
|
33
|
-
*
|
|
34
|
-
* An empty row is considered a table model error but when handling clipboard data there could be rows that contain only row-spanned cells
|
|
35
|
-
* and empty TR-s are used to maintain the table structure (also {@link module:table/tablewalker~TableWalker} assumes that there are only
|
|
36
|
-
* rows that have related `tableRow` elements).
|
|
37
|
-
*
|
|
38
|
-
* *Note:* Only the first empty rows are removed because they have no meaning and it solves the issue
|
|
39
|
-
* of an improper table with all empty rows.
|
|
40
|
-
*
|
|
41
|
-
* @returns Conversion helper.
|
|
42
|
-
*/
|
|
43
|
-
export declare function skipEmptyTableRow(): (dispatcher: UpcastDispatcher) => void;
|
|
44
|
-
/**
|
|
45
|
-
* A converter that ensures an empty paragraph is inserted in a table cell if no other content was converted.
|
|
46
|
-
*
|
|
47
|
-
* @returns Conversion helper.
|
|
48
|
-
*/
|
|
49
|
-
export declare function ensureParagraphInTableCell(elementName: string): (dispatcher: UpcastDispatcher) => void;
|
|
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/converters/upcasttable
|
|
7
|
+
*/
|
|
8
|
+
import type { UpcastDispatcher } from 'ckeditor5/src/engine';
|
|
9
|
+
/**
|
|
10
|
+
* Returns a function that converts the table view representation:
|
|
11
|
+
*
|
|
12
|
+
* ```xml
|
|
13
|
+
* <figure class="table"><table>...</table></figure>
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* to the model representation:
|
|
17
|
+
*
|
|
18
|
+
* ```xml
|
|
19
|
+
* <table></table>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function upcastTableFigure(): (dispatcher: UpcastDispatcher) => void;
|
|
23
|
+
/**
|
|
24
|
+
* View table element to model table element conversion helper.
|
|
25
|
+
*
|
|
26
|
+
* This conversion helper converts the table element as well as table rows.
|
|
27
|
+
*
|
|
28
|
+
* @returns Conversion helper.
|
|
29
|
+
*/
|
|
30
|
+
export default function upcastTable(): (dispatcher: UpcastDispatcher) => void;
|
|
31
|
+
/**
|
|
32
|
+
* A conversion helper that skips empty <tr> elements from upcasting at the beginning of the table.
|
|
33
|
+
*
|
|
34
|
+
* An empty row is considered a table model error but when handling clipboard data there could be rows that contain only row-spanned cells
|
|
35
|
+
* and empty TR-s are used to maintain the table structure (also {@link module:table/tablewalker~TableWalker} assumes that there are only
|
|
36
|
+
* rows that have related `tableRow` elements).
|
|
37
|
+
*
|
|
38
|
+
* *Note:* Only the first empty rows are removed because they have no meaning and it solves the issue
|
|
39
|
+
* of an improper table with all empty rows.
|
|
40
|
+
*
|
|
41
|
+
* @returns Conversion helper.
|
|
42
|
+
*/
|
|
43
|
+
export declare function skipEmptyTableRow(): (dispatcher: UpcastDispatcher) => void;
|
|
44
|
+
/**
|
|
45
|
+
* A converter that ensures an empty paragraph is inserted in a table cell if no other content was converted.
|
|
46
|
+
*
|
|
47
|
+
* @returns Conversion helper.
|
|
48
|
+
*/
|
|
49
|
+
export declare function ensureParagraphInTableCell(elementName: string): (dispatcher: UpcastDispatcher) => void;
|