import type React from 'react' import type { Nullable, UnistylesValues } from '../../types' import * as unistyles from '../services' import { isServer } from './common' type Styles = readonly [ { hash: string }, Array, ] export const createUnistylesRef = (styles?: Styles, forwardedRef?: React.ForwardedRef) => { const storedRef = { current: null as Nullable } const [classNames] = styles ?? [] return isServer() ? undefined : (ref: Nullable) => { if (!ref) { unistyles.services.shadowRegistry.remove(storedRef.current, classNames?.hash) } storedRef.current = ref unistyles.services.shadowRegistry.add(ref, classNames?.hash) if (typeof forwardedRef === 'function') { return forwardedRef(ref) } if (forwardedRef) { forwardedRef.current = ref } } }