{ "version": 3, "sources": [ "drag.ts" ], "names": [ "ActionName", "arr", "is", "Drag", "install", "scope", "actions", "Interactable", "defaults", "prototype", "draggable", "drag", "names", "push", "merge", "eventTypes", "methodDict", "beforeMove", "interaction", "prepared", "name", "axis", "coords", "cur", "page", "y", "start", "client", "velocity", "x", "move", "iEvent", "opposite", "delta", "options", "object", "enabled", "setPerAction", "setOnEvents", "test", "lockAxis", "startAxis", "bool", "id", "listeners", "arg", "interactable", "buttons", "dragOptions", "pointerIsDown", "pointerType", "mouseButtons", "undefined", "action", "getCursor" ], "mappings": "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", "sourcesContent": [ "import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n defaults,\n } = scope\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n }\n else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction(ActionName.Drag, options)\n this.setOnEvents(ActionName.Drag, options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n id: 'actions/drag',\n install,\n listeners: {\n 'interactions:before-action-move': beforeMove,\n 'interactions:action-resume': beforeMove,\n\n // dragmove\n 'interactions:action-move': move,\n 'auto-start:check': arg => {\n const { interaction, interactable, buttons } = arg\n const dragOptions = interactable.options.drag\n\n if (\n !(dragOptions && dragOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options.drag.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n arg.action = {\n name: ActionName.Drag,\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n\n return false\n },\n },\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n" ] }