@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.
- package/CHANGELOG.md +823 -0
- package/LICENSE.md +4 -0
- package/package.json +32 -25
- package/src/controller/datacontroller.js +467 -561
- package/src/controller/editingcontroller.js +168 -204
- package/src/conversion/conversion.js +541 -565
- package/src/conversion/conversionhelpers.js +24 -28
- package/src/conversion/downcastdispatcher.js +457 -686
- package/src/conversion/downcasthelpers.js +1583 -1965
- package/src/conversion/mapper.js +518 -707
- package/src/conversion/modelconsumable.js +240 -283
- package/src/conversion/upcastdispatcher.js +372 -718
- package/src/conversion/upcasthelpers.js +707 -818
- package/src/conversion/viewconsumable.js +524 -581
- package/src/dataprocessor/basichtmlwriter.js +12 -16
- package/src/dataprocessor/dataprocessor.js +5 -0
- package/src/dataprocessor/htmldataprocessor.js +101 -117
- package/src/dataprocessor/htmlwriter.js +1 -18
- package/src/dataprocessor/xmldataprocessor.js +117 -138
- package/src/dev-utils/model.js +260 -352
- package/src/dev-utils/operationreplayer.js +106 -126
- package/src/dev-utils/utils.js +34 -51
- package/src/dev-utils/view.js +632 -753
- package/src/index.js +0 -11
- package/src/model/batch.js +111 -127
- package/src/model/differ.js +988 -1233
- package/src/model/document.js +340 -449
- package/src/model/documentfragment.js +327 -364
- package/src/model/documentselection.js +996 -1189
- package/src/model/element.js +306 -410
- package/src/model/history.js +224 -262
- package/src/model/item.js +5 -0
- package/src/model/liveposition.js +84 -145
- package/src/model/liverange.js +108 -185
- package/src/model/markercollection.js +379 -480
- package/src/model/model.js +883 -1034
- package/src/model/node.js +419 -463
- package/src/model/nodelist.js +175 -201
- package/src/model/operation/attributeoperation.js +153 -182
- package/src/model/operation/detachoperation.js +64 -83
- package/src/model/operation/insertoperation.js +135 -166
- package/src/model/operation/markeroperation.js +114 -140
- package/src/model/operation/mergeoperation.js +163 -191
- package/src/model/operation/moveoperation.js +157 -187
- package/src/model/operation/nooperation.js +28 -38
- package/src/model/operation/operation.js +106 -125
- package/src/model/operation/operationfactory.js +30 -34
- package/src/model/operation/renameoperation.js +109 -135
- package/src/model/operation/rootattributeoperation.js +155 -188
- package/src/model/operation/splitoperation.js +196 -232
- package/src/model/operation/transform.js +1833 -2204
- package/src/model/operation/utils.js +140 -204
- package/src/model/position.js +899 -1053
- package/src/model/range.js +910 -1028
- package/src/model/rootelement.js +77 -97
- package/src/model/schema.js +1189 -1835
- package/src/model/selection.js +745 -862
- package/src/model/text.js +90 -114
- package/src/model/textproxy.js +204 -240
- package/src/model/treewalker.js +316 -397
- package/src/model/typecheckable.js +16 -0
- package/src/model/utils/autoparagraphing.js +32 -44
- package/src/model/utils/deletecontent.js +334 -418
- package/src/model/utils/findoptimalinsertionrange.js +25 -36
- package/src/model/utils/getselectedcontent.js +96 -118
- package/src/model/utils/insertcontent.js +654 -773
- package/src/model/utils/insertobject.js +96 -119
- package/src/model/utils/modifyselection.js +120 -158
- package/src/model/utils/selection-post-fixer.js +153 -201
- package/src/model/writer.js +1305 -1474
- package/src/view/attributeelement.js +189 -225
- package/src/view/containerelement.js +75 -85
- package/src/view/document.js +172 -215
- package/src/view/documentfragment.js +200 -249
- package/src/view/documentselection.js +338 -367
- package/src/view/domconverter.js +1371 -1613
- package/src/view/downcastwriter.js +1747 -2076
- package/src/view/editableelement.js +81 -97
- package/src/view/element.js +739 -890
- package/src/view/elementdefinition.js +5 -0
- package/src/view/emptyelement.js +82 -92
- package/src/view/filler.js +35 -50
- package/src/view/item.js +5 -0
- package/src/view/matcher.js +260 -559
- package/src/view/node.js +274 -360
- package/src/view/observer/arrowkeysobserver.js +19 -28
- package/src/view/observer/bubblingemittermixin.js +120 -263
- package/src/view/observer/bubblingeventinfo.js +47 -55
- package/src/view/observer/clickobserver.js +7 -13
- package/src/view/observer/compositionobserver.js +14 -24
- package/src/view/observer/domeventdata.js +57 -67
- package/src/view/observer/domeventobserver.js +40 -64
- package/src/view/observer/fakeselectionobserver.js +81 -96
- package/src/view/observer/focusobserver.js +45 -61
- package/src/view/observer/inputobserver.js +7 -13
- package/src/view/observer/keyobserver.js +17 -27
- package/src/view/observer/mouseobserver.js +7 -14
- package/src/view/observer/mutationobserver.js +220 -315
- package/src/view/observer/observer.js +81 -102
- package/src/view/observer/selectionobserver.js +191 -246
- package/src/view/observer/tabobserver.js +23 -36
- package/src/view/placeholder.js +128 -173
- package/src/view/position.js +350 -401
- package/src/view/range.js +453 -513
- package/src/view/rawelement.js +85 -112
- package/src/view/renderer.js +874 -1014
- package/src/view/rooteditableelement.js +80 -90
- package/src/view/selection.js +608 -689
- package/src/view/styles/background.js +43 -44
- package/src/view/styles/border.js +220 -276
- package/src/view/styles/margin.js +8 -17
- package/src/view/styles/padding.js +8 -16
- package/src/view/styles/utils.js +127 -160
- package/src/view/stylesmap.js +728 -905
- package/src/view/text.js +102 -126
- package/src/view/textproxy.js +144 -170
- package/src/view/treewalker.js +383 -479
- package/src/view/typecheckable.js +19 -0
- package/src/view/uielement.js +166 -187
- package/src/view/upcastwriter.js +395 -449
- package/src/view/view.js +569 -664
- package/src/dataprocessor/dataprocessor.jsdoc +0 -64
- package/src/model/item.jsdoc +0 -14
- package/src/view/elementdefinition.jsdoc +0 -59
- package/src/view/item.jsdoc +0 -14
|
@@ -2,15 +2,12 @@
|
|
|
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
|
-
|
|
5
|
+
/* eslint-disable new-cap */
|
|
6
6
|
/**
|
|
7
7
|
* @module engine/view/editableelement
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
9
|
import ContainerElement from './containerelement';
|
|
11
|
-
import
|
|
12
|
-
import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
|
|
13
|
-
|
|
10
|
+
import { default as ObservableMixin } from '@ckeditor/ckeditor5-utils/src/observablemixin';
|
|
14
11
|
/**
|
|
15
12
|
* Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
|
|
16
13
|
* or nested editable area in the editor.
|
|
@@ -23,96 +20,83 @@ import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
|
|
|
23
20
|
* @extends module:engine/view/containerelement~ContainerElement
|
|
24
21
|
* @mixes module:utils/observablemixin~ObservableMixin
|
|
25
22
|
*/
|
|
26
|
-
export default class EditableElement extends ContainerElement {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// Update focus state based on selection changes.
|
|
65
|
-
this.listenTo( document.selection, 'change', () => {
|
|
66
|
-
this.isFocused = document.isFocused && document.selection.editableElement == this;
|
|
67
|
-
} );
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Checks whether this object is of the given.
|
|
72
|
-
*
|
|
73
|
-
* editableElement.is( 'editableElement' ); // -> true
|
|
74
|
-
* editableElement.is( 'element' ); // -> true
|
|
75
|
-
* editableElement.is( 'node' ); // -> true
|
|
76
|
-
* editableElement.is( 'view:editableElement' ); // -> true
|
|
77
|
-
* editableElement.is( 'view:element' ); // -> true
|
|
78
|
-
* editableElement.is( 'view:node' ); // -> true
|
|
79
|
-
*
|
|
80
|
-
* editableElement.is( 'model:element' ); // -> false
|
|
81
|
-
* editableElement.is( 'documentFragment' ); // -> false
|
|
82
|
-
*
|
|
83
|
-
* Assuming that the object being checked is an editbale element, you can also check its
|
|
84
|
-
* {@link module:engine/view/editableelement~EditableElement#name name}:
|
|
85
|
-
*
|
|
86
|
-
* editableElement.is( 'element', 'div' ); // -> true if this is a div element
|
|
87
|
-
* editableElement.is( 'editableElement', 'div' ); // -> same as above
|
|
88
|
-
* text.is( 'element', 'div' ); -> false
|
|
89
|
-
*
|
|
90
|
-
* {@link module:engine/view/node~Node#is Check the entire list of view objects} which implement the `is()` method.
|
|
91
|
-
*
|
|
92
|
-
* @param {String} type Type to check.
|
|
93
|
-
* @param {String} [name] Element name.
|
|
94
|
-
* @returns {Boolean}
|
|
95
|
-
*/
|
|
96
|
-
is( type, name = null ) {
|
|
97
|
-
if ( !name ) {
|
|
98
|
-
return type === 'editableElement' || type === 'view:editableElement' ||
|
|
99
|
-
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
100
|
-
type === 'containerElement' || type === 'view:containerElement' ||
|
|
101
|
-
type === 'element' || type === 'view:element' ||
|
|
102
|
-
type === 'node' || type === 'view:node';
|
|
103
|
-
} else {
|
|
104
|
-
return name === this.name && (
|
|
105
|
-
type === 'editableElement' || type === 'view:editableElement' ||
|
|
106
|
-
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
107
|
-
type === 'containerElement' || type === 'view:containerElement' ||
|
|
108
|
-
type === 'element' || type === 'view:element'
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
destroy() {
|
|
114
|
-
this.stopListening();
|
|
115
|
-
}
|
|
23
|
+
export default class EditableElement extends ObservableMixin(ContainerElement) {
|
|
24
|
+
/**
|
|
25
|
+
* Creates an editable element.
|
|
26
|
+
*
|
|
27
|
+
* @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
constructor(...args) {
|
|
31
|
+
super(...args);
|
|
32
|
+
const document = args[0];
|
|
33
|
+
/**
|
|
34
|
+
* Whether the editable is in read-write or read-only mode.
|
|
35
|
+
*
|
|
36
|
+
* @observable
|
|
37
|
+
* @member {Boolean} module:engine/view/editableelement~EditableElement#isReadOnly
|
|
38
|
+
*/
|
|
39
|
+
this.set('isReadOnly', false);
|
|
40
|
+
/**
|
|
41
|
+
* Whether the editable is focused.
|
|
42
|
+
*
|
|
43
|
+
* This property updates when {@link module:engine/view/document~Document#isFocused document.isFocused} or view
|
|
44
|
+
* selection is changed.
|
|
45
|
+
*
|
|
46
|
+
* @readonly
|
|
47
|
+
* @observable
|
|
48
|
+
* @member {Boolean} module:engine/view/editableelement~EditableElement#isFocused
|
|
49
|
+
*/
|
|
50
|
+
this.set('isFocused', false);
|
|
51
|
+
this.bind('isReadOnly').to(document);
|
|
52
|
+
this.bind('isFocused').to(document, 'isFocused', isFocused => isFocused && document.selection.editableElement == this);
|
|
53
|
+
// Update focus state based on selection changes.
|
|
54
|
+
this.listenTo(document.selection, 'change', () => {
|
|
55
|
+
this.isFocused = document.isFocused && document.selection.editableElement == this;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
destroy() {
|
|
59
|
+
this.stopListening();
|
|
60
|
+
}
|
|
116
61
|
}
|
|
117
|
-
|
|
118
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether this object is of the given.
|
|
64
|
+
*
|
|
65
|
+
* editableElement.is( 'editableElement' ); // -> true
|
|
66
|
+
* editableElement.is( 'element' ); // -> true
|
|
67
|
+
* editableElement.is( 'node' ); // -> true
|
|
68
|
+
* editableElement.is( 'view:editableElement' ); // -> true
|
|
69
|
+
* editableElement.is( 'view:element' ); // -> true
|
|
70
|
+
* editableElement.is( 'view:node' ); // -> true
|
|
71
|
+
*
|
|
72
|
+
* editableElement.is( 'model:element' ); // -> false
|
|
73
|
+
* editableElement.is( 'documentFragment' ); // -> false
|
|
74
|
+
*
|
|
75
|
+
* Assuming that the object being checked is an editbale element, you can also check its
|
|
76
|
+
* {@link module:engine/view/editableelement~EditableElement#name name}:
|
|
77
|
+
*
|
|
78
|
+
* editableElement.is( 'element', 'div' ); // -> true if this is a div element
|
|
79
|
+
* editableElement.is( 'editableElement', 'div' ); // -> same as above
|
|
80
|
+
* text.is( 'element', 'div' ); -> false
|
|
81
|
+
*
|
|
82
|
+
* {@link module:engine/view/node~Node#is Check the entire list of view objects} which implement the `is()` method.
|
|
83
|
+
*
|
|
84
|
+
* @param {String} type Type to check.
|
|
85
|
+
* @param {String} [name] Element name.
|
|
86
|
+
* @returns {Boolean}
|
|
87
|
+
*/
|
|
88
|
+
EditableElement.prototype.is = function (type, name) {
|
|
89
|
+
if (!name) {
|
|
90
|
+
return type === 'editableElement' || type === 'view:editableElement' ||
|
|
91
|
+
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
92
|
+
type === 'containerElement' || type === 'view:containerElement' ||
|
|
93
|
+
type === 'element' || type === 'view:element' ||
|
|
94
|
+
type === 'node' || type === 'view:node';
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return name === this.name && (type === 'editableElement' || type === 'view:editableElement' ||
|
|
98
|
+
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
99
|
+
type === 'containerElement' || type === 'view:containerElement' ||
|
|
100
|
+
type === 'element' || type === 'view:element');
|
|
101
|
+
}
|
|
102
|
+
};
|