@ckeditor/ckeditor5-engine 36.0.1 → 37.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +1 -1
  2. package/package.json +25 -24
  3. package/src/controller/datacontroller.d.ts +331 -0
  4. package/src/controller/datacontroller.js +72 -116
  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 +503 -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 +369 -0
  24. package/src/conversion/viewconsumable.js +139 -173
  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 +108 -0
  42. package/src/index.js +4 -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 +246 -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 +885 -0
  57. package/src/model/model.js +59 -81
  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/mergeoperation.js +1 -1
  66. package/src/model/operation/moveoperation.d.ts +91 -0
  67. package/src/model/operation/nooperation.d.ts +33 -0
  68. package/src/model/operation/operation.d.ts +89 -0
  69. package/src/model/operation/operationfactory.d.ts +18 -0
  70. package/src/model/operation/renameoperation.d.ts +78 -0
  71. package/src/model/operation/rootattributeoperation.d.ts +97 -0
  72. package/src/model/operation/rootattributeoperation.js +1 -1
  73. package/src/model/operation/splitoperation.d.ts +104 -0
  74. package/src/model/operation/splitoperation.js +1 -1
  75. package/src/model/operation/transform.d.ts +100 -0
  76. package/src/model/operation/utils.d.ts +71 -0
  77. package/src/model/operation/utils.js +1 -1
  78. package/src/model/position.d.ts +539 -0
  79. package/src/model/position.js +1 -1
  80. package/src/model/range.d.ts +458 -0
  81. package/src/model/range.js +1 -1
  82. package/src/model/rootelement.d.ts +40 -0
  83. package/src/model/schema.d.ts +1176 -0
  84. package/src/model/schema.js +19 -19
  85. package/src/model/selection.d.ts +472 -0
  86. package/src/model/text.d.ts +66 -0
  87. package/src/model/text.js +0 -2
  88. package/src/model/textproxy.d.ts +144 -0
  89. package/src/model/treewalker.d.ts +186 -0
  90. package/src/model/treewalker.js +19 -10
  91. package/src/model/typecheckable.d.ts +285 -0
  92. package/src/model/utils/autoparagraphing.d.ts +37 -0
  93. package/src/model/utils/deletecontent.d.ts +58 -0
  94. package/src/model/utils/findoptimalinsertionrange.d.ts +32 -0
  95. package/src/model/utils/getselectedcontent.d.ts +30 -0
  96. package/src/model/utils/insertcontent.d.ts +46 -0
  97. package/src/model/utils/insertcontent.js +2 -12
  98. package/src/model/utils/insertobject.d.ts +44 -0
  99. package/src/model/utils/insertobject.js +3 -14
  100. package/src/model/utils/modifyselection.d.ts +48 -0
  101. package/src/model/utils/selection-post-fixer.d.ts +65 -0
  102. package/src/model/writer.d.ts +823 -0
  103. package/src/model/writer.js +6 -61
  104. package/src/view/attributeelement.d.ts +108 -0
  105. package/src/view/attributeelement.js +25 -69
  106. package/src/view/containerelement.d.ts +49 -0
  107. package/src/view/containerelement.js +10 -43
  108. package/src/view/datatransfer.d.ts +75 -0
  109. package/src/view/document.d.ts +184 -0
  110. package/src/view/document.js +15 -84
  111. package/src/view/documentfragment.d.ts +149 -0
  112. package/src/view/documentfragment.js +39 -81
  113. package/src/view/documentselection.d.ts +306 -0
  114. package/src/view/documentselection.js +42 -143
  115. package/src/view/domconverter.d.ts +650 -0
  116. package/src/view/domconverter.js +157 -283
  117. package/src/view/downcastwriter.d.ts +996 -0
  118. package/src/view/downcastwriter.js +259 -426
  119. package/src/view/editableelement.d.ts +52 -0
  120. package/src/view/editableelement.js +9 -49
  121. package/src/view/element.d.ts +468 -0
  122. package/src/view/element.js +150 -222
  123. package/src/view/elementdefinition.d.ts +87 -0
  124. package/src/view/emptyelement.d.ts +41 -0
  125. package/src/view/emptyelement.js +11 -44
  126. package/src/view/filler.d.ts +111 -0
  127. package/src/view/filler.js +24 -21
  128. package/src/view/item.d.ts +14 -0
  129. package/src/view/matcher.d.ts +486 -0
  130. package/src/view/matcher.js +247 -218
  131. package/src/view/node.d.ts +163 -0
  132. package/src/view/node.js +26 -100
  133. package/src/view/observer/arrowkeysobserver.d.ts +41 -0
  134. package/src/view/observer/arrowkeysobserver.js +0 -13
  135. package/src/view/observer/bubblingemittermixin.d.ts +166 -0
  136. package/src/view/observer/bubblingemittermixin.js +36 -25
  137. package/src/view/observer/bubblingeventinfo.d.ts +47 -0
  138. package/src/view/observer/bubblingeventinfo.js +3 -29
  139. package/src/view/observer/clickobserver.d.ts +43 -0
  140. package/src/view/observer/clickobserver.js +9 -19
  141. package/src/view/observer/compositionobserver.d.ts +82 -0
  142. package/src/view/observer/compositionobserver.js +13 -42
  143. package/src/view/observer/domeventdata.d.ts +50 -0
  144. package/src/view/observer/domeventdata.js +5 -30
  145. package/src/view/observer/domeventobserver.d.ts +69 -0
  146. package/src/view/observer/domeventobserver.js +19 -21
  147. package/src/view/observer/fakeselectionobserver.d.ts +43 -0
  148. package/src/view/observer/fakeselectionobserver.js +0 -16
  149. package/src/view/observer/focusobserver.d.ts +82 -0
  150. package/src/view/observer/focusobserver.js +14 -40
  151. package/src/view/observer/inputobserver.d.ts +86 -0
  152. package/src/view/observer/inputobserver.js +18 -64
  153. package/src/view/observer/keyobserver.d.ts +66 -0
  154. package/src/view/observer/keyobserver.js +8 -42
  155. package/src/view/observer/mouseobserver.d.ts +89 -0
  156. package/src/view/observer/mouseobserver.js +8 -28
  157. package/src/view/observer/mutationobserver.d.ts +82 -0
  158. package/src/view/observer/mutationobserver.js +7 -37
  159. package/src/view/observer/observer.d.ts +84 -0
  160. package/src/view/observer/observer.js +12 -25
  161. package/src/view/observer/selectionobserver.d.ts +144 -0
  162. package/src/view/observer/selectionobserver.js +17 -107
  163. package/src/view/observer/tabobserver.d.ts +42 -0
  164. package/src/view/observer/tabobserver.js +0 -14
  165. package/src/view/placeholder.d.ts +85 -0
  166. package/src/view/placeholder.js +26 -43
  167. package/src/view/position.d.ts +189 -0
  168. package/src/view/position.js +36 -83
  169. package/src/view/range.d.ts +279 -0
  170. package/src/view/range.js +79 -122
  171. package/src/view/rawelement.d.ts +73 -0
  172. package/src/view/rawelement.js +34 -48
  173. package/src/view/renderer.d.ts +265 -0
  174. package/src/view/renderer.js +105 -193
  175. package/src/view/rooteditableelement.d.ts +41 -0
  176. package/src/view/rooteditableelement.js +12 -40
  177. package/src/view/selection.d.ts +375 -0
  178. package/src/view/selection.js +79 -153
  179. package/src/view/styles/background.d.ts +33 -0
  180. package/src/view/styles/background.js +14 -12
  181. package/src/view/styles/border.d.ts +43 -0
  182. package/src/view/styles/border.js +58 -48
  183. package/src/view/styles/margin.d.ts +29 -0
  184. package/src/view/styles/margin.js +13 -11
  185. package/src/view/styles/padding.d.ts +29 -0
  186. package/src/view/styles/padding.js +13 -11
  187. package/src/view/styles/utils.d.ts +93 -0
  188. package/src/view/styles/utils.js +22 -48
  189. package/src/view/stylesmap.d.ts +675 -0
  190. package/src/view/stylesmap.js +249 -244
  191. package/src/view/text.d.ts +74 -0
  192. package/src/view/text.js +16 -46
  193. package/src/view/textproxy.d.ts +97 -0
  194. package/src/view/textproxy.js +10 -59
  195. package/src/view/treewalker.d.ts +195 -0
  196. package/src/view/treewalker.js +43 -106
  197. package/src/view/typecheckable.d.ts +448 -0
  198. package/src/view/uielement.d.ts +96 -0
  199. package/src/view/uielement.js +29 -63
  200. package/src/view/upcastwriter.d.ts +417 -0
  201. package/src/view/upcastwriter.js +86 -157
  202. package/src/view/view.d.ts +417 -0
  203. package/src/view/view.js +47 -175
