@ckeditor/ckeditor5-engine 38.2.0-alpha.1 → 39.0.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 (212) hide show
  1. package/README.md +0 -1
  2. package/package.json +3 -4
  3. package/src/controller/datacontroller.d.ts +15 -15
  4. package/src/controller/datacontroller.js +11 -11
  5. package/src/controller/editingcontroller.d.ts +7 -7
  6. package/src/controller/editingcontroller.js +8 -8
  7. package/src/conversion/conversion.d.ts +6 -6
  8. package/src/conversion/conversion.js +2 -2
  9. package/src/conversion/downcastdispatcher.d.ts +28 -13
  10. package/src/conversion/downcastdispatcher.js +30 -21
  11. package/src/conversion/downcasthelpers.d.ts +21 -21
  12. package/src/conversion/downcasthelpers.js +11 -11
  13. package/src/conversion/mapper.d.ts +9 -9
  14. package/src/conversion/mapper.js +5 -5
  15. package/src/conversion/modelconsumable.d.ts +5 -5
  16. package/src/conversion/modelconsumable.js +1 -1
  17. package/src/conversion/upcastdispatcher.d.ts +12 -12
  18. package/src/conversion/upcastdispatcher.js +5 -5
  19. package/src/conversion/upcasthelpers.d.ts +9 -9
  20. package/src/conversion/upcasthelpers.js +3 -3
  21. package/src/conversion/viewconsumable.d.ts +5 -5
  22. package/src/dataprocessor/basichtmlwriter.d.ts +1 -1
  23. package/src/dataprocessor/dataprocessor.d.ts +2 -2
  24. package/src/dataprocessor/htmldataprocessor.d.ts +6 -6
  25. package/src/dataprocessor/htmldataprocessor.js +2 -2
  26. package/src/dataprocessor/xmldataprocessor.d.ts +6 -6
  27. package/src/dataprocessor/xmldataprocessor.js +2 -2
  28. package/src/dev-utils/model.d.ts +10 -10
  29. package/src/dev-utils/model.js +16 -16
  30. package/src/dev-utils/operationreplayer.d.ts +2 -2
  31. package/src/dev-utils/operationreplayer.js +1 -1
  32. package/src/dev-utils/view.d.ts +8 -8
  33. package/src/dev-utils/view.js +15 -15
  34. package/src/index.d.ts +107 -106
  35. package/src/index.js +65 -64
  36. package/src/model/batch.d.ts +1 -1
  37. package/src/model/differ.d.ts +19 -5
  38. package/src/model/differ.js +72 -13
  39. package/src/model/document.d.ts +18 -12
  40. package/src/model/document.js +18 -13
  41. package/src/model/documentfragment.d.ts +4 -4
  42. package/src/model/documentfragment.js +5 -5
  43. package/src/model/documentselection.d.ts +8 -8
  44. package/src/model/documentselection.js +8 -5
  45. package/src/model/element.d.ts +2 -2
  46. package/src/model/element.js +4 -4
  47. package/src/model/history.d.ts +1 -1
  48. package/src/model/item.d.ts +2 -2
  49. package/src/model/liveposition.d.ts +4 -4
  50. package/src/model/liveposition.js +1 -1
  51. package/src/model/liverange.d.ts +5 -5
  52. package/src/model/liverange.js +1 -1
  53. package/src/model/markercollection.d.ts +4 -4
  54. package/src/model/markercollection.js +2 -2
  55. package/src/model/model.d.ts +14 -15
  56. package/src/model/model.js +18 -19
  57. package/src/model/node.d.ts +5 -5
  58. package/src/model/node.js +2 -2
  59. package/src/model/nodelist.d.ts +1 -1
  60. package/src/model/nodelist.js +1 -1
  61. package/src/model/operation/attributeoperation.d.ts +4 -4
  62. package/src/model/operation/attributeoperation.js +3 -3
  63. package/src/model/operation/detachoperation.d.ts +3 -3
  64. package/src/model/operation/detachoperation.js +3 -3
  65. package/src/model/operation/insertoperation.d.ts +6 -6
  66. package/src/model/operation/insertoperation.js +7 -7
  67. package/src/model/operation/markeroperation.d.ts +5 -5
  68. package/src/model/operation/markeroperation.js +2 -2
  69. package/src/model/operation/mergeoperation.d.ts +5 -5
  70. package/src/model/operation/mergeoperation.js +5 -5
  71. package/src/model/operation/moveoperation.d.ts +4 -4
  72. package/src/model/operation/moveoperation.js +4 -4
  73. package/src/model/operation/nooperation.d.ts +2 -2
  74. package/src/model/operation/nooperation.js +1 -1
  75. package/src/model/operation/operation.d.ts +3 -3
  76. package/src/model/operation/operationfactory.d.ts +2 -2
  77. package/src/model/operation/operationfactory.js +11 -11
  78. package/src/model/operation/renameoperation.d.ts +4 -4
  79. package/src/model/operation/renameoperation.js +3 -3
  80. package/src/model/operation/rootattributeoperation.d.ts +4 -4
  81. package/src/model/operation/rootattributeoperation.js +1 -1
  82. package/src/model/operation/rootoperation.d.ts +3 -7
  83. package/src/model/operation/rootoperation.js +1 -25
  84. package/src/model/operation/splitoperation.d.ts +5 -5
  85. package/src/model/operation/splitoperation.js +5 -5
  86. package/src/model/operation/transform.d.ts +2 -2
  87. package/src/model/operation/transform.js +14 -14
  88. package/src/model/operation/utils.d.ts +6 -6
  89. package/src/model/operation/utils.js +4 -4
  90. package/src/model/position.d.ts +14 -14
  91. package/src/model/position.js +3 -3
  92. package/src/model/range.d.ts +12 -12
  93. package/src/model/range.js +3 -3
  94. package/src/model/rootelement.d.ts +8 -2
  95. package/src/model/rootelement.js +7 -1
  96. package/src/model/schema.d.ts +9 -9
  97. package/src/model/schema.js +10 -5
  98. package/src/model/selection.d.ts +7 -7
  99. package/src/model/selection.js +4 -4
  100. package/src/model/text.d.ts +1 -1
  101. package/src/model/text.js +1 -1
  102. package/src/model/textproxy.d.ts +5 -5
  103. package/src/model/textproxy.js +1 -1
  104. package/src/model/treewalker.d.ts +3 -3
  105. package/src/model/treewalker.js +4 -4
  106. package/src/model/typecheckable.d.ts +13 -13
  107. package/src/model/utils/autoparagraphing.d.ts +4 -4
  108. package/src/model/utils/autoparagraphing.js +1 -2
  109. package/src/model/utils/deletecontent.d.ts +3 -3
  110. package/src/model/utils/deletecontent.js +3 -3
  111. package/src/model/utils/findoptimalinsertionrange.d.ts +4 -4
  112. package/src/model/utils/getselectedcontent.d.ts +4 -4
  113. package/src/model/utils/insertcontent.d.ts +6 -6
  114. package/src/model/utils/insertcontent.js +6 -6
  115. package/src/model/utils/insertobject.d.ts +5 -5
  116. package/src/model/utils/insertobject.js +1 -1
  117. package/src/model/utils/modifyselection.d.ts +3 -3
  118. package/src/model/utils/modifyselection.js +4 -4
  119. package/src/model/utils/selection-post-fixer.d.ts +3 -3
  120. package/src/model/utils/selection-post-fixer.js +2 -2
  121. package/src/model/writer.d.ts +12 -12
  122. package/src/model/writer.js +17 -17
  123. package/src/view/attributeelement.d.ts +3 -3
  124. package/src/view/attributeelement.js +1 -1
  125. package/src/view/containerelement.d.ts +3 -3
  126. package/src/view/containerelement.js +1 -1
  127. package/src/view/document.d.ts +4 -4
  128. package/src/view/document.js +2 -2
  129. package/src/view/documentfragment.d.ts +4 -4
  130. package/src/view/documentfragment.js +3 -3
  131. package/src/view/documentselection.d.ts +8 -8
  132. package/src/view/documentselection.js +2 -2
  133. package/src/view/domconverter.d.ts +19 -13
  134. package/src/view/domconverter.js +28 -10
  135. package/src/view/downcastwriter.d.ts +17 -17
  136. package/src/view/downcastwriter.js +11 -11
  137. package/src/view/editableelement.d.ts +14 -4
  138. package/src/view/editableelement.js +2 -1
  139. package/src/view/element.d.ts +5 -5
  140. package/src/view/element.js +5 -5
  141. package/src/view/emptyelement.d.ts +4 -4
  142. package/src/view/emptyelement.js +2 -2
  143. package/src/view/filler.d.ts +1 -1
  144. package/src/view/item.d.ts +2 -2
  145. package/src/view/matcher.d.ts +1 -1
  146. package/src/view/node.d.ts +5 -5
  147. package/src/view/node.js +2 -2
  148. package/src/view/observer/arrowkeysobserver.d.ts +4 -4
  149. package/src/view/observer/arrowkeysobserver.js +2 -2
  150. package/src/view/observer/bubblingemittermixin.d.ts +2 -2
  151. package/src/view/observer/bubblingemittermixin.js +1 -1
  152. package/src/view/observer/bubblingeventinfo.d.ts +3 -3
  153. package/src/view/observer/clickobserver.d.ts +3 -3
  154. package/src/view/observer/clickobserver.js +1 -1
  155. package/src/view/observer/compositionobserver.d.ts +3 -3
  156. package/src/view/observer/compositionobserver.js +1 -1
  157. package/src/view/observer/domeventdata.d.ts +3 -3
  158. package/src/view/observer/domeventobserver.d.ts +1 -1
  159. package/src/view/observer/domeventobserver.js +2 -2
  160. package/src/view/observer/fakeselectionobserver.d.ts +2 -2
  161. package/src/view/observer/fakeselectionobserver.js +2 -2
  162. package/src/view/observer/focusobserver.d.ts +3 -3
  163. package/src/view/observer/focusobserver.js +1 -1
  164. package/src/view/observer/inputobserver.d.ts +4 -4
  165. package/src/view/observer/inputobserver.js +2 -2
  166. package/src/view/observer/keyobserver.d.ts +2 -2
  167. package/src/view/observer/keyobserver.js +1 -1
  168. package/src/view/observer/mouseobserver.d.ts +2 -2
  169. package/src/view/observer/mouseobserver.js +1 -1
  170. package/src/view/observer/mutationobserver.d.ts +4 -4
  171. package/src/view/observer/mutationobserver.js +2 -2
  172. package/src/view/observer/observer.d.ts +2 -2
  173. package/src/view/observer/selectionobserver.d.ts +7 -7
  174. package/src/view/observer/selectionobserver.js +5 -5
  175. package/src/view/observer/tabobserver.d.ts +4 -4
  176. package/src/view/observer/tabobserver.js +2 -2
  177. package/src/view/placeholder.d.ts +16 -8
  178. package/src/view/placeholder.js +21 -12
  179. package/src/view/position.d.ts +7 -7
  180. package/src/view/position.js +4 -4
  181. package/src/view/range.d.ts +7 -7
  182. package/src/view/range.js +3 -3
  183. package/src/view/rawelement.d.ts +5 -5
  184. package/src/view/rawelement.js +2 -2
  185. package/src/view/renderer.d.ts +5 -5
  186. package/src/view/renderer.js +4 -5
  187. package/src/view/rooteditableelement.d.ts +2 -2
  188. package/src/view/rooteditableelement.js +1 -1
  189. package/src/view/selection.d.ts +8 -8
  190. package/src/view/selection.js +5 -5
  191. package/src/view/styles/background.d.ts +1 -1
  192. package/src/view/styles/background.js +1 -1
  193. package/src/view/styles/border.d.ts +1 -1
  194. package/src/view/styles/border.js +1 -1
  195. package/src/view/styles/margin.d.ts +1 -1
  196. package/src/view/styles/margin.js +1 -1
  197. package/src/view/styles/padding.d.ts +1 -1
  198. package/src/view/styles/padding.js +1 -1
  199. package/src/view/styles/utils.d.ts +1 -1
  200. package/src/view/text.d.ts +2 -2
  201. package/src/view/text.js +1 -1
  202. package/src/view/textproxy.d.ts +6 -6
  203. package/src/view/textproxy.js +1 -1
  204. package/src/view/treewalker.d.ts +3 -3
  205. package/src/view/treewalker.js +4 -4
  206. package/src/view/typecheckable.d.ts +16 -16
  207. package/src/view/uielement.d.ts +6 -6
  208. package/src/view/uielement.js +2 -2
  209. package/src/view/upcastwriter.d.ts +9 -9
  210. package/src/view/upcastwriter.js +6 -6
  211. package/src/view/view.d.ts +26 -19
  212. package/src/view/view.js +31 -19
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * @module engine/model/utils/selection-post-fixer
7
7
  */
