Socket
Socket
Sign inDemoInstall

@interactjs/pointer-events

Package Overview
Dependencies
Maintainers
2
Versions
137
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@interactjs/pointer-events - npm Package Compare versions

Comparing version 1.6.3 to 1.7.0

base.js.map

74

base.d.ts

@@ -1,6 +0,5 @@

import { PerActionDefaults } from '@interactjs/core/defaultOptions';
import Eventable from '@interactjs/core/Eventable';
import Interaction from '@interactjs/core/Interaction';
import { Scope } from '@interactjs/core/scope';
import * as utils from '@interactjs/utils';
import { PerActionDefaults } from '../core/defaultOptions';
import Eventable from '../core/Eventable';
import Interaction from '../core/Interaction';
import { Scope } from '../core/scope';
import PointerEvent from './PointerEvent';

@@ -45,10 +44,42 @@ export declare type EventTargetList = Array<{

}
declare module '@interactjs/core/scope' {
interface SignalArgs {
'pointerEvents:new': {
pointerEvent: PointerEvent<any>;
};
'pointerEvents:fired': {
interaction: Interaction;
pointer: Interact.PointerType | PointerEvent<any>;
event: Interact.PointerEventType | PointerEvent<any>;
eventTarget: Interact.EventTarget;
pointerEvent: PointerEvent<any>;
targets?: EventTargetList;
type: string;
};
'pointerEvents:collect-targets': {
interaction: Interaction;
pointer: Interact.PointerType | PointerEvent<any>;
event: Interact.PointerEventType | PointerEvent<any>;
eventTarget: Interact.EventTarget;
targets?: EventTargetList;
type: string;
path: Node[];
node: null;
};
}
}
declare const pointerEvents: {
id: string;
install: typeof install;
signals: utils.Signals;
listeners: {
'interactions:new': typeof addInteractionProps;
'interactions:update-pointer': typeof addHoldInfo;
'interactions:move': typeof moveAndClearHold;
'interactions:down': (arg: any, scope: any) => void;
'interactions:up': (arg: any, scope: any) => void;
'interactions:cancel': (arg: any, scope: any) => void;
};
PointerEvent: typeof PointerEvent;
fire: typeof fire;
collectEventTargets: typeof collectEventTargets;
createSignalListener: typeof createSignalListener;
defaults: PointerEventOptions;

@@ -58,25 +89,22 @@ types: string[];

declare function fire<T extends string>(arg: {
pointer: Interact.PointerType | PointerEvent<any>;
event: Interact.PointerEventType | PointerEvent<any>;
eventTarget: Interact.EventTarget;
interaction: Interaction;
pointer: Interact.PointerType;
event: Interact.PointerEventType;
eventTarget: Interact.EventTarget;
type: T;
targets?: EventTargetList;
pointerEvent?: PointerEvent<T>;
type: T;
}, scope: Interact.Scope): PointerEvent<any>;
}, scope: Interact.Scope): PointerEvent<T>;
declare function collectEventTargets<T extends string>({ interaction, pointer, event, eventTarget, type }: {
interaction: Interaction;
pointer: Interact.PointerType;
event: Interact.PointerEventType;
pointer: Interact.PointerType | PointerEvent<any>;
event: Interact.PointerEventType | PointerEvent<any>;
eventTarget: Interact.EventTarget;
type: T;
}): {
node: Node;
eventable: Eventable;
props: {
[key: string]: any;
};
}[];
}, scope: Interact.Scope): EventTargetList;
declare function addInteractionProps({ interaction }: {
interaction: any;
}): void;
declare function addHoldInfo({ down, pointerInfo }: Interact.SignalArgs['interactions:update-pointer']): void;
declare function moveAndClearHold({ interaction, pointer, event, eventTarget, duplicate }: Interact.SignalArgs['interactions:move'], scope: Interact.Scope): void;
declare function install(scope: Scope): void;
declare function createSignalListener(type: string, scope: any): ({ interaction, pointer, event, eventTarget }: any) => void;
export default pointerEvents;

@@ -1,196 +0,274 @@

