New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

motion-dom

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

motion-dom - npm Package Compare versions

Comparing version 11.13.0-beta.0 to 11.13.0

dist/es/gestures/drag/state/is-active.mjs

87

dist/cjs/index.js

@@ -26,26 +26,81 @@ 'use strict';

function hover(elementOrSelector, onHoverStart) {
const elements = resolveElements(elementOrSelector);
const cancelGesture = new AbortController();
const options = { signal: cancelGesture.signal };
const onPointerEnter = (enterEvent) => {
if (enterEvent.pointerType === "touch")
const isDragging = {
x: false,
y: false,
};
function isDragActive() {
return isDragging.x || isDragging.y;
}
/**
* Filter out events that are not pointer events, or are triggering
* while a Motion gesture is active.
*/
function filterEvents(callback) {
return (event) => {
if (event.pointerType === "touch" || isDragActive())
return;
callback(event);
};
}
/**
* Create a hover gesture. hover() is different to .addEventListener("pointerenter")
* in that it has an easier syntax, filters out polyfilled touch events, interoperates
* with drag gestures, and automatically removes the "pointerennd" event listener when the hover ends.
*
* @public
*/
function hover(elementOrSelector, onHoverStart, options = {}) {
const gestureAbortController = new AbortController();
const eventOptions = {
passive: true,
...options,
signal: gestureAbortController.signal,
};
const onPointerEnter = filterEvents((enterEvent) => {
const { target } = enterEvent;
const onHoverEnd = onHoverStart(enterEvent);
if (onHoverEnd && target) {
const onPointerLeave = (leaveEvent) => {
onHoverEnd(leaveEvent);
target.removeEventListener("pointerleave", onPointerLeave);
if (!onHoverEnd || !target)
return;
const onPointerLeave = filterEvents((leaveEvent) => {
onHoverEnd(leaveEvent);
target.removeEventListener("pointerleave", onPointerLeave);
});
target.addEventListener("pointerleave", onPointerLeave, eventOptions);
});
resolveElements(elementOrSelector).forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, eventOptions);
});
return () => gestureAbortController.abort();
}
function setDragLock(axis) {
if (axis === "x" || axis === "y") {
if (isDragging[axis]) {
return null;
}
else {
isDragging[axis] = true;
return () => {
isDragging[axis] = false;
};
target.addEventListener("pointerleave", onPointerLeave, options);
}
};
elements.forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, options);
});
return () => cancelGesture.abort();
}
else {
if (isDragging.x || isDragging.y) {
return null;
}
else {
isDragging.x = isDragging.y = true;
return () => {
isDragging.x = isDragging.y = false;
};
}
}
}
exports.hover = hover;
exports.isDragActive = isDragActive;
exports.isDragging = isDragging;
exports.resolveElements = resolveElements;
exports.setDragLock = setDragLock;

@@ -14,6 +14,54 @@ type ElementOrSelector = Element | Element[] | NodeListOf<Element> | string;

/**
* Options for the hover gesture.
*
* @public
*/
interface HoverOptions {
/**
* Use passive event listeners. Doing so allows the browser to optimize
* scrolling performance by not allowing the use of `preventDefault()`.
*
* @default true
*/
passive?: boolean;
/**
* Remove the event listener after the first event.
*
* @default false
*/
once?: boolean;
}
/**
* A function to be called when a hover gesture starts.
*
* This function can optionally return a function that will be called
* when the hover gesture ends.
*
* @public
*/
type OnHoverStartEvent = (event: PointerEvent) => void | OnHoverEndEvent;
/**
* A function to be called when a hover gesture ends.
*
* @public
*/
type OnHoverEndEvent = (event: PointerEvent) => void;
declare function hover(elementOrSelector: ElementOrSelector, onHoverStart: OnHoverStartEvent): () => void;
/**
* Create a hover gesture. hover() is different to .addEventListener("pointerenter")
* in that it has an easier syntax, filters out polyfilled touch events, interoperates
* with drag gestures, and automatically removes the "pointerennd" event listener when the hover ends.
*
* @public
*/
declare function hover(elementOrSelector: ElementOrSelector, onHoverStart: OnHoverStartEvent, options?: HoverOptions): () => void;
export { type AnimationScope, type ElementOrSelector, type OnHoverEndEvent, type OnHoverStartEvent, type SelectorCache, type WithQuerySelectorAll, hover, resolveElements };
declare const isDragging: {
x: boolean;
y: boolean;
};
declare function isDragActive(): boolean;
declare function setDragLock(axis: boolean | "x" | "y" | "lockDirection"): (() => void) | null;
export { type AnimationScope, type ElementOrSelector, type HoverOptions, type OnHoverEndEvent, type OnHoverStartEvent, type SelectorCache, type WithQuerySelectorAll, hover, isDragActive, isDragging, resolveElements, setDragLock };

