{"version":3,"file":"interact.js","sources":["../../@interactjs/utils/isWindow.ts","../../@interactjs/utils/window.ts","../../@interactjs/utils/is.ts","../../@interactjs/actions/drag/plugin.ts","../../@interactjs/utils/domObjects.ts","../../@interactjs/utils/browser.ts","../../@interactjs/utils/domUtils.ts","../../@interactjs/utils/extend.ts","../../@interactjs/utils/rect.ts","../../@interactjs/utils/getOriginXY.ts","../../@interactjs/utils/normalizeListeners.ts","../../@interactjs/utils/hypot.ts","../../@interactjs/utils/pointerExtend.ts","../../@interactjs/utils/pointerUtils.ts","../../@interactjs/core/BaseEvent.ts","../../@interactjs/utils/arr.ts","../../@interactjs/actions/drop/DropEvent.ts","../../@interactjs/actions/drop/plugin.ts","../../@interactjs/actions/gesture/plugin.ts","../../@interactjs/actions/resize/plugin.ts","../../@interactjs/actions/plugin.ts","../../@interactjs/utils/raf.ts","../../@interactjs/auto-scroll/plugin.ts","../../@interactjs/utils/misc.ts","../../@interactjs/auto-start/InteractableMethods.ts","../../@interactjs/auto-start/base.ts","../../@interactjs/auto-start/dragAxis.ts","../../@interactjs/auto-start/hold.ts","../../@interactjs/auto-start/plugin.ts","../../@interactjs/core/interactablePreventDefault.ts","../../@interactjs/utils/isNonNativeEvent.ts","../../@interactjs/dev-tools/plugin.ts","../../@interactjs/utils/clone.ts","../../@interactjs/modifiers/Modification.ts","../../@interactjs/modifiers/base.ts","../../@interactjs/core/options.ts","../../@interactjs/core/InteractEvent.ts","../../@interactjs/core/PointerInfo.ts","../../@interactjs/core/Interaction.ts","../../@interactjs/offset/plugin.ts","../../@interactjs/inertia/plugin.ts","../../@interactjs/core/Eventable.ts","../../@interactjs/core/events.ts","../../@interactjs/core/interactionFinder.ts","../../@interactjs/core/interactions.ts","../../@interactjs/core/Interactable.ts","../../@interactjs/core/InteractableSet.ts","../../@interactjs/core/InteractStatic.ts","../../@interactjs/core/scope.ts","../../@interactjs/interact/index.ts","../../@interactjs/snappers/edgeTarget.ts","../../@interactjs/snappers/elements.ts","../../@interactjs/snappers/grid.ts","../../@interactjs/snappers/all.ts","../../@interactjs/snappers/plugin.ts","../../@interactjs/modifiers/aspectRatio.ts","../../@interactjs/modifiers/noop.ts","../../@interactjs/modifiers/restrict/pointer.ts","../../@interactjs/modifiers/restrict/edges.ts","../../@interactjs/modifiers/restrict/rect.ts","../../@interactjs/modifiers/restrict/size.ts","../../@interactjs/modifiers/snap/pointer.ts","../../@interactjs/modifiers/snap/size.ts","../../@interactjs/modifiers/snap/edges.ts","../../@interactjs/modifiers/all.ts","../../@interactjs/modifiers/plugin.ts","../../@interactjs/pointer-events/PointerEvent.ts","../../@interactjs/pointer-events/base.ts","../../@interactjs/pointer-events/holdRepeat.ts","../../@interactjs/pointer-events/interactableTargets.ts","../../@interactjs/pointer-events/plugin.ts","../../@interactjs/reflow/plugin.ts","../../@interactjs/interactjs/index.ts","../index.ts"],"sourcesContent":["export default (thing: any) => !!(thing && thing.Window) && thing instanceof thing.Window\n","import isWindow from './isWindow'\n\nexport let realWindow = undefined as Window\n\nlet win = undefined as Window\nexport { win as window }\n\nexport function init(window: Window & { wrap?: (...args: any[]) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win = window\n}\n\nif (typeof window !== 'undefined' && !!window) {\n init(window)\n}\n\nexport function getWindow(node: any) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = node.ownerDocument || node\n\n return rootNode.defaultView || win.window\n}\n","import isWindow from './isWindow'\nimport * as win from './window'\n\nconst window = (thing: any): thing is Window => thing === win.window || isWindow(thing)\n\nconst docFrag = (thing: any): thing is DocumentFragment => object(thing) && thing.nodeType === 11\n\nconst object = (thing: any): thing is { [index: string]: any } => !!thing && typeof thing === 'object'\n\nconst func = (thing: any): thing is (...args: any[]) => any => typeof thing === 'function'\n\nconst number = (thing: any): thing is number => typeof thing === 'number'\n\nconst bool = (thing: any): thing is boolean => typeof thing === 'boolean'\n\nconst string = (thing: any): thing is string => typeof thing === 'string'\n\nconst element = (thing: any): thing is HTMLElement | SVGElement => {\n if (!thing || typeof thing !== 'object') {\n return false\n }\n\n const _window = win.getWindow(thing) || win.window\n\n return /object|function/.test(typeof Element)\n ? thing instanceof Element || thing instanceof _window.Element\n : thing.nodeType === 1 && typeof thing.nodeName === 'string'\n}\n\nconst plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString())\n\nconst array = (thing: any): thing is T[] =>\n object(thing) && typeof thing.length !== 'undefined' && func(thing.splice)\n\nexport default {\n window,\n docFrag,\n object,\n func,\n number,\n bool,\n string,\n element,\n plainObject,\n array,\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ListenersArg, OrBoolean } from '@interactjs/core/types'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable(options: Partial> | boolean): this\n draggable(): DraggableOptions\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 * @param options - true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n */\n draggable(options?: Partial> | boolean): this | DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drag: DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/types' {\n interface ActionMap {\n drag?: typeof drag\n }\n}\n\nexport type DragEvent = InteractEvent<'drag'>\n\nexport interface DraggableOptions extends PerActionDefaults {\n startAxis?: 'x' | 'y' | 'xy'\n lockAxis?: 'x' | 'y' | 'xy' | 'start'\n oninertiastart?: ListenersArg\n onstart?: ListenersArg\n onmove?: ListenersArg\n onend?: ListenersArg\n}\n\nfunction install(scope: Scope) {\n const { actions, Interactable, defaults } = 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 } 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\nconst draggable: Interactable['draggable'] = function draggable(\n this: Interactable,\n options?: DraggableOptions | boolean,\n): 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 as DraggableOptions\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' ? dragOptions.startAxis : 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 DraggableOptions,\n\n getCursor() {\n return 'move'\n },\n\n filterEventType: (type: string) => type.search('drag') === 0,\n}\n\nexport default drag\n","const domObjects: {\n init: any\n document: Document\n DocumentFragment: typeof DocumentFragment\n SVGElement: typeof SVGElement\n SVGSVGElement: typeof SVGSVGElement\n SVGElementInstance: any\n Element: typeof Element\n HTMLElement: typeof HTMLElement\n Event: typeof Event\n Touch: typeof Touch\n PointerEvent: typeof PointerEvent\n} = {\n init,\n document: null,\n DocumentFragment: null,\n SVGElement: null,\n SVGSVGElement: null,\n SVGElementInstance: null,\n Element: null,\n HTMLElement: null,\n Event: null,\n Touch: null,\n PointerEvent: null,\n}\n\nfunction blank() {}\n\nexport default domObjects\n\nfunction init(window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent\n}\n","import domObjects from './domObjects'\nimport is from './is'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as 'matches',\n pEventTypes: null as {\n up: string\n down: string\n over: string\n out: string\n move: string\n cancel: string\n },\n wheelEvent: null as string,\n}\n\nfunction init(window: any) {\n const Element = domObjects.Element\n const navigator: Partial = window.navigator || {}\n\n // Does the browser support touch input?\n browser.supportsTouch =\n 'ontouchstart' in window ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n // https://github.com/taye/interact.js/issues/703#issuecomment-471570492\n browser.supportsPointerEvent = (navigator as any).pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform)\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion)\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile =\n navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent)\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = (\n 'matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector'\n ) as 'matches'\n\n browser.pEventTypes = browser.supportsPointerEvent\n ? domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n }\n : null\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = domObjects.document && 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import type { Rect, Target, Element } from '@interactjs/core/types'\n\nimport browser from './browser'\nimport domObjects from './domObjects'\nimport is from './is'\nimport * as win from './window'\n\nexport function nodeContains(parent: Node, child: Node) {\n if (parent.contains) {\n return parent.contains(child as Node)\n }\n\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = (child as Node).parentNode\n }\n\n return false\n}\n\nexport function closest(element: Node, selector: string) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return element\n }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode(node: Node | Document) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector(element: Element, selector: string) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el: Node | Document | ShadowRoot) => el.parentNode || (el as ShadowRoot).host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement(elements: Element[] | NodeListOf) {\n let deepestNodeParents: Node[] = []\n let deepestNodeIndex: number\n\n for (let i = 0; i < elements.length; i++) {\n const currentNode = elements[i]\n const deepestNode: Node = elements[deepestNodeIndex]\n\n // node may appear in elements array multiple times\n if (!currentNode || i === deepestNodeIndex) {\n continue\n }\n\n if (!deepestNode) {\n deepestNodeIndex = i\n continue\n }\n\n const currentNodeParent = getParent(currentNode)\n const deepestNodeParent = getParent(deepestNode)\n\n // check if the deepest or current are document.documentElement/rootElement\n // - if the current node is, do nothing and continue\n if (currentNodeParent === currentNode.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current node and continue to next\n else if (deepestNodeParent === currentNode.ownerDocument) {\n deepestNodeIndex = i\n continue\n }\n\n // compare zIndex of siblings\n if (currentNodeParent === deepestNodeParent) {\n if (zIndexIsHigherThan(currentNode, deepestNode)) {\n deepestNodeIndex = i\n }\n\n continue\n }\n\n // populate the ancestry array for the latest deepest node\n deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode)\n\n let ancestryStart: Node\n\n // if the deepest node is an HTMLElement and the current node is a non root svg element\n if (\n deepestNode instanceof domObjects.HTMLElement &&\n currentNode instanceof domObjects.SVGElement &&\n !(currentNode instanceof domObjects.SVGSVGElement)\n ) {\n // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n if (currentNode === deepestNodeParent) {\n continue\n }\n\n ancestryStart = currentNode.ownerSVGElement\n } else {\n ancestryStart = currentNode\n }\n\n const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument)\n let commonIndex = 0\n\n // get (position of closest common ancestor) + 1\n while (\n currentNodeParents[commonIndex] &&\n currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]\n ) {\n commonIndex++\n }\n\n const parents = [\n currentNodeParents[commonIndex - 1],\n currentNodeParents[commonIndex],\n deepestNodeParents[commonIndex],\n ]\n\n if (parents[0]) {\n let child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestNodeIndex = i\n deepestNodeParents = currentNodeParents\n\n break\n } else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n }\n\n return deepestNodeIndex\n}\n\nfunction getNodeParents(node: Node, limit?: Node) {\n const parents: Node[] = []\n let parent: Node = node\n let parentParent: Node\n\n while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n parents.unshift(parent)\n parent = parentParent\n }\n\n return parents\n}\n\nfunction zIndexIsHigherThan(higherNode: Node, lowerNode: Node) {\n const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0\n const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0\n\n return higherIndex >= lowerIndex\n}\n\nexport function matchesUpTo(element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element) as Element\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement(element: Element) {\n return (element as any).correspondingUseElement || element\n}\n\nexport function getScrollXY(relevantWindow?: Window) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect(element: Element): Required {\n const clientRect =\n element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0]\n\n return (\n clientRect && {\n left: clientRect.left,\n right: clientRect.right,\n top: clientRect.top,\n bottom: clientRect.bottom,\n width: clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n )\n}\n\nexport function getElementRect(element: Element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath(node: Node | Document) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector(value: Target) {\n if (!is.string(value)) {\n return false\n }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","export default function extend(dest: U & Partial, source: T): T & U {\n for (const prop in source) {\n ;(dest as unknown as T)[prop] = source[prop]\n }\n\n const ret = dest as T & U\n\n return ret\n}\n","import type {\n HasGetRect,\n RectResolvable,\n Rect,\n Element,\n Point,\n FullRect,\n EdgeOptions,\n} from '@interactjs/core/types'\n\nimport { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport is from './is'\n\nexport function getStringOptionResult(value: any, target: HasGetRect, element: Node) {\n if (value === 'parent') {\n return parentNode(element)\n }\n\n if (value === 'self') {\n return target.getRect(element as Element)\n }\n\n return closest(element, value)\n}\n\nexport function resolveRectLike(\n value: RectResolvable,\n target?: HasGetRect,\n element?: Node,\n functionArgs?: T,\n) {\n let returnValue: any = value\n if (is.string(returnValue)) {\n returnValue = getStringOptionResult(returnValue, target, element)\n } else if (is.func(returnValue)) {\n returnValue = returnValue(...functionArgs)\n }\n\n if (is.element(returnValue)) {\n returnValue = getElementRect(returnValue)\n }\n\n return returnValue as Rect\n}\n\nexport function toFullRect(rect: Rect): FullRect {\n const { top, left, bottom, right } = rect\n const width = rect.width ?? rect.right - rect.left\n const height = rect.height ?? rect.bottom - rect.top\n\n return { top, left, bottom, right, width, height }\n}\n\nexport function rectToXY(rect: Rect | Point) {\n return (\n rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n )\n}\n\nexport function xywhToTlbr>(rect: T) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || rect.left + rect.width\n rect.bottom = rect.bottom || rect.top + rect.height\n }\n\n return rect as Rect & T\n}\n\nexport function tlbrToXywh(rect: Rect & Partial) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right || 0) - rect.x\n rect.height = rect.height || (rect.bottom || 0) - rect.y\n }\n\n return rect as FullRect & Point\n}\n\nexport function addEdges(edges: EdgeOptions, rect: Rect, delta: Point) {\n if (edges.left) {\n rect.left += delta.x\n }\n if (edges.right) {\n rect.right += delta.x\n }\n if (edges.top) {\n rect.top += delta.y\n }\n if (edges.bottom) {\n rect.bottom += delta.y\n }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n","import type { PerActionDefaults } from '@interactjs/core/options'\nimport type { ActionName, HasGetRect } from '@interactjs/core/types'\n\nimport { rectToXY, resolveRectLike } from './rect'\n\nexport default function getOriginXY(\n target: HasGetRect & { options: PerActionDefaults },\n element: Node,\n actionName?: ActionName,\n) {\n const actionOptions = actionName && (target.options as any)[actionName]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import type { EventTypes, Listener, ListenersArg } from '@interactjs/core/types'\n\nimport is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Listener[]\n}\n\nexport default function normalize(\n type: EventTypes,\n listeners?: ListenersArg | ListenersArg[] | null,\n filter = (_typeOrPrefix: string) => true,\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n type.forEach((t) => normalize(t, listeners, filter, result))\n return result\n }\n\n // before: type = [{ drag: () => {} }], listeners = undefined\n // after: type = '' , listeners = [{ drag: () => {} }]\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners) && filter(type)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n } else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, filter, result)\n }\n } else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], filter, result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split(type: string) {\n return type.trim().split(/ +/)\n}\n","export default (x: number, y: number) => Math.sqrt(x * x + y * y)\n","const VENDOR_PREFIXES = ['webkit', 'moz']\n\nexport default function pointerExtend(dest: Partial }>, source: T) {\n dest.__set ||= {} as any\n\n for (const prop in source) {\n // skip deprecated prefixed properties\n if (VENDOR_PREFIXES.some((prefix) => prop.indexOf(prefix) === 0)) continue\n\n if (typeof dest[prop] !== 'function' && prop !== '__set') {\n Object.defineProperty(dest, prop, {\n get() {\n if (prop in dest.__set) return dest.__set[prop]\n\n return (dest.__set[prop] = source[prop] as any)\n },\n set(value: any) {\n dest.__set[prop] = value\n },\n configurable: true,\n })\n }\n }\n return dest\n}\n","import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { CoordsSetMember, PointerType, Point, PointerEventType, Element } from '@interactjs/core/types'\n\nimport browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport is from './is'\nimport pointerExtend from './pointerExtend'\n\nexport function copyCoords(dest: CoordsSetMember, src: CoordsSetMember) {\n dest.page = dest.page || ({} as any)\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || ({} as any)\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n}\n\nexport function setCoordDeltas(targetObj: CoordsSetMember, prev: CoordsSetMember, cur: CoordsSetMember) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n}\n\nexport function setCoordVelocity(targetObj: CoordsSetMember, delta: CoordsSetMember) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n}\n\nexport function setZeroCoords(targetObj: CoordsSetMember) {\n targetObj.page.x = 0\n targetObj.page.y = 0\n targetObj.client.x = 0\n targetObj.client.y = 0\n}\n\nexport function isNativePointer(pointer: any) {\n return pointer instanceof dom.Event || pointer instanceof dom.Touch\n}\n\n// Get specified X/Y coords for mouse or event.touches[0]\nexport function getXY(type: string, pointer: PointerType | InteractEvent, xy: Point) {\n xy = xy || ({} as Point)\n type = type || 'page'\n\n xy.x = pointer[(type + 'X') as 'pageX']\n xy.y = pointer[(type + 'Y') as 'pageY']\n\n return xy\n}\n\nexport function getPageXY(pointer: PointerType | InteractEvent, page?: Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n } else {\n getXY('page', pointer, page)\n }\n\n return page\n}\n\nexport function getClientXY(pointer: PointerType, client: Point) {\n client = client || ({} as any)\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n getXY('screen', pointer, client)\n } else {\n getXY('client', pointer, client)\n }\n\n return client\n}\n\nexport function getPointerId(pointer: { pointerId?: number; identifier?: number; type?: string }) {\n return is.number(pointer.pointerId) ? pointer.pointerId! : pointer.identifier!\n}\n\nexport function setCoords(dest: CoordsSetMember, pointers: any[], timeStamp: number) {\n const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0]\n\n getPageXY(pointer, dest.page)\n getClientXY(pointer, dest.client)\n\n dest.timeStamp = timeStamp\n}\n\nexport function getTouchPair(event: TouchEvent | PointerType[]) {\n const touches: PointerType[] = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n } else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n } else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n}\n\nexport function pointerAverage(pointers: PointerType[]) {\n const average = {\n pageX: 0,\n pageY: 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n type CoordKeys = keyof typeof average\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop as CoordKeys] += pointer[prop as CoordKeys]\n }\n }\n for (const prop in average) {\n average[prop as CoordKeys] /= pointers.length\n }\n\n return average\n}\n\nexport function touchBBox(event: PointerType[]) {\n if (!event.length) {\n return null\n }\n\n const touches = getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n}\n\nexport function touchDistance(event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n}\n\nexport function touchAngle(event: PointerType[] | TouchEvent, deltaSource: string) {\n const sourceX = (deltaSource + 'X') as 'pageX'\n const sourceY = (deltaSource + 'Y') as 'pageY'\n const touches = getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = (180 * Math.atan2(dy, dx)) / Math.PI\n\n return angle\n}\n\nexport function getPointerType(pointer: { pointerType?: string; identifier?: number; type?: string }) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]!\n : // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n /touch/.test(pointer.type || '') || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n}\n\n// [ event.target, event.currentTarget ]\nexport function getEventTargets(event: Event) {\n const path = is.func(event.composedPath)\n ? (event.composedPath() as Element[])\n : (event as unknown as { path: Element[] }).path\n\n return [\n domUtils.getActualElement(path ? path[0] : (event.target as Element)),\n domUtils.getActualElement(event.currentTarget as Element),\n ]\n}\n\nexport function newCoords(): CoordsSetMember {\n return {\n page: { x: 0, y: 0 },\n client: { x: 0, y: 0 },\n timeStamp: 0,\n }\n}\n\nexport function coordsToEvent(coords: MockCoords) {\n const event = {\n coords,\n get page() {\n return this.coords.page\n },\n get client() {\n return this.coords.client\n },\n get timeStamp() {\n return this.coords.timeStamp\n },\n get pageX() {\n return this.coords.page.x\n },\n get pageY() {\n return this.coords.page.y\n },\n get clientX() {\n return this.coords.client.x\n },\n get clientY() {\n return this.coords.client.y\n },\n get pointerId() {\n return this.coords.pointerId\n },\n get target() {\n return this.coords.target\n },\n get type() {\n return this.coords.type\n },\n get pointerType() {\n return this.coords.pointerType\n },\n get buttons() {\n return this.coords.buttons\n },\n preventDefault() {},\n }\n\n return event as typeof event & PointerType & PointerEventType\n}\n\nexport interface MockCoords {\n page: Point\n client: Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n buttons?: number\n}\n\nexport { pointerExtend }\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName } from '@interactjs/core/types'\n\nexport class BaseEvent {\n declare type: string\n declare target: EventTarget\n declare currentTarget: Node\n declare interactable: Interactable\n /** @internal */\n declare _interaction: Interaction\n declare timeStamp: number\n immediatePropagationStopped = false\n propagationStopped = false\n\n constructor(interaction: Interaction) {\n this._interaction = interaction\n }\n\n preventDefault() {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation() {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface BaseEvent {\n interaction: InteractionProxy\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n get(this: BaseEvent) {\n return this._interaction._proxy\n },\n set(this: BaseEvent) {},\n})\n","type Filter = (element: T, index: number, array: T[]) => boolean\n\nexport const contains = (array: T[], target: T) => array.indexOf(target) !== -1\n\nexport const remove = (array: T[], target: T) => array.splice(array.indexOf(target), 1)\n\nexport const merge = (target: Array, source: U[]) => {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport const from = (source: ArrayLike) => merge([] as T[], source as T[])\n\nexport const findIndex = (array: T[], func: Filter) => {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport const find = (array: T[], func: Filter): T | undefined => array[findIndex(array, func)]\n","import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Element } from '@interactjs/core/types'\nimport * as arr from '@interactjs/utils/arr'\n\nimport type { DropState } from './plugin'\n\nexport class DropEvent extends BaseEvent<'drag'> {\n declare target: Element\n dropzone: Interactable\n dragEvent: InteractEvent<'drag'>\n relatedTarget: Element\n draggable: Interactable\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor(dropState: DropState, dragEvent: InteractEvent<'drag'>, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave' ? dropState.prev : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject() {\n const { dropState } = this._interaction\n\n if (\n this.type !== 'dropactivate' &&\n (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)\n ) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(\n activeDrops,\n ({ dropzone, element }) => dropzone === this.dropzone && element === this.target,\n )\n\n dropState.activeDrops.splice(index, 1)\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n } else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault() {}\n\n stopPropagation() {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element, PointerEventType, Rect, ListenersArg } from '@interactjs/core/types'\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\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport '../drag/plugin'\n\nimport type { DragEvent } from '../drag/plugin'\nimport drag from '../drag/plugin'\n/* eslint-enable import/no-duplicates */\n\nimport { DropEvent } from './DropEvent'\n\nexport type DropFunctionChecker = (\n dragEvent: any, // related drag operation\n event: any, // touch or mouse EventEmitter\n dropped: boolean, // default checker result\n dropzone: Interactable, // dropzone interactable\n dropElement: Element, // drop zone element\n draggable: Interactable, // draggable's Interactable\n draggableElement: Element, // dragged element\n) => boolean\n\nexport interface DropzoneOptions extends PerActionDefaults {\n accept?:\n | string\n | Element\n | (({ dropzone, draggableElement }: { dropzone: Interactable; draggableElement: Element }) => boolean)\n // How the overlap is checked on the drop zone\n overlap?: 'pointer' | 'center' | number\n checker?: DropFunctionChecker\n\n ondropactivate?: ListenersArg\n ondropdeactivate?: ListenersArg\n ondragenter?: ListenersArg\n ondragleave?: ListenersArg\n ondropmove?: ListenersArg\n ondrop?: ListenersArg\n}\n\nexport interface DropzoneMethod {\n (this: Interactable, options: DropzoneOptions | boolean): Interactable\n (): DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\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 options - The new options to be set\n */\n dropzone(options: DropzoneOptions | boolean): Interactable\n /** @returns The current setting */\n dropzone(): DropzoneOptions\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 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 /** @internal */\n prevDropzone?: Interactable\n dropzone?: Interactable\n dragEnter?: Element\n dragLeave?: Element\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n drop: DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\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/types' {\n interface ActionMap {\n drop?: typeof drop\n }\n}\n\ndeclare module '@interactjs/core/InteractStatic' {\n interface InteractStatic {\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 dynamicDrop: (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 { actions, interactStatic: interact, Interactable, defaults } = scope\n\n scope.usePlugin(drag)\n\n Interactable.prototype.dropzone = function (this: Interactable, options) {\n return dropzoneMethod(this, options)\n } as Interactable['dropzone']\n\n Interactable.prototype.dropCheck = function (\n this: Interactable,\n dragEvent,\n event,\n draggable,\n draggableElement,\n dropElement,\n rect,\n ) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\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 collectDropzones({ 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) {\n continue\n }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if (\n (is.element(accept) && accept !== draggableElement) ||\n (is.string(accept) && !domUtils.matchesSelector(draggableElement, accept)) ||\n (is.func(accept) && !accept({ dropzone, draggableElement }))\n ) {\n continue\n }\n\n for (const dropzoneElement of dropzone.getAllElements()) {\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 = collectDropzones(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(\n { dropState, interactable: draggable, element: dragElement }: Interaction,\n dragEvent,\n pointerEvent,\n) {\n const validDrops: Element[] = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n const isValid = dropzone.dropCheck(\n dragEvent,\n pointerEvent,\n draggable!,\n dragElement!,\n dropzoneElement,\n rect,\n )\n validDrops.push(isValid ? dropzoneElement : 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.dropState!\n const dropEvents: Record = {\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 as never\n dropEvents.activate.dropzone = null as never\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null as never\n dropEvents.deactivate.dropzone = null as never\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 dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\ntype FiredDropEvents = Partial<\n Record<'leave' | 'enter' | 'move' | 'drop' | 'activate' | 'deactivate', DropEvent>\n>\n\nfunction fireDropEvents(interaction: Interaction, events: FiredDropEvents) {\n const dropState = interaction.dropState!\n const { activeDrops, cur, prev } = dropState\n\n if (events.leave) {\n prev.dropzone.fire(events.leave)\n }\n if (events.enter) {\n cur.dropzone.fire(events.enter)\n }\n if (events.move) {\n cur.dropzone.fire(events.move)\n }\n if (events.drop) {\n cur.dropzone.fire(events.drop)\n }\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') {\n return\n }\n\n const dropState = interaction.dropState!\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 =\n 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 const prevListeners = interactable.options.drop.listeners\n prevListeners && interactable.off(prevListeners)\n\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (is.func(options.ondrop)) {\n interactable.on('drop', options.ondrop)\n }\n if (is.func(options.ondropactivate)) {\n interactable.on('dropactivate', options.ondropactivate)\n }\n if (is.func(options.ondropdeactivate)) {\n interactable.on('dropdeactivate', options.ondropdeactivate)\n }\n if (is.func(options.ondragenter)) {\n interactable.on('dragenter', options.ondragenter)\n }\n if (is.func(options.ondragleave)) {\n interactable.on('dragleave', options.ondragleave)\n }\n if (is.func(options.ondropmove)) {\n interactable.on('dropmove', options.ondropmove)\n }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\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(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\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 =\n 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(\n dragEvent,\n event,\n dropped,\n interactable,\n dropElement,\n draggable,\n draggableElement,\n )\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') {\n return\n }\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': (\n { interaction, event, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const dropState = interaction.dropState!\n\n // reset active dropzones\n dropState.activeDrops = []\n dropState.events = {}\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': (\n { interaction, iEvent: dragEvent }: DoPhaseArg<'drag', EventPhase>,\n scope,\n ) => {\n if (interaction.prepared.name !== 'drag') {\n return\n }\n\n const dropState = interaction.dropState!\n fireDropEvents(interaction, dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n dropState.events = {}\n },\n\n 'interactions:action-end': (arg: DoPhaseArg<'drag', EventPhase>, scope) => {\n if (arg.interaction.prepared.name !== 'drag') {\n return\n }\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') {\n return\n }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null as never\n dropState.events = null as never\n dropState.cur.dropzone = null as never\n dropState.cur.element = null as never\n dropState.prev.dropzone = null as never\n dropState.prev.element = null as never\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n\n filterEventType: (type: string) => type.search('drag') === 0 || type.search('drop') === 0,\n\n defaults: {\n enabled: false,\n accept: null as never,\n overlap: 'pointer',\n } as DropzoneOptions,\n}\n\nexport default drop\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { InteractEvent, EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Rect, PointerType, ListenersArg, OrBoolean } from '@interactjs/core/types'\nimport is from '@interactjs/utils/is'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number // angle from first to second touch\n distance: number\n scale: number // gesture.distance / gesture.startDistance\n startAngle: number // angle of line joining two touches\n startDistance: number // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable(options: Partial> | boolean): this\n gesturable(): GesturableOptions\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param options - true/false or An object with event listeners to be fired on gesture events (makes the Interactable gesturable)\n * @returns A boolean indicating if this can be the target of gesture events, or this Interactable\n */\n gesturable(options?: Partial> | boolean): this | GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n gesture: GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/types' {\n interface ActionMap {\n gesture?: typeof gesture\n }\n}\n\nexport interface GesturableOptions extends PerActionDefaults {\n onstart?: ListenersArg\n onmove?: ListenersArg\n onend?: ListenersArg\n}\n\nexport interface GestureEvent extends InteractEvent<'gesture'> {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Rect // enclosing box of all points\n touches: PointerType[]\n}\n\nexport interface GestureSignalArg extends DoPhaseArg<'gesture', EventPhase> {\n iEvent: GestureEvent\n interaction: Interaction<'gesture'>\n}\n\nfunction install(scope: Scope) {\n const { actions, Interactable, defaults } = scope\n\n Interactable.prototype.gesturable = function (\n this: InstanceType,\n options: GesturableOptions | boolean,\n ) {\n if (is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as GesturableOptions\n } as Interactable['gesturable']\n\n actions.map.gesture = gesture\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nfunction updateGestureProps({ interaction, iEvent, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') return\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n } else if (ending || interaction.pointers.length < 2) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n } else {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource)\n iEvent.box = pointerUtils.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nconst gesture: Plugin = {\n id: 'actions/gesture',\n before: ['actions/drag', 'actions/resize'],\n install,\n listeners: {\n 'interactions:action-start': updateGestureProps,\n 'interactions:action-move': updateGestureProps,\n 'interactions:action-end': updateGestureProps,\n\n 'interactions:new': ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n },\n\n 'auto-start:check': (arg) => {\n if (arg.interaction.pointers.length < 2) {\n return undefined\n }\n\n const gestureOptions = arg.interactable.options.gesture\n\n if (!(gestureOptions && gestureOptions.enabled)) {\n return undefined\n }\n\n arg.action = { name: 'gesture' }\n\n return false\n },\n },\n\n defaults: {},\n\n getCursor() {\n return ''\n },\n\n filterEventType: (type: string) => type.search('gesture') === 0,\n}\n\nexport default gesture\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interaction } from '@interactjs/core/Interaction'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type {\n ActionName,\n ActionProps,\n EdgeOptions,\n FullRect,\n ListenersArg,\n OrBoolean,\n Point,\n Rect,\n} from '@interactjs/core/types'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable(): ResizableOptions\n resizable(options: Partial> | boolean): this\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param options - true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @returns A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n resizable(options?: Partial> | boolean): this | ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n styleCursor(newValue: boolean): this\n styleCursor(): boolean\n resizeStartAspectRatio: number\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n resize: ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/types' {\n interface ActionMap {\n resize?: typeof resize\n }\n}\n\nexport interface ResizableOptions extends PerActionDefaults {\n square?: boolean\n preserveAspectRatio?: boolean\n edges?: EdgeOptions | null\n axis?: 'x' | 'y' | 'xy' // deprecated\n invert?: 'none' | 'negate' | 'reposition'\n margin?: number\n squareResize?: boolean\n oninertiastart?: ListenersArg\n onstart?: ListenersArg\n onmove?: ListenersArg\n onend?: ListenersArg\n}\n\nexport interface ResizeEvent

extends InteractEvent<'resize', P> {\n deltaRect?: FullRect\n edges?: ActionProps['edges']\n}\n\nfunction install(scope: Scope) {\n const {\n actions,\n browser,\n Interactable, // tslint:disable-line no-shadowed-variable\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n Interactable.prototype.resizable = function (this: Interactable, options: ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as Interactable['resizable']\n\n actions.map.resize = resize\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nfunction resizeChecker(arg) {\n const { interaction, interactable, element, rect, buttons } = arg\n\n if (!rect) {\n return undefined\n }\n\n const page = extend({}, interaction.coords.cur.page)\n const resizeOptions = interactable.options.resize\n\n if (\n !(resizeOptions && resizeOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & resizeOptions.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n const resizeEdges = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n }\n\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(\n edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || resize.defaultMargin,\n )\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n arg.action = {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n } else {\n const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin\n const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin\n\n if (right || bottom) {\n arg.action = {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n\n return arg.action ? false : undefined\n}\n\nfunction resizable(interactable: Interactable, options: OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n } else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n } else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge(\n name: string,\n value: any,\n page: Point,\n element: Node,\n interactableElement: Element,\n rect: Rect,\n margin: number,\n) {\n // false, '', undefined, null\n if (!value) {\n return false\n }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2))\n\n if (width < 0) {\n if (name === 'left') {\n name = 'right'\n } else if (name === 'right') {\n name = 'left'\n }\n }\n if (height < 0) {\n if (name === 'top') {\n name = 'bottom'\n } else if (name === 'bottom') {\n name = 'top'\n }\n }\n\n if (name === 'left') {\n const edge = width >= 0 ? rect.left : rect.right\n return page.x < edge + margin\n }\n if (name === 'top') {\n const edge = height >= 0 ? rect.top : rect.bottom\n return page.y < edge + margin\n }\n\n if (name === 'right') {\n return page.x > (width >= 0 ? rect.right : rect.left) - margin\n }\n if (name === 'bottom') {\n return page.y > (height >= 0 ? rect.bottom : rect.top) - margin\n }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) {\n return false\n }\n\n return is.element(value)\n ? // the value is an element to use as a resize handle\n value === element\n : // otherwise check if element matches value as selector\n dom.matchesUpTo(element, value, interactableElement)\n}\n\n/* eslint-disable multiline-ternary */\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nfunction initCursors(browser: typeof import('@interactjs/utils/browser').default) {\n return browser.isIe9\n ? {\n x: 'e-resize',\n y: 's-resize',\n xy: 'se-resize',\n\n top: 'n-resize',\n left: 'w-resize',\n bottom: 's-resize',\n right: 'e-resize',\n topleft: 'se-resize',\n bottomright: 'se-resize',\n topright: 'ne-resize',\n bottomleft: 'ne-resize',\n }\n : {\n x: 'ew-resize',\n y: 'ns-resize',\n xy: 'nwse-resize',\n\n top: 'ns-resize',\n left: 'ew-resize',\n bottom: 'ns-resize',\n right: 'ew-resize',\n topleft: 'nwse-resize',\n bottomright: 'nwse-resize',\n topright: 'nesw-resize',\n bottomleft: 'nesw-resize',\n }\n}\n/* eslint-enable multiline-ternary */\n\nfunction start({ iEvent, interaction }: { iEvent: InteractEvent; interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const resizeEvent = iEvent as ResizeEvent\n const rect = interaction.rect\n\n interaction._rects = {\n start: extend({}, rect),\n corrected: extend({}, rect),\n previous: extend({}, rect),\n delta: {\n left: 0,\n right: 0,\n width: 0,\n top: 0,\n bottom: 0,\n height: 0,\n },\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction move({ iEvent, interaction }: { iEvent: InteractEvent; interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n const current = interaction.rect\n const { start: startRect, corrected, delta: deltaRect, previous } = interaction._rects\n\n extend(previous, corrected)\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(corrected, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n if (corrected.top > corrected.bottom) {\n const swap = corrected.top\n\n corrected.top = corrected.bottom\n corrected.bottom = swap\n }\n if (corrected.left > corrected.right) {\n const swap = corrected.left\n\n corrected.left = corrected.right\n corrected.right = swap\n }\n }\n } else {\n // if not invertible, restrict to minimum of 0x0 rect\n corrected.top = Math.min(current.top, startRect.bottom)\n corrected.bottom = Math.max(current.bottom, startRect.top)\n corrected.left = Math.min(current.left, startRect.right)\n corrected.right = Math.max(current.right, startRect.left)\n }\n\n corrected.width = corrected.right - corrected.left\n corrected.height = corrected.bottom - corrected.top\n\n for (const edge in corrected) {\n deltaRect[edge] = corrected[edge] - previous[edge]\n }\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = corrected\n resizeEvent.deltaRect = deltaRect\n}\n\nfunction end({ iEvent, interaction }: { iEvent: InteractEvent; interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return\n\n const resizeEvent = iEvent as ResizeEvent\n\n resizeEvent.edges = interaction.prepared.edges\n resizeEvent.rect = interaction._rects.corrected\n resizeEvent.deltaRect = interaction._rects.delta\n}\n\nfunction updateEventAxes({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent\n interaction: Interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) return\n\n const options = interaction.interactable.options\n const resizeEvent = iEvent as ResizeEvent\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = resizeEvent.delta.y\n } else {\n resizeEvent.delta.y = resizeEvent.delta.x\n }\n resizeEvent.axes = 'xy'\n } else {\n resizeEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n resizeEvent.delta.y = 0\n } else if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = 0\n }\n }\n}\n\nconst resize: Plugin = {\n id: 'actions/resize',\n before: ['actions/drag'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.resizeAxes = 'xy'\n },\n\n 'interactions:action-start': (arg) => {\n start(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-move': (arg) => {\n move(arg)\n updateEventAxes(arg)\n },\n 'interactions:action-end': end,\n 'auto-start:check': resizeChecker,\n },\n\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as ResizableOptions,\n\n cursors: null as ReturnType,\n\n getCursor({ edges, axis, name }: ActionProps) {\n const cursors = resize.cursors\n let result: string = null\n\n if (axis) {\n result = cursors[name + axis]\n } else if (edges) {\n let cursorKey = ''\n\n for (const edge of ['top', 'bottom', 'left', 'right']) {\n if (edges[edge]) {\n cursorKey += edge\n }\n }\n\n result = cursors[cursorKey]\n }\n\n return result\n },\n\n filterEventType: (type: string) => type.search('resize') === 0,\n\n defaultMargin: null as number,\n}\n\nexport default resize\n","import type { Scope } from '@interactjs/core/scope'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './drag/plugin'\nimport './drop/plugin'\nimport './gesture/plugin'\nimport './resize/plugin'\n\nimport drag from './drag/plugin'\nimport drop from './drop/plugin'\nimport gesture from './gesture/plugin'\nimport resize from './resize/plugin'\n/* eslint-enable import/no-duplicates */\n\nexport default {\n id: 'actions',\n install(scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n },\n}\n","let lastTime = 0\nlet request: typeof requestAnimationFrame\nlet cancel: typeof cancelAnimationFrame\n\nfunction init(global: Window | typeof globalThis) {\n request = global.requestAnimationFrame\n cancel = global.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = global[`${vendor}RequestAnimationFrame` as 'requestAnimationFrame']\n cancel =\n global[`${vendor}CancelAnimationFrame` as 'cancelAnimationFrame'] ||\n global[`${vendor}CancelRequestAnimationFrame` as 'cancelAnimationFrame']\n }\n }\n\n request = request && request.bind(global)\n cancel = cancel && cancel.bind(global)\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n const token = global.setTimeout(() => {\n // eslint-disable-next-line n/no-callback-literal\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return token as any\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback: FrameRequestCallback) => request(callback),\n cancel: (token: number) => cancel(token),\n init,\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionName, PointerType } from '@interactjs/core/types'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n autoScroll?: AutoScrollOptions\n }\n}\n\nexport interface AutoScrollOptions {\n container?: Window | HTMLElement | string\n margin?: number\n distance?: number\n interval?: number\n speed?: number\n enabled?: boolean\n}\n\nfunction install(scope: Scope) {\n const { defaults, actions } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n actions.phaselessTypes.autoscroll = true\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled: false,\n margin: 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as AutoScrollOptions['container'],\n\n // the scroll speed in pixels per second\n speed: 300,\n } as AutoScrollOptions,\n\n now: Date.now,\n\n interaction: null as Interaction | null,\n i: 0, // the handle returned by window.setInterval\n\n // Direction each pulse is to scroll in\n x: 0,\n y: 0,\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start(interaction: Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop() {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll() {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n } else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check(interactable: Interactable, actionName: ActionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll?.enabled\n },\n onInteractionMove({\n interaction,\n pointer,\n }: {\n interaction: Interaction\n pointer: PointerType\n }) {\n if (\n !(interaction.interacting() && autoScroll.check(interaction.interactable, interaction.prepared.name))\n ) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top: boolean\n let right: boolean\n let bottom: boolean\n let left: boolean\n\n const { interactable, element } = interaction\n const actionName = interaction.prepared.name\n const options = interactable.options[actionName].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n } else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = right ? 1 : left ? -1 : 0\n autoScroll.y = bottom ? 1 : top ? -1 : 0\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer(value: any, interactable: Interactable, element: Element) {\n return (\n (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n )\n}\n\nexport function getScroll(container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize(container: any) {\n if (is.window(container)) {\n container = window.document.body\n }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta(\n {\n interaction,\n element,\n }: {\n interaction: Partial>\n element: Element\n },\n func: any,\n) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(scrollOptions.container, interaction.interactable, element)\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nconst autoScrollPlugin: Plugin = {\n id: 'auto-scroll',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoScroll = null\n },\n\n 'interactions:destroy': ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n },\n\n 'interactions:stop': autoScroll.stop,\n\n 'interactions:action-move': (arg: any) => autoScroll.onInteractionMove(arg),\n },\n}\n\nexport default autoScrollPlugin\n","import type { ActionName, ActionProps } from '@interactjs/core/types'\n\nimport { window } from './window'\n\nexport function warnOnce(this: T, method: (...args: any[]) => any, message: string) {\n let warned = false\n\n return function (this: T) {\n if (!warned) {\n ;(window as any).console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\nexport function copyAction(dest: ActionProps, src: ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport const sign = (n: number) => (n >= 0 ? 1 : -1)\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction } from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { ActionProps, PointerType, PointerEventType, Element } from '@interactjs/core/types'\nimport is from '@interactjs/utils/is'\nimport { warnOnce } from '@interactjs/utils/misc'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: (\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ) => ActionProps | null\n styleCursor(newValue: boolean): this\n styleCursor(): boolean\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n styleCursor(newValue?: boolean): boolean | this\n actionChecker(checker: Function): Interactable\n actionChecker(): Function\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param checker - A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @returns The checker function or this Interactable\n */\n actionChecker(checker?: Function): Interactable | Function\n /** @returns This interactable */\n ignoreFrom(newValue: string | Element | null): Interactable\n /** @returns The current ignoreFrom value */\n ignoreFrom(): string | Element | null\n /**\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * @deprecated\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n * ```\n * Interactable\n */\n ignoreFrom(\n /** a CSS selector string, an Element or `null` to not ignore any elements */\n newValue?: string | Element | null,\n ): Interactable | string | Element | null\n allowFrom(): boolean\n /**\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * @deprecated\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n * ```\n *\n * @param {string | Element | null} [newValue]\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n allowFrom(\n /** A CSS selector string, an Element or `null` to allow from any element */\n newValue: string | Element | null,\n ): Interactable\n }\n}\n\nfunction install(scope: Scope) {\n const {\n Interactable, // tslint:disable-line no-shadowed-variable\n } = scope\n\n Interactable.prototype.getAction = function getAction(\n this: Interactable,\n pointer: PointerType,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n ): ActionProps {\n const action = defaultActionChecker(this, event, interaction, element, scope)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n }\n\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n Interactable.prototype.actionChecker = actionChecker\n\n Interactable.prototype.styleCursor = styleCursor\n}\n\nfunction defaultActionChecker(\n interactable: Interactable,\n event: PointerEventType,\n interaction: Interaction,\n element: Element,\n scope: Scope,\n) {\n const rect = interactable.getRect(element)\n const buttons =\n (event as MouseEvent).buttons ||\n {\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n }[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n const arg = {\n action: null,\n interactable,\n interaction,\n element,\n rect,\n buttons,\n }\n\n scope.fire('auto-start:check', arg)\n\n return arg.action\n}\n\nfunction styleCursor(this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker(this: Interactable, checker?: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Interaction } from '@interactjs/core/Interaction'\nimport type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type {\n CursorChecker,\n PointerType,\n PointerEventType,\n Element,\n ActionName,\n ActionProps,\n} from '@interactjs/core/types'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport { copyAction } from '@interactjs/utils/misc'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './InteractableMethods'\nimport InteractableMethods from './InteractableMethods'\n/* eslint-enable import/no-duplicates */\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n }\n\n interface SignalArgs {\n 'autoStart:before-start': Omit & {\n interaction: Interaction\n }\n 'autoStart:prepared': { interaction: Interaction }\n 'auto-start:check': CheckSignalArg\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n actionChecker?: any\n cursorChecker?: any\n styleCursor?: any\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n cursorChecker?: CursorChecker\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n // TODO: docst\n mouseButtons?: 0 | 1 | 2 | 4 | 8 | 16\n }\n}\n\ninterface CheckSignalArg {\n interactable: Interactable\n interaction: Interaction\n element: Element\n action: ActionProps\n buttons: number\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: Element\n}\n\nfunction install(scope: Scope) {\n const { interactStatic: interact, defaults } = scope\n\n scope.usePlugin(InteractableMethods)\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n interact.maxInteractions = (newValue: number) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n }\n}\n\nfunction prepareOnDown(\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:down'],\n scope: Scope,\n) {\n if (interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove(\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:move'],\n scope: Scope,\n) {\n if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) return\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Element, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove(arg: SignalArgs['interactions:move'], scope: Scope) {\n const { interaction } = arg\n\n if (\n !interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name\n ) {\n return\n }\n\n scope.fire('autoStart:before-start', arg)\n\n const { interactable } = interaction\n const actionName = (interaction as Interaction).prepared.name\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (\n interactable.options[actionName].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)\n ) {\n interaction.stop()\n } else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n setInteractionCursor(interaction, scope)\n }\n }\n}\n\nfunction clearCursorOnStop({ interaction }: { interaction: Interaction }, scope: Scope) {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope)\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction(\n action: ActionProps,\n interactable: Interactable,\n element: Element,\n eventTarget: Node,\n scope: Scope,\n) {\n if (\n interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)\n ) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches(\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n matches: Interactable[],\n matchElements: Element[],\n eventTarget: Node,\n scope: Scope,\n) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) {\n continue\n }\n\n const action = validateAction(matchAction, match, matchElement, eventTarget, scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo(\n interaction: Interaction,\n pointer: PointerType,\n event: PointerEventType,\n eventTarget: Node,\n scope: Scope,\n) {\n let matches: Interactable[] = []\n let matchElements: Element[] = []\n\n let element = eventTarget as Element\n\n function pushMatches(interactable: Interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(\n interaction,\n pointer,\n event,\n matches,\n matchElements,\n eventTarget,\n scope,\n )\n\n if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = domUtils.parentNode(element) as Element\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare(\n interaction: Interaction,\n {\n action,\n interactable,\n element,\n }: {\n action: ActionProps\n interactable: Interactable\n element: Element\n },\n scope: Scope,\n) {\n action = action || { name: null }\n\n interaction.interactable = interactable\n interaction.element = element\n copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name ? interactable.getRect(element) : null\n\n setInteractionCursor(interaction, scope)\n\n scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit(\n interactable: Interactable,\n element: Element,\n action: ActionProps,\n scope: Scope,\n) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) {\n return false\n }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) {\n continue\n }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions(newValue: any, scope: Scope) {\n if (is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor(element: Element, cursor: string, scope: Scope) {\n const { cursorElement: prevCursorElement } = scope.autoStart\n\n if (prevCursorElement && prevCursorElement !== element) {\n prevCursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nfunction setInteractionCursor(interaction: Interaction, scope: Scope) {\n const { interactable, element, prepared } = interaction\n\n if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n // clear previous target element cursor\n if (scope.autoStart.cursorElement) {\n setCursor(scope.autoStart.cursorElement, '', scope)\n }\n\n return\n }\n\n let cursor = ''\n\n if (prepared.name) {\n const cursorChecker = interactable.options[prepared.name].cursorChecker\n\n if (is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n } else {\n cursor = scope.actions.map[prepared.name].getCursor(prepared)\n }\n }\n\n setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Plugin = {\n id: 'auto-start/base',\n before: ['actions'],\n install,\n listeners: {\n 'interactions:down': prepareOnDown,\n 'interactions:move': (arg, scope) => {\n prepareOnMove(arg, scope)\n startOnMove(arg, scope)\n },\n 'interactions:stop': clearCursorOnStop,\n },\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n}\n\nexport default autoStart\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { SignalArgs, Scope } from '@interactjs/core/scope'\nimport type { ActionName, Element } from '@interactjs/core/types'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\n\nimport autoStart from './base'\n\nfunction beforeStart({ interaction, eventTarget, dx, dy }: SignalArgs['interactions:move'], scope: Scope) {\n if (interaction.prepared.name !== 'drag') return\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy'\n\n interaction.prepared.axis =\n targetOptions.lockAxis === 'start'\n ? (currentAxis[0] as 'x' | 'y') // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n ;(interaction as Interaction).prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget as Element\n\n const getDraggable = function (interactable: Interactable): Interactable | void {\n if (interactable === interaction.interactable) return\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer,\n interaction.downEvent,\n interaction,\n element,\n )\n\n if (\n action &&\n action.name === 'drag' &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)\n ) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n ;(interaction as Interaction).prepared.name = 'drag'\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element) as Element\n }\n }\n}\n\nfunction checkStartAxis(startAxis: string, interactable: Interactable) {\n if (!interactable) {\n return false\n }\n\n const thisAxis = interactable.options.drag.startAxis\n\n return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n listeners: { 'autoStart:before-start': beforeStart },\n}\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './base'\nimport basePlugin from './base'\n/* eslint-enable */\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install(scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n}\n\nfunction getHoldDuration(interaction: Interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) {\n return null\n }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nconst hold: Plugin = {\n id: 'auto-start/hold',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.autoStartHoldTimer = null\n },\n\n 'autoStart:prepared': ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n },\n\n 'interactions:move': ({ interaction, duplicate }) => {\n if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n interaction.autoStartHoldTimer = null\n }\n },\n\n // prevent regular down->move autoStart\n 'autoStart:before-start': ({ interaction }) => {\n const holdDuration = getHoldDuration(interaction)\n\n if (holdDuration > 0) {\n interaction.prepared.name = null\n }\n },\n },\n getHoldDuration,\n}\nexport default hold\n","import type { Scope } from '@interactjs/core/scope'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './base'\nimport './dragAxis'\nimport './hold'\n\nimport autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n/* eslint-enable import/no-duplicates */\n\nexport default {\n id: 'auto-start',\n install(scope: Scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n },\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerEventType } from '@interactjs/core/types'\n\ntype PreventDefaultValue = 'always' | 'never' | 'auto'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault(newValue: PreventDefaultValue): this\n preventDefault(): PreventDefaultValue\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param newValue - `'always'`, `'never'` or `'auto'`\n * @returns The current setting or this Interactable\n */\n preventDefault(newValue?: PreventDefaultValue): PreventDefaultValue | this\n checkAndPreventDefault(event: Event): void\n }\n}\n\nconst preventDefault = function preventDefault(this: Interactable, newValue?: PreventDefaultValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n} as Interactable['preventDefault']\n\nfunction checkAndPreventDefault(interactable: Interactable, scope: Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') return\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (\n is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')\n ) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent({ interaction, event }: { interaction: Interaction; event: PointerEventType }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install(scope: Scope) {\n const { Interactable } = scope\n\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener(event) {\n for (const interaction of scope.interactions.list) {\n if (\n interaction.element &&\n (interaction.element === event.target || nodeContains(interaction.element, event.target))\n ) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n acc[`interactions:${eventType}`] = onInteractionEvent\n return acc\n }, {} as any),\n}\n","import type { Actions } from '@interactjs/core/types'\n\nexport default function isNonNativeEvent(type: string, actions: Actions) {\n if (actions.phaselessTypes[type]) {\n return true\n }\n\n for (const name in actions.map) {\n if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n return true\n }\n }\n\n return false\n}\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element, OptionMethod } from '@interactjs/core/types'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport isNonNativeEvent from '@interactjs/utils/isNonNativeEvent'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport * as win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools: OptionMethod\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: CheckName\n text: string\n perform: (interaction: Interaction) => boolean\n getInfo: (interaction: Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = 'touchAction',\n boxSizing = 'boxSizing',\n noListeners = 'noListeners',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\n// eslint-disable-next-line no-undef\nconst isProduction = process.env.NODE_ENV === 'production'\n\nfunction install(scope: Scope, { logger }: { logger?: Logger } = {}) {\n const { Interactable, defaults } = scope\n\n scope.logger = logger || console\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?: object) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n\n // can't set native events on non string targets without `addEventListener` prop\n const { _onOff } = Interactable.prototype\n Interactable.prototype._onOff = function (method, typeArg, listenerArg, options, filter) {\n if (is.string(this.target) || this.target.addEventListener) {\n return _onOff.call(this, method, typeArg, listenerArg, options, filter)\n }\n\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const normalizedListeners = normalizeListeners(typeArg, listenerArg, filter)\n\n for (const type in normalizedListeners) {\n if (isNonNativeEvent(type, scope.actions)) continue\n scope.logger.warn(\n prefix +\n `Can't add native \"${type}\" event listener to target without \\`addEventListener(type, listener, options)\\` prop.`,\n )\n }\n\n return _onOff.call(this, method, normalizedListeners, options)\n }\n}\n\nconst checks: Check[] = [\n {\n name: CheckName.touchAction,\n perform({ element }) {\n return !!element && !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo({ element }) {\n return [element, links.touchAction]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: CheckName.boxSizing,\n perform(interaction) {\n const { element } = interaction\n\n return (\n interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n )\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo({ element }) {\n return [element, links.boxSizing]\n },\n },\n\n {\n name: CheckName.noListeners,\n perform(interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable?.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo(interaction) {\n return [interaction.prepared.name, interaction.interactable]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle(element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n const value = element.style[prop] || win.window.getComputedStyle(element)[prop]\n return styleRe.test((value || '').toString())\n}\n\nfunction parentHasStyle(element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent) as HTMLElement\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport: Plugin = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n listeners: {\n 'interactions:action-start': ({ interaction }, scope) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n scope.logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n },\n },\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n","import * as arr from './arr'\nimport is from './is'\n\n// tslint:disable-next-line ban-types\nexport default function clone(source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n } else if (is.array(value)) {\n dest[prop] = arr.from(value) as typeof value\n } else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","import type { EventPhase } from '@interactjs/core/InteractEvent'\nimport type { Interaction, DoAnyPhaseArg } from '@interactjs/core/Interaction'\nimport type { EdgeOptions, FullRect, Point, Rect } from '@interactjs/core/types'\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type { Modifier, ModifierArg, ModifierState } from './types'\n\nexport interface ModificationResult {\n delta: Point\n rectDelta: Rect\n coords: Point\n rect: FullRect\n eventProps: any[]\n changed: boolean\n}\n\ninterface MethodArg {\n phase: EventPhase\n pageCoords: Point\n rect: FullRect\n coords: Point\n preEnd?: boolean\n skipModifiers?: number\n}\n\nexport class Modification {\n states: ModifierState[] = []\n startOffset: Rect = { left: 0, right: 0, top: 0, bottom: 0 }\n startDelta!: Point\n result!: ModificationResult\n endResult!: Point\n startEdges!: EdgeOptions\n edges: EdgeOptions\n readonly interaction: Readonly\n\n constructor(interaction: Interaction) {\n this.interaction = interaction\n this.result = createResult()\n this.edges = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n }\n }\n\n start({ phase }: { phase: EventPhase }, pageCoords: Point) {\n const { interaction } = this\n const modifierList = getModifierList(interaction)\n this.prepareStates(modifierList)\n\n this.startEdges = extend({}, interaction.edges)\n this.edges = extend({}, this.startEdges)\n this.startOffset = getRectOffset(interaction.rect, pageCoords)\n this.startDelta = { x: 0, y: 0 }\n\n const arg = this.fillArg({\n phase,\n pageCoords,\n preEnd: false,\n })\n\n this.result = createResult()\n this.startAll(arg)\n\n const result = (this.result = this.setAll(arg))\n\n return result\n }\n\n fillArg(arg: Partial) {\n const { interaction } = this\n\n arg.interaction = interaction\n arg.interactable = interaction.interactable\n arg.element = interaction.element\n arg.rect ||= interaction.rect\n arg.edges ||= this.startEdges\n arg.startOffset = this.startOffset\n\n return arg as ModifierArg\n }\n\n startAll(arg: MethodArg & Partial) {\n for (const state of this.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg as ModifierArg)\n }\n }\n }\n\n setAll(arg: MethodArg & Partial): ModificationResult {\n const { phase, preEnd, skipModifiers, rect: unmodifiedRect, edges: unmodifiedEdges } = arg\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, unmodifiedRect)\n arg.edges = extend({}, unmodifiedEdges)\n\n const states = skipModifiers ? this.states.slice(skipModifiers) : this.states\n\n const newResult = createResult(arg.coords, arg.rect)\n\n for (const state of states) {\n const { options } = state\n const lastModifierCoords = extend({}, arg.coords)\n let returnValue = null\n\n if (state.methods?.set && this.shouldDo(options, preEnd, phase)) {\n arg.state = state\n returnValue = state.methods.set(arg as ModifierArg)\n\n rectUtils.addEdges(arg.edges, arg.rect, {\n x: arg.coords.x - lastModifierCoords.x,\n y: arg.coords.y - lastModifierCoords.y,\n })\n }\n\n newResult.eventProps.push(returnValue)\n }\n\n extend(this.edges, arg.edges)\n\n newResult.delta.x = arg.coords.x - arg.pageCoords.x\n newResult.delta.y = arg.coords.y - arg.pageCoords.y\n\n newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left\n newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right\n newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top\n newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom\n\n const prevCoords = this.result.coords\n const prevRect = this.result.rect\n\n if (prevCoords && prevRect) {\n const rectChanged =\n newResult.rect.left !== prevRect.left ||\n newResult.rect.right !== prevRect.right ||\n newResult.rect.top !== prevRect.top ||\n newResult.rect.bottom !== prevRect.bottom\n\n newResult.changed =\n rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y\n }\n\n return newResult\n }\n\n applyToInteraction(arg: { phase: EventPhase; rect?: Rect }) {\n const { interaction } = this\n const { phase } = arg\n const curCoords = interaction.coords.cur\n const startCoords = interaction.coords.start\n const { result, startDelta } = this\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(this.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [\n [startCoords, startDelta],\n [curCoords, curDelta],\n ] as const) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = this.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n setAndApply(\n arg: Partial & {\n phase: EventPhase\n preEnd?: boolean\n skipModifiers?: number\n modifiedCoords?: Point\n },\n ): void | false {\n const { interaction } = this\n const { phase, preEnd, skipModifiers } = arg\n\n const result = this.setAll(\n this.fillArg({\n preEnd,\n phase,\n pageCoords: arg.modifiedCoords || interaction.coords.cur.page,\n }),\n )\n\n this.result = result\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (\n !result.changed &&\n (!skipModifiers || skipModifiers < this.states.length) &&\n interaction.interacting()\n ) {\n return false\n }\n\n if (arg.modifiedCoords) {\n const { page } = interaction.coords.cur\n const adjustment = {\n x: arg.modifiedCoords.x - page.x,\n y: arg.modifiedCoords.y - page.y,\n }\n\n result.coords.x += adjustment.x\n result.coords.y += adjustment.y\n result.delta.x += adjustment.x\n result.delta.y += adjustment.y\n }\n\n this.applyToInteraction(arg)\n }\n\n beforeEnd(arg: Omit & { state?: ModifierState }): void | false {\n const { interaction, event } = arg\n const states = this.states\n\n if (!states || !states.length) {\n return\n }\n\n let doPreend = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endPosition = methods.beforeEnd && methods.beforeEnd(arg as unknown as ModifierArg)\n\n if (endPosition) {\n this.endResult = endPosition\n return false\n }\n\n doPreend = doPreend || (!doPreend && this.shouldDo(options, true, arg.phase, true))\n }\n\n if (doPreend) {\n // trigger a final modified move before ending\n interaction.move({ event, preEnd: true })\n }\n }\n\n stop(arg: { interaction: Interaction }) {\n const { interaction } = arg\n\n if (!this.states || !this.states.length) {\n return\n }\n\n const modifierArg: Partial = extend(\n {\n states: this.states,\n interactable: interaction.interactable,\n element: interaction.element,\n rect: null,\n },\n arg,\n )\n\n this.fillArg(modifierArg)\n\n for (const state of this.states) {\n modifierArg.state = state\n\n if (state.methods.stop) {\n state.methods.stop(modifierArg as ModifierArg)\n }\n }\n\n this.states = null\n this.endResult = null\n }\n\n prepareStates(modifierList: Modifier[]) {\n this.states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n this.states.push({\n options,\n methods,\n index,\n name,\n })\n }\n\n return this.states\n }\n\n restoreInteractionCoords({ interaction: { coords, rect, modification } }: { interaction: Interaction }) {\n if (!modification.result) return\n\n const { startDelta } = modification\n const { delta: curDelta, rectDelta } = modification.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n }\n\n shouldDo(options, preEnd?: boolean, phase?: string, requireEndOnly?: boolean) {\n if (\n // ignore disabled modifiers\n !options ||\n options.enabled === false ||\n // check if we require endOnly option to fire move before end\n (requireEndOnly && !options.endOnly) ||\n // don't apply endOnly modifiers when not ending\n (options.endOnly && !preEnd) ||\n // check if modifier should run be applied on start\n (phase === 'start' && !options.setStart)\n ) {\n return false\n }\n\n return true\n }\n\n copyFrom(other: Modification) {\n this.startOffset = other.startOffset\n this.startDelta = other.startDelta\n this.startEdges = other.startEdges\n this.edges = other.edges\n this.states = other.states.map((s) => clone(s) as ModifierState)\n this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect))\n }\n\n destroy() {\n for (const prop in this) {\n this[prop] = null\n }\n }\n}\n\nfunction createResult(coords?: Point, rect?: FullRect): ModificationResult {\n return {\n rect,\n coords,\n delta: { x: 0, y: 0 },\n rectDelta: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n eventProps: [],\n changed: true,\n }\n}\n\nfunction getModifierList(interaction) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return (\n options &&\n options.enabled && {\n options,\n methods: options._methods,\n }\n )\n })\n .filter((m) => !!m)\n}\n\nexport function getRectOffset(rect, coords) {\n return rect\n ? {\n left: coords.x - rect.left,\n top: coords.y - rect.top,\n right: rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n }\n}\n","import type { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\n\nimport { Modification } from './Modification'\nimport type { Modifier, ModifierModule, ModifierState } from './types'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modification?: Modification\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n modifiers?: Array<{\n name: string\n [key: string]: any\n }>\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n modifiers?: Modifier[]\n }\n}\n\nexport function makeModifier<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string,\n Result,\n>(module: ModifierModule, name?: Name) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (_options?: Partial) => {\n const options = (_options || {}) as Defaults\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n ;(options as any)[prop] = defaults[prop]\n }\n }\n\n const m: Modifier = {\n options,\n methods,\n name,\n enable: () => {\n options.enabled = true\n return m\n },\n disable: () => {\n options.enabled = false\n return m\n },\n }\n\n return m\n }\n\n if (name && typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport function addEventModifiers({\n iEvent,\n interaction,\n}: {\n iEvent: InteractEvent\n interaction: Interaction\n}) {\n const result = interaction.modification!.result\n\n if (result) {\n iEvent.modifiers = result.eventProps\n }\n}\n\nconst modifiersBase: Plugin = {\n id: 'modifiers/base',\n before: ['actions'],\n install: (scope) => {\n scope.defaults.perAction.modifiers = []\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.modification = new Modification(interaction)\n },\n\n 'interactions:before-action-start': (arg) => {\n const { interaction } = arg\n const modification = arg.interaction.modification!\n\n modification.start(arg, interaction.coords.start.page)\n interaction.edges = modification.edges\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-move': (arg) => {\n const { interaction } = arg\n const { modification } = interaction\n const ret = modification.setAndApply(arg)\n interaction.edges = modification.edges\n\n return ret\n },\n\n 'interactions:before-action-end': (arg) => {\n const { interaction } = arg\n const { modification } = interaction\n const ret = modification.beforeEnd(arg)\n interaction.edges = modification.startEdges\n\n return ret\n },\n\n 'interactions:action-start': addEventModifiers,\n 'interactions:action-move': addEventModifiers,\n 'interactions:action-end': addEventModifiers,\n\n 'interactions:after-action-start': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-move': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n\n 'interactions:stop': (arg) => arg.interaction.modification.stop(arg),\n },\n}\n\nexport default modifiersBase\n","import type { Point, Listeners, OrBoolean, Element, Rect } from '@interactjs/core/types'\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {}\n\nexport interface BaseDefaults {\n preventDefault?: 'always' | 'never' | 'auto'\n deltaSource?: 'page' | 'client'\n context?: Node\n getRect?: (element: Element) => Rect\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Point | string | Element\n listeners?: Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial &\n Partial & {\n [P in keyof ActionDefaults]?: Partial\n }\n\nexport interface OptionsArg extends BaseDefaults, OrBoolean> {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\n\nimport type { Point, FullRect, PointerEventType, Element, ActionName } from '@interactjs/core/types'\n\nimport { BaseEvent } from './BaseEvent'\nimport type { Interaction } from './Interaction'\nimport { defaults } from './options'\n\nexport type EventPhase = keyof PhaseMap\n\nexport interface PhaseMap {\n start: true\n move: true\n end: true\n}\n\n// defined outside of class definition to avoid assignment of undefined during\n// construction\nexport interface InteractEvent {\n pageX: number\n pageY: number\n\n clientX: number\n clientY: number\n\n dx: number\n dy: number\n\n velocityX: number\n velocityY: number\n}\n\nexport class InteractEvent<\n T extends ActionName = never,\n P extends EventPhase = EventPhase,\n> extends BaseEvent {\n declare target: Element\n declare currentTarget: Element\n relatedTarget: Element | null = null\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Point\n client: Point\n delta: Point\n rect: FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Point\n speed: number\n swipe: ReturnType['getSwipe']>\n // resize\n axes?: 'x' | 'y' | 'xy'\n /** @internal */\n preEnd?: boolean\n\n constructor(\n interaction: Interaction,\n event: PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.preEnd = preEnd\n this.type = type || actionName + (phase || '')\n this.interactable = target\n\n this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n } else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null\n }\n\n getSwipe() {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = (180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX)) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault() {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation() {\n this.propagationStopped = true\n }\n}\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperties(InteractEvent.prototype, {\n pageX: {\n get() {\n return this.page.x\n },\n set(value) {\n this.page.x = value\n },\n },\n pageY: {\n get() {\n return this.page.y\n },\n set(value) {\n this.page.y = value\n },\n },\n\n clientX: {\n get() {\n return this.client.x\n },\n set(value) {\n this.client.x = value\n },\n },\n clientY: {\n get() {\n return this.client.y\n },\n set(value) {\n this.client.y = value\n },\n },\n\n dx: {\n get() {\n return this.delta.x\n },\n set(value) {\n this.delta.x = value\n },\n },\n dy: {\n get() {\n return this.delta.y\n },\n set(value) {\n this.delta.y = value\n },\n },\n\n velocityX: {\n get() {\n return this.velocity.x\n },\n set(value) {\n this.velocity.x = value\n },\n },\n velocityY: {\n get() {\n return this.velocity.y\n },\n set(value) {\n this.velocity.y = value\n },\n },\n})\n","import type { PointerEventType, PointerType } from '@interactjs/core/types'\n\nexport class PointerInfo {\n id: number\n pointer: PointerType\n event: PointerEventType\n downTime: number\n downTarget: Node\n\n constructor(id: number, pointer: PointerType, event: PointerEventType, downTime: number, downTarget: Node) {\n this.id = id\n this.pointer = pointer\n this.event = event\n this.downTime = downTime\n this.downTarget = downTarget\n }\n}\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport hypot from '@interactjs/utils/hypot'\nimport { warnOnce, copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport type {\n Element,\n EdgeOptions,\n PointerEventType,\n PointerType,\n FullRect,\n CoordsSet,\n ActionName,\n ActionProps,\n} from '@interactjs/core/types'\n\nimport type { Interactable } from './Interactable'\nimport type { EventPhase } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport type { ActionDefaults } from './options'\nimport { PointerInfo } from './PointerInfo'\nimport type { Scope } from './scope'\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = '',\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = '',\n}\n\nexport type PointerArgProps = {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n pointerIndex: number\n pointerInfo: PointerInfo\n interaction: Interaction\n} & T\n\nexport interface DoPhaseArg {\n event: PointerEventType\n phase: EventPhase\n interaction: Interaction\n iEvent: InteractEvent\n preEnd?: boolean\n type?: string\n}\n\nexport type DoAnyPhaseArg = DoPhaseArg\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:new': { interaction: Interaction }\n 'interactions:down': PointerArgProps<{\n type: 'down'\n }>\n 'interactions:move': PointerArgProps<{\n type: 'move'\n dx: number\n dy: number\n duplicate: boolean\n }>\n 'interactions:up': PointerArgProps<{\n type: 'up'\n curEventTarget: EventTarget\n }>\n 'interactions:cancel': SignalArgs['interactions:up'] & {\n type: 'cancel'\n curEventTarget: EventTarget\n }\n 'interactions:update-pointer': PointerArgProps<{\n down: boolean\n }>\n 'interactions:remove-pointer': PointerArgProps\n 'interactions:blur': { interaction: Interaction; event: Event; type: 'blur' }\n 'interactions:before-action-start': Omit\n 'interactions:action-start': DoAnyPhaseArg\n 'interactions:after-action-start': DoAnyPhaseArg\n 'interactions:before-action-move': Omit\n 'interactions:action-move': DoAnyPhaseArg\n 'interactions:after-action-move': DoAnyPhaseArg\n 'interactions:before-action-end': Omit\n 'interactions:action-end': DoAnyPhaseArg\n 'interactions:after-action-end': DoAnyPhaseArg\n 'interactions:stop': { interaction: Interaction }\n }\n}\n\nexport type InteractionProxy = Pick<\n Interaction,\n keyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nlet idCounter = 0\n\nexport class Interaction {\n /** current interactable being interacted with */\n interactable: Interactable | null = null\n\n /** the target element of the interactable */\n element: Element | null = null\n rect: FullRect | null = null\n /** @internal */\n _rects?: {\n start: FullRect\n corrected: FullRect\n previous: FullRect\n delta: FullRect\n }\n /** @internal */\n edges: EdgeOptions | null = null\n\n /** @internal */\n _scopeFire: Scope['fire']\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name: null,\n axis: null,\n edges: null,\n }\n\n pointerType: string\n\n /** @internal keep track of added pointers */\n pointers: PointerInfo[] = []\n\n /** @internal pointerdown/mousedown/touchstart event */\n downEvent: PointerEventType | null = null\n\n /** @internal */ downPointer: PointerType = {} as PointerType\n\n /** @internal */\n _latestPointer: {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n /** @internal */ prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n /** @internal */ _interacting = false\n /** @internal */ _ending = false\n /** @internal */ _stopped = true\n /** @internal */ _proxy: InteractionProxy\n\n /** @internal */ simulation = null\n\n /** @internal */ get pointerMoveTolerance() {\n return 1\n }\n\n doMove = warnOnce(function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n }, 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords: CoordsSet = {\n // Starting InteractEvent pointer coordinates\n start: pointerUtils.newCoords(),\n // Previous native pointer move event coordinates\n prev: pointerUtils.newCoords(),\n // current native pointer move event coordinates\n cur: pointerUtils.newCoords(),\n // Change in coordinates and time of the pointer\n delta: pointerUtils.newCoords(),\n // pointer velocity\n velocity: pointerUtils.newCoords(),\n }\n\n /** @internal */ readonly _id: number = idCounter++\n\n constructor({ pointerType, scopeFire }: { pointerType?: string; scopeFire: Scope['fire'] }) {\n this._scopeFire = scopeFire\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get() {\n return that[key]\n },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args: any[]) => that[key](...args),\n })\n }\n\n this._scopeFire('interactions:new', { interaction: this })\n }\n\n pointerDown(pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n pointerInfo,\n type: 'down',\n interaction: this as unknown as Interaction,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param action - The action to be performed - drag, resize, etc.\n * @param target - The Interactable to target\n * @param element - The DOM Element to target\n * @returns Whether the interaction was successfully started\n */\n start(action: ActionProps, interactable: Interactable, element: Element): boolean {\n if (\n this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === 'gesture' ? 2 : 1) ||\n !interactable.options[action.name as keyof ActionDefaults].enabled\n ) {\n return false\n }\n\n copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n ? extend({}, this.prepared.edges)\n : { left: true, right: true, top: true, bottom: true }\n this._stopped = false\n this._interacting =\n this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: 'start',\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove(pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modification && this.modification.endResult)) {\n this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const duplicateMove =\n this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y\n\n let dx: number\n let dy: number\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const pointerIndex = this.getPointerIndex(pointer)\n const signalArg = {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n type: 'move' as const,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this as unknown as Interaction,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._scopeFire('interactions:move', signalArg)\n\n if (!duplicateMove && !this.simulation) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n signalArg.type = null\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move(signalArg?: any) {\n if (!signalArg || !signalArg.event) {\n pointerUtils.setZeroCoords(this.coords.delta)\n }\n\n signalArg = extend(\n {\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n },\n signalArg || {},\n )\n\n signalArg.phase = 'move'\n\n this._doPhase(signalArg)\n }\n\n /**\n * @internal\n * End interact move events and stop auto-scroll unless simulation is running\n */\n pointerUp(pointer: PointerType, event: PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n const type = /cancel$/i.test(event.type) ? 'cancel' : 'up'\n\n this._scopeFire(`interactions:${type}` as 'interactions:up' | 'interactions:cancel', {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n eventTarget,\n type: type as any,\n curEventTarget,\n interaction: this as unknown as Interaction,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.removePointer(pointer, event)\n }\n\n /** @internal */\n documentBlur(event: Event) {\n this.end(event as any)\n this._scopeFire('interactions:blur', {\n event,\n type: 'blur',\n interaction: this as unknown as Interaction,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n */\n end(event?: PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult: boolean\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: 'end',\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction() {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting() {\n return this._interacting\n }\n\n stop() {\n this._scopeFire('interactions:stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n /** @internal */\n getPointerIndex(pointer: any) {\n const pointerId = pointerUtils.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return this.pointerType === 'mouse' || this.pointerType === 'pen'\n ? this.pointers.length - 1\n : arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n /** @internal */\n getPointerInfo(pointer: any) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n /** @internal */\n updatePointer(pointer: PointerType, event: PointerEventType, eventTarget: Node, down?: boolean) {\n const id = pointerUtils.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false ? false : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(id, pointer, event, null, null)\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n } else {\n pointerInfo.pointer = pointer\n }\n\n pointerUtils.setCoords(\n this.coords.cur,\n this.pointers.map((p) => p.pointer),\n this._now(),\n )\n pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n\n if (down) {\n this.pointerIsDown = true\n\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n pointerUtils.pointerExtend(this.downPointer, pointer)\n\n if (!this.interacting()) {\n pointerUtils.copyCoords(this.coords.start, this.coords.cur)\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur)\n\n this.downEvent = event\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._scopeFire('interactions:update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this as unknown as Interaction,\n })\n\n return pointerIndex\n }\n\n /** @internal */\n removePointer(pointer: PointerType, event: PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) return\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._scopeFire('interactions:remove-pointer', {\n pointer,\n event,\n eventTarget: null,\n pointerIndex,\n pointerInfo,\n interaction: this as unknown as Interaction,\n })\n\n this.pointers.splice(pointerIndex, 1)\n this.pointerIsDown = false\n }\n\n /** @internal */\n _updateLatestPointer(pointer: PointerType, event: PointerEventType, eventTarget: Node) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy() {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n /** @internal */\n _createPreparedEvent

(\n event: PointerEventType,\n phase: P,\n preEnd?: boolean,\n type?: string,\n ) {\n return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type)\n }\n\n /** @internal */\n _fireEvent

(iEvent: InteractEvent) {\n this.interactable?.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n /** @internal */\n _doPhase

(\n signalArg: Omit, 'iEvent'> & { iEvent?: InteractEvent },\n ) {\n const { event, phase, preEnd, type } = signalArg\n const { rect } = this\n\n if (rect && phase === 'move') {\n // update the rect changes due to pointer move\n rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource])\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n const beforeResult = this._scopeFire(`interactions:before-action-${phase}` as any, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = (signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type))\n\n this._scopeFire(`interactions:action-${phase}` as any, signalArg)\n\n if (phase === 'start') {\n this.prevEvent = iEvent\n }\n\n this._fireEvent(iEvent)\n\n this._scopeFire(`interactions:after-action-${phase}` as any, signalArg)\n\n return true\n }\n\n /** @internal */\n _now() {\n return Date.now()\n }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","import type Interaction from '@interactjs/core/Interaction'\nimport { _ProxyMethods } from '@interactjs/core/Interaction'\nimport type { Plugin } from '@interactjs/core/scope'\nimport type { Point } from '@interactjs/core/types'\nimport * as rectUtils from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n offsetBy?: typeof offsetBy\n offset: {\n total: Point\n pending: Point\n }\n }\n\n enum _ProxyMethods {\n offsetBy = '',\n }\n}\n\n;(_ProxyMethods as any).offsetBy = ''\n\nexport function addTotal(interaction: Interaction) {\n if (!interaction.pointerIsDown) {\n return\n }\n\n addToCoords(interaction.coords.cur, interaction.offset.total)\n\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nfunction beforeAction({ interaction }: { interaction: Interaction }) {\n applyPending(interaction)\n}\n\nfunction beforeEnd({ interaction }: { interaction: Interaction }): boolean | void {\n const hadPending = applyPending(interaction)\n\n if (!hadPending) return\n\n interaction.move({ offset: true })\n interaction.end()\n\n return false\n}\n\nfunction end({ interaction }: { interaction: Interaction }) {\n interaction.offset.total.x = 0\n interaction.offset.total.y = 0\n interaction.offset.pending.x = 0\n interaction.offset.pending.y = 0\n}\n\nexport function applyPending(interaction: Interaction) {\n if (!hasPending(interaction)) {\n return false\n }\n\n const { pending } = interaction.offset\n\n addToCoords(interaction.coords.cur, pending)\n addToCoords(interaction.coords.delta, pending)\n rectUtils.addEdges(interaction.edges, interaction.rect, pending)\n\n pending.x = 0\n pending.y = 0\n\n return true\n}\n\nfunction offsetBy(this: Interaction, { x, y }: Point) {\n this.offset.pending.x += x\n this.offset.pending.y += y\n\n this.offset.total.x += x\n this.offset.total.y += y\n}\n\nfunction addToCoords({ page, client }, { x, y }: Point) {\n page.x += x\n page.y += y\n client.x += x\n client.y += y\n}\n\nfunction hasPending(interaction: Interaction) {\n return !!(interaction.offset.pending.x || interaction.offset.pending.y)\n}\n\nconst offset: Plugin = {\n id: 'offset',\n before: ['modifiers', 'pointer-events', 'actions', 'inertia'],\n install(scope) {\n scope.Interaction.prototype.offsetBy = offsetBy\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.offset = {\n total: { x: 0, y: 0 },\n pending: { x: 0, y: 0 },\n }\n },\n 'interactions:update-pointer': ({ interaction }) => addTotal(interaction),\n 'interactions:before-action-start': beforeAction,\n 'interactions:before-action-move': beforeAction,\n 'interactions:before-action-end': beforeEnd,\n 'interactions:stop': end,\n },\n}\n\nexport default offset\n","import type { Interaction, DoPhaseArg } from '@interactjs/core/Interaction'\nimport type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { ActionName, Point, PointerEventType } from '@interactjs/core/types'\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport '@interactjs/modifiers/base'\nimport '@interactjs/offset/plugin'\nimport * as modifiers from '@interactjs/modifiers/base'\nimport { Modification } from '@interactjs/modifiers/Modification'\nimport type { ModifierArg } from '@interactjs/modifiers/types'\nimport offset from '@interactjs/offset/plugin'\n/* eslint-enable import/no-duplicates */\nimport * as dom from '@interactjs/utils/domUtils'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { copyCoords } from '@interactjs/utils/pointerUtils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n resume?: true\n inertiastart?: true\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: InertiaState\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean\n resistance?: number // the lambda in exponential decay\n minSpeed?: number // target speed must be above this for inertia to start\n endSpeed?: number // the speed at which inertia is slow enough to stop\n allowResume?: true // allow resuming an action in inertia phase\n smoothEndDuration?: number // animate to snap/restrict endOnly if there's no inertia\n }\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-inertiastart': Omit, 'iEvent'>\n 'interactions:action-inertiastart': DoPhaseArg\n 'interactions:after-action-inertiastart': DoPhaseArg\n 'interactions:before-action-resume': Omit, 'iEvent'>\n 'interactions:action-resume': DoPhaseArg\n 'interactions:after-action-resume': DoPhaseArg\n }\n}\n\nfunction install(scope: Scope) {\n const { defaults } = scope\n\n scope.usePlugin(offset)\n scope.usePlugin(modifiers.default)\n scope.actions.phases.inertiastart = true\n scope.actions.phases.resume = true\n\n defaults.perAction.inertia = {\n enabled: false,\n resistance: 10, // the lambda in exponential decay\n minSpeed: 100, // target speed must be above this for inertia to start\n endSpeed: 10, // the speed at which inertia is slow enough to stop\n allowResume: true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n}\n\nexport class InertiaState {\n active = false\n isModified = false\n smoothEnd = false\n allowResume = false\n\n modification!: Modification\n modifierCount = 0\n modifierArg!: ModifierArg\n\n startCoords!: Point\n t0 = 0\n v0 = 0\n\n te = 0\n targetOffset!: Point\n modifiedOffset!: Point\n currentOffset!: Point\n\n lambda_v0? = 0 // eslint-disable-line camelcase\n one_ve_v0? = 0 // eslint-disable-line camelcase\n timeout!: number\n readonly interaction: Interaction\n\n constructor(interaction: Interaction) {\n this.interaction = interaction\n }\n\n start(event: PointerEventType) {\n const { interaction } = this\n const options = getOptions(interaction)\n\n if (!options || !options.enabled) {\n return false\n }\n\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = hypot(velocityClient.x, velocityClient.y)\n const modification = this.modification || (this.modification = new Modification(interaction))\n\n modification.copyFrom(interaction.modification)\n\n this.t0 = interaction._now()\n this.allowResume = options.allowResume\n this.v0 = pointerSpeed\n this.currentOffset = { x: 0, y: 0 }\n this.startCoords = interaction.coords.cur.page\n\n this.modifierArg = modification.fillArg({\n pageCoords: this.startCoords,\n preEnd: true,\n phase: 'inertiastart',\n })\n\n const thrown =\n this.t0 - interaction.coords.cur.timeStamp < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed\n\n if (thrown) {\n this.startInertia()\n } else {\n modification.result = modification.setAll(this.modifierArg)\n\n if (!modification.result.changed) {\n return false\n }\n\n this.startSmoothEnd()\n }\n\n // force modification change\n interaction.modification.result.rect = null\n\n // bring inertiastart event to the target coords\n interaction.offsetBy(this.targetOffset)\n interaction._doPhase({\n interaction,\n event,\n phase: 'inertiastart',\n })\n interaction.offsetBy({ x: -this.targetOffset.x, y: -this.targetOffset.y })\n // force modification change\n interaction.modification.result.rect = null\n\n this.active = true\n interaction.simulation = this\n\n return true\n }\n\n startInertia() {\n const startVelocity = this.interaction.coords.velocity.client\n const options = getOptions(this.interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / this.v0) / lambda\n\n this.targetOffset = {\n x: (startVelocity.x - inertiaDur) / lambda,\n y: (startVelocity.y - inertiaDur) / lambda,\n }\n\n this.te = inertiaDur\n this.lambda_v0 = lambda / this.v0\n this.one_ve_v0 = 1 - options.endSpeed / this.v0\n\n const { modification, modifierArg } = this\n\n modifierArg.pageCoords = {\n x: this.startCoords.x + this.targetOffset.x,\n y: this.startCoords.y + this.targetOffset.y,\n }\n\n modification.result = modification.setAll(modifierArg)\n\n if (modification.result.changed) {\n this.isModified = true\n this.modifiedOffset = {\n x: this.targetOffset.x + modification.result.delta.x,\n y: this.targetOffset.y + modification.result.delta.y,\n }\n }\n\n this.onNextFrame(() => this.inertiaTick())\n }\n\n startSmoothEnd() {\n this.smoothEnd = true\n this.isModified = true\n this.targetOffset = {\n x: this.modification.result.delta.x,\n y: this.modification.result.delta.y,\n }\n\n this.onNextFrame(() => this.smoothEndTick())\n }\n\n onNextFrame(tickFn: () => void) {\n this.timeout = raf.request(() => {\n if (this.active) {\n tickFn()\n }\n })\n }\n\n inertiaTick() {\n const { interaction } = this\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = (interaction._now() - this.t0) / 1000\n\n if (t < this.te) {\n const progress = 1 - (Math.exp(-lambda * t) - this.lambda_v0) / this.one_ve_v0\n let newOffset: Point\n\n if (this.isModified) {\n newOffset = getQuadraticCurvePoint(\n 0,\n 0,\n this.targetOffset.x,\n this.targetOffset.y,\n this.modifiedOffset.x,\n this.modifiedOffset.y,\n progress,\n )\n } else {\n newOffset = {\n x: this.targetOffset.x * progress,\n y: this.targetOffset.y * progress,\n }\n }\n\n const delta = { x: newOffset.x - this.currentOffset.x, y: newOffset.y - this.currentOffset.y }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move()\n\n this.onNextFrame(() => this.inertiaTick())\n } else {\n interaction.offsetBy({\n x: this.modifiedOffset.x - this.currentOffset.x,\n y: this.modifiedOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n smoothEndTick() {\n const { interaction } = this\n const t = interaction._now() - this.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n const newOffset = {\n x: easeOutQuad(t, 0, this.targetOffset.x, duration),\n y: easeOutQuad(t, 0, this.targetOffset.y, duration),\n }\n const delta = {\n x: newOffset.x - this.currentOffset.x,\n y: newOffset.y - this.currentOffset.y,\n }\n\n this.currentOffset.x += delta.x\n this.currentOffset.y += delta.y\n\n interaction.offsetBy(delta)\n interaction.move({ skipModifiers: this.modifierCount })\n\n this.onNextFrame(() => this.smoothEndTick())\n } else {\n interaction.offsetBy({\n x: this.targetOffset.x - this.currentOffset.x,\n y: this.targetOffset.y - this.currentOffset.y,\n })\n\n this.end()\n }\n }\n\n resume({ pointer, event, eventTarget }: SignalArgs['interactions:down']) {\n const { interaction } = this\n\n // undo inertia changes to interaction coords\n interaction.offsetBy({\n x: -this.currentOffset.x,\n y: -this.currentOffset.y,\n })\n\n // update pointer at pointer down position\n interaction.updatePointer(pointer, event, eventTarget, true)\n\n // fire resume signals and event\n interaction._doPhase({\n interaction,\n event,\n phase: 'resume',\n })\n copyCoords(interaction.coords.prev, interaction.coords.cur)\n\n this.stop()\n }\n\n end() {\n this.interaction.move()\n this.interaction.end()\n this.stop()\n }\n\n stop() {\n this.active = this.smoothEnd = false\n this.interaction.simulation = null\n raf.cancel(this.timeout)\n }\n}\n\nfunction start({ interaction, event }: DoPhaseArg) {\n if (!interaction._interacting || interaction.simulation) {\n return null\n }\n\n const started = interaction.inertia.start(event)\n\n // prevent action end if inertia or smoothEnd\n return started ? false : null\n}\n\n// Check if the down event hits the current inertia target\n// control should be return to the user\nfunction resume(arg: SignalArgs['interactions:down']) {\n const { interaction, eventTarget } = arg\n const state = interaction.inertia\n\n if (!state.active) return\n\n let element = eventTarget as Node\n\n // climb up the DOM tree from the event target\n while (is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n state.resume(arg)\n break\n }\n\n element = dom.parentNode(element)\n }\n}\n\nfunction stop({ interaction }: { interaction: Interaction }) {\n const state = interaction.inertia\n\n if (state.active) {\n state.stop()\n }\n}\n\nfunction getOptions({ interactable, prepared }: Interaction) {\n return interactable && interactable.options && prepared.name && interactable.options[prepared.name].inertia\n}\n\nconst inertia: Plugin = {\n id: 'inertia',\n before: ['modifiers', 'actions'],\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.inertia = new InertiaState(interaction)\n },\n\n 'interactions:before-action-end': start,\n 'interactions:down': resume,\n 'interactions:stop': stop,\n\n 'interactions:before-action-resume': (arg) => {\n const { modification } = arg.interaction\n\n modification.stop(arg)\n modification.start(arg, arg.interaction.coords.cur.page)\n modification.applyToInteraction(arg)\n },\n\n 'interactions:before-action-inertiastart': (arg) => arg.interaction.modification.setAndApply(arg),\n 'interactions:action-resume': modifiers.addEventModifiers,\n 'interactions:action-inertiastart': modifiers.addEventModifiers,\n 'interactions:after-action-inertiastart': (arg) =>\n arg.interaction.modification.restoreInteractionCoords(arg),\n 'interactions:after-action-resume': (arg) => arg.interaction.modification.restoreInteractionCoords(arg),\n },\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nfunction _getQBezierValue(t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nfunction getQuadraticCurvePoint(\n startX: number,\n startY: number,\n cpX: number,\n cpY: number,\n endX: number,\n endY: number,\n position: number,\n) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nfunction easeOutQuad(t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport default inertia\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport type { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport normalize from '@interactjs/utils/normalizeListeners'\n\nimport type { Listener, ListenersArg, Rect } from '@interactjs/core/types'\n\nfunction fireUntilImmediateStopped(event: any, listeners: Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) {\n break\n }\n\n listener(event)\n }\n}\n\nexport class Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor(options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire(event: T) {\n let listeners: Listener[]\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on(type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off(type: string, listener: ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) {\n continue\n }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n\n getRect(_element: Element): Rect {\n return null\n }\n}\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport pExtend from '@interactjs/utils/pointerExtend'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { Scope } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/core/types'\n\nimport type { NativeEventTarget } from './NativeTypes'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n events: ReturnType\n }\n}\n\ninterface EventOptions {\n capture: boolean\n passive: boolean\n}\n\ntype PartialEventTarget = Partial\n\ntype ListenerEntry = { func: (event: Event | FakeEvent) => any; options: EventOptions }\n\nfunction install(scope: Scope) {\n const targets: Array<{\n eventTarget: PartialEventTarget\n events: { [type: string]: ListenerEntry[] }\n }> = []\n\n const delegatedEvents: {\n [type: string]: Array<{\n selector: string\n context: Node\n listeners: ListenerEntry[]\n }>\n } = {}\n const documents: Document[] = []\n\n const eventsMethods = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n targets,\n\n supportsOptions: false,\n supportsPassive: false,\n }\n\n // check if browser supports passive events and options arg\n scope.document?.createElement('div').addEventListener('test', null, {\n get capture() {\n return (eventsMethods.supportsOptions = true)\n },\n get passive() {\n return (eventsMethods.supportsPassive = true)\n },\n })\n\n scope.events = eventsMethods\n\n function add(\n eventTarget: PartialEventTarget,\n type: string,\n listener: ListenerEntry['func'],\n optionalArg?: boolean | EventOptions,\n ) {\n if (!eventTarget.addEventListener) return\n\n const options = getOptions(optionalArg)\n let target = arr.find(targets, (t) => t.eventTarget === eventTarget)\n\n if (!target) {\n target = {\n eventTarget,\n events: {},\n }\n\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n }\n\n if (!arr.find(target.events[type], (l) => l.func === listener && optionsMatch(l.options, options))) {\n eventTarget.addEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n target.events[type].push({ func: listener, options })\n }\n }\n\n function remove(\n eventTarget: PartialEventTarget,\n type: string,\n listener?: 'all' | ListenerEntry['func'],\n optionalArg?: boolean | EventOptions,\n ) {\n if (!eventTarget.addEventListener || !eventTarget.removeEventListener) return\n\n const targetIndex = arr.findIndex(targets, (t) => t.eventTarget === eventTarget)\n const target = targets[targetIndex]\n\n if (!target || !target.events) {\n return\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(eventTarget, type, 'all')\n }\n }\n return\n }\n\n let typeIsEmpty = false\n const typeListeners = target.events[type]\n\n if (typeListeners) {\n if (listener === 'all') {\n for (let i = typeListeners.length - 1; i >= 0; i--) {\n const entry = typeListeners[i]\n remove(eventTarget, type, entry.func, entry.options)\n }\n return\n } else {\n const options = getOptions(optionalArg)\n\n for (let i = 0; i < typeListeners.length; i++) {\n const entry = typeListeners[i]\n if (entry.func === listener && optionsMatch(entry.options, options)) {\n eventTarget.removeEventListener(\n type,\n listener as any,\n eventsMethods.supportsOptions ? options : options.capture,\n )\n typeListeners.splice(i, 1)\n\n if (typeListeners.length === 0) {\n delete target.events[type]\n typeIsEmpty = true\n }\n\n break\n }\n }\n }\n }\n\n if (typeIsEmpty && !Object.keys(target.events).length) {\n targets.splice(targetIndex, 1)\n }\n }\n\n function addDelegate(\n selector: string,\n context: Node,\n type: string,\n listener: ListenerEntry['func'],\n optionalArg?: any,\n ) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = []\n\n // add delegate listener functions\n for (const doc of documents) {\n add(doc, type, delegateListener)\n add(doc, type, delegateUseCapture, true)\n }\n }\n\n const delegates = delegatedEvents[type]\n let delegate = arr.find(delegates, (d) => d.selector === selector && d.context === context)\n\n if (!delegate) {\n delegate = { selector, context, listeners: [] }\n delegates.push(delegate)\n }\n\n delegate.listeners.push({ func: listener, options })\n }\n\n function removeDelegate(\n selector: string,\n context: Document | Element,\n type: string,\n listener?: ListenerEntry['func'],\n optionalArg?: any,\n ) {\n const options = getOptions(optionalArg)\n const delegates = delegatedEvents[type]\n let matchFound = false\n let index: number\n\n if (!delegates) return\n\n // count from last index of delegated to 0\n for (index = delegates.length - 1; index >= 0; index--) {\n const cur = delegates[index]\n // look for matching selector and context Node\n if (cur.selector === selector && cur.context === context) {\n const { listeners } = cur\n\n // each item of the listeners array is an array: [function, capture, passive]\n for (let i = listeners.length - 1; i >= 0; i--) {\n const entry = listeners[i]\n\n // check if the listener functions and capture and passive flags match\n if (entry.func === listener && optionsMatch(entry.options, options)) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1)\n\n // if all listeners for this target have been removed\n // remove the target from the delegates array\n if (!listeners.length) {\n delegates.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) {\n break\n }\n }\n }\n }\n\n // bound to the interactable context when a DOM event\n // listener is added to a selector interactable\n function delegateListener(event: Event | FakeEvent, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event as Event)\n const delegates = delegatedEvents[event.type]\n const [eventTarget] = pointerUtils.getEventTargets(event as Event)\n let element: Node = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegates.length; i++) {\n const cur = delegates[i]\n const { selector, context } = cur\n\n if (\n domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)\n ) {\n const { listeners } = cur\n\n fakeEvent.currentTarget = element\n\n for (const entry of listeners) {\n if (optionsMatch(entry.options, options)) {\n entry.func(fakeEvent)\n }\n }\n }\n }\n\n element = domUtils.parentNode(element)\n }\n }\n\n function delegateUseCapture(this: Element, event: Event | FakeEvent) {\n return delegateListener.call(this, event, true)\n }\n\n // for type inferrence\n return eventsMethods\n}\n\nclass FakeEvent implements Partial {\n currentTarget: Node\n originalEvent: Event\n type: string\n\n constructor(originalEvent: Event) {\n this.originalEvent = originalEvent\n // duplicate the event so that currentTarget can be changed\n pExtend(this, originalEvent)\n }\n\n preventOriginalDefault() {\n this.originalEvent.preventDefault()\n }\n\n stopPropagation() {\n this.originalEvent.stopPropagation()\n }\n\n stopImmediatePropagation() {\n this.originalEvent.stopImmediatePropagation()\n }\n}\n\nfunction getOptions(param: { [index: string]: any } | boolean): { capture: boolean; passive: boolean } {\n if (!is.object(param)) {\n return { capture: !!param, passive: false }\n }\n\n return {\n capture: !!param.capture,\n passive: !!param.passive,\n }\n}\n\nfunction optionsMatch(a: Partial | boolean, b: Partial) {\n if (a === b) return true\n\n if (typeof a === 'boolean') return !!b.capture === a && !!b.passive === false\n\n return !!a.capture === !!b.capture && !!a.passive === !!b.passive\n}\n\nexport default {\n id: 'events',\n install,\n}\n","import * as dom from '@interactjs/utils/domUtils'\n\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/core/types'\n\nexport interface SearchDetails {\n pointer: PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: EventTarget\n curEventTarget: EventTarget\n scope: Scope\n}\n\nconst finder = {\n methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'] as const,\n\n search(details: SearchDetails) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n\n return null\n },\n\n // try to resume simulation with a new pointer\n simulationResume({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget as Node\n\n if (\n interaction.simulation &&\n interaction.simulation.allowResume &&\n interaction.pointerType === pointerType\n ) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n continue\n }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && pointerType === interaction.pointerType) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId(interaction: Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { ActionName, Listener } from '@interactjs/core/types'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './interactablePreventDefault'\nimport interactablePreventDefault from './interactablePreventDefault'\nimport InteractionBase from './Interaction'\n/* eslint-enable import/no-duplicates */\nimport type { SearchDetails } from './interactionFinder'\nimport finder from './interactionFinder'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n new: (options: any) => InteractionBase\n list: Array>\n listeners: { [type: string]: Listener }\n docEvents: Array<{ type: string; listener: Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n\n interface SignalArgs {\n 'interactions:find': {\n interaction: InteractionBase\n searchDetails: SearchDetails\n }\n }\n}\n\nconst methodNames = [\n 'pointerDown',\n 'pointerMove',\n 'pointerUp',\n 'updatePointer',\n 'removePointer',\n 'windowBlur',\n]\n\nfunction install(scope: Scope) {\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n } else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener(event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class extends InteractionBase {\n get pointerMoveTolerance() {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance(value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now() {\n return scope.now()\n }\n }\n\n scope.interactions = {\n // all active and idle interactions\n list: [],\n new(options: { pointerType?: string; scopeFire?: Scope['fire'] }) {\n options.scopeFire = (name, arg) => scope.fire(name, arg)\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls() {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n\n scope.usePlugin(interactablePreventDefault)\n}\n\nfunction doOnInteractions(method: string, scope: Scope) {\n return function (event: Event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches: any[] = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n // @ts-expect-error\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n } else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer =\n invalidPointer ||\n scope.now() - scope.prevTouchTime < 500 ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event as PointerEvent,\n pointerId: pointerUtils.getPointerId(event as PointerEvent),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction(searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.fire('interactions:find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal(\n { doc, scope, options }: SignalArgs[T],\n eventMethodName: 'add' | 'remove',\n) {\n const {\n interactions: { docEvents },\n events,\n } = scope\n const eventMethod = events[eventMethodName]\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nconst interactions: Plugin = {\n id: 'core/interactions',\n install,\n listeners: {\n 'scope:add-document': (arg) => onDocSignal(arg, 'add'),\n 'scope:remove-document': (arg) => onDocSignal(arg, 'remove'),\n 'interactable:unset': ({ interactable }, scope) => {\n // Stop and destroy related interactions when an Interactable is unset\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable !== interactable) {\n continue\n }\n\n interaction.stop()\n scope.fire('interactions:destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n },\n },\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n\nexport default interactions\n","/* eslint-disable no-dupe-class-members */\nimport * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport isNonNativeEvent from '@interactjs/utils/isNonNativeEvent'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\n\nimport type { Scope } from '@interactjs/core/scope'\nimport type {\n ActionMap,\n ActionMethod,\n ActionName,\n Actions,\n Context,\n Element,\n EventTypes,\n Listeners,\n ListenersArg,\n OrBoolean,\n Target,\n} from '@interactjs/core/types'\n\nimport { Eventable } from './Eventable'\nimport type { ActionDefaults, Defaults, OptionsArg, PerActionDefaults, Options } from './options'\n\ntype IgnoreValue = string | Element | boolean\ntype DeltaSource = 'page' | 'client'\n\nconst enum OnOffMethod {\n On,\n Off,\n}\n\n/**\n * ```ts\n * const interactable = interact('.cards')\n * .draggable({\n * listeners: { move: event => console.log(event.type, event.pageX, event.pageY) }\n * })\n * .resizable({\n * listeners: { move: event => console.log(event.rect) },\n * modifiers: [interact.modifiers.restrictEdges({ outer: 'parent' })]\n * })\n * ```\n */\nexport class Interactable implements Partial {\n /** @internal */ get _defaults(): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly target: Target\n /** @internal */ readonly options!: Required\n /** @internal */ readonly _actions: Actions\n /** @internal */ readonly events = new Eventable()\n /** @internal */ readonly _context: Context\n /** @internal */ readonly _win: Window\n /** @internal */ readonly _doc: Document\n /** @internal */ readonly _scopeEvents: Scope['events']\n\n constructor(\n target: Target,\n options: any,\n defaultContext: Document | Element,\n scopeEvents: Scope['events'],\n ) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n this._scopeEvents = scopeEvents\n\n this.set(options)\n }\n\n setOnEvents(actionName: ActionName, phases: NonNullable) {\n if (is.func(phases.onstart)) {\n this.on(`${actionName}start`, phases.onstart)\n }\n if (is.func(phases.onmove)) {\n this.on(`${actionName}move`, phases.onmove)\n }\n if (is.func(phases.onend)) {\n this.on(`${actionName}end`, phases.onend)\n }\n if (is.func(phases.oninertiastart)) {\n this.on(`${actionName}inertiastart`, phases.oninertiastart)\n }\n\n return this\n }\n\n updatePerActionListeners(actionName: ActionName, prev: Listeners | undefined, cur: Listeners | undefined) {\n const actionFilter = (this._actions.map[actionName] as { filterEventType?: (type: string) => boolean })\n ?.filterEventType\n const filter = (type: string) =>\n (actionFilter == null || actionFilter(type)) && isNonNativeEvent(type, this._actions)\n\n if (is.array(prev) || is.object(prev)) {\n this._onOff(OnOffMethod.Off, actionName, prev, undefined, filter)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this._onOff(OnOffMethod.On, actionName, cur, undefined, filter)\n }\n }\n\n setPerAction(actionName: ActionName, options: OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName_ in options) {\n const optionName = optionName_ as keyof PerActionDefaults\n const actionOptions = this.options[actionName]\n const optionValue: any = options[optionName]\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue as Listeners)\n }\n\n // if the option value is an array\n if (is.array(optionValue)) {\n ;(actionOptions[optionName] as any) = arr.from(optionValue)\n }\n // if the option value is an object\n else if (is.plainObject(optionValue)) {\n // copy the object\n ;(actionOptions[optionName] as any) = extend(\n actionOptions[optionName] || ({} as any),\n clone(optionValue),\n )\n\n // set anabled field to true if it exists in the defaults\n if (\n is.object(defaults.perAction[optionName]) &&\n 'enabled' in (defaults.perAction[optionName] as any)\n ) {\n ;(actionOptions[optionName] as any).enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n ;(actionOptions[optionName] as any).enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n ;(actionOptions[optionName] as any) = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {Rect} The object's bounding rectangle.\n */\n getRect(element: Element) {\n element = element || (is.element(this.target) ? this.target : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker(): (element: Element) => any | null\n rectChecker(checker: (element: Element) => any): this\n rectChecker(checker?: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = (element) => {\n const rect = extend({}, checker.apply(this, element))\n\n if (!(('width' in rect) as unknown)) {\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n return rect\n }\n\n return this\n }\n\n if (checker === null) {\n delete (this as Partial).getRect\n\n return this\n }\n\n return this.getRect\n }\n\n /** @internal */\n _backCompatOption(optionName: keyof Options, newValue: any) {\n if (trySelector(newValue) || is.object(newValue)) {\n ;(this.options[optionName] as any) = newValue\n\n for (const action in this._actions.map) {\n ;(this.options[action as keyof ActionMap] as any)[optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin(newValue: any) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource(): DeltaSource\n deltaSource(newValue: DeltaSource): this\n deltaSource(newValue?: DeltaSource) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /** @internal */\n getAllElements(): Element[] {\n const { target } = this\n\n if (is.string(target)) {\n return Array.from(this._context.querySelectorAll(target))\n }\n\n if (is.func(target) && (target as any).getAllElements) {\n return (target as any).getAllElements()\n }\n\n return is.element(target) ? [target] : []\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context() {\n return this._context\n }\n\n inContext(element: Document | Node) {\n return this._context === element.ownerDocument || nodeContains(this._context, element)\n }\n\n /** @internal */\n testIgnoreAllow(\n this: Interactable,\n options: { ignoreFrom?: IgnoreValue; allowFrom?: IgnoreValue },\n targetNode: Node,\n eventTarget: Node,\n ) {\n return (\n !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget)\n )\n }\n\n /** @internal */\n testAllow(this: Interactable, allowFrom: IgnoreValue | undefined, targetNode: Node, element: Node) {\n if (!allowFrom) {\n return true\n }\n\n if (!is.element(element)) {\n return false\n }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n } else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n /** @internal */\n testIgnore(this: Interactable, ignoreFrom: IgnoreValue | undefined, targetNode: Node, element: Node) {\n if (!ignoreFrom || !is.element(element)) {\n return false\n }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n } else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire(iEvent: E) {\n this.events.fire(iEvent)\n\n return this\n }\n\n /** @internal */\n _onOff(\n method: OnOffMethod,\n typeArg: EventTypes,\n listenerArg?: ListenersArg | null,\n options?: any,\n filter?: (type: string) => boolean,\n ) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const listeners = normalizeListeners(typeArg, listenerArg, filter)\n\n for (let type in listeners) {\n if (type === 'wheel') {\n type = browser.wheelEvent\n }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (isNonNativeEvent(type, this._actions)) {\n this.events[method === OnOffMethod.On ? 'on' : 'off'](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n this._scopeEvents[method === OnOffMethod.On ? 'addDelegate' : 'removeDelegate'](\n this.target,\n this._context,\n type,\n listener,\n options,\n )\n }\n // remove listener from this Interactable's element\n else {\n this._scopeEvents[method === OnOffMethod.On ? 'add' : 'remove'](\n this.target,\n type,\n listener,\n options,\n )\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on(types: EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff(OnOffMethod.On, types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off(types: string | string[] | EventTypes, listener?: ListenersArg, options?: any) {\n return this._onOff(OnOffMethod.Off, types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set(options: OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n ;(this.options as Required) = clone(defaults.base) as Required\n\n for (const actionName_ in this._actions.methodDict) {\n const actionName = actionName_ as ActionName\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n ;(this[methodName] as ActionMethod)(options[actionName])\n }\n\n for (const setting in options) {\n if (setting === 'getRect') {\n this.rectChecker(options.getRect)\n continue\n }\n\n if (is.func((this as any)[setting])) {\n ;(this as any)[setting](options[setting as keyof typeof options])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n */\n unset() {\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in this._scopeEvents.delegatedEvents) {\n const delegated = this._scopeEvents.delegatedEvents[type]\n\n for (let i = delegated.length - 1; i >= 0; i--) {\n const { selector, context, listeners } = delegated[i]\n\n if (selector === this.target && context === this._context) {\n delegated.splice(i, 1)\n }\n\n for (let l = listeners.length - 1; l >= 0; l--) {\n this._scopeEvents.removeDelegate(\n this.target,\n this._context,\n type,\n listeners[l][0],\n listeners[l][1],\n )\n }\n }\n }\n } else {\n this._scopeEvents.remove(this.target, 'all')\n }\n }\n}\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { OptionsArg, Options } from '@interactjs/core/options'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { Target } from '@interactjs/core/types'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactable:new': {\n interactable: Interactable\n target: Target\n options: OptionsArg\n win: Window\n }\n }\n}\n\nexport class InteractableSet {\n // all set interactables\n list: Interactable[] = []\n\n selectorMap: {\n [selector: string]: Interactable[]\n } = {}\n\n scope: Scope\n\n constructor(scope: Scope) {\n this.scope = scope\n scope.addListeners({\n 'interactable:unset': ({ interactable }) => {\n const { target } = interactable\n const interactablesOnTarget: Interactable[] = is.string(target)\n ? this.selectorMap[target]\n : (target as any)[this.scope.id]\n\n const targetIndex = arr.findIndex(interactablesOnTarget, (i) => i === interactable)\n interactablesOnTarget.splice(targetIndex, 1)\n },\n })\n }\n\n new(target: Target, options?: any): Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events)\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) {\n this.selectorMap[target] = []\n }\n this.selectorMap[target].push(interactable)\n } else {\n if (!(interactable.target as any)[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n ;(target as any)[this.scope.id].push(interactable)\n }\n\n this.scope.fire('interactable:new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n getExisting(target: Target, options?: Options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const interactablesOnTarget: Interactable[] = isSelector\n ? this.selectorMap[target as string]\n : (target as any)[this.scope.id]\n\n if (!interactablesOnTarget) return undefined\n\n return arr.find(\n interactablesOnTarget,\n (interactable) =>\n interactable._context === context && (isSelector || interactable.inContext(target as any)),\n )\n }\n\n forEachMatch(node: Node, callback: (interactable: Interactable) => T): T | void {\n for (const interactable of this.list) {\n let ret: T\n\n if (\n (is.string(interactable.target)\n ? // target is a selector and the element matches\n is.element(node) && domUtils.matchesSelector(node, interactable.target)\n : // target is the element\n node === interactable.target) &&\n // the element is in context\n interactable.inContext(node)\n ) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import browser from '@interactjs/utils/browser'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport isNonNativeEvent from '@interactjs/utils/isNonNativeEvent'\nimport { warnOnce } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Context, EventTypes, Listener, ListenersArg, Target } from '@interactjs/core/types'\n\nimport type { Interactable } from './Interactable'\nimport type { Options } from './options'\n\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nexport interface InteractStatic {\n (target: Target, options?: Options): Interactable\n getPointerAverage: typeof pointerUtils.pointerAverage\n getTouchBBox: typeof pointerUtils.touchBBox\n getTouchDistance: typeof pointerUtils.touchDistance\n getTouchAngle: typeof pointerUtils.touchAngle\n getElementRect: typeof domUtils.getElementRect\n getElementClientRect: typeof domUtils.getElementClientRect\n matchesSelector: typeof domUtils.matchesSelector\n closest: typeof domUtils.closest\n /** @internal */ globalEvents: any\n version: string\n /** @internal */ scope: Scope\n /**\n * Use a plugin\n */\n use(\n plugin: Plugin,\n options?: {\n [key: string]: any\n },\n ): any\n /**\n * Check if an element or selector has been set with the `interact(target)`\n * function\n *\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n isSet(\n /* The Element or string being searched for */\n target: Target,\n options?: any,\n ): boolean\n on(type: string | EventTypes, listener: ListenersArg, options?: object): any\n off(type: EventTypes, listener: any, options?: object): any\n debug(): any\n /**\n * Whether or not the browser supports touch input\n */\n supportsTouch(): boolean\n /**\n * Whether or not the browser supports PointerEvents\n */\n supportsPointerEvent(): boolean\n /**\n * Cancels all interactions (end events are not fired)\n */\n stop(): InteractStatic\n /**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n */\n pointerMoveTolerance(\n /** The movement from the start position must be greater than this value */\n newValue?: number,\n ): InteractStatic | number\n addDocument(doc: Document, options?: object): void\n removeDocument(doc: Document): void\n}\n\nexport function createInteractStatic(scope: Scope): InteractStatic {\n const interact = ((target: Target, options: Options) => {\n let interactable = scope.interactables.getExisting(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = interact.globalEvents\n }\n\n return interactable\n }) as InteractStatic\n\n // expose the functions used to calculate multi-touch properties\n interact.getPointerAverage = pointerUtils.pointerAverage\n interact.getTouchBBox = pointerUtils.touchBBox\n interact.getTouchDistance = pointerUtils.touchDistance\n interact.getTouchAngle = pointerUtils.touchAngle\n\n interact.getElementRect = domUtils.getElementRect\n interact.getElementClientRect = domUtils.getElementClientRect\n interact.matchesSelector = domUtils.matchesSelector\n interact.closest = domUtils.closest\n\n interact.globalEvents = {} as any\n\n // eslint-disable-next-line no-undef\n interact.version = process.env.npm_package_version\n interact.scope = scope\n interact.use = function (plugin, options) {\n this.scope.usePlugin(plugin, options)\n\n return this\n }\n\n interact.isSet = function (target: Target, options?: { context?: Context }): boolean {\n return !!this.scope.interactables.get(target, options && options.context)\n }\n\n interact.on = warnOnce(function on(type: string | EventTypes, listener: ListenersArg, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type as any[]) {\n this.on(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.on(prop, (type as any)[prop], listener)\n }\n\n return this\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (isNonNativeEvent(type, this.scope.actions)) {\n // if this type of event was never bound\n if (!this.globalEvents[type]) {\n this.globalEvents[type] = [listener]\n } else {\n this.globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n this.scope.events.add(this.scope.document, type, listener as Listener, { options })\n }\n\n return this\n }, 'The interact.on() method is being deprecated')\n\n interact.off = warnOnce(function off(type: EventTypes, listener: any, options?: object) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (is.array(type)) {\n for (const eventType of type) {\n this.off(eventType, listener, options)\n }\n\n return this\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.off(prop, type[prop], listener)\n }\n\n return this\n }\n\n if (isNonNativeEvent(type, this.scope.actions)) {\n let index: number\n\n if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n this.globalEvents[type].splice(index, 1)\n }\n } else {\n this.scope.events.remove(this.scope.document, type, listener, options)\n }\n\n return this\n }, 'The interact.off() method is being deprecated')\n\n interact.debug = function () {\n return this.scope\n }\n\n interact.supportsTouch = function () {\n return browser.supportsTouch\n }\n\n interact.supportsPointerEvent = function () {\n return browser.supportsPointerEvent\n }\n\n interact.stop = function () {\n for (const interaction of this.scope.interactions.list) {\n interaction.stop()\n }\n\n return this\n }\n\n interact.pointerMoveTolerance = function (newValue?: number) {\n if (is.number(newValue)) {\n this.scope.interactions.pointerMoveTolerance = newValue\n\n return this\n }\n\n return this.scope.interactions.pointerMoveTolerance\n }\n\n interact.addDocument = function (doc: Document, options?: object) {\n this.scope.addDocument(doc, options)\n }\n\n interact.removeDocument = function (doc: Document) {\n this.scope.removeDocument(doc)\n }\n\n return interact\n}\n","import browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport domObjects from '@interactjs/utils/domObjects'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport * as win from '@interactjs/utils/window'\n\nimport type Interaction from '@interactjs/core/Interaction'\n\nimport { Eventable } from './Eventable'\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './events'\nimport './interactions'\nimport events from './events'\nimport { Interactable as InteractableBase } from './Interactable'\nimport { InteractableSet } from './InteractableSet'\nimport { InteractEvent } from './InteractEvent'\nimport interactions from './interactions'\n/* eslint-enable import/no-duplicates */\nimport { createInteractStatic } from './InteractStatic'\nimport type { OptionsArg } from './options'\nimport { defaults } from './options'\nimport type { Actions } from './types'\n\nexport interface SignalArgs {\n 'scope:add-document': DocSignalArg\n 'scope:remove-document': DocSignalArg\n 'interactable:unset': { interactable: InteractableBase }\n 'interactable:set': { interactable: InteractableBase; options: OptionsArg }\n 'interactions:destroy': { interaction: Interaction }\n}\n\nexport type ListenerName = keyof SignalArgs\n\nexport type ListenerMap = {\n [P in ListenerName]?: (arg: SignalArgs[P], scope: Scope, signalName: P) => void | boolean\n}\n\ninterface DocSignalArg {\n doc: Document\n window: Window\n scope: Scope\n options: Record\n}\n\n/** @internal */\nexport interface Plugin {\n [key: string]: any\n id?: string\n listeners?: ListenerMap\n before?: string[]\n install?(scope: Scope, options?: any): void\n}\n\n/** @internal */\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n isInitialized = false\n listenerMaps: Array<{\n map: ListenerMap\n id?: string\n }> = []\n\n browser = browser\n defaults = clone(defaults) as typeof defaults\n Eventable = Eventable\n actions: Actions = {\n map: {},\n phases: {\n start: true,\n move: true,\n end: true,\n },\n methodDict: {} as any,\n phaselessTypes: {},\n }\n\n interactStatic = createInteractStatic(this)\n InteractEvent = InteractEvent\n Interactable: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document; options: any }> = []\n\n _plugins: {\n list: Plugin[]\n map: { [id: string]: Plugin }\n } = {\n list: [],\n map: {},\n }\n\n constructor() {\n const scope = this\n\n this.Interactable = class extends InteractableBase {\n get _defaults() {\n return scope.defaults\n }\n\n set(this: T, options: OptionsArg) {\n super.set(options)\n\n scope.fire('interactable:set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset(this: InteractableBase) {\n super.unset()\n\n const index = scope.interactables.list.indexOf(this)\n if (index < 0) return\n\n scope.interactables.list.splice(index, 1)\n scope.fire('interactable:unset', { interactable: this })\n }\n }\n }\n\n addListeners(map: ListenerMap, id?: string) {\n this.listenerMaps.push({ id, map })\n }\n\n fire(name: T, arg: SignalArgs[T]): void | false {\n for (const {\n map: { [name]: listener },\n } of this.listenerMaps) {\n if (!!listener && listener(arg as any, this, name as never) === false) {\n return false\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init(window: Window | typeof globalThis) {\n return this.isInitialized ? this : initScope(this, window)\n }\n\n pluginIsInstalled(plugin: Plugin) {\n const { id } = plugin\n return id ? !!this._plugins.map[id] : this._plugins.list.indexOf(plugin) !== -1\n }\n\n usePlugin(plugin: Plugin, options?: { [key: string]: any }) {\n if (!this.isInitialized) {\n return this\n }\n\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) {\n this._plugins.map[plugin.id] = plugin\n }\n this._plugins.list.push(plugin)\n\n if (plugin.install) {\n plugin.install(this, options)\n }\n\n if (plugin.listeners && plugin.before) {\n let index = 0\n const len = this.listenerMaps.length\n const before = plugin.before.reduce((acc, id) => {\n acc[id] = true\n acc[pluginIdRoot(id)] = true\n return acc\n }, {})\n\n for (; index < len; index++) {\n const otherId = this.listenerMaps[index].id\n\n if (otherId && (before[otherId] || before[pluginIdRoot(otherId)])) {\n break\n }\n }\n\n this.listenerMaps.splice(index, 0, { id: plugin.id, map: plugin.listeners })\n } else if (plugin.listeners) {\n this.listenerMaps.push({ id: plugin.id, map: plugin.listeners })\n }\n\n return this\n }\n\n addDocument(doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) {\n return false\n }\n\n const window = win.getWindow(doc)\n\n options = options ? extend({}, options) : {}\n\n this.documents.push({ doc, options })\n this.events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n this.events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.fire('scope:add-document', { doc, window, scope: this, options })\n }\n\n removeDocument(doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n this.events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n this.events.documents.splice(index, 1)\n\n this.fire('scope:remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex(doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions(doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now() {\n return (((this.window as any).Date as typeof Date) || Date).now()\n }\n}\n\n/** @internal */\nexport function initScope(scope: Scope, window: Window | typeof globalThis) {\n scope.isInitialized = true\n\n if (is.window(window)) {\n win.init(window)\n }\n\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n\n // @ts-expect-error\n scope.window = window\n scope.document = window.document\n\n scope.usePlugin(interactions)\n scope.usePlugin(events)\n\n return scope\n}\n\nfunction pluginIdRoot(id: string) {\n return id && id.replace(/\\/.*$/, '')\n}\n","import { Scope } from '@interactjs/core/scope'\n\nconst scope = new Scope()\n\nconst interact = scope.interactStatic\n\nexport default interact\n\nconst _global = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this\nscope.init(_global)\n","export default () => {}\n","export default () => {}\n","import type { Rect, Point } from '@interactjs/core/types'\nimport type { SnapFunction, SnapTarget } from '@interactjs/modifiers/snap/pointer'\n\nexport interface GridOptionsBase {\n range?: number\n limits?: Rect\n offset?: Point\n}\nexport interface GridOptionsXY extends GridOptionsBase {\n x: number\n y: number\n}\nexport interface GridOptionsTopLeft extends GridOptionsBase {\n top?: number\n left?: number\n}\nexport interface GridOptionsBottomRight extends GridOptionsBase {\n bottom?: number\n right?: number\n}\nexport interface GridOptionsWidthHeight extends GridOptionsBase {\n width?: number\n height?: number\n}\n\nexport type GridOptions = GridOptionsXY | GridOptionsTopLeft | GridOptionsBottomRight | GridOptionsWidthHeight\n\nexport default (grid: GridOptions) => {\n const coordFields = (\n [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ] as const\n ).filter(([xField, yField]) => xField in grid || yField in grid)\n\n const gridFunc: SnapFunction & {\n grid: typeof grid\n coordFields: typeof coordFields\n } = (x, y) => {\n const {\n range,\n limits = {\n left: -Infinity,\n right: Infinity,\n top: -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result: SnapTarget & {\n grid: typeof grid\n } = { range, grid, x: null as number, y: null as number }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / (grid as any)[xField])\n const gridy = Math.round((y - offset.y) / (grid as any)[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * (grid as any)[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * (grid as any)[yField] + offset.y))\n }\n\n return result\n }\n\n gridFunc.grid = grid\n gridFunc.coordFields = coordFields\n\n return gridFunc\n}\n","/* eslint-disable import/no-named-as-default, import/no-unresolved */\nexport { default as edgeTarget } from './edgeTarget'\nexport { default as elements } from './elements'\nexport { default as grid } from './grid'\n","import type { Plugin } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\nimport * as allSnappers from './all'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n snappers: typeof allSnappers\n createSnapGrid: typeof allSnappers.grid\n }\n}\n\nconst snappersPlugin: Plugin = {\n id: 'snappers',\n install(scope) {\n const { interactStatic: interact } = scope\n\n interact.snappers = extend(interact.snappers || {}, allSnappers)\n interact.createSnapGrid = interact.snappers.grid\n },\n}\n\nexport default snappersPlugin\n","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This modifier forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n * modifiers: [\n * interact.modifiers.snapSize({\n * targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n * }),\n * interact.aspectRatio({ ratio: 'preserve' }),\n * ],\n * });\n * ```\n */\n\nimport type { Point, Rect, EdgeOptions } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\n\nimport { makeModifier } from './base'\nimport { Modification } from './Modification'\nimport type { Modifier, ModifierModule, ModifierState } from './types'\n\nexport interface AspectRatioOptions {\n ratio?: number | 'preserve'\n equalDelta?: boolean\n modifiers?: Modifier[]\n enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState<\n AspectRatioOptions,\n {\n startCoords: Point\n startRect: Rect\n linkedEdges: EdgeOptions\n ratio: number\n equalDelta: boolean\n xIsPrimaryAxis: boolean\n edgeSign: {\n x: number\n y: number\n }\n subModification: Modification\n }\n>\n\nconst aspectRatio: ModifierModule = {\n start(arg) {\n const { state, rect, edges, pageCoords: coords } = arg\n let { ratio, enabled } = state.options\n const { equalDelta, modifiers } = state.options\n\n if (ratio === 'preserve') {\n ratio = rect.width / rect.height\n }\n\n state.startCoords = extend({}, coords)\n state.startRect = extend({}, rect)\n state.ratio = ratio\n state.equalDelta = equalDelta\n\n const linkedEdges = (state.linkedEdges = {\n top: edges.top || (edges.left && !edges.bottom),\n left: edges.left || (edges.top && !edges.right),\n bottom: edges.bottom || (edges.right && !edges.top),\n right: edges.right || (edges.bottom && !edges.left),\n })\n\n state.xIsPrimaryAxis = !!(edges.left || edges.right)\n\n if (state.equalDelta) {\n const sign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1)\n state.edgeSign = {\n x: sign,\n y: sign,\n }\n } else {\n state.edgeSign = {\n x: linkedEdges.left ? -1 : 1,\n y: linkedEdges.top ? -1 : 1,\n }\n }\n\n if (enabled !== false) {\n extend(edges, linkedEdges)\n }\n\n if (!modifiers?.length) return\n\n const subModification = new Modification(arg.interaction)\n\n subModification.copyFrom(arg.interaction.modification)\n subModification.prepareStates(modifiers)\n\n state.subModification = subModification\n subModification.startAll({ ...arg })\n },\n\n set(arg) {\n const { state, rect, coords } = arg\n const { linkedEdges } = state\n const initialCoords = extend({}, coords)\n const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n extend(arg.edges, linkedEdges)\n aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n if (!state.subModification) {\n return null\n }\n\n const correctedRect = extend({}, rect)\n\n addEdges(linkedEdges, correctedRect, {\n x: coords.x - initialCoords.x,\n y: coords.y - initialCoords.y,\n })\n\n const result = state.subModification.setAll({\n ...arg,\n rect: correctedRect,\n edges: linkedEdges,\n pageCoords: coords,\n prevCoords: coords,\n prevRect: correctedRect,\n })\n\n const { delta } = result\n\n if (result.changed) {\n const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y)\n\n // do aspect modification again with critical edge axis as primary\n aspectMethod(state, xIsCriticalAxis, result.coords, result.rect)\n extend(coords, result.coords)\n }\n\n return result.eventProps\n },\n\n defaults: {\n ratio: 'preserve',\n equalDelta: false,\n modifiers: [],\n enabled: false,\n },\n}\n\nfunction setEqualDelta({ startCoords, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Point) {\n if (xIsPrimaryAxis) {\n coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign.y\n } else {\n coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign.x\n }\n}\n\nfunction setRatio(\n { startRect, startCoords, ratio, edgeSign }: AspectRatioState,\n xIsPrimaryAxis: boolean,\n coords: Point,\n rect: Rect,\n) {\n if (xIsPrimaryAxis) {\n const newHeight = rect.width / ratio\n\n coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign.y\n } else {\n const newWidth = rect.height * ratio\n\n coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign.x\n }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio')\nexport { aspectRatio }\n","import type { ModifierFunction } from './types'\n\nconst noop = (() => {}) as unknown as ModifierFunction\n\nnoop._defaults = {}\n\nexport default noop\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { RectResolvable, Rect, Point } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg, ModifierModule, ModifierState } from '../types'\n\nexport interface RestrictOptions {\n // where to drag over\n restriction: RectResolvable<[number, number, Interaction]>\n // what part of self is allowed to drag over\n elementRect: Rect\n offset: Rect\n // restrict just before the end drag\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictState = ModifierState<\n RestrictOptions,\n {\n offset: Rect\n }\n>\n\nfunction start({ rect, startOffset, state, interaction, pageCoords }: ModifierArg) {\n const { options } = state\n const { elementRect } = options\n const offset: Rect = extend(\n {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n options.offset || {},\n )\n\n if (rect && elementRect) {\n const restriction = getRestrictionRect(options.restriction, interaction, pageCoords)\n\n if (restriction) {\n const widthDiff = restriction.right - restriction.left - rect.width\n const heightDiff = restriction.bottom - restriction.top - rect.height\n\n if (widthDiff < 0) {\n offset.left += widthDiff\n offset.right += widthDiff\n }\n if (heightDiff < 0) {\n offset.top += heightDiff\n offset.bottom += heightDiff\n }\n }\n\n offset.left += startOffset.left - rect.width * elementRect.left\n offset.top += startOffset.top - rect.height * elementRect.top\n\n offset.right += startOffset.right - rect.width * (1 - elementRect.right)\n offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom)\n }\n\n state.offset = offset\n}\n\nfunction set({ coords, interaction, state }: ModifierArg) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) return\n\n const rect = rectUtils.xywhToTlbr(restriction)\n\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n}\n\nexport function getRestrictionRect(\n value: RectResolvable<[number, number, Interaction]>,\n interaction: Interaction,\n coords?: Point,\n) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [\n coords.x,\n coords.y,\n interaction,\n ])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst defaults: RestrictOptions = {\n restriction: null,\n elementRect: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrict: ModifierModule = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrict, 'restrict')\nexport { restrict }\n","// This modifier adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport type { Point, Rect } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg, ModifierState } from '../types'\n\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nexport interface RestrictEdgesOptions {\n inner: RestrictOptions['restriction']\n outer: RestrictOptions['restriction']\n offset?: RestrictOptions['offset']\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictEdgesState = ModifierState<\n RestrictEdgesOptions,\n {\n inner: Rect\n outer: Rect\n offset: RestrictEdgesOptions['offset']\n }\n>\n\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start({ interaction, startOffset, state }: ModifierArg) {\n const { options } = state\n let offset: Point\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set({ coords, edges, interaction, state }: ModifierArg) {\n const { offset, options } = state\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || ({} as Rect)\n const outer = getRestrictionRect(options.outer, interaction, page) || ({} as Rect)\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n } else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n } else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect(rect: Rect, defaults: Rect) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst defaults: RestrictEdgesOptions = {\n inner: null,\n outer: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictEdges, 'restrictEdges')\nexport { restrictEdges }\n","import extend from '@interactjs/utils/extend'\n\nimport { makeModifier } from '../base'\n\nimport { restrict } from './pointer'\n\nconst defaults = extend(\n {\n get elementRect() {\n return { top: 0, left: 0, bottom: 1, right: 1 }\n },\n set elementRect(_) {},\n },\n restrict.defaults,\n)\n\nconst restrictRect = {\n start: restrict.start,\n set: restrict.set,\n defaults,\n}\n\nexport default makeModifier(restrictRect, 'restrictRect')\nexport { restrictRect }\n","import type { Point, Rect, Size } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg, ModifierState } from '../types'\n\nimport type { RestrictEdgesState } from './edges'\nimport { restrictEdges } from './edges'\nimport type { RestrictOptions } from './pointer'\nimport { getRestrictionRect } from './pointer'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nexport interface RestrictSizeOptions {\n min?: Size | Point | RestrictOptions['restriction']\n max?: Size | Point | RestrictOptions['restriction']\n endOnly: boolean\n enabled?: boolean\n}\n\nfunction start(arg: ModifierArg) {\n return restrictEdges.start(arg)\n}\n\nexport type RestrictSizeState = RestrictEdgesState &\n ModifierState<\n RestrictSizeOptions & { inner: Rect; outer: Rect },\n {\n min: Rect\n max: Rect\n }\n >\n\nfunction set(arg: ModifierArg) {\n const { interaction, state, rect, edges } = arg\n const { options } = state\n\n if (!edges) {\n return\n }\n\n const minSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.min as any, interaction, arg.coords)) || noMin\n const maxSize =\n rectUtils.tlbrToXywh(getRestrictionRect(options.max as any, interaction, arg.coords)) || noMax\n\n state.options = {\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n } else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n } else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst defaults: RestrictSizeOptions = {\n min: null,\n max: null,\n endOnly: false,\n enabled: false,\n}\n\nconst restrictSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(restrictSize, 'restrictSize')\nexport { restrictSize }\n","import type { Interaction, InteractionProxy } from '@interactjs/core/Interaction'\nimport type { ActionName, Point, RectResolvable, Element } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport is from '@interactjs/utils/is'\nimport { resolveRectLike, rectToXY } from '@interactjs/utils/rect'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg, ModifierState } from '../types'\n\nexport interface Offset {\n x: number\n y: number\n index: number\n relativePoint?: Point | null\n}\n\nexport interface SnapPosition {\n x?: number\n y?: number\n range?: number\n offset?: Offset\n [index: string]: any\n}\n\nexport type SnapFunction = (\n x: number,\n y: number,\n interaction: InteractionProxy,\n offset: Offset,\n index: number,\n) => SnapPosition\nexport type SnapTarget = SnapPosition | SnapFunction\nexport interface SnapOptions {\n targets?: SnapTarget[]\n // target range\n range?: number\n // self points for snapping. [0,0] = top left, [1,1] = bottom right\n relativePoints?: Point[]\n // startCoords = offset snapping from drag start page position\n offset?: Point | RectResolvable<[Interaction]> | 'startCoords'\n offsetWithOrigin?: boolean\n origin?: RectResolvable<[Element]> | Point\n endOnly?: boolean\n enabled?: boolean\n}\n\nexport type SnapState = ModifierState<\n SnapOptions,\n {\n offsets?: Offset[]\n closest?: any\n targetFields?: string[][]\n }\n>\n\nfunction start(arg: ModifierArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const origin = options.offsetWithOrigin ? getOrigin(arg) : { x: 0, y: 0 }\n\n let snapOffset: Point\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n } else {\n const offsetRect = resolveRectLike(options.offset as any, interactable, element, [interaction])\n\n snapOffset = rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const { relativePoints } = options\n\n state.offsets =\n rect && relativePoints && relativePoints.length\n ? relativePoints.map((relativePoint, index) => ({\n index,\n relativePoint,\n x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n y: startOffset.top - rect.height * relativePoint.y + snapOffset.y,\n }))\n : [\n {\n index: 0,\n relativePoint: null,\n x: snapOffset.x,\n y: snapOffset.y,\n },\n ]\n}\n\nfunction set(arg: ModifierArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = getOriginXY(interaction.interactable!, interaction.element!, interaction.prepared.name)\n const page = extend({}, coords)\n const targets: SnapPosition[] = []\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n for (const offset of offsets!) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets!.length; index < len; index++) {\n const snapTarget = options.targets![index]\n let target: SnapPosition\n\n if (is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n targets.push({\n x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: is.number(target.range) ? target.range : options.range,\n source: snapTarget,\n index,\n offset,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n delta: { x: 0, y: 0 },\n }\n\n for (const target of targets) {\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (\n !closest.target ||\n (inRange\n ? // is the closest target in range?\n closest.inRange && range !== Infinity\n ? // the pointer is relatively deeper in this target\n distance / range < closest.distance / closest.range\n : // this target has Infinite range and the closest doesn't\n (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance\n : // The other is not in range and the pointer is closer to this target\n !closest.inRange && distance < closest.distance)\n ) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.delta.x = dx\n closest.delta.y = dy\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n return closest\n}\n\nfunction getOrigin(arg: Partial>) {\n const { element } = arg.interaction\n const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin as any, null, null, [element]))\n const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name)\n\n return origin\n}\n\nconst defaults: SnapOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n origin: null,\n relativePoints: null,\n endOnly: false,\n enabled: false,\n}\nconst snap = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snap, 'snap')\nexport { snap }\n","// This modifier allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport is from '@interactjs/utils/is'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg } from '../types'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snap } from './pointer'\n\nexport type SnapSizeOptions = Pick\n\nfunction start(arg: ModifierArg) {\n const { state, edges } = arg\n const { options } = state\n\n if (!edges) {\n return null\n }\n\n arg.state = {\n options: {\n targets: null,\n relativePoints: [\n {\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n },\n ],\n offset: options.offset || 'self',\n origin: { x: 0, y: 0 },\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set(arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of options.targets || []) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n } else {\n target = snapTarget\n }\n\n if (!target) {\n continue\n }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n const returnValue = snap.set(arg)\n\n state.options = options\n\n return returnValue\n}\n\nconst defaults: SnapSizeOptions = {\n range: Infinity,\n targets: null,\n offset: null,\n endOnly: false,\n enabled: false,\n}\n\nconst snapSize = {\n start,\n set,\n defaults,\n}\n\nexport default makeModifier(snapSize, 'snapSize')\nexport { snapSize }\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This modifier allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n * ```\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\n\nimport { makeModifier } from '../base'\nimport type { ModifierArg, ModifierModule } from '../types'\n\nimport type { SnapOptions, SnapState } from './pointer'\nimport { snapSize } from './size'\n\nexport type SnapEdgesOptions = Pick\n\nfunction start(arg: ModifierArg) {\n const { edges } = arg\n\n if (!edges) {\n return null\n }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nconst snapEdges: ModifierModule> = {\n start,\n set: snapSize.set,\n defaults: extend(clone(snapSize.defaults), {\n targets: undefined,\n range: undefined,\n offset: { x: 0, y: 0 },\n } as const),\n}\n\nexport default makeModifier(snapEdges, 'snapEdges')\nexport { snapEdges }\n","/* eslint-disable n/no-extraneous-import, import/no-unresolved */\nimport aspectRatio from './aspectRatio'\nimport avoid from './avoid/avoid'\nimport restrictEdges from './restrict/edges'\nimport restrict from './restrict/pointer'\nimport restrictRect from './restrict/rect'\nimport restrictSize from './restrict/size'\nimport rubberband from './rubberband/rubberband'\nimport snapEdges from './snap/edges'\nimport snap from './snap/pointer'\nimport snapSize from './snap/size'\nimport spring from './spring/spring'\nimport transform from './transform/transform'\n\nexport default {\n aspectRatio,\n restrictEdges,\n restrict,\n restrictRect,\n restrictSize,\n snapEdges,\n snap,\n snapSize,\n\n spring,\n avoid,\n transform,\n rubberband,\n}\n","import type { Plugin } from '@interactjs/core/scope'\nimport snappers from '@interactjs/snappers/plugin'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './all'\nimport './base'\n\nimport all from './all'\nimport base from './base'\n/* eslint-enable import/no-duplicates */\n\ndeclare module '@interactjs/core/InteractStatic' {\n export interface InteractStatic {\n modifiers: typeof all\n }\n}\n\nconst modifiers: Plugin = {\n id: 'modifiers',\n install(scope) {\n const { interactStatic: interact } = scope\n\n scope.usePlugin(base)\n scope.usePlugin(snappers)\n\n interact.modifiers = all\n\n // for backwrads compatibility\n for (const type in all) {\n const { _defaults, _methods } = all[type as keyof typeof all]\n\n ;(_defaults as any)._methods = _methods\n ;(scope.defaults.perAction as any)[type] = _defaults\n }\n },\n}\n\nexport default modifiers\n","import { BaseEvent } from '@interactjs/core/BaseEvent'\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { PointerEventType, PointerType, Point } from '@interactjs/core/types'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport class PointerEvent extends BaseEvent {\n declare type: T\n declare originalEvent: PointerEventType\n declare pointerId: number\n declare pointerType: string\n declare double: boolean\n declare pageX: number\n declare pageY: number\n declare clientX: number\n declare clientY: number\n declare dt: number\n declare eventable: any;\n [key: string]: any\n\n constructor(\n type: T,\n pointer: PointerType | PointerEvent,\n event: PointerEventType,\n eventTarget: Node,\n interaction: Interaction,\n timeStamp: number,\n ) {\n super(interaction)\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double =\n !!interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500\n } else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n this.double = true\n }\n }\n\n _subtractOrigin({ x: originX, y: originY }: Point) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n _addOrigin({ x: originX, y: originY }: Point) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault() {\n this.originalEvent.preventDefault()\n }\n}\n","import type { Eventable } from '@interactjs/core/Eventable'\nimport type { Interaction } from '@interactjs/core/Interaction'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { Point, PointerType, PointerEventType, Element } from '@interactjs/core/types'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\n\nimport { PointerEvent } from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node\n eventable: Eventable\n props: { [key: string]: any }\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number\n ignoreFrom?: any\n allowFrom?: any\n origin?: Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/options' {\n interface ActionDefaults {\n pointerEvents: Options\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'pointerEvents:new': { pointerEvent: PointerEvent }\n 'pointerEvents:fired': {\n interaction: Interaction\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n pointerEvent: PointerEvent\n targets?: EventTargetList\n type: string\n }\n 'pointerEvents:collect-targets': {\n interaction: Interaction\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n targets?: EventTargetList\n type: string\n path: Node[]\n node: null\n }\n }\n}\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom: null,\n allowFrom: null,\n origin: { x: 0, y: 0 },\n}\n\nconst pointerEvents: Plugin = {\n id: 'pointer-events/base',\n before: ['inertia', 'modifiers', 'auto-start', 'actions'],\n install,\n listeners: {\n 'interactions:new': addInteractionProps,\n 'interactions:update-pointer': addHoldInfo,\n 'interactions:move': moveAndClearHold,\n 'interactions:down': (arg, scope) => {\n downAndStartHold(arg, scope)\n fire(arg, scope)\n },\n 'interactions:up': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n tapAfterUp(arg, scope)\n },\n 'interactions:cancel': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n },\n },\n PointerEvent,\n fire,\n collectEventTargets,\n defaults,\n types: {\n down: true,\n move: true,\n up: true,\n cancel: true,\n tap: true,\n doubletap: true,\n hold: true,\n } as { [type: string]: true },\n}\n\nfunction fire(\n arg: {\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n interaction: Interaction\n type: T\n targets?: EventTargetList\n },\n scope: Scope,\n) {\n const { interaction, pointer, event, eventTarget, type, targets = collectEventTargets(arg, scope) } = arg\n\n const pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now())\n\n scope.fire('pointerEvents:new', { pointerEvent })\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n ;(pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = getOriginXY(target.eventable, target.node)\n\n pointerEvent._subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.node\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent._addOrigin(origin)\n\n if (\n pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n i + 1 < targets.length &&\n targets[i + 1].node !== pointerEvent.currentTarget)\n ) {\n break\n }\n }\n\n scope.fire('pointerEvents:fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire(\n {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n },\n scope,\n )\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets(\n {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n }: {\n interaction: Interaction\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n type: T\n },\n scope: Scope,\n) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (\n type === 'tap' &&\n (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))\n ) {\n return []\n }\n\n const path = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter(\n (target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex]?.hold?.duration,\n )\n }\n\n return signalArg.targets\n}\n\nfunction addInteractionProps({ interaction }) {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n}\n\nfunction addHoldInfo({ down, pointerInfo }: SignalArgs['interactions:update-pointer']) {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n}\n\nfunction clearHold({ interaction, pointerIndex }) {\n const hold = interaction.pointers[pointerIndex].hold\n\n if (hold && hold.timeout) {\n clearTimeout(hold.timeout)\n hold.timeout = null\n }\n}\n\nfunction moveAndClearHold(arg: SignalArgs['interactions:move'], scope: Scope) {\n const { interaction, pointer, event, eventTarget, duplicate } = arg\n\n if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearHold(arg)\n }\n\n fire(\n {\n interaction,\n pointer,\n event,\n eventTarget: eventTarget as Element,\n type: 'move',\n },\n scope,\n )\n }\n}\n\nfunction downAndStartHold(\n { interaction, pointer, event, eventTarget, pointerIndex }: SignalArgs['interactions:down'],\n scope: Scope,\n) {\n const timer = interaction.pointers[pointerIndex].hold!\n const path = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) return\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire(\n {\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n },\n scope,\n )\n }, minDuration)\n}\n\nfunction tapAfterUp(\n { interaction, pointer, event, eventTarget }: SignalArgs['interactions:up'],\n scope: Scope,\n) {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n}\n\nfunction install(scope: Scope) {\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n extend(scope.actions.phaselessTypes, pointerEvents.types)\n}\n\nexport default pointerEvents\n","import type Interaction from '@interactjs/core/Interaction'\nimport type { ListenerMap, Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './base'\nimport basePlugin from './base'\n/* eslint-enable import/no-duplicates */\nimport { type PointerEvent } from './PointerEvent'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/PointerEvent' {\n interface PointerEvent {\n count?: number\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install(scope: Scope) {\n scope.usePlugin(basePlugin)\n\n const { pointerEvents } = scope\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.holdrepeat = scope.actions.phaselessTypes.holdrepeat = true\n}\n\nfunction onNew({ pointerEvent }: { pointerEvent: PointerEvent }) {\n if (pointerEvent.type !== 'hold') return\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired(\n { interaction, pointerEvent, eventTarget, targets }: SignalArgs['pointerEvents:fired'],\n scope: Scope,\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) return\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) return\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire(\n {\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n },\n scope,\n )\n }, interval)\n}\n\nfunction endHoldRepeat({ interaction }: { interaction: Interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nconst holdRepeat: Plugin = {\n id: 'pointer-events/holdRepeat',\n install,\n listeners: ['move', 'up', 'cancel', 'endall'].reduce(\n (acc, enderTypes) => {\n ;(acc as any)[`pointerEvents:${enderTypes}`] = endHoldRepeat\n return acc\n },\n {\n 'pointerEvents:new': onNew,\n 'pointerEvents:fired': onFired,\n } as ListenerMap,\n ),\n}\n\nexport default holdRepeat\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\n\nimport type { PointerEventOptions } from '@interactjs/pointer-events/base'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents(options: Partial): this\n /** @internal */\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install(scope: Scope) {\n const { Interactable } = scope\n\n Interactable.prototype.pointerEvents = function (\n this: Interactable,\n options: Partial,\n ) {\n extend(this.events.options, options)\n\n return this\n }\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nconst plugin: Plugin = {\n id: 'pointer-events/interactableTargets',\n install,\n listeners: {\n 'pointerEvents:collect-targets': ({ targets, node, type, eventTarget }, scope) => {\n scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n interactable.testIgnoreAllow(options, node, eventTarget)\n ) {\n targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n },\n\n 'interactable:new': ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n },\n\n 'interactable:set': ({ interactable, options }, scope) => {\n extend(interactable.events.options, scope.pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n },\n },\n}\n\nexport default plugin\n","import type { Plugin } from '@interactjs/core/scope'\n\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './base'\nimport './holdRepeat'\nimport './interactableTargets'\n\nimport * as pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n/* eslint-enable import/no-duplicates */\n\nconst plugin: Plugin = {\n id: 'pointer-events',\n install(scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n },\n}\n\nexport default plugin\n","import type { Interactable } from '@interactjs/core/Interactable'\nimport type { DoAnyPhaseArg, Interaction } from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionName, ActionProps, Element } from '@interactjs/core/types'\nimport * as arr from '@interactjs/utils/arr'\nimport { copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport { tlbrToXywh } from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-reflow': Omit\n 'interactions:action-reflow': DoAnyPhaseArg\n 'interactions:after-action-reflow': DoAnyPhaseArg\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise } A promise that resolves to the `Interactable` when actions on all targets have ended\n */\n reflow(action: ActionProps): ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowPromise: Promise\n _reflowResolve: (...args: unknown[]) => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n reflow?: true\n }\n}\n\nfunction install(scope: Scope) {\n const { Interactable } = scope\n\n scope.actions.phases.reflow = true\n\n Interactable.prototype.reflow = function (action: ActionProps) {\n return doReflow(this, action, scope)\n }\n}\n\nfunction doReflow(\n interactable: Interactable,\n action: ActionProps,\n scope: Scope,\n): Promise {\n const elements = interactable.getAllElements()\n\n // tslint:disable-next-line variable-name\n const Promise = (scope.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element as HTMLElement | SVGElement)\n\n if (!rect) {\n break\n }\n\n const runningInteraction = arr.find(scope.interactions.list, (interaction: Interaction) => {\n return (\n interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n )\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise =\n runningInteraction._reflowPromise ||\n new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n } else {\n const xywh = tlbrToXywh(rect)\n const coords = {\n page: { x: xywh.x, y: xywh.y },\n client: { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow(\n scope: Scope,\n interactable: Interactable,\n element: Element,\n action: ActionProps,\n event: any,\n) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: 'reflow',\n } as const\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n pointerUtils.setZeroCoords(interaction.coords.delta)\n\n copyAction(interaction.prepared, action)\n interaction._doPhase(signalArg)\n\n const { Promise } = scope.window as unknown as { Promise: PromiseConstructor }\n const reflowPromise = Promise\n ? new Promise((resolve) => {\n interaction._reflowResolve = resolve\n })\n : undefined\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n } else {\n interaction.stop()\n interaction._reflowResolve()\n }\n\n interaction.removePointer(event, event)\n\n return reflowPromise\n}\n\nconst reflow: Plugin = {\n id: 'reflow',\n install,\n listeners: {\n // remove completed reflow interactions\n 'interactions:stop': ({ interaction }, scope) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n },\n },\n}\n\nexport default reflow\n","/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport '@interactjs/actions/plugin'\nimport '@interactjs/auto-scroll/plugin'\nimport '@interactjs/auto-start/plugin'\nimport '@interactjs/core/interactablePreventDefault'\nimport '@interactjs/dev-tools/plugin'\nimport '@interactjs/inertia/plugin'\nimport '@interactjs/interact'\nimport '@interactjs/modifiers/plugin'\nimport '@interactjs/offset/plugin'\nimport '@interactjs/pointer-events/plugin'\nimport '@interactjs/reflow/plugin'\n\nimport actions from '@interactjs/actions/plugin'\nimport autoScroll from '@interactjs/auto-scroll/plugin'\nimport autoStart from '@interactjs/auto-start/plugin'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools/plugin'\nimport inertia from '@interactjs/inertia/plugin'\nimport interact from '@interactjs/interact'\nimport modifiers from '@interactjs/modifiers/plugin'\nimport offset from '@interactjs/offset/plugin'\nimport pointerEvents from '@interactjs/pointer-events/plugin'\nimport reflow from '@interactjs/reflow/plugin'\n/* eslint-enable import/no-duplicates */\n\ninteract.use(interactablePreventDefault)\n\ninteract.use(offset)\n\n// pointerEvents\ninteract.use(pointerEvents)\n\n// inertia\ninteract.use(inertia)\n\n// snap, resize, etc.\ninteract.use(modifiers)\n\n// autoStart, hold\ninteract.use(autoStart)\n\n// drag and drop, resize, gesture\ninteract.use(actions)\n\n// autoScroll\ninteract.use(autoScroll)\n\n// reflow\ninteract.use(reflow)\n\n// eslint-disable-next-line no-undef\nif (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n}\n\nexport default interact\n;(interact as any).default = interact\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport interact from '@interactjs/interactjs'\n\nexport default interact\n\nif (typeof module === 'object' && !!module) {\n try {\n module.exports = interact\n } catch {}\n}\n\n;(interact as any).default = interact\n"],"names":["thing","Window","realWindow","undefined","win","init","window","el","document","createTextNode","ownerDocument","wrap","getWindow","node","isWindow","rootNode","defaultView","docFrag","object","nodeType","_typeof","func","number","bool","string","element","_window","test","Element","nodeName","plainObject","constructor","toString","array","length","splice","install","scope","actions","Interactable","defaults","prototype","draggable","drag","map","methodDict","beforeMove","_ref","interaction","prepared","name","axis","coords","cur","page","y","start","client","velocity","x","move","_ref2","iEvent","opposite","delta","options","is","enabled","setPerAction","setOnEvents","lockAxis","startAxis","id","listeners","autoStartCheck","arg","interactable","buttons","dragOptions","pointerIsDown","pointerType","mouseButtons","action","getCursor","filterEventType","type","search","domObjects","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","HTMLElement","Event","Touch","PointerEvent","blank","MSPointerEvent","browser","supportsTouch","supportsPointerEvent","isIOS7","isIOS","isIe9","isOperaMobile","prefixedMatchesSelector","pEventTypes","wheelEvent","navigator","DocumentTouch","pointerEnabled","platform","appVersion","userAgent","appName","up","down","over","out","cancel","nodeContains","parent","child","contains","parentNode","closest","selector","matchesSelector","host","replace","getParent","indexOfDeepestElement","elements","deepestNodeParents","deepestNodeIndex","i","currentNode","deepestNode","currentNodeParent","deepestNodeParent","zIndexIsHigherThan","getNodeParents","ancestryStart","ownerSVGElement","currentNodeParents","commonIndex","parents","lastChild","previousSibling","limit","parentParent","unshift","higherNode","lowerNode","higherIndex","parseInt","getComputedStyle","zIndex","lowerIndex","matchesUpTo","getActualElement","correspondingUseElement","getScrollXY","relevantWindow","scrollX","documentElement","scrollLeft","scrollY","scrollTop","getElementClientRect","clientRect","getBoundingClientRect","getClientRects","left","right","top","bottom","width","height","getElementRect","scroll","getPath","path","push","trySelector","value","querySelector","extend","dest","source","prop","ret","getStringOptionResult","target","getRect","resolveRectLike","functionArgs","returnValue","apply","rectToXY","rect","xywhToTlbr","tlbrToXywh","addEdges","edges","getOriginXY","actionName","actionOptions","actionOrigin","origin","originRect","normalize","filter","arguments","_typeOrPrefix","result","split","forEach","t","_i2","_listeners2","l","prefix","combinedTypes","p","concat","trim","Math","sqrt","VENDOR_PREFIXES","pointerExtend","__set","_loop","some","indexOf","Object","defineProperty","get","set","configurable","copyCoords","src","timeStamp","setCoordDeltas","targetObj","prev","setCoordVelocity","dt","max","setZeroCoords","isNativePointer","pointer","dom","getXY","xy","getPageXY","getClientXY","getPointerId","pointerId","identifier","setCoords","pointers","pointerAverage","getTouchPair","event","touches","changedTouches","average","pageX","pageY","clientX","clientY","screenX","screenY","touchBBox","minX","min","minY","maxX","maxY","touchDistance","deltaSource","sourceX","sourceY","dx","dy","hypot","touchAngle","angle","atan2","PI","getPointerType","getEventTargets","composedPath","domUtils","currentTarget","newCoords","coordsToEvent","preventDefault","BaseEvent","_classCallCheck","immediatePropagationStopped","propagationStopped","_interaction","_createClass","key","stopPropagation","stopImmediatePropagation","_proxy","remove","merge","item","from","findIndex","find","DropEvent","_BaseEvent","_inherits","_super","_createSuper","dropState","dragEvent","_this","call","dropzone","relatedTarget","reject","_this2","rejected","events","enter","activeDrops","index","arr","deactivateEvent","fire","interact","interactStatic","usePlugin","dropzoneMethod","dropCheck","draggableElement","dropElement","dropCheckMethod","dynamicDrop","newValue","phaselessTypes","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop","collectDropzones","interactables","drops","_interactables$list2","list","accept","_i4","_dropzone$getAllEleme2","getAllElements","dropzoneElement","fireActivationEvents","_i6","_activeDrops$slice2","slice","_activeDrops$slice2$_","getActiveDrops","dragElement","_i8","activeDrop","getDrop","pointerEvent","validDrops","_i10","_dropState$activeDrop2","_dropState$activeDrop3","isValid","dropIndex","getDropEvents","_pointerEvent","dropEvents","leave","activate","deactivate","dragLeave","prevDropzone","dragEnter","fireDropEvents","onEventCreated","_ref3","dropResult","normalized","normalizeListeners","corrected","keys","reduce","acc","correctedType","prevListeners","off","on","ondrop","ondropactivate","ondropdeactivate","ondragenter","ondragleave","ondropmove","overlap","checker","dropped","dropOverlap","pointerUtils","horizontal","vertical","dragRect","cx","cy","overlapArea","overlapRatio","interactionsBeforeActionStart","_ref4","interactionsAfterActionStart","_ref5","interactionsAfterActionMove","_ref6","interactionsActionEnd","interactionsStop","_ref7","gesturable","gesture","updateGestureProps","phase","starting","ending","distance","box","scale","ds","da","startDistance","startAngle","prevEvent","Infinity","isNaN","before","interactionsNew","gestureOptions","resize","cursors","initCursors","defaultMargin","resizable","resizeChecker","resizeOptions","resizeEdges","edge","checkResizeEdge","_latestPointer","eventTarget","margin","axes","preserveAspectRatio","square","interactableElement","abs","topleft","bottomright","topright","bottomleft","resizeEvent","_rects","previous","deltaRect","invert","invertible","current","_interaction$_rects","startRect","swap","end","updateEventAxes","resizeAxes","interactionsActionStart","interactionsActionMove","NaN","cursorKey","_ref8","lastTime","request","global","requestAnimationFrame","cancelAnimationFrame","vendors","vendor","bind","callback","currTime","Date","now","timeToCall","token","setTimeout","clearTimeout","autoScroll","autoscroll","perAction","container","speed","isScrolling","prevTime","raf","stop","getContainer","s","scrollBy","prevScroll","getScroll","curScroll","check","_options$actionName$a","onInteractionMove","interacting","simulation","innerWidth","innerHeight","body","autoScrollPlugin","interactionsDestroy","warnOnce","method","message","warned","console","warn","copyAction","getAction","defaultActionChecker","actionChecker","ignoreFrom","_backCompatOption","allowFrom","styleCursor","button","InteractableMethods","base","manualStart","maxPerElement","maxInteractions","autoStart","withinInteractionLimit","cursorElement","prepareOnDown","actionInfo","getActionInfo","prepare","prepareOnMove","startOnMove","pointerWasMoved","setInteractionCursor","clearCursorOnStop","setCursor","validateAction","testIgnoreAllow","validateMatches","matches","matchElements","len","match","matchElement","matchAction","pushMatches","forEachMatch","maxActions","autoStartMax","activeInteractions","interactableCount","elementCount","_scope$interactions$l2","interactions","otherAction","cursor","prevCursorElement","style","cursorChecker","_interacting","interactionsMove","beforeStart","absX","absY","targetOptions","currentAxis","getDraggable","downPointer","downEvent","checkStartAxis","thisAxis","basePlugin","hold","delay","getHoldDuration","autoStartHoldTimer","autoStartPrepared","duplicate","autoStartBeforeStart","holdDuration","dragAxis","checkAndPreventDefault","setting","supportsPassive","doc","docOptions","getDocOptions","passive","onInteractionEvent","docEvents","listener","eventType","isNonNativeEvent","substr","phases","CheckName","links","touchAction","boxSizing","isProduction","process","logger","devTools","ignore","_onOff","typeArg","listenerArg","addEventListener","normalizedListeners","checks","perform","parentHasStyle","getInfo","text","hasStyle","noListeners","_interaction$interact","moveListeners","types","styleRe","defaultExport","_scope$logger","clone","Modification","states","startOffset","startDelta","endResult","startEdges","createResult","pageCoords","modifierList","getModifierList","prepareStates","getRectOffset","fillArg","preEnd","startAll","setAll","_this$states2","state","methods","skipModifiers","unmodifiedRect","unmodifiedEdges","newResult","_state$methods","lastModifierCoords","shouldDo","rectUtils","eventProps","rectDelta","prevCoords","prevRect","rectChanged","changed","applyToInteraction","curCoords","startCoords","curDelta","_ref3$_i","coordsSet","setAndApply","modifiedCoords","adjustment","beforeEnd","doPreend","endPosition","modifierArg","_this$states4","_modifierList$index","restoreInteractionCoords","_ref4$interaction","modification","_modification$result","coordsAndDeltas","_i12","_ref6$_i","requireEndOnly","endOnly","setStart","copyFrom","other","destroy","actionModifiers","modifiers","_methods","m","makeModifier","module","modifier","_options","enable","disable","_defaults","addEventModifiers","modifiersBase","interactionsBeforeActionMove","interactionsBeforeActionEnd","InteractEvent","ctrlKey","shiftKey","altKey","metaKey","x0","y0","t0","duration","clientX0","clientY0","swipe","_assertThisInitialized","downTime","getSwipe","velocityY","velocityX","defineProperties","PointerInfo","downTarget","_ProxyValues","_ProxyMethods","idCounter","Interaction","scopeFire","_scopeFire","_ending","_stopped","doMove","signalArg","_id","that","_loop2","_key","pointerDown","pointerIndex","updatePointer","pointerInfo","_doPhase","pointerMove","duplicateMove","pointerMoveTolerance","getPointerIndex","pointerUp","curEventTarget","removePointer","documentBlur","endPhaseResult","currentAction","curPointer","getPointerInfo","_now","_updateLatestPointer","_createPreparedEvent","_fireEvent","_this$interactable","beforeResult","offsetBy","addTotal","addToCoords","offset","total","pending","beforeAction","applyPending","hadPending","hasPending","interactionsUpdatePointer","inertiastart","resume","inertia","resistance","minSpeed","endSpeed","allowResume","smoothEndDuration","InertiaState","active","isModified","smoothEnd","modifierCount","v0","te","targetOffset","modifiedOffset","currentOffset","lambda_v0","one_ve_v0","timeout","getOptions","velocityClient","pointerSpeed","thrown","startInertia","startSmoothEnd","startVelocity","lambda","inertiaDur","log","onNextFrame","inertiaTick","smoothEndTick","tickFn","_this3","_this4","progress","exp","newOffset","getQuadraticCurvePoint","_this5","_getOptions","easeOutQuad","started","interactionsBeforeActionResume","interactionsBeforeActionInertiastart","interactionsAfterActionInertiastart","interactionsAfterActionResume","_getQBezierValue","p1","p2","p3","iT","startX","startY","cpX","cpY","endX","endY","position","b","c","d","fireUntilImmediateStopped","Eventable","eventList","_listeners$type2","subListener","_element","_scope$document","targets","delegatedEvents","documents","eventsMethods","add","addDelegate","removeDelegate","delegateListener","delegateUseCapture","supportsOptions","createElement","capture","optionalArg","optionsMatch","removeEventListener","targetIndex","hasOwnProperty","typeIsEmpty","typeListeners","entry","context","_i3","delegates","delegate","matchFound","fakeEvent","FakeEvent","_pointerUtils$getEven","_i5","originalEvent","pExtend","preventOriginalDefault","param","a","finder","methodOrder","details","_finder$methodOrder2","simulationResume","mouseOrPen","firstNonActive","_scope$interactions$l4","hasPointerId","_scope$interactions$l6","hasPointer","_scope$interactions$l8","idle","_scope$interactions$l10","methodNames","doOnInteractions","releasePointersOnRemovedEls","prevTouchTime","_InteractionBase","_class","InteractionBase","new","_new","_interaction$pointers2","interactablePreventDefault","_event$changedTouches2","changedTouch","searchDetails","getInteraction","invalidPointer","_matches$_i","foundInteraction","onDocSignal","eventMethodName","eventMethod","eventOptions","_i14","_docEvents$_i","scopeAddDocument","scopeRemoveDocument","interactableUnset","OnOffMethod","defaultContext","scopeEvents","_actions","_context","_win","_doc","_scopeEvents","onstart","onmove","onend","oninertiastart","updatePerActionListeners","_this$_actions$map$ac","actionFilter","Off","On","optionName_","optionName","optionValue","rectChecker","Array","querySelectorAll","inContext","targetNode","testIgnore","testAllow","_listeners$_type2","actionName_","methodName","unset","delegated","_delegated$i","InteractableSet","selectorMap","addListeners","interactablesOnTarget","addDocument","getExisting","isSelector","_this$list2","createInteractStatic","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","version","use","plugin","isSet","_type2","debug","_this$scope$interacti2","removeDocument","Scope","floor","random","isInitialized","listenerMaps","_plugins","onWindowUnload","_InteractableBase","_class2","_get","_getPrototypeOf","InteractableBase","_this$listenerMaps2","initScope","pluginIsInstalled","pluginIdRoot","otherId","getDocIndex","docIndex","_global","globalThis","this","grid","coordFields","xField","yField","gridFunc","range","_grid$limits","limits","_grid$offset","_coordFields$_i","gridx","round","gridy","snappersPlugin","snappers","allSnappers","createSnapGrid","aspectRatio","_state$options","ratio","_state$options2","equalDelta","linkedEdges","xIsPrimaryAxis","sign","edgeSign","subModification","_objectSpread","initialCoords","aspectMethod","setEqualDelta","setRatio","correctedRect","xIsCriticalAxis","newHeight","newWidth","noop","elementRect","restriction","getRestrictionRect","widthDiff","heightDiff","restrict","noInner","noOuter","offsetRect","inner","outer","fixRect","restrictEdges","_","restrictRect","noMin","noMax","minSize","maxSize","restrictSize","offsetWithOrigin","getOrigin","snapOffset","relativePoints","offsets","relativePoint","relativeX","relativeY","snapTarget","inRange","optionsOrigin","snap","targetFields","relative","_state$targetFields2","_state$targetFields2$","snapSize","snapEdges","spring","avoid","transform","rubberband","all","_all","interval","tapTime","double","prevTap","_subtractOrigin","originX","originY","_addOrigin","pointerEvents","addInteractionProps","addHoldInfo","moveAndClearHold","interactionsDown","downAndStartHold","interactionsUp","clearHold","tapAfterUp","interactionsCancel","collectEventTargets","tap","doubletap","_arg$targets","props","eventable","_interaction$pointers","timer","minDuration","_signalArg$targets2","holdRepeatInterval","holdrepeat","onNew","count","onFired","holdIntervalHandle","endHoldRepeat","clearInterval","holdRepeat","enderTypes","__backCompatOption","pointerEventsCollectTargets","interactableNew","interactableSet","interactableTargets","reflow","doReflow","Promise","promises","runningInteraction","reflowPromise","_reflowPromise","resolve","_reflowResolve","xywh","startReflow","then","default","exports","_unused"],"mappings":"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"}