@dnd-kit/utilities
Advanced tools
Comparing version 2.0.0 to 2.1.0-next-202152313425
# @dnd-kit/utilities | ||
## 2.1.0-next-202152313425 | ||
### Minor Changes | ||
- [#334](https://github.com/clauderic/dnd-kit/pull/334) [`13be602`](https://github.com/clauderic/dnd-kit/commit/13be602229c6d5723b3ae98bca7b8f45f0773366) Thanks [@trentmwillis](https://github.com/trentmwillis)! - Move `Coordinates` interface along with `getEventCoordinates`, `isMouseEvent` and `isTouchEvent` helpers to @dnd-kit/utilities | ||
## 2.0.0 | ||
@@ -4,0 +10,0 @@ |
export { useCombinedRefs, useIsomorphicLayoutEffect, useInterval, useLazyMemo, useNodeRef, useUniqueId, } from './hooks'; | ||
export { add, subtract } from './adjustment'; | ||
export type { Coordinates } from './coordinates'; | ||
export { getEventCoordinates } from './coordinates'; | ||
export { CSS } from './css'; | ||
export type { Transform, Transition } from './css'; | ||
export { isMouseEvent, isTouchEvent } from './event'; | ||
export { canUseDOM } from './execution-context'; | ||
export type { Arguments, FirstArgument, Without } from './types'; |
@@ -91,2 +91,54 @@ 'use strict'; | ||
function isMouseEvent(event) { | ||
var _window; | ||
return ((_window = window) == null ? void 0 : _window.MouseEvent) && event instanceof MouseEvent || event.type.includes('mouse'); | ||
} | ||
function isTouchEvent(event) { | ||
var _window; | ||
return ((_window = window) == null ? void 0 : _window.TouchEvent) && event instanceof TouchEvent; | ||
} | ||
/** | ||
* Returns the normalized x and y coordinates for mouse and touch events. | ||
*/ | ||
function getEventCoordinates(event) { | ||
if (isTouchEvent(event)) { | ||
if (event.touches && event.touches.length) { | ||
const { | ||
clientX: x, | ||
clientY: y | ||
} = event.touches[0]; | ||
return { | ||
x, | ||
y | ||
}; | ||
} else if (event.changedTouches && event.changedTouches.length) { | ||
const { | ||
clientX: x, | ||
clientY: y | ||
} = event.changedTouches[0]; | ||
return { | ||
x, | ||
y | ||
}; | ||
} | ||
} | ||
if (isMouseEvent(event)) { | ||
return { | ||
x: event.clientX, | ||
y: event.clientY | ||
}; | ||
} | ||
return { | ||
x: 0, | ||
y: 0 | ||
}; | ||
} | ||
const CSS = /*#__PURE__*/Object.freeze({ | ||
@@ -146,2 +198,5 @@ Translate: { | ||
exports.canUseDOM = canUseDOM; | ||
exports.getEventCoordinates = getEventCoordinates; | ||
exports.isMouseEvent = isMouseEvent; | ||
exports.isTouchEvent = isTouchEvent; | ||
exports.subtract = subtract; | ||
@@ -148,0 +203,0 @@ exports.useCombinedRefs = useCombinedRefs; |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");const t="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,r=t?e.useLayoutEffect:e.useEffect;let n={};function u(e){return(t,...r)=>r.reduce((t,r)=>{const n=Object.entries(r);for(const[r,u]of n){const n=t[r];null!=n&&(t[r]=n+e*u)}return t},{...t})}const o=u(1),s=u(-1),c=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:r}=e;return`translate3d(${t?Math.round(t):0}px, ${r?Math.round(r):0}px, 0)`}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:r}=e;return`scaleX(${t}) scaleY(${r})`}},Transform:{toString(e){if(e)return[c.Translate.toString(e),c.Scale.toString(e)].join(" ")}},Transition:{toString:({property:e,duration:t,easing:r})=>`${e} ${t}ms ${r}`}});exports.CSS=c,exports.add=o,exports.canUseDOM=t,exports.subtract=s,exports.useCombinedRefs=function(...t){return e.useMemo(()=>e=>{t.forEach(t=>t(e))},t)},exports.useInterval=function(){const t=e.useRef(null);return[e.useCallback((e,r)=>{t.current=setInterval(e,r)},[]),e.useCallback(()=>{null!==t.current&&(clearInterval(t.current),t.current=null)},[])]},exports.useIsomorphicLayoutEffect=r,exports.useLazyMemo=function(t,r){const n=e.useRef();return e.useMemo(()=>{const e=t(n.current);return n.current=e,e},[...r])},exports.useNodeRef=function(){const t=e.useRef(null),r=e.useCallback(e=>{t.current=e},[]);return[t,r]},exports.useUniqueId=function(t,r){return e.useMemo(()=>{if(r)return r;const e=null==n[t]?0:n[t]+1;return n[t]=e,`${t}-${e}`},[t,r])}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");const t="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,n=t?e.useLayoutEffect:e.useEffect;let r={};function o(e){return(t,...n)=>n.reduce((t,n)=>{const r=Object.entries(n);for(const[n,o]of r){const r=t[n];null!=r&&(t[n]=r+e*o)}return t},{...t})}const u=o(1),s=o(-1);function c(e){var t;return(null==(t=window)?void 0:t.MouseEvent)&&e instanceof MouseEvent||e.type.includes("mouse")}function i(e){var t;return(null==(t=window)?void 0:t.TouchEvent)&&e instanceof TouchEvent}const l=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return`translate3d(${t?Math.round(t):0}px, ${n?Math.round(n):0}px, 0)`}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return`scaleX(${t}) scaleY(${n})`}},Transform:{toString(e){if(e)return[l.Translate.toString(e),l.Scale.toString(e)].join(" ")}},Transition:{toString:({property:e,duration:t,easing:n})=>`${e} ${t}ms ${n}`}});exports.CSS=l,exports.add=u,exports.canUseDOM=t,exports.getEventCoordinates=function(e){if(i(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return c(e)?{x:e.clientX,y:e.clientY}:{x:0,y:0}},exports.isMouseEvent=c,exports.isTouchEvent=i,exports.subtract=s,exports.useCombinedRefs=function(...t){return e.useMemo(()=>e=>{t.forEach(t=>t(e))},t)},exports.useInterval=function(){const t=e.useRef(null);return[e.useCallback((e,n)=>{t.current=setInterval(e,n)},[]),e.useCallback(()=>{null!==t.current&&(clearInterval(t.current),t.current=null)},[])]},exports.useIsomorphicLayoutEffect=n,exports.useLazyMemo=function(t,n){const r=e.useRef();return e.useMemo(()=>{const e=t(r.current);return r.current=e,e},[...n])},exports.useNodeRef=function(){const t=e.useRef(null),n=e.useCallback(e=>{t.current=e},[]);return[t,n]},exports.useUniqueId=function(t,n){return e.useMemo(()=>{if(n)return n;const e=null==r[t]?0:r[t]+1;return r[t]=e,`${t}-${e}`},[t,n])}; | ||
//# sourceMappingURL=utilities.cjs.production.min.js.map |
@@ -87,2 +87,54 @@ import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react'; | ||
function isMouseEvent(event) { | ||
var _window; | ||
return ((_window = window) == null ? void 0 : _window.MouseEvent) && event instanceof MouseEvent || event.type.includes('mouse'); | ||
} | ||
function isTouchEvent(event) { | ||
var _window; | ||
return ((_window = window) == null ? void 0 : _window.TouchEvent) && event instanceof TouchEvent; | ||
} | ||
/** | ||
* Returns the normalized x and y coordinates for mouse and touch events. | ||
*/ | ||
function getEventCoordinates(event) { | ||
if (isTouchEvent(event)) { | ||
if (event.touches && event.touches.length) { | ||
const { | ||
clientX: x, | ||
clientY: y | ||
} = event.touches[0]; | ||
return { | ||
x, | ||
y | ||
}; | ||
} else if (event.changedTouches && event.changedTouches.length) { | ||
const { | ||
clientX: x, | ||
clientY: y | ||
} = event.changedTouches[0]; | ||
return { | ||
x, | ||
y | ||
}; | ||
} | ||
} | ||
if (isMouseEvent(event)) { | ||
return { | ||
x: event.clientX, | ||
y: event.clientY | ||
}; | ||
} | ||
return { | ||
x: 0, | ||
y: 0 | ||
}; | ||
} | ||
const CSS = /*#__PURE__*/Object.freeze({ | ||
@@ -139,3 +191,3 @@ Translate: { | ||
export { CSS, add, canUseDOM, subtract, useCombinedRefs, useInterval, useIsomorphicLayoutEffect, useLazyMemo, useNodeRef, useUniqueId }; | ||
export { CSS, add, canUseDOM, getEventCoordinates, isMouseEvent, isTouchEvent, subtract, useCombinedRefs, useInterval, useIsomorphicLayoutEffect, useLazyMemo, useNodeRef, useUniqueId }; | ||
//# sourceMappingURL=utilities.esm.js.map |
{ | ||
"name": "@dnd-kit/utilities", | ||
"version": "2.0.0", | ||
"version": "2.1.0-next-202152313425", | ||
"description": "Internal utilities to bee shared between `@dnd-kit` packages", | ||
@@ -5,0 +5,0 @@ "author": "Claudéric Demers", |
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
50144
29
423
3