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