@ckeditor/ckeditor5-engine 36.0.1 → 37.0.0-alpha.1
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/README.md +1 -1
- package/package.json +25 -24
- package/src/controller/datacontroller.d.ts +331 -0
- package/src/controller/datacontroller.js +72 -116
- package/src/controller/editingcontroller.d.ts +98 -0
- package/src/controller/editingcontroller.js +22 -46
- package/src/conversion/conversion.d.ts +476 -0
- package/src/conversion/conversion.js +328 -347
- package/src/conversion/conversionhelpers.d.ts +26 -0
- package/src/conversion/conversionhelpers.js +1 -5
- package/src/conversion/downcastdispatcher.d.ts +547 -0
- package/src/conversion/downcastdispatcher.js +74 -152
- package/src/conversion/downcasthelpers.d.ts +1226 -0
- package/src/conversion/downcasthelpers.js +843 -762
- package/src/conversion/mapper.d.ts +503 -0
- package/src/conversion/mapper.js +84 -99
- package/src/conversion/modelconsumable.d.ts +201 -0
- package/src/conversion/modelconsumable.js +96 -99
- package/src/conversion/upcastdispatcher.d.ts +492 -0
- package/src/conversion/upcastdispatcher.js +73 -100
- package/src/conversion/upcasthelpers.d.ts +499 -0
- package/src/conversion/upcasthelpers.js +406 -373
- package/src/conversion/viewconsumable.d.ts +369 -0
- package/src/conversion/viewconsumable.js +139 -173
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -0
- package/src/dataprocessor/basichtmlwriter.js +0 -9
- package/src/dataprocessor/dataprocessor.d.ts +61 -0
- package/src/dataprocessor/htmldataprocessor.d.ts +76 -0
- package/src/dataprocessor/htmldataprocessor.js +6 -28
- package/src/dataprocessor/htmlwriter.d.ts +16 -0
- package/src/dataprocessor/xmldataprocessor.d.ts +90 -0
- package/src/dataprocessor/xmldataprocessor.js +8 -40
- package/src/dev-utils/model.d.ts +124 -0
- package/src/dev-utils/model.js +41 -38
- package/src/dev-utils/operationreplayer.d.ts +51 -0
- package/src/dev-utils/operationreplayer.js +6 -14
- package/src/dev-utils/utils.d.ts +37 -0
- package/src/dev-utils/utils.js +5 -18
- package/src/dev-utils/view.d.ts +319 -0
- package/src/dev-utils/view.js +205 -226
- package/src/index.d.ts +108 -0
- package/src/index.js +4 -0
- package/src/model/batch.d.ts +106 -0
- package/src/model/differ.d.ts +329 -0
- package/src/model/document.d.ts +246 -0
- package/src/model/document.js +1 -1
- package/src/model/documentfragment.d.ts +196 -0
- package/src/model/documentfragment.js +2 -2
- package/src/model/documentselection.d.ts +420 -0
- package/src/model/element.d.ts +165 -0
- package/src/model/history.d.ts +114 -0
- package/src/model/item.d.ts +14 -0
- package/src/model/liveposition.d.ts +77 -0
- package/src/model/liverange.d.ts +102 -0
- package/src/model/markercollection.d.ts +335 -0
- package/src/model/model.d.ts +885 -0
- package/src/model/model.js +59 -81
- package/src/model/node.d.ts +256 -0
- package/src/model/nodelist.d.ts +91 -0
- package/src/model/operation/attributeoperation.d.ts +98 -0
- package/src/model/operation/detachoperation.d.ts +55 -0
- package/src/model/operation/insertoperation.d.ts +85 -0
- package/src/model/operation/markeroperation.d.ts +86 -0
- package/src/model/operation/mergeoperation.d.ts +95 -0
- package/src/model/operation/mergeoperation.js +1 -1
- package/src/model/operation/moveoperation.d.ts +91 -0
- package/src/model/operation/nooperation.d.ts +33 -0
- package/src/model/operation/operation.d.ts +89 -0
- package/src/model/operation/operationfactory.d.ts +18 -0
- package/src/model/operation/renameoperation.d.ts +78 -0
- package/src/model/operation/rootattributeoperation.d.ts +97 -0
- package/src/model/operation/rootattributeoperation.js +1 -1
- package/src/model/operation/splitoperation.d.ts +104 -0
- package/src/model/operation/splitoperation.js +1 -1
- package/src/model/operation/transform.d.ts +100 -0
- package/src/model/operation/utils.d.ts +71 -0
- package/src/model/operation/utils.js +1 -1
- package/src/model/position.d.ts +539 -0
- package/src/model/position.js +1 -1
- package/src/model/range.d.ts +458 -0
- package/src/model/range.js +1 -1
- package/src/model/rootelement.d.ts +40 -0
- package/src/model/schema.d.ts +1176 -0
- package/src/model/schema.js +19 -19
- package/src/model/selection.d.ts +472 -0
- package/src/model/text.d.ts +66 -0
- package/src/model/text.js +0 -2
- package/src/model/textproxy.d.ts +144 -0
- package/src/model/treewalker.d.ts +186 -0
- package/src/model/treewalker.js +19 -10
- package/src/model/typecheckable.d.ts +285 -0
- package/src/model/utils/autoparagraphing.d.ts +37 -0
- package/src/model/utils/deletecontent.d.ts +58 -0
- package/src/model/utils/findoptimalinsertionrange.d.ts +32 -0
- package/src/model/utils/getselectedcontent.d.ts +30 -0
- package/src/model/utils/insertcontent.d.ts +46 -0
- package/src/model/utils/insertcontent.js +2 -12
- package/src/model/utils/insertobject.d.ts +44 -0
- package/src/model/utils/insertobject.js +3 -14
- package/src/model/utils/modifyselection.d.ts +48 -0
- package/src/model/utils/selection-post-fixer.d.ts +65 -0
- package/src/model/writer.d.ts +823 -0
- package/src/model/writer.js +6 -61
- package/src/view/attributeelement.d.ts +108 -0
- package/src/view/attributeelement.js +25 -69
- package/src/view/containerelement.d.ts +49 -0
- package/src/view/containerelement.js +10 -43
- package/src/view/datatransfer.d.ts +75 -0
- package/src/view/document.d.ts +184 -0
- package/src/view/document.js +15 -84
- package/src/view/documentfragment.d.ts +149 -0
- package/src/view/documentfragment.js +39 -81
- package/src/view/documentselection.d.ts +306 -0
- package/src/view/documentselection.js +42 -143
- package/src/view/domconverter.d.ts +650 -0
- package/src/view/domconverter.js +157 -283
- package/src/view/downcastwriter.d.ts +996 -0
- package/src/view/downcastwriter.js +259 -426
- package/src/view/editableelement.d.ts +52 -0
- package/src/view/editableelement.js +9 -49
- package/src/view/element.d.ts +468 -0
- package/src/view/element.js +150 -222
- package/src/view/elementdefinition.d.ts +87 -0
- package/src/view/emptyelement.d.ts +41 -0
- package/src/view/emptyelement.js +11 -44
- package/src/view/filler.d.ts +111 -0
- package/src/view/filler.js +24 -21
- package/src/view/item.d.ts +14 -0
- package/src/view/matcher.d.ts +486 -0
- package/src/view/matcher.js +247 -218
- package/src/view/node.d.ts +163 -0
- package/src/view/node.js +26 -100
- package/src/view/observer/arrowkeysobserver.d.ts +41 -0
- package/src/view/observer/arrowkeysobserver.js +0 -13
- package/src/view/observer/bubblingemittermixin.d.ts +166 -0
- package/src/view/observer/bubblingemittermixin.js +36 -25
- package/src/view/observer/bubblingeventinfo.d.ts +47 -0
- package/src/view/observer/bubblingeventinfo.js +3 -29
- package/src/view/observer/clickobserver.d.ts +43 -0
- package/src/view/observer/clickobserver.js +9 -19
- package/src/view/observer/compositionobserver.d.ts +82 -0
- package/src/view/observer/compositionobserver.js +13 -42
- package/src/view/observer/domeventdata.d.ts +50 -0
- package/src/view/observer/domeventdata.js +5 -30
- package/src/view/observer/domeventobserver.d.ts +69 -0
- package/src/view/observer/domeventobserver.js +19 -21
- package/src/view/observer/fakeselectionobserver.d.ts +43 -0
- package/src/view/observer/fakeselectionobserver.js +0 -16
- package/src/view/observer/focusobserver.d.ts +82 -0
- package/src/view/observer/focusobserver.js +14 -40
- package/src/view/observer/inputobserver.d.ts +86 -0
- package/src/view/observer/inputobserver.js +18 -64
- package/src/view/observer/keyobserver.d.ts +66 -0
- package/src/view/observer/keyobserver.js +8 -42
- package/src/view/observer/mouseobserver.d.ts +89 -0
- package/src/view/observer/mouseobserver.js +8 -28
- package/src/view/observer/mutationobserver.d.ts +82 -0
- package/src/view/observer/mutationobserver.js +7 -37
- package/src/view/observer/observer.d.ts +84 -0
- package/src/view/observer/observer.js +12 -25
- package/src/view/observer/selectionobserver.d.ts +144 -0
- package/src/view/observer/selectionobserver.js +17 -107
- package/src/view/observer/tabobserver.d.ts +42 -0
- package/src/view/observer/tabobserver.js +0 -14
- package/src/view/placeholder.d.ts +85 -0
- package/src/view/placeholder.js +26 -43
- package/src/view/position.d.ts +189 -0
- package/src/view/position.js +36 -83
- package/src/view/range.d.ts +279 -0
- package/src/view/range.js +79 -122
- package/src/view/rawelement.d.ts +73 -0
- package/src/view/rawelement.js +34 -48
- package/src/view/renderer.d.ts +265 -0
- package/src/view/renderer.js +105 -193
- package/src/view/rooteditableelement.d.ts +41 -0
- package/src/view/rooteditableelement.js +12 -40
- package/src/view/selection.d.ts +375 -0
- package/src/view/selection.js +79 -153
- package/src/view/styles/background.d.ts +33 -0
- package/src/view/styles/background.js +14 -12
- package/src/view/styles/border.d.ts +43 -0
- package/src/view/styles/border.js +58 -48
- package/src/view/styles/margin.d.ts +29 -0
- package/src/view/styles/margin.js +13 -11
- package/src/view/styles/padding.d.ts +29 -0
- package/src/view/styles/padding.js +13 -11
- package/src/view/styles/utils.d.ts +93 -0
- package/src/view/styles/utils.js +22 -48
- package/src/view/stylesmap.d.ts +675 -0
- package/src/view/stylesmap.js +249 -244
- package/src/view/text.d.ts +74 -0
- package/src/view/text.js +16 -46
- package/src/view/textproxy.d.ts +97 -0
- package/src/view/textproxy.js +10 -59
- package/src/view/treewalker.d.ts +195 -0
- package/src/view/treewalker.js +43 -106
- package/src/view/typecheckable.d.ts +448 -0
- package/src/view/uielement.d.ts +96 -0
- package/src/view/uielement.js +29 -63
- package/src/view/upcastwriter.d.ts +417 -0
- package/src/view/upcastwriter.js +86 -157
- package/src/view/view.d.ts +417 -0
- package/src/view/view.js +47 -175
package/src/view/selection.js
CHANGED
|
@@ -32,44 +32,48 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
32
32
|
* * {@link module:engine/view/view~View#createSelection `View#createSelection()`},
|
|
33
33
|
* * {@link module:engine/view/upcastwriter~UpcastWriter#createSelection `UpcastWriter#createSelection()`}.
|
|
34
34
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* // Creates empty selection without ranges.
|
|
37
|
+
* const selection = writer.createSelection();
|
|
37
38
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
39
|
+
* // Creates selection at the given range.
|
|
40
|
+
* const range = writer.createRange( start, end );
|
|
41
|
+
* const selection = writer.createSelection( range );
|
|
41
42
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* // Creates selection at the given ranges
|
|
44
|
+
* const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];
|
|
45
|
+
* const selection = writer.createSelection( ranges );
|
|
45
46
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
47
|
+
* // Creates selection from the other selection.
|
|
48
|
+
* const otherSelection = writer.createSelection();
|
|
49
|
+
* const selection = writer.createSelection( otherSelection );
|
|
49
50
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
51
|
+
* // Creates selection from the document selection.
|
|
52
|
+
* const selection = writer.createSelection( editor.editing.view.document.selection );
|
|
52
53
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
54
|
+
* // Creates selection at the given position.
|
|
55
|
+
* const position = writer.createPositionFromPath( root, path );
|
|
56
|
+
* const selection = writer.createSelection( position );
|
|
56
57
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
58
|
+
* // Creates collapsed selection at the position of given item and offset.
|
|
59
|
+
* const paragraph = writer.createContainerElement( 'paragraph' );
|
|
60
|
+
* const selection = writer.createSelection( paragraph, offset );
|
|
60
61
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
62
|
+
* // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the
|
|
63
|
+
* // first child of that element and ends after the last child of that element.
|
|
64
|
+
* const selection = writer.createSelection( paragraph, 'in' );
|
|
64
65
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
66
|
+
* // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends
|
|
67
|
+
* // just after the item.
|
|
68
|
+
* const selection = writer.createSelection( paragraph, 'on' );
|
|
69
|
+
* ```
|
|
68
70
|
*
|
|
69
71
|
* `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.
|
|
70
72
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* // Creates backward selection.
|
|
75
|
+
* const selection = writer.createSelection( range, { backward: true } );
|
|
76
|
+
* ```
|
|
73
77
|
*
|
|
74
78
|
* Fake selection does not render as browser native selection over selected elements and is hidden to the user.
|
|
75
79
|
* This way, no native selection UI artifacts are displayed to the user and selection over elements can be
|
|
@@ -78,45 +82,18 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
78
82
|
* Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM
|
|
79
83
|
* (and be properly handled by screen readers).
|
|
80
84
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
85
|
+
* ```ts
|
|
86
|
+
* // Creates fake selection with label.
|
|
87
|
+
* const selection = writer.createSelection( range, { fake: true, label: 'foo' } );
|
|
88
|
+
* ```
|
|
83
89
|
*
|
|
84
|
-
* @
|
|
85
|
-
* @param {Number|'before'|'end'|'after'|'on'|'in'} [placeOrOffset] Offset or place when selectable is an `Item`.
|
|
86
|
-
* @param {Object} [options]
|
|
87
|
-
* @param {Boolean} [options.backward] Sets this selection instance to be backward.
|
|
88
|
-
* @param {Boolean} [options.fake] Sets this selection instance to be marked as `fake`.
|
|
89
|
-
* @param {String} [options.label] Label for the fake selection.
|
|
90
|
+
* @internal
|
|
90
91
|
*/
|
|
91
92
|
constructor(...args) {
|
|
92
93
|
super();
|
|
93
|
-
/**
|
|
94
|
-
* Stores all ranges that are selected.
|
|
95
|
-
*
|
|
96
|
-
* @protected
|
|
97
|
-
* @member {Array.<module:engine/view/range~Range>}
|
|
98
|
-
*/
|
|
99
94
|
this._ranges = [];
|
|
100
|
-
/**
|
|
101
|
-
* Specifies whether the last added range was added as a backward or forward range.
|
|
102
|
-
*
|
|
103
|
-
* @protected
|
|
104
|
-
* @member {Boolean}
|
|
105
|
-
*/
|
|
106
95
|
this._lastRangeBackward = false;
|
|
107
|
-
/**
|
|
108
|
-
* Specifies whether selection instance is fake.
|
|
109
|
-
*
|
|
110
|
-
* @private
|
|
111
|
-
* @member {Boolean}
|
|
112
|
-
*/
|
|
113
96
|
this._isFake = false;
|
|
114
|
-
/**
|
|
115
|
-
* Fake selection's label.
|
|
116
|
-
*
|
|
117
|
-
* @private
|
|
118
|
-
* @member {String}
|
|
119
|
-
*/
|
|
120
97
|
this._fakeSelectionLabel = '';
|
|
121
98
|
if (args.length) {
|
|
122
99
|
this.setTo(...args);
|
|
@@ -126,7 +103,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
126
103
|
* Returns true if selection instance is marked as `fake`.
|
|
127
104
|
*
|
|
128
105
|
* @see #setTo
|
|
129
|
-
* @type {Boolean}
|
|
130
106
|
*/
|
|
131
107
|
get isFake() {
|
|
132
108
|
return this._isFake;
|
|
@@ -135,7 +111,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
135
111
|
* Returns fake selection label.
|
|
136
112
|
*
|
|
137
113
|
* @see #setTo
|
|
138
|
-
* @type {String}
|
|
139
114
|
*/
|
|
140
115
|
get fakeSelectionLabel() {
|
|
141
116
|
return this._fakeSelectionLabel;
|
|
@@ -147,7 +122,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
147
122
|
* It may be a bit unintuitive when there are multiple ranges in selection.
|
|
148
123
|
*
|
|
149
124
|
* @see #focus
|
|
150
|
-
* @type {module:engine/view/position~Position}
|
|
151
125
|
*/
|
|
152
126
|
get anchor() {
|
|
153
127
|
if (!this._ranges.length) {
|
|
@@ -161,7 +135,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
161
135
|
* Selection focus. Focus is a position where the selection ends.
|
|
162
136
|
*
|
|
163
137
|
* @see #anchor
|
|
164
|
-
* @type {module:engine/view/position~Position}
|
|
165
138
|
*/
|
|
166
139
|
get focus() {
|
|
167
140
|
if (!this._ranges.length) {
|
|
@@ -174,24 +147,18 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
174
147
|
/**
|
|
175
148
|
* Returns whether the selection is collapsed. Selection is collapsed when there is exactly one range which is
|
|
176
149
|
* collapsed.
|
|
177
|
-
*
|
|
178
|
-
* @type {Boolean}
|
|
179
150
|
*/
|
|
180
151
|
get isCollapsed() {
|
|
181
152
|
return this.rangeCount === 1 && this._ranges[0].isCollapsed;
|
|
182
153
|
}
|
|
183
154
|
/**
|
|
184
155
|
* Returns number of ranges in selection.
|
|
185
|
-
*
|
|
186
|
-
* @type {Number}
|
|
187
156
|
*/
|
|
188
157
|
get rangeCount() {
|
|
189
158
|
return this._ranges.length;
|
|
190
159
|
}
|
|
191
160
|
/**
|
|
192
161
|
* Specifies whether the {@link #focus} precedes {@link #anchor}.
|
|
193
|
-
*
|
|
194
|
-
* @type {Boolean}
|
|
195
162
|
*/
|
|
196
163
|
get isBackward() {
|
|
197
164
|
return !this.isCollapsed && this._lastRangeBackward;
|
|
@@ -199,8 +166,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
199
166
|
/**
|
|
200
167
|
* {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this selection, or `null`
|
|
201
168
|
* if the selection is not inside an editable element.
|
|
202
|
-
*
|
|
203
|
-
* @type {module:engine/view/editableelement~EditableElement|null}
|
|
204
169
|
*/
|
|
205
170
|
get editableElement() {
|
|
206
171
|
if (this.anchor) {
|
|
@@ -210,8 +175,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
210
175
|
}
|
|
211
176
|
/**
|
|
212
177
|
* Returns an iterable that contains copies of all ranges added to the selection.
|
|
213
|
-
*
|
|
214
|
-
* @returns {Iterable.<module:engine/view/range~Range>}
|
|
215
178
|
*/
|
|
216
179
|
*getRanges() {
|
|
217
180
|
for (const range of this._ranges) {
|
|
@@ -223,8 +186,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
223
186
|
* {@link module:engine/view/range~Range#start start} position {@link module:engine/view/position~Position#isBefore is before} start
|
|
224
187
|
* position of all other ranges (not to confuse with the first range added to the selection).
|
|
225
188
|
* Returns `null` if no ranges are added to selection.
|
|
226
|
-
*
|
|
227
|
-
* @returns {module:engine/view/range~Range|null}
|
|
228
189
|
*/
|
|
229
190
|
getFirstRange() {
|
|
230
191
|
let first = null;
|
|
@@ -239,8 +200,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
239
200
|
* Returns copy of the last range in the selection. Last range is the one which {@link module:engine/view/range~Range#end end}
|
|
240
201
|
* position {@link module:engine/view/position~Position#isAfter is after} end position of all other ranges (not to confuse
|
|
241
202
|
* with the last range added to the selection). Returns `null` if no ranges are added to selection.
|
|
242
|
-
*
|
|
243
|
-
* @returns {module:engine/view/range~Range|null}
|
|
244
203
|
*/
|
|
245
204
|
getLastRange() {
|
|
246
205
|
let last = null;
|
|
@@ -255,8 +214,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
255
214
|
* Returns copy of the first position in the selection. First position is the position that
|
|
256
215
|
* {@link module:engine/view/position~Position#isBefore is before} any other position in the selection ranges.
|
|
257
216
|
* Returns `null` if no ranges are added to selection.
|
|
258
|
-
*
|
|
259
|
-
* @returns {module:engine/view/position~Position|null}
|
|
260
217
|
*/
|
|
261
218
|
getFirstPosition() {
|
|
262
219
|
const firstRange = this.getFirstRange();
|
|
@@ -266,8 +223,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
266
223
|
* Returns copy of the last position in the selection. Last position is the position that
|
|
267
224
|
* {@link module:engine/view/position~Position#isAfter is after} any other position in the selection ranges.
|
|
268
225
|
* Returns `null` if no ranges are added to selection.
|
|
269
|
-
*
|
|
270
|
-
* @returns {module:engine/view/position~Position|null}
|
|
271
226
|
*/
|
|
272
227
|
getLastPosition() {
|
|
273
228
|
const lastRange = this.getLastRange();
|
|
@@ -277,9 +232,8 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
277
232
|
* Checks whether, this selection is equal to given selection. Selections are equal if they have same directions,
|
|
278
233
|
* same number of ranges and all ranges from one selection equal to a range from other selection.
|
|
279
234
|
*
|
|
280
|
-
* @param
|
|
281
|
-
*
|
|
282
|
-
* @returns {Boolean} `true` if selections are equal, `false` otherwise.
|
|
235
|
+
* @param otherSelection Selection to compare with.
|
|
236
|
+
* @returns `true` if selections are equal, `false` otherwise.
|
|
283
237
|
*/
|
|
284
238
|
isEqual(otherSelection) {
|
|
285
239
|
if (this.isFake != otherSelection.isFake) {
|
|
@@ -316,9 +270,8 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
316
270
|
* number of ranges, and all {@link module:engine/view/range~Range#getTrimmed trimmed} ranges from one selection are
|
|
317
271
|
* equal to any trimmed range from other selection.
|
|
318
272
|
*
|
|
319
|
-
* @param
|
|
320
|
-
*
|
|
321
|
-
* @returns {Boolean} `true` if selections are similar, `false` otherwise.
|
|
273
|
+
* @param otherSelection Selection to compare with.
|
|
274
|
+
* @returns `true` if selections are similar, `false` otherwise.
|
|
322
275
|
*/
|
|
323
276
|
isSimilar(otherSelection) {
|
|
324
277
|
if (this.isBackward != otherSelection.isBackward) {
|
|
@@ -357,8 +310,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
357
310
|
* Returns the selected element. {@link module:engine/view/element~Element Element} is considered as selected if there is only
|
|
358
311
|
* one range in the selection, and that range contains exactly one element.
|
|
359
312
|
* Returns `null` if there is no selected element.
|
|
360
|
-
*
|
|
361
|
-
* @returns {module:engine/view/element~Element|null}
|
|
362
313
|
*/
|
|
363
314
|
getSelectedElement() {
|
|
364
315
|
if (this.rangeCount !== 1) {
|
|
@@ -370,44 +321,52 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
370
321
|
* Sets this selection's ranges and direction to the specified location based on the given
|
|
371
322
|
* {@link module:engine/view/selection~Selectable selectable}.
|
|
372
323
|
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
324
|
+
* ```ts
|
|
325
|
+
* // Sets selection to the given range.
|
|
326
|
+
* const range = writer.createRange( start, end );
|
|
327
|
+
* selection.setTo( range );
|
|
376
328
|
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
379
|
-
*
|
|
329
|
+
* // Sets selection to given ranges.
|
|
330
|
+
* const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];
|
|
331
|
+
* selection.setTo( range );
|
|
380
332
|
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
333
|
+
* // Sets selection to the other selection.
|
|
334
|
+
* const otherSelection = writer.createSelection();
|
|
335
|
+
* selection.setTo( otherSelection );
|
|
384
336
|
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
337
|
+
* // Sets selection to contents of DocumentSelection.
|
|
338
|
+
* selection.setTo( editor.editing.view.document.selection );
|
|
387
339
|
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
340
|
+
* // Sets collapsed selection at the given position.
|
|
341
|
+
* const position = writer.createPositionAt( root, path );
|
|
342
|
+
* selection.setTo( position );
|
|
391
343
|
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
344
|
+
* // Sets collapsed selection at the position of given item and offset.
|
|
345
|
+
* selection.setTo( paragraph, offset );
|
|
346
|
+
* ```
|
|
394
347
|
*
|
|
395
348
|
* Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of
|
|
396
349
|
* that element and ends after the last child of that element.
|
|
397
350
|
*
|
|
398
|
-
*
|
|
351
|
+
* ```ts
|
|
352
|
+
* selection.setTo( paragraph, 'in' );
|
|
353
|
+
* ```
|
|
399
354
|
*
|
|
400
355
|
* Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends just after the item.
|
|
401
356
|
*
|
|
402
|
-
*
|
|
357
|
+
* ```ts
|
|
358
|
+
* selection.setTo( paragraph, 'on' );
|
|
403
359
|
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
360
|
+
* // Clears selection. Removes all ranges.
|
|
361
|
+
* selection.setTo( null );
|
|
362
|
+
* ```
|
|
406
363
|
*
|
|
407
364
|
* `Selection#setTo()` method allow passing additional options (`backward`, `fake` and `label`) as the last argument.
|
|
408
365
|
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
366
|
+
* ```ts
|
|
367
|
+
* // Sets selection as backward.
|
|
368
|
+
* selection.setTo( range, { backward: true } );
|
|
369
|
+
* ```
|
|
411
370
|
*
|
|
412
371
|
* Fake selection does not render as browser native selection over selected elements and is hidden to the user.
|
|
413
372
|
* This way, no native selection UI artifacts are displayed to the user and selection over elements can be
|
|
@@ -416,16 +375,12 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
416
375
|
* Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM
|
|
417
376
|
* (and be properly handled by screen readers).
|
|
418
377
|
*
|
|
419
|
-
*
|
|
420
|
-
*
|
|
378
|
+
* ```ts
|
|
379
|
+
* // Creates fake selection with label.
|
|
380
|
+
* selection.setTo( range, { fake: true, label: 'foo' } );
|
|
381
|
+
* ```
|
|
421
382
|
*
|
|
422
383
|
* @fires change
|
|
423
|
-
* @param {module:engine/view/selection~Selectable} selectable
|
|
424
|
-
* @param {Number|'before'|'end'|'after'|'on'|'in'} [placeOrOffset] Sets place or offset of the selection.
|
|
425
|
-
* @param {Object} [options]
|
|
426
|
-
* @param {Boolean} [options.backward] Sets this selection instance to be backward.
|
|
427
|
-
* @param {Boolean} [options.fake] Sets this selection instance to be marked as `fake`.
|
|
428
|
-
* @param {String} [options.label] Label for the fake selection.
|
|
429
384
|
*/
|
|
430
385
|
setTo(...args) {
|
|
431
386
|
let [selectable, placeOrOffset, options] = args;
|
|
@@ -495,9 +450,7 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
495
450
|
* parameters.
|
|
496
451
|
*
|
|
497
452
|
* @fires change
|
|
498
|
-
* @param {module:engine/view/item~Item
|
|
499
|
-
* @param {Number|'end'|'before'|'after'} [offset] Offset or one of the flags. Used only when
|
|
500
|
-
* first parameter is a {@link module:engine/view/item~Item view item}.
|
|
453
|
+
* @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.
|
|
501
454
|
*/
|
|
502
455
|
setFocus(itemOrPosition, offset) {
|
|
503
456
|
if (this.anchor === null) {
|
|
@@ -527,9 +480,8 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
527
480
|
* is treated like the last added range and is used to set {@link #anchor anchor} and {@link #focus focus}.
|
|
528
481
|
* Accepts a flag describing in which way the selection is made.
|
|
529
482
|
*
|
|
530
|
-
* @
|
|
531
|
-
* @param
|
|
532
|
-
* @param {Boolean} [isLastBackward=false] Flag describing if last added range was selected forward - from start to end
|
|
483
|
+
* @param newRanges Iterable object of ranges to set.
|
|
484
|
+
* @param isLastBackward Flag describing if last added range was selected forward - from start to end
|
|
533
485
|
* (`false`) or backward - from end to start (`true`). Defaults to `false`.
|
|
534
486
|
*/
|
|
535
487
|
_setRanges(newRanges, isLastBackward = false) {
|
|
@@ -549,11 +501,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
549
501
|
*
|
|
550
502
|
* Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM (and be
|
|
551
503
|
* properly handled by screen readers).
|
|
552
|
-
*
|
|
553
|
-
* @private
|
|
554
|
-
* @param {Object} [options] Options.
|
|
555
|
-
* @param {Boolean} [options.fake] If set to true selection will be marked as `fake`.
|
|
556
|
-
* @param {String} [options.label=''] Fake selection label.
|
|
557
504
|
*/
|
|
558
505
|
_setFakeOptions(options = {}) {
|
|
559
506
|
this._isFake = !!options.fake;
|
|
@@ -570,11 +517,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
570
517
|
*
|
|
571
518
|
* Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-selection-range-intersects` if added range intersects
|
|
572
519
|
* with ranges already stored in Selection instance.
|
|
573
|
-
*
|
|
574
|
-
* @private
|
|
575
|
-
* @fires change
|
|
576
|
-
* @param {module:engine/view/range~Range} range
|
|
577
|
-
* @param {Boolean} [isBackward]
|
|
578
520
|
*/
|
|
579
521
|
_addRange(range, isBackward = false) {
|
|
580
522
|
if (!(range instanceof Range)) {
|
|
@@ -593,9 +535,6 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
593
535
|
*
|
|
594
536
|
* Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-selection-range-intersects` if added range intersects
|
|
595
537
|
* with ranges already stored in selection instance.
|
|
596
|
-
*
|
|
597
|
-
* @private
|
|
598
|
-
* @param {module:engine/view/range~Range} range
|
|
599
538
|
*/
|
|
600
539
|
_pushRange(range) {
|
|
601
540
|
for (const storedRange of this._ranges) {
|
|
@@ -613,21 +552,8 @@ export default class Selection extends EmitterMixin(TypeCheckable) {
|
|
|
613
552
|
this._ranges.push(new Range(range.start, range.end));
|
|
614
553
|
}
|
|
615
554
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
*
|
|
619
|
-
* selection.is( 'selection' ); // -> true
|
|
620
|
-
* selection.is( 'view:selection' ); // -> true
|
|
621
|
-
*
|
|
622
|
-
* selection.is( 'model:selection' ); // -> false
|
|
623
|
-
* selection.is( 'element' ); // -> false
|
|
624
|
-
* selection.is( 'range' ); // -> false
|
|
625
|
-
*
|
|
626
|
-
* {@link module:engine/view/node~Node#is Check the entire list of view objects} which implement the `is()` method.
|
|
627
|
-
*
|
|
628
|
-
* @param {String} type
|
|
629
|
-
* @returns {Boolean}
|
|
630
|
-
*/
|
|
555
|
+
// The magic of type inference using `is` method is centralized in `TypeCheckable` class.
|
|
556
|
+
// Proper overload would interfere with that.
|
|
631
557
|
Selection.prototype.is = function (type) {
|
|
632
558
|
return type === 'selection' || type === 'view:selection';
|
|
633
559
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
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 engine/view/styles/background
|
|
7
|
+
*/
|
|
8
|
+
import type { StylesProcessor } from '../stylesmap';
|
|
9
|
+
/**
|
|
10
|
+
* Adds a background CSS styles processing rules.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* editor.data.addStyleProcessorRules( addBackgroundRules );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* The normalized value is stored as:
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const styles = {
|
|
20
|
+
* background: {
|
|
21
|
+
* color,
|
|
22
|
+
* repeat,
|
|
23
|
+
* position,
|
|
24
|
+
* attachment,
|
|
25
|
+
* image
|
|
26
|
+
* }
|
|
27
|
+
* };
|
|
28
|
+
* ````
|
|
29
|
+
*
|
|
30
|
+
* **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only
|
|
31
|
+
* `'background-color'` value.
|
|
32
|
+
*/
|
|
33
|
+
export declare function addBackgroundRules(stylesProcessor: StylesProcessor): void;
|
|
@@ -6,24 +6,26 @@ import { getShorthandValues, isAttachment, isColor, isPosition, isRepeat, isURL
|
|
|
6
6
|
/**
|
|
7
7
|
* Adds a background CSS styles processing rules.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* editor.data.addStyleProcessorRules( addBackgroundRules );
|
|
11
|
+
* ```
|
|
10
12
|
*
|
|
11
13
|
* The normalized value is stored as:
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const styles = {
|
|
17
|
+
* background: {
|
|
18
|
+
* color,
|
|
19
|
+
* repeat,
|
|
20
|
+
* position,
|
|
21
|
+
* attachment,
|
|
22
|
+
* image
|
|
23
|
+
* }
|
|
24
|
+
* };
|
|
25
|
+
* ````
|
|
22
26
|
*
|
|
23
27
|
* **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only
|
|
24
28
|
* `'background-color'` value.
|
|
25
|
-
*
|
|
26
|
-
* @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor
|
|
27
29
|
*/
|
|
28
30
|
export function addBackgroundRules(stylesProcessor) {
|
|
29
31
|
stylesProcessor.setNormalizer('background', getBackgroundNormalizer());
|
|
@@ -0,0 +1,43 @@
|
|
|
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 engine/view/styles/border
|
|
7
|
+
*/
|
|
8
|
+
import type { StylesProcessor } from '../stylesmap';
|
|
9
|
+
/**
|
|
10
|
+
* Adds a border CSS styles processing rules.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* editor.data.addStyleProcessorRules( addBorderRules );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:
|
|
17
|
+
*
|
|
18
|
+
* - border
|
|
19
|
+
* - border-top
|
|
20
|
+
* - border-right
|
|
21
|
+
* - border-bottom
|
|
22
|
+
* - border-left
|
|
23
|
+
* - border-color
|
|
24
|
+
* - border-style
|
|
25
|
+
* - border-width
|
|
26
|
+
*
|
|
27
|
+
* and all corresponding longhand forms (like `border-top-color`, `border-top-style`, etc).
|
|
28
|
+
*
|
|
29
|
+
* It does not handle other shorthands (like `border-radius` or `border-image`).
|
|
30
|
+
*
|
|
31
|
+
* The normalized model stores border values as:
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const styles = {
|
|
35
|
+
* border: {
|
|
36
|
+
* color: { top, right, bottom, left },
|
|
37
|
+
* style: { top, right, bottom, left },
|
|
38
|
+
* width: { top, right, bottom, left },
|
|
39
|
+
* }
|
|
40
|
+
* };
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function addBorderRules(stylesProcessor: StylesProcessor): void;
|