@ckeditor/ckeditor5-engine 35.0.1 → 35.1.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 (124) hide show
  1. package/CHANGELOG.md +4 -4
  2. package/package.json +30 -24
  3. package/src/controller/datacontroller.js +467 -561
  4. package/src/controller/editingcontroller.js +168 -204
  5. package/src/conversion/conversion.js +541 -565
  6. package/src/conversion/conversionhelpers.js +24 -28
  7. package/src/conversion/downcastdispatcher.js +457 -686
  8. package/src/conversion/downcasthelpers.js +1583 -1965
  9. package/src/conversion/mapper.js +518 -707
  10. package/src/conversion/modelconsumable.js +240 -283
  11. package/src/conversion/upcastdispatcher.js +372 -718
  12. package/src/conversion/upcasthelpers.js +707 -818
  13. package/src/conversion/viewconsumable.js +524 -581
  14. package/src/dataprocessor/basichtmlwriter.js +12 -16
  15. package/src/dataprocessor/dataprocessor.js +5 -0
  16. package/src/dataprocessor/htmldataprocessor.js +100 -116
  17. package/src/dataprocessor/htmlwriter.js +1 -18
  18. package/src/dataprocessor/xmldataprocessor.js +116 -137
  19. package/src/dev-utils/model.js +260 -352
  20. package/src/dev-utils/operationreplayer.js +106 -126
  21. package/src/dev-utils/utils.js +34 -51
  22. package/src/dev-utils/view.js +632 -753
  23. package/src/index.js +0 -11
  24. package/src/model/batch.js +111 -127
  25. package/src/model/differ.js +988 -1233
  26. package/src/model/document.js +340 -449
  27. package/src/model/documentfragment.js +327 -364
  28. package/src/model/documentselection.js +996 -1189
  29. package/src/model/element.js +306 -410
  30. package/src/model/history.js +224 -262
  31. package/src/model/item.js +5 -0
  32. package/src/model/liveposition.js +84 -145
  33. package/src/model/liverange.js +108 -185
  34. package/src/model/markercollection.js +379 -480
  35. package/src/model/model.js +883 -1034
  36. package/src/model/node.js +419 -463
  37. package/src/model/nodelist.js +175 -201
  38. package/src/model/operation/attributeoperation.js +153 -182
  39. package/src/model/operation/detachoperation.js +64 -83
  40. package/src/model/operation/insertoperation.js +135 -166
  41. package/src/model/operation/markeroperation.js +114 -140
  42. package/src/model/operation/mergeoperation.js +163 -191
  43. package/src/model/operation/moveoperation.js +157 -187
  44. package/src/model/operation/nooperation.js +28 -38
  45. package/src/model/operation/operation.js +106 -125
  46. package/src/model/operation/operationfactory.js +30 -34
  47. package/src/model/operation/renameoperation.js +109 -135
  48. package/src/model/operation/rootattributeoperation.js +155 -188
  49. package/src/model/operation/splitoperation.js +196 -232
  50. package/src/model/operation/transform.js +1833 -2204
  51. package/src/model/operation/utils.js +140 -204
  52. package/src/model/position.js +899 -1053
  53. package/src/model/range.js +910 -1028
  54. package/src/model/rootelement.js +77 -97
  55. package/src/model/schema.js +1189 -1835
  56. package/src/model/selection.js +745 -862
  57. package/src/model/text.js +90 -114
  58. package/src/model/textproxy.js +204 -240
  59. package/src/model/treewalker.js +316 -397
  60. package/src/model/typecheckable.js +16 -0
  61. package/src/model/utils/autoparagraphing.js +32 -44
  62. package/src/model/utils/deletecontent.js +334 -418
  63. package/src/model/utils/findoptimalinsertionrange.js +25 -36
  64. package/src/model/utils/getselectedcontent.js +96 -118
  65. package/src/model/utils/insertcontent.js +654 -773
  66. package/src/model/utils/insertobject.js +96 -119
  67. package/src/model/utils/modifyselection.js +120 -158
  68. package/src/model/utils/selection-post-fixer.js +153 -201
  69. package/src/model/writer.js +1305 -1474
  70. package/src/view/attributeelement.js +189 -225
  71. package/src/view/containerelement.js +75 -85
  72. package/src/view/document.js +172 -215
  73. package/src/view/documentfragment.js +200 -249
  74. package/src/view/documentselection.js +338 -367
  75. package/src/view/domconverter.js +1370 -1617
  76. package/src/view/downcastwriter.js +1747 -2076
  77. package/src/view/editableelement.js +81 -97
  78. package/src/view/element.js +739 -890
  79. package/src/view/elementdefinition.js +5 -0
  80. package/src/view/emptyelement.js +82 -92
  81. package/src/view/filler.js +35 -50
  82. package/src/view/item.js +5 -0
  83. package/src/view/matcher.js +260 -559
  84. package/src/view/node.js +274 -360
  85. package/src/view/observer/arrowkeysobserver.js +19 -28
  86. package/src/view/observer/bubblingemittermixin.js +120 -263
  87. package/src/view/observer/bubblingeventinfo.js +47 -55
  88. package/src/view/observer/clickobserver.js +7 -13
  89. package/src/view/observer/compositionobserver.js +14 -24
  90. package/src/view/observer/domeventdata.js +57 -67
  91. package/src/view/observer/domeventobserver.js +40 -64
  92. package/src/view/observer/fakeselectionobserver.js +81 -96
  93. package/src/view/observer/focusobserver.js +45 -61
  94. package/src/view/observer/inputobserver.js +7 -13
  95. package/src/view/observer/keyobserver.js +17 -27
  96. package/src/view/observer/mouseobserver.js +7 -14
  97. package/src/view/observer/mutationobserver.js +220 -315
  98. package/src/view/observer/observer.js +81 -102
  99. package/src/view/observer/selectionobserver.js +191 -246
  100. package/src/view/observer/tabobserver.js +23 -36
  101. package/src/view/placeholder.js +128 -173
  102. package/src/view/position.js +350 -401
  103. package/src/view/range.js +453 -513
  104. package/src/view/rawelement.js +85 -112
  105. package/src/view/renderer.js +874 -1018
  106. package/src/view/rooteditableelement.js +80 -90
  107. package/src/view/selection.js +608 -689
  108. package/src/view/styles/background.js +43 -44
  109. package/src/view/styles/border.js +220 -276
  110. package/src/view/styles/margin.js +8 -17
  111. package/src/view/styles/padding.js +8 -16
  112. package/src/view/styles/utils.js +127 -160
  113. package/src/view/stylesmap.js +728 -905
  114. package/src/view/text.js +102 -126
  115. package/src/view/textproxy.js +144 -170
  116. package/src/view/treewalker.js +383 -479
  117. package/src/view/typecheckable.js +19 -0
  118. package/src/view/uielement.js +166 -187
  119. package/src/view/upcastwriter.js +395 -449
  120. package/src/view/view.js +569 -664
  121. package/src/dataprocessor/dataprocessor.jsdoc +0 -64
  122. package/src/model/item.jsdoc +0 -14
  123. package/src/view/elementdefinition.jsdoc +0 -59
  124. package/src/view/item.jsdoc +0 -14
