@restart/hooks
Advanced tools
Comparing version 0.1.6 to 0.2.0
{ | ||
"name": "@restart/hooks", | ||
"version": "0.1.6", | ||
"version": "0.2.0", | ||
"main": "index.js", | ||
"types": "index.d.ts", | ||
"module": "es/index.js", | ||
"repository": "https://github.com/jquense/react-common-hooks.git", | ||
@@ -11,3 +12,5 @@ "author": "Jason Quense <monastic.panic@gmail.com>", | ||
"preset": "@4c", | ||
"setupTestFrameworkScriptFile": "./test/setup.js" | ||
"setupFiles": [ | ||
"./test/setup.js" | ||
] | ||
}, | ||
@@ -14,0 +17,0 @@ "publishConfig": { |
# react-common-hooks | ||
A set of utility and general purpose react hooks | ||
## Install | ||
```sh | ||
npm install @restart/hooks | ||
``` | ||
## Usage | ||
```js | ||
import useInterval from '@restart/hooks/useInterval' | ||
useInterval(() => loop(), false, 300) | ||
``` | ||
@@ -9,4 +9,4 @@ "use strict"; | ||
function useCommittedRef(value) { | ||
const ref = (0, _react.useRef)(value); | ||
(0, _react.useLayoutEffect)(() => { | ||
var ref = (0, _react.useRef)(value); | ||
(0, _react.useEffect)(function () { | ||
ref.current = value; | ||
@@ -13,0 +13,0 @@ }, [value]); |
@@ -13,6 +13,6 @@ "use strict"; | ||
function useEventCallback(fn) { | ||
const ref = (0, _useCommittedRef.default)(fn); | ||
return (0, _react.useCallback)(function (...args) { | ||
return ref.current(...args); | ||
var ref = (0, _useCommittedRef.default)(fn); | ||
return (0, _react.useCallback)(function () { | ||
return ref.current.apply(void 0, arguments); | ||
}, [ref]); | ||
} |
@@ -6,14 +6,12 @@ "use strict"; | ||
var _react = require("react"); | ||
var _useEventListener = _interopRequireDefault(require("./useEventListener")); | ||
var _useEventCallback = _interopRequireDefault(require("./useEventCallback")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function useGlobalListener(event, listener, capture = false) { | ||
const handler = (0, _useEventCallback.default)(listener); | ||
(0, _react.useEffect)(() => { | ||
document.addEventListener(event, handler, capture); | ||
return () => document.removeEventListener(event, handler, capture); | ||
}, []); | ||
function useGlobalListener(event, listener, capture) { | ||
if (capture === void 0) { | ||
capture = false; | ||
} | ||
return (0, _useEventListener.default)(document, event, listener, capture); | ||
} |
@@ -12,10 +12,14 @@ "use strict"; | ||
function useInterval(fn, paused, ms) { | ||
let handle; | ||
const fnRef = (0, _useCommittedRef.default)(fn); // this ref is necessary b/c useEffect will sometimes miss a paused toggle | ||
function useInterval(fn, ms, paused) { | ||
if (paused === void 0) { | ||
paused = false; | ||
} | ||
var handle; | ||
var fnRef = (0, _useCommittedRef.default)(fn); // this ref is necessary b/c useEffect will sometimes miss a paused toggle | ||
// orphaning a setTimeout chain in the aether, so relying on it's refresh logic is not reliable. | ||
const pausedRef = (0, _useCommittedRef.default)(paused); | ||
var pausedRef = (0, _useCommittedRef.default)(paused); | ||
const tick = () => { | ||
var tick = function tick() { | ||
if (pausedRef.current) return; | ||
@@ -26,3 +30,3 @@ fnRef.current(); | ||
const schedule = () => { | ||
var schedule = function schedule() { | ||
clearTimeout(handle); | ||
@@ -32,5 +36,7 @@ handle = setTimeout(tick, ms); | ||
(0, _react.useEffect)(() => { | ||
(0, _react.useEffect)(function () { | ||
tick(); | ||
return () => clearTimeout(handle); | ||
return function () { | ||
return clearTimeout(handle); | ||
}; | ||
}, [paused]); | ||
@@ -37,0 +43,0 @@ } |
@@ -11,10 +11,14 @@ "use strict"; | ||
function useMergeState(initialState) { | ||
const _useState = (0, _react.useState)(initialState || {}), | ||
state = _useState[0], | ||
setState = _useState[1]; | ||
var _useState = (0, _react.useState)(initialState), | ||
state = _useState[0], | ||
setState = _useState[1]; | ||
const updater = update => { | ||
var updater = function updater(update) { | ||
if (update === null) return; | ||
if (typeof update === 'function') setState(state => _extends({}, state, update(state))); | ||
return setState(state => _extends({}, state, update)); | ||
if (typeof update === 'function') setState(function (state) { | ||
return _extends({}, state, update(state)); | ||
}); | ||
setState(function (state) { | ||
return _extends({}, state, update); | ||
}); | ||
}; | ||
@@ -21,0 +25,0 @@ |
@@ -11,9 +11,9 @@ "use strict"; | ||
function useMergeStateFromProps(props, gDSFP, initialState) { | ||
const _useMergeState = (0, _useMergeState2.default)(initialState), | ||
state = _useMergeState[0], | ||
setState = _useMergeState[1]; | ||
var _useMergeState = (0, _useMergeState2.default)(initialState), | ||
state = _useMergeState[0], | ||
setState = _useMergeState[1]; | ||
const nextState = gDSFP(props, state); | ||
var nextState = gDSFP(props, state); | ||
if (nextState !== null) setState(nextState); | ||
return [state, setState]; | ||
} |
@@ -9,7 +9,11 @@ "use strict"; | ||
function useMounted() { | ||
const mounted = (0, _react.useRef)(true); | ||
(0, _react.useEffect)(() => () => { | ||
mounted.current = false; | ||
var mounted = (0, _react.useRef)(true); | ||
(0, _react.useEffect)(function () { | ||
return function () { | ||
mounted.current = false; | ||
}; | ||
}, []); | ||
return () => mounted.current; | ||
return function () { | ||
return mounted.current; | ||
}; | ||
} |
@@ -9,4 +9,4 @@ "use strict"; | ||
function usePrevious(value) { | ||
const ref = (0, _react.useRef)(null); | ||
(0, _react.useEffect)(() => { | ||
var ref = (0, _react.useRef)(null); | ||
(0, _react.useEffect)(function () { | ||
ref.current = value; | ||
@@ -13,0 +13,0 @@ }); |
@@ -1,2 +0,2 @@ | ||
declare function useRafInterval(fn: () => void, paused: boolean, ms: number): void; | ||
declare function useRafInterval(fn: () => void, ms: number): void; | ||
export default useRafInterval; |
@@ -12,13 +12,17 @@ "use strict"; | ||
function useRafInterval(fn, paused, ms) { | ||
let handle; | ||
let start = new Date().getTime(); | ||
const fnRef = (0, _useCommittedRef.default)(fn); // this ref is necessary b/c useEffect will sometimes miss a paused toggle | ||
function useRafInterval(fn, ms, paused) { | ||
if (paused === void 0) { | ||
paused = false; | ||
} | ||
var handle; | ||
var start = new Date().getTime(); | ||
var fnRef = (0, _useCommittedRef.default)(fn); // this ref is necessary b/c useEffect will sometimes miss a paused toggle | ||
// orphaning a setTimeout chain in the aether, so relying on it's refresh logic is not reliable. | ||
const pausedRef = (0, _useCommittedRef.default)(paused); | ||
var pausedRef = (0, _useCommittedRef.default)(paused); | ||
function loop() { | ||
const current = new Date().getTime(); | ||
const delta = current - start; | ||
var current = new Date().getTime(); | ||
var delta = current - start; | ||
if (pausedRef.current) return; | ||
@@ -35,5 +39,7 @@ | ||
(0, _react.useEffect)(() => { | ||
(0, _react.useEffect)(function () { | ||
handle = requestAnimationFrame(loop); | ||
return () => cancelAnimationFrame(handle); | ||
return function () { | ||
return cancelAnimationFrame(handle); | ||
}; | ||
}, []); | ||
@@ -40,0 +46,0 @@ } |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
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
22242
47
456
21
1