8
- import Position from '../position.js';
9
- import Range from '../range.js';
8
+ import Position from '../position';
9
+ import Range from '../range';
10
10
  /**
11
11
  * Injects selection post-fixer to the model.
12
12
  *
@@ -2,18 +2,18 @@
2
2
  * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
4
  */
5
- import DocumentFragment from './documentfragment.js';
6
- import Element from './element.js';
7
- import Position, { type PositionOffset, type PositionStickiness } from './position.js';
8
- import Range from './range.js';
9
- import RootElement from './rootelement.js';
10
- import Text from './text.js';
11
- import type { Marker } from './markercollection.js';
12
- import type { default as Selection, PlaceOrOffset, Selectable } from './selection.js';
13
- import type Batch from './batch.js';
14
- import type Item from './item.js';
15
- import type Model from './model.js';
16
- import type { default as Node, NodeAttributes } from './node.js';
5
+ import DocumentFragment from './documentfragment';
6
+ import Element from './element';
7
+ import Position, { type PositionOffset, type PositionStickiness } from './position';
8
+ import Range from './range';
9
+ import RootElement from './rootelement';
10
+ import Text from './text';
11
+ import type { Marker } from './markercollection';
12
+ import type { default as Selection, PlaceOrOffset, Selectable } from './selection';
13
+ import type Batch from './batch';
14
+ import type Item from './item';
15
+ import type Model from './model';
16
+ import type { default as Node, NodeAttributes } from './node';
17
17
  /**
18
18
  * The model can only be modified by using the writer. It should be used whenever you want to create a node, modify
19
19
  * child nodes, attributes or text, set the selection's position and its attributes.
@@ -5,23 +5,23 @@
5
5
  /**
6
6
  * @module engine/model/writer
7
7
  */
