{ "version": 3, "sources": [ "base.ts" ], "names": [ "Interaction", "Scope", "utils", "PointerEvent", "defaults", "holdDuration", "ignoreFrom", "allowFrom", "origin", "x", "y", "pointerEvents", "id", "install", "listeners", "addInteractionProps", "addHoldInfo", "moveAndClearHold", "arg", "scope", "downAndStartHold", "fire", "clearHold", "tapAfterUp", "collectEventTargets", "types", "interaction", "pointer", "event", "eventTarget", "type", "targets", "pointerEvent", "now", "signalArg", "i", "length", "target", "prop", "props", "getOriginXY", "eventable", "node", "_subtractOrigin", "currentTarget", "_addOrigin", "immediatePropagationStopped", "propagationStopped", "prevTap", "double", "tapTime", "timeStamp", "pointerIndex", "getPointerIndex", "pointerInfo", "pointers", "pointerWasMoved", "downTarget", "path", "dom", "getPath", "filter", "options", "hold", "duration", "down", "Infinity", "timeout", "clearTimeout", "duplicate", "pointerIsDown", "timer", "minDuration", "setTimeout", "actions" ], "mappings": "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", "sourcesContent": [ "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" ] }