index.mjs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {useCallback as $bnPw9$useCallback, useState as $bnPw9$useState, useRef as $bnPw9$useRef, useEffect as $bnPw9$useEffect} from "react";
  2. import {useCallbackRef as $bnPw9$useCallbackRef} from "@radix-ui/react-use-callback-ref";
  3. function $71cd76cc60e0454e$export$6f32135080cb4c3({ prop: prop , defaultProp: defaultProp , onChange: onChange = ()=>{} }) {
  4. const [uncontrolledProp, setUncontrolledProp] = $71cd76cc60e0454e$var$useUncontrolledState({
  5. defaultProp: defaultProp,
  6. onChange: onChange
  7. });
  8. const isControlled = prop !== undefined;
  9. const value1 = isControlled ? prop : uncontrolledProp;
  10. const handleChange = $bnPw9$useCallbackRef(onChange);
  11. const setValue = $bnPw9$useCallback((nextValue)=>{
  12. if (isControlled) {
  13. const setter = nextValue;
  14. const value = typeof nextValue === 'function' ? setter(prop) : nextValue;
  15. if (value !== prop) handleChange(value);
  16. } else setUncontrolledProp(nextValue);
  17. }, [
  18. isControlled,
  19. prop,
  20. setUncontrolledProp,
  21. handleChange
  22. ]);
  23. return [
  24. value1,
  25. setValue
  26. ];
  27. }
  28. function $71cd76cc60e0454e$var$useUncontrolledState({ defaultProp: defaultProp , onChange: onChange }) {
  29. const uncontrolledState = $bnPw9$useState(defaultProp);
  30. const [value] = uncontrolledState;
  31. const prevValueRef = $bnPw9$useRef(value);
  32. const handleChange = $bnPw9$useCallbackRef(onChange);
  33. $bnPw9$useEffect(()=>{
  34. if (prevValueRef.current !== value) {
  35. handleChange(value);
  36. prevValueRef.current = value;
  37. }
  38. }, [
  39. value,
  40. prevValueRef,
  41. handleChange
  42. ]);
  43. return uncontrolledState;
  44. }
  45. export {$71cd76cc60e0454e$export$6f32135080cb4c3 as useControllableState};
  46. //# sourceMappingURL=index.mjs.map