UNPKG

next-sanity

Version:
42 lines (41 loc) 1.66 kB
import { l as setComlink, u as setComlinkClientConfig } from "./context.js"; import { useRouter } from "next/navigation"; import { useEffect, useEffectEvent } from "react"; import { createNode, createNodeMachine } from "@sanity/comlink"; import { createCompatibilityActors } from "@sanity/presentation-comlink"; import { setPerspectiveCookie } from "next-sanity/live/server-actions"; function PresentationComlink(props) { const { projectId, dataset, draftModeEnabled, draftModePerspective } = props; const router = useRouter(); useEffect(() => { setComlinkClientConfig(projectId, dataset); }, [dataset, projectId]); const handlePerspectiveChange = useEffectEvent((perspective, signal) => { if (draftModeEnabled && perspective !== draftModePerspective) setPerspectiveCookie(perspective).then(() => { if (signal.aborted) return; router.refresh(); }).catch((reason) => console.error("Failed to set the preview perspective cookie", reason)); }); useEffect(() => { const comlink = createNode({ name: "loaders", connectTo: "presentation" }, createNodeMachine().provide({ actors: createCompatibilityActors() })); let controller; comlink.on("loader/perspective", (data) => { controller?.abort(); controller = new AbortController(); handlePerspectiveChange(data.perspective, controller.signal); }); const stop = comlink.start(); setComlink(comlink); return () => { stop(); }; }, []); return null; } PresentationComlink.displayName = "PresentationComlink"; var PresentationComlink_default = PresentationComlink; export { PresentationComlink_default as default }; //# sourceMappingURL=PresentationComlink2.js.map