@prismicio/next
Version:
Helpers to integrate Prismic into Next.js apps
47 lines (46 loc) • 2.21 kB
JavaScript
"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