@ckeditor/ckeditor5-engine 40.0.0 → 40.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -39
- package/LICENSE.md +3 -3
- package/package.json +2 -2
- package/src/controller/datacontroller.d.ts +334 -334
- package/src/controller/datacontroller.js +481 -481
- package/src/controller/editingcontroller.d.ts +98 -98
- package/src/controller/editingcontroller.js +191 -191
- package/src/conversion/conversion.d.ts +478 -478
- package/src/conversion/conversion.js +601 -601
- package/src/conversion/conversionhelpers.d.ts +26 -26
- package/src/conversion/conversionhelpers.js +32 -32
- package/src/conversion/downcastdispatcher.d.ts +562 -562
- package/src/conversion/downcastdispatcher.js +548 -547
- package/src/conversion/downcasthelpers.d.ts +1226 -1226
- package/src/conversion/downcasthelpers.js +2178 -2183
- package/src/conversion/mapper.d.ts +503 -503
- package/src/conversion/mapper.js +536 -536
- package/src/conversion/modelconsumable.d.ts +201 -201
- package/src/conversion/modelconsumable.js +333 -333
- package/src/conversion/upcastdispatcher.d.ts +492 -492
- package/src/conversion/upcastdispatcher.js +460 -460
- package/src/conversion/upcasthelpers.d.ts +499 -499
- package/src/conversion/upcasthelpers.js +950 -950
- package/src/conversion/viewconsumable.d.ts +369 -369
- package/src/conversion/viewconsumable.js +536 -532
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -18
- package/src/dataprocessor/basichtmlwriter.js +20 -19
- package/src/dataprocessor/dataprocessor.d.ts +61 -61
- package/src/dataprocessor/dataprocessor.js +5 -5
- package/src/dataprocessor/htmldataprocessor.d.ts +76 -76
- package/src/dataprocessor/htmldataprocessor.js +96 -96
- package/src/dataprocessor/htmlwriter.d.ts +16 -16
- package/src/dataprocessor/htmlwriter.js +5 -5
- package/src/dataprocessor/xmldataprocessor.d.ts +90 -90
- package/src/dataprocessor/xmldataprocessor.js +108 -108
- package/src/dev-utils/model.d.ts +124 -124
- package/src/dev-utils/model.js +395 -395
- package/src/dev-utils/operationreplayer.d.ts +51 -51
- package/src/dev-utils/operationreplayer.js +112 -112
- package/src/dev-utils/utils.d.ts +37 -37
- package/src/dev-utils/utils.js +73 -73
- package/src/dev-utils/view.d.ts +319 -319
- package/src/dev-utils/view.js +967 -967
- package/src/index.d.ts +114 -114
- package/src/index.js +78 -78
- package/src/model/batch.d.ts +106 -106
- package/src/model/batch.js +96 -96
- package/src/model/differ.d.ts +387 -387
- package/src/model/differ.js +1149 -1149
- package/src/model/document.d.ts +272 -272
- package/src/model/document.js +360 -361
- package/src/model/documentfragment.d.ts +200 -200
- package/src/model/documentfragment.js +306 -306
- package/src/model/documentselection.d.ts +420 -420
- package/src/model/documentselection.js +993 -993
- package/src/model/element.d.ts +165 -165
- package/src/model/element.js +281 -281
- package/src/model/history.d.ts +114 -114
- package/src/model/history.js +207 -207
- package/src/model/item.d.ts +14 -14
- package/src/model/item.js +5 -5
- package/src/model/liveposition.d.ts +77 -77
- package/src/model/liveposition.js +93 -93
- package/src/model/liverange.d.ts +102 -102
- package/src/model/liverange.js +120 -120
- package/src/model/markercollection.d.ts +335 -335
- package/src/model/markercollection.js +403 -403
- package/src/model/model.d.ts +919 -919
- package/src/model/model.js +842 -842
- package/src/model/node.d.ts +256 -256
- package/src/model/node.js +375 -375
- package/src/model/nodelist.d.ts +91 -91
- package/src/model/nodelist.js +163 -163
- package/src/model/operation/attributeoperation.d.ts +103 -103
- package/src/model/operation/attributeoperation.js +148 -148
- package/src/model/operation/detachoperation.d.ts +60 -60
- package/src/model/operation/detachoperation.js +77 -77
- package/src/model/operation/insertoperation.d.ts +90 -90
- package/src/model/operation/insertoperation.js +135 -135
- package/src/model/operation/markeroperation.d.ts +91 -91
- package/src/model/operation/markeroperation.js +107 -107
- package/src/model/operation/mergeoperation.d.ts +100 -100
- package/src/model/operation/mergeoperation.js +167 -167
- package/src/model/operation/moveoperation.d.ts +96 -96
- package/src/model/operation/moveoperation.js +164 -164
- package/src/model/operation/nooperation.d.ts +38 -38
- package/src/model/operation/nooperation.js +48 -48
- package/src/model/operation/operation.d.ts +96 -96
- package/src/model/operation/operation.js +59 -62
- package/src/model/operation/operationfactory.d.ts +18 -18
- package/src/model/operation/operationfactory.js +44 -44
- package/src/model/operation/renameoperation.d.ts +83 -83
- package/src/model/operation/renameoperation.js +115 -115
- package/src/model/operation/rootattributeoperation.d.ts +98 -98
- package/src/model/operation/rootattributeoperation.js +155 -155
- package/src/model/operation/rootoperation.d.ts +76 -76
- package/src/model/operation/rootoperation.js +90 -90
- package/src/model/operation/splitoperation.d.ts +109 -109
- package/src/model/operation/splitoperation.js +194 -194
- package/src/model/operation/transform.d.ts +100 -100
- package/src/model/operation/transform.js +1985 -1985
- package/src/model/operation/utils.d.ts +71 -71
- package/src/model/operation/utils.js +217 -213
- package/src/model/position.d.ts +539 -539
- package/src/model/position.js +979 -979
- package/src/model/range.d.ts +458 -458
- package/src/model/range.js +875 -875
- package/src/model/rootelement.d.ts +60 -60
- package/src/model/rootelement.js +74 -74
- package/src/model/schema.d.ts +1186 -1186
- package/src/model/schema.js +1242 -1242
- package/src/model/selection.d.ts +482 -482
- package/src/model/selection.js +789 -789
- package/src/model/text.d.ts +66 -66
- package/src/model/text.js +85 -85
- package/src/model/textproxy.d.ts +144 -144
- package/src/model/textproxy.js +189 -189
- package/src/model/treewalker.d.ts +186 -186
- package/src/model/treewalker.js +244 -244
- package/src/model/typecheckable.d.ts +285 -285
- package/src/model/typecheckable.js +16 -16
- package/src/model/utils/autoparagraphing.d.ts +37 -37
- package/src/model/utils/autoparagraphing.js +63 -63
- package/src/model/utils/deletecontent.d.ts +58 -58
- package/src/model/utils/deletecontent.js +488 -488
- package/src/model/utils/findoptimalinsertionrange.d.ts +32 -32
- package/src/model/utils/findoptimalinsertionrange.js +57 -57
- package/src/model/utils/getselectedcontent.d.ts +30 -30
- package/src/model/utils/getselectedcontent.js +125 -125
- package/src/model/utils/insertcontent.d.ts +46 -46
- package/src/model/utils/insertcontent.js +705 -705
- package/src/model/utils/insertobject.d.ts +44 -44
- package/src/model/utils/insertobject.js +139 -139
- package/src/model/utils/modifyselection.d.ts +48 -48
- package/src/model/utils/modifyselection.js +186 -186
- package/src/model/utils/selection-post-fixer.d.ts +74 -74
- package/src/model/utils/selection-post-fixer.js +260 -260
- package/src/model/writer.d.ts +851 -851
- package/src/model/writer.js +1306 -1306
- package/src/view/attributeelement.d.ts +108 -108
- package/src/view/attributeelement.js +184 -184
- package/src/view/containerelement.d.ts +49 -49
- package/src/view/containerelement.js +80 -80
- package/src/view/datatransfer.d.ts +79 -79
- package/src/view/datatransfer.js +98 -98
- package/src/view/document.d.ts +184 -184
- package/src/view/document.js +122 -120
- package/src/view/documentfragment.d.ts +153 -149
- package/src/view/documentfragment.js +234 -228
- package/src/view/documentselection.d.ts +306 -306
- package/src/view/documentselection.js +256 -256
- package/src/view/domconverter.d.ts +652 -640
- package/src/view/domconverter.js +1473 -1450
- package/src/view/downcastwriter.d.ts +996 -996
- package/src/view/downcastwriter.js +1696 -1696
- package/src/view/editableelement.d.ts +62 -62
- package/src/view/editableelement.js +62 -62
- package/src/view/element.d.ts +468 -468
- package/src/view/element.js +724 -724
- package/src/view/elementdefinition.d.ts +87 -87
- package/src/view/elementdefinition.js +5 -5
- package/src/view/emptyelement.d.ts +41 -41
- package/src/view/emptyelement.js +73 -73
- package/src/view/filler.d.ts +111 -111
- package/src/view/filler.js +150 -150
- package/src/view/item.d.ts +14 -14
- package/src/view/item.js +5 -5
- package/src/view/matcher.d.ts +486 -486
- package/src/view/matcher.js +507 -507
- package/src/view/node.d.ts +163 -163
- package/src/view/node.js +228 -228
- package/src/view/observer/arrowkeysobserver.d.ts +45 -45
- package/src/view/observer/arrowkeysobserver.js +40 -40
- package/src/view/observer/bubblingemittermixin.d.ts +166 -166
- package/src/view/observer/bubblingemittermixin.js +172 -172
- package/src/view/observer/bubblingeventinfo.d.ts +47 -47
- package/src/view/observer/bubblingeventinfo.js +37 -37
- package/src/view/observer/clickobserver.d.ts +43 -43
- package/src/view/observer/clickobserver.js +29 -29
- package/src/view/observer/compositionobserver.d.ts +82 -82
- package/src/view/observer/compositionobserver.js +60 -60
- package/src/view/observer/domeventdata.d.ts +50 -50
- package/src/view/observer/domeventdata.js +47 -47
- package/src/view/observer/domeventobserver.d.ts +73 -73
- package/src/view/observer/domeventobserver.js +79 -79
- package/src/view/observer/fakeselectionobserver.d.ts +47 -47
- package/src/view/observer/fakeselectionobserver.js +91 -91
- package/src/view/observer/focusobserver.d.ts +82 -82
- package/src/view/observer/focusobserver.js +86 -86
- package/src/view/observer/inputobserver.d.ts +86 -86
- package/src/view/observer/inputobserver.js +164 -164
- package/src/view/observer/keyobserver.d.ts +66 -66
- package/src/view/observer/keyobserver.js +39 -39
- package/src/view/observer/mouseobserver.d.ts +89 -89
- package/src/view/observer/mouseobserver.js +29 -29
- package/src/view/observer/mutationobserver.d.ts +86 -86
- package/src/view/observer/mutationobserver.js +206 -206
- package/src/view/observer/observer.d.ts +89 -89
- package/src/view/observer/observer.js +84 -84
- package/src/view/observer/selectionobserver.d.ts +148 -148
- package/src/view/observer/selectionobserver.js +202 -202
- package/src/view/observer/tabobserver.d.ts +46 -46
- package/src/view/observer/tabobserver.js +42 -42
- package/src/view/placeholder.d.ts +96 -96
- package/src/view/placeholder.js +267 -267
- package/src/view/position.d.ts +189 -189
- package/src/view/position.js +324 -324
- package/src/view/range.d.ts +279 -279
- package/src/view/range.js +430 -430
- package/src/view/rawelement.d.ts +73 -73
- package/src/view/rawelement.js +105 -105
- package/src/view/renderer.d.ts +265 -265
- package/src/view/renderer.js +1000 -999
- package/src/view/rooteditableelement.d.ts +41 -41
- package/src/view/rooteditableelement.js +69 -69
- package/src/view/selection.d.ts +375 -375
- package/src/view/selection.js +559 -559
- package/src/view/styles/background.d.ts +33 -33
- package/src/view/styles/background.js +74 -74
- package/src/view/styles/border.d.ts +43 -43
- package/src/view/styles/border.js +316 -316
- package/src/view/styles/margin.d.ts +29 -29
- package/src/view/styles/margin.js +34 -34
- package/src/view/styles/padding.d.ts +29 -29
- package/src/view/styles/padding.js +34 -34
- package/src/view/styles/utils.d.ts +93 -93
- package/src/view/styles/utils.js +219 -219
- package/src/view/stylesmap.d.ts +675 -675
- package/src/view/stylesmap.js +765 -766
- package/src/view/text.d.ts +74 -74
- package/src/view/text.js +93 -93
- package/src/view/textproxy.d.ts +97 -97
- package/src/view/textproxy.js +124 -124
- package/src/view/treewalker.d.ts +195 -195
- package/src/view/treewalker.js +327 -327
- package/src/view/typecheckable.d.ts +448 -448
- package/src/view/typecheckable.js +19 -19
- package/src/view/uielement.d.ts +96 -96
- package/src/view/uielement.js +183 -182
- package/src/view/upcastwriter.d.ts +417 -417
- package/src/view/upcastwriter.js +359 -359
- package/src/view/view.d.ts +487 -487
- package/src/view/view.js +546 -546
|
@@ -1,228 +1,234 @@
|
|
|
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/documentfragment
|
|
7
|
-
*/
|
|
8
|
-
import TypeCheckable from './typecheckable';
|
|
9
|
-
import Text from './text';
|
|
10
|
-
import TextProxy from './textproxy';
|
|
11
|
-
import { EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';
|
|
12
|
-
/**
|
|
13
|
-
* Document fragment.
|
|
14
|
-
*
|
|
15
|
-
* To create a new document fragment instance use the
|
|
16
|
-
* {@link module:engine/view/upcastwriter~UpcastWriter#createDocumentFragment `UpcastWriter#createDocumentFragment()`}
|
|
17
|
-
* method.
|
|
18
|
-
*/
|
|
19
|
-
export default class DocumentFragment extends EmitterMixin(TypeCheckable) {
|
|
20
|
-
/**
|
|
21
|
-
* Creates new DocumentFragment instance.
|
|
22
|
-
*
|
|
23
|
-
* @internal
|
|
24
|
-
* @param document The document to which this document fragment belongs.
|
|
25
|
-
* @param children A list of nodes to be inserted into the created document fragment.
|
|
26
|
-
*/
|
|
27
|
-
constructor(document, children) {
|
|
28
|
-
super();
|
|
29
|
-
/**
|
|
30
|
-
* Array of child nodes.
|
|
31
|
-
*/
|
|
32
|
-
this._children = [];
|
|
33
|
-
/**
|
|
34
|
-
* Map of custom properties.
|
|
35
|
-
* Custom properties can be added to document fragment instance.
|
|
36
|
-
*/
|
|
37
|
-
this._customProperties = new Map();
|
|
38
|
-
this.document = document;
|
|
39
|
-
if (children) {
|
|
40
|
-
this._insertChild(0, children);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Iterable interface.
|
|
45
|
-
*
|
|
46
|
-
* Iterates over nodes added to this document fragment.
|
|
47
|
-
*/
|
|
48
|
-
[Symbol.iterator]() {
|
|
49
|
-
return this._children[Symbol.iterator]();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Number of child nodes in this document fragment.
|
|
53
|
-
*/
|
|
54
|
-
get childCount() {
|
|
55
|
-
return this._children.length;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Is `true` if there are no nodes inside this document fragment, `false` otherwise.
|
|
59
|
-
*/
|
|
60
|
-
get isEmpty() {
|
|
61
|
-
return this.childCount === 0;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Artificial root of `DocumentFragment`. Returns itself. Added for compatibility reasons.
|
|
65
|
-
*/
|
|
66
|
-
get root() {
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Artificial parent of `DocumentFragment`. Returns `null`. Added for compatibility reasons.
|
|
71
|
-
*/
|
|
72
|
-
get parent() {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Artificial element name. Returns `undefined`. Added for compatibility reasons.
|
|
77
|
-
*/
|
|
78
|
-
get name() {
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
*/
|
|
84
|
-
|
|
85
|
-
return
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Returns
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
*
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
*
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
*
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
*
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
*
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
*
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
*
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
function
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
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/documentfragment
|
|
7
|
+
*/
|
|
8
|
+
import TypeCheckable from './typecheckable';
|
|
9
|
+
import Text from './text';
|
|
10
|
+
import TextProxy from './textproxy';
|
|
11
|
+
import { EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';
|
|
12
|
+
/**
|
|
13
|
+
* Document fragment.
|
|
14
|
+
*
|
|
15
|
+
* To create a new document fragment instance use the
|
|
16
|
+
* {@link module:engine/view/upcastwriter~UpcastWriter#createDocumentFragment `UpcastWriter#createDocumentFragment()`}
|
|
17
|
+
* method.
|
|
18
|
+
*/
|
|
19
|
+
export default class DocumentFragment extends EmitterMixin(TypeCheckable) {
|
|
20
|
+
/**
|
|
21
|
+
* Creates new DocumentFragment instance.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
* @param document The document to which this document fragment belongs.
|
|
25
|
+
* @param children A list of nodes to be inserted into the created document fragment.
|
|
26
|
+
*/
|
|
27
|
+
constructor(document, children) {
|
|
28
|
+
super();
|
|
29
|
+
/**
|
|
30
|
+
* Array of child nodes.
|
|
31
|
+
*/
|
|
32
|
+
this._children = [];
|
|
33
|
+
/**
|
|
34
|
+
* Map of custom properties.
|
|
35
|
+
* Custom properties can be added to document fragment instance.
|
|
36
|
+
*/
|
|
37
|
+
this._customProperties = new Map();
|
|
38
|
+
this.document = document;
|
|
39
|
+
if (children) {
|
|
40
|
+
this._insertChild(0, children);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Iterable interface.
|
|
45
|
+
*
|
|
46
|
+
* Iterates over nodes added to this document fragment.
|
|
47
|
+
*/
|
|
48
|
+
[Symbol.iterator]() {
|
|
49
|
+
return this._children[Symbol.iterator]();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Number of child nodes in this document fragment.
|
|
53
|
+
*/
|
|
54
|
+
get childCount() {
|
|
55
|
+
return this._children.length;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Is `true` if there are no nodes inside this document fragment, `false` otherwise.
|
|
59
|
+
*/
|
|
60
|
+
get isEmpty() {
|
|
61
|
+
return this.childCount === 0;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Artificial root of `DocumentFragment`. Returns itself. Added for compatibility reasons.
|
|
65
|
+
*/
|
|
66
|
+
get root() {
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Artificial parent of `DocumentFragment`. Returns `null`. Added for compatibility reasons.
|
|
71
|
+
*/
|
|
72
|
+
get parent() {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Artificial element name. Returns `undefined`. Added for compatibility reasons.
|
|
77
|
+
*/
|
|
78
|
+
get name() {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Artificial element getFillerOffset. Returns `undefined`. Added for compatibility reasons.
|
|
83
|
+
*/
|
|
84
|
+
get getFillerOffset() {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns the custom property value for the given key.
|
|
89
|
+
*/
|
|
90
|
+
getCustomProperty(key) {
|
|
91
|
+
return this._customProperties.get(key);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns an iterator which iterates over this document fragment's custom properties.
|
|
95
|
+
* Iterator provides `[ key, value ]` pairs for each stored property.
|
|
96
|
+
*/
|
|
97
|
+
*getCustomProperties() {
|
|
98
|
+
yield* this._customProperties.entries();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* {@link module:engine/view/documentfragment~DocumentFragment#_insertChild Insert} a child node or a list of child nodes at the end
|
|
102
|
+
* and sets the parent of these nodes to this fragment.
|
|
103
|
+
*
|
|
104
|
+
* @internal
|
|
105
|
+
* @param items Items to be inserted.
|
|
106
|
+
* @returns Number of appended nodes.
|
|
107
|
+
*/
|
|
108
|
+
_appendChild(items) {
|
|
109
|
+
return this._insertChild(this.childCount, items);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets child at the given index.
|
|
113
|
+
*
|
|
114
|
+
* @param index Index of child.
|
|
115
|
+
* @returns Child node.
|
|
116
|
+
*/
|
|
117
|
+
getChild(index) {
|
|
118
|
+
return this._children[index];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Gets index of the given child node. Returns `-1` if child node is not found.
|
|
122
|
+
*
|
|
123
|
+
* @param node Child node.
|
|
124
|
+
* @returns Index of the child node.
|
|
125
|
+
*/
|
|
126
|
+
getChildIndex(node) {
|
|
127
|
+
return this._children.indexOf(node);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Gets child nodes iterator.
|
|
131
|
+
*
|
|
132
|
+
* @returns Child nodes iterator.
|
|
133
|
+
*/
|
|
134
|
+
getChildren() {
|
|
135
|
+
return this._children[Symbol.iterator]();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to
|
|
139
|
+
* this fragment.
|
|
140
|
+
*
|
|
141
|
+
* @internal
|
|
142
|
+
* @param index Position where nodes should be inserted.
|
|
143
|
+
* @param items Items to be inserted.
|
|
144
|
+
* @returns Number of inserted nodes.
|
|
145
|
+
*/
|
|
146
|
+
_insertChild(index, items) {
|
|
147
|
+
this._fireChange('children', this);
|
|
148
|
+
let count = 0;
|
|
149
|
+
const nodes = normalize(this.document, items);
|
|
150
|
+
for (const node of nodes) {
|
|
151
|
+
// If node that is being added to this element is already inside another element, first remove it from the old parent.
|
|
152
|
+
if (node.parent !== null) {
|
|
153
|
+
node._remove();
|
|
154
|
+
}
|
|
155
|
+
node.parent = this;
|
|
156
|
+
this._children.splice(index, 0, node);
|
|
157
|
+
index++;
|
|
158
|
+
count++;
|
|
159
|
+
}
|
|
160
|
+
return count;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Removes number of child nodes starting at the given index and set the parent of these nodes to `null`.
|
|
164
|
+
*
|
|
165
|
+
* @internal
|
|
166
|
+
* @param index Number of the first node to remove.
|
|
167
|
+
* @param howMany Number of nodes to remove.
|
|
168
|
+
* @returns The array of removed nodes.
|
|
169
|
+
*/
|
|
170
|
+
_removeChildren(index, howMany = 1) {
|
|
171
|
+
this._fireChange('children', this);
|
|
172
|
+
for (let i = index; i < index + howMany; i++) {
|
|
173
|
+
this._children[i].parent = null;
|
|
174
|
+
}
|
|
175
|
+
return this._children.splice(index, howMany);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Fires `change` event with given type of the change.
|
|
179
|
+
*
|
|
180
|
+
* @internal
|
|
181
|
+
* @param type Type of the change.
|
|
182
|
+
* @param node Changed node.
|
|
183
|
+
*/
|
|
184
|
+
_fireChange(type, node) {
|
|
185
|
+
this.fire('change:' + type, node);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Sets a custom property. They can be used to add special data to elements.
|
|
189
|
+
*
|
|
190
|
+
* @see module:engine/view/downcastwriter~DowncastWriter#setCustomProperty
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
_setCustomProperty(key, value) {
|
|
194
|
+
this._customProperties.set(key, value);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Removes the custom property stored under the given key.
|
|
198
|
+
*
|
|
199
|
+
* @see module:engine/view/downcastwriter~DowncastWriter#removeCustomProperty
|
|
200
|
+
* @internal
|
|
201
|
+
* @returns Returns true if property was removed.
|
|
202
|
+
*/
|
|
203
|
+
_removeCustomProperty(key) {
|
|
204
|
+
return this._customProperties.delete(key);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// The magic of type inference using `is` method is centralized in `TypeCheckable` class.
|
|
208
|
+
// Proper overload would interfere with that.
|
|
209
|
+
DocumentFragment.prototype.is = function (type) {
|
|
210
|
+
return type === 'documentFragment' || type === 'view:documentFragment';
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Converts strings to Text and non-iterables to arrays.
|
|
214
|
+
*/
|
|
215
|
+
function normalize(document, nodes) {
|
|
216
|
+
// Separate condition because string is iterable.
|
|
217
|
+
if (typeof nodes == 'string') {
|
|
218
|
+
return [new Text(document, nodes)];
|
|
219
|
+
}
|
|
220
|
+
if (!isIterable(nodes)) {
|
|
221
|
+
nodes = [nodes];
|
|
222
|
+
}
|
|
223
|
+
// Array.from to enable .map() on non-arrays.
|
|
224
|
+
return Array.from(nodes)
|
|
225
|
+
.map(node => {
|
|
226
|
+
if (typeof node == 'string') {
|
|
227
|
+
return new Text(document, node);
|
|
228
|
+
}
|
|
229
|
+
if (node instanceof TextProxy) {
|
|
230
|
+
return new Text(document, node.data);
|
|
231
|
+
}
|
|
232
|
+
return node;
|
|
233
|
+
});
|
|
234
|
+
}
|