@tpguy825/clicker
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -1,71 +0,1 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useLongHover = exports.useLongPress = void 0; | ||
var react_1 = require("react"); | ||
/** | ||
* @template Element Used to specify what type of element the event listeners will be attached to. | ||
*/ | ||
function useLongPress(onLongPress, onClick, _a) { | ||
var _b = _a === void 0 ? {} : _a, _c = _b.shouldPreventDefault, shouldPreventDefault = _c === void 0 ? true : _c, _d = _b.delay, delay = _d === void 0 ? 1000 : _d; | ||
var _e = (0, react_1.useState)(false), longPressTriggered = _e[0], setLongPressTriggered = _e[1]; | ||
var timeout = (0, react_1.useRef)(); | ||
var target = (0, react_1.useRef)(); | ||
var start = (0, react_1.useCallback)(function (event) { | ||
if (shouldPreventDefault && event.target) { | ||
event.target.addEventListener("touchend", preventDefault, { | ||
passive: false, | ||
}); | ||
target.current = event.target; | ||
} | ||
timeout.current = setTimeout(function () { | ||
onLongPress(event); | ||
setLongPressTriggered(true); | ||
}, delay); | ||
}, [onLongPress, delay, shouldPreventDefault]); | ||
var clear = (0, react_1.useCallback)(function (event, shouldTriggerClick) { | ||
if (shouldTriggerClick === void 0) { shouldTriggerClick = true; } | ||
if (timeout.current) | ||
clearTimeout(timeout.current); | ||
if (shouldTriggerClick && !longPressTriggered) | ||
onClick(event); | ||
setLongPressTriggered(false); | ||
if (shouldPreventDefault && target.current) { | ||
target.current.removeEventListener("touchend", preventDefault); | ||
} | ||
}, [shouldPreventDefault, onClick, longPressTriggered]); | ||
var preventDefault = function (event) { | ||
if (!("touches" in event) || event.touches === undefined) | ||
return; | ||
if (event.touches.length < 2 && event.preventDefault) { | ||
event.preventDefault(); | ||
} | ||
}; | ||
return { | ||
onMouseDown: start, | ||
onTouchStart: start, | ||
onMouseUp: clear, | ||
onMouseLeave: function (event) { return clear(event, false); }, | ||
onTouchEnd: clear, | ||
}; | ||
} | ||
exports.useLongPress = useLongPress; | ||
/** | ||
* @param {number} time The time in milliseconds that the user must hover for. | ||
*/ | ||
function useLongHover(time) { | ||
var _a = (0, react_1.useState)(false), isHoveredForTime = _a[0], setIsHoveredForTime = _a[1]; | ||
var _b = (0, react_1.useState)(null), timeout = _b[0], changeTimeout = _b[1]; | ||
var handlers = { | ||
onMouseLeave: function () { | ||
if (timeout) { | ||
clearTimeout(timeout); | ||
changeTimeout(null); | ||
} | ||
setIsHoveredForTime(false); | ||
}, | ||
onMouseEnter: function () { return changeTimeout(setTimeout(function () { return setIsHoveredForTime(true); }, time)); }, | ||
}; | ||
return [isHoveredForTime, handlers]; | ||
} | ||
exports.useLongHover = useLongHover; | ||
//# sourceMappingURL=index.js.map | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useLongHover=exports.useLongPress=void 0;var react_1=require("react");function useLongPress(onLongPress,onClick,_a){var _b=_a===void 0?{}:_a,_c=_b.shouldPreventDefault,shouldPreventDefault=_c===void 0?true:_c,_d=_b.delay,delay=_d===void 0?1e3:_d;var _e=(0,react_1.useState)(false),longPressTriggered=_e[0],setLongPressTriggered=_e[1];var timeout=(0,react_1.useRef)();var target=(0,react_1.useRef)();var start=(0,react_1.useCallback)(function(event){if(shouldPreventDefault&&event.target){event.target.addEventListener("touchend",preventDefault,{passive:false});target.current=event.target}timeout.current=setTimeout(function(){onLongPress(event);setLongPressTriggered(true)},delay)},[onLongPress,delay,shouldPreventDefault]);var clear=(0,react_1.useCallback)(function(event,shouldTriggerClick){if(shouldTriggerClick===void 0){shouldTriggerClick=true}if(timeout.current)clearTimeout(timeout.current);if(shouldTriggerClick&&!longPressTriggered)onClick(event);setLongPressTriggered(false);if(shouldPreventDefault&&target.current){target.current.removeEventListener("touchend",preventDefault)}},[shouldPreventDefault,onClick,longPressTriggered]);var preventDefault=function(event){if(!("touches"in event)||event.touches===undefined)return;if(event.touches.length<2&&event.preventDefault){event.preventDefault()}};return{onMouseDown:start,onTouchStart:start,onMouseUp:clear,onMouseLeave:function(event){return clear(event,false)},onTouchEnd:clear}}exports.useLongPress=useLongPress;function useLongHover(time){var _a=(0,react_1.useState)(false),isHoveredForTime=_a[0],setIsHoveredForTime=_a[1];var _b=(0,react_1.useState)(null),timeout=_b[0],changeTimeout=_b[1];var handlers={onMouseLeave:function(){if(timeout){clearTimeout(timeout);changeTimeout(null)}setIsHoveredForTime(false)},onMouseEnter:function(){return changeTimeout(setTimeout(function(){return setIsHoveredForTime(true)},time))}};return[isHoveredForTime,handlers]}exports.useLongHover=useLongHover; |
{ | ||
"name": "@tpguy825/clicker", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Mouse event helper library for React", | ||
@@ -15,4 +15,6 @@ "main": "dist/index.js", | ||
}, | ||
"homepage": "https://github.com/tpguy825/clicker#readme" | ||
"homepage": "https://github.com/tpguy825/clicker#readme", | ||
"devDependencies": { | ||
"typescript": "^5.0.4" | ||
} | ||
} | ||
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
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
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
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
8
1
4
7269
1
30
1