import { cloneElement, HTMLAttributes, ReactChild, ReactElement, ReactFragment, ReactPortal, } from "react"; export const updateClassInReactElement = ({ child, removalClassList, additionalClass, }: { child: ReactChild | ReactFragment | ReactPortal; removalClassList?: Array; additionalClass?: string; }) => { const classNameList = (child as ReactElement< HTMLAttributes >).props.className ?.split(" ") .filter((eachClass) => { return removalClassList?.every( (removalClass) => eachClass.indexOf(removalClass) < 0 ); }); const clonedChild = cloneElement( child as ReactElement>, { className: classNameList?.join(" ") + ` ${additionalClass}`, } ); return clonedChild; }; export const moveElementScroll = ( element: React.RefObject, top: number ) => { element?.current?.scroll({ top, behavior: "smooth", }); };