UNPKG

@prismicio/next

Version:

Helpers to integrate Prismic into Next.js apps

47 lines (46 loc) 2.21 kB
"use client"; require("./_virtual/_rolldown/runtime.cjs"); const require_getSlices = require("./getSlices.cjs"); const require_SliceSimulatorWrapper = require("./SliceSimulatorWrapper.cjs"); let next_navigation = require("next/navigation"); let react = require("react"); let react_jsx_runtime = require("react/jsx-runtime"); let _prismicio_simulator_kit = require("@prismicio/simulator/kit"); let lz_string = require("lz-string"); //#region src/SliceSimulator.tsx const STATE_PARAMS_KEY = "state"; const simulatorManager = new _prismicio_simulator_kit.SimulatorManager(); /** * Simulate slices in isolation. The slice simulator enables live slice development in Slice Machine * and live previews in the Page Builder. */ const SliceSimulator = ({ children, background, zIndex, className }) => { const [message, setMessage] = (0, react.useState)(() => (0, _prismicio_simulator_kit.getDefaultMessage)()); const router = (0, next_navigation.useRouter)(); const hasSlices = require_getSlices.getSlices(typeof window !== "undefined" ? new URL(window.location.href).searchParams.get(STATE_PARAMS_KEY) : void 0).length > 0; (0, react.useEffect)(() => { simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Slices, (newSlices) => { const url = new URL(window.location.href); url.searchParams.set(STATE_PARAMS_KEY, (0, lz_string.compressToEncodedURIComponent)(JSON.stringify(newSlices))); window.history.replaceState(null, "", url); setTimeout(() => router.refresh(), 0); }, "simulator-slices"); simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Message, (newMessage) => setMessage(newMessage), "simulator-message"); simulatorManager.init(); return () => { simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Slices, "simulator-slices"); simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Message, "simulator-message"); }; }, [router]); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SliceSimulatorWrapper.SliceSimulatorWrapper, { message, hasSlices, background, zIndex, className, children }); }; //#endregion exports.SliceSimulator = SliceSimulator; //# sourceMappingURL=SliceSimulator.cjs.map