@ckeditor/ckeditor5-engine 40.1.0 → 41.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 (245) hide show
  1. package/CHANGELOG.md +72 -72
  2. package/LICENSE.md +1 -1
  3. package/package.json +3 -2
  4. package/src/controller/datacontroller.d.ts +16 -16
  5. package/src/controller/datacontroller.js +12 -12
  6. package/src/controller/editingcontroller.d.ts +8 -8
  7. package/src/controller/editingcontroller.js +8 -8
  8. package/src/conversion/conversion.d.ts +7 -7
  9. package/src/conversion/conversion.js +3 -3
  10. package/src/conversion/conversionhelpers.d.ts +1 -1
  11. package/src/conversion/conversionhelpers.js +1 -1
  12. package/src/conversion/downcastdispatcher.d.ts +14 -14
  13. package/src/conversion/downcastdispatcher.js +6 -5
  14. package/src/conversion/downcasthelpers.d.ts +18 -54
  15. package/src/conversion/downcasthelpers.js +8 -44
  16. package/src/conversion/mapper.d.ts +10 -10
  17. package/src/conversion/mapper.js +6 -6
  18. package/src/conversion/modelconsumable.d.ts +6 -6
  19. package/src/conversion/modelconsumable.js +2 -2
  20. package/src/conversion/upcastdispatcher.d.ts +14 -14
  21. package/src/conversion/upcastdispatcher.js +6 -6
  22. package/src/conversion/upcasthelpers.d.ts +10 -10
  23. package/src/conversion/upcasthelpers.js +4 -4
  24. package/src/conversion/viewconsumable.d.ts +6 -6
  25. package/src/conversion/viewconsumable.js +1 -1
  26. package/src/dataprocessor/basichtmlwriter.d.ts +2 -2
  27. package/src/dataprocessor/basichtmlwriter.js +1 -1
  28. package/src/dataprocessor/dataprocessor.d.ts +3 -3
  29. package/src/dataprocessor/dataprocessor.js +1 -1
  30. package/src/dataprocessor/htmldataprocessor.d.ts +8 -8
  31. package/src/dataprocessor/htmldataprocessor.js +4 -4
  32. package/src/dataprocessor/htmlwriter.d.ts +1 -1
  33. package/src/dataprocessor/htmlwriter.js +1 -1
  34. package/src/dataprocessor/xmldataprocessor.d.ts +8 -8
  35. package/src/dataprocessor/xmldataprocessor.js +4 -4
  36. package/src/dev-utils/model.d.ts +11 -11
  37. package/src/dev-utils/model.js +17 -17
  38. package/src/dev-utils/operationreplayer.d.ts +3 -3
  39. package/src/dev-utils/operationreplayer.js +2 -2
  40. package/src/dev-utils/utils.d.ts +1 -1
  41. package/src/dev-utils/utils.js +1 -1
  42. package/src/dev-utils/view.d.ts +9 -9
  43. package/src/dev-utils/view.js +15 -15
  44. package/src/index.d.ts +107 -108
  45. package/src/index.js +65 -66
  46. package/src/model/batch.d.ts +2 -2
  47. package/src/model/batch.js +1 -1
  48. package/src/model/differ.d.ts +35 -7
  49. package/src/model/differ.js +9 -6
  50. package/src/model/document.d.ts +12 -10
  51. package/src/model/document.js +5 -5
  52. package/src/model/documentfragment.d.ts +5 -5
  53. package/src/model/documentfragment.js +6 -6
  54. package/src/model/documentselection.d.ts +9 -9
  55. package/src/model/documentselection.js +6 -6
  56. package/src/model/element.d.ts +3 -3
  57. package/src/model/element.js +5 -5
  58. package/src/model/history.d.ts +2 -2
  59. package/src/model/history.js +1 -1
  60. package/src/model/item.d.ts +3 -3
  61. package/src/model/item.js +1 -1
  62. package/src/model/liveposition.d.ts +5 -5
  63. package/src/model/liveposition.js +2 -2
  64. package/src/model/liverange.d.ts +6 -6
  65. package/src/model/liverange.js +2 -2
  66. package/src/model/markercollection.d.ts +5 -5
  67. package/src/model/markercollection.js +3 -3
  68. package/src/model/model.d.ts +16 -16
  69. package/src/model/model.js +20 -20
  70. package/src/model/node.d.ts +6 -6
  71. package/src/model/node.js +3 -3
  72. package/src/model/nodelist.d.ts +2 -2
  73. package/src/model/nodelist.js +2 -2
  74. package/src/model/operation/attributeoperation.d.ts +5 -5
  75. package/src/model/operation/attributeoperation.js +4 -4
  76. package/src/model/operation/detachoperation.d.ts +4 -4
  77. package/src/model/operation/detachoperation.js +4 -4
  78. package/src/model/operation/insertoperation.d.ts +7 -7
  79. package/src/model/operation/insertoperation.js +8 -8
  80. package/src/model/operation/markeroperation.d.ts +6 -6
  81. package/src/model/operation/markeroperation.js +3 -3
  82. package/src/model/operation/mergeoperation.d.ts +6 -6
  83. package/src/model/operation/mergeoperation.js +6 -6
  84. package/src/model/operation/moveoperation.d.ts +5 -5
  85. package/src/model/operation/moveoperation.js +5 -5
  86. package/src/model/operation/nooperation.d.ts +3 -3
  87. package/src/model/operation/nooperation.js +2 -2
  88. package/src/model/operation/operation.d.ts +4 -4
  89. package/src/model/operation/operation.js +1 -1
  90. package/src/model/operation/operationfactory.d.ts +3 -3
  91. package/src/model/operation/operationfactory.js +12 -12
  92. package/src/model/operation/renameoperation.d.ts +5 -5
  93. package/src/model/operation/renameoperation.js +4 -4
  94. package/src/model/operation/rootattributeoperation.d.ts +5 -5
  95. package/src/model/operation/rootattributeoperation.js +2 -2
  96. package/src/model/operation/rootoperation.d.ts +4 -4
  97. package/src/model/operation/rootoperation.js +2 -2
  98. package/src/model/operation/splitoperation.d.ts +6 -6
  99. package/src/model/operation/splitoperation.js +6 -6
  100. package/src/model/operation/transform.d.ts +3 -3
  101. package/src/model/operation/transform.js +13 -13
  102. package/src/model/operation/utils.d.ts +7 -7
  103. package/src/model/operation/utils.js +5 -5
  104. package/src/model/position.d.ts +15 -15
  105. package/src/model/position.js +4 -4
  106. package/src/model/range.d.ts +13 -13
  107. package/src/model/range.js +4 -4
  108. package/src/model/rootelement.d.ts +3 -3
  109. package/src/model/rootelement.js +2 -2
  110. package/src/model/schema.d.ts +35 -15
  111. package/src/model/schema.js +55 -10
  112. package/src/model/selection.d.ts +8 -8
  113. package/src/model/selection.js +5 -5
  114. package/src/model/text.d.ts +2 -2
  115. package/src/model/text.js +2 -2
  116. package/src/model/textproxy.d.ts +6 -6
  117. package/src/model/textproxy.js +2 -2
  118. package/src/model/treewalker.d.ts +4 -4
  119. package/src/model/treewalker.js +5 -5
  120. package/src/model/typecheckable.d.ts +14 -14
  121. package/src/model/typecheckable.js +1 -1
  122. package/src/model/utils/autoparagraphing.d.ts +5 -5
  123. package/src/model/utils/autoparagraphing.js +1 -1
  124. package/src/model/utils/deletecontent.d.ts +4 -4
  125. package/src/model/utils/deletecontent.js +4 -4
  126. package/src/model/utils/getselectedcontent.d.ts +5 -5
  127. package/src/model/utils/getselectedcontent.js +1 -1
  128. package/src/model/utils/insertcontent.d.ts +7 -7
  129. package/src/model/utils/insertcontent.js +7 -7
  130. package/src/model/utils/insertobject.d.ts +9 -6
  131. package/src/model/utils/insertobject.js +2 -6
  132. package/src/model/utils/modifyselection.d.ts +4 -4
  133. package/src/model/utils/modifyselection.js +5 -5
  134. package/src/model/utils/selection-post-fixer.d.ts +4 -4
  135. package/src/model/utils/selection-post-fixer.js +3 -3
  136. package/src/model/writer.d.ts +13 -13
  137. package/src/model/writer.js +18 -18
  138. package/src/view/attributeelement.d.ts +4 -4
  139. package/src/view/attributeelement.js +4 -3
  140. package/src/view/containerelement.d.ts +4 -4
  141. package/src/view/containerelement.js +2 -2
  142. package/src/view/datatransfer.d.ts +1 -1
  143. package/src/view/datatransfer.js +1 -1
  144. package/src/view/document.d.ts +5 -5
  145. package/src/view/document.js +3 -3
  146. package/src/view/documentfragment.d.ts +5 -5
  147. package/src/view/documentfragment.js +4 -4
  148. package/src/view/documentselection.d.ts +9 -9
  149. package/src/view/documentselection.js +3 -3
  150. package/src/view/domconverter.d.ts +14 -14
  151. package/src/view/domconverter.js +11 -11
  152. package/src/view/downcastwriter.d.ts +18 -18
  153. package/src/view/downcastwriter.js +12 -12
  154. package/src/view/editableelement.d.ts +5 -5
  155. package/src/view/editableelement.js +2 -2
  156. package/src/view/element.d.ts +6 -6
  157. package/src/view/element.js +6 -6
  158. package/src/view/elementdefinition.d.ts +1 -1
  159. package/src/view/elementdefinition.js +1 -1
  160. package/src/view/emptyelement.d.ts +5 -5
  161. package/src/view/emptyelement.js +3 -3
  162. package/src/view/filler.d.ts +2 -2
  163. package/src/view/filler.js +1 -1
  164. package/src/view/item.d.ts +3 -3
  165. package/src/view/item.js +1 -1
  166. package/src/view/matcher.d.ts +2 -2
  167. package/src/view/matcher.js +1 -1
  168. package/src/view/node.d.ts +6 -6
  169. package/src/view/node.js +3 -3
  170. package/src/view/observer/arrowkeysobserver.d.ts +5 -5
  171. package/src/view/observer/arrowkeysobserver.js +3 -3
  172. package/src/view/observer/bubblingemittermixin.d.ts +3 -3
  173. package/src/view/observer/bubblingemittermixin.js +2 -2
  174. package/src/view/observer/bubblingeventinfo.d.ts +4 -4
  175. package/src/view/observer/bubblingeventinfo.js +1 -1
  176. package/src/view/observer/clickobserver.d.ts +4 -4
  177. package/src/view/observer/clickobserver.js +2 -2
  178. package/src/view/observer/compositionobserver.d.ts +4 -4
  179. package/src/view/observer/compositionobserver.js +2 -2
  180. package/src/view/observer/domeventdata.d.ts +4 -4
  181. package/src/view/observer/domeventdata.js +1 -1
  182. package/src/view/observer/domeventobserver.d.ts +2 -2
  183. package/src/view/observer/domeventobserver.js +3 -3
  184. package/src/view/observer/fakeselectionobserver.d.ts +3 -3
  185. package/src/view/observer/fakeselectionobserver.js +3 -3
  186. package/src/view/observer/focusobserver.d.ts +4 -4
  187. package/src/view/observer/focusobserver.js +2 -2
  188. package/src/view/observer/inputobserver.d.ts +5 -5
  189. package/src/view/observer/inputobserver.js +3 -3
  190. package/src/view/observer/keyobserver.d.ts +3 -3
  191. package/src/view/observer/keyobserver.js +2 -2
  192. package/src/view/observer/mouseobserver.d.ts +3 -3
  193. package/src/view/observer/mouseobserver.js +2 -2
  194. package/src/view/observer/mutationobserver.d.ts +5 -5
  195. package/src/view/observer/mutationobserver.js +3 -3
  196. package/src/view/observer/observer.d.ts +3 -3
  197. package/src/view/observer/observer.js +1 -1
  198. package/src/view/observer/selectionobserver.d.ts +8 -8
  199. package/src/view/observer/selectionobserver.js +4 -4
  200. package/src/view/observer/tabobserver.d.ts +5 -5
  201. package/src/view/observer/tabobserver.js +3 -3
  202. package/src/view/placeholder.d.ts +5 -5
  203. package/src/view/placeholder.js +1 -1
  204. package/src/view/position.d.ts +8 -8
  205. package/src/view/position.js +5 -5
  206. package/src/view/range.d.ts +8 -8
  207. package/src/view/range.js +4 -4
  208. package/src/view/rawelement.d.ts +6 -6
  209. package/src/view/rawelement.js +3 -3
  210. package/src/view/renderer.d.ts +6 -6
  211. package/src/view/renderer.js +4 -4
  212. package/src/view/rooteditableelement.d.ts +3 -3
  213. package/src/view/rooteditableelement.js +2 -2
  214. package/src/view/selection.d.ts +9 -9
  215. package/src/view/selection.js +6 -6
  216. package/src/view/styles/background.d.ts +2 -2
  217. package/src/view/styles/background.js +2 -2
  218. package/src/view/styles/border.d.ts +2 -2
  219. package/src/view/styles/border.js +2 -2
  220. package/src/view/styles/margin.d.ts +2 -2
  221. package/src/view/styles/margin.js +2 -2
  222. package/src/view/styles/padding.d.ts +2 -2
  223. package/src/view/styles/padding.js +2 -2
  224. package/src/view/styles/utils.d.ts +2 -2
  225. package/src/view/styles/utils.js +1 -1
  226. package/src/view/stylesmap.d.ts +1 -1
  227. package/src/view/stylesmap.js +1 -1
  228. package/src/view/text.d.ts +3 -3
  229. package/src/view/text.js +2 -2
  230. package/src/view/textproxy.d.ts +7 -7
  231. package/src/view/textproxy.js +2 -2
  232. package/src/view/treewalker.d.ts +4 -4
  233. package/src/view/treewalker.js +5 -5
  234. package/src/view/typecheckable.d.ts +17 -17
  235. package/src/view/typecheckable.js +1 -1
  236. package/src/view/uielement.d.ts +7 -7
  237. package/src/view/uielement.js +3 -3
  238. package/src/view/upcastwriter.d.ts +10 -10
  239. package/src/view/upcastwriter.js +7 -7
  240. package/src/view/view.d.ts +22 -22
  241. package/src/view/view.js +19 -19
  242. package/theme/placeholder.css +1 -1
  243. package/theme/renderer.css +1 -1
  244. package/src/model/utils/findoptimalinsertionrange.d.ts +0 -32
  245. package/src/model/utils/findoptimalinsertionrange.js +0 -57
