|
|
|
@ -1,9 +1,11 @@ |
|
|
|
import { isArray, contains } from 'underscore'; |
|
|
|
import Component from '../../dom_components/model/Component'; |
|
|
|
import { CustomCommand } from './CommandAbstract'; |
|
|
|
|
|
|
|
export default { |
|
|
|
run(ed, s, opts = {}) { |
|
|
|
const em = ed.getModel(); |
|
|
|
const clp = em.get('clipboard'); |
|
|
|
const clp: Component[] = em.get('clipboard'); |
|
|
|
const lastSelected = ed.getSelected(); |
|
|
|
|
|
|
|
if (clp && lastSelected) { |
|
|
|
@ -16,11 +18,13 @@ export default { |
|
|
|
const addOpts = { at, action: opts.action || 'paste-component' }; |
|
|
|
|
|
|
|
if (contains(clp, selected) && selected.get('copyable')) { |
|
|
|
// @ts-ignore
|
|
|
|
added = collection.add(selected.clone(), addOpts); |
|
|
|
} else { |
|
|
|
const copyable = clp.filter(cop => cop.get('copyable')); |
|
|
|
const pasteable = copyable.filter(cop => ed.Components.canMove(selected.parent(), cop).result); |
|
|
|
const pasteable = copyable.filter(cop => ed.Components.canMove(selected.parent()!, cop).result); |
|
|
|
added = collection.add( |
|
|
|
// @ts-ignore
|
|
|
|
pasteable.map(cop => cop.clone()), |
|
|
|
addOpts |
|
|
|
); |
|
|
|
@ -33,4 +37,4 @@ export default { |
|
|
|
lastSelected.emitUpdate(); |
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|
} as CustomCommand; |