@ckeditor/ckeditor5-engine 36.0.1 → 37.0.0-alpha.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/README.md +1 -1
- package/package.json +24 -23
- package/src/controller/datacontroller.d.ts +331 -0
- package/src/controller/datacontroller.js +62 -109
- package/src/controller/editingcontroller.d.ts +98 -0
- package/src/controller/editingcontroller.js +22 -46
- package/src/conversion/conversion.d.ts +476 -0
- package/src/conversion/conversion.js +328 -347
- package/src/conversion/conversionhelpers.d.ts +26 -0
- package/src/conversion/conversionhelpers.js +1 -5
- package/src/conversion/downcastdispatcher.d.ts +547 -0
- package/src/conversion/downcastdispatcher.js +74 -152
- package/src/conversion/downcasthelpers.d.ts +1226 -0
- package/src/conversion/downcasthelpers.js +843 -762
- package/src/conversion/mapper.d.ts +499 -0
- package/src/conversion/mapper.js +84 -99
- package/src/conversion/modelconsumable.d.ts +201 -0
- package/src/conversion/modelconsumable.js +96 -99
- package/src/conversion/upcastdispatcher.d.ts +492 -0
- package/src/conversion/upcastdispatcher.js +73 -100
- package/src/conversion/upcasthelpers.d.ts +499 -0
- package/src/conversion/upcasthelpers.js +406 -373
- package/src/conversion/viewconsumable.d.ts +177 -0
- package/src/conversion/viewconsumable.js +157 -162
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -0
- package/src/dataprocessor/basichtmlwriter.js +0 -9
- package/src/dataprocessor/dataprocessor.d.ts +61 -0
- package/src/dataprocessor/htmldataprocessor.d.ts +76 -0
- package/src/dataprocessor/htmldataprocessor.js +6 -28
- package/src/dataprocessor/htmlwriter.d.ts +16 -0
- package/src/dataprocessor/xmldataprocessor.d.ts +90 -0
- package/src/dataprocessor/xmldataprocessor.js +8 -40
- package/src/dev-utils/model.d.ts +124 -0
- package/src/dev-utils/model.js +41 -38
- package/src/dev-utils/operationreplayer.d.ts +51 -0
- package/src/dev-utils/operationreplayer.js +6 -14
- package/src/dev-utils/utils.d.ts +37 -0
- package/src/dev-utils/utils.js +5 -18
- package/src/dev-utils/view.d.ts +319 -0
- package/src/dev-utils/view.js +205 -226
- package/src/index.d.ts +105 -0
- package/src/index.js +1 -0
- package/src/model/batch.d.ts +106 -0
- package/src/model/differ.d.ts +329 -0
- package/src/model/document.d.ts +245 -0
- package/src/model/document.js +1 -1
- package/src/model/documentfragment.d.ts +196 -0
- package/src/model/documentfragment.js +2 -2
- package/src/model/documentselection.d.ts +420 -0
- package/src/model/element.d.ts +165 -0
- package/src/model/history.d.ts +114 -0
- package/src/model/item.d.ts +14 -0
- package/src/model/liveposition.d.ts +77 -0
- package/src/model/liverange.d.ts +102 -0
- package/src/model/markercollection.d.ts +335 -0
- package/src/model/model.d.ts +812 -0
- package/src/model/model.js +59 -30
- package/src/model/node.d.ts +256 -0
- package/src/model/nodelist.d.ts +91 -0
- package/src/model/operation/attributeoperation.d.ts +98 -0
- package/src/model/operation/detachoperation.d.ts +55 -0
- package/src/model/operation/insertoperation.d.ts +85 -0
- package/src/model/operation/markeroperation.d.ts +86 -0
- package/src/model/operation/mergeoperation.d.ts +95 -0
- package/src/model/operation/moveoperation.d.ts +91 -0
- package/src/model/operation/nooperation.d.ts +33 -0
- package/src/model/operation/operation.d.ts +89 -0
- package/src/model/operation/operationfactory.d.ts +18 -0
- package/src/model/operation/renameoperation.d.ts +78 -0
- package/src/model/operation/rootattributeoperation.d.ts +97 -0
- package/src/model/operation/rootattributeoperation.js +1 -1
- package/src/model/operation/splitoperation.d.ts +104 -0
- package/src/model/operation/transform.d.ts +100 -0
- package/src/model/operation/utils.d.ts +71 -0
- package/src/model/position.d.ts +539 -0
- package/src/model/position.js +1 -1
- package/src/model/range.d.ts +458 -0
- package/src/model/range.js +1 -1
- package/src/model/rootelement.d.ts +40 -0
- package/src/model/schema.d.ts +1176 -0
- package/src/model/schema.js +15 -15
- package/src/model/selection.d.ts +472 -0
- package/src/model/text.d.ts +66 -0
- package/src/model/text.js +0 -2
- package/src/model/textproxy.d.ts +144 -0
- package/src/model/treewalker.d.ts +186 -0
- package/src/model/treewalker.js +19 -10
- package/src/model/typecheckable.d.ts +255 -0
- package/src/model/utils/autoparagraphing.d.ts +37 -0
- package/src/model/utils/deletecontent.d.ts +58 -0
- package/src/model/utils/findoptimalinsertionrange.d.ts +32 -0
- package/src/model/utils/getselectedcontent.d.ts +30 -0
- package/src/model/utils/insertcontent.d.ts +46 -0
- package/src/model/utils/insertcontent.js +2 -12
- package/src/model/utils/insertobject.d.ts +44 -0
- package/src/model/utils/insertobject.js +3 -14
- package/src/model/utils/modifyselection.d.ts +48 -0
- package/src/model/utils/selection-post-fixer.d.ts +65 -0
- package/src/model/writer.d.ts +726 -0
- package/src/model/writer.js +6 -4
- package/src/view/attributeelement.d.ts +108 -0
- package/src/view/attributeelement.js +25 -69
- package/src/view/containerelement.d.ts +49 -0
- package/src/view/containerelement.js +10 -43
- package/src/view/datatransfer.d.ts +75 -0
- package/src/view/document.d.ts +184 -0
- package/src/view/document.js +15 -84
- package/src/view/documentfragment.d.ts +150 -0
- package/src/view/documentfragment.js +40 -81
- package/src/view/documentselection.d.ts +219 -0
- package/src/view/documentselection.js +75 -121
- package/src/view/domconverter.d.ts +620 -0
- package/src/view/domconverter.js +159 -276
- package/src/view/downcastwriter.d.ts +804 -0
- package/src/view/downcastwriter.js +336 -380
- package/src/view/editableelement.d.ts +52 -0
- package/src/view/editableelement.js +9 -49
- package/src/view/element.d.ts +466 -0
- package/src/view/element.js +150 -222
- package/src/view/elementdefinition.d.ts +87 -0
- package/src/view/emptyelement.d.ts +41 -0
- package/src/view/emptyelement.js +11 -44
- package/src/view/filler.d.ts +111 -0
- package/src/view/filler.js +24 -21
- package/src/view/item.d.ts +14 -0
- package/src/view/matcher.d.ts +486 -0
- package/src/view/matcher.js +247 -218
- package/src/view/node.d.ts +160 -0
- package/src/view/node.js +26 -100
- package/src/view/observer/arrowkeysobserver.d.ts +41 -0
- package/src/view/observer/arrowkeysobserver.js +0 -13
- package/src/view/observer/bubblingemittermixin.d.ts +166 -0
- package/src/view/observer/bubblingemittermixin.js +36 -25
- package/src/view/observer/bubblingeventinfo.d.ts +47 -0
- package/src/view/observer/bubblingeventinfo.js +3 -29
- package/src/view/observer/clickobserver.d.ts +43 -0
- package/src/view/observer/clickobserver.js +9 -19
- package/src/view/observer/compositionobserver.d.ts +82 -0
- package/src/view/observer/compositionobserver.js +13 -42
- package/src/view/observer/domeventdata.d.ts +50 -0
- package/src/view/observer/domeventdata.js +5 -30
- package/src/view/observer/domeventobserver.d.ts +69 -0
- package/src/view/observer/domeventobserver.js +19 -21
- package/src/view/observer/fakeselectionobserver.d.ts +46 -0
- package/src/view/observer/fakeselectionobserver.js +2 -15
- package/src/view/observer/focusobserver.d.ts +82 -0
- package/src/view/observer/focusobserver.js +14 -40
- package/src/view/observer/inputobserver.d.ts +86 -0
- package/src/view/observer/inputobserver.js +18 -64
- package/src/view/observer/keyobserver.d.ts +67 -0
- package/src/view/observer/keyobserver.js +8 -42
- package/src/view/observer/mouseobserver.d.ts +89 -0
- package/src/view/observer/mouseobserver.js +8 -28
- package/src/view/observer/mutationobserver.d.ts +82 -0
- package/src/view/observer/mutationobserver.js +7 -37
- package/src/view/observer/observer.d.ts +84 -0
- package/src/view/observer/observer.js +12 -25
- package/src/view/observer/selectionobserver.d.ts +143 -0
- package/src/view/observer/selectionobserver.js +9 -99
- package/src/view/observer/tabobserver.d.ts +42 -0
- package/src/view/observer/tabobserver.js +0 -14
- package/src/view/placeholder.d.ts +85 -0
- package/src/view/placeholder.js +26 -43
- package/src/view/position.d.ts +189 -0
- package/src/view/position.js +36 -83
- package/src/view/range.d.ts +279 -0
- package/src/view/range.js +79 -122
- package/src/view/rawelement.d.ts +73 -0
- package/src/view/rawelement.js +34 -48
- package/src/view/renderer.d.ts +265 -0
- package/src/view/renderer.js +105 -193
- package/src/view/rooteditableelement.d.ts +41 -0
- package/src/view/rooteditableelement.js +12 -40
- package/src/view/selection.d.ts +375 -0
- package/src/view/selection.js +79 -153
- package/src/view/styles/background.d.ts +33 -0
- package/src/view/styles/background.js +14 -12
- package/src/view/styles/border.d.ts +43 -0
- package/src/view/styles/border.js +58 -48
- package/src/view/styles/margin.d.ts +29 -0
- package/src/view/styles/margin.js +13 -11
- package/src/view/styles/padding.d.ts +29 -0
- package/src/view/styles/padding.js +13 -11
- package/src/view/styles/utils.d.ts +93 -0
- package/src/view/styles/utils.js +22 -48
- package/src/view/stylesmap.d.ts +675 -0
- package/src/view/stylesmap.js +249 -244
- package/src/view/text.d.ts +74 -0
- package/src/view/text.js +16 -46
- package/src/view/textproxy.d.ts +97 -0
- package/src/view/textproxy.js +10 -59
- package/src/view/treewalker.d.ts +195 -0
- package/src/view/treewalker.js +43 -106
- package/src/view/typecheckable.d.ts +401 -0
- package/src/view/uielement.d.ts +96 -0
- package/src/view/uielement.js +28 -62
- package/src/view/upcastwriter.d.ts +328 -0
- package/src/view/upcastwriter.js +124 -134
- package/src/view/view.d.ts +327 -0
- package/src/view/view.js +79 -150
|
@@ -34,73 +34,74 @@ import { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';
|
|
|
34
34
|
* The third parameter of the callback is an instance of {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi}
|
|
35
35
|
* which provides additional tools for converters.
|
|
36
36
|
*
|
|
37
|
-
* You can read more about conversion in the {@glink framework/
|
|
37
|
+
* You can read more about conversion in the {@glink framework/deep-dive/conversion/upcast Upcast conversion} guide.
|
|
38
38
|
*
|
|
39
39
|
* Examples of event-based converters:
|
|
40
40
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* // A converter for links (<a>).
|
|
43
|
+
* editor.data.upcastDispatcher.on( 'element:a', ( evt, data, conversionApi ) => {
|
|
44
|
+
* if ( conversionApi.consumable.consume( data.viewItem, { name: true, attributes: [ 'href' ] } ) ) {
|
|
45
|
+
* // The <a> element is inline and is represented by an attribute in the model.
|
|
46
|
+
* // This is why you need to convert only children.
|
|
47
|
+
* const { modelRange } = conversionApi.convertChildren( data.viewItem, data.modelCursor );
|
|
47
48
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
49
|
+
* for ( let item of modelRange.getItems() ) {
|
|
50
|
+
* if ( conversionApi.schema.checkAttribute( item, 'linkHref' ) ) {
|
|
51
|
+
* conversionApi.writer.setAttribute( 'linkHref', data.viewItem.getAttribute( 'href' ), item );
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* } );
|
|
55
56
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
57
|
+
* // Convert <p> element's font-size style.
|
|
58
|
+
* // Note: You should use a low-priority observer in order to ensure that
|
|
59
|
+
* // it is executed after the element-to-element converter.
|
|
60
|
+
* editor.data.upcastDispatcher.on( 'element:p', ( evt, data, conversionApi ) => {
|
|
61
|
+
* const { consumable, schema, writer } = conversionApi;
|
|
61
62
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* if ( !consumable.consume( data.viewItem, { style: 'font-size' } ) ) {
|
|
64
|
+
* return;
|
|
65
|
+
* }
|
|
65
66
|
*
|
|
66
|
-
*
|
|
67
|
+
* const fontSize = data.viewItem.getStyle( 'font-size' );
|
|
67
68
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
69
|
+
* // Do not go for the model element after data.modelCursor because it might happen
|
|
70
|
+
* // that a single view element was converted to multiple model elements. Get all of them.
|
|
71
|
+
* for ( const item of data.modelRange.getItems( { shallow: true } ) ) {
|
|
72
|
+
* if ( schema.checkAttribute( item, 'fontSize' ) ) {
|
|
73
|
+
* writer.setAttribute( 'fontSize', fontSize, item );
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
* }, { priority: 'low' } );
|
|
76
77
|
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
78
|
+
* // Convert all elements which have no custom converter into a paragraph (autoparagraphing).
|
|
79
|
+
* editor.data.upcastDispatcher.on( 'element', ( evt, data, conversionApi ) => {
|
|
80
|
+
* // Check if an element can be converted.
|
|
81
|
+
* if ( !conversionApi.consumable.test( data.viewItem, { name: data.viewItem.name } ) ) {
|
|
82
|
+
* // When an element is already consumed by higher priority converters, do nothing.
|
|
83
|
+
* return;
|
|
84
|
+
* }
|
|
84
85
|
*
|
|
85
|
-
*
|
|
86
|
+
* const paragraph = conversionApi.writer.createElement( 'paragraph' );
|
|
86
87
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
88
|
+
* // Try to safely insert a paragraph at the model cursor - it will find an allowed parent for the current element.
|
|
89
|
+
* if ( !conversionApi.safeInsert( paragraph, data.modelCursor ) ) {
|
|
90
|
+
* // When an element was not inserted, it means that you cannot insert a paragraph at this position.
|
|
91
|
+
* return;
|
|
92
|
+
* }
|
|
92
93
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
94
|
+
* // Consume the inserted element.
|
|
95
|
+
* conversionApi.consumable.consume( data.viewItem, { name: data.viewItem.name } ) );
|
|
95
96
|
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
97
|
+
* // Convert the children to a paragraph.
|
|
98
|
+
* const { modelRange } = conversionApi.convertChildren( data.viewItem, paragraph ) );
|
|
98
99
|
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
100
|
+
* // Update `modelRange` and `modelCursor` in the `data` as a conversion result.
|
|
101
|
+
* conversionApi.updateConversionResult( paragraph, data );
|
|
102
|
+
* }, { priority: 'low' } );
|
|
103
|
+
* ```
|
|
102
104
|
*
|
|
103
|
-
* @mixes module:utils/emittermixin~EmitterMixin
|
|
104
105
|
* @fires viewCleanup
|
|
105
106
|
* @fires element
|
|
106
107
|
* @fires text
|
|
@@ -111,7 +112,7 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
111
112
|
* Creates an upcast dispatcher that operates using the passed API.
|
|
112
113
|
*
|
|
113
114
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi
|
|
114
|
-
* @param
|
|
115
|
+
* @param conversionApi Additional properties for an interface that will be passed to events fired
|
|
115
116
|
* by the upcast dispatcher.
|
|
116
117
|
*/
|
|
117
118
|
constructor(conversionApi) {
|
|
@@ -120,43 +121,26 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
120
121
|
* The list of elements that were created during splitting.
|
|
121
122
|
*
|
|
122
123
|
* After the conversion process, the list is cleared.
|
|
123
|
-
*
|
|
124
|
-
* @private
|
|
125
|
-
* @type {Map.<module:engine/model/element~Element,Array.<module:engine/model/element~Element>>}
|
|
126
124
|
*/
|
|
127
125
|
this._splitParts = new Map();
|
|
128
126
|
/**
|
|
129
127
|
* The list of cursor parent elements that were created during splitting.
|
|
130
128
|
*
|
|
131
129
|
* After the conversion process the list is cleared.
|
|
132
|
-
*
|
|
133
|
-
* @private
|
|
134
|
-
* @type {Map.<module:engine/model/element~Element,Array.<module:engine/model/element~Element>>}
|
|
135
130
|
*/
|
|
136
131
|
this._cursorParents = new Map();
|
|
137
132
|
/**
|
|
138
133
|
* The position in the temporary structure where the converted content is inserted. The structure reflects the context of
|
|
139
134
|
* the target position where the content will be inserted. This property is built based on the context parameter of the
|
|
140
135
|
* convert method.
|
|
141
|
-
*
|
|
142
|
-
* @private
|
|
143
|
-
* @type {module:engine/model/position~Position|null}
|
|
144
136
|
*/
|
|
145
137
|
this._modelCursor = null;
|
|
146
138
|
/**
|
|
147
139
|
* The list of elements that were created during the splitting but should not get removed on conversion end even if they are empty.
|
|
148
140
|
*
|
|
149
141
|
* The list is cleared after the conversion process.
|
|
150
|
-
*
|
|
151
|
-
* @private
|
|
152
|
-
* @type {Set.<module:engine/model/element~Element>}
|
|
153
142
|
*/
|
|
154
143
|
this._emptyElementsToKeep = new Set();
|
|
155
|
-
/**
|
|
156
|
-
* An interface passed by the dispatcher to the event callbacks.
|
|
157
|
-
*
|
|
158
|
-
* @member {module:engine/conversion/upcastdispatcher~UpcastConversionApi}
|
|
159
|
-
*/
|
|
160
144
|
this.conversionApi = {
|
|
161
145
|
...conversionApi,
|
|
162
146
|
consumable: null,
|
|
@@ -164,10 +148,10 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
164
148
|
store: null,
|
|
165
149
|
convertItem: (viewItem, modelCursor) => this._convertItem(viewItem, modelCursor),
|
|
166
150
|
convertChildren: (viewElement, positionOrElement) => this._convertChildren(viewElement, positionOrElement),
|
|
167
|
-
safeInsert: (
|
|
151
|
+
safeInsert: (modelNode, position) => this._safeInsert(modelNode, position),
|
|
168
152
|
updateConversionResult: (modelElement, data) => this._updateConversionResult(modelElement, data),
|
|
169
153
|
// Advanced API - use only if custom position handling is needed.
|
|
170
|
-
splitToAllowedParent: (
|
|
154
|
+
splitToAllowedParent: (modelNode, modelCursor) => this._splitToAllowedParent(modelNode, modelCursor),
|
|
171
155
|
getSplitParts: modelElement => this._getSplitParts(modelElement),
|
|
172
156
|
keepEmptyElement: modelElement => this._keepEmptyElement(modelElement)
|
|
173
157
|
};
|
|
@@ -178,11 +162,10 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
178
162
|
* @fires element
|
|
179
163
|
* @fires text
|
|
180
164
|
* @fires documentFragment
|
|
181
|
-
* @param
|
|
182
|
-
*
|
|
183
|
-
* @param
|
|
184
|
-
* @
|
|
185
|
-
* @returns {module:engine/model/documentfragment~DocumentFragment} Model data that is the result of the conversion process
|
|
165
|
+
* @param viewElement The part of the view to be converted.
|
|
166
|
+
* @param writer An instance of the model writer.
|
|
167
|
+
* @param context Elements will be converted according to this context.
|
|
168
|
+
* @returns Model data that is the result of the conversion process
|
|
186
169
|
* wrapped in `DocumentFragment`. Converted marker elements will be set as the document fragment's
|
|
187
170
|
* {@link module:engine/model/documentfragment~DocumentFragment#markers static markers map}.
|
|
188
171
|
*/
|
|
@@ -226,7 +209,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
226
209
|
return documentFragment;
|
|
227
210
|
}
|
|
228
211
|
/**
|
|
229
|
-
* @private
|
|
230
212
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#convertItem
|
|
231
213
|
*/
|
|
232
214
|
_convertItem(viewItem, modelCursor) {
|
|
@@ -254,7 +236,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
254
236
|
return { modelRange: data.modelRange, modelCursor: data.modelCursor };
|
|
255
237
|
}
|
|
256
238
|
/**
|
|
257
|
-
* @private
|
|
258
239
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#convertChildren
|
|
259
240
|
*/
|
|
260
241
|
_convertChildren(viewItem, elementOrModelCursor) {
|
|
@@ -271,24 +252,22 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
271
252
|
return { modelRange, modelCursor: nextModelCursor };
|
|
272
253
|
}
|
|
273
254
|
/**
|
|
274
|
-
* @private
|
|
275
255
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#safeInsert
|
|
276
256
|
*/
|
|
277
|
-
_safeInsert(
|
|
257
|
+
_safeInsert(modelNode, position) {
|
|
278
258
|
// Find allowed parent for element that we are going to insert.
|
|
279
259
|
// If current parent does not allow to insert element but one of the ancestors does
|
|
280
260
|
// then split nodes to allowed parent.
|
|
281
|
-
const splitResult = this._splitToAllowedParent(
|
|
261
|
+
const splitResult = this._splitToAllowedParent(modelNode, position);
|
|
282
262
|
// When there is no split result it means that we can't insert element to model tree, so let's skip it.
|
|
283
263
|
if (!splitResult) {
|
|
284
264
|
return false;
|
|
285
265
|
}
|
|
286
266
|
// Insert element on allowed position.
|
|
287
|
-
this.conversionApi.writer.insert(
|
|
267
|
+
this.conversionApi.writer.insert(modelNode, splitResult.position);
|
|
288
268
|
return true;
|
|
289
269
|
}
|
|
290
270
|
/**
|
|
291
|
-
* @private
|
|
292
271
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#updateConversionResult
|
|
293
272
|
*/
|
|
294
273
|
_updateConversionResult(modelElement, data) {
|
|
@@ -313,7 +292,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
313
292
|
}
|
|
314
293
|
}
|
|
315
294
|
/**
|
|
316
|
-
* @private
|
|
317
295
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#splitToAllowedParent
|
|
318
296
|
*/
|
|
319
297
|
_splitToAllowedParent(node, modelCursor) {
|
|
@@ -378,10 +356,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
378
356
|
* Registers that a `splitPart` element is a split part of the `originalPart` element.
|
|
379
357
|
*
|
|
380
358
|
* The data set by this method is used by {@link #_getSplitParts} and {@link #_removeEmptyElements}.
|
|
381
|
-
*
|
|
382
|
-
* @private
|
|
383
|
-
* @param {module:engine/model/element~Element} originalPart
|
|
384
|
-
* @param {module:engine/model/element~Element} splitPart
|
|
385
359
|
*/
|
|
386
360
|
_registerSplitPair(originalPart, splitPart) {
|
|
387
361
|
if (!this._splitParts.has(originalPart)) {
|
|
@@ -392,7 +366,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
392
366
|
list.push(splitPart);
|
|
393
367
|
}
|
|
394
368
|
/**
|
|
395
|
-
* @private
|
|
396
369
|
* @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#getSplitParts
|
|
397
370
|
*/
|
|
398
371
|
_getSplitParts(element) {
|
|
@@ -407,8 +380,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
407
380
|
}
|
|
408
381
|
/**
|
|
409
382
|
* Mark an element that were created during the splitting to not get removed on conversion end even if it is empty.
|
|
410
|
-
*
|
|
411
|
-
* @private
|
|
412
383
|
*/
|
|
413
384
|
_keepEmptyElement(element) {
|
|
414
385
|
this._emptyElementsToKeep.add(element);
|
|
@@ -418,8 +389,6 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
418
389
|
*
|
|
419
390
|
* This method works recursively to re-check empty elements again after at least one element was removed in the initial call,
|
|
420
391
|
* as some elements might have become empty after other empty elements were removed from them.
|
|
421
|
-
*
|
|
422
|
-
* @private
|
|
423
392
|
*/
|
|
424
393
|
_removeEmptyElements() {
|
|
425
394
|
let anyRemoved = false;
|
|
@@ -435,11 +404,13 @@ export default class UpcastDispatcher extends EmitterMixin() {
|
|
|
435
404
|
}
|
|
436
405
|
}
|
|
437
406
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
407
|
+
/**
|
|
408
|
+
* Traverses given model item and searches elements which marks marker range. Found element is removed from
|
|
409
|
+
* DocumentFragment but path of this element is stored in a Map which is then returned.
|
|
410
|
+
*
|
|
411
|
+
* @param modelItem Fragment of model.
|
|
412
|
+
* @returns List of static markers.
|
|
413
|
+
*/
|
|
443
414
|
function extractMarkersFromModelFragment(modelItem, writer) {
|
|
444
415
|
const markerElements = new Set();
|
|
445
416
|
const markers = new Map();
|
|
@@ -469,7 +440,9 @@ function extractMarkersFromModelFragment(modelItem, writer) {
|
|
|
469
440
|
}
|
|
470
441
|
return markers;
|
|
471
442
|
}
|
|
472
|
-
|
|
443
|
+
/**
|
|
444
|
+
* Creates model fragment according to given context and returns position in the bottom (the deepest) element.
|
|
445
|
+
*/
|
|
473
446
|
function createContextTree(contextDefinition, writer) {
|
|
474
447
|
let position;
|
|
475
448
|
for (const item of new SchemaContext(contextDefinition)) {
|