Browse Source

Refactor PasteComponents

pull/4267/head
Artur Arseniev 5 years ago
parent
commit
f1df810385
  1. 26
      src/commands/view/PasteComponent.js

26
src/commands/view/PasteComponent.js

@ -4,25 +4,23 @@ export default {
run(ed, s, opts = {}) { run(ed, s, opts = {}) {
const em = ed.getModel(); const em = ed.getModel();
const clp = em.get('clipboard'); const clp = em.get('clipboard');
const selected = ed.getSelected(); const lastSelected = ed.getSelected();
if (clp && selected) { if (clp && lastSelected) {
ed.getSelectedAll().forEach(comp => { ed.getSelectedAll().forEach(selected => {
if (!comp) return; const { collection } = selected;
if (!collection) return;
const coll = comp.collection;
if (!coll) return;
let added; let added;
const at = coll.indexOf(comp) + 1; const at = selected.index() + 1;
const addOpts = { at, action: opts.action || 'paste-component' }; const addOpts = { at, action: opts.action || 'paste-component' };
const copyable = clp.filter(cop => cop.get('copyable'));
const pasteable = copyable.filter(cop => ed.Components.canMove(comp.parent(), cop).result);
if (contains(clp, comp) && comp.get('copyable')) { if (contains(clp, selected) && selected.get('copyable')) {
added = coll.add(comp.clone(), addOpts); added = collection.add(selected.clone(), addOpts);
} else { } else {
added = coll.add( const copyable = clp.filter(cop => cop.get('copyable'));
const pasteable = copyable.filter(cop => ed.Components.canMove(selected.parent(), cop).result);
added = collection.add(
pasteable.map(cop => cop.clone()), pasteable.map(cop => cop.clone()),
addOpts addOpts
); );
@ -32,7 +30,7 @@ export default {
added.forEach(add => ed.trigger('component:paste', add)); added.forEach(add => ed.trigger('component:paste', add));
}); });
selected.emitUpdate(); lastSelected.emitUpdate();
} }
}, },
}; };

Loading…
Cancel
Save