// src/common/clsx.ts function toVal(mix) { var k, y, str = ""; if (typeof mix === "string" || typeof mix === "number") { str += mix; } else if (typeof mix === "object") { if (Array.isArray(mix)) { for (k = 0; k < mix.length; k++) { if (mix[k]) { if (y = toVal(mix[k])) { str && (str += " "); str += y; } } } } else { for (k in mix) { if (mix[k]) { str && (str += " "); str += k; } } } } return str; } function clsx(...args) { var i = 0, tmp, x, str = ""; while (i < args.length) { if (tmp = args[i++]) { if (x = toVal(tmp)) { str && (str += " "); str += x; } } } return str; } // src/common/ra.ts function chain(...callbacks) { return (...args) => { for (let callback of callbacks) { if (typeof callback === "function") { callback(...args); } } }; } var idsUpdaterMap = /* @__PURE__ */ new Map(); function mergeIds(idA, idB) { if (idA === idB) { return idA; } let setIdsA = idsUpdaterMap.get(idA); if (setIdsA) { setIdsA.forEach((ref) => ref.current = idB); return idB; } let setIdsB = idsUpdaterMap.get(idB); if (setIdsB) { setIdsB.forEach((ref) => ref.current = idA); return idA; } return idB; } function mergeProps(...args) { let result = { ...args[0] }; for (let i = 1; i < args.length; i++) { let props = args[i]; for (let key in props) { let a = result[key]; let b = props[key]; if (typeof a === "function" && typeof b === "function" && // This is a lot faster than a regex. key[0] === "o" && key[1] === "n" && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) { result[key] = chain(a, b); } else if ((key === "className" || key === "UNSAFE_className") && typeof a === "string" && typeof b === "string") { result[key] = clsx(a, b); } else if (key === "id" && a && b) { result.id = mergeIds(a, b); } else { result[key] = b !== void 0 ? b : a; } } } return result; } function mergeRefs(...refs) { if (refs.length === 1 && refs[0]) { return refs[0]; } return (value) => { let hasCleanup = false; const cleanups = refs.map((ref) => { const cleanup = setRef(ref, value); hasCleanup || (hasCleanup = typeof cleanup == "function"); return cleanup; }); if (hasCleanup) { return () => { cleanups.forEach((cleanup, i) => { if (typeof cleanup === "function") { cleanup == null ? void 0 : cleanup(); } else { setRef(refs[i], null); } }); }; } }; } function setRef(ref, value) { if (typeof ref === "function") { return () => ref(value); } else if (ref != null) { if ("current" in ref) { ref.current = value; } } } export { chain, idsUpdaterMap, mergeIds, mergeProps, mergeRefs };