import * as utils from '@interactjs/utils';
import PointerEvent from './PointerEvent';
const signals = new utils.Signals();
const simpleSignals = ['down', 'up', 'cancel'];
const simpleEvents = ['down', 'up', 'cancel'];
import Interaction from "../core/Interaction.js";
import { Scope } from "../core/scope.js";
import * as utils from "../utils/index.js";
import PointerEvent from "./PointerEvent.js";
const defaults = {
holdDuration: 600,
ignoreFrom: null,
allowFrom: null,
origin: { x: 0, y: 0 },
holdDuration: 600,
ignoreFrom: null,
allowFrom: null,
origin: {
x: 0,
y: 0
}
};
const pointerEvents = {
id: 'pointer-events/base',
install,
signals,
PointerEvent,
fire,
collectEventTargets,
createSignalListener,
defaults,
types: [
'down',
'move',
'up',
'cancel',
'tap',
'doubletap',
'hold',
],
id: 'pointer-events/base',
install,
listeners: {
'interactions:new': addInteractionProps,
'interactions:update-pointer': addHoldInfo,
'interactions:move': moveAndClearHold,
'interactions:down': (arg, scope) => {
downAndStartHold(arg, scope);
fire(arg, scope);
},
'interactions:up': (arg, scope) => {
clearHold(arg);
fire(arg, scope);
tapAfterUp(arg, scope);
},
'interactions:cancel': (arg, scope) => {
clearHold(arg);
fire(arg, scope);
}
},
PointerEvent,
fire,
collectEventTargets,
defaults,
types: ['down', 'move', 'up', 'cancel', 'tap', 'doubletap', 'hold']
};
function fire(arg, scope) {
const { interaction, pointer, event, eventTarget, type = arg.pointerEvent.type, targets = collectEventTargets(arg), } = arg;
const { pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()), } = arg;
const signalArg = {
interaction,
pointer,
event,
eventTarget,
targets,
type,
pointerEvent,
};
for (let i = 0; i < targets.length; i++) {
const target = targets[i];
for (const prop in target.props || {}) {
pointerEvent[prop] = target.props[prop];
}
const origin = utils.getOriginXY(target.eventable, target.node);
pointerEvent._subtractOrigin(origin);
pointerEvent.eventable = target.eventable;
pointerEvent.currentTarget = target.node;
target.eventable.fire(pointerEvent);
pointerEvent._addOrigin(origin);
if (pointerEvent.immediatePropagationStopped ||
(pointerEvent.propagationStopped &&
(i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {
break;
}
const {
interaction,
pointer,
event,
eventTarget,
type,
targets = collectEventTargets(arg, scope)
} = arg;
const pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now());
scope.fire('pointerEvents:new', {
pointerEvent
});
const signalArg = {
interaction,
pointer,
event,
eventTarget,
targets,
type,
pointerEvent
};
for (let i = 0; i < targets.length; i++) {
const target = targets[i];
for (const prop in target.props || {}) {
pointerEvent[prop] = target.props[prop];
}
signals.fire('fired', signalArg);
if (type === 'tap') {
// if pointerEvent should make a double tap, create and fire a doubletap
// PointerEvent and use that as the prevTap
const prevTap = pointerEvent.double
? fire({
interaction,
pointer,
event,
eventTarget,
type: 'doubletap',
}, scope)
: pointerEvent;
interaction.prevTap = prevTap;
interaction.tapTime = prevTap.timeStamp;
const origin = utils.getOriginXY(target.eventable, target.node);
pointerEvent._subtractOrigin(origin);
pointerEvent.eventable = target.eventable;
pointerEvent.currentTarget = target.node;
target.eventable.fire(pointerEvent);
pointerEvent._addOrigin(origin);
if (pointerEvent.immediatePropagationStopped || pointerEvent.propagationStopped && i + 1 < targets.length && targets[i + 1].node !== pointerEvent.currentTarget) {
break;
}
return pointerEvent;
}
scope.fire('pointerEvents:fired', signalArg);
if (type === 'tap') {
// if pointerEvent should make a double tap, create and fire a doubletap
// PointerEvent and use that as the prevTap
const prevTap = pointerEvent.double ? fire({
interaction,
pointer,
event,
eventTarget,
type: 'doubletap'
}, scope) : pointerEvent;
interaction.prevTap = prevTap;
interaction.tapTime = prevTap.timeStamp;
}
return pointerEvent;
}
function collectEventTargets({ interaction, pointer, event, eventTarget, type }) {
const pointerIndex = interaction.getPointerIndex(pointer);
const pointerInfo = interaction.pointers[pointerIndex];
// do not fire a tap event if the pointer was moved before being lifted
if (type === 'tap' && (interaction.pointerWasMoved ||
// or if the pointerup target is different to the pointerdown target
!(pointerInfo && pointerInfo.downTarget === eventTarget))) {
return [];
function collectEventTargets({
interaction,
pointer,
event,
eventTarget,
type
}, scope) {
const pointerIndex = interaction.getPointerIndex(pointer);
const pointerInfo = interaction.pointers[pointerIndex]; // do not fire a tap event if the pointer was moved before being lifted
if (type === 'tap' && (interaction.pointerWasMoved || // or if the pointerup target is different to the pointerdown target
!(pointerInfo && pointerInfo.downTarget === eventTarget))) {
return [];
}
const path = utils.dom.getPath(eventTarget);
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type,
path,
targets: [],
node: null
};
for (const node of path) {
signalArg.node = node;
scope.fire('pointerEvents:collect-targets', signalArg);
}
if (type === 'hold') {
signalArg.targets = signalArg.targets.filter(target => target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration);
}
return signalArg.targets;
}
function addInteractionProps({
interaction
}) {
interaction.prevTap = null; // the most recent tap event on this interaction
interaction.tapTime = 0; // time of the most recent tap event
}
function addHoldInfo({
down,
pointerInfo
}) {
if (!down && pointerInfo.hold) {
return;
}
pointerInfo.hold = {
duration: Infinity,
timeout: null
};
}
function clearHold({
interaction,
pointerIndex
}) {
if (interaction.pointers[pointerIndex].hold) {
clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
}
}
function moveAndClearHold({
interaction,
pointer,
event,
eventTarget,
duplicate
}, scope) {
const pointerIndex = interaction.getPointerIndex(pointer);
if (!duplicate && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {
if (interaction.pointerIsDown) {
clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
}
const path = utils.dom.getPath(eventTarget);
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type,
path,
targets: [],
node: null,
};
for (const node of path) {
signalArg.node = node;
signals.fire('collect-targets', signalArg);
fire({
interaction,
pointer,
event,
eventTarget: eventTarget,
type: 'move'
}, scope);
}
}
function downAndStartHold({
interaction,
pointer,
event,
eventTarget,
pointerIndex
}, scope) {
const timer = interaction.pointers[pointerIndex].hold;
const path = utils.dom.getPath(eventTarget);
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type: 'hold',
targets: [],
path,
node: null
};
for (const node of path) {
signalArg.node = node;
scope.fire('pointerEvents:collect-targets', signalArg);
}
if (!signalArg.targets.length) {
return;
}
let minDuration = Infinity;
for (const target of signalArg.targets) {
const holdDuration = target.eventable.options.holdDuration;
if (holdDuration < minDuration) {
minDuration = holdDuration;
}
if (type === 'hold') {
signalArg.targets = signalArg.targets.filter(target => target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration);
}
return signalArg.targets;
}
timer.duration = minDuration;
timer.timeout = setTimeout(() => {
fire({
interaction,
eventTarget,
pointer,
event,
type: 'hold'
}, scope);
}, minDuration);
}
function tapAfterUp({
interaction,
pointer,
event,
eventTarget
}, scope) {
if (!interaction.pointerWasMoved) {
fire({
interaction,
eventTarget,
pointer,
event,
type: 'tap'
}, scope);
}
}
function install(scope) {
const { interactions, } = scope;
scope.pointerEvents = pointerEvents;
scope.defaults.actions.pointerEvents = pointerEvents.defaults;
interactions.signals.on('new', ({ interaction }) => {
interaction.prevTap = null; // the most recent tap event on this interaction
interaction.tapTime = 0; // time of the most recent tap event
});
interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {
if (!down && pointerInfo.hold) {
return;
}
pointerInfo.hold = { duration: Infinity, timeout: null };
});
interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {
const pointerIndex = interaction.getPointerIndex(pointer);
if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {
if (interaction.pointerIsDown) {
clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
}
fire({
interaction,
pointer,
event,
eventTarget,
type: 'move',
}, scope);
}
});
interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {
const timer = interaction.pointers[pointerIndex].hold;
const path = utils.dom.getPath(eventTarget);
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type: 'hold',
targets: [],
path,
node: null,
};
for (const node of path) {
signalArg.node = node;
signals.fire('collect-targets', signalArg);
}
if (!signalArg.targets.length) {
return;
}
let minDuration = Infinity;
for (const target of signalArg.targets) {
const holdDuration = target.eventable.options.holdDuration;
if (holdDuration < minDuration) {
minDuration = holdDuration;
}
}
timer.duration = minDuration;
timer.timeout = setTimeout(() => {
fire({
interaction,
eventTarget,
pointer,
event,
type: 'hold',
}, scope);
}, minDuration);
});
for (const signalName of ['up', 'cancel']) {
interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {
if (interaction.pointers[pointerIndex].hold) {
clearTimeout(interaction.pointers[pointerIndex].hold.timeout);
}
});
}
for (let i = 0; i < simpleSignals.length; i++) {
interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope));
}
interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {
if (!interaction.pointerWasMoved) {
fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope);
}
});
scope.pointerEvents = pointerEvents;
scope.defaults.actions.pointerEvents = pointerEvents.defaults;
}
function createSignalListener(type, scope) {
return function ({ interaction, pointer, event, eventTarget }) {
fire({ interaction, eventTarget, pointer, event, type }, scope);
};
}
export default pointerEvents;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQyxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQTtBQTRDekMsTUFBTSxPQUFPLEdBQVMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDekMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQzlDLE1BQU0sWUFBWSxHQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUU5QyxNQUFNLFFBQVEsR0FBd0I7SUFDcEMsWUFBWSxFQUFFLEdBQUc7SUFDakIsVUFBVSxFQUFJLElBQUk7SUFDbEIsU0FBUyxFQUFLLElBQUk7SUFDbEIsTUFBTSxFQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQzdCLENBQUE7QUFFRCxNQUFNLGFBQWEsR0FBRztJQUNwQixFQUFFLEVBQUUscUJBQXFCO0lBQ3pCLE9BQU87SUFDUCxPQUFPO0lBQ1AsWUFBWTtJQUNaLElBQUk7SUFDSixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLFFBQVE7SUFDUixLQUFLLEVBQUU7UUFDTCxNQUFNO1FBQ04sTUFBTTtRQUNOLElBQUk7UUFDSixRQUFRO1FBQ1IsS0FBSztRQUNMLFdBQVc7UUFDWCxNQUFNO0tBQ1A7Q0FDRixDQUFBO0FBRUQsU0FBUyxJQUFJLENBQW9CLEdBUWhDLEVBQUUsS0FBcUI7SUFDdEIsTUFBTSxFQUNKLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFDeEMsSUFBSSxHQUFJLEdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUNyQyxPQUFPLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQ25DLEdBQUcsR0FBRyxDQUFB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LE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDakUsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELGVBQWUsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGVyQWN0aW9uRGVmYXVsdHMgfSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0V2ZW50YWJsZSdcbmltcG9ydCBJbnRlcmFjdGlvbiBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJ1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgUG9pbnRlckV2ZW50IGZyb20gJy4vUG9pbnRlckV2ZW50J1xuXG5leHBvcnQgdHlwZSBFdmVudFRhcmdldExpc3QgPSBBcnJheTx7XG4gIG5vZGU6IE5vZGVcbiAgZXZlbnRhYmxlOiBFdmVudGFibGVcbiAgcHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn0+XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRlckV2ZW50T3B0aW9ucyBleHRlbmRzIFBlckFjdGlvbkRlZmF1bHRzIHtcbiAgZW5hYmxlZD86IHVuZGVmaW5lZCAvLyBub3QgdXNlZFxuICBob2xkRHVyYXRpb24/OiBudW1iZXJcbiAgaWdub3JlRnJvbT86IGFueVxuICBhbGxvd0Zyb20/OiBhbnlcbiAgb3JpZ2luPzogSW50ZXJhY3QuUG9pbnQgfCBzdHJpbmcgfCBJbnRlcmFjdC5FbGVtZW50XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJyB7XG4gIGludGVyZmFjZSBTY29wZSB7XG4gICAgcG9pbnRlckV2ZW50czogdHlwZW9mIHBvaW50ZXJFdmVudHNcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9JbnRlcmFjdGlvbicge1xuICBpbnRlcmZhY2UgSW50ZXJhY3Rpb24ge1xuICAgIHByZXZUYXA/OiBQb2ludGVyRXZlbnQ8c3RyaW5nPlxuICAgIHRhcFRpbWU/OiBudW1iZXJcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9Qb2ludGVySW5mbycge1xuICBpbnRlcmZhY2UgUG9pbnRlckluZm8ge1xuICAgIGhvbGQ/OiB7XG4gICAgICBkdXJhdGlvbjogbnVtYmVyXG4gICAgICB0aW1lb3V0OiBhbnlcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvZGVmYXVsdE9wdGlvbnMnIHtcbiAgaW50ZXJmYWNlIEFjdGlvbkRlZmF1bHRzIHtcbiAgICBwb2ludGVyRXZlbnRzOiBJbnRlcmFjdC5PcHRpb25zXG4gIH1cbn1cblxuY29uc3Qgc2lnbmFscyAgICAgICA9IG5ldyB1dGlscy5TaWduYWxzKClcbmNvbnN0IHNpbXBsZVNpZ25hbHMgPSBbJ2Rvd24nLCAndXAnLCAnY2FuY2VsJ11cbmNvbnN0IHNpbXBsZUV2ZW50cyAgPSBbJ2Rvd24nLCAndXAnLCAnY2FuY2VsJ11cblxuY29uc3QgZGVmYXVsdHM6IFBvaW50ZXJFdmVudE9wdGlvbnMgPSB7XG4gIGhvbGREdXJhdGlvbjogNjAwLFxuICBpZ25vcmVGcm9tICA6IG51bGwsXG4gIGFsbG93RnJvbSAgIDogbnVsbCxcbiAgb3JpZ2luICAgICAgOiB7IHg6IDAsIHk6IDAgfSxcbn1cblxuY29uc3QgcG9pbnRlckV2ZW50cyA9IHtcbiAgaWQ6ICdwb2ludGVyLWV2ZW50cy9iYXNlJyxcbiAgaW5zdGFsbCxcbiAgc2lnbmFscyxcbiAgUG9pbnRlckV2ZW50LFxuICBmaXJlLFxuICBjb2xsZWN0RXZlbnRUYXJnZXRzLFxuICBjcmVhdGVTaWduYWxMaXN0ZW5lcixcbiAgZGVmYXVsdHMsXG4gIHR5cGVzOiBbXG4gICAgJ2Rvd24nLFxuICAgICdtb3ZlJyxcbiAgICAndXAnLFxuICAgICdjYW5jZWwnLFxuICAgICd0YXAnLFxuICAgICdkb3VibGV0YXAnLFxuICAgICdob2xkJyxcbiAgXSxcbn1cblxuZnVuY3Rpb24gZmlyZTxUIGV4dGVuZHMgc3RyaW5nPiAoYXJnOiB7XG4gIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvblxuICBwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZVxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZVxuICBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXRcbiAgdGFyZ2V0cz86IEV2ZW50VGFyZ2V0TGlzdFxuICBwb2ludGVyRXZlbnQ/OiBQb2ludGVyRXZlbnQ8VD5cbiAgdHlwZTogVFxufSwgc2NvcGU6IEludGVyYWN0LlNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlcmFjdGlvbiwgcG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LFxuICAgIHR5cGUgPSAoYXJnIGFzIGFueSkucG9pbnRlckV2ZW50LnR5cGUsXG4gICAgdGFyZ2V0cyA9IGNvbGxlY3RFdmVudFRhcmdldHMoYXJnKSxcbiAgfSA9IGFyZ1xuXG4gIGNvbnN0IHtcbiAgICBwb2ludGVyRXZlbnQgPSBuZXcgUG9pbnRlckV2ZW50KHR5cGUsIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgaW50ZXJhY3Rpb24sIHNjb3BlLm5vdygpKSxcbiAgfSA9IGFyZ1xuXG4gIGNvbnN0IHNpZ25hbEFyZyA9IHtcbiAgICBpbnRlcmFjdGlvbixcbiAgICBwb2ludGVyLFxuICAgIGV2ZW50LFxuICAgIGV2ZW50VGFyZ2V0LFxuICAgIHRhcmdldHMsXG4gICAgdHlwZSxcbiAgICBwb2ludGVyRXZlbnQsXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRzW2ldXG5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGFyZ2V0LnByb3BzIHx8IHt9KSB7XG4gICAgICAocG9pbnRlckV2ZW50IGFzIGFueSlbcHJvcF0gPSB0YXJnZXQucHJvcHNbcHJvcF1cbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW4gPSB1dGlscy5nZXRPcmlnaW5YWSh0YXJnZXQuZXZlbnRhYmxlLCB0YXJnZXQubm9kZSlcblxuICAgIHBvaW50ZXJFdmVudC5fc3VidHJhY3RPcmlnaW4ob3JpZ2luKVxuICAgIHBvaW50ZXJFdmVudC5ldmVudGFibGUgPSB0YXJnZXQuZXZlbnRhYmxlXG4gICAgcG9pbnRlckV2ZW50LmN1cnJlbnRUYXJnZXQgPSB0YXJnZXQubm9kZVxuXG4gICAgdGFyZ2V0LmV2ZW50YWJsZS5maXJlKHBvaW50ZXJFdmVudClcblxuICAgIHBvaW50ZXJFdmVudC5fYWRkT3JpZ2luKG9yaWdpbilcblxuICAgIGlmIChwb2ludGVyRXZlbnQuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIHx8XG4gICAgICAgIChwb2ludGVyRXZlbnQucHJvcGFnYXRpb25TdG9wcGVkICYmXG4gICAgICAgICAgICAoaSArIDEpIDwgdGFyZ2V0cy5sZW5ndGggJiYgdGFyZ2V0c1tpICsgMV0ubm9kZSAhPT0gcG9pbnRlckV2ZW50LmN1cnJlbnRUYXJnZXQpKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHNpZ25hbHMuZmlyZSgnZmlyZWQnLCBzaWduYWxBcmcpXG5cbiAgaWYgKHR5cGUgPT09ICd0YXAnKSB7XG4gICAgLy8gaWYgcG9pbnRlckV2ZW50IHNob3VsZCBtYWtlIGEgZG91YmxlIHRhcCwgY3JlYXRlIGFuZCBmaXJlIGEgZG91YmxldGFwXG4gICAgLy8gUG9pbnRlckV2ZW50IGFuZCB1c2UgdGhhdCBhcyB0aGUgcHJldlRhcFxuICAgIGNvbnN0IHByZXZUYXAgPSBwb2ludGVyRXZlbnQuZG91YmxlXG4gICAgICA/IGZpcmUoe1xuICAgICAgICBpbnRlcmFjdGlvbixcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgICB0eXBlOiAnZG91YmxldGFwJyxcbiAgICAgIH0sIHNjb3BlKVxuICAgICAgOiBwb2ludGVyRXZlbnRcblxuICAgIGludGVyYWN0aW9uLnByZXZUYXAgPSBwcmV2VGFwXG4gICAgaW50ZXJhY3Rpb24udGFwVGltZSA9IHByZXZUYXAudGltZVN0YW1wXG4gIH1cblxuICByZXR1cm4gcG9pbnRlckV2ZW50XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RFdmVudFRhcmdldHM8VCBleHRlbmRzIHN0cmluZz4gKHsgaW50ZXJhY3Rpb24sIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgdHlwZSB9OiB7XG4gIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvblxuICBwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZVxuICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZVxuICBldmVudFRhcmdldDogSW50ZXJhY3QuRXZlbnRUYXJnZXRcbiAgdHlwZTogVFxufSkge1xuICBjb25zdCBwb2ludGVySW5kZXggPSBpbnRlcmFjdGlvbi5nZXRQb2ludGVySW5kZXgocG9pbnRlcilcbiAgY29uc3QgcG9pbnRlckluZm8gPSBpbnRlcmFjdGlvbi5wb2ludGVyc1twb2ludGVySW5kZXhdXG5cbiAgLy8gZG8gbm90IGZpcmUgYSB0YXAgZXZlbnQgaWYgdGhlIHBvaW50ZXIgd2FzIG1vdmVkIGJlZm9yZSBiZWluZyBsaWZ0ZWRcbiAgaWYgKHR5cGUgPT09ICd0YXAnICYmIChpbnRlcmFjdGlvbi5wb2ludGVyV2FzTW92ZWQgfHxcbiAgICAgIC8vIG9yIGlmIHRoZSBwb2ludGVydXAgdGFyZ2V0IGlzIGRpZmZlcmVudCB0byB0aGUgcG9pbnRlcmRvd24gdGFyZ2V0XG4gICAgICAhKHBvaW50ZXJJbmZvICYmIHBvaW50ZXJJbmZvLmRvd25UYXJnZXQgPT09IGV2ZW50VGFyZ2V0KSkpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGNvbnN0IHBhdGggPSB1dGlscy5kb20uZ2V0UGF0aChldmVudFRhcmdldClcbiAgY29uc3Qgc2lnbmFsQXJnID0ge1xuICAgIGludGVyYWN0aW9uLFxuICAgIHBvaW50ZXIsXG4gICAgZXZlbnQsXG4gICAgZXZlbnRUYXJnZXQsXG4gICAgdHlwZSxcbiAgICBwYXRoLFxuICAgIHRhcmdldHM6IFtdIGFzIEV2ZW50VGFyZ2V0TGlzdCxcbiAgICBub2RlOiBudWxsLFxuICB9XG5cbiAgZm9yIChjb25zdCBub2RlIG9mIHBhdGgpIHtcbiAgICBzaWduYWxBcmcubm9kZSA9IG5vZGVcblxuICAgIHNpZ25hbHMuZmlyZSgnY29sbGVjdC10YXJnZXRzJywgc2lnbmFsQXJnKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdob2xkJykge1xuICAgIHNpZ25hbEFyZy50YXJnZXRzID0gc2lnbmFsQXJnLnRhcmdldHMuZmlsdGVyKHRhcmdldCA9PlxuICAgICAgdGFyZ2V0LmV2ZW50YWJsZS5vcHRpb25zLmhvbGREdXJhdGlvbiA9PT0gaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XS5ob2xkLmR1cmF0aW9uKVxuICB9XG5cbiAgcmV0dXJuIHNpZ25hbEFyZy50YXJnZXRzXG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBTY29wZSkge1xuICBjb25zdCB7XG4gICAgaW50ZXJhY3Rpb25zLFxuICB9ID0gc2NvcGVcblxuICBzY29wZS5wb2ludGVyRXZlbnRzID0gcG9pbnRlckV2ZW50c1xuICBzY29wZS5kZWZhdWx0cy5hY3Rpb25zLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzLmRlZmF1bHRzXG5cbiAgaW50ZXJhY3Rpb25zLnNpZ25hbHMub24oJ25ldycsICh7IGludGVyYWN0aW9uIH0pID0+IHtcbiAgICBpbnRlcmFjdGlvbi5wcmV2VGFwICAgID0gbnVsbCAgLy8gdGhlIG1vc3QgcmVjZW50IHRhcCBldmVudCBvbiB0aGlzIGludGVyYWN0aW9uXG4gICAgaW50ZXJhY3Rpb24udGFwVGltZSAgICA9IDAgICAgIC8vIHRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IHRhcCBldmVudFxuICB9KVxuXG4gIGludGVyYWN0aW9ucy5zaWduYWxzLm9uKCd1cGRhdGUtcG9pbnRlcicsICh7IGRvd24sIHBvaW50ZXJJbmZvIH0pID0+IHtcbiAgICBpZiAoIWRvd24gJiYgcG9pbnRlckluZm8uaG9sZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcG9pbnRlckluZm8uaG9sZCA9IHsgZHVyYXRpb246IEluZmluaXR5LCB0aW1lb3V0OiBudWxsIH1cbiAgfSlcblxuICBpbnRlcmFjdGlvbnMuc2lnbmFscy5vbignbW92ZScsICh7IGludGVyYWN0aW9uLCBwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGR1cGxpY2F0ZU1vdmUgfSkgPT4ge1xuICAgIGNvbnN0IHBvaW50ZXJJbmRleCA9IGludGVyYWN0aW9uLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gICAgaWYgKCFkdXBsaWNhdGVNb3ZlICYmICghaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93biB8fCBpbnRlcmFjdGlvbi5wb2ludGVyV2FzTW92ZWQpKSB7XG4gICAgICBpZiAoaW50ZXJhY3Rpb24ucG9pbnRlcklzRG93bikge1xuICAgICAgICBjbGVhclRpbWVvdXQoaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XS5ob2xkLnRpbWVvdXQpXG4gICAgICB9XG5cbiAgICAgIGZpcmUoe1xuICAgICAgICBpbnRlcmFjdGlvbixcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgICB0eXBlOiAnbW92ZScsXG4gICAgICB9LCBzY29wZSlcbiAgICB9XG4gIH0pXG5cbiAgaW50ZXJhY3Rpb25zLnNpZ25hbHMub24oJ2Rvd24nLCAoeyBpbnRlcmFjdGlvbiwgcG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LCBwb2ludGVySW5kZXggfSkgPT4ge1xuICAgIGNvbnN0IHRpbWVyID0gaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XS5ob2xkXG4gICAgY29uc3QgcGF0aCA9IHV0aWxzLmRvbS5nZXRQYXRoKGV2ZW50VGFyZ2V0KVxuICAgIGNvbnN0IHNpZ25hbEFyZyA9IHtcbiAgICAgIGludGVyYWN0aW9uLFxuICAgICAgcG9pbnRlcixcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICB0eXBlOiAnaG9sZCcsXG4gICAgICB0YXJnZXRzOiBbXSBhcyBFdmVudFRhcmdldExpc3QsXG4gICAgICBwYXRoLFxuICAgICAgbm9kZTogbnVsbCxcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcGF0aCkge1xuICAgICAgc2lnbmFsQXJnLm5vZGUgPSBub2RlXG5cbiAgICAgIHNpZ25hbHMuZmlyZSgnY29sbGVjdC10YXJnZXRzJywgc2lnbmFsQXJnKVxuICAgIH1cblxuICAgIGlmICghc2lnbmFsQXJnLnRhcmdldHMubGVuZ3RoKSB7IHJldHVybiB9XG5cbiAgICBsZXQgbWluRHVyYXRpb24gPSBJbmZpbml0eVxuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2Ygc2lnbmFsQXJnLnRhcmdldHMpIHtcbiAgICAgIGNvbnN0IGhvbGREdXJhdGlvbiA9IHRhcmdldC5ldmVudGFibGUub3B0aW9ucy5ob2xkRHVyYXRpb25cblxuICAgICAgaWYgKGhvbGREdXJhdGlvbiA8IG1pbkR1cmF0aW9uKSB7XG4gICAgICAgIG1pbkR1cmF0aW9uID0gaG9sZER1cmF0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGltZXIuZHVyYXRpb24gPSBtaW5EdXJhdGlvblxuICAgIHRpbWVyLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGZpcmUoe1xuICAgICAgICBpbnRlcmFjdGlvbixcbiAgICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICB0eXBlOiAnaG9sZCcsXG4gICAgICB9LCBzY29wZSlcbiAgICB9LCBtaW5EdXJhdGlvbilcbiAgfSlcblxuICBmb3IgKGNvbnN0IHNpZ25hbE5hbWUgb2YgWyd1cCcsICdjYW5jZWwnXSkge1xuICAgIGludGVyYWN0aW9ucy5zaWduYWxzLm9uKHNpZ25hbE5hbWUsICh7IGludGVyYWN0aW9uLCBwb2ludGVySW5kZXggfSkgPT4ge1xuICAgICAgaWYgKGludGVyYWN0aW9uLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uaG9sZCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoaW50ZXJhY3Rpb24ucG9pbnRlcnNbcG9pbnRlckluZGV4XS5ob2xkLnRpbWVvdXQpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2ltcGxlU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgIGludGVyYWN0aW9ucy5zaWduYWxzLm9uKHNpbXBsZVNpZ25hbHNbaV0sIGNyZWF0ZVNpZ25hbExpc3RlbmVyKHNpbXBsZUV2ZW50c1tpXSwgc2NvcGUpKVxuICB9XG5cbiAgaW50ZXJhY3Rpb25zLnNpZ25hbHMub24oJ3VwJywgKHsgaW50ZXJhY3Rpb24sIHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCB9KSA9PiB7XG4gICAgaWYgKCFpbnRlcmFjdGlvbi5wb2ludGVyV2FzTW92ZWQpIHtcbiAgICAgIGZpcmUoeyBpbnRlcmFjdGlvbiwgZXZlbnRUYXJnZXQsIHBvaW50ZXIsIGV2ZW50LCB0eXBlOiAndGFwJyB9LCBzY29wZSlcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hbExpc3RlbmVyICh0eXBlOiBzdHJpbmcsIHNjb3BlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoeyBpbnRlcmFjdGlvbiwgcG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0IH06IGFueSkge1xuICAgIGZpcmUoeyBpbnRlcmFjdGlvbiwgZXZlbnRUYXJnZXQsIHBvaW50ZXIsIGV2ZW50LCB0eXBlIH0sIHNjb3BlKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBvaW50ZXJFdmVudHNcbiJdfQ==
//# sourceMappingURL=base.js.map

