|
@@ -36,7 +36,7 @@ CKEDITOR.define( () => {
|
|
|
* @returns {HTMLElement}
|
|
* @returns {HTMLElement}
|
|
|
*/
|
|
*/
|
|
|
render() {
|
|
render() {
|
|
|
- return this._renderElement( this.def );
|
|
|
|
|
|
|
+ return this._renderElement( this.def, true );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -44,9 +44,10 @@ CKEDITOR.define( () => {
|
|
|
*
|
|
*
|
|
|
* @protected
|
|
* @protected
|
|
|
* @param {TemplateDefinition} def Definition of an element.
|
|
* @param {TemplateDefinition} def Definition of an element.
|
|
|
|
|
+ * @param {Boolean} intoFragment If set, children are rendered into DocumentFragment.
|
|
|
* @returns {HTMLElement} A rendered element.
|
|
* @returns {HTMLElement} A rendered element.
|
|
|
*/
|
|
*/
|
|
|
- _renderElement( def ) {
|
|
|
|
|
|
|
+ _renderElement( def, intoFragment ) {
|
|
|
if ( !def ) {
|
|
if ( !def ) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
@@ -60,7 +61,15 @@ CKEDITOR.define( () => {
|
|
|
this._renderElementAttributes( def, el );
|
|
this._renderElementAttributes( def, el );
|
|
|
|
|
|
|
|
// Invoke children recursively.
|
|
// Invoke children recursively.
|
|
|
- this._renderElementChildren( def, el );
|
|
|
|
|
|
|
+ if ( intoFragment ) {
|
|
|
|
|
+ const docFragment = document.createDocumentFragment();
|
|
|
|
|
+
|
|
|
|
|
+ this._renderElementChildren( def, docFragment );
|
|
|
|
|
+
|
|
|
|
|
+ el.appendChild( docFragment );
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this._renderElementChildren( def, el );
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// Activate DOM binding for event listeners.
|
|
// Activate DOM binding for event listeners.
|
|
|
this._activateElementListeners( def, el );
|
|
this._activateElementListeners( def, el );
|