UNPKG

@croct/plug-react

Version:

React components and hooks to plug your React applications into Croct.

52 lines (51 loc) 1.56 kB
import { GlobalPlug } from "@croct/plug/plug"; function isSsr() { return globalThis.window?.document?.createElement === void 0; } const croct = !isSsr() ? (function factory() { let timeoutId = null; let resolveCallback; let rejectCallback; return new Proxy(GlobalPlug.GLOBAL, { get: function getProperty2(target, property) { switch (property) { case "plug": if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; rejectCallback?.(new Error("Unplug cancelled.")); } break; case "unplug": return () => { timeoutId = setTimeout(() => target.unplug().then(resolveCallback, rejectCallback), 100); return new Promise((resolve, reject) => { resolveCallback = resolve; rejectCallback = reject; }); }; } return target[property]; } }); })() : new Proxy(GlobalPlug.GLOBAL, { get: function getProperty(_, property) { switch (property) { case "initialized": return false; case "plug": return () => { }; case "unplug": return () => Promise.resolve(); default: throw new Error( `Property croct.${String(property)} is not supported on server-side (SSR). Consider refactoring the logic as a side-effect (useEffect) or a client-side callback (onClick, onChange, etc). For help, see https://croct.help/sdk/react/client-logic-ssr` ); } } }); export { croct, isSsr };