import { require_react } from "./chunk-42LCURWG.js"; import { __toESM } from "./chunk-G3PMV62Z.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") { return ref(value); } else if (ref !== null && ref !== void 0) { ref.current = value; } } function composeRefs(...refs) { return (node) => { let hasCleanup = false; const cleanups = refs.map((ref) => { const cleanup = setRef(ref, node); if (!hasCleanup && typeof cleanup == "function") { hasCleanup = true; } return cleanup; }); if (hasCleanup) { return () => { for (let i = 0; i < cleanups.length; i++) { const cleanup = cleanups[i]; if (typeof cleanup == "function") { cleanup(); } else { setRef(refs[i], null); } } }; } }; } function useComposedRefs(...refs) { return React.useCallback(composeRefs(...refs), refs); } // node_modules/@radix-ui/react-slot/dist/index.mjs function createSlot(ownerName) { const Slot2 = React2.forwardRef((props, forwardedRef) => { let { children, ...slotProps } = props; let slottableElement = null; let hasSlottable = false; const newChildren = []; if (isLazyComponent(children) && typeof use === "function") { children = use(children._payload); } React2.Children.forEach(children, (maybeSlottable) => { if (isSlottable(maybeSlottable)) { hasSlottable = true; const slottable = maybeSlottable; let child = "child" in slottable.props ? slottable.props.child : slottable.props.children; if (isLazyComponent(child) && typeof use === "function") { child = use(child._payload); } slottableElement = getSlottableElementFromSlottable(slottable, child); newChildren.push(slottableElement?.props?.children); } else { newChildren.push(maybeSlottable); } }); if (slottableElement) { slottableElement = React2.cloneElement(slottableElement, void 0, newChildren); } else if ( // A `Slottable` was found but it didn't resolve to a single element (e.g. // it wrapped multiple elements, text, or a render-prop `child` that // wasn't an element). Don't fall back to treating the `Slottable` wrapper // itself as the slot target — throw a descriptive error below instead. !hasSlottable && React2.Children.count(children) === 1 && React2.isValidElement(children) ) { slottableElement = children; } const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0; const composedRef = useComposedRefs(forwardedRef, slottableElementRef); if (!slottableElement) { if (children || children === 0) { throw new Error( hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName) ); } return children; } const mergedProps = mergeProps(slotProps, slottableElement.props ?? {}); if (slottableElement.type !== React2.Fragment) { mergedProps.ref = forwardedRef ? composedRef : slottableElementRef; } return React2.cloneElement(slottableElement, mergedProps); }); Slot2.displayName = `${ownerName}.Slot`; return Slot2; } var Slot = createSlot("Slot"); var SLOTTABLE_IDENTIFIER = /* @__PURE__ */ Symbol.for("radix.slottable"); function createSlottable(ownerName) { const Slottable2 = (props) => "child" in props ? props.children(props.child) : props.children; Slottable2.displayName = `${ownerName}.Slottable`; Slottable2.__radixId = SLOTTABLE_IDENTIFIER; return Slottable2; } var Slottable = createSlottable("Slottable"); var getSlottableElementFromSlottable = (slottable, child) => { if ("child" in slottable.props) { const child2 = slottable.props.child; if (!React2.isValidElement(child2)) return null; return React2.cloneElement(child2, void 0, slottable.props.children(child2.props.children)); } return React2.isValidElement(child) ? child : null; }; 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) => { const result = childPropValue(...args); slotPropValue(...args); return result; }; } 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) { let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.ref; } getter = Object.getOwnPropertyDescriptor(element, "ref")?.get; mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.props.ref; } return element.props.ref || element.ref; } function isSlottable(child) { return React2.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; } var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); function isLazyComponent(element) { return element != null && typeof element === "object" && "$$typeof" in element && element.$$typeof === REACT_LAZY_TYPE && "_payload" in element && isPromiseLike(element._payload); } function isPromiseLike(value) { return typeof value === "object" && value !== null && "then" in value; } var createSlotError = (ownerName) => { return `${ownerName} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`; }; var createSlottableError = (ownerName) => { return `${ownerName} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`; }; var use = React2[" use ".trim().toString()]; export { useComposedRefs, createSlot, Slot, createSlottable, Slottable }; //# sourceMappingURL=chunk-7O5GCKER.js.map