@bone-ui/hooks
Advanced tools
Comparing version 0.25.0 to 0.26.0
@@ -13,4 +13,3 @@ 'use strict'; | ||
var _useRef = React.useRef(controlledValue !== undefined), | ||
controlled = _useRef.current; | ||
controlled = _useRef.current; | ||
return { | ||
@@ -32,3 +31,2 @@ value: controlled ? controlledValue : stateValue, | ||
*/ | ||
var useSafeLayoutEffect = utils.isBrowser ? React__default.useLayoutEffect : React__default.useEffect; | ||
@@ -42,3 +40,2 @@ | ||
*/ | ||
function useLatestRef(value) { | ||
@@ -52,79 +49,4 @@ var ref = React__default.useRef(value); | ||
/** | ||
* Example, used in components like Dialogs and Popovers so they can close | ||
* when a user clicks outside them. | ||
*/ | ||
function useOutsideClick(props) { | ||
var ref = props.ref, | ||
handler = props.handler; | ||
var savedHandler = useLatestRef(handler); | ||
var stateRef = React.useRef({ | ||
isPointerDown: false, | ||
ignoreEmulatedMouseEvents: false | ||
}); | ||
var state = stateRef.current; | ||
React.useEffect(function () { | ||
var onPointerDown = function onPointerDown(e) { | ||
if (isValidEvent(e, ref)) { | ||
state.isPointerDown = true; | ||
} | ||
}; | ||
var onMouseUp = function onMouseUp(event) { | ||
if (state.ignoreEmulatedMouseEvents) { | ||
state.ignoreEmulatedMouseEvents = false; | ||
return; | ||
} | ||
if (state.isPointerDown && handler && isValidEvent(event, ref)) { | ||
state.isPointerDown = false; | ||
savedHandler.current == null ? void 0 : savedHandler.current(event); | ||
} | ||
}; | ||
var onTouchEnd = function onTouchEnd(event) { | ||
state.ignoreEmulatedMouseEvents = true; | ||
if (state.isPointerDown && isValidEvent(event, ref)) { | ||
state.isPointerDown = false; | ||
savedHandler.current == null ? void 0 : savedHandler.current(event); | ||
} | ||
}; | ||
document.addEventListener('mousedown', onPointerDown, true); | ||
document.addEventListener('mouseup', onMouseUp, true); | ||
document.addEventListener('touchstart', onPointerDown, true); | ||
document.addEventListener('touchend', onTouchEnd, true); | ||
return function () { | ||
document.removeEventListener('mousedown', onPointerDown, true); | ||
document.removeEventListener('mouseup', onMouseUp, true); | ||
document.removeEventListener('touchstart', onPointerDown, true); | ||
document.removeEventListener('touchend', onTouchEnd, true); | ||
}; | ||
}, [handler, ref, savedHandler, state]); | ||
} | ||
function isValidEvent(event, ref) { | ||
var target = event.target; | ||
if (event.button > 0) return false; // if the event target is no longer in the document | ||
if (target) { | ||
var ownerDocument = target.ownerDocument; | ||
if (target.nodeName === 'HTML') { | ||
return true; | ||
} | ||
if (!ownerDocument || !ownerDocument.body.contains(target)) { | ||
return false; | ||
} | ||
} | ||
return ref.current && !ref.current.contains(target); | ||
} | ||
var handoffComplete = false; | ||
var id = 0; | ||
var genId = function genId() { | ||
@@ -139,11 +61,7 @@ return ++id; | ||
*/ | ||
function useId(idProp, prefix) { | ||
var initialId = idProp || (handoffComplete ? genId() : null); | ||
var _React$useState = React__default.useState(initialId), | ||
uid = _React$useState[0], | ||
setUid = _React$useState[1]; | ||
uid = _React$useState[0], | ||
setUid = _React$useState[1]; | ||
useSafeLayoutEffect(function () { | ||
@@ -165,7 +83,5 @@ if (uid === null) setUid(genId()); | ||
} | ||
var _useState = React.useState(isOpenDefault), | ||
isOpen = _useState[0], | ||
setIsOpen = _useState[1]; | ||
isOpen = _useState[0], | ||
setIsOpen = _useState[1]; | ||
var open = React.useCallback(function () { | ||
@@ -194,4 +110,3 @@ return setIsOpen(true); | ||
exports.useLatestRef = useLatestRef; | ||
exports.useOutsideClick = useOutsideClick; | ||
exports.useSafeLayoutEffect = useSafeLayoutEffect; | ||
//# sourceMappingURL=hooks.cjs.development.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,r=require("@fower/utils").isBrowser?n.useLayoutEffect:n.useEffect;function u(e){var t=n.useRef(e);return n.useEffect((function(){t.current=e}),[e]),t}function o(e,t){var n=e.target;if(e.button>0)return!1;if(n){var r=n.ownerDocument;if("HTML"===n.nodeName)return!0;if(!r||!r.body.contains(n))return!1}return t.current&&!t.current.contains(n)}var s=!1,i=0,c=function(){return++i};exports.useControlledInfo=function(e,n){var r=t.useRef(void 0!==e).current;return{value:r?e:n,controlled:r}},exports.useDisclosure=function(e){void 0===e&&(e=!1);var n=t.useState(e),r=n[1];return{isOpen:n[0],open:t.useCallback((function(){return r(!0)}),[]),close:t.useCallback((function(){return r(!1)}),[]),toggle:t.useCallback((function(){return r((function(e){return!e}))}),[])}},exports.useId=function(e,t){var u=e||(s?c():null),o=n.useState(u),i=o[0],f=o[1];r((function(){null===i&&f(c())}),[]),n.useEffect((function(){!1===s&&(s=!0)}),[]);var a=null!=i?i.toString():void 0;return t?t+"-"+a:a},exports.useLatestRef=u,exports.useOutsideClick=function(e){var n=e.ref,r=e.handler,s=u(r),i=t.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;t.useEffect((function(){var e=function(e){o(e,n)&&(i.isPointerDown=!0)},t=function(e){i.ignoreEmulatedMouseEvents?i.ignoreEmulatedMouseEvents=!1:i.isPointerDown&&r&&o(e,n)&&(i.isPointerDown=!1,null==s.current||s.current(e))},u=function(e){i.ignoreEmulatedMouseEvents=!0,i.isPointerDown&&o(e,n)&&(i.isPointerDown=!1,null==s.current||s.current(e))};return document.addEventListener("mousedown",e,!0),document.addEventListener("mouseup",t,!0),document.addEventListener("touchstart",e,!0),document.addEventListener("touchend",u,!0),function(){document.removeEventListener("mousedown",e,!0),document.removeEventListener("mouseup",t,!0),document.removeEventListener("touchstart",e,!0),document.removeEventListener("touchend",u,!0)}}),[r,n,s,i])},exports.useSafeLayoutEffect=r; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),u=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,r=require("@fower/utils").isBrowser?u.useLayoutEffect:u.useEffect,n=!1,o=0,s=function(){return++o};exports.useControlledInfo=function(e,u){var r=t.useRef(void 0!==e).current;return{value:r?e:u,controlled:r}},exports.useDisclosure=function(e){void 0===e&&(e=!1);var u=t.useState(e),r=u[1];return{isOpen:u[0],open:t.useCallback((function(){return r(!0)}),[]),close:t.useCallback((function(){return r(!1)}),[]),toggle:t.useCallback((function(){return r((function(e){return!e}))}),[])}},exports.useId=function(e,t){var o=e||(n?s():null),f=u.useState(o),c=f[0],i=f[1];r((function(){null===c&&i(s())}),[]),u.useEffect((function(){!1===n&&(n=!0)}),[]);var l=null!=c?c.toString():void 0;return t?t+"-"+l:l},exports.useLatestRef=function(e){var t=u.useRef(e);return u.useEffect((function(){t.current=e}),[e]),t},exports.useSafeLayoutEffect=r; | ||
//# sourceMappingURL=hooks.cjs.production.min.js.map |
@@ -1,2 +0,2 @@ | ||
import React, { useRef, useEffect, useState, useCallback } from 'react'; | ||
import React, { useRef, useState, useCallback } from 'react'; | ||
import { isBrowser } from '@fower/utils'; | ||
@@ -6,4 +6,3 @@ | ||
var _useRef = useRef(controlledValue !== undefined), | ||
controlled = _useRef.current; | ||
controlled = _useRef.current; | ||
return { | ||
@@ -25,3 +24,2 @@ value: controlled ? controlledValue : stateValue, | ||
*/ | ||
var useSafeLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect; | ||
@@ -35,3 +33,2 @@ | ||
*/ | ||
function useLatestRef(value) { | ||
@@ -45,79 +42,4 @@ var ref = React.useRef(value); | ||
/** | ||
* Example, used in components like Dialogs and Popovers so they can close | ||
* when a user clicks outside them. | ||
*/ | ||
function useOutsideClick(props) { | ||
var ref = props.ref, | ||
handler = props.handler; | ||
var savedHandler = useLatestRef(handler); | ||
var stateRef = useRef({ | ||
isPointerDown: false, | ||
ignoreEmulatedMouseEvents: false | ||
}); | ||
var state = stateRef.current; | ||
useEffect(function () { | ||
var onPointerDown = function onPointerDown(e) { | ||
if (isValidEvent(e, ref)) { | ||
state.isPointerDown = true; | ||
} | ||
}; | ||
var onMouseUp = function onMouseUp(event) { | ||
if (state.ignoreEmulatedMouseEvents) { | ||
state.ignoreEmulatedMouseEvents = false; | ||
return; | ||
} | ||
if (state.isPointerDown && handler && isValidEvent(event, ref)) { | ||
state.isPointerDown = false; | ||
savedHandler.current == null ? void 0 : savedHandler.current(event); | ||
} | ||
}; | ||
var onTouchEnd = function onTouchEnd(event) { | ||
state.ignoreEmulatedMouseEvents = true; | ||
if (state.isPointerDown && isValidEvent(event, ref)) { | ||
state.isPointerDown = false; | ||
savedHandler.current == null ? void 0 : savedHandler.current(event); | ||
} | ||
}; | ||
document.addEventListener('mousedown', onPointerDown, true); | ||
document.addEventListener('mouseup', onMouseUp, true); | ||
document.addEventListener('touchstart', onPointerDown, true); | ||
document.addEventListener('touchend', onTouchEnd, true); | ||
return function () { | ||
document.removeEventListener('mousedown', onPointerDown, true); | ||
document.removeEventListener('mouseup', onMouseUp, true); | ||
document.removeEventListener('touchstart', onPointerDown, true); | ||
document.removeEventListener('touchend', onTouchEnd, true); | ||
}; | ||
}, [handler, ref, savedHandler, state]); | ||
} | ||
function isValidEvent(event, ref) { | ||
var target = event.target; | ||
if (event.button > 0) return false; // if the event target is no longer in the document | ||
if (target) { | ||
var ownerDocument = target.ownerDocument; | ||
if (target.nodeName === 'HTML') { | ||
return true; | ||
} | ||
if (!ownerDocument || !ownerDocument.body.contains(target)) { | ||
return false; | ||
} | ||
} | ||
return ref.current && !ref.current.contains(target); | ||
} | ||
var handoffComplete = false; | ||
var id = 0; | ||
var genId = function genId() { | ||
@@ -132,11 +54,7 @@ return ++id; | ||
*/ | ||
function useId(idProp, prefix) { | ||
var initialId = idProp || (handoffComplete ? genId() : null); | ||
var _React$useState = React.useState(initialId), | ||
uid = _React$useState[0], | ||
setUid = _React$useState[1]; | ||
uid = _React$useState[0], | ||
setUid = _React$useState[1]; | ||
useSafeLayoutEffect(function () { | ||
@@ -158,7 +76,5 @@ if (uid === null) setUid(genId()); | ||
} | ||
var _useState = useState(isOpenDefault), | ||
isOpen = _useState[0], | ||
setIsOpen = _useState[1]; | ||
isOpen = _useState[0], | ||
setIsOpen = _useState[1]; | ||
var open = useCallback(function () { | ||
@@ -183,3 +99,3 @@ return setIsOpen(true); | ||
export { useControlledInfo, useDisclosure, useId, useLatestRef, useOutsideClick, useSafeLayoutEffect }; | ||
export { useControlledInfo, useDisclosure, useId, useLatestRef, useSafeLayoutEffect }; | ||
//# sourceMappingURL=hooks.esm.js.map |
export * from './useControlledInfo'; | ||
export * from './useSafeLayoutEffect'; | ||
export * from './useLatestRef'; | ||
export * from './useOutsideClick'; | ||
export * from './useId'; | ||
export * from './useDisclosure'; |
{ | ||
"name": "@bone-ui/hooks", | ||
"version": "0.25.0", | ||
"license": "MIT", | ||
"version": "0.26.0", | ||
"main": "dist/index.js", | ||
"module": "dist/hooks.esm.js", | ||
"typings": "dist/index.d.ts", | ||
"files": [ | ||
"dist", | ||
"src" | ||
], | ||
"engines": { | ||
"node": ">=10" | ||
}, | ||
"scripts": { | ||
@@ -20,8 +13,9 @@ "start": "tsdx watch", | ||
}, | ||
"author": "forsigner", | ||
"module": "dist/hooks.esm.js", | ||
"dependencies": { | ||
"@bone-ui/utils": "^0.25.0" | ||
"author": "@forsigner", | ||
"devDependencies": { | ||
"tsdx": "^0.14.1", | ||
"tslib": "^2.4.1", | ||
"typescript": "^4.9.4" | ||
}, | ||
"gitHead": "39b7d355e13975accaae6ac2ecc011a68e3078ff" | ||
"gitHead": "3004e36be18646c86cee431136179b216d240a85" | ||
} |
@@ -1,1 +0,3 @@ | ||
# @bone-ui/hooks | ||
# Bone UI | ||
> A high customizable component library for React |
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
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
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
0
4
25840
3
23
331
- Removed@bone-ui/utils@^0.25.0
- Removed@bone-ui/utils@0.25.0(transitive)