|
|
|
@ -79,6 +79,27 @@ const commandsDef = [ |
|
|
|
['component-drag', 'ComponentDrag'], |
|
|
|
]; |
|
|
|
|
|
|
|
const defComOptions = { preserveSelected: 1 }; |
|
|
|
|
|
|
|
export const getOnComponentDragStart = (em: Editor) => (data: any) => em.trigger(`${eventDrag}:start`, data); |
|
|
|
|
|
|
|
export const getOnComponentDrag = (em: Editor) => (data: any) => em.trigger(eventDrag, data); |
|
|
|
|
|
|
|
export const getOnComponentDragEnd = |
|
|
|
(em: Editor, targets: Component[], opts: { altMode?: boolean } = {}) => |
|
|
|
(a: any, b: any, data: any) => { |
|
|
|
targets.forEach(trg => trg.set('status', trg.get('selectable') ? 'selected' : '')); |
|
|
|
em.setSelected(targets); |
|
|
|
targets[0].emitUpdate(); |
|
|
|
em.trigger(`${eventDrag}:end`, data); |
|
|
|
|
|
|
|
// Defer selectComponent in order to prevent canvas "freeze" #2692
|
|
|
|
setTimeout(() => em.runDefault(defComOptions)); |
|
|
|
|
|
|
|
// Dirty patch to prevent parent selection on drop
|
|
|
|
(opts.altMode || data.cancelled) && em.set('_cmpDrag', 1); |
|
|
|
}; |
|
|
|
|
|
|
|
export default class CommandsModule extends Module<CommandsConfig & { pStylePrefix?: string }> { |
|
|
|
CommandAbstract = CommandAbstract; |
|
|
|
defaultCommands: Record<string, Command> = {}; |
|
|
|
@ -127,7 +148,6 @@ export default class CommandsModule extends Module<CommandsConfig & { pStylePref |
|
|
|
const targets = trgs.map(trg => trg.delegate?.move?.(trg) || trg).filter(Boolean); |
|
|
|
const target = targets[0] as Component | undefined; |
|
|
|
const nativeDrag = event?.type === 'dragstart'; |
|
|
|
const defComOptions = { preserveSelected: 1 }; |
|
|
|
const modes = ['absolute', 'translate']; |
|
|
|
|
|
|
|
if (!target?.get('draggable')) { |
|
|
|
@ -142,20 +162,9 @@ export default class CommandsModule extends Module<CommandsConfig & { pStylePref |
|
|
|
// Without setTimeout the ghost image disappears
|
|
|
|
nativeDrag ? setTimeout(hideTlb, 0) : hideTlb(); |
|
|
|
|
|
|
|
const onStart = (data: any) => em.trigger(`${eventDrag}:start`, data); |
|
|
|
const onDrag = (data: any) => em.trigger(eventDrag, data); |
|
|
|
const onEnd = (e: any, opts: any, data: any) => { |
|
|
|
targets.forEach(trg => trg.set('status', 'selected')); |
|
|
|
ed.select(targets); |
|
|
|
target.emitUpdate(); |
|
|
|
em.trigger(`${eventDrag}:end`, data); |
|
|
|
|
|
|
|
// Defer selectComponent in order to prevent canvas "freeze" #2692
|
|
|
|
setTimeout(() => em.runDefault(defComOptions)); |
|
|
|
|
|
|
|
// Dirty patch to prevent parent selection on drop
|
|
|
|
(altMode || data.cancelled) && em.set('_cmpDrag', 1); |
|
|
|
}; |
|
|
|
const onStart = getOnComponentDragStart(em); |
|
|
|
const onDrag = getOnComponentDrag(em); |
|
|
|
const onEnd = getOnComponentDragEnd(em, targets, { altMode }); |
|
|
|
|
|
|
|
if (altMode) { |
|
|
|
// TODO move grabbing func in editor/canvas from the Sorter
|
|
|
|
@ -182,7 +191,7 @@ export default class CommandsModule extends Module<CommandsConfig & { pStylePref |
|
|
|
cmdMove.initSorterFromModels(targets); |
|
|
|
} |
|
|
|
|
|
|
|
targets.forEach(sel => sel.set('status', 'freezed-selected')); |
|
|
|
targets.filter(sel => sel.get('selectable')).forEach(sel => sel.set('status', 'freezed-selected')); |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
|