UNPKG

@ariakit/react-core

Version:

Ariakit React core

64 lines (61 loc) 1.71 kB
"use client"; import { __spreadValues } from "./3YLGPPWQ.js"; // src/utils/misc.ts import { hasOwnProperty } from "@ariakit/core/utils/misc"; import { isValidElement } from "react"; function setRef(ref, value) { if (typeof ref === "function") { ref(value); } else if (ref) { ref.current = value; } } function isValidElementWithRef(element) { if (!element) return false; if (!isValidElement(element)) return false; if ("ref" in element.props) return true; if ("ref" in element) return true; return false; } function getRefProperty(element) { if (!isValidElementWithRef(element)) return null; const props = __spreadValues({}, element.props); return props.ref || element.ref; } function mergeProps(base, overrides) { const props = __spreadValues({}, base); for (const key in overrides) { if (!hasOwnProperty(overrides, key)) continue; if (key === "className") { const prop = "className"; props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; continue; } if (key === "style") { const prop = "style"; props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; continue; } const overrideValue = overrides[key]; if (typeof overrideValue === "function" && key.startsWith("on")) { const baseValue = base[key]; if (typeof baseValue === "function") { props[key] = (...args) => { overrideValue(...args); baseValue(...args); }; continue; } } props[key] = overrideValue; } return props; } export { setRef, isValidElementWithRef, getRefProperty, mergeProps };