From dbd6d3ff6cd78a3a07757e190649326e3a06e084 Mon Sep 17 00:00:00 2001 From: Muhammad Junaid <61476900+m-jojo-s@users.noreply.github.com> Date: Thu, 7 Apr 2022 01:34:32 +0500 Subject: [PATCH] added validity check before pasting Using sorter to test for validity if: - component can be pasted inside selection - component can be pasted inside parent of selection --- src/commands/view/PasteComponent.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/commands/view/PasteComponent.js b/src/commands/view/PasteComponent.js index a2190864d..050a5a53f 100644 --- a/src/commands/view/PasteComponent.js +++ b/src/commands/view/PasteComponent.js @@ -5,6 +5,7 @@ export default { const em = ed.getModel(); const clp = em.get('clipboard'); const selected = ed.getSelected(); + const sorter = ed.BlockManager.getConfig().getSorter(); if (clp && selected) { ed.getSelectedAll().forEach(comp => { @@ -13,16 +14,20 @@ export default { const coll = comp.collection; if (!coll) return; + let added; const at = coll.indexOf(comp) + 1; const addOpts = { at, action: opts.action || 'paste-component' }; const copyable = clp.filter(cop => cop.get('copyable')); - let added; + const pasteable = copyable.filter(cop => { + return sorter.validTarget(cop.getEl(), selected.getEl()).valid + || sorter.validTarget(cop.parent()?.getEl(), selected.getEl()).valid; + }); if (contains(clp, comp) && comp.get('copyable')) { added = coll.add(comp.clone(), addOpts); } else { added = coll.add( - copyable.map(cop => cop.clone()), + pasteable.map(cop => cop.clone()), addOpts ); }