{ "version": 3, "sources": [ "plugin.ts" ], "names": [ "Interactable", "is", "install", "scope", "actions", "defaults", "prototype", "draggable", "drag", "map", "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 { InteractEvent } from '@interactjs/core/InteractEvent'\nimport { Interactable } from '@interactjs/core/Interactable'\nimport { Scope, Plugin } from '@interactjs/core/scope'\nimport { ActionMethod, DraggableOptions, DropzoneOptions } from '@interactjs/types/index'\nimport 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: DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface ActionMap {\n drag?: typeof drag\n }\n}\n\nexport type DragEvent = InteractEvent<'drag'>\n\nexport type DraggableMethod = 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.map.drag = drag\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: Interactable, options?: DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('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: 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: '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 DropzoneOptions,\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n" ] }