{"version":3,"sources":["../scripts/header.js","../node_modules/browser-pack-flat/_prelude","../@interactjs/core/scope.ts","../@interactjs/core/interactions.ts","../@interactjs/core/Interaction.ts","../@interactjs/utils/domObjects.ts","../@interactjs/utils/arr.ts","../@interactjs/utils/isWindow.ts","../@interactjs/utils/window.ts","../@interactjs/utils/is.ts","../@interactjs/utils/browser.ts","../@interactjs/utils/domUtils.ts","../@interactjs/utils/hypot.ts","../@interactjs/utils/pointerExtend.ts","../@interactjs/utils/pointerUtils.ts","../@interactjs/utils/extend.ts","../@interactjs/utils/rect.ts","../@interactjs/utils/clone.ts","../@interactjs/utils/events.ts","../@interactjs/utils/getOriginXY.ts","../@interactjs/utils/normalizeListeners.ts","../@interactjs/utils/raf.ts","../@interactjs/utils/index.ts","../@interactjs/core/defaultOptions.ts","../@interactjs/core/Eventable.ts","../@interactjs/core/Interactable.ts","../@interactjs/core/InteractableSet.ts","../@interactjs/core/BaseEvent.ts","../@interactjs/core/InteractEvent.ts","../@interactjs/core/PointerInfo.ts","../@interactjs/core/interactionFinder.ts","../@interactjs/actions/drag.ts","../@interactjs/actions/drop/DropEvent.ts","../@interactjs/actions/drop/index.ts","../@interactjs/actions/gesture.ts","../@interactjs/actions/resize.ts","../@interactjs/actions/index.ts","../@interactjs/auto-scroll/index.ts","../@interactjs/auto-start/InteractableMethods.ts","../@interactjs/auto-start/base.ts","../@interactjs/auto-start/dragAxis.ts","../@interactjs/auto-start/hold.ts","../@interactjs/auto-start/index.ts","../@interactjs/core/interactablePreventDefault.ts","../@interactjs/dev-tools/index.ts","../@interactjs/modifiers/base.ts","../@interactjs/inertia/index.ts","../@interactjs/modifiers/aspectRatio.ts","../@interactjs/modifiers/restrict/pointer.ts","../@interactjs/modifiers/restrict/edges.ts","../@interactjs/modifiers/restrict/rect.ts","../@interactjs/modifiers/restrict/size.ts","../@interactjs/modifiers/snap/pointer.ts","../@interactjs/modifiers/snap/size.ts","../@interactjs/modifiers/snap/edges.ts","../@interactjs/modifiers/index.ts","../@interactjs/pointer-events/PointerEvent.ts","../@interactjs/pointer-events/base.ts","../@interactjs/pointer-events/holdRepeat.ts","../@interactjs/pointer-events/interactableTargets.ts","../@interactjs/pointer-events/index.ts","../@interactjs/reflow/index.ts","../@interactjs/interact/interact.ts","../@interactjs/interact/index.ts","../@interactjs/types/index.ts","../@interactjs/utils/snappers/grid.ts","../@interactjs/utils/snappers/index.ts","../@interactjs/interactjs/index.ts","index.ts","../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":"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","file":"interact.js","sourceRoot":"","sourcesContent":["/**\n * interact.js 1.8.4\n *\n * Copyright (c) 2012-2020 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/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;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import domObjects from '@interactjs/utils/domObjects'\nimport * as utils from '@interactjs/utils/index'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\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: Interact.Options }\n 'interactions:destroy': { interaction: Interact.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?: { [index: string]: any }\n}\n\nconst {\n win,\n browser,\n raf,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\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 listenerMaps: Array<{\n map: ListenerMap\n id: string\n }> = []\n\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\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 as Scope\n\n ;(this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: Interact.Options) {\n super.set(options)\n\n scope.fire('interactable:set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.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 === this) {\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 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 { map: { [name]: listener } } 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) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._plugins.map[plugin.id] = plugin }\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 return acc\n }, {})\n\n for (; index < len; index++) {\n const otherId = this.listenerMaps[index].id\n\n if (before[otherId]) { break }\n }\n\n this.listenerMaps.splice(index, 0, { id: plugin.id, map: plugin.listeners })\n }\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) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n 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 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 events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n 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) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n scope.usePlugin(interactions)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport InteractionBase from './Interaction'\nimport finder, { SearchDetails } from './interactionFinder'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n docEvents: Array<{ type: string, listener: Interact.Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:find': {\n interaction: InteractionBase\n searchDetails: SearchDetails\n }\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', '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 }\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 Interaction 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 () { return scope.now() }\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 ||\n interaction.pointerType !== 'touch' ||\n 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\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\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 }\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 = 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,\n pointerId: pointerUtils.getPointerId(event),\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 ({ doc, scope, options }: Interact.SignalArgs[T], eventMethodName: 'add' | 'remove') {\n const { docEvents } = scope.interactions\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\nexport default {\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 },\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n","import * as utils from '@interactjs/utils/index'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: Interact.EdgeOptions\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\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: Interact.PointerType\n event: Interact.PointerEventType\n eventTarget: Interact.EventTarget\n pointerIndex: number\n interaction: Interaction\n} & T\n\nexport interface DoPhaseArg {\n event: Interact.PointerEventType\n phase: EventPhase\n interaction: Interaction\n iEvent: InteractEvent\n preEnd?: boolean\n type?: string\n}\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 pointerInfo: PointerInfo\n down: boolean\n }>\n 'interactions:remove-pointer': PointerArgProps<{\n pointerInfo: PointerInfo\n }>\n 'interactions:blur'\n 'interactions:before-action-start': Omit\n 'interactions:action-start': DoPhaseArg\n 'interactions:after-action-start': DoPhaseArg\n 'interactions:before-action-move': Omit\n 'interactions:action-move': DoPhaseArg\n 'interactions:after-action-move': DoPhaseArg\n 'interactions:before-action-end': Omit\n 'interactions:action-end': DoPhaseArg\n 'interactions:after-action-end': DoPhaseArg\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\n\n // the target element of the interactable\n element: Interact.Element = null\n rect: Interact.FullRect\n _rects?: {\n start: Interact.FullRect\n corrected: Interact.FullRect\n previous: Interact.FullRect\n delta: Interact.FullRect\n }\n edges: Interact.EdgeOptions\n\n _scopeFire: Interact.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: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.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 = null\n\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords: Interact.CoordsSet = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n readonly _id: number = idCounter++\n\n /** */\n constructor ({ pointerType, scopeFire }: {\n pointerType?: string\n scopeFire: Interact.Scope['fire']\n }) {\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 () { return that[key] },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args),\n })\n }\n\n this._scopeFire('interactions:new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._scopeFire('interactions:down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n type: 'down',\n interaction: this,\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 {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Interact.Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = utils.extend({}, this.prepared.edges)\n this._stopped = false\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endResult)) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now())\n }\n\n const duplicateMove = (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\n let dy\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 = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n type: 'move' as const,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._scopeFire('interactions:move', signalArg)\n\n if (!duplicateMove) {\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 utils.pointer.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?) {\n if (!signalArg || !signalArg.event) {\n utils.pointer.setZeroCoords(this.coords.delta)\n }\n\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget, curEventTarget: Interact.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 event,\n eventTarget,\n type: type as any,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._scopeFire('interactions:blur', { event, type: 'blur', interaction: this })\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?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.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) {\n const pointerId = utils.pointer.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 : utils.arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Interact.EventTarget, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map(p => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\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,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: Interact.PointerType, event: Interact.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,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\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 (event: Interact.PointerEventType, phase: EventPhase, preEnd?: boolean, type?: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, 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 (signalArg: Omit & { iEvent?: InteractEvent }) {\n const { event, phase, preEnd, type } = signalArg\n const { rect, coords: { delta } } = this\n\n if (rect && phase === EventPhase.Move) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n utils.rect.addEdges(edges, rect, 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') { this.prevEvent = iEvent }\n\n this._fireEvent(iEvent)\n\n this._scopeFire(`interactions:after-action-${phase}` as any, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\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{\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","type Filter = (element: T, index: number, array: T[]) => boolean\n\nexport function contains (array: T[], target: T) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array: T[], target: T) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target: Array, source: U[]) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source: ArrayLike) {\n return merge([] as T[], source as T[])\n}\n\nexport function 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 function find (array: T[], func: Filter) {\n return array[findIndex(array, func)]\n}\n","export default (thing: any) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args: any[]) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.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 &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\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\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any[]) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Interact.Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\n const _window = win.getWindow(thing) || win.window\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is T[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\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 string,\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 = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('ontouchstart' in window) ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.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) &&\n /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 = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /Presto/.test(navigator.userAgent))\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = '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\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 = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win, { getWindow } from './window'\n\nexport function nodeContains (parent: Node | Interact.EventTarget, child: Node | Interact.EventTarget) {\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)) { return element }\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: Interact.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 => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements: Interact.Element[] | NodeListOf) {\n let deepestZoneParents = []\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n const dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // compare zIndex of siblings\n if (dropzone.parentNode === deepestZone.parentNode) {\n const deepestZIndex = parseInt(getWindow(deepestZone).getComputedStyle(deepestZone).zIndex, 10) || 0\n const dropzoneZIndex = parseInt(getWindow(dropzone).getComputedStyle(dropzone).zIndex, 10) || 0\n\n if (dropzoneZIndex >= deepestZIndex) {\n deepestZone = dropzone\n index = i\n }\n\n continue\n }\n\n // populate the ancestry array for the latest deepest dropzone\n if (!deepestZoneParents.length) {\n let parent = deepestZone\n let parentParent\n\n while ((parentParent = getParent(parent)) && parentParent !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = parentParent\n }\n }\n\n let parent\n\n // if this element is an svg element and the current deepest is an\n // HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n const dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = getParent(parent)\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n let child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = dropzoneParents\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element: Interact.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 Interact.Element\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element: Interact.Element) {\n return (element instanceof domObjects.SVGElementInstance\n ? (element as SVGElement).correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\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: Interact.Element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return 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\nexport function getElementRect (element: Interact.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) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","export default (x: number, y: number) => Math.sqrt(x * x + y * y)\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n moz: /(Pressure)$/,\n}\n\nexport default pointerExtend\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nexport function copyCoords (dest: Interact.CoordsSetMember, src: Interact.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: Interact.CoordsSetMember, prev: Interact.CoordsSetMember, cur: Interact.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: Interact.CoordsSetMember, delta: Interact.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: Interact.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, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n}\n\nexport function getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.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 }\n else {\n getXY('page', pointer, page)\n }\n\n return page\n}\n\nexport function getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n getXY('screen', pointer, client)\n }\n else {\n getXY('client', pointer, client)\n }\n\n return client\n}\n\nexport function getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n}\n\nexport function setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n}\n\nexport function getTouchPair (event) {\n const touches = []\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 }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\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: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n}\n\nexport function touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\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, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\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, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\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) {\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) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n}\n\nexport function newCoords (): Interact.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 () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n get type () { return this.coords.type },\n get pointerType () { return this.coords.pointerType },\n get buttons () { return this.coords.buttons },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n}\n\nexport interface MockCoords {\n page: Interact.Point\n client: Interact.Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n buttons?: number\n}\n\nexport { pointerExtend }\n","export default function extend (dest: U, 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 { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value: any, target: Interact.HasGetRect, element) {\n if (value === 'parent') { return parentNode(element) }\n\n if (value === 'self') { return target.getRect(element) }\n\n return closest(element, value)\n}\n\nexport function resolveRectLike (\n value: Interact.RectResolvable,\n target?: Interact.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 }\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 Interact.Rect\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\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\n}\n\nexport function tlbrToXywh (rect) {\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\n}\n\nexport function addEdges (edges: Interact.EdgeOptions, rect: Interact.Rect, delta: Interact.Point) {\n if (edges.left) { rect.left += delta.x }\n if (edges.right) { rect.right += delta.x }\n if (edges.top) { rect.top += delta.y }\n if (edges.bottom) { rect.bottom += delta.y }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n","import * as arr from './arr'\nimport * as is from './is'\n\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 }\n else if (is.array(value)) {\n dest[prop] = arr.from(value) as typeof value\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport * as pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] }\n typeCount: number\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[]\n contexts: Node[]\n listeners: Array>\n }\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (element.removeEventListener && !contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\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(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (element.removeEventListener && target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: Node, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\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 delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (\n selector: string,\n context: Document | Interact.Element,\n type: string,\n listener?: Listener,\n optionalArg?: any,\n) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\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 [fn, capture, passive] = listeners[i]\n\n // check if the listener functions and capture and passive flags match\n if (fn === listener && capture === !!options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1)\n\n // if all listeners for this interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(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 < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\n\n fakeEvent.currentTarget = element\n\n for (const [fn, capture, passive] of listeners) {\n if (capture === !!options.capture && passive === options.passive) {\n fn(fakeEvent)\n }\n }\n }\n }\n\n element = domUtils.parentNode(element)\n }\n}\n\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param: object) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent: Event) {\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\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (\n target: Interact.HasGetRect & { options: Interact.PerActionDefaults },\n element: Node,\n actionName?: Interact.ActionName,\n) {\n const actionOptions = (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 extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.ListenersArg[],\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 return type.reduce(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result,\n )\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\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], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = callback => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = token => clearTimeout(token)\n }\n}\n\nexport default {\n request: callback => request(callback),\n cancel: token => cancel(token),\n init,\n}\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport * as pointer from './pointerUtils'\nimport * as rect from './rect'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any[]) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _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\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as raf } from './raf'\nexport { win, arr, dom, is, pointer, rect }\n","// tslint:disable no-empty-interface\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}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Interact.EventTarget\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Interact.Element\n listeners?: Interact.Listeners\n allowFrom?: string | Interact.Element\n ignoreFrom?: string | Interact.Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.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\nexport default defaults\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\n T extends ActionName,\n P extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass 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: any) {\n let listeners\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: Interact.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: Interact.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) { continue }\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: Interact.Element): Interact.Rect {\n return null\n }\n}\n\nexport default Eventable\n","import * 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 events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Interact.Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected 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: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Interact.Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Interact.Element) {\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\n this.set(options)\n }\n\n setOnEvents (actionName: Interact.ActionName, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName: Interact.ActionName, prev: Interact.Listeners, cur: Interact.Listeners) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName: Interact.ActionName, options: Interact.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 Interact.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 Interact.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 // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in (defaults.perAction[optionName] as any)) {\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 {object} The object's bounding rectangle.\n */\n getRect (element: Interact.Element) {\n element = element || (is.element(this.target)\n ? this.target\n : 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 (checker: (element: Interact.Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName: keyof Interact.Options, newValue: any) {\n if (trySelector(newValue) || is.object(newValue)) {\n (this.options[optionName] as any) = newValue\n\n for (const action of this._actions.names) {\n (this.options[action][optionName] as any) = 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 (newValue?: string) {\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 /**\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 ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (\n this: Interactable,\n options: { ignoreFrom?: IgnoreValue, allowFrom?: IgnoreValue },\n targetNode: Node,\n eventTarget: Interact.EventTarget,\n ) {\n return (!this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget))\n }\n\n testAllow (\n this: Interactable,\n allowFrom: IgnoreValue,\n targetNode: Node,\n element: Interact.EventTarget,\n ) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (\n this: Interactable,\n ignoreFrom: IgnoreValue,\n targetNode: Node,\n element: Interact.EventTarget,\n ) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n }\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: object) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate` as 'addDelegate' | 'removeDelegate'](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interactable's element\n else {\n (events[addRemove] as typeof events.remove)(this.target, type, listener, options)\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: Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('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[] | Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('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: Interact.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 Interact.ActionName\n const methodName: any = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\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 * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactable:new': {\n interactable: Interact.Interactable\n target: Interact.Target\n options: Interact.OptionsArg\n win: Window\n }\n }\n}\n\ninterface InteractableScopeProp {\n context: Document | Interact.Element\n interactable: Interact.Interactable\n}\n\nexport default class InteractableSet {\n // all set interactables\n list: Interact.Interactable[] = []\n\n selectorMap: {\n [selector: string]: InteractableScopeProp[]\n } = {}\n\n constructor (protected scope: Interact.Scope) {\n scope.addListeners({\n 'interactable:unset': ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings: InteractableScopeProp[] = is.string(target)\n ? this.selectorMap[target]\n : (target as any)[this.scope.id]\n\n const targetIndex = targetMappings.findIndex(m => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n },\n })\n }\n\n new (target: Interact.Target, options?: any): Interact.Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) { this.selectorMap[target] = [] }\n this.selectorMap[target].push(mappingInfo)\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(mappingInfo)\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 get (target: Interact.Target, options?: Interact.Options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings: InteractableScopeProp[] = isSelector\n ? this.selectorMap[target as string]\n : (target as any)[this.scope.id]\n\n if (!targetMappings) { return null }\n\n const found = arr.find(\n targetMappings,\n m => m.context === context &&\n (isSelector || m.interactable.inContext(target as any)))\n\n return found && found.interactable\n }\n\n forEachMatch (node: Node, callback: (interactable: Interact.Interactable) => T): T | void {\n for (const interactable of this.list) {\n let ret\n\n if ((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 ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import Interactable from './Interactable'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class BaseEvent {\n type: string\n target: EventTarget\n currentTarget: EventTarget\n interactable: Interactable\n _interaction: Interact.Interaction\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n get interaction () {\n return this._interaction._proxy\n }\n\n constructor (interaction: Interact.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\nexport default BaseEvent\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport BaseEvent from './BaseEvent'\nimport defaults from './defaultOptions'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> extends BaseEvent {\n target: Interact.Element\n currentTarget: Interact.Element\n relatedTarget: Interact.Element\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: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n rect: Interact.FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Interact.Element\n dragLeave?: Interact.Element\n // resize\n axes?: 'x' | 'y' | 'xy'\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Interact.Element,\n related?: Interact.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.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : 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 }\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 get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 ||\n 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\nexport default InteractEvent\n","/* eslint-disable @typescript-eslint/no-parameter-properties */\nexport class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: Interact.EventTarget,\n ) {}\n}\n\nexport default PointerInfo\n","import * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.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 (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\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)) { continue }\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: Interact.Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n defaults,\n } = scope\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n }\n else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction(ActionName.Drag, options)\n this.setOnEvents(ActionName.Drag, options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n id: 'actions/drag',\n install,\n listeners: {\n 'interactions:before-action-move': beforeMove,\n 'interactions:action-resume': beforeMove,\n\n // dragmove\n 'interactions:action-move': move,\n 'auto-start:check': arg => {\n const { interaction, interactable, buttons } = arg\n const dragOptions = interactable.options.drag\n\n if (\n !(dragOptions && dragOptions.enabled) ||\n // check mouseButton setting if the pointer is down\n (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options.drag.mouseButtons) === 0)\n ) {\n return undefined\n }\n\n arg.action = {\n name: ActionName.Drag,\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n\n return false\n },\n },\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent extends BaseEvent {\n target: Interact.Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Interact.Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: Interaction['dropState'], dragEvent: InteractEvent, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : 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 ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\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(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\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 }\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\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interactable,\n draggableElement: Interact.Element,\n dropElemen: Interact.Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: {\n cur: {\n dropzone: Interactable // the dropzone a drag target might be dropped into\n element: Interact.Element // the element at the time of checking\n }\n prev: {\n dropzone: Interactable // the dropzone that was recently dragged away from\n element: Interact.Element // the element at the time of checking\n }\n rejected: boolean // wheather the potential drop was rejected from a listener\n events: any // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Interact.Element\n rect: Interact.Rect\n }>\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ninterface DropSignalArg {\n interaction: Interact.Interaction\n dragEvent: Interact.DragEvent\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\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\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 {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (utils.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 utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\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: Interact.Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.DoPhaseArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.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 (utils.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: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.Interactable,\n draggableElement: Interact.Element,\n dropElement: Interact.Element,\n rect: any,\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, ActionName.Drag)\n const page = utils.pointer.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 && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop: Interact.Plugin = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: [],\n }\n },\n\n 'interactions:after-action-start': ({ interaction, event, iEvent: dragEvent }, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n scope.fire('actions/drop:start', { interaction, dragEvent })\n }\n },\n\n // FIXME proper signal types\n 'interactions:action-move': onEventCreated,\n 'interactions:action-end': onEventCreated,\n\n 'interactions:after-action-move': function fireDropAfterMove ({ interaction, iEvent: dragEvent }, scope) {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n interaction.dropState.events = {}\n },\n\n 'interactions:after-action-end': ({ interaction, iEvent: dragEvent }, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n scope.fire('actions/drop:end', { interaction, dragEvent })\n },\n\n 'interactions:stop': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\n\nexport type GesturableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\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: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.DoPhaseArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n defaults,\n } = 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 (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction(ActionName.Gesture, options)\n this.setOnEvents(ActionName.Gesture, options)\n\n return this\n }\n\n if (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, 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 = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\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 }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.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 (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nconst gesture: Interact.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: ActionName.Gesture }\n\n return false\n },\n },\n\n defaults: {\n },\n\n getCursor () {\n return ''\n },\n}\n\nexport default gesture\n","import { Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.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/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.FullRect\n edges?: Interact.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: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\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) { return undefined }\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(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || resize.defaultMargin)\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: ActionName.Resize,\n edges: resizeEdges,\n }\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: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction(ActionName.Resize, options)\n interactable.setOnEvents(ActionName.Resize, options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\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 }\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: Interact.Point,\n element: Node,\n interactableElement: Interact.Element,\n rect: Interact.Rect,\n margin: number,\n) {\n // false, '', undefined, null\n if (!value) { return false }\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, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) { return false }\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\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\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 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\nfunction start ({ iEvent, interaction }: { iEvent: ResizeEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\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 iEvent.edges = interaction.prepared.edges\n iEvent.rect = interaction._rects.corrected\n iEvent.deltaRect = interaction._rects.delta\n}\n\nfunction move ({ iEvent, interaction }: { iEvent: ResizeEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n // eslint-disable-next-line no-shadow\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 }\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 iEvent.edges = interaction.prepared.edges\n iEvent.rect = corrected\n iEvent.deltaRect = deltaRect\n}\n\nfunction end ({ iEvent, interaction }: { iEvent: ResizeEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = interaction._rects.corrected\n iEvent.deltaRect = interaction._rects.delta\n}\n\nfunction updateEventAxes ({ iEvent, interaction }: { iEvent: ResizeEvent, interaction: Interaction }) {\n if (interaction.prepared.name !== ActionName.Resize || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nconst resize: Interact.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 Interact.ResizableOptions,\n\n cursors: null as ReturnType,\n\n getCursor ({ edges, axis, name }: Interact.ActionProps) {\n const cursors = resize.cursors\n let result: string = null\n\n if (axis) {\n result = cursors[name + axis]\n }\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 defaultMargin: null as number,\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag from './drag'\nimport drop from './drop/index'\nimport gesture from './gesture'\nimport resize from './resize'\n\nfunction install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n resize,\n drag,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\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/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: AutoScrollOptions\n }\n}\n\nexport interface AutoScrollOptions {\n container?: Window | HTMLElement\n margin?: number\n distance?: number\n interval?: number\n speed?: number\n enabled?: boolean\n}\n\nfunction install (scope: Scope) {\n const {\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n actions.eventTypes.push('autoscroll')\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 Interact.Interaction,\n i: 0, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.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: Interact.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 }\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: Interact.Interactable, actionName: Interact.ActionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }: { interaction: Interact.Interaction, pointer: Interact.PointerType }) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\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 }\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: Interact.Interactable, element: Interact.Element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container: any) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container: any) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }: {\n interaction: Partial>\n element: Interact.Element\n}, func: any) {\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(\n scrollOptions.container,\n interaction.interactable,\n element,\n )\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: Interact.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 { warnOnce } from '@interactjs/utils/index'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: (\n this: Interact.Interactable,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n interaction: Interact.Interaction,\n element: Interact.Element,\n ) => Interact.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\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Interact.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: Interact.Interactable,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n interaction: Interact.Interaction,\n element: Interact.Element,\n ): Interact.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 * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\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 * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\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: Interact.Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n * @deprecated\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 * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\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: Interact.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: Interact.Interactable,\n event: Interact.PointerEventType,\n interaction: Interact.Interaction,\n element: Interact.Element,\n scope: Interact.Scope,\n) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\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: Interact.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: Interact.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 * as utils from '@interactjs/utils/index'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any[]) => any\n }\n\n interface SignalArgs {\n 'autoStart:before-start': Interact.SignalArgs['interactions:move']\n 'autoStart:prepared': { interaction: Interact.Interaction }\n 'auto-start:check': CheckSignalArg\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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 | Interact.Element\n ignoreFrom?: string | Interact.Element\n cursorChecker?: Interact.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 mouseButtons?: 0 | 1 | 2 | 4 | 16\n }\n}\n\ninterface CheckSignalArg {\n interactable: Interact.Interactable\n interaction: Interact.Interaction\n element: Interact.Element\n action: Interact.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: Interact.Element\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n defaults,\n } = scope\n\n scope.usePlugin(InteractableMethods)\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.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 => 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 ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:down'], scope: Interact.Scope) {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Interact.Element, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove (arg: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.fire('autoStart:before-start', arg)\n\n const { interactable } = interaction\n const actionName: Interact.ActionName = interaction.prepared.name\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[actionName].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n setInteractionCursor(interaction, scope)\n }\n }\n}\n\nfunction clearCursorOnStop ({ interaction }: { interaction: Interact.Interaction }, scope: Interact.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: Interact.ActionProps,\n interactable: Interact.Interactable,\n element: Interact.Element,\n eventTarget: Interact.EventTarget,\n scope: Interact.Scope,\n) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (\n interaction: Interact.Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n matches: Interact.Interactable[],\n matchElements: Interact.Element[],\n eventTarget: Interact.EventTarget,\n scope: Interact.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) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n 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: Interact.Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n scope: Interact.Scope,\n) {\n let matches: Interact.Interactable[] = []\n let matchElements: Interact.Element[] = []\n\n let element = eventTarget as Interact.Element\n\n function pushMatches (interactable: Interact.Interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element) as Interact.Element\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (\n interaction: Interact.Interaction,\n { action, interactable, element }: {\n action: Interact.ActionProps\n interactable: Interact.Interactable\n element: Interact.Element\n },\n scope: Interact.Scope,\n) {\n action = action || { name: null }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n setInteractionCursor(interaction, scope)\n\n scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit (\n interactable: Interact.Interactable,\n element: Interact.Element,\n action: Interact.ActionProps,\n scope: Interact.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)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\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: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: Interact.Element, cursor: string, scope: Interact.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: Interact.Interaction, scope: Interact.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: Interact.CursorChecker = interactable.options[prepared.name].cursorChecker\n\n if (utils.is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n }\n else {\n cursor = scope.actions[prepared.name].getCursor(prepared)\n }\n }\n\n setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Interact.Plugin = {\n id: 'auto-start/base',\n before: ['actions', 'action/drag', 'actions/resize', 'actions/gesture'],\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} as Interact.Plugin\n\nexport default autoStart\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\nfunction beforeStart ({ interaction, eventTarget, dx, dy }: Interact.SignalArgs['interactions:move'], scope: Interact.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 = 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.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget as Interact.Element\n\n const getDraggable = function (interactable: Interact.Interactable): Interact.Interactable | void {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\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.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element) as Interact.Element\n }\n }\n}\n\nfunction checkStartAxis (startAxis: string, interactable: Interact.Interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.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 basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\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: Interact.Scope) {\n const {\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\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.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n },\n\n // prevent regular down->move autoStart\n 'autoStart:before-start': ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n },\n },\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as 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\nfunction preventDefault (this: Interact.Interactable, newValue?: 'always' | 'never' | 'auto') {\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: Interact.Interactable, scope: Interact.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 (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 (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: { interaction: Interact.Interaction, event: Interact.PointerEventType }) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Interact.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 (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\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","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools?: Interact.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: Interact.Interaction) => boolean\n getInfo: (interaction: Interact.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\nconst isProduction = process.env.NODE_ENV === 'production'\n\n// eslint-disable-next-line no-restricted-syntax\nfunction install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n const {\n Interactable,\n defaults,\n } = 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\nconst checks: Check[] = [\n {\n name: CheckName.touchAction,\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [\n element,\n links.touchAction,\n ]\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 interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [\n element,\n links.boxSizing,\n ]\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 [\n interaction.prepared.name,\n interaction.interactable,\n ]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\n}\n\nfunction parentHasStyle (element: Interact.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: Interact.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 extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: {\n states: ModifierState[]\n startOffset: Interact.Rect\n startDelta: Interact.Point\n result?: ModifiersResult\n endResult: Interact.Point | void\n }\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface InteractEvent {\n modifiers?: Array<{\n name: string\n [key: string]: any\n }>\n }\n}\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: Modifier[]\n }\n}\n\nexport interface Modifier<\n Defaults = any,\n State extends ModifierState = any,\n Name extends string = any\n> {\n options?: Defaults\n methods: {\n start?: (arg: ModifierArg) => void\n set: (arg: ModifierArg) => void\n beforeEnd?: (arg: ModifierArg) => Interact.Point | void\n stop?: (arg: ModifierArg) => void\n }\n name?: Name\n}\n\nexport type ModifierState<\n Defaults = {},\n StateProps extends { [prop: string]: any } = {},\n Name extends string = any\n> = {\n options: Defaults\n methods?: Modifier['methods']\n index?: number\n name?: Name\n result?: object\n} & StateProps\n\nexport interface ModifierArg {\n interaction: Interact.Interaction\n interactable: Interact.Interactable\n phase: Interact.EventPhase\n rect: Interact.FullRect\n edges: Interact.EdgeOptions\n states?: State[]\n state?: State\n element: Interact.Element\n pageCoords?: Interact.Point\n prevCoords?: Interact.Point\n prevRect?: Interact.FullRect\n coords?: Interact.Point\n startOffset?: Interact.Rect\n preEnd?: boolean\n requireEndOnly?: boolean\n}\n\nexport interface ModifierModule<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n> {\n defaults?: Defaults\n start? (arg: ModifierArg): void\n set? (arg: ModifierArg): any\n beforeEnd? (arg: ModifierArg): Interact.Point | void\n stop? (arg: ModifierArg): void\n}\n\nexport interface ModifiersResult {\n delta: {\n x: number\n y: number\n }\n rectDelta: {\n left: number\n right: number\n top: number\n bottom: number\n }\n coords: Interact.Point\n rect: Interact.FullRect\n eventProps: any[]\n changed: boolean\n}\n\nfunction start (\n { interaction, phase }: { interaction: Interact.Interaction, phase: Interact.EventPhase },\n pageCoords: Interact.Point,\n prevCoords: Interact.Point,\n prevRect: Interact.FullRect,\n) {\n const { interactable, element, edges } = interaction\n const modifierList = getModifierList(interaction)\n const states = prepareStates(modifierList)\n\n const rect = extend({} as { [key: string]: any }, interaction.rect)\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: ModifierArg = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n edges,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n prevCoords,\n prevRect,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nexport function startAll (arg: ModifierArg) {\n const states: ModifierState[] = arg.states\n\n for (const state of states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n\n arg.interaction.edges = arg.edges\n}\n\nexport function setAll (arg: ModifierArg): ModifiersResult {\n const {\n prevCoords,\n prevRect,\n phase,\n preEnd,\n requireEndOnly,\n states,\n rect,\n } = arg\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n rectDelta: {\n left : 0,\n right : 0,\n top : 0,\n bottom: 0,\n },\n coords: arg.coords,\n rect: arg.rect,\n eventProps: [],\n changed: true,\n }\n\n const edges = arg.edges || { left: true, right: true, top: true, bottom: true }\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 && shouldDo(options, preEnd, requireEndOnly, phase)) {\n arg.state = state\n returnValue = state.methods.set(arg)\n\n rectUtils.addEdges(edges, arg.rect, { x: arg.coords.x - lastModifierCoords.x, y: arg.coords.y - lastModifierCoords.y })\n }\n\n result.eventProps.push(returnValue)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n result.rectDelta.left = arg.rect.left - rect.left\n result.rectDelta.right = arg.rect.right - rect.right\n result.rectDelta.top = arg.rect.top - rect.top\n result.rectDelta.bottom = arg.rect.bottom - rect.bottom\n\n const rectChanged = !prevRect || result.rect.left !== prevRect.left ||\n result.rect.right !== prevRect.right ||\n result.rect.top !== prevRect.top ||\n result.rect.bottom !== prevRect.bottom\n\n result.changed = !prevCoords || prevCoords.x !== result.coords.x ||\n prevCoords.y !== result.coords.y ||\n rectChanged\n\n return result\n}\n\nfunction beforeMove (arg: Partial & {\n interaction: Interact.Interaction\n phase: Interact.EventPhase\n preEnd?: boolean\n skipModifiers?: number\n prevCoords?: Interact.Point\n prevRect?: Interact.FullRect\n modifiedCoords?: Interact.Point\n}): void | false {\n const { interaction, phase, preEnd, skipModifiers } = arg\n const { interactable, element } = interaction\n\n const states = skipModifiers\n ? interaction.modifiers.states.slice(skipModifiers)\n : interaction.modifiers.states\n const prevCoords = arg.prevCoords || (interaction.modifiers.result\n ? interaction.modifiers.result.coords\n : null)\n const prevRect = arg.prevRect || (interaction.modifiers.result\n ? interaction.modifiers.result.rect\n : null)\n\n const modifierResult = setAll({\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: arg.modifiedCoords || interaction.coords.cur.page,\n prevCoords,\n rect: interaction.rect,\n edges: interaction.edges,\n prevRect,\n states,\n requireEndOnly: false,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\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 modifierResult.coords.x += adjustment.x\n modifierResult.coords.y += adjustment.y\n modifierResult.delta.x += adjustment.x\n modifierResult.delta.y += adjustment.y\n }\n setCoords(arg)\n}\n\nfunction beforeEnd (arg: Interact.DoPhaseArg & { noPreEnd?: boolean, state?: ModifierState }): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = 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 interaction.modifiers.endResult = endPosition\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg: { interaction: Interact.Interaction, phase: Interact.EventPhase }) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg: ModifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n rect: null,\n }, arg as any)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n arg.interaction.modifiers.endResult = null\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.filter(\n modifier => !modifier.options || modifier.options.enabled !== false,\n )\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map(type => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter(m => !!m)\n}\n\nexport function prepareStates (modifierList: Modifier[]) {\n const states: ModifierState[] = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n states.push({\n options,\n methods,\n index,\n name,\n })\n }\n\n return states\n}\n\nexport function setCoords (arg: { interaction: Interact.Interaction, phase: Interact.EventPhase, rect?: Interact.Rect }) {\n const { interaction, phase } = arg\n const curCoords = interaction.coords.cur\n const startCoords = interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]] 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 } = interaction.modifiers.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\nexport function restoreCoords ({ interaction: { coords, rect, modifiers } }: { interaction: Interact.Interaction }) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta, rectDelta } = modifiers.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\nexport function shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly || options.alwaysOnEnd) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\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\nexport function makeModifier<\n Defaults extends { enabled?: boolean },\n State extends ModifierState,\n Name extends string\n> (\n module: ModifierModule,\n name?: Name,\n) {\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: Defaults = (_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[prop] = defaults[prop]\n }\n }\n\n const m: Modifier = { options, methods, name }\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\nfunction addEventModifiers ({ iEvent, interaction: { modifiers: { result } } }: {\n iEvent: Interact.InteractEvent\n interaction: Interact.Interaction\n}) {\n if (result) {\n iEvent.modifiers = result.eventProps\n }\n}\n\nconst modifiersBase: Interact.Plugin = {\n id: 'modifiers/base',\n install: scope => {\n scope.defaults.perAction.modifiers = []\n },\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n states: null,\n result: null,\n endResult: null,\n startDelta: null,\n }\n },\n\n 'interactions:before-action-start': arg => {\n start(arg, arg.interaction.coords.start.page, null, null)\n setCoords(arg)\n },\n 'interactions:after-action-start': restoreCoords,\n 'interactions:before-action-move': beforeMove,\n 'interactions:after-action-move': restoreCoords,\n\n 'interactions:action-resume': arg => {\n const { coords: prevCoords, rect: prevRect } = arg.interaction.modifiers.result\n\n stop(arg)\n start(arg, arg.interaction.coords.cur.page, prevCoords, prevRect)\n beforeMove(arg)\n },\n\n 'interactions:before-action-end': beforeEnd,\n 'interactions:action-start': addEventModifiers,\n 'interactions:action-move': addEventModifiers,\n 'interactions:action-end': addEventModifiers,\n 'interactions:stop': stop,\n },\n before: ['actions', 'action/drag', 'actions/resize', 'actions/gesture'],\n}\n\nexport default modifiersBase\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport * as modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils/index'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\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:action-resume': {\n interaction: Interact.Interaction\n phase: EventPhase.Resume\n }\n }\n}\n\n(EventPhase as any).Resume = 'resume'\n;(EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n defaults,\n } = scope\n\n scope.usePlugin(modifiers.default)\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\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArgs['interactions:down'],\n scope: Interact.Scope,\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget as Node\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer as Interact.PointerType, event as Interact.PointerEventType, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map(p => p.pointer),\n interaction._now(),\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n phase: EventPhase.Resume as const,\n }\n\n scope.fire('interactions:action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event as Interact.PointerEventType, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.DoPhaseArg & { noPreEnd?: boolean },\n scope: Interact.Scope,\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg: modifiers.ModifierArg = {\n interaction,\n interactable: interaction.interactable,\n element: interaction.element,\n rect: interaction.rect,\n edges: interaction.edges,\n pageCoords: interaction.coords.cur.page,\n states: inertiaPossible && interaction.modifiers.states.map(\n modifierState => utils.extend({}, modifierState),\n ),\n preEnd: true,\n prevCoords: null,\n prevRect: null,\n requireEndOnly: null,\n phase: EventPhase.InertiaStart,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.modifiers.result.coords\n modifierArg.prevRect = interaction.modifiers.result.rect\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n smoothEnd = modifierResult.changed\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n modifiers.setCoords(modifierArg)\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n modifiers.restoreCoords(modifierArg)\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = null\n modifierArg.prevRect = null\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.DoPhaseArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move({ event: state.startEvent })\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move({ event: state.startEvent })\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move({ event: state.startEvent })\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move({ event: state.startEvent })\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [{\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n }], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nconst inertia: Interact.Plugin = {\n id: 'inertia',\n install,\n listeners: {\n 'interactions:new': ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n },\n\n 'interactions:before-action-end': release,\n 'interactions:down': resume,\n 'interactions:stop': stop,\n },\n before: ['modifiers/base'],\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n\nexport default inertia\n","/* eslint-disable */\n\n/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * @example\n * interact(target).resizable({\n * modifiers: [\n * interact.modifiers.snapSize({\n * targets: [ interact.createSnapGrid({ x: 20, y: 20 }) ],\n * }),\n * interact.aspectRatio({ ratio: 'preserve' }),\n * ],\n * });\n */\n\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\nimport { Modifier, ModifierModule, ModifierState, prepareStates, setAll, startAll } from './base'\n\nexport interface AspectRatioOptions {\n ratio?: number | 'preserve'\n equalDelta?: boolean\n modifiers?: Modifier[]\n enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState\n\nconst aspectRatio: ModifierModule = {\n start (arg) {\n const { state, rect, edges: originalEdges, pageCoords: coords } = arg\n let { ratio } = 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 : originalEdges.top || (originalEdges.left && !originalEdges.bottom),\n left : originalEdges.left || (originalEdges.top && !originalEdges.right),\n bottom: originalEdges.bottom || (originalEdges.right && !originalEdges.top),\n right : originalEdges.right || (originalEdges.bottom && !originalEdges.left),\n }\n\n state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right)\n\n if (state.equalDelta) {\n state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1) as 1 | -1\n }\n else {\n const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left\n state.edgeSign = negativeSecondaryEdge ? -1 : 1\n }\n\n extend(arg.edges, linkedEdges)\n\n if (!modifiers || !modifiers.length) { return }\n\n state.subStates = prepareStates(modifiers).map(subState => {\n subState.options = {\n ...subState.options,\n }\n\n return subState\n })\n\n return startAll({\n ...arg,\n states: state.subStates,\n })\n },\n\n set (arg) {\n const { state, rect, coords } = arg\n const initialCoords = extend({}, coords)\n const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n if (!state.subStates) { return null }\n\n const correctedRect = extend({}, rect)\n\n addEdges(state.linkedEdges, correctedRect, { x: coords.x - initialCoords.x, y: coords.y - initialCoords.y })\n\n const result = setAll({\n ...arg,\n rect: correctedRect,\n edges: state.linkedEdges,\n pageCoords: coords,\n states: state.subStates,\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: Interact.Point) {\n if (xIsPrimaryAxis) {\n coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign\n }\n else {\n coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign\n }\n}\n\nfunction setRatio ({ startRect, startCoords, ratio, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Interact.Point, rect: Interact.Rect) {\n if (xIsPrimaryAxis) {\n const newHeight = rect.width / ratio\n\n coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign\n }\n else {\n const newWidth = rect.height * ratio\n\n coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign\n }\n}\n\nexport default aspectRatio\n","import extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { ModifierArg, ModifierModule, ModifierState } from '../base'\n\nexport interface RestrictOptions {\n // where to drag over\n restriction: Interact.RectResolvable<[number, number, Interact.Interaction]>\n // what part of self is allowed to drag over\n elementRect: Interact.Rect\n offset: Interact.Rect\n // restrict just before the end drag\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictState = ModifierState\n\nfunction start ({ rect, startOffset, state, interaction, pageCoords }: ModifierArg) {\n const { options } = state\n const { elementRect } = options\n const offset: Interact.Rect = extend({\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n }, options.offset || {})\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: Interact.RectResolvable<[number, number, Interact.Interaction]>,\n interaction: Interact.Interaction,\n coords?: Interact.Point,\n) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\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 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 extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { ModifierArg, ModifierState } from '../base'\nimport { getRestrictionRect, RestrictOptions } from './pointer'\n\nexport interface RestrictEdgesOptions {\n inner: RestrictOptions['restriction']\n outer: RestrictOptions['restriction']\n offset?: RestrictOptions['offset']\n endOnly: boolean\n enabled?: boolean\n}\n\nexport type RestrictEdgesState = ModifierState\n\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\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 Interact.Rect\n const outer = getRestrictionRect(options.outer, interaction, page) || {} as Interact.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 }\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 }\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, defaults) {\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 restrictEdges\n","import extend from '../../utils/extend'\nimport restrictPointer from './pointer'\n\nconst defaults = extend({\n get elementRect () {\n return { top: 0, left: 0, bottom: 1, right: 1 }\n },\n set elementRect (_) {},\n}, restrictPointer.defaults)\n\nconst restrictRect = {\n start: restrictPointer.start,\n set: restrictPointer.set,\n defaults,\n}\n\nexport default restrictRect\n","import extend from '@interactjs/utils/extend'\nimport * as rectUtils from '@interactjs/utils/rect'\nimport { ModifierArg, ModifierState } from '../base'\nimport restrictEdges, { RestrictEdgesState } from './edges'\nimport { getRestrictionRect, RestrictOptions } from './pointer'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nexport interface RestrictSizeOptions {\n min?: Interact.Size | Interact.Point | RestrictOptions['restriction']\n max?: Interact.Size | Interact.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 =\n RestrictEdgesState & ModifierState\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 = rectUtils.tlbrToXywh(getRestrictionRect(options.min as any, interaction, arg.coords)) || noMin\n const maxSize = 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 }\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 }\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 restrictSize\n","import * as utils from '@interactjs/utils/index'\nimport { ModifierArg, ModifierState } from '../base'\n\nexport interface Offset {\n x: number\n y: number\n index: number\n relativePoint?: Interact.Point\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: Interact.Interaction,\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: Interact.Point[]\n // startCoords = offset snapping from drag start page position\n offset: Interact.Point | Interact.RectResolvable<[Interact.Interaction]> | 'startCoords'\n offsetWithOrigin?: boolean\n origin: Interact.RectResolvable<[Interact.Element]> | Interact.Point\n endOnly?: boolean\n enabled?: boolean\n}\n\nexport type SnapState = ModifierState\n\nfunction start (arg: ModifierArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const origin = options.offsetWithOrigin\n ? getOrigin(arg)\n : { x: 0, y: 0 }\n\n let snapOffset: Interact.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 }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset as any, interactable, element, [interaction])\n\n snapOffset = utils.rect.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 = 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 : [utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset)]\n}\n\nfunction set (arg: ModifierArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\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\n\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: (utils.is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (utils.is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: utils.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 = utils.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 (!closest.target || (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 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 = utils.rect.rectToXY(\n utils.rect.resolveRectLike(arg.state.options.origin as any, null, null, [element]),\n )\n const origin = optionsOrigin || utils.getOriginXY(\n arg.interactable,\n element,\n arg.interaction.prepared.name,\n )\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 snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport { ModifierArg } from '../base'\nimport snap, { SnapOptions, SnapState } from './pointer'\n\nexport type SnapSizeOptions = Pick<\nSnapOptions,\n'targets' | 'offset' | 'endOnly' | 'range' | 'enabled'\n>\n\nfunction start (arg: ModifierArg) {\n const { state, edges } = arg\n const { options } = state\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n targets: null,\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\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 }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\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 snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\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\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport { ModifierArg, ModifierModule } from '../base'\nimport { SnapOptions, SnapState } from './pointer'\nimport snapSize from './size'\n\nfunction start (arg: ModifierArg) {\n const { edges } = arg\n\n if (!edges) { return null }\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(\n clone(snapSize.defaults),\n {\n offset: { x: 0, y: 0 },\n } as SnapOptions,\n ),\n}\n\nexport default snapEdges\n","import aspectRatioModule from './aspectRatio'\nimport { makeModifier } from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictRectModule from './restrict/rect'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictRect = makeModifier(restrictRectModule, 'restrictRect')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\nexport const aspectRatio = makeModifier(aspectRatioModule, 'aspectRatio')\n","import BaseEvent from '../core/BaseEvent'\nimport * as pointerUtils from '../utils/pointerUtils'\n\nexport default class PointerEvent extends BaseEvent {\n type: T\n originalEvent: Interact.PointerEventType\n pointerId: number\n pointerType: string\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n [key: string]: any\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.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 = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n _subtractOrigin ({ x: originX, y: originY }: Interact.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 }: Interact.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 { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\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?: Interact.Point | string | Interact.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/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.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: Interact.PointerType | PointerEvent\n event: Interact.PointerEventType | PointerEvent\n eventTarget: Interact.EventTarget\n pointerEvent: PointerEvent\n targets?: EventTargetList\n type: string\n }\n 'pointerEvents:collect-targets': {\n interaction: Interaction\n pointer: Interact.PointerType | PointerEvent\n event: Interact.PointerEventType | PointerEvent\n eventTarget: Interact.EventTarget\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 = {\n id: 'pointer-events/base',\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',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (\n arg: {\n pointer: Interact.PointerType | PointerEvent\n event: Interact.PointerEventType | PointerEvent\n eventTarget: Interact.EventTarget\n interaction: Interaction\n type: T\n targets?: EventTargetList\n },\n scope: Interact.Scope,\n) {\n const {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n targets = collectEventTargets(arg, scope),\n } = 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 = utils.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 (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {\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 interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction\n pointer: Interact.PointerType | PointerEvent\n event: Interact.PointerEventType | PointerEvent\n eventTarget: Interact.EventTarget\n type: T\n}, scope: Interact.Scope) {\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 (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget as Interact.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(target =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\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 }: Interact.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 if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n}\n\nfunction moveAndClearHold (\n { interaction, pointer, event, eventTarget, duplicate }: Interact.SignalArgs['interactions:move'],\n scope: Interact.Scope,\n) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget: eventTarget as Interact.Element,\n type: 'move',\n }, scope)\n }\n}\n\nfunction downAndStartHold ({ interaction, pointer, event, eventTarget, pointerIndex }: Interact.SignalArgs['interactions:down'], scope: Interact.Scope) {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget as Interact.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 interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n}\n\nfunction tapAfterUp ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:up'], scope: Interact.Scope) {\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}\n\nexport default pointerEvents\n","import { ListenerMap } from '@interactjs/core/scope'\nimport basePlugin from './base'\nimport PointerEvent from './PointerEvent'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/PointerEvent' {\n interface PointerEvent {\n count?: number\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n scope.usePlugin(basePlugin)\n\n const {\n pointerEvents,\n } = scope\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\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 }: Interact.SignalArgs['pointerEvents:fired'],\n scope: Interact.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 interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }: { interaction: Interact.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: Interact.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 { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\n\ntype Interactable = import ('@interactjs/core/Interactable').default\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 {\n pointerEvents,\n actions,\n Interactable,\n } = scope\n\n merge(actions.eventTypes, pointerEvents.types)\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: Interact.Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nconst plugin: Interact.Plugin = {\n id: 'pointer-events/interactableTargets',\n install,\n listeners: {\n 'pointerEvents:collect-targets': ({\n targets,\n node,\n type,\n eventTarget,\n }, 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 targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n },\n\n 'interactable:new': ({ interactable }) => {\n interactable.events.getRect = function (element: Interact.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 * as pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope: Interact.Scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { EventPhase } from '@interactjs/core/InteractEvent'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils/index'\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: () => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Reflow = 'reflow',\n }\n}\n\n(EventPhase as any).Reflow = 'reflow'\n\nexport function install (scope: Scope) {\n const {\n actions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\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) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = (is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]) as Interact.Element[]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.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) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.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 (scope: Scope, interactable: Interactable, element: Interact.Element, action: ActionProps, event: any) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: EventPhase.Reflow,\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\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 }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n listeners: {\n // remove completed reflow interactions\n 'interactions:stop': ({ interaction }, scope) => {\n if (interaction.pointerType === EventPhase.Reflow) {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n },\n },\n} as Interact.Plugin\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\nimport * as utils from '@interactjs/utils/index'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\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 {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (target: Interact.Element, options?: any) {\n return !!scope.interactables.get(target, options && options.context)\n}\n\n/**\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 */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?: object) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as any)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\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 */\ninteract.off = off\nfunction off (type: Interact.EventTypes, listener: any, options?: object) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\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 */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\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 */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue?: number) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.addListeners({\n 'interactable:unset': ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && !interaction._ending) {\n interaction.stop()\n }\n }\n },\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = doc => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as actions from '@interactjs/actions/index'\nimport autoScroll from '@interactjs/auto-scroll/index'\nimport * as autoStart from '@interactjs/auto-start/index'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools/index'\nimport inertia from '@interactjs/inertia/index'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as modifiers from '@interactjs/modifiers/index'\nimport * as pointerEvents from '@interactjs/pointer-events/index'\nimport reflow from '@interactjs/reflow/index'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window) {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // inertia\n interact.use(inertia)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type as keyof typeof modifiers]\n\n ;(_defaults as any)._methods = _methods\n ;(scope.defaults.perAction as any)[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = process.env.npm_package_version\n\nexport default interact\n","/// \n","function createGrid (grid: (Partial | Interact.Point) & { range?: number, limits?: Interact.Rect, offset?: Interact.Point }) {\n const coordFields = ([\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ] as const).filter(([xField, yField]) => xField in grid || yField in grid)\n\n const gridFunc: Interact.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: Interact.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\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact/index'\nimport * as modifiers from '@interactjs/modifiers/index'\nimport '@interactjs/types/index'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers/index'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers: typeof modifiers\n snappers: typeof snappers\n createSnapGrid: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install () {\n interact.modifiers = extend({}, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\n","import interact, { init } from '@interactjs/interactjs/index'\nexport * from '@interactjs/interactjs/index'\n\nif (typeof module === 'object' && !!module) {\n try { module.exports = interact }\n catch {}\n}\n\n(interact as any).default = interact // tslint:disable-line no-string-literal\n;(interact as any).init = init // tslint:disable-line no-string-literal\n\nexport default interact\n","\nreturn _$index_67;\n\n});\n"]}