54

lib/gestures/hover.js
import { resolveElements } from "../utils/resolve-elements";
export function hover(elementOrSelector, onHoverStart) {
const elements = resolveElements(elementOrSelector);
const cancelGesture = new AbortController();
const options = { signal: cancelGesture.signal };
const onPointerEnter = (enterEvent) => {
if (enterEvent.pointerType === "touch")
import { isDragActive } from "./drag/state/is-active";
/**
* Filter out events that are not pointer events, or are triggering
* while a Motion gesture is active.
*/
function filterEvents(callback) {
return (event) => {
if (event.pointerType === "touch" || isDragActive())
return;
callback(event);
};
}
/**
* Create a hover gesture. hover() is different to .addEventListener("pointerenter")
* in that it has an easier syntax, filters out polyfilled touch events, interoperates
* with drag gestures, and automatically removes the "pointerennd" event listener when the hover ends.
*
* @public
*/
export function hover(elementOrSelector, onHoverStart, options = {}) {
const gestureAbortController = new AbortController();
const eventOptions = {
passive: true,
...options,
signal: gestureAbortController.signal,
};
const onPointerEnter = filterEvents((enterEvent) => {
const { target } = enterEvent;
const onHoverEnd = onHoverStart(enterEvent);
if (onHoverEnd && target) {
const onPointerLeave = (leaveEvent) => {
onHoverEnd(leaveEvent);
target.removeEventListener("pointerleave", onPointerLeave);
};
target.addEventListener("pointerleave", onPointerLeave, options);
}
};
elements.forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, options);
if (!onHoverEnd || !target)
return;
const onPointerLeave = filterEvents((leaveEvent) => {
onHoverEnd(leaveEvent);
target.removeEventListener("pointerleave", onPointerLeave);
});
target.addEventListener("pointerleave", onPointerLeave, eventOptions);
});
return () => cancelGesture.abort();
resolveElements(elementOrSelector).forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, eventOptions);
});
return () => gestureAbortController.abort();
}
//# sourceMappingURL=hover.js.map
export * from "./gestures/hover";
export * from "./utils/resolve-elements";
export * from "./gestures/drag/state/is-active";
export * from "./gestures/drag/state/set-active";
//# sourceMappingURL=index.js.map
{
"name": "motion-dom",
"version": "11.13.0-beta.0",
"version": "11.13.0",
"main": "./lib/index.js",

@@ -26,3 +26,3 @@ "types": "./types/index.d.ts",

},
"gitHead": "8196639f42c2f78b2f52392b867fcac4d8eeacc6"
"gitHead": "c6ea900aecfec3e946a0f33db4672e0194f3048b"
}
import { ElementOrSelector, resolveElements } from "../utils/resolve-elements"
import { isDragActive } from "./drag/state/is-active"
/**
* Options for the hover gesture.
*
* @public
*/
export interface HoverOptions {
/**
* Use passive event listeners. Doing so allows the browser to optimize
* scrolling performance by not allowing the use of `preventDefault()`.
*
* @default true
*/
passive?: boolean
/**
* Remove the event listener after the first event.
*
* @default false
*/
once?: boolean
}
/**
* A function to be called when a hover gesture starts.
*
* This function can optionally return a function that will be called
* when the hover gesture ends.
*
* @public
*/
export type OnHoverStartEvent = (event: PointerEvent) => void | OnHoverEndEvent
/**
* A function to be called when a hover gesture ends.
*
* @public
*/
export type OnHoverEndEvent = (event: PointerEvent) => void
/**
* Filter out events that are not pointer events, or are triggering
* while a Motion gesture is active.
*/
function filterEvents(callback: OnHoverStartEvent) {
return (event: PointerEvent) => {
if (event.pointerType === "touch" || isDragActive()) return
callback(event)
}
}
/**
* Create a hover gesture. hover() is different to .addEventListener("pointerenter")
* in that it has an easier syntax, filters out polyfilled touch events, interoperates
* with drag gestures, and automatically removes the "pointerennd" event listener when the hover ends.
*
* @public
*/
export function hover(
elementOrSelector: ElementOrSelector,
onHoverStart: OnHoverStartEvent
onHoverStart: OnHoverStartEvent,
options: HoverOptions = {}
) {
const elements = resolveElements(elementOrSelector)
const cancelGesture = new AbortController()
const gestureAbortController = new AbortController()
const options = { signal: cancelGesture.signal }
const eventOptions = {
passive: true,
...options,
signal: gestureAbortController.signal,
}
const onPointerEnter = (enterEvent: PointerEvent) => {
if (enterEvent.pointerType === "touch") return
const onPointerEnter = filterEvents((enterEvent: PointerEvent) => {
const { target } = enterEvent
const onHoverEnd = onHoverStart(enterEvent)
if (onHoverEnd && target) {
const onPointerLeave = (leaveEvent: PointerEvent) => {
onHoverEnd(leaveEvent)
target.removeEventListener("pointerleave", onPointerLeave)
}
if (!onHoverEnd || !target) return
target.addEventListener("pointerleave", onPointerLeave, options)
}
}
const onPointerLeave = filterEvents((leaveEvent: PointerEvent) => {
onHoverEnd(leaveEvent)
target.removeEventListener("pointerleave", onPointerLeave)
})
elements.forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, options)
target.addEventListener("pointerleave", onPointerLeave, eventOptions)
})
return () => cancelGesture.abort()
resolveElements(elementOrSelector).forEach((element) => {
element.addEventListener("pointerenter", onPointerEnter, eventOptions)
})
return () => gestureAbortController.abort()
}
export * from "./gestures/hover"
export * from "./utils/resolve-elements"
export * from "./gestures/drag/state/is-active"
export * from "./gestures/drag/state/set-active"
import { ElementOrSelector } from "../utils/resolve-elements";
/**
* Options for the hover gesture.
*
* @public
*/
export interface HoverOptions {
/**
* Use passive event listeners. Doing so allows the browser to optimize
* scrolling performance by not allowing the use of `preventDefault()`.
*
* @default true
*/
passive?: boolean;
/**
* Remove the event listener after the first event.
*
* @default false
*/
once?: boolean;
}
/**
* A function to be called when a hover gesture starts.
*
* This function can optionally return a function that will be called
* when the hover gesture ends.
*
* @public
*/
export type OnHoverStartEvent = (event: PointerEvent) => void | OnHoverEndEvent;
/**
* A function to be called when a hover gesture ends.
*
* @public
*/
export type OnHoverEndEvent = (event: PointerEvent) => void;
export declare function hover(elementOrSelector: ElementOrSelector, onHoverStart: OnHoverStartEvent): () => void;
/**
* Create a hover gesture. hover() is different to .addEventListener("pointerenter")
* in that it has an easier syntax, filters out polyfilled touch events, interoperates
* with drag gestures, and automatically removes the "pointerennd" event listener when the hover ends.
*
* @public
*/
export declare function hover(elementOrSelector: ElementOrSelector, onHoverStart: OnHoverStartEvent, options?: HoverOptions): () => void;
export * from "./gestures/hover";
export * from "./utils/resolve-elements";
export * from "./gestures/drag/state/is-active";
export * from "./gestures/drag/state/set-active";

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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