@ckeditor/ckeditor5-engine 36.0.0 → 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 (201) 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/datatransfer.js +24 -27
  107. package/src/view/document.d.ts +184 -0
  108. package/src/view/document.js +15 -84
  109. package/src/view/documentfragment.d.ts +150 -0
  110. package/src/view/documentfragment.js +40 -81
  111. package/src/view/documentselection.d.ts +219 -0
  112. package/src/view/documentselection.js +75 -121
  113. package/src/view/domconverter.d.ts +620 -0
  114. package/src/view/domconverter.js +159 -276
  115. package/src/view/downcastwriter.d.ts +804 -0
  116. package/src/view/downcastwriter.js +336 -380
  117. package/src/view/editableelement.d.ts +52 -0
  118. package/src/view/editableelement.js +9 -49
  119. package/src/view/element.d.ts +466 -0
  120. package/src/view/element.js +150 -222
  121. package/src/view/elementdefinition.d.ts +87 -0
  122. package/src/view/emptyelement.d.ts +41 -0
  123. package/src/view/emptyelement.js +11 -44
  124. package/src/view/filler.d.ts +111 -0
  125. package/src/view/filler.js +24 -21
  126. package/src/view/item.d.ts +14 -0
  127. package/src/view/matcher.d.ts +486 -0
  128. package/src/view/matcher.js +247 -218
  129. package/src/view/node.d.ts +160 -0
  130. package/src/view/node.js +26 -100
  131. package/src/view/observer/arrowkeysobserver.d.ts +41 -0
  132. package/src/view/observer/arrowkeysobserver.js +0 -13
  133. package/src/view/observer/bubblingemittermixin.d.ts +166 -0
  134. package/src/view/observer/bubblingemittermixin.js +36 -25
  135. package/src/view/observer/bubblingeventinfo.d.ts +47 -0
  136. package/src/view/observer/bubblingeventinfo.js +3 -29
  137. package/src/view/observer/clickobserver.d.ts +43 -0
  138. package/src/view/observer/clickobserver.js +9 -19
  139. package/src/view/observer/compositionobserver.d.ts +82 -0
  140. package/src/view/observer/compositionobserver.js +13 -42
  141. package/src/view/observer/domeventdata.d.ts +50 -0
  142. package/src/view/observer/domeventdata.js +5 -30
  143. package/src/view/observer/domeventobserver.d.ts +69 -0
  144. package/src/view/observer/domeventobserver.js +19 -21
  145. package/src/view/observer/fakeselectionobserver.d.ts +46 -0
  146. package/src/view/observer/fakeselectionobserver.js +2 -15
  147. package/src/view/observer/focusobserver.d.ts +82 -0
  148. package/src/view/observer/focusobserver.js +14 -40
  149. package/src/view/observer/inputobserver.d.ts +86 -0
  150. package/src/view/observer/inputobserver.js +18 -64
  151. package/src/view/observer/keyobserver.d.ts +67 -0
  152. package/src/view/observer/keyobserver.js +8 -42
  153. package/src/view/observer/mouseobserver.d.ts +89 -0
  154. package/src/view/observer/mouseobserver.js +8 -28
  155. package/src/view/observer/mutationobserver.d.ts +82 -0
  156. package/src/view/observer/mutationobserver.js +7 -37
  157. package/src/view/observer/observer.d.ts +84 -0
  158. package/src/view/observer/observer.js +12 -25
  159. package/src/view/observer/selectionobserver.d.ts +143 -0
  160. package/src/view/observer/selectionobserver.js +9 -99
  161. package/src/view/observer/tabobserver.d.ts +42 -0
  162. package/src/view/observer/tabobserver.js +0 -14
  163. package/src/view/placeholder.d.ts +85 -0
  164. package/src/view/placeholder.js +26 -43
  165. package/src/view/position.d.ts +189 -0
  166. package/src/view/position.js +36 -83
  167. package/src/view/range.d.ts +279 -0
  168. package/src/view/range.js +79 -122
  169. package/src/view/rawelement.d.ts +73 -0
  170. package/src/view/rawelement.js +34 -48
  171. package/src/view/renderer.d.ts +265 -0
  172. package/src/view/renderer.js +105 -193
  173. package/src/view/rooteditableelement.d.ts +41 -0
  174. package/src/view/rooteditableelement.js +12 -40
  175. package/src/view/selection.d.ts +375 -0
  176. package/src/view/selection.js +79 -153
  177. package/src/view/styles/background.d.ts +33 -0
  178. package/src/view/styles/background.js +14 -12
  179. package/src/view/styles/border.d.ts +43 -0
  180. package/src/view/styles/border.js +58 -48
  181. package/src/view/styles/margin.d.ts +29 -0
  182. package/src/view/styles/margin.js +13 -11
  183. package/src/view/styles/padding.d.ts +29 -0
  184. package/src/view/styles/padding.js +13 -11
  185. package/src/view/styles/utils.d.ts +93 -0
  186. package/src/view/styles/utils.js +22 -48
  187. package/src/view/stylesmap.d.ts +675 -0
  188. package/src/view/stylesmap.js +249 -244
  189. package/src/view/text.d.ts +74 -0
  190. package/src/view/text.js +16 -46
  191. package/src/view/textproxy.d.ts +97 -0
  192. package/src/view/textproxy.js +10 -59
  193. package/src/view/treewalker.d.ts +195 -0
  194. package/src/view/treewalker.js +43 -106
  195. package/src/view/typecheckable.d.ts +401 -0
  196. package/src/view/uielement.d.ts +96 -0
  197. package/src/view/uielement.js +28 -62
  198. package/src/view/upcastwriter.d.ts +328 -0
  199. package/src/view/upcastwriter.js +124 -134
  200. package/src/view/view.d.ts +327 -0
  201. package/src/view/view.js +79 -150
