import { useLayoutEffect2 } from "./chunk-5ZB7HMJW.js"; import { require_react } from "./chunk-QCHXOAYK.js"; import { __toESM } from "./chunk-WOOG5QLI.js"; // node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs var React2 = __toESM(require_react(), 1); var React22 = __toESM(require_react(), 1); // node_modules/@radix-ui/react-use-effect-event/dist/index.mjs var React = __toESM(require_react(), 1); var useReactEffectEvent = React[" useEffectEvent ".trim().toString()]; var useReactInsertionEffect = React[" useInsertionEffect ".trim().toString()]; // node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs var useInsertionEffect = React2[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; function useControllableState({ prop, defaultProp, onChange = () => { }, caller }) { const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({ defaultProp, onChange }); const isControlled = prop !== void 0; const value = isControlled ? prop : uncontrolledProp; if (true) { const isControlledRef = React2.useRef(prop !== void 0); React2.useEffect(() => { const wasControlled = isControlledRef.current; if (wasControlled !== isControlled) { const from = wasControlled ? "controlled" : "uncontrolled"; const to = isControlled ? "controlled" : "uncontrolled"; console.warn( `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.` ); } isControlledRef.current = isControlled; }, [isControlled, caller]); } const setValue = React2.useCallback( (nextValue) => { var _a; if (isControlled) { const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue; if (value2 !== prop) { (_a = onChangeRef.current) == null ? void 0 : _a.call(onChangeRef, value2); } } else { setUncontrolledProp(nextValue); } }, [isControlled, prop, setUncontrolledProp, onChangeRef] ); return [value, setValue]; } function useUncontrolledState({ defaultProp, onChange }) { const [value, setValue] = React2.useState(defaultProp); const prevValueRef = React2.useRef(value); const onChangeRef = React2.useRef(onChange); useInsertionEffect(() => { onChangeRef.current = onChange; }, [onChange]); React2.useEffect(() => { var _a; if (prevValueRef.current !== value) { (_a = onChangeRef.current) == null ? void 0 : _a.call(onChangeRef, value); prevValueRef.current = value; } }, [value, prevValueRef]); return [value, setValue, onChangeRef]; } function isFunction(value) { return typeof value === "function"; } var SYNC_STATE = Symbol("RADIX:SYNC_STATE"); export { useControllableState }; //# sourceMappingURL=chunk-PP5CJGVQ.js.map