From 4c244656fa5cc9fa0e859b22cdafe8758e9727d3 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 5 Feb 2022 19:14:18 +0100 Subject: [PATCH] Add default append in insertComponent --- src/dom_components/view/ComponentTextView.js | 38 ++++++++++---------- src/utils/Sorter.js | 10 +++--- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/dom_components/view/ComponentTextView.js b/src/dom_components/view/ComponentTextView.js index 962e84c21..f360cda50 100644 --- a/src/dom_components/view/ComponentTextView.js +++ b/src/dom_components/view/ComponentTextView.js @@ -149,26 +149,28 @@ export default ComponentView.extend({ const cmps = model.components(); const newCmps = []; - model.components().forEach(cmp => { - if (cmp === textModel) { - const type = 'textnode'; - const cnt = cmp.get('content'); - newCmps.push({ type, content: cnt.slice(0, offset) }); - newCmps.push(content); - newCmps.push({ type, content: cnt.slice(offset) }); - } else { - newCmps.push(cmp); - } - }); - - const result = newCmps.filter(Boolean); - const index = result.indexOf(content); - cmps.reset(result); - - return cmps.at(index); + if (textModel && textModel.is?.('textnode')) { + model.components().forEach(cmp => { + if (cmp === textModel) { + const type = 'textnode'; + const cnt = cmp.get('content'); + newCmps.push({ type, content: cnt.slice(0, offset) }); + newCmps.push(content); + newCmps.push({ type, content: cnt.slice(offset) }); + } else { + newCmps.push(cmp); + } + }); + + const result = newCmps.filter(Boolean); + const index = result.indexOf(content); + cmps.reset(result); + + return cmps.at(index); + } } - return null; + return model.append(content); }, /** diff --git a/src/utils/Sorter.js b/src/utils/Sorter.js index ae28323f2..ce96dc98c 100644 --- a/src/utils/Sorter.js +++ b/src/utils/Sorter.js @@ -84,7 +84,7 @@ export default Backbone.View.extend({ * Triggered when the offset of the editro is changed */ updateOffset() { - const offset = this.em.get('canvasOffset') || {}; + const offset = this.em?.get('canvasOffset') || {}; this.offTop = offset.top; this.offLeft = offset.left; }, @@ -99,7 +99,9 @@ export default Backbone.View.extend({ }, updateTextViewCursorPosition(e) { - const Canvas = this.em.get('Canvas'); + const { em } = this; + if (!em) return; + const Canvas = em.get('Canvas'); const targetDoc = Canvas.getDocument(); let range = null; @@ -304,8 +306,8 @@ export default Backbone.View.extend({ this.onStart({ sorter: this, target: srcModel, - parent: srcModel && srcModel.parent(), - index: srcModel && srcModel.index(), + parent: srcModel && srcModel.parent?.(), + index: srcModel && srcModel.index?.(), }); // Avoid strange effects on dragging