index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var $ijazI$react = require("react");
  2. var $ijazI$radixuireactusecallbackref = require("@radix-ui/react-use-callback-ref");
  3. function $parcel$export(e, n, v, s) {
  4. Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
  5. }
  6. $parcel$export(module.exports, "useControllableState", () => $b84d42d44371bff7$export$6f32135080cb4c3);
  7. function $b84d42d44371bff7$export$6f32135080cb4c3({ prop: prop , defaultProp: defaultProp , onChange: onChange = ()=>{} }) {
  8. const [uncontrolledProp, setUncontrolledProp] = $b84d42d44371bff7$var$useUncontrolledState({
  9. defaultProp: defaultProp,
  10. onChange: onChange
  11. });
  12. const isControlled = prop !== undefined;
  13. const value1 = isControlled ? prop : uncontrolledProp;
  14. const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange);
  15. const setValue = $ijazI$react.useCallback((nextValue)=>{
  16. if (isControlled) {
  17. const setter = nextValue;
  18. const value = typeof nextValue === 'function' ? setter(prop) : nextValue;
  19. if (value !== prop) handleChange(value);
  20. } else setUncontrolledProp(nextValue);
  21. }, [
  22. isControlled,
  23. prop,
  24. setUncontrolledProp,
  25. handleChange
  26. ]);
  27. return [
  28. value1,
  29. setValue
  30. ];
  31. }
  32. function $b84d42d44371bff7$var$useUncontrolledState({ defaultProp: defaultProp , onChange: onChange }) {
  33. const uncontrolledState = $ijazI$react.useState(defaultProp);
  34. const [value] = uncontrolledState;
  35. const prevValueRef = $ijazI$react.useRef(value);
  36. const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange);
  37. $ijazI$react.useEffect(()=>{
  38. if (prevValueRef.current !== value) {
  39. handleChange(value);
  40. prevValueRef.current = value;
  41. }
  42. }, [
  43. value,
  44. prevValueRef,
  45. handleChange
  46. ]);
  47. return uncontrolledState;
  48. }
  49. //# sourceMappingURL=index.js.map