@primer/react
Version:
An implementation of GitHub's Primer Design System using React
44 lines (39 loc) • 1.38 kB
JavaScript
var reactCompilerRuntime = require('react-compiler-runtime');
var React = require('react');
/**
* When the value that initialized the state changes
* this hook will update the state to the new value, immediately.
*
* This uses an Object.is comparison to determine if the value has changed by default
*
* If you use a non-primitive value as the initial value, you should provide a custom isEqual function
*
* This is adapted almost directly from https://beta.reactjs.org/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes
*/
const useSyncedState = (initialValue, t0) => {
const $ = reactCompilerRuntime.c(2);
const {
isPropUpdateDisabled: t1,
isEqual: t2
} = {} ;
const isPropUpdateDisabled = t1 === undefined ? false : t1;
const isEqual = t2 === undefined ? Object.is : t2;
const [state, setState] = React.useState(initialValue);
const [previous, setPrevious] = React.useState(initialValue);
const nextInitialValue = initialValue instanceof Function ? initialValue() : initialValue;
if (!isPropUpdateDisabled && !isEqual(previous, nextInitialValue)) {
setPrevious(nextInitialValue);
setState(nextInitialValue);
}
let t3;
if ($[0] !== state) {
t3 = [state, setState];
$[0] = state;
$[1] = t3;
} else {
t3 = $[1];
}
return t3;
};
exports.useSyncedState = useSyncedState;
;