'use client'; import clsx from 'clsx'; import useInView from 'lib/hooks/use-in-view'; import { useTheme } from 'next-themes'; import { memo, useEffect, useState } from 'react'; import RUALoading from './loading/rua-loading'; export const commonClass = clsx( 'rounded-lg h-[400px] border-0', 'overflow-hidden w-full', ); type Props = { defaultTab?: 'html' | 'css' | 'js' | ''; url: string; }; const RUACodepen = ({ defaultTab, url }: Props) => { const urlArr = url.split('/'); const { systemTheme, theme } = useTheme(); const currentTheme = theme === 'system' ? systemTheme : (theme ?? 'light'); const { ref, inView } = useInView(); const [src, setSrc] = useState(''); useEffect(() => { inView && setSrc( `https://codepen.io/${urlArr[3]}/embed/${urlArr[5]}?default-tab=${defaultTab}%2Cresult&theme-id=${currentTheme}`, ); }, [currentTheme, defaultTab, inView, urlArr]); const [load, setLoad] = useState(false); const handleLoad = () => { setLoad(true); }; return ( <>