8
- import AttributeOperation from './operation/attributeoperation.js';
9
- import DetachOperation from './operation/detachoperation.js';
10
- import InsertOperation from './operation/insertoperation.js';
11
- import MarkerOperation from './operation/markeroperation.js';
12
- import MergeOperation from './operation/mergeoperation.js';
13
- import MoveOperation from './operation/moveoperation.js';
14
- import RenameOperation from './operation/renameoperation.js';
15
- import RootAttributeOperation from './operation/rootattributeoperation.js';
16
- import RootOperation from './operation/rootoperation.js';
17
- import SplitOperation from './operation/splitoperation.js';
18
- import DocumentFragment from './documentfragment.js';
19
- import DocumentSelection from './documentselection.js';
20
- import Element from './element.js';
21
- import Position from './position.js';
22
- import Range from './range.js';
23
- import RootElement from './rootelement.js';
24
- import Text from './text.js';
8
+ import AttributeOperation from './operation/attributeoperation';
9
+ import DetachOperation from './operation/detachoperation';
10
+ import InsertOperation from './operation/insertoperation';
11
+ import MarkerOperation from './operation/markeroperation';
12
+ import MergeOperation from './operation/mergeoperation';
13
+ import MoveOperation from './operation/moveoperation';
14
+ import RenameOperation from './operation/renameoperation';
15
+ import RootAttributeOperation from './operation/rootattributeoperation';
16
+ import RootOperation from './operation/rootoperation';
17
+ import SplitOperation from './operation/splitoperation';
18
+ import DocumentFragment from './documentfragment';
19
+ import DocumentSelection from './documentselection';
20
+ import Element from './element';
21
+ import Position from './position';
22
+ import Range from './range';
23
+ import RootElement from './rootelement';
24
+ import Text from './text';
25
25
  import { CKEditorError, logWarning, toMap } from '@ckeditor/ckeditor5-utils';
26
26
  /**
27
27
  * The model can only be modified by using the writer. It should be used whenever you want to create a node, modify
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * @module engine/view/attributeelement
7
7
  */
8
- import Element, { type ElementAttributes } from './element.js';
9
- import type Document from './document.js';
10
- import type Node from './node.js';
8
+ import Element, { type ElementAttributes } from './element';
9
+ import type Document from './document';
10
+ import type Node from './node';
11
11
  /**
12
12
  * Attribute elements are used to represent formatting elements in the view (think – `<b>`, `<span style="font-size: 2em">`, etc.).
13
13
  * Most often they are created when downcasting model text attributes.
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * @module engine/view/attributeelement
7
7
  */
8
- import Element from './element.js';
8
+ import Element from './element';
9
9
  import { CKEditorError } from '@ckeditor/ckeditor5-utils';
10
10
  // Default attribute priority.
11
11
  const DEFAULT_PRIORITY = 10;
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * @module engine/view/containerelement
7
7
  */
8
- import Element, { type ElementAttributes } from './element.js';
9
- import type Document from './document.js';
10
- import type Node from './node.js';
8
+ import Element, { type ElementAttributes } from './element';
9
+ import type Document from './document';
10
+ import type Node from './node';
11
11
  /**
12
12
  * Containers are elements which define document structure. They define boundaries for
13
13
  * {@link module:engine/view/attributeelement~AttributeElement attributes}. They are mostly used for block elements like `<p>` or `<div>`.
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * @module engine/view/containerelement
7
7
  */
8
- import Element from './element.js';
8
+ import Element from './element';
9
9
  /**
10
10
  * Containers are elements which define document structure. They define boundaries for
11
11
  * {@link module:engine/view/attributeelement~AttributeElement attributes}. They are mostly used for block elements like `<p>` or `<div>`.
@@ -5,11 +5,11 @@
5
5
  /**
6
6
  * @module engine/view/document
7
7
  */
8
- import DocumentSelection from './documentselection.js';
8
+ import DocumentSelection from './documentselection';
9
9
  import { Collection } from '@ckeditor/ckeditor5-utils';
10
- import type { StylesProcessor } from './stylesmap.js';
11
- import type RootEditableElement from './rooteditableelement.js';
12
- import type DowncastWriter from './downcastwriter.js';
10
+ import type { StylesProcessor } from './stylesmap';
11
+ import type RootEditableElement from './rooteditableelement';
12
+ import type DowncastWriter from './downcastwriter';
13
13
  declare const Document_base: import("@ckeditor/ckeditor5-utils").Mixed<{
14
14
  new (): import("@ckeditor/ckeditor5-utils").Observable;
15
15
  prototype: import("@ckeditor/ckeditor5-utils").Observable;
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * @module engine/view/document
7
7
  */
8
- import DocumentSelection from './documentselection.js';
9
- import BubblingEmitterMixin from './observer/bubblingemittermixin.js';
8
+ import DocumentSelection from './documentselection';
9
+ import BubblingEmitterMixin from './observer/bubblingemittermixin';
10
10
  import { Collection, ObservableMixin } from '@ckeditor/ckeditor5-utils';
11
11
  // @if CK_DEBUG_ENGINE // const { logDocument } = require( '../dev-utils/utils' );
12
12
  /**
@@ -5,10 +5,10 @@
5
5
  /**
6
6
  * @module engine/view/documentfragment
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
9
- import type { default as Document, ChangeType } from './document.js';
10
- import type Item from './item.js';
11
- import type Node from './node.js';
8
+ import TypeCheckable from './typecheckable';
9
+ import type { default as Document, ChangeType } from './document';
10
+ import type Item from './item';
11
+ import type Node from './node';
12
12
  declare const DocumentFragment_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof TypeCheckable, import("@ckeditor/ckeditor5-utils").Emitter>;
13
13
  /**
14
14
  * Document fragment.
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * @module engine/view/documentfragment
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
9
- import Text from './text.js';
10
- import TextProxy from './textproxy.js';
8
+ import TypeCheckable from './typecheckable';
9
+ import Text from './text';
10
+ import TextProxy from './textproxy';
11
11
  import { EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';
12
12
  /**
13
13
  * Document fragment.
@@ -5,14 +5,14 @@
5
5
  /**
6
6
  * @module engine/view/documentselection
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
9
- import Selection, { type PlaceOrOffset, type Selectable, type SelectionOptions, type ViewSelectionChangeEvent } from './selection.js';
10
- import type EditableElement from './editableelement.js';
11
- import type Element from './element.js';
12
- import type Node from './node.js';
13
- import type Item from './item.js';
14
- import type { default as Position, PositionOffset } from './position.js';
15
- import type Range from './range.js';
8
+ import TypeCheckable from './typecheckable';
9
+ import Selection, { type PlaceOrOffset, type Selectable, type SelectionOptions, type ViewSelectionChangeEvent } from './selection';
10
+ import type EditableElement from './editableelement';
11
+ import type Element from './element';
12
+ import type Node from './node';
13
+ import type Item from './item';
14
+ import type { default as Position, PositionOffset } from './position';
15
+ import type Range from './range';
16
16
  declare const DocumentSelection_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof TypeCheckable, import("@ckeditor/ckeditor5-utils").Emitter>;
17
17
  /**
18
18
  * Class representing the document selection in the view.
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * @module engine/view/documentselection
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
9
- import Selection from './selection.js';
8
+ import TypeCheckable from './typecheckable';
9
+ import Selection from './selection';
10
10
  import { EmitterMixin } from '@ckeditor/ckeditor5-utils';
11
11
  /**
12
12
  * Class representing the document selection in the view.
@@ -5,19 +5,19 @@
5
5
  /**
6
6
  * @module engine/view/domconverter
7
7
  */
8
- import ViewText from './text.js';
9
- import ViewElement from './element.js';
10
- import ViewUIElement from './uielement.js';
11
- import ViewPosition from './position.js';
12
- import ViewRange from './range.js';
13
- import ViewSelection from './selection.js';
14
- import ViewDocumentFragment from './documentfragment.js';
15
- import { type MatcherPattern } from './matcher.js';
16
- import type ViewNode from './node.js';
17
- import type Document from './document.js';
18
- import type DocumentSelection from './documentselection.js';
19
- import type EditableElement from './editableelement.js';
20
- import type ViewRawElement from './rawelement.js';
8
+ import ViewText from './text';
9
+ import ViewElement from './element';
10
+ import ViewUIElement from './uielement';
11
+ import ViewPosition from './position';
12
+ import ViewRange from './range';
13
+ import ViewSelection from './selection';
14
+ import ViewDocumentFragment from './documentfragment';
15
+ import { type MatcherPattern } from './matcher';
16
+ import type ViewNode from './node';
17
+ import type Document from './document';
18
+ import type DocumentSelection from './documentselection';
19
+ import type EditableElement from './editableelement';
20
+ import type ViewRawElement from './rawelement';
21
21
  type DomNode = globalThis.Node;
22
22
  type DomElement = globalThis.HTMLElement;
23
23
  type DomDocumentFragment = globalThis.DocumentFragment;
@@ -392,6 +392,12 @@ export default class DomConverter {
392
392
  * Focuses DOM editable that is corresponding to provided {@link module:engine/view/editableelement~EditableElement}.
393
393
  */
394
394
  focus(viewEditable: EditableElement): void;
395
+ /**
396
+ * Remove DOM selection from blurred editable, so it won't interfere with clicking on dropdowns (especially on iOS).
397
+ *
398
+ * @internal
399
+ */
400
+ _clearDomSelection(): void;
395
401
  /**
396
402
  * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.
397
403
  *
@@ -6,16 +6,16 @@
6
6
  * @module engine/view/domconverter
7
7
  */
8
8
  /* globals Node, NodeFilter, DOMParser, Text */
9
- import ViewText from './text.js';
10
- import ViewElement from './element.js';
11
- import ViewUIElement from './uielement.js';
12
- import ViewPosition from './position.js';
13
- import ViewRange from './range.js';
14
- import ViewSelection from './selection.js';
15
- import ViewDocumentFragment from './documentfragment.js';
16
- import ViewTreeWalker from './treewalker.js';
17
- import { default as Matcher } from './matcher.js';
18
- import { BR_FILLER, INLINE_FILLER_LENGTH, NBSP_FILLER, MARKED_NBSP_FILLER, getDataWithoutFiller, isInlineFiller, startsWithFiller } from './filler.js';
9
+ import ViewText from './text';
10
+ import ViewElement from './element';
11
+ import ViewUIElement from './uielement';
12
+ import ViewPosition from './position';
13
+ import ViewRange from './range';
14
+ import ViewSelection from './selection';
15
+ import ViewDocumentFragment from './documentfragment';
16
+ import ViewTreeWalker from './treewalker';
17
+ import { default as Matcher } from './matcher';
18
+ import { BR_FILLER, INLINE_FILLER_LENGTH, NBSP_FILLER, MARKED_NBSP_FILLER, getDataWithoutFiller, isInlineFiller, startsWithFiller } from './filler';
19
19
  import { global, logWarning, indexOf, getAncestors, isText, isComment, isValidAttributeName, first } from '@ckeditor/ckeditor5-utils';
20
20
  const BR_FILLER_REF = BR_FILLER(global.document); // eslint-disable-line new-cap
21
21
  const NBSP_FILLER_REF = NBSP_FILLER(global.document); // eslint-disable-line new-cap
@@ -770,6 +770,24 @@ export default class DomConverter {
770
770
  global.window.scrollTo(scrollX, scrollY);
771
771
  }
772
772
  }
773
+ /**
774
+ * Remove DOM selection from blurred editable, so it won't interfere with clicking on dropdowns (especially on iOS).
775
+ *
776
+ * @internal
777
+ */
778
+ _clearDomSelection() {
779
+ const domEditable = this.mapViewToDom(this.document.selection.editableElement);
780
+ if (!domEditable) {
781
+ return;
782
+ }
783
+ // Check if DOM selection is inside editor editable element.
784
+ const domSelection = domEditable.ownerDocument.defaultView.getSelection();
785
+ const newViewSelection = this.domSelectionToView(domSelection);
786
+ const selectionInEditable = newViewSelection && newViewSelection.rangeCount > 0;
787
+ if (selectionInEditable) {
788
+ domSelection.removeAllRanges();
789
+ }
790
+ }
773
791
  /**
774
792
  * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.
775
793
  *
@@ -5,23 +5,23 @@
5
5
  /**
6
6
  * @module engine/view/downcastwriter
7
7
  */
8
- import Position, { type PositionOffset } from './position.js';
9
- import Range from './range.js';
10
- import Selection, { type PlaceOrOffset, type Selectable, type SelectionOptions } from './selection.js';
11
- import ContainerElement from './containerelement.js';
12
- import AttributeElement from './attributeelement.js';
13
- import EmptyElement from './emptyelement.js';
14
- import UIElement from './uielement.js';
15
- import RawElement from './rawelement.js';
16
- import DocumentFragment from './documentfragment.js';
17
- import Text from './text.js';
18
- import EditableElement from './editableelement.js';
19
- import type Document from './document.js';
20
- import type Node from './node.js';
21
- import type { default as Element, ElementAttributes } from './element.js';
22
- import type DomConverter from './domconverter.js';
23
- import type Item from './item.js';
24
- import type { SlotFilter } from '../conversion/downcasthelpers.js';
8
+ import Position, { type PositionOffset } from './position';
9
+ import Range from './range';
10
+ import Selection, { type PlaceOrOffset, type Selectable, type SelectionOptions } from './selection';
11
+ import ContainerElement from './containerelement';
12
+ import AttributeElement from './attributeelement';
13
+ import EmptyElement from './emptyelement';
14
+ import UIElement from './uielement';
15
+ import RawElement from './rawelement';
16
+ import DocumentFragment from './documentfragment';
17
+ import Text from './text';
18
+ import EditableElement from './editableelement';
19
+ import type Document from './document';
20
+ import type Node from './node';
21
+ import type { default as Element, ElementAttributes } from './element';
22
+ import type DomConverter from './domconverter';
23
+ import type Item from './item';
24
+ import type { SlotFilter } from '../conversion/downcasthelpers';
25
25
  type DomDocument = globalThis.Document;
26
26
  type DomElement = globalThis.HTMLElement;
27
27
  /**
@@ -5,18 +5,18 @@
5
5
  /**
6
6
  * @module engine/view/downcastwriter
7
7
  */
8
- import Position from './position.js';
9
- import Range from './range.js';
10
- import Selection from './selection.js';
11
- import ContainerElement from './containerelement.js';
12
- import AttributeElement from './attributeelement.js';
13
- import EmptyElement from './emptyelement.js';
14
- import UIElement from './uielement.js';
15
- import RawElement from './rawelement.js';
8
+ import Position from './position';
9
+ import Range from './range';
10
+ import Selection from './selection';
11
+ import ContainerElement from './containerelement';
12
+ import AttributeElement from './attributeelement';
13
+ import EmptyElement from './emptyelement';
14
+ import UIElement from './uielement';
15
+ import RawElement from './rawelement';
16
16
  import { CKEditorError, isIterable } from '@ckeditor/ckeditor5-utils';
17
- import DocumentFragment from './documentfragment.js';
18
- import Text from './text.js';
19
- import EditableElement from './editableelement.js';
17
+ import DocumentFragment from './documentfragment';
18
+ import Text from './text';
19
+ import EditableElement from './editableelement';
20
20
  import { isPlainObject } from 'lodash-es';
21
21
  /**
22
22
  * View downcast writer.
@@ -5,10 +5,10 @@
5
5
  /**
6
6
  * @module engine/view/editableelement
7
7
  */
8
- import ContainerElement from './containerelement.js';
9
- import type { ElementAttributes } from './element.js';
10
- import type Document from './document.js';
11
- import type Node from './node.js';
8
+ import ContainerElement from './containerelement';
9
+ import type { ElementAttributes } from './element';
10
+ import type Document from './document';
11
+ import type Node from './node';
12
12
  declare const EditableElement_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof ContainerElement, import("@ckeditor/ckeditor5-utils").Observable>;
13
13
  /**
14
14
  * Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
@@ -36,6 +36,16 @@ export default class EditableElement extends EditableElement_base {
36
36
  * @observable
37
37
  */
38
38
  isFocused: boolean;
39
+ /**
40
+ * Placeholder of editable element.
41
+ *
42
+ * ```ts
43
+ * editor.editing.view.document.getRoot( 'main' ).placeholder = 'New placeholder';
44
+ * ```
45
+ *
46
+ * @observable
47
+ */
48
+ placeholder?: string;
39
49
  /**
40
50
  * Creates an editable element.
41
51
  *
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * @module engine/view/editableelement
7
7
  */
8
- import ContainerElement from './containerelement.js';
8
+ import ContainerElement from './containerelement';
9
9
  import { ObservableMixin } from '@ckeditor/ckeditor5-utils';
10
10
  /**
11
11
  * Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
@@ -31,6 +31,7 @@ export default class EditableElement extends ObservableMixin(ContainerElement) {
31
31
  super(document, name, attributes, children);
32
32
  this.set('isReadOnly', false);
33
33
  this.set('isFocused', false);
34
+ this.set('placeholder', undefined);
34
35
  this.bind('isReadOnly').to(document);
35
36
  this.bind('isFocused').to(document, 'isFocused', isFocused => isFocused && document.selection.editableElement == this);
36
37
  // Update focus state based on selection changes.
@@ -5,12 +5,12 @@
5
5
  /**
6
6
  * @module engine/view/element
7
7
  */
8
- import Node from './node.js';
8
+ import Node from './node';
9
9
  import { type ArrayOrItem } from '@ckeditor/ckeditor5-utils';
10
- import { type MatcherPattern } from './matcher.js';
11
- import { type StyleValue } from './stylesmap.js';
12
- import type Document from './document.js';
13
- import type Item from './item.js';
10
+ import { type MatcherPattern } from './matcher';
11
+ import { type StyleValue } from './stylesmap';
12
+ import type Document from './document';
13
+ import type Item from './item';
14
14
  /**
15
15
  * View element.
16
16
  *
@@ -5,12 +5,12 @@
5
5
  /**
6
6
  * @module engine/view/element
7
7
  */
8
- import Node from './node.js';
9
- import Text from './text.js';
10
- import TextProxy from './textproxy.js';
8
+ import Node from './node';
9
+ import Text from './text';
10
+ import TextProxy from './textproxy';
11
11
  import { isIterable, toArray, toMap } from '@ckeditor/ckeditor5-utils';
12
- import { default as Matcher } from './matcher.js';
13
- import { default as StylesMap } from './stylesmap.js';
12
+ import { default as Matcher } from './matcher';
13
+ import { default as StylesMap } from './stylesmap';
14
14
  // @if CK_DEBUG_ENGINE // const { convertMapToTags } = require( '../dev-utils/utils' );
15
15
  /**
16
16
  * View element.
@@ -5,10 +5,10 @@
5
5
  /**
6
6
  * @module engine/view/emptyelement
7
7
  */
8
- import Element, { type ElementAttributes } from './element.js';
9
- import Node from './node.js';
10
- import type Document from './document.js';
11
- import type Item from './item.js';
8
+ import Element, { type ElementAttributes } from './element';
9
+ import Node from './node';
10
+ import type Document from './document';
11
+ import type Item from './item';
12
12
  /**
13
13
  * Empty element class. It is used to represent elements that cannot contain any child nodes (for example `<img>` elements).
14
14
  *
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * @module engine/view/emptyelement
7
7
  */
8
- import Element from './element.js';
9
- import Node from './node.js';
8
+ import Element from './element';
9
+ import Node from './node';
10
10
  import { CKEditorError } from '@ckeditor/ckeditor5-utils';
11
11
  /**
12
12
  * Empty element class. It is used to represent elements that cannot contain any child nodes (for example `<img>` elements).
@@ -2,7 +2,7 @@
2
2
  * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
4
  */
5
- import type View from './view.js';
5
+ import type View from './view';
6
6
  /**
7
7
  * Set of utilities related to handling block and inline fillers.
8
8
  *
@@ -2,8 +2,8 @@
2
2
  * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
4
  */
5
- import type Node from './node.js';
6
- import type TextProxy from './textproxy.js';
5
+ import type Node from './node';
6
+ import type TextProxy from './textproxy';
7
7
  /**
8
8
  * @module engine/view/item
9
9
  */
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * @module engine/view/matcher
7
7
  */
8
- import type Element from './element.js';
8
+ import type Element from './element';
9
9
  /**
10
10
  * View matcher class.
11
11
  * Instance of this class can be used to find {@link module:engine/view/element~Element elements} that match given pattern.
@@ -5,11 +5,11 @@
5
5
  /**
6
6
  * @module engine/view/node
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
9
- import '@ckeditor/ckeditor5-utils/src/version.js';
10
- import type { default as Document, ChangeType } from './document.js';
11
- import type DocumentFragment from './documentfragment.js';
12
- import type Element from './element.js';
8
+ import TypeCheckable from './typecheckable';
9
+ import '@ckeditor/ckeditor5-utils/src/version';
10
+ import type { default as Document, ChangeType } from './document';
11
+ import type DocumentFragment from './documentfragment';
12
+ import type Element from './element';
13
13
  declare const Node_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof TypeCheckable, import("@ckeditor/ckeditor5-utils").Emitter>;
14
14
  /**
15
15
  * Abstract view node class.
package/src/view/node.js CHANGED
@@ -5,11 +5,11 @@
5
5
  /**
6
6
  * @module engine/view/node
7
7
  */
8
- import TypeCheckable from './typecheckable.js';
8
+ import TypeCheckable from './typecheckable';
9
9
  import { CKEditorError, EmitterMixin, compareArrays } from '@ckeditor/ckeditor5-utils';
10
10
  import { clone } from 'lodash-es';
11
11
  // To check if component is loaded more than once.
12
- import '@ckeditor/ckeditor5-utils/src/version.js';
12
+ import '@ckeditor/ckeditor5-utils/src/version';
13
13
  /**
14
14
  * Abstract view node class.
15
15
  *
@@ -5,10 +5,10 @@
5
5
  /**
6
6
  * @module engine/view/observer/arrowkeysobserver
7
7
  */
8
- import Observer from './observer.js';
9
- import type View from '../view.js';
10
- import type { KeyEventData } from './keyobserver.js';
11
- import type { BubblingEvent } from './bubblingemittermixin.js';
8
+ import Observer from './observer';
9
+ import type View from '../view';
10
+ import type { KeyEventData } from './keyobserver';
11
+ import type { BubblingEvent } from './bubblingemittermixin';
12
12
  /**
13
13
  * Arrow keys observer introduces the {@link module:engine/view/document~Document#event:arrowKey `Document#arrowKey`} event.
14
14
  *
@@ -5,8 +5,8 @@
5
5
  /**
6
6
  * @module engine/view/observer/arrowkeysobserver
7
7
  */
8
- import Observer from './observer.js';
9
- import BubblingEventInfo from './bubblingeventinfo.js';
8
+ import Observer from './observer';
9
+ import BubblingEventInfo from './bubblingeventinfo';
10
10
  import { isArrowKeyCode } from '@ckeditor/ckeditor5-utils';
11
11
  /**
12
12
  * Arrow keys observer introduces the {@link module:engine/view/document~Document#event:arrowKey `Document#arrowKey`} event.
@@ -6,8 +6,8 @@
6
6
  * @module engine/view/observer/bubblingemittermixin
7
7
  */
8
8
  import { type ArrayOrItem, type Emitter, type BaseEvent, type CallbackOptions, type Constructor, type Mixed } from '@ckeditor/ckeditor5-utils';
9
- import BubblingEventInfo from './bubblingeventinfo.js';
10
- import type Node from '../node.js';
9
+ import BubblingEventInfo from './bubblingeventinfo';
10
+ import type Node from '../node';
11
11
  /**
12
12
  * Bubbling emitter mixin for the view document as described in the {@link ~BubblingEmitter} interface.
13
13
  *