UNPKG

hydrogen-sanity

Version:
59 lines (56 loc) 1.74 kB
import { createClient } from '@sanity/client'; import { useLiveMode } from '@sanity/react-loader'; import isEqual from 'fast-deep-equal'; import { useState, useEffect, useMemo } from 'react'; import { useSanityProviderValue } from './provider.js'; import { isServer } from './utils.js'; import { useRefresh } from './refresh.js'; if (isServer()) { throw new Error( "LiveMode should only run client-side. Please check that this file is not being imported into a worker or server bundle." ); } function LiveModeClient(props) { const { onConnect, onDisconnect, ...stegaProps } = props; const sanityProvider = useSanityProviderValue(); const [stableStegaProps, setStableStegaProps] = useState(stegaProps); useEffect(() => { if (!isEqual(stableStegaProps, stegaProps)) { setStableStegaProps(stegaProps); } }, [stegaProps]); const client = useMemo(() => { const baseClient = createClient({ projectId: sanityProvider.projectId, dataset: sanityProvider.dataset, perspective: sanityProvider.perspective, apiVersion: sanityProvider.apiVersion, useCdn: false }); if (sanityProvider.stegaEnabled && Object.keys(stableStegaProps).length > 0) { return baseClient.withConfig({ stega: { enabled: true, ...stableStegaProps } }); } return baseClient; }, [ sanityProvider.projectId, sanityProvider.dataset, sanityProvider.perspective, sanityProvider.apiVersion, sanityProvider.stegaEnabled, stableStegaProps ]); useLiveMode({ client, onConnect, onDisconnect }); useRefresh(); return null; } export { LiveModeClient as default }; //# sourceMappingURL=LiveMode.client.js.map