@ckeditor/ckeditor5-engine 45.2.1-alpha.9 → 46.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/dist/index.js +2563 -2257
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/controller/datacontroller.d.ts +33 -32
- package/src/controller/datacontroller.js +29 -28
- package/src/controller/editingcontroller.d.ts +8 -8
- package/src/controller/editingcontroller.js +10 -10
- package/src/conversion/conversion.d.ts +18 -19
- package/src/conversion/conversion.js +4 -4
- package/src/conversion/conversionhelpers.d.ts +1 -1
- package/src/conversion/conversionhelpers.js +1 -1
- package/src/conversion/downcastdispatcher.d.ts +63 -69
- package/src/conversion/downcastdispatcher.js +16 -16
- package/src/conversion/downcasthelpers.d.ts +94 -83
- package/src/conversion/downcasthelpers.js +63 -53
- package/src/conversion/mapper.d.ts +27 -27
- package/src/conversion/mapper.js +15 -15
- package/src/conversion/modelconsumable.d.ts +26 -26
- package/src/conversion/modelconsumable.js +23 -23
- package/src/conversion/upcastdispatcher.d.ts +33 -32
- package/src/conversion/upcastdispatcher.js +19 -19
- package/src/conversion/upcasthelpers.d.ts +46 -38
- package/src/conversion/upcasthelpers.js +33 -24
- package/src/conversion/viewconsumable.d.ts +50 -45
- package/src/conversion/viewconsumable.js +32 -27
- package/src/dataprocessor/basichtmlwriter.d.ts +4 -2
- package/src/dataprocessor/basichtmlwriter.js +3 -1
- package/src/dataprocessor/dataprocessor.d.ts +7 -6
- package/src/dataprocessor/htmldataprocessor.d.ts +10 -10
- package/src/dataprocessor/htmldataprocessor.js +6 -6
- package/src/dataprocessor/htmlwriter.d.ts +1 -1
- package/src/dataprocessor/xmldataprocessor.d.ts +10 -10
- package/src/dataprocessor/xmldataprocessor.js +6 -6
- package/src/dev-utils/model.d.ts +25 -26
- package/src/dev-utils/model.js +35 -36
- package/src/dev-utils/operationreplayer.d.ts +5 -3
- package/src/dev-utils/operationreplayer.js +4 -2
- package/src/dev-utils/utils.d.ts +8 -0
- package/src/dev-utils/utils.js +8 -0
- package/src/dev-utils/view.d.ts +66 -63
- package/src/dev-utils/view.js +144 -134
- package/src/index.d.ts +135 -106
- package/src/index.js +120 -71
- package/src/legacyerrors.d.ts +5 -0
- package/src/legacyerrors.js +17 -0
- package/src/model/batch.d.ts +2 -15
- package/src/model/batch.js +1 -23
- package/src/model/differ.d.ts +54 -31
- package/src/model/differ.js +15 -15
- package/src/model/document.d.ts +31 -31
- package/src/model/document.js +13 -13
- package/src/model/documentfragment.d.ts +45 -45
- package/src/model/documentfragment.js +40 -40
- package/src/model/documentselection.d.ts +92 -92
- package/src/model/documentselection.js +71 -70
- package/src/model/element.d.ts +31 -31
- package/src/model/element.js +29 -29
- package/src/model/history.d.ts +3 -3
- package/src/model/history.js +2 -2
- package/src/model/item.d.ts +4 -5
- package/src/model/liveposition.d.ts +31 -31
- package/src/model/liveposition.js +18 -18
- package/src/model/liverange.d.ts +42 -38
- package/src/model/liverange.js +17 -16
- package/src/model/markercollection.d.ts +41 -40
- package/src/model/markercollection.js +22 -20
- package/src/model/model.d.ts +82 -81
- package/src/model/model.js +54 -54
- package/src/model/node.d.ts +48 -48
- package/src/model/node.js +31 -31
- package/src/model/nodelist.d.ts +17 -17
- package/src/model/nodelist.js +11 -11
- package/src/model/operation/attributeoperation.d.ts +10 -10
- package/src/model/operation/attributeoperation.js +7 -7
- package/src/model/operation/detachoperation.d.ts +11 -9
- package/src/model/operation/detachoperation.js +8 -6
- package/src/model/operation/insertoperation.d.ts +13 -13
- package/src/model/operation/insertoperation.js +15 -15
- package/src/model/operation/markeroperation.d.ts +12 -12
- package/src/model/operation/markeroperation.js +5 -5
- package/src/model/operation/mergeoperation.d.ts +16 -16
- package/src/model/operation/mergeoperation.js +18 -18
- package/src/model/operation/moveoperation.d.ts +16 -16
- package/src/model/operation/moveoperation.js +18 -15
- package/src/model/operation/nooperation.d.ts +4 -4
- package/src/model/operation/nooperation.js +2 -2
- package/src/model/operation/operation.d.ts +10 -10
- package/src/model/operation/operation.js +5 -5
- package/src/model/operation/operationfactory.d.ts +4 -4
- package/src/model/operation/operationfactory.js +12 -12
- package/src/model/operation/renameoperation.d.ts +10 -10
- package/src/model/operation/renameoperation.js +7 -7
- package/src/model/operation/rootattributeoperation.d.ts +12 -12
- package/src/model/operation/rootattributeoperation.js +8 -8
- package/src/model/operation/rootoperation.d.ts +8 -8
- package/src/model/operation/rootoperation.js +3 -3
- package/src/model/operation/splitoperation.d.ts +17 -17
- package/src/model/operation/splitoperation.js +19 -19
- package/src/model/operation/transform.d.ts +11 -8
- package/src/model/operation/transform.js +66 -49
- package/src/model/operation/utils.d.ts +24 -23
- package/src/model/operation/utils.js +20 -20
- package/src/model/position.d.ts +101 -97
- package/src/model/position.js +69 -64
- package/src/model/range.d.ts +90 -90
- package/src/model/range.js +87 -87
- package/src/model/rootelement.d.ts +11 -11
- package/src/model/rootelement.js +9 -9
- package/src/model/schema.d.ts +158 -154
- package/src/model/schema.js +93 -90
- package/src/model/selection.d.ts +73 -73
- package/src/model/selection.js +62 -62
- package/src/model/text.d.ts +11 -10
- package/src/model/text.js +11 -10
- package/src/model/textproxy.d.ts +39 -38
- package/src/model/textproxy.js +31 -30
- package/src/model/treewalker.d.ts +37 -37
- package/src/model/treewalker.js +14 -14
- package/src/model/typecheckable.d.ts +45 -45
- package/src/model/typecheckable.js +1 -1
- package/src/model/utils/autoparagraphing.d.ts +7 -7
- package/src/model/utils/deletecontent.d.ts +7 -5
- package/src/model/utils/deletecontent.js +13 -11
- package/src/model/utils/getselectedcontent.d.ts +6 -5
- package/src/model/utils/getselectedcontent.js +2 -1
- package/src/model/utils/insertcontent.d.ts +9 -8
- package/src/model/utils/insertcontent.js +41 -40
- package/src/model/utils/insertobject.d.ts +9 -9
- package/src/model/utils/insertobject.js +4 -4
- package/src/model/utils/modifyselection.d.ts +5 -4
- package/src/model/utils/modifyselection.js +12 -11
- package/src/model/utils/selection-post-fixer.d.ts +12 -8
- package/src/model/utils/selection-post-fixer.js +15 -11
- package/src/model/writer.d.ts +102 -101
- package/src/model/writer.js +99 -98
- package/src/view/attributeelement.d.ts +29 -29
- package/src/view/attributeelement.js +25 -25
- package/src/view/containerelement.d.ts +16 -15
- package/src/view/containerelement.js +15 -14
- package/src/view/datatransfer.d.ts +7 -7
- package/src/view/datatransfer.js +1 -1
- package/src/view/document.d.ts +25 -25
- package/src/view/document.js +15 -15
- package/src/view/documentfragment.d.ts +21 -21
- package/src/view/documentfragment.js +14 -14
- package/src/view/documentselection.d.ts +65 -63
- package/src/view/documentselection.js +27 -25
- package/src/view/domconverter.d.ts +94 -89
- package/src/view/domconverter.js +78 -73
- package/src/view/downcastwriter.d.ts +185 -181
- package/src/view/downcastwriter.js +222 -210
- package/src/view/editableelement.d.ts +13 -13
- package/src/view/editableelement.js +8 -8
- package/src/view/element.d.ts +75 -74
- package/src/view/element.js +58 -58
- package/src/view/elementdefinition.d.ts +3 -4
- package/src/view/emptyelement.d.ts +13 -13
- package/src/view/emptyelement.js +13 -13
- package/src/view/filler.d.ts +14 -3
- package/src/view/filler.js +12 -1
- package/src/view/item.d.ts +4 -5
- package/src/view/matcher.d.ts +22 -19
- package/src/view/matcher.js +6 -6
- package/src/view/node.d.ts +33 -33
- package/src/view/node.js +9 -9
- package/src/view/observer/arrowkeysobserver.d.ts +10 -10
- package/src/view/observer/arrowkeysobserver.js +5 -5
- package/src/view/observer/bubblingemittermixin.d.ts +5 -5
- package/src/view/observer/bubblingemittermixin.js +2 -9
- package/src/view/observer/bubblingeventinfo.d.ts +9 -9
- package/src/view/observer/bubblingeventinfo.js +1 -1
- package/src/view/observer/clickobserver.d.ts +8 -8
- package/src/view/observer/clickobserver.js +4 -4
- package/src/view/observer/compositionobserver.d.ts +19 -19
- package/src/view/observer/compositionobserver.js +6 -6
- package/src/view/observer/domeventdata.d.ts +9 -9
- package/src/view/observer/domeventdata.js +2 -2
- package/src/view/observer/domeventobserver.d.ts +3 -3
- package/src/view/observer/domeventobserver.js +5 -5
- package/src/view/observer/fakeselectionobserver.d.ts +9 -9
- package/src/view/observer/fakeselectionobserver.js +8 -8
- package/src/view/observer/focusobserver.d.ts +16 -16
- package/src/view/observer/focusobserver.js +7 -7
- package/src/view/observer/inputobserver.d.ts +18 -18
- package/src/view/observer/inputobserver.js +5 -5
- package/src/view/observer/keyobserver.d.ts +11 -11
- package/src/view/observer/keyobserver.js +3 -3
- package/src/view/observer/mouseobserver.d.ts +16 -16
- package/src/view/observer/mouseobserver.js +3 -3
- package/src/view/observer/mutationobserver.d.ts +21 -21
- package/src/view/observer/mutationobserver.js +7 -7
- package/src/view/observer/observer.d.ts +12 -12
- package/src/view/observer/observer.js +6 -6
- package/src/view/observer/selectionobserver.d.ts +33 -33
- package/src/view/observer/selectionobserver.js +14 -14
- package/src/view/observer/tabobserver.d.ts +10 -10
- package/src/view/observer/tabobserver.js +5 -5
- package/src/view/observer/touchobserver.d.ts +13 -13
- package/src/view/observer/touchobserver.js +3 -3
- package/src/view/placeholder.d.ts +21 -21
- package/src/view/placeholder.js +23 -23
- package/src/view/position.d.ts +49 -49
- package/src/view/position.js +42 -42
- package/src/view/range.d.ts +76 -74
- package/src/view/range.js +67 -65
- package/src/view/rawelement.d.ts +19 -19
- package/src/view/rawelement.js +16 -16
- package/src/view/renderer.d.ts +14 -14
- package/src/view/renderer.js +7 -7
- package/src/view/rooteditableelement.d.ts +8 -7
- package/src/view/rooteditableelement.js +7 -6
- package/src/view/selection.d.ts +66 -64
- package/src/view/selection.js +50 -48
- package/src/view/styles/background.d.ts +2 -2
- package/src/view/styles/background.js +9 -9
- package/src/view/styles/border.d.ts +2 -2
- package/src/view/styles/border.js +13 -13
- package/src/view/styles/margin.d.ts +2 -2
- package/src/view/styles/margin.js +5 -5
- package/src/view/styles/padding.d.ts +2 -2
- package/src/view/styles/padding.js +5 -5
- package/src/view/styles/utils.d.ts +24 -24
- package/src/view/styles/utils.js +25 -25
- package/src/view/stylesmap.d.ts +28 -32
- package/src/view/stylesmap.js +52 -39
- package/src/view/text.d.ts +11 -11
- package/src/view/text.js +10 -10
- package/src/view/textproxy.d.ts +33 -32
- package/src/view/textproxy.js +23 -22
- package/src/view/tokenlist.d.ts +14 -14
- package/src/view/tokenlist.js +10 -10
- package/src/view/treewalker.d.ts +42 -40
- package/src/view/treewalker.js +36 -35
- package/src/view/typecheckable.d.ts +76 -75
- package/src/view/typecheckable.js +1 -1
- package/src/view/uielement.d.ts +22 -21
- package/src/view/uielement.js +17 -16
- package/src/view/upcastwriter.d.ts +70 -70
- package/src/view/upcastwriter.js +42 -42
- package/src/view/view.d.ts +70 -69
- package/src/view/view.js +56 -55
|
@@ -10,7 +10,7 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
10
10
|
* Adds a background CSS styles processing rules.
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
* editor.data.addStyleProcessorRules(
|
|
13
|
+
* editor.data.addStyleProcessorRules( addBackgroundStylesRules );
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* The normalized value is stored as:
|
|
@@ -30,4 +30,4 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
30
30
|
* **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only
|
|
31
31
|
* `'background-color'` value.
|
|
32
32
|
*/
|
|
33
|
-
export declare function
|
|
33
|
+
export declare function addBackgroundStylesRules(stylesProcessor: StylesProcessor): void;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getShorthandStylesValues, isAttachmentStyleValue, isColorStyleValue, isPositionStyleValue, isRepeatStyleValue, isURLStyleValue } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* Adds a background CSS styles processing rules.
|
|
8
8
|
*
|
|
9
9
|
* ```ts
|
|
10
|
-
* editor.data.addStyleProcessorRules(
|
|
10
|
+
* editor.data.addStyleProcessorRules( addBackgroundStylesRules );
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* The normalized value is stored as:
|
|
@@ -27,7 +27,7 @@ import { getShorthandValues, isAttachment, isColor, isPosition, isRepeat, isURL
|
|
|
27
27
|
* **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only
|
|
28
28
|
* `'background-color'` value.
|
|
29
29
|
*/
|
|
30
|
-
export function
|
|
30
|
+
export function addBackgroundStylesRules(stylesProcessor) {
|
|
31
31
|
stylesProcessor.setNormalizer('background', getBackgroundNormalizer());
|
|
32
32
|
stylesProcessor.setNormalizer('background-color', getBackgroundColorNormalizer());
|
|
33
33
|
stylesProcessor.setReducer('background', getBackgroundReducer());
|
|
@@ -36,23 +36,23 @@ export function addBackgroundRules(stylesProcessor) {
|
|
|
36
36
|
function getBackgroundNormalizer() {
|
|
37
37
|
return value => {
|
|
38
38
|
const background = {};
|
|
39
|
-
const parts =
|
|
39
|
+
const parts = getShorthandStylesValues(value);
|
|
40
40
|
for (const part of parts) {
|
|
41
|
-
if (
|
|
41
|
+
if (isRepeatStyleValue(part)) {
|
|
42
42
|
background.repeat = background.repeat || [];
|
|
43
43
|
background.repeat.push(part);
|
|
44
44
|
}
|
|
45
|
-
else if (
|
|
45
|
+
else if (isPositionStyleValue(part)) {
|
|
46
46
|
background.position = background.position || [];
|
|
47
47
|
background.position.push(part);
|
|
48
48
|
}
|
|
49
|
-
else if (
|
|
49
|
+
else if (isAttachmentStyleValue(part)) {
|
|
50
50
|
background.attachment = part;
|
|
51
51
|
}
|
|
52
|
-
else if (
|
|
52
|
+
else if (isColorStyleValue(part)) {
|
|
53
53
|
background.color = part;
|
|
54
54
|
}
|
|
55
|
-
else if (
|
|
55
|
+
else if (isURLStyleValue(part)) {
|
|
56
56
|
background.image = part;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -10,7 +10,7 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
10
10
|
* Adds a border CSS styles processing rules.
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
* editor.data.addStyleProcessorRules(
|
|
13
|
+
* editor.data.addStyleProcessorRules( addBorderStylesRules );
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:
|
|
@@ -40,4 +40,4 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
40
40
|
* };
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
|
-
export declare function
|
|
43
|
+
export declare function addBorderStylesRules(stylesProcessor: StylesProcessor): void;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getShorthandStylesValues, getBoxSidesStyleValueReducer, getBoxSidesStyleValues, isLengthStyleValue, isLineStyleValue } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* Adds a border CSS styles processing rules.
|
|
8
8
|
*
|
|
9
9
|
* ```ts
|
|
10
|
-
* editor.data.addStyleProcessorRules(
|
|
10
|
+
* editor.data.addStyleProcessorRules( addBorderStylesRules );
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:
|
|
@@ -37,7 +37,7 @@ import { getShorthandValues, getBoxSidesValueReducer, getBoxSidesValues, isLengt
|
|
|
37
37
|
* };
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
export function
|
|
40
|
+
export function addBorderStylesRules(stylesProcessor) {
|
|
41
41
|
stylesProcessor.setNormalizer('border', getBorderNormalizer());
|
|
42
42
|
// Border-position shorthands.
|
|
43
43
|
stylesProcessor.setNormalizer('border-top', getBorderPositionNormalizer('top'));
|
|
@@ -77,9 +77,9 @@ export function addBorderRules(stylesProcessor) {
|
|
|
77
77
|
stylesProcessor.setExtractor('border-right-style', 'border.style.right');
|
|
78
78
|
stylesProcessor.setExtractor('border-bottom-style', 'border.style.bottom');
|
|
79
79
|
stylesProcessor.setExtractor('border-left-style', 'border.style.left');
|
|
80
|
-
stylesProcessor.setReducer('border-color',
|
|
81
|
-
stylesProcessor.setReducer('border-style',
|
|
82
|
-
stylesProcessor.setReducer('border-width',
|
|
80
|
+
stylesProcessor.setReducer('border-color', getBoxSidesStyleValueReducer('border-color'));
|
|
81
|
+
stylesProcessor.setReducer('border-style', getBoxSidesStyleValueReducer('border-style'));
|
|
82
|
+
stylesProcessor.setReducer('border-width', getBoxSidesStyleValueReducer('border-width'));
|
|
83
83
|
stylesProcessor.setReducer('border-top', getBorderPositionReducer('top'));
|
|
84
84
|
stylesProcessor.setReducer('border-right', getBorderPositionReducer('right'));
|
|
85
85
|
stylesProcessor.setReducer('border-bottom', getBorderPositionReducer('bottom'));
|
|
@@ -112,9 +112,9 @@ function getBorderNormalizer() {
|
|
|
112
112
|
return {
|
|
113
113
|
path: 'border',
|
|
114
114
|
value: {
|
|
115
|
-
color:
|
|
116
|
-
style:
|
|
117
|
-
width:
|
|
115
|
+
color: getBoxSidesStyleValues(color),
|
|
116
|
+
style: getBoxSidesStyleValues(style),
|
|
117
|
+
width: getBoxSidesStyleValues(width)
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
120
|
};
|
|
@@ -148,7 +148,7 @@ function getBorderPropertyNormalizer(propertyName) {
|
|
|
148
148
|
}
|
|
149
149
|
function toBorderPropertyShorthand(value, property) {
|
|
150
150
|
return {
|
|
151
|
-
[property]:
|
|
151
|
+
[property]: getBoxSidesStyleValues(value)
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
function getBorderPropertyPositionNormalizer(property, side) {
|
|
@@ -185,12 +185,12 @@ function extractBorderPosition(border, which) {
|
|
|
185
185
|
}
|
|
186
186
|
function normalizeBorderShorthand(string) {
|
|
187
187
|
const result = {};
|
|
188
|
-
const parts =
|
|
188
|
+
const parts = getShorthandStylesValues(string);
|
|
189
189
|
for (const part of parts) {
|
|
190
|
-
if (
|
|
190
|
+
if (isLengthStyleValue(part) || /thin|medium|thick/.test(part)) {
|
|
191
191
|
result.width = part;
|
|
192
192
|
}
|
|
193
|
-
else if (
|
|
193
|
+
else if (isLineStyleValue(part)) {
|
|
194
194
|
result.style = part;
|
|
195
195
|
}
|
|
196
196
|
else {
|
|
@@ -10,7 +10,7 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
10
10
|
* Adds a margin CSS styles processing rules.
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
* editor.data.addStyleProcessorRules(
|
|
13
|
+
* editor.data.addStyleProcessorRules( addMarginStylesRules );
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* The normalized value is stored as:
|
|
@@ -26,4 +26,4 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
26
26
|
* };
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function addMarginStylesRules(stylesProcessor: StylesProcessor): void;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getPositionStyleShorthandNormalizer, getBoxSidesStyleValueReducer } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* Adds a margin CSS styles processing rules.
|
|
8
8
|
*
|
|
9
9
|
* ```ts
|
|
10
|
-
* editor.data.addStyleProcessorRules(
|
|
10
|
+
* editor.data.addStyleProcessorRules( addMarginStylesRules );
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* The normalized value is stored as:
|
|
@@ -23,12 +23,12 @@ import { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils
|
|
|
23
23
|
* };
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
export function
|
|
27
|
-
stylesProcessor.setNormalizer('margin',
|
|
26
|
+
export function addMarginStylesRules(stylesProcessor) {
|
|
27
|
+
stylesProcessor.setNormalizer('margin', getPositionStyleShorthandNormalizer('margin'));
|
|
28
28
|
stylesProcessor.setNormalizer('margin-top', value => ({ path: 'margin.top', value }));
|
|
29
29
|
stylesProcessor.setNormalizer('margin-right', value => ({ path: 'margin.right', value }));
|
|
30
30
|
stylesProcessor.setNormalizer('margin-bottom', value => ({ path: 'margin.bottom', value }));
|
|
31
31
|
stylesProcessor.setNormalizer('margin-left', value => ({ path: 'margin.left', value }));
|
|
32
|
-
stylesProcessor.setReducer('margin',
|
|
32
|
+
stylesProcessor.setReducer('margin', getBoxSidesStyleValueReducer('margin'));
|
|
33
33
|
stylesProcessor.setStyleRelation('margin', ['margin-top', 'margin-right', 'margin-bottom', 'margin-left']);
|
|
34
34
|
}
|
|
@@ -10,7 +10,7 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
10
10
|
* Adds a padding CSS styles processing rules.
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
* editor.data.addStyleProcessorRules(
|
|
13
|
+
* editor.data.addStyleProcessorRules( addPaddingStylesRules );
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* The normalized value is stored as:
|
|
@@ -26,4 +26,4 @@ import type { StylesProcessor } from '../stylesmap.js';
|
|
|
26
26
|
* };
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function addPaddingStylesRules(stylesProcessor: StylesProcessor): void;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getPositionStyleShorthandNormalizer, getBoxSidesStyleValueReducer } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* Adds a padding CSS styles processing rules.
|
|
8
8
|
*
|
|
9
9
|
* ```ts
|
|
10
|
-
* editor.data.addStyleProcessorRules(
|
|
10
|
+
* editor.data.addStyleProcessorRules( addPaddingStylesRules );
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* The normalized value is stored as:
|
|
@@ -23,12 +23,12 @@ import { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils
|
|
|
23
23
|
* };
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
export function
|
|
27
|
-
stylesProcessor.setNormalizer('padding',
|
|
26
|
+
export function addPaddingStylesRules(stylesProcessor) {
|
|
27
|
+
stylesProcessor.setNormalizer('padding', getPositionStyleShorthandNormalizer('padding'));
|
|
28
28
|
stylesProcessor.setNormalizer('padding-top', value => ({ path: 'padding.top', value }));
|
|
29
29
|
stylesProcessor.setNormalizer('padding-right', value => ({ path: 'padding.right', value }));
|
|
30
30
|
stylesProcessor.setNormalizer('padding-bottom', value => ({ path: 'padding.bottom', value }));
|
|
31
31
|
stylesProcessor.setNormalizer('padding-left', value => ({ path: 'padding.left', value }));
|
|
32
|
-
stylesProcessor.setReducer('padding',
|
|
32
|
+
stylesProcessor.setReducer('padding', getBoxSidesStyleValueReducer('padding'));
|
|
33
33
|
stylesProcessor.setStyleRelation('padding', ['padding-top', 'padding-right', 'padding-bottom', 'padding-left']);
|
|
34
34
|
}
|
|
@@ -5,89 +5,89 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @module engine/view/styles/utils
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { BoxStyleSides, StylePropertyDescriptor, StyleValue } from '../stylesmap.js';
|
|
9
9
|
/**
|
|
10
10
|
* Checks if string contains [color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS value.
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* isColorStyleValue( '#f00' ); // true
|
|
14
|
+
* isColorStyleValue( '#AA00BB33' ); // true
|
|
15
|
+
* isColorStyleValue( 'rgb(0, 0, 250)' ); // true
|
|
16
|
+
* isColorStyleValue( 'hsla(240, 100%, 50%, .7)' ); // true
|
|
17
|
+
* isColorStyleValue( 'deepskyblue' ); // true
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
20
|
* **Note**: It does not support CSS Level 4 whitespace syntax, system colors and radius values for HSL colors.
|
|
21
21
|
*/
|
|
22
|
-
export declare function
|
|
22
|
+
export declare function isColorStyleValue(string: string): boolean;
|
|
23
23
|
/**
|
|
24
24
|
* Checks if string contains [line style](https://developer.mozilla.org/en-US/docs/Web/CSS/border-style) CSS value.
|
|
25
25
|
*/
|
|
26
|
-
export declare function
|
|
26
|
+
export declare function isLineStyleValue(string: string): boolean;
|
|
27
27
|
/**
|
|
28
28
|
* Checks if string contains [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length) CSS value.
|
|
29
29
|
*/
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function isLengthStyleValue(string: string): boolean;
|
|
31
31
|
/**
|
|
32
32
|
* Checks if string contains [percentage](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) CSS value.
|
|
33
33
|
*/
|
|
34
|
-
export declare function
|
|
34
|
+
export declare function isPercentageStyleValue(string: string): boolean;
|
|
35
35
|
/**
|
|
36
36
|
* Checks if string contains [background repeat](https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat) CSS value.
|
|
37
37
|
*/
|
|
38
|
-
export declare function
|
|
38
|
+
export declare function isRepeatStyleValue(string: string): boolean;
|
|
39
39
|
/**
|
|
40
40
|
* Checks if string contains [background position](https://developer.mozilla.org/en-US/docs/Web/CSS/background-position) CSS value.
|
|
41
41
|
*/
|
|
42
|
-
export declare function
|
|
42
|
+
export declare function isPositionStyleValue(string: string): boolean;
|
|
43
43
|
/**
|
|
44
44
|
* Checks if string contains [background attachment](https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment) CSS value.
|
|
45
45
|
*/
|
|
46
|
-
export declare function
|
|
46
|
+
export declare function isAttachmentStyleValue(string: string): boolean;
|
|
47
47
|
/**
|
|
48
48
|
* Checks if string contains [URL](https://developer.mozilla.org/en-US/docs/Web/CSS/url) CSS value.
|
|
49
49
|
*/
|
|
50
|
-
export declare function
|
|
50
|
+
export declare function isURLStyleValue(string: string): boolean;
|
|
51
51
|
/**
|
|
52
52
|
* Parses box sides as individual values.
|
|
53
53
|
*/
|
|
54
|
-
export declare function
|
|
54
|
+
export declare function getBoxSidesStyleValues(value?: string): BoxStyleSides;
|
|
55
55
|
/**
|
|
56
56
|
* Default reducer for CSS properties that concerns edges of a box
|
|
57
57
|
* [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) notations:
|
|
58
58
|
*
|
|
59
59
|
* ```ts
|
|
60
|
-
* stylesProcessor.setReducer( 'padding',
|
|
60
|
+
* stylesProcessor.setReducer( 'padding', getBoxSidesStyleValueReducer( 'padding' ) );
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
|
-
export declare function
|
|
63
|
+
export declare function getBoxSidesStyleValueReducer(styleShorthand: string): (value: StyleValue) => Array<StylePropertyDescriptor>;
|
|
64
64
|
/**
|
|
65
65
|
* Returns a [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) notation
|
|
66
66
|
* of a CSS property value.
|
|
67
67
|
*
|
|
68
68
|
* ```ts
|
|
69
|
-
*
|
|
69
|
+
* getBoxSidesStyleShorthandValue( { top: '1px', right: '1px', bottom: '2px', left: '1px' } );
|
|
70
70
|
* // will return '1px 1px 2px'
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
|
-
export declare function
|
|
73
|
+
export declare function getBoxSidesStyleShorthandValue({ top, right, bottom, left }: BoxStyleSides): string;
|
|
74
74
|
/**
|
|
75
75
|
* Creates a normalizer for a [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) 1-to-4 value.
|
|
76
76
|
*
|
|
77
77
|
* ```ts
|
|
78
|
-
* stylesProcessor.setNormalizer( 'margin',
|
|
78
|
+
* stylesProcessor.setNormalizer( 'margin', getPositionStyleShorthandNormalizer( 'margin' ) );
|
|
79
79
|
* ```
|
|
80
80
|
*/
|
|
81
|
-
export declare function
|
|
81
|
+
export declare function getPositionStyleShorthandNormalizer(shorthand: string): (value: string) => {
|
|
82
82
|
path: string;
|
|
83
|
-
value:
|
|
83
|
+
value: BoxStyleSides;
|
|
84
84
|
};
|
|
85
85
|
/**
|
|
86
86
|
* Parses parts of a 1-to-4 value notation - handles some CSS values with spaces (like RGB()).
|
|
87
87
|
*
|
|
88
88
|
* ```ts
|
|
89
|
-
*
|
|
89
|
+
* getShorthandStylesValues( 'red blue RGB(0, 0, 0)');
|
|
90
90
|
* // will return [ 'red', 'blue', 'RGB(0, 0, 0)' ]
|
|
91
91
|
* ```
|
|
92
92
|
*/
|
|
93
|
-
export declare function
|
|
93
|
+
export declare function getShorthandStylesValues(string: string): Array<string>;
|
package/src/view/styles/utils.js
CHANGED
|
@@ -47,16 +47,16 @@ const COLOR_NAMES = new Set([
|
|
|
47
47
|
* Checks if string contains [color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS value.
|
|
48
48
|
*
|
|
49
49
|
* ```ts
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
50
|
+
* isColorStyleValue( '#f00' ); // true
|
|
51
|
+
* isColorStyleValue( '#AA00BB33' ); // true
|
|
52
|
+
* isColorStyleValue( 'rgb(0, 0, 250)' ); // true
|
|
53
|
+
* isColorStyleValue( 'hsla(240, 100%, 50%, .7)' ); // true
|
|
54
|
+
* isColorStyleValue( 'deepskyblue' ); // true
|
|
55
55
|
* ```
|
|
56
56
|
*
|
|
57
57
|
* **Note**: It does not support CSS Level 4 whitespace syntax, system colors and radius values for HSL colors.
|
|
58
58
|
*/
|
|
59
|
-
export function
|
|
59
|
+
export function isColorStyleValue(string) {
|
|
60
60
|
// As far as I was able to test checking some pre-conditions is faster than joining each test with ||.
|
|
61
61
|
if (string.startsWith('#')) {
|
|
62
62
|
return HEX_COLOR_REGEXP.test(string);
|
|
@@ -74,59 +74,59 @@ const lineStyleValues = ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double'
|
|
|
74
74
|
/**
|
|
75
75
|
* Checks if string contains [line style](https://developer.mozilla.org/en-US/docs/Web/CSS/border-style) CSS value.
|
|
76
76
|
*/
|
|
77
|
-
export function
|
|
77
|
+
export function isLineStyleValue(string) {
|
|
78
78
|
return lineStyleValues.includes(string);
|
|
79
79
|
}
|
|
80
80
|
const lengthRegExp = /^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;
|
|
81
81
|
/**
|
|
82
82
|
* Checks if string contains [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length) CSS value.
|
|
83
83
|
*/
|
|
84
|
-
export function
|
|
84
|
+
export function isLengthStyleValue(string) {
|
|
85
85
|
return lengthRegExp.test(string);
|
|
86
86
|
}
|
|
87
87
|
const PERCENTAGE_VALUE_REGEXP = /^[+-]?[0-9]*([.][0-9]+)?%$/;
|
|
88
88
|
/**
|
|
89
89
|
* Checks if string contains [percentage](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) CSS value.
|
|
90
90
|
*/
|
|
91
|
-
export function
|
|
91
|
+
export function isPercentageStyleValue(string) {
|
|
92
92
|
return PERCENTAGE_VALUE_REGEXP.test(string);
|
|
93
93
|
}
|
|
94
94
|
const repeatValues = ['repeat-x', 'repeat-y', 'repeat', 'space', 'round', 'no-repeat'];
|
|
95
95
|
/**
|
|
96
96
|
* Checks if string contains [background repeat](https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat) CSS value.
|
|
97
97
|
*/
|
|
98
|
-
export function
|
|
98
|
+
export function isRepeatStyleValue(string) {
|
|
99
99
|
return repeatValues.includes(string);
|
|
100
100
|
}
|
|
101
101
|
const positionValues = ['center', 'top', 'bottom', 'left', 'right'];
|
|
102
102
|
/**
|
|
103
103
|
* Checks if string contains [background position](https://developer.mozilla.org/en-US/docs/Web/CSS/background-position) CSS value.
|
|
104
104
|
*/
|
|
105
|
-
export function
|
|
105
|
+
export function isPositionStyleValue(string) {
|
|
106
106
|
return positionValues.includes(string);
|
|
107
107
|
}
|
|
108
108
|
const attachmentValues = ['fixed', 'scroll', 'local'];
|
|
109
109
|
/**
|
|
110
110
|
* Checks if string contains [background attachment](https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment) CSS value.
|
|
111
111
|
*/
|
|
112
|
-
export function
|
|
112
|
+
export function isAttachmentStyleValue(string) {
|
|
113
113
|
return attachmentValues.includes(string);
|
|
114
114
|
}
|
|
115
115
|
const urlRegExp = /^url\(/;
|
|
116
116
|
/**
|
|
117
117
|
* Checks if string contains [URL](https://developer.mozilla.org/en-US/docs/Web/CSS/url) CSS value.
|
|
118
118
|
*/
|
|
119
|
-
export function
|
|
119
|
+
export function isURLStyleValue(string) {
|
|
120
120
|
return urlRegExp.test(string);
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
123
|
* Parses box sides as individual values.
|
|
124
124
|
*/
|
|
125
|
-
export function
|
|
125
|
+
export function getBoxSidesStyleValues(value = '') {
|
|
126
126
|
if (value === '') {
|
|
127
127
|
return { top: undefined, right: undefined, bottom: undefined, left: undefined };
|
|
128
128
|
}
|
|
129
|
-
const values =
|
|
129
|
+
const values = getShorthandStylesValues(value);
|
|
130
130
|
const top = values[0];
|
|
131
131
|
const bottom = values[2] || top;
|
|
132
132
|
const right = values[1] || top;
|
|
@@ -138,10 +138,10 @@ export function getBoxSidesValues(value = '') {
|
|
|
138
138
|
* [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) notations:
|
|
139
139
|
*
|
|
140
140
|
* ```ts
|
|
141
|
-
* stylesProcessor.setReducer( 'padding',
|
|
141
|
+
* stylesProcessor.setReducer( 'padding', getBoxSidesStyleValueReducer( 'padding' ) );
|
|
142
142
|
* ```
|
|
143
143
|
*/
|
|
144
|
-
export function
|
|
144
|
+
export function getBoxSidesStyleValueReducer(styleShorthand) {
|
|
145
145
|
return (value) => {
|
|
146
146
|
const { top, right, bottom, left } = value;
|
|
147
147
|
const reduced = [];
|
|
@@ -160,7 +160,7 @@ export function getBoxSidesValueReducer(styleShorthand) {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
else {
|
|
163
|
-
reduced.push([styleShorthand,
|
|
163
|
+
reduced.push([styleShorthand, getBoxSidesStyleShorthandValue(value)]);
|
|
164
164
|
}
|
|
165
165
|
return reduced;
|
|
166
166
|
};
|
|
@@ -170,11 +170,11 @@ export function getBoxSidesValueReducer(styleShorthand) {
|
|
|
170
170
|
* of a CSS property value.
|
|
171
171
|
*
|
|
172
172
|
* ```ts
|
|
173
|
-
*
|
|
173
|
+
* getBoxSidesStyleShorthandValue( { top: '1px', right: '1px', bottom: '2px', left: '1px' } );
|
|
174
174
|
* // will return '1px 1px 2px'
|
|
175
175
|
* ```
|
|
176
176
|
*/
|
|
177
|
-
export function
|
|
177
|
+
export function getBoxSidesStyleShorthandValue({ top, right, bottom, left }) {
|
|
178
178
|
const out = [];
|
|
179
179
|
if (left !== right) {
|
|
180
180
|
out.push(top, right, bottom, left);
|
|
@@ -194,14 +194,14 @@ export function getBoxSidesShorthandValue({ top, right, bottom, left }) {
|
|
|
194
194
|
* Creates a normalizer for a [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) 1-to-4 value.
|
|
195
195
|
*
|
|
196
196
|
* ```ts
|
|
197
|
-
* stylesProcessor.setNormalizer( 'margin',
|
|
197
|
+
* stylesProcessor.setNormalizer( 'margin', getPositionStyleShorthandNormalizer( 'margin' ) );
|
|
198
198
|
* ```
|
|
199
199
|
*/
|
|
200
|
-
export function
|
|
200
|
+
export function getPositionStyleShorthandNormalizer(shorthand) {
|
|
201
201
|
return (value) => {
|
|
202
202
|
return {
|
|
203
203
|
path: shorthand,
|
|
204
|
-
value:
|
|
204
|
+
value: getBoxSidesStyleValues(value)
|
|
205
205
|
};
|
|
206
206
|
};
|
|
207
207
|
}
|
|
@@ -209,11 +209,11 @@ export function getPositionShorthandNormalizer(shorthand) {
|
|
|
209
209
|
* Parses parts of a 1-to-4 value notation - handles some CSS values with spaces (like RGB()).
|
|
210
210
|
*
|
|
211
211
|
* ```ts
|
|
212
|
-
*
|
|
212
|
+
* getShorthandStylesValues( 'red blue RGB(0, 0, 0)');
|
|
213
213
|
* // will return [ 'red', 'blue', 'RGB(0, 0, 0)' ]
|
|
214
214
|
* ```
|
|
215
215
|
*/
|
|
216
|
-
export function
|
|
216
|
+
export function getShorthandStylesValues(string) {
|
|
217
217
|
const matches = string.trim().slice(0, 1500).matchAll(CSS_SHORTHAND_VALUE_REGEXP);
|
|
218
218
|
return Array.from(matches).map(i => i[0]);
|
|
219
219
|
}
|