@@ -39,133 +39,58 @@ export default class DomConverter {
39
39
  /**
40
40
  * Creates a DOM converter.
41
41
  *
42
- * @param {module:engine/view/document~Document} document The view document instance.
43
- * @param {Object} options An object with configuration options.
44
- * @param {module:engine/view/filler~BlockFillerMode} [options.blockFillerMode] The type of the block filler to use.
42
+ * @param document The view document instance.
43
+ * @param options An object with configuration options.
44
+ * @param options.blockFillerMode The type of the block filler to use.
45
45
  * Default value depends on the options.renderingMode:
46
46
  * 'nbsp' when options.renderingMode == 'data',
47
47
  * 'br' when options.renderingMode == 'editing'.
48
- * @param {'data'|'editing'} [options.renderingMode='editing'] Whether to leave the View-to-DOM conversion result unchanged
48
+ * @param options.renderingMode Whether to leave the View-to-DOM conversion result unchanged
49
49
  * or improve editing experience by filtering out interactive data.
50
50
  */
51
- constructor(document, options = {}) {
52
- /**
53
- * @readonly
54
- * @type {module:engine/view/document~Document}
55
- */
56
- this.document = document;
57
- /**
58
- * Whether to leave the View-to-DOM conversion result unchanged or improve editing experience by filtering out interactive data.
59
- *
60
- * @member {'data'|'editing'} module:engine/view/domconverter~DomConverter#renderingMode
61
- */
62
- this.renderingMode = options.renderingMode || 'editing';
63
- /**
64
- * The mode of a block filler used by the DOM converter.
65
- *
66
- * @member {'br'|'nbsp'|'markedNbsp'} module:engine/view/domconverter~DomConverter#blockFillerMode
67
- */
68
- this.blockFillerMode = options.blockFillerMode || (this.renderingMode === 'editing' ? 'br' : 'nbsp');
69
- /**
70
- * Elements which are considered pre-formatted elements.
71
- *
72
- * @readonly
73
- * @member {Array.<String>} module:engine/view/domconverter~DomConverter#preElements
74
- */
75
- this.preElements = ['pre'];
76
- /**
77
- * Elements which are considered block elements (and hence should be filled with a
78
- * {@link #isBlockFiller block filler}).
79
- *
80
- * Whether an element is considered a block element also affects handling of trailing whitespaces.
81
- *
82
- * You can extend this array if you introduce support for block elements which are not yet recognized here.
83
- *
84
- * @readonly
85
- * @member {Array.<String>} module:engine/view/domconverter~DomConverter#blockElements
86
- */
87
- this.blockElements = [
88
- 'address', 'article', 'aside', 'blockquote', 'caption', 'center', 'dd', 'details', 'dir', 'div',
89
- 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header',
90
- 'hgroup', 'legend', 'li', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'summary', 'table', 'tbody',
91
- 'td', 'tfoot', 'th', 'thead', 'tr', 'ul'
92
- ];
93
- /**
94
- * A list of elements that exist inline (in text) but their inner structure cannot be edited because
95
- * of the way they are rendered by the browser. They are mostly HTML form elements but there are other
96
- * elements such as `<img>` or `<iframe>` that also have non-editable children or no children whatsoever.
97
- *
98
- * Whether an element is considered an inline object has an impact on white space rendering (trimming)
99
- * around (and inside of it). In short, white spaces in text nodes next to inline objects are not trimmed.
100
- *
101
- * You can extend this array if you introduce support for inline object elements which are not yet recognized here.
102
- *
103
- * @readonly
104
- * @member {Array.<String>} module:engine/view/domconverter~DomConverter#inlineObjectElements
105
- */
106
- this.inlineObjectElements = [
107
- 'object', 'iframe', 'input', 'button', 'textarea', 'select', 'option', 'video', 'embed', 'audio', 'img', 'canvas'
108
- ];
109
- /**
110
- * A list of elements which may affect the editing experience. To avoid this, those elements are replaced with
111
- * `<span data-ck-unsafe-element="[element name]"></span>` while rendering in the editing mode.
112
- *
113
- * @readonly
114
- * @member {Array.<String>} module:engine/view/domconverter~DomConverter#unsafeElements
115
- */
116
- this.unsafeElements = ['script', 'style'];
117
- /**
118
- * The DOM Document used to create DOM nodes.
119
- *
120
- * @type {Document}
121
- * @private
122
- */
123
- this._domDocument = this.renderingMode === 'editing' ? global.document : global.document.implementation.createHTMLDocument('');
51
+ constructor(document, { blockFillerMode, renderingMode = 'editing' } = {}) {
124
52
  /**
125
53
  * The DOM-to-view mapping.
126
- *
127
- * @private
128
- * @member {WeakMap} module:engine/view/domconverter~DomConverter#_domToViewMapping
129
54
  */
130
55
  this._domToViewMapping = new WeakMap();
131
56
  /**
132
57
  * The view-to-DOM mapping.
133
- *
134
- * @private
135
- * @member {WeakMap} module:engine/view/domconverter~DomConverter#_viewToDomMapping
136
58
  */
137
59
  this._viewToDomMapping = new WeakMap();
138
60
  /**
139
61
  * Holds the mapping between fake selection containers and corresponding view selections.
140
- *
141
- * @private
142
- * @member {WeakMap} module:engine/view/domconverter~DomConverter#_fakeSelectionMapping
143
62
  */
144
63
  this._fakeSelectionMapping = new WeakMap();
145
64
  /**
146
65
  * Matcher for view elements whose content should be treated as raw data
147
66
  * and not processed during the conversion from DOM nodes to view elements.
148
- *
149
- * @private
150
- * @type {module:engine/view/matcher~Matcher}
151
67
  */
152
68
  this._rawContentElementMatcher = new Matcher();
153
69
  /**
154
70
  * A set of encountered raw content DOM nodes. It is used for preventing left trimming of the following text node.
155
- *
156
- * @private
157
- * @type {WeakSet.<Node>}
158
71
  */
159
72
  this._encounteredRawContentDomNodes = new WeakSet();
73
+ this.document = document;
74
+ this.renderingMode = renderingMode;
75
+ this.blockFillerMode = blockFillerMode || (renderingMode === 'editing' ? 'br' : 'nbsp');
76
+ this.preElements = ['pre'];
77
+ this.blockElements = [
78
+ 'address', 'article', 'aside', 'blockquote', 'caption', 'center', 'dd', 'details', 'dir', 'div',
79
+ 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header',
80
+ 'hgroup', 'legend', 'li', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'summary', 'table', 'tbody',
81
+ 'td', 'tfoot', 'th', 'thead', 'tr', 'ul'
82
+ ];
83
+ this.inlineObjectElements = [
84
+ 'object', 'iframe', 'input', 'button', 'textarea', 'select', 'option', 'video', 'embed', 'audio', 'img', 'canvas'
85
+ ];
86
+ this.unsafeElements = ['script', 'style'];
87
+ this._domDocument = this.renderingMode === 'editing' ? global.document : global.document.implementation.createHTMLDocument('');
160
88
  }
161
89
  /**
162
90
  * Binds a given DOM element that represents fake selection to a **position** of a
163
91
  * {@link module:engine/view/documentselection~DocumentSelection document selection}.
164
92
  * Document selection copy is stored and can be retrieved by the
165
93
  * {@link module:engine/view/domconverter~DomConverter#fakeSelectionToView} method.
166
- *
167
- * @param {HTMLElement} domElement
168
- * @param {module:engine/view/documentselection~DocumentSelection} viewDocumentSelection
169
94
  */
170
95
  bindFakeSelection(domElement, viewDocumentSelection) {
171
96
  this._fakeSelectionMapping.set(domElement, new ViewSelection(viewDocumentSelection));
@@ -173,9 +98,6 @@ export default class DomConverter {
173
98
  /**
174
99
  * Returns a {@link module:engine/view/selection~Selection view selection} instance corresponding to a given
175
100
  * DOM element that represents fake selection. Returns `undefined` if binding to the given DOM element does not exist.
176
- *
177
- * @param {HTMLElement} domElement
178
- * @returns {module:engine/view/selection~Selection|undefined}
179
101
  */
180
102
  fakeSelectionToView(domElement) {
181
103
  return this._fakeSelectionMapping.get(domElement);
@@ -185,8 +107,8 @@ export default class DomConverter {
185
107
  * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and
186
108
  * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.
187
109
  *
188
- * @param {HTMLElement} domElement The DOM element to bind.
189
- * @param {module:engine/view/element~Element} viewElement The view element to bind.
110
+ * @param domElement The DOM element to bind.
111
+ * @param viewElement The view element to bind.
190
112
  */
191
113
  bindElements(domElement, viewElement) {
192
114
  this._domToViewMapping.set(domElement, viewElement);
@@ -196,7 +118,7 @@ export default class DomConverter {
196
118
  * Unbinds a given DOM element from the view element it was bound to. Unbinding is deep, meaning that all children of
197
119
  * the DOM element will be unbound too.
198
120
  *
199
- * @param {HTMLElement} domElement The DOM element to unbind.
121
+ * @param domElement The DOM element to unbind.
200
122
  */
201
123
  unbindDomElement(domElement) {
202
124
  const viewElement = this._domToViewMapping.get(domElement);
@@ -213,8 +135,8 @@ export default class DomConverter {
213
135
  * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and
214
136
  * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.
215
137
  *
216
- * @param {DocumentFragment} domFragment The DOM document fragment to bind.
217
- * @param {module:engine/view/documentfragment~DocumentFragment} viewFragment The view document fragment to bind.
138
+ * @param domFragment The DOM document fragment to bind.
139
+ * @param viewFragment The view document fragment to bind.
218
140
  */
219
141
  bindDocumentFragments(domFragment, viewFragment) {
220
142
  this._domToViewMapping.set(domFragment, viewFragment);
@@ -223,10 +145,7 @@ export default class DomConverter {
223
145
  /**
224
146
  * Decides whether a given pair of attribute key and value should be passed further down the pipeline.
225
147
  *
226
- * @param {String} attributeKey
227
- * @param {String} attributeValue
228
- * @param {String} elementName Element name in lower case.
229
- * @returns {Boolean}
148
+ * @param elementName Element name in lower case.
230
149
  */
231
150
  shouldRenderAttribute(attributeKey, attributeValue, elementName) {
232
151
  if (this.renderingMode === 'data') {
@@ -255,8 +174,8 @@ export default class DomConverter {
255
174
  /**
256
175
  * Set `domElement`'s content using provided `html` argument. Apply necessary filtering for the editing pipeline.
257
176
  *
258
- * @param {Element} domElement DOM element that should have `html` set as its content.
259
- * @param {String} html Textual representation of the HTML that will be set on `domElement`.
177
+ * @param domElement DOM element that should have `html` set as its content.
178
+ * @param html Textual representation of the HTML that will be set on `domElement`.
260
179
  */
261
180
  setContentOf(domElement, html) {
262
181
  // For data pipeline we pass the HTML as-is.
@@ -299,12 +218,11 @@ export default class DomConverter {
299
218
  * Converts the view to the DOM. For all text nodes, not bound elements and document fragments new items will
300
219
  * be created. For bound elements and document fragments the method will return corresponding items.
301
220
  *
302
- * @param {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment} viewNode
303
- * View node or document fragment to transform.
304
- * @param {Object} [options] Conversion options.
305
- * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.
306
- * @param {Boolean} [options.withChildren=true] If `true`, node's and document fragment's children will be converted too.
307
- * @returns {Node|DocumentFragment} Converted node or DocumentFragment.
221
+ * @param viewNode View node or document fragment to transform.
222
+ * @param options Conversion options.
223
+ * @param options.bind Determines whether new elements will be bound.
224
+ * @param options.withChildren If `false`, node's and document fragment's children will not be converted.
225
+ * @returns Converted node or DocumentFragment.
308
226
  */
309
227
  viewToDom(viewNode, options = {}) {
310
228
  if (viewNode.is('$text')) {
@@ -374,10 +292,10 @@ export default class DomConverter {
374
292
  *
375
293
  * **Note**: To remove the attribute, use {@link #removeDomElementAttribute}.
376
294
  *
377
- * @param {HTMLElement} domElement The DOM element the attribute should be set on.
378
- * @param {String} key The name of the attribute.
379
- * @param {String} value The value of the attribute.
380
- * @param {module:engine/view/element~Element} [relatedViewElement] The view element related to the `domElement` (if there is any).
295
+ * @param domElement The DOM element the attribute should be set on.
296
+ * @param key The name of the attribute.
297
+ * @param value The value of the attribute.
298
+ * @param relatedViewElement The view element related to the `domElement` (if there is any).
381
299
  * It helps decide whether the attribute set is unsafe. For instance, view elements created via the
382
300
  * {@link module:engine/view/downcastwriter~DowncastWriter} methods can allow certain attributes that would normally be filtered out.
383
301
  */
@@ -404,8 +322,8 @@ export default class DomConverter {
404
322
  *
405
323
  * **Note**: To set the attribute, use {@link #setDomElementAttribute}.
406
324
  *
407
- * @param {HTMLElement} domElement The DOM element the attribute should be removed from.
408
- * @param {String} key The name of the attribute.
325
+ * @param domElement The DOM element the attribute should be removed from.
326
+ * @param key The name of the attribute.
409
327
  */
410
328
  removeDomElementAttribute(domElement, key) {
411
329
  // See #_createReplacementDomElement() to learn what this is.
@@ -421,9 +339,9 @@ export default class DomConverter {
421
339
  * {@link module:engine/view/domconverter~DomConverter#viewToDom} method.
422
340
  * Additionally, this method adds block {@link module:engine/view/filler filler} to the list of children, if needed.
423
341
  *
424
- * @param {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment} viewElement Parent view element.
425
- * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#viewToDom} options parameter.
426
- * @returns {Iterable.<Node>} DOM nodes.
342
+ * @param viewElement Parent view element.
343
+ * @param options See {@link module:engine/view/domconverter~DomConverter#viewToDom} options parameter.
344
+ * @returns DOM nodes.
427
345
  */
428
346
  *viewChildrenToDom(viewElement, options = {}) {
429
347
  const fillerPositionOffset = viewElement.getFillerOffset && viewElement.getFillerOffset();
@@ -459,8 +377,8 @@ export default class DomConverter {
459
377
  * Converts view {@link module:engine/view/range~Range} to DOM range.
460
378
  * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.
461
379
  *
462
- * @param {module:engine/view/range~Range} viewRange View range.
463
- * @returns {Range} DOM range.
380
+ * @param viewRange View range.
381
+ * @returns DOM range.
464
382
  */
465
383
  viewRangeToDom(viewRange) {
466
384
  const domStart = this.viewPositionToDom(viewRange.start);
@@ -476,10 +394,11 @@ export default class DomConverter {
476
394
  * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.
477
395
  * If the converted position is directly before inline filler it is moved inside the filler.
478
396
  *
479
- * @param {module:engine/view/position~Position} viewPosition View position.
480
- * @returns {Object|null} position DOM position or `null` if view position could not be converted to DOM.
481
- * @returns {Node} position.parent DOM position parent.
482
- * @returns {Number} position.offset DOM position offset.
397
+ * @param viewPosition View position.
398
+ * @returns DOM position or `null` if view position could not be converted to DOM.
399
+ * DOM position has two properties:
400
+ * * `parent` - DOM position parent.
401
+ * * `offset` - DOM position offset.
483
402
  */
484
403
  viewPositionToDom(viewPosition) {
485
404
  const viewParent = viewPosition.parent;
@@ -533,15 +452,15 @@ export default class DomConverter {
533
452
  * {@link module:engine/view/filler fillers} `null` will be returned.
534
453
  * For all DOM elements rendered by {@link module:engine/view/uielement~UIElement} that UIElement will be returned.
535
454
  *
536
- * @param {Node|DocumentFragment} domNode DOM node or document fragment to transform.
537
- * @param {Object} [options] Conversion options.
538
- * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.
539
- * @param {Boolean} [options.withChildren=true] If `true`, node's and document fragment's children will be converted too.
540
- * @param {Boolean} [options.keepOriginalCase=false] If `false`, node's tag name will be converted to lower case.
541
- * @param {Boolean} [options.skipComments=false] If `false`, comment nodes will be converted to `$comment`
542
- * {@link module:engine/view/uielement~UIElement view UI elements}.
543
- * @returns {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment|null} Converted node or document fragment
544
- * or `null` if DOM node is a {@link module:engine/view/filler filler} or the given node is an empty text node.
455
+ * @param domNode DOM node or document fragment to transform.
456
+ * @param options Conversion options.
457
+ * @param options.bind Determines whether new elements will be bound. False by default.
458
+ * @param options.withChildren If `true`, node's and document fragment's children will be converted too. True by default.
459
+ * @param options.keepOriginalCase If `false`, node's tag name will be converted to lower case. False by default.
460
+ * @param options.skipComments If `false`, comment nodes will be converted to `$comment`
461
+ * {@link module:engine/view/uielement~UIElement view UI elements}. False by default.
462
+ * @returns Converted node or document fragment or `null` if DOM node is a {@link module:engine/view/filler filler}
463
+ * or the given node is an empty text node.
545
464
  */
546
465
  domToView(domNode, options = {}) {
547
466
  if (this.isBlockFiller(domNode)) {
@@ -612,9 +531,9 @@ export default class DomConverter {
612
531
  * the {@link module:engine/view/domconverter~DomConverter#domToView} method.
613
532
  * Additionally this method omits block {@link module:engine/view/filler filler}, if it exists in the DOM parent.
614
533
  *
615
- * @param {HTMLElement} domElement Parent DOM element.
616
- * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
617
- * @returns {Iterable.<module:engine/view/node~Node>} View nodes.
534
+ * @param domElement Parent DOM element.
535
+ * @param options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
536
+ * @returns View nodes.
618
537
  */
619
538
  *domChildrenToView(domElement, options) {
620
539
  for (let i = 0; i < domElement.childNodes.length; i++) {
@@ -629,8 +548,8 @@ export default class DomConverter {
629
548
  * Converts DOM selection to view {@link module:engine/view/selection~Selection}.
630
549
  * Ranges which cannot be converted will be omitted.
631
550
  *
632
- * @param {Selection} domSelection DOM selection.
633
- * @returns {module:engine/view/selection~Selection} View selection.
551
+ * @param domSelection DOM selection.
552
+ * @returns View selection.
634
553
  */
635
554
  domSelectionToView(domSelection) {
636
555
  // DOM selection might be placed in fake selection container.
@@ -662,8 +581,8 @@ export default class DomConverter {
662
581
  * Converts DOM Range to view {@link module:engine/view/range~Range}.
663
582
  * If the start or end position can not be converted `null` is returned.
664
583
  *
665
- * @param {Range} domRange DOM range.
666
- * @returns {module:engine/view/range~Range|null} View range.
584
+ * @param domRange DOM range.
585
+ * @returns View range.
667
586
  */
668
587
  domRangeToView(domRange) {
669
588
  const viewStart = this.domPositionToView(domRange.startContainer, domRange.startOffset);
@@ -684,9 +603,9 @@ export default class DomConverter {
684
603
  *
685
604
  * If structures are too different and it is not possible to find corresponding position then `null` will be returned.
686
605
  *
687
- * @param {Node} domParent DOM position parent.
688
- * @param {Number} [domOffset=0] DOM position offset. You can skip it when converting the inline filler node.
689
- * @returns {module:engine/view/position~Position} viewPosition View position.
606
+ * @param domParent DOM position parent.
607
+ * @param domOffset DOM position offset. You can skip it when converting the inline filler node.
608
+ * @returns View position.
690
609
  */
691
610
  domPositionToView(domParent, domOffset = 0) {
692
611
  if (this.isBlockFiller(domParent)) {
@@ -745,9 +664,8 @@ export default class DomConverter {
745
664
  * For all DOM elements rendered by a {@link module:engine/view/uielement~UIElement} or
746
665
  * a {@link module:engine/view/rawelement~RawElement}, the parent `UIElement` or `RawElement` will be returned.
747
666
  *
748
- * @param {DocumentFragment|Element} domElementOrDocumentFragment DOM element or document fragment.
749
- * @returns {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment|undefined}
750
- * Corresponding view element, document fragment or `undefined` if no element was bound.
667
+ * @param domElementOrDocumentFragment DOM element or document fragment.
668
+ * @returns Corresponding view element, document fragment or `undefined` if no element was bound.
751
669
  */
752
670
  mapDomToView(domElementOrDocumentFragment) {
753
671
  const hostElement = this.getHostViewElement(domElementOrDocumentFragment);
@@ -770,9 +688,8 @@ export default class DomConverter {
770
688
  *
771
689
  * Note that for the block or inline {@link module:engine/view/filler filler} this method returns `null`.
772
690
  *
773
- * @param {Text} domText DOM text node.
774
- * @returns {module:engine/view/text~Text|null} Corresponding view text node or `null`, if it was not possible to find a
775
- * corresponding node.
691
+ * @param domText DOM text node.
692
+ * @returns Corresponding view text node or `null`, if it was not possible to find a corresponding node.
776
693
  */
777
694
  findCorrespondingViewText(domText) {
778
695
  if (isInlineFiller(domText)) {
@@ -824,9 +741,8 @@ export default class DomConverter {
824
741
  * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}
825
742
  * use {@link #findCorrespondingDomText}.
826
743
  *
827
- * @param {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment} viewNode
828
- * View element or document fragment.
829
- * @returns {Node|DocumentFragment|undefined} Corresponding DOM node or document fragment.
744
+ * @param documentFragmentOrElement View element or document fragment.
745
+ * @returns Corresponding DOM node or document fragment.
830
746
  */
831
747
  mapViewToDom(documentFragmentOrElement) {
832
748
  return this._viewToDomMapping.get(documentFragmentOrElement);
@@ -843,8 +759,8 @@ export default class DomConverter {
843
759
  *
844
760
  * Otherwise `null` is returned.
845
761
  *
846
- * @param {module:engine/view/text~Text} viewText View text node.
847
- * @returns {Text|null} Corresponding DOM text node or `null`, if it was not possible to find a corresponding node.
762
+ * @param viewText View text node.
763
+ * @returns Corresponding DOM text node or `null`, if it was not possible to find a corresponding node.
848
764
  */
849
765
  findCorrespondingDomText(viewText) {
850
766
  const previousSibling = viewText.previousSibling;
@@ -860,8 +776,6 @@ export default class DomConverter {
860
776
  }
861
777
  /**
862
778
  * Focuses DOM editable that is corresponding to provided {@link module:engine/view/editableelement~EditableElement}.
863
- *
864
- * @param {module:engine/view/editableelement~EditableElement} viewEditable
865
779
  */
866
780
  focus(viewEditable) {
867
781
  const domEditable = this.mapViewToDom(viewEditable);
@@ -893,8 +807,7 @@ export default class DomConverter {
893
807
  /**
894
808
  * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.
895
809
  *
896
- * @param {Node} node Node to check.
897
- * @returns {Boolean}
810
+ * @param node Node to check.
898
811
  */
899
812
  isElement(node) {
900
813
  return node && node.nodeType == Node.ELEMENT_NODE;
@@ -902,8 +815,7 @@ export default class DomConverter {
902
815
  /**
903
816
  * Returns `true` when `node.nodeType` equals `Node.DOCUMENT_FRAGMENT_NODE`.
904
817
  *
905
- * @param {Node} node Node to check.
906
- * @returns {Boolean}
818
+ * @param node Node to check.
907
819
  */
908
820
  isDocumentFragment(node) {
909
821
  return node && node.nodeType == Node.DOCUMENT_FRAGMENT_NODE;
@@ -911,17 +823,19 @@ export default class DomConverter {
911
823
  /**
912
824
  * Checks if the node is an instance of the block filler for this DOM converter.
913
825
  *
914
- * const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
826
+ * ```ts
827
+ * const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
915
828
  *
916
- * converter.isBlockFiller( BR_FILLER( document ) ); // true
917
- * converter.isBlockFiller( NBSP_FILLER( document ) ); // false
829
+ * converter.isBlockFiller( BR_FILLER( document ) ); // true
830
+ * converter.isBlockFiller( NBSP_FILLER( document ) ); // false
831
+ * ```
918
832
  *
919
833
  * **Note:**: For the `'nbsp'` mode the method also checks context of a node so it cannot be a detached node.
920
834
  *
921
835
  * **Note:** A special case in the `'nbsp'` mode exists where the `<br>` in `<p><br></p>` is treated as a block filler.
922
836
  *
923
- * @param {Node} domNode DOM node to check.
924
- * @returns {Boolean} True if a node is considered a block filler for given mode.
837
+ * @param domNode DOM node to check.
838
+ * @returns True if a node is considered a block filler for given mode.
925
839
  */
926
840
  isBlockFiller(domNode) {
927
841
  if (this.blockFillerMode == 'br') {
@@ -939,8 +853,7 @@ export default class DomConverter {
939
853
  /**
940
854
  * Returns `true` if given selection is a backward selection, that is, if it's `focus` is before `anchor`.
941
855
  *
942
- * @param {Selection} DOM Selection instance to check.
943
- * @returns {Boolean}
856
+ * @param DOM Selection instance to check.
944
857
  */
945
858
  isDomSelectionBackward(selection) {
946
859
  if (selection.isCollapsed) {
@@ -965,9 +878,6 @@ export default class DomConverter {
965
878
  /**
966
879
  * Returns a parent {@link module:engine/view/uielement~UIElement} or {@link module:engine/view/rawelement~RawElement}
967
880
  * that hosts the provided DOM node. Returns `null` if there is no such parent.
968
- *
969
- * @param {Node} domNode
970
- * @returns {module:engine/view/uielement~UIElement|module:engine/view/rawelement~RawElement|null}
971
881
  */
972
882
  getHostViewElement(domNode) {
973
883
  const ancestors = getAncestors(domNode);
@@ -991,8 +901,8 @@ export default class DomConverter {
991
901
  * * inside a DOM element which represents {@link module:engine/view/uielement~UIElement a view UI element},
992
902
  * * inside a DOM element which represents {@link module:engine/view/rawelement~RawElement a view raw element}.
993
903
  *
994
- * @param {Selection} domSelection The DOM selection object to be checked.
995
- * @returns {Boolean} `true` if the given selection is at a correct place, `false` otherwise.
904
+ * @param domSelection The DOM selection object to be checked.
905
+ * @returns `true` if the given selection is at a correct place, `false` otherwise.
996
906
  */
997
907
  isDomSelectionCorrect(domSelection) {
998
908
  return this._isDomSelectionPositionCorrect(domSelection.anchorNode, domSelection.anchorOffset) &&
@@ -1008,7 +918,7 @@ export default class DomConverter {
1008
918
  * The raw data can be later accessed by a
1009
919
  * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `"$rawContent"`.
1010
920
  *
1011
- * @param {module:engine/view/matcher~MatcherPattern} pattern Pattern matching a view element whose content should
921
+ * @param pattern Pattern matching a view element whose content should
1012
922
  * be treated as raw data.
1013
923
  */
1014
924
  registerRawContentMatcher(pattern) {
@@ -1016,9 +926,6 @@ export default class DomConverter {
1016
926
  }
1017
927
  /**
1018
928
  * Returns the block {@link module:engine/view/filler filler} node based on the current {@link #blockFillerMode} setting.
1019
- *
1020
- * @private
1021
- * @returns {Node} filler
1022
929
  */
1023
930
  _getBlockFiller() {
1024
931
  switch (this.blockFillerMode) {
@@ -1033,10 +940,9 @@ export default class DomConverter {
1033
940
  /**
1034
941
  * Checks if the given DOM position is a correct place for selection boundary. See {@link #isDomSelectionCorrect}.
1035
942
  *
1036
- * @private
1037
- * @param {Element} domParent Position parent.
1038
- * @param {Number} offset Position offset.
1039
- * @returns {Boolean} `true` if given position is at a correct place for selection boundary, `false` otherwise.
943
+ * @param domParent Position parent.
944
+ * @param offset Position offset.
945
+ * @returns `true` if given position is at a correct place for selection boundary, `false` otherwise.
1040
946
  */
1041
947
  _isDomSelectionPositionCorrect(domParent, offset) {
1042
948
  // If selection is before or in the middle of inline filler string, it is incorrect.
@@ -1071,9 +977,8 @@ export default class DomConverter {
1071
977
  *
1072
978
  * Content of {@link #preElements} is not processed.
1073
979
  *
1074
- * @private
1075
- * @param {module:engine/view/text~Text} node View text node to process.
1076
- * @returns {String} Processed text data.
980
+ * @param node View text node to process.
981
+ * @returns Processed text data.
1077
982
  */
1078
983
  _processDataFromViewText(node) {
1079
984
  let data = node.data;
@@ -1113,9 +1018,8 @@ export default class DomConverter {
1113
1018
  /**
1114
1019
  * Checks whether given node ends with a space character after changing appropriate space characters to `&nbsp;`s.
1115
1020
  *
1116
- * @private
1117
- * @param {module:engine/view/text~Text} node Node to check.
1118
- * @returns {Boolean} `true` if given `node` ends with space, `false` otherwise.
1021
+ * @param node Node to check.
1022
+ * @returns `true` if given `node` ends with space, `false` otherwise.
1119
1023
  */
1120
1024
  _nodeEndsWithSpace(node) {
1121
1025
  if (node.getAncestors().some(parent => this.preElements.includes(parent.name))) {
@@ -1136,9 +1040,8 @@ export default class DomConverter {
1136
1040
  * starts with a space or if it is the last text node in its container
1137
1041
  * * nbsps are converted to spaces.
1138
1042
  *
1139
- * @param {Node} node DOM text node to process.
1140
- * @returns {String} Processed data.
1141
- * @private
1043
+ * @param node DOM text node to process.
1044
+ * @returns Processed data.
1142
1045
  */
1143
1046
  _processDataFromDomText(node) {
1144
1047
  let data = node.data;
@@ -1195,9 +1098,7 @@ export default class DomConverter {
1195
1098
  * Helper function which checks if a DOM text node, preceded by the given `prevNode` should
1196
1099
  * be trimmed from the left side.
1197
1100
  *
1198
- * @private
1199
- * @param {Node} node
1200
- * @param {Node} prevNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1101
+ * @param prevNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1201
1102
  */
1202
1103
  _checkShouldLeftTrimDomText(node, prevNode) {
1203
1104
  if (!prevNode) {
@@ -1216,9 +1117,7 @@ export default class DomConverter {
1216
1117
  * Helper function which checks if a DOM text node, succeeded by the given `nextNode` should
1217
1118
  * be trimmed from the right side.
1218
1119
  *
1219
- * @private
1220
- * @param {Node} node
1221
- * @param {Node} nextNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1120
+ * @param nextNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1222
1121
  */
1223
1122
  _checkShouldRightTrimDomText(node, nextNode) {
1224
1123
  if (nextNode) {
@@ -1230,10 +1129,8 @@ export default class DomConverter {
1230
1129
  * Helper function. For given {@link module:engine/view/text~Text view text node}, it finds previous or next sibling
1231
1130
  * that is contained in the same container element. If there is no such sibling, `null` is returned.
1232
1131
  *
1233
- * @private
1234
- * @param {module:engine/view/text~Text} node Reference node.
1235
- * @param {Boolean} getNext
1236
- * @returns {module:engine/view/text~Text|module:engine/view/element~Element|null} Touching text node, an inline object
1132
+ * @param node Reference node.
1133
+ * @returns Touching text node, an inline object
1237
1134
  * or `null` if there is no next or previous touching text node.
1238
1135
  */
1239
1136
  _getTouchingInlineViewNode(node, getNext) {
@@ -1270,7 +1167,9 @@ export default class DomConverter {
1270
1167
  *
1271
1168
  * For instance, in the following DOM structure:
1272
1169
  *
1273
- * <p>foo<b>bar</b><br>bom</p>
1170
+ * ```html
1171
+ * <p>foo<b>bar</b><br>bom</p>
1172
+ * ```
1274
1173
  *
1275
1174
  * * `foo` doesn't have its previous touching inline node (`null` is returned),
1276
1175
  * * `foo`'s next touching inline node is `bar`
@@ -1278,11 +1177,6 @@ export default class DomConverter {
1278
1177
  *
1279
1178
  * This method returns text nodes and `<br>` elements because these types of nodes affect how
1280
1179
  * spaces in the given text node need to be converted.
1281
- *
1282
- * @private
1283
- * @param {Text} node
1284
- * @param {Boolean} getNext
1285
- * @returns {Text|Element|null}
1286
1180
  */
1287
1181
  _getTouchingInlineDomNode(node, getNext) {
1288
1182
  if (!node.parentNode) {
@@ -1312,20 +1206,12 @@ export default class DomConverter {
1312
1206
  }
1313
1207
  /**
1314
1208
  * Returns `true` if a DOM node belongs to {@link #blockElements}. `false` otherwise.
1315
- *
1316
- * @private
1317
- * @param {Node} node
1318
- * @returns {Boolean}
1319
1209
  */
1320
1210
  _isBlockElement(node) {
1321
1211
  return this.isElement(node) && this.blockElements.includes(node.tagName.toLowerCase());
1322
1212
  }
1323
1213
  /**
1324
1214
  * Returns `true` if a DOM node belongs to {@link #inlineObjectElements}. `false` otherwise.
1325
- *
1326
- * @private
1327
- * @param {Node} node
1328
- * @returns {Boolean}
1329
1215
  */
1330
1216
  _isInlineObjectElement(node) {
1331
1217
  return this.isElement(node) && this.inlineObjectElements.includes(node.tagName.toLowerCase());
@@ -1333,10 +1219,8 @@ export default class DomConverter {
1333
1219
  /**
1334
1220
  * Creates view element basing on the node type.
1335
1221
  *
1336
- * @private
1337
- * @param {Node} node DOM node to check.
1338
- * @param {Object} options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1339
- * @returns {Element}
1222
+ * @param node DOM node to check.
1223
+ * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1340
1224
  */
1341
1225
  _createViewElement(node, options) {
1342
1226
  if (isComment(node)) {
@@ -1348,10 +1232,8 @@ export default class DomConverter {
1348
1232
  /**
1349
1233
  * Checks if view element's content should be treated as a raw data.
1350
1234
  *
1351
- * @private
1352
- * @param {Element} viewElement View element to check.
1353
- * @param {Object} options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1354
- * @returns {Boolean}
1235
+ * @param viewElement View element to check.
1236
+ * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1355
1237
  */
1356
1238
  _isViewElementWithRawContent(viewElement, options) {
1357
1239
  return options.withChildren !== false && !!this._rawContentElementMatcher.match(viewElement);
@@ -1359,9 +1241,7 @@ export default class DomConverter {
1359
1241
  /**
1360
1242
  * Checks whether a given element name should be renamed in a current rendering mode.
1361
1243
  *
1362
- * @private
1363
- * @param {String} elementName The name of view element.
1364
- * @returns {Boolean}
1244
+ * @param elementName The name of view element.
1365
1245
  */
1366
1246
  _shouldRenameElement(elementName) {
1367
1247
  const name = elementName.toLowerCase();
@@ -1371,10 +1251,8 @@ export default class DomConverter {
1371
1251
  * Return a <span> element with a special attribute holding the name of the original element.
1372
1252
  * Optionally, copy all the attributes of the original element if that element is provided.
1373
1253
  *
1374
- * @private
1375
- * @param {String} elementName The name of view element.
1376
- * @param {Element} [originalDomElement] The original DOM element to copy attributes and content from.
1377
- * @returns {Element}
1254
+ * @param elementName The name of view element.
1255
+ * @param originalDomElement The original DOM element to copy attributes and content from.
1378
1256
  */
1379
1257
  _createReplacementDomElement(elementName, originalDomElement) {
1380
1258
  const newDomElement = this._domDocument.createElement('span');
@@ -1391,21 +1269,22 @@ export default class DomConverter {
1391
1269
  return newDomElement;
1392
1270
  }
1393
1271
  }
1394
- // Helper function.
1395
- // Used to check if given native `Element` or `Text` node has parent with tag name from `types` array.
1396
- //
1397
- // @param {Node} node
1398
- // @param {Array.<String>} types
1399
- // @returns {Boolean} `true` if such parent exists or `false` if it does not.
1272
+ /**
1273
+ * Helper function.
1274
+ * Used to check if given native `Element` or `Text` node has parent with tag name from `types` array.
1275
+ *
1276
+ * @returns`true` if such parent exists or `false` if it does not.
1277
+ */
1400
1278
  function _hasDomParentOfType(node, types) {
1401
1279
  const parents = getAncestors(node);
1402
1280
  return parents.some(parent => parent.tagName && types.includes(parent.tagName.toLowerCase()));
1403
1281
  }
1404
- // A helper that executes given callback for each DOM node's ancestor, starting from the given node
1405
- // and ending in document#documentElement.
1406
- //
1407
- // @param {Node} node
1408
- // @param {Function} callback A callback to be executed for each ancestor.
1282
+ /**
1283
+ * A helper that executes given callback for each DOM node's ancestor, starting from the given node
1284
+ * and ending in document#documentElement.
1285
+ *
1286
+ * @param callback A callback to be executed for each ancestor.
1287
+ */
1409
1288
  function forEachDomElementAncestor(element, callback) {
1410
1289
  let node = element;
1411
1290
  while (node) {
@@ -1413,30 +1292,32 @@ function forEachDomElementAncestor(element, callback) {
1413
1292
  node = node.parentElement;
1414
1293
  }
1415
1294
  }
1416
- // Checks if given node is a nbsp block filler.
1417
- //
1418
- // A &nbsp; is a block filler only if it is a single child of a block element.
1419
- //
1420
- // @param {Node} domNode DOM node.
1421
- // @param {Array.<String>} blockElements
1422
- // @returns {Boolean}
1295
+ /**
1296
+ * Checks if given node is a nbsp block filler.
1297
+ *
1298
+ * A &nbsp; is a block filler only if it is a single child of a block element.
1299
+ *
1300
+ * @param domNode DOM node.
1301
+ */
1423
1302
  function isNbspBlockFiller(domNode, blockElements) {
1424
1303
  const isNBSP = domNode.isEqualNode(NBSP_FILLER_REF);
1425
1304
  return isNBSP && hasBlockParent(domNode, blockElements) && domNode.parentNode.childNodes.length === 1;
1426
1305
  }
1427
- // Checks if domNode has block parent.
1428
- //
1429
- // @param {Node} domNode DOM node.
1430
- // @param {Array.<String>} blockElements
1431
- // @returns {Boolean}
1306
+ /**
1307
+ * Checks if domNode has block parent.
1308
+ *
1309
+ * @param domNode DOM node.
1310
+ */
1432
1311
  function hasBlockParent(domNode, blockElements) {
1433
1312
  const parent = domNode.parentNode;
1434
1313
  return !!parent && !!parent.tagName && blockElements.includes(parent.tagName.toLowerCase());
1435
1314
  }
1436
- // Log to console the information about element that was replaced.
1437
- // Check UNSAFE_ELEMENTS for all recognized unsafe elements.
1438
- //
1439
- // @param {String} elementName The name of the view element
1315
+ /**
1316
+ * Log to console the information about element that was replaced.
1317
+ * Check UNSAFE_ELEMENTS for all recognized unsafe elements.
1318
+ *
1319
+ * @param elementName The name of the view element.
1320
+ */
1440
1321
  function _logUnsafeElement(elementName) {
1441
1322
  if (elementName === 'script') {
1442
1323
  logWarning('domconverter-unsafe-script-element-detected');
@@ -1459,31 +1340,33 @@ function _logUnsafeElement(elementName) {
1459
1340
  */
1460
1341
  /**
1461
1342
  * The {@link module:engine/view/domconverter~DomConverter} detected an interactive attribute in the
1462
- * {@glink framework/guides/architecture/editing-engine#editing-pipeline editing pipeline}. For the best
1343
+ * {@glink framework/architecture/editing-engine#editing-pipeline editing pipeline}. For the best
1463
1344
  * editing experience, the attribute was renamed to `data-ck-unsafe-attribute-[original attribute name]`.
1464
1345
  *
1465
1346
  * If you are the author of the plugin that generated this attribute and you want it to be preserved
1466
1347
  * in the editing pipeline, you can configure this when creating the element
1467
1348
  * using {@link module:engine/view/downcastwriter~DowncastWriter} during the
1468
- * {@glink framework/guides/architecture/editing-engine#conversion model–view conversion}. Methods such as
1349
+ * {@glink framework/architecture/editing-engine#conversion model–view conversion}. Methods such as
1469
1350
  * {@link module:engine/view/downcastwriter~DowncastWriter#createContainerElement},
1470
1351
  * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement}, or
1471
1352
  * {@link module:engine/view/downcastwriter~DowncastWriter#createEmptyElement}
1472
1353
  * accept an option that will disable filtering of specific attributes:
1473
1354
  *
1474
- * const paragraph = writer.createContainerElement( 'p',
1475
- * {
1476
- * class: 'clickable-paragraph',
1477
- * onclick: 'alert( "Paragraph clicked!" )'
1478
- * },
1479
- * {
1480
- * // Make sure the "onclick" attribute will pass through.
1481
- * renderUnsafeAttributes: [ 'onclick' ]
1482
- * }
1483
- * );
1355
+ * ```ts
1356
+ * const paragraph = writer.createContainerElement( 'p',
1357
+ * {
1358
+ * class: 'clickable-paragraph',
1359
+ * onclick: 'alert( "Paragraph clicked!" )'
1360
+ * },
1361
+ * {
1362
+ * // Make sure the "onclick" attribute will pass through.
1363
+ * renderUnsafeAttributes: [ 'onclick' ]
1364
+ * }
1365
+ * );
1366
+ * ```
1484
1367
  *
1485
1368
  * @error domconverter-unsafe-attribute-detected
1486
- * @param {HTMLElement} domElement The DOM element the attribute was set on.
1487
- * @param {String} key The original name of the attribute
1488
- * @param {String} value The value of the original attribute
1369
+ * @param domElement The DOM element the attribute was set on.
1370
+ * @param key The original name of the attribute
1371
+ * @param value The value of the original attribute
1489
1372
  */