@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/treewalker.js
CHANGED
|
@@ -17,8 +17,7 @@ export default class TreeWalker {
|
|
|
17
17
|
/**
|
|
18
18
|
* Creates a range iterator. All parameters are optional, but you have to specify either `boundaries` or `startPosition`.
|
|
19
19
|
*
|
|
20
|
-
* @
|
|
21
|
-
* @param {TODO ~TreeWalkerOptions} options Object with configuration.
|
|
20
|
+
* @param options Object with configuration.
|
|
22
21
|
*/
|
|
23
22
|
constructor(options = {}) {
|
|
24
23
|
if (!options.boundaries && !options.startPosition) {
|
|
@@ -37,112 +36,62 @@ export default class TreeWalker {
|
|
|
37
36
|
*/
|
|
38
37
|
throw new CKEditorError('view-tree-walker-unknown-direction', options.startPosition, { direction: options.direction });
|
|
39
38
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Iterator boundaries.
|
|
42
|
-
*
|
|
43
|
-
* When the iterator is walking `'forward'` on the end of boundary or is walking `'backward'`
|
|
44
|
-
* on the start of boundary, then `{ done: true }` is returned.
|
|
45
|
-
*
|
|
46
|
-
* If boundaries are not defined they are set before first and after last child of the root node.
|
|
47
|
-
*
|
|
48
|
-
* @readonly
|
|
49
|
-
* @member {module:engine/view/range~Range} module:engine/view/treewalker~TreeWalker#boundaries
|
|
50
|
-
*/
|
|
51
39
|
this.boundaries = options.boundaries || null;
|
|
52
|
-
/**
|
|
53
|
-
* Iterator position. If start position is not defined then position depends on {@link #direction}. If direction is
|
|
54
|
-
* `'forward'` position starts form the beginning, when direction is `'backward'` position starts from the end.
|
|
55
|
-
*
|
|
56
|
-
* @readonly
|
|
57
|
-
* @member {module:engine/view/position~Position} module:engine/view/treewalker~TreeWalker#position
|
|
58
|
-
*/
|
|
59
40
|
if (options.startPosition) {
|
|
60
|
-
this.
|
|
41
|
+
this._position = Position._createAt(options.startPosition);
|
|
61
42
|
}
|
|
62
43
|
else {
|
|
63
|
-
this.
|
|
44
|
+
this._position = Position._createAt(options.boundaries[options.direction == 'backward' ? 'end' : 'start']);
|
|
64
45
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Walking direction. Defaults `'forward'`.
|
|
67
|
-
*
|
|
68
|
-
* @readonly
|
|
69
|
-
* @member {'backward'|'forward'} module:engine/view/treewalker~TreeWalker#direction
|
|
70
|
-
*/
|
|
71
46
|
this.direction = options.direction || 'forward';
|
|
72
|
-
/**
|
|
73
|
-
* Flag indicating whether all characters from {@link module:engine/view/text~Text} should be returned as one
|
|
74
|
-
* {@link module:engine/view/text~Text} or one by one as {@link module:engine/view/textproxy~TextProxy}.
|
|
75
|
-
*
|
|
76
|
-
* @readonly
|
|
77
|
-
* @member {Boolean} module:engine/view/treewalker~TreeWalker#singleCharacters
|
|
78
|
-
*/
|
|
79
47
|
this.singleCharacters = !!options.singleCharacters;
|
|
80
|
-
/**
|
|
81
|
-
* Flag indicating whether iterator should enter elements or not. If the iterator is shallow child nodes of any
|
|
82
|
-
* iterated node will not be returned along with `elementEnd` tag.
|
|
83
|
-
*
|
|
84
|
-
* @readonly
|
|
85
|
-
* @member {Boolean} module:engine/view/treewalker~TreeWalker#shallow
|
|
86
|
-
*/
|
|
87
48
|
this.shallow = !!options.shallow;
|
|
88
|
-
/**
|
|
89
|
-
* Flag indicating whether iterator should ignore `elementEnd` tags. If set to `true`, walker will not
|
|
90
|
-
* return a parent node of the start position. Each {@link module:engine/view/element~Element} will be returned once.
|
|
91
|
-
* When set to `false` each element might be returned twice: for `'elementStart'` and `'elementEnd'`.
|
|
92
|
-
*
|
|
93
|
-
* @readonly
|
|
94
|
-
* @member {Boolean} module:engine/view/treewalker~TreeWalker#ignoreElementEnd
|
|
95
|
-
*/
|
|
96
49
|
this.ignoreElementEnd = !!options.ignoreElementEnd;
|
|
97
|
-
/**
|
|
98
|
-
* Start boundary parent.
|
|
99
|
-
*
|
|
100
|
-
* @private
|
|
101
|
-
* @member {module:engine/view/node~Node} module:engine/view/treewalker~TreeWalker#_boundaryStartParent
|
|
102
|
-
*/
|
|
103
50
|
this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null;
|
|
104
|
-
/**
|
|
105
|
-
* End boundary parent.
|
|
106
|
-
*
|
|
107
|
-
* @private
|
|
108
|
-
* @member {module:engine/view/node~Node} module:engine/view/treewalker~TreeWalker#_boundaryEndParent
|
|
109
|
-
*/
|
|
110
51
|
this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null;
|
|
111
52
|
}
|
|
112
53
|
/**
|
|
113
54
|
* Iterable interface.
|
|
114
|
-
*
|
|
115
|
-
* @returns {Iterable.<module:engine/view/treewalker~TreeWalkerValue>}
|
|
116
55
|
*/
|
|
117
56
|
[Symbol.iterator]() {
|
|
118
57
|
return this;
|
|
119
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Iterator position. If start position is not defined then position depends on {@link #direction}. If direction is
|
|
61
|
+
* `'forward'` position starts form the beginning, when direction is `'backward'` position starts from the end.
|
|
62
|
+
*/
|
|
63
|
+
get position() {
|
|
64
|
+
return this._position;
|
|
65
|
+
}
|
|
120
66
|
/**
|
|
121
67
|
* Moves {@link #position} in the {@link #direction} skipping values as long as the callback function returns `true`.
|
|
122
68
|
*
|
|
123
69
|
* For example:
|
|
124
70
|
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
71
|
+
* ```ts
|
|
72
|
+
* walker.skip( value => value.type == 'text' ); // <p>{}foo</p> -> <p>foo[]</p>
|
|
73
|
+
* walker.skip( value => true ); // Move the position to the end: <p>{}foo</p> -> <p>foo</p>[]
|
|
74
|
+
* walker.skip( value => false ); // Do not move the position.
|
|
75
|
+
* ```
|
|
128
76
|
*
|
|
129
|
-
* @param
|
|
77
|
+
* @param skip Callback function. Gets {@link module:engine/view/treewalker~TreeWalkerValue} and should
|
|
130
78
|
* return `true` if the value should be skipped or `false` if not.
|
|
131
79
|
*/
|
|
132
80
|
skip(skip) {
|
|
133
|
-
let
|
|
81
|
+
let nextResult;
|
|
82
|
+
let prevPosition;
|
|
134
83
|
do {
|
|
135
84
|
prevPosition = this.position;
|
|
136
|
-
|
|
137
|
-
} while (!done && skip(value));
|
|
138
|
-
if (!done) {
|
|
139
|
-
this.
|
|
85
|
+
nextResult = this.next();
|
|
86
|
+
} while (!nextResult.done && skip(nextResult.value));
|
|
87
|
+
if (!nextResult.done) {
|
|
88
|
+
this._position = prevPosition;
|
|
140
89
|
}
|
|
141
90
|
}
|
|
142
91
|
/**
|
|
143
92
|
* Gets the next tree walker's value.
|
|
144
93
|
*
|
|
145
|
-
* @returns
|
|
94
|
+
* @returns Object implementing iterator interface, returning
|
|
146
95
|
* information about taken step.
|
|
147
96
|
*/
|
|
148
97
|
next() {
|
|
@@ -155,11 +104,6 @@ export default class TreeWalker {
|
|
|
155
104
|
}
|
|
156
105
|
/**
|
|
157
106
|
* Makes a step forward in view. Moves the {@link #position} to the next position and returns the encountered value.
|
|
158
|
-
*
|
|
159
|
-
* @private
|
|
160
|
-
* @returns {Object}
|
|
161
|
-
* @returns {Boolean} return.done `true` if iterator is done, `false` otherwise.
|
|
162
|
-
* @returns {module:engine/view/treewalker~TreeWalkerValue} return.value Information about taken step.
|
|
163
107
|
*/
|
|
164
108
|
_next() {
|
|
165
109
|
let position = this.position.clone();
|
|
@@ -179,7 +123,7 @@ export default class TreeWalker {
|
|
|
179
123
|
if (parent instanceof Text) {
|
|
180
124
|
if (position.isAtEnd) {
|
|
181
125
|
// Prevent returning "elementEnd" for Text node. Skip that value and return the next walker step.
|
|
182
|
-
this.
|
|
126
|
+
this._position = Position._createAfter(parent);
|
|
183
127
|
return this._next();
|
|
184
128
|
}
|
|
185
129
|
node = parent.data[position.offset];
|
|
@@ -194,13 +138,13 @@ export default class TreeWalker {
|
|
|
194
138
|
else {
|
|
195
139
|
position.offset++;
|
|
196
140
|
}
|
|
197
|
-
this.
|
|
141
|
+
this._position = position;
|
|
198
142
|
return this._formatReturnValue('elementStart', node, previousPosition, position, 1);
|
|
199
143
|
}
|
|
200
144
|
else if (node instanceof Text) {
|
|
201
145
|
if (this.singleCharacters) {
|
|
202
146
|
position = new Position(node, 0);
|
|
203
|
-
this.
|
|
147
|
+
this._position = position;
|
|
204
148
|
return this._next();
|
|
205
149
|
}
|
|
206
150
|
else {
|
|
@@ -217,7 +161,7 @@ export default class TreeWalker {
|
|
|
217
161
|
// If not just keep moving forward.
|
|
218
162
|
position.offset++;
|
|
219
163
|
}
|
|
220
|
-
this.
|
|
164
|
+
this._position = position;
|
|
221
165
|
return this._formatReturnValue('text', item, previousPosition, position, charactersCount);
|
|
222
166
|
}
|
|
223
167
|
}
|
|
@@ -233,13 +177,13 @@ export default class TreeWalker {
|
|
|
233
177
|
}
|
|
234
178
|
const textProxy = new TextProxy(parent, position.offset, textLength);
|
|
235
179
|
position.offset += textLength;
|
|
236
|
-
this.
|
|
180
|
+
this._position = position;
|
|
237
181
|
return this._formatReturnValue('text', textProxy, previousPosition, position, textLength);
|
|
238
182
|
}
|
|
239
183
|
else {
|
|
240
184
|
// `node` is not set, we reached the end of current `parent`.
|
|
241
185
|
position = Position._createAfter(parent);
|
|
242
|
-
this.
|
|
186
|
+
this._position = position;
|
|
243
187
|
if (this.ignoreElementEnd) {
|
|
244
188
|
return this._next();
|
|
245
189
|
}
|
|
@@ -250,11 +194,6 @@ export default class TreeWalker {
|
|
|
250
194
|
}
|
|
251
195
|
/**
|
|
252
196
|
* Makes a step backward in view. Moves the {@link #position} to the previous position and returns the encountered value.
|
|
253
|
-
*
|
|
254
|
-
* @private
|
|
255
|
-
* @returns {Object}
|
|
256
|
-
* @returns {Boolean} return.done True if iterator is done.
|
|
257
|
-
* @returns {module:engine/view/treewalker~TreeWalkerValue} return.value Information about taken step.
|
|
258
197
|
*/
|
|
259
198
|
_previous() {
|
|
260
199
|
let position = this.position.clone();
|
|
@@ -274,7 +213,7 @@ export default class TreeWalker {
|
|
|
274
213
|
if (parent instanceof Text) {
|
|
275
214
|
if (position.isAtStart) {
|
|
276
215
|
// Prevent returning "elementStart" for Text node. Skip that value and return the next walker step.
|
|
277
|
-
this.
|
|
216
|
+
this._position = Position._createBefore(parent);
|
|
278
217
|
return this._previous();
|
|
279
218
|
}
|
|
280
219
|
node = parent.data[position.offset - 1];
|
|
@@ -285,7 +224,7 @@ export default class TreeWalker {
|
|
|
285
224
|
if (node instanceof Element) {
|
|
286
225
|
if (!this.shallow) {
|
|
287
226
|
position = new Position(node, node.childCount);
|
|
288
|
-
this.
|
|
227
|
+
this._position = position;
|
|
289
228
|
if (this.ignoreElementEnd) {
|
|
290
229
|
return this._previous();
|
|
291
230
|
}
|
|
@@ -295,14 +234,14 @@ export default class TreeWalker {
|
|
|
295
234
|
}
|
|
296
235
|
else {
|
|
297
236
|
position.offset--;
|
|
298
|
-
this.
|
|
237
|
+
this._position = position;
|
|
299
238
|
return this._formatReturnValue('elementStart', node, previousPosition, position, 1);
|
|
300
239
|
}
|
|
301
240
|
}
|
|
302
241
|
else if (node instanceof Text) {
|
|
303
242
|
if (this.singleCharacters) {
|
|
304
243
|
position = new Position(node, node.data.length);
|
|
305
|
-
this.
|
|
244
|
+
this._position = position;
|
|
306
245
|
return this._previous();
|
|
307
246
|
}
|
|
308
247
|
else {
|
|
@@ -320,7 +259,7 @@ export default class TreeWalker {
|
|
|
320
259
|
// If not just keep moving backward.
|
|
321
260
|
position.offset--;
|
|
322
261
|
}
|
|
323
|
-
this.
|
|
262
|
+
this._position = position;
|
|
324
263
|
return this._formatReturnValue('text', item, previousPosition, position, charactersCount);
|
|
325
264
|
}
|
|
326
265
|
}
|
|
@@ -336,26 +275,24 @@ export default class TreeWalker {
|
|
|
336
275
|
}
|
|
337
276
|
position.offset -= textLength;
|
|
338
277
|
const textProxy = new TextProxy(parent, position.offset, textLength);
|
|
339
|
-
this.
|
|
278
|
+
this._position = position;
|
|
340
279
|
return this._formatReturnValue('text', textProxy, previousPosition, position, textLength);
|
|
341
280
|
}
|
|
342
281
|
else {
|
|
343
282
|
// `node` is not set, we reached the beginning of current `parent`.
|
|
344
283
|
position = Position._createBefore(parent);
|
|
345
|
-
this.
|
|
284
|
+
this._position = position;
|
|
346
285
|
return this._formatReturnValue('elementStart', parent, previousPosition, position, 1);
|
|
347
286
|
}
|
|
348
287
|
}
|
|
349
288
|
/**
|
|
350
289
|
* Format returned data and adjust `previousPosition` and `nextPosition` if reach the bound of the {@link module:engine/view/text~Text}.
|
|
351
290
|
*
|
|
352
|
-
* @
|
|
353
|
-
* @param
|
|
354
|
-
* @param
|
|
355
|
-
* @param
|
|
356
|
-
* @param
|
|
357
|
-
* @param {Number} [length] Length of the item.
|
|
358
|
-
* @returns {module:engine/view/treewalker~TreeWalkerValue}
|
|
291
|
+
* @param type Type of step.
|
|
292
|
+
* @param item Item between old and new position.
|
|
293
|
+
* @param previousPosition Previous position of iterator.
|
|
294
|
+
* @param nextPosition Next position of iterator.
|
|
295
|
+
* @param length Length of the item.
|
|
359
296
|
*/
|
|
360
297
|
_formatReturnValue(type, item, previousPosition, nextPosition, length) {
|
|
361
298
|
// Text is a specific parent, because contains string instead of children.
|
|
@@ -368,7 +305,7 @@ export default class TreeWalker {
|
|
|
368
305
|
if (this.direction == 'forward' && !(this.boundaries && this.boundaries.end.isEqual(this.position))) {
|
|
369
306
|
nextPosition = Position._createAfter(item.textNode);
|
|
370
307
|
// When we change nextPosition of returned value we need also update walker current position.
|
|
371
|
-
this.
|
|
308
|
+
this._position = nextPosition;
|
|
372
309
|
}
|
|
373
310
|
else {
|
|
374
311
|
previousPosition = Position._createAfter(item.textNode);
|
|
@@ -379,7 +316,7 @@ export default class TreeWalker {
|
|
|
379
316
|
if (this.direction == 'backward' && !(this.boundaries && this.boundaries.start.isEqual(this.position))) {
|
|
380
317
|
nextPosition = Position._createBefore(item.textNode);
|
|
381
318
|
// When we change nextPosition of returned value we need also update walker current position.
|
|
382
|
-
this.
|
|
319
|
+
this._position = nextPosition;
|
|
383
320
|
}
|
|
384
321
|
else {
|
|
385
322
|
previousPosition = Position._createBefore(item.textNode);
|