@ckeditor/ckeditor5-engine 38.1.1 → 38.2.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/package.json +3 -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 +547 -547
- package/src/conversion/downcastdispatcher.js +538 -538
- package/src/conversion/downcasthelpers.d.ts +1226 -1226
- package/src/conversion/downcasthelpers.js +2183 -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 +532 -532
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -18
- package/src/dataprocessor/basichtmlwriter.js +19 -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 +113 -113
- package/src/index.js +77 -77
- package/src/model/batch.d.ts +106 -106
- package/src/model/batch.js +96 -96
- package/src/model/differ.d.ts +373 -373
- package/src/model/differ.js +1090 -1090
- package/src/model/document.d.ts +266 -264
- package/src/model/document.js +356 -356
- 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 +990 -987
- 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 +920 -920
- package/src/model/model.js +843 -843
- 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 +62 -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 +80 -80
- package/src/model/operation/rootoperation.js +114 -114
- 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 +213 -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 +54 -54
- package/src/model/rootelement.js +68 -68
- package/src/model/schema.d.ts +1186 -1176
- package/src/model/schema.js +1237 -1237
- 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 +64 -64
- 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 +120 -120
- package/src/view/documentfragment.d.ts +149 -149
- package/src/view/documentfragment.js +228 -228
- package/src/view/documentselection.d.ts +306 -306
- package/src/view/documentselection.js +256 -256
- package/src/view/domconverter.d.ts +634 -650
- package/src/view/domconverter.js +1407 -1373
- package/src/view/downcastwriter.d.ts +996 -996
- package/src/view/downcastwriter.js +1696 -1696
- package/src/view/editableelement.d.ts +52 -52
- package/src/view/editableelement.js +61 -61
- 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 -148
- 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 +85 -85
- package/src/view/placeholder.js +230 -230
- 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 -1000
- 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 +766 -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 +182 -182
- package/src/view/upcastwriter.d.ts +417 -417
- package/src/view/upcastwriter.js +359 -359
- package/src/view/view.d.ts +480 -480
- package/src/view/view.js +534 -534
package/src/model/nodelist.d.ts
CHANGED
|
@@ -1,91 +1,91 @@
|
|
|
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/model/nodelist
|
|
7
|
-
*/
|
|
8
|
-
import Node from './node';
|
|
9
|
-
/**
|
|
10
|
-
* Provides an interface to operate on a list of {@link module:engine/model/node~Node nodes}. `NodeList` is used internally
|
|
11
|
-
* in classes like {@link module:engine/model/element~Element Element}
|
|
12
|
-
* or {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment}.
|
|
13
|
-
*/
|
|
14
|
-
export default class NodeList implements Iterable<Node> {
|
|
15
|
-
/**
|
|
16
|
-
* Nodes contained in this node list.
|
|
17
|
-
*/
|
|
18
|
-
private _nodes;
|
|
19
|
-
/**
|
|
20
|
-
* Creates an empty node list.
|
|
21
|
-
*
|
|
22
|
-
* @internal
|
|
23
|
-
* @param nodes Nodes contained in this node list.
|
|
24
|
-
*/
|
|
25
|
-
constructor(nodes?: Iterable<Node>);
|
|
26
|
-
/**
|
|
27
|
-
* Iterable interface.
|
|
28
|
-
*
|
|
29
|
-
* Iterates over all nodes contained inside this node list.
|
|
30
|
-
*/
|
|
31
|
-
[Symbol.iterator](): IterableIterator<Node>;
|
|
32
|
-
/**
|
|
33
|
-
* Number of nodes contained inside this node list.
|
|
34
|
-
*/
|
|
35
|
-
get length(): number;
|
|
36
|
-
/**
|
|
37
|
-
* Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes contained inside this node list.
|
|
38
|
-
*/
|
|
39
|
-
get maxOffset(): number;
|
|
40
|
-
/**
|
|
41
|
-
* Gets the node at the given index. Returns `null` if incorrect index was passed.
|
|
42
|
-
*/
|
|
43
|
-
getNode(index: number): Node | null;
|
|
44
|
-
/**
|
|
45
|
-
* Returns an index of the given node. Returns `null` if given node is not inside this node list.
|
|
46
|
-
*/
|
|
47
|
-
getNodeIndex(node: Node): number | null;
|
|
48
|
-
/**
|
|
49
|
-
* Returns the starting offset of given node. Starting offset is equal to the sum of
|
|
50
|
-
* {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes that are before this node in this node list.
|
|
51
|
-
*/
|
|
52
|
-
getNodeStartOffset(node: Node): number | null;
|
|
53
|
-
/**
|
|
54
|
-
* Converts index to offset in node list.
|
|
55
|
-
*
|
|
56
|
-
* Returns starting offset of a node that is at given index. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
57
|
-
* `model-nodelist-index-out-of-bounds` if given index is less than `0` or more than {@link #length}.
|
|
58
|
-
*/
|
|
59
|
-
indexToOffset(index: number): number;
|
|
60
|
-
/**
|
|
61
|
-
* Converts offset in node list to index.
|
|
62
|
-
*
|
|
63
|
-
* Returns index of a node that occupies given offset. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
64
|
-
* `model-nodelist-offset-out-of-bounds` if given offset is less than `0` or more than {@link #maxOffset}.
|
|
65
|
-
*/
|
|
66
|
-
offsetToIndex(offset: number): number;
|
|
67
|
-
/**
|
|
68
|
-
* Inserts given nodes at given index.
|
|
69
|
-
*
|
|
70
|
-
* @internal
|
|
71
|
-
* @param index Index at which nodes should be inserted.
|
|
72
|
-
* @param nodes Nodes to be inserted.
|
|
73
|
-
*/
|
|
74
|
-
_insertNodes(index: number, nodes: Iterable<Node>): void;
|
|
75
|
-
/**
|
|
76
|
-
* Removes one or more nodes starting at the given index.
|
|
77
|
-
*
|
|
78
|
-
* @internal
|
|
79
|
-
* @param indexStart Index of the first node to remove.
|
|
80
|
-
* @param howMany Number of nodes to remove.
|
|
81
|
-
* @returns Array containing removed nodes.
|
|
82
|
-
*/
|
|
83
|
-
_removeNodes(indexStart: number, howMany?: number): Array<Node>;
|
|
84
|
-
/**
|
|
85
|
-
* Converts `NodeList` instance to an array containing nodes that were inserted in the node list. Nodes
|
|
86
|
-
* are also converted to their plain object representation.
|
|
87
|
-
*
|
|
88
|
-
* @returns `NodeList` instance converted to `Array`.
|
|
89
|
-
*/
|
|
90
|
-
toJSON(): unknown;
|
|
91
|
-
}
|
|
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/model/nodelist
|
|
7
|
+
*/
|
|
8
|
+
import Node from './node.js';
|
|
9
|
+
/**
|
|
10
|
+
* Provides an interface to operate on a list of {@link module:engine/model/node~Node nodes}. `NodeList` is used internally
|
|
11
|
+
* in classes like {@link module:engine/model/element~Element Element}
|
|
12
|
+
* or {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment}.
|
|
13
|
+
*/
|
|
14
|
+
export default class NodeList implements Iterable<Node> {
|
|
15
|
+
/**
|
|
16
|
+
* Nodes contained in this node list.
|
|
17
|
+
*/
|
|
18
|
+
private _nodes;
|
|
19
|
+
/**
|
|
20
|
+
* Creates an empty node list.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
* @param nodes Nodes contained in this node list.
|
|
24
|
+
*/
|
|
25
|
+
constructor(nodes?: Iterable<Node>);
|
|
26
|
+
/**
|
|
27
|
+
* Iterable interface.
|
|
28
|
+
*
|
|
29
|
+
* Iterates over all nodes contained inside this node list.
|
|
30
|
+
*/
|
|
31
|
+
[Symbol.iterator](): IterableIterator<Node>;
|
|
32
|
+
/**
|
|
33
|
+
* Number of nodes contained inside this node list.
|
|
34
|
+
*/
|
|
35
|
+
get length(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes contained inside this node list.
|
|
38
|
+
*/
|
|
39
|
+
get maxOffset(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Gets the node at the given index. Returns `null` if incorrect index was passed.
|
|
42
|
+
*/
|
|
43
|
+
getNode(index: number): Node | null;
|
|
44
|
+
/**
|
|
45
|
+
* Returns an index of the given node. Returns `null` if given node is not inside this node list.
|
|
46
|
+
*/
|
|
47
|
+
getNodeIndex(node: Node): number | null;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the starting offset of given node. Starting offset is equal to the sum of
|
|
50
|
+
* {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes that are before this node in this node list.
|
|
51
|
+
*/
|
|
52
|
+
getNodeStartOffset(node: Node): number | null;
|
|
53
|
+
/**
|
|
54
|
+
* Converts index to offset in node list.
|
|
55
|
+
*
|
|
56
|
+
* Returns starting offset of a node that is at given index. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
57
|
+
* `model-nodelist-index-out-of-bounds` if given index is less than `0` or more than {@link #length}.
|
|
58
|
+
*/
|
|
59
|
+
indexToOffset(index: number): number;
|
|
60
|
+
/**
|
|
61
|
+
* Converts offset in node list to index.
|
|
62
|
+
*
|
|
63
|
+
* Returns index of a node that occupies given offset. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
64
|
+
* `model-nodelist-offset-out-of-bounds` if given offset is less than `0` or more than {@link #maxOffset}.
|
|
65
|
+
*/
|
|
66
|
+
offsetToIndex(offset: number): number;
|
|
67
|
+
/**
|
|
68
|
+
* Inserts given nodes at given index.
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
* @param index Index at which nodes should be inserted.
|
|
72
|
+
* @param nodes Nodes to be inserted.
|
|
73
|
+
*/
|
|
74
|
+
_insertNodes(index: number, nodes: Iterable<Node>): void;
|
|
75
|
+
/**
|
|
76
|
+
* Removes one or more nodes starting at the given index.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
* @param indexStart Index of the first node to remove.
|
|
80
|
+
* @param howMany Number of nodes to remove.
|
|
81
|
+
* @returns Array containing removed nodes.
|
|
82
|
+
*/
|
|
83
|
+
_removeNodes(indexStart: number, howMany?: number): Array<Node>;
|
|
84
|
+
/**
|
|
85
|
+
* Converts `NodeList` instance to an array containing nodes that were inserted in the node list. Nodes
|
|
86
|
+
* are also converted to their plain object representation.
|
|
87
|
+
*
|
|
88
|
+
* @returns `NodeList` instance converted to `Array`.
|
|
89
|
+
*/
|
|
90
|
+
toJSON(): unknown;
|
|
91
|
+
}
|
package/src/model/nodelist.js
CHANGED
|
@@ -1,163 +1,163 @@
|
|
|
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/model/nodelist
|
|
7
|
-
*/
|
|
8
|
-
import Node from './node';
|
|
9
|
-
import { CKEditorError, spliceArray } from '@ckeditor/ckeditor5-utils';
|
|
10
|
-
/**
|
|
11
|
-
* Provides an interface to operate on a list of {@link module:engine/model/node~Node nodes}. `NodeList` is used internally
|
|
12
|
-
* in classes like {@link module:engine/model/element~Element Element}
|
|
13
|
-
* or {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment}.
|
|
14
|
-
*/
|
|
15
|
-
export default class NodeList {
|
|
16
|
-
/**
|
|
17
|
-
* Creates an empty node list.
|
|
18
|
-
*
|
|
19
|
-
* @internal
|
|
20
|
-
* @param nodes Nodes contained in this node list.
|
|
21
|
-
*/
|
|
22
|
-
constructor(nodes) {
|
|
23
|
-
/**
|
|
24
|
-
* Nodes contained in this node list.
|
|
25
|
-
*/
|
|
26
|
-
this._nodes = [];
|
|
27
|
-
if (nodes) {
|
|
28
|
-
this._insertNodes(0, nodes);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Iterable interface.
|
|
33
|
-
*
|
|
34
|
-
* Iterates over all nodes contained inside this node list.
|
|
35
|
-
*/
|
|
36
|
-
[Symbol.iterator]() {
|
|
37
|
-
return this._nodes[Symbol.iterator]();
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Number of nodes contained inside this node list.
|
|
41
|
-
*/
|
|
42
|
-
get length() {
|
|
43
|
-
return this._nodes.length;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes contained inside this node list.
|
|
47
|
-
*/
|
|
48
|
-
get maxOffset() {
|
|
49
|
-
return this._nodes.reduce((sum, node) => sum + node.offsetSize, 0);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Gets the node at the given index. Returns `null` if incorrect index was passed.
|
|
53
|
-
*/
|
|
54
|
-
getNode(index) {
|
|
55
|
-
return this._nodes[index] || null;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Returns an index of the given node. Returns `null` if given node is not inside this node list.
|
|
59
|
-
*/
|
|
60
|
-
getNodeIndex(node) {
|
|
61
|
-
const index = this._nodes.indexOf(node);
|
|
62
|
-
return index == -1 ? null : index;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Returns the starting offset of given node. Starting offset is equal to the sum of
|
|
66
|
-
* {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes that are before this node in this node list.
|
|
67
|
-
*/
|
|
68
|
-
getNodeStartOffset(node) {
|
|
69
|
-
const index = this.getNodeIndex(node);
|
|
70
|
-
return index === null ? null : this._nodes.slice(0, index).reduce((sum, node) => sum + node.offsetSize, 0);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Converts index to offset in node list.
|
|
74
|
-
*
|
|
75
|
-
* Returns starting offset of a node that is at given index. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
76
|
-
* `model-nodelist-index-out-of-bounds` if given index is less than `0` or more than {@link #length}.
|
|
77
|
-
*/
|
|
78
|
-
indexToOffset(index) {
|
|
79
|
-
if (index == this._nodes.length) {
|
|
80
|
-
return this.maxOffset;
|
|
81
|
-
}
|
|
82
|
-
const node = this._nodes[index];
|
|
83
|
-
if (!node) {
|
|
84
|
-
/**
|
|
85
|
-
* Given index cannot be found in the node list.
|
|
86
|
-
*
|
|
87
|
-
* @error model-nodelist-index-out-of-bounds
|
|
88
|
-
*/
|
|
89
|
-
throw new CKEditorError('model-nodelist-index-out-of-bounds', this);
|
|
90
|
-
}
|
|
91
|
-
return this.getNodeStartOffset(node);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Converts offset in node list to index.
|
|
95
|
-
*
|
|
96
|
-
* Returns index of a node that occupies given offset. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
97
|
-
* `model-nodelist-offset-out-of-bounds` if given offset is less than `0` or more than {@link #maxOffset}.
|
|
98
|
-
*/
|
|
99
|
-
offsetToIndex(offset) {
|
|
100
|
-
let totalOffset = 0;
|
|
101
|
-
for (const node of this._nodes) {
|
|
102
|
-
if (offset >= totalOffset && offset < totalOffset + node.offsetSize) {
|
|
103
|
-
return this.getNodeIndex(node);
|
|
104
|
-
}
|
|
105
|
-
totalOffset += node.offsetSize;
|
|
106
|
-
}
|
|
107
|
-
if (totalOffset != offset) {
|
|
108
|
-
/**
|
|
109
|
-
* Given offset cannot be found in the node list.
|
|
110
|
-
*
|
|
111
|
-
* @error model-nodelist-offset-out-of-bounds
|
|
112
|
-
* @param offset
|
|
113
|
-
* @param nodeList Stringified node list.
|
|
114
|
-
*/
|
|
115
|
-
throw new CKEditorError('model-nodelist-offset-out-of-bounds', this, {
|
|
116
|
-
offset,
|
|
117
|
-
nodeList: this
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
return this.length;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Inserts given nodes at given index.
|
|
124
|
-
*
|
|
125
|
-
* @internal
|
|
126
|
-
* @param index Index at which nodes should be inserted.
|
|
127
|
-
* @param nodes Nodes to be inserted.
|
|
128
|
-
*/
|
|
129
|
-
_insertNodes(index, nodes) {
|
|
130
|
-
// Validation.
|
|
131
|
-
for (const node of nodes) {
|
|
132
|
-
if (!(node instanceof Node)) {
|
|
133
|
-
/**
|
|
134
|
-
* Trying to insert an object which is not a Node instance.
|
|
135
|
-
*
|
|
136
|
-
* @error model-nodelist-insertnodes-not-node
|
|
137
|
-
*/
|
|
138
|
-
throw new CKEditorError('model-nodelist-insertnodes-not-node', this);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
this._nodes = spliceArray(this._nodes, Array.from(nodes), index, 0);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Removes one or more nodes starting at the given index.
|
|
145
|
-
*
|
|
146
|
-
* @internal
|
|
147
|
-
* @param indexStart Index of the first node to remove.
|
|
148
|
-
* @param howMany Number of nodes to remove.
|
|
149
|
-
* @returns Array containing removed nodes.
|
|
150
|
-
*/
|
|
151
|
-
_removeNodes(indexStart, howMany = 1) {
|
|
152
|
-
return this._nodes.splice(indexStart, howMany);
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Converts `NodeList` instance to an array containing nodes that were inserted in the node list. Nodes
|
|
156
|
-
* are also converted to their plain object representation.
|
|
157
|
-
*
|
|
158
|
-
* @returns `NodeList` instance converted to `Array`.
|
|
159
|
-
*/
|
|
160
|
-
toJSON() {
|
|
161
|
-
return this._nodes.map(node => node.toJSON());
|
|
162
|
-
}
|
|
163
|
-
}
|
|
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/model/nodelist
|
|
7
|
+
*/
|
|
8
|
+
import Node from './node.js';
|
|
9
|
+
import { CKEditorError, spliceArray } from '@ckeditor/ckeditor5-utils';
|
|
10
|
+
/**
|
|
11
|
+
* Provides an interface to operate on a list of {@link module:engine/model/node~Node nodes}. `NodeList` is used internally
|
|
12
|
+
* in classes like {@link module:engine/model/element~Element Element}
|
|
13
|
+
* or {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment}.
|
|
14
|
+
*/
|
|
15
|
+
export default class NodeList {
|
|
16
|
+
/**
|
|
17
|
+
* Creates an empty node list.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
* @param nodes Nodes contained in this node list.
|
|
21
|
+
*/
|
|
22
|
+
constructor(nodes) {
|
|
23
|
+
/**
|
|
24
|
+
* Nodes contained in this node list.
|
|
25
|
+
*/
|
|
26
|
+
this._nodes = [];
|
|
27
|
+
if (nodes) {
|
|
28
|
+
this._insertNodes(0, nodes);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Iterable interface.
|
|
33
|
+
*
|
|
34
|
+
* Iterates over all nodes contained inside this node list.
|
|
35
|
+
*/
|
|
36
|
+
[Symbol.iterator]() {
|
|
37
|
+
return this._nodes[Symbol.iterator]();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Number of nodes contained inside this node list.
|
|
41
|
+
*/
|
|
42
|
+
get length() {
|
|
43
|
+
return this._nodes.length;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes contained inside this node list.
|
|
47
|
+
*/
|
|
48
|
+
get maxOffset() {
|
|
49
|
+
return this._nodes.reduce((sum, node) => sum + node.offsetSize, 0);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the node at the given index. Returns `null` if incorrect index was passed.
|
|
53
|
+
*/
|
|
54
|
+
getNode(index) {
|
|
55
|
+
return this._nodes[index] || null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns an index of the given node. Returns `null` if given node is not inside this node list.
|
|
59
|
+
*/
|
|
60
|
+
getNodeIndex(node) {
|
|
61
|
+
const index = this._nodes.indexOf(node);
|
|
62
|
+
return index == -1 ? null : index;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Returns the starting offset of given node. Starting offset is equal to the sum of
|
|
66
|
+
* {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes that are before this node in this node list.
|
|
67
|
+
*/
|
|
68
|
+
getNodeStartOffset(node) {
|
|
69
|
+
const index = this.getNodeIndex(node);
|
|
70
|
+
return index === null ? null : this._nodes.slice(0, index).reduce((sum, node) => sum + node.offsetSize, 0);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Converts index to offset in node list.
|
|
74
|
+
*
|
|
75
|
+
* Returns starting offset of a node that is at given index. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
76
|
+
* `model-nodelist-index-out-of-bounds` if given index is less than `0` or more than {@link #length}.
|
|
77
|
+
*/
|
|
78
|
+
indexToOffset(index) {
|
|
79
|
+
if (index == this._nodes.length) {
|
|
80
|
+
return this.maxOffset;
|
|
81
|
+
}
|
|
82
|
+
const node = this._nodes[index];
|
|
83
|
+
if (!node) {
|
|
84
|
+
/**
|
|
85
|
+
* Given index cannot be found in the node list.
|
|
86
|
+
*
|
|
87
|
+
* @error model-nodelist-index-out-of-bounds
|
|
88
|
+
*/
|
|
89
|
+
throw new CKEditorError('model-nodelist-index-out-of-bounds', this);
|
|
90
|
+
}
|
|
91
|
+
return this.getNodeStartOffset(node);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Converts offset in node list to index.
|
|
95
|
+
*
|
|
96
|
+
* Returns index of a node that occupies given offset. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}
|
|
97
|
+
* `model-nodelist-offset-out-of-bounds` if given offset is less than `0` or more than {@link #maxOffset}.
|
|
98
|
+
*/
|
|
99
|
+
offsetToIndex(offset) {
|
|
100
|
+
let totalOffset = 0;
|
|
101
|
+
for (const node of this._nodes) {
|
|
102
|
+
if (offset >= totalOffset && offset < totalOffset + node.offsetSize) {
|
|
103
|
+
return this.getNodeIndex(node);
|
|
104
|
+
}
|
|
105
|
+
totalOffset += node.offsetSize;
|
|
106
|
+
}
|
|
107
|
+
if (totalOffset != offset) {
|
|
108
|
+
/**
|
|
109
|
+
* Given offset cannot be found in the node list.
|
|
110
|
+
*
|
|
111
|
+
* @error model-nodelist-offset-out-of-bounds
|
|
112
|
+
* @param offset
|
|
113
|
+
* @param nodeList Stringified node list.
|
|
114
|
+
*/
|
|
115
|
+
throw new CKEditorError('model-nodelist-offset-out-of-bounds', this, {
|
|
116
|
+
offset,
|
|
117
|
+
nodeList: this
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return this.length;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Inserts given nodes at given index.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
126
|
+
* @param index Index at which nodes should be inserted.
|
|
127
|
+
* @param nodes Nodes to be inserted.
|
|
128
|
+
*/
|
|
129
|
+
_insertNodes(index, nodes) {
|
|
130
|
+
// Validation.
|
|
131
|
+
for (const node of nodes) {
|
|
132
|
+
if (!(node instanceof Node)) {
|
|
133
|
+
/**
|
|
134
|
+
* Trying to insert an object which is not a Node instance.
|
|
135
|
+
*
|
|
136
|
+
* @error model-nodelist-insertnodes-not-node
|
|
137
|
+
*/
|
|
138
|
+
throw new CKEditorError('model-nodelist-insertnodes-not-node', this);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
this._nodes = spliceArray(this._nodes, Array.from(nodes), index, 0);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Removes one or more nodes starting at the given index.
|
|
145
|
+
*
|
|
146
|
+
* @internal
|
|
147
|
+
* @param indexStart Index of the first node to remove.
|
|
148
|
+
* @param howMany Number of nodes to remove.
|
|
149
|
+
* @returns Array containing removed nodes.
|
|
150
|
+
*/
|
|
151
|
+
_removeNodes(indexStart, howMany = 1) {
|
|
152
|
+
return this._nodes.splice(indexStart, howMany);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Converts `NodeList` instance to an array containing nodes that were inserted in the node list. Nodes
|
|
156
|
+
* are also converted to their plain object representation.
|
|
157
|
+
*
|
|
158
|
+
* @returns `NodeList` instance converted to `Array`.
|
|
159
|
+
*/
|
|
160
|
+
toJSON() {
|
|
161
|
+
return this._nodes.map(node => node.toJSON());
|
|
162
|
+
}
|
|
163
|
+
}
|