hydrogen-sanity
Version:
Sanity.io toolkit for Hydrogen
59 lines (56 loc) • 1.74 kB
JavaScript
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