import { require_jsx_runtime } from "./chunk-BNJCGGFL.js"; import { require_react } from "./chunk-2WIBB5DE.js"; import { __toESM } from "./chunk-DC5AMYBS.js"; // node_modules/@radix-ui/react-slot/dist/index.mjs var React2 = __toESM(require_react(), 1); // node_modules/@radix-ui/react-compose-refs/dist/index.mjs var React = __toESM(require_react(), 1); function setRef(ref, value) { if (typeof ref === "function") { ref(value); } else if (ref !== null && ref !== void 0) { ref.current = value; } } function composeRefs(...refs) { return (node) => refs.forEach((ref) => setRef(ref, node)); } function useComposedRefs(...refs) { return React.useCallback(composeRefs(...refs), refs); } // node_modules/@radix-ui/react-slot/dist/index.mjs var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var Slot = React2.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; const childrenArray = React2.Children.toArray(children); const slottable = childrenArray.find(isSlottable); if (slottable) { const newElement = slottable.props.children; const newChildren = childrenArray.map((child) => { if (child === slottable) { if (React2.Children.count(newElement) > 1) return React2.Children.only(null); return React2.isValidElement(newElement) ? newElement.props.children : null; } else { return child; } }); return (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React2.isValidElement(newElement) ? React2.cloneElement(newElement, void 0, newChildren) : null }); } return (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); }); Slot.displayName = "Slot"; var SlotClone = React2.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; if (React2.isValidElement(children)) { const childrenRef = getElementRef(children); return React2.cloneElement(children, { ...mergeProps(slotProps, children.props), // @ts-ignore ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef }); } return React2.Children.count(children) > 1 ? React2.Children.only(null) : null; }); SlotClone.displayName = "SlotClone"; var Slottable = ({ children }) => { return (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children }); }; function isSlottable(child) { return React2.isValidElement(child) && child.type === Slottable; } function mergeProps(slotProps, childProps) { const overrideProps = { ...childProps }; for (const propName in childProps) { const slotPropValue = slotProps[propName]; const childPropValue = childProps[propName]; const isHandler = /^on[A-Z]/.test(propName); if (isHandler) { if (slotPropValue && childPropValue) { overrideProps[propName] = (...args) => { childPropValue(...args); slotPropValue(...args); }; } else if (slotPropValue) { overrideProps[propName] = slotPropValue; } } else if (propName === "style") { overrideProps[propName] = { ...slotPropValue, ...childPropValue }; } else if (propName === "className") { overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" "); } } return { ...slotProps, ...overrideProps }; } function getElementRef(element) { var _a, _b; let getter = (_a = Object.getOwnPropertyDescriptor(element.props, "ref")) == null ? void 0 : _a.get; let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.ref; } getter = (_b = Object.getOwnPropertyDescriptor(element, "ref")) == null ? void 0 : _b.get; mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.props.ref; } return element.props.ref || element.ref; } var Root = Slot; export { useComposedRefs, Slot, Slottable, Root }; //# sourceMappingURL=chunk-N2W4B4AT.js.map