@ckeditor/ckeditor5-engine 38.1.0 → 38.1.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 +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 +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 +264 -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 +987 -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 +1176 -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 +650 -650
- package/src/view/domconverter.js +1373 -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 +148 -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
|
@@ -1,285 +1,285 @@
|
|
|
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/typecheckable
|
|
7
|
-
*/
|
|
8
|
-
import type { Marker } from './markercollection';
|
|
9
|
-
import type DocumentFragment from './documentfragment';
|
|
10
|
-
import type DocumentSelection from './documentselection';
|
|
11
|
-
import type Element from './element';
|
|
12
|
-
import type LivePosition from './liveposition';
|
|
13
|
-
import type LiveRange from './liverange';
|
|
14
|
-
import type Node from './node';
|
|
15
|
-
import type Position from './position';
|
|
16
|
-
import type Range from './range';
|
|
17
|
-
import type RootElement from './rootelement';
|
|
18
|
-
import type Selection from './selection';
|
|
19
|
-
import type Text from './text';
|
|
20
|
-
import type TextProxy from './textproxy';
|
|
21
|
-
export default abstract class TypeCheckable {
|
|
22
|
-
/**
|
|
23
|
-
* Checks whether the object is of type {@link module:engine/model/node~Node} or its subclass.
|
|
24
|
-
*
|
|
25
|
-
* This method is useful when processing model objects that are of unknown type. For example, a function
|
|
26
|
-
* may return a {@link module:engine/model/documentfragment~DocumentFragment} or a {@link module:engine/model/node~Node}
|
|
27
|
-
* that can be either a text node or an element. This method can be used to check what kind of object is returned.
|
|
28
|
-
*
|
|
29
|
-
* ```ts
|
|
30
|
-
* someObject.is( 'element' ); // -> true if this is an element
|
|
31
|
-
* someObject.is( 'node' ); // -> true if this is a node (a text node or an element)
|
|
32
|
-
* someObject.is( 'documentFragment' ); // -> true if this is a document fragment
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* Since this method is also available on a range of view objects, you can prefix the type of the object with
|
|
36
|
-
* `model:` or `view:` to check, for example, if this is the model's or view's element:
|
|
37
|
-
*
|
|
38
|
-
* ```ts
|
|
39
|
-
* modelElement.is( 'model:element' ); // -> true
|
|
40
|
-
* modelElement.is( 'view:element' ); // -> false
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* By using this method it is also possible to check a name of an element:
|
|
44
|
-
*
|
|
45
|
-
* ```ts
|
|
46
|
-
* imageElement.is( 'element', 'imageBlock' ); // -> true
|
|
47
|
-
* imageElement.is( 'element', 'imageBlock' ); // -> same as above
|
|
48
|
-
* imageElement.is( 'model:element', 'imageBlock' ); // -> same as above, but more precise
|
|
49
|
-
* ```
|
|
50
|
-
*
|
|
51
|
-
* @label NODE
|
|
52
|
-
*/
|
|
53
|
-
is(type: 'node' | 'model:node'): this is Node | Element | Text | RootElement;
|
|
54
|
-
/**
|
|
55
|
-
* Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass.
|
|
56
|
-
*
|
|
57
|
-
* ```ts
|
|
58
|
-
* element.is( 'element' ); // -> true
|
|
59
|
-
* element.is( 'node' ); // -> true
|
|
60
|
-
* element.is( 'model:element' ); // -> true
|
|
61
|
-
* element.is( 'model:node' ); // -> true
|
|
62
|
-
*
|
|
63
|
-
* element.is( 'view:element' ); // -> false
|
|
64
|
-
* element.is( 'documentSelection' ); // -> false
|
|
65
|
-
* ```
|
|
66
|
-
*
|
|
67
|
-
* Assuming that the object being checked is an element, you can also check its
|
|
68
|
-
* {@link module:engine/model/element~Element#name name}:
|
|
69
|
-
*
|
|
70
|
-
* ```ts
|
|
71
|
-
* element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
|
|
72
|
-
* text.is( 'element', 'imageBlock' ); -> false
|
|
73
|
-
* ```
|
|
74
|
-
*
|
|
75
|
-
* @label ELEMENT
|
|
76
|
-
*/
|
|
77
|
-
is(type: 'element' | 'model:element'): this is Element | RootElement;
|
|
78
|
-
/**
|
|
79
|
-
* Checks whether the object is of type {@link module:engine/model/rootelement~RootElement}.
|
|
80
|
-
*
|
|
81
|
-
* ```ts
|
|
82
|
-
* rootElement.is( 'rootElement' ); // -> true
|
|
83
|
-
* rootElement.is( 'element' ); // -> true
|
|
84
|
-
* rootElement.is( 'node' ); // -> true
|
|
85
|
-
* rootElement.is( 'model:rootElement' ); // -> true
|
|
86
|
-
* rootElement.is( 'model:element' ); // -> true
|
|
87
|
-
* rootElement.is( 'model:node' ); // -> true
|
|
88
|
-
*
|
|
89
|
-
* rootElement.is( 'view:element' ); // -> false
|
|
90
|
-
* rootElement.is( 'documentFragment' ); // -> false
|
|
91
|
-
* ```
|
|
92
|
-
*
|
|
93
|
-
* Assuming that the object being checked is an element, you can also check its
|
|
94
|
-
* {@link module:engine/model/element~Element#name name}:
|
|
95
|
-
*
|
|
96
|
-
* ```ts
|
|
97
|
-
* rootElement.is( 'rootElement', '$root' ); // -> same as above
|
|
98
|
-
* ```
|
|
99
|
-
*
|
|
100
|
-
* @label ROOT_ELEMENT
|
|
101
|
-
*/
|
|
102
|
-
is(type: 'rootElement' | 'model:rootElement'): this is RootElement;
|
|
103
|
-
/**
|
|
104
|
-
* Checks whether the object is of type {@link module:engine/model/text~Text}.
|
|
105
|
-
*
|
|
106
|
-
* ```ts
|
|
107
|
-
* text.is( '$text' ); // -> true
|
|
108
|
-
* text.is( 'node' ); // -> true
|
|
109
|
-
* text.is( 'model:$text' ); // -> true
|
|
110
|
-
* text.is( 'model:node' ); // -> true
|
|
111
|
-
*
|
|
112
|
-
* text.is( 'view:$text' ); // -> false
|
|
113
|
-
* text.is( 'documentSelection' ); // -> false
|
|
114
|
-
* ```
|
|
115
|
-
*
|
|
116
|
-
* **Note:** Until version 20.0.0 this method wasn't accepting `'$text'` type. The legacy `'text'` type is still
|
|
117
|
-
* accepted for backward compatibility.
|
|
118
|
-
*
|
|
119
|
-
* @label TEXT
|
|
120
|
-
*/
|
|
121
|
-
is(type: '$text' | 'model:$text'): this is Text;
|
|
122
|
-
/**
|
|
123
|
-
* Checks whether the object is of type {@link module:engine/model/position~Position} or its subclass.
|
|
124
|
-
*
|
|
125
|
-
* ```ts
|
|
126
|
-
* position.is( 'position' ); // -> true
|
|
127
|
-
* position.is( 'model:position' ); // -> true
|
|
128
|
-
*
|
|
129
|
-
* position.is( 'view:position' ); // -> false
|
|
130
|
-
* position.is( 'documentSelection' ); // -> false
|
|
131
|
-
* ```
|
|
132
|
-
*
|
|
133
|
-
* @label POSITION
|
|
134
|
-
*/
|
|
135
|
-
is(type: 'position' | 'model:position'): this is Position | LivePosition;
|
|
136
|
-
/**
|
|
137
|
-
* Checks whether the object is of type {@link module:engine/model/liveposition~LivePosition}.
|
|
138
|
-
*
|
|
139
|
-
* ```ts
|
|
140
|
-
* livePosition.is( 'position' ); // -> true
|
|
141
|
-
* livePosition.is( 'model:position' ); // -> true
|
|
142
|
-
* livePosition.is( 'liveposition' ); // -> true
|
|
143
|
-
* livePosition.is( 'model:livePosition' ); // -> true
|
|
144
|
-
*
|
|
145
|
-
* livePosition.is( 'view:position' ); // -> false
|
|
146
|
-
* livePosition.is( 'documentSelection' ); // -> false
|
|
147
|
-
* ```
|
|
148
|
-
*
|
|
149
|
-
* @label LIVE_POSITION
|
|
150
|
-
*/
|
|
151
|
-
is(type: 'livePosition' | 'model:livePosition'): this is LivePosition;
|
|
152
|
-
/**
|
|
153
|
-
* Checks whether the object is of type {@link module:engine/model/range~Range} or its subclass.
|
|
154
|
-
*
|
|
155
|
-
* ```ts
|
|
156
|
-
* range.is( 'range' ); // -> true
|
|
157
|
-
* range.is( 'model:range' ); // -> true
|
|
158
|
-
*
|
|
159
|
-
* range.is( 'view:range' ); // -> false
|
|
160
|
-
* range.is( 'documentSelection' ); // -> false
|
|
161
|
-
* ```
|
|
162
|
-
*
|
|
163
|
-
* @label RANGE
|
|
164
|
-
*/
|
|
165
|
-
is(type: 'range' | 'model:range'): this is Range | LiveRange;
|
|
166
|
-
/**
|
|
167
|
-
* Checks whether the object is of type {@link module:engine/model/liverange~LiveRange}.
|
|
168
|
-
*
|
|
169
|
-
* ```ts
|
|
170
|
-
* liveRange.is( 'range' ); // -> true
|
|
171
|
-
* liveRange.is( 'model:range' ); // -> true
|
|
172
|
-
* liveRange.is( 'liveRange' ); // -> true
|
|
173
|
-
* liveRange.is( 'model:liveRange' ); // -> true
|
|
174
|
-
*
|
|
175
|
-
* liveRange.is( 'view:range' ); // -> false
|
|
176
|
-
* liveRange.is( 'documentSelection' ); // -> false
|
|
177
|
-
* ```
|
|
178
|
-
*
|
|
179
|
-
* @label LIVE_RANGE
|
|
180
|
-
*/
|
|
181
|
-
is(type: 'liveRange' | 'model:liveRange'): this is LiveRange;
|
|
182
|
-
/**
|
|
183
|
-
* Checks whether the object is of type {@link module:engine/model/documentfragment~DocumentFragment}.
|
|
184
|
-
*
|
|
185
|
-
* ```ts
|
|
186
|
-
* docFrag.is( 'documentFragment' ); // -> true
|
|
187
|
-
* docFrag.is( 'model:documentFragment' ); // -> true
|
|
188
|
-
*
|
|
189
|
-
* docFrag.is( 'view:documentFragment' ); // -> false
|
|
190
|
-
* docFrag.is( 'element' ); // -> false
|
|
191
|
-
* docFrag.is( 'node' ); // -> false
|
|
192
|
-
* ```
|
|
193
|
-
*
|
|
194
|
-
* @label DOCUMENT_FRAGMENT
|
|
195
|
-
*/
|
|
196
|
-
is(type: 'documentFragment' | 'model:documentFragment'): this is DocumentFragment;
|
|
197
|
-
/**
|
|
198
|
-
* Checks whether the object is of type {@link module:engine/model/selection~Selection}
|
|
199
|
-
* or {@link module:engine/model/documentselection~DocumentSelection}.
|
|
200
|
-
*
|
|
201
|
-
* ```ts
|
|
202
|
-
* selection.is( 'selection' ); // -> true
|
|
203
|
-
* selection.is( 'model:selection' ); // -> true
|
|
204
|
-
*
|
|
205
|
-
* selection.is( 'view:selection' ); // -> false
|
|
206
|
-
* selection.is( 'range' ); // -> false
|
|
207
|
-
* ```
|
|
208
|
-
*
|
|
209
|
-
* @label SELECTION
|
|
210
|
-
*/
|
|
211
|
-
is(type: 'selection' | 'model:selection'): this is Selection | DocumentSelection;
|
|
212
|
-
/**
|
|
213
|
-
* Checks whether the object is of type {@link module:engine/model/documentselection~DocumentSelection}.
|
|
214
|
-
*
|
|
215
|
-
* ```ts
|
|
216
|
-
* selection.is( 'selection' ); // -> true
|
|
217
|
-
* selection.is( 'documentSelection' ); // -> true
|
|
218
|
-
* selection.is( 'model:selection' ); // -> true
|
|
219
|
-
* selection.is( 'model:documentSelection' ); // -> true
|
|
220
|
-
*
|
|
221
|
-
* selection.is( 'view:selection' ); // -> false
|
|
222
|
-
* selection.is( 'element' ); // -> false
|
|
223
|
-
* selection.is( 'node' ); // -> false
|
|
224
|
-
* ```
|
|
225
|
-
*
|
|
226
|
-
* @label DOCUMENT_SELECTION
|
|
227
|
-
*/
|
|
228
|
-
is(type: 'documentSelection' | 'model:documentSelection'): this is DocumentSelection;
|
|
229
|
-
/**
|
|
230
|
-
* Checks whether the object is of type {@link module:engine/model/markercollection~Marker}.
|
|
231
|
-
*
|
|
232
|
-
* ```ts
|
|
233
|
-
* marker.is( 'marker' ); // -> true
|
|
234
|
-
* marker.is( 'model:marker' ); // -> true
|
|
235
|
-
*
|
|
236
|
-
* marker.is( 'view:element' ); // -> false
|
|
237
|
-
* marker.is( 'documentSelection' ); // -> false
|
|
238
|
-
* ```
|
|
239
|
-
*
|
|
240
|
-
* @label MARKER
|
|
241
|
-
*/
|
|
242
|
-
is(type: 'marker' | 'model:marker'): this is Marker;
|
|
243
|
-
/**
|
|
244
|
-
* Checks whether the object is of type {@link module:engine/model/textproxy~TextProxy}.
|
|
245
|
-
*
|
|
246
|
-
* ```ts
|
|
247
|
-
* textProxy.is( '$textProxy' ); // -> true
|
|
248
|
-
* textProxy.is( 'model:$textProxy' ); // -> true
|
|
249
|
-
*
|
|
250
|
-
* textProxy.is( 'view:$textProxy' ); // -> false
|
|
251
|
-
* textProxy.is( 'range' ); // -> false
|
|
252
|
-
* ```
|
|
253
|
-
*
|
|
254
|
-
* **Note:** Until version 20.0.0 this method wasn't accepting `'$textProxy'` type. The legacy `'textProxt'` type is still
|
|
255
|
-
* accepted for backward compatibility.
|
|
256
|
-
*
|
|
257
|
-
* @label TEXT_PROXY
|
|
258
|
-
*/
|
|
259
|
-
is(type: '$textProxy' | 'model:$textProxy'): this is TextProxy;
|
|
260
|
-
/**
|
|
261
|
-
* Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass and has the specified `name`.
|
|
262
|
-
*
|
|
263
|
-
* ```ts
|
|
264
|
-
* element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
|
|
265
|
-
* text.is( 'element', 'imageBlock' ); -> false
|
|
266
|
-
* ```
|
|
267
|
-
*
|
|
268
|
-
* @label ELEMENT_NAME
|
|
269
|
-
*/
|
|
270
|
-
is<N extends string>(type: 'element' | 'model:element', name: N): this is (Element | RootElement) & {
|
|
271
|
-
name: N;
|
|
272
|
-
};
|
|
273
|
-
/**
|
|
274
|
-
* Checks whether the object is of type {@link module:engine/model/rootelement~RootElement} and has the specified `name`.
|
|
275
|
-
*
|
|
276
|
-
* ```ts
|
|
277
|
-
* rootElement.is( 'rootElement', '$root' );
|
|
278
|
-
* ```
|
|
279
|
-
*
|
|
280
|
-
* @label ROOT_ELEMENT_NAME
|
|
281
|
-
*/
|
|
282
|
-
is<N extends string>(type: 'rootElement' | 'model:rootElement', name: N): this is RootElement & {
|
|
283
|
-
name: N;
|
|
284
|
-
};
|
|
285
|
-
}
|
|
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/typecheckable
|
|
7
|
+
*/
|
|
8
|
+
import type { Marker } from './markercollection';
|
|
9
|
+
import type DocumentFragment from './documentfragment';
|
|
10
|
+
import type DocumentSelection from './documentselection';
|
|
11
|
+
import type Element from './element';
|
|
12
|
+
import type LivePosition from './liveposition';
|
|
13
|
+
import type LiveRange from './liverange';
|
|
14
|
+
import type Node from './node';
|
|
15
|
+
import type Position from './position';
|
|
16
|
+
import type Range from './range';
|
|
17
|
+
import type RootElement from './rootelement';
|
|
18
|
+
import type Selection from './selection';
|
|
19
|
+
import type Text from './text';
|
|
20
|
+
import type TextProxy from './textproxy';
|
|
21
|
+
export default abstract class TypeCheckable {
|
|
22
|
+
/**
|
|
23
|
+
* Checks whether the object is of type {@link module:engine/model/node~Node} or its subclass.
|
|
24
|
+
*
|
|
25
|
+
* This method is useful when processing model objects that are of unknown type. For example, a function
|
|
26
|
+
* may return a {@link module:engine/model/documentfragment~DocumentFragment} or a {@link module:engine/model/node~Node}
|
|
27
|
+
* that can be either a text node or an element. This method can be used to check what kind of object is returned.
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* someObject.is( 'element' ); // -> true if this is an element
|
|
31
|
+
* someObject.is( 'node' ); // -> true if this is a node (a text node or an element)
|
|
32
|
+
* someObject.is( 'documentFragment' ); // -> true if this is a document fragment
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Since this method is also available on a range of view objects, you can prefix the type of the object with
|
|
36
|
+
* `model:` or `view:` to check, for example, if this is the model's or view's element:
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* modelElement.is( 'model:element' ); // -> true
|
|
40
|
+
* modelElement.is( 'view:element' ); // -> false
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* By using this method it is also possible to check a name of an element:
|
|
44
|
+
*
|
|
45
|
+
* ```ts
|
|
46
|
+
* imageElement.is( 'element', 'imageBlock' ); // -> true
|
|
47
|
+
* imageElement.is( 'element', 'imageBlock' ); // -> same as above
|
|
48
|
+
* imageElement.is( 'model:element', 'imageBlock' ); // -> same as above, but more precise
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @label NODE
|
|
52
|
+
*/
|
|
53
|
+
is(type: 'node' | 'model:node'): this is Node | Element | Text | RootElement;
|
|
54
|
+
/**
|
|
55
|
+
* Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass.
|
|
56
|
+
*
|
|
57
|
+
* ```ts
|
|
58
|
+
* element.is( 'element' ); // -> true
|
|
59
|
+
* element.is( 'node' ); // -> true
|
|
60
|
+
* element.is( 'model:element' ); // -> true
|
|
61
|
+
* element.is( 'model:node' ); // -> true
|
|
62
|
+
*
|
|
63
|
+
* element.is( 'view:element' ); // -> false
|
|
64
|
+
* element.is( 'documentSelection' ); // -> false
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* Assuming that the object being checked is an element, you can also check its
|
|
68
|
+
* {@link module:engine/model/element~Element#name name}:
|
|
69
|
+
*
|
|
70
|
+
* ```ts
|
|
71
|
+
* element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
|
|
72
|
+
* text.is( 'element', 'imageBlock' ); -> false
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @label ELEMENT
|
|
76
|
+
*/
|
|
77
|
+
is(type: 'element' | 'model:element'): this is Element | RootElement;
|
|
78
|
+
/**
|
|
79
|
+
* Checks whether the object is of type {@link module:engine/model/rootelement~RootElement}.
|
|
80
|
+
*
|
|
81
|
+
* ```ts
|
|
82
|
+
* rootElement.is( 'rootElement' ); // -> true
|
|
83
|
+
* rootElement.is( 'element' ); // -> true
|
|
84
|
+
* rootElement.is( 'node' ); // -> true
|
|
85
|
+
* rootElement.is( 'model:rootElement' ); // -> true
|
|
86
|
+
* rootElement.is( 'model:element' ); // -> true
|
|
87
|
+
* rootElement.is( 'model:node' ); // -> true
|
|
88
|
+
*
|
|
89
|
+
* rootElement.is( 'view:element' ); // -> false
|
|
90
|
+
* rootElement.is( 'documentFragment' ); // -> false
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* Assuming that the object being checked is an element, you can also check its
|
|
94
|
+
* {@link module:engine/model/element~Element#name name}:
|
|
95
|
+
*
|
|
96
|
+
* ```ts
|
|
97
|
+
* rootElement.is( 'rootElement', '$root' ); // -> same as above
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @label ROOT_ELEMENT
|
|
101
|
+
*/
|
|
102
|
+
is(type: 'rootElement' | 'model:rootElement'): this is RootElement;
|
|
103
|
+
/**
|
|
104
|
+
* Checks whether the object is of type {@link module:engine/model/text~Text}.
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* text.is( '$text' ); // -> true
|
|
108
|
+
* text.is( 'node' ); // -> true
|
|
109
|
+
* text.is( 'model:$text' ); // -> true
|
|
110
|
+
* text.is( 'model:node' ); // -> true
|
|
111
|
+
*
|
|
112
|
+
* text.is( 'view:$text' ); // -> false
|
|
113
|
+
* text.is( 'documentSelection' ); // -> false
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* **Note:** Until version 20.0.0 this method wasn't accepting `'$text'` type. The legacy `'text'` type is still
|
|
117
|
+
* accepted for backward compatibility.
|
|
118
|
+
*
|
|
119
|
+
* @label TEXT
|
|
120
|
+
*/
|
|
121
|
+
is(type: '$text' | 'model:$text'): this is Text;
|
|
122
|
+
/**
|
|
123
|
+
* Checks whether the object is of type {@link module:engine/model/position~Position} or its subclass.
|
|
124
|
+
*
|
|
125
|
+
* ```ts
|
|
126
|
+
* position.is( 'position' ); // -> true
|
|
127
|
+
* position.is( 'model:position' ); // -> true
|
|
128
|
+
*
|
|
129
|
+
* position.is( 'view:position' ); // -> false
|
|
130
|
+
* position.is( 'documentSelection' ); // -> false
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @label POSITION
|
|
134
|
+
*/
|
|
135
|
+
is(type: 'position' | 'model:position'): this is Position | LivePosition;
|
|
136
|
+
/**
|
|
137
|
+
* Checks whether the object is of type {@link module:engine/model/liveposition~LivePosition}.
|
|
138
|
+
*
|
|
139
|
+
* ```ts
|
|
140
|
+
* livePosition.is( 'position' ); // -> true
|
|
141
|
+
* livePosition.is( 'model:position' ); // -> true
|
|
142
|
+
* livePosition.is( 'liveposition' ); // -> true
|
|
143
|
+
* livePosition.is( 'model:livePosition' ); // -> true
|
|
144
|
+
*
|
|
145
|
+
* livePosition.is( 'view:position' ); // -> false
|
|
146
|
+
* livePosition.is( 'documentSelection' ); // -> false
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @label LIVE_POSITION
|
|
150
|
+
*/
|
|
151
|
+
is(type: 'livePosition' | 'model:livePosition'): this is LivePosition;
|
|
152
|
+
/**
|
|
153
|
+
* Checks whether the object is of type {@link module:engine/model/range~Range} or its subclass.
|
|
154
|
+
*
|
|
155
|
+
* ```ts
|
|
156
|
+
* range.is( 'range' ); // -> true
|
|
157
|
+
* range.is( 'model:range' ); // -> true
|
|
158
|
+
*
|
|
159
|
+
* range.is( 'view:range' ); // -> false
|
|
160
|
+
* range.is( 'documentSelection' ); // -> false
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @label RANGE
|
|
164
|
+
*/
|
|
165
|
+
is(type: 'range' | 'model:range'): this is Range | LiveRange;
|
|
166
|
+
/**
|
|
167
|
+
* Checks whether the object is of type {@link module:engine/model/liverange~LiveRange}.
|
|
168
|
+
*
|
|
169
|
+
* ```ts
|
|
170
|
+
* liveRange.is( 'range' ); // -> true
|
|
171
|
+
* liveRange.is( 'model:range' ); // -> true
|
|
172
|
+
* liveRange.is( 'liveRange' ); // -> true
|
|
173
|
+
* liveRange.is( 'model:liveRange' ); // -> true
|
|
174
|
+
*
|
|
175
|
+
* liveRange.is( 'view:range' ); // -> false
|
|
176
|
+
* liveRange.is( 'documentSelection' ); // -> false
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @label LIVE_RANGE
|
|
180
|
+
*/
|
|
181
|
+
is(type: 'liveRange' | 'model:liveRange'): this is LiveRange;
|
|
182
|
+
/**
|
|
183
|
+
* Checks whether the object is of type {@link module:engine/model/documentfragment~DocumentFragment}.
|
|
184
|
+
*
|
|
185
|
+
* ```ts
|
|
186
|
+
* docFrag.is( 'documentFragment' ); // -> true
|
|
187
|
+
* docFrag.is( 'model:documentFragment' ); // -> true
|
|
188
|
+
*
|
|
189
|
+
* docFrag.is( 'view:documentFragment' ); // -> false
|
|
190
|
+
* docFrag.is( 'element' ); // -> false
|
|
191
|
+
* docFrag.is( 'node' ); // -> false
|
|
192
|
+
* ```
|
|
193
|
+
*
|
|
194
|
+
* @label DOCUMENT_FRAGMENT
|
|
195
|
+
*/
|
|
196
|
+
is(type: 'documentFragment' | 'model:documentFragment'): this is DocumentFragment;
|
|
197
|
+
/**
|
|
198
|
+
* Checks whether the object is of type {@link module:engine/model/selection~Selection}
|
|
199
|
+
* or {@link module:engine/model/documentselection~DocumentSelection}.
|
|
200
|
+
*
|
|
201
|
+
* ```ts
|
|
202
|
+
* selection.is( 'selection' ); // -> true
|
|
203
|
+
* selection.is( 'model:selection' ); // -> true
|
|
204
|
+
*
|
|
205
|
+
* selection.is( 'view:selection' ); // -> false
|
|
206
|
+
* selection.is( 'range' ); // -> false
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* @label SELECTION
|
|
210
|
+
*/
|
|
211
|
+
is(type: 'selection' | 'model:selection'): this is Selection | DocumentSelection;
|
|
212
|
+
/**
|
|
213
|
+
* Checks whether the object is of type {@link module:engine/model/documentselection~DocumentSelection}.
|
|
214
|
+
*
|
|
215
|
+
* ```ts
|
|
216
|
+
* selection.is( 'selection' ); // -> true
|
|
217
|
+
* selection.is( 'documentSelection' ); // -> true
|
|
218
|
+
* selection.is( 'model:selection' ); // -> true
|
|
219
|
+
* selection.is( 'model:documentSelection' ); // -> true
|
|
220
|
+
*
|
|
221
|
+
* selection.is( 'view:selection' ); // -> false
|
|
222
|
+
* selection.is( 'element' ); // -> false
|
|
223
|
+
* selection.is( 'node' ); // -> false
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* @label DOCUMENT_SELECTION
|
|
227
|
+
*/
|
|
228
|
+
is(type: 'documentSelection' | 'model:documentSelection'): this is DocumentSelection;
|
|
229
|
+
/**
|
|
230
|
+
* Checks whether the object is of type {@link module:engine/model/markercollection~Marker}.
|
|
231
|
+
*
|
|
232
|
+
* ```ts
|
|
233
|
+
* marker.is( 'marker' ); // -> true
|
|
234
|
+
* marker.is( 'model:marker' ); // -> true
|
|
235
|
+
*
|
|
236
|
+
* marker.is( 'view:element' ); // -> false
|
|
237
|
+
* marker.is( 'documentSelection' ); // -> false
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @label MARKER
|
|
241
|
+
*/
|
|
242
|
+
is(type: 'marker' | 'model:marker'): this is Marker;
|
|
243
|
+
/**
|
|
244
|
+
* Checks whether the object is of type {@link module:engine/model/textproxy~TextProxy}.
|
|
245
|
+
*
|
|
246
|
+
* ```ts
|
|
247
|
+
* textProxy.is( '$textProxy' ); // -> true
|
|
248
|
+
* textProxy.is( 'model:$textProxy' ); // -> true
|
|
249
|
+
*
|
|
250
|
+
* textProxy.is( 'view:$textProxy' ); // -> false
|
|
251
|
+
* textProxy.is( 'range' ); // -> false
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* **Note:** Until version 20.0.0 this method wasn't accepting `'$textProxy'` type. The legacy `'textProxt'` type is still
|
|
255
|
+
* accepted for backward compatibility.
|
|
256
|
+
*
|
|
257
|
+
* @label TEXT_PROXY
|
|
258
|
+
*/
|
|
259
|
+
is(type: '$textProxy' | 'model:$textProxy'): this is TextProxy;
|
|
260
|
+
/**
|
|
261
|
+
* Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass and has the specified `name`.
|
|
262
|
+
*
|
|
263
|
+
* ```ts
|
|
264
|
+
* element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
|
|
265
|
+
* text.is( 'element', 'imageBlock' ); -> false
|
|
266
|
+
* ```
|
|
267
|
+
*
|
|
268
|
+
* @label ELEMENT_NAME
|
|
269
|
+
*/
|
|
270
|
+
is<N extends string>(type: 'element' | 'model:element', name: N): this is (Element | RootElement) & {
|
|
271
|
+
name: N;
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* Checks whether the object is of type {@link module:engine/model/rootelement~RootElement} and has the specified `name`.
|
|
275
|
+
*
|
|
276
|
+
* ```ts
|
|
277
|
+
* rootElement.is( 'rootElement', '$root' );
|
|
278
|
+
* ```
|
|
279
|
+
*
|
|
280
|
+
* @label ROOT_ELEMENT_NAME
|
|
281
|
+
*/
|
|
282
|
+
is<N extends string>(type: 'rootElement' | 'model:rootElement', name: N): this is RootElement & {
|
|
283
|
+
name: N;
|
|
284
|
+
};
|
|
285
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
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
|
-
export default class TypeCheckable {
|
|
6
|
-
/* istanbul ignore next -- @preserve */
|
|
7
|
-
is() {
|
|
8
|
-
// There are a lot of overloads above.
|
|
9
|
-
// Overriding method in derived classes remove them and only `is( type: string ): boolean` is visible which we don't want.
|
|
10
|
-
// One option would be to copy them all to all classes, but that's ugly.
|
|
11
|
-
// It's best when TypeScript compiler doesn't see those overloads, except the one in the top base class.
|
|
12
|
-
// To overload a method, but not let the compiler see it, do after class definition:
|
|
13
|
-
// `MyClass.prototype.is = function( type: string ) {...}`
|
|
14
|
-
throw new Error('is() method is abstract');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
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
|
+
export default class TypeCheckable {
|
|
6
|
+
/* istanbul ignore next -- @preserve */
|
|
7
|
+
is() {
|
|
8
|
+
// There are a lot of overloads above.
|
|
9
|
+
// Overriding method in derived classes remove them and only `is( type: string ): boolean` is visible which we don't want.
|
|
10
|
+
// One option would be to copy them all to all classes, but that's ugly.
|
|
11
|
+
// It's best when TypeScript compiler doesn't see those overloads, except the one in the top base class.
|
|
12
|
+
// To overload a method, but not let the compiler see it, do after class definition:
|
|
13
|
+
// `MyClass.prototype.is = function( type: string ) {...}`
|
|
14
|
+
throw new Error('is() method is abstract');
|
|
15
|
+
}
|
|
16
|
+
}
|