@@ -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)) {
@@ -818,16 +735,6 @@ export default class DomConverter {
818
735
  }
819
736
  return null;
820
737
  }
821
- /**
822
- * Returns corresponding DOM item for provided {@link module:engine/view/element~Element Element} or
823
- * {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment}.
824
- * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}
825
- * use {@link #findCorrespondingDomText}.
826
- *
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.
830
- */
831
738
  mapViewToDom(documentFragmentOrElement) {
832
739
  return this._viewToDomMapping.get(documentFragmentOrElement);
833
740
  }
@@ -843,8 +750,8 @@ export default class DomConverter {
843
750
  *
844
751
  * Otherwise `null` is returned.
845
752
  *
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.
753
+ * @param viewText View text node.
754
+ * @returns Corresponding DOM text node or `null`, if it was not possible to find a corresponding node.
848
755
  */
849
756
  findCorrespondingDomText(viewText) {
850
757
  const previousSibling = viewText.previousSibling;
@@ -860,8 +767,6 @@ export default class DomConverter {
860
767
  }
861
768
  /**
862
769
  * Focuses DOM editable that is corresponding to provided {@link module:engine/view/editableelement~EditableElement}.
863
- *
864
- * @param {module:engine/view/editableelement~EditableElement} viewEditable
865
770
  */
866
771
  focus(viewEditable) {
867
772
  const domEditable = this.mapViewToDom(viewEditable);
@@ -893,8 +798,7 @@ export default class DomConverter {
893
798
  /**
894
799
  * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.
895
800
  *
896
- * @param {Node} node Node to check.
897
- * @returns {Boolean}
801
+ * @param node Node to check.
898
802
  */
899
803
  isElement(node) {
900
804
  return node && node.nodeType == Node.ELEMENT_NODE;
@@ -902,8 +806,7 @@ export default class DomConverter {
902
806
  /**
903
807
  * Returns `true` when `node.nodeType` equals `Node.DOCUMENT_FRAGMENT_NODE`.
904
808
  *
905
- * @param {Node} node Node to check.
906
- * @returns {Boolean}
809
+ * @param node Node to check.
907
810
  */
908
811
  isDocumentFragment(node) {
909
812
  return node && node.nodeType == Node.DOCUMENT_FRAGMENT_NODE;
@@ -911,17 +814,19 @@ export default class DomConverter {
911
814
  /**
912
815
  * Checks if the node is an instance of the block filler for this DOM converter.
913
816
  *
914
- * const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
817
+ * ```ts
818
+ * const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
915
819
  *
916
- * converter.isBlockFiller( BR_FILLER( document ) ); // true
917
- * converter.isBlockFiller( NBSP_FILLER( document ) ); // false
820
+ * converter.isBlockFiller( BR_FILLER( document ) ); // true
821
+ * converter.isBlockFiller( NBSP_FILLER( document ) ); // false
822
+ * ```
918
823
  *
919
824
  * **Note:**: For the `'nbsp'` mode the method also checks context of a node so it cannot be a detached node.
920
825
  *
921
826
  * **Note:** A special case in the `'nbsp'` mode exists where the `<br>` in `<p><br></p>` is treated as a block filler.
922
827
  *
923
- * @param {Node} domNode DOM node to check.
924
- * @returns {Boolean} True if a node is considered a block filler for given mode.
828
+ * @param domNode DOM node to check.
829
+ * @returns True if a node is considered a block filler for given mode.
925
830
  */
926
831
  isBlockFiller(domNode) {
927
832
  if (this.blockFillerMode == 'br') {
@@ -939,8 +844,7 @@ export default class DomConverter {
939
844
  /**
940
845
  * Returns `true` if given selection is a backward selection, that is, if it's `focus` is before `anchor`.
941
846
  *
942
- * @param {Selection} DOM Selection instance to check.
943
- * @returns {Boolean}
847
+ * @param DOM Selection instance to check.
944
848
  */
945
849
  isDomSelectionBackward(selection) {
946
850
  if (selection.isCollapsed) {
@@ -965,9 +869,6 @@ export default class DomConverter {
965
869
  /**
966
870
  * Returns a parent {@link module:engine/view/uielement~UIElement} or {@link module:engine/view/rawelement~RawElement}
967
871
  * 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
872
  */
972
873
  getHostViewElement(domNode) {
973
874
  const ancestors = getAncestors(domNode);
@@ -991,8 +892,8 @@ export default class DomConverter {
991
892
  * * inside a DOM element which represents {@link module:engine/view/uielement~UIElement a view UI element},
992
893
  * * inside a DOM element which represents {@link module:engine/view/rawelement~RawElement a view raw element}.
993
894
  *
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.
895
+ * @param domSelection The DOM selection object to be checked.
896
+ * @returns `true` if the given selection is at a correct place, `false` otherwise.
996
897
  */
997
898
  isDomSelectionCorrect(domSelection) {
998
899
  return this._isDomSelectionPositionCorrect(domSelection.anchorNode, domSelection.anchorOffset) &&
@@ -1008,7 +909,7 @@ export default class DomConverter {
1008
909
  * The raw data can be later accessed by a
1009
910
  * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `"$rawContent"`.
1010
911
  *
1011
- * @param {module:engine/view/matcher~MatcherPattern} pattern Pattern matching a view element whose content should
912
+ * @param pattern Pattern matching a view element whose content should
1012
913
  * be treated as raw data.
1013
914
  */
1014
915
  registerRawContentMatcher(pattern) {
@@ -1016,9 +917,6 @@ export default class DomConverter {
1016
917
  }
1017
918
  /**
1018
919
  * 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
920
  */
1023
921
  _getBlockFiller() {
1024
922
  switch (this.blockFillerMode) {
@@ -1033,10 +931,9 @@ export default class DomConverter {
1033
931
  /**
1034
932
  * Checks if the given DOM position is a correct place for selection boundary. See {@link #isDomSelectionCorrect}.
1035
933
  *
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.
934
+ * @param domParent Position parent.
935
+ * @param offset Position offset.
936
+ * @returns `true` if given position is at a correct place for selection boundary, `false` otherwise.
1040
937
  */
1041
938
  _isDomSelectionPositionCorrect(domParent, offset) {
1042
939
  // If selection is before or in the middle of inline filler string, it is incorrect.
@@ -1071,9 +968,8 @@ export default class DomConverter {
1071
968
  *
1072
969
  * Content of {@link #preElements} is not processed.
1073
970
  *
1074
- * @private
1075
- * @param {module:engine/view/text~Text} node View text node to process.
1076
- * @returns {String} Processed text data.
971
+ * @param node View text node to process.
972
+ * @returns Processed text data.
1077
973
  */
1078
974
  _processDataFromViewText(node) {
1079
975
  let data = node.data;
@@ -1113,9 +1009,8 @@ export default class DomConverter {
1113
1009
  /**
1114
1010
  * Checks whether given node ends with a space character after changing appropriate space characters to `&nbsp;`s.
1115
1011
  *
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.
1012
+ * @param node Node to check.
1013
+ * @returns `true` if given `node` ends with space, `false` otherwise.
1119
1014
  */
1120
1015
  _nodeEndsWithSpace(node) {
1121
1016
  if (node.getAncestors().some(parent => this.preElements.includes(parent.name))) {
@@ -1136,9 +1031,8 @@ export default class DomConverter {
1136
1031
  * starts with a space or if it is the last text node in its container
1137
1032
  * * nbsps are converted to spaces.
1138
1033
  *
1139
- * @param {Node} node DOM text node to process.
1140
- * @returns {String} Processed data.
1141
- * @private
1034
+ * @param node DOM text node to process.
1035
+ * @returns Processed data.
1142
1036
  */
1143
1037
  _processDataFromDomText(node) {
1144
1038
  let data = node.data;
@@ -1195,9 +1089,7 @@ export default class DomConverter {
1195
1089
  * Helper function which checks if a DOM text node, preceded by the given `prevNode` should
1196
1090
  * be trimmed from the left side.
1197
1091
  *
1198
- * @private
1199
- * @param {Node} node
1200
- * @param {Node} prevNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1092
+ * @param prevNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1201
1093
  */
1202
1094
  _checkShouldLeftTrimDomText(node, prevNode) {
1203
1095
  if (!prevNode) {
@@ -1216,9 +1108,7 @@ export default class DomConverter {
1216
1108
  * Helper function which checks if a DOM text node, succeeded by the given `nextNode` should
1217
1109
  * be trimmed from the right side.
1218
1110
  *
1219
- * @private
1220
- * @param {Node} node
1221
- * @param {Node} nextNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1111
+ * @param nextNode Either DOM text or `<br>` or one of `#inlineObjectElements`.
1222
1112
  */
1223
1113
  _checkShouldRightTrimDomText(node, nextNode) {
1224
1114
  if (nextNode) {
@@ -1230,10 +1120,8 @@ export default class DomConverter {
1230
1120
  * Helper function. For given {@link module:engine/view/text~Text view text node}, it finds previous or next sibling
1231
1121
  * that is contained in the same container element. If there is no such sibling, `null` is returned.
1232
1122
  *
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
1123
+ * @param node Reference node.
1124
+ * @returns Touching text node, an inline object
1237
1125
  * or `null` if there is no next or previous touching text node.
1238
1126
  */
1239
1127
  _getTouchingInlineViewNode(node, getNext) {
@@ -1270,7 +1158,9 @@ export default class DomConverter {
1270
1158
  *
1271
1159
  * For instance, in the following DOM structure:
1272
1160
  *
1273
- * <p>foo<b>bar</b><br>bom</p>
1161
+ * ```html
1162
+ * <p>foo<b>bar</b><br>bom</p>
1163
+ * ```
1274
1164
  *
1275
1165
  * * `foo` doesn't have its previous touching inline node (`null` is returned),
1276
1166
  * * `foo`'s next touching inline node is `bar`
@@ -1278,11 +1168,6 @@ export default class DomConverter {
1278
1168
  *
1279
1169
  * This method returns text nodes and `<br>` elements because these types of nodes affect how
1280
1170
  * 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
1171
  */
1287
1172
  _getTouchingInlineDomNode(node, getNext) {
1288
1173
  if (!node.parentNode) {
@@ -1312,20 +1197,12 @@ export default class DomConverter {
1312
1197
  }
1313
1198
  /**
1314
1199
  * Returns `true` if a DOM node belongs to {@link #blockElements}. `false` otherwise.
1315
- *
1316
- * @private
1317
- * @param {Node} node
1318
- * @returns {Boolean}
1319
1200
  */
1320
1201
  _isBlockElement(node) {
1321
1202
  return this.isElement(node) && this.blockElements.includes(node.tagName.toLowerCase());
1322
1203
  }
1323
1204
  /**
1324
1205
  * Returns `true` if a DOM node belongs to {@link #inlineObjectElements}. `false` otherwise.
1325
- *
1326
- * @private
1327
- * @param {Node} node
1328
- * @returns {Boolean}
1329
1206
  */
1330
1207
  _isInlineObjectElement(node) {
1331
1208
  return this.isElement(node) && this.inlineObjectElements.includes(node.tagName.toLowerCase());
@@ -1333,10 +1210,8 @@ export default class DomConverter {
1333
1210
  /**
1334
1211
  * Creates view element basing on the node type.
1335
1212
  *
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}
1213
+ * @param node DOM node to check.
1214
+ * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1340
1215
  */
1341
1216
  _createViewElement(node, options) {
1342
1217
  if (isComment(node)) {
@@ -1348,10 +1223,8 @@ export default class DomConverter {
1348
1223
  /**
1349
1224
  * Checks if view element's content should be treated as a raw data.
1350
1225
  *
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}
1226
+ * @param viewElement View element to check.
1227
+ * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
1355
1228
  */
1356
1229
  _isViewElementWithRawContent(viewElement, options) {
1357
1230
  return options.withChildren !== false && !!this._rawContentElementMatcher.match(viewElement);
@@ -1359,9 +1232,7 @@ export default class DomConverter {
1359
1232
  /**
1360
1233
  * Checks whether a given element name should be renamed in a current rendering mode.
1361
1234
  *
1362
- * @private
1363
- * @param {String} elementName The name of view element.
1364
- * @returns {Boolean}
1235
+ * @param elementName The name of view element.
1365
1236
  */
1366
1237
  _shouldRenameElement(elementName) {
1367
1238
  const name = elementName.toLowerCase();
@@ -1371,10 +1242,8 @@ export default class DomConverter {
1371
1242
  * Return a <span> element with a special attribute holding the name of the original element.
1372
1243
  * Optionally, copy all the attributes of the original element if that element is provided.
1373
1244
  *
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}
1245
+ * @param elementName The name of view element.
1246
+ * @param originalDomElement The original DOM element to copy attributes and content from.
1378
1247
  */
1379
1248
  _createReplacementDomElement(elementName, originalDomElement) {
1380
1249
  const newDomElement = this._domDocument.createElement('span');
@@ -1391,21 +1260,22 @@ export default class DomConverter {
1391
1260
  return newDomElement;
1392
1261
  }
1393
1262
  }
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.
1263
+ /**
1264
+ * Helper function.
1265
+ * Used to check if given native `Element` or `Text` node has parent with tag name from `types` array.
1266
+ *
1267
+ * @returns`true` if such parent exists or `false` if it does not.
1268
+ */
1400
1269
  function _hasDomParentOfType(node, types) {
1401
1270
  const parents = getAncestors(node);
1402
1271
  return parents.some(parent => parent.tagName && types.includes(parent.tagName.toLowerCase()));
1403
1272
  }
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.
1273
+ /**
1274
+ * A helper that executes given callback for each DOM node's ancestor, starting from the given node
1275
+ * and ending in document#documentElement.
1276
+ *
1277
+ * @param callback A callback to be executed for each ancestor.
1278
+ */
1409
1279
  function forEachDomElementAncestor(element, callback) {
1410
1280
  let node = element;
1411
1281
  while (node) {
@@ -1413,30 +1283,32 @@ function forEachDomElementAncestor(element, callback) {
1413
1283
  node = node.parentElement;
1414
1284
  }
1415
1285
  }
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}
1286
+ /**
1287
+ * Checks if given node is a nbsp block filler.
1288
+ *
1289
+ * A &nbsp; is a block filler only if it is a single child of a block element.
1290
+ *
1291
+ * @param domNode DOM node.
1292
+ */
1423
1293
  function isNbspBlockFiller(domNode, blockElements) {
1424
1294
  const isNBSP = domNode.isEqualNode(NBSP_FILLER_REF);
1425
1295
  return isNBSP && hasBlockParent(domNode, blockElements) && domNode.parentNode.childNodes.length === 1;
1426
1296
  }
1427
- // Checks if domNode has block parent.
1428
- //
1429
- // @param {Node} domNode DOM node.
1430
- // @param {Array.<String>} blockElements
1431
- // @returns {Boolean}
1297
+ /**
1298
+ * Checks if domNode has block parent.
1299
+ *
1300
+ * @param domNode DOM node.
1301
+ */
1432
1302
  function hasBlockParent(domNode, blockElements) {
1433
1303
  const parent = domNode.parentNode;
1434
1304
  return !!parent && !!parent.tagName && blockElements.includes(parent.tagName.toLowerCase());
1435
1305
  }
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
1306
+ /**
1307
+ * Log to console the information about element that was replaced.
1308
+ * Check UNSAFE_ELEMENTS for all recognized unsafe elements.
1309
+ *
1310
+ * @param elementName The name of the view element.
1311
+ */
1440
1312
  function _logUnsafeElement(elementName) {
1441
1313
  if (elementName === 'script') {
1442
1314
  logWarning('domconverter-unsafe-script-element-detected');
@@ -1459,31 +1331,33 @@ function _logUnsafeElement(elementName) {
1459
1331
  */
1460
1332
  /**
1461
1333
  * 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
1334
+ * {@glink framework/architecture/editing-engine#editing-pipeline editing pipeline}. For the best
1463
1335
  * editing experience, the attribute was renamed to `data-ck-unsafe-attribute-[original attribute name]`.
1464
1336
  *
1465
1337
  * If you are the author of the plugin that generated this attribute and you want it to be preserved
1466
1338
  * in the editing pipeline, you can configure this when creating the element
1467
1339
  * using {@link module:engine/view/downcastwriter~DowncastWriter} during the
1468
- * {@glink framework/guides/architecture/editing-engine#conversion model–view conversion}. Methods such as
1340
+ * {@glink framework/architecture/editing-engine#conversion model–view conversion}. Methods such as
1469
1341
  * {@link module:engine/view/downcastwriter~DowncastWriter#createContainerElement},
1470
1342
  * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement}, or
1471
1343
  * {@link module:engine/view/downcastwriter~DowncastWriter#createEmptyElement}
1472
1344
  * accept an option that will disable filtering of specific attributes:
1473
1345
  *
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
- * );
1346
+ * ```ts
1347
+ * const paragraph = writer.createContainerElement( 'p',
1348
+ * {
1349
+ * class: 'clickable-paragraph',
1350
+ * onclick: 'alert( "Paragraph clicked!" )'
1351
+ * },
1352
+ * {
1353
+ * // Make sure the "onclick" attribute will pass through.
1354
+ * renderUnsafeAttributes: [ 'onclick' ]
1355
+ * }
1356
+ * );
1357
+ * ```
1484
1358
  *
1485
1359
  * @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
1360
+ * @param domElement The DOM element the attribute was set on.
1361
+ * @param key The original name of the attribute
1362
+ * @param value The value of the original attribute
1489
1363
  */