|
|
@@ -195,32 +195,24 @@ export default class DomConverter {
|
|
|
if ( viewNode.is( 'documentFragment' ) ) {
|
|
|
// Create DOM document fragment.
|
|
|
domElement = domDocument.createDocumentFragment();
|
|
|
-
|
|
|
- if ( options.bind ) {
|
|
|
- this.bindDocumentFragments( domElement, viewNode );
|
|
|
- }
|
|
|
} else if ( viewNode.is( 'uiElement' ) ) {
|
|
|
// UIElement has it's own render() method.
|
|
|
// https://github.com/ckeditor/ckeditor5-engine/issues/799
|
|
|
domElement = viewNode.render( domDocument );
|
|
|
-
|
|
|
- if ( options.bind ) {
|
|
|
- this.bindElements( domElement, viewNode );
|
|
|
- }
|
|
|
} else {
|
|
|
// Create DOM element.
|
|
|
domElement = domDocument.createElement( viewNode.name );
|
|
|
|
|
|
- if ( options.bind ) {
|
|
|
- this.bindElements( domElement, viewNode );
|
|
|
- }
|
|
|
-
|
|
|
// Copy element's attributes.
|
|
|
for ( const key of viewNode.getAttributeKeys() ) {
|
|
|
domElement.setAttribute( key, viewNode.getAttribute( key ) );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ( options.bind ) {
|
|
|
+ this.bindDocumentFragments( domElement, viewNode );
|
|
|
+ }
|
|
|
+
|
|
|
if ( options.withChildren || options.withChildren === undefined ) {
|
|
|
for ( const child of this.viewChildrenToDom( viewNode, domDocument, options ) ) {
|
|
|
domElement.appendChild( child );
|
|
|
@@ -361,6 +353,11 @@ export default class DomConverter {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ // When node is inside UIElement it should not be converted to view.
|
|
|
+ if ( isInsideUIElement( domNode, this._domToViewMapping ) ) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
if ( this.isText( domNode ) ) {
|
|
|
if ( isInlineFiller( domNode ) ) {
|
|
|
return null;
|
|
|
@@ -1097,3 +1094,21 @@ function forEachDomNodeAncestor( node, callback ) {
|
|
|
node = node.parentNode;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+function isInsideUIElement( domNode, domToViewMapping ) {
|
|
|
+ const ancestors = getAncestors( domNode );
|
|
|
+
|
|
|
+ // Remove domNode from the list.
|
|
|
+ ancestors.pop();
|
|
|
+
|
|
|
+ while ( ancestors.length ) {
|
|
|
+ const domNode = ancestors.pop();
|
|
|
+ const viewNode = domToViewMapping.get( domNode );
|
|
|
+
|
|
|
+ if ( viewNode && viewNode.is( 'uiElement' ) ) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+}
|