@@ -2,14 +2,10 @@
2
2
  * @license Copyright (c) 2003-2022, 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
5
  /**
7
6
  * @module engine/view/observer/observer
8
7
  */
9
-
10
- import DomEmitterMixin from '@ckeditor/ckeditor5-utils/src/dom/emittermixin';
11
- import mix from '@ckeditor/ckeditor5-utils/src/mix';
12
-
8
+ import { Emitter as DomEmitter } from '@ckeditor/ckeditor5-utils/src/dom/emittermixin';
13
9
  /**
14
10
  * Abstract base observer class. Observers are classes which listen to DOM events, do the preliminary
15
11
  * processing and fire events on the {@link module:engine/view/document~Document} objects.
@@ -18,101 +14,84 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
18
14
  *
19
15
  * @abstract
20
16
  */
21
- export default class Observer {
22
- /**
23
- * Creates an instance of the observer.
24
- *
25
- * @param {module:engine/view/view~View} view
26
- */
27
- constructor( view ) {
28
- /**
29
- * An instance of the view controller.
30
- *
31
- * @readonly
32
- * @member {module:engine/view/view~View}
33
- */
34
- this.view = view;
35
-
36
- /**
37
- * A reference to the {@link module:engine/view/document~Document} object.
38
- *
39
- * @readonly
40
- * @member {module:engine/view/document~Document}
41
- */
42
- this.document = view.document;
43
-
44
- /**
45
- * The state of the observer. If it is disabled, no events will be fired.
46
- *
47
- * @readonly
48
- * @member {Boolean}
49
- */
50
- this.isEnabled = false;
51
- }
52
-
53
- /**
54
- * Enables the observer. This method is called when the observer is registered to the
55
- * {@link module:engine/view/view~View} and after {@link module:engine/view/view~View#forceRender rendering}
56
- * (all observers are {@link #disable disabled} before rendering).
57
- *
58
- * A typical use case for disabling observers is that mutation observers need to be disabled for the rendering.
59
- * However, a child class may not need to be disabled, so it can implement an empty method.
60
- *
61
- * @see module:engine/view/observer/observer~Observer#disable
62
- */
63
- enable() {
64
- this.isEnabled = true;
65
- }
66
-
67
- /**
68
- * Disables the observer. This method is called before
69
- * {@link module:engine/view/view~View#forceRender rendering} to prevent firing events during rendering.
70
- *
71
- * @see module:engine/view/observer/observer~Observer#enable
72
- */
73
- disable() {
74
- this.isEnabled = false;
75
- }
76
-
77
- /**
78
- * Disables and destroys the observer, among others removes event listeners created by the observer.
79
- */
80
- destroy() {
81
- this.disable();
82
- this.stopListening();
83
- }
84
-
85
- /**
86
- * Checks whether a given DOM event should be ignored (should not be turned into a synthetic view document event).
87
- *
88
- * Currently, an event will be ignored only if its target or any of its ancestors has the `data-cke-ignore-events` attribute.
89
- * This attribute can be used inside the structures generated by
90
- * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `DowncastWriter#createUIElement()`} to ignore events
91
- * fired within a UI that should be excluded from CKEditor 5's realms.
92
- *
93
- * @param {Node} domTarget The DOM event target to check (usually an element, sometimes a text node and
94
- * potentially sometimes a document, too).
95
- * @returns {Boolean} Whether this event should be ignored by the observer.
96
- */
97
- checkShouldIgnoreEventFromTarget( domTarget ) {
98
- if ( domTarget && domTarget.nodeType === 3 ) {
99
- domTarget = domTarget.parentNode;
100
- }
101
-
102
- if ( !domTarget || domTarget.nodeType !== 1 ) {
103
- return false;
104
- }
105
-
106
- return domTarget.matches( '[data-cke-ignore-events], [data-cke-ignore-events] *' );
107
- }
108
-
109
- /**
110
- * Starts observing the given root element.
111
- *
112
- * @method #observe
113
- * @param {HTMLElement} domElement
114
- * @param {String} name The name of the root element.
115
- */
17
+ export default class Observer extends DomEmitter {
18
+ /**
19
+ * Creates an instance of the observer.
20
+ *
21
+ * @param {module:engine/view/view~View} view
22
+ */
23
+ constructor(view) {
24
+ super();
25
+ /**
26
+ * An instance of the view controller.
27
+ *
28
+ * @readonly
29
+ * @member {module:engine/view/view~View}
30
+ */
31
+ this.view = view;
32
+ /**
33
+ * A reference to the {@link module:engine/view/document~Document} object.
34
+ *
35
+ * @readonly
36
+ * @member {module:engine/view/document~Document}
37
+ */
38
+ this.document = view.document;
39
+ /**
40
+ * The state of the observer. If it is disabled, no events will be fired.
41
+ *
42
+ * @readonly
43
+ * @member {Boolean}
44
+ */
45
+ this.isEnabled = false;
46
+ }
47
+ /**
48
+ * Enables the observer. This method is called when the observer is registered to the
49
+ * {@link module:engine/view/view~View} and after {@link module:engine/view/view~View#forceRender rendering}
50
+ * (all observers are {@link #disable disabled} before rendering).
51
+ *
52
+ * A typical use case for disabling observers is that mutation observers need to be disabled for the rendering.
53
+ * However, a child class may not need to be disabled, so it can implement an empty method.
54
+ *
55
+ * @see module:engine/view/observer/observer~Observer#disable
56
+ */
57
+ enable() {
58
+ this.isEnabled = true;
59
+ }
60
+ /**
61
+ * Disables the observer. This method is called before
62
+ * {@link module:engine/view/view~View#forceRender rendering} to prevent firing events during rendering.
63
+ *
64
+ * @see module:engine/view/observer/observer~Observer#enable
65
+ */
66
+ disable() {
67
+ this.isEnabled = false;
68
+ }
69
+ /**
70
+ * Disables and destroys the observer, among others removes event listeners created by the observer.
71
+ */
72
+ destroy() {
73
+ this.disable();
74
+ this.stopListening();
75
+ }
76
+ /**
77
+ * Checks whether a given DOM event should be ignored (should not be turned into a synthetic view document event).
78
+ *
79
+ * Currently, an event will be ignored only if its target or any of its ancestors has the `data-cke-ignore-events` attribute.
80
+ * This attribute can be used inside the structures generated by
81
+ * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `DowncastWriter#createUIElement()`} to ignore events
82
+ * fired within a UI that should be excluded from CKEditor 5's realms.
83
+ *
84
+ * @param {Node} domTarget The DOM event target to check (usually an element, sometimes a text node and
85
+ * potentially sometimes a document, too).
86
+ * @returns {Boolean} Whether this event should be ignored by the observer.
87
+ */
88
+ checkShouldIgnoreEventFromTarget(domTarget) {
89
+ if (domTarget && domTarget.nodeType === 3) {
90
+ domTarget = domTarget.parentNode;
91
+ }
92
+ if (!domTarget || domTarget.nodeType !== 1) {
93
+ return false;
94
+ }
95
+ return domTarget.matches('[data-cke-ignore-events], [data-cke-ignore-events] *');
96
+ }
116
97
  }
117
-
118
- mix( Observer, DomEmitterMixin );