RendererWithProvider.test.svelte 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <script lang="ts">
  2. import type { Spec, ActionHandler } from "@json-render/core";
  3. import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
  4. import StateProvider from "./contexts/StateProvider.svelte";
  5. import VisibilityProvider from "./contexts/VisibilityProvider.svelte";
  6. import ValidationProvider from "./contexts/ValidationProvider.svelte";
  7. import ActionProvider from "./contexts/ActionProvider.svelte";
  8. import Renderer from "./Renderer.svelte";
  9. interface Props {
  10. spec: Spec | null;
  11. registry: ComponentRegistry;
  12. loading?: boolean;
  13. fallback?: ComponentRenderer;
  14. initialState?: Record<string, unknown>;
  15. handlers?: Record<string, ActionHandler>;
  16. }
  17. let {
  18. spec,
  19. registry,
  20. loading = false,
  21. fallback,
  22. initialState = {},
  23. handlers = {},
  24. }: Props = $props();
  25. </script>
  26. <StateProvider {initialState}>
  27. <VisibilityProvider>
  28. <ValidationProvider>
  29. <ActionProvider {handlers}>
  30. <Renderer {spec} {registry} {loading} {fallback} />
  31. </ActionProvider>
  32. </ValidationProvider>
  33. </VisibilityProvider>
  34. </StateProvider>