{"version":3,"file":"interact.js","mappings":"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","names":["module","define","g","_$isWindow_71","thing","Window","realWindow","undefined","win","init","window","_$window_78","el","document","createTextNode","ownerDocument","wrap","getWindow","node","rootNode","defaultView","__window_69","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","interaction","prepared","name","axis","coords","cur","page","y","start","client","velocity","x","move","iEvent","opposite","delta","options","_$is_69","enabled","setPerAction","setOnEvents","lockAxis","startAxis","id","listeners","arg","interactable","buttons","dragOptions","pointerIsDown","pointerType","mouseButtons","action","getCursor","filterEventType","type","search","domObjects","__init_64","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","HTMLElement","Event","Touch","PointerEvent","blank","MSPointerEvent","browser","__init_62","supportsTouch","supportsPointerEvent","isIOS7","isIOS","isIe9","isOperaMobile","prefixedMatchesSelector","pEventTypes","wheelEvent","_$domObjects_64","navigator","DocumentTouch","pointerEnabled","platform","appVersion","userAgent","appName","up","down","over","out","cancel","nodeContains","parent","child","contains","parentNode","closest","selector","matchesSelector","host","replace","_$browser_62","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","toFullRect","rect","rectToXY","xywhToTlbr","tlbrToXywh","addEdges","edges","getOriginXY","actionName","actionOptions","actionOrigin","origin","originRect","normalize","filter","_typeOrPrefix","result","split","forEach","t","_ref","l","prefix","combinedTypes","p","trim","Math","sqrt","VENDOR_PREFIXES","pointerExtend","__set","some","indexOf","Object","defineProperty","get","set","configurable","copyCoords","src","timeStamp","setCoordDeltas","targetObj","prev","setCoordVelocity","dt","max","setZeroCoords","isNativePointer","pointer","getXY","xy","getPageXY","getClientXY","getPointerId","pointerId","identifier","setCoords","pointers","pointerAverage","getTouchPair","event","touches","changedTouches","average","pageX","pageY","clientX","clientY","screenX","screenY","_prop","touchBBox","minX","min","minY","maxX","maxY","touchDistance","deltaSource","sourceX","sourceY","dx","dy","touchAngle","angle","atan2","PI","getPointerType","getEventTargets","composedPath","_$domUtils_65","currentTarget","newCoords","coordsToEvent","preventDefault","BaseEvent","_classCallCheck","_defineProperty","_interaction","propagationStopped","immediatePropagationStopped","_proxy","remove","merge","item","from","findIndex","find","DropEvent","dropState","dragEvent","___classCallCheck_2","_this","___defineProperty_2","dropzone","relatedTarget","rejected","events","enter","stopImmediatePropagation","activeDrops","index","_$arr_61","_this2","deactivateEvent","fire","_$BaseEvent_13","__install_3","interact","interactStatic","usePlugin","_$plugin_1","dropzoneMethod","dropCheck","draggableElement","dropElement","dropCheckMethod","dynamicDrop","newValue","phaselessTypes","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop","collectDropzones","interactables","drops","list","_ref2","_i","_dropzone","accept","getAllElements","_ref3","_i2","dropzoneElement","fireActivationEvents","slice","_ref4","_i3","_dropzone2","getActiveDrops","dragElement","_ref6","activeDrop","getDrop","pointerEvent","validDrops","_ref8","_i5","_dropzone3","_rect","isValid","dropIndex","getDropEvents","_pointerEvent","dropEvents","leave","activate","deactivate","_$DropEvent_2","dragLeave","prevDropzone","dragEnter","fireDropEvents","onEventCreated","dropResult","normalized","corrected","keys","reduce","acc","correctedType","prevListeners","off","on","ondrop","ondropactivate","ondropdeactivate","ondragenter","ondragleave","ondropmove","overlap","checker","dropped","dropOverlap","_$pointerUtils_75","horizontal","vertical","dragRect","cx","cy","overlapArea","overlapRatio","__install_4","gesturable","gesture","updateGestureProps","phase","starting","ending","distance","box","scale","ds","da","startDistance","startAngle","prevEvent","Infinity","isNaN","before","gestureOptions","__install_6","resize","cursors","initCursors","defaultMargin","resizable","resizeChecker","resizeOptions","resizeEdges","edge","checkResizeEdge","_latestPointer","eventTarget","margin","axes","preserveAspectRatio","square","interactableElement","abs","_edge","topleft","bottomright","topright","bottomleft","resizeEvent","_rects","previous","deltaRect","__move_6","invert","invertible","current","startRect","swap","_swap","end","updateEventAxes","resizeAxes","NaN","cursorKey","_$plugin_4","_$plugin_6","_$plugin_3","lastTime","_request","_cancel","__init_76","global","requestAnimationFrame","cancelAnimationFrame","vendors","vendor","bind","callback","currTime","Date","now","timeToCall","token","setTimeout","clearTimeout","request","__install_7","autoScroll","autoscroll","perAction","container","speed","isScrolling","prevTime","_$raf_76","stop","getContainer","s","scrollBy","prevScroll","getScroll","curScroll","check","_options$actionName$a","onInteractionMove","interacting","simulation","innerWidth","innerHeight","body","getScrollSize","scrollWidth","scrollHeight","getScrollSizeDelta","scrollOptions","scrollContainer","prevSize","curSize","autoScrollPlugin","warnOnce","method","message","warned","console","warn","apply","arguments","copyAction","sign","n","__install_8","getAction","defaultActionChecker","actionChecker","ignoreFrom","_backCompatOption","allowFrom","styleCursor","button","__install_9","_$InteractableMethods_8","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","interactions","_ref5","otherAction","cursor","prevCursorElement","style","cursorChecker","_interacting","beforeStart","absX","absY","targetOptions","currentAxis","getDraggable","downPointer","downEvent","checkStartAxis","_$base_9","thisAxis","__install_11","hold","delay","getHoldDuration","autoStartHoldTimer","duplicate","holdDuration","_$hold_11","_$dragAxis_10","checkAndPreventDefault","setting","supportsPassive","doc","docOptions","getDocOptions","passive","onInteractionEvent","__install_22","docEvents","listener","eventType","isNonNativeEvent","substr","phases","CheckName","links","touchAction","boxSizing","isProduction","__install_27","logger","devTools","ignore","_onOff","typeArg","listenerArg","addEventListener","call","normalizedListeners","_$plugin_28","checks","perform","parentHasStyle","getInfo","text","hasStyle","noListeners","moveListeners","types","styleRe","defaultExport","clone","Modification","___classCallCheck_32","___defineProperty_32","createResult","pageCoords","modifierList","getModifierList","prepareStates","startEdges","startOffset","getRectOffset","startDelta","fillArg","preEnd","startAll","setAll","states","state","methods","skipModifiers","unmodifiedRect","unmodifiedEdges","newResult","lastModifierCoords","shouldDo","_$rect_77","eventProps","rectDelta","prevCoords","prevRect","rectChanged","changed","curCoords","startCoords","curDelta","coordsSet","modifiedCoords","adjustment","applyToInteraction","doPreend","_ref7","endPosition","beforeEnd","endResult","modifierArg","modification","coordsAndDeltas","_ref10","requireEndOnly","endOnly","setStart","other","actionModifiers","modifiers","_methods","m","makeModifier","modifier","_options","enable","disable","_defaults","addEventModifiers","modifiersBase","_$Modification_32","setAndApply","restoreInteractionCoords","InteractEvent","___classCallCheck_15","___defineProperty_15","_$options_25","ctrlKey","altKey","shiftKey","metaKey","t0","downTime","x0","y0","clientX0","clientY0","duration","swipe","getSwipe","velocityY","velocityX","defineProperties","PointerInfo","downTarget","___classCallCheck_20","___defineProperty_20","_ProxyValues","_ProxyMethods","idCounter","Interaction","scopeFire","___classCallCheck_19","___defineProperty_19","signalArg","_scopeFire","that","key","_loop","_key","_loop2","pointerIndex","updatePointer","pointerInfo","_stopped","_doPhase","duplicateMove","pointerMoveTolerance","getPointerIndex","curEventTarget","removePointer","_ending","endPhaseResult","curPointer","_$PointerInfo_20","_now","_updateLatestPointer","_$InteractEvent_15","beforeResult","_createPreparedEvent","_fireEvent","_$Interaction_19","offsetBy","addTotal","addToCoords","offset","total","pending","beforeAction","applyPending","hadPending","__end_49","hasPending","__install_29","_$plugin_49","_$base_36","default","inertiastart","resume","inertia","resistance","minSpeed","endSpeed","allowResume","smoothEndDuration","InertiaState","___classCallCheck_29","___defineProperty_29","getOptions","velocityClient","pointerSpeed","copyFrom","v0","currentOffset","thrown","startInertia","startSmoothEnd","targetOffset","active","startVelocity","lambda","inertiaDur","log","te","lambda_v0","one_ve_v0","isModified","modifiedOffset","onNextFrame","inertiaTick","smoothEnd","smoothEndTick","tickFn","timeout","_this3","progress","exp","newOffset","getQuadraticCurvePoint","_this4","easeOutQuad","modifierCount","_this5","__start_29","started","_getQBezierValue","p1","p2","p3","iT","startX","startY","cpX","cpY","endX","endY","position","b","c","d","fireUntilImmediateStopped","Eventable","___classCallCheck_14","___defineProperty_14","eventList","subListener","_index","_element","createInteractStatic","getExisting","new","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","version","use","plugin","isSet","context","add","debug","addDocument","removeDocument","OnOffMethod","defaultContext","scopeEvents","___classCallCheck_17","___defineProperty_17","_$Eventable_14","_actions","_context","_win","_doc","_scopeEvents","onstart","onmove","onend","oninertiastart","actionFilter","_this$_actions$map$ac","Off","On","optionName_","optionName","optionValue","updatePerActionListeners","Array","querySelectorAll","targetNode","testIgnore","testAllow","_type","actionName_","methodName","rectChecker","_type2","delegatedEvents","delegated","removeDelegate","InteractableSet","___classCallCheck_18","___defineProperty_18","addListeners","interactablesOnTarget","selectorMap","targetIndex","isSelector","inContext","_interactable","__install_21","targets","documents","eventsMethods","addDelegate","delegateListener","delegateUseCapture","supportsOptions","createElement","capture","optionalArg","__getOptions_21","optionsMatch","removeEventListener","hasOwnProperty","typeIsEmpty","typeListeners","entry","_entry","delegates","delegate","matchFound","fakeEvent","FakeEvent","originalEvent","___classCallCheck_21","___defineProperty_21","stopPropagation","param","a","finder","methodOrder","details","simulationResume","mouseOrPen","firstNonActive","hasPointerId","_i4","hasPointer","idle","_i6","methodNames","__install_24","doOnInteractions","releasePointersOnRemovedEls","pointerDown","pointerMove","pointerUp","documentBlur","prevTouchTime","___inherits_24","___classCallCheck_24","___createClass_24","_$interactablePreventDefault_22","changedTouch","searchDetails","getInteraction","invalidPointer","_searchDetails","_pointer","_eventTarget","_curEventTarget","_interaction2","foundInteraction","_$interactionFinder_23","onDocSignal","eventMethodName","eventMethod","eventOptions","destroy","Scope","___classCallCheck_26","___defineProperty_26","floor","random","_$InteractableSet_18","___inherits_26","___createClass_26","_get","_$Interactable_17","listenerMaps","isInitialized","initScope","_plugins","pluginIsInstalled","pluginIdRoot","otherId","getDocIndex","onWindowUnload","docIndex","_$interactions_24","_$events_21","_$scope_26","_global","globalThis","grid","coordFields","xField","yField","gridFunc","range","limits","gridx","round","gridy","snappersPlugin","snappers","_$all_56","createSnapGrid","aspectRatio","ratio","equalDelta","linkedEdges","xIsPrimaryAxis","edgeSign","subModification","initialCoords","aspectMethod","setEqualDelta","setRatio","correctedRect","xIsCriticalAxis","newHeight","newWidth","noop","__start_40","elementRect","restriction","getRestrictionRect","widthDiff","heightDiff","__defaults_40","restrict","noInner","noOuter","__start_39","offsetRect","__set_39","inner","outer","fixRect","__defaults_39","restrictEdges","__defaults_41","_","_$pointer_40","restrictRect","noMin","noMax","__start_42","_$edges_39","__set_42","minSize","maxSize","__defaults_42","restrictSize","__start_45","offsetWithOrigin","getOrigin","snapOffset","relativePoints","offsets","relativePoint","__set_45","_offset","relativeX","relativeY","snapTarget","inRange","_target","optionsOrigin","__defaults_45","snap","__start_46","targetFields","_$pointer_45","__set_46","relative","__defaults_46","snapSize","__start_44","_$size_46","snapEdges","_$aspectRatio_34","_$rect_41","_$size_42","_$edges_44","spring","_$spring_47","avoid","_$avoid_35","transform","_$transform_48","rubberband","_$rubberband_43","__modifiers_38","_$plugin_60","_$all_33","___classCallCheck_50","interval","tapTime","double","prevTap","originX","originY","__defaults_51","pointerEvents","__install_51","addInteractionProps","addHoldInfo","moveAndClearHold","downAndStartHold","clearHold","tapAfterUp","_$PointerEvent_50","collectEventTargets","tap","doubletap","props","eventable","_subtractOrigin","_addOrigin","_interaction$pointers","_interaction$pointers2","timer","minDuration","__install_52","_$base_51","holdRepeatInterval","holdrepeat","onNew","count","onFired","holdIntervalHandle","endHoldRepeat","clearInterval","holdRepeat","enderTypes","__install_53","pointerEventsMethod","__backCompatOption","__plugin_54","_$holdRepeat_52","_$interactableTargets_53","__install_55","reflow","doReflow","Promise","promises","runningInteraction","reflowPromise","_reflowPromise","resolve","_reflowResolve","xywh","startReflow","all","then","_$index_30","_$plugin_54","_$plugin_29","_$plugin_38","_$plugin_12","_$plugin_5","_$plugin_7","_$plugin_55","_$plugin_27","_$index_31","_$index_79"],"sourceRoot":"","sources":["_header.js","node_modules/browser-pack-flat/_prelude","packages/@interactjs/utils/isWindow.ts","packages/@interactjs/utils/window.ts","packages/@interactjs/utils/is.ts","packages/@interactjs/actions/drag/plugin.ts","packages/@interactjs/utils/domObjects.ts","packages/@interactjs/utils/browser.ts","packages/@interactjs/utils/domUtils.ts","packages/@interactjs/utils/extend.ts","packages/@interactjs/utils/rect.ts","packages/@interactjs/utils/getOriginXY.ts","packages/@interactjs/utils/normalizeListeners.ts","packages/@interactjs/utils/hypot.ts","packages/@interactjs/utils/pointerExtend.ts","packages/@interactjs/utils/pointerUtils.ts","packages/@interactjs/core/BaseEvent.ts","packages/@interactjs/utils/arr.ts","packages/@interactjs/actions/drop/DropEvent.ts","packages/@interactjs/actions/drop/plugin.ts","packages/@interactjs/actions/gesture/plugin.ts","packages/@interactjs/actions/resize/plugin.ts","packages/@interactjs/actions/plugin.ts","packages/@interactjs/utils/raf.ts","packages/@interactjs/auto-scroll/plugin.ts","packages/@interactjs/utils/misc.ts","packages/@interactjs/auto-start/InteractableMethods.ts","packages/@interactjs/auto-start/base.ts","packages/@interactjs/auto-start/dragAxis.ts","packages/@interactjs/auto-start/hold.ts","packages/@interactjs/auto-start/plugin.ts","packages/@interactjs/core/interactablePreventDefault.ts","packages/@interactjs/dev-tools/visualizer/plugin.ts","packages/@interactjs/utils/isNonNativeEvent.ts","packages/@interactjs/dev-tools/plugin.ts","packages/@interactjs/utils/clone.ts","packages/@interactjs/modifiers/Modification.ts","packages/@interactjs/modifiers/base.ts","packages/@interactjs/core/options.ts","packages/@interactjs/core/InteractEvent.ts","packages/@interactjs/core/PointerInfo.ts","packages/@interactjs/core/Interaction.ts","packages/@interactjs/offset/plugin.ts","packages/@interactjs/inertia/plugin.ts","packages/@interactjs/core/Eventable.ts","packages/@interactjs/core/InteractStatic.ts","packages/@interactjs/core/Interactable.ts","packages/@interactjs/core/InteractableSet.ts","packages/@interactjs/core/events.ts","packages/@interactjs/core/interactionFinder.ts","packages/@interactjs/core/interactions.ts","packages/@interactjs/core/scope.ts","packages/@interactjs/interact/index.ts","packages/@interactjs/snappers/edgeTarget.ts","packages/@interactjs/snappers/elements.ts","packages/@interactjs/snappers/grid.ts","packages/@interactjs/snappers/all.ts","packages/@interactjs/snappers/plugin.ts","packages/@interactjs/modifiers/aspectRatio.ts","packages/@interactjs/modifiers/noop.ts","packages/@interactjs/modifiers/avoid/avoid.ts","packages/@interactjs/modifiers/restrict/pointer.ts","packages/@interactjs/modifiers/restrict/edges.ts","packages/@interactjs/modifiers/restrict/rect.ts","packages/@interactjs/modifiers/restrict/size.ts","packages/@interactjs/modifiers/rubberband/rubberband.ts","packages/@interactjs/modifiers/snap/pointer.ts","packages/@interactjs/modifiers/snap/size.ts","packages/@interactjs/modifiers/snap/edges.ts","packages/@interactjs/modifiers/spring/spring.ts","packages/@interactjs/modifiers/transform/transform.ts","packages/@interactjs/modifiers/all.ts","packages/@interactjs/modifiers/plugin.ts","packages/@interactjs/pointer-events/PointerEvent.ts","packages/@interactjs/pointer-events/base.ts","packages/@interactjs/pointer-events/holdRepeat.ts","packages/@interactjs/pointer-events/interactableTargets.ts","packages/@interactjs/pointer-events/plugin.ts","packages/@interactjs/reflow/plugin.ts","packages/@interactjs/interactjs/index.ts","packages/interactjs/index.ts","node_modules/browser-pack-flat/_postlude"],"sourcesContent":["/**\n * interact.js 1.10.23\n *\n * Copyright (c) 2012-present Taye Adeyemi \n * https://interactjs.io/license\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\n","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 { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\nimport type { PerActionDefaults } from '@interactjs/core/options'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { ActionMethod, ListenersArg } from '@interactjs/core/types'\nimport is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/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 type DraggableMethod = ActionMethod\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\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (\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 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 { InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\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 { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\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 dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any,\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: DropState\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n prevDropzone?: Interactable\n dropzone?: Interactable\n dragEnter?: Element\n dragLeave?: Element\n }\n}\n\ndeclare module '@interactjs/core/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 dynamicDrop: (this: InteractStatic, newValue?: boolean) => boolean | this\n }\n}\n\ninterface DropSignalArg {\n interaction: Interaction<'drag'>\n dragEvent: DragEvent\n}\n\nexport interface ActiveDrop {\n dropzone: Interactable\n element: Element\n rect: Rect\n}\n\nexport interface DropState {\n cur: {\n // the dropzone a drag target might be dropped into\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n prev: {\n // the dropzone that was recently dragged away from\n dropzone: Interactable\n // the element at the time of checking\n element: Element\n }\n // wheather the potential drop was rejected from a listener\n rejected: boolean\n // the drop events related to the current drag event\n events: FiredDropEvents\n activeDrops: ActiveDrop[]\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interactStatic: interact,\n /** @lends Interactable */\n Interactable,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {object | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interactable, options) {\n return dropzoneMethod(this, options)\n } as Interactable['dropzone']\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (\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 /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop!\n }\n\n extend(actions.phaselessTypes, {\n dragenter: true,\n dragleave: true,\n dropactivate: true,\n dropdeactivate: true,\n dropmove: true,\n drop: true,\n })\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction 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<\nRecord<'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 { 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 { ActionMethod, Rect, PointerType, ListenersArg } from '@interactjs/core/types'\nimport is from '@interactjs/utils/is'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\n\nexport type GesturableMethod = ActionMethod\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: GesturableMethod\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 /**\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 {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\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 GesturableMethod\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 { EventPhase, InteractEvent } from '@interactjs/core/InteractEvent'\nimport type { Interactable } from '@interactjs/core/Interactable'\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 ActionMethod,\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\nexport type ResizableMethod = ActionMethod\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\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 /** @lends Interactable */\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 /**\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 {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interactable, options: ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\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: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n allowFrom: {\n (...args: any[]): Interactable\n (): boolean\n }\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\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 /**\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 *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\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 /**\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] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\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 /**\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 {function | null} [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 * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\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 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): boolean\nfunction styleCursor(this: Interactable, newValue: boolean): typeof this\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 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 /**\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 * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\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 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'\nimport { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\ntype PreventDefaultValue = 'always' | 'never' | 'auto'\nfunction preventDefault(this: Interactable): PreventDefaultValue\nfunction preventDefault(this: Interactable, newValue: PreventDefaultValue): typeof this\nfunction 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}\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 /** @lends Interactable */\n const { Interactable } = scope\n\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 {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\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","export default {}\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","// eslint-disable-next-line import/no-extraneous-dependencies, import/no-duplicates\nimport '@interactjs/dev-tools/visualizer/plugin'\n\nimport type Interaction from '@interactjs/core/Interaction'\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Element, OptionMethod } from '@interactjs/core/types'\n// eslint-disable-next-line import/no-extraneous-dependencies, import/no-duplicates\nimport visualizer from '@interactjs/dev-tools/visualizer/plugin'\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/InteractStatic' {\n export interface InteractStatic {\n visializer: typeof visualizer\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 scope.usePlugin(visualizer)\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 default 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?: 'auto' | 'never' | string\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 &\nPartial & {\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 type { Point, FullRect, PointerEventType, Element } from '@interactjs/core/types'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\n\nimport { BaseEvent } from './BaseEvent'\nimport type { Interaction } from './Interaction'\nimport { defaults } from './options'\nimport type { ActionName } from './types'\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 preEnd?: boolean\n\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 type {\n Element,\n EdgeOptions,\n PointerEventType,\n PointerType,\n FullRect,\n CoordsSet,\n} from '@interactjs/core/types'\nimport * 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 { EventPhase } from './InteractEvent'\nimport { InteractEvent } from './InteractEvent'\nimport type { Interactable } from './Interactable'\nimport { PointerInfo } from './PointerInfo'\nimport type { ActionDefaults } from './options'\nimport type { Scope } from './scope'\nimport type { ActionName, ActionProps } from './types'\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<\nInteraction,\nkeyof 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 _rects?: {\n start: FullRect\n corrected: FullRect\n previous: FullRect\n delta: FullRect\n }\n edges: EdgeOptions | null = null\n\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 // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: PointerEventType | null = null\n\n downPointer: PointerType = {} as PointerType\n\n _latestPointer: {\n pointer: PointerType\n event: PointerEventType\n eventTarget: Node\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: InteractionProxy\n\n simulation = null\n\n /** @internal */ get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\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 readonly _id: number = idCounter++\n\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 {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {Boolean} 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 // End interact move events and stop auto-scroll unless simulation is running\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 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 * @param {PointerEvent} [event]\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 /** */\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 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 getPointerInfo (pointer: any) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\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 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 _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 _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 _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 _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 _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'\nimport Modification from '@interactjs/modifiers/Modification'\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 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 type { Listener, ListenersArg, Rect } from '@interactjs/core/types'\nimport * 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\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","/** @module interact */\nimport type { Scope, Plugin } from '@interactjs/core/scope'\nimport type { Context, EventTypes, Listener, ListenersArg, Target } from '@interactjs/core/types'\nimport 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 { Interactable } from './Interactable'\nimport type { Options } from './options'\n\ndeclare module '@interactjs/core/InteractStatic' {\n export 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 use(\n plugin: Plugin,\n options?: {\n [key: string]: any\n },\n ): any\n isSet(target: Target, options?: any): boolean\n on(type: string | EventTypes, listener: ListenersArg, options?: object): any\n off(type: EventTypes, listener: any, options?: object): any\n debug(): any\n supportsTouch(): boolean\n supportsPointerEvent(): boolean\n stop(): any\n pointerMoveTolerance(newValue?: number): any\n addDocument(doc: Document, options?: object): void\n removeDocument(doc: Document): void\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\ntype _InteractStatic = import('@interactjs/core/InteractStatic').InteractStatic\n\nexport function createInteractStatic (scope: Scope): _InteractStatic {\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 * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\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 /**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n */\n interact.use = function (plugin, options) {\n this.scope.usePlugin(plugin, options)\n\n return this\n }\n\n /**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Target} target The Element or string being searched for\n * @param {object} options\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n interact.isSet = function (target: Target, options?: { context?: Context }): boolean {\n return !!this.scope.interactables.get(target, options && options.context)\n }\n\n /**\n * @deprecated\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\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 /**\n * @deprecated\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\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 /**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\n interact.supportsTouch = function () {\n return browser.supportsTouch\n }\n\n /**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\n interact.supportsPointerEvent = function () {\n return browser.supportsPointerEvent\n }\n\n /**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\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 /**\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 * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\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","/* eslint-disable no-dupe-class-members */\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'\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 { 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/** */\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 options!: Required\n readonly _actions: Actions\n readonly target: Target\n readonly events = new Eventable()\n readonly _context: Context\n readonly _win: Window\n readonly _doc: Document\n readonly _scopeEvents: Scope['events']\n\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 _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 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 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 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 _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 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'\nimport * 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\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 type { Scope } from '@interactjs/core/scope'\nimport type { Element } from '@interactjs/core/types'\nimport * 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 { 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 type Interaction from '@interactjs/core/Interaction'\nimport type { Scope } from '@interactjs/core/scope'\nimport type { PointerType } from '@interactjs/core/types'\nimport * as dom from '@interactjs/utils/domUtils'\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 type { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport type { ActionName, Listener } from '@interactjs/core/types'\nimport 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 InteractionBase from './Interaction'\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './interactablePreventDefault'\nimport interactablePreventDefault from './interactablePreventDefault'\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","import type Interaction from '@interactjs/core/Interaction'\nimport 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 { Eventable } from './Eventable'\nimport { InteractEvent } from './InteractEvent'\nimport { createInteractStatic } from './InteractStatic'\nimport { Interactable as InteractableBase } from './Interactable'\nimport { InteractableSet } from './InteractableSet'\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './events'\nimport './interactions'\nimport events from './events'\nimport interactions from './interactions'\n/* eslint-enable import/no-duplicates */\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\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\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\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 type GridOptions = (Partial | Point) & {\n range?: number\n limits?: Rect\n offset?: Point\n}\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 module 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 Modification from './Modification'\nimport { makeModifier } from './base'\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<\nAspectRatioOptions,\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","export { default } from '../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<\nRestrictOptions,\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 module 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<\nRestrictEdgesOptions,\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 &\nModifierState<\nRestrictSizeOptions & { 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","export { default } from '../noop'\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<\nSnapOptions,\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 module 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 * WOW> This module 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","export { default } from '../noop'\n","export { default } from '../noop'\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 default 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 /** */\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\nexport { PointerEvent }\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) => 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\nimport type PointerEvent from './PointerEvent'\n/* eslint-disable import/no-duplicates -- for typescript module augmentations */\nimport './base'\nimport basePlugin from './base'\n/* eslint-enable import/no-duplicates */\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\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const { Interactable } = scope\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\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\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\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 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\nexport function install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable,\n } = scope\n\n scope.actions.phases.reflow = true\n\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 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","\nreturn _$index_79;\n\n});\n"]}