import React, { Suspense } from "react"; import { interactive, hydratedContext } from "sosse/preact"; import { ColorContext, colorRef } from "./context"; class ErrorBoundary extends React.Component { state = { hasError: false }; static getDerivedStateFromError(error) { return { hasError: true }; } render() { if (this.state.hasError) { return

Something went wrong.

; } return this.props.children; } } const MySuspense = ({ children }) => ( Loading...}>{children} ); export const HydrateColorContext = hydratedContext({ id: "colorContext", context: ColorContext, ref: colorRef, }); export const SsrInjectCounter = interactive({ id: "ssrCounter", component: async () => (await import("./components/counter")).Counter, ssr: true, }); export const SuspenseInjectCounter = interactive({ id: "suspenseCounter", component: async () => (await import("./components/counter")).Counter, suspense: MySuspense, }); export const LazyInjectCounter = interactive({ id: "lazyCounter", lazy: true, component: async () => (await import("./components/counter")).Counter, suspense: MySuspense, }); export const Box = interactive({ id: "box", lazy: true, component: async () => (await import("./components/box")).Box, wrapper: [HydrateColorContext], });