| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- "use client";
- import { type ReactNode } from "react";
- import {
- Renderer,
- type ComponentRenderer,
- type Spec,
- StateProvider,
- VisibilityProvider,
- ActionProvider,
- } from "@json-render/react";
- import { registry, Fallback } from "./registry";
- const fallback: ComponentRenderer = ({ element }) => (
- <Fallback type={element.type} />
- );
- export function ReportRenderer({
- spec,
- loading,
- }: {
- spec: Spec | null;
- loading?: boolean;
- }): ReactNode {
- if (!spec) return null;
- return (
- <StateProvider initialState={spec.state ?? {}}>
- <VisibilityProvider>
- <ActionProvider>
- <Renderer
- spec={spec}
- registry={registry}
- fallback={fallback}
- loading={loading}
- />
- </ActionProvider>
- </VisibilityProvider>
- </StateProvider>
- );
- }
|