{ "version": 3, "sources": [ "base.ts" ], "names": [ "Interaction", "Scope", "SignalArgs", "domUtils", "extend", "getOriginXY", "PointerEvent", "defaults", "holdDuration", "ignoreFrom", "allowFrom", "origin", "x", "y", "pointerEvents", "id", "before", "install", "listeners", "addInteractionProps", "addHoldInfo", "moveAndClearHold", "arg", "scope", "downAndStartHold", "fire", "clearHold", "tapAfterUp", "collectEventTargets", "types", "down", "move", "up", "cancel", "tap", "doubletap", "hold", "interaction", "pointer", "event", "eventTarget", "type", "targets", "pointerEvent", "now", "signalArg", "i", "length", "target", "prop", "props", "eventable", "node", "_subtractOrigin", "currentTarget", "_addOrigin", "immediatePropagationStopped", "propagationStopped", "prevTap", "double", "tapTime", "timeStamp", "pointerIndex", "getPointerIndex", "pointerInfo", "pointers", "pointerWasMoved", "downTarget", "path", "getPath", "filter", "options", "duration", "Infinity", "timeout", "clearTimeout", "duplicate", "pointerIsDown", "timer", "minDuration", "setTimeout", "actions", "phaselessTypes" ], "mappings": "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", "sourcesContent": [ "import { Eventable } from '@interactjs/core/Eventable'\nimport { Interaction } from '@interactjs/core/Interaction'\nimport { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport { Scope, SignalArgs, Plugin } from '@interactjs/core/scope'\nimport { Point, PointerType, PointerEventType, Element } from '@interactjs/types'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\n\nimport { PointerEvent } from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node\n eventable: Eventable\n props: { [key: string]: any }\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number\n ignoreFrom?: any\n allowFrom?: any\n origin?: Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Options\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'pointerEvents:new': { pointerEvent: PointerEvent }\n 'pointerEvents:fired': {\n interaction: Interaction\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n pointerEvent: PointerEvent\n targets?: EventTargetList\n type: string\n }\n 'pointerEvents:collect-targets': {\n interaction: Interaction\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n targets?: EventTargetList\n type: string\n path: Node[]\n node: null\n }\n }\n}\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents: Plugin = {\n id: 'pointer-events/base',\n before: ['inertia', 'modifiers', 'auto-start', 'actions'],\n install,\n listeners: {\n 'interactions:new': addInteractionProps,\n 'interactions:update-pointer': addHoldInfo,\n 'interactions:move': moveAndClearHold,\n 'interactions:down': (arg, scope) => {\n downAndStartHold(arg, scope)\n fire(arg, scope)\n },\n 'interactions:up': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n tapAfterUp(arg, scope)\n },\n 'interactions:cancel': (arg, scope) => {\n clearHold(arg)\n fire(arg, scope)\n },\n },\n PointerEvent,\n fire,\n collectEventTargets,\n defaults,\n types: {\n down: true,\n move: true,\n up: true,\n cancel: true,\n tap: true,\n doubletap: true,\n hold: true,\n } as { [type: string]: true },\n}\n\nfunction fire (\n arg: {\n pointer: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n interaction: Interaction\n type: T\n targets?: EventTargetList\n },\n scope: Scope,\n) {\n const {\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 = 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: PointerType | PointerEvent\n event: PointerEventType | PointerEvent\n eventTarget: Node\n type: T\n}, scope: 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 = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter(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 }: SignalArgs['interactions:update-pointer']) {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n}\n\nfunction clearHold ({ interaction, pointerIndex }) {\n const hold = interaction.pointers[pointerIndex].hold\n\n if (hold && hold.timeout) {\n clearTimeout(hold.timeout)\n hold.timeout = null\n }\n}\n\nfunction moveAndClearHold (\n arg: SignalArgs['interactions:move'],\n scope: Scope,\n) {\n const { interaction, pointer, event, eventTarget, duplicate } = arg\n\n if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearHold(arg)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget: eventTarget as Element,\n type: 'move',\n }, scope)\n }\n}\n\nfunction downAndStartHold ({ interaction, pointer, event, eventTarget, pointerIndex }: SignalArgs['interactions:down'], scope: Scope) {\n const timer = interaction.pointers[pointerIndex].hold\n const path = domUtils.getPath(eventTarget as Element | Document)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n scope.fire('pointerEvents:collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n}\n\nfunction tapAfterUp ({ interaction, pointer, event, eventTarget }: SignalArgs['interactions:up'], scope: 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 extend(scope.actions.phaselessTypes, pointerEvents.types)\n}\n\nexport default pointerEvents\n" ] }