@@ -1,53 +0,74 @@

import basePlugin from './base';
import basePlugin from "./base.js";
function install(scope) {
const { pointerEvents, interactions, } = scope;
scope.usePlugin(basePlugin);
pointerEvents.signals.on('new', onNew);
pointerEvents.signals.on('fired', arg => onFired(arg, scope));
for (const signal of ['move', 'up', 'cancel', 'endall']) {
interactions.signals.on(signal, endHoldRepeat);
}
// don't repeat by default
pointerEvents.defaults.holdRepeatInterval = 0;
pointerEvents.types.push('holdrepeat');
scope.usePlugin(basePlugin);
const {
pointerEvents
} = scope; // don't repeat by default
pointerEvents.defaults.holdRepeatInterval = 0;
pointerEvents.types.push('holdrepeat');
}
function onNew({ pointerEvent }) {
if (pointerEvent.type !== 'hold') {
return;
}
pointerEvent.count = (pointerEvent.count || 0) + 1;
function onNew({
pointerEvent
}) {
if (pointerEvent.type !== 'hold') {
return;
}
pointerEvent.count = (pointerEvent.count || 0) + 1;
}
function onFired({ interaction, pointerEvent, eventTarget, targets }, scope) {
if (pointerEvent.type !== 'hold' || !targets.length) {
return;
}
// get the repeat interval from the first eventable
const interval = targets[0].eventable.options.holdRepeatInterval;
// don't repeat if the interval is 0 or less
if (interval <= 0) {
return;
}
// set a timeout to fire the holdrepeat event
interaction.holdIntervalHandle = setTimeout(() => {
scope.pointerEvents.fire({
interaction,
eventTarget,
type: 'hold',
pointer: pointerEvent,
event: pointerEvent,
}, scope);
}, interval);
function onFired({
interaction,
pointerEvent,
eventTarget,
targets
}, scope) {
if (pointerEvent.type !== 'hold' || !targets.length) {
return;
} // get the repeat interval from the first eventable
const interval = targets[0].eventable.options.holdRepeatInterval; // don't repeat if the interval is 0 or less
if (interval <= 0) {
return;
} // set a timeout to fire the holdrepeat event
interaction.holdIntervalHandle = setTimeout(() => {
scope.pointerEvents.fire({
interaction,
eventTarget,
type: 'hold',
pointer: pointerEvent,
event: pointerEvent
}, scope);
}, interval);
}
function endHoldRepeat({ interaction }) {
// set the interaction's holdStopTime property
// to stop further holdRepeat events
if (interaction.holdIntervalHandle) {
clearInterval(interaction.holdIntervalHandle);
interaction.holdIntervalHandle = null;
}
function endHoldRepeat({
interaction
}) {
// set the interaction's holdStopTime property
// to stop further holdRepeat events
if (interaction.holdIntervalHandle) {
clearInterval(interaction.holdIntervalHandle);
interaction.holdIntervalHandle = null;
}
}
export default {
id: 'pointer-events/holdRepeat',
install,
id: 'pointer-events/holdRepeat',
install,
listeners: ['move', 'up', 'cancel', 'endall'].reduce((acc, enderTypes) => {
acc[`pointerEvents:${enderTypes}`] = endHoldRepeat;
return acc;
}, {
'pointerEvents:new': onNew,
'pointerEvents:fired': onFired
})
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sZFJlcGVhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvbGRSZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sUUFBUSxDQUFBO0FBYy9CLFNBQVMsT0FBTyxDQUFFLEtBQXFCO0lBQ3JDLE1BQU0sRUFDSixhQUFhLEVBQ2IsWUFBWSxHQUNiLEdBQUcsS0FBSyxDQUFBO0lBRVQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUUzQixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDdEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRXBFLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUN2RCxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7S0FDL0M7SUFFRCwwQkFBMEI7SUFDMUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUE7SUFDN0MsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFFLEVBQUUsWUFBWSxFQUFFO0lBQzlCLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFBRSxPQUFNO0tBQUU7SUFFNUMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FDZCxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBc0IsRUFDdkUsS0FBcUI7SUFFckIsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFBRSxPQUFNO0tBQUU7SUFFL0QsbURBQW1EO0lBQ25ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFBO0lBRWhFLDRDQUE0QztJQUM1QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7UUFBRSxPQUFNO0tBQUU7SUFFN0IsNkNBQTZDO0lBQzdDLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQy9DLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLFdBQVc7WUFDWCxXQUFXO1lBQ1gsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsWUFBWTtZQUNyQixLQUFLLEVBQUUsWUFBWTtTQUNwQixFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ1gsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLEVBQUUsV0FBVyxFQUFFO0lBQ3JDLDhDQUE4QztJQUM5QyxvQ0FBb0M7SUFDcEMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7UUFDbEMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQzdDLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7S0FDdEM7QUFDSCxDQUFDO0FBRUQsZUFBZTtJQUNiLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsT0FBTztDQUNXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVBsdWdpbiBmcm9tICcuL2Jhc2UnXG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0aW9uJyB7XG4gIGludGVyZmFjZSBJbnRlcmFjdGlvbiB7XG4gICAgaG9sZEludGVydmFsSGFuZGxlPzogYW55XG4gIH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL3BvaW50ZXItZXZlbnRzL2Jhc2UnIHtcbiAgaW50ZXJmYWNlIFBvaW50ZXJFdmVudE9wdGlvbnMge1xuICAgIGhvbGRSZXBlYXRJbnRlcnZhbD86IG51bWJlclxuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBJbnRlcmFjdC5TY29wZSkge1xuICBjb25zdCB7XG4gICAgcG9pbnRlckV2ZW50cyxcbiAgICBpbnRlcmFjdGlvbnMsXG4gIH0gPSBzY29wZVxuXG4gIHNjb3BlLnVzZVBsdWdpbihiYXNlUGx1Z2luKVxuXG4gIHBvaW50ZXJFdmVudHMuc2lnbmFscy5vbignbmV3Jywgb25OZXcpXG4gIHBvaW50ZXJFdmVudHMuc2lnbmFscy5vbignZmlyZWQnLCBhcmcgPT4gb25GaXJlZChhcmcgYXMgYW55LCBzY29wZSkpXG5cbiAgZm9yIChjb25zdCBzaWduYWwgb2YgWydtb3ZlJywgJ3VwJywgJ2NhbmNlbCcsICdlbmRhbGwnXSkge1xuICAgIGludGVyYWN0aW9ucy5zaWduYWxzLm9uKHNpZ25hbCwgZW5kSG9sZFJlcGVhdClcbiAgfVxuXG4gIC8vIGRvbid0IHJlcGVhdCBieSBkZWZhdWx0XG4gIHBvaW50ZXJFdmVudHMuZGVmYXVsdHMuaG9sZFJlcGVhdEludGVydmFsID0gMFxuICBwb2ludGVyRXZlbnRzLnR5cGVzLnB1c2goJ2hvbGRyZXBlYXQnKVxufVxuXG5mdW5jdGlvbiBvbk5ldyAoeyBwb2ludGVyRXZlbnQgfSkge1xuICBpZiAocG9pbnRlckV2ZW50LnR5cGUgIT09ICdob2xkJykgeyByZXR1cm4gfVxuXG4gIHBvaW50ZXJFdmVudC5jb3VudCA9IChwb2ludGVyRXZlbnQuY291bnQgfHwgMCkgKyAxXG59XG5cbmZ1bmN0aW9uIG9uRmlyZWQgKFxuICB7IGludGVyYWN0aW9uLCBwb2ludGVyRXZlbnQsIGV2ZW50VGFyZ2V0LCB0YXJnZXRzIH06IEludGVyYWN0LlNpZ25hbEFyZyxcbiAgc2NvcGU6IEludGVyYWN0LlNjb3BlXG4pIHtcbiAgaWYgKHBvaW50ZXJFdmVudC50eXBlICE9PSAnaG9sZCcgfHwgIXRhcmdldHMubGVuZ3RoKSB7IHJldHVybiB9XG5cbiAgLy8gZ2V0IHRoZSByZXBlYXQgaW50ZXJ2YWwgZnJvbSB0aGUgZmlyc3QgZXZlbnRhYmxlXG4gIGNvbnN0IGludGVydmFsID0gdGFyZ2V0c1swXS5ldmVudGFibGUub3B0aW9ucy5ob2xkUmVwZWF0SW50ZXJ2YWxcblxuICAvLyBkb24ndCByZXBlYXQgaWYgdGhlIGludGVydmFsIGlzIDAgb3IgbGVzc1xuICBpZiAoaW50ZXJ2YWwgPD0gMCkgeyByZXR1cm4gfVxuXG4gIC8vIHNldCBhIHRpbWVvdXQgdG8gZmlyZSB0aGUgaG9sZHJlcGVhdCBldmVudFxuICBpbnRlcmFjdGlvbi5ob2xkSW50ZXJ2YWxIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBzY29wZS5wb2ludGVyRXZlbnRzLmZpcmUoe1xuICAgICAgaW50ZXJhY3Rpb24sXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIHR5cGU6ICdob2xkJyxcbiAgICAgIHBvaW50ZXI6IHBvaW50ZXJFdmVudCxcbiAgICAgIGV2ZW50OiBwb2ludGVyRXZlbnQsXG4gICAgfSwgc2NvcGUpXG4gIH0sIGludGVydmFsKVxufVxuXG5mdW5jdGlvbiBlbmRIb2xkUmVwZWF0ICh7IGludGVyYWN0aW9uIH0pIHtcbiAgLy8gc2V0IHRoZSBpbnRlcmFjdGlvbidzIGhvbGRTdG9wVGltZSBwcm9wZXJ0eVxuICAvLyB0byBzdG9wIGZ1cnRoZXIgaG9sZFJlcGVhdCBldmVudHNcbiAgaWYgKGludGVyYWN0aW9uLmhvbGRJbnRlcnZhbEhhbmRsZSkge1xuICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJhY3Rpb24uaG9sZEludGVydmFsSGFuZGxlKVxuICAgIGludGVyYWN0aW9uLmhvbGRJbnRlcnZhbEhhbmRsZSA9IG51bGxcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAncG9pbnRlci1ldmVudHMvaG9sZFJlcGVhdCcsXG4gIGluc3RhbGwsXG59IGFzIEludGVyYWN0LlBsdWdpblxuIl19
//# sourceMappingURL=holdRepeat.js.map

@@ -1,11 +0,13 @@

import pointerEvents from './base';
import holdRepeat from './holdRepeat';
import interactableTargets from './interactableTargets';
import pointerEvents from "./base.js";
import holdRepeat from "./holdRepeat.js";
import interactableTargets from "./interactableTargets.js";
function install(scope) {
scope.usePlugin(pointerEvents);
scope.usePlugin(holdRepeat);
scope.usePlugin(interactableTargets);
scope.usePlugin(pointerEvents);
scope.usePlugin(holdRepeat);
scope.usePlugin(interactableTargets);
}
const id = 'pointer-events';
export { id, pointerEvents, holdRepeat, interactableTargets, install };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGFBQWEsTUFBTSxRQUFRLENBQUE7QUFDbEMsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sbUJBQW1CLE1BQU0sdUJBQXVCLENBQUE7QUFFdkQsU0FBUyxPQUFPLENBQUUsS0FBSztJQUNyQixLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQzlCLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQTtBQUUzQixPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcG9pbnRlckV2ZW50cyBmcm9tICcuL2Jhc2UnXG5pbXBvcnQgaG9sZFJlcGVhdCBmcm9tICcuL2hvbGRSZXBlYXQnXG5pbXBvcnQgaW50ZXJhY3RhYmxlVGFyZ2V0cyBmcm9tICcuL2ludGVyYWN0YWJsZVRhcmdldHMnXG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlKSB7XG4gIHNjb3BlLnVzZVBsdWdpbihwb2ludGVyRXZlbnRzKVxuICBzY29wZS51c2VQbHVnaW4oaG9sZFJlcGVhdClcbiAgc2NvcGUudXNlUGx1Z2luKGludGVyYWN0YWJsZVRhcmdldHMpXG59XG5cbmNvbnN0IGlkID0gJ3BvaW50ZXItZXZlbnRzJ1xuXG5leHBvcnQgeyBpZCwgcG9pbnRlckV2ZW50cywgaG9sZFJlcGVhdCwgaW50ZXJhY3RhYmxlVGFyZ2V0cywgaW5zdGFsbCB9XG4iXX0=
//# sourceMappingURL=index.js.map

@@ -1,3 +0,1 @@

import { Scope } from '@interactjs/core/scope';
declare type Interactable = import('@interactjs/core/Interactable').default;
declare module '@interactjs/core/Interactable' {

@@ -9,8 +7,4 @@ interface Interactable {

}
declare function install(scope: Scope): void;
declare function pointerEventsMethod(this: Interactable, options: any): import("@interactjs/core/Interactable").Interactable;
declare const _default: {
id: string;
install: typeof install;
};
export default _default;
declare function pointerEventsMethod(this: Interact.Interactable, options: any): import("@interactjs/core/Interactable").Interactable;
declare const plugin: Interact.Plugin;
export default plugin;

@@ -1,48 +0,72 @@

import { merge } from '@interactjs/utils/arr';
import extend from '@interactjs/utils/extend';
import { merge } from "../utils/arr.js";
import extend from "../utils/extend.js";
function install(scope) {
const { pointerEvents, actions, Interactable, interactables, } = scope;
pointerEvents.signals.on('collect-targets', ({ targets, node, type, eventTarget, }) => {
scope.interactables.forEachMatch(node, (interactable) => {
const eventable = interactable.events;
const options = eventable.options;
if (eventable.types[type] &&
eventable.types[type].length &&
interactable.testIgnoreAllow(options, node, eventTarget)) {
targets.push({
node,
eventable,
props: { interactable },
});
}
});
});
interactables.signals.on('new', ({ interactable }) => {
interactable.events.getRect = function (element) {
return interactable.getRect(element);
};
});
interactables.signals.on('set', ({ interactable, options }) => {
extend(interactable.events.options, pointerEvents.defaults);
extend(interactable.events.options, options.pointerEvents || {});
});
merge(actions.eventTypes, pointerEvents.types);
Interactable.prototype.pointerEvents = pointerEventsMethod;
const __backCompatOption = Interactable.prototype._backCompatOption;
Interactable.prototype._backCompatOption = function (optionName, newValue) {
const ret = __backCompatOption.call(this, optionName, newValue);
if (ret === this) {
this.events.options[optionName] = newValue;
}
return ret;
};
const {
pointerEvents,
actions,
Interactable
} = scope;
merge(actions.eventTypes, pointerEvents.types);
Interactable.prototype.pointerEvents = pointerEventsMethod;
const __backCompatOption = Interactable.prototype._backCompatOption;
Interactable.prototype._backCompatOption = function (optionName, newValue) {
const ret = __backCompatOption.call(this, optionName, newValue);
if (ret === this) {
this.events.options[optionName] = newValue;
}
return ret;
};
}
function pointerEventsMethod(options) {
extend(this.events.options, options);
return this;
extend(this.events.options, options);
return this;
}
export default {
id: 'pointer-events/interactableTargets',
install,
const plugin = {
id: 'pointer-events/interactableTargets',
install,
listeners: {
'pointerEvents:collect-targets': ({
targets,
node,
type,
eventTarget
}, scope) => {
scope.interactables.forEachMatch(node, interactable => {
const eventable = interactable.events;
const options = eventable.options;
if (eventable.types[type] && eventable.types[type].length && interactable.testIgnoreAllow(options, node, eventTarget)) {
targets.push({
node,
eventable,
props: {
interactable
}
});
}
});
},
'interactable:new': ({
interactable
}) => {
interactable.events.getRect = function (element) {
return interactable.getRect(element);
};
},
'interactable:set': ({
interactable,
options
}, scope) => {
extend(interactable.events.options, scope.pointerEvents.defaults);
extend(interactable.events.options, options.pointerEvents || {});
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RhYmxlVGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVyYWN0YWJsZVRhcmdldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBWTdDLFNBQVMsT0FBTyxDQUFFLEtBQVk7SUFDNUIsTUFBTSxFQUNKLGFBQWEsRUFDYixPQUFPLEVBQ1AsWUFBWSxFQUNaLGFBQWEsR0FDZCxHQUFHLEtBQUssQ0FBQTtJQUVULGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFDM0MsT0FBTyxFQUNQLElBQUksRUFDSixJQUFJLEVBQ0osV0FBVyxHQU1aLEVBQUUsRUFBRTtRQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLFlBQTBCLEVBQUUsRUFBRTtZQUNwRSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFBO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7WUFFakMsSUFDRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO2dCQUM1QixZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsSUFBSTtvQkFDSixTQUFTO29CQUNULEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRTtpQkFDeEIsQ0FBQyxDQUFBO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1FBQ25ELFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsT0FBeUI7WUFDL0QsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3RDLENBQUMsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUM1RCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzNELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUMsQ0FBQyxDQUFBO0lBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTlDLFlBQVksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFBO0lBRTFELE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQTtJQUVuRSxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsVUFBVSxFQUFFLFFBQVE7UUFDdkUsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFL0QsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQTtTQUMzQztRQUVELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQXNCLE9BQVk7SUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRXBDLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELGVBQWU7SUFDYixFQUFFLEVBQUUsb0NBQW9DO0lBQ3hDLE9BQU87Q0FDUixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUgfSBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL3Njb3BlJ1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9hcnInXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZCdcblxudHlwZSBJbnRlcmFjdGFibGUgPSBpbXBvcnQgKCdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScpLmRlZmF1bHRcbnR5cGUgRXZlbnRUYXJnZXRMaXN0ID0gaW1wb3J0ICgnLi9iYXNlJykuRXZlbnRUYXJnZXRMaXN0XG5cbmRlY2xhcmUgbW9kdWxlICdAaW50ZXJhY3Rqcy9jb3JlL0ludGVyYWN0YWJsZScge1xuICBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlIHtcbiAgICBwb2ludGVyRXZlbnRzOiB0eXBlb2YgcG9pbnRlckV2ZW50c01ldGhvZFxuICAgIF9fYmFja0NvbXBhdE9wdGlvbjogKG9wdGlvbk5hbWU6IHN0cmluZywgbmV3VmFsdWU6IGFueSkgPT4gYW55XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbCAoc2NvcGU6IFNjb3BlKSB7XG4gIGNvbnN0IHtcbiAgICBwb2ludGVyRXZlbnRzLFxuICAgIGFjdGlvbnMsXG4gICAgSW50ZXJhY3RhYmxlLFxuICAgIGludGVyYWN0YWJsZXMsXG4gIH0gPSBzY29wZVxuXG4gIHBvaW50ZXJFdmVudHMuc2lnbmFscy5vbignY29sbGVjdC10YXJnZXRzJywgKHtcbiAgICB0YXJnZXRzLFxuICAgIG5vZGUsXG4gICAgdHlwZSxcbiAgICBldmVudFRhcmdldCxcbiAgfToge1xuICAgIHRhcmdldHM6IEV2ZW50VGFyZ2V0TGlzdFxuICAgIG5vZGU6IE5vZGVcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBldmVudFRhcmdldDogSW50ZXJhY3QuRWxlbWVudFxuICB9KSA9PiB7XG4gICAgc2NvcGUuaW50ZXJhY3RhYmxlcy5mb3JFYWNoTWF0Y2gobm9kZSwgKGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlKSA9PiB7XG4gICAgICBjb25zdCBldmVudGFibGUgPSBpbnRlcmFjdGFibGUuZXZlbnRzXG4gICAgICBjb25zdCBvcHRpb25zID0gZXZlbnRhYmxlLm9wdGlvbnNcblxuICAgICAgaWYgKFxuICAgICAgICBldmVudGFibGUudHlwZXNbdHlwZV0gJiZcbiAgICAgICAgZXZlbnRhYmxlLnR5cGVzW3R5cGVdLmxlbmd0aCAmJlxuICAgICAgICBpbnRlcmFjdGFibGUudGVzdElnbm9yZUFsbG93KG9wdGlvbnMsIG5vZGUsIGV2ZW50VGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXRzLnB1c2goe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgZXZlbnRhYmxlLFxuICAgICAgICAgIHByb3BzOiB7IGludGVyYWN0YWJsZSB9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW50ZXJhY3RhYmxlcy5zaWduYWxzLm9uKCduZXcnLCAoeyBpbnRlcmFjdGFibGUgfSkgPT4ge1xuICAgIGludGVyYWN0YWJsZS5ldmVudHMuZ2V0UmVjdCA9IGZ1bmN0aW9uIChlbGVtZW50OiBJbnRlcmFjdC5FbGVtZW50KSB7XG4gICAgICByZXR1cm4gaW50ZXJhY3RhYmxlLmdldFJlY3QoZWxlbWVudClcbiAgICB9XG4gIH0pXG5cbiAgaW50ZXJhY3RhYmxlcy5zaWduYWxzLm9uKCdzZXQnLCAoeyBpbnRlcmFjdGFibGUsIG9wdGlvbnMgfSkgPT4ge1xuICAgIGV4dGVuZChpbnRlcmFjdGFibGUuZXZlbnRzLm9wdGlvbnMsIHBvaW50ZXJFdmVudHMuZGVmYXVsdHMpXG4gICAgZXh0ZW5kKGludGVyYWN0YWJsZS5ldmVudHMub3B0aW9ucywgb3B0aW9ucy5wb2ludGVyRXZlbnRzIHx8IHt9KVxuICB9KVxuXG4gIG1lcmdlKGFjdGlvbnMuZXZlbnRUeXBlcywgcG9pbnRlckV2ZW50cy50eXBlcylcblxuICBJbnRlcmFjdGFibGUucHJvdG90eXBlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzTWV0aG9kXG5cbiAgY29uc3QgX19iYWNrQ29tcGF0T3B0aW9uID0gSW50ZXJhY3RhYmxlLnByb3RvdHlwZS5fYmFja0NvbXBhdE9wdGlvblxuXG4gIEludGVyYWN0YWJsZS5wcm90b3R5cGUuX2JhY2tDb21wYXRPcHRpb24gPSBmdW5jdGlvbiAob3B0aW9uTmFtZSwgbmV3VmFsdWUpIHtcbiAgICBjb25zdCByZXQgPSBfX2JhY2tDb21wYXRPcHRpb24uY2FsbCh0aGlzLCBvcHRpb25OYW1lLCBuZXdWYWx1ZSlcblxuICAgIGlmIChyZXQgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuZXZlbnRzLm9wdGlvbnNbb3B0aW9uTmFtZV0gPSBuZXdWYWx1ZVxuICAgIH1cblxuICAgIHJldHVybiByZXRcbiAgfVxufVxuXG5mdW5jdGlvbiBwb2ludGVyRXZlbnRzTWV0aG9kICh0aGlzOiBJbnRlcmFjdGFibGUsIG9wdGlvbnM6IGFueSkge1xuICBleHRlbmQodGhpcy5ldmVudHMub3B0aW9ucywgb3B0aW9ucylcblxuICByZXR1cm4gdGhpc1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAncG9pbnRlci1ldmVudHMvaW50ZXJhY3RhYmxlVGFyZ2V0cycsXG4gIGluc3RhbGwsXG59XG4iXX0=
export default plugin;
//# sourceMappingURL=interactableTargets.js.map
{
"name": "@interactjs/pointer-events",
"version": "1.6.3",
"version": "1.7.0",
"license": "MIT",
"peerDependencies": {
"@interactjs/core": "1.6.3",
"@interactjs/utils": "1.6.3"
"@interactjs/core": "1.7.0",
"@interactjs/utils": "1.7.0"
},

@@ -9,0 +9,0 @@ "publishConfig": {

@@ -1,6 +0,6 @@

import BaseEvent from '@interactjs/core/BaseEvent';
import BaseEvent from '../core/BaseEvent';
/** */
export default class PointerEvent<T extends string> extends BaseEvent {
type: T;
originalEvent: Interact.PointerEventType;
originalEvent: Interact.PointerEventType | PointerEvent<any>;
pointerId: number;

@@ -16,3 +16,3 @@ pointerType: string;

/** */
constructor(type: T, pointer: Interact.PointerType | PointerEvent<any>, event: Interact.PointerEventType, eventTarget: Interact.EventTarget, interaction: Interact.Interaction, timeStamp: number);
constructor(type: T, pointer: Interact.PointerType | PointerEvent<any>, event: Interact.PointerEventType | PointerEvent<any>, eventTarget: Interact.EventTarget, interaction: Interact.Interaction, timeStamp: number);
_subtractOrigin({ x: originX, y: originY }: {

@@ -19,0 +19,0 @@ x: any;

@@ -1,53 +0,89 @@

import BaseEvent from '@interactjs/core/BaseEvent';
import pointerUtils from '@interactjs/utils/pointerUtils';
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import BaseEvent from "../core/BaseEvent.js";
import pointerUtils from "../utils/pointerUtils.js";
/** */
export default class PointerEvent extends BaseEvent {
/** */
constructor(type, pointer, event, eventTarget, interaction, timeStamp) {
super(interaction);
pointerUtils.pointerExtend(this, event);
if (event !== pointer) {
pointerUtils.pointerExtend(this, pointer);
}
this.timeStamp = timeStamp;
this.originalEvent = event;
this.type = type;
this.pointerId = pointerUtils.getPointerId(pointer);
this.pointerType = pointerUtils.getPointerType(pointer);
this.target = eventTarget;
this.currentTarget = null;
if (type === 'tap') {
const pointerIndex = interaction.getPointerIndex(pointer);
this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime;
const interval = this.timeStamp - interaction.tapTime;
this.double = !!(interaction.prevTap &&
interaction.prevTap.type !== 'doubletap' &&
interaction.prevTap.target === this.target &&
interval < 500);
}
else if (type === 'doubletap') {
this.dt = pointer.timeStamp - interaction.tapTime;
}
/** */
constructor(type, pointer, event, eventTarget, interaction, timeStamp) {
super(interaction);
_defineProperty(this, "type", void 0);
_defineProperty(this, "originalEvent", void 0);
_defineProperty(this, "pointerId", void 0);
_defineProperty(this, "pointerType", void 0);
_defineProperty(this, "double", void 0);
_defineProperty(this, "pageX", void 0);
_defineProperty(this, "pageY", void 0);
_defineProperty(this, "clientX", void 0);
_defineProperty(this, "clientY", void 0);
_defineProperty(this, "dt", void 0);
_defineProperty(this, "eventable", void 0);
pointerUtils.pointerExtend(this, event);
if (event !== pointer) {
pointerUtils.pointerExtend(this, pointer);
}
_subtractOrigin({ x: originX, y: originY }) {
this.pageX -= originX;
this.pageY -= originY;
this.clientX -= originX;
this.clientY -= originY;
return this;
this.timeStamp = timeStamp;
this.originalEvent = event;
this.type = type;
this.pointerId = pointerUtils.getPointerId(pointer);
this.pointerType = pointerUtils.getPointerType(pointer);
this.target = eventTarget;
this.currentTarget = null;
if (type === 'tap') {
const pointerIndex = interaction.getPointerIndex(pointer);
this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime;
const interval = this.timeStamp - interaction.tapTime;
this.double = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === this.target && interval < 500);
} else if (type === 'doubletap') {
this.dt = pointer.timeStamp - interaction.tapTime;
}
_addOrigin({ x: originX, y: originY }) {
this.pageX += originX;
this.pageY += originY;
this.clientX += originX;
this.clientY += originY;
return this;
}
/**
* Prevent the default behaviour of the original Event
*/
preventDefault() {
this.originalEvent.preventDefault();
}
}
_subtractOrigin({
x: originX,
y: originY
}) {
this.pageX -= originX;
this.pageY -= originY;
this.clientX -= originX;
this.clientY -= originY;
return this;
}
_addOrigin({
x: originX,
y: originY
}) {
this.pageX += originX;
this.pageY += originY;
this.clientX += originX;
this.clientY += originY;
return this;
}
/**
* Prevent the default behaviour of the original Event
*/
preventDefault() {
this.originalEvent.preventDefault();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRlckV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUG9pbnRlckV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLDRCQUE0QixDQUFBO0FBQ2xELE9BQU8sWUFBWSxNQUFNLGdDQUFnQyxDQUFBO0FBRXpELE1BQU07QUFDTixNQUFNLENBQUMsT0FBTyxPQUFPLFlBQStCLFNBQVEsU0FBUztJQWFuRSxNQUFNO0lBQ04sWUFDRSxJQUFPLEVBQ1AsT0FBaUQsRUFDakQsS0FBZ0MsRUFDaEMsV0FBaUMsRUFDakMsV0FBaUMsRUFDakMsU0FBaUI7UUFFakIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2xCLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBRXZDLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNyQixZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUMxQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQU8sU0FBUyxDQUFBO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFBO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQVksSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQU8sWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFLLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBVSxXQUFXLENBQUE7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7UUFFekIsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQ2xCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDekQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFBO1lBRXRFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQTtZQUVyRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPO2dCQUNsQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXO2dCQUN4QyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTTtnQkFDMUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFBO1NBQ2xCO2FBQ0ksSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQzdCLElBQUksQ0FBQyxFQUFFLEdBQUksT0FBK0IsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQTtTQUMzRTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUU7UUFDekMsSUFBSSxDQUFDLEtBQUssSUFBTSxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLEtBQUssSUFBTSxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUE7UUFFdkIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsVUFBVSxDQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFO1FBQ3BDLElBQUksQ0FBQyxLQUFLLElBQU0sT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLElBQU0sT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFBO1FBRXZCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VFdmVudCBmcm9tICdAaW50ZXJhY3Rqcy9jb3JlL0Jhc2VFdmVudCdcbmltcG9ydCBwb2ludGVyVXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcG9pbnRlclV0aWxzJ1xuXG4vKiogKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50ZXJFdmVudDxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIEJhc2VFdmVudCB7XG4gIHR5cGU6IFRcbiAgb3JpZ2luYWxFdmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZVxuICBwb2ludGVySWQ6IG51bWJlclxuICBwb2ludGVyVHlwZTogc3RyaW5nXG4gIGRvdWJsZTogYm9vbGVhblxuICBwYWdlWDogbnVtYmVyXG4gIHBhZ2VZOiBudW1iZXJcbiAgY2xpZW50WDogbnVtYmVyXG4gIGNsaWVudFk6IG51bWJlclxuICBkdDogbnVtYmVyXG4gIGV2ZW50YWJsZTogYW55XG5cbiAgLyoqICovXG4gIGNvbnN0cnVjdG9yIChcbiAgICB0eXBlOiBULFxuICAgIHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlIHwgUG9pbnRlckV2ZW50PGFueT4sXG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsXG4gICAgZXZlbnRUYXJnZXQ6IEludGVyYWN0LkV2ZW50VGFyZ2V0LFxuICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdC5JbnRlcmFjdGlvbixcbiAgICB0aW1lU3RhbXA6IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIoaW50ZXJhY3Rpb24pXG4gICAgcG9pbnRlclV0aWxzLnBvaW50ZXJFeHRlbmQodGhpcywgZXZlbnQpXG5cbiAgICBpZiAoZXZlbnQgIT09IHBvaW50ZXIpIHtcbiAgICAgIHBvaW50ZXJVdGlscy5wb2ludGVyRXh0ZW5kKHRoaXMsIHBvaW50ZXIpXG4gICAgfVxuXG4gICAgdGhpcy50aW1lU3RhbXAgICAgID0gdGltZVN0YW1wXG4gICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gZXZlbnRcbiAgICB0aGlzLnR5cGUgICAgICAgICAgPSB0eXBlXG4gICAgdGhpcy5wb2ludGVySWQgICAgID0gcG9pbnRlclV0aWxzLmdldFBvaW50ZXJJZChwb2ludGVyKVxuICAgIHRoaXMucG9pbnRlclR5cGUgICA9IHBvaW50ZXJVdGlscy5nZXRQb2ludGVyVHlwZShwb2ludGVyKVxuICAgIHRoaXMudGFyZ2V0ICAgICAgICA9IGV2ZW50VGFyZ2V0XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbFxuXG4gICAgaWYgKHR5cGUgPT09ICd0YXAnKSB7XG4gICAgICBjb25zdCBwb2ludGVySW5kZXggPSBpbnRlcmFjdGlvbi5nZXRQb2ludGVySW5kZXgocG9pbnRlcilcbiAgICAgIHRoaXMuZHQgPSB0aGlzLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uZG93blRpbWVcblxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnRhcFRpbWVcblxuICAgICAgdGhpcy5kb3VibGUgPSAhIShpbnRlcmFjdGlvbi5wcmV2VGFwICYmXG4gICAgICAgIGludGVyYWN0aW9uLnByZXZUYXAudHlwZSAhPT0gJ2RvdWJsZXRhcCcgJiZcbiAgICAgICAgaW50ZXJhY3Rpb24ucHJldlRhcC50YXJnZXQgPT09IHRoaXMudGFyZ2V0ICYmXG4gICAgICAgIGludGVydmFsIDwgNTAwKVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlID09PSAnZG91YmxldGFwJykge1xuICAgICAgdGhpcy5kdCA9IChwb2ludGVyIGFzIFBvaW50ZXJFdmVudDwndGFwJz4pLnRpbWVTdGFtcCAtIGludGVyYWN0aW9uLnRhcFRpbWVcbiAgICB9XG4gIH1cblxuICBfc3VidHJhY3RPcmlnaW4gKHsgeDogb3JpZ2luWCwgeTogb3JpZ2luWSB9KSB7XG4gICAgdGhpcy5wYWdlWCAgIC09IG9yaWdpblhcbiAgICB0aGlzLnBhZ2VZICAgLT0gb3JpZ2luWVxuICAgIHRoaXMuY2xpZW50WCAtPSBvcmlnaW5YXG4gICAgdGhpcy5jbGllbnRZIC09IG9yaWdpbllcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBfYWRkT3JpZ2luICh7IHg6IG9yaWdpblgsIHk6IG9yaWdpblkgfSkge1xuICAgIHRoaXMucGFnZVggICArPSBvcmlnaW5YXG4gICAgdGhpcy5wYWdlWSAgICs9IG9yaWdpbllcbiAgICB0aGlzLmNsaWVudFggKz0gb3JpZ2luWFxuICAgIHRoaXMuY2xpZW50WSArPSBvcmlnaW5ZXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHRoZSBvcmlnaW5hbCBFdmVudFxuICAgKi9cbiAgcHJldmVudERlZmF1bHQgKCkge1xuICAgIHRoaXMub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=PointerEvent.js.map
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc