import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr' import { useEffect } from 'react' import { createPortal } from 'react-dom' import { getThemeState } from '../hooks/useThemeState' import type { ThemeProps, ThemeState } from '../types' let node export function ThemeDebug({ themeState, themeProps, children, }: { themeState: ThemeState themeProps: ThemeProps children: any }) { if (process.env.NODE_ENV === 'development') { const isHydrated = useDidFinishSSR() if (process.env.NODE_ENV === 'development' && typeof document !== 'undefined') { if (!node) { node = document.createElement('div') node.style.height = '200px' node.style.overflowY = 'scroll' node.style.position = 'fixed' node.style.zIndex = 10000000 node.style.bottom = '30px' node.style.left = '30px' node.style.right = '30px' node.style.display = 'flex' node.style.border = '1px solid #888' node.style.flexDirection = 'row' node.style.background = 'var(--background)' } } useEffect(() => { document.body.appendChild(node) }, []) if (themeProps['disable-child-theme'] || !isHydrated) { return children } const parentState = themeState.parentId ? getThemeState(themeState.parentId) : null // hsla(0, 0%, 9%, 1) return ( <> {createPortal( <Theme {themeState.id} />  {JSON.stringify( { name: themeState.name, color1: themeState.theme.color1.val, parentId: themeState.parentId, // inverses: themeState.inverses, isNew: themeState.isNew, themeProps: { name: themeProps.name, componentName: themeProps.componentName, reset: themeProps.reset, }, parentState: { name: parentState?.name, isNew: parentState?.isNew, }, }, null, 2 )} , node )}
{themeState.id}
{children} ) } return children } ThemeDebug['displayName'] = 'ThemeDebug'