UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

44 lines (39 loc) 1.38 kB
'use strict'; 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;