182 lines
6.5 KiB
JavaScript
182 lines
6.5 KiB
JavaScript
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
|