Browse Source

Refactor PasteComponents

pull/4267/head
Artur Arseniev 4 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 = {}) {
const em = ed.getModel();
const clp = em.get('clipboard');
const selected = ed.getSelected();
const lastSelected = ed.getSelected();
if (clp && selected) {
ed.getSelectedAll().forEach(comp => {
if (!comp) return;
const coll = comp.collection;
if (!coll) return;
if (clp && lastSelected) {
ed.getSelectedAll().forEach(selected => {
const { collection } = selected;
if (!collection) return;
let added;
const at = coll.indexOf(comp) + 1;
const at = selected.index() + 1;
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')) {
added = coll.add(comp.clone(), addOpts);
if (contains(clp, selected) && selected.get('copyable')) {
added = collection.add(selected.clone(), addOpts);
} 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()),
addOpts
);
@ -32,7 +30,7 @@ export default {
added.forEach(add => ed.trigger('component:paste', add));
});
selected.emitUpdate();
lastSelected.emitUpdate();
}
},
};

Loading…
Cancel
Save