@ckeditor/ckeditor5-engine 34.2.0 → 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 (125) hide show
  1. package/CHANGELOG.md +823 -0
  2. package/LICENSE.md +4 -0
  3. package/package.json +32 -25
  4. package/src/controller/datacontroller.js +467 -561
  5. package/src/controller/editingcontroller.js +168 -204
  6. package/src/conversion/conversion.js +541 -565
  7. package/src/conversion/conversionhelpers.js +24 -28
  8. package/src/conversion/downcastdispatcher.js +457 -686
  9. package/src/conversion/downcasthelpers.js +1583 -1965
  10. package/src/conversion/mapper.js +518 -707
  11. package/src/conversion/modelconsumable.js +240 -283
  12. package/src/conversion/upcastdispatcher.js +372 -718
  13. package/src/conversion/upcasthelpers.js +707 -818
  14. package/src/conversion/viewconsumable.js +524 -581
  15. package/src/dataprocessor/basichtmlwriter.js +12 -16
  16. package/src/dataprocessor/dataprocessor.js +5 -0
  17. package/src/dataprocessor/htmldataprocessor.js +101 -117
  18. package/src/dataprocessor/htmlwriter.js +1 -18
  19. package/src/dataprocessor/xmldataprocessor.js +117 -138
  20. package/src/dev-utils/model.js +260 -352
  21. package/src/dev-utils/operationreplayer.js +106 -126
  22. package/src/dev-utils/utils.js +34 -51
  23. package/src/dev-utils/view.js +632 -753
  24. package/src/index.js +0 -11
  25. package/src/model/batch.js +111 -127
  26. package/src/model/differ.js +988 -1233
  27. package/src/model/document.js +340 -449
  28. package/src/model/documentfragment.js +327 -364
  29. package/src/model/documentselection.js +996 -1189
  30. package/src/model/element.js +306 -410
  31. package/src/model/history.js +224 -262
  32. package/src/model/item.js +5 -0
  33. package/src/model/liveposition.js +84 -145
  34. package/src/model/liverange.js +108 -185
  35. package/src/model/markercollection.js +379 -480
  36. package/src/model/model.js +883 -1034
  37. package/src/model/node.js +419 -463
  38. package/src/model/nodelist.js +175 -201
  39. package/src/model/operation/attributeoperation.js +153 -182
  40. package/src/model/operation/detachoperation.js +64 -83
  41. package/src/model/operation/insertoperation.js +135 -166
  42. package/src/model/operation/markeroperation.js +114 -140
  43. package/src/model/operation/mergeoperation.js +163 -191
  44. package/src/model/operation/moveoperation.js +157 -187
  45. package/src/model/operation/nooperation.js +28 -38
  46. package/src/model/operation/operation.js +106 -125
  47. package/src/model/operation/operationfactory.js +30 -34
  48. package/src/model/operation/renameoperation.js +109 -135
  49. package/src/model/operation/rootattributeoperation.js +155 -188
  50. package/src/model/operation/splitoperation.js +196 -232
  51. package/src/model/operation/transform.js +1833 -2204
  52. package/src/model/operation/utils.js +140 -204
  53. package/src/model/position.js +899 -1053
  54. package/src/model/range.js +910 -1028
  55. package/src/model/rootelement.js +77 -97
  56. package/src/model/schema.js +1189 -1835
  57. package/src/model/selection.js +745 -862
  58. package/src/model/text.js +90 -114
  59. package/src/model/textproxy.js +204 -240
  60. package/src/model/treewalker.js +316 -397
  61. package/src/model/typecheckable.js +16 -0
  62. package/src/model/utils/autoparagraphing.js +32 -44
  63. package/src/model/utils/deletecontent.js +334 -418
  64. package/src/model/utils/findoptimalinsertionrange.js +25 -36
  65. package/src/model/utils/getselectedcontent.js +96 -118
  66. package/src/model/utils/insertcontent.js +654 -773
  67. package/src/model/utils/insertobject.js +96 -119
  68. package/src/model/utils/modifyselection.js +120 -158
  69. package/src/model/utils/selection-post-fixer.js +153 -201
  70. package/src/model/writer.js +1305 -1474
  71. package/src/view/attributeelement.js +189 -225
  72. package/src/view/containerelement.js +75 -85
  73. package/src/view/document.js +172 -215
  74. package/src/view/documentfragment.js +200 -249
  75. package/src/view/documentselection.js +338 -367
  76. package/src/view/domconverter.js +1371 -1613
  77. package/src/view/downcastwriter.js +1747 -2076
  78. package/src/view/editableelement.js +81 -97
  79. package/src/view/element.js +739 -890
  80. package/src/view/elementdefinition.js +5 -0
  81. package/src/view/emptyelement.js +82 -92
  82. package/src/view/filler.js +35 -50
  83. package/src/view/item.js +5 -0
  84. package/src/view/matcher.js +260 -559
  85. package/src/view/node.js +274 -360
  86. package/src/view/observer/arrowkeysobserver.js +19 -28
  87. package/src/view/observer/bubblingemittermixin.js +120 -263
  88. package/src/view/observer/bubblingeventinfo.js +47 -55
  89. package/src/view/observer/clickobserver.js +7 -13
  90. package/src/view/observer/compositionobserver.js +14 -24
  91. package/src/view/observer/domeventdata.js +57 -67
  92. package/src/view/observer/domeventobserver.js +40 -64
  93. package/src/view/observer/fakeselectionobserver.js +81 -96
  94. package/src/view/observer/focusobserver.js +45 -61
  95. package/src/view/observer/inputobserver.js +7 -13
  96. package/src/view/observer/keyobserver.js +17 -27
  97. package/src/view/observer/mouseobserver.js +7 -14
  98. package/src/view/observer/mutationobserver.js +220 -315
  99. package/src/view/observer/observer.js +81 -102
  100. package/src/view/observer/selectionobserver.js +191 -246
  101. package/src/view/observer/tabobserver.js +23 -36
  102. package/src/view/placeholder.js +128 -173
  103. package/src/view/position.js +350 -401
  104. package/src/view/range.js +453 -513
  105. package/src/view/rawelement.js +85 -112
  106. package/src/view/renderer.js +874 -1014
  107. package/src/view/rooteditableelement.js +80 -90
  108. package/src/view/selection.js +608 -689
  109. package/src/view/styles/background.js +43 -44
  110. package/src/view/styles/border.js +220 -276
  111. package/src/view/styles/margin.js +8 -17
  112. package/src/view/styles/padding.js +8 -16
  113. package/src/view/styles/utils.js +127 -160
  114. package/src/view/stylesmap.js +728 -905
  115. package/src/view/text.js +102 -126
  116. package/src/view/textproxy.js +144 -170
  117. package/src/view/treewalker.js +383 -479
  118. package/src/view/typecheckable.js +19 -0
  119. package/src/view/uielement.js +166 -187
  120. package/src/view/upcastwriter.js +395 -449
  121. package/src/view/view.js +569 -664
  122. package/src/dataprocessor/dataprocessor.jsdoc +0 -64
  123. package/src/model/item.jsdoc +0 -14
  124. package/src/view/elementdefinition.jsdoc +0 -59
  125. 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 );