@@ -1,19 +1,19 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/schema
7
7
  */
8
- import Element from './element';
9
- import Position from './position';
10
- import Range from './range';
11
- import type DocumentFragment from './documentfragment';
12
- import type DocumentSelection from './documentselection';
13
- import type Item from './item';
14
- import type Node from './node';
15
- import type Selection from './selection';
16
- import type Writer from './writer';
8
+ import Element from './element.js';
9
+ import Position from './position.js';
10
+ import Range from './range.js';
11
+ import type DocumentFragment from './documentfragment.js';
12
+ import type DocumentSelection from './documentselection.js';
13
+ import type Item from './item.js';
14
+ import type Node from './node.js';
15
+ import type Selection from './selection.js';
16
+ import type Writer from './writer.js';
17
17
  declare const Schema_base: {
18
18
  new (): import("@ckeditor/ckeditor5-utils").Observable;
19
19
  prototype: import("@ckeditor/ckeditor5-utils").Observable;
@@ -225,7 +225,7 @@ export default class Schema extends Schema_base {
225
225
  * ```
226
226
  *
227
227
  * Note: When verifying whether the given node can be a child of the given context, the
228
- * schema also verifies the entire context — from its root to its last element. Therefore, it is possible
228
+ * schema also verifies the entire context – from its root to its last element. Therefore, it is possible
229
229
  * for `checkChild()` to return `false` even though the context's last element can contain the checked child.
230
230
  * It happens if one of the context's elements does not allow its child.
231
231
  *
@@ -254,7 +254,7 @@ export default class Schema extends Schema_base {
254
254
  /**
255
255
  * Checks whether the given element (`elementToMerge`) can be merged with the specified base element (`positionOrBaseElement`).
256
256
  *
257
- * In other words — whether `elementToMerge`'s children {@link #checkChild are allowed} in the `positionOrBaseElement`.
257
+ * In other words – whether `elementToMerge`'s children {@link #checkChild are allowed} in the `positionOrBaseElement`.
258
258
  *
259
259
  * This check ensures that elements merged with {@link module:engine/model/writer~Writer#merge `Writer#merge()`}
260
260
  * will be valid.
@@ -507,6 +507,26 @@ export default class Schema extends Schema_base {
507
507
  * @returns Ranges in which the attribute is allowed.
508
508
  */
509
509
  private _getValidRangesForRange;
510
+ /**
511
+ * Returns a model range which is optimal (in terms of UX) for inserting a widget block.
512
+ *
513
+ * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph
514
+ * will be returned so that it is not split. If the selection is at the end of a paragraph,
515
+ * the collapsed range after this paragraph will be returned.
516
+ *
517
+ * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range
518
+ * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced
519
+ * by the inserted widget block.
520
+ *
521
+ * @internal
522
+ * @param selection The selection based on which the insertion position should be calculated.
523
+ * @param place The place where to look for optimal insertion range.
524
+ * The `auto` value will determine itself the best position for insertion.
525
+ * The `before` value will try to find a position before selection.
526
+ * The `after` value will try to find a position after selection.
527
+ * @returns The optimal range.
528
+ */
529
+ findOptimalInsertionRange(selection: Selection | DocumentSelection, place?: 'auto' | 'before' | 'after'): Range;
510
530
  }
511
531
  /**
512
532
  * Event fired when the {@link ~Schema#checkChild} method is called. It allows plugging in
@@ -942,7 +962,7 @@ export interface SchemaCompiledItemDefinition {
942
962
  allowAttributes: Array<string>;
943
963
  }
944
964
  /**
945
- * A schema context &mdash; a list of ancestors of a given position in the document.
965
+ * A schema context &ndash; a list of ancestors of a given position in the document.
946
966
  *
947
967
  * Considering such position:
948
968
  *
@@ -1181,6 +1201,6 @@ export interface AttributeProperties {
1181
1201
  copyFromObject?: boolean;
1182
1202
  [name: string]: unknown;
1183
1203
  }
1184
- export type SchemaAttributeCheckCallback = (context: SchemaContext, attributeName: string) => unknown;
1185
- export type SchemaChildCheckCallback = (ctx: SchemaContext, def: SchemaCompiledItemDefinition) => unknown;
1204
+ export type SchemaAttributeCheckCallback = (context: SchemaContext, attributeName: string) => boolean | undefined;
1205
+ export type SchemaChildCheckCallback = (context: SchemaContext, definition: SchemaCompiledItemDefinition) => boolean | undefined;
1186
1206
  export {};
@@ -1,16 +1,16 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/schema
7
7
  */
8
- import Element from './element';
9
- import Position from './position';
10
- import Range from './range';
11
- import Text from './text';
12
- import TreeWalker from './treewalker';
13
- import { CKEditorError, ObservableMixin } from '@ckeditor/ckeditor5-utils';
8
+ import Element from './element.js';
9
+ import Position from './position.js';
10
+ import Range from './range.js';
11
+ import Text from './text.js';
12
+ import TreeWalker from './treewalker.js';
13
+ import { CKEditorError, first, ObservableMixin } from '@ckeditor/ckeditor5-utils';
14
14
  /**
15
15
  * The model's schema. It defines the allowed and disallowed structures of nodes as well as nodes' attributes.
16
16
  * The schema is usually defined by the features and based on them, the editing framework and features
@@ -326,7 +326,7 @@ export default class Schema extends ObservableMixin() {
326
326
  * ```
327
327
  *
328
328
  * Note: When verifying whether the given node can be a child of the given context, the
329
- * schema also verifies the entire context &mdash; from its root to its last element. Therefore, it is possible
329
+ * schema also verifies the entire context &ndash; from its root to its last element. Therefore, it is possible
330
330
  * for `checkChild()` to return `false` even though the context's last element can contain the checked child.
331
331
  * It happens if one of the context's elements does not allow its child.
332
332
  *
@@ -367,7 +367,7 @@ export default class Schema extends ObservableMixin() {
367
367
  /**
368
368
  * Checks whether the given element (`elementToMerge`) can be merged with the specified base element (`positionOrBaseElement`).
369
369
  *
370
- * In other words &mdash; whether `elementToMerge`'s children {@link #checkChild are allowed} in the `positionOrBaseElement`.
370
+ * In other words &ndash; whether `elementToMerge`'s children {@link #checkChild are allowed} in the `positionOrBaseElement`.
371
371
  *
372
372
  * This check ensures that elements merged with {@link module:engine/model/writer~Writer#merge `Writer#merge()`}
373
373
  * will be valid.
@@ -882,9 +882,54 @@ export default class Schema extends ObservableMixin() {
882
882
  yield new Range(start, end);
883
883
  }
884
884
  }
885
+ /**
886
+ * Returns a model range which is optimal (in terms of UX) for inserting a widget block.
887
+ *
888
+ * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph
889
+ * will be returned so that it is not split. If the selection is at the end of a paragraph,
890
+ * the collapsed range after this paragraph will be returned.
891
+ *
892
+ * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range
893
+ * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced
894
+ * by the inserted widget block.
895
+ *
896
+ * @internal
897
+ * @param selection The selection based on which the insertion position should be calculated.
898
+ * @param place The place where to look for optimal insertion range.
899
+ * The `auto` value will determine itself the best position for insertion.
900
+ * The `before` value will try to find a position before selection.
901
+ * The `after` value will try to find a position after selection.
902
+ * @returns The optimal range.
903
+ */
904
+ findOptimalInsertionRange(selection, place) {
905
+ const selectedElement = selection.getSelectedElement();
906
+ if (selectedElement && this.isObject(selectedElement) && !this.isInline(selectedElement)) {
907
+ if (place == 'before' || place == 'after') {
908
+ return new Range(Position._createAt(selectedElement, place));
909
+ }
910
+ return Range._createOn(selectedElement);
911
+ }
912
+ const firstBlock = first(selection.getSelectedBlocks());
913
+ // There are no block elements within ancestors (in the current limit element).
914
+ if (!firstBlock) {
915
+ return new Range(selection.focus);
916
+ }
917
+ // If inserting into an empty block – return position in that block. It will get
918
+ // replaced with the image by insertContent(). #42.
919
+ if (firstBlock.isEmpty) {
920
+ return new Range(Position._createAt(firstBlock, 0));
921
+ }
922
+ const positionAfter = Position._createAfter(firstBlock);
923
+ // If selection is at the end of the block - return position after the block.
924
+ if (selection.focus.isTouching(positionAfter)) {
925
+ return new Range(positionAfter);
926
+ }
927
+ // Otherwise, return position before the block.
928
+ return new Range(Position._createBefore(firstBlock));
929
+ }
885
930
  }
886
931
  /**
887
- * A schema context &mdash; a list of ancestors of a given position in the document.
932
+ * A schema context &ndash; a list of ancestors of a given position in the document.
888
933
  *
889
934
  * Considering such position:
890
935
  *
@@ -1,17 +1,17 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/selection
7
7
  */
8
- import TypeCheckable from './typecheckable';
9
- import Node from './node';
10
- import Position, { type PositionOffset } from './position';
11
- import Range from './range';
12
- import type DocumentSelection from './documentselection';
13
- import type Element from './element';
14
- import type Item from './item';
8
+ import TypeCheckable from './typecheckable.js';
9
+ import Node from './node.js';
10
+ import Position, { type PositionOffset } from './position.js';
11
+ import Range from './range.js';
12
+ import type DocumentSelection from './documentselection.js';
13
+ import type Element from './element.js';
14
+ import type Item from './item.js';
15
15
  declare const Selection_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof TypeCheckable, import("@ckeditor/ckeditor5-utils").Emitter>;
16
16
  /**
17
17
  * Selection is a set of {@link module:engine/model/range~Range ranges}. It has a direction specified by its
@@ -1,14 +1,14 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/selection
7
7
  */
8
- import TypeCheckable from './typecheckable';
9
- import Node from './node';
10
- import Position from './position';
11
- import Range from './range';
8
+ import TypeCheckable from './typecheckable.js';
9
+ import Node from './node.js';
10
+ import Position from './position.js';
11
+ import Range from './range.js';
12
12
  import { CKEditorError, EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';
13
13
  /**
14
14
  * Selection is a set of {@link module:engine/model/range~Range ranges}. It has a direction specified by its
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/text
7
7
  */
8
- import Node, { type NodeAttributes } from './node';
8
+ import Node, { type NodeAttributes } from './node.js';
9
9
  /**
10
10
  * Model text node. Type of {@link module:engine/model/node~Node node} that contains {@link module:engine/model/text~Text#data text data}.
11
11
  *
package/src/model/text.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/text
7
7
  */
8
- import Node from './node';
8
+ import Node from './node.js';
9
9
  // @if CK_DEBUG_ENGINE // const { convertMapToStringifiedObject } = require( '../dev-utils/utils' );
10
10
  /**
11
11
  * Model text node. Type of {@link module:engine/model/node~Node node} that contains {@link module:engine/model/text~Text#data text data}.
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/textproxy
7
7
  */
8
- import TypeCheckable from './typecheckable';
9
- import type DocumentFragment from './documentfragment';
10
- import type Element from './element';
11
- import type Node from './node';
12
- import type Text from './text';
8
+ import TypeCheckable from './typecheckable.js';
9
+ import type DocumentFragment from './documentfragment.js';
10
+ import type Element from './element.js';
11
+ import type Node from './node.js';
12
+ import type Text from './text.js';
13
13
  /**
14
14
  * `TextProxy` represents a part of {@link module:engine/model/text~Text text node}.
15
15
  *
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/textproxy
7
7
  */
8
- import TypeCheckable from './typecheckable';
8
+ import TypeCheckable from './typecheckable.js';
9
9
  import { CKEditorError } from '@ckeditor/ckeditor5-utils';
10
10
  // @if CK_DEBUG_ENGINE // const { convertMapToStringifiedObject } = require( '../dev-utils/utils' );
11
11
  /**
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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 { default as Position } from './position';
6
- import type Item from './item';
7
- import type Range from './range';
5
+ import { default as Position } from './position.js';
6
+ import type Item from './item.js';
7
+ import type Range from './range.js';
8
8
  /**
9
9
  * Position iterator class. It allows to iterate forward and backward over the document.
10
10
  */
@@ -1,14 +1,14 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/treewalker
7
7
  */
8
- import Element from './element';
9
- import { default as Position, getTextNodeAtPosition, getNodeAfterPosition, getNodeBeforePosition } from './position';
10
- import Text from './text';
11
- import TextProxy from './textproxy';
8
+ import Element from './element.js';
9
+ import { default as Position, getTextNodeAtPosition, getNodeAfterPosition, getNodeBeforePosition } from './position.js';
10
+ import Text from './text.js';
11
+ import TextProxy from './textproxy.js';
12
12
  import { CKEditorError } from '@ckeditor/ckeditor5-utils';
13
13
  /**
14
14
  * Position iterator class. It allows to iterate forward and backward over the document.
@@ -1,23 +1,23 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/typecheckable
7
7
  */
8
- import type { Marker } from './markercollection';
9
- import type DocumentFragment from './documentfragment';
10
- import type DocumentSelection from './documentselection';
11
- import type Element from './element';
12
- import type LivePosition from './liveposition';
13
- import type LiveRange from './liverange';
14
- import type Node from './node';
15
- import type Position from './position';
16
- import type Range from './range';
17
- import type RootElement from './rootelement';
18
- import type Selection from './selection';
19
- import type Text from './text';
20
- import type TextProxy from './textproxy';
8
+ import type { Marker } from './markercollection.js';
9
+ import type DocumentFragment from './documentfragment.js';
10
+ import type DocumentSelection from './documentselection.js';
11
+ import type Element from './element.js';
12
+ import type LivePosition from './liveposition.js';
13
+ import type LiveRange from './liverange.js';
14
+ import type Node from './node.js';
15
+ import type Position from './position.js';
16
+ import type Range from './range.js';
17
+ import type RootElement from './rootelement.js';
18
+ import type Selection from './selection.js';
19
+ import type Text from './text.js';
20
+ import type TextProxy from './textproxy.js';
21
21
  export default abstract class TypeCheckable {
22
22
  /**
23
23
  * Checks whether the object is of type {@link module:engine/model/node~Node} or its subclass.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  export default class TypeCheckable {
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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';
6
- import type Position from '../position';
7
- import type Schema from '../schema';
8
- import type Writer from '../writer';
5
+ import type Node from '../node.js';
6
+ import type Position from '../position.js';
7
+ import type Schema from '../schema.js';
8
+ import type Writer from '../writer.js';
9
9
  /**
10
10
  * @module engine/model/utils/autoparagraphing
11
11
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/deletecontent
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import type Model from '../model';
10
- import type Selection from '../selection';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import type Model from '../model.js';
10
+ import type Selection from '../selection.js';
11
11
  /**
12
12
  * Deletes content of the selection and merge siblings. The resulting selection is always collapsed.
13
13
  *
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/deletecontent
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import LivePosition from '../liveposition';
10
- import Range from '../range';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import LivePosition from '../liveposition.js';
10
+ import Range from '../range.js';
11
11
  /**
12
12
  * Deletes content of the selection and merge siblings. The resulting selection is always collapsed.
13
13
  *
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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 DocumentFragment from '../documentfragment';
6
- import type DocumentSelection from '../documentselection';
7
- import type Model from '../model';
8
- import type Selection from '../selection';
5
+ import type DocumentFragment from '../documentfragment.js';
6
+ import type DocumentSelection from '../documentselection.js';
7
+ import type Model from '../model.js';
8
+ import type Selection from '../selection.js';
9
9
  /**
10
10
  * @module engine/model/utils/getselectedcontent
11
11
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
@@ -1,16 +1,16 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/insertcontent
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import Range from '../range';
10
- import type DocumentFragment from '../documentfragment';
11
- import type Item from '../item';
12
- import type Model from '../model';
13
- import type Selection from '../selection';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import Range from '../range.js';
10
+ import type DocumentFragment from '../documentfragment.js';
11
+ import type Item from '../item.js';
12
+ import type Model from '../model.js';
13
+ import type Selection from '../selection.js';
14
14
  /**
15
15
  * Inserts content into the editor (specified selection) as one would expect the paste functionality to work.
16
16
  *
@@ -1,16 +1,16 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/insertcontent
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import Element from '../element';
10
- import LivePosition from '../liveposition';
11
- import LiveRange from '../liverange';
12
- import Position from '../position';
13
- import Range from '../range';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import Element from '../element.js';
10
+ import LivePosition from '../liveposition.js';
11
+ import LiveRange from '../liverange.js';
12
+ import Position from '../position.js';
13
+ import Range from '../range.js';
14
14
  import { CKEditorError } from '@ckeditor/ckeditor5-utils';
15
15
  /**
16
16
  * Inserts content into the editor (specified selection) as one would expect the paste functionality to work.
@@ -1,12 +1,15 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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 DocumentSelection from '../documentselection';
6
- import type Selection from '../selection';
7
- import type Element from '../element';
8
- import type Model from '../model';
9
- import type Range from '../range';
5
+ /**
6
+ * @module engine/model/utils/insertobject
7
+ */
8
+ import type DocumentSelection from '../documentselection.js';
9
+ import type Selection from '../selection.js';
10
+ import type Element from '../element.js';
11
+ import type Model from '../model.js';
12
+ import type Range from '../range.js';
10
13
  /**
11
14
  * Inserts an {@glink framework/deep-dive/schema#object-elements object element} at a specific position in the editor content.
12
15
  *
@@ -1,11 +1,7 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
- /**
6
- * @module engine/model/utils/insertobject
7
- */
8
- import { findOptimalInsertionRange } from './findoptimalinsertionrange';
9
5
  import { CKEditorError, first } from '@ckeditor/ckeditor5-utils';
10
6
  /**
11
7
  * Inserts an {@glink framework/deep-dive/schema#object-elements object element} at a specific position in the editor content.
@@ -55,7 +51,7 @@ export default function insertObject(model, object, selectable, options = {}) {
55
51
  // Adjust the insertion selection.
56
52
  let insertionSelection = originalSelection;
57
53
  if (options.findOptimalPosition && model.schema.isBlock(object)) {
58
- insertionSelection = model.createSelection(findOptimalInsertionRange(originalSelection, model, options.findOptimalPosition));
54
+ insertionSelection = model.createSelection(model.schema.findOptimalInsertionRange(originalSelection, options.findOptimalPosition));
59
55
  }
60
56
  // Collect attributes to be copied on the inserted object.
61
57
  const firstSelectedBlock = first(originalSelection.getSelectedBlocks());
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/modifyselection
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import type Model from '../model';
10
- import type Selection from '../selection';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import type Model from '../model.js';
10
+ import type Selection from '../selection.js';
11
11
  /**
12
12
  * Modifies the selection. Currently, the supported modifications are:
13
13
  *
@@ -1,14 +1,14 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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
5
  /**
6
6
  * @module engine/model/utils/modifyselection
7
7
  */
8
- import DocumentSelection from '../documentselection';
9
- import Position from '../position';
10
- import Range from '../range';
11
- import TreeWalker from '../treewalker';
8
+ import DocumentSelection from '../documentselection.js';
9
+ import Position from '../position.js';
10
+ import Range from '../range.js';
11
+ import TreeWalker from '../treewalker.js';
12
12
  import { isInsideSurrogatePair, isInsideCombinedSymbol, isInsideEmojiSequence } from '@ckeditor/ckeditor5-utils';
13
13
  const wordBoundaryCharacters = ' ,.?!:;"-()';
14
14
  /**
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2003-2024, 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 Range from '../range';
6
- import type Model from '../model';
7
- import type Schema from '../schema';
5
+ import Range from '../range.js';
6
+ import type Model from '../model.js';
7
+ import type Schema from '../schema.js';
8
8
  /**
9
9
  * Injects selection post-fixer to the model.
10
10
  *