{ "version": 3, "sources": [ "plugin.ts" ], "names": [ "InteractEvent", "Interactable", "Interaction", "Scope", "domUtils", "extend", "getOriginXY", "is", "normalizeListeners", "pointerUtils", "drag", "DropEvent", "install", "scope", "actions", "interactStatic", "interact", "defaults", "usePlugin", "prototype", "dropzone", "options", "dropzoneMethod", "dropCheck", "dragEvent", "event", "draggable", "draggableElement", "dropElement", "rect", "dropCheckMethod", "dynamicDrop", "newValue", "bool", "phaselessTypes", "dragenter", "dragleave", "dropactivate", "dropdeactivate", "dropmove", "drop", "methodDict", "collectDrops", "interactables", "drops", "list", "enabled", "accept", "element", "string", "matchesSelector", "func", "dropElements", "target", "_context", "querySelectorAll", "array", "dropzoneElement", "push", "getRect", "fireActivationEvents", "activeDrops", "slice", "fire", "propagationStopped", "immediatePropagationStopped", "getActiveDrops", "dragElement", "activeDrop", "getDrop", "dropState", "interactable", "pointerEvent", "validDrops", "dropIndex", "indexOfDeepestElement", "getDropEvents", "interaction", "_pointerEvent", "dropEvents", "enter", "leave", "activate", "deactivate", "move", "type", "rejected", "cur", "prev", "dragLeave", "prevDropzone", "dragEnter", "relatedTarget", "dragmove", "fireDropEvents", "events", "onEventCreated", "iEvent", "dropResult", "object", "listeners", "normalized", "corrected", "Object", "keys", "reduce", "acc", "correctedType", "test", "off", "on", "ondrop", "ondropactivate", "ondropdeactivate", "ondragenter", "ondragleave", "ondropmove", "overlap", "number", "Math", "max", "min", "checker", "dropped", "dropOverlap", "origin", "page", "getPageXY", "x", "y", "horizontal", "left", "right", "vertical", "top", "bottom", "dragRect", "cx", "width", "cy", "height", "overlapArea", "overlapRatio", "id", "prepared", "name", "arg" ], "mappings": "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", "sourcesContent": [ "import { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport { Interactable } from '@interactjs/core/Interactable'\nimport Interaction, { DoPhaseArg } from '@interactjs/core/Interaction'\nimport { Scope, Plugin } from '@interactjs/core/scope'\nimport { DropzoneOptions, Element, PointerEventType, Rect } from '@interactjs/types/index'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport drag, { DragEvent } from '../drag/plugin'\n\nimport { DropEvent } from './DropEvent'\n\nexport interface DropzoneMethod {\n (this: Interactable, options: DropzoneOptions | boolean): Interactable\n (): DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: DropState\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n prevDropzone?: Interactable\n dropzone?: Interactable\n dragEnter?: Element\n dragLeave?: Element\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drop?: typeof drop\n }\n\n interface Scope {\n dynamicDrop?: boolean\n }\n\n interface SignalArgs {\n 'actions/drop:start': DropSignalArg\n 'actions/drop:move': DropSignalArg\n 'actions/drop:end': DropSignalArg\n }\n}\n\ndeclare module '@interactjs/core/interactStatic' {\n export interface InteractStatic {\n dynamicDrop: (this: InteractStatic, newValue?: boolean) => boolean | this\n }\n}\n\ninterface DropSignalArg {\n interaction: Interaction<'drag'>\n dragEvent: DragEvent\n}\n\nexport interface ActiveDrop {\n dropzone: Interactable\n element: Element\n rect: Rect\n}\n\nexport interface DropState {\n cur: {\n // the dropzone a drag target might be dropped into\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n prev: {\n // the dropzone that was recently dragged away from\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n // wheather the potential drop was rejected from a listener\n rejected: boolean\n // the drop events related to the current drag event\n events: FiredDropEvents\n activeDrops: ActiveDrop[]\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interactStatic: interact,\n /** @lends Interactable */\n Interactable,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {object | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interactable, options?: DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n } as Interactable['dropzone']\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n extend(actions.phaselessTypes, {\n dragenter: true,\n dragleave: true,\n dropactivate: true,\n dropdeactivate: true,\n dropmove: true,\n drop: true,\n })\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }: Scope, draggableElement: Element) {\n const drops: ActiveDrop[] = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((is.element(accept) && accept !== draggableElement) ||\n (is.string(accept) &&\n !domUtils.matchesSelector(draggableElement, accept)) ||\n (is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = (is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : is.array(dropzone.target) ? dropzone.target : [dropzone.target]) as Element[]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n rect: dropzone.getRect(dropzoneElement),\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops: ActiveDrop[], event: DropEvent) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops.slice()) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = domUtils.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interaction, _pointerEvent, dragEvent: DragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\ntype FiredDropEvents = Partial>\n\nfunction fireDropEvents (interaction: Interaction, events: FiredDropEvents) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: DoPhaseArg<'drag', EventPhase>, scope: Scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interactable): DropzoneOptions\nfunction dropzoneMethod (interactable: Interactable, options: DropzoneOptions | boolean): Interactable\nfunction dropzoneMethod (interactable: Interactable, options?: DropzoneOptions | boolean) {\n if (is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interactable,\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any,\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = getOriginXY(draggable, draggableElement, 'drag')\n const page = pointerUtils.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right)\n const vertical = (page.y > rect.top) && (page.y < rect.bottom)\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop: Plugin = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: [],\n }\n },\n\n 'interactions:after-action-start': ({ interaction, event, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n scope.fire('actions/drop:start', { interaction, dragEvent })\n }\n },\n\n 'interactions:action-move': onEventCreated,\n\n 'interactions:after-action-move': ({ interaction, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n interaction.dropState.events = {}\n },\n\n 'interactions:action-end': (arg: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (arg.interaction.prepared.name !== 'drag') { return }\n\n const { interaction, iEvent: dragEvent } = arg\n\n onEventCreated(arg, scope)\n fireDropEvents(interaction, interaction.dropState.events)\n scope.fire('actions/drop:end', { interaction, dragEvent })\n },\n\n 'interactions:stop': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as DropzoneOptions,\n}\n\nexport default drop\n" ] }