import { getChild } from '../../src/utils.js'; const drop = function({ originalEvent, putSortable, dragEl, activeSortable, dispatchSortableEvent, hideGhostForTarget, unhideGhostForTarget }) { if (!originalEvent) return; let toSortable = putSortable || activeSortable; hideGhostForTarget(); let touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent; let target = document.elementFromPoint(touch.clientX, touch.clientY); unhideGhostForTarget(); if (toSortable && !toSortable.el.contains(target)) { dispatchSortableEvent('spill'); this.onSpill({ dragEl, putSortable }); } }; function Revert() {} Revert.prototype = { startIndex: null, dragStart({ oldDraggableIndex }) { this.startIndex = oldDraggableIndex; }, onSpill({ dragEl, putSortable }) { this.sortable.captureAnimationState(); if (putSortable) { putSortable.captureAnimationState(); } let nextSibling = getChild(this.sortable.el, this.startIndex, this.options); if (nextSibling) { this.sortable.el.insertBefore(dragEl, nextSibling); } else { this.sortable.el.appendChild(dragEl); } this.sortable.animateAll(); if (putSortable) { putSortable.animateAll(); } }, drop }; Object.assign(Revert, { pluginName: 'revertOnSpill' }); function Remove() {} Remove.prototype = { onSpill({ dragEl, putSortable }) { const parentSortable = putSortable || this.sortable; parentSortable.captureAnimationState(); dragEl.parentNode && dragEl.parentNode.removeChild(dragEl); parentSortable.animateAll(); }, drop }; Object.assign(Remove, { pluginName: 'removeOnSpill' }); export default [Remove, Revert]; export { Remove as RemoveOnSpill, Revert as RevertOnSpill };