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 1/3] 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 ); } From dfb16314ea7d81a2f3943a9f558c16b747096d69 Mon Sep 17 00:00:00 2001 From: Muhammad Junaid <61476900+m-jojo-s@users.noreply.github.com> Date: Thu, 14 Apr 2022 10:38:19 +0500 Subject: [PATCH 2/3] Using Components.canMove() for validation - shifted to canMove() for paste validation - fixed typo --- src/commands/view/PasteComponent.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/commands/view/PasteComponent.js b/src/commands/view/PasteComponent.js index 050a5a53f..9fe0af6bc 100644 --- a/src/commands/view/PasteComponent.js +++ b/src/commands/view/PasteComponent.js @@ -5,7 +5,6 @@ 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 => { @@ -18,10 +17,7 @@ export default { const at = coll.indexOf(comp) + 1; const addOpts = { at, action: opts.action || 'paste-component' }; const copyable = clp.filter(cop => cop.get('copyable')); - const pasteable = copyable.filter(cop => { - return sorter.validTarget(cop.getEl(), selected.getEl()).valid - || sorter.validTarget(cop.parent()?.getEl(), selected.getEl()).valid; - }); + const pasteable = copyable.filter(cop => editor.Components.canMove(comp.parent(), cop).result); if (contains(clp, comp) && comp.get('copyable')) { added = coll.add(comp.clone(), addOpts); From c8862ae535969577d417802ae4999b5788e17e89 Mon Sep 17 00:00:00 2001 From: Muhammad Junaid <61476900+m-jojo-s@users.noreply.github.com> Date: Thu, 14 Apr 2022 10:41:37 +0500 Subject: [PATCH 3/3] Using canMove() API for validation - fixed another typo --- src/commands/view/PasteComponent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/view/PasteComponent.js b/src/commands/view/PasteComponent.js index 9fe0af6bc..67fcf0f16 100644 --- a/src/commands/view/PasteComponent.js +++ b/src/commands/view/PasteComponent.js @@ -17,7 +17,7 @@ export default { const at = coll.indexOf(comp) + 1; const addOpts = { at, action: opts.action || 'paste-component' }; const copyable = clp.filter(cop => cop.get('copyable')); - const pasteable = copyable.filter(cop => editor.Components.canMove(comp.parent(), cop).result); + const pasteable = copyable.filter(cop => ed.Components.canMove(comp.parent(), cop).result); if (contains(clp, comp) && comp.get('copyable')) { added = coll.add(comp.